summaryrefslogtreecommitdiff
path: root/tests/bullet/bulletTest.ll
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bullet/bulletTest.ll')
-rw-r--r--tests/bullet/bulletTest.ll192958
1 files changed, 192958 insertions, 0 deletions
diff --git a/tests/bullet/bulletTest.ll b/tests/bullet/bulletTest.ll
new file mode 100644
index 00000000..bbf096ca
--- /dev/null
+++ b/tests/bullet/bulletTest.ll
@@ -0,0 +1,192958 @@
+; ModuleID = 'bulletTest.bc'
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
+target triple = "i386-pc-linux-gnu"
+
+%0 = type { i32, void ()* }
+%struct..0AabbCalculationCallback = type { %struct.btActionInterface, %struct.btQuadWord, %struct.btQuadWord }
+%struct..0BridgeTriangleRaycastCallback = type { %struct.btTriangleRaycastCallback, %"struct.btCollisionWorld::RayResultCallback"*, %struct.btCollisionObject*, %struct.btTriangleMeshShape*, %struct.btTransform }
+%struct..0CenterCallback = type { %struct.btActionInterface, i8, %struct.btQuadWord, %struct.btQuadWord, float }
+%struct..0CleanPairCallback = type { %struct.btActionInterface, %struct.btBroadphaseProxy*, %struct..0btMultiSapOverlapFilterCallback*, %struct.btActionInterface* }
+%struct..0FilteredCallback = type { %struct.btActionInterface, %struct.btActionInterface*, %struct.btQuadWord, %struct.btQuadWord }
+%struct..0InplaceSolverIslandCallback = type { %struct.btActionInterface, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btTypedConstraint**, i32, %struct.btActionInterface*, %struct.btStackAlloc*, %struct.btActionInterface*, %"struct.btAlignedObjectArray<btCollisionObject*>", %"struct.btAlignedObjectArray<btPersistentManifold*>", %"struct.btAlignedObjectArray<btTypedConstraint*>" }
+%struct..0LocalTriangleSphereCastCallback = type { %struct.btActionInterface, %struct.btTransform, %struct.btTransform, %struct.btTransform, float, float }
+%struct..0MyNodeOverlapCallback = type { %struct.btActionInterface, %struct.btStridingMeshInterface*, %struct.btActionInterface* }
+%struct..0NodeTriangleCallback = type { %struct.btActionInterface, %struct.NodeArray* }
+%struct..0btIntermediateResult = type { %struct.btActionInterface, %struct.btQuadWord, %struct.btQuadWord, float, i8 }
+%struct..0btMultiSapOverlapFilterCallback = type { %struct.btActionInterface }
+%struct..1BridgeTriangleRaycastCallback = type { %struct.btTriangleRaycastCallback, %"struct.btCollisionWorld::RayResultCallback"*, %struct.btCollisionObject*, %struct.btConcaveShape*, %struct.btTransform }
+%struct..1InertiaCallback = type { %struct.btActionInterface, %struct.btMatrix3x3, %struct.btQuadWord }
+%struct..1MyNodeOverlapCallback = type { %struct.btActionInterface, %struct.btMultiSapBroadphase*, %"struct.btMultiSapBroadphase::btMultiSapProxy"*, %struct.btActionInterface* }
+%struct..1QuantizedNodeTriangleCallback = type { %struct.btActionInterface, %struct.QuantizedNodeArray*, %struct.btQuantizedBvh* }
+%struct..1RemovePairCallback = type { %struct.btActionInterface, %struct.btBroadphaseProxy* }
+%struct..2LocalInfoAdder2 = type { %"struct.btCollisionWorld::RayResultCallback", %"struct.btCollisionWorld::RayResultCallback"*, i32 }
+%struct..2MyNodeOverlapCallback = type { %struct.btActionInterface, %struct.btStridingMeshInterface*, %struct.btActionInterface*, [3 x %struct.btQuadWord] }
+%struct..3BridgeTriangleConvexcastCallback = type { %struct.btTriangleConvexcastCallback, %"struct.btCollisionWorld::ConvexResultCallback"*, %struct.btCollisionObject*, %struct.btTriangleMeshShape* }
+%struct..4BridgeTriangleConvexcastCallback = type { %struct.btTriangleConvexcastCallback, %"struct.btCollisionWorld::ConvexResultCallback"*, %struct.btCollisionObject*, %struct.btConcaveShape* }
+%struct..5LocalInfoAdder = type { %"struct.btCollisionWorld::ConvexResultCallback", %"struct.btCollisionWorld::ConvexResultCallback"*, i32 }
+%struct.BT_BOX_BOX_TRANSFORM_CACHE = type { %struct.btQuadWord, %struct.btMatrix3x3, %struct.btMatrix3x3 }
+%struct.BT_QUANTIZED_BVH_NODE = type { [3 x i16], [3 x i16], i32 }
+%struct.BroadphaseAabbTester = type { %struct.btActionInterface, %struct.btActionInterface* }
+%struct.BroadphaseRayTester = type { %struct.btActionInterface, %struct.btBroadphaseRayCallback* }
+%struct.BvhSubtreeInfoArray = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btBvhSubtreeInfo*, i8 }
+%struct.CONTACT_KEY_TOKEN = type { i32, i32 }
+%struct.CONTACT_KEY_TOKEN_COMP = type <{ i8 }>
+%struct.CProfileIterator = type { %struct.CProfileNode*, %struct.CProfileNode* }
+%struct.CProfileNode = type { i8*, i32, float, i32, i32, %struct.CProfileNode*, %struct.CProfileNode*, %struct.CProfileNode* }
+%struct.CProfileSample = type <{ i8 }>
+%struct.ClipVertex = type { %struct.btQuadWord, i32 }
+%struct.ConvexH = type { %"struct.btAlignedObjectArray<btVector3>", %"struct.btAlignedObjectArray<ConvexH::HalfEdge>", %"struct.btAlignedObjectArray<btPlane>" }
+%"struct.ConvexH::HalfEdge" = type { i16, i8, i8 }
+%struct.DISTANCE_PLANE_3D_FUNC = type <{ i8 }>
+%struct.DebugDrawcallback = type { %struct.btActionInterface, %struct.btActionInterface, %struct.btActionInterface*, %struct.btQuadWord, %struct.btTransform }
+%struct.GIM_AABB = type { %struct.btQuadWord, %struct.btQuadWord }
+%struct.GIM_AABB_DATA = type { %struct.GIM_AABB, i32 }
+%struct.GIM_BOX_TREE = type { i32, %"struct.gim_array<GIM_BOX_TREE_NODE>" }
+%struct.GIM_BOX_TREE_NODE = type { %struct.GIM_AABB, i32, i32, i32, i32 }
+%struct.GIM_BVH_DATA = type { %struct.GIM_AABB, i32 }
+%struct.GIM_BVH_DATA_ARRAY = type { %"struct.btAlignedObjectArray<GIM_BVH_DATA>" }
+%struct.GIM_CONTACT = type { %struct.btQuadWord, %struct.btQuadWord, float, float, i32, i32 }
+%struct.GIM_PAIR = type { i32, i32 }
+%struct.GIM_QUANTIZED_BVH_NODE_ARRAY = type { %struct.QuantizedNodeArray }
+%struct.GIM_RSORT_TOKEN = type { i32, i32 }
+%struct.GIM_RSORT_TOKEN_COMPARATOR = type <{ i8 }>
+%struct.GIM_STANDARD_ALLOCATOR = type { %struct.btGenericPoolAllocator }
+%struct.GIM_ShapeRetriever = type { %struct.btGImpactShapeInterface*, %struct.btTriangleShapeEx, %struct.btTetrahedronShapeEx, %"struct.GIM_ShapeRetriever::ChildShapeRetriever", %"struct.GIM_ShapeRetriever::TetraShapeRetriever", %"struct.GIM_ShapeRetriever::TetraShapeRetriever", %"struct.GIM_ShapeRetriever::ChildShapeRetriever"* }
+%"struct.GIM_ShapeRetriever::ChildShapeRetriever" = type { i32 (...)**, %struct.GIM_ShapeRetriever* }
+%"struct.GIM_ShapeRetriever::TetraShapeRetriever" = type { %"struct.GIM_ShapeRetriever::ChildShapeRetriever" }
+%struct.GIM_TRIANGLE = type { float, [3 x %struct.btQuadWord] }
+%struct.GIM_TRIANGLE_CALCULATION_CACHE = type { float, [3 x %struct.btQuadWord], [3 x %struct.btQuadWord], %struct.btQuaternion, %struct.btQuaternion, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, [4 x float], float, float, [4 x float], float, float, [16 x %struct.btQuadWord], [16 x %struct.btQuadWord], [16 x %struct.btQuadWord] }
+%struct.GIM_TRIANGLE_CONTACT = type { float, i32, %struct.btQuaternion, [16 x %struct.btQuadWord] }
+%struct.GIM_TRIANGLE_CONTACT_DATA = type { float, i32, %struct.btQuaternion, [16 x %struct.btQuadWord] }
+%struct.HullDesc = type { i32, i32, %struct.btQuadWord*, i32, float, i32, i32 }
+%struct.HullLibrary = type { %"struct.btAlignedObjectArray<btHullTriangle*>", %"struct.btAlignedObjectArray<int>" }
+%struct.HullResult = type { i8, i32, %"struct.btAlignedObjectArray<btVector3>", i32, i32, %"struct.btAlignedObjectArray<int>" }
+%struct.IndexedMeshArray = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btIndexedMesh*, i8 }
+%struct.LocalSupportVertexCallback = type { %struct.btActionInterface, %struct.btQuadWord, float, %struct.btQuadWord }
+%struct.MaterialArray = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btMaterialProperties*, i8 }
+%struct.NodeArray = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btOptimizedBvhNode*, i8 }
+%struct.PHullResult = type { i32, i32, i32, %struct.btQuadWord*, %"struct.btAlignedObjectArray<int>" }
+%struct.PfxConstraintRow = type { [3 x float], float, float, float, float, float }
+%struct.QuantizedNodeArray = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.BT_QUANTIZED_BVH_NODE*, i8 }
+%struct.SphereTriangleDetector = type { %struct.btActionInterface, %struct.btPolyhedralConvexShape*, %struct.btTriangleShape*, float }
+%struct.SupportVertexCallback = type { %struct.btActionInterface, %struct.btQuadWord, %struct.btTransform, float, %struct.btQuadWord }
+%struct.__base_class_type_info_pseudo = type { %"struct.std::type_info"*, i32 }
+%struct.__class_type_info_pseudo = type { %struct.__type_info_pseudo }
+%struct.__si_class_type_info_pseudo = type { %struct.__type_info_pseudo, %"struct.std::type_info"* }
+%struct.__type_info_pseudo = type { i8*, i8* }
+%struct.__vmi_class_type_info_pseudo1 = type { %struct.__type_info_pseudo, i32, i32, [1 x %struct.__base_class_type_info_pseudo] }
+%struct.__vmi_class_type_info_pseudo2 = type { %struct.__type_info_pseudo, i32, i32, [2 x %struct.__base_class_type_info_pseudo] }
+%struct.anon = type { void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)*, i32 }
+%struct.bt32BitAxisSweep3 = type { %"struct.btAxisSweep3Internal<unsigned int>" }
+%struct.btAABB = type { %struct.btQuadWord, %struct.btQuadWord }
+%struct.btActionInterface = type { i32 (...)** }
+%struct.btActivatingCollisionAlgorithm = type { %struct.btCollisionAlgorithm }
+%"struct.btAlignedAllocator<BT_QUANTIZED_BVH_NODE,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<ConvexH::HalfEdge,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<GIM_BVH_DATA,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btActionInterface*,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btBroadphaseInterface*,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btBroadphasePair,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btBvhSubtreeInfo,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btCollisionAlgorithm*,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btCollisionObject*,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btCollisionShape*,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btCompoundShapeChild,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btDbvt::sStkCLN,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btDbvt::sStkNN,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btElement,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btHashInt,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btHullTriangle*,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btIndexedMesh,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btPersistentManifold*,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btRigidBody*,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btSolverConstraint,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btTriangle,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btTriangleInfo,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btTypedConstraint*,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btTypedConstraint::btConstraintInfo1,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<btVector3,16u>" = type <{ i8 }>
+%"struct.btAlignedAllocator<int,16u>" = type <{ i8 }>
+%"struct.btAlignedObjectArray<BT_QUANTIZED_BVH_NODE>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.BT_QUANTIZED_BVH_NODE*, i8 }
+%"struct.btAlignedObjectArray<BT_QUANTIZED_BVH_NODE>.base.32" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.BT_QUANTIZED_BVH_NODE*, i8 }
+%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.CONTACT_KEY_TOKEN*, i8 }
+%"struct.btAlignedObjectArray<ConvexH::HalfEdge>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %"struct.ConvexH::HalfEdge"*, i8 }
+%"struct.btAlignedObjectArray<GIM_BVH_DATA>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.GIM_AABB_DATA*, i8 }
+%"struct.btAlignedObjectArray<GIM_CONTACT>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.GIM_CONTACT*, i8 }
+%"struct.btAlignedObjectArray<GIM_PAIR>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.CONTACT_KEY_TOKEN*, i8 }
+%"struct.btAlignedObjectArray<btActionInterface*>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btActionInterface**, i8 }
+%"struct.btAlignedObjectArray<btBroadphasePair>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btBroadphasePair*, i8 }
+%"struct.btAlignedObjectArray<btCollisionAlgorithm*>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btCollisionAlgorithm**, i8 }
+%"struct.btAlignedObjectArray<btCollisionObject*>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btCollisionObject**, i8 }
+%"struct.btAlignedObjectArray<btCollisionShape*>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btCollisionShape**, i8 }
+%"struct.btAlignedObjectArray<btCompoundShapeChild>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btCompoundShapeChild*, i8 }
+%"struct.btAlignedObjectArray<btDbvt::sStkCLN>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %"struct.btDbvt::sStkCLN"*, i8 }
+%"struct.btAlignedObjectArray<btDbvt::sStkNN>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %"struct.btDbvt::sStkCLN"*, i8 }
+%"struct.btAlignedObjectArray<btDbvtNode*>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btDbvtNode**, i8 }
+%"struct.btAlignedObjectArray<btElement>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.CONTACT_KEY_TOKEN*, i8 }
+%"struct.btAlignedObjectArray<btGImpactMeshShapePart*>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btGImpactMeshShapePart**, i8 }
+%"struct.btAlignedObjectArray<btHashInt>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btHashInt*, i8 }
+%"struct.btAlignedObjectArray<btHashPtr>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btHashPtr*, i8 }
+%"struct.btAlignedObjectArray<btHullTriangle*>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btHullTriangle**, i8 }
+%"struct.btAlignedObjectArray<btMaterial*>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btMaterial**, i8 }
+%"struct.btAlignedObjectArray<btMultiSapBroadphase::btBridgeProxy*>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %"struct.btMultiSapBroadphase::btBridgeProxy"**, i8 }
+%"struct.btAlignedObjectArray<btMultiSapBroadphase::btMultiSapProxy*>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %"struct.btMultiSapBroadphase::btMultiSapProxy"**, i8 }
+%"struct.btAlignedObjectArray<btPersistentManifold*>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btPersistentManifold**, i8 }
+%"struct.btAlignedObjectArray<btPlane>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btPlane*, i8 }
+%"struct.btAlignedObjectArray<btRigidBody*>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btRigidBody**, i8 }
+%"struct.btAlignedObjectArray<btTransform>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btTransform*, i8 }
+%"struct.btAlignedObjectArray<btTriangle>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btTriangle*, i8 }
+%"struct.btAlignedObjectArray<btTriangleInfo>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btTriangleInfo*, i8 }
+%"struct.btAlignedObjectArray<btTypedConstraint*>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btTypedConstraint**, i8 }
+%"struct.btAlignedObjectArray<btTypedConstraint::btConstraintInfo1>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.CONTACT_KEY_TOKEN*, i8 }
+%"struct.btAlignedObjectArray<btVector3>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btQuadWord*, i8 }
+%"struct.btAlignedObjectArray<btWheelInfo>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btWheelInfo*, i8 }
+%"struct.btAlignedObjectArray<float>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, float*, i8 }
+%"struct.btAlignedObjectArray<int>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, i32*, i8 }
+%"struct.btAlignedObjectArray<short unsigned int>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, i16*, i8 }
+%"struct.btAlignedObjectArray<unsigned int>" = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, i32*, i8 }
+%struct.btAxisSweep3 = type { %"struct.btAxisSweep3Internal<short unsigned int>" }
+%"struct.btAxisSweep3Internal<short unsigned int>" = type { %struct.btActionInterface, i16, i16, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, i16, i16, %"struct.btAxisSweep3Internal<short unsigned int>::Handle"*, i16, [3 x %"struct.btAxisSweep3Internal<short unsigned int>::Edge"*], [3 x i8*], %struct..0btMultiSapOverlapFilterCallback*, %struct.btActionInterface*, i8, i32, %struct.btDbvtBroadphase*, %struct..0btMultiSapOverlapFilterCallback* }
+%"struct.btAxisSweep3Internal<short unsigned int>::Edge" = type { i16, i16 }
+%"struct.btAxisSweep3Internal<short unsigned int>::Handle" = type { %struct.btBroadphaseProxy, [3 x i16], [3 x i16], %struct.btBroadphaseProxy* }
+%"struct.btAxisSweep3Internal<unsigned int>" = type { %struct.btActionInterface, i32, i32, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, i32, i32, %"struct.btAxisSweep3Internal<unsigned int>::Handle"*, i32, [3 x %struct.CONTACT_KEY_TOKEN*], [3 x i8*], %struct..0btMultiSapOverlapFilterCallback*, %struct.btActionInterface*, i8, i32, %struct.btDbvtBroadphase*, %struct..0btMultiSapOverlapFilterCallback* }
+%"struct.btAxisSweep3Internal<unsigned int>::Edge" = type { i32, i32 }
+%"struct.btAxisSweep3Internal<unsigned int>::Handle" = type { %struct.btBroadphaseProxy, [3 x i32], [3 x i32], %struct.btBroadphaseProxy* }
+%struct.btBU_Simplex1to4 = type { %struct.btPolyhedralConvexAabbCachingShape, i32, [4 x %struct.btQuadWord] }
+%struct.btBlock = type { %struct.btBlock*, i8* }
+%struct.btBox2dBox2dCollisionAlgorithm = type { %struct.btActivatingCollisionAlgorithm, i8, %struct.btPersistentManifold* }
+%struct.btBox2dShape = type { %struct.btPolyhedralConvexShape, %struct.btQuadWord, [4 x %struct.btQuadWord], [4 x %struct.btQuadWord] }
+%struct.btBoxBoxCollisionAlgorithm = type { %struct.btActivatingCollisionAlgorithm, i8, %struct.btPersistentManifold* }
+%"struct.btBoxBoxCollisionAlgorithm::CreateFunc" = type { %struct.btCollisionAlgorithmCreateFunc }
+%struct.btBoxBoxDetector = type { %struct.btActionInterface, %struct.btBoxShape*, %struct.btBoxShape* }
+%struct.btBoxShape = type { %struct.btPolyhedralConvexShape }
+%struct.btBridgedManifoldResult = type { %struct.btManifoldResult, %"struct.btCollisionWorld::ContactResultCallback"* }
+%struct.btBroadphaseAabbCallback = type { i32 (...)** }
+%struct.btBroadphaseInterface = type { i32 (...)** }
+%struct.btBroadphasePair = type { %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btCollisionAlgorithm*, %"union.btBroadphasePair::._22" }
+%struct.btBroadphasePairArray = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btBroadphasePair*, i8 }
+%struct.btBroadphaseProxy = type { i8*, i16, i16, i8*, i32, %struct.btQuadWord, %struct.btQuadWord }
+%struct.btBroadphaseRayCallback = type { %struct.btActionInterface, %struct.btQuadWord, [3 x i32], float }
+%struct.btBvhSubtreeInfo = type { [3 x i16], [3 x i16], i32, i32, [3 x i32] }
+%struct.btBvhSubtreeInfoData = type { i32, i32, [3 x i16], [3 x i16] }
+%struct.btBvhTree = type { i32, %struct.GIM_BVH_DATA_ARRAY }
+%struct.btBvhTriangleMeshShape = type { %struct.btTriangleMeshShape, %struct.btOptimizedBvh*, %struct.btTriangleInfoMap*, i8, i8, [11 x i8] }
+%struct.btCapsuleShape = type { %struct.btConvexInternalShape, i32 }
+%struct.btCapsuleShapeX = type { %struct.btCapsuleShape }
+%struct.btCharacterControllerInterface = type { %struct.btActionInterface }
+%struct.btChunk = type { i32, i32, i8*, i32, i32 }
+%struct.btClock = type { %struct.btClockData* }
+%struct.btClockData = type { %struct.CONTACT_KEY_TOKEN }
+%struct.btClosestNotMeConvexResultCallback = type { %"struct.btCollisionWorld::ClosestConvexResultCallback", %struct.btCollisionObject*, float, %struct..0btMultiSapOverlapFilterCallback*, %struct.btActionInterface* }
+%struct.btCollisionAlgorithm = type { i32 (...)**, %struct.btActionInterface* }
+%struct.btCollisionAlgorithmConstructionInfo = type { %struct.btActionInterface*, %struct.btPersistentManifold* }
+%struct.btCollisionAlgorithmCreateFunc = type { i32 (...)**, i8 }
+%struct.btCollisionConfiguration = type { i32 (...)** }
+%struct.btCollisionDispatcher = type { %struct.btActionInterface, i32, %"struct.btAlignedObjectArray<btPersistentManifold*>", %struct.btManifoldResult, void (%struct.btBroadphasePair*, %struct.btCollisionDispatcher*, %struct.btDispatcherInfo*)*, %struct.btPoolAllocator*, %struct.btPoolAllocator*, [36 x [36 x %struct.btCollisionAlgorithmCreateFunc*]], %struct.btActionInterface* }
+%struct.btCollisionObject = type { i32 (...)**, %struct.btTransform, %struct.btTransform, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, i32, float, %struct.btBroadphaseProxy*, %struct.btCollisionShape*, i8*, %struct.btCollisionShape*, i32, i32, i32, i32, float, float, float, i32, i8*, float, float, float, i32 }
+%struct.btCollisionObjectArray = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btCollisionObject**, i8 }
+%struct.btCollisionObjectFloatData = type { i8*, i8*, %struct.btCollisionShapeData*, i8*, %struct.btTransform, %struct.btTransform, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, float, float, float, float, float, float, float, i32, i32, i32, i32, i32, i32, i32 }
+%struct.btCollisionPairCallback = type { %struct.btActionInterface, %struct.btDispatcherInfo*, %struct.btCollisionDispatcher* }
+%struct.btCollisionShape = type { i32 (...)**, i32, i8* }
+%struct.btCollisionShapeData = type { i8*, i32, [4 x i8] }
+%struct.btCollisionWorld = type { i32 (...)**, %"struct.btAlignedObjectArray<btCollisionObject*>", %struct.btActionInterface*, %struct.btDispatcherInfo, %struct.btStackAlloc*, %struct.btActionInterface*, %struct.btActionInterface*, i8 }
+%struct.btCollisionWorld.base.32 = type { i32 (...)**, %"struct.btAlignedObjectArray<btCollisionObject*>", %struct.btActionInterface*, %struct.btDispatcherInfo, %struct.btStackAlloc*, %struct.btActionInterface*, %struct.btActionInterface*, i8 }
+%"struct.btCollisionWorld::ClosestConvexResultCallback" = type { %"struct.btCollisionWorld::ConvexResultCallback", %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btCollisionObject* }
+%"struct.btCollisionWorld::ClosestRayResultCallback" = type { %"struct.btCollisionWorld::RayResultCallback", %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord }
+%"struct.btCollisionWorld::ContactResultCallback" = type { i32 (...)**, i16, i16 }
+%"struct.btCollisionWorld::ConvexResultCallback" = type { i32 (...)**, float, i16, i16 }
+%"struct.btCollisionWorld::LocalConvexResult" = type { %struct.btCollisionObject*, %struct.CONTACT_KEY_TOKEN*, %struct.btQuadWord, %struct.btQuadWord, float }
+%"struct.btCollisionWorld::LocalRayResult" = type { %struct.btCollisionObject*, %struct.CONTACT_KEY_TOKEN*, %struct.btQuadWord, float }
+%"struct.btCollisionWorld::LocalShapeInfo" = type { i32, i32 }
+%"struct.btCollisionWorld::RayResultCallback" = type { i32 (...)**, float, %struct.btCollisionObject*, i16, i16, i32 }
+%struct.btCompoundCollisionAlgorithm = type { %struct.btActivatingCollisionAlgorithm, %"struct.btAlignedObjectArray<btCollisionAlgorithm*>", i8, %struct.btPersistentManifold*, i8, i32 }
+%struct.btCompoundLeafCallback = type { %struct.btActionInterface, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btActionInterface*, %struct.btDispatcherInfo*, %struct.btManifoldResult*, %struct.btCollisionAlgorithm**, %struct.btPersistentManifold* }
+%struct.btCompoundShape = type { %struct.btCollisionShape, %"struct.btAlignedObjectArray<btCompoundShapeChild>", %struct.btQuadWord, %struct.btQuadWord, %struct.btDbvt*, i32, float, %struct.btQuadWord }
+%struct.btCompoundShapeChild = type { %struct.btTransform, %struct.btCollisionShape*, i32, float, %struct.btDbvtNode* }
+%struct.btCompoundShapeChildData = type { %struct.btTransform, %struct.btCollisionShapeData*, i32, float }
+%struct.btConcaveShape = type { %struct.btCollisionShape, float }
+%struct.btConeShape = type { %struct.btConvexInternalShape, float, float, float, [3 x i32] }
+%struct.btConeShapeX = type { %struct.btConeShape }
+%struct.btConeTwistConstraint = type { %struct.btTypedConstraint, [3 x %struct.btJacobianEntry], %struct.btTransform, %struct.btTransform, float, float, float, float, float, float, float, float, %struct.btQuadWord, %struct.btQuadWord, float, float, float, float, float, float, float, float, i8, i8, i8, i8, float, float, %struct.btQuadWord, i8, i8, %struct.btQuaternion, float, %struct.btQuadWord, i32, float, float, float }
+%struct.btConnectivityProcessor = type { %struct.btActionInterface, i32, i32, %struct.btQuadWord*, %struct.btTriangleInfoMap* }
+%struct.btConstraintArray = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btSolverConstraint*, i8 }
+%struct.btConstraintSetting = type { float, float, float }
+%struct.btConstraintSolver = type { i32 (...)** }
+%struct.btContactArray = type { %"struct.btAlignedObjectArray<GIM_CONTACT>" }
+%struct.btContactConstraint = type { %struct.btTypedConstraint, %struct.btPersistentManifold }
+%struct.btContactSolverInfo = type { %struct.btContactSolverInfoData }
+%struct.btContactSolverInfoData = type { float, float, float, float, float, i32, float, float, float, float, float, i32, float, float, float, i32, i32, i32 }
+%struct.btContinuousConvexCollision = type { %struct.btActionInterface, %struct.btVoronoiSimplexSolver*, %struct.btActionInterface*, %struct.btConvexShape*, %struct.btConvexShape* }
+%struct.btContinuousDynamicsWorld = type { %struct.btDiscreteDynamicsWorld }
+%struct.btConvex2dConvex2dAlgorithm = type { %struct.btActivatingCollisionAlgorithm, %struct.btVoronoiSimplexSolver*, %struct.btActionInterface*, i8, %struct.btPersistentManifold*, i8, i32, i32 }
+%"struct.btConvex2dConvex2dAlgorithm::CreateFunc" = type { %struct.btCollisionAlgorithmCreateFunc, %struct.btActionInterface*, %struct.btVoronoiSimplexSolver*, i32, i32 }
+%struct.btConvex2dShape = type { %struct.btConvexShape, %struct.btConvexShape* }
+%struct.btConvexCast = type { i32 (...)** }
+%"struct.btConvexCast::CastResult" = type { i32 (...)**, %struct.btTransform, %struct.btTransform, %struct.btQuadWord, %struct.btQuadWord, float, %struct.btActionInterface*, float }
+%struct.btConvexConcaveCollisionAlgorithm = type { %struct.btActivatingCollisionAlgorithm, i8, %struct.btConvexTriangleCallback }
+%struct.btConvexConvexAlgorithm = type { %struct.btActivatingCollisionAlgorithm, %struct.btVoronoiSimplexSolver*, %struct.btActionInterface*, i8, %struct.btPersistentManifold*, i8, i32, i32 }
+%"struct.btConvexConvexAlgorithm::CreateFunc" = type { %struct.btCollisionAlgorithmCreateFunc, %struct.btActionInterface*, %struct.btVoronoiSimplexSolver*, i32, i32 }
+%struct.btConvexHullShape = type { %struct.btPolyhedralConvexAabbCachingShape, %"struct.btAlignedObjectArray<btVector3>" }
+%struct.btConvexInternalAabbCachingShape = type { %struct.btConvexInternalShape, %struct.btQuadWord, %struct.btQuadWord, i8 }
+%struct.btConvexInternalAabbCachingShape.base.32 = type { %struct.btConvexInternalShape, %struct.btQuadWord, %struct.btQuadWord, i8 }
+%struct.btConvexInternalShape = type { %struct.btConvexShape, %struct.btQuadWord, %struct.btQuadWord, float, float }
+%struct.btConvexPenetrationDepthSolver = type { i32 (...)** }
+%struct.btConvexPlaneCollisionAlgorithm = type { %struct.btCollisionAlgorithm, i8, %struct.btPersistentManifold*, i8, i32, i32 }
+%"struct.btConvexPlaneCollisionAlgorithm::CreateFunc" = type { %struct.btCollisionAlgorithmCreateFunc, i32, i32 }
+%struct.btConvexPointCloudShape = type { %struct.btPolyhedralConvexAabbCachingShape, %struct.btQuadWord*, i32 }
+%struct.btConvexShape = type { %struct.btCollisionShape }
+%struct.btConvexTriangleCallback = type { %struct.btActionInterface, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btQuadWord, %struct.btQuadWord, %struct.btManifoldResult*, %struct.btActionInterface*, %struct.btDispatcherInfo*, float, i32, %struct.btPersistentManifold* }
+%struct.btConvexTriangleMeshShape = type { %struct.btPolyhedralConvexAabbCachingShape, %struct.btStridingMeshInterface* }
+%struct.btCylinderShape = type { %struct.btConvexInternalShape, i32 }
+%struct.btCylinderShapeX = type { %struct.btCapsuleShape }
+%struct.btDbvt = type { %struct.btDbvtNode*, %struct.btDbvtNode*, i32, i32, i32, %"struct.btAlignedObjectArray<btDbvt::sStkCLN>" }
+%"struct.btDbvt::IClone" = type { i32 (...)** }
+%"struct.btDbvt::ICollide" = type { i32 (...)** }
+%"struct.btDbvt::sStkCLN" = type { %struct.btDbvtNode*, %struct.btDbvtNode* }
+%"struct.btDbvt::sStkNN" = type { %struct.btDbvtNode*, %struct.btDbvtNode* }
+%struct.btDbvtBroadphase = type { %struct.btActionInterface, [2 x %struct.btDbvt], [3 x %struct.btDbvtProxy*], %struct..0btMultiSapOverlapFilterCallback*, float, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i8, i8, i8 }
+%struct.btDbvtNode = type { %struct.GIM_AABB, %struct.btDbvtNode*, %"union.btDbvtNode::._22" }
+%struct.btDbvtNodeEnumerator = type { %struct.btActionInterface, %"struct.btAlignedObjectArray<btDbvtNode*>" }
+%struct.btDbvtProxy = type { %struct.btBroadphaseProxy, %struct.btDbvtNode*, [2 x %struct.btDbvtProxy*], i32 }
+%struct.btDbvtTreeCollider = type { %struct.btActionInterface, %struct.btDbvtBroadphase*, %struct.btDbvtProxy* }
+%struct.btDbvtVolume = type { %struct.btQuadWord, %struct.btQuadWord }
+%struct.btDefaultCollisionConfiguration = type { %struct.btActionInterface, i32, %struct.btStackAlloc*, i8, %struct.btPoolAllocator*, i8, %struct.btPoolAllocator*, i8, %struct.btVoronoiSimplexSolver*, %struct.btActionInterface*, %struct.btCollisionAlgorithmCreateFunc*, %struct.btCollisionAlgorithmCreateFunc*, %struct.btCollisionAlgorithmCreateFunc*, %struct.btCollisionAlgorithmCreateFunc*, %struct.btCollisionAlgorithmCreateFunc*, %struct.btCollisionAlgorithmCreateFunc*, %struct.btCollisionAlgorithmCreateFunc*, %struct.btCollisionAlgorithmCreateFunc*, %struct.btCollisionAlgorithmCreateFunc*, %struct.btCollisionAlgorithmCreateFunc*, %struct.btCollisionAlgorithmCreateFunc*, %struct.btCollisionAlgorithmCreateFunc* }
+%struct.btDefaultCollisionConstructionInfo = type { %struct.btStackAlloc*, %struct.btPoolAllocator*, %struct.btPoolAllocator*, i32, i32, i32, i32, i32 }
+%struct.btDefaultMotionState = type { %struct.btActionInterface, %struct.btTransform, %struct.btTransform, %struct.btTransform, i8* }
+%struct.btDefaultVehicleRaycaster = type { %struct.btActionInterface, %struct.btDynamicsWorld* }
+%struct.btDiscreteCollisionDetectorInterface = type { i32 (...)** }
+%"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput" = type { %struct.btTransform, %struct.btTransform, float, %struct.btStackAlloc* }
+%"struct.btDiscreteCollisionDetectorInterface::Result" = type { i32 (...)** }
+%struct.btDiscreteDynamicsWorld = type { %struct.btDynamicsWorld, %struct.btActionInterface*, %struct.btSimulationIslandManager*, %"struct.btAlignedObjectArray<btTypedConstraint*>", %"struct.btAlignedObjectArray<btRigidBody*>", %struct.btQuadWord, float, i8, i8, i8, %"struct.btAlignedObjectArray<btActionInterface*>", i32 }
+%struct.btDispatcher = type { i32 (...)** }
+%struct.btDispatcherInfo = type { float, i32, i32, float, i8, %struct.btActionInterface*, i8, i8, i8, float, i8, float, i8, %struct.btStackAlloc* }
+%struct.btDynamicsWorld = type { %struct.btCollisionWorld, void (%struct.btDynamicsWorld*, float)*, void (%struct.btDynamicsWorld*, float)*, i8*, %struct.btContactSolverInfo }
+%struct.btElement = type { i32, i32 }
+%struct.btEmptyAlgorithm = type { %struct.btCollisionAlgorithm }
+%struct.btEmptyShape = type { %struct.btConcaveShape, %struct.btQuadWord }
+%struct.btGImpactBoxSet = type { %struct.btQuantizedBvhTree, %struct.btActionInterface* }
+%struct.btGImpactBvh = type { %struct.btBvhTree, %struct.btActionInterface* }
+%struct.btGImpactCollisionAlgorithm = type { %struct.btActivatingCollisionAlgorithm, %struct.btCollisionAlgorithm*, %struct.btPersistentManifold*, %struct.btManifoldResult*, %struct.btDispatcherInfo*, i32, i32, i32, i32 }
+%"struct.btGImpactCollisionAlgorithm::CreateFunc" = type { %struct.btCollisionAlgorithmCreateFunc }
+%struct.btGImpactCompoundShape = type { %struct.btGImpactShapeInterface, %"struct.btGImpactCompoundShape::CompoundPrimitiveManager", %"struct.btAlignedObjectArray<btTransform>", %"struct.btAlignedObjectArray<btCollisionShape*>" }
+%"struct.btGImpactCompoundShape::CompoundPrimitiveManager" = type { %struct.btActionInterface, %struct.btGImpactCompoundShape* }
+%struct.btGImpactMeshShape = type { %struct.btGImpactShapeInterface, %struct.btStridingMeshInterface*, %"struct.btAlignedObjectArray<btGImpactMeshShapePart*>" }
+%struct.btGImpactMeshShapePart = type { %struct.btGImpactShapeInterface, %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager" }
+%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager" = type { %struct.btActionInterface, float, %struct.btStridingMeshInterface*, %struct.btQuadWord, i32, i32, i8*, i32, i32, i32, i8*, i32, i32, i32 }
+%struct.btGImpactQuantizedBvh = type { %struct.btQuantizedBvhTree, %struct.btActionInterface* }
+%struct.btGImpactShapeInterface = type { %struct.btConcaveShape, %struct.GIM_AABB, i8, %struct.btQuadWord, %struct.btGImpactBoxSet }
+%struct.btGImpactTriangleCallback = type { %struct.btActionInterface, %struct.btGImpactCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btGImpactShapeInterface*, i8, float }
+%struct.btGeneric6DofConstraint = type { %struct.btTypedConstraint, %struct.btTransform, %struct.btTransform, [3 x %struct.btJacobianEntry], [3 x %struct.btJacobianEntry], %struct.btTranslationalLimitMotor, [3 x %struct.btRotationalLimitMotor], float, %struct.btTransform, %struct.btTransform, %struct.btQuadWord, [3 x %struct.btQuadWord], %struct.btQuadWord, float, float, i8, %struct.btQuadWord, i8, i8, i32, i8 }
+%struct.btGeneric6DofSpringConstraint = type { [1297 x i8], [6 x i8], [6 x float], [6 x float], [6 x float] }
+%struct.btGenericMemoryPool = type { i8*, i32*, i32*, i32, i32, i32, i32 }
+%struct.btGenericPoolAllocator = type { i32 (...)**, i32, i32, [16 x %struct.btGenericMemoryPool*], i32 }
+%struct.btGhostObject = type { %struct.btCollisionObject, %"struct.btAlignedObjectArray<btCollisionObject*>" }
+%struct.btGjkConvexCast = type { %struct.btActionInterface, %struct.btVoronoiSimplexSolver*, %struct.btConvexShape*, %struct.btConvexShape* }
+%struct.btGjkEpaPenetrationDepthSolver = type { %struct.btActionInterface }
+%"struct.btGjkEpaSolver2::sResults" = type { i32, [2 x %struct.btQuadWord], %struct.btQuadWord, float }
+%struct.btGjkPairDetector = type { %struct.btActionInterface, %struct.btQuadWord, %struct.btActionInterface*, %struct.btVoronoiSimplexSolver*, %struct.btConvexShape*, %struct.btConvexShape*, i32, i32, float, float, i8, float, i32, i32, i32, i32 }
+%struct.btHashInt = type { i32 }
+%"struct.btHashMap<btHashInt,btTriangleInfo>" = type { %"struct.btAlignedObjectArray<int>", %"struct.btAlignedObjectArray<int>", %"struct.btAlignedObjectArray<btTriangleInfo>", %"struct.btAlignedObjectArray<btHashInt>" }
+%"struct.btHashMap<btHashPtr,btCollisionShape*>" = type { %"struct.btAlignedObjectArray<int>", %"struct.btAlignedObjectArray<int>", %"struct.btAlignedObjectArray<btCollisionShape*>", %"struct.btAlignedObjectArray<btHashPtr>" }
+%struct.btHashPtr = type { %"union.btHashPtr::._23" }
+%struct.btHashedOverlappingPairCache = type { %struct..0btMultiSapOverlapFilterCallback, %"struct.btAlignedObjectArray<btBroadphasePair>", %struct.btActionInterface*, i8, %"struct.btAlignedObjectArray<int>", %"struct.btAlignedObjectArray<int>", %struct.btActionInterface* }
+%struct.btHeightfieldTerrainShape = type { %struct.btConcaveShape, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, i32, i32, float, float, float, float, float, %"union.btBroadphasePair::._22", i32, i8, i8, i32, %struct.btQuadWord }
+%struct.btHinge2Constraint = type { %struct.btGeneric6DofSpringConstraint, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord }
+%struct.btHingeConstraint = type { %struct.btTypedConstraint, [3 x %struct.btJacobianEntry], [3 x %struct.btJacobianEntry], %struct.btTransform, %struct.btTransform, float, float, float, float, float, float, float, float, float, float, float, float, float, i8, i8, i8, i8, i8, i8, float, i32, float, float, float }
+%struct.btHullTriangle = type { %struct.int3, %struct.int3, i32, i32, float }
+%struct.btIDebugDraw = type { i32 (...)** }
+%struct.btIndexedMesh = type { i32, i8*, i32, i32, i8*, i32, i32, i32 }
+%struct.btIntIndexData = type { i32 }
+%struct.btInternalTriangleIndexCallback = type { i32 (...)** }
+%struct.btJacobianEntry = type { %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, float }
+%struct.btKinematicCharacterController = type { %struct..0btMultiSapOverlapFilterCallback, float, %struct.btPairCachingGhostObject*, %struct.btConvexShape*, float, float, float, float, float, float, float, float, float, float, float, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, float, %struct.btQuadWord, %"struct.btAlignedObjectArray<btPersistentManifold*>", i8, %struct.btQuadWord, i8, i8, i8, i8, float, i32 }
+%struct.btKinematicClosestNotMeConvexResultCallback = type { %"struct.btCollisionWorld::ClosestConvexResultCallback", %struct.btCollisionObject*, %struct.btQuadWord, float }
+%struct.btManifoldArray = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btPersistentManifold**, i8 }
+%struct.btManifoldPoint = type { %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, float, float, float, i32, i32, i32, i32, i8*, float, i8, float, float, float, float, float, float, i32, %struct.btQuadWord, %struct.btQuadWord, [3 x %struct.PfxConstraintRow] }
+%struct.btManifoldResult = type { %struct.btActionInterface, %struct.btPersistentManifold*, %struct.btTransform, %struct.btTransform, %struct.btCollisionObject*, %struct.btCollisionObject*, i32, i32, i32, i32 }
+%struct.btMaterial = type { float, float, [2 x i32] }
+%struct.btMaterialProperties = type { i32, i8*, i32, i32, i32, i8*, i32, i32 }
+%struct.btMatrix3x3 = type { [3 x %struct.btQuadWord] }
+%struct.btMeshPartData = type { %struct.btQuadWord*, %struct.btVector3DoubleData*, %struct.btHashInt*, %struct.btShortIntIndexTripletData*, %struct.btShortIntIndexData*, i32, i32 }
+%struct.btMinkowskiPenetrationDepthSolver = type { %struct.btActionInterface }
+%struct.btMinkowskiSumShape = type { %struct.btConvexInternalShape, %struct.btTransform, %struct.btTransform, %struct.btConvexShape*, %struct.btConvexShape* }
+%struct.btMotionState = type { i32 (...)** }
+%struct.btMultiSapBroadphase = type { %struct.btActionInterface, %"struct.btAlignedObjectArray<btActionInterface*>", %struct.btSimpleBroadphase*, %struct..0btMultiSapOverlapFilterCallback*, %struct.btQuantizedBvh*, i8, %struct.btActionInterface*, i32, %"struct.btAlignedObjectArray<btMultiSapBroadphase::btMultiSapProxy*>" }
+%"struct.btMultiSapBroadphase::btBridgeProxy" = type { %struct.btBroadphaseProxy*, %struct.btActionInterface* }
+%"struct.btMultiSapBroadphase::btMultiSapProxy" = type { %struct.btBroadphaseProxy, %"struct.btAlignedObjectArray<btMultiSapBroadphase::btBridgeProxy*>", %struct.btQuadWord, %struct.btQuadWord, i32 }
+%struct.btMultiSphereShape = type { %struct.btConvexInternalAabbCachingShape, %"struct.btAlignedObjectArray<btVector3>", %"struct.btAlignedObjectArray<float>" }
+%struct.btMultimaterialTriangleMeshShape = type { %struct.btBvhTriangleMeshShape, %"struct.btAlignedObjectArray<btMaterial*>", i32** }
+%struct.btNodeOverlapCallback = type { i32 (...)** }
+%struct.btNullPairCache = type { %struct..0btMultiSapOverlapFilterCallback, %"struct.btAlignedObjectArray<btBroadphasePair>" }
+%struct.btOptimizedBvh = type { %struct.btQuantizedBvh }
+%struct.btOptimizedBvhNode = type { %struct.btQuadWord, %struct.btQuadWord, i32, i32, i32, [5 x i32] }
+%struct.btOptimizedBvhNodeDoubleData = type { %struct.btVector3DoubleData, %struct.btVector3DoubleData, i32, i32, i32, [4 x i8] }
+%struct.btOptimizedBvhNodeFloatData = type { %struct.btQuadWord, %struct.btQuadWord, i32, i32, i32, [4 x i8] }
+%struct.btOverlappingPairCache = type { %struct.btActionInterface }
+%struct.btOverlappingPairCallback = type { i32 (...)** }
+%struct.btPairCachingGhostObject = type { %struct.btGhostObject, %struct.btHashedOverlappingPairCache* }
+%struct.btPairSet = type { %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>" }
+%struct.btPersistentManifold = type { %struct.btHashInt, [4 x %struct.btManifoldPoint], i8*, i8*, i32, float, float, i32, i32, i32 }
+%struct.btPerturbedContactResult = type { %struct.btManifoldResult, %struct.btManifoldResult*, %struct.btTransform, %struct.btTransform, %struct.btTransform, i8, %struct.btActionInterface* }
+%struct.btPlane = type { %struct.btQuadWord, float }
+%struct.btPoint2PointConstraint = type { %struct.btTypedConstraint, [3 x %struct.btJacobianEntry], %struct.btQuadWord, %struct.btQuadWord, i32, float, float, i8, %struct.btConstraintSetting }
+%struct.btPointCollector = type { %struct.btActionInterface, %struct.btQuadWord, %struct.btQuadWord, float, i8 }
+%struct.btPolyhedralConvexAabbCachingShape = type { %struct.btPolyhedralConvexShape, %struct.btQuadWord, %struct.btQuadWord, i8 }
+%struct.btPolyhedralConvexAabbCachingShape.base.32 = type { %struct.btPolyhedralConvexShape, %struct.btQuadWord, %struct.btQuadWord, i8 }
+%struct.btPolyhedralConvexShape = type { %struct.btConvexInternalShape }
+%struct.btPoolAllocator = type { i32, i32, i32, i8*, i8* }
+%struct.btPositionAndRadius = type { %struct.btQuadWord, float }
+%struct.btPrimitiveManagerBase = type { i32 (...)** }
+%struct.btPrimitiveTriangle = type { [3 x %struct.btQuadWord], %struct.btQuaternion, float, float }
+%struct.btQuadWord = type { [4 x float] }
+%struct.btQuantizedBvh = type { i32 (...)**, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, i32, i32, i8, %struct.NodeArray, %struct.NodeArray, %struct.QuantizedNodeArray, %struct.QuantizedNodeArray, i32, %struct.BvhSubtreeInfoArray, i32 }
+%struct.btQuantizedBvhDoubleData = type { %struct.btVector3DoubleData, %struct.btVector3DoubleData, %struct.btVector3DoubleData, i32, i32, i32, i32, %struct.btOptimizedBvhNodeDoubleData*, %struct.BT_QUANTIZED_BVH_NODE*, i32, i32, %struct.btBvhSubtreeInfoData* }
+%struct.btQuantizedBvhFloatData = type { %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, i32, i32, i32, i32, %struct.btOptimizedBvhNodeFloatData*, %struct.BT_QUANTIZED_BVH_NODE*, %struct.btBvhSubtreeInfoData*, i32, i32 }
+%struct.btQuantizedBvhNode = type { [3 x i16], [3 x i16], i32 }
+%struct.btQuantizedBvhTree = type { i32, %struct.GIM_QUANTIZED_BVH_NODE_ARRAY, %struct.GIM_AABB, %struct.btQuadWord }
+%struct.btQuaternion = type { %struct.btQuadWord }
+%struct.btRaycastVehicle = type { %struct.btActionInterface, %"struct.btAlignedObjectArray<btVector3>", %"struct.btAlignedObjectArray<btVector3>", %"struct.btAlignedObjectArray<float>", %"struct.btAlignedObjectArray<float>", i32, i32, float, float, %struct.btActionInterface*, float, float, float, %struct.btRigidBody*, i32, i32, i32, %"struct.btAlignedObjectArray<btWheelInfo>" }
+%"struct.btRaycastVehicle::btVehicleTuning" = type { float, float, float, float, float, float }
+%struct.btRigidBody = type { %struct.btCollisionObject, %struct.btMatrix3x3, %struct.btQuadWord, %struct.btQuadWord, float, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, float, float, i8, float, float, float, float, float, float, %struct.btActionInterface*, %"struct.btAlignedObjectArray<btTypedConstraint*>", i32, i32, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, i32, i32 }
+%"struct.btRigidBody::btRigidBodyConstructionInfo" = type { float, %struct.btActionInterface*, %struct.btTransform, %struct.btCollisionShape*, %struct.btQuadWord, float, float, float, float, float, float, i8, float, float, float, float }
+%struct.btRigidBodyFloatData = type { %struct.btCollisionObjectFloatData, %struct.btMatrix3x3, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, float, float, float, float, float, float, float, float, float, i32 }
+%struct.btRotationalLimitMotor = type { float, float, float, float, float, float, float, float, float, float, float, i8, float, float, i32, float }
+%struct.btSapBroadphaseArray = type { %struct.CONTACT_KEY_TOKEN_COMP, i32, i32, %struct.btActionInterface**, i8 }
+%struct.btScaledBvhTriangleMeshShape = type { %struct.btConcaveShape, %struct.btQuadWord, %struct.btBvhTriangleMeshShape* }
+%struct.btScaledTriangleCallback = type { %struct.btActionInterface, %struct.btActionInterface*, %struct.btQuadWord }
+%struct.btSequentialImpulseConstraintSolver = type { %struct.btActionInterface, %struct.btConstraintArray, %struct.btConstraintArray, %struct.btConstraintArray, %"struct.btAlignedObjectArray<int>", %"struct.btAlignedObjectArray<int>", %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>", i32 }
+%struct.btSerializer = type { i32 (...)** }
+%struct.btShapeHull = type { %"struct.btAlignedObjectArray<btVector3>", %"struct.btAlignedObjectArray<int>", i32, %struct.btConvexShape* }
+%struct.btShortIntIndexData = type { i16, [2 x i8] }
+%struct.btShortIntIndexTripletData = type { [3 x i16], [2 x i8] }
+%struct.btSimpleBroadphase = type { %struct.btActionInterface, i32, i32, i32, %struct.btSimpleBroadphaseProxy*, i8*, i32, %struct..0btMultiSapOverlapFilterCallback*, i8, i32 }
+%struct.btSimpleBroadphaseProxy = type { %struct.btBroadphaseProxy, i32 }
+%struct.btSimpleDynamicsWorld = type { %struct.btDynamicsWorld, %struct.btActionInterface*, i8, %struct.btQuadWord }
+%struct.btSimulationIslandManager = type { i32 (...)**, %struct.btPairSet, %"struct.btAlignedObjectArray<btPersistentManifold*>", %"struct.btAlignedObjectArray<btCollisionObject*>", i8 }
+%struct.btSingleContactCallback = type { %struct.btActionInterface, %struct.btCollisionObject*, %struct.btCollisionWorld*, %"struct.btCollisionWorld::ContactResultCallback"* }
+%struct.btSingleRayCallback = type { %struct.btBroadphaseRayCallback, %struct.btQuadWord, %struct.btQuadWord, %struct.btTransform, %struct.btTransform, %struct.btQuadWord, %struct.btCollisionWorld*, %"struct.btCollisionWorld::RayResultCallback"* }
+%struct.btSingleSweepCallback = type { %struct.btBroadphaseRayCallback, %struct.btTransform, %struct.btTransform, %struct.btQuadWord, %struct.btCollisionWorld*, %"struct.btCollisionWorld::ConvexResultCallback"*, float, %struct.btConvexShape* }
+%struct.btSliderConstraint = type { %struct.btTypedConstraint, i8, i8, %struct.btTransform, %struct.btTransform, i8, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, i8, i8, i32, [3 x %struct.btJacobianEntry], [3 x float], [3 x %struct.btJacobianEntry], float, %struct.btTransform, %struct.btTransform, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, float, float, float, float, i8, float, float, float, i8, float, float, float }
+%struct.btSolve2LinearConstraint = type { float, float }
+%struct.btSolverConstraint = type { %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, float, float, float, float, %struct.btHashInt, %struct.btHashInt, %"union.btSolverConstraint::._25", %"union.btSolverConstraint::._25", %"union.btBroadphasePair::._22", float, float, float, float, float }
+%struct.btSortedOverlappingPairCache = type { %struct..0btMultiSapOverlapFilterCallback, %"struct.btAlignedObjectArray<btBroadphasePair>", i8, i8, %struct.btActionInterface*, %struct.btActionInterface* }
+%struct.btSphereBoxCollisionAlgorithm = type { %struct.btActivatingCollisionAlgorithm, i8, %struct.btPersistentManifold*, i8 }
+%struct.btSphereShape = type { %struct.btConvexInternalShape }
+%struct.btSphereSphereCollisionAlgorithm = type { %struct.btActivatingCollisionAlgorithm, i8, %struct.btPersistentManifold* }
+%struct.btSphereTriangleCollisionAlgorithm = type { %struct.btActivatingCollisionAlgorithm, i8, %struct.btPersistentManifold*, i8 }
+%struct.btStackAlloc = type { i8*, i32, i32, %struct.btBlock*, i8 }
+%struct.btStaticPlaneShape = type { %struct.btConcaveShape, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, float, %struct.btQuadWord }
+%struct.btStridingMeshInterface = type { i32 (...)**, %struct.btQuadWord }
+%struct.btSubSimplexClosestResult = type { %struct.btQuadWord, %struct.btUsageBitfield, [4 x float], i8 }
+%struct.btSubsimplexConvexCast = type { %struct.btActionInterface, %struct.btVoronoiSimplexSolver*, %struct.btConvexShape*, %struct.btConvexShape* }
+%struct.btTetrahedronShapeEx = type { %struct.btBU_Simplex1to4 }
+%struct.btTransform = type { %struct.btMatrix3x3, %struct.btQuadWord }
+%struct.btTranslationalLimitMotor = type { %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, float, float, float, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, [3 x i8], %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, [3 x i32] }
+%struct.btTriangle = type { %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, i32, i32 }
+%struct.btTriangleBuffer = type { %struct.btActionInterface, %"struct.btAlignedObjectArray<btTriangle>" }
+%struct.btTriangleCallback = type { i32 (...)** }
+%struct.btTriangleConvexcastCallback = type { %struct.btActionInterface, %struct.btConvexShape*, %struct.btTransform, %struct.btTransform, %struct.btTransform, float, float }
+%struct.btTriangleIndexVertexArray = type { %struct.btStridingMeshInterface, %struct.IndexedMeshArray, [2 x i32], i32, %struct.btQuadWord, %struct.btQuadWord }
+%struct.btTriangleIndexVertexMaterialArray = type { %struct.btTriangleIndexVertexArray, %struct.MaterialArray }
+%struct.btTriangleInfo = type { i32, float, float, float }
+%struct.btTriangleInfoData = type { i32, float, float, float }
+%struct.btTriangleInfoMap = type { i32 (...)**, %"struct.btHashMap<btHashInt,btTriangleInfo>", float, float, float, float, float }
+%struct.btTriangleInfoMapData = type { i32*, i32*, %struct.btTriangleInfo*, i32*, float, float, float, float, float, i32, i32, i32, i32, [4 x i8] }
+%struct.btTriangleMesh = type { %struct.btTriangleIndexVertexArray, %"struct.btAlignedObjectArray<btVector3>", %"struct.btAlignedObjectArray<float>", %"struct.btAlignedObjectArray<int>", %"struct.btAlignedObjectArray<short unsigned int>", i8, i8, float }
+%struct.btTriangleMeshShape = type { %struct.btConcaveShape, %struct.btQuadWord, %struct.btQuadWord, %struct.btStridingMeshInterface* }
+%struct.btTriangleRaycastCallback = type { %struct.btActionInterface, %struct.btQuadWord, %struct.btQuadWord, i32, float }
+%struct.btTriangleShape = type { %struct.btPolyhedralConvexShape, [3 x %struct.btQuadWord] }
+%struct.btTriangleShapeEx = type { %struct.btTriangleShape }
+%struct.btTypedConstraint = type { i32 (...)**, %struct.btHashInt, i32, %struct.btHashInt, i8, %struct.btRigidBody*, %struct.btRigidBody*, float, float }
+%"struct.btTypedConstraint::btConstraintInfo1" = type { i32, i32 }
+%"struct.btTypedConstraint::btConstraintInfo2" = type { float, float, float*, float*, float*, float*, i32, float*, float*, float*, float*, i32*, i32, float }
+%struct.btTypedObject = type { i32 }
+%struct.btUniformScalingShape = type { %struct.btConvexShape, %struct.btConvexShape*, float }
+%struct.btUnionFind = type { %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>" }
+%struct.btUniversalConstraint = type { %struct.btGeneric6DofConstraint, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord }
+%struct.btUsageBitfield = type <{ i8, i8 }>
+%struct.btVector3 = type { [4 x float] }
+%struct.btVector3DoubleData = type { [4 x double] }
+%struct.btVector4 = type { %struct.btQuadWord }
+%"struct.btVehicleRaycaster::btVehicleRaycasterResult" = type { %struct.btQuadWord, %struct.btQuadWord, float }
+%struct.btVoronoiSimplexSolver = type { i32, [5 x %struct.btQuadWord], [5 x %struct.btQuadWord], [5 x %struct.btQuadWord], %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, float, i8, %struct.btSubSimplexClosestResult, i8 }
+%struct.btWheelContactPoint = type { %struct.btRigidBody*, %struct.btRigidBody*, %struct.btQuadWord, %struct.btQuadWord, float, float }
+%struct.btWheelInfo = type { %"struct.btWheelInfo::RaycastInfo", %struct.btTransform, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, float, float, float, float, float, float, float, float, float, float, float, float, float, float, i8, i8*, float, float, float, float }
+%"struct.btWheelInfo::RaycastInfo" = type { %struct.btQuadWord, %struct.btQuadWord, float, %struct.btQuadWord, %struct.btQuadWord, %struct.btQuadWord, i8, i8* }
+%struct.dContactGeom = type opaque
+%"struct.gim_array<GIM_AABB_DATA>" = type { %struct.GIM_AABB_DATA*, i32, i32 }
+%"struct.gim_array<GIM_BOX_TREE_NODE>" = type { %struct.GIM_BOX_TREE_NODE*, i32, i32 }
+%"struct.gim_array<GIM_CONTACT>" = type { %struct.GIM_CONTACT*, i32, i32 }
+%struct.gim_contact_array = type { %"struct.gim_array<GIM_CONTACT>" }
+%"struct.gjkepa2_impl::EPA" = type { i32, %"struct.gjkepa2_impl::GJK::sSimplex", %struct.btQuadWord, float, [64 x %struct.GIM_AABB], [128 x %"struct.gjkepa2_impl::EPA::sFace"], i32, %"struct.gjkepa2_impl::EPA::sList", %"struct.gjkepa2_impl::EPA::sList" }
+%"struct.gjkepa2_impl::EPA::sFace" = type { %struct.btQuadWord, float, float, [3 x %struct.GIM_AABB*], [3 x %"struct.gjkepa2_impl::EPA::sFace"*], [2 x %"struct.gjkepa2_impl::EPA::sFace"*], [3 x i8], i8 }
+%"struct.gjkepa2_impl::EPA::sHorizon" = type { %"struct.gjkepa2_impl::EPA::sFace"*, %"struct.gjkepa2_impl::EPA::sFace"*, i32 }
+%"struct.gjkepa2_impl::EPA::sList" = type { %"struct.gjkepa2_impl::EPA::sFace"*, i32 }
+%"struct.gjkepa2_impl::GJK" = type { %"struct.gjkepa2_impl::MinkowskiDiff", %struct.btQuadWord, float, [2 x %"struct.gjkepa2_impl::GJK::sSimplex"], [4 x %struct.GIM_AABB], [4 x %struct.GIM_AABB*], i32, i32, %"struct.gjkepa2_impl::GJK::sSimplex"*, i32 }
+%"struct.gjkepa2_impl::GJK::sSV" = type { %struct.btQuadWord, %struct.btQuadWord }
+%"struct.gjkepa2_impl::GJK::sSimplex" = type { [4 x %struct.GIM_AABB*], [4 x float], i32 }
+%"struct.gjkepa2_impl::MinkowskiDiff" = type { [2 x %struct.btConvexShape*], %struct.btMatrix3x3, %struct.btTransform, %struct.anon }
+%struct.int3 = type { i32, i32, i32 }
+%struct.int4 = type { i32, i32, i32, i32 }
+%"struct.std::type_info" = type opaque
+%struct.timeval = type { i32, i32 }
+%"union.btBroadphasePair::._22" = type { i8* }
+%"union.btBroadphasePair::._24" = type { i8* }
+%"union.btDbvtNode::._22" = type { [2 x %struct.btDbvtNode*] }
+%"union.btDbvtNode::._23" = type { [2 x %struct.btDbvtNode*] }
+%"union.btDbvtNode::._25" = type { [2 x %struct.btDbvtNode*] }
+%"union.btHashPtr::._23" = type { [2 x i32] }
+%"union.btHeightfieldTerrainShape::._23" = type { i8* }
+%"union.btSolverConstraint::._25" = type { %struct.btRigidBody* }
+%"union.btSolverConstraint::._27" = type { i8* }
+%"union.btSolverConstraint::._30" = type { %struct.btRigidBody* }
+%"union.btSolverConstraint::._32" = type { i8* }
+%"union.btSolverConstraint::._33" = type { i32 }
+%"union.btSolverConstraint::._34" = type { i32 }
+%"union.btSolverConstraint::._35" = type { %struct.btRigidBody* }
+%"union.btSolverConstraint::._36" = type { %struct.btRigidBody* }
+%"union.btSolverConstraint::._37" = type { i8* }
+%"union.btTypedConstraint::._38" = type { i32 }
+
+@_ZGVZN12btQuaternion11getIdentityEvE12identityQuat = weak global i64 0, align 8 ; [#uses=0]
+@_ZGVZN11btMatrix3x311getIdentityEvE14identityMatrix = weak global i64 0, align 8 ; [#uses=4]
+@_ZGVZN11btTransform11getIdentityEvE17identityTransform = weak global i64 0, align 8 ; [#uses=4]
+@_ZTV13btMotionState = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI13btMotionState to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN13btMotionStateD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN13btMotionStateD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI13btMotionState = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([16 x i8]* @_ZTS13btMotionState, i32 0, i32 0) } } ; [#uses=2]
+@_ZTVN10__cxxabiv117__class_type_infoE = external constant [0 x i32 (...)*] ; [#uses=1]
+@_ZTS13btMotionState = weak_odr constant [16 x i8] c"13btMotionState\00" ; [#uses=1]
+@_ZTV20btDefaultMotionState = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI20btDefaultMotionState to i32 (...)*), i32 (...)* bitcast (void (%struct.btDefaultMotionState*)* @_ZN20btDefaultMotionStateD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btDefaultMotionState*)* @_ZN20btDefaultMotionStateD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btDefaultMotionState*, %struct.btTransform*)* @_ZNK20btDefaultMotionState17getWorldTransformER11btTransform to i32 (...)*), i32 (...)* bitcast (void (%struct.btDefaultMotionState*, %struct.btTransform*)* @_ZN20btDefaultMotionState17setWorldTransformERK11btTransform to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI20btDefaultMotionState = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([23 x i8]* @_ZTS20btDefaultMotionState, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI13btMotionState to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTVN10__cxxabiv120__si_class_type_infoE = external constant [0 x i32 (...)*] ; [#uses=1]
+@_ZTS20btDefaultMotionState = weak_odr constant [23 x i8] c"20btDefaultMotionState\00" ; [#uses=1]
+@.str = private constant [4 x i8] c"int\00", align 1 ; [#uses=1]
+@.str1 = private constant [19 x i8] c"btTriangleInfoData\00", align 1 ; [#uses=1]
+@.str2 = private constant [22 x i8] c"btTriangleInfoMapData\00", align 1 ; [#uses=1]
+@_ZTV17btTypedConstraint = weak_odr constant [13 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__vmi_class_type_info_pseudo1* @_ZTI17btTypedConstraint to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*)* @_ZN17btTypedConstraintD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*)* @_ZN17btTypedConstraintD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*)* @_ZN17btTypedConstraint13buildJacobianEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btConstraintArray*, i32, i32, float)* @_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btRigidBody*, %struct.btRigidBody*, float)* @_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTypedConstraint*)* @_ZNK17btTypedConstraint28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btTypedConstraint*, i8*, %struct.btActionInterface*)* @_ZNK17btTypedConstraint9serializeEPvP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI17btTypedConstraint = weak_odr constant %struct.__vmi_class_type_info_pseudo1 { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv121__vmi_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([20 x i8]* @_ZTS17btTypedConstraint, i32 0, i32 0) }, i32 0, i32 1, [1 x %struct.__base_class_type_info_pseudo] [%struct.__base_class_type_info_pseudo { %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI13btTypedObject to %"struct.std::type_info"*), i32 1026 }] } ; [#uses=2]
+@_ZTVN10__cxxabiv121__vmi_class_type_infoE = external constant [0 x i32 (...)*] ; [#uses=1]
+@_ZTS17btTypedConstraint = weak_odr constant [20 x i8] c"17btTypedConstraint\00" ; [#uses=1]
+@_ZTI13btTypedObject = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([16 x i8]* @_ZTS13btTypedObject, i32 0, i32 0) } } ; [#uses=1]
+@_ZTS13btTypedObject = weak_odr constant [16 x i8] c"13btTypedObject\00" ; [#uses=1]
+@llvm.eh.catch.all.value = linkonce constant i8* null, section "llvm.metadata" ; [#uses=1]
+@_ZTV17btTriangleInfoMap = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__vmi_class_type_info_pseudo1* @_ZTI17btTriangleInfoMap to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleInfoMap*)* @_ZN17btTriangleInfoMapD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleInfoMap*)* @_ZN17btTriangleInfoMapD0Ev to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTriangleInfoMap*)* @_ZNK17btTriangleInfoMap28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btTriangleInfoMap*, i8*, %struct.btActionInterface*)* @_ZNK17btTriangleInfoMap9serializeEPvP12btSerializer to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI17btTriangleInfoMap = weak_odr constant %struct.__vmi_class_type_info_pseudo1 { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv121__vmi_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([20 x i8]* @_ZTS17btTriangleInfoMap, i32 0, i32 0) }, i32 0, i32 1, [1 x %struct.__base_class_type_info_pseudo] [%struct.__base_class_type_info_pseudo { %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI9btHashMapI9btHashInt14btTriangleInfoE to %"struct.std::type_info"*), i32 1026 }] } ; [#uses=1]
+@_ZTS17btTriangleInfoMap = weak_odr constant [20 x i8] c"17btTriangleInfoMap\00" ; [#uses=1]
+@_ZTI9btHashMapI9btHashInt14btTriangleInfoE = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([39 x i8]* @_ZTS9btHashMapI9btHashInt14btTriangleInfoE, i32 0, i32 0) } } ; [#uses=1]
+@_ZTS9btHashMapI9btHashInt14btTriangleInfoE = weak_odr constant [39 x i8] c"9btHashMapI9btHashInt14btTriangleInfoE\00", align 32 ; [#uses=1]
+@_ZZN11btMatrix3x311getIdentityEvE14identityMatrix = weak global %struct.btMatrix3x3 zeroinitializer, align 32 ; [#uses=2]
+@_ZZN11btTransform11getIdentityEvE17identityTransform = weak global %struct.btTransform zeroinitializer, align 32 ; [#uses=18]
+@.str3 = private constant [28 x i8] c"world pos = %.5f,%.5f,%.5f\0A\00", align 1 ; [#uses=1]
+@_ZTV21btBroadphaseInterface = weak_odr constant [16 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI21btBroadphaseInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN21btBroadphaseInterfaceD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN21btBroadphaseInterfaceD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btActionInterface*)* @_ZN21btBroadphaseInterface9resetPoolEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI21btBroadphaseInterface = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([24 x i8]* @_ZTS21btBroadphaseInterface, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS21btBroadphaseInterface = weak_odr constant [24 x i8] c"21btBroadphaseInterface\00" ; [#uses=1]
+@_ZTV25btOverlappingPairCallback = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI25btOverlappingPairCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN25btOverlappingPairCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN25btOverlappingPairCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI25btOverlappingPairCallback = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([28 x i8]* @_ZTS25btOverlappingPairCallback, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS25btOverlappingPairCallback = weak_odr constant [28 x i8] c"25btOverlappingPairCallback\00" ; [#uses=1]
+@_ZTV22btOverlappingPairCache = weak_odr constant [19 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI22btOverlappingPairCache to i32 (...)*), i32 (...)* bitcast (void (%struct..0btMultiSapOverlapFilterCallback*)* @_ZN22btOverlappingPairCacheD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0btMultiSapOverlapFilterCallback*)* @_ZN22btOverlappingPairCacheD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI22btOverlappingPairCache = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([25 x i8]* @_ZTS22btOverlappingPairCache, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI25btOverlappingPairCallback to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS22btOverlappingPairCache = weak_odr constant [25 x i8] c"22btOverlappingPairCache\00" ; [#uses=1]
+@_ZTV20btAxisSweep3InternalIjE = weak_odr constant [16 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI20btAxisSweep3InternalIjE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*)* @_ZN20btAxisSweep3InternalIjED1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*)* @_ZN20btAxisSweep3InternalIjED0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphaseProxy* (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*, i32, i8*, i16, i16, %struct.btActionInterface*, i8*)* @_ZN20btAxisSweep3InternalIjE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalIjE12destroyProxyEP17btBroadphaseProxyP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalIjE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK20btAxisSweep3InternalIjE7getAabbEP17btBroadphaseProxyR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btBroadphaseRayCallback*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZN20btAxisSweep3InternalIjE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalIjE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalIjE25calculateOverlappingPairsEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%"struct.btAxisSweep3Internal<unsigned int>"*)* @_ZN20btAxisSweep3InternalIjE23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%"struct.btAxisSweep3Internal<unsigned int>"*)* @_ZNK20btAxisSweep3InternalIjE23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK20btAxisSweep3InternalIjE17getBroadphaseAabbER9btVector3S2_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalIjE9resetPoolEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*)* @_ZN20btAxisSweep3InternalIjE10printStatsEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI20btAxisSweep3InternalIjE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS20btAxisSweep3InternalIjE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI21btBroadphaseInterface to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS20btAxisSweep3InternalIjE = weak_odr constant [26 x i8] c"20btAxisSweep3InternalIjE\00" ; [#uses=1]
+@_ZTV17bt32BitAxisSweep3 = weak_odr constant [16 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI17bt32BitAxisSweep3 to i32 (...)*), i32 (...)* bitcast (void (%struct.bt32BitAxisSweep3*)* @_ZN17bt32BitAxisSweep3D1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.bt32BitAxisSweep3*)* @_ZN17bt32BitAxisSweep3D0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphaseProxy* (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*, i32, i8*, i16, i16, %struct.btActionInterface*, i8*)* @_ZN20btAxisSweep3InternalIjE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalIjE12destroyProxyEP17btBroadphaseProxyP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalIjE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK20btAxisSweep3InternalIjE7getAabbEP17btBroadphaseProxyR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btBroadphaseRayCallback*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZN20btAxisSweep3InternalIjE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalIjE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalIjE25calculateOverlappingPairsEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%"struct.btAxisSweep3Internal<unsigned int>"*)* @_ZN20btAxisSweep3InternalIjE23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%"struct.btAxisSweep3Internal<unsigned int>"*)* @_ZNK20btAxisSweep3InternalIjE23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK20btAxisSweep3InternalIjE17getBroadphaseAabbER9btVector3S2_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalIjE9resetPoolEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<unsigned int>"*)* @_ZN20btAxisSweep3InternalIjE10printStatsEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI17bt32BitAxisSweep3 = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([20 x i8]* @_ZTS17bt32BitAxisSweep3, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI20btAxisSweep3InternalIjE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS17bt32BitAxisSweep3 = weak_odr constant [20 x i8] c"17bt32BitAxisSweep3\00" ; [#uses=1]
+@_ZTV20btAxisSweep3InternalItE = weak_odr constant [16 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI20btAxisSweep3InternalItE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*)* @_ZN20btAxisSweep3InternalItED1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*)* @_ZN20btAxisSweep3InternalItED0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphaseProxy* (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*, i32, i8*, i16, i16, %struct.btActionInterface*, i8*)* @_ZN20btAxisSweep3InternalItE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalItE12destroyProxyEP17btBroadphaseProxyP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalItE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK20btAxisSweep3InternalItE7getAabbEP17btBroadphaseProxyR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btBroadphaseRayCallback*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZN20btAxisSweep3InternalItE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalItE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalItE25calculateOverlappingPairsEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%"struct.btAxisSweep3Internal<short unsigned int>"*)* @_ZN20btAxisSweep3InternalItE23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%"struct.btAxisSweep3Internal<short unsigned int>"*)* @_ZNK20btAxisSweep3InternalItE23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK20btAxisSweep3InternalItE17getBroadphaseAabbER9btVector3S2_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalItE9resetPoolEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*)* @_ZN20btAxisSweep3InternalItE10printStatsEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI20btAxisSweep3InternalItE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS20btAxisSweep3InternalItE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI21btBroadphaseInterface to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS20btAxisSweep3InternalItE = weak_odr constant [26 x i8] c"20btAxisSweep3InternalItE\00" ; [#uses=1]
+@_ZTV12btAxisSweep3 = weak_odr constant [16 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI12btAxisSweep3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btAxisSweep3*)* @_ZN12btAxisSweep3D1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btAxisSweep3*)* @_ZN12btAxisSweep3D0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphaseProxy* (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*, i32, i8*, i16, i16, %struct.btActionInterface*, i8*)* @_ZN20btAxisSweep3InternalItE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalItE12destroyProxyEP17btBroadphaseProxyP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalItE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK20btAxisSweep3InternalItE7getAabbEP17btBroadphaseProxyR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btBroadphaseRayCallback*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZN20btAxisSweep3InternalItE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalItE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalItE25calculateOverlappingPairsEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%"struct.btAxisSweep3Internal<short unsigned int>"*)* @_ZN20btAxisSweep3InternalItE23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%"struct.btAxisSweep3Internal<short unsigned int>"*)* @_ZNK20btAxisSweep3InternalItE23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK20btAxisSweep3InternalItE17getBroadphaseAabbER9btVector3S2_ to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*, %struct.btActionInterface*)* @_ZN20btAxisSweep3InternalItE9resetPoolEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%"struct.btAxisSweep3Internal<short unsigned int>"*)* @_ZN20btAxisSweep3InternalItE10printStatsEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI12btAxisSweep3 = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([15 x i8]* @_ZTS12btAxisSweep3, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI20btAxisSweep3InternalItE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS12btAxisSweep3 = weak_odr constant [15 x i8] c"12btAxisSweep3\00" ; [#uses=1]
+@_ZTV15btNullPairCache = weak_odr constant [19 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btNullPairCache to i32 (...)*), i32 (...)* bitcast (void (%struct.btNullPairCache*)* @_ZN15btNullPairCacheD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btNullPairCache*)* @_ZN15btNullPairCacheD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphasePair* (%struct.btNullPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* @_ZN15btNullPairCache18addOverlappingPairEP17btBroadphaseProxyS1_ to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btNullPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN15btNullPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btNullPairCache*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN15btNullPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphasePair* (%struct.btNullPairCache*)* @_ZN15btNullPairCache26getOverlappingPairArrayPtrEv to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphasePair* (%struct.btNullPairCache*)* @_ZNK15btNullPairCache26getOverlappingPairArrayPtrEv to i32 (...)*), i32 (...)* bitcast (%"struct.btAlignedObjectArray<btBroadphasePair>"* (%struct.btNullPairCache*)* @_ZN15btNullPairCache23getOverlappingPairArrayEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btNullPairCache*, %struct.btBroadphasePair*, %struct.btActionInterface*)* @_ZN15btNullPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btNullPairCache*)* @_ZNK15btNullPairCache22getNumOverlappingPairsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btNullPairCache*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN15btNullPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btNullPairCache*, %struct.btActionInterface*)* @_ZN15btNullPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btNullPairCache*, %struct.btActionInterface*, %struct.btActionInterface*)* @_ZN15btNullPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphasePair* (%struct.btNullPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* @_ZN15btNullPairCache8findPairEP17btBroadphaseProxyS1_ to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btNullPairCache*)* @_ZN15btNullPairCache18hasDeferredRemovalEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btNullPairCache*, %struct.btActionInterface*)* @_ZN15btNullPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btNullPairCache*, %struct.btActionInterface*)* @_ZN15btNullPairCache20sortOverlappingPairsEP12btDispatcher to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI15btNullPairCache = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([18 x i8]* @_ZTS15btNullPairCache, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI22btOverlappingPairCache to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS15btNullPairCache = weak_odr constant [18 x i8] c"15btNullPairCache\00" ; [#uses=1]
+@_ZTV20btCollisionAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI20btCollisionAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionAlgorithm*)* @_ZN20btCollisionAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionAlgorithm*)* @_ZN20btCollisionAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI20btCollisionAlgorithm = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([23 x i8]* @_ZTS20btCollisionAlgorithm, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS20btCollisionAlgorithm = weak_odr constant [23 x i8] c"20btCollisionAlgorithm\00" ; [#uses=1]
+@_ZTVN6btDbvt8ICollideE = weak_odr constant [9 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTIN6btDbvt8ICollideE to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN6btDbvt8ICollideD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN6btDbvt8ICollideD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btDbvtNode*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNode to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btDbvtNode*, float)* @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btActionInterface*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btActionInterface*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTIN6btDbvt8ICollideE = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTSN6btDbvt8ICollideE, i32 0, i32 0) } } ; [#uses=2]
+@_ZTSN6btDbvt8ICollideE = weak_odr constant [19 x i8] c"N6btDbvt8ICollideE\00" ; [#uses=1]
+@_ZTV20btDbvtNodeEnumerator = weak_odr constant [9 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI20btDbvtNodeEnumerator to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtNodeEnumerator*)* @_ZN20btDbvtNodeEnumeratorD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtNodeEnumerator*)* @_ZN20btDbvtNodeEnumeratorD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btDbvtNode*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtNodeEnumerator*, %struct.btDbvtNode*)* @_ZN20btDbvtNodeEnumerator7ProcessEPK10btDbvtNode to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btDbvtNode*, float)* @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btActionInterface*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btActionInterface*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI20btDbvtNodeEnumerator = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([23 x i8]* @_ZTS20btDbvtNodeEnumerator, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN6btDbvt8ICollideE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS20btDbvtNodeEnumerator = weak_odr constant [23 x i8] c"20btDbvtNodeEnumerator\00" ; [#uses=1]
+@_ZGVZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis = internal global i64 0, align 8 ; [#uses=3]
+@_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis = internal global [3 x %struct.btQuadWord] zeroinitializer, align 32 ; [#uses=15]
+@_ZTV18btDbvtTreeCollider = weak_odr constant [9 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI18btDbvtTreeCollider to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtTreeCollider*)* @_ZN18btDbvtTreeColliderD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtTreeCollider*)* @_ZN18btDbvtTreeColliderD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtTreeCollider*, %struct.btDbvtNode*, %struct.btDbvtNode*)* @_ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNodeS2_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtTreeCollider*, %struct.btDbvtNode*)* @_ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNode to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btDbvtNode*, float)* @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btActionInterface*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btActionInterface*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI18btDbvtTreeCollider = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([21 x i8]* @_ZTS18btDbvtTreeCollider, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN6btDbvt8ICollideE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS18btDbvtTreeCollider = weak_odr constant [21 x i8] c"18btDbvtTreeCollider\00" ; [#uses=1]
+@_ZTV19BroadphaseRayTester = weak_odr constant [9 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI19BroadphaseRayTester to i32 (...)*), i32 (...)* bitcast (void (%struct.BroadphaseRayTester*)* @_ZN19BroadphaseRayTesterD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.BroadphaseRayTester*)* @_ZN19BroadphaseRayTesterD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btDbvtNode*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3_ to i32 (...)*), i32 (...)* bitcast (void (%struct.BroadphaseRayTester*, %struct.btDbvtNode*)* @_ZN19BroadphaseRayTester7ProcessEPK10btDbvtNode to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btDbvtNode*, float)* @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btActionInterface*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btActionInterface*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI19BroadphaseRayTester = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([22 x i8]* @_ZTS19BroadphaseRayTester, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN6btDbvt8ICollideE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS19BroadphaseRayTester = weak_odr constant [22 x i8] c"19BroadphaseRayTester\00" ; [#uses=1]
+@_ZTV20BroadphaseAabbTester = weak_odr constant [9 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI20BroadphaseAabbTester to i32 (...)*), i32 (...)* bitcast (void (%struct.BroadphaseAabbTester*)* @_ZN20BroadphaseAabbTesterD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.BroadphaseAabbTester*)* @_ZN20BroadphaseAabbTesterD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btDbvtNode*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3_ to i32 (...)*), i32 (...)* bitcast (void (%struct.BroadphaseAabbTester*, %struct.btDbvtNode*)* @_ZN20BroadphaseAabbTester7ProcessEPK10btDbvtNode to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btDbvtNode*, float)* @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btActionInterface*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btActionInterface*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI20BroadphaseAabbTester = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([23 x i8]* @_ZTS20BroadphaseAabbTester, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN6btDbvt8ICollideE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS20BroadphaseAabbTester = weak_odr constant [23 x i8] c"20BroadphaseAabbTester\00" ; [#uses=1]
+@_ZTV16btDbvtBroadphase = weak_odr constant [16 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI16btDbvtBroadphase to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtBroadphase*)* @_ZN16btDbvtBroadphaseD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtBroadphase*)* @_ZN16btDbvtBroadphaseD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphaseProxy* (%struct.btDbvtBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, i32, i8*, i16, i16, %struct.btActionInterface*, i8*)* @_ZN16btDbvtBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtBroadphase*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN16btDbvtBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtBroadphase*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* @_ZN16btDbvtBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtBroadphase*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK16btDbvtBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btBroadphaseRayCallback*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZN16btDbvtBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* @_ZN16btDbvtBroadphase8aabbTestERK9btVector3S2_R24btBroadphaseAabbCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtBroadphase*, %struct.btActionInterface*)* @_ZN16btDbvtBroadphase25calculateOverlappingPairsEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%struct.btDbvtBroadphase*)* @_ZN16btDbvtBroadphase23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%struct.btDbvtBroadphase*)* @_ZNK16btDbvtBroadphase23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK16btDbvtBroadphase17getBroadphaseAabbER9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtBroadphase*, %struct.btActionInterface*)* @_ZN16btDbvtBroadphase9resetPoolEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btDbvtBroadphase*)* @_ZN16btDbvtBroadphase10printStatsEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI16btDbvtBroadphase = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTS16btDbvtBroadphase, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI21btBroadphaseInterface to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS16btDbvtBroadphase = weak_odr constant [19 x i8] c"16btDbvtBroadphase\00" ; [#uses=1]
+@_ZTV12btDispatcher = weak_odr constant [16 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN12btDispatcherD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN12btDispatcherD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI12btDispatcher = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([15 x i8]* @_ZTS12btDispatcher, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS12btDispatcher = weak_odr constant [15 x i8] c"12btDispatcher\00" ; [#uses=1]
+@_ZTV23btOverlapFilterCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI23btOverlapFilterCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN23btOverlapFilterCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN23btOverlapFilterCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI23btOverlapFilterCallback = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btOverlapFilterCallback, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS23btOverlapFilterCallback = weak_odr constant [26 x i8] c"23btOverlapFilterCallback\00" ; [#uses=1]
+@_ZTVZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheE31btMultiSapOverlapFilterCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheE31btMultiSapOverlapFilterCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..0btMultiSapOverlapFilterCallback*)* @_ZZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheEN31btMultiSapOverlapFilterCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0btMultiSapOverlapFilterCallback*)* @_ZZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheEN31btMultiSapOverlapFilterCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* @_ZZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheENK31btMultiSapOverlapFilterCallback23needBroadphaseCollisionEP17btBroadphaseProxyS4_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheE31btMultiSapOverlapFilterCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([88 x i8]* @_ZTSZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheE31btMultiSapOverlapFilterCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI23btOverlapFilterCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheE31btMultiSapOverlapFilterCallback = weak_odr constant [88 x i8] c"ZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheE31btMultiSapOverlapFilterCallback\00", align 32 ; [#uses=1]
+@_ZTV21btNodeOverlapCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI21btNodeOverlapCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN21btNodeOverlapCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN21btNodeOverlapCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI21btNodeOverlapCallback = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([24 x i8]* @_ZTS21btNodeOverlapCallback, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS21btNodeOverlapCallback = weak_odr constant [24 x i8] c"21btNodeOverlapCallback\00" ; [#uses=1]
+@_ZTVZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherE21MyNodeOverlapCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherE21MyNodeOverlapCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..1MyNodeOverlapCallback*)* @_ZZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherEN21MyNodeOverlapCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..1MyNodeOverlapCallback*)* @_ZZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherEN21MyNodeOverlapCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..1MyNodeOverlapCallback*, i32, i32)* @_ZZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherEN21MyNodeOverlapCallback11processNodeEii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherE21MyNodeOverlapCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([108 x i8]* @_ZTSZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherE21MyNodeOverlapCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI21btNodeOverlapCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherE21MyNodeOverlapCallback = weak_odr constant [108 x i8] c"ZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherE21MyNodeOverlapCallback\00", align 32 ; [#uses=1]
+@stopUpdating = global i8 0 ; [#uses=1]
+@_ZTV20btMultiSapBroadphase = weak_odr constant [16 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI20btMultiSapBroadphase to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSapBroadphase*)* @_ZN20btMultiSapBroadphaseD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSapBroadphase*)* @_ZN20btMultiSapBroadphaseD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphaseProxy* (%struct.btMultiSapBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, i32, i8*, i16, i16, %struct.btActionInterface*, i8*)* @_ZN20btMultiSapBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSapBroadphase*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN20btMultiSapBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSapBroadphase*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* @_ZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSapBroadphase*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK20btMultiSapBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSapBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btBroadphaseRayCallback*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZN20btMultiSapBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2_ to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSapBroadphase*, %struct.btActionInterface*)* @_ZN20btMultiSapBroadphase25calculateOverlappingPairsEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%struct.btMultiSapBroadphase*)* @_ZN20btMultiSapBroadphase23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%struct.btMultiSapBroadphase*)* @_ZNK20btMultiSapBroadphase23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSapBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK20btMultiSapBroadphase17getBroadphaseAabbER9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSapBroadphase*, %struct.btActionInterface*)* @_ZN20btMultiSapBroadphase9resetPoolEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSapBroadphase*)* @_ZN20btMultiSapBroadphase10printStatsEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI20btMultiSapBroadphase = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([23 x i8]* @_ZTS20btMultiSapBroadphase, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI21btBroadphaseInterface to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS20btMultiSapBroadphase = weak_odr constant [23 x i8] c"20btMultiSapBroadphase\00" ; [#uses=1]
+@gOverlappingPairs = global i32 0 ; [#uses=16]
+@_ZTV17btOverlapCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI17btOverlapCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN17btOverlapCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN17btOverlapCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI17btOverlapCallback = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([20 x i8]* @_ZTS17btOverlapCallback, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS17btOverlapCallback = weak_odr constant [20 x i8] c"17btOverlapCallback\00" ; [#uses=1]
+@_ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..0CleanPairCallback*)* @_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0CleanPairCallback*)* @_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct..0CleanPairCallback*, %struct.btBroadphasePair*)* @_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallback14processOverlapER16btBroadphasePair to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([110 x i8]* @_ZTSZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI17btOverlapCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback = weak_odr constant [110 x i8] c"ZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback\00", align 32 ; [#uses=1]
+@_ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..1RemovePairCallback*)* @_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..1RemovePairCallback*)* @_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct..1RemovePairCallback*, %struct.btBroadphasePair*)* @_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallback14processOverlapER16btBroadphasePair to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([129 x i8]* @_ZTSZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI17btOverlapCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback = weak_odr constant [129 x i8] c"ZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback\00", align 32 ; [#uses=1]
+@gRemovePairs = global i32 0 ; [#uses=4]
+@_ZTVZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..0CleanPairCallback*)* @_ZZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0CleanPairCallback*)* @_ZZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct..0CleanPairCallback*, %struct.btBroadphasePair*)* @_ZZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallback14processOverlapER16btBroadphasePair to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([110 x i8]* @_ZTSZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI17btOverlapCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback = weak_odr constant [110 x i8] c"ZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback\00", align 32 ; [#uses=1]
+@_ZTVZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..1RemovePairCallback*)* @_ZZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..1RemovePairCallback*)* @_ZZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct..1RemovePairCallback*, %struct.btBroadphasePair*)* @_ZZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallback14processOverlapER16btBroadphasePair to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([129 x i8]* @_ZTSZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI17btOverlapCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback = weak_odr constant [129 x i8] c"ZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback\00", align 32 ; [#uses=1]
+@gFindPairs = global i32 0 ; [#uses=2]
+@_ZTV28btSortedOverlappingPairCache = weak_odr constant [19 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI28btSortedOverlappingPairCache to i32 (...)*), i32 (...)* bitcast (void (%struct.btSortedOverlappingPairCache*)* @_ZN28btSortedOverlappingPairCacheD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSortedOverlappingPairCache*)* @_ZN28btSortedOverlappingPairCacheD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphasePair* (%struct.btSortedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* @_ZN28btSortedOverlappingPairCache18addOverlappingPairEP17btBroadphaseProxyS1_ to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btSortedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN28btSortedOverlappingPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btSortedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphasePair* (%struct.btSortedOverlappingPairCache*)* @_ZN28btSortedOverlappingPairCache26getOverlappingPairArrayPtrEv to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphasePair* (%struct.btSortedOverlappingPairCache*)* @_ZNK28btSortedOverlappingPairCache26getOverlappingPairArrayPtrEv to i32 (...)*), i32 (...)* bitcast (%"struct.btAlignedObjectArray<btBroadphasePair>"* (%struct.btSortedOverlappingPairCache*)* @_ZN28btSortedOverlappingPairCache23getOverlappingPairArrayEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btSortedOverlappingPairCache*, %struct.btBroadphasePair*, %struct.btActionInterface*)* @_ZN28btSortedOverlappingPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btSortedOverlappingPairCache*)* @_ZNK28btSortedOverlappingPairCache22getNumOverlappingPairsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btSortedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btSortedOverlappingPairCache*, %struct.btActionInterface*)* @_ZN28btSortedOverlappingPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btSortedOverlappingPairCache*, %struct.btActionInterface*, %struct.btActionInterface*)* @_ZN28btSortedOverlappingPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphasePair* (%struct.btSortedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* @_ZN28btSortedOverlappingPairCache8findPairEP17btBroadphaseProxyS1_ to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btSortedOverlappingPairCache*)* @_ZN28btSortedOverlappingPairCache18hasDeferredRemovalEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btSortedOverlappingPairCache*, %struct.btActionInterface*)* @_ZN28btSortedOverlappingPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btSortedOverlappingPairCache*, %struct.btActionInterface*)* @_ZN28btSortedOverlappingPairCache20sortOverlappingPairsEP12btDispatcher to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI28btSortedOverlappingPairCache = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([31 x i8]* @_ZTS28btSortedOverlappingPairCache, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI22btOverlappingPairCache to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS28btSortedOverlappingPairCache = weak_odr constant [31 x i8] c"28btSortedOverlappingPairCache\00", align 4 ; [#uses=1]
+@_ZTV28btHashedOverlappingPairCache = weak_odr constant [19 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI28btHashedOverlappingPairCache to i32 (...)*), i32 (...)* bitcast (void (%struct.btHashedOverlappingPairCache*)* @_ZN28btHashedOverlappingPairCacheD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btHashedOverlappingPairCache*)* @_ZN28btHashedOverlappingPairCacheD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphasePair* (%struct.btHashedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* @_ZN28btHashedOverlappingPairCache18addOverlappingPairEP17btBroadphaseProxyS1_ to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btHashedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN28btHashedOverlappingPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btHashedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphasePair* (%struct.btHashedOverlappingPairCache*)* @_ZN28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphasePair* (%struct.btHashedOverlappingPairCache*)* @_ZNK28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv to i32 (...)*), i32 (...)* bitcast (%"struct.btAlignedObjectArray<btBroadphasePair>"* (%struct.btHashedOverlappingPairCache*)* @_ZN28btHashedOverlappingPairCache23getOverlappingPairArrayEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btHashedOverlappingPairCache*, %struct.btBroadphasePair*, %struct.btActionInterface*)* @_ZN28btHashedOverlappingPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btHashedOverlappingPairCache*)* @_ZNK28btHashedOverlappingPairCache22getNumOverlappingPairsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btHashedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btHashedOverlappingPairCache*, %struct.btActionInterface*)* @_ZN28btHashedOverlappingPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btHashedOverlappingPairCache*, %struct.btActionInterface*, %struct.btActionInterface*)* @_ZN28btHashedOverlappingPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphasePair* (%struct.btHashedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* @_ZN28btHashedOverlappingPairCache8findPairEP17btBroadphaseProxyS1_ to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btHashedOverlappingPairCache*)* @_ZN28btHashedOverlappingPairCache18hasDeferredRemovalEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btHashedOverlappingPairCache*, %struct.btActionInterface*)* @_ZN28btHashedOverlappingPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btHashedOverlappingPairCache*, %struct.btActionInterface*)* @_ZN28btHashedOverlappingPairCache20sortOverlappingPairsEP12btDispatcher to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI28btHashedOverlappingPairCache = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([31 x i8]* @_ZTS28btHashedOverlappingPairCache, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI22btOverlappingPairCache to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS28btHashedOverlappingPairCache = weak_odr constant [31 x i8] c"28btHashedOverlappingPairCache\00", align 4 ; [#uses=1]
+@gAddedPairs = global i32 0 ; [#uses=4]
+@maxIterations = global i32 0 ; [#uses=8]
+@.str4 = private constant [23 x i8] c"btOptimizedBvhNodeData\00", align 1 ; [#uses=1]
+@.str15 = private constant [23 x i8] c"btQuantizedBvhNodeData\00", align 1 ; [#uses=1]
+@.str26 = private constant [21 x i8] c"btBvhSubtreeInfoData\00", align 1 ; [#uses=1]
+@.str37 = private constant [24 x i8] c"btQuantizedBvhFloatData\00", align 1 ; [#uses=1]
+@_ZTV14btQuantizedBvh = weak_odr constant [9 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI14btQuantizedBvh to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuantizedBvh*)* @_ZN14btQuantizedBvhD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuantizedBvh*)* @_ZN14btQuantizedBvhD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btQuantizedBvh*, i8*, i32, i8)* @_ZNK14btQuantizedBvh9serializeEPvjb to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btQuantizedBvh*)* @_ZNK14btQuantizedBvh31calculateSerializeBufferSizeNewEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btQuantizedBvh*, i8*, %struct.btActionInterface*)* @_ZNK14btQuantizedBvh9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuantizedBvh*, %struct.btQuantizedBvhFloatData*)* @_ZN14btQuantizedBvh16deSerializeFloatER23btQuantizedBvhFloatData to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuantizedBvh*, %struct.btQuantizedBvhDoubleData*)* @_ZN14btQuantizedBvh17deSerializeDoubleER24btQuantizedBvhDoubleData to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI14btQuantizedBvh = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([17 x i8]* @_ZTS14btQuantizedBvh, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS14btQuantizedBvh = weak_odr constant [17 x i8] c"14btQuantizedBvh\00" ; [#uses=1]
+@_ZTV18btSimpleBroadphase = weak_odr constant [16 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI18btSimpleBroadphase to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleBroadphase*)* @_ZN18btSimpleBroadphaseD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleBroadphase*)* @_ZN18btSimpleBroadphaseD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btBroadphaseProxy* (%struct.btSimpleBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, i32, i8*, i16, i16, %struct.btActionInterface*, i8*)* @_ZN18btSimpleBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleBroadphase*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* @_ZN18btSimpleBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleBroadphase*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* @_ZN18btSimpleBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleBroadphase*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK18btSimpleBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btBroadphaseRayCallback*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZN18btSimpleBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* @_ZN18btSimpleBroadphase8aabbTestERK9btVector3S2_R24btBroadphaseAabbCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleBroadphase*, %struct.btActionInterface*)* @_ZN18btSimpleBroadphase25calculateOverlappingPairsEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%struct.btSimpleBroadphase*)* @_ZN18btSimpleBroadphase23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (%struct..0btMultiSapOverlapFilterCallback* (%struct.btSimpleBroadphase*)* @_ZNK18btSimpleBroadphase23getOverlappingPairCacheEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK18btSimpleBroadphase17getBroadphaseAabbER9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleBroadphase*, %struct.btActionInterface*)* @_ZN18btSimpleBroadphase9resetPoolEP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleBroadphase*)* @_ZN18btSimpleBroadphase10printStatsEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI18btSimpleBroadphase = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([21 x i8]* @_ZTS18btSimpleBroadphase, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI21btBroadphaseInterface to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS18btSimpleBroadphase = weak_odr constant [21 x i8] c"18btSimpleBroadphase\00" ; [#uses=1]
+@_ZTV30btActivatingCollisionAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btActivatingCollisionAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btActivatingCollisionAlgorithm*)* @_ZN30btActivatingCollisionAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActivatingCollisionAlgorithm*)* @_ZN30btActivatingCollisionAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI30btActivatingCollisionAlgorithm = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([33 x i8]* @_ZTS30btActivatingCollisionAlgorithm, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI20btCollisionAlgorithm to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS30btActivatingCollisionAlgorithm = weak_odr constant [33 x i8] c"30btActivatingCollisionAlgorithm\00", align 32 ; [#uses=1]
+@_ZTV26btBoxBoxCollisionAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI26btBoxBoxCollisionAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dBox2dCollisionAlgorithm*)* @_ZN26btBoxBoxCollisionAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dBox2dCollisionAlgorithm*)* @_ZN26btBoxBoxCollisionAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dBox2dCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN26btBoxBoxCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (float (%struct.btBox2dBox2dCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN26btBoxBoxCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dBox2dCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* @_ZN26btBoxBoxCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI26btBoxBoxCollisionAlgorithm = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([29 x i8]* @_ZTS26btBoxBoxCollisionAlgorithm, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btActivatingCollisionAlgorithm to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS26btBoxBoxCollisionAlgorithm = weak_odr constant [29 x i8] c"26btBoxBoxCollisionAlgorithm\00" ; [#uses=1]
+@b2_maxManifoldPoints = global i32 2 ; [#uses=2]
+@_ZTV30btBox2dBox2dCollisionAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btBox2dBox2dCollisionAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dBox2dCollisionAlgorithm*)* @_ZN30btBox2dBox2dCollisionAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dBox2dCollisionAlgorithm*)* @_ZN30btBox2dBox2dCollisionAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dBox2dCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN30btBox2dBox2dCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (float (%struct.btBox2dBox2dCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN30btBox2dBox2dCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dBox2dCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* @_ZN30btBox2dBox2dCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI30btBox2dBox2dCollisionAlgorithm = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([33 x i8]* @_ZTS30btBox2dBox2dCollisionAlgorithm, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btActivatingCollisionAlgorithm to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS30btBox2dBox2dCollisionAlgorithm = weak_odr constant [33 x i8] c"30btBox2dBox2dCollisionAlgorithm\00", align 32 ; [#uses=1]
+@_ZTV36btDiscreteCollisionDetectorInterface = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI36btDiscreteCollisionDetectorInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN36btDiscreteCollisionDetectorInterfaceD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN36btDiscreteCollisionDetectorInterfaceD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI36btDiscreteCollisionDetectorInterface = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([39 x i8]* @_ZTS36btDiscreteCollisionDetectorInterface, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS36btDiscreteCollisionDetectorInterface = weak_odr constant [39 x i8] c"36btDiscreteCollisionDetectorInterface\00", align 32 ; [#uses=1]
+@_ZTV16btBoxBoxDetector = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI16btBoxBoxDetector to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxBoxDetector*)* @_ZN16btBoxBoxDetectorD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxBoxDetector*)* @_ZN16btBoxBoxDetectorD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxBoxDetector*, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"*, %struct.btActionInterface*, %struct.btActionInterface*, i8)* @_ZN16btBoxBoxDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI16btBoxBoxDetector = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTS16btBoxBoxDetector, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI36btDiscreteCollisionDetectorInterface to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS16btBoxBoxDetector = weak_odr constant [19 x i8] c"16btBoxBoxDetector\00" ; [#uses=1]
+@gNumManifold = global i32 0 ; [#uses=4]
+@_ZTVN36btDiscreteCollisionDetectorInterface6ResultE = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTIN36btDiscreteCollisionDetectorInterface6ResultE to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN36btDiscreteCollisionDetectorInterface6ResultD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN36btDiscreteCollisionDetectorInterface6ResultD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN36btDiscreteCollisionDetectorInterface6ResultE = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([48 x i8]* @_ZTSN36btDiscreteCollisionDetectorInterface6ResultE, i32 0, i32 0) } } ; [#uses=2]
+@_ZTSN36btDiscreteCollisionDetectorInterface6ResultE = weak_odr constant [48 x i8] c"N36btDiscreteCollisionDetectorInterface6ResultE\00", align 32 ; [#uses=1]
+@_ZTV23btCollisionPairCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btCollisionPairCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionPairCallback*)* @_ZN23btCollisionPairCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionPairCallback*)* @_ZN23btCollisionPairCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btCollisionPairCallback*, %struct.btBroadphasePair*)* @_ZN23btCollisionPairCallback14processOverlapER16btBroadphasePair to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI23btCollisionPairCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btCollisionPairCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI17btOverlapCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS23btCollisionPairCallback = weak_odr constant [26 x i8] c"23btCollisionPairCallback\00" ; [#uses=1]
+@_ZTV21btCollisionDispatcher = weak_odr constant [16 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btCollisionDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionDispatcher*)* @_ZN21btCollisionDispatcherD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionDispatcher*)* @_ZN21btCollisionDispatcherD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%struct.btCollisionDispatcher*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btPersistentManifold*)* @_ZN21btCollisionDispatcher13findAlgorithmEP17btCollisionObjectS1_P20btPersistentManifold to i32 (...)*), i32 (...)* bitcast (%struct.btPersistentManifold* (%struct.btCollisionDispatcher*, i8*, i8*)* @_ZN21btCollisionDispatcher14getNewManifoldEPvS0_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionDispatcher*, %struct.btPersistentManifold*)* @_ZN21btCollisionDispatcher15releaseManifoldEP20btPersistentManifold to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionDispatcher*, %struct.btPersistentManifold*)* @_ZN21btCollisionDispatcher13clearManifoldEP20btPersistentManifold to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btCollisionDispatcher*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN21btCollisionDispatcher14needsCollisionEP17btCollisionObjectS1_ to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btCollisionDispatcher*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN21btCollisionDispatcher13needsResponseEP17btCollisionObjectS1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionDispatcher*, %struct..0btMultiSapOverlapFilterCallback*, %struct.btDispatcherInfo*, %struct.btActionInterface*)* @_ZN21btCollisionDispatcher25dispatchAllCollisionPairsEP22btOverlappingPairCacheRK16btDispatcherInfoP12btDispatcher to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionDispatcher*)* @_ZNK21btCollisionDispatcher15getNumManifoldsEv to i32 (...)*), i32 (...)* bitcast (%struct.btPersistentManifold* (%struct.btCollisionDispatcher*, i32)* @_ZN21btCollisionDispatcher26getManifoldByIndexInternalEi to i32 (...)*), i32 (...)* bitcast (%struct.btPersistentManifold** (%struct.btCollisionDispatcher*)* @_ZN21btCollisionDispatcher26getInternalManifoldPointerEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionDispatcher*, i32)* @_ZN21btCollisionDispatcher26allocateCollisionAlgorithmEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionDispatcher*, i8*)* @_ZN21btCollisionDispatcher22freeCollisionAlgorithmEPv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI21btCollisionDispatcher = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([24 x i8]* @_ZTS21btCollisionDispatcher, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI12btDispatcher to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS21btCollisionDispatcher = weak_odr constant [24 x i8] c"21btCollisionDispatcher\00" ; [#uses=1]
+@_ZTV17btCollisionObject = weak_odr constant [9 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI17btCollisionObject to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN17btCollisionObject24checkCollideWithOverrideEPS_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionObject*)* @_ZN17btCollisionObjectD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionObject*)* @_ZN17btCollisionObjectD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionObject*, %struct.btCollisionShape*)* @_ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionObject*)* @_ZNK17btCollisionObject28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionObject*, i8*, %struct.btActionInterface*)* @_ZNK17btCollisionObject9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionObject*, %struct.btActionInterface*)* @_ZNK17btCollisionObject21serializeSingleObjectEP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI17btCollisionObject = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([20 x i8]* @_ZTS17btCollisionObject, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS17btCollisionObject = weak_odr constant [20 x i8] c"17btCollisionObject\00" ; [#uses=1]
+@.str11 = private constant [27 x i8] c"btCollisionObjectFloatData\00", align 1 ; [#uses=1]
+@_ZTVN16btCollisionWorld17RayResultCallbackE = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTIN16btCollisionWorld17RayResultCallbackE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btCollisionWorld::RayResultCallback"*)* @_ZN16btCollisionWorld17RayResultCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btCollisionWorld::RayResultCallback"*)* @_ZN16btCollisionWorld17RayResultCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%"struct.btCollisionWorld::RayResultCallback"*, %struct.btBroadphaseProxy*)* @_ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN16btCollisionWorld17RayResultCallbackE = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([40 x i8]* @_ZTSN16btCollisionWorld17RayResultCallbackE, i32 0, i32 0) } } ; [#uses=2]
+@_ZTSN16btCollisionWorld17RayResultCallbackE = weak_odr constant [40 x i8] c"N16btCollisionWorld17RayResultCallbackE\00", align 32 ; [#uses=1]
+@_ZTVN16btCollisionWorld20ConvexResultCallbackE = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTIN16btCollisionWorld20ConvexResultCallbackE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btCollisionWorld::ConvexResultCallback"*)* @_ZN16btCollisionWorld20ConvexResultCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btCollisionWorld::ConvexResultCallback"*)* @_ZN16btCollisionWorld20ConvexResultCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%"struct.btCollisionWorld::ConvexResultCallback"*, %struct.btBroadphaseProxy*)* @_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN16btCollisionWorld20ConvexResultCallbackE = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([43 x i8]* @_ZTSN16btCollisionWorld20ConvexResultCallbackE, i32 0, i32 0) } } ; [#uses=2]
+@_ZTSN16btCollisionWorld20ConvexResultCallbackE = weak_odr constant [43 x i8] c"N16btCollisionWorld20ConvexResultCallbackE\00", align 32 ; [#uses=1]
+@_ZTV30btConvexPenetrationDepthSolver = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btConvexPenetrationDepthSolver to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN30btConvexPenetrationDepthSolverD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN30btConvexPenetrationDepthSolverD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI30btConvexPenetrationDepthSolver = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([33 x i8]* @_ZTS30btConvexPenetrationDepthSolver, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS30btConvexPenetrationDepthSolver = weak_odr constant [33 x i8] c"30btConvexPenetrationDepthSolver\00", align 32 ; [#uses=1]
+@_ZTVN12btConvexCast10CastResultE = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTIN12btConvexCast10CastResultE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btConvexCast::CastResult"*, float)* @_ZN12btConvexCast10CastResult9DebugDrawEf to i32 (...)*), i32 (...)* bitcast (void (%"struct.btConvexCast::CastResult"*, %struct.btTransform*)* @_ZN12btConvexCast10CastResult15drawCoordSystemERK11btTransform to i32 (...)*), i32 (...)* bitcast (void (%"struct.btConvexCast::CastResult"*)* @_ZN12btConvexCast10CastResultD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btConvexCast::CastResult"*)* @_ZN12btConvexCast10CastResultD0Ev to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN12btConvexCast10CastResultE = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([29 x i8]* @_ZTSN12btConvexCast10CastResultE, i32 0, i32 0) } } ; [#uses=1]
+@_ZTSN12btConvexCast10CastResultE = weak_odr constant [29 x i8] c"N12btConvexCast10CastResultE\00" ; [#uses=1]
+@_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2 = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2 to i32 (...)*), i32 (...)* bitcast (void (%struct..2LocalInfoAdder2*)* @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..2LocalInfoAdder2*)* @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%"struct.btCollisionWorld::RayResultCallback"*, %struct.btBroadphaseProxy*)* @_ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy to i32 (...)*), i32 (...)* bitcast (float (%struct..2LocalInfoAdder2*, %"struct.btCollisionWorld::LocalRayResult"*, i8)* @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder215addSingleResultERNS_14LocalRayResultEb to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2 = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([140 x i8]* @_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN16btCollisionWorld17RayResultCallbackE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2 = weak_odr constant [140 x i8] c"ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2\00", align 32 ; [#uses=1]
+@_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder to i32 (...)*), i32 (...)* bitcast (void (%struct..5LocalInfoAdder*)* @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..5LocalInfoAdder*)* @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%"struct.btCollisionWorld::ConvexResultCallback"*, %struct.btBroadphaseProxy*)* @_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy to i32 (...)*), i32 (...)* bitcast (float (%struct..5LocalInfoAdder*, %"struct.btCollisionWorld::LocalConvexResult"*, i8)* @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdder15addSingleResultERNS_17LocalConvexResultEb to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([164 x i8]* @_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN16btCollisionWorld20ConvexResultCallbackE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder = weak_odr constant [164 x i8] c"ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder\00", align 32 ; [#uses=1]
+@_ZTV24btBroadphaseAabbCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI24btBroadphaseAabbCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN24btBroadphaseAabbCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN24btBroadphaseAabbCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI24btBroadphaseAabbCallback = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([27 x i8]* @_ZTS24btBroadphaseAabbCallback, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS24btBroadphaseAabbCallback = weak_odr constant [27 x i8] c"24btBroadphaseAabbCallback\00" ; [#uses=1]
+@_ZTV23btBroadphaseRayCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btBroadphaseRayCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btBroadphaseRayCallback*)* @_ZN23btBroadphaseRayCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBroadphaseRayCallback*)* @_ZN23btBroadphaseRayCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI23btBroadphaseRayCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btBroadphaseRayCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI24btBroadphaseAabbCallback to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS23btBroadphaseRayCallback = weak_odr constant [26 x i8] c"23btBroadphaseRayCallback\00" ; [#uses=1]
+@_ZTV23btSingleContactCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btSingleContactCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btSingleContactCallback*)* @_ZN23btSingleContactCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSingleContactCallback*)* @_ZN23btSingleContactCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btSingleContactCallback*, %struct.btBroadphaseProxy*)* @_ZN23btSingleContactCallback7processEPK17btBroadphaseProxy to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI23btSingleContactCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btSingleContactCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI24btBroadphaseAabbCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS23btSingleContactCallback = weak_odr constant [26 x i8] c"23btSingleContactCallback\00" ; [#uses=1]
+@_ZTV17DebugDrawcallback = weak_odr constant [11 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__vmi_class_type_info_pseudo2* @_ZTI17DebugDrawcallback to i32 (...)*), i32 (...)* bitcast (void (%struct.DebugDrawcallback*)* @_ZN17DebugDrawcallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.DebugDrawcallback*)* @_ZN17DebugDrawcallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.DebugDrawcallback*, %struct.btQuadWord*, i32, i32)* @_ZN17DebugDrawcallback15processTriangleEP9btVector3ii to i32 (...)*), i32 (...)* bitcast (void (%struct.DebugDrawcallback*, %struct.btQuadWord*, i32, i32)* @_ZN17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii to i32 (...)*), i32 (...)* inttoptr (i32 -4 to i32 (...)*), i32 (...)* bitcast (%struct.__vmi_class_type_info_pseudo2* @_ZTI17DebugDrawcallback to i32 (...)*), i32 (...)* bitcast (void (%struct.DebugDrawcallback*)* @_ZThn4_N17DebugDrawcallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.DebugDrawcallback*)* @_ZThn4_N17DebugDrawcallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.DebugDrawcallback*, %struct.btQuadWord*, i32, i32)* @_ZThn4_N17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii to i32 (...)*)], align 32 ; [#uses=2]
+@_ZTI17DebugDrawcallback = weak_odr constant %struct.__vmi_class_type_info_pseudo2 { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv121__vmi_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([20 x i8]* @_ZTS17DebugDrawcallback, i32 0, i32 0) }, i32 0, i32 2, [2 x %struct.__base_class_type_info_pseudo] [%struct.__base_class_type_info_pseudo { %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btTriangleCallback to %"struct.std::type_info"*), i32 2 }, %struct.__base_class_type_info_pseudo { %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI31btInternalTriangleIndexCallback to %"struct.std::type_info"*), i32 1026 }] }, align 32 ; [#uses=1]
+@_ZTS17DebugDrawcallback = weak_odr constant [20 x i8] c"17DebugDrawcallback\00" ; [#uses=1]
+@.str12 = private constant [4 x i8] c"int\00", align 1 ; [#uses=0]
+@.str113 = private constant [19 x i8] c"btTriangleInfoData\00", align 1 ; [#uses=0]
+@.str214 = private constant [22 x i8] c"btTriangleInfoMapData\00", align 1 ; [#uses=0]
+@_ZTV23btBridgedManifoldResult = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btBridgedManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btBridgedManifoldResult*)* @_ZN23btBridgedManifoldResultD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBridgedManifoldResult*)* @_ZN23btBridgedManifoldResultD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btManifoldResult*, i32, i32)* @_ZN16btManifoldResult20setShapeIdentifiersAEii to i32 (...)*), i32 (...)* bitcast (void (%struct.btManifoldResult*, i32, i32)* @_ZN16btManifoldResult20setShapeIdentifiersBEii to i32 (...)*), i32 (...)* bitcast (void (%struct.btBridgedManifoldResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* @_ZN23btBridgedManifoldResult15addContactPointERK9btVector3S2_f to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI23btBridgedManifoldResult = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btBridgedManifoldResult, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI16btManifoldResult to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS23btBridgedManifoldResult = weak_odr constant [26 x i8] c"23btBridgedManifoldResult\00" ; [#uses=1]
+@_ZTV21btSingleSweepCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btSingleSweepCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btSingleSweepCallback*)* @_ZN21btSingleSweepCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSingleSweepCallback*)* @_ZN21btSingleSweepCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btSingleSweepCallback*, %struct.btBroadphaseProxy*)* @_ZN21btSingleSweepCallback7processEPK17btBroadphaseProxy to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI21btSingleSweepCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([24 x i8]* @_ZTS21btSingleSweepCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btBroadphaseRayCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS21btSingleSweepCallback = weak_odr constant [24 x i8] c"21btSingleSweepCallback\00" ; [#uses=1]
+@_ZTV19btSingleRayCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI19btSingleRayCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btSingleRayCallback*)* @_ZN19btSingleRayCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSingleRayCallback*)* @_ZN19btSingleRayCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btSingleRayCallback*, %struct.btBroadphaseProxy*)* @_ZN19btSingleRayCallback7processEPK17btBroadphaseProxy to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI19btSingleRayCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([22 x i8]* @_ZTS19btSingleRayCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btBroadphaseRayCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS19btSingleRayCallback = weak_odr constant [22 x i8] c"19btSingleRayCallback\00" ; [#uses=1]
+@_ZTV16btCollisionWorld = weak_odr constant [14 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI16btCollisionWorld to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*)* @_ZN16btCollisionWorldD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*)* @_ZN16btCollisionWorldD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld11updateAabbsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btActionInterface*)* @_ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw to i32 (...)*), i32 (...)* bitcast (%struct.btActionInterface* (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld14getDebugDrawerEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld14debugDrawWorldEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btTransform*, %struct.btCollisionShape*, %struct.btQuadWord*)* @_ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btQuadWord*, %struct.btQuadWord*, %"struct.btCollisionWorld::RayResultCallback"*)* @_ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btCollisionObject*, i16, i16)* @_ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btCollisionObject*)* @_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld33performDiscreteCollisionDetectionEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btActionInterface*)* @_ZN16btCollisionWorld9serializeEP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI16btCollisionWorld = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTS16btCollisionWorld, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS16btCollisionWorld = weak_odr constant [19 x i8] c"16btCollisionWorld\00" ; [#uses=1]
+@_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0 = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0 to i32 (...)*), i32 (...)* bitcast (void (%struct..4BridgeTriangleConvexcastCallback*)* @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1E_0v to i32 (...)*), i32 (...)* bitcast (void (%struct..4BridgeTriangleConvexcastCallback*)* @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0E_0v to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleConvexcastCallback*, %struct.btQuadWord*, i32, i32)* @_ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii to i32 (...)*), i32 (...)* bitcast (float (%struct..4BridgeTriangleConvexcastCallback*, %struct.btQuadWord*, %struct.btQuadWord*, float, i32, i32)* @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitE_0RK9btVector3SG_fii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0 = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([184 x i8]* @_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI28btTriangleConvexcastCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0 = weak_odr constant [184 x i8] c"ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0\00", align 32 ; [#uses=1]
+@_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..3BridgeTriangleConvexcastCallback*)* @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..3BridgeTriangleConvexcastCallback*)* @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleConvexcastCallback*, %struct.btQuadWord*, i32, i32)* @_ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii to i32 (...)*), i32 (...)* bitcast (float (%struct..3BridgeTriangleConvexcastCallback*, %struct.btQuadWord*, %struct.btQuadWord*, float, i32, i32)* @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitERK9btVector3SG_fii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([182 x i8]* @_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI28btTriangleConvexcastCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback = weak_odr constant [182 x i8] c"ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback\00", align 32 ; [#uses=1]
+@_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0 = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0 to i32 (...)*), i32 (...)* bitcast (void (%struct..1BridgeTriangleRaycastCallback*)* @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1E_0v to i32 (...)*), i32 (...)* bitcast (void (%struct..1BridgeTriangleRaycastCallback*)* @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0E_0v to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleRaycastCallback*, %struct.btQuadWord*, i32, i32)* @_ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii to i32 (...)*), i32 (...)* bitcast (float (%struct..1BridgeTriangleRaycastCallback*, %struct.btQuadWord*, float, i32, i32)* @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitE_0RK9btVector3fii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0 = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([156 x i8]* @_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI25btTriangleRaycastCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0 = weak_odr constant [156 x i8] c"ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0\00", align 32 ; [#uses=1]
+@_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..0BridgeTriangleRaycastCallback*)* @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0BridgeTriangleRaycastCallback*)* @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleRaycastCallback*, %struct.btQuadWord*, i32, i32)* @_ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii to i32 (...)*), i32 (...)* bitcast (float (%struct..0BridgeTriangleRaycastCallback*, %struct.btQuadWord*, float, i32, i32)* @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitERK9btVector3fii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([154 x i8]* @_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI25btTriangleRaycastCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback = weak_odr constant [154 x i8] c"ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback\00", align 32 ; [#uses=1]
+@.str315 = private constant [16 x i8] c"convexSweepTest\00", align 1 ; [#uses=1]
+@.str48 = private constant [34 x i8] c"performDiscreteCollisionDetection\00", align 4 ; [#uses=1]
+@.str5 = private constant [26 x i8] c"calculateOverlappingPairs\00", align 1 ; [#uses=1]
+@.str6 = private constant [26 x i8] c"dispatchAllCollisionPairs\00", align 1 ; [#uses=1]
+@.str7 = private constant [20 x i8] c"convexSweepCompound\00", align 1 ; [#uses=1]
+@_ZZN16btCollisionWorld16updateSingleAabbEP17btCollisionObjectE8reportMe.b = internal global i1 false ; [#uses=2]
+@.str8 = private constant [49 x i8] c"Overflow in AABB, object removed from simulation\00", align 4 ; [#uses=1]
+@.str9 = private constant [68 x i8] c"If you can reproduce this, please email bugs@continuousphysics.com\0A\00", align 4 ; [#uses=1]
+@.str10 = private constant [65 x i8] c"Please include above information, your Platform, version of OS.\0A\00", align 4 ; [#uses=1]
+@.str1116 = private constant [9 x i8] c"Thanks.\0A\00", align 1 ; [#uses=1]
+@.str1217 = private constant [12 x i8] c"updateAabbs\00", align 1 ; [#uses=1]
+@_ZTV22btCompoundLeafCallback = weak_odr constant [9 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI22btCompoundLeafCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundLeafCallback*)* @_ZN22btCompoundLeafCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundLeafCallback*)* @_ZN22btCompoundLeafCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btDbvtNode*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundLeafCallback*, %struct.btDbvtNode*)* @_ZN22btCompoundLeafCallback7ProcessEPK10btDbvtNode to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btDbvtNode*, float)* @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btActionInterface*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btActionInterface*, %struct.btDbvtNode*)* @_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI22btCompoundLeafCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([25 x i8]* @_ZTS22btCompoundLeafCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN6btDbvt8ICollideE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS22btCompoundLeafCallback = weak_odr constant [25 x i8] c"22btCompoundLeafCallback\00" ; [#uses=1]
+@_ZTV28btCompoundCollisionAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI28btCompoundCollisionAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundCollisionAlgorithm*)* @_ZN28btCompoundCollisionAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundCollisionAlgorithm*)* @_ZN28btCompoundCollisionAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN28btCompoundCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (float (%struct.btCompoundCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN28btCompoundCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* @_ZN28btCompoundCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI28btCompoundCollisionAlgorithm = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([31 x i8]* @_ZTS28btCompoundCollisionAlgorithm, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btActivatingCollisionAlgorithm to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS28btCompoundCollisionAlgorithm = weak_odr constant [31 x i8] c"28btCompoundCollisionAlgorithm\00", align 4 ; [#uses=1]
+@.str18 = private constant [9 x i8] c"Triangle\00", align 1 ; [#uses=1]
+@_ZTVZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..0LocalTriangleSphereCastCallback*)* @_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0LocalTriangleSphereCastCallback*)* @_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0LocalTriangleSphereCastCallback*, %struct.btQuadWord*, i32, i32)* @_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallback15processTriangleEP9btVector3ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([158 x i8]* @_ZTSZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btTriangleCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback = weak_odr constant [158 x i8] c"ZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback\00", align 32 ; [#uses=1]
+@_ZTV15btTriangleShape = weak_odr constant [31 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btTriangleShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*)* @_ZN15btTriangleShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*)* @_ZN15btTriangleShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK15btTriangleShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, float, %struct.btQuadWord*)* @_ZNK15btTriangleShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btTriangleShape*)* @_ZNK15btTriangleShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btTriangleShape*, %struct.btQuadWord*)* @_ZNK15btTriangleShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK15btTriangleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTriangleShape*)* @_ZNK15btTriangleShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, i32, %struct.btQuadWord*)* @_ZNK15btTriangleShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTriangleShape*)* @_ZNK15btTriangleShape14getNumVerticesEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTriangleShape*)* @_ZNK15btTriangleShape11getNumEdgesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK15btTriangleShape7getEdgeEiR9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, i32, %struct.btQuadWord*)* @_ZNK15btTriangleShape9getVertexEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTriangleShape*)* @_ZNK15btTriangleShape12getNumPlanesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK15btTriangleShape8getPlaneER9btVector3S1_i to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btTriangleShape*, %struct.btQuadWord*, float)* @_ZNK15btTriangleShape8isInsideERK9btVector3f to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK15btTriangleShape16getPlaneEquationEiR9btVector3S1_ to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI15btTriangleShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([18 x i8]* @_ZTS15btTriangleShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btPolyhedralConvexShape to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS15btTriangleShape = weak_odr constant [18 x i8] c"15btTriangleShape\00" ; [#uses=1]
+@.str119 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=1]
+@_ZTV24btConvexTriangleCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI24btConvexTriangleCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexTriangleCallback*)* @_ZN24btConvexTriangleCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexTriangleCallback*)* @_ZN24btConvexTriangleCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexTriangleCallback*, %struct.btQuadWord*, i32, i32)* @_ZN24btConvexTriangleCallback15processTriangleEP9btVector3ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI24btConvexTriangleCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([27 x i8]* @_ZTS24btConvexTriangleCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btTriangleCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS24btConvexTriangleCallback = weak_odr constant [27 x i8] c"24btConvexTriangleCallback\00" ; [#uses=1]
+@_ZTV33btConvexConcaveCollisionAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI33btConvexConcaveCollisionAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexConcaveCollisionAlgorithm*)* @_ZN33btConvexConcaveCollisionAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexConcaveCollisionAlgorithm*)* @_ZN33btConvexConcaveCollisionAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexConcaveCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN33btConvexConcaveCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexConcaveCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexConcaveCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* @_ZN33btConvexConcaveCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI33btConvexConcaveCollisionAlgorithm = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([36 x i8]* @_ZTS33btConvexConcaveCollisionAlgorithm, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btActivatingCollisionAlgorithm to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS33btConvexConcaveCollisionAlgorithm = weak_odr constant [36 x i8] c"33btConvexConcaveCollisionAlgorithm\00", align 32 ; [#uses=1]
+@_ZTV30btCollisionAlgorithmCreateFunc = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btCollisionAlgorithmCreateFunc to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionAlgorithmCreateFunc*)* @_ZN30btCollisionAlgorithmCreateFuncD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionAlgorithmCreateFunc*)* @_ZN30btCollisionAlgorithmCreateFuncD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%struct.btCollisionAlgorithmCreateFunc*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN30btCollisionAlgorithmCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS3_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI30btCollisionAlgorithmCreateFunc = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([33 x i8]* @_ZTS30btCollisionAlgorithmCreateFunc, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS30btCollisionAlgorithmCreateFunc = weak_odr constant [33 x i8] c"30btCollisionAlgorithmCreateFunc\00", align 32 ; [#uses=1]
+@_ZTVN23btConvexConvexAlgorithm10CreateFuncE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN23btConvexConvexAlgorithm10CreateFuncE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"*)* @_ZN23btConvexConvexAlgorithm10CreateFuncD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"*)* @_ZN23btConvexConvexAlgorithm10CreateFuncD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN23btConvexConvexAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN23btConvexConvexAlgorithm10CreateFuncE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([40 x i8]* @_ZTSN23btConvexConvexAlgorithm10CreateFuncE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btCollisionAlgorithmCreateFunc to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN23btConvexConvexAlgorithm10CreateFuncE = weak_odr constant [40 x i8] c"N23btConvexConvexAlgorithm10CreateFuncE\00", align 32 ; [#uses=1]
+@_ZTV24btPerturbedContactResult = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI24btPerturbedContactResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btPerturbedContactResult*)* @_ZN24btPerturbedContactResultD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btPerturbedContactResult*)* @_ZN24btPerturbedContactResultD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btManifoldResult*, i32, i32)* @_ZN16btManifoldResult20setShapeIdentifiersAEii to i32 (...)*), i32 (...)* bitcast (void (%struct.btManifoldResult*, i32, i32)* @_ZN16btManifoldResult20setShapeIdentifiersBEii to i32 (...)*), i32 (...)* bitcast (void (%struct.btPerturbedContactResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* @_ZN24btPerturbedContactResult15addContactPointERK9btVector3S2_f to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI24btPerturbedContactResult = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([27 x i8]* @_ZTS24btPerturbedContactResult, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI16btManifoldResult to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS24btPerturbedContactResult = weak_odr constant [27 x i8] c"24btPerturbedContactResult\00" ; [#uses=1]
+@disableCcd = global i8 0 ; [#uses=2]
+@_ZTV23btConvexConvexAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btConvexConvexAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dConvex2dAlgorithm*)* @_ZN23btConvexConvexAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dConvex2dAlgorithm*)* @_ZN23btConvexConvexAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dConvex2dAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN23btConvexConvexAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvex2dConvex2dAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN23btConvexConvexAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dConvex2dAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* @_ZN23btConvexConvexAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI23btConvexConvexAlgorithm = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btConvexConvexAlgorithm, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btActivatingCollisionAlgorithm to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS23btConvexConvexAlgorithm = weak_odr constant [26 x i8] c"23btConvexConvexAlgorithm\00" ; [#uses=1]
+@_ZTV31btConvexPlaneCollisionAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI31btConvexPlaneCollisionAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexPlaneCollisionAlgorithm*)* @_ZN31btConvexPlaneCollisionAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexPlaneCollisionAlgorithm*)* @_ZN31btConvexPlaneCollisionAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexPlaneCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN31btConvexPlaneCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexPlaneCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN31btConvexPlaneCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexPlaneCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* @_ZN31btConvexPlaneCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI31btConvexPlaneCollisionAlgorithm = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([34 x i8]* @_ZTS31btConvexPlaneCollisionAlgorithm, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI20btCollisionAlgorithm to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS31btConvexPlaneCollisionAlgorithm = weak_odr constant [34 x i8] c"31btConvexPlaneCollisionAlgorithm\00", align 32 ; [#uses=1]
+@_ZTVN27btConvex2dConvex2dAlgorithm10CreateFuncE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN27btConvex2dConvex2dAlgorithm10CreateFuncE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"*)* @_ZN27btConvex2dConvex2dAlgorithm10CreateFuncD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"*)* @_ZN27btConvex2dConvex2dAlgorithm10CreateFuncD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN27btConvex2dConvex2dAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN27btConvex2dConvex2dAlgorithm10CreateFuncE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([44 x i8]* @_ZTSN27btConvex2dConvex2dAlgorithm10CreateFuncE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btCollisionAlgorithmCreateFunc to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN27btConvex2dConvex2dAlgorithm10CreateFuncE = weak_odr constant [44 x i8] c"N27btConvex2dConvex2dAlgorithm10CreateFuncE\00", align 32 ; [#uses=1]
+@_ZTV27btConvex2dConvex2dAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI27btConvex2dConvex2dAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dConvex2dAlgorithm*)* @_ZN27btConvex2dConvex2dAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dConvex2dAlgorithm*)* @_ZN27btConvex2dConvex2dAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dConvex2dAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN27btConvex2dConvex2dAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvex2dConvex2dAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN27btConvex2dConvex2dAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dConvex2dAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* @_ZN27btConvex2dConvex2dAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI27btConvex2dConvex2dAlgorithm = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([30 x i8]* @_ZTS27btConvex2dConvex2dAlgorithm, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btActivatingCollisionAlgorithm to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS27btConvex2dConvex2dAlgorithm = weak_odr constant [30 x i8] c"27btConvex2dConvex2dAlgorithm\00" ; [#uses=1]
+@_ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN31btConvexPlaneCollisionAlgorithm10CreateFuncE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"*)* @_ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"*)* @_ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN31btConvexPlaneCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN31btConvexPlaneCollisionAlgorithm10CreateFuncE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([48 x i8]* @_ZTSN31btConvexPlaneCollisionAlgorithm10CreateFuncE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btCollisionAlgorithmCreateFunc to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN31btConvexPlaneCollisionAlgorithm10CreateFuncE = weak_odr constant [48 x i8] c"N31btConvexPlaneCollisionAlgorithm10CreateFuncE\00", align 32 ; [#uses=1]
+@_ZTV24btCollisionConfiguration = weak_odr constant [8 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI24btCollisionConfiguration to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN24btCollisionConfigurationD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN24btCollisionConfigurationD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI24btCollisionConfiguration = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([27 x i8]* @_ZTS24btCollisionConfiguration, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS24btCollisionConfiguration = weak_odr constant [27 x i8] c"24btCollisionConfiguration\00" ; [#uses=1]
+@_ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN33btConvexConcaveCollisionAlgorithm10CreateFuncE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN33btConvexConcaveCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN33btConvexConcaveCollisionAlgorithm10CreateFuncE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([50 x i8]* @_ZTSN33btConvexConcaveCollisionAlgorithm10CreateFuncE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btCollisionAlgorithmCreateFunc to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN33btConvexConcaveCollisionAlgorithm10CreateFuncE = weak_odr constant [50 x i8] c"N33btConvexConcaveCollisionAlgorithm10CreateFuncE\00", align 32 ; [#uses=1]
+@_ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([57 x i8]* @_ZTSN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btCollisionAlgorithmCreateFunc to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE = weak_odr constant [57 x i8] c"N33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE\00", align 32 ; [#uses=1]
+@_ZTVN28btCompoundCollisionAlgorithm10CreateFuncE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN28btCompoundCollisionAlgorithm10CreateFuncE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN28btCompoundCollisionAlgorithm10CreateFuncD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN28btCompoundCollisionAlgorithm10CreateFuncD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN28btCompoundCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN28btCompoundCollisionAlgorithm10CreateFuncE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([45 x i8]* @_ZTSN28btCompoundCollisionAlgorithm10CreateFuncE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btCollisionAlgorithmCreateFunc to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN28btCompoundCollisionAlgorithm10CreateFuncE = weak_odr constant [45 x i8] c"N28btCompoundCollisionAlgorithm10CreateFuncE\00", align 32 ; [#uses=1]
+@_ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN28btCompoundCollisionAlgorithm17SwappedCreateFuncE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN28btCompoundCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN28btCompoundCollisionAlgorithm17SwappedCreateFuncE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([52 x i8]* @_ZTSN28btCompoundCollisionAlgorithm17SwappedCreateFuncE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btCollisionAlgorithmCreateFunc to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN28btCompoundCollisionAlgorithm17SwappedCreateFuncE = weak_odr constant [52 x i8] c"N28btCompoundCollisionAlgorithm17SwappedCreateFuncE\00", align 32 ; [#uses=1]
+@_ZTVN16btEmptyAlgorithm10CreateFuncE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN16btEmptyAlgorithm10CreateFuncE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN16btEmptyAlgorithm10CreateFuncD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN16btEmptyAlgorithm10CreateFuncD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN16btEmptyAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN16btEmptyAlgorithm10CreateFuncE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([33 x i8]* @_ZTSN16btEmptyAlgorithm10CreateFuncE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btCollisionAlgorithmCreateFunc to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN16btEmptyAlgorithm10CreateFuncE = weak_odr constant [33 x i8] c"N16btEmptyAlgorithm10CreateFuncE\00", align 32 ; [#uses=1]
+@_ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN32btSphereSphereCollisionAlgorithm10CreateFuncE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN32btSphereSphereCollisionAlgorithm10CreateFuncD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN32btSphereSphereCollisionAlgorithm10CreateFuncD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN32btSphereSphereCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN32btSphereSphereCollisionAlgorithm10CreateFuncE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([49 x i8]* @_ZTSN32btSphereSphereCollisionAlgorithm10CreateFuncE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btCollisionAlgorithmCreateFunc to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN32btSphereSphereCollisionAlgorithm10CreateFuncE = weak_odr constant [49 x i8] c"N32btSphereSphereCollisionAlgorithm10CreateFuncE\00", align 32 ; [#uses=1]
+@_ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN34btSphereTriangleCollisionAlgorithm10CreateFuncE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN34btSphereTriangleCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN34btSphereTriangleCollisionAlgorithm10CreateFuncE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([51 x i8]* @_ZTSN34btSphereTriangleCollisionAlgorithm10CreateFuncE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btCollisionAlgorithmCreateFunc to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN34btSphereTriangleCollisionAlgorithm10CreateFuncE = weak_odr constant [51 x i8] c"N34btSphereTriangleCollisionAlgorithm10CreateFuncE\00", align 32 ; [#uses=1]
+@_ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN26btBoxBoxCollisionAlgorithm10CreateFuncE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN26btBoxBoxCollisionAlgorithm10CreateFuncD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN26btBoxBoxCollisionAlgorithm10CreateFuncD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN26btBoxBoxCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN26btBoxBoxCollisionAlgorithm10CreateFuncE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([43 x i8]* @_ZTSN26btBoxBoxCollisionAlgorithm10CreateFuncE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btCollisionAlgorithmCreateFunc to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN26btBoxBoxCollisionAlgorithm10CreateFuncE = weak_odr constant [43 x i8] c"N26btBoxBoxCollisionAlgorithm10CreateFuncE\00", align 32 ; [#uses=1]
+@_ZTV31btDefaultCollisionConfiguration = weak_odr constant [9 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI31btDefaultCollisionConfiguration to i32 (...)*), i32 (...)* bitcast (void (%struct.btDefaultCollisionConfiguration*)* @_ZN31btDefaultCollisionConfigurationD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btDefaultCollisionConfiguration*)* @_ZN31btDefaultCollisionConfigurationD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btPoolAllocator* (%struct.btDefaultCollisionConfiguration*)* @_ZN31btDefaultCollisionConfiguration25getPersistentManifoldPoolEv to i32 (...)*), i32 (...)* bitcast (%struct.btPoolAllocator* (%struct.btDefaultCollisionConfiguration*)* @_ZN31btDefaultCollisionConfiguration25getCollisionAlgorithmPoolEv to i32 (...)*), i32 (...)* bitcast (%struct.btStackAlloc* (%struct.btDefaultCollisionConfiguration*)* @_ZN31btDefaultCollisionConfiguration17getStackAllocatorEv to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithmCreateFunc* (%struct.btDefaultCollisionConfiguration*, i32, i32)* @_ZN31btDefaultCollisionConfiguration31getCollisionAlgorithmCreateFuncEii to i32 (...)*), i32 (...)* bitcast (%struct.btVoronoiSimplexSolver* (%struct.btDefaultCollisionConfiguration*)* @_ZN31btDefaultCollisionConfiguration16getSimplexSolverEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI31btDefaultCollisionConfiguration = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([34 x i8]* @_ZTS31btDefaultCollisionConfiguration, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI24btCollisionConfiguration to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS31btDefaultCollisionConfiguration = weak_odr constant [34 x i8] c"31btDefaultCollisionConfiguration\00", align 32 ; [#uses=1]
+@_ZTV16btEmptyAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI16btEmptyAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btActivatingCollisionAlgorithm*)* @_ZN16btEmptyAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActivatingCollisionAlgorithm*)* @_ZN16btEmptyAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActivatingCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN16btEmptyAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (float (%struct.btActivatingCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN16btEmptyAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btActivatingCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* @_ZN16btEmptyAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI16btEmptyAlgorithm = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTS16btEmptyAlgorithm, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI20btCollisionAlgorithm to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS16btEmptyAlgorithm = weak_odr constant [19 x i8] c"16btEmptyAlgorithm\00" ; [#uses=1]
+@_ZTV13btGhostObject = weak_odr constant [11 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI13btGhostObject to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN17btCollisionObject24checkCollideWithOverrideEPS_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btGhostObject*)* @_ZN13btGhostObjectD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGhostObject*)* @_ZN13btGhostObjectD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionObject*, %struct.btCollisionShape*)* @_ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionObject*)* @_ZNK17btCollisionObject28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionObject*, i8*, %struct.btActionInterface*)* @_ZNK17btCollisionObject9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionObject*, %struct.btActionInterface*)* @_ZNK17btCollisionObject21serializeSingleObjectEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btGhostObject*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* @_ZN13btGhostObject28addOverlappingObjectInternalEP17btBroadphaseProxyS1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btGhostObject*, %struct.btBroadphaseProxy*, %struct.btActionInterface*, %struct.btBroadphaseProxy*)* @_ZN13btGhostObject31removeOverlappingObjectInternalEP17btBroadphaseProxyP12btDispatcherS1_ to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI13btGhostObject = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([16 x i8]* @_ZTS13btGhostObject, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI17btCollisionObject to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS13btGhostObject = weak_odr constant [16 x i8] c"13btGhostObject\00" ; [#uses=1]
+@_ZTV24btPairCachingGhostObject = weak_odr constant [11 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI24btPairCachingGhostObject to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN17btCollisionObject24checkCollideWithOverrideEPS_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btPairCachingGhostObject*)* @_ZN24btPairCachingGhostObjectD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btPairCachingGhostObject*)* @_ZN24btPairCachingGhostObjectD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionObject*, %struct.btCollisionShape*)* @_ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionObject*)* @_ZNK17btCollisionObject28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionObject*, i8*, %struct.btActionInterface*)* @_ZNK17btCollisionObject9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionObject*, %struct.btActionInterface*)* @_ZNK17btCollisionObject21serializeSingleObjectEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btPairCachingGhostObject*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* @_ZN24btPairCachingGhostObject28addOverlappingObjectInternalEP17btBroadphaseProxyS1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btPairCachingGhostObject*, %struct.btBroadphaseProxy*, %struct.btActionInterface*, %struct.btBroadphaseProxy*)* @_ZN24btPairCachingGhostObject31removeOverlappingObjectInternalEP17btBroadphaseProxyP12btDispatcherS1_ to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI24btPairCachingGhostObject = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([27 x i8]* @_ZTS24btPairCachingGhostObject, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI13btGhostObject to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS24btPairCachingGhostObject = weak_odr constant [27 x i8] c"24btPairCachingGhostObject\00" ; [#uses=1]
+@.str21 = private constant [9 x i8] c"Triangle\00", align 1 ; [#uses=0]
+@_ZTV23btConnectivityProcessor = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btConnectivityProcessor to i32 (...)*), i32 (...)* bitcast (void (%struct.btConnectivityProcessor*)* @_ZN23btConnectivityProcessorD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConnectivityProcessor*)* @_ZN23btConnectivityProcessorD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConnectivityProcessor*, %struct.btQuadWord*, i32, i32)* @_ZN23btConnectivityProcessor15processTriangleEP9btVector3ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI23btConnectivityProcessor = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btConnectivityProcessor, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btTriangleCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS23btConnectivityProcessor = weak_odr constant [26 x i8] c"23btConnectivityProcessor\00" ; [#uses=1]
+@.str122 = private constant [4 x i8] c"int\00", align 1 ; [#uses=0]
+@.str223 = private constant [19 x i8] c"btTriangleInfoData\00", align 1 ; [#uses=0]
+@.str324 = private constant [22 x i8] c"btTriangleInfoMapData\00", align 1 ; [#uses=0]
+@.str425 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@gContactAddedCallback = global i8 (%struct.btManifoldPoint*, %struct.btCollisionObject*, i32, i32, %struct.btCollisionObject*, i32, i32)* null ; [#uses=1]
+@_ZTV16btManifoldResult = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI16btManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btManifoldResult*)* @_ZN16btManifoldResultD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btManifoldResult*)* @_ZN16btManifoldResultD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btManifoldResult*, i32, i32)* @_ZN16btManifoldResult20setShapeIdentifiersAEii to i32 (...)*), i32 (...)* bitcast (void (%struct.btManifoldResult*, i32, i32)* @_ZN16btManifoldResult20setShapeIdentifiersBEii to i32 (...)*), i32 (...)* bitcast (void (%struct.btManifoldResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* @_ZN16btManifoldResult15addContactPointERK9btVector3S2_f to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI16btManifoldResult = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTS16btManifoldResult, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN36btDiscreteCollisionDetectorInterface6ResultE to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS16btManifoldResult = weak_odr constant [19 x i8] c"16btManifoldResult\00" ; [#uses=1]
+@.str30 = private constant [28 x i8] c"islandUnionFindAndQuickSort\00", align 1 ; [#uses=1]
+@.str131 = private constant [15 x i8] c"processIslands\00", align 1 ; [#uses=1]
+@_ZTV25btSimulationIslandManager = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI25btSimulationIslandManager to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimulationIslandManager*)* @_ZN25btSimulationIslandManagerD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimulationIslandManager*)* @_ZN25btSimulationIslandManagerD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimulationIslandManager*, %struct.btCollisionWorld*, %struct.btActionInterface*)* @_ZN25btSimulationIslandManager21updateActivationStateEP16btCollisionWorldP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimulationIslandManager*, %struct.btCollisionWorld*)* @_ZN25btSimulationIslandManager26storeIslandActivationStateEP16btCollisionWorld to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI25btSimulationIslandManager = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([28 x i8]* @_ZTS25btSimulationIslandManager, i32 0, i32 0) } } ; [#uses=1]
+@_ZTS25btSimulationIslandManager = weak_odr constant [28 x i8] c"25btSimulationIslandManager\00" ; [#uses=1]
+@_ZTV29btSphereBoxCollisionAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI29btSphereBoxCollisionAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btSphereBoxCollisionAlgorithm*)* @_ZN29btSphereBoxCollisionAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSphereBoxCollisionAlgorithm*)* @_ZN29btSphereBoxCollisionAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSphereBoxCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN29btSphereBoxCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (float (%struct.btSphereBoxCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN29btSphereBoxCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btSphereBoxCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* @_ZN29btSphereBoxCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI29btSphereBoxCollisionAlgorithm = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([32 x i8]* @_ZTS29btSphereBoxCollisionAlgorithm, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btActivatingCollisionAlgorithm to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS29btSphereBoxCollisionAlgorithm = weak_odr constant [32 x i8] c"29btSphereBoxCollisionAlgorithm\00", align 32 ; [#uses=1]
+@_ZTV32btSphereSphereCollisionAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI32btSphereSphereCollisionAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dBox2dCollisionAlgorithm*)* @_ZN32btSphereSphereCollisionAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dBox2dCollisionAlgorithm*)* @_ZN32btSphereSphereCollisionAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dBox2dCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN32btSphereSphereCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (float (%struct.btBox2dBox2dCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN32btSphereSphereCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dBox2dCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* @_ZN32btSphereSphereCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI32btSphereSphereCollisionAlgorithm = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([35 x i8]* @_ZTS32btSphereSphereCollisionAlgorithm, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btActivatingCollisionAlgorithm to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS32btSphereSphereCollisionAlgorithm = weak_odr constant [35 x i8] c"32btSphereSphereCollisionAlgorithm\00", align 32 ; [#uses=1]
+@_ZTV34btSphereTriangleCollisionAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI34btSphereTriangleCollisionAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btSphereBoxCollisionAlgorithm*)* @_ZN34btSphereTriangleCollisionAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSphereBoxCollisionAlgorithm*)* @_ZN34btSphereTriangleCollisionAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSphereBoxCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN34btSphereTriangleCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (float (%struct.btSphereBoxCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN34btSphereTriangleCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btSphereBoxCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* @_ZN34btSphereTriangleCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI34btSphereTriangleCollisionAlgorithm = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([37 x i8]* @_ZTS34btSphereTriangleCollisionAlgorithm, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btActivatingCollisionAlgorithm to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS34btSphereTriangleCollisionAlgorithm = weak_odr constant [37 x i8] c"34btSphereTriangleCollisionAlgorithm\00", align 32 ; [#uses=1]
+@_ZTV22SphereTriangleDetector = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI22SphereTriangleDetector to i32 (...)*), i32 (...)* bitcast (void (%struct.SphereTriangleDetector*)* @_ZN22SphereTriangleDetectorD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.SphereTriangleDetector*)* @_ZN22SphereTriangleDetectorD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.SphereTriangleDetector*, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"*, %struct.btActionInterface*, %struct.btActionInterface*, i8)* @_ZN22SphereTriangleDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI22SphereTriangleDetector = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([25 x i8]* @_ZTS22SphereTriangleDetector, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI36btDiscreteCollisionDetectorInterface to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS22SphereTriangleDetector = weak_odr constant [25 x i8] c"22SphereTriangleDetector\00" ; [#uses=1]
+@.str40 = private constant [4 x i8] c"Box\00", align 1 ; [#uses=1]
+@.str141 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@_ZTV10btBoxShape = weak_odr constant [31 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI10btBoxShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxShape*)* @_ZN10btBoxShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxShape*)* @_ZN10btBoxShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK10btBoxShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxShape*, %struct.btQuadWord*)* @_ZN10btBoxShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxShape*, float, %struct.btQuadWord*)* @_ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btBoxShape*)* @_ZNK10btBoxShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxShape*, float)* @_ZN10btBoxShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btBoxShape*, %struct.btQuadWord*)* @_ZNK10btBoxShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btBoxShape*, %struct.btQuadWord*)* @_ZNK10btBoxShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK10btBoxShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBoxShape*)* @_ZNK10btBoxShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxShape*, i32, %struct.btQuadWord*)* @_ZNK10btBoxShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBoxShape*)* @_ZNK10btBoxShape14getNumVerticesEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBoxShape*)* @_ZNK10btBoxShape11getNumEdgesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxShape*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK10btBoxShape7getEdgeEiR9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxShape*, i32, %struct.btQuadWord*)* @_ZNK10btBoxShape9getVertexEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBoxShape*)* @_ZNK10btBoxShape12getNumPlanesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK10btBoxShape8getPlaneER9btVector3S1_i to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btBoxShape*, %struct.btQuadWord*, float)* @_ZNK10btBoxShape8isInsideERK9btVector3f to i32 (...)*), i32 (...)* bitcast (void (%struct.btBoxShape*, %struct.btQuaternion*, i32)* @_ZNK10btBoxShape16getPlaneEquationER9btVector4i to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI10btBoxShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([13 x i8]* @_ZTS10btBoxShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btPolyhedralConvexShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS10btBoxShape = weak_odr constant [13 x i8] c"10btBoxShape\00" ; [#uses=1]
+@.str42 = private constant [6 x i8] c"Box2d\00", align 1 ; [#uses=1]
+@.str143 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@_ZTV12btBox2dShape = weak_odr constant [31 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI12btBox2dShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dShape*)* @_ZN12btBox2dShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dShape*)* @_ZN12btBox2dShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK12btBox2dShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dShape*, %struct.btQuadWord*)* @_ZN12btBox2dShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dShape*, float, %struct.btQuadWord*)* @_ZNK12btBox2dShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btBox2dShape*)* @_ZNK12btBox2dShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dShape*, float)* @_ZN12btBox2dShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btBox2dShape*, %struct.btQuadWord*)* @_ZNK12btBox2dShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btBox2dShape*, %struct.btQuadWord*)* @_ZNK12btBox2dShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK12btBox2dShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBox2dShape*)* @_ZNK12btBox2dShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dShape*, i32, %struct.btQuadWord*)* @_ZNK12btBox2dShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBox2dShape*)* @_ZNK12btBox2dShape14getNumVerticesEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBox2dShape*)* @_ZNK12btBox2dShape11getNumEdgesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dShape*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK12btBox2dShape7getEdgeEiR9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dShape*, i32, %struct.btQuadWord*)* @_ZNK12btBox2dShape9getVertexEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBox2dShape*)* @_ZNK12btBox2dShape12getNumPlanesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK12btBox2dShape8getPlaneER9btVector3S1_i to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btBox2dShape*, %struct.btQuadWord*, float)* @_ZNK12btBox2dShape8isInsideERK9btVector3f to i32 (...)*), i32 (...)* bitcast (void (%struct.btBox2dShape*, %struct.btQuaternion*, i32)* @_ZNK12btBox2dShape16getPlaneEquationER9btVector4i to i32 (...)*)], align 32 ; [#uses=0]
+@_ZTI12btBox2dShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([15 x i8]* @_ZTS12btBox2dShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btPolyhedralConvexShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS12btBox2dShape = weak_odr constant [15 x i8] c"12btBox2dShape\00" ; [#uses=1]
+@.str44 = private constant [16 x i8] c"BVHTRIANGLEMESH\00", align 1 ; [#uses=1]
+@_ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..0MyNodeOverlapCallback*)* @_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0MyNodeOverlapCallback*)* @_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0MyNodeOverlapCallback*, i32, i32)* @_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([104 x i8]* @_ZTSZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI21btNodeOverlapCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = weak_odr constant [104 x i8] c"ZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback\00", align 32 ; [#uses=1]
+@_ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..0MyNodeOverlapCallback*)* @_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0MyNodeOverlapCallback*)* @_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0MyNodeOverlapCallback*, i32, i32)* @_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallback11processNodeEii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([113 x i8]* @_ZTSZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI21btNodeOverlapCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback = weak_odr constant [113 x i8] c"ZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback\00", align 32 ; [#uses=1]
+@_ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..2MyNodeOverlapCallback*)* @_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..2MyNodeOverlapCallback*)* @_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..2MyNodeOverlapCallback*, i32, i32)* @_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([110 x i8]* @_ZTSZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI21btNodeOverlapCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback = weak_odr constant [110 x i8] c"ZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback\00", align 32 ; [#uses=1]
+@.str145 = private constant [4 x i8] c"int\00", align 1 ; [#uses=0]
+@.str246 = private constant [19 x i8] c"btTriangleInfoData\00", align 1 ; [#uses=0]
+@.str347 = private constant [22 x i8] c"btTriangleInfoMapData\00", align 1 ; [#uses=0]
+@.str448 = private constant [24 x i8] c"btTriangleMeshShapeData\00", align 1 ; [#uses=1]
+@_ZTV22btBvhTriangleMeshShape = weak_odr constant [22 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI22btBvhTriangleMeshShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btBvhTriangleMeshShape*)* @_ZN22btBvhTriangleMeshShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBvhTriangleMeshShape*)* @_ZN22btBvhTriangleMeshShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleMeshShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK19btTriangleMeshShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btBvhTriangleMeshShape*, %struct.btQuadWord*)* @_ZN22btBvhTriangleMeshShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btTriangleMeshShape*)* @_ZNK19btTriangleMeshShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleMeshShape*, float, %struct.btQuadWord*)* @_ZNK19btTriangleMeshShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btBvhTriangleMeshShape*)* @_ZNK22btBvhTriangleMeshShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConcaveShape*, float)* @_ZN14btConcaveShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConcaveShape*)* @_ZNK14btConcaveShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBvhTriangleMeshShape*)* @_ZNK22btBvhTriangleMeshShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btBvhTriangleMeshShape*, i8*, %struct.btActionInterface*)* @_ZNK22btBvhTriangleMeshShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btBvhTriangleMeshShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btTriangleMeshShape*, %struct.btQuadWord*)* @_ZNK19btTriangleMeshShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btTriangleMeshShape*, %struct.btQuadWord*)* @_ZNK19btTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btBvhTriangleMeshShape*, %struct.btActionInterface*)* @_ZNK22btBvhTriangleMeshShape18serializeSingleBvhEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btBvhTriangleMeshShape*, %struct.btActionInterface*)* @_ZNK22btBvhTriangleMeshShape30serializeSingleTriangleInfoMapEP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI22btBvhTriangleMeshShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([25 x i8]* @_ZTS22btBvhTriangleMeshShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI19btTriangleMeshShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS22btBvhTriangleMeshShape = weak_odr constant [25 x i8] c"22btBvhTriangleMeshShape\00" ; [#uses=1]
+@.str51 = private constant [13 x i8] c"CapsuleShape\00", align 1 ; [#uses=1]
+@.str152 = private constant [9 x i8] c"CapsuleX\00", align 1 ; [#uses=1]
+@.str253 = private constant [9 x i8] c"CapsuleZ\00", align 1 ; [#uses=1]
+@.str454 = private constant [19 x i8] c"btCapsuleShapeData\00", align 1 ; [#uses=1]
+@_ZTV14btCapsuleShape = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI14btCapsuleShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*)* @_ZN14btCapsuleShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*)* @_ZN14btCapsuleShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK14btCapsuleShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btQuadWord*)* @_ZN14btCapsuleShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, float, %struct.btQuadWord*)* @_ZNK14btCapsuleShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCapsuleShape*)* @_ZNK14btCapsuleShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, float)* @_ZN14btCapsuleShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCapsuleShape*)* @_ZNK14btCapsuleShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCapsuleShape*, i8*, %struct.btActionInterface*)* @_ZNK14btCapsuleShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btCapsuleShape*, %struct.btQuadWord*)* @_ZNK14btCapsuleShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK14btCapsuleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI14btCapsuleShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([17 x i8]* @_ZTS14btCapsuleShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btConvexInternalShape to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS14btCapsuleShape = weak_odr constant [17 x i8] c"14btCapsuleShape\00" ; [#uses=1]
+@_ZTV15btCapsuleShapeZ = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btCapsuleShapeZ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShapeX*)* @_ZN15btCapsuleShapeZD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShapeX*)* @_ZN15btCapsuleShapeZD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK14btCapsuleShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btQuadWord*)* @_ZN14btCapsuleShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, float, %struct.btQuadWord*)* @_ZNK14btCapsuleShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCapsuleShapeX*)* @_ZNK15btCapsuleShapeZ7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, float)* @_ZN14btCapsuleShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCapsuleShape*)* @_ZNK14btCapsuleShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCapsuleShape*, i8*, %struct.btActionInterface*)* @_ZNK14btCapsuleShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btCapsuleShape*, %struct.btQuadWord*)* @_ZNK14btCapsuleShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK14btCapsuleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI15btCapsuleShapeZ = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([18 x i8]* @_ZTS15btCapsuleShapeZ, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI14btCapsuleShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS15btCapsuleShapeZ = weak_odr constant [18 x i8] c"15btCapsuleShapeZ\00" ; [#uses=1]
+@_ZTV15btCapsuleShapeX = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btCapsuleShapeX to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShapeX*)* @_ZN15btCapsuleShapeXD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShapeX*)* @_ZN15btCapsuleShapeXD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK14btCapsuleShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btQuadWord*)* @_ZN14btCapsuleShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, float, %struct.btQuadWord*)* @_ZNK14btCapsuleShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCapsuleShapeX*)* @_ZNK15btCapsuleShapeX7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, float)* @_ZN14btCapsuleShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCapsuleShape*)* @_ZNK14btCapsuleShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCapsuleShape*, i8*, %struct.btActionInterface*)* @_ZNK14btCapsuleShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btCapsuleShape*, %struct.btQuadWord*)* @_ZNK14btCapsuleShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK14btCapsuleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI15btCapsuleShapeX = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([18 x i8]* @_ZTS15btCapsuleShapeX, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI14btCapsuleShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS15btCapsuleShapeX = weak_odr constant [18 x i8] c"15btCapsuleShapeX\00" ; [#uses=1]
+@.str55 = private constant [21 x i8] c"btCollisionShapeData\00", align 1 ; [#uses=1]
+@_ZTV16btCollisionShape = weak_odr constant [17 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI16btCollisionShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*)* @_ZN16btCollisionShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*)* @_ZN16btCollisionShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionShape*)* @_ZNK16btCollisionShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* @_ZNK16btCollisionShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI16btCollisionShape = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTS16btCollisionShape, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS16btCollisionShape = weak_odr constant [19 x i8] c"16btCollisionShape\00" ; [#uses=1]
+@.str62 = private constant [9 x i8] c"Compound\00", align 1 ; [#uses=1]
+@.str163 = private constant [25 x i8] c"btCompoundShapeChildData\00", align 1 ; [#uses=1]
+@.str264 = private constant [20 x i8] c"btCompoundShapeData\00", align 1 ; [#uses=1]
+@_ZTV15btCompoundShape = weak_odr constant [19 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btCompoundShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundShape*)* @_ZN15btCompoundShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundShape*)* @_ZN15btCompoundShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK15btCompoundShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundShape*, %struct.btQuadWord*)* @_ZN15btCompoundShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btCompoundShape*)* @_ZNK15btCompoundShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundShape*, float, %struct.btQuadWord*)* @_ZNK15btCompoundShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCompoundShape*)* @_ZNK15btCompoundShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundShape*, float)* @_ZN15btCompoundShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCompoundShape*)* @_ZNK15btCompoundShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCompoundShape*)* @_ZNK15btCompoundShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCompoundShape*, i8*, %struct.btActionInterface*)* @_ZNK15btCompoundShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundShape*, %struct.btCollisionShape*)* @_ZN15btCompoundShape16removeChildShapeEP16btCollisionShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btCompoundShape*)* @_ZN15btCompoundShape20recalculateLocalAabbEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI15btCompoundShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([18 x i8]* @_ZTS15btCompoundShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI16btCollisionShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS15btCompoundShape = weak_odr constant [18 x i8] c"15btCompoundShape\00" ; [#uses=1]
+@_ZTV14btConcaveShape = weak_odr constant [18 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI14btConcaveShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btConcaveShape*)* @_ZN14btConcaveShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConcaveShape*)* @_ZN14btConcaveShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btConcaveShape*, float)* @_ZN14btConcaveShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConcaveShape*)* @_ZNK14btConcaveShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionShape*)* @_ZNK16btCollisionShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* @_ZNK16btCollisionShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI14btConcaveShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([17 x i8]* @_ZTS14btConcaveShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI16btCollisionShape to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS14btConcaveShape = weak_odr constant [17 x i8] c"14btConcaveShape\00" ; [#uses=1]
+@.str65 = private constant [5 x i8] c"Cone\00", align 1 ; [#uses=1]
+@.str166 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@_ZTV11btConeShape = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI11btConeShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeShape*)* @_ZN11btConeShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeShape*)* @_ZN11btConeShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeShape*, float, %struct.btQuadWord*)* @_ZNK11btConeShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConeShape*)* @_ZNK11btConeShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConeShape*, %struct.btQuadWord*)* @_ZNK11btConeShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConeShape*, %struct.btQuadWord*)* @_ZNK11btConeShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK11btConeShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI11btConeShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([14 x i8]* @_ZTS11btConeShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btConvexInternalShape to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS11btConeShape = weak_odr constant [14 x i8] c"11btConeShape\00" ; [#uses=1]
+@_ZTV12btConeShapeX = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI12btConeShapeX to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeShapeX*)* @_ZN12btConeShapeXD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeShapeX*)* @_ZN12btConeShapeXD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeShape*, float, %struct.btQuadWord*)* @_ZNK11btConeShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConeShape*)* @_ZNK11btConeShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConeShape*, %struct.btQuadWord*)* @_ZNK11btConeShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConeShape*, %struct.btQuadWord*)* @_ZNK11btConeShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK11btConeShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI12btConeShapeX = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([15 x i8]* @_ZTS12btConeShapeX, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI11btConeShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS12btConeShapeX = weak_odr constant [15 x i8] c"12btConeShapeX\00" ; [#uses=1]
+@_ZTV12btConeShapeZ = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI12btConeShapeZ to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeShapeX*)* @_ZN12btConeShapeZD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeShapeX*)* @_ZN12btConeShapeZD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeShape*, float, %struct.btQuadWord*)* @_ZNK11btConeShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConeShape*)* @_ZNK11btConeShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConeShape*, %struct.btQuadWord*)* @_ZNK11btConeShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConeShape*, %struct.btQuadWord*)* @_ZNK11btConeShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK11btConeShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI12btConeShapeZ = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([15 x i8]* @_ZTS12btConeShapeZ, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI11btConeShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS12btConeShapeZ = weak_odr constant [15 x i8] c"12btConeShapeZ\00" ; [#uses=1]
+@.str67 = private constant [7 x i8] c"Convex\00", align 1 ; [#uses=1]
+@_ZTV17btConvexHullShape = weak_odr constant [30 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI17btConvexHullShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexHullShape*)* @_ZN17btConvexHullShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexHullShape*)* @_ZN17btConvexHullShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexAabbCachingShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexHullShape*, %struct.btQuadWord*)* @_ZN17btConvexHullShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, float, %struct.btQuadWord*)* @_ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexHullShape*)* @_ZNK17btConvexHullShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexHullShape*)* @_ZNK17btConvexHullShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexHullShape*, i8*, %struct.btActionInterface*)* @_ZNK17btConvexHullShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexHullShape*, %struct.btQuadWord*)* @_ZNK17btConvexHullShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexHullShape*, %struct.btQuadWord*)* @_ZNK17btConvexHullShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexHullShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK17btConvexHullShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexHullShape*)* @_ZNK17btConvexHullShape14getNumVerticesEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexHullShape*)* @_ZNK17btConvexHullShape11getNumEdgesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexHullShape*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK17btConvexHullShape7getEdgeEiR9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexHullShape*, i32, %struct.btQuadWord*)* @_ZNK17btConvexHullShape9getVertexEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexHullShape*)* @_ZNK17btConvexHullShape12getNumPlanesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexHullShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK17btConvexHullShape8getPlaneER9btVector3S1_i to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btConvexHullShape*, %struct.btQuadWord*, float)* @_ZNK17btConvexHullShape8isInsideERK9btVector3f to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI17btConvexHullShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([20 x i8]* @_ZTS17btConvexHullShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI34btPolyhedralConvexAabbCachingShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS17btConvexHullShape = weak_odr constant [20 x i8] c"17btConvexHullShape\00" ; [#uses=1]
+@.str268 = private constant [19 x i8] c"btVector3FloatData\00", align 1 ; [#uses=1]
+@.str369 = private constant [22 x i8] c"btConvexHullShapeData\00", align 1 ; [#uses=1]
+@_ZTV21btConvexInternalShape = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btConvexInternalShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*)* @_ZN21btConvexInternalShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*)* @_ZN21btConvexInternalShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI21btConvexInternalShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([24 x i8]* @_ZTS21btConvexInternalShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI13btConvexShape to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS21btConvexInternalShape = weak_odr constant [24 x i8] c"21btConvexInternalShape\00" ; [#uses=1]
+@_ZTV32btConvexInternalAabbCachingShape = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI32btConvexInternalAabbCachingShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalAabbCachingShape*)* @_ZN32btConvexInternalAabbCachingShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalAabbCachingShape*)* @_ZN32btConvexInternalAabbCachingShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalAabbCachingShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK32btConvexInternalAabbCachingShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalAabbCachingShape*, %struct.btQuadWord*)* @_ZN32btConvexInternalAabbCachingShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI32btConvexInternalAabbCachingShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([35 x i8]* @_ZTS32btConvexInternalAabbCachingShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btConvexInternalShape to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS32btConvexInternalAabbCachingShape = weak_odr constant [35 x i8] c"32btConvexInternalAabbCachingShape\00", align 32 ; [#uses=1]
+@.str72 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@_ZGVZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions = internal global i64 0, align 8 ; [#uses=3]
+@_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions = internal global [6 x %struct.btQuadWord] zeroinitializer, align 32 ; [#uses=25]
+@.str77 = private constant [17 x i8] c"ConvexPointCloud\00", align 1 ; [#uses=1]
+@.str178 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@_ZTV23btConvexPointCloudShape = weak_odr constant [30 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btConvexPointCloudShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexPointCloudShape*)* @_ZN23btConvexPointCloudShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexPointCloudShape*)* @_ZN23btConvexPointCloudShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexAabbCachingShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexPointCloudShape*, %struct.btQuadWord*)* @_ZN23btConvexPointCloudShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, float, %struct.btQuadWord*)* @_ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexPointCloudShape*)* @_ZNK23btConvexPointCloudShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexPointCloudShape*, %struct.btQuadWord*)* @_ZNK23btConvexPointCloudShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexPointCloudShape*, %struct.btQuadWord*)* @_ZNK23btConvexPointCloudShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexPointCloudShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK23btConvexPointCloudShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexPointCloudShape*)* @_ZNK23btConvexPointCloudShape14getNumVerticesEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexPointCloudShape*)* @_ZNK23btConvexPointCloudShape11getNumEdgesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexPointCloudShape*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btConvexPointCloudShape7getEdgeEiR9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexPointCloudShape*, i32, %struct.btQuadWord*)* @_ZNK23btConvexPointCloudShape9getVertexEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexPointCloudShape*)* @_ZNK23btConvexPointCloudShape12getNumPlanesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexPointCloudShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK23btConvexPointCloudShape8getPlaneER9btVector3S1_i to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btConvexPointCloudShape*, %struct.btQuadWord*, float)* @_ZNK23btConvexPointCloudShape8isInsideERK9btVector3f to i32 (...)*)], align 32 ; [#uses=0]
+@_ZTI23btConvexPointCloudShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btConvexPointCloudShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI34btPolyhedralConvexAabbCachingShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS23btConvexPointCloudShape = weak_odr constant [26 x i8] c"23btConvexPointCloudShape\00" ; [#uses=1]
+@_ZTV13btConvexShape = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI13btConvexShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexShape*)* @_ZN13btConvexShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexShape*)* @_ZN13btConvexShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionShape*)* @_ZNK16btCollisionShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* @_ZNK16btCollisionShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI13btConvexShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([16 x i8]* @_ZTS13btConvexShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI16btCollisionShape to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS13btConvexShape = weak_odr constant [16 x i8] c"13btConvexShape\00" ; [#uses=1]
+@.str82 = private constant [14 x i8] c"Convex2dShape\00", align 1 ; [#uses=1]
+@_ZTV15btConvex2dShape = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btConvex2dShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dShape*)* @_ZN15btConvex2dShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dShape*)* @_ZN15btConvex2dShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK15btConvex2dShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dShape*, %struct.btQuadWord*)* @_ZN15btConvex2dShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvex2dShape*)* @_ZNK15btConvex2dShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dShape*, float, %struct.btQuadWord*)* @_ZNK15btConvex2dShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvex2dShape*)* @_ZNK15btConvex2dShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dShape*, float)* @_ZN15btConvex2dShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvex2dShape*)* @_ZNK15btConvex2dShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionShape*)* @_ZNK16btCollisionShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* @_ZNK16btCollisionShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvex2dShape*, %struct.btQuadWord*)* @_ZNK15btConvex2dShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvex2dShape*, %struct.btQuadWord*)* @_ZNK15btConvex2dShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK15btConvex2dShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK15btConvex2dShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvex2dShape*)* @_ZNK15btConvex2dShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvex2dShape*, i32, %struct.btQuadWord*)* @_ZNK15btConvex2dShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI15btConvex2dShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([18 x i8]* @_ZTS15btConvex2dShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI13btConvexShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS15btConvex2dShape = weak_odr constant [18 x i8] c"15btConvex2dShape\00" ; [#uses=1]
+@.str83 = private constant [14 x i8] c"ConvexTrimesh\00", align 1 ; [#uses=1]
+@_ZTV26LocalSupportVertexCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI26LocalSupportVertexCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.LocalSupportVertexCallback*)* @_ZN26LocalSupportVertexCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.LocalSupportVertexCallback*)* @_ZN26LocalSupportVertexCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.LocalSupportVertexCallback*, %struct.btQuadWord*, i32, i32)* @_ZN26LocalSupportVertexCallback28internalProcessTriangleIndexEP9btVector3ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI26LocalSupportVertexCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([29 x i8]* @_ZTS26LocalSupportVertexCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI31btInternalTriangleIndexCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS26LocalSupportVertexCallback = weak_odr constant [29 x i8] c"26LocalSupportVertexCallback\00" ; [#uses=1]
+@_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE14CenterCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE14CenterCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..0CenterCallback*)* @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN14CenterCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0CenterCallback*)* @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN14CenterCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0CenterCallback*, %struct.btQuadWord*, i32, i32)* @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN14CenterCallback28internalProcessTriangleIndexEPS2_ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE14CenterCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([109 x i8]* @_ZTSZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE14CenterCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI31btInternalTriangleIndexCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE14CenterCallback = weak_odr constant [109 x i8] c"ZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE14CenterCallback\00", align 32 ; [#uses=1]
+@.str184 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@_ZTV25btConvexTriangleMeshShape = weak_odr constant [30 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI25btConvexTriangleMeshShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexTriangleMeshShape*)* @_ZN25btConvexTriangleMeshShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexTriangleMeshShape*)* @_ZN25btConvexTriangleMeshShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexAabbCachingShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexTriangleMeshShape*, %struct.btQuadWord*)* @_ZN25btConvexTriangleMeshShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexTriangleMeshShape*)* @_ZNK25btConvexTriangleMeshShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, float, %struct.btQuadWord*)* @_ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexTriangleMeshShape*)* @_ZNK25btConvexTriangleMeshShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexTriangleMeshShape*, %struct.btQuadWord*)* @_ZNK25btConvexTriangleMeshShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexTriangleMeshShape*, %struct.btQuadWord*)* @_ZNK25btConvexTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexTriangleMeshShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK25btConvexTriangleMeshShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexTriangleMeshShape*)* @_ZNK25btConvexTriangleMeshShape14getNumVerticesEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexTriangleMeshShape*)* @_ZNK25btConvexTriangleMeshShape11getNumEdgesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexTriangleMeshShape*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK25btConvexTriangleMeshShape7getEdgeEiR9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexTriangleMeshShape*, i32, %struct.btQuadWord*)* @_ZNK25btConvexTriangleMeshShape9getVertexEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexTriangleMeshShape*)* @_ZNK25btConvexTriangleMeshShape12getNumPlanesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexTriangleMeshShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK25btConvexTriangleMeshShape8getPlaneER9btVector3S1_i to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btConvexTriangleMeshShape*, %struct.btQuadWord*, float)* @_ZNK25btConvexTriangleMeshShape8isInsideERK9btVector3f to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI25btConvexTriangleMeshShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([28 x i8]* @_ZTS25btConvexTriangleMeshShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI34btPolyhedralConvexAabbCachingShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS25btConvexTriangleMeshShape = weak_odr constant [28 x i8] c"25btConvexTriangleMeshShape\00" ; [#uses=1]
+@_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE15InertiaCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE15InertiaCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..1InertiaCallback*)* @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN15InertiaCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..1InertiaCallback*)* @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN15InertiaCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..1InertiaCallback*, %struct.btQuadWord*, i32, i32)* @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN15InertiaCallback28internalProcessTriangleIndexEPS2_ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE15InertiaCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([110 x i8]* @_ZTSZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE15InertiaCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI31btInternalTriangleIndexCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE15InertiaCallback = weak_odr constant [110 x i8] c"ZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE15InertiaCallback\00", align 32 ; [#uses=1]
+@.str85 = private constant [10 x i8] c"CylinderY\00", align 1 ; [#uses=1]
+@.str186 = private constant [10 x i8] c"CylinderX\00", align 1 ; [#uses=1]
+@.str287 = private constant [10 x i8] c"CylinderZ\00", align 1 ; [#uses=1]
+@_ZTV15btCylinderShape = weak_odr constant [24 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btCylinderShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*)* @_ZN15btCylinderShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*)* @_ZN15btCylinderShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK15btCylinderShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btQuadWord*)* @_ZN15btCylinderShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, float, %struct.btQuadWord*)* @_ZNK15btCylinderShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCapsuleShape*)* @_ZNK15btCylinderShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, float)* @_ZN15btCylinderShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCapsuleShape*)* @_ZNK15btCylinderShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCapsuleShape*, i8*, %struct.btActionInterface*)* @_ZNK15btCylinderShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btCapsuleShape*, %struct.btQuadWord*)* @_ZNK15btCylinderShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btCapsuleShape*, %struct.btQuadWord*)* @_ZNK15btCylinderShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK15btCylinderShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (float (%struct.btCapsuleShape*)* @_ZNK15btCylinderShape9getRadiusEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI15btCylinderShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([18 x i8]* @_ZTS15btCylinderShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btConvexInternalShape to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS15btCylinderShape = weak_odr constant [18 x i8] c"15btCylinderShape\00" ; [#uses=1]
+@_ZTV16btCylinderShapeX = weak_odr constant [24 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI16btCylinderShapeX to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShapeX*)* @_ZN16btCylinderShapeXD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShapeX*)* @_ZN16btCylinderShapeXD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK15btCylinderShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btQuadWord*)* @_ZN15btCylinderShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, float, %struct.btQuadWord*)* @_ZNK15btCylinderShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCapsuleShapeX*)* @_ZNK16btCylinderShapeX7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, float)* @_ZN15btCylinderShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCapsuleShape*)* @_ZNK15btCylinderShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCapsuleShape*, i8*, %struct.btActionInterface*)* @_ZNK15btCylinderShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btCapsuleShape*, %struct.btQuadWord*)* @_ZNK15btCylinderShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btCapsuleShapeX*, %struct.btQuadWord*)* @_ZNK16btCylinderShapeX37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShapeX*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK16btCylinderShapeX49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (float (%struct.btCapsuleShapeX*)* @_ZNK16btCylinderShapeX9getRadiusEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI16btCylinderShapeX = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTS16btCylinderShapeX, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btCylinderShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS16btCylinderShapeX = weak_odr constant [19 x i8] c"16btCylinderShapeX\00" ; [#uses=1]
+@_ZTV16btCylinderShapeZ = weak_odr constant [24 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI16btCylinderShapeZ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShapeX*)* @_ZN16btCylinderShapeZD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShapeX*)* @_ZN16btCylinderShapeZD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK15btCylinderShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, %struct.btQuadWord*)* @_ZN15btCylinderShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, float, %struct.btQuadWord*)* @_ZNK15btCylinderShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCapsuleShapeX*)* @_ZNK16btCylinderShapeZ7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShape*, float)* @_ZN15btCylinderShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCapsuleShape*)* @_ZNK15btCylinderShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCapsuleShape*, i8*, %struct.btActionInterface*)* @_ZNK15btCylinderShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btCapsuleShape*, %struct.btQuadWord*)* @_ZNK15btCylinderShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btCapsuleShapeX*, %struct.btQuadWord*)* @_ZNK16btCylinderShapeZ37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btCapsuleShapeX*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK16btCylinderShapeZ49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (float (%struct.btCapsuleShapeX*)* @_ZNK16btCylinderShapeZ9getRadiusEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI16btCylinderShapeZ = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTS16btCylinderShapeZ, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btCylinderShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS16btCylinderShapeZ = weak_odr constant [19 x i8] c"16btCylinderShapeZ\00" ; [#uses=1]
+@.str488 = private constant [20 x i8] c"btCylinderShapeData\00", align 1 ; [#uses=1]
+@.str89 = private constant [6 x i8] c"Empty\00", align 1 ; [#uses=1]
+@_ZTV12btEmptyShape = weak_odr constant [18 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI12btEmptyShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btEmptyShape*)* @_ZN12btEmptyShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btEmptyShape*)* @_ZN12btEmptyShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btEmptyShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK12btEmptyShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btEmptyShape*, %struct.btQuadWord*)* @_ZN12btEmptyShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btEmptyShape*)* @_ZNK12btEmptyShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btEmptyShape*, float, %struct.btQuadWord*)* @_ZNK12btEmptyShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btEmptyShape*)* @_ZNK12btEmptyShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConcaveShape*, float)* @_ZN14btConcaveShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConcaveShape*)* @_ZNK14btConcaveShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionShape*)* @_ZNK16btCollisionShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* @_ZNK16btCollisionShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btEmptyShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK12btEmptyShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_ to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI12btEmptyShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([15 x i8]* @_ZTS12btEmptyShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI14btConcaveShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS12btEmptyShape = weak_odr constant [15 x i8] c"12btEmptyShape\00" ; [#uses=1]
+@.str90 = private constant [12 x i8] c"HEIGHTFIELD\00", align 1 ; [#uses=1]
+@_ZTV25btHeightfieldTerrainShape = weak_odr constant [19 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI25btHeightfieldTerrainShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btHeightfieldTerrainShape*)* @_ZN25btHeightfieldTerrainShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btHeightfieldTerrainShape*)* @_ZN25btHeightfieldTerrainShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btHeightfieldTerrainShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK25btHeightfieldTerrainShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btHeightfieldTerrainShape*, %struct.btQuadWord*)* @_ZN25btHeightfieldTerrainShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btHeightfieldTerrainShape*)* @_ZNK25btHeightfieldTerrainShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btHeightfieldTerrainShape*, float, %struct.btQuadWord*)* @_ZNK25btHeightfieldTerrainShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btHeightfieldTerrainShape*)* @_ZNK25btHeightfieldTerrainShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConcaveShape*, float)* @_ZN14btConcaveShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConcaveShape*)* @_ZNK14btConcaveShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionShape*)* @_ZNK16btCollisionShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* @_ZNK16btCollisionShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btHeightfieldTerrainShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK25btHeightfieldTerrainShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (float (%struct.btHeightfieldTerrainShape*, i32, i32)* @_ZNK25btHeightfieldTerrainShape22getRawHeightFieldValueEii to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI25btHeightfieldTerrainShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([28 x i8]* @_ZTS25btHeightfieldTerrainShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI14btConcaveShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS25btHeightfieldTerrainShape = weak_odr constant [28 x i8] c"25btHeightfieldTerrainShape\00" ; [#uses=1]
+@.str91 = private constant [13 x i8] c"MinkowskiSum\00", align 1 ; [#uses=1]
+@.str192 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@_ZTV19btMinkowskiSumShape = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI19btMinkowskiSumShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btMinkowskiSumShape*)* @_ZN19btMinkowskiSumShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btMinkowskiSumShape*)* @_ZN19btMinkowskiSumShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btMinkowskiSumShape*, float, %struct.btQuadWord*)* @_ZNK19btMinkowskiSumShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btMinkowskiSumShape*)* @_ZNK19btMinkowskiSumShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btMinkowskiSumShape*)* @_ZNK19btMinkowskiSumShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btMinkowskiSumShape*, %struct.btQuadWord*)* @_ZNK19btMinkowskiSumShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btMinkowskiSumShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK19btMinkowskiSumShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI19btMinkowskiSumShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([22 x i8]* @_ZTS19btMinkowskiSumShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btConvexInternalShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS19btMinkowskiSumShape = weak_odr constant [22 x i8] c"19btMinkowskiSumShape\00" ; [#uses=1]
+@.str93 = private constant [4 x i8] c"int\00", align 1 ; [#uses=0]
+@.str194 = private constant [19 x i8] c"btTriangleInfoData\00", align 1 ; [#uses=0]
+@.str295 = private constant [22 x i8] c"btTriangleInfoMapData\00", align 1 ; [#uses=0]
+@.str96 = private constant [12 x i8] c"MultiSphere\00", align 1 ; [#uses=1]
+@_ZTV18btMultiSphereShape = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI18btMultiSphereShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSphereShape*)* @_ZN18btMultiSphereShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSphereShape*)* @_ZN18btMultiSphereShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalAabbCachingShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK32btConvexInternalAabbCachingShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalAabbCachingShape*, %struct.btQuadWord*)* @_ZN32btConvexInternalAabbCachingShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSphereShape*, float, %struct.btQuadWord*)* @_ZNK18btMultiSphereShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btMultiSphereShape*)* @_ZNK18btMultiSphereShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btMultiSphereShape*)* @_ZNK18btMultiSphereShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btMultiSphereShape*, i8*, %struct.btActionInterface*)* @_ZNK18btMultiSphereShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btMultiSphereShape*, %struct.btQuadWord*)* @_ZNK18btMultiSphereShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btMultiSphereShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK18btMultiSphereShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI18btMultiSphereShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([21 x i8]* @_ZTS18btMultiSphereShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI32btConvexInternalAabbCachingShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS18btMultiSphereShape = weak_odr constant [21 x i8] c"18btMultiSphereShape\00" ; [#uses=1]
+@.str297 = private constant [20 x i8] c"btPositionAndRadius\00", align 1 ; [#uses=1]
+@.str398 = private constant [23 x i8] c"btMultiSphereShapeData\00", align 1 ; [#uses=1]
+@_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..0NodeTriangleCallback*)* @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0NodeTriangleCallback*)* @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0NodeTriangleCallback*, %struct.btQuadWord*, i32, i32)* @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallback28internalProcessTriangleIndexEPS2_ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([91 x i8]* @_ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI31btInternalTriangleIndexCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback = weak_odr constant [91 x i8] c"ZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback\00", align 32 ; [#uses=1]
+@_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..1QuantizedNodeTriangleCallback*)* @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..1QuantizedNodeTriangleCallback*)* @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..1QuantizedNodeTriangleCallback*, %struct.btQuadWord*, i32, i32)* @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallback28internalProcessTriangleIndexEPS2_ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([100 x i8]* @_ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI31btInternalTriangleIndexCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback = weak_odr constant [100 x i8] c"ZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback\00", align 32 ; [#uses=1]
+@_ZTV14btOptimizedBvh = weak_odr constant [10 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI14btOptimizedBvh to i32 (...)*), i32 (...)* bitcast (void (%struct.btOptimizedBvh*)* @_ZN14btOptimizedBvhD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btOptimizedBvh*)* @_ZN14btOptimizedBvhD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btQuantizedBvh*, i8*, i32, i8)* @_ZNK14btQuantizedBvh9serializeEPvjb to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btQuantizedBvh*)* @_ZNK14btQuantizedBvh31calculateSerializeBufferSizeNewEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btQuantizedBvh*, i8*, %struct.btActionInterface*)* @_ZNK14btQuantizedBvh9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuantizedBvh*, %struct.btQuantizedBvhFloatData*)* @_ZN14btQuantizedBvh16deSerializeFloatER23btQuantizedBvhFloatData to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuantizedBvh*, %struct.btQuantizedBvhDoubleData*)* @_ZN14btQuantizedBvh17deSerializeDoubleER24btQuantizedBvhDoubleData to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btOptimizedBvh*, i8*, i32, i8)* @_ZNK14btOptimizedBvh16serializeInPlaceEPvjb to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI14btOptimizedBvh = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([17 x i8]* @_ZTS14btOptimizedBvh, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI14btQuantizedBvh to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS14btOptimizedBvh = weak_odr constant [17 x i8] c"14btOptimizedBvh\00" ; [#uses=1]
+@_ZTV23btPolyhedralConvexShape = weak_odr constant [30 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btPolyhedralConvexShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*)* @_ZN23btPolyhedralConvexShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*)* @_ZN23btPolyhedralConvexShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, float, %struct.btQuadWord*)* @_ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btPolyhedralConvexShape*, %struct.btQuadWord*)* @_ZNK23btPolyhedralConvexShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK23btPolyhedralConvexShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI23btPolyhedralConvexShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btPolyhedralConvexShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btConvexInternalShape to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS23btPolyhedralConvexShape = weak_odr constant [26 x i8] c"23btPolyhedralConvexShape\00" ; [#uses=1]
+@_ZTV34btPolyhedralConvexAabbCachingShape = weak_odr constant [30 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI34btPolyhedralConvexAabbCachingShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexAabbCachingShape*)* @_ZN34btPolyhedralConvexAabbCachingShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexAabbCachingShape*)* @_ZN34btPolyhedralConvexAabbCachingShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexAabbCachingShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexAabbCachingShape*, %struct.btQuadWord*)* @_ZN34btPolyhedralConvexAabbCachingShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, float, %struct.btQuadWord*)* @_ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btPolyhedralConvexShape*, %struct.btQuadWord*)* @_ZNK23btPolyhedralConvexShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK23btPolyhedralConvexShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI34btPolyhedralConvexAabbCachingShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([37 x i8]* @_ZTS34btPolyhedralConvexAabbCachingShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btPolyhedralConvexShape to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS34btPolyhedralConvexAabbCachingShape = weak_odr constant [37 x i8] c"34btPolyhedralConvexAabbCachingShape\00", align 32 ; [#uses=1]
+@.str105 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@_ZGVZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions = internal global i64 0, align 8 ; [#uses=3]
+@_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions = internal global [6 x %struct.btQuadWord] zeroinitializer, align 32 ; [#uses=25]
+@.str111 = private constant [22 x i8] c"SCALEDBVHTRIANGLEMESH\00", align 1 ; [#uses=1]
+@_ZTV24btScaledTriangleCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI24btScaledTriangleCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btScaledTriangleCallback*)* @_ZN24btScaledTriangleCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btScaledTriangleCallback*)* @_ZN24btScaledTriangleCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btScaledTriangleCallback*, %struct.btQuadWord*, i32, i32)* @_ZN24btScaledTriangleCallback15processTriangleEP9btVector3ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI24btScaledTriangleCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([27 x i8]* @_ZTS24btScaledTriangleCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btTriangleCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS24btScaledTriangleCallback = weak_odr constant [27 x i8] c"24btScaledTriangleCallback\00" ; [#uses=1]
+@.str1112 = private constant [4 x i8] c"int\00", align 1 ; [#uses=0]
+@.str2113 = private constant [19 x i8] c"btTriangleInfoData\00", align 1 ; [#uses=0]
+@.str3114 = private constant [22 x i8] c"btTriangleInfoMapData\00", align 1 ; [#uses=0]
+@_ZTV28btScaledBvhTriangleMeshShape = weak_odr constant [18 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI28btScaledBvhTriangleMeshShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btScaledBvhTriangleMeshShape*)* @_ZN28btScaledBvhTriangleMeshShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btScaledBvhTriangleMeshShape*)* @_ZN28btScaledBvhTriangleMeshShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btScaledBvhTriangleMeshShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK28btScaledBvhTriangleMeshShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btScaledBvhTriangleMeshShape*, %struct.btQuadWord*)* @_ZN28btScaledBvhTriangleMeshShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btScaledBvhTriangleMeshShape*)* @_ZNK28btScaledBvhTriangleMeshShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btScaledBvhTriangleMeshShape*, float, %struct.btQuadWord*)* @_ZNK28btScaledBvhTriangleMeshShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btScaledBvhTriangleMeshShape*)* @_ZNK28btScaledBvhTriangleMeshShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConcaveShape*, float)* @_ZN14btConcaveShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConcaveShape*)* @_ZNK14btConcaveShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionShape*)* @_ZNK16btCollisionShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* @_ZNK16btCollisionShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btScaledBvhTriangleMeshShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK28btScaledBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_ to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI28btScaledBvhTriangleMeshShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([31 x i8]* @_ZTS28btScaledBvhTriangleMeshShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI14btConcaveShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS28btScaledBvhTriangleMeshShape = weak_odr constant [31 x i8] c"28btScaledBvhTriangleMeshShape\00", align 4 ; [#uses=1]
+@_ZGVZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints = internal global i64 0, align 8 ; [#uses=3]
+@_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints = internal global [62 x %struct.btQuadWord] zeroinitializer, align 32 ; [#uses=174]
+@.str115 = private constant [7 x i8] c"SPHERE\00", align 1 ; [#uses=1]
+@.str1117 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@_ZTV13btSphereShape = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI13btSphereShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*)* @_ZN13btSphereShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*)* @_ZN13btSphereShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK13btSphereShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, float, %struct.btQuadWord*)* @_ZNK13btSphereShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btPolyhedralConvexShape*)* @_ZNK13btSphereShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, float)* @_ZN13btSphereShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btPolyhedralConvexShape*)* @_ZNK13btSphereShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btPolyhedralConvexShape*, %struct.btQuadWord*)* @_ZNK13btSphereShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btPolyhedralConvexShape*, %struct.btQuadWord*)* @_ZNK13btSphereShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK13btSphereShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI13btSphereShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([16 x i8]* @_ZTS13btSphereShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btConvexInternalShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS13btSphereShape = weak_odr constant [16 x i8] c"13btSphereShape\00" ; [#uses=1]
+@.str120 = private constant [12 x i8] c"STATICPLANE\00", align 1 ; [#uses=1]
+@.str1121 = private constant [23 x i8] c"btStaticPlaneShapeData\00", align 1 ; [#uses=1]
+@_ZTV18btStaticPlaneShape = weak_odr constant [18 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI18btStaticPlaneShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btStaticPlaneShape*)* @_ZN18btStaticPlaneShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btStaticPlaneShape*)* @_ZN18btStaticPlaneShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btStaticPlaneShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK18btStaticPlaneShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btStaticPlaneShape*, %struct.btQuadWord*)* @_ZN18btStaticPlaneShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btStaticPlaneShape*)* @_ZNK18btStaticPlaneShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btStaticPlaneShape*, float, %struct.btQuadWord*)* @_ZNK18btStaticPlaneShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btStaticPlaneShape*)* @_ZNK18btStaticPlaneShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConcaveShape*, float)* @_ZN14btConcaveShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConcaveShape*)* @_ZNK14btConcaveShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btStaticPlaneShape*)* @_ZNK18btStaticPlaneShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btStaticPlaneShape*, i8*, %struct.btActionInterface*)* @_ZNK18btStaticPlaneShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btStaticPlaneShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK18btStaticPlaneShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_ to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI18btStaticPlaneShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([21 x i8]* @_ZTS18btStaticPlaneShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI14btConcaveShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS18btStaticPlaneShape = weak_odr constant [21 x i8] c"18btStaticPlaneShape\00" ; [#uses=1]
+@_ZTVZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_E23AabbCalculationCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_E23AabbCalculationCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..0AabbCalculationCallback*)* @_ZZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_EN23AabbCalculationCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0AabbCalculationCallback*)* @_ZZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_EN23AabbCalculationCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0AabbCalculationCallback*, %struct.btQuadWord*, i32, i32)* @_ZZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_EN23AabbCalculationCallback28internalProcessTriangleIndexEPS0_ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_E23AabbCalculationCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([94 x i8]* @_ZTSZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_E23AabbCalculationCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI31btInternalTriangleIndexCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_E23AabbCalculationCallback = weak_odr constant [94 x i8] c"ZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_E23AabbCalculationCallback\00", align 32 ; [#uses=1]
+@.str123 = private constant [15 x i8] c"btIntIndexData\00", align 1 ; [#uses=1]
+@.str1124 = private constant [27 x i8] c"btShortIntIndexTripletData\00", align 1 ; [#uses=1]
+@.str2125 = private constant [19 x i8] c"btVector3FloatData\00", align 1 ; [#uses=1]
+@.str3126 = private constant [20 x i8] c"btVector3DoubleData\00", align 1 ; [#uses=1]
+@.str4127 = private constant [15 x i8] c"btMeshPartData\00", align 1 ; [#uses=1]
+@.str5128 = private constant [28 x i8] c"btStridingMeshInterfaceData\00", align 1 ; [#uses=1]
+@_ZTV23btStridingMeshInterface = weak_odr constant [17 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI23btStridingMeshInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btStridingMeshInterface*)* @_ZN23btStridingMeshInterfaceD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btStridingMeshInterface*)* @_ZN23btStridingMeshInterfaceD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btStridingMeshInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btStridingMeshInterface*)* @_ZNK23btStridingMeshInterface14hasPremadeAabbEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btStridingMeshInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btStridingMeshInterface14setPremadeAabbERK9btVector3S2_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btStridingMeshInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btStridingMeshInterface14getPremadeAabbEP9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btStridingMeshInterface*)* @_ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btStridingMeshInterface*, i8*, %struct.btActionInterface*)* @_ZNK23btStridingMeshInterface9serializeEPvP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI23btStridingMeshInterface = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btStridingMeshInterface, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS23btStridingMeshInterface = weak_odr constant [26 x i8] c"23btStridingMeshInterface\00" ; [#uses=1]
+@.str129 = private constant [17 x i8] c"btBU_Simplex1to4\00", align 1 ; [#uses=1]
+@.str1130 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@_ZTV16btBU_Simplex1to4 = weak_odr constant [31 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI16btBU_Simplex1to4 to i32 (...)*), i32 (...)* bitcast (void (%struct.btBU_Simplex1to4*)* @_ZN16btBU_Simplex1to4D1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBU_Simplex1to4*)* @_ZN16btBU_Simplex1to4D0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBU_Simplex1to4*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK16btBU_Simplex1to47getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexAabbCachingShape*, %struct.btQuadWord*)* @_ZN34btPolyhedralConvexAabbCachingShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, float, %struct.btQuadWord*)* @_ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btBU_Simplex1to4*)* @_ZNK16btBU_Simplex1to47getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btPolyhedralConvexShape*, %struct.btQuadWord*)* @_ZNK23btPolyhedralConvexShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK23btPolyhedralConvexShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBU_Simplex1to4*)* @_ZNK16btBU_Simplex1to414getNumVerticesEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBU_Simplex1to4*)* @_ZNK16btBU_Simplex1to411getNumEdgesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBU_Simplex1to4*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK16btBU_Simplex1to47getEdgeEiR9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btBU_Simplex1to4*, i32, %struct.btQuadWord*)* @_ZNK16btBU_Simplex1to49getVertexEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBU_Simplex1to4*)* @_ZNK16btBU_Simplex1to412getNumPlanesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBU_Simplex1to4*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK16btBU_Simplex1to48getPlaneER9btVector3S1_i to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btBU_Simplex1to4*, %struct.btQuadWord*, float)* @_ZNK16btBU_Simplex1to48isInsideERK9btVector3f to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBU_Simplex1to4*, i32)* @_ZNK16btBU_Simplex1to48getIndexEi to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI16btBU_Simplex1to4 = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTS16btBU_Simplex1to4, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI34btPolyhedralConvexAabbCachingShape to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS16btBU_Simplex1to4 = weak_odr constant [19 x i8] c"16btBU_Simplex1to4\00" ; [#uses=1]
+@_ZTV16btTriangleBuffer = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI16btTriangleBuffer to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleBuffer*)* @_ZN16btTriangleBufferD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleBuffer*)* @_ZN16btTriangleBufferD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleBuffer*, %struct.btQuadWord*, i32, i32)* @_ZN16btTriangleBuffer15processTriangleEP9btVector3ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI16btTriangleBuffer = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTS16btTriangleBuffer, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btTriangleCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS16btTriangleBuffer = weak_odr constant [19 x i8] c"16btTriangleBuffer\00" ; [#uses=1]
+@_ZTV31btInternalTriangleIndexCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI31btInternalTriangleIndexCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN31btInternalTriangleIndexCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN31btInternalTriangleIndexCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI31btInternalTriangleIndexCallback = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([34 x i8]* @_ZTS31btInternalTriangleIndexCallback, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS31btInternalTriangleIndexCallback = weak_odr constant [34 x i8] c"31btInternalTriangleIndexCallback\00", align 32 ; [#uses=1]
+@_ZTV18btTriangleCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btTriangleCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN18btTriangleCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN18btTriangleCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI18btTriangleCallback = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([21 x i8]* @_ZTS18btTriangleCallback, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS18btTriangleCallback = weak_odr constant [21 x i8] c"18btTriangleCallback\00" ; [#uses=1]
+@_ZTV26btTriangleIndexVertexArray = weak_odr constant [17 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI26btTriangleIndexVertexArray to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*)* @_ZN26btTriangleIndexVertexArrayD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*)* @_ZN26btTriangleIndexVertexArrayD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btStridingMeshInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* @_ZN26btTriangleIndexVertexArray24getLockedVertexIndexBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* @_ZNK26btTriangleIndexVertexArray32getLockedReadOnlyVertexIndexBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i32)* @_ZN26btTriangleIndexVertexArray16unLockVertexBaseEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i32)* @_ZNK26btTriangleIndexVertexArray24unLockReadOnlyVertexBaseEi to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTriangleIndexVertexArray*)* @_ZNK26btTriangleIndexVertexArray14getNumSubPartsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i32)* @_ZN26btTriangleIndexVertexArray19preallocateVerticesEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i32)* @_ZN26btTriangleIndexVertexArray18preallocateIndicesEi to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btTriangleIndexVertexArray*)* @_ZNK26btTriangleIndexVertexArray14hasPremadeAabbEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK26btTriangleIndexVertexArray14setPremadeAabbERK9btVector3S2_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK26btTriangleIndexVertexArray14getPremadeAabbEP9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btStridingMeshInterface*)* @_ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btStridingMeshInterface*, i8*, %struct.btActionInterface*)* @_ZNK23btStridingMeshInterface9serializeEPvP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI26btTriangleIndexVertexArray = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([29 x i8]* @_ZTS26btTriangleIndexVertexArray, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI23btStridingMeshInterface to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS26btTriangleIndexVertexArray = weak_odr constant [29 x i8] c"26btTriangleIndexVertexArray\00" ; [#uses=1]
+@_ZTV34btTriangleIndexVertexMaterialArray = weak_odr constant [19 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI34btTriangleIndexVertexMaterialArray to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexMaterialArray*)* @_ZN34btTriangleIndexVertexMaterialArrayD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexMaterialArray*)* @_ZN34btTriangleIndexVertexMaterialArrayD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btStridingMeshInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* @_ZN26btTriangleIndexVertexArray24getLockedVertexIndexBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* @_ZNK26btTriangleIndexVertexArray32getLockedReadOnlyVertexIndexBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i32)* @_ZN26btTriangleIndexVertexArray16unLockVertexBaseEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i32)* @_ZNK26btTriangleIndexVertexArray24unLockReadOnlyVertexBaseEi to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTriangleIndexVertexArray*)* @_ZNK26btTriangleIndexVertexArray14getNumSubPartsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i32)* @_ZN26btTriangleIndexVertexArray19preallocateVerticesEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i32)* @_ZN26btTriangleIndexVertexArray18preallocateIndicesEi to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btTriangleIndexVertexArray*)* @_ZNK26btTriangleIndexVertexArray14hasPremadeAabbEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK26btTriangleIndexVertexArray14setPremadeAabbERK9btVector3S2_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK26btTriangleIndexVertexArray14getPremadeAabbEP9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btStridingMeshInterface*)* @_ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btStridingMeshInterface*, i8*, %struct.btActionInterface*)* @_ZNK23btStridingMeshInterface9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexMaterialArray*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* @_ZN34btTriangleIndexVertexMaterialArray21getLockedMaterialBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexMaterialArray*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* @_ZN34btTriangleIndexVertexMaterialArray29getLockedReadOnlyMaterialBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI34btTriangleIndexVertexMaterialArray = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([37 x i8]* @_ZTS34btTriangleIndexVertexMaterialArray, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI26btTriangleIndexVertexArray to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS34btTriangleIndexVertexMaterialArray = weak_odr constant [37 x i8] c"34btTriangleIndexVertexMaterialArray\00", align 32 ; [#uses=1]
+@_ZTV14btTriangleMesh = weak_odr constant [17 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI14btTriangleMesh to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleMesh*)* @_ZN14btTriangleMeshD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleMesh*)* @_ZN14btTriangleMeshD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btStridingMeshInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* @_ZN26btTriangleIndexVertexArray24getLockedVertexIndexBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* @_ZNK26btTriangleIndexVertexArray32getLockedReadOnlyVertexIndexBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i32)* @_ZN26btTriangleIndexVertexArray16unLockVertexBaseEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, i32)* @_ZNK26btTriangleIndexVertexArray24unLockReadOnlyVertexBaseEi to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTriangleIndexVertexArray*)* @_ZNK26btTriangleIndexVertexArray14getNumSubPartsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleMesh*, i32)* @_ZN14btTriangleMesh19preallocateVerticesEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleMesh*, i32)* @_ZN14btTriangleMesh18preallocateIndicesEi to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btTriangleIndexVertexArray*)* @_ZNK26btTriangleIndexVertexArray14hasPremadeAabbEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK26btTriangleIndexVertexArray14setPremadeAabbERK9btVector3S2_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleIndexVertexArray*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK26btTriangleIndexVertexArray14getPremadeAabbEP9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btStridingMeshInterface*)* @_ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btStridingMeshInterface*, i8*, %struct.btActionInterface*)* @_ZNK23btStridingMeshInterface9serializeEPvP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI14btTriangleMesh = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([17 x i8]* @_ZTS14btTriangleMesh, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI26btTriangleIndexVertexArray to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS14btTriangleMesh = weak_odr constant [17 x i8] c"14btTriangleMesh\00" ; [#uses=1]
+@.str135 = private constant [13 x i8] c"TRIANGLEMESH\00", align 1 ; [#uses=1]
+@_ZTV21SupportVertexCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21SupportVertexCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.SupportVertexCallback*)* @_ZN21SupportVertexCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.SupportVertexCallback*)* @_ZN21SupportVertexCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.SupportVertexCallback*, %struct.btQuadWord*, i32, i32)* @_ZN21SupportVertexCallback15processTriangleEP9btVector3ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI21SupportVertexCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([24 x i8]* @_ZTS21SupportVertexCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btTriangleCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS21SupportVertexCallback = weak_odr constant [24 x i8] c"21SupportVertexCallback\00" ; [#uses=1]
+@_ZTVZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..0FilteredCallback*)* @_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0FilteredCallback*)* @_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0FilteredCallback*, %struct.btQuadWord*, i32, i32)* @_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallback28internalProcessTriangleIndexEPS2_ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([102 x i8]* @_ZTSZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI31btInternalTriangleIndexCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback = weak_odr constant [102 x i8] c"ZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback\00", align 32 ; [#uses=1]
+@_ZTV19btTriangleMeshShape = weak_odr constant [20 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI19btTriangleMeshShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleMeshShape*)* @_ZN19btTriangleMeshShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleMeshShape*)* @_ZN19btTriangleMeshShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleMeshShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK19btTriangleMeshShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleMeshShape*, %struct.btQuadWord*)* @_ZN19btTriangleMeshShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btTriangleMeshShape*)* @_ZNK19btTriangleMeshShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleMeshShape*, float, %struct.btQuadWord*)* @_ZNK19btTriangleMeshShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btTriangleMeshShape*)* @_ZNK19btTriangleMeshShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConcaveShape*, float)* @_ZN14btConcaveShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConcaveShape*)* @_ZNK14btConcaveShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionShape*)* @_ZNK16btCollisionShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* @_ZNK16btCollisionShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleMeshShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btTriangleMeshShape*, %struct.btQuadWord*)* @_ZNK19btTriangleMeshShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btTriangleMeshShape*, %struct.btQuadWord*)* @_ZNK19btTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI19btTriangleMeshShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([22 x i8]* @_ZTS19btTriangleMeshShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI14btConcaveShape to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS19btTriangleMeshShape = weak_odr constant [22 x i8] c"19btTriangleMeshShape\00" ; [#uses=1]
+@.str146 = private constant [20 x i8] c"UniformScalingShape\00", align 1 ; [#uses=1]
+@_ZTV21btUniformScalingShape = weak_odr constant [23 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btUniformScalingShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btUniformScalingShape*)* @_ZN21btUniformScalingShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btUniformScalingShape*)* @_ZN21btUniformScalingShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btUniformScalingShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btUniformScalingShape7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btUniformScalingShape*, %struct.btQuadWord*)* @_ZN21btUniformScalingShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btUniformScalingShape*)* @_ZNK21btUniformScalingShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btUniformScalingShape*, float, %struct.btQuadWord*)* @_ZNK21btUniformScalingShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btUniformScalingShape*)* @_ZNK21btUniformScalingShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btUniformScalingShape*, float)* @_ZN21btUniformScalingShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btUniformScalingShape*)* @_ZNK21btUniformScalingShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionShape*)* @_ZNK16btCollisionShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* @_ZNK16btCollisionShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btUniformScalingShape*, %struct.btQuadWord*)* @_ZNK21btUniformScalingShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btUniformScalingShape*, %struct.btQuadWord*)* @_ZNK21btUniformScalingShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btUniformScalingShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK21btUniformScalingShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btUniformScalingShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btUniformScalingShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btUniformScalingShape*)* @_ZNK21btUniformScalingShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btUniformScalingShape*, i32, %struct.btQuadWord*)* @_ZNK21btUniformScalingShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI21btUniformScalingShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([24 x i8]* @_ZTS21btUniformScalingShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI13btConvexShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS21btUniformScalingShape = weak_odr constant [24 x i8] c"21btUniformScalingShape\00" ; [#uses=1]
+@_ZTV22btGenericPoolAllocator = weak_odr constant [4 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI22btGenericPoolAllocator to i32 (...)*), i32 (...)* bitcast (void (%struct.btGenericPoolAllocator*)* @_ZN22btGenericPoolAllocatorD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGenericPoolAllocator*)* @_ZN22btGenericPoolAllocatorD0Ev to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI22btGenericPoolAllocator = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([25 x i8]* @_ZTS22btGenericPoolAllocator, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS22btGenericPoolAllocator = weak_odr constant [25 x i8] c"22btGenericPoolAllocator\00" ; [#uses=1]
+@_ZTV22GIM_STANDARD_ALLOCATOR = weak_odr constant [4 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI22GIM_STANDARD_ALLOCATOR to i32 (...)*), i32 (...)* bitcast (void (%struct.GIM_STANDARD_ALLOCATOR*)* @_ZN22GIM_STANDARD_ALLOCATORD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.GIM_STANDARD_ALLOCATOR*)* @_ZN22GIM_STANDARD_ALLOCATORD0Ev to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI22GIM_STANDARD_ALLOCATOR = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([25 x i8]* @_ZTS22GIM_STANDARD_ALLOCATOR, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI22btGenericPoolAllocator to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS22GIM_STANDARD_ALLOCATOR = weak_odr constant [25 x i8] c"22GIM_STANDARD_ALLOCATOR\00" ; [#uses=1]
+@g_main_allocator = global %struct.GIM_STANDARD_ALLOCATOR zeroinitializer, align 32 ; [#uses=10]
+@__dso_handle = external global i8* ; [#uses=1]
+@.str147 = private constant [9 x i8] c"Triangle\00", align 1 ; [#uses=0]
+@.str1148 = private constant [17 x i8] c"btBU_Simplex1to4\00", align 1 ; [#uses=0]
+@_ZTVN18GIM_ShapeRetriever19ChildShapeRetrieverE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTIN18GIM_ShapeRetriever19ChildShapeRetrieverE to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionShape* (%"struct.GIM_ShapeRetriever::ChildShapeRetriever"*, i32)* @_ZN18GIM_ShapeRetriever19ChildShapeRetriever13getChildShapeEi to i32 (...)*), i32 (...)* bitcast (void (%"struct.GIM_ShapeRetriever::ChildShapeRetriever"*)* @_ZN18GIM_ShapeRetriever19ChildShapeRetrieverD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.GIM_ShapeRetriever::ChildShapeRetriever"*)* @_ZN18GIM_ShapeRetriever19ChildShapeRetrieverD0Ev to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN18GIM_ShapeRetriever19ChildShapeRetrieverE = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([44 x i8]* @_ZTSN18GIM_ShapeRetriever19ChildShapeRetrieverE, i32 0, i32 0) } } ; [#uses=2]
+@_ZTSN18GIM_ShapeRetriever19ChildShapeRetrieverE = weak_odr constant [44 x i8] c"N18GIM_ShapeRetriever19ChildShapeRetrieverE\00", align 32 ; [#uses=1]
+@_ZTVN18GIM_ShapeRetriever22TriangleShapeRetrieverE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN18GIM_ShapeRetriever22TriangleShapeRetrieverE to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionShape* (%"struct.GIM_ShapeRetriever::TetraShapeRetriever"*, i32)* @_ZN18GIM_ShapeRetriever22TriangleShapeRetriever13getChildShapeEi to i32 (...)*), i32 (...)* bitcast (void (%"struct.GIM_ShapeRetriever::TetraShapeRetriever"*)* @_ZN18GIM_ShapeRetriever22TriangleShapeRetrieverD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.GIM_ShapeRetriever::TetraShapeRetriever"*)* @_ZN18GIM_ShapeRetriever22TriangleShapeRetrieverD0Ev to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN18GIM_ShapeRetriever22TriangleShapeRetrieverE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([47 x i8]* @_ZTSN18GIM_ShapeRetriever22TriangleShapeRetrieverE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN18GIM_ShapeRetriever19ChildShapeRetrieverE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN18GIM_ShapeRetriever22TriangleShapeRetrieverE = weak_odr constant [47 x i8] c"N18GIM_ShapeRetriever22TriangleShapeRetrieverE\00", align 32 ; [#uses=1]
+@_ZTVN18GIM_ShapeRetriever19TetraShapeRetrieverE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN18GIM_ShapeRetriever19TetraShapeRetrieverE to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionShape* (%"struct.GIM_ShapeRetriever::TetraShapeRetriever"*, i32)* @_ZN18GIM_ShapeRetriever19TetraShapeRetriever13getChildShapeEi to i32 (...)*), i32 (...)* bitcast (void (%"struct.GIM_ShapeRetriever::TetraShapeRetriever"*)* @_ZN18GIM_ShapeRetriever19TetraShapeRetrieverD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.GIM_ShapeRetriever::TetraShapeRetriever"*)* @_ZN18GIM_ShapeRetriever19TetraShapeRetrieverD0Ev to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN18GIM_ShapeRetriever19TetraShapeRetrieverE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([44 x i8]* @_ZTSN18GIM_ShapeRetriever19TetraShapeRetrieverE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN18GIM_ShapeRetriever19ChildShapeRetrieverE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN18GIM_ShapeRetriever19TetraShapeRetrieverE = weak_odr constant [44 x i8] c"N18GIM_ShapeRetriever19TetraShapeRetrieverE\00", align 32 ; [#uses=1]
+@_ZTV25btGImpactTriangleCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI25btGImpactTriangleCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactTriangleCallback*)* @_ZN25btGImpactTriangleCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactTriangleCallback*)* @_ZN25btGImpactTriangleCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactTriangleCallback*, %struct.btQuadWord*, i32, i32)* @_ZN25btGImpactTriangleCallback15processTriangleEP9btVector3ii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI25btGImpactTriangleCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([28 x i8]* @_ZTS25btGImpactTriangleCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btTriangleCallback to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS25btGImpactTriangleCallback = weak_odr constant [28 x i8] c"25btGImpactTriangleCallback\00" ; [#uses=1]
+@_ZTVN27btGImpactCollisionAlgorithm10CreateFuncE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN27btGImpactCollisionAlgorithm10CreateFuncE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN27btGImpactCollisionAlgorithm10CreateFuncD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*)* @_ZN27btGImpactCollisionAlgorithm10CreateFuncD0Ev to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionAlgorithm* (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* @_ZN27btGImpactCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_ to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN27btGImpactCollisionAlgorithm10CreateFuncE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([44 x i8]* @_ZTSN27btGImpactCollisionAlgorithm10CreateFuncE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btCollisionAlgorithmCreateFunc to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN27btGImpactCollisionAlgorithm10CreateFuncE = weak_odr constant [44 x i8] c"N27btGImpactCollisionAlgorithm10CreateFuncE\00", align 32 ; [#uses=1]
+@_ZGVZN27btGImpactCollisionAlgorithm17registerAlgorithmEP21btCollisionDispatcherE12s_gimpact_cf = internal global i64 0, align 8 ; [#uses=3]
+@_ZZN27btGImpactCollisionAlgorithm17registerAlgorithmEP21btCollisionDispatcherE12s_gimpact_cf = internal global %"struct.btBoxBoxCollisionAlgorithm::CreateFunc" zeroinitializer ; [#uses=3]
+@.str2149 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@_ZTV17btTriangleShapeEx = weak_odr constant [31 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI17btTriangleShapeEx to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShapeEx*)* @_ZN17btTriangleShapeExD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShapeEx*)* @_ZN17btTriangleShapeExD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShapeEx*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK17btTriangleShapeEx7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, float, %struct.btQuadWord*)* @_ZNK15btTriangleShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btTriangleShape*)* @_ZNK15btTriangleShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btTriangleShape*, %struct.btQuadWord*)* @_ZNK15btTriangleShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK15btTriangleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTriangleShape*)* @_ZNK15btTriangleShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, i32, %struct.btQuadWord*)* @_ZNK15btTriangleShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTriangleShape*)* @_ZNK15btTriangleShape14getNumVerticesEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTriangleShape*)* @_ZNK15btTriangleShape11getNumEdgesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK15btTriangleShape7getEdgeEiR9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, i32, %struct.btQuadWord*)* @_ZNK15btTriangleShape9getVertexEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTriangleShape*)* @_ZNK15btTriangleShape12getNumPlanesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK15btTriangleShape8getPlaneER9btVector3S1_i to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btTriangleShape*, %struct.btQuadWord*, float)* @_ZNK15btTriangleShape8isInsideERK9btVector3f to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleShape*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK15btTriangleShape16getPlaneEquationEiR9btVector3S1_ to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI17btTriangleShapeEx = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([20 x i8]* @_ZTS17btTriangleShapeEx, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btTriangleShape to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS17btTriangleShapeEx = weak_odr constant [20 x i8] c"17btTriangleShapeEx\00" ; [#uses=1]
+@_ZTV20btTetrahedronShapeEx = weak_odr constant [31 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI20btTetrahedronShapeEx to i32 (...)*), i32 (...)* bitcast (void (%struct.btTetrahedronShapeEx*)* @_ZN20btTetrahedronShapeExD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTetrahedronShapeEx*)* @_ZN20btTetrahedronShapeExD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btBU_Simplex1to4*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK16btBU_Simplex1to47getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexAabbCachingShape*, %struct.btQuadWord*)* @_ZN34btPolyhedralConvexAabbCachingShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, float, %struct.btQuadWord*)* @_ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btBU_Simplex1to4*)* @_ZNK16btBU_Simplex1to47getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, float)* @_ZN21btConvexInternalShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConvexInternalShape*, i8*, %struct.btActionInterface*)* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btPolyhedralConvexShape*, %struct.btQuadWord*)* @_ZNK23btPolyhedralConvexShape37localGetSupportingVertexWithoutMarginERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btPolyhedralConvexShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK23btPolyhedralConvexShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConvexInternalShape*)* @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btConvexInternalShape*, i32, %struct.btQuadWord*)* @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBU_Simplex1to4*)* @_ZNK16btBU_Simplex1to414getNumVerticesEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBU_Simplex1to4*)* @_ZNK16btBU_Simplex1to411getNumEdgesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBU_Simplex1to4*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK16btBU_Simplex1to47getEdgeEiR9btVector3S1_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btBU_Simplex1to4*, i32, %struct.btQuadWord*)* @_ZNK16btBU_Simplex1to49getVertexEiR9btVector3 to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBU_Simplex1to4*)* @_ZNK16btBU_Simplex1to412getNumPlanesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btBU_Simplex1to4*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* @_ZNK16btBU_Simplex1to48getPlaneER9btVector3S1_i to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btBU_Simplex1to4*, %struct.btQuadWord*, float)* @_ZNK16btBU_Simplex1to48isInsideERK9btVector3f to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btBU_Simplex1to4*, i32)* @_ZNK16btBU_Simplex1to48getIndexEi to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI20btTetrahedronShapeEx = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([23 x i8]* @_ZTS20btTetrahedronShapeEx, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI16btBU_Simplex1to4 to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS20btTetrahedronShapeEx = weak_odr constant [23 x i8] c"20btTetrahedronShapeEx\00" ; [#uses=1]
+@_ZTV27btGImpactCollisionAlgorithm = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI27btGImpactCollisionAlgorithm to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactCollisionAlgorithm*)* @_ZN27btGImpactCollisionAlgorithmD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactCollisionAlgorithm*)* @_ZN27btGImpactCollisionAlgorithmD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN27btGImpactCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (float (%struct.btGImpactCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* @_ZN27btGImpactCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* @_ZN27btGImpactCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI27btGImpactCollisionAlgorithm = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([30 x i8]* @_ZTS27btGImpactCollisionAlgorithm, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btActivatingCollisionAlgorithm to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS27btGImpactCollisionAlgorithm = weak_odr constant [30 x i8] c"27btGImpactCollisionAlgorithm\00" ; [#uses=1]
+@.str153 = private constant [16 x i8] c"GImpactCompound\00", align 1 ; [#uses=1]
+@.str1154 = private constant [21 x i8] c"GImpactMeshShapePart\00", align 1 ; [#uses=1]
+@.str2155 = private constant [12 x i8] c"GImpactMesh\00", align 1 ; [#uses=1]
+@.str3156 = private constant [23 x i8] c"btGImpactMeshShapeData\00", align 1 ; [#uses=1]
+@_ZTVN22btGImpactCompoundShape24CompoundPrimitiveManagerE = weak_odr constant [8 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN22btGImpactCompoundShape24CompoundPrimitiveManagerE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btGImpactCompoundShape::CompoundPrimitiveManager"*)* @_ZN22btGImpactCompoundShape24CompoundPrimitiveManagerD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btGImpactCompoundShape::CompoundPrimitiveManager"*)* @_ZN22btGImpactCompoundShape24CompoundPrimitiveManagerD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%"struct.btGImpactCompoundShape::CompoundPrimitiveManager"*)* @_ZNK22btGImpactCompoundShape24CompoundPrimitiveManager10is_trimeshEv to i32 (...)*), i32 (...)* bitcast (i32 (%"struct.btGImpactCompoundShape::CompoundPrimitiveManager"*)* @_ZNK22btGImpactCompoundShape24CompoundPrimitiveManager19get_primitive_countEv to i32 (...)*), i32 (...)* bitcast (void (%"struct.btGImpactCompoundShape::CompoundPrimitiveManager"*, i32, %struct.GIM_AABB*)* @_ZNK22btGImpactCompoundShape24CompoundPrimitiveManager17get_primitive_boxEiR6btAABB to i32 (...)*), i32 (...)* bitcast (void (%"struct.btGImpactCompoundShape::CompoundPrimitiveManager"*, i32, %struct.btPrimitiveTriangle*)* @_ZNK22btGImpactCompoundShape24CompoundPrimitiveManager22get_primitive_triangleEiR19btPrimitiveTriangle to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTIN22btGImpactCompoundShape24CompoundPrimitiveManagerE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([53 x i8]* @_ZTSN22btGImpactCompoundShape24CompoundPrimitiveManagerE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI22btPrimitiveManagerBase to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN22btGImpactCompoundShape24CompoundPrimitiveManagerE = weak_odr constant [53 x i8] c"N22btGImpactCompoundShape24CompoundPrimitiveManagerE\00", align 32 ; [#uses=1]
+@_ZTI22btPrimitiveManagerBase = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([25 x i8]* @_ZTS22btPrimitiveManagerBase, i32 0, i32 0) } } ; [#uses=1]
+@_ZTS22btPrimitiveManagerBase = weak_odr constant [25 x i8] c"22btPrimitiveManagerBase\00" ; [#uses=1]
+@_ZTVN22btGImpactMeshShapePart23TrimeshPrimitiveManagerE = weak_odr constant [8 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN22btGImpactMeshShapePart23TrimeshPrimitiveManagerE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"*)* @_ZN22btGImpactMeshShapePart23TrimeshPrimitiveManagerD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"*)* @_ZN22btGImpactMeshShapePart23TrimeshPrimitiveManagerD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"*)* @_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10is_trimeshEv to i32 (...)*), i32 (...)* bitcast (i32 (%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"*)* @_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager19get_primitive_countEv to i32 (...)*), i32 (...)* bitcast (void (%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"*, i32, %struct.GIM_AABB*)* @_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager17get_primitive_boxEiR6btAABB to i32 (...)*), i32 (...)* bitcast (void (%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"*, i32, %struct.btPrimitiveTriangle*)* @_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager22get_primitive_triangleEiR19btPrimitiveTriangle to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTIN22btGImpactMeshShapePart23TrimeshPrimitiveManagerE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([52 x i8]* @_ZTSN22btGImpactMeshShapePart23TrimeshPrimitiveManagerE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI22btPrimitiveManagerBase to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN22btGImpactMeshShapePart23TrimeshPrimitiveManagerE = weak_odr constant [52 x i8] c"N22btGImpactMeshShapePart23TrimeshPrimitiveManagerE\00", align 32 ; [#uses=1]
+@_ZTV23btGImpactShapeInterface = weak_odr constant [37 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btGImpactShapeInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*)* @_ZN23btGImpactShapeInterfaceD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*)* @_ZN23btGImpactShapeInterfaceD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btGImpactShapeInterface7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, %struct.btQuadWord*)* @_ZN23btGImpactShapeInterface15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btGImpactShapeInterface*)* @_ZNK23btGImpactShapeInterface15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, float)* @_ZN23btGImpactShapeInterface9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConcaveShape*)* @_ZNK14btConcaveShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionShape*)* @_ZNK16btCollisionShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* @_ZNK16btCollisionShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btGImpactShapeInterface19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*)* @_ZN23btGImpactShapeInterface13calcLocalAABBEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*)* @_ZN23btGImpactShapeInterface10postUpdateEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGImpactShapeInterface*)* @_ZNK23btGImpactShapeInterface12getShapeTypeEv to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*)* @_ZNK23btGImpactShapeInterface15lockChildShapesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*)* @_ZNK23btGImpactShapeInterface17unlockChildShapesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, i32, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btGImpactShapeInterface12getChildAabbEiRK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %"struct.btCollisionWorld::RayResultCallback"*)* @_ZNK23btGImpactShapeInterface7rayTestERK9btVector3S2_RN16btCollisionWorld17RayResultCallbackE to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI23btGImpactShapeInterface = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btGImpactShapeInterface, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI14btConcaveShape to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS23btGImpactShapeInterface = weak_odr constant [26 x i8] c"23btGImpactShapeInterface\00" ; [#uses=1]
+@_ZTV22btGImpactCompoundShape = weak_odr constant [37 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI22btGImpactCompoundShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactCompoundShape*)* @_ZN22btGImpactCompoundShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactCompoundShape*)* @_ZN22btGImpactCompoundShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btGImpactShapeInterface7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, %struct.btQuadWord*)* @_ZN23btGImpactShapeInterface15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btGImpactShapeInterface*)* @_ZNK23btGImpactShapeInterface15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactCompoundShape*, float, %struct.btQuadWord*)* @_ZNK22btGImpactCompoundShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btGImpactCompoundShape*)* @_ZNK22btGImpactCompoundShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, float)* @_ZN23btGImpactShapeInterface9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConcaveShape*)* @_ZNK14btConcaveShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionShape*)* @_ZNK16btCollisionShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* @_ZNK16btCollisionShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btGImpactShapeInterface19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*)* @_ZN23btGImpactShapeInterface13calcLocalAABBEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*)* @_ZN23btGImpactShapeInterface10postUpdateEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGImpactShapeInterface*)* @_ZNK23btGImpactShapeInterface12getShapeTypeEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGImpactCompoundShape*)* @_ZNK22btGImpactCompoundShape19getGImpactShapeTypeEv to i32 (...)*), i32 (...)* bitcast (%struct.btActionInterface* (%struct.btGImpactCompoundShape*)* @_ZNK22btGImpactCompoundShape19getPrimitiveManagerEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGImpactCompoundShape*)* @_ZNK22btGImpactCompoundShape17getNumChildShapesEv to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btGImpactCompoundShape*)* @_ZNK22btGImpactCompoundShape20childrenHasTransformEv to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btGImpactCompoundShape*)* @_ZNK22btGImpactCompoundShape22needsRetrieveTrianglesEv to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btGImpactCompoundShape*)* @_ZNK22btGImpactCompoundShape25needsRetrieveTetrahedronsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactCompoundShape*, i32, %struct.btTriangleShapeEx*)* @_ZNK22btGImpactCompoundShape17getBulletTriangleEiR17btTriangleShapeEx to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactCompoundShape*, i32, %struct.btTetrahedronShapeEx*)* @_ZNK22btGImpactCompoundShape20getBulletTetrahedronEiR20btTetrahedronShapeEx to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*)* @_ZNK23btGImpactShapeInterface15lockChildShapesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*)* @_ZNK23btGImpactShapeInterface17unlockChildShapesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactCompoundShape*, i32, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK22btGImpactCompoundShape12getChildAabbEiRK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionShape* (%struct.btGImpactCompoundShape*, i32)* @_ZN22btGImpactCompoundShape13getChildShapeEi to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionShape* (%struct.btGImpactCompoundShape*, i32)* @_ZNK22btGImpactCompoundShape13getChildShapeEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btTransform*, %struct.btGImpactCompoundShape*, i32)* @_ZNK22btGImpactCompoundShape17getChildTransformEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactCompoundShape*, i32, %struct.btTransform*)* @_ZN22btGImpactCompoundShape17setChildTransformEiRK11btTransform to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %"struct.btCollisionWorld::RayResultCallback"*)* @_ZNK23btGImpactShapeInterface7rayTestERK9btVector3S2_RN16btCollisionWorld17RayResultCallbackE to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI22btGImpactCompoundShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([25 x i8]* @_ZTS22btGImpactCompoundShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btGImpactShapeInterface to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS22btGImpactCompoundShape = weak_odr constant [25 x i8] c"22btGImpactCompoundShape\00" ; [#uses=1]
+@_ZTV22btGImpactMeshShapePart = weak_odr constant [37 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI22btGImpactMeshShapePart to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShapePart*)* @_ZN22btGImpactMeshShapePartD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShapePart*)* @_ZN22btGImpactMeshShapePartD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btGImpactShapeInterface7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShapePart*, %struct.btQuadWord*)* @_ZN22btGImpactMeshShapePart15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btGImpactMeshShapePart*)* @_ZNK22btGImpactMeshShapePart15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShapePart*, float, %struct.btQuadWord*)* @_ZNK22btGImpactMeshShapePart21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btGImpactMeshShapePart*)* @_ZNK22btGImpactMeshShapePart7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShapePart*, float)* @_ZN22btGImpactMeshShapePart9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btGImpactMeshShapePart*)* @_ZNK22btGImpactMeshShapePart9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btCollisionShape*)* @_ZNK16btCollisionShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* @_ZNK16btCollisionShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShapePart*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK22btGImpactMeshShapePart19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*)* @_ZN23btGImpactShapeInterface13calcLocalAABBEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*)* @_ZN23btGImpactShapeInterface10postUpdateEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGImpactShapeInterface*)* @_ZNK23btGImpactShapeInterface12getShapeTypeEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGImpactMeshShapePart*)* @_ZNK22btGImpactMeshShapePart19getGImpactShapeTypeEv to i32 (...)*), i32 (...)* bitcast (%struct.btActionInterface* (%struct.btGImpactMeshShapePart*)* @_ZNK22btGImpactMeshShapePart19getPrimitiveManagerEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGImpactMeshShapePart*)* @_ZNK22btGImpactMeshShapePart17getNumChildShapesEv to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btGImpactMeshShapePart*)* @_ZNK22btGImpactMeshShapePart20childrenHasTransformEv to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btGImpactMeshShapePart*)* @_ZNK22btGImpactMeshShapePart22needsRetrieveTrianglesEv to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btGImpactMeshShapePart*)* @_ZNK22btGImpactMeshShapePart25needsRetrieveTetrahedronsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShapePart*, i32, %struct.btTriangleShapeEx*)* @_ZNK22btGImpactMeshShapePart17getBulletTriangleEiR17btTriangleShapeEx to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShapePart*, i32, %struct.btTetrahedronShapeEx*)* @_ZNK22btGImpactMeshShapePart20getBulletTetrahedronEiR20btTetrahedronShapeEx to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShapePart*)* @_ZNK22btGImpactMeshShapePart15lockChildShapesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShapePart*)* @_ZNK22btGImpactMeshShapePart17unlockChildShapesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, i32, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btGImpactShapeInterface12getChildAabbEiRK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionShape* (%struct.btGImpactMeshShapePart*, i32)* @_ZN22btGImpactMeshShapePart13getChildShapeEi to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionShape* (%struct.btGImpactMeshShapePart*, i32)* @_ZNK22btGImpactMeshShapePart13getChildShapeEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btTransform*, %struct.btGImpactMeshShapePart*, i32)* @_ZNK22btGImpactMeshShapePart17getChildTransformEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShapePart*, i32, %struct.btTransform*)* @_ZN22btGImpactMeshShapePart17setChildTransformEiRK11btTransform to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %"struct.btCollisionWorld::RayResultCallback"*)* @_ZNK23btGImpactShapeInterface7rayTestERK9btVector3S2_RN16btCollisionWorld17RayResultCallbackE to i32 (...)*)], align 32 ; [#uses=0]
+@_ZTI22btGImpactMeshShapePart = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([25 x i8]* @_ZTS22btGImpactMeshShapePart, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btGImpactShapeInterface to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS22btGImpactMeshShapePart = weak_odr constant [25 x i8] c"22btGImpactMeshShapePart\00" ; [#uses=1]
+@_ZTV18btGImpactMeshShape = weak_odr constant [37 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI18btGImpactMeshShape to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*)* @_ZN18btGImpactMeshShapeD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*)* @_ZN18btGImpactMeshShapeD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactShapeInterface*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK23btGImpactShapeInterface7getAabbERK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*)* @_ZNK16btCollisionShape20getAngularMotionDiscEv to i32 (...)*), i32 (...)* bitcast (float (%struct.btCollisionShape*, float)* @_ZNK16btCollisionShape27getContactBreakingThresholdEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*, %struct.btQuadWord*)* @_ZN18btGImpactMeshShape15setLocalScalingERK9btVector3 to i32 (...)*), i32 (...)* bitcast (%struct.btQuadWord* (%struct.btGImpactShapeInterface*)* @_ZNK23btGImpactShapeInterface15getLocalScalingEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*, float, %struct.btQuadWord*)* @_ZNK18btGImpactMeshShape21calculateLocalInertiaEfR9btVector3 to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btGImpactMeshShape*)* @_ZNK18btGImpactMeshShape7getNameEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*, float)* @_ZN18btGImpactMeshShape9setMarginEf to i32 (...)*), i32 (...)* bitcast (float (%struct.btConcaveShape*)* @_ZNK14btConcaveShape9getMarginEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGImpactMeshShape*)* @_ZNK18btGImpactMeshShape28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btGImpactMeshShape*, i8*, %struct.btActionInterface*)* @_ZNK18btGImpactMeshShape9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionShape*, %struct.btActionInterface*)* @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK18btGImpactMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*)* @_ZN18btGImpactMeshShape13calcLocalAABBEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*)* @_ZN18btGImpactMeshShape10postUpdateEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGImpactShapeInterface*)* @_ZNK23btGImpactShapeInterface12getShapeTypeEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGImpactMeshShape*)* @_ZNK18btGImpactMeshShape19getGImpactShapeTypeEv to i32 (...)*), i32 (...)* bitcast (%struct.btActionInterface* (%struct.btGImpactMeshShape*)* @_ZNK18btGImpactMeshShape19getPrimitiveManagerEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGImpactMeshShape*)* @_ZNK18btGImpactMeshShape17getNumChildShapesEv to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btGImpactMeshShape*)* @_ZNK18btGImpactMeshShape20childrenHasTransformEv to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btGImpactMeshShape*)* @_ZNK18btGImpactMeshShape22needsRetrieveTrianglesEv to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btGImpactMeshShape*)* @_ZNK18btGImpactMeshShape25needsRetrieveTetrahedronsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*, i32, %struct.btTriangleShapeEx*)* @_ZNK18btGImpactMeshShape17getBulletTriangleEiR17btTriangleShapeEx to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*, i32, %struct.btTetrahedronShapeEx*)* @_ZNK18btGImpactMeshShape20getBulletTetrahedronEiR20btTetrahedronShapeEx to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*)* @_ZNK18btGImpactMeshShape15lockChildShapesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*)* @_ZNK18btGImpactMeshShape17unlockChildShapesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*, i32, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* @_ZNK18btGImpactMeshShape12getChildAabbEiRK11btTransformR9btVector3S4_ to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionShape* (%struct.btGImpactMeshShape*, i32)* @_ZN18btGImpactMeshShape13getChildShapeEi to i32 (...)*), i32 (...)* bitcast (%struct.btCollisionShape* (%struct.btGImpactMeshShape*, i32)* @_ZNK18btGImpactMeshShape13getChildShapeEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btTransform*, %struct.btGImpactMeshShape*, i32)* @_ZNK18btGImpactMeshShape17getChildTransformEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*, i32, %struct.btTransform*)* @_ZN18btGImpactMeshShape17setChildTransformEiRK11btTransform to i32 (...)*), i32 (...)* bitcast (void (%struct.btGImpactMeshShape*, %struct.btQuadWord*, %struct.btQuadWord*, %"struct.btCollisionWorld::RayResultCallback"*)* @_ZNK18btGImpactMeshShape7rayTestERK9btVector3S2_RN16btCollisionWorld17RayResultCallbackE to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI18btGImpactMeshShape = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([21 x i8]* @_ZTS18btGImpactMeshShape, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btGImpactShapeInterface to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS18btGImpactMeshShape = weak_odr constant [21 x i8] c"18btGImpactMeshShape\00" ; [#uses=1]
+@_ZGVZN27GIM_BOX_BOX_TRANSFORM_CACHE20calc_absolute_matrixEvE5vepsi = weak global i64 0, align 8 ; [#uses=0]
+@_ZL9g_allocfn = internal global i8* (i32)* null ; [#uses=5]
+@_ZL10g_allocafn = internal global i8* (i32)* null ; [#uses=3]
+@_ZL11g_reallocfn = internal global i8* (i8*, i32, i32)* null ; [#uses=2]
+@_ZL8g_freefn = internal global void (i8*)* null ; [#uses=4]
+@_ZTV16btPointCollector = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI16btPointCollector to i32 (...)*), i32 (...)* bitcast (void (%struct..0btIntermediateResult*)* @_ZN16btPointCollectorD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0btIntermediateResult*)* @_ZN16btPointCollectorD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0btIntermediateResult*, i32, i32)* @_ZN16btPointCollector20setShapeIdentifiersAEii to i32 (...)*), i32 (...)* bitcast (void (%struct..0btIntermediateResult*, i32, i32)* @_ZN16btPointCollector20setShapeIdentifiersBEii to i32 (...)*), i32 (...)* bitcast (void (%struct..0btIntermediateResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* @_ZN16btPointCollector15addContactPointERK9btVector3S2_f to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI16btPointCollector = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTS16btPointCollector, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN36btDiscreteCollisionDetectorInterface6ResultE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS16btPointCollector = weak_odr constant [19 x i8] c"16btPointCollector\00" ; [#uses=1]
+@_ZTV27btContinuousConvexCollision = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI27btContinuousConvexCollision to i32 (...)*), i32 (...)* bitcast (void (%struct.btContinuousConvexCollision*)* @_ZN27btContinuousConvexCollisionD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btContinuousConvexCollision*)* @_ZN27btContinuousConvexCollisionD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btContinuousConvexCollision*, %struct.btTransform*, %struct.btTransform*, %struct.btTransform*, %struct.btTransform*, %"struct.btConvexCast::CastResult"*)* @_ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI27btContinuousConvexCollision = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([30 x i8]* @_ZTS27btContinuousConvexCollision, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI12btConvexCast to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS27btContinuousConvexCollision = weak_odr constant [30 x i8] c"27btContinuousConvexCollision\00" ; [#uses=1]
+@_ZTV12btConvexCast = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI12btConvexCast to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN12btConvexCastD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN12btConvexCastD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI12btConvexCast = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([15 x i8]* @_ZTS12btConvexCast, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS12btConvexCast = weak_odr constant [15 x i8] c"12btConvexCast\00" ; [#uses=1]
+@_ZTV15btGjkConvexCast = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btGjkConvexCast to i32 (...)*), i32 (...)* bitcast (void (%struct.btGjkConvexCast*)* @_ZN15btGjkConvexCastD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGjkConvexCast*)* @_ZN15btGjkConvexCastD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btGjkConvexCast*, %struct.btTransform*, %struct.btTransform*, %struct.btTransform*, %struct.btTransform*, %"struct.btConvexCast::CastResult"*)* @_ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI15btGjkConvexCast = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([18 x i8]* @_ZTS15btGjkConvexCast, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI12btConvexCast to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS15btGjkConvexCast = weak_odr constant [18 x i8] c"15btGjkConvexCast\00" ; [#uses=1]
+@_ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRjE4imd3 = weak_odr constant [3 x i32] [i32 1, i32 2, i32 0] ; [#uses=2]
+@_ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_S3_PfRjE4imd3 = weak_odr constant [3 x i32] [i32 1, i32 2, i32 0] ; [#uses=2]
+@_ZZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonEE4i1m3 = weak_odr constant [3 x i32] [i32 1, i32 2, i32 0] ; [#uses=1]
+@_ZZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonEE4i2m3 = weak_odr constant [3 x i32] [i32 2, i32 0, i32 1] ; [#uses=1]
+@_ZTV30btGjkEpaPenetrationDepthSolver = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btGjkEpaPenetrationDepthSolver to i32 (...)*), i32 (...)* bitcast (void (%struct..0btMultiSapOverlapFilterCallback*)* @_ZN30btGjkEpaPenetrationDepthSolverD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0btMultiSapOverlapFilterCallback*)* @_ZN30btGjkEpaPenetrationDepthSolverD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct..0btMultiSapOverlapFilterCallback*, %struct.btVoronoiSimplexSolver*, %struct.btConvexShape*, %struct.btConvexShape*, %struct.btTransform*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*, %struct.btStackAlloc*)* @_ZN30btGjkEpaPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAlloc to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI30btGjkEpaPenetrationDepthSolver = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([33 x i8]* @_ZTS30btGjkEpaPenetrationDepthSolver, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btConvexPenetrationDepthSolver to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS30btGjkEpaPenetrationDepthSolver = weak_odr constant [33 x i8] c"30btGjkEpaPenetrationDepthSolver\00", align 32 ; [#uses=1]
+@gNumDeepPenetrationChecks = global i32 0 ; [#uses=2]
+@_ZTV17btGjkPairDetector = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI17btGjkPairDetector to i32 (...)*), i32 (...)* bitcast (void (%struct.btGjkPairDetector*)* @_ZN17btGjkPairDetectorD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGjkPairDetector*)* @_ZN17btGjkPairDetectorD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGjkPairDetector*, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"*, %struct.btActionInterface*, %struct.btActionInterface*, i8)* @_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI17btGjkPairDetector = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([20 x i8]* @_ZTS17btGjkPairDetector, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI36btDiscreteCollisionDetectorInterface to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS17btGjkPairDetector = weak_odr constant [20 x i8] c"17btGjkPairDetector\00" ; [#uses=1]
+@gNumGjkChecks = global i32 0 ; [#uses=2]
+@_ZTVZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocE20btIntermediateResult = weak_odr constant [7 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocE20btIntermediateResult to i32 (...)*), i32 (...)* bitcast (void (%struct..0btIntermediateResult*)* @_ZZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocEN20btIntermediateResultD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0btIntermediateResult*)* @_ZZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocEN20btIntermediateResultD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0btIntermediateResult*, i32, i32)* @_ZZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocEN20btIntermediateResult20setShapeIdentifiersAEii to i32 (...)*), i32 (...)* bitcast (void (%struct..0btIntermediateResult*, i32, i32)* @_ZZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocEN20btIntermediateResult20setShapeIdentifiersBEii to i32 (...)*), i32 (...)* bitcast (void (%struct..0btIntermediateResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* @_ZZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocEN20btIntermediateResult15addContactPointERKS8_SG_f to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocE20btIntermediateResult = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([186 x i8]* @_ZTSZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocE20btIntermediateResult, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN36btDiscreteCollisionDetectorInterface6ResultE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocE20btIntermediateResult = weak_odr constant [186 x i8] c"ZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocE20btIntermediateResult\00", align 32 ; [#uses=1]
+@_ZTV33btMinkowskiPenetrationDepthSolver = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI33btMinkowskiPenetrationDepthSolver to i32 (...)*), i32 (...)* bitcast (void (%struct..0btMultiSapOverlapFilterCallback*)* @_ZN33btMinkowskiPenetrationDepthSolverD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0btMultiSapOverlapFilterCallback*)* @_ZN33btMinkowskiPenetrationDepthSolverD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct..0btMultiSapOverlapFilterCallback*, %struct.btVoronoiSimplexSolver*, %struct.btConvexShape*, %struct.btConvexShape*, %struct.btTransform*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*, %struct.btStackAlloc*)* @_ZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAlloc to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI33btMinkowskiPenetrationDepthSolver = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([36 x i8]* @_ZTS33btMinkowskiPenetrationDepthSolver, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI30btConvexPenetrationDepthSolver to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS33btMinkowskiPenetrationDepthSolver = weak_odr constant [36 x i8] c"33btMinkowskiPenetrationDepthSolver\00", align 32 ; [#uses=1]
+@_ZGVZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections = internal global i64 0, align 8 ; [#uses=3]
+@_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections = internal global [62 x %struct.btQuadWord] zeroinitializer, align 32 ; [#uses=184]
+@gContactBreakingThreshold = global float 0x3F947AE140000000 ; [#uses=6]
+@gContactDestroyedCallback = global i8 (i8*)* null ; [#uses=4]
+@gContactProcessedCallback = global i8 (%struct.btManifoldPoint*, i8*, i8*)* null ; [#uses=1]
+@.str181 = private constant [9 x i8] c"Triangle\00", align 1 ; [#uses=0]
+@_ZTV25btTriangleRaycastCallback = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI25btTriangleRaycastCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleRaycastCallback*)* @_ZN25btTriangleRaycastCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleRaycastCallback*)* @_ZN25btTriangleRaycastCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleRaycastCallback*, %struct.btQuadWord*, i32, i32)* @_ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI25btTriangleRaycastCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([28 x i8]* @_ZTS25btTriangleRaycastCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btTriangleCallback to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS25btTriangleRaycastCallback = weak_odr constant [28 x i8] c"25btTriangleRaycastCallback\00" ; [#uses=1]
+@_ZTV28btTriangleConvexcastCallback = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI28btTriangleConvexcastCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleConvexcastCallback*)* @_ZN28btTriangleConvexcastCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleConvexcastCallback*)* @_ZN28btTriangleConvexcastCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTriangleConvexcastCallback*, %struct.btQuadWord*, i32, i32)* @_ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI28btTriangleConvexcastCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([31 x i8]* @_ZTS28btTriangleConvexcastCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btTriangleCallback to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS28btTriangleConvexcastCallback = weak_odr constant [31 x i8] c"28btTriangleConvexcastCallback\00", align 4 ; [#uses=1]
+@.str1186 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@_ZTV22btSubsimplexConvexCast = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI22btSubsimplexConvexCast to i32 (...)*), i32 (...)* bitcast (void (%struct.btGjkConvexCast*)* @_ZN22btSubsimplexConvexCastD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGjkConvexCast*)* @_ZN22btSubsimplexConvexCastD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btGjkConvexCast*, %struct.btTransform*, %struct.btTransform*, %struct.btTransform*, %struct.btTransform*, %"struct.btConvexCast::CastResult"*)* @_ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI22btSubsimplexConvexCast = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([25 x i8]* @_ZTS22btSubsimplexConvexCast, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI12btConvexCast to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS22btSubsimplexConvexCast = weak_odr constant [25 x i8] c"22btSubsimplexConvexCast\00" ; [#uses=1]
+@_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN16btCollisionWorld27ClosestConvexResultCallbackE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btCollisionWorld::ClosestConvexResultCallback"*)* @_ZN16btCollisionWorld27ClosestConvexResultCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btCollisionWorld::ClosestConvexResultCallback"*)* @_ZN16btCollisionWorld27ClosestConvexResultCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%"struct.btCollisionWorld::ConvexResultCallback"*, %struct.btBroadphaseProxy*)* @_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy to i32 (...)*), i32 (...)* bitcast (float (%"struct.btCollisionWorld::ClosestConvexResultCallback"*, %"struct.btCollisionWorld::LocalConvexResult"*, i8)* @_ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN16btCollisionWorld27ClosestConvexResultCallbackE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([50 x i8]* @_ZTSN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN16btCollisionWorld20ConvexResultCallbackE to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTSN16btCollisionWorld27ClosestConvexResultCallbackE = weak_odr constant [50 x i8] c"N16btCollisionWorld27ClosestConvexResultCallbackE\00", align 32 ; [#uses=1]
+@_ZTV17btActionInterface = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN17btActionInterfaceD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN17btActionInterfaceD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI17btActionInterface = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([20 x i8]* @_ZTS17btActionInterface, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS17btActionInterface = weak_odr constant [20 x i8] c"17btActionInterface\00" ; [#uses=1]
+@_ZTV30btCharacterControllerInterface = weak_odr constant [15 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btCharacterControllerInterface to i32 (...)*), i32 (...)* bitcast (void (%struct..0btMultiSapOverlapFilterCallback*)* @_ZN30btCharacterControllerInterfaceD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0btMultiSapOverlapFilterCallback*)* @_ZN30btCharacterControllerInterfaceD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI30btCharacterControllerInterface = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([33 x i8]* @_ZTS30btCharacterControllerInterface, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI17btActionInterface to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS30btCharacterControllerInterface = weak_odr constant [33 x i8] c"30btCharacterControllerInterface\00", align 32 ; [#uses=1]
+@_ZTV43btKinematicClosestNotMeConvexResultCallback = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI43btKinematicClosestNotMeConvexResultCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btKinematicClosestNotMeConvexResultCallback*)* @_ZN43btKinematicClosestNotMeConvexResultCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btKinematicClosestNotMeConvexResultCallback*)* @_ZN43btKinematicClosestNotMeConvexResultCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%"struct.btCollisionWorld::ConvexResultCallback"*, %struct.btBroadphaseProxy*)* @_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy to i32 (...)*), i32 (...)* bitcast (float (%struct.btKinematicClosestNotMeConvexResultCallback*, %"struct.btCollisionWorld::LocalConvexResult"*, i8)* @_ZN43btKinematicClosestNotMeConvexResultCallback15addSingleResultERN16btCollisionWorld17LocalConvexResultEb to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI43btKinematicClosestNotMeConvexResultCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([46 x i8]* @_ZTS43btKinematicClosestNotMeConvexResultCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN16btCollisionWorld27ClosestConvexResultCallbackE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS43btKinematicClosestNotMeConvexResultCallback = weak_odr constant [46 x i8] c"43btKinematicClosestNotMeConvexResultCallback\00", align 32 ; [#uses=1]
+@_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection = internal global i64 0, align 8 ; [#uses=15]
+@_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection = internal global [3 x %struct.btQuadWord] zeroinitializer, align 32 ; [#uses=32]
+@_ZTV30btKinematicCharacterController = weak_odr constant [15 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btKinematicCharacterController to i32 (...)*), i32 (...)* bitcast (void (%struct.btKinematicCharacterController*)* @_ZN30btKinematicCharacterControllerD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btKinematicCharacterController*)* @_ZN30btKinematicCharacterControllerD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btKinematicCharacterController*, %struct.btCollisionWorld*, float)* @_ZN30btKinematicCharacterController12updateActionEP16btCollisionWorldf to i32 (...)*), i32 (...)* bitcast (void (%struct.btKinematicCharacterController*, %struct.btActionInterface*)* @_ZN30btKinematicCharacterController9debugDrawEP12btIDebugDraw to i32 (...)*), i32 (...)* bitcast (void (%struct.btKinematicCharacterController*, %struct.btQuadWord*)* @_ZN30btKinematicCharacterController16setWalkDirectionERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btKinematicCharacterController*, %struct.btQuadWord*, float)* @_ZN30btKinematicCharacterController26setVelocityForTimeIntervalERK9btVector3f to i32 (...)*), i32 (...)* bitcast (void (%struct.btKinematicCharacterController*)* @_ZN30btKinematicCharacterController5resetEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btKinematicCharacterController*, %struct.btQuadWord*)* @_ZN30btKinematicCharacterController4warpERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btKinematicCharacterController*, %struct.btCollisionWorld*)* @_ZN30btKinematicCharacterController7preStepEP16btCollisionWorld to i32 (...)*), i32 (...)* bitcast (void (%struct.btKinematicCharacterController*, %struct.btCollisionWorld*, float)* @_ZN30btKinematicCharacterController10playerStepEP16btCollisionWorldf to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btKinematicCharacterController*)* @_ZNK30btKinematicCharacterController7canJumpEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btKinematicCharacterController*)* @_ZN30btKinematicCharacterController4jumpEv to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btKinematicCharacterController*)* @_ZNK30btKinematicCharacterController8onGroundEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI30btKinematicCharacterController = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([33 x i8]* @_ZTS30btKinematicCharacterController, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI30btCharacterControllerInterface to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS30btKinematicCharacterController = weak_odr constant [33 x i8] c"30btKinematicCharacterController\00", align 32 ; [#uses=1]
+@_ZL6vTwist = internal global %struct.btQuadWord { [4 x float] [float 1.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00] } ; [#uses=3]
+@.str13 = private constant [26 x i8] c"btConeTwistConstraintData\00", align 1 ; [#uses=1]
+@_ZTV21btConeTwistConstraint = weak_odr constant [13 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btConeTwistConstraint to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeTwistConstraint*)* @_ZN21btConeTwistConstraintD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeTwistConstraint*)* @_ZN21btConeTwistConstraintD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeTwistConstraint*)* @_ZN21btConeTwistConstraint13buildJacobianEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btConstraintArray*, i32, i32, float)* @_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeTwistConstraint*, %struct.CONTACT_KEY_TOKEN*)* @_ZN21btConeTwistConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeTwistConstraint*, %"struct.btTypedConstraint::btConstraintInfo2"*)* @_ZN21btConeTwistConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeTwistConstraint*, %struct.btRigidBody*, %struct.btRigidBody*, float)* @_ZN21btConeTwistConstraint23solveConstraintObsoleteER11btRigidBodyS1_f to i32 (...)*), i32 (...)* bitcast (void (%struct.btConeTwistConstraint*, i32, float, i32)* @_ZN21btConeTwistConstraint8setParamEifi to i32 (...)*), i32 (...)* bitcast (float (%struct.btConeTwistConstraint*, i32, i32)* @_ZNK21btConeTwistConstraint8getParamEii to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btConeTwistConstraint*)* @_ZNK21btConeTwistConstraint28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btConeTwistConstraint*, i8*, %struct.btActionInterface*)* @_ZNK21btConeTwistConstraint9serializeEPvP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI21btConeTwistConstraint = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([24 x i8]* @_ZTS21btConeTwistConstraint, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__vmi_class_type_info_pseudo1* @_ZTI17btTypedConstraint to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS21btConeTwistConstraint = weak_odr constant [24 x i8] c"21btConeTwistConstraint\00" ; [#uses=1]
+@_ZTV19btContactConstraint = weak_odr constant [13 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI19btContactConstraint to i32 (...)*), i32 (...)* bitcast (void (%struct.btContactConstraint*)* @_ZN19btContactConstraintD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btContactConstraint*)* @_ZN19btContactConstraintD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btContactConstraint*)* @_ZN19btContactConstraint13buildJacobianEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btConstraintArray*, i32, i32, float)* @_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif to i32 (...)*), i32 (...)* bitcast (void (%struct.btContactConstraint*, %struct.CONTACT_KEY_TOKEN*)* @_ZN19btContactConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E to i32 (...)*), i32 (...)* bitcast (void (%struct.btContactConstraint*, %"struct.btTypedConstraint::btConstraintInfo2"*)* @_ZN19btContactConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btRigidBody*, %struct.btRigidBody*, float)* @_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btTypedConstraint*)* @_ZNK17btTypedConstraint28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btTypedConstraint*, i8*, %struct.btActionInterface*)* @_ZNK17btTypedConstraint9serializeEPvP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI19btContactConstraint = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([22 x i8]* @_ZTS19btContactConstraint, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__vmi_class_type_info_pseudo1* @_ZTI17btTypedConstraint to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS19btContactConstraint = weak_odr constant [22 x i8] c"19btContactConstraint\00" ; [#uses=1]
+@.str114 = private constant [28 x i8] c"btGeneric6DofConstraintData\00", align 1 ; [#uses=1]
+@_ZTV23btGeneric6DofConstraint = weak_odr constant [14 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btGeneric6DofConstraint to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*)* @_ZN23btGeneric6DofConstraintD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*)* @_ZN23btGeneric6DofConstraintD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*)* @_ZN23btGeneric6DofConstraint13buildJacobianEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btConstraintArray*, i32, i32, float)* @_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*, %struct.CONTACT_KEY_TOKEN*)* @_ZN23btGeneric6DofConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*, %"struct.btTypedConstraint::btConstraintInfo2"*)* @_ZN23btGeneric6DofConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btRigidBody*, %struct.btRigidBody*, float)* @_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*, i32, float, i32)* @_ZN23btGeneric6DofConstraint8setParamEifi to i32 (...)*), i32 (...)* bitcast (float (%struct.btGeneric6DofConstraint*, i32, i32)* @_ZNK23btGeneric6DofConstraint8getParamEii to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGeneric6DofConstraint*)* @_ZNK23btGeneric6DofConstraint28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btGeneric6DofConstraint*, i8*, %struct.btActionInterface*)* @_ZNK23btGeneric6DofConstraint9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*)* @_ZN23btGeneric6DofConstraint13calcAnchorPosEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI23btGeneric6DofConstraint = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btGeneric6DofConstraint, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__vmi_class_type_info_pseudo1* @_ZTI17btTypedConstraint to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS23btGeneric6DofConstraint = weak_odr constant [26 x i8] c"23btGeneric6DofConstraint\00" ; [#uses=1]
+@.str215 = private constant [28 x i8] c"btGeneric6DofConstraintData\00", align 1 ; [#uses=0]
+@_ZTV29btGeneric6DofSpringConstraint = weak_odr constant [14 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI29btGeneric6DofSpringConstraint to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofSpringConstraint*)* @_ZN29btGeneric6DofSpringConstraintD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofSpringConstraint*)* @_ZN29btGeneric6DofSpringConstraintD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*)* @_ZN23btGeneric6DofConstraint13buildJacobianEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btConstraintArray*, i32, i32, float)* @_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*, %struct.CONTACT_KEY_TOKEN*)* @_ZN23btGeneric6DofConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofSpringConstraint*, %"struct.btTypedConstraint::btConstraintInfo2"*)* @_ZN29btGeneric6DofSpringConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btRigidBody*, %struct.btRigidBody*, float)* @_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*, i32, float, i32)* @_ZN23btGeneric6DofConstraint8setParamEifi to i32 (...)*), i32 (...)* bitcast (float (%struct.btGeneric6DofConstraint*, i32, i32)* @_ZNK23btGeneric6DofConstraint8getParamEii to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGeneric6DofConstraint*)* @_ZNK23btGeneric6DofConstraint28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btGeneric6DofConstraint*, i8*, %struct.btActionInterface*)* @_ZNK23btGeneric6DofConstraint9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*)* @_ZN23btGeneric6DofConstraint13calcAnchorPosEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI29btGeneric6DofSpringConstraint = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([32 x i8]* @_ZTS29btGeneric6DofSpringConstraint, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btGeneric6DofConstraint to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS29btGeneric6DofSpringConstraint = weak_odr constant [32 x i8] c"29btGeneric6DofSpringConstraint\00", align 32 ; [#uses=1]
+@.str316 = private constant [28 x i8] c"btGeneric6DofConstraintData\00", align 1 ; [#uses=0]
+@_ZTV18btHinge2Constraint = weak_odr constant [14 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI18btHinge2Constraint to i32 (...)*), i32 (...)* bitcast (void (%struct.btHinge2Constraint*)* @_ZN18btHinge2ConstraintD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btHinge2Constraint*)* @_ZN18btHinge2ConstraintD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*)* @_ZN23btGeneric6DofConstraint13buildJacobianEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btConstraintArray*, i32, i32, float)* @_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*, %struct.CONTACT_KEY_TOKEN*)* @_ZN23btGeneric6DofConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofSpringConstraint*, %"struct.btTypedConstraint::btConstraintInfo2"*)* @_ZN29btGeneric6DofSpringConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btRigidBody*, %struct.btRigidBody*, float)* @_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*, i32, float, i32)* @_ZN23btGeneric6DofConstraint8setParamEifi to i32 (...)*), i32 (...)* bitcast (float (%struct.btGeneric6DofConstraint*, i32, i32)* @_ZNK23btGeneric6DofConstraint8getParamEii to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGeneric6DofConstraint*)* @_ZNK23btGeneric6DofConstraint28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btGeneric6DofConstraint*, i8*, %struct.btActionInterface*)* @_ZNK23btGeneric6DofConstraint9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*)* @_ZN23btGeneric6DofConstraint13calcAnchorPosEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI18btHinge2Constraint = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([21 x i8]* @_ZTS18btHinge2Constraint, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI29btGeneric6DofSpringConstraint to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS18btHinge2Constraint = weak_odr constant [21 x i8] c"18btHinge2Constraint\00" ; [#uses=1]
+@_ZL6vHinge = internal global %struct.btQuadWord { [4 x float] [float 0.000000e+00, float 0.000000e+00, float 1.000000e+00, float 0.000000e+00] } ; [#uses=3]
+@.str417 = private constant [27 x i8] c"btHingeConstraintFloatData\00", align 1 ; [#uses=1]
+@_ZTV17btHingeConstraint = weak_odr constant [13 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI17btHingeConstraint to i32 (...)*), i32 (...)* bitcast (void (%struct.btHingeConstraint*)* @_ZN17btHingeConstraintD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btHingeConstraint*)* @_ZN17btHingeConstraintD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btHingeConstraint*)* @_ZN17btHingeConstraint13buildJacobianEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btConstraintArray*, i32, i32, float)* @_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif to i32 (...)*), i32 (...)* bitcast (void (%struct.btHingeConstraint*, %struct.CONTACT_KEY_TOKEN*)* @_ZN17btHingeConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E to i32 (...)*), i32 (...)* bitcast (void (%struct.btHingeConstraint*, %"struct.btTypedConstraint::btConstraintInfo2"*)* @_ZN17btHingeConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btRigidBody*, %struct.btRigidBody*, float)* @_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f to i32 (...)*), i32 (...)* bitcast (void (%struct.btHingeConstraint*, i32, float, i32)* @_ZN17btHingeConstraint8setParamEifi to i32 (...)*), i32 (...)* bitcast (float (%struct.btHingeConstraint*, i32, i32)* @_ZNK17btHingeConstraint8getParamEii to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btHingeConstraint*)* @_ZNK17btHingeConstraint28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btHingeConstraint*, i8*, %struct.btActionInterface*)* @_ZNK17btHingeConstraint9serializeEPvP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI17btHingeConstraint = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([20 x i8]* @_ZTS17btHingeConstraint, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__vmi_class_type_info_pseudo1* @_ZTI17btTypedConstraint to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS17btHingeConstraint = weak_odr constant [20 x i8] c"17btHingeConstraint\00" ; [#uses=1]
+@.str518 = private constant [33 x i8] c"btPoint2PointConstraintFloatData\00", align 4 ; [#uses=1]
+@_ZTV23btPoint2PointConstraint = weak_odr constant [13 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btPoint2PointConstraint to i32 (...)*), i32 (...)* bitcast (void (%struct.btPoint2PointConstraint*)* @_ZN23btPoint2PointConstraintD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btPoint2PointConstraint*)* @_ZN23btPoint2PointConstraintD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btPoint2PointConstraint*)* @_ZN23btPoint2PointConstraint13buildJacobianEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btConstraintArray*, i32, i32, float)* @_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif to i32 (...)*), i32 (...)* bitcast (void (%struct.btPoint2PointConstraint*, %struct.CONTACT_KEY_TOKEN*)* @_ZN23btPoint2PointConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E to i32 (...)*), i32 (...)* bitcast (void (%struct.btPoint2PointConstraint*, %"struct.btTypedConstraint::btConstraintInfo2"*)* @_ZN23btPoint2PointConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btRigidBody*, %struct.btRigidBody*, float)* @_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f to i32 (...)*), i32 (...)* bitcast (void (%struct.btPoint2PointConstraint*, i32, float, i32)* @_ZN23btPoint2PointConstraint8setParamEifi to i32 (...)*), i32 (...)* bitcast (float (%struct.btPoint2PointConstraint*, i32, i32)* @_ZNK23btPoint2PointConstraint8getParamEii to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btPoint2PointConstraint*)* @_ZNK23btPoint2PointConstraint28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btPoint2PointConstraint*, i8*, %struct.btActionInterface*)* @_ZNK23btPoint2PointConstraint9serializeEPvP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI23btPoint2PointConstraint = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btPoint2PointConstraint, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__vmi_class_type_info_pseudo1* @_ZTI17btTypedConstraint to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS23btPoint2PointConstraint = weak_odr constant [26 x i8] c"23btPoint2PointConstraint\00" ; [#uses=1]
+@gNumSplitImpulseRecoveries = global i32 0 ; [#uses=2]
+@_ZTV18btConstraintSolver = weak_odr constant [8 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btConstraintSolver to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN18btConstraintSolverD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN18btConstraintSolverD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, i32, i32)* @_ZN18btConstraintSolver12prepareSolveEii to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*)* @_ZN18btConstraintSolver9allSolvedERK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI18btConstraintSolver = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([21 x i8]* @_ZTS18btConstraintSolver, i32 0, i32 0) } } ; [#uses=2]
+@_ZTS18btConstraintSolver = weak_odr constant [21 x i8] c"18btConstraintSolver\00" ; [#uses=1]
+@_ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed = internal global i64 0, align 8 ; [#uses=4]
+@_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed = internal global %struct.btRigidBody zeroinitializer, align 32 ; [#uses=13]
+@_ZTV35btSequentialImpulseConstraintSolver = weak_odr constant [12 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI35btSequentialImpulseConstraintSolver to i32 (...)*), i32 (...)* bitcast (void (%struct.btSequentialImpulseConstraintSolver*)* @_ZN35btSequentialImpulseConstraintSolverD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSequentialImpulseConstraintSolver*)* @_ZN35btSequentialImpulseConstraintSolverD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, i32, i32)* @_ZN18btConstraintSolver12prepareSolveEii to i32 (...)*), i32 (...)* bitcast (float (%struct.btSequentialImpulseConstraintSolver*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, %struct.btTypedConstraint**, i32, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*, %struct.btActionInterface*)* @_ZN35btSequentialImpulseConstraintSolver10solveGroupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAllocP12btDispatcher to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*)* @_ZN18btConstraintSolver9allSolvedERK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc to i32 (...)*), i32 (...)* bitcast (void (%struct.btSequentialImpulseConstraintSolver*)* @_ZN35btSequentialImpulseConstraintSolver5resetEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btSequentialImpulseConstraintSolver*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, %struct.btTypedConstraint**, i32, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*)* @_ZN35btSequentialImpulseConstraintSolver45solveGroupCacheFriendlySplitImpulseIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc to i32 (...)*), i32 (...)* bitcast (float (%struct.btSequentialImpulseConstraintSolver*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, %struct.btTypedConstraint**, i32, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*)* @_ZN35btSequentialImpulseConstraintSolver29solveGroupCacheFriendlyFinishEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc to i32 (...)*), i32 (...)* bitcast (float (%struct.btSequentialImpulseConstraintSolver*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, %struct.btTypedConstraint**, i32, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*)* @_ZN35btSequentialImpulseConstraintSolver28solveGroupCacheFriendlySetupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc to i32 (...)*), i32 (...)* bitcast (float (%struct.btSequentialImpulseConstraintSolver*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, %struct.btTypedConstraint**, i32, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*)* @_ZN35btSequentialImpulseConstraintSolver33solveGroupCacheFriendlyIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI35btSequentialImpulseConstraintSolver = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([38 x i8]* @_ZTS35btSequentialImpulseConstraintSolver, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btConstraintSolver to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS35btSequentialImpulseConstraintSolver = weak_odr constant [38 x i8] c"35btSequentialImpulseConstraintSolver\00", align 32 ; [#uses=1]
+@.str619 = private constant [11 x i8] c"solveGroup\00", align 1 ; [#uses=1]
+@.str17 = private constant [34 x i8] c"solveGroupCacheFriendlyIterations\00", align 4 ; [#uses=1]
+@.str28 = private constant [29 x i8] c"solveGroupCacheFriendlySetup\00", align 1 ; [#uses=1]
+@.str920 = private constant [23 x i8] c"btSliderConstraintData\00", align 1 ; [#uses=1]
+@_ZTV18btSliderConstraint = weak_odr constant [13 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI18btSliderConstraint to i32 (...)*), i32 (...)* bitcast (void (%struct.btSliderConstraint*)* @_ZN18btSliderConstraintD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSliderConstraint*)* @_ZN18btSliderConstraintD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*)* @_ZN17btTypedConstraint13buildJacobianEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btConstraintArray*, i32, i32, float)* @_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif to i32 (...)*), i32 (...)* bitcast (void (%struct.btSliderConstraint*, %struct.CONTACT_KEY_TOKEN*)* @_ZN18btSliderConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E to i32 (...)*), i32 (...)* bitcast (void (%struct.btSliderConstraint*, %"struct.btTypedConstraint::btConstraintInfo2"*)* @_ZN18btSliderConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btRigidBody*, %struct.btRigidBody*, float)* @_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f to i32 (...)*), i32 (...)* bitcast (void (%struct.btSliderConstraint*, i32, float, i32)* @_ZN18btSliderConstraint8setParamEifi to i32 (...)*), i32 (...)* bitcast (float (%struct.btSliderConstraint*, i32, i32)* @_ZNK18btSliderConstraint8getParamEii to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btSliderConstraint*)* @_ZNK18btSliderConstraint28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btSliderConstraint*, i8*, %struct.btActionInterface*)* @_ZNK18btSliderConstraint9serializeEPvP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI18btSliderConstraint = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([21 x i8]* @_ZTS18btSliderConstraint, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__vmi_class_type_info_pseudo1* @_ZTI17btTypedConstraint to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS18btSliderConstraint = weak_odr constant [21 x i8] c"18btSliderConstraint\00" ; [#uses=1]
+@.str1021 = private constant [22 x i8] c"btTypedConstraintData\00", align 1 ; [#uses=1]
+@_ZGVZN17btTypedConstraint12getFixedBodyEvE7s_fixed = internal global i64 0, align 8 ; [#uses=4]
+@_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed = internal global %struct.btRigidBody zeroinitializer, align 32 ; [#uses=11]
+@.str1822 = private constant [28 x i8] c"btGeneric6DofConstraintData\00", align 1 ; [#uses=0]
+@_ZTV21btUniversalConstraint = weak_odr constant [14 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btUniversalConstraint to i32 (...)*), i32 (...)* bitcast (void (%struct.btUniversalConstraint*)* @_ZN21btUniversalConstraintD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btUniversalConstraint*)* @_ZN21btUniversalConstraintD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*)* @_ZN23btGeneric6DofConstraint13buildJacobianEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btConstraintArray*, i32, i32, float)* @_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*, %struct.CONTACT_KEY_TOKEN*)* @_ZN23btGeneric6DofConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*, %"struct.btTypedConstraint::btConstraintInfo2"*)* @_ZN23btGeneric6DofConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E to i32 (...)*), i32 (...)* bitcast (void (%struct.btTypedConstraint*, %struct.btRigidBody*, %struct.btRigidBody*, float)* @_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*, i32, float, i32)* @_ZN23btGeneric6DofConstraint8setParamEifi to i32 (...)*), i32 (...)* bitcast (float (%struct.btGeneric6DofConstraint*, i32, i32)* @_ZNK23btGeneric6DofConstraint8getParamEii to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btGeneric6DofConstraint*)* @_ZNK23btGeneric6DofConstraint28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btGeneric6DofConstraint*, i8*, %struct.btActionInterface*)* @_ZNK23btGeneric6DofConstraint9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btGeneric6DofConstraint*)* @_ZN23btGeneric6DofConstraint13calcAnchorPosEv to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI21btUniversalConstraint = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([24 x i8]* @_ZTS21btUniversalConstraint, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btGeneric6DofConstraint to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS21btUniversalConstraint = weak_odr constant [24 x i8] c"21btUniversalConstraint\00" ; [#uses=1]
+@.str19 = private constant [10 x i8] c"toi = %f\0A\00", align 1 ; [#uses=1]
+@_ZTV25btContinuousDynamicsWorld = weak_odr constant [46 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI25btContinuousDynamicsWorld to i32 (...)*), i32 (...)* bitcast (void (%struct.btContinuousDynamicsWorld*)* @_ZN25btContinuousDynamicsWorldD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btContinuousDynamicsWorld*)* @_ZN25btContinuousDynamicsWorldD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld11updateAabbsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btActionInterface*)* @_ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw to i32 (...)*), i32 (...)* bitcast (%struct.btActionInterface* (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld14getDebugDrawerEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorld14debugDrawWorldEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btTransform*, %struct.btCollisionShape*, %struct.btQuadWord*)* @_ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btQuadWord*, %struct.btQuadWord*, %"struct.btCollisionWorld::RayResultCallback"*)* @_ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btCollisionObject*, i16, i16)* @_ZN23btDiscreteDynamicsWorld18addCollisionObjectEP17btCollisionObjectss to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btCollisionObject*)* @_ZN23btDiscreteDynamicsWorld21removeCollisionObjectEP17btCollisionObject to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld33performDiscreteCollisionDetectionEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld9serializeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btDiscreteDynamicsWorld*, float, i32, float)* @_ZN23btDiscreteDynamicsWorld14stepSimulationEfif to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btTypedConstraint*, i8)* @_ZN23btDiscreteDynamicsWorld13addConstraintEP17btTypedConstraintb to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btTypedConstraint*)* @_ZN23btDiscreteDynamicsWorld16removeConstraintEP17btTypedConstraint to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld9addActionEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld12removeActionEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btQuadWord*)* @_ZN23btDiscreteDynamicsWorld10setGravityERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btDiscreteDynamicsWorld*)* @_ZNK23btDiscreteDynamicsWorld10getGravityEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorld23synchronizeMotionStatesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btRigidBody*)* @_ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBody to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btRigidBody*)* @_ZN23btDiscreteDynamicsWorld15removeRigidBodyEP11btRigidBody to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld19setConstraintSolverEP18btConstraintSolver to i32 (...)*), i32 (...)* bitcast (%struct.btActionInterface* (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorld19getConstraintSolverEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btDiscreteDynamicsWorld*)* @_ZNK23btDiscreteDynamicsWorld17getNumConstraintsEv to i32 (...)*), i32 (...)* bitcast (%struct.btTypedConstraint* (%struct.btDiscreteDynamicsWorld*, i32)* @_ZN23btDiscreteDynamicsWorld13getConstraintEi to i32 (...)*), i32 (...)* bitcast (%struct.btTypedConstraint* (%struct.btDiscreteDynamicsWorld*, i32)* @_ZNK23btDiscreteDynamicsWorld13getConstraintEi to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btContinuousDynamicsWorld*)* @_ZNK25btContinuousDynamicsWorld12getWorldTypeEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorld11clearForcesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld10addVehicleEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld13removeVehicleEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld12addCharacterEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld15removeCharacterEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, float)* @_ZN23btDiscreteDynamicsWorld25predictUnconstraintMotionEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, float)* @_ZN23btDiscreteDynamicsWorld19integrateTransformsEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorld26calculateSimulationIslandsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btContactSolverInfo*)* @_ZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfo to i32 (...)*), i32 (...)* bitcast (void (%struct.btContinuousDynamicsWorld*, float)* @_ZN25btContinuousDynamicsWorld28internalSingleStepSimulationEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, float)* @_ZN23btDiscreteDynamicsWorld18saveKinematicStateEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btRigidBody*, i16, i16)* @_ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBodyss to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorld12applyGravityEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, i32)* @_ZN23btDiscreteDynamicsWorld11setNumTasksEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, float)* @_ZN23btDiscreteDynamicsWorld14updateVehiclesEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btContinuousDynamicsWorld*, float)* @_ZN25btContinuousDynamicsWorld22calculateTimeOfImpactsEf to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI25btContinuousDynamicsWorld = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([28 x i8]* @_ZTS25btContinuousDynamicsWorld, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btDiscreteDynamicsWorld to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS25btContinuousDynamicsWorld = weak_odr constant [28 x i8] c"25btContinuousDynamicsWorld\00" ; [#uses=1]
+@_ZTVN25btSimulationIslandManager14IslandCallbackE = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__class_type_info_pseudo* @_ZTIN25btSimulationIslandManager14IslandCallbackE to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN25btSimulationIslandManager14IslandCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btActionInterface*)* @_ZN25btSimulationIslandManager14IslandCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN25btSimulationIslandManager14IslandCallbackE = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([46 x i8]* @_ZTSN25btSimulationIslandManager14IslandCallbackE, i32 0, i32 0) } } ; [#uses=2]
+@_ZTSN25btSimulationIslandManager14IslandCallbackE = weak_odr constant [46 x i8] c"N25btSimulationIslandManager14IslandCallbackE\00", align 32 ; [#uses=1]
+@_ZTV34btClosestNotMeConvexResultCallback = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI34btClosestNotMeConvexResultCallback to i32 (...)*), i32 (...)* bitcast (void (%struct.btClosestNotMeConvexResultCallback*)* @_ZN34btClosestNotMeConvexResultCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btClosestNotMeConvexResultCallback*)* @_ZN34btClosestNotMeConvexResultCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btClosestNotMeConvexResultCallback*, %struct.btBroadphaseProxy*)* @_ZNK34btClosestNotMeConvexResultCallback14needsCollisionEP17btBroadphaseProxy to i32 (...)*), i32 (...)* bitcast (float (%struct.btClosestNotMeConvexResultCallback*, %"struct.btCollisionWorld::LocalConvexResult"*, i8)* @_ZN34btClosestNotMeConvexResultCallback15addSingleResultERN16btCollisionWorld17LocalConvexResultEb to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI34btClosestNotMeConvexResultCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([37 x i8]* @_ZTS34btClosestNotMeConvexResultCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN16btCollisionWorld27ClosestConvexResultCallbackE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS34btClosestNotMeConvexResultCallback = weak_odr constant [37 x i8] c"34btClosestNotMeConvexResultCallback\00", align 32 ; [#uses=1]
+@_ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback to i32 (...)*), i32 (...)* bitcast (void (%struct..0InplaceSolverIslandCallback*)* @_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0InplaceSolverIslandCallback*)* @_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct..0InplaceSolverIslandCallback*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, i32)* @_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback13ProcessIslandEPP17btCollisionObjectiPP20btPersistentManifoldii to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([99 x i8]* @_ZTSZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN25btSimulationIslandManager14IslandCallbackE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback = weak_odr constant [99 x i8] c"ZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback\00", align 32 ; [#uses=1]
+@.str20 = private constant [26 x i8] c"predictUnconstraintMotion\00", align 1 ; [#uses=1]
+@.str121 = private constant [27 x i8] c"calculateSimulationIslands\00", align 1 ; [#uses=1]
+@.str222 = private constant [14 x i8] c"updateActions\00", align 1 ; [#uses=1]
+@.str323 = private constant [20 x i8] c"integrateTransforms\00", align 1 ; [#uses=1]
+@.str424 = private constant [20 x i8] c"CCD motion clamping\00", align 1 ; [#uses=1]
+@gNumClampedCcdMotions = global i32 0 ; [#uses=2]
+@.str525 = private constant [17 x i8] c"solveConstraints\00", align 1 ; [#uses=1]
+@.str626 = private constant [22 x i8] c"updateActivationState\00", align 1 ; [#uses=1]
+@.str723 = private constant [29 x i8] c"internalSingleStepSimulation\00", align 1 ; [#uses=1]
+@.str824 = private constant [15 x i8] c"stepSimulation\00", align 1 ; [#uses=1]
+@.str927 = private constant [24 x i8] c"synchronizeMotionStates\00", align 1 ; [#uses=1]
+@.str1028 = private constant [15 x i8] c"debugDrawWorld\00", align 1 ; [#uses=1]
+@_ZTV15btDynamicsWorld = weak_odr constant [35 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btDynamicsWorld to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*)* @_ZN15btDynamicsWorldD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*)* @_ZN15btDynamicsWorldD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld11updateAabbsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btActionInterface*)* @_ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw to i32 (...)*), i32 (...)* bitcast (%struct.btActionInterface* (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld14getDebugDrawerEv to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btTransform*, %struct.btCollisionShape*, %struct.btQuadWord*)* @_ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btQuadWord*, %struct.btQuadWord*, %"struct.btCollisionWorld::RayResultCallback"*)* @_ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btCollisionObject*, i16, i16)* @_ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btCollisionObject*)* @_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld33performDiscreteCollisionDetectionEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btActionInterface*)* @_ZN16btCollisionWorld9serializeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*, %struct.btTypedConstraint*, i8)* @_ZN15btDynamicsWorld13addConstraintEP17btTypedConstraintb to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*, %struct.btTypedConstraint*)* @_ZN15btDynamicsWorld16removeConstraintEP17btTypedConstraint to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btDynamicsWorld*)* @_ZNK15btDynamicsWorld17getNumConstraintsEv to i32 (...)*), i32 (...)* bitcast (%struct.btTypedConstraint* (%struct.btDynamicsWorld*, i32)* @_ZN15btDynamicsWorld13getConstraintEi to i32 (...)*), i32 (...)* bitcast (%struct.btTypedConstraint* (%struct.btDynamicsWorld*, i32)* @_ZNK15btDynamicsWorld13getConstraintEi to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*, %struct.btActionInterface*)* @_ZN15btDynamicsWorld10addVehicleEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*, %struct.btActionInterface*)* @_ZN15btDynamicsWorld13removeVehicleEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*, %struct.btActionInterface*)* @_ZN15btDynamicsWorld12addCharacterEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*, %struct.btActionInterface*)* @_ZN15btDynamicsWorld15removeCharacterEP17btActionInterface to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI15btDynamicsWorld = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([18 x i8]* @_ZTS15btDynamicsWorld, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI16btCollisionWorld to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS15btDynamicsWorld = weak_odr constant [18 x i8] c"15btDynamicsWorld\00" ; [#uses=1]
+@_ZTV23btDiscreteDynamicsWorld = weak_odr constant [45 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI23btDiscreteDynamicsWorld to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorldD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorldD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld11updateAabbsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btActionInterface*)* @_ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw to i32 (...)*), i32 (...)* bitcast (%struct.btActionInterface* (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld14getDebugDrawerEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorld14debugDrawWorldEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btTransform*, %struct.btCollisionShape*, %struct.btQuadWord*)* @_ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btQuadWord*, %struct.btQuadWord*, %"struct.btCollisionWorld::RayResultCallback"*)* @_ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btCollisionObject*, i16, i16)* @_ZN23btDiscreteDynamicsWorld18addCollisionObjectEP17btCollisionObjectss to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btCollisionObject*)* @_ZN23btDiscreteDynamicsWorld21removeCollisionObjectEP17btCollisionObject to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld33performDiscreteCollisionDetectionEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld9serializeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btDiscreteDynamicsWorld*, float, i32, float)* @_ZN23btDiscreteDynamicsWorld14stepSimulationEfif to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btTypedConstraint*, i8)* @_ZN23btDiscreteDynamicsWorld13addConstraintEP17btTypedConstraintb to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btTypedConstraint*)* @_ZN23btDiscreteDynamicsWorld16removeConstraintEP17btTypedConstraint to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld9addActionEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld12removeActionEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btQuadWord*)* @_ZN23btDiscreteDynamicsWorld10setGravityERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btDiscreteDynamicsWorld*)* @_ZNK23btDiscreteDynamicsWorld10getGravityEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorld23synchronizeMotionStatesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btRigidBody*)* @_ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBody to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btRigidBody*)* @_ZN23btDiscreteDynamicsWorld15removeRigidBodyEP11btRigidBody to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld19setConstraintSolverEP18btConstraintSolver to i32 (...)*), i32 (...)* bitcast (%struct.btActionInterface* (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorld19getConstraintSolverEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btDiscreteDynamicsWorld*)* @_ZNK23btDiscreteDynamicsWorld17getNumConstraintsEv to i32 (...)*), i32 (...)* bitcast (%struct.btTypedConstraint* (%struct.btDiscreteDynamicsWorld*, i32)* @_ZN23btDiscreteDynamicsWorld13getConstraintEi to i32 (...)*), i32 (...)* bitcast (%struct.btTypedConstraint* (%struct.btDiscreteDynamicsWorld*, i32)* @_ZNK23btDiscreteDynamicsWorld13getConstraintEi to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btDiscreteDynamicsWorld*)* @_ZNK23btDiscreteDynamicsWorld12getWorldTypeEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorld11clearForcesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld10addVehicleEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld13removeVehicleEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld12addCharacterEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* @_ZN23btDiscreteDynamicsWorld15removeCharacterEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, float)* @_ZN23btDiscreteDynamicsWorld25predictUnconstraintMotionEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, float)* @_ZN23btDiscreteDynamicsWorld19integrateTransformsEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorld26calculateSimulationIslandsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btContactSolverInfo*)* @_ZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfo to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, float)* @_ZN23btDiscreteDynamicsWorld28internalSingleStepSimulationEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, float)* @_ZN23btDiscreteDynamicsWorld18saveKinematicStateEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, %struct.btRigidBody*, i16, i16)* @_ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBodyss to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*)* @_ZN23btDiscreteDynamicsWorld12applyGravityEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, i32)* @_ZN23btDiscreteDynamicsWorld11setNumTasksEi to i32 (...)*), i32 (...)* bitcast (void (%struct.btDiscreteDynamicsWorld*, float)* @_ZN23btDiscreteDynamicsWorld14updateVehiclesEf to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI23btDiscreteDynamicsWorld = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([26 x i8]* @_ZTS23btDiscreteDynamicsWorld, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btDynamicsWorld to %"struct.std::type_info"*) } ; [#uses=2]
+@_ZTS23btDiscreteDynamicsWorld = weak_odr constant [26 x i8] c"23btDiscreteDynamicsWorld\00" ; [#uses=1]
+@gDeactivationTime = global float 2.000000e+00 ; [#uses=1]
+@_ZL8uniqueId = internal global i32 0 ; [#uses=2]
+@_ZTV11btRigidBody = weak_odr constant [9 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI11btRigidBody to i32 (...)*), i32 (...)* bitcast (i8 (%struct.btRigidBody*, %struct.btCollisionObject*)* @_ZN11btRigidBody24checkCollideWithOverrideEP17btCollisionObject to i32 (...)*), i32 (...)* bitcast (void (%struct.btRigidBody*)* @_ZN11btRigidBodyD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btRigidBody*)* @_ZN11btRigidBodyD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionObject*, %struct.btCollisionShape*)* @_ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btRigidBody*)* @_ZNK11btRigidBody28calculateSerializeBufferSizeEv to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btRigidBody*, i8*, %struct.btActionInterface*)* @_ZNK11btRigidBody9serializeEPvP12btSerializer to i32 (...)*), i32 (...)* bitcast (void (%struct.btRigidBody*, %struct.btActionInterface*)* @_ZNK11btRigidBody21serializeSingleObjectEP12btSerializer to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI11btRigidBody = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([14 x i8]* @_ZTS11btRigidBody, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI17btCollisionObject to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS11btRigidBody = weak_odr constant [14 x i8] c"11btRigidBody\00" ; [#uses=1]
+@.str68 = private constant [21 x i8] c"btRigidBodyFloatData\00", align 1 ; [#uses=1]
+@gDisableDeactivation = global i8 0 ; [#uses=2]
+@_ZTV21btSimpleDynamicsWorld = weak_odr constant [35 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI21btSimpleDynamicsWorld to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleDynamicsWorld*)* @_ZN21btSimpleDynamicsWorldD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleDynamicsWorld*)* @_ZN21btSimpleDynamicsWorldD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleDynamicsWorld*)* @_ZN21btSimpleDynamicsWorld11updateAabbsEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btActionInterface*)* @_ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw to i32 (...)*), i32 (...)* bitcast (%struct.btActionInterface* (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld14getDebugDrawerEv to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btTransform*, %struct.btCollisionShape*, %struct.btQuadWord*)* @_ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btQuadWord*, %struct.btQuadWord*, %"struct.btCollisionWorld::RayResultCallback"*)* @_ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btCollisionObject*, i16, i16)* @_ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleDynamicsWorld*, %struct.btCollisionObject*)* @_ZN21btSimpleDynamicsWorld21removeCollisionObjectEP17btCollisionObject to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*)* @_ZN16btCollisionWorld33performDiscreteCollisionDetectionEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btCollisionWorld*, %struct.btActionInterface*)* @_ZN16btCollisionWorld9serializeEP12btSerializer to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btSimpleDynamicsWorld*, float, i32, float)* @_ZN21btSimpleDynamicsWorld14stepSimulationEfif to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*, %struct.btTypedConstraint*, i8)* @_ZN15btDynamicsWorld13addConstraintEP17btTypedConstraintb to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*, %struct.btTypedConstraint*)* @_ZN15btDynamicsWorld16removeConstraintEP17btTypedConstraint to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void ()* @__cxa_pure_virtual to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleDynamicsWorld*, %struct.btQuadWord*)* @_ZN21btSimpleDynamicsWorld10setGravityERK9btVector3 to i32 (...)*), i32 (...)* bitcast (void (%struct.btQuadWord*, %struct.btSimpleDynamicsWorld*)* @_ZNK21btSimpleDynamicsWorld10getGravityEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleDynamicsWorld*)* @_ZN21btSimpleDynamicsWorld23synchronizeMotionStatesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleDynamicsWorld*, %struct.btRigidBody*)* @_ZN21btSimpleDynamicsWorld12addRigidBodyEP11btRigidBody to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleDynamicsWorld*, %struct.btRigidBody*)* @_ZN21btSimpleDynamicsWorld15removeRigidBodyEP11btRigidBody to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleDynamicsWorld*, %struct.btActionInterface*)* @_ZN21btSimpleDynamicsWorld19setConstraintSolverEP18btConstraintSolver to i32 (...)*), i32 (...)* bitcast (%struct.btActionInterface* (%struct.btSimpleDynamicsWorld*)* @_ZN21btSimpleDynamicsWorld19getConstraintSolverEv to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btDynamicsWorld*)* @_ZNK15btDynamicsWorld17getNumConstraintsEv to i32 (...)*), i32 (...)* bitcast (%struct.btTypedConstraint* (%struct.btDynamicsWorld*, i32)* @_ZN15btDynamicsWorld13getConstraintEi to i32 (...)*), i32 (...)* bitcast (%struct.btTypedConstraint* (%struct.btDynamicsWorld*, i32)* @_ZNK15btDynamicsWorld13getConstraintEi to i32 (...)*), i32 (...)* bitcast (i32 (%struct.btSimpleDynamicsWorld*)* @_ZNK21btSimpleDynamicsWorld12getWorldTypeEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btSimpleDynamicsWorld*)* @_ZN21btSimpleDynamicsWorld11clearForcesEv to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*, %struct.btActionInterface*)* @_ZN15btDynamicsWorld10addVehicleEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*, %struct.btActionInterface*)* @_ZN15btDynamicsWorld13removeVehicleEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*, %struct.btActionInterface*)* @_ZN15btDynamicsWorld12addCharacterEP17btActionInterface to i32 (...)*), i32 (...)* bitcast (void (%struct.btDynamicsWorld*, %struct.btActionInterface*)* @_ZN15btDynamicsWorld15removeCharacterEP17btActionInterface to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI21btSimpleDynamicsWorld = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([24 x i8]* @_ZTS21btSimpleDynamicsWorld, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI15btDynamicsWorld to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS21btSimpleDynamicsWorld = weak_odr constant [24 x i8] c"21btSimpleDynamicsWorld\00" ; [#uses=1]
+@.str8225 = private constant [9 x i8] c"Triangle\00", align 1 ; [#uses=0]
+@.str183 = private constant [4 x i8] c"int\00", align 1 ; [#uses=0]
+@.str284 = private constant [19 x i8] c"btTriangleInfoData\00", align 1 ; [#uses=0]
+@.str385 = private constant [22 x i8] c"btTriangleInfoMapData\00", align 1 ; [#uses=0]
+@_ZZ15plNearestPointsE7Solver1 = internal global %struct..0btMultiSapOverlapFilterCallback zeroinitializer ; [#uses=2]
+@_ZZ15plNearestPointsE7Solver0 = internal global %struct..0btMultiSapOverlapFilterCallback zeroinitializer ; [#uses=1]
+@.str486 = private constant [26 x i8] c"btConvexInternalShapeData\00", align 1 ; [#uses=0]
+@_ZGVZ15plNearestPointsE17sGjkSimplexSolver = internal global i64 0, align 8 ; [#uses=3]
+@_ZZ15plNearestPointsE17sGjkSimplexSolver = internal global %struct.btVoronoiSimplexSolver zeroinitializer, align 32 ; [#uses=4]
+@_ZGVZ15plNearestPointsE7Solver0 = internal global i64 0, align 8 ; [#uses=3]
+@_ZGVZ15plNearestPointsE7Solver1 = internal global i64 0, align 8 ; [#uses=3]
+@_ZTVN16btCollisionWorld24ClosestRayResultCallbackE = weak_odr constant [6 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTIN16btCollisionWorld24ClosestRayResultCallbackE to i32 (...)*), i32 (...)* bitcast (void (%"struct.btCollisionWorld::ClosestRayResultCallback"*)* @_ZN16btCollisionWorld24ClosestRayResultCallbackD1Ev to i32 (...)*), i32 (...)* bitcast (void (%"struct.btCollisionWorld::ClosestRayResultCallback"*)* @_ZN16btCollisionWorld24ClosestRayResultCallbackD0Ev to i32 (...)*), i32 (...)* bitcast (i8 (%"struct.btCollisionWorld::RayResultCallback"*, %struct.btBroadphaseProxy*)* @_ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy to i32 (...)*), i32 (...)* bitcast (float (%"struct.btCollisionWorld::ClosestRayResultCallback"*, %"struct.btCollisionWorld::LocalRayResult"*, i8)* @_ZN16btCollisionWorld24ClosestRayResultCallback15addSingleResultERNS_14LocalRayResultEb to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTIN16btCollisionWorld24ClosestRayResultCallbackE = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([47 x i8]* @_ZTSN16btCollisionWorld24ClosestRayResultCallbackE, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTIN16btCollisionWorld17RayResultCallbackE to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTSN16btCollisionWorld24ClosestRayResultCallbackE = weak_odr constant [47 x i8] c"N16btCollisionWorld24ClosestRayResultCallbackE\00", align 32 ; [#uses=1]
+@_ZTV25btDefaultVehicleRaycaster = weak_odr constant [5 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI25btDefaultVehicleRaycaster to i32 (...)*), i32 (...)* bitcast (void (%struct.btDefaultVehicleRaycaster*)* @_ZN25btDefaultVehicleRaycasterD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btDefaultVehicleRaycaster*)* @_ZN25btDefaultVehicleRaycasterD0Ev to i32 (...)*), i32 (...)* bitcast (i8* (%struct.btDefaultVehicleRaycaster*, %struct.btQuadWord*, %struct.btQuadWord*, %"struct.btVehicleRaycaster::btVehicleRaycasterResult"*)* @_ZN25btDefaultVehicleRaycaster7castRayERK9btVector3S2_RN18btVehicleRaycaster24btVehicleRaycasterResultE to i32 (...)*)], align 8 ; [#uses=1]
+@_ZTI25btDefaultVehicleRaycaster = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([28 x i8]* @_ZTS25btDefaultVehicleRaycaster, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI18btVehicleRaycaster to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS25btDefaultVehicleRaycaster = weak_odr constant [28 x i8] c"25btDefaultVehicleRaycaster\00" ; [#uses=1]
+@_ZTI18btVehicleRaycaster = weak_odr constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([21 x i8]* @_ZTS18btVehicleRaycaster, i32 0, i32 0) } } ; [#uses=1]
+@_ZTS18btVehicleRaycaster = weak_odr constant [21 x i8] c"18btVehicleRaycaster\00" ; [#uses=1]
+@sideFrictionStiffness2 = global float 1.000000e+00 ; [#uses=1]
+@_ZTV16btRaycastVehicle = weak_odr constant [9 x i32 (...)*] [i32 (...)* null, i32 (...)* bitcast (%struct.__si_class_type_info_pseudo* @_ZTI16btRaycastVehicle to i32 (...)*), i32 (...)* bitcast (void (%struct.btRaycastVehicle*)* @_ZN16btRaycastVehicleD1Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btRaycastVehicle*)* @_ZN16btRaycastVehicleD0Ev to i32 (...)*), i32 (...)* bitcast (void (%struct.btRaycastVehicle*, %struct.btCollisionWorld*, float)* @_ZN16btRaycastVehicle12updateActionEP16btCollisionWorldf to i32 (...)*), i32 (...)* bitcast (void (%struct.btRaycastVehicle*, %struct.btActionInterface*)* @_ZN16btRaycastVehicle9debugDrawEP12btIDebugDraw to i32 (...)*), i32 (...)* bitcast (void (%struct.btRaycastVehicle*, float)* @_ZN16btRaycastVehicle13updateVehicleEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btRaycastVehicle*, float)* @_ZN16btRaycastVehicle14updateFrictionEf to i32 (...)*), i32 (...)* bitcast (void (%struct.btRaycastVehicle*, i32, i32, i32)* @_ZN16btRaycastVehicle19setCoordinateSystemEiii to i32 (...)*)], align 32 ; [#uses=1]
+@_ZTI16btRaycastVehicle = weak_odr constant %struct.__si_class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv120__si_class_type_infoE to i32), i32 8) to i8*), i8* getelementptr inbounds ([19 x i8]* @_ZTS16btRaycastVehicle, i32 0, i32 0) }, %"struct.std::type_info"* bitcast (%struct.__class_type_info_pseudo* @_ZTI17btActionInterface to %"struct.std::type_info"*) } ; [#uses=1]
+@_ZTS16btRaycastVehicle = weak_odr constant [19 x i8] c"16btRaycastVehicle\00" ; [#uses=1]
+@_ZGVZN17btActionInterface12getFixedBodyEvE7s_fixed = internal global i64 0, align 8 ; [#uses=4]
+@_ZZN17btActionInterface12getFixedBodyEvE7s_fixed = internal global %struct.btRigidBody zeroinitializer, align 32 ; [#uses=10]
+@gNumAlignedAllocs = global i32 0 ; [#uses=2]
+@_ZL10sAllocFunc = internal global i8* (i32)* @_ZL14btAllocDefaultj ; [#uses=2]
+@_ZL9sFreeFunc = internal global void (i8*)* @_ZL13btFreeDefaultPv ; [#uses=2]
+@_ZL17sAlignedAllocFunc = internal global i8* (i32, i32)* @_ZL21btAlignedAllocDefaultji ; [#uses=2]
+@_ZL16sAlignedFreeFunc = internal global void (i8*)* @_ZL20btAlignedFreeDefaultPv ; [#uses=2]
+@gNumAlignedFree = global i32 0 ; [#uses=2]
+@gTotalBytesAlignedAllocs = global i32 0 ; [#uses=0]
+@planetestepsilon = global float 0x3F50624DE0000000 ; [#uses=2]
+@_ZZN14btHullTriangle4neibEiiE2er = internal global i32 -1 ; [#uses=10]
+@_ZGVZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif = internal global i64 0, align 8 ; [#uses=7]
+@_ZZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif = internal global %struct.btQuadWord zeroinitializer ; [#uses=4]
+@_ZGVZ20DistanceBetweenLinesRK9btVector3S1_S1_S1_PS_S2_E2cp = internal global i64 0, align 8 ; [#uses=3]
+@_ZZ20DistanceBetweenLinesRK9btVector3S1_S1_S1_PS_S2_E2cp = internal global %struct.btQuadWord zeroinitializer ; [#uses=4]
+@_ZN15CProfileManager12FrameCounterE = global i32 0 ; [#uses=4]
+@_ZN15CProfileManager4RootE = global %struct.CProfileNode zeroinitializer, align 32 ; [#uses=13]
+@_ZL13gProfileClock = internal global %struct.btClock zeroinitializer ; [#uses=1]
+@_ZN15CProfileManager9ResetTimeE = global i32 0 ; [#uses=3]
+@.str27 = private constant [35 x i8] c"----------------------------------\00", align 4 ; [#uses=1]
+@.str128 = private constant [49 x i8] c"Profiling: %s (total running time: %.3f ms) ---\0A\00", align 4 ; [#uses=1]
+@.str229 = private constant [50 x i8] c"%d -- %s (%.2f %%) :: %.3f ms / frame (%d calls)\0A\00", align 4 ; [#uses=1]
+@.str330 = private constant [13 x i8] c"what's wrong\00", align 1 ; [#uses=1]
+@.str431 = private constant [25 x i8] c"%s (%.3f %%) :: %.3f ms\0A\00", align 1 ; [#uses=1]
+@.str532 = private constant [13 x i8] c"Unaccounted:\00", align 1 ; [#uses=1]
+@_ZN15CProfileManager11CurrentNodeE = global %struct.CProfileNode* @_ZN15CProfileManager4RootE ; [#uses=5]
+@.str633 = private constant [5 x i8] c"Root\00", align 1 ; [#uses=1]
+@sBulletDNAstr64 = global [5704 x i8] c"SDNANAME\B1\00\00\00m_size\00m_capacity\00*m_data\00m_collisionShapes\00m_collisionObjects\00m_constraints\00*first\00*last\00m_floats[4]\00m_el[3]\00m_basis\00m_origin\00m_rootNodeIndex\00m_subtreeSize\00m_quantizedAabbMin[3]\00m_quantizedAabbMax[3]\00m_aabbMinOrg\00m_aabbMaxOrg\00m_escapeIndex\00m_subPart\00m_triangleIndex\00m_pad[4]\00m_escapeIndexOrTriangleIndex\00m_bvhAabbMin\00m_bvhAabbMax\00m_bvhQuantization\00m_curNodeIndex\00m_useQuantization\00m_numContiguousLeafNodes\00m_numQuantizedContiguousNodes\00*m_contiguousNodesPtr\00*m_quantizedContiguousNodesPtr\00*m_subTreeInfoPtr\00m_traversalMode\00m_numSubtreeHeaders\00*m_name\00m_shapeType\00m_padding[4]\00m_collisionShapeData\00m_localScaling\00m_planeNormal\00m_planeConstant\00m_implicitShapeDimensions\00m_collisionMargin\00m_padding\00m_pos\00m_radius\00m_convexInternalShapeData\00*m_localPositionArrayPtr\00m_localPositionArraySize\00m_value\00m_pad[2]\00m_values[3]\00*m_vertices3f\00*m_vertices3d\00*m_indices32\00*m_3indices16\00*m_indices16\00m_numTriangles\00m_numVertices\00*m_meshPartsPtr\00m_scaling\00m_numMeshParts\00m_meshInterface\00*m_quantizedFloatBvh\00*m_quantizedDoubleBvh\00*m_triangleInfoMap\00m_pad3[4]\00m_transform\00*m_childShape\00m_childShapeType\00m_childMargin\00*m_childShapePtr\00m_numChildShapes\00m_upAxis\00m_flags\00m_edgeV0V1Angle\00m_edgeV1V2Angle\00m_edgeV2V0Angle\00*m_hashTablePtr\00*m_nextPtr\00*m_valueArrayPtr\00*m_keyArrayPtr\00m_convexEpsilon\00m_planarEpsilon\00m_equalVertexThreshold\00m_edgeDistanceThreshold\00m_zeroAreaThreshold\00m_nextSize\00m_hashTableSize\00m_numValues\00m_numKeys\00m_gimpactSubType\00*m_unscaledPointsFloatPtr\00*m_unscaledPointsDoublePtr\00m_numUnscaledPoints\00m_padding3[4]\00*m_broadphaseHandle\00*m_collisionShape\00*m_rootCollisionShape\00m_worldTransform\00m_interpolationWorldTransform\00m_interpolationLinearVelocity\00m_interpolationAngularVelocity\00m_anisotropicFriction\00m_contactProcessingThreshold\00m_deactivationTime\00m_friction\00m_restitution\00m_hitFraction\00m_ccdSweptSphereRadius\00m_ccdMotionThreshold\00m_hasAnisotropicFriction\00m_collisionFlags\00m_islandTag1\00m_companionId\00m_activationState1\00m_internalType\00m_checkCollideWith\00m_collisionObjectData\00m_invInertiaTensorWorld\00m_linearVelocity\00m_angularVelocity\00m_angularFactor\00m_linearFactor\00m_gravity\00m_gravity_acceleration\00m_invInertiaLocal\00m_totalForce\00m_totalTorque\00m_inverseMass\00m_linearDamping\00m_angularDamping\00m_additionalDampingFactor\00m_additionalLinearDampingThresholdSqr\00m_additionalAngularDampingThresholdSqr\00m_additionalAngularDampingFactor\00m_linearSleepingThreshold\00m_angularSleepingThreshold\00m_additionalDamping\00m_numConstraintRows\00nub\00*m_rbA\00*m_rbB\00m_objectType\00m_userConstraintType\00m_userConstraintId\00m_needsFeedback\00m_appliedImpulse\00m_dbgDrawSize\00m_disableCollisionsBetweenLinkedBodies\00m_pad4[4]\00m_typeConstraintData\00m_pivotInA\00m_pivotInB\00m_rbAFrame\00m_rbBFrame\00m_useReferenceFrameA\00m_angularOnly\00m_enableAngularMotor\00m_motorTargetVelocity\00m_maxMotorImpulse\00m_lowerLimit\00m_upperLimit\00m_limitSoftness\00m_biasFactor\00m_relaxationFactor\00m_swingSpan1\00m_swingSpan2\00m_twistSpan\00m_damping\00m_linearUpperLimit\00m_linearLowerLimit\00m_angularUpperLimit\00m_angularLowerLimit\00m_useLinearReferenceFrameA\00m_useOffsetForConstraintFrame\00TYPE:\00\00\00char\00uchar\00short\00ushort\00int\00long\00ulong\00float\00double\00void\00PointerArray\00btPhysicsSystem\00ListBase\00btVector3FloatData\00btVector3DoubleData\00btMatrix3x3FloatData\00btMatrix3x3DoubleData\00btTransformFloatData\00btTransformDoubleData\00btBvhSubtreeInfoData\00btOptimizedBvhNodeFloatData\00btOptimizedBvhNodeDoubleData\00btQuantizedBvhNodeData\00btQuantizedBvhFloatData\00btQuantizedBvhDoubleData\00btCollisionShapeData\00btStaticPlaneShapeData\00btConvexInternalShapeData\00btPositionAndRadius\00btMultiSphereShapeData\00btIntIndexData\00btShortIntIndexData\00btShortIntIndexTripletData\00btMeshPartData\00btStridingMeshInterfaceData\00btTriangleMeshShapeData\00btTriangleInfoMapData\00btCompoundShapeChildData\00btCompoundShapeData\00btCylinderShapeData\00btCapsuleShapeData\00btTriangleInfoData\00btGImpactMeshShapeData\00btConvexHullShapeData\00btCollisionObjectDoubleData\00btCollisionObjectFloatData\00btRigidBodyFloatData\00btRigidBodyDoubleData\00btConstraintInfo1\00btTypedConstraintData\00btRigidBodyData\00btPoint2PointConstraintFloatData\00btPoint2PointConstraintDoubleData\00btHingeConstraintDoubleData\00btHingeConstraintFloatData\00btConeTwistConstraintData\00btGeneric6DofConstraintData\00btSliderConstraintData\00\00TLEN\01\00\01\00\02\00\02\00\04\00\04\00\04\00\04\00\08\00\00\00\10\000\00\10\00\10\00 \000\00`\00@\00\80\00\14\000\00P\00\10\00`\00\90\00\10\008\008\00\14\00H\00\04\00\04\00\08\000\00 \00P\00H\00P\00 \00@\00@\00\10\00H\00P\00\D8\01\08\01\F0\01\A8\03\08\008\00\00\00X\00x\00`\01\E0\00\D8\00\00\01\D0\00STRC/\00\00\00\0A\00\03\00\04\00\00\00\04\00\01\00\09\00\02\00\0B\00\03\00\0A\00\03\00\0A\00\04\00\0A\00\05\00\0C\00\02\00\09\00\06\00\09\00\07\00\0D\00\01\00\07\00\08\00\0E\00\01\00\08\00\08\00\0F\00\01\00\0D\00\09\00\10\00\01\00\0E\00\09\00\11\00\02\00\0F\00\0A\00\0D\00\0B\00\12\00\02\00\10\00\0A\00\0E\00\0B\00\13\00\04\00\04\00\0C\00\04\00\0D\00\02\00\0E\00\02\00\0F\00\14\00\06\00\0D\00\10\00\0D\00\11\00\04\00\12\00\04\00\13\00\04\00\14\00\00\00\15\00\15\00\06\00\0E\00\10\00\0E\00\11\00\04\00\12\00\04\00\13\00\04\00\14\00\00\00\15\00\16\00\03\00\02\00\0E\00\02\00\0F\00\04\00\16\00\17\00\0C\00\0D\00\17\00\0D\00\18\00\0D\00\19\00\04\00\1A\00\04\00\1B\00\04\00\1C\00\04\00\1D\00\14\00\1E\00\16\00\1F\00\13\00 \00\04\00!\00\04\00\22\00\18\00\0C\00\0E\00\17\00\0E\00\18\00\0E\00\19\00\04\00\1A\00\04\00\1B\00\04\00\1C\00\04\00\1D\00\15\00\1E\00\16\00\1F\00\04\00!\00\04\00\22\00\13\00 \00\19\00\03\00\00\00#\00\04\00$\00\00\00%\00\1A\00\05\00\19\00&\00\0D\00'\00\0D\00(\00\07\00)\00\00\00\15\00\1B\00\05\00\19\00&\00\0D\00'\00\0D\00*\00\07\00+\00\04\00,\00\1C\00\02\00\0D\00-\00\07\00.\00\1D\00\04\00\1B\00/\00\1C\000\00\04\001\00\00\00%\00\1E\00\01\00\04\002\00\1F\00\02\00\02\002\00\00\003\00 \00\02\00\02\004\00\00\003\00!\00\07\00\0D\005\00\0E\006\00\1E\007\00 \008\00\1F\009\00\04\00:\00\04\00;\00\22\00\04\00!\00<\00\0D\00=\00\04\00>\00\00\00%\00#\00\07\00\19\00&\00\22\00?\00\17\00@\00\18\00A\00$\00B\00\07\00+\00\00\00C\00%\00\04\00\11\00D\00\19\00E\00\04\00F\00\07\00G\00&\00\04\00\19\00&\00%\00H\00\04\00I\00\07\00+\00'\00\03\00\1B\00/\00\04\00J\00\00\00%\00(\00\03\00\1B\00/\00\04\00J\00\00\00%\00)\00\04\00\04\00K\00\07\00L\00\07\00M\00\07\00N\00$\00\0E\00\04\00O\00\04\00P\00)\00Q\00\04\00R\00\07\00S\00\07\00T\00\07\00U\00\07\00V\00\07\00W\00\04\00X\00\04\00Y\00\04\00Z\00\04\00[\00\00\00%\00*\00\05\00\19\00&\00\22\00?\00\0D\00'\00\07\00+\00\04\00\5C\00+\00\05\00\1B\00/\00\0D\00]\00\0E\00^\00\04\00_\00\00\00`\00,\00\18\00\09\00a\00\09\00b\00\19\00c\00\00\00#\00\12\00d\00\12\00e\00\0E\00f\00\0E\00g\00\0E\00h\00\08\00i\00\08\00j\00\08\00k\00\08\00l\00\08\00m\00\08\00n\00\08\00o\00\04\00p\00\04\00q\00\04\00r\00\04\00s\00\04\00t\00\04\00u\00\04\00v\00\00\00%\00-\00\17\00\09\00a\00\09\00b\00\19\00c\00\00\00#\00\11\00d\00\11\00e\00\0D\00f\00\0D\00g\00\0D\00h\00\07\00i\00\07\00j\00\07\00k\00\07\00l\00\07\00m\00\07\00n\00\07\00o\00\04\00p\00\04\00q\00\04\00r\00\04\00s\00\04\00t\00\04\00u\00\04\00v\00.\00\15\00-\00w\00\0F\00x\00\0D\00y\00\0D\00z\00\0D\00{\00\0D\00|\00\0D\00}\00\0D\00~\00\0D\00\7F\00\0D\00\80\00\0D\00\81\00\07\00\82\00\07\00\83\00\07\00\84\00\07\00\85\00\07\00\86\00\07\00\87\00\07\00\88\00\07\00\89\00\07\00\8A\00\04\00\8B\00/\00\16\00,\00w\00\10\00x\00\0E\00y\00\0E\00z\00\0E\00{\00\0E\00|\00\0E\00}\00\0E\00~\00\0E\00\7F\00\0E\00\80\00\0E\00\81\00\08\00\82\00\08\00\83\00\08\00\84\00\08\00\85\00\08\00\86\00\08\00\87\00\08\00\88\00\08\00\89\00\08\00\8A\00\04\00\8B\00\00\00%\000\00\02\00\04\00\8C\00\04\00\8D\001\00\0B\002\00\8E\002\00\8F\00\00\00#\00\04\00\90\00\04\00\91\00\04\00\92\00\04\00\93\00\07\00\94\00\07\00\95\00\04\00\96\00\00\00\97\003\00\03\001\00\98\00\0D\00\99\00\0D\00\9A\004\00\03\001\00\98\00\0E\00\99\00\0E\00\9A\005\00\0D\001\00\98\00\12\00\9B\00\12\00\9C\00\04\00\9D\00\04\00\9E\00\04\00\9F\00\07\00\A0\00\07\00\A1\00\07\00\A2\00\07\00\A3\00\07\00\A4\00\07\00\A5\00\07\00\A6\006\00\0D\001\00\98\00\11\00\9B\00\11\00\9C\00\04\00\9D\00\04\00\9E\00\04\00\9F\00\07\00\A0\00\07\00\A1\00\07\00\A2\00\07\00\A3\00\07\00\A4\00\07\00\A5\00\07\00\A6\007\00\0B\001\00\98\00\11\00\9B\00\11\00\9C\00\07\00\A7\00\07\00\A8\00\07\00\A9\00\07\00\A4\00\07\00\A5\00\07\00\A6\00\07\00\AA\00\00\00\15\008\00\09\001\00\98\00\11\00\9B\00\11\00\9C\00\0D\00\AB\00\0D\00\AC\00\0D\00\AD\00\0D\00\AE\00\04\00\AF\00\04\00\B0\009\00\09\001\00\98\00\11\00\9B\00\11\00\9C\00\07\00\AB\00\07\00\AC\00\07\00\AD\00\07\00\AE\00\04\00\AF\00\04\00\B0\00", align 32 ; [#uses=0]
+@sBulletDNAlen64 = global i32 5704 ; [#uses=0]
+@sBulletDNAstr = global [5704 x i8] c"SDNANAME\B1\00\00\00m_size\00m_capacity\00*m_data\00m_collisionShapes\00m_collisionObjects\00m_constraints\00*first\00*last\00m_floats[4]\00m_el[3]\00m_basis\00m_origin\00m_rootNodeIndex\00m_subtreeSize\00m_quantizedAabbMin[3]\00m_quantizedAabbMax[3]\00m_aabbMinOrg\00m_aabbMaxOrg\00m_escapeIndex\00m_subPart\00m_triangleIndex\00m_pad[4]\00m_escapeIndexOrTriangleIndex\00m_bvhAabbMin\00m_bvhAabbMax\00m_bvhQuantization\00m_curNodeIndex\00m_useQuantization\00m_numContiguousLeafNodes\00m_numQuantizedContiguousNodes\00*m_contiguousNodesPtr\00*m_quantizedContiguousNodesPtr\00*m_subTreeInfoPtr\00m_traversalMode\00m_numSubtreeHeaders\00*m_name\00m_shapeType\00m_padding[4]\00m_collisionShapeData\00m_localScaling\00m_planeNormal\00m_planeConstant\00m_implicitShapeDimensions\00m_collisionMargin\00m_padding\00m_pos\00m_radius\00m_convexInternalShapeData\00*m_localPositionArrayPtr\00m_localPositionArraySize\00m_value\00m_pad[2]\00m_values[3]\00*m_vertices3f\00*m_vertices3d\00*m_indices32\00*m_3indices16\00*m_indices16\00m_numTriangles\00m_numVertices\00*m_meshPartsPtr\00m_scaling\00m_numMeshParts\00m_meshInterface\00*m_quantizedFloatBvh\00*m_quantizedDoubleBvh\00*m_triangleInfoMap\00m_pad3[4]\00m_transform\00*m_childShape\00m_childShapeType\00m_childMargin\00*m_childShapePtr\00m_numChildShapes\00m_upAxis\00m_flags\00m_edgeV0V1Angle\00m_edgeV1V2Angle\00m_edgeV2V0Angle\00*m_hashTablePtr\00*m_nextPtr\00*m_valueArrayPtr\00*m_keyArrayPtr\00m_convexEpsilon\00m_planarEpsilon\00m_equalVertexThreshold\00m_edgeDistanceThreshold\00m_zeroAreaThreshold\00m_nextSize\00m_hashTableSize\00m_numValues\00m_numKeys\00m_gimpactSubType\00*m_unscaledPointsFloatPtr\00*m_unscaledPointsDoublePtr\00m_numUnscaledPoints\00m_padding3[4]\00*m_broadphaseHandle\00*m_collisionShape\00*m_rootCollisionShape\00m_worldTransform\00m_interpolationWorldTransform\00m_interpolationLinearVelocity\00m_interpolationAngularVelocity\00m_anisotropicFriction\00m_contactProcessingThreshold\00m_deactivationTime\00m_friction\00m_restitution\00m_hitFraction\00m_ccdSweptSphereRadius\00m_ccdMotionThreshold\00m_hasAnisotropicFriction\00m_collisionFlags\00m_islandTag1\00m_companionId\00m_activationState1\00m_internalType\00m_checkCollideWith\00m_collisionObjectData\00m_invInertiaTensorWorld\00m_linearVelocity\00m_angularVelocity\00m_angularFactor\00m_linearFactor\00m_gravity\00m_gravity_acceleration\00m_invInertiaLocal\00m_totalForce\00m_totalTorque\00m_inverseMass\00m_linearDamping\00m_angularDamping\00m_additionalDampingFactor\00m_additionalLinearDampingThresholdSqr\00m_additionalAngularDampingThresholdSqr\00m_additionalAngularDampingFactor\00m_linearSleepingThreshold\00m_angularSleepingThreshold\00m_additionalDamping\00m_numConstraintRows\00nub\00*m_rbA\00*m_rbB\00m_objectType\00m_userConstraintType\00m_userConstraintId\00m_needsFeedback\00m_appliedImpulse\00m_dbgDrawSize\00m_disableCollisionsBetweenLinkedBodies\00m_pad4[4]\00m_typeConstraintData\00m_pivotInA\00m_pivotInB\00m_rbAFrame\00m_rbBFrame\00m_useReferenceFrameA\00m_angularOnly\00m_enableAngularMotor\00m_motorTargetVelocity\00m_maxMotorImpulse\00m_lowerLimit\00m_upperLimit\00m_limitSoftness\00m_biasFactor\00m_relaxationFactor\00m_swingSpan1\00m_swingSpan2\00m_twistSpan\00m_damping\00m_linearUpperLimit\00m_linearLowerLimit\00m_angularUpperLimit\00m_angularLowerLimit\00m_useLinearReferenceFrameA\00m_useOffsetForConstraintFrame\00TYPE:\00\00\00char\00uchar\00short\00ushort\00int\00long\00ulong\00float\00double\00void\00PointerArray\00btPhysicsSystem\00ListBase\00btVector3FloatData\00btVector3DoubleData\00btMatrix3x3FloatData\00btMatrix3x3DoubleData\00btTransformFloatData\00btTransformDoubleData\00btBvhSubtreeInfoData\00btOptimizedBvhNodeFloatData\00btOptimizedBvhNodeDoubleData\00btQuantizedBvhNodeData\00btQuantizedBvhFloatData\00btQuantizedBvhDoubleData\00btCollisionShapeData\00btStaticPlaneShapeData\00btConvexInternalShapeData\00btPositionAndRadius\00btMultiSphereShapeData\00btIntIndexData\00btShortIntIndexData\00btShortIntIndexTripletData\00btMeshPartData\00btStridingMeshInterfaceData\00btTriangleMeshShapeData\00btTriangleInfoMapData\00btCompoundShapeChildData\00btCompoundShapeData\00btCylinderShapeData\00btCapsuleShapeData\00btTriangleInfoData\00btGImpactMeshShapeData\00btConvexHullShapeData\00btCollisionObjectDoubleData\00btCollisionObjectFloatData\00btRigidBodyFloatData\00btRigidBodyDoubleData\00btConstraintInfo1\00btTypedConstraintData\00btRigidBodyData\00btPoint2PointConstraintFloatData\00btPoint2PointConstraintDoubleData\00btHingeConstraintDoubleData\00btHingeConstraintFloatData\00btConeTwistConstraintData\00btGeneric6DofConstraintData\00btSliderConstraintData\00\00TLEN\01\00\01\00\02\00\02\00\04\00\04\00\04\00\04\00\08\00\00\00\0C\00$\00\08\00\10\00 \000\00`\00@\00\80\00\14\000\00P\00\10\00T\00\84\00\0C\004\004\00\14\00@\00\04\00\04\00\08\00\1C\00\1C\00<\008\00L\00\18\00<\00<\00\10\00@\00D\00\C8\01\F8\00\E0\01\98\03\08\00,\00\00\00L\00l\00T\01\D4\00\CC\00\F4\00\C4\00STRC/\00\00\00\0A\00\03\00\04\00\00\00\04\00\01\00\09\00\02\00\0B\00\03\00\0A\00\03\00\0A\00\04\00\0A\00\05\00\0C\00\02\00\09\00\06\00\09\00\07\00\0D\00\01\00\07\00\08\00\0E\00\01\00\08\00\08\00\0F\00\01\00\0D\00\09\00\10\00\01\00\0E\00\09\00\11\00\02\00\0F\00\0A\00\0D\00\0B\00\12\00\02\00\10\00\0A\00\0E\00\0B\00\13\00\04\00\04\00\0C\00\04\00\0D\00\02\00\0E\00\02\00\0F\00\14\00\06\00\0D\00\10\00\0D\00\11\00\04\00\12\00\04\00\13\00\04\00\14\00\00\00\15\00\15\00\06\00\0E\00\10\00\0E\00\11\00\04\00\12\00\04\00\13\00\04\00\14\00\00\00\15\00\16\00\03\00\02\00\0E\00\02\00\0F\00\04\00\16\00\17\00\0C\00\0D\00\17\00\0D\00\18\00\0D\00\19\00\04\00\1A\00\04\00\1B\00\04\00\1C\00\04\00\1D\00\14\00\1E\00\16\00\1F\00\13\00 \00\04\00!\00\04\00\22\00\18\00\0C\00\0E\00\17\00\0E\00\18\00\0E\00\19\00\04\00\1A\00\04\00\1B\00\04\00\1C\00\04\00\1D\00\15\00\1E\00\16\00\1F\00\04\00!\00\04\00\22\00\13\00 \00\19\00\03\00\00\00#\00\04\00$\00\00\00%\00\1A\00\05\00\19\00&\00\0D\00'\00\0D\00(\00\07\00)\00\00\00\15\00\1B\00\05\00\19\00&\00\0D\00'\00\0D\00*\00\07\00+\00\04\00,\00\1C\00\02\00\0D\00-\00\07\00.\00\1D\00\04\00\1B\00/\00\1C\000\00\04\001\00\00\00%\00\1E\00\01\00\04\002\00\1F\00\02\00\02\002\00\00\003\00 \00\02\00\02\004\00\00\003\00!\00\07\00\0D\005\00\0E\006\00\1E\007\00 \008\00\1F\009\00\04\00:\00\04\00;\00\22\00\04\00!\00<\00\0D\00=\00\04\00>\00\00\00%\00#\00\07\00\19\00&\00\22\00?\00\17\00@\00\18\00A\00$\00B\00\07\00+\00\00\00C\00%\00\04\00\11\00D\00\19\00E\00\04\00F\00\07\00G\00&\00\04\00\19\00&\00%\00H\00\04\00I\00\07\00+\00'\00\03\00\1B\00/\00\04\00J\00\00\00%\00(\00\03\00\1B\00/\00\04\00J\00\00\00%\00)\00\04\00\04\00K\00\07\00L\00\07\00M\00\07\00N\00$\00\0E\00\04\00O\00\04\00P\00)\00Q\00\04\00R\00\07\00S\00\07\00T\00\07\00U\00\07\00V\00\07\00W\00\04\00X\00\04\00Y\00\04\00Z\00\04\00[\00\00\00%\00*\00\05\00\19\00&\00\22\00?\00\0D\00'\00\07\00+\00\04\00\5C\00+\00\05\00\1B\00/\00\0D\00]\00\0E\00^\00\04\00_\00\00\00`\00,\00\18\00\09\00a\00\09\00b\00\19\00c\00\00\00#\00\12\00d\00\12\00e\00\0E\00f\00\0E\00g\00\0E\00h\00\08\00i\00\08\00j\00\08\00k\00\08\00l\00\08\00m\00\08\00n\00\08\00o\00\04\00p\00\04\00q\00\04\00r\00\04\00s\00\04\00t\00\04\00u\00\04\00v\00\00\00%\00-\00\17\00\09\00a\00\09\00b\00\19\00c\00\00\00#\00\11\00d\00\11\00e\00\0D\00f\00\0D\00g\00\0D\00h\00\07\00i\00\07\00j\00\07\00k\00\07\00l\00\07\00m\00\07\00n\00\07\00o\00\04\00p\00\04\00q\00\04\00r\00\04\00s\00\04\00t\00\04\00u\00\04\00v\00.\00\15\00-\00w\00\0F\00x\00\0D\00y\00\0D\00z\00\0D\00{\00\0D\00|\00\0D\00}\00\0D\00~\00\0D\00\7F\00\0D\00\80\00\0D\00\81\00\07\00\82\00\07\00\83\00\07\00\84\00\07\00\85\00\07\00\86\00\07\00\87\00\07\00\88\00\07\00\89\00\07\00\8A\00\04\00\8B\00/\00\16\00,\00w\00\10\00x\00\0E\00y\00\0E\00z\00\0E\00{\00\0E\00|\00\0E\00}\00\0E\00~\00\0E\00\7F\00\0E\00\80\00\0E\00\81\00\08\00\82\00\08\00\83\00\08\00\84\00\08\00\85\00\08\00\86\00\08\00\87\00\08\00\88\00\08\00\89\00\08\00\8A\00\04\00\8B\00\00\00%\000\00\02\00\04\00\8C\00\04\00\8D\001\00\0B\002\00\8E\002\00\8F\00\00\00#\00\04\00\90\00\04\00\91\00\04\00\92\00\04\00\93\00\07\00\94\00\07\00\95\00\04\00\96\00\00\00\97\003\00\03\001\00\98\00\0D\00\99\00\0D\00\9A\004\00\03\001\00\98\00\0E\00\99\00\0E\00\9A\005\00\0D\001\00\98\00\12\00\9B\00\12\00\9C\00\04\00\9D\00\04\00\9E\00\04\00\9F\00\07\00\A0\00\07\00\A1\00\07\00\A2\00\07\00\A3\00\07\00\A4\00\07\00\A5\00\07\00\A6\006\00\0D\001\00\98\00\11\00\9B\00\11\00\9C\00\04\00\9D\00\04\00\9E\00\04\00\9F\00\07\00\A0\00\07\00\A1\00\07\00\A2\00\07\00\A3\00\07\00\A4\00\07\00\A5\00\07\00\A6\007\00\0B\001\00\98\00\11\00\9B\00\11\00\9C\00\07\00\A7\00\07\00\A8\00\07\00\A9\00\07\00\A4\00\07\00\A5\00\07\00\A6\00\07\00\AA\00\00\00\15\008\00\09\001\00\98\00\11\00\9B\00\11\00\9C\00\0D\00\AB\00\0D\00\AC\00\0D\00\AD\00\0D\00\AE\00\04\00\AF\00\04\00\B0\009\00\09\001\00\98\00\11\00\9B\00\11\00\9C\00\07\00\AB\00\07\00\AC\00\07\00\AD\00\07\00\AE\00\04\00\AF\00\04\00\B0\00", align 32 ; [#uses=0]
+@sBulletDNAlen = global i32 5704 ; [#uses=0]
+@llvm.global_ctors = appending global [2 x %0] [%0 { i32 65535, void ()* @_GLOBAL__I__ZN19btGenericMemoryPool24allocate_from_free_nodesEj }, %0 { i32 65535, void ()* @_GLOBAL__I__ZN7btClockC2Ev }] ; [#uses=0]
+@llvm.used = appending global [68 x i8*] [i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*), i8* bitcast (i8** @llvm.eh.catch.all.value to i8*)], section "llvm.metadata" ; [#uses=0]
+
+; [#uses=0]
+define i32 @main(i32 %argc, i8** %argv) {
+entry:
+ %argc_addr = alloca i32, align 4 ; [#uses=1]
+ %argv_addr = alloca i8**, align 4 ; [#uses=1]
+ %retval = alloca i32 ; [#uses=2]
+ %save_filt.650 = alloca i32 ; [#uses=2]
+ %save_eptr.649 = alloca i8* ; [#uses=2]
+ %save_filt.648 = alloca i32 ; [#uses=2]
+ %save_eptr.647 = alloca i8* ; [#uses=2]
+ %save_filt.646 = alloca i32 ; [#uses=2]
+ %save_eptr.645 = alloca i8* ; [#uses=2]
+ %save_filt.644 = alloca i32 ; [#uses=2]
+ %save_eptr.643 = alloca i8* ; [#uses=2]
+ %save_filt.642 = alloca i32 ; [#uses=2]
+ %save_eptr.641 = alloca i8* ; [#uses=2]
+ %save_filt.640 = alloca i32 ; [#uses=2]
+ %save_eptr.639 = alloca i8* ; [#uses=2]
+ %save_filt.638 = alloca i32 ; [#uses=2]
+ %save_eptr.637 = alloca i8* ; [#uses=2]
+ %save_filt.636 = alloca i32 ; [#uses=2]
+ %save_eptr.635 = alloca i8* ; [#uses=2]
+ %save_filt.634 = alloca i32 ; [#uses=2]
+ %save_eptr.633 = alloca i8* ; [#uses=2]
+ %save_filt.632 = alloca i32 ; [#uses=2]
+ %save_eptr.631 = alloca i8* ; [#uses=2]
+ %0 = alloca i32 ; [#uses=2]
+ %retval.462 = alloca i8 ; [#uses=2]
+ %1 = alloca %struct.btActionInterface* ; [#uses=4]
+ %iftmp.461 = alloca i8 ; [#uses=3]
+ %retval.460 = alloca i8 ; [#uses=2]
+ %2 = alloca %struct.btActionInterface* ; [#uses=3]
+ %iftmp.459 = alloca i8 ; [#uses=3]
+ %retval.458 = alloca i8 ; [#uses=2]
+ %3 = alloca %struct.btRigidBody* ; [#uses=4]
+ %4 = alloca %struct.btDefaultMotionState* ; [#uses=3]
+ %5 = alloca %struct.btTransform* ; [#uses=2]
+ %6 = alloca float ; [#uses=2]
+ %7 = alloca float ; [#uses=2]
+ %8 = alloca float ; [#uses=2]
+ %9 = alloca %struct.btQuadWord ; [#uses=2]
+ %10 = alloca float ; [#uses=2]
+ %11 = alloca float ; [#uses=2]
+ %12 = alloca float ; [#uses=2]
+ %13 = alloca %struct.btPolyhedralConvexShape* ; [#uses=4]
+ %14 = alloca %struct.btRigidBody* ; [#uses=4]
+ %15 = alloca %struct.btDefaultMotionState* ; [#uses=3]
+ %16 = alloca %struct.btTransform* ; [#uses=2]
+ %17 = alloca float ; [#uses=2]
+ %18 = alloca float ; [#uses=2]
+ %19 = alloca float ; [#uses=2]
+ %20 = alloca float ; [#uses=2]
+ %21 = alloca float ; [#uses=2]
+ %22 = alloca float ; [#uses=2]
+ %23 = alloca %struct.btQuadWord ; [#uses=2]
+ %24 = alloca %struct.btBoxShape* ; [#uses=4]
+ %25 = alloca float ; [#uses=2]
+ %26 = alloca float ; [#uses=2]
+ %27 = alloca float ; [#uses=2]
+ %28 = alloca %struct.btQuadWord ; [#uses=2]
+ %29 = alloca %struct.btQuadWord* ; [#uses=2]
+ %30 = alloca float ; [#uses=2]
+ %31 = alloca float ; [#uses=2]
+ %32 = alloca float ; [#uses=2]
+ %33 = alloca %struct.btQuadWord ; [#uses=2]
+ %34 = alloca %struct.btDiscreteDynamicsWorld* ; [#uses=4]
+ %35 = alloca %struct.btSequentialImpulseConstraintSolver* ; [#uses=4]
+ %36 = alloca %struct.btDbvtBroadphase* ; [#uses=4]
+ %37 = alloca %struct.btCollisionDispatcher* ; [#uses=4]
+ %38 = alloca %struct.btDefaultCollisionConfiguration* ; [#uses=4]
+ %39 = alloca %struct.btDefaultCollisionConstructionInfo ; [#uses=2]
+ %40 = alloca %struct.btDefaultCollisionConstructionInfo* ; [#uses=2]
+ %i = alloca i32 ; [#uses=9]
+ %collisionConfiguration = alloca %struct.btDefaultCollisionConfiguration* ; [#uses=6]
+ %dispatcher = alloca %struct.btCollisionDispatcher* ; [#uses=5]
+ %overlappingPairCache = alloca %struct.btActionInterface* ; [#uses=5]
+ %solver = alloca %struct.btSequentialImpulseConstraintSolver* ; [#uses=5]
+ %dynamicsWorld = alloca %struct.btDiscreteDynamicsWorld* ; [#uses=18]
+ %groundShape = alloca %struct.btCollisionShape* ; [#uses=6]
+ %collisionShapes = alloca %"struct.btAlignedObjectArray<btCollisionShape*>" ; [#uses=9]
+ %groundTransform = alloca %struct.btTransform ; [#uses=4]
+ %eh_exception = alloca i8* ; [#uses=51]
+ %eh_selector = alloca i32 ; [#uses=35]
+ %mass = alloca float ; [#uses=4]
+ %isDynamic = alloca i8 ; [#uses=2]
+ %localInertia = alloca %struct.btQuadWord ; [#uses=3]
+ %myMotionState = alloca %struct.btDefaultMotionState* ; [#uses=2]
+ %rbInfo = alloca %"struct.btRigidBody::btRigidBodyConstructionInfo" ; [#uses=2]
+ %body = alloca %struct.btRigidBody* ; [#uses=2]
+ %colShape = alloca %struct.btCollisionShape* ; [#uses=6]
+ %startTransform = alloca %struct.btTransform ; [#uses=4]
+ %mass44 = alloca float ; [#uses=4]
+ %isDynamic45 = alloca i8 ; [#uses=2]
+ %localInertia46 = alloca %struct.btQuadWord ; [#uses=3]
+ %myMotionState47 = alloca %struct.btDefaultMotionState* ; [#uses=2]
+ %rbInfo48 = alloca %"struct.btRigidBody::btRigidBodyConstructionInfo" ; [#uses=2]
+ %body49 = alloca %struct.btRigidBody* ; [#uses=2]
+ %j = alloca i32 ; [#uses=5]
+ %obj = alloca %struct.btCollisionObject* ; [#uses=2]
+ %body78 = alloca %struct.btRigidBody* ; [#uses=4]
+ %trans = alloca %struct.btTransform ; [#uses=5]
+ %obj94 = alloca %struct.btCollisionObject* ; [#uses=6]
+ %body95 = alloca %struct.btRigidBody* ; [#uses=4]
+ %j111 = alloca i32 ; [#uses=6]
+ %shape = alloca %struct.btCollisionShape* ; [#uses=4]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store i32 %argc, i32* %argc_addr
+ store i8** %argv, i8*** %argv_addr
+ call void @_ZN34btDefaultCollisionConstructionInfoC1Ev(%struct.btDefaultCollisionConstructionInfo* %39) nounwind
+ store %struct.btDefaultCollisionConstructionInfo* %39, %struct.btDefaultCollisionConstructionInfo** %40, align 4
+ %41 = call i8* @_Znwj(i32 88) ; [#uses=1]
+ %42 = bitcast i8* %41 to %struct.btDefaultCollisionConfiguration* ; [#uses=1]
+ store %struct.btDefaultCollisionConfiguration* %42, %struct.btDefaultCollisionConfiguration** %38, align 4
+ %43 = load %struct.btDefaultCollisionConfiguration** %38, align 4 ; [#uses=1]
+ %44 = load %struct.btDefaultCollisionConstructionInfo** %40, align 4 ; [#uses=1]
+ invoke void @_ZN31btDefaultCollisionConfigurationC1ERK34btDefaultCollisionConstructionInfo(%struct.btDefaultCollisionConfiguration* %43, %struct.btDefaultCollisionConstructionInfo* %44)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %45 = load %struct.btDefaultCollisionConfiguration** %38, align 4 ; [#uses=1]
+ store %struct.btDefaultCollisionConfiguration* %45, %struct.btDefaultCollisionConfiguration** %collisionConfiguration, align 4
+ %46 = call i8* @_Znwj(i32 5388) ; [#uses=1]
+ %47 = bitcast i8* %46 to %struct.btCollisionDispatcher* ; [#uses=1]
+ store %struct.btCollisionDispatcher* %47, %struct.btCollisionDispatcher** %37, align 4
+ %48 = load %struct.btDefaultCollisionConfiguration** %collisionConfiguration, align 4 ; [#uses=1]
+ %49 = bitcast %struct.btDefaultCollisionConfiguration* %48 to %struct.btActionInterface* ; [#uses=1]
+ %50 = load %struct.btCollisionDispatcher** %37, align 4 ; [#uses=1]
+ invoke void @_ZN21btCollisionDispatcherC1EP24btCollisionConfiguration(%struct.btCollisionDispatcher* %50, %struct.btActionInterface* %49)
+ to label %invcont1 unwind label %lpad143
+
+invcont1: ; preds = %invcont
+ br label %bb2
+
+bb: ; preds = %ppad
+ %eh_select = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select, i32* %save_filt.632, align 4
+ %eh_value = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value, i8** %save_eptr.631, align 4
+ %51 = load %struct.btDefaultCollisionConfiguration** %38, align 4 ; [#uses=1]
+ %52 = bitcast %struct.btDefaultCollisionConfiguration* %51 to i8* ; [#uses=1]
+ call void @_ZdlPv(i8* %52) nounwind
+ %53 = load i8** %save_eptr.631, align 4 ; [#uses=1]
+ store i8* %53, i8** %eh_exception, align 4
+ %54 = load i32* %save_filt.632, align 4 ; [#uses=1]
+ store i32 %54, i32* %eh_selector, align 4
+ br label %Unwind
+
+bb2: ; preds = %invcont1
+ %55 = load %struct.btCollisionDispatcher** %37, align 4 ; [#uses=1]
+ store %struct.btCollisionDispatcher* %55, %struct.btCollisionDispatcher** %dispatcher, align 4
+ %56 = call i8* @_Znwj(i32 156) ; [#uses=1]
+ %57 = bitcast i8* %56 to %struct.btDbvtBroadphase* ; [#uses=1]
+ store %struct.btDbvtBroadphase* %57, %struct.btDbvtBroadphase** %36, align 4
+ %58 = load %struct.btDbvtBroadphase** %36, align 4 ; [#uses=1]
+ invoke void @_ZN16btDbvtBroadphaseC1EP22btOverlappingPairCache(%struct.btDbvtBroadphase* %58, %struct..0btMultiSapOverlapFilterCallback* null)
+ to label %invcont3 unwind label %lpad147
+
+invcont3: ; preds = %bb2
+ br label %bb7
+
+bb4: ; preds = %ppad199
+ %eh_select5 = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select5, i32* %save_filt.634, align 4
+ %eh_value6 = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value6, i8** %save_eptr.633, align 4
+ %59 = load %struct.btCollisionDispatcher** %37, align 4 ; [#uses=1]
+ %60 = bitcast %struct.btCollisionDispatcher* %59 to i8* ; [#uses=1]
+ call void @_ZdlPv(i8* %60) nounwind
+ %61 = load i8** %save_eptr.633, align 4 ; [#uses=1]
+ store i8* %61, i8** %eh_exception, align 4
+ %62 = load i32* %save_filt.634, align 4 ; [#uses=1]
+ store i32 %62, i32* %eh_selector, align 4
+ br label %Unwind
+
+bb7: ; preds = %invcont3
+ %63 = load %struct.btDbvtBroadphase** %36, align 4 ; [#uses=1]
+ %64 = bitcast %struct.btDbvtBroadphase* %63 to %struct.btActionInterface* ; [#uses=1]
+ store %struct.btActionInterface* %64, %struct.btActionInterface** %overlappingPairCache, align 4
+ %65 = call i8* @_Znwj(i32 128) ; [#uses=1]
+ %66 = bitcast i8* %65 to %struct.btSequentialImpulseConstraintSolver* ; [#uses=1]
+ store %struct.btSequentialImpulseConstraintSolver* %66, %struct.btSequentialImpulseConstraintSolver** %35, align 4
+ %67 = load %struct.btSequentialImpulseConstraintSolver** %35, align 4 ; [#uses=1]
+ invoke void @_ZN35btSequentialImpulseConstraintSolverC1Ev(%struct.btSequentialImpulseConstraintSolver* %67)
+ to label %invcont8 unwind label %lpad151
+
+invcont8: ; preds = %bb7
+ br label %bb12
+
+bb9: ; preds = %ppad200
+ %eh_select10 = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select10, i32* %save_filt.636, align 4
+ %eh_value11 = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value11, i8** %save_eptr.635, align 4
+ %68 = load %struct.btDbvtBroadphase** %36, align 4 ; [#uses=1]
+ %69 = bitcast %struct.btDbvtBroadphase* %68 to i8* ; [#uses=1]
+ call void @_ZdlPv(i8* %69) nounwind
+ %70 = load i8** %save_eptr.635, align 4 ; [#uses=1]
+ store i8* %70, i8** %eh_exception, align 4
+ %71 = load i32* %save_filt.636, align 4 ; [#uses=1]
+ store i32 %71, i32* %eh_selector, align 4
+ br label %Unwind
+
+bb12: ; preds = %invcont8
+ %72 = load %struct.btSequentialImpulseConstraintSolver** %35, align 4 ; [#uses=1]
+ store %struct.btSequentialImpulseConstraintSolver* %72, %struct.btSequentialImpulseConstraintSolver** %solver, align 4
+ %73 = call i8* @_Znwj(i32 272) ; [#uses=1]
+ %74 = bitcast i8* %73 to %struct.btDiscreteDynamicsWorld* ; [#uses=1]
+ store %struct.btDiscreteDynamicsWorld* %74, %struct.btDiscreteDynamicsWorld** %34, align 4
+ %75 = load %struct.btDefaultCollisionConfiguration** %collisionConfiguration, align 4 ; [#uses=1]
+ %76 = bitcast %struct.btDefaultCollisionConfiguration* %75 to %struct.btActionInterface* ; [#uses=1]
+ %77 = load %struct.btSequentialImpulseConstraintSolver** %solver, align 4 ; [#uses=1]
+ %78 = bitcast %struct.btSequentialImpulseConstraintSolver* %77 to %struct.btActionInterface* ; [#uses=1]
+ %79 = load %struct.btCollisionDispatcher** %dispatcher, align 4 ; [#uses=1]
+ %80 = bitcast %struct.btCollisionDispatcher* %79 to %struct.btActionInterface* ; [#uses=1]
+ %81 = load %struct.btDiscreteDynamicsWorld** %34, align 4 ; [#uses=1]
+ %82 = load %struct.btActionInterface** %overlappingPairCache, align 4 ; [#uses=1]
+ invoke void @_ZN23btDiscreteDynamicsWorldC1EP12btDispatcherP21btBroadphaseInterfaceP18btConstraintSolverP24btCollisionConfiguration(%struct.btDiscreteDynamicsWorld* %81, %struct.btActionInterface* %80, %struct.btActionInterface* %82, %struct.btActionInterface* %78, %struct.btActionInterface* %76)
+ to label %invcont13 unwind label %lpad155
+
+invcont13: ; preds = %bb12
+ br label %bb17
+
+bb14: ; preds = %ppad201
+ %eh_select15 = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select15, i32* %save_filt.638, align 4
+ %eh_value16 = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value16, i8** %save_eptr.637, align 4
+ %83 = load %struct.btSequentialImpulseConstraintSolver** %35, align 4 ; [#uses=1]
+ %84 = bitcast %struct.btSequentialImpulseConstraintSolver* %83 to i8* ; [#uses=1]
+ call void @_ZdlPv(i8* %84) nounwind
+ %85 = load i8** %save_eptr.637, align 4 ; [#uses=1]
+ store i8* %85, i8** %eh_exception, align 4
+ %86 = load i32* %save_filt.638, align 4 ; [#uses=1]
+ store i32 %86, i32* %eh_selector, align 4
+ br label %Unwind
+
+bb17: ; preds = %invcont13
+ %87 = load %struct.btDiscreteDynamicsWorld** %34, align 4 ; [#uses=1]
+ store %struct.btDiscreteDynamicsWorld* %87, %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4
+ %88 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %88, i32 0, i32 0 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btDynamicsWorld* %89, i32 0, i32 0 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btCollisionWorld* %90, i32 0, i32 0 ; [#uses=1]
+ %92 = load i32 (...)*** %91, align 4 ; [#uses=1]
+ %93 = getelementptr inbounds i32 (...)** %92, i32 17 ; [#uses=1]
+ %94 = load i32 (...)** %93, align 1 ; [#uses=1]
+ store float 0.000000e+00, float* %32, align 4
+ store float -1.000000e+01, float* %31, align 4
+ store float 0.000000e+00, float* %30, align 4
+ call void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %33, float* %30, float* %31, float* %32) nounwind
+ %95 = bitcast i32 (...)* %94 to void (%struct.btDiscreteDynamicsWorld*, %struct.btQuadWord*)* ; [#uses=1]
+ %96 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ call void %95(%struct.btDiscreteDynamicsWorld* %96, %struct.btQuadWord* %33)
+ store float 5.000000e+01, float* %27, align 4
+ store float 5.000000e+01, float* %26, align 4
+ store float 5.000000e+01, float* %25, align 4
+ call void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %28, float* %25, float* %26, float* %27) nounwind
+ store %struct.btQuadWord* %28, %struct.btQuadWord** %29, align 4
+ %97 = call i8* @_ZN13btConvexShapenwEj(i32 52) inlinehint ; [#uses=1]
+ %98 = bitcast i8* %97 to %struct.btBoxShape* ; [#uses=1]
+ store %struct.btBoxShape* %98, %struct.btBoxShape** %24, align 4
+ %99 = load %struct.btBoxShape** %24, align 4 ; [#uses=1]
+ %100 = load %struct.btQuadWord** %29, align 4 ; [#uses=1]
+ invoke void @_ZN10btBoxShapeC1ERK9btVector3(%struct.btBoxShape* %99, %struct.btQuadWord* %100)
+ to label %invcont18 unwind label %lpad159
+
+invcont18: ; preds = %bb17
+ br label %bb22
+
+bb19: ; preds = %ppad202
+ %eh_select20 = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select20, i32* %save_filt.640, align 4
+ %eh_value21 = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value21, i8** %save_eptr.639, align 4
+ %101 = load %struct.btDiscreteDynamicsWorld** %34, align 4 ; [#uses=1]
+ %102 = bitcast %struct.btDiscreteDynamicsWorld* %101 to i8* ; [#uses=1]
+ call void @_ZdlPv(i8* %102) nounwind
+ %103 = load i8** %save_eptr.639, align 4 ; [#uses=1]
+ store i8* %103, i8** %eh_exception, align 4
+ %104 = load i32* %save_filt.640, align 4 ; [#uses=1]
+ store i32 %104, i32* %eh_selector, align 4
+ br label %Unwind
+
+bb22: ; preds = %invcont18
+ %105 = load %struct.btBoxShape** %24, align 4 ; [#uses=1]
+ %106 = bitcast %struct.btBoxShape* %105 to %struct.btCollisionShape* ; [#uses=1]
+ store %struct.btCollisionShape* %106, %struct.btCollisionShape** %groundShape, align 4
+ call void @_ZN20btAlignedObjectArrayIP16btCollisionShapeEC1Ev(%"struct.btAlignedObjectArray<btCollisionShape*>"* %collisionShapes)
+ invoke void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE9push_backERKS1_(%"struct.btAlignedObjectArray<btCollisionShape*>"* %collisionShapes, %struct.btCollisionShape** %groundShape) inlinehint
+ to label %invcont23 unwind label %lpad167
+
+invcont23: ; preds = %bb22
+ br label %bb29
+
+bb24: ; preds = %ppad203
+ %eh_select25 = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select25, i32* %save_filt.642, align 4
+ %eh_value26 = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value26, i8** %save_eptr.641, align 4
+ %107 = load %struct.btBoxShape** %24, align 4 ; [#uses=1]
+ %108 = bitcast %struct.btBoxShape* %107 to i8* ; [#uses=1]
+ invoke void @_ZN13btConvexShapedlEPv(i8* %108) inlinehint
+ to label %invcont27 unwind label %lpad163
+
+invcont27: ; preds = %bb24
+ %109 = load i8** %save_eptr.641, align 4 ; [#uses=1]
+ store i8* %109, i8** %eh_exception, align 4
+ %110 = load i32* %save_filt.642, align 4 ; [#uses=1]
+ store i32 %110, i32* %eh_selector, align 4
+ br label %Unwind
+
+bb28: ; preds = %ppad204
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+bb29: ; preds = %invcont23
+ call void @_ZN11btTransformC1Ev(%struct.btTransform* %groundTransform) nounwind
+ call void @_ZN11btTransform11setIdentityEv(%struct.btTransform* %groundTransform) nounwind
+ store float 0.000000e+00, float* %22, align 4
+ store float -5.600000e+01, float* %21, align 4
+ store float 0.000000e+00, float* %20, align 4
+ call void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %23, float* %20, float* %21, float* %22) nounwind
+ call void @_ZN11btTransform9setOriginERK9btVector3(%struct.btTransform* %groundTransform, %struct.btQuadWord* %23) nounwind
+ store float 0.000000e+00, float* %mass, align 4
+ %111 = load float* %mass, align 4 ; [#uses=1]
+ %112 = fcmp une float %111, 0.000000e+00 ; [#uses=1]
+ %113 = zext i1 %112 to i8 ; [#uses=1]
+ store i8 %113, i8* %isDynamic, align 1
+ store float 0.000000e+00, float* %19, align 4
+ store float 0.000000e+00, float* %18, align 4
+ store float 0.000000e+00, float* %17, align 4
+ call void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %localInertia, float* %17, float* %18, float* %19) nounwind
+ %114 = load i8* %isDynamic, align 1 ; [#uses=1]
+ %toBool = icmp ne i8 %114, 0 ; [#uses=1]
+ br i1 %toBool, label %bb30, label %bb32
+
+bb30: ; preds = %bb29
+ %115 = load %struct.btCollisionShape** %groundShape, align 4 ; [#uses=0]
+ %116 = load %struct.btCollisionShape** %groundShape, align 4 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btCollisionShape* %116, i32 0, i32 0 ; [#uses=1]
+ %118 = load i32 (...)*** %117, align 4 ; [#uses=1]
+ %119 = getelementptr inbounds i32 (...)** %118, i32 8 ; [#uses=1]
+ %120 = load i32 (...)** %119, align 1 ; [#uses=1]
+ %121 = load %struct.btCollisionShape** %groundShape, align 4 ; [#uses=1]
+ %122 = bitcast i32 (...)* %120 to void (%struct.btCollisionShape*, float, %struct.btQuadWord*)* ; [#uses=1]
+ %123 = load float* %mass, align 4 ; [#uses=1]
+ invoke void %122(%struct.btCollisionShape* %121, float %123, %struct.btQuadWord* %localInertia)
+ to label %invcont31 unwind label %lpad167
+
+invcont31: ; preds = %bb30
+ br label %bb32
+
+bb32: ; preds = %invcont31, %bb29
+ %124 = invoke %struct.btTransform* @_ZN11btTransform11getIdentityEv()
+ to label %invcont33 unwind label %lpad167 ; [#uses=1]
+
+invcont33: ; preds = %bb32
+ store %struct.btTransform* %124, %struct.btTransform** %16, align 4
+ %125 = invoke i8* @_Znwj(i32 200)
+ to label %invcont34 unwind label %lpad167 ; [#uses=1]
+
+invcont34: ; preds = %invcont33
+ %126 = bitcast i8* %125 to %struct.btDefaultMotionState* ; [#uses=1]
+ store %struct.btDefaultMotionState* %126, %struct.btDefaultMotionState** %15, align 4
+ %127 = load %struct.btDefaultMotionState** %15, align 4 ; [#uses=1]
+ %128 = load %struct.btTransform** %16, align 4 ; [#uses=1]
+ call void @_ZN20btDefaultMotionStateC1ERK11btTransformS2_(%struct.btDefaultMotionState* %127, %struct.btTransform* %groundTransform, %struct.btTransform* %128) nounwind
+ %129 = load %struct.btDefaultMotionState** %15, align 4 ; [#uses=1]
+ store %struct.btDefaultMotionState* %129, %struct.btDefaultMotionState** %myMotionState, align 4
+ %130 = load %struct.btCollisionShape** %groundShape, align 4 ; [#uses=1]
+ %131 = load %struct.btDefaultMotionState** %myMotionState, align 4 ; [#uses=1]
+ %132 = bitcast %struct.btDefaultMotionState* %131 to %struct.btActionInterface* ; [#uses=1]
+ %133 = load float* %mass, align 4 ; [#uses=1]
+ call void @_ZN11btRigidBody27btRigidBodyConstructionInfoC1EfP13btMotionStateP16btCollisionShapeRK9btVector3(%"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbInfo, float %133, %struct.btActionInterface* %132, %struct.btCollisionShape* %130, %struct.btQuadWord* %localInertia) nounwind
+ %134 = invoke i8* @_ZN17btCollisionObjectnwEj(i32 608) inlinehint
+ to label %invcont35 unwind label %lpad167 ; [#uses=1]
+
+invcont35: ; preds = %invcont34
+ %135 = bitcast i8* %134 to %struct.btRigidBody* ; [#uses=1]
+ store %struct.btRigidBody* %135, %struct.btRigidBody** %14, align 4
+ %136 = load %struct.btRigidBody** %14, align 4 ; [#uses=1]
+ invoke void @_ZN11btRigidBodyC1ERKNS_27btRigidBodyConstructionInfoE(%struct.btRigidBody* %136, %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbInfo)
+ to label %invcont36 unwind label %lpad171
+
+invcont36: ; preds = %invcont35
+ %137 = load %struct.btRigidBody** %14, align 4 ; [#uses=1]
+ store %struct.btRigidBody* %137, %struct.btRigidBody** %body, align 4
+ %138 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %139 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %138, i32 0, i32 0 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btDynamicsWorld* %139, i32 0, i32 0 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btCollisionWorld* %140, i32 0, i32 0 ; [#uses=1]
+ %142 = load i32 (...)*** %141, align 4 ; [#uses=1]
+ %143 = getelementptr inbounds i32 (...)** %142, i32 20 ; [#uses=1]
+ %144 = load i32 (...)** %143, align 1 ; [#uses=1]
+ %145 = bitcast i32 (...)* %144 to void (%struct.btDiscreteDynamicsWorld*, %struct.btRigidBody*)* ; [#uses=1]
+ %146 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %147 = load %struct.btRigidBody** %body, align 4 ; [#uses=1]
+ invoke void %145(%struct.btDiscreteDynamicsWorld* %146, %struct.btRigidBody* %147)
+ to label %invcont37 unwind label %lpad167
+
+invcont37: ; preds = %invcont36
+ br label %bb43
+
+bb38: ; preds = %ppad206
+ %eh_select39 = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select39, i32* %save_filt.644, align 4
+ %eh_value40 = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value40, i8** %save_eptr.643, align 4
+ %148 = load %struct.btRigidBody** %14, align 4 ; [#uses=1]
+ %149 = bitcast %struct.btRigidBody* %148 to i8* ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectdlEPv(i8* %149) inlinehint
+ to label %invcont41 unwind label %lpad175
+
+invcont41: ; preds = %bb38
+ %150 = load i8** %save_eptr.643, align 4 ; [#uses=1]
+ store i8* %150, i8** %eh_exception, align 4
+ %151 = load i32* %save_filt.644, align 4 ; [#uses=1]
+ store i32 %151, i32* %eh_selector, align 4
+ br label %ppad205
+
+bb42: ; preds = %ppad207
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+bb43: ; preds = %invcont37
+ %152 = invoke i8* @_ZN13btSphereShapenwEj(i32 52) inlinehint
+ to label %invcont50 unwind label %lpad167 ; [#uses=1]
+
+invcont50: ; preds = %bb43
+ %153 = bitcast i8* %152 to %struct.btPolyhedralConvexShape* ; [#uses=1]
+ store %struct.btPolyhedralConvexShape* %153, %struct.btPolyhedralConvexShape** %13, align 4
+ %154 = load %struct.btPolyhedralConvexShape** %13, align 4 ; [#uses=1]
+ invoke void @_ZN13btSphereShapeC1Ef(%struct.btPolyhedralConvexShape* %154, float 1.000000e+00)
+ to label %invcont51 unwind label %lpad179
+
+invcont51: ; preds = %invcont50
+ %155 = load %struct.btPolyhedralConvexShape** %13, align 4 ; [#uses=1]
+ %156 = bitcast %struct.btPolyhedralConvexShape* %155 to %struct.btCollisionShape* ; [#uses=1]
+ store %struct.btCollisionShape* %156, %struct.btCollisionShape** %colShape, align 4
+ invoke void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE9push_backERKS1_(%"struct.btAlignedObjectArray<btCollisionShape*>"* %collisionShapes, %struct.btCollisionShape** %colShape) inlinehint
+ to label %invcont52 unwind label %lpad167
+
+invcont52: ; preds = %invcont51
+ br label %bb58
+
+bb53: ; preds = %ppad208
+ %eh_select54 = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select54, i32* %save_filt.646, align 4
+ %eh_value55 = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value55, i8** %save_eptr.645, align 4
+ %157 = load %struct.btPolyhedralConvexShape** %13, align 4 ; [#uses=1]
+ %158 = bitcast %struct.btPolyhedralConvexShape* %157 to i8* ; [#uses=1]
+ invoke void @_ZN13btSphereShapedlEPv(i8* %158) inlinehint
+ to label %invcont56 unwind label %lpad183
+
+invcont56: ; preds = %bb53
+ %159 = load i8** %save_eptr.645, align 4 ; [#uses=1]
+ store i8* %159, i8** %eh_exception, align 4
+ %160 = load i32* %save_filt.646, align 4 ; [#uses=1]
+ store i32 %160, i32* %eh_selector, align 4
+ br label %ppad205
+
+bb57: ; preds = %ppad209
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+bb58: ; preds = %invcont52
+ call void @_ZN11btTransformC1Ev(%struct.btTransform* %startTransform) nounwind
+ call void @_ZN11btTransform11setIdentityEv(%struct.btTransform* %startTransform) nounwind
+ store float 1.000000e+00, float* %mass44, align 4
+ %161 = load float* %mass44, align 4 ; [#uses=1]
+ %162 = fcmp une float %161, 0.000000e+00 ; [#uses=1]
+ %163 = zext i1 %162 to i8 ; [#uses=1]
+ store i8 %163, i8* %isDynamic45, align 1
+ store float 0.000000e+00, float* %12, align 4
+ store float 0.000000e+00, float* %11, align 4
+ store float 0.000000e+00, float* %10, align 4
+ call void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %localInertia46, float* %10, float* %11, float* %12) nounwind
+ %164 = load i8* %isDynamic45, align 1 ; [#uses=1]
+ %toBool59 = icmp ne i8 %164, 0 ; [#uses=1]
+ br i1 %toBool59, label %bb60, label %bb62
+
+bb60: ; preds = %bb58
+ %165 = load %struct.btCollisionShape** %colShape, align 4 ; [#uses=0]
+ %166 = load %struct.btCollisionShape** %colShape, align 4 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btCollisionShape* %166, i32 0, i32 0 ; [#uses=1]
+ %168 = load i32 (...)*** %167, align 4 ; [#uses=1]
+ %169 = getelementptr inbounds i32 (...)** %168, i32 8 ; [#uses=1]
+ %170 = load i32 (...)** %169, align 1 ; [#uses=1]
+ %171 = load %struct.btCollisionShape** %colShape, align 4 ; [#uses=1]
+ %172 = bitcast i32 (...)* %170 to void (%struct.btCollisionShape*, float, %struct.btQuadWord*)* ; [#uses=1]
+ %173 = load float* %mass44, align 4 ; [#uses=1]
+ invoke void %172(%struct.btCollisionShape* %171, float %173, %struct.btQuadWord* %localInertia46)
+ to label %invcont61 unwind label %lpad167
+
+invcont61: ; preds = %bb60
+ br label %bb62
+
+bb62: ; preds = %invcont61, %bb58
+ store float 0.000000e+00, float* %8, align 4
+ store float 1.000000e+01, float* %7, align 4
+ store float 2.000000e+00, float* %6, align 4
+ call void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %9, float* %6, float* %7, float* %8) nounwind
+ call void @_ZN11btTransform9setOriginERK9btVector3(%struct.btTransform* %startTransform, %struct.btQuadWord* %9) nounwind
+ %174 = invoke %struct.btTransform* @_ZN11btTransform11getIdentityEv()
+ to label %invcont63 unwind label %lpad167 ; [#uses=1]
+
+invcont63: ; preds = %bb62
+ store %struct.btTransform* %174, %struct.btTransform** %5, align 4
+ %175 = invoke i8* @_Znwj(i32 200)
+ to label %invcont64 unwind label %lpad167 ; [#uses=1]
+
+invcont64: ; preds = %invcont63
+ %176 = bitcast i8* %175 to %struct.btDefaultMotionState* ; [#uses=1]
+ store %struct.btDefaultMotionState* %176, %struct.btDefaultMotionState** %4, align 4
+ %177 = load %struct.btDefaultMotionState** %4, align 4 ; [#uses=1]
+ %178 = load %struct.btTransform** %5, align 4 ; [#uses=1]
+ call void @_ZN20btDefaultMotionStateC1ERK11btTransformS2_(%struct.btDefaultMotionState* %177, %struct.btTransform* %startTransform, %struct.btTransform* %178) nounwind
+ %179 = load %struct.btDefaultMotionState** %4, align 4 ; [#uses=1]
+ store %struct.btDefaultMotionState* %179, %struct.btDefaultMotionState** %myMotionState47, align 4
+ %180 = load %struct.btCollisionShape** %colShape, align 4 ; [#uses=1]
+ %181 = load %struct.btDefaultMotionState** %myMotionState47, align 4 ; [#uses=1]
+ %182 = bitcast %struct.btDefaultMotionState* %181 to %struct.btActionInterface* ; [#uses=1]
+ %183 = load float* %mass44, align 4 ; [#uses=1]
+ call void @_ZN11btRigidBody27btRigidBodyConstructionInfoC1EfP13btMotionStateP16btCollisionShapeRK9btVector3(%"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbInfo48, float %183, %struct.btActionInterface* %182, %struct.btCollisionShape* %180, %struct.btQuadWord* %localInertia46) nounwind
+ %184 = invoke i8* @_ZN17btCollisionObjectnwEj(i32 608) inlinehint
+ to label %invcont65 unwind label %lpad167 ; [#uses=1]
+
+invcont65: ; preds = %invcont64
+ %185 = bitcast i8* %184 to %struct.btRigidBody* ; [#uses=1]
+ store %struct.btRigidBody* %185, %struct.btRigidBody** %3, align 4
+ %186 = load %struct.btRigidBody** %3, align 4 ; [#uses=1]
+ invoke void @_ZN11btRigidBodyC1ERKNS_27btRigidBodyConstructionInfoE(%struct.btRigidBody* %186, %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbInfo48)
+ to label %invcont66 unwind label %lpad187
+
+invcont66: ; preds = %invcont65
+ %187 = load %struct.btRigidBody** %3, align 4 ; [#uses=1]
+ store %struct.btRigidBody* %187, %struct.btRigidBody** %body49, align 4
+ %188 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %188, i32 0, i32 0 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btDynamicsWorld* %189, i32 0, i32 0 ; [#uses=1]
+ %191 = getelementptr inbounds %struct.btCollisionWorld* %190, i32 0, i32 0 ; [#uses=1]
+ %192 = load i32 (...)*** %191, align 4 ; [#uses=1]
+ %193 = getelementptr inbounds i32 (...)** %192, i32 20 ; [#uses=1]
+ %194 = load i32 (...)** %193, align 1 ; [#uses=1]
+ %195 = bitcast i32 (...)* %194 to void (%struct.btDiscreteDynamicsWorld*, %struct.btRigidBody*)* ; [#uses=1]
+ %196 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %197 = load %struct.btRigidBody** %body49, align 4 ; [#uses=1]
+ invoke void %195(%struct.btDiscreteDynamicsWorld* %196, %struct.btRigidBody* %197)
+ to label %invcont67 unwind label %lpad167
+
+invcont67: ; preds = %invcont66
+ br label %bb73
+
+bb68: ; preds = %ppad210
+ %eh_select69 = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select69, i32* %save_filt.648, align 4
+ %eh_value70 = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value70, i8** %save_eptr.647, align 4
+ %198 = load %struct.btRigidBody** %3, align 4 ; [#uses=1]
+ %199 = bitcast %struct.btRigidBody* %198 to i8* ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectdlEPv(i8* %199) inlinehint
+ to label %invcont71 unwind label %lpad191
+
+invcont71: ; preds = %bb68
+ %200 = load i8** %save_eptr.647, align 4 ; [#uses=1]
+ store i8* %200, i8** %eh_exception, align 4
+ %201 = load i32* %save_filt.648, align 4 ; [#uses=1]
+ store i32 %201, i32* %eh_selector, align 4
+ br label %ppad205
+
+bb72: ; preds = %ppad211
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+bb73: ; preds = %invcont67
+ store i32 0, i32* %i, align 4
+ br label %bb90
+
+bb74: ; preds = %bb90
+ %202 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %203 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %202, i32 0, i32 0 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btDynamicsWorld* %203, i32 0, i32 0 ; [#uses=1]
+ %205 = getelementptr inbounds %struct.btCollisionWorld* %204, i32 0, i32 0 ; [#uses=1]
+ %206 = load i32 (...)*** %205, align 4 ; [#uses=1]
+ %207 = getelementptr inbounds i32 (...)** %206, i32 12 ; [#uses=1]
+ %208 = load i32 (...)** %207, align 1 ; [#uses=1]
+ %209 = bitcast i32 (...)* %208 to i32 (%struct.btDiscreteDynamicsWorld*, float, i32, float)* ; [#uses=1]
+ %210 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %211 = invoke i32 %209(%struct.btDiscreteDynamicsWorld* %210, float 0x3F91111120000000, i32 10, float 0x3F91111120000000)
+ to label %invcont75 unwind label %lpad167 ; [#uses=0]
+
+invcont75: ; preds = %bb74
+ %212 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %213 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %212, i32 0, i32 0 ; [#uses=1]
+ %214 = getelementptr inbounds %struct.btDynamicsWorld* %213, i32 0, i32 0 ; [#uses=1]
+ %215 = invoke i32 @_ZNK16btCollisionWorld22getNumCollisionObjectsEv(%struct.btCollisionWorld* %214)
+ to label %invcont76 unwind label %lpad167 ; [#uses=1]
+
+invcont76: ; preds = %invcont75
+ %216 = sub nsw i32 %215, 1 ; [#uses=1]
+ store i32 %216, i32* %j, align 4
+ br label %bb88
+
+bb77: ; preds = %bb88
+ %217 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %218 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %217, i32 0, i32 0 ; [#uses=1]
+ %219 = getelementptr inbounds %struct.btDynamicsWorld* %218, i32 0, i32 0 ; [#uses=1]
+ %220 = call %"struct.btAlignedObjectArray<btCollisionObject*>"* @_ZN16btCollisionWorld23getCollisionObjectArrayEv(%struct.btCollisionWorld* %219) nounwind ; [#uses=1]
+ %221 = load i32* %j, align 4 ; [#uses=1]
+ %222 = call %struct.btCollisionObject** @_ZN20btAlignedObjectArrayIP17btCollisionObjectEixEi(%"struct.btAlignedObjectArray<btCollisionObject*>"* %220, i32 %221) nounwind ; [#uses=1]
+ %223 = load %struct.btCollisionObject** %222, align 4 ; [#uses=1]
+ store %struct.btCollisionObject* %223, %struct.btCollisionObject** %obj, align 4
+ %224 = load %struct.btCollisionObject** %obj, align 4 ; [#uses=1]
+ %225 = call %struct.btRigidBody* @_ZN11btRigidBody6upcastEP17btCollisionObject(%struct.btCollisionObject* %224) nounwind ; [#uses=1]
+ store %struct.btRigidBody* %225, %struct.btRigidBody** %body78, align 4
+ %226 = load %struct.btRigidBody** %body78, align 4 ; [#uses=1]
+ %227 = icmp eq %struct.btRigidBody* %226, null ; [#uses=1]
+ br i1 %227, label %bb81, label %bb79
+
+bb79: ; preds = %bb77
+ %228 = load %struct.btRigidBody** %body78, align 4 ; [#uses=1]
+ %229 = call %struct.btActionInterface* @_ZN11btRigidBody14getMotionStateEv(%struct.btRigidBody* %228) nounwind ; [#uses=1]
+ %230 = icmp eq %struct.btActionInterface* %229, null ; [#uses=1]
+ br i1 %230, label %bb81, label %bb80
+
+bb80: ; preds = %bb79
+ store i8 1, i8* %iftmp.459, align 1
+ br label %bb82
+
+bb81: ; preds = %bb79, %bb77
+ store i8 0, i8* %iftmp.459, align 1
+ br label %bb82
+
+bb82: ; preds = %bb81, %bb80
+ %231 = load i8* %iftmp.459, align 1 ; [#uses=1]
+ store i8 %231, i8* %retval.458, align 1
+ %232 = load i8* %retval.458, align 1 ; [#uses=1]
+ %toBool83 = icmp ne i8 %232, 0 ; [#uses=1]
+ br i1 %toBool83, label %bb84, label %bb87
+
+bb84: ; preds = %bb82
+ call void @_ZN11btTransformC1Ev(%struct.btTransform* %trans) nounwind
+ %233 = load %struct.btRigidBody** %body78, align 4 ; [#uses=1]
+ %234 = call %struct.btActionInterface* @_ZN11btRigidBody14getMotionStateEv(%struct.btRigidBody* %233) nounwind ; [#uses=1]
+ store %struct.btActionInterface* %234, %struct.btActionInterface** %2, align 4
+ %235 = load %struct.btActionInterface** %2, align 4 ; [#uses=1]
+ %236 = getelementptr inbounds %struct.btActionInterface* %235, i32 0, i32 0 ; [#uses=1]
+ %237 = load i32 (...)*** %236, align 4 ; [#uses=1]
+ %238 = getelementptr inbounds i32 (...)** %237, i32 2 ; [#uses=1]
+ %239 = load i32 (...)** %238, align 1 ; [#uses=1]
+ %240 = bitcast i32 (...)* %239 to void (%struct.btActionInterface*, %struct.btTransform*)* ; [#uses=1]
+ %241 = load %struct.btActionInterface** %2, align 4 ; [#uses=1]
+ invoke void %240(%struct.btActionInterface* %241, %struct.btTransform* %trans)
+ to label %invcont85 unwind label %lpad167
+
+invcont85: ; preds = %bb84
+ %242 = call %struct.btQuadWord* @_ZN11btTransform9getOriginEv(%struct.btTransform* %trans) nounwind ; [#uses=1]
+ %243 = call float* @_ZNK9btVector34getZEv(%struct.btQuadWord* %242) nounwind ; [#uses=1]
+ %244 = load float* %243, align 4 ; [#uses=1]
+ %245 = fpext float %244 to double ; [#uses=1]
+ %246 = call %struct.btQuadWord* @_ZN11btTransform9getOriginEv(%struct.btTransform* %trans) nounwind ; [#uses=1]
+ %247 = call float* @_ZNK9btVector34getYEv(%struct.btQuadWord* %246) nounwind ; [#uses=1]
+ %248 = load float* %247, align 4 ; [#uses=1]
+ %249 = fpext float %248 to double ; [#uses=1]
+ %250 = call %struct.btQuadWord* @_ZN11btTransform9getOriginEv(%struct.btTransform* %trans) nounwind ; [#uses=1]
+ %251 = call float* @_ZNK9btVector34getXEv(%struct.btQuadWord* %250) nounwind ; [#uses=1]
+ %252 = load float* %251, align 4 ; [#uses=1]
+ %253 = fpext float %252 to double ; [#uses=1]
+ %254 = invoke i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([28 x i8]* @.str3, i32 0, i32 0), double %253, double %249, double %245)
+ to label %invcont86 unwind label %lpad167 ; [#uses=0]
+
+invcont86: ; preds = %invcont85
+ br label %bb87
+
+bb87: ; preds = %invcont86, %bb82
+ %255 = load i32* %j, align 4 ; [#uses=1]
+ %256 = sub nsw i32 %255, 1 ; [#uses=1]
+ store i32 %256, i32* %j, align 4
+ br label %bb88
+
+bb88: ; preds = %bb87, %invcont76
+ %257 = load i32* %j, align 4 ; [#uses=1]
+ %258 = icmp sge i32 %257, 0 ; [#uses=1]
+ br i1 %258, label %bb77, label %bb89
+
+bb89: ; preds = %bb88
+ %259 = load i32* %i, align 4 ; [#uses=1]
+ %260 = add nsw i32 %259, 1 ; [#uses=1]
+ store i32 %260, i32* %i, align 4
+ br label %bb90
+
+bb90: ; preds = %bb89, %bb73
+ %261 = load i32* %i, align 4 ; [#uses=1]
+ %262 = icmp sle i32 %261, 99 ; [#uses=1]
+ br i1 %262, label %bb74, label %bb91
+
+bb91: ; preds = %bb90
+ %263 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %264 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %263, i32 0, i32 0 ; [#uses=1]
+ %265 = getelementptr inbounds %struct.btDynamicsWorld* %264, i32 0, i32 0 ; [#uses=1]
+ %266 = invoke i32 @_ZNK16btCollisionWorld22getNumCollisionObjectsEv(%struct.btCollisionWorld* %265)
+ to label %invcont92 unwind label %lpad167 ; [#uses=1]
+
+invcont92: ; preds = %bb91
+ %267 = sub nsw i32 %266, 1 ; [#uses=1]
+ store i32 %267, i32* %i, align 4
+ br label %bb109
+
+bb93: ; preds = %bb109
+ %268 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %269 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %268, i32 0, i32 0 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.btDynamicsWorld* %269, i32 0, i32 0 ; [#uses=1]
+ %271 = call %"struct.btAlignedObjectArray<btCollisionObject*>"* @_ZN16btCollisionWorld23getCollisionObjectArrayEv(%struct.btCollisionWorld* %270) nounwind ; [#uses=1]
+ %272 = load i32* %i, align 4 ; [#uses=1]
+ %273 = call %struct.btCollisionObject** @_ZN20btAlignedObjectArrayIP17btCollisionObjectEixEi(%"struct.btAlignedObjectArray<btCollisionObject*>"* %271, i32 %272) nounwind ; [#uses=1]
+ %274 = load %struct.btCollisionObject** %273, align 4 ; [#uses=1]
+ store %struct.btCollisionObject* %274, %struct.btCollisionObject** %obj94, align 4
+ %275 = load %struct.btCollisionObject** %obj94, align 4 ; [#uses=1]
+ %276 = call %struct.btRigidBody* @_ZN11btRigidBody6upcastEP17btCollisionObject(%struct.btCollisionObject* %275) nounwind ; [#uses=1]
+ store %struct.btRigidBody* %276, %struct.btRigidBody** %body95, align 4
+ %277 = load %struct.btRigidBody** %body95, align 4 ; [#uses=1]
+ %278 = icmp eq %struct.btRigidBody* %277, null ; [#uses=1]
+ br i1 %278, label %bb98, label %bb96
+
+bb96: ; preds = %bb93
+ %279 = load %struct.btRigidBody** %body95, align 4 ; [#uses=1]
+ %280 = call %struct.btActionInterface* @_ZN11btRigidBody14getMotionStateEv(%struct.btRigidBody* %279) nounwind ; [#uses=1]
+ %281 = icmp eq %struct.btActionInterface* %280, null ; [#uses=1]
+ br i1 %281, label %bb98, label %bb97
+
+bb97: ; preds = %bb96
+ store i8 1, i8* %iftmp.461, align 1
+ br label %bb99
+
+bb98: ; preds = %bb96, %bb93
+ store i8 0, i8* %iftmp.461, align 1
+ br label %bb99
+
+bb99: ; preds = %bb98, %bb97
+ %282 = load i8* %iftmp.461, align 1 ; [#uses=1]
+ store i8 %282, i8* %retval.460, align 1
+ %283 = load i8* %retval.460, align 1 ; [#uses=1]
+ %toBool100 = icmp ne i8 %283, 0 ; [#uses=1]
+ br i1 %toBool100, label %bb101, label %bb104
+
+bb101: ; preds = %bb99
+ %284 = load %struct.btRigidBody** %body95, align 4 ; [#uses=1]
+ %285 = call %struct.btActionInterface* @_ZN11btRigidBody14getMotionStateEv(%struct.btRigidBody* %284) nounwind ; [#uses=1]
+ store %struct.btActionInterface* %285, %struct.btActionInterface** %1, align 4
+ %286 = load %struct.btActionInterface** %1, align 4 ; [#uses=1]
+ %287 = icmp ne %struct.btActionInterface* %286, null ; [#uses=1]
+ br i1 %287, label %bb102, label %bb104
+
+bb102: ; preds = %bb101
+ %288 = load %struct.btActionInterface** %1, align 4 ; [#uses=1]
+ %289 = getelementptr inbounds %struct.btActionInterface* %288, i32 0, i32 0 ; [#uses=1]
+ %290 = load i32 (...)*** %289, align 4 ; [#uses=1]
+ %291 = getelementptr inbounds i32 (...)** %290, i32 1 ; [#uses=1]
+ %292 = load i32 (...)** %291, align 1 ; [#uses=1]
+ %293 = bitcast i32 (...)* %292 to void (%struct.btActionInterface*)* ; [#uses=1]
+ %294 = load %struct.btActionInterface** %1, align 4 ; [#uses=1]
+ invoke void %293(%struct.btActionInterface* %294)
+ to label %invcont103 unwind label %lpad167
+
+invcont103: ; preds = %bb102
+ br label %bb104
+
+bb104: ; preds = %invcont103, %bb101, %bb99
+ %295 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %296 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %295, i32 0, i32 0 ; [#uses=1]
+ %297 = getelementptr inbounds %struct.btDynamicsWorld* %296, i32 0, i32 0 ; [#uses=1]
+ %298 = getelementptr inbounds %struct.btCollisionWorld* %297, i32 0, i32 0 ; [#uses=1]
+ %299 = load i32 (...)*** %298, align 4 ; [#uses=1]
+ %300 = getelementptr inbounds i32 (...)** %299, i32 9 ; [#uses=1]
+ %301 = load i32 (...)** %300, align 1 ; [#uses=1]
+ %302 = bitcast i32 (...)* %301 to void (%struct.btDiscreteDynamicsWorld*, %struct.btCollisionObject*)* ; [#uses=1]
+ %303 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %304 = load %struct.btCollisionObject** %obj94, align 4 ; [#uses=1]
+ invoke void %302(%struct.btDiscreteDynamicsWorld* %303, %struct.btCollisionObject* %304)
+ to label %invcont105 unwind label %lpad167
+
+invcont105: ; preds = %bb104
+ %305 = load %struct.btCollisionObject** %obj94, align 4 ; [#uses=1]
+ %306 = icmp ne %struct.btCollisionObject* %305, null ; [#uses=1]
+ br i1 %306, label %bb106, label %bb108
+
+bb106: ; preds = %invcont105
+ %307 = load %struct.btCollisionObject** %obj94, align 4 ; [#uses=1]
+ %308 = getelementptr inbounds %struct.btCollisionObject* %307, i32 0, i32 0 ; [#uses=1]
+ %309 = load i32 (...)*** %308, align 4 ; [#uses=1]
+ %310 = getelementptr inbounds i32 (...)** %309, i32 2 ; [#uses=1]
+ %311 = load i32 (...)** %310, align 1 ; [#uses=1]
+ %312 = bitcast i32 (...)* %311 to void (%struct.btCollisionObject*)* ; [#uses=1]
+ %313 = load %struct.btCollisionObject** %obj94, align 4 ; [#uses=1]
+ invoke void %312(%struct.btCollisionObject* %313)
+ to label %invcont107 unwind label %lpad167
+
+invcont107: ; preds = %bb106
+ br label %bb108
+
+bb108: ; preds = %invcont107, %invcont105
+ %314 = load i32* %i, align 4 ; [#uses=1]
+ %315 = sub nsw i32 %314, 1 ; [#uses=1]
+ store i32 %315, i32* %i, align 4
+ br label %bb109
+
+bb109: ; preds = %bb108, %invcont92
+ %316 = load i32* %i, align 4 ; [#uses=1]
+ %317 = icmp sge i32 %316, 0 ; [#uses=1]
+ br i1 %317, label %bb93, label %bb110
+
+bb110: ; preds = %bb109
+ store i32 0, i32* %j111, align 4
+ br label %bb116
+
+bb112: ; preds = %bb116
+ %318 = load i32* %j111, align 4 ; [#uses=1]
+ %319 = call %struct.btCollisionShape** @_ZN20btAlignedObjectArrayIP16btCollisionShapeEixEi(%"struct.btAlignedObjectArray<btCollisionShape*>"* %collisionShapes, i32 %318) nounwind ; [#uses=1]
+ %320 = load %struct.btCollisionShape** %319, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %320, %struct.btCollisionShape** %shape, align 4
+ %321 = load i32* %j111, align 4 ; [#uses=1]
+ %322 = call %struct.btCollisionShape** @_ZN20btAlignedObjectArrayIP16btCollisionShapeEixEi(%"struct.btAlignedObjectArray<btCollisionShape*>"* %collisionShapes, i32 %321) nounwind ; [#uses=1]
+ store %struct.btCollisionShape* null, %struct.btCollisionShape** %322, align 4
+ %323 = load %struct.btCollisionShape** %shape, align 4 ; [#uses=1]
+ %324 = icmp ne %struct.btCollisionShape* %323, null ; [#uses=1]
+ br i1 %324, label %bb113, label %bb115
+
+bb113: ; preds = %bb112
+ %325 = load %struct.btCollisionShape** %shape, align 4 ; [#uses=1]
+ %326 = getelementptr inbounds %struct.btCollisionShape* %325, i32 0, i32 0 ; [#uses=1]
+ %327 = load i32 (...)*** %326, align 4 ; [#uses=1]
+ %328 = getelementptr inbounds i32 (...)** %327, i32 1 ; [#uses=1]
+ %329 = load i32 (...)** %328, align 1 ; [#uses=1]
+ %330 = bitcast i32 (...)* %329 to void (%struct.btCollisionShape*)* ; [#uses=1]
+ %331 = load %struct.btCollisionShape** %shape, align 4 ; [#uses=1]
+ invoke void %330(%struct.btCollisionShape* %331)
+ to label %invcont114 unwind label %lpad167
+
+invcont114: ; preds = %bb113
+ br label %bb115
+
+bb115: ; preds = %invcont114, %bb112
+ %332 = load i32* %j111, align 4 ; [#uses=1]
+ %333 = add nsw i32 %332, 1 ; [#uses=1]
+ store i32 %333, i32* %j111, align 4
+ br label %bb116
+
+bb116: ; preds = %bb115, %bb110
+ %334 = call i32 @_ZNK20btAlignedObjectArrayIP16btCollisionShapeE4sizeEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %collisionShapes) nounwind ; [#uses=1]
+ %335 = load i32* %j111, align 4 ; [#uses=1]
+ %336 = icmp sgt i32 %334, %335 ; [#uses=1]
+ %337 = zext i1 %336 to i8 ; [#uses=1]
+ store i8 %337, i8* %retval.462, align 1
+ %338 = load i8* %retval.462, align 1 ; [#uses=1]
+ %toBool117 = icmp ne i8 %338, 0 ; [#uses=1]
+ br i1 %toBool117, label %bb112, label %bb118
+
+bb118: ; preds = %bb116
+ %339 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %340 = icmp ne %struct.btDiscreteDynamicsWorld* %339, null ; [#uses=1]
+ br i1 %340, label %bb119, label %bb121
+
+bb119: ; preds = %bb118
+ %341 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ %342 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %341, i32 0, i32 0 ; [#uses=1]
+ %343 = getelementptr inbounds %struct.btDynamicsWorld* %342, i32 0, i32 0 ; [#uses=1]
+ %344 = getelementptr inbounds %struct.btCollisionWorld* %343, i32 0, i32 0 ; [#uses=1]
+ %345 = load i32 (...)*** %344, align 4 ; [#uses=1]
+ %346 = getelementptr inbounds i32 (...)** %345, i32 1 ; [#uses=1]
+ %347 = load i32 (...)** %346, align 1 ; [#uses=1]
+ %348 = bitcast i32 (...)* %347 to void (%struct.btDiscreteDynamicsWorld*)* ; [#uses=1]
+ %349 = load %struct.btDiscreteDynamicsWorld** %dynamicsWorld, align 4 ; [#uses=1]
+ invoke void %348(%struct.btDiscreteDynamicsWorld* %349)
+ to label %invcont120 unwind label %lpad167
+
+invcont120: ; preds = %bb119
+ br label %bb121
+
+bb121: ; preds = %invcont120, %bb118
+ %350 = load %struct.btSequentialImpulseConstraintSolver** %solver, align 4 ; [#uses=1]
+ %351 = icmp ne %struct.btSequentialImpulseConstraintSolver* %350, null ; [#uses=1]
+ br i1 %351, label %bb122, label %bb124
+
+bb122: ; preds = %bb121
+ %352 = load %struct.btSequentialImpulseConstraintSolver** %solver, align 4 ; [#uses=1]
+ %353 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %352, i32 0, i32 0 ; [#uses=1]
+ %354 = getelementptr inbounds %struct.btActionInterface* %353, i32 0, i32 0 ; [#uses=1]
+ %355 = load i32 (...)*** %354, align 4 ; [#uses=1]
+ %356 = getelementptr inbounds i32 (...)** %355, i32 1 ; [#uses=1]
+ %357 = load i32 (...)** %356, align 1 ; [#uses=1]
+ %358 = bitcast i32 (...)* %357 to void (%struct.btSequentialImpulseConstraintSolver*)* ; [#uses=1]
+ %359 = load %struct.btSequentialImpulseConstraintSolver** %solver, align 4 ; [#uses=1]
+ invoke void %358(%struct.btSequentialImpulseConstraintSolver* %359)
+ to label %invcont123 unwind label %lpad167
+
+invcont123: ; preds = %bb122
+ br label %bb124
+
+bb124: ; preds = %invcont123, %bb121
+ %360 = load %struct.btActionInterface** %overlappingPairCache, align 4 ; [#uses=1]
+ %361 = icmp ne %struct.btActionInterface* %360, null ; [#uses=1]
+ br i1 %361, label %bb125, label %bb127
+
+bb125: ; preds = %bb124
+ %362 = load %struct.btActionInterface** %overlappingPairCache, align 4 ; [#uses=1]
+ %363 = getelementptr inbounds %struct.btActionInterface* %362, i32 0, i32 0 ; [#uses=1]
+ %364 = load i32 (...)*** %363, align 4 ; [#uses=1]
+ %365 = getelementptr inbounds i32 (...)** %364, i32 1 ; [#uses=1]
+ %366 = load i32 (...)** %365, align 1 ; [#uses=1]
+ %367 = bitcast i32 (...)* %366 to void (%struct.btActionInterface*)* ; [#uses=1]
+ %368 = load %struct.btActionInterface** %overlappingPairCache, align 4 ; [#uses=1]
+ invoke void %367(%struct.btActionInterface* %368)
+ to label %invcont126 unwind label %lpad167
+
+invcont126: ; preds = %bb125
+ br label %bb127
+
+bb127: ; preds = %invcont126, %bb124
+ %369 = load %struct.btCollisionDispatcher** %dispatcher, align 4 ; [#uses=1]
+ %370 = icmp ne %struct.btCollisionDispatcher* %369, null ; [#uses=1]
+ br i1 %370, label %bb128, label %bb130
+
+bb128: ; preds = %bb127
+ %371 = load %struct.btCollisionDispatcher** %dispatcher, align 4 ; [#uses=1]
+ %372 = getelementptr inbounds %struct.btCollisionDispatcher* %371, i32 0, i32 0 ; [#uses=1]
+ %373 = getelementptr inbounds %struct.btActionInterface* %372, i32 0, i32 0 ; [#uses=1]
+ %374 = load i32 (...)*** %373, align 4 ; [#uses=1]
+ %375 = getelementptr inbounds i32 (...)** %374, i32 1 ; [#uses=1]
+ %376 = load i32 (...)** %375, align 1 ; [#uses=1]
+ %377 = bitcast i32 (...)* %376 to void (%struct.btCollisionDispatcher*)* ; [#uses=1]
+ %378 = load %struct.btCollisionDispatcher** %dispatcher, align 4 ; [#uses=1]
+ invoke void %377(%struct.btCollisionDispatcher* %378)
+ to label %invcont129 unwind label %lpad167
+
+invcont129: ; preds = %bb128
+ br label %bb130
+
+bb130: ; preds = %invcont129, %bb127
+ %379 = load %struct.btDefaultCollisionConfiguration** %collisionConfiguration, align 4 ; [#uses=1]
+ %380 = icmp ne %struct.btDefaultCollisionConfiguration* %379, null ; [#uses=1]
+ br i1 %380, label %bb131, label %bb133
+
+bb131: ; preds = %bb130
+ %381 = load %struct.btDefaultCollisionConfiguration** %collisionConfiguration, align 4 ; [#uses=1]
+ %382 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %381, i32 0, i32 0 ; [#uses=1]
+ %383 = getelementptr inbounds %struct.btActionInterface* %382, i32 0, i32 0 ; [#uses=1]
+ %384 = load i32 (...)*** %383, align 4 ; [#uses=1]
+ %385 = getelementptr inbounds i32 (...)** %384, i32 1 ; [#uses=1]
+ %386 = load i32 (...)** %385, align 1 ; [#uses=1]
+ %387 = bitcast i32 (...)* %386 to void (%struct.btDefaultCollisionConfiguration*)* ; [#uses=1]
+ %388 = load %struct.btDefaultCollisionConfiguration** %collisionConfiguration, align 4 ; [#uses=1]
+ invoke void %387(%struct.btDefaultCollisionConfiguration* %388)
+ to label %invcont132 unwind label %lpad167
+
+invcont132: ; preds = %bb131
+ br label %bb133
+
+bb133: ; preds = %invcont132, %bb130
+ invoke void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE5clearEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %collisionShapes) inlinehint
+ to label %invcont134 unwind label %lpad167
+
+invcont134: ; preds = %bb133
+ call void @_ZN20btAlignedObjectArrayIP16btCollisionShapeED1Ev(%"struct.btAlignedObjectArray<btCollisionShape*>"* %collisionShapes)
+ store i32 0, i32* %0, align 4
+ %389 = load i32* %0, align 4 ; [#uses=1]
+ store i32 %389, i32* %retval, align 4
+ br label %return
+
+bb135: ; preds = %ppad205
+ %eh_select136 = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select136, i32* %save_filt.650, align 4
+ %eh_value137 = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value137, i8** %save_eptr.649, align 4
+ invoke void @_ZN20btAlignedObjectArrayIP16btCollisionShapeED1Ev(%"struct.btAlignedObjectArray<btCollisionShape*>"* %collisionShapes)
+ to label %invcont138 unwind label %lpad195
+
+invcont138: ; preds = %bb135
+ %390 = load i8** %save_eptr.649, align 4 ; [#uses=1]
+ store i8* %390, i8** %eh_exception, align 4
+ %391 = load i32* %save_filt.650, align 4 ; [#uses=1]
+ store i32 %391, i32* %eh_selector, align 4
+ br label %Unwind
+
+bb139: ; preds = %ppad212
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+return: ; preds = %invcont134
+ %retval140 = load i32* %retval ; [#uses=1]
+ ret i32 %retval140
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr, i8** %eh_exception
+ %eh_ptr141 = load i8** %eh_exception ; [#uses=1]
+ %eh_select142 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr141, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select142, i32* %eh_selector
+ br label %ppad
+
+lpad143: ; preds = %invcont
+ %eh_ptr144 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr144, i8** %eh_exception
+ %eh_ptr145 = load i8** %eh_exception ; [#uses=1]
+ %eh_select146 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr145, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select146, i32* %eh_selector
+ br label %ppad199
+
+lpad147: ; preds = %bb2
+ %eh_ptr148 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr148, i8** %eh_exception
+ %eh_ptr149 = load i8** %eh_exception ; [#uses=1]
+ %eh_select150 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr149, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select150, i32* %eh_selector
+ br label %ppad200
+
+lpad151: ; preds = %bb7
+ %eh_ptr152 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr152, i8** %eh_exception
+ %eh_ptr153 = load i8** %eh_exception ; [#uses=1]
+ %eh_select154 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr153, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select154, i32* %eh_selector
+ br label %ppad201
+
+lpad155: ; preds = %bb12
+ %eh_ptr156 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr156, i8** %eh_exception
+ %eh_ptr157 = load i8** %eh_exception ; [#uses=1]
+ %eh_select158 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr157, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select158, i32* %eh_selector
+ br label %ppad202
+
+lpad159: ; preds = %bb17
+ %eh_ptr160 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr160, i8** %eh_exception
+ %eh_ptr161 = load i8** %eh_exception ; [#uses=1]
+ %eh_select162 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr161, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select162, i32* %eh_selector
+ br label %ppad203
+
+lpad163: ; preds = %bb24
+ %eh_ptr164 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr164, i8** %eh_exception
+ %eh_ptr165 = load i8** %eh_exception ; [#uses=1]
+ %eh_select166 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr165, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=1]
+ store i32 %eh_select166, i32* %eh_selector
+ br label %ppad204
+
+lpad167: ; preds = %bb133, %bb131, %bb128, %bb125, %bb122, %bb119, %bb113, %bb106, %bb104, %bb102, %bb91, %invcont85, %bb84, %invcont75, %bb74, %invcont66, %invcont64, %invcont63, %bb62, %bb60, %invcont51, %bb43, %invcont36, %invcont34, %invcont33, %bb32, %bb30, %bb22
+ %eh_ptr168 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr168, i8** %eh_exception
+ %eh_ptr169 = load i8** %eh_exception ; [#uses=1]
+ %eh_select170 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr169, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select170, i32* %eh_selector
+ br label %ppad205
+
+lpad171: ; preds = %invcont35
+ %eh_ptr172 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr172, i8** %eh_exception
+ %eh_ptr173 = load i8** %eh_exception ; [#uses=1]
+ %eh_select174 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr173, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select174, i32* %eh_selector
+ br label %ppad206
+
+lpad175: ; preds = %bb38
+ %eh_ptr176 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr176, i8** %eh_exception
+ %eh_ptr177 = load i8** %eh_exception ; [#uses=1]
+ %eh_select178 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr177, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=1]
+ store i32 %eh_select178, i32* %eh_selector
+ br label %ppad207
+
+lpad179: ; preds = %invcont50
+ %eh_ptr180 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr180, i8** %eh_exception
+ %eh_ptr181 = load i8** %eh_exception ; [#uses=1]
+ %eh_select182 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr181, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select182, i32* %eh_selector
+ br label %ppad208
+
+lpad183: ; preds = %bb53
+ %eh_ptr184 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr184, i8** %eh_exception
+ %eh_ptr185 = load i8** %eh_exception ; [#uses=1]
+ %eh_select186 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr185, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=1]
+ store i32 %eh_select186, i32* %eh_selector
+ br label %ppad209
+
+lpad187: ; preds = %invcont65
+ %eh_ptr188 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr188, i8** %eh_exception
+ %eh_ptr189 = load i8** %eh_exception ; [#uses=1]
+ %eh_select190 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr189, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select190, i32* %eh_selector
+ br label %ppad210
+
+lpad191: ; preds = %bb68
+ %eh_ptr192 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr192, i8** %eh_exception
+ %eh_ptr193 = load i8** %eh_exception ; [#uses=1]
+ %eh_select194 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr193, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=1]
+ store i32 %eh_select194, i32* %eh_selector
+ br label %ppad211
+
+lpad195: ; preds = %bb135
+ %eh_ptr196 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr196, i8** %eh_exception
+ %eh_ptr197 = load i8** %eh_exception ; [#uses=1]
+ %eh_select198 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr197, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=1]
+ store i32 %eh_select198, i32* %eh_selector
+ br label %ppad212
+
+ppad: ; preds = %lpad
+ br label %bb
+
+ppad199: ; preds = %lpad143
+ br label %bb4
+
+ppad200: ; preds = %lpad147
+ br label %bb9
+
+ppad201: ; preds = %lpad151
+ br label %bb14
+
+ppad202: ; preds = %lpad155
+ br label %bb19
+
+ppad203: ; preds = %lpad159
+ br label %bb24
+
+ppad204: ; preds = %lpad163
+ br label %bb28
+
+ppad205: ; preds = %lpad167, %invcont71, %invcont56, %invcont41
+ br label %bb135
+
+ppad206: ; preds = %lpad171
+ br label %bb38
+
+ppad207: ; preds = %lpad175
+ br label %bb42
+
+ppad208: ; preds = %lpad179
+ br label %bb53
+
+ppad209: ; preds = %lpad183
+ br label %bb57
+
+ppad210: ; preds = %lpad187
+ br label %bb68
+
+ppad211: ; preds = %lpad191
+ br label %bb72
+
+ppad212: ; preds = %lpad195
+ br label %bb139
+
+Unwind: ; preds = %invcont138, %invcont27, %bb19, %bb14, %bb9, %bb4, %bb
+ %eh_ptr213 = load i8** %eh_exception ; [#uses=1]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr213)
+ unreachable
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZN9btVector3C1Ev(%struct.btQuadWord* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=1]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %this, %struct.btQuadWord** %this_addr
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=13]
+define linkonce_odr void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %this, float* %x, float* %y, float* %z) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=5]
+ %x_addr = alloca float*, align 4 ; [#uses=2]
+ %y_addr = alloca float*, align 4 ; [#uses=2]
+ %z_addr = alloca float*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %this, %struct.btQuadWord** %this_addr
+ store float* %x, float** %x_addr
+ store float* %y, float** %y_addr
+ store float* %z, float** %z_addr
+ %0 = load float** %x_addr, align 4 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds [4 x float]* %3, i32 0, i32 0 ; [#uses=1]
+ store float %1, float* %4, align 4
+ %5 = load float** %y_addr, align 4 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds [4 x float]* %8, i32 0, i32 1 ; [#uses=1]
+ store float %6, float* %9, align 4
+ %10 = load float** %z_addr, align 4 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %12, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds [4 x float]* %13, i32 0, i32 2 ; [#uses=1]
+ store float %11, float* %14, align 4
+ %15 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %15, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds [4 x float]* %16, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=6]
+define linkonce_odr float @_ZNK9btVector33dotERKS_(%struct.btQuadWord* %this, %struct.btQuadWord* %v) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=4]
+ %v_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=4]
+ %retval = alloca float ; [#uses=2]
+ %0 = alloca float ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %this, %struct.btQuadWord** %this_addr
+ store %struct.btQuadWord* %v, %struct.btQuadWord** %v_addr
+ %1 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds [4 x float]* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds [4 x float]* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %4, %8 ; [#uses=1]
+ %10 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %10, i32 0, i32 0 ; [#uses=1]
+ %12 = getelementptr inbounds [4 x float]* %11, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %14, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds [4 x float]* %15, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fmul float %13, %17 ; [#uses=1]
+ %19 = fadd float %9, %18 ; [#uses=1]
+ %20 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %20, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds [4 x float]* %21, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %24, i32 0, i32 0 ; [#uses=1]
+ %26 = getelementptr inbounds [4 x float]* %25, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fmul float %23, %27 ; [#uses=1]
+ %29 = fadd float %19, %28 ; [#uses=1]
+ store float %29, float* %0, align 4
+ %30 = load float* %0, align 4 ; [#uses=1]
+ store float %30, float* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load float* %retval ; [#uses=1]
+ ret float %retval1
+}
+
+; [#uses=1]
+define linkonce_odr float* @_ZNK9btVector34getXEv(%struct.btQuadWord* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=2]
+ %retval = alloca float* ; [#uses=2]
+ %0 = alloca float* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %this, %struct.btQuadWord** %this_addr
+ %1 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds [4 x float]* %2, i32 0, i32 0 ; [#uses=1]
+ store float* %3, float** %0, align 4
+ %4 = load float** %0, align 4 ; [#uses=1]
+ store float* %4, float** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load float** %retval ; [#uses=1]
+ ret float* %retval1
+}
+
+; [#uses=1]
+define linkonce_odr float* @_ZNK9btVector34getYEv(%struct.btQuadWord* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=2]
+ %retval = alloca float* ; [#uses=2]
+ %0 = alloca float* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %this, %struct.btQuadWord** %this_addr
+ %1 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds [4 x float]* %2, i32 0, i32 1 ; [#uses=1]
+ store float* %3, float** %0, align 4
+ %4 = load float** %0, align 4 ; [#uses=1]
+ store float* %4, float** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load float** %retval ; [#uses=1]
+ ret float* %retval1
+}
+
+; [#uses=1]
+define linkonce_odr float* @_ZNK9btVector34getZEv(%struct.btQuadWord* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=2]
+ %retval = alloca float* ; [#uses=2]
+ %0 = alloca float* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %this, %struct.btQuadWord** %this_addr
+ %1 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds [4 x float]* %2, i32 0, i32 2 ; [#uses=1]
+ store float* %3, float** %0, align 4
+ %4 = load float** %0, align 4 ; [#uses=1]
+ store float* %4, float** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load float** %retval ; [#uses=1]
+ ret float* %retval1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN9btVector34setXEf(%struct.btQuadWord* %this, float %x) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=2]
+ %x_addr = alloca float, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %this, %struct.btQuadWord** %this_addr
+ store float %x, float* %x_addr
+ %0 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds [4 x float]* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %x_addr, align 4 ; [#uses=1]
+ store float %3, float* %2, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=10]
+define linkonce_odr float* @_ZNK9btVector31xEv(%struct.btQuadWord* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=2]
+ %retval = alloca float* ; [#uses=2]
+ %0 = alloca float* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %this, %struct.btQuadWord** %this_addr
+ %1 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds [4 x float]* %2, i32 0, i32 0 ; [#uses=1]
+ store float* %3, float** %0, align 4
+ %4 = load float** %0, align 4 ; [#uses=1]
+ store float* %4, float** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load float** %retval ; [#uses=1]
+ ret float* %retval1
+}
+
+; [#uses=10]
+define linkonce_odr float* @_ZNK9btVector31yEv(%struct.btQuadWord* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=2]
+ %retval = alloca float* ; [#uses=2]
+ %0 = alloca float* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %this, %struct.btQuadWord** %this_addr
+ %1 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds [4 x float]* %2, i32 0, i32 1 ; [#uses=1]
+ store float* %3, float** %0, align 4
+ %4 = load float** %0, align 4 ; [#uses=1]
+ store float* %4, float** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load float** %retval ; [#uses=1]
+ ret float* %retval1
+}
+
+; [#uses=10]
+define linkonce_odr float* @_ZNK9btVector31zEv(%struct.btQuadWord* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=2]
+ %retval = alloca float* ; [#uses=2]
+ %0 = alloca float* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %this, %struct.btQuadWord** %this_addr
+ %1 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds [4 x float]* %2, i32 0, i32 2 ; [#uses=1]
+ store float* %3, float** %0, align 4
+ %4 = load float** %0, align 4 ; [#uses=1]
+ store float* %4, float** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load float** %retval ; [#uses=1]
+ ret float* %retval1
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZN9btVector38setValueERKfS1_S1_(%struct.btQuadWord* %this, float* %x, float* %y, float* %z) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=5]
+ %x_addr = alloca float*, align 4 ; [#uses=2]
+ %y_addr = alloca float*, align 4 ; [#uses=2]
+ %z_addr = alloca float*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %this, %struct.btQuadWord** %this_addr
+ store float* %x, float** %x_addr
+ store float* %y, float** %y_addr
+ store float* %z, float** %z_addr
+ %0 = load float** %x_addr, align 4 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds [4 x float]* %3, i32 0, i32 0 ; [#uses=1]
+ store float %1, float* %4, align 4
+ %5 = load float** %y_addr, align 4 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds [4 x float]* %8, i32 0, i32 1 ; [#uses=1]
+ store float %6, float* %9, align 4
+ %10 = load float** %z_addr, align 4 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %12, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds [4 x float]* %13, i32 0, i32 2 ; [#uses=1]
+ store float %11, float* %14, align 4
+ %15 = load %struct.btQuadWord** %this_addr, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %15, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds [4 x float]* %16, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZmlRK9btVector3S1_(%struct.btQuadWord* noalias sret %agg.result, %struct.btQuadWord* %v1, %struct.btQuadWord* %v2) nounwind inlinehint {
+entry:
+ %v1_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=4]
+ %v2_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=4]
+ %0 = alloca float ; [#uses=2]
+ %1 = alloca float ; [#uses=2]
+ %2 = alloca float ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %v1, %struct.btQuadWord** %v1_addr
+ store %struct.btQuadWord* %v2, %struct.btQuadWord** %v2_addr
+ %3 = load %struct.btQuadWord** %v1_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds [4 x float]* %4, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = load %struct.btQuadWord** %v2_addr, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds [4 x float]* %8, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fmul float %6, %10 ; [#uses=1]
+ store float %11, float* %2, align 4
+ %12 = load %struct.btQuadWord** %v1_addr, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %12, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds [4 x float]* %13, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = load %struct.btQuadWord** %v2_addr, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %16, i32 0, i32 0 ; [#uses=1]
+ %18 = getelementptr inbounds [4 x float]* %17, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fmul float %15, %19 ; [#uses=1]
+ store float %20, float* %1, align 4
+ %21 = load %struct.btQuadWord** %v1_addr, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %21, i32 0, i32 0 ; [#uses=1]
+ %23 = getelementptr inbounds [4 x float]* %22, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = load %struct.btQuadWord** %v2_addr, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %25, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds [4 x float]* %26, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fmul float %24, %28 ; [#uses=1]
+ store float %29, float* %0, align 4
+ call void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %agg.result, float* %0, float* %1, float* %2) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZmiRK9btVector3S1_(%struct.btQuadWord* noalias sret %agg.result, %struct.btQuadWord* %v1, %struct.btQuadWord* %v2) nounwind inlinehint {
+entry:
+ %v1_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=4]
+ %v2_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=4]
+ %0 = alloca float ; [#uses=2]
+ %1 = alloca float ; [#uses=2]
+ %2 = alloca float ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %v1, %struct.btQuadWord** %v1_addr
+ store %struct.btQuadWord* %v2, %struct.btQuadWord** %v2_addr
+ %3 = load %struct.btQuadWord** %v1_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds [4 x float]* %4, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = load %struct.btQuadWord** %v2_addr, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds [4 x float]* %8, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fsub float %6, %10 ; [#uses=1]
+ store float %11, float* %2, align 4
+ %12 = load %struct.btQuadWord** %v1_addr, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %12, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds [4 x float]* %13, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = load %struct.btQuadWord** %v2_addr, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %16, i32 0, i32 0 ; [#uses=1]
+ %18 = getelementptr inbounds [4 x float]* %17, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fsub float %15, %19 ; [#uses=1]
+ store float %20, float* %1, align 4
+ %21 = load %struct.btQuadWord** %v1_addr, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %21, i32 0, i32 0 ; [#uses=1]
+ %23 = getelementptr inbounds [4 x float]* %22, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = load %struct.btQuadWord** %v2_addr, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %25, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds [4 x float]* %26, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fsub float %24, %28 ; [#uses=1]
+ store float %29, float* %0, align 4
+ call void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %agg.result, float* %0, float* %1, float* %2) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZngRK9btVector3(%struct.btQuadWord* noalias sret %agg.result, %struct.btQuadWord* %v) nounwind inlinehint {
+entry:
+ %v_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=4]
+ %0 = alloca float ; [#uses=2]
+ %1 = alloca float ; [#uses=2]
+ %2 = alloca float ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btQuadWord* %v, %struct.btQuadWord** %v_addr
+ %3 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds [4 x float]* %4, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = fsub float -0.000000e+00, %6 ; [#uses=1]
+ store float %7, float* %2, align 4
+ %8 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %8, i32 0, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds [4 x float]* %9, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fsub float -0.000000e+00, %11 ; [#uses=1]
+ store float %12, float* %1, align 4
+ %13 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds [4 x float]* %14, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fsub float -0.000000e+00, %16 ; [#uses=1]
+ store float %17, float* %0, align 4
+ call void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %agg.result, float* %0, float* %1, float* %2) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN11btMatrix3x3C1Ev(%struct.btMatrix3x3* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=2]
+ %0 = alloca i32 ; [#uses=4]
+ %1 = alloca %struct.btQuadWord* ; [#uses=4]
+ %2 = alloca %struct.btQuadWord* ; [#uses=3]
+ %retval.40 = alloca %struct.btQuadWord* ; [#uses=1]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btMatrix3x3* %this, %struct.btMatrix3x3** %this_addr
+ %3 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds [3 x %struct.btQuadWord]* %4, i32 0, i32 0 ; [#uses=1]
+ store %struct.btQuadWord* %5, %struct.btQuadWord** %2, align 4
+ %6 = load %struct.btQuadWord** %2, align 4 ; [#uses=1]
+ store %struct.btQuadWord* %6, %struct.btQuadWord** %1, align 4
+ store i32 2, i32* %0, align 4
+ br label %bb1
+
+bb: ; preds = %bb1
+ %7 = load %struct.btQuadWord** %1, align 4 ; [#uses=1]
+ call void @_ZN9btVector3C1Ev(%struct.btQuadWord* %7) nounwind
+ %8 = load %struct.btQuadWord** %1, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %8, i64 1 ; [#uses=1]
+ store %struct.btQuadWord* %9, %struct.btQuadWord** %1, align 4
+ %10 = load i32* %0, align 4 ; [#uses=1]
+ %11 = sub nsw i32 %10, 1 ; [#uses=1]
+ store i32 %11, i32* %0, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %12 = load i32* %0, align 4 ; [#uses=1]
+ %13 = icmp ne i32 %12, -1 ; [#uses=1]
+ br i1 %13, label %bb, label %bb2
+
+bb2: ; preds = %bb1
+ %14 = load %struct.btQuadWord** %2, align 4 ; [#uses=1]
+ store %struct.btQuadWord* %14, %struct.btQuadWord** %retval.40, align 4
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN11btMatrix3x3C1ERKS_(%struct.btMatrix3x3* %this, %struct.btMatrix3x3* %other) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=5]
+ %other_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=4]
+ %0 = alloca i32 ; [#uses=4]
+ %1 = alloca %struct.btQuadWord* ; [#uses=4]
+ %2 = alloca %struct.btQuadWord* ; [#uses=3]
+ %retval.43 = alloca %struct.btQuadWord* ; [#uses=1]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btMatrix3x3* %this, %struct.btMatrix3x3** %this_addr
+ store %struct.btMatrix3x3* %other, %struct.btMatrix3x3** %other_addr
+ %3 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds [3 x %struct.btQuadWord]* %4, i32 0, i32 0 ; [#uses=1]
+ store %struct.btQuadWord* %5, %struct.btQuadWord** %2, align 4
+ %6 = load %struct.btQuadWord** %2, align 4 ; [#uses=1]
+ store %struct.btQuadWord* %6, %struct.btQuadWord** %1, align 4
+ store i32 2, i32* %0, align 4
+ br label %bb1
+
+bb: ; preds = %bb1
+ %7 = load %struct.btQuadWord** %1, align 4 ; [#uses=1]
+ call void @_ZN9btVector3C1Ev(%struct.btQuadWord* %7) nounwind
+ %8 = load %struct.btQuadWord** %1, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %8, i64 1 ; [#uses=1]
+ store %struct.btQuadWord* %9, %struct.btQuadWord** %1, align 4
+ %10 = load i32* %0, align 4 ; [#uses=1]
+ %11 = sub nsw i32 %10, 1 ; [#uses=1]
+ store i32 %11, i32* %0, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %12 = load i32* %0, align 4 ; [#uses=1]
+ %13 = icmp ne i32 %12, -1 ; [#uses=1]
+ br i1 %13, label %bb, label %bb2
+
+bb2: ; preds = %bb1
+ %14 = load %struct.btQuadWord** %2, align 4 ; [#uses=1]
+ store %struct.btQuadWord* %14, %struct.btQuadWord** %retval.43, align 4
+ %15 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btMatrix3x3* %15, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds [3 x %struct.btQuadWord]* %16, i32 0, i32 0 ; [#uses=1]
+ %18 = load %struct.btMatrix3x3** %other_addr, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btMatrix3x3* %18, i32 0, i32 0 ; [#uses=1]
+ %20 = getelementptr inbounds [3 x %struct.btQuadWord]* %19, i32 0, i32 0 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %17, i32 0, i32 0 ; [#uses=4]
+ %22 = getelementptr inbounds %struct.btQuadWord* %20, i32 0, i32 0 ; [#uses=4]
+ %23 = getelementptr inbounds [4 x float]* %21, i32 0, i32 0 ; [#uses=1]
+ %24 = getelementptr inbounds [4 x float]* %22, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds [4 x float]* %21, i32 0, i32 1 ; [#uses=1]
+ %27 = getelementptr inbounds [4 x float]* %22, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds [4 x float]* %21, i32 0, i32 2 ; [#uses=1]
+ %30 = getelementptr inbounds [4 x float]* %22, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds [4 x float]* %21, i32 0, i32 3 ; [#uses=1]
+ %33 = getelementptr inbounds [4 x float]* %22, i32 0, i32 3 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btMatrix3x3* %35, i32 0, i32 0 ; [#uses=1]
+ %37 = getelementptr inbounds [3 x %struct.btQuadWord]* %36, i32 0, i32 1 ; [#uses=1]
+ %38 = load %struct.btMatrix3x3** %other_addr, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btMatrix3x3* %38, i32 0, i32 0 ; [#uses=1]
+ %40 = getelementptr inbounds [3 x %struct.btQuadWord]* %39, i32 0, i32 1 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %37, i32 0, i32 0 ; [#uses=4]
+ %42 = getelementptr inbounds %struct.btQuadWord* %40, i32 0, i32 0 ; [#uses=4]
+ %43 = getelementptr inbounds [4 x float]* %41, i32 0, i32 0 ; [#uses=1]
+ %44 = getelementptr inbounds [4 x float]* %42, i32 0, i32 0 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds [4 x float]* %41, i32 0, i32 1 ; [#uses=1]
+ %47 = getelementptr inbounds [4 x float]* %42, i32 0, i32 1 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds [4 x float]* %41, i32 0, i32 2 ; [#uses=1]
+ %50 = getelementptr inbounds [4 x float]* %42, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 4
+ %52 = getelementptr inbounds [4 x float]* %41, i32 0, i32 3 ; [#uses=1]
+ %53 = getelementptr inbounds [4 x float]* %42, i32 0, i32 3 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ %55 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btMatrix3x3* %55, i32 0, i32 0 ; [#uses=1]
+ %57 = getelementptr inbounds [3 x %struct.btQuadWord]* %56, i32 0, i32 2 ; [#uses=1]
+ %58 = load %struct.btMatrix3x3** %other_addr, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btMatrix3x3* %58, i32 0, i32 0 ; [#uses=1]
+ %60 = getelementptr inbounds [3 x %struct.btQuadWord]* %59, i32 0, i32 2 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btQuadWord* %57, i32 0, i32 0 ; [#uses=4]
+ %62 = getelementptr inbounds %struct.btQuadWord* %60, i32 0, i32 0 ; [#uses=4]
+ %63 = getelementptr inbounds [4 x float]* %61, i32 0, i32 0 ; [#uses=1]
+ %64 = getelementptr inbounds [4 x float]* %62, i32 0, i32 0 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ store float %65, float* %63, align 4
+ %66 = getelementptr inbounds [4 x float]* %61, i32 0, i32 1 ; [#uses=1]
+ %67 = getelementptr inbounds [4 x float]* %62, i32 0, i32 1 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ store float %68, float* %66, align 4
+ %69 = getelementptr inbounds [4 x float]* %61, i32 0, i32 2 ; [#uses=1]
+ %70 = getelementptr inbounds [4 x float]* %62, i32 0, i32 2 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ store float %71, float* %69, align 4
+ %72 = getelementptr inbounds [4 x float]* %61, i32 0, i32 3 ; [#uses=1]
+ %73 = getelementptr inbounds [4 x float]* %62, i32 0, i32 3 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ store float %74, float* %72, align 4
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btMatrix3x3* @_ZN11btMatrix3x3aSERKS_(%struct.btMatrix3x3* %this, %struct.btMatrix3x3* %other) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=5]
+ %other_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=4]
+ %retval = alloca %struct.btMatrix3x3* ; [#uses=2]
+ %0 = alloca %struct.btMatrix3x3* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btMatrix3x3* %this, %struct.btMatrix3x3** %this_addr
+ store %struct.btMatrix3x3* %other, %struct.btMatrix3x3** %other_addr
+ %1 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btMatrix3x3* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds [3 x %struct.btQuadWord]* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.btMatrix3x3** %other_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btMatrix3x3* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = getelementptr inbounds [3 x %struct.btQuadWord]* %5, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0 ; [#uses=4]
+ %8 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0 ; [#uses=4]
+ %9 = getelementptr inbounds [4 x float]* %7, i32 0, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds [4 x float]* %8, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds [4 x float]* %7, i32 0, i32 1 ; [#uses=1]
+ %13 = getelementptr inbounds [4 x float]* %8, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds [4 x float]* %7, i32 0, i32 2 ; [#uses=1]
+ %16 = getelementptr inbounds [4 x float]* %8, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds [4 x float]* %7, i32 0, i32 3 ; [#uses=1]
+ %19 = getelementptr inbounds [4 x float]* %8, i32 0, i32 3 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btMatrix3x3* %21, i32 0, i32 0 ; [#uses=1]
+ %23 = getelementptr inbounds [3 x %struct.btQuadWord]* %22, i32 0, i32 1 ; [#uses=1]
+ %24 = load %struct.btMatrix3x3** %other_addr, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btMatrix3x3* %24, i32 0, i32 0 ; [#uses=1]
+ %26 = getelementptr inbounds [3 x %struct.btQuadWord]* %25, i32 0, i32 1 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %23, i32 0, i32 0 ; [#uses=4]
+ %28 = getelementptr inbounds %struct.btQuadWord* %26, i32 0, i32 0 ; [#uses=4]
+ %29 = getelementptr inbounds [4 x float]* %27, i32 0, i32 0 ; [#uses=1]
+ %30 = getelementptr inbounds [4 x float]* %28, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds [4 x float]* %27, i32 0, i32 1 ; [#uses=1]
+ %33 = getelementptr inbounds [4 x float]* %28, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds [4 x float]* %27, i32 0, i32 2 ; [#uses=1]
+ %36 = getelementptr inbounds [4 x float]* %28, i32 0, i32 2 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds [4 x float]* %27, i32 0, i32 3 ; [#uses=1]
+ %39 = getelementptr inbounds [4 x float]* %28, i32 0, i32 3 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btMatrix3x3* %41, i32 0, i32 0 ; [#uses=1]
+ %43 = getelementptr inbounds [3 x %struct.btQuadWord]* %42, i32 0, i32 2 ; [#uses=1]
+ %44 = load %struct.btMatrix3x3** %other_addr, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btMatrix3x3* %44, i32 0, i32 0 ; [#uses=1]
+ %46 = getelementptr inbounds [3 x %struct.btQuadWord]* %45, i32 0, i32 2 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btQuadWord* %43, i32 0, i32 0 ; [#uses=4]
+ %48 = getelementptr inbounds %struct.btQuadWord* %46, i32 0, i32 0 ; [#uses=4]
+ %49 = getelementptr inbounds [4 x float]* %47, i32 0, i32 0 ; [#uses=1]
+ %50 = getelementptr inbounds [4 x float]* %48, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 4
+ %52 = getelementptr inbounds [4 x float]* %47, i32 0, i32 1 ; [#uses=1]
+ %53 = getelementptr inbounds [4 x float]* %48, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ %55 = getelementptr inbounds [4 x float]* %47, i32 0, i32 2 ; [#uses=1]
+ %56 = getelementptr inbounds [4 x float]* %48, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ store float %57, float* %55, align 4
+ %58 = getelementptr inbounds [4 x float]* %47, i32 0, i32 3 ; [#uses=1]
+ %59 = getelementptr inbounds [4 x float]* %48, i32 0, i32 3 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ store float %60, float* %58, align 4
+ %61 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ store %struct.btMatrix3x3* %61, %struct.btMatrix3x3** %0, align 4
+ %62 = load %struct.btMatrix3x3** %0, align 4 ; [#uses=1]
+ store %struct.btMatrix3x3* %62, %struct.btMatrix3x3** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load %struct.btMatrix3x3** %retval ; [#uses=1]
+ ret %struct.btMatrix3x3* %retval1
+}
+
+; [#uses=15]
+define linkonce_odr %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %this, i32 %i) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=2]
+ %i_addr = alloca i32, align 4 ; [#uses=2]
+ %retval = alloca %struct.btQuadWord* ; [#uses=2]
+ %0 = alloca %struct.btQuadWord* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btMatrix3x3* %this, %struct.btMatrix3x3** %this_addr
+ store i32 %i, i32* %i_addr
+ %1 = load i32* %i_addr, align 4 ; [#uses=1]
+ %2 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds [3 x %struct.btQuadWord]* %3, i32 0, i32 %1 ; [#uses=1]
+ store %struct.btQuadWord* %4, %struct.btQuadWord** %0, align 4
+ %5 = load %struct.btQuadWord** %0, align 4 ; [#uses=1]
+ store %struct.btQuadWord* %5, %struct.btQuadWord** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load %struct.btQuadWord** %retval ; [#uses=1]
+ ret %struct.btQuadWord* %retval1
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN11btMatrix3x38setValueERKfS1_S1_S1_S1_S1_S1_S1_S1_(%struct.btMatrix3x3* %this, float* %xx, float* %xy, float* %xz, float* %yx, float* %yy, float* %yz, float* %zx, float* %zy, float* %zz) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=4]
+ %xx_addr = alloca float*, align 4 ; [#uses=2]
+ %xy_addr = alloca float*, align 4 ; [#uses=2]
+ %xz_addr = alloca float*, align 4 ; [#uses=2]
+ %yx_addr = alloca float*, align 4 ; [#uses=2]
+ %yy_addr = alloca float*, align 4 ; [#uses=2]
+ %yz_addr = alloca float*, align 4 ; [#uses=2]
+ %zx_addr = alloca float*, align 4 ; [#uses=2]
+ %zy_addr = alloca float*, align 4 ; [#uses=2]
+ %zz_addr = alloca float*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btMatrix3x3* %this, %struct.btMatrix3x3** %this_addr
+ store float* %xx, float** %xx_addr
+ store float* %xy, float** %xy_addr
+ store float* %xz, float** %xz_addr
+ store float* %yx, float** %yx_addr
+ store float* %yy, float** %yy_addr
+ store float* %yz, float** %yz_addr
+ store float* %zx, float** %zx_addr
+ store float* %zy, float** %zy_addr
+ store float* %zz, float** %zz_addr
+ %0 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btMatrix3x3* %0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds [3 x %struct.btQuadWord]* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load float** %xx_addr, align 4 ; [#uses=1]
+ %4 = load float** %xy_addr, align 4 ; [#uses=1]
+ %5 = load float** %xz_addr, align 4 ; [#uses=1]
+ call void @_ZN9btVector38setValueERKfS1_S1_(%struct.btQuadWord* %2, float* %3, float* %4, float* %5) nounwind
+ %6 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btMatrix3x3* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds [3 x %struct.btQuadWord]* %7, i32 0, i32 1 ; [#uses=1]
+ %9 = load float** %yx_addr, align 4 ; [#uses=1]
+ %10 = load float** %yy_addr, align 4 ; [#uses=1]
+ %11 = load float** %yz_addr, align 4 ; [#uses=1]
+ call void @_ZN9btVector38setValueERKfS1_S1_(%struct.btQuadWord* %8, float* %9, float* %10, float* %11) nounwind
+ %12 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btMatrix3x3* %12, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds [3 x %struct.btQuadWord]* %13, i32 0, i32 2 ; [#uses=1]
+ %15 = load float** %zx_addr, align 4 ; [#uses=1]
+ %16 = load float** %zy_addr, align 4 ; [#uses=1]
+ %17 = load float** %zz_addr, align 4 ; [#uses=1]
+ call void @_ZN9btVector38setValueERKfS1_S1_(%struct.btQuadWord* %14, float* %15, float* %16, float* %17) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN11btMatrix3x3C1ERKfS1_S1_S1_S1_S1_S1_S1_S1_(%struct.btMatrix3x3* %this, float* %xx, float* %xy, float* %xz, float* %yx, float* %yy, float* %yz, float* %zx, float* %zy, float* %zz) align 2 {
+entry:
+ %this_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=3]
+ %xx_addr = alloca float*, align 4 ; [#uses=2]
+ %xy_addr = alloca float*, align 4 ; [#uses=2]
+ %xz_addr = alloca float*, align 4 ; [#uses=2]
+ %yx_addr = alloca float*, align 4 ; [#uses=2]
+ %yy_addr = alloca float*, align 4 ; [#uses=2]
+ %yz_addr = alloca float*, align 4 ; [#uses=2]
+ %zx_addr = alloca float*, align 4 ; [#uses=2]
+ %zy_addr = alloca float*, align 4 ; [#uses=2]
+ %zz_addr = alloca float*, align 4 ; [#uses=2]
+ %0 = alloca i32 ; [#uses=4]
+ %1 = alloca %struct.btQuadWord* ; [#uses=4]
+ %2 = alloca %struct.btQuadWord* ; [#uses=3]
+ %retval.42 = alloca %struct.btQuadWord* ; [#uses=1]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btMatrix3x3* %this, %struct.btMatrix3x3** %this_addr
+ store float* %xx, float** %xx_addr
+ store float* %xy, float** %xy_addr
+ store float* %xz, float** %xz_addr
+ store float* %yx, float** %yx_addr
+ store float* %yy, float** %yy_addr
+ store float* %yz, float** %yz_addr
+ store float* %zx, float** %zx_addr
+ store float* %zy, float** %zy_addr
+ store float* %zz, float** %zz_addr
+ %3 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds [3 x %struct.btQuadWord]* %4, i32 0, i32 0 ; [#uses=1]
+ store %struct.btQuadWord* %5, %struct.btQuadWord** %2, align 4
+ %6 = load %struct.btQuadWord** %2, align 4 ; [#uses=1]
+ store %struct.btQuadWord* %6, %struct.btQuadWord** %1, align 4
+ store i32 2, i32* %0, align 4
+ br label %bb1
+
+bb: ; preds = %bb1
+ %7 = load %struct.btQuadWord** %1, align 4 ; [#uses=1]
+ call void @_ZN9btVector3C1Ev(%struct.btQuadWord* %7) nounwind
+ %8 = load %struct.btQuadWord** %1, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %8, i64 1 ; [#uses=1]
+ store %struct.btQuadWord* %9, %struct.btQuadWord** %1, align 4
+ %10 = load i32* %0, align 4 ; [#uses=1]
+ %11 = sub nsw i32 %10, 1 ; [#uses=1]
+ store i32 %11, i32* %0, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %12 = load i32* %0, align 4 ; [#uses=1]
+ %13 = icmp ne i32 %12, -1 ; [#uses=1]
+ br i1 %13, label %bb, label %bb2
+
+bb2: ; preds = %bb1
+ %14 = load %struct.btQuadWord** %2, align 4 ; [#uses=1]
+ store %struct.btQuadWord* %14, %struct.btQuadWord** %retval.42, align 4
+ %15 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %16 = load float** %xx_addr, align 4 ; [#uses=1]
+ %17 = load float** %xy_addr, align 4 ; [#uses=1]
+ %18 = load float** %xz_addr, align 4 ; [#uses=1]
+ %19 = load float** %yx_addr, align 4 ; [#uses=1]
+ %20 = load float** %yy_addr, align 4 ; [#uses=1]
+ %21 = load float** %yz_addr, align 4 ; [#uses=1]
+ %22 = load float** %zx_addr, align 4 ; [#uses=1]
+ %23 = load float** %zy_addr, align 4 ; [#uses=1]
+ %24 = load float** %zz_addr, align 4 ; [#uses=1]
+ call void @_ZN11btMatrix3x38setValueERKfS1_S1_S1_S1_S1_S1_S1_S1_(%struct.btMatrix3x3* %15, float* %16, float* %17, float* %18, float* %19, float* %20, float* %21, float* %22, float* %23, float* %24) nounwind
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN11btMatrix3x311setIdentityEv(%struct.btMatrix3x3* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=2]
+ %0 = alloca float ; [#uses=2]
+ %1 = alloca float ; [#uses=2]
+ %2 = alloca float ; [#uses=2]
+ %3 = alloca float ; [#uses=2]
+ %4 = alloca float ; [#uses=2]
+ %5 = alloca float ; [#uses=2]
+ %6 = alloca float ; [#uses=2]
+ %7 = alloca float ; [#uses=2]
+ %8 = alloca float ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btMatrix3x3* %this, %struct.btMatrix3x3** %this_addr
+ store float 1.000000e+00, float* %8, align 4
+ store float 0.000000e+00, float* %7, align 4
+ store float 0.000000e+00, float* %6, align 4
+ store float 0.000000e+00, float* %5, align 4
+ store float 1.000000e+00, float* %4, align 4
+ store float 0.000000e+00, float* %3, align 4
+ store float 0.000000e+00, float* %2, align 4
+ store float 0.000000e+00, float* %1, align 4
+ store float 1.000000e+00, float* %0, align 4
+ %9 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN11btMatrix3x38setValueERKfS1_S1_S1_S1_S1_S1_S1_S1_(%struct.btMatrix3x3* %9, float* %0, float* %1, float* %2, float* %3, float* %4, float* %5, float* %6, float* %7, float* %8) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr float @_ZNK11btMatrix3x35tdotxERK9btVector3(%struct.btMatrix3x3* %this, %struct.btQuadWord* %v) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=4]
+ %v_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=4]
+ %retval = alloca float ; [#uses=2]
+ %0 = alloca float ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btMatrix3x3* %this, %struct.btMatrix3x3** %this_addr
+ store %struct.btQuadWord* %v, %struct.btQuadWord** %v_addr
+ %1 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btMatrix3x3* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds [3 x %struct.btQuadWord]* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = call float* @_ZNK9btVector31xEv(%struct.btQuadWord* %3) nounwind ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %7 = call float* @_ZNK9btVector31xEv(%struct.btQuadWord* %6) nounwind ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %5, %8 ; [#uses=1]
+ %10 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btMatrix3x3* %10, i32 0, i32 0 ; [#uses=1]
+ %12 = getelementptr inbounds [3 x %struct.btQuadWord]* %11, i32 0, i32 1 ; [#uses=1]
+ %13 = call float* @_ZNK9btVector31xEv(%struct.btQuadWord* %12) nounwind ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %16 = call float* @_ZNK9btVector31yEv(%struct.btQuadWord* %15) nounwind ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fmul float %14, %17 ; [#uses=1]
+ %19 = fadd float %9, %18 ; [#uses=1]
+ %20 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btMatrix3x3* %20, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds [3 x %struct.btQuadWord]* %21, i32 0, i32 2 ; [#uses=1]
+ %23 = call float* @_ZNK9btVector31xEv(%struct.btQuadWord* %22) nounwind ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %26 = call float* @_ZNK9btVector31zEv(%struct.btQuadWord* %25) nounwind ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fmul float %24, %27 ; [#uses=1]
+ %29 = fadd float %19, %28 ; [#uses=1]
+ store float %29, float* %0, align 4
+ %30 = load float* %0, align 4 ; [#uses=1]
+ store float %30, float* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load float* %retval ; [#uses=1]
+ ret float %retval1
+}
+
+; [#uses=3]
+define linkonce_odr float @_ZNK11btMatrix3x35tdotyERK9btVector3(%struct.btMatrix3x3* %this, %struct.btQuadWord* %v) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=4]
+ %v_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=4]
+ %retval = alloca float ; [#uses=2]
+ %0 = alloca float ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btMatrix3x3* %this, %struct.btMatrix3x3** %this_addr
+ store %struct.btQuadWord* %v, %struct.btQuadWord** %v_addr
+ %1 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btMatrix3x3* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds [3 x %struct.btQuadWord]* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = call float* @_ZNK9btVector31yEv(%struct.btQuadWord* %3) nounwind ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %7 = call float* @_ZNK9btVector31xEv(%struct.btQuadWord* %6) nounwind ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %5, %8 ; [#uses=1]
+ %10 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btMatrix3x3* %10, i32 0, i32 0 ; [#uses=1]
+ %12 = getelementptr inbounds [3 x %struct.btQuadWord]* %11, i32 0, i32 1 ; [#uses=1]
+ %13 = call float* @_ZNK9btVector31yEv(%struct.btQuadWord* %12) nounwind ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %16 = call float* @_ZNK9btVector31yEv(%struct.btQuadWord* %15) nounwind ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fmul float %14, %17 ; [#uses=1]
+ %19 = fadd float %9, %18 ; [#uses=1]
+ %20 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btMatrix3x3* %20, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds [3 x %struct.btQuadWord]* %21, i32 0, i32 2 ; [#uses=1]
+ %23 = call float* @_ZNK9btVector31yEv(%struct.btQuadWord* %22) nounwind ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %26 = call float* @_ZNK9btVector31zEv(%struct.btQuadWord* %25) nounwind ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fmul float %24, %27 ; [#uses=1]
+ %29 = fadd float %19, %28 ; [#uses=1]
+ store float %29, float* %0, align 4
+ %30 = load float* %0, align 4 ; [#uses=1]
+ store float %30, float* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load float* %retval ; [#uses=1]
+ ret float %retval1
+}
+
+; [#uses=3]
+define linkonce_odr float @_ZNK11btMatrix3x35tdotzERK9btVector3(%struct.btMatrix3x3* %this, %struct.btQuadWord* %v) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=4]
+ %v_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=4]
+ %retval = alloca float ; [#uses=2]
+ %0 = alloca float ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btMatrix3x3* %this, %struct.btMatrix3x3** %this_addr
+ store %struct.btQuadWord* %v, %struct.btQuadWord** %v_addr
+ %1 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btMatrix3x3* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds [3 x %struct.btQuadWord]* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = call float* @_ZNK9btVector31zEv(%struct.btQuadWord* %3) nounwind ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %7 = call float* @_ZNK9btVector31xEv(%struct.btQuadWord* %6) nounwind ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %5, %8 ; [#uses=1]
+ %10 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btMatrix3x3* %10, i32 0, i32 0 ; [#uses=1]
+ %12 = getelementptr inbounds [3 x %struct.btQuadWord]* %11, i32 0, i32 1 ; [#uses=1]
+ %13 = call float* @_ZNK9btVector31zEv(%struct.btQuadWord* %12) nounwind ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %16 = call float* @_ZNK9btVector31yEv(%struct.btQuadWord* %15) nounwind ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fmul float %14, %17 ; [#uses=1]
+ %19 = fadd float %9, %18 ; [#uses=1]
+ %20 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btMatrix3x3* %20, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds [3 x %struct.btQuadWord]* %21, i32 0, i32 2 ; [#uses=1]
+ %23 = call float* @_ZNK9btVector31zEv(%struct.btQuadWord* %22) nounwind ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %26 = call float* @_ZNK9btVector31zEv(%struct.btQuadWord* %25) nounwind ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fmul float %24, %27 ; [#uses=1]
+ %29 = fadd float %19, %28 ; [#uses=1]
+ store float %29, float* %0, align 4
+ %30 = load float* %0, align 4 ; [#uses=1]
+ store float %30, float* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load float* %retval ; [#uses=1]
+ ret float %retval1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK11btMatrix3x39transposeEv(%struct.btMatrix3x3* noalias sret %agg.result, %struct.btMatrix3x3* %this) inlinehint align 2 {
+entry:
+ %memtmp = alloca %struct.btMatrix3x3* ; [#uses=2]
+ %this_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=10]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btMatrix3x3* %agg.result, %struct.btMatrix3x3** %memtmp
+ store %struct.btMatrix3x3* %this, %struct.btMatrix3x3** %this_addr
+ %0 = load %struct.btMatrix3x3** %memtmp, align 4 ; [#uses=1]
+ %1 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btMatrix3x3* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds [3 x %struct.btQuadWord]* %2, i32 0, i32 2 ; [#uses=1]
+ %4 = call float* @_ZNK9btVector31zEv(%struct.btQuadWord* %3) nounwind ; [#uses=1]
+ %5 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btMatrix3x3* %5, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds [3 x %struct.btQuadWord]* %6, i32 0, i32 1 ; [#uses=1]
+ %8 = call float* @_ZNK9btVector31zEv(%struct.btQuadWord* %7) nounwind ; [#uses=1]
+ %9 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btMatrix3x3* %9, i32 0, i32 0 ; [#uses=1]
+ %11 = getelementptr inbounds [3 x %struct.btQuadWord]* %10, i32 0, i32 0 ; [#uses=1]
+ %12 = call float* @_ZNK9btVector31zEv(%struct.btQuadWord* %11) nounwind ; [#uses=1]
+ %13 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btMatrix3x3* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds [3 x %struct.btQuadWord]* %14, i32 0, i32 2 ; [#uses=1]
+ %16 = call float* @_ZNK9btVector31yEv(%struct.btQuadWord* %15) nounwind ; [#uses=1]
+ %17 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btMatrix3x3* %17, i32 0, i32 0 ; [#uses=1]
+ %19 = getelementptr inbounds [3 x %struct.btQuadWord]* %18, i32 0, i32 1 ; [#uses=1]
+ %20 = call float* @_ZNK9btVector31yEv(%struct.btQuadWord* %19) nounwind ; [#uses=1]
+ %21 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btMatrix3x3* %21, i32 0, i32 0 ; [#uses=1]
+ %23 = getelementptr inbounds [3 x %struct.btQuadWord]* %22, i32 0, i32 0 ; [#uses=1]
+ %24 = call float* @_ZNK9btVector31yEv(%struct.btQuadWord* %23) nounwind ; [#uses=1]
+ %25 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btMatrix3x3* %25, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds [3 x %struct.btQuadWord]* %26, i32 0, i32 2 ; [#uses=1]
+ %28 = call float* @_ZNK9btVector31xEv(%struct.btQuadWord* %27) nounwind ; [#uses=1]
+ %29 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btMatrix3x3* %29, i32 0, i32 0 ; [#uses=1]
+ %31 = getelementptr inbounds [3 x %struct.btQuadWord]* %30, i32 0, i32 1 ; [#uses=1]
+ %32 = call float* @_ZNK9btVector31xEv(%struct.btQuadWord* %31) nounwind ; [#uses=1]
+ %33 = load %struct.btMatrix3x3** %this_addr, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btMatrix3x3* %33, i32 0, i32 0 ; [#uses=1]
+ %35 = getelementptr inbounds [3 x %struct.btQuadWord]* %34, i32 0, i32 0 ; [#uses=1]
+ %36 = call float* @_ZNK9btVector31xEv(%struct.btQuadWord* %35) nounwind ; [#uses=1]
+ call void @_ZN11btMatrix3x3C1ERKfS1_S1_S1_S1_S1_S1_S1_S1_(%struct.btMatrix3x3* %0, float* %36, float* %32, float* %28, float* %24, float* %20, float* %16, float* %12, float* %8, float* %4)
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZmlRK11btMatrix3x3RK9btVector3(%struct.btQuadWord* noalias sret %agg.result, %struct.btMatrix3x3* %m, %struct.btQuadWord* %v) nounwind inlinehint {
+entry:
+ %m_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=4]
+ %v_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=4]
+ %0 = alloca float ; [#uses=2]
+ %1 = alloca float ; [#uses=2]
+ %2 = alloca float ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btMatrix3x3* %m, %struct.btMatrix3x3** %m_addr
+ store %struct.btQuadWord* %v, %struct.btQuadWord** %v_addr
+ %3 = load %struct.btMatrix3x3** %m_addr, align 4 ; [#uses=1]
+ %4 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %3, i32 2) nounwind ; [#uses=1]
+ %5 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %6 = call float @_ZNK9btVector33dotERKS_(%struct.btQuadWord* %4, %struct.btQuadWord* %5) nounwind ; [#uses=1]
+ store float %6, float* %2, align 4
+ %7 = load %struct.btMatrix3x3** %m_addr, align 4 ; [#uses=1]
+ %8 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %7, i32 1) nounwind ; [#uses=1]
+ %9 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %10 = call float @_ZNK9btVector33dotERKS_(%struct.btQuadWord* %8, %struct.btQuadWord* %9) nounwind ; [#uses=1]
+ store float %10, float* %1, align 4
+ %11 = load %struct.btMatrix3x3** %m_addr, align 4 ; [#uses=1]
+ %12 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %11, i32 0) nounwind ; [#uses=1]
+ %13 = load %struct.btQuadWord** %v_addr, align 4 ; [#uses=1]
+ %14 = call float @_ZNK9btVector33dotERKS_(%struct.btQuadWord* %12, %struct.btQuadWord* %13) nounwind ; [#uses=1]
+ store float %14, float* %0, align 4
+ call void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %agg.result, float* %0, float* %1, float* %2) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZmlRK11btMatrix3x3S1_(%struct.btMatrix3x3* noalias sret %agg.result, %struct.btMatrix3x3* %m1, %struct.btMatrix3x3* %m2) inlinehint {
+entry:
+ %memtmp = alloca %struct.btMatrix3x3* ; [#uses=2]
+ %m1_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=10]
+ %m2_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=10]
+ %0 = alloca float ; [#uses=2]
+ %1 = alloca float ; [#uses=2]
+ %2 = alloca float ; [#uses=2]
+ %3 = alloca float ; [#uses=2]
+ %4 = alloca float ; [#uses=2]
+ %5 = alloca float ; [#uses=2]
+ %6 = alloca float ; [#uses=2]
+ %7 = alloca float ; [#uses=2]
+ %8 = alloca float ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btMatrix3x3* %agg.result, %struct.btMatrix3x3** %memtmp
+ store %struct.btMatrix3x3* %m1, %struct.btMatrix3x3** %m1_addr
+ store %struct.btMatrix3x3* %m2, %struct.btMatrix3x3** %m2_addr
+ %9 = load %struct.btMatrix3x3** %memtmp, align 4 ; [#uses=1]
+ %10 = load %struct.btMatrix3x3** %m1_addr, align 4 ; [#uses=1]
+ %11 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %10, i32 2) nounwind ; [#uses=1]
+ %12 = load %struct.btMatrix3x3** %m2_addr, align 4 ; [#uses=1]
+ %13 = call float @_ZNK11btMatrix3x35tdotzERK9btVector3(%struct.btMatrix3x3* %12, %struct.btQuadWord* %11) nounwind ; [#uses=1]
+ store float %13, float* %8, align 4
+ %14 = load %struct.btMatrix3x3** %m1_addr, align 4 ; [#uses=1]
+ %15 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %14, i32 2) nounwind ; [#uses=1]
+ %16 = load %struct.btMatrix3x3** %m2_addr, align 4 ; [#uses=1]
+ %17 = call float @_ZNK11btMatrix3x35tdotyERK9btVector3(%struct.btMatrix3x3* %16, %struct.btQuadWord* %15) nounwind ; [#uses=1]
+ store float %17, float* %7, align 4
+ %18 = load %struct.btMatrix3x3** %m1_addr, align 4 ; [#uses=1]
+ %19 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %18, i32 2) nounwind ; [#uses=1]
+ %20 = load %struct.btMatrix3x3** %m2_addr, align 4 ; [#uses=1]
+ %21 = call float @_ZNK11btMatrix3x35tdotxERK9btVector3(%struct.btMatrix3x3* %20, %struct.btQuadWord* %19) nounwind ; [#uses=1]
+ store float %21, float* %6, align 4
+ %22 = load %struct.btMatrix3x3** %m1_addr, align 4 ; [#uses=1]
+ %23 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %22, i32 1) nounwind ; [#uses=1]
+ %24 = load %struct.btMatrix3x3** %m2_addr, align 4 ; [#uses=1]
+ %25 = call float @_ZNK11btMatrix3x35tdotzERK9btVector3(%struct.btMatrix3x3* %24, %struct.btQuadWord* %23) nounwind ; [#uses=1]
+ store float %25, float* %5, align 4
+ %26 = load %struct.btMatrix3x3** %m1_addr, align 4 ; [#uses=1]
+ %27 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %26, i32 1) nounwind ; [#uses=1]
+ %28 = load %struct.btMatrix3x3** %m2_addr, align 4 ; [#uses=1]
+ %29 = call float @_ZNK11btMatrix3x35tdotyERK9btVector3(%struct.btMatrix3x3* %28, %struct.btQuadWord* %27) nounwind ; [#uses=1]
+ store float %29, float* %4, align 4
+ %30 = load %struct.btMatrix3x3** %m1_addr, align 4 ; [#uses=1]
+ %31 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %30, i32 1) nounwind ; [#uses=1]
+ %32 = load %struct.btMatrix3x3** %m2_addr, align 4 ; [#uses=1]
+ %33 = call float @_ZNK11btMatrix3x35tdotxERK9btVector3(%struct.btMatrix3x3* %32, %struct.btQuadWord* %31) nounwind ; [#uses=1]
+ store float %33, float* %3, align 4
+ %34 = load %struct.btMatrix3x3** %m1_addr, align 4 ; [#uses=1]
+ %35 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %34, i32 0) nounwind ; [#uses=1]
+ %36 = load %struct.btMatrix3x3** %m2_addr, align 4 ; [#uses=1]
+ %37 = call float @_ZNK11btMatrix3x35tdotzERK9btVector3(%struct.btMatrix3x3* %36, %struct.btQuadWord* %35) nounwind ; [#uses=1]
+ store float %37, float* %2, align 4
+ %38 = load %struct.btMatrix3x3** %m1_addr, align 4 ; [#uses=1]
+ %39 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %38, i32 0) nounwind ; [#uses=1]
+ %40 = load %struct.btMatrix3x3** %m2_addr, align 4 ; [#uses=1]
+ %41 = call float @_ZNK11btMatrix3x35tdotyERK9btVector3(%struct.btMatrix3x3* %40, %struct.btQuadWord* %39) nounwind ; [#uses=1]
+ store float %41, float* %1, align 4
+ %42 = load %struct.btMatrix3x3** %m1_addr, align 4 ; [#uses=1]
+ %43 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %42, i32 0) nounwind ; [#uses=1]
+ %44 = load %struct.btMatrix3x3** %m2_addr, align 4 ; [#uses=1]
+ %45 = call float @_ZNK11btMatrix3x35tdotxERK9btVector3(%struct.btMatrix3x3* %44, %struct.btQuadWord* %43) nounwind ; [#uses=1]
+ store float %45, float* %0, align 4
+ call void @_ZN11btMatrix3x3C1ERKfS1_S1_S1_S1_S1_S1_S1_S1_(%struct.btMatrix3x3* %9, float* %0, float* %1, float* %2, float* %3, float* %4, float* %5, float* %6, float* %7, float* %8)
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZN11btTransformC1Ev(%struct.btTransform* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btTransform*, align 4 ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTransform* %this, %struct.btTransform** %this_addr
+ %0 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN11btMatrix3x3C1Ev(%struct.btMatrix3x3* %1) nounwind
+ %2 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %2, i32 0, i32 1 ; [#uses=1]
+ call void @_ZN9btVector3C1Ev(%struct.btQuadWord* %3) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN11btTransformC1ERK11btMatrix3x3RK9btVector3(%struct.btTransform* %this, %struct.btMatrix3x3* %b, %struct.btQuadWord* %c) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btTransform*, align 4 ; [#uses=3]
+ %b_addr = alloca %struct.btMatrix3x3*, align 4 ; [#uses=2]
+ %c_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTransform* %this, %struct.btTransform** %this_addr
+ store %struct.btMatrix3x3* %b, %struct.btMatrix3x3** %b_addr
+ store %struct.btQuadWord* %c, %struct.btQuadWord** %c_addr
+ %0 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0 ; [#uses=1]
+ %2 = load %struct.btMatrix3x3** %b_addr, align 4 ; [#uses=1]
+ call void @_ZN11btMatrix3x3C1ERKS_(%struct.btMatrix3x3* %1, %struct.btMatrix3x3* %2) nounwind
+ %3 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTransform* %3, i32 0, i32 1 ; [#uses=1]
+ %5 = load %struct.btQuadWord** %c_addr, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0 ; [#uses=4]
+ %7 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0 ; [#uses=4]
+ %8 = getelementptr inbounds [4 x float]* %6, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds [4 x float]* %7, i32 0, i32 0 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds [4 x float]* %6, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds [4 x float]* %7, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds [4 x float]* %6, i32 0, i32 2 ; [#uses=1]
+ %15 = getelementptr inbounds [4 x float]* %7, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds [4 x float]* %6, i32 0, i32 3 ; [#uses=1]
+ %18 = getelementptr inbounds [4 x float]* %7, i32 0, i32 3 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN11btTransformC1ERKS_(%struct.btTransform* %this, %struct.btTransform* %other) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btTransform*, align 4 ; [#uses=3]
+ %other_addr = alloca %struct.btTransform*, align 4 ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTransform* %this, %struct.btTransform** %this_addr
+ store %struct.btTransform* %other, %struct.btTransform** %other_addr
+ %0 = load %struct.btTransform** %other_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0 ; [#uses=1]
+ %2 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %2, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN11btMatrix3x3C1ERKS_(%struct.btMatrix3x3* %3, %struct.btMatrix3x3* %1) nounwind
+ %4 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %4, i32 0, i32 1 ; [#uses=1]
+ %6 = load %struct.btTransform** %other_addr, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %6, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0 ; [#uses=4]
+ %9 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0 ; [#uses=4]
+ %10 = getelementptr inbounds [4 x float]* %8, i32 0, i32 0 ; [#uses=1]
+ %11 = getelementptr inbounds [4 x float]* %9, i32 0, i32 0 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds [4 x float]* %8, i32 0, i32 1 ; [#uses=1]
+ %14 = getelementptr inbounds [4 x float]* %9, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds [4 x float]* %8, i32 0, i32 2 ; [#uses=1]
+ %17 = getelementptr inbounds [4 x float]* %9, i32 0, i32 2 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds [4 x float]* %8, i32 0, i32 3 ; [#uses=1]
+ %20 = getelementptr inbounds [4 x float]* %9, i32 0, i32 3 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr %struct.btTransform* @_ZN11btTransformaSERKS_(%struct.btTransform* %this, %struct.btTransform* %other) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btTransform*, align 4 ; [#uses=4]
+ %other_addr = alloca %struct.btTransform*, align 4 ; [#uses=3]
+ %retval = alloca %struct.btTransform* ; [#uses=2]
+ %0 = alloca %struct.btTransform* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTransform* %this, %struct.btTransform** %this_addr
+ store %struct.btTransform* %other, %struct.btTransform** %other_addr
+ %1 = load %struct.btTransform** %other_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTransform* %3, i32 0, i32 0 ; [#uses=1]
+ %5 = call %struct.btMatrix3x3* @_ZN11btMatrix3x3aSERKS_(%struct.btMatrix3x3* %4, %struct.btMatrix3x3* %2) nounwind ; [#uses=0]
+ %6 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %6, i32 0, i32 1 ; [#uses=1]
+ %8 = load %struct.btTransform** %other_addr, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %8, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0 ; [#uses=4]
+ %11 = getelementptr inbounds %struct.btQuadWord* %9, i32 0, i32 0 ; [#uses=4]
+ %12 = getelementptr inbounds [4 x float]* %10, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds [4 x float]* %11, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds [4 x float]* %10, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds [4 x float]* %11, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds [4 x float]* %10, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds [4 x float]* %11, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds [4 x float]* %10, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds [4 x float]* %11, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ store %struct.btTransform* %24, %struct.btTransform** %0, align 4
+ %25 = load %struct.btTransform** %0, align 4 ; [#uses=1]
+ store %struct.btTransform* %25, %struct.btTransform** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load %struct.btTransform** %retval ; [#uses=1]
+ ret %struct.btTransform* %retval1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK11btTransformclERK9btVector3(%struct.btQuadWord* noalias sret %agg.result, %struct.btTransform* %this, %struct.btQuadWord* %x) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btTransform*, align 4 ; [#uses=7]
+ %x_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=4]
+ %0 = alloca float ; [#uses=2]
+ %1 = alloca float ; [#uses=2]
+ %2 = alloca float ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTransform* %this, %struct.btTransform** %this_addr
+ store %struct.btQuadWord* %x, %struct.btQuadWord** %x_addr
+ %3 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTransform* %3, i32 0, i32 0 ; [#uses=1]
+ %5 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %4, i32 2) nounwind ; [#uses=1]
+ %6 = load %struct.btQuadWord** %x_addr, align 4 ; [#uses=1]
+ %7 = call float @_ZNK9btVector33dotERKS_(%struct.btQuadWord* %5, %struct.btQuadWord* %6) nounwind ; [#uses=1]
+ %8 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %8, i32 0, i32 1 ; [#uses=1]
+ %10 = call float* @_ZNK9btVector31zEv(%struct.btQuadWord* %9) nounwind ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fadd float %7, %11 ; [#uses=1]
+ store float %12, float* %2, align 4
+ %13 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %14, i32 1) nounwind ; [#uses=1]
+ %16 = load %struct.btQuadWord** %x_addr, align 4 ; [#uses=1]
+ %17 = call float @_ZNK9btVector33dotERKS_(%struct.btQuadWord* %15, %struct.btQuadWord* %16) nounwind ; [#uses=1]
+ %18 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %18, i32 0, i32 1 ; [#uses=1]
+ %20 = call float* @_ZNK9btVector31yEv(%struct.btQuadWord* %19) nounwind ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fadd float %17, %21 ; [#uses=1]
+ store float %22, float* %1, align 4
+ %23 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %23, i32 0, i32 0 ; [#uses=1]
+ %25 = call %struct.btQuadWord* @_ZNK11btMatrix3x3ixEi(%struct.btMatrix3x3* %24, i32 0) nounwind ; [#uses=1]
+ %26 = load %struct.btQuadWord** %x_addr, align 4 ; [#uses=1]
+ %27 = call float @_ZNK9btVector33dotERKS_(%struct.btQuadWord* %25, %struct.btQuadWord* %26) nounwind ; [#uses=1]
+ %28 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btTransform* %28, i32 0, i32 1 ; [#uses=1]
+ %30 = call float* @_ZNK9btVector31xEv(%struct.btQuadWord* %29) nounwind ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = fadd float %27, %31 ; [#uses=1]
+ store float %32, float* %0, align 4
+ call void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %agg.result, float* %0, float* %1, float* %2) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr %struct.btQuadWord* @_ZN11btTransform9getOriginEv(%struct.btTransform* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btTransform*, align 4 ; [#uses=2]
+ %retval = alloca %struct.btQuadWord* ; [#uses=2]
+ %0 = alloca %struct.btQuadWord* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTransform* %this, %struct.btTransform** %this_addr
+ %1 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 1 ; [#uses=1]
+ store %struct.btQuadWord* %2, %struct.btQuadWord** %0, align 4
+ %3 = load %struct.btQuadWord** %0, align 4 ; [#uses=1]
+ store %struct.btQuadWord* %3, %struct.btQuadWord** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load %struct.btQuadWord** %retval ; [#uses=1]
+ ret %struct.btQuadWord* %retval1
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN11btTransform9setOriginERK9btVector3(%struct.btTransform* %this, %struct.btQuadWord* %origin) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btTransform*, align 4 ; [#uses=2]
+ %origin_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTransform* %this, %struct.btTransform** %this_addr
+ store %struct.btQuadWord* %origin, %struct.btQuadWord** %origin_addr
+ %0 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1 ; [#uses=1]
+ %2 = load %struct.btQuadWord** %origin_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0 ; [#uses=4]
+ %5 = getelementptr inbounds [4 x float]* %3, i32 0, i32 0 ; [#uses=1]
+ %6 = getelementptr inbounds [4 x float]* %4, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds [4 x float]* %3, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds [4 x float]* %4, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds [4 x float]* %3, i32 0, i32 2 ; [#uses=1]
+ %12 = getelementptr inbounds [4 x float]* %4, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds [4 x float]* %3, i32 0, i32 3 ; [#uses=1]
+ %15 = getelementptr inbounds [4 x float]* %4, i32 0, i32 3 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN11btTransform11setIdentityEv(%struct.btTransform* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btTransform*, align 4 ; [#uses=3]
+ %0 = alloca float ; [#uses=2]
+ %1 = alloca float ; [#uses=2]
+ %2 = alloca float ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTransform* %this, %struct.btTransform** %this_addr
+ %3 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTransform* %3, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN11btMatrix3x311setIdentityEv(%struct.btMatrix3x3* %4) nounwind
+ store float 0.000000e+00, float* %2, align 4
+ store float 0.000000e+00, float* %1, align 4
+ store float 0.000000e+00, float* %0, align 4
+ %5 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %5, i32 0, i32 1 ; [#uses=1]
+ call void @_ZN9btVector38setValueERKfS1_S1_(%struct.btQuadWord* %6, float* %0, float* %1, float* %2) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK11btTransform7inverseEv(%struct.btTransform* noalias sret %agg.result, %struct.btTransform* %this) align 2 {
+entry:
+ %memtmp = alloca %struct.btTransform* ; [#uses=2]
+ %this_addr = alloca %struct.btTransform*, align 4 ; [#uses=3]
+ %0 = alloca %struct.btQuadWord ; [#uses=2]
+ %1 = alloca %struct.btQuadWord ; [#uses=2]
+ %inv = alloca %struct.btMatrix3x3 ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTransform* %agg.result, %struct.btTransform** %memtmp
+ store %struct.btTransform* %this, %struct.btTransform** %this_addr
+ %2 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %2, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x39transposeEv(%struct.btMatrix3x3* noalias sret %inv, %struct.btMatrix3x3* %3)
+ %4 = load %struct.btTransform** %memtmp, align 4 ; [#uses=1]
+ %5 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %5, i32 0, i32 1 ; [#uses=1]
+ call void @_ZngRK9btVector3(%struct.btQuadWord* noalias sret %0, %struct.btQuadWord* %6) nounwind
+ call void @_ZmlRK11btMatrix3x3RK9btVector3(%struct.btQuadWord* noalias sret %1, %struct.btMatrix3x3* %inv, %struct.btQuadWord* %0) nounwind
+ call void @_ZN11btTransformC1ERK11btMatrix3x3RK9btVector3(%struct.btTransform* %4, %struct.btMatrix3x3* %inv, %struct.btQuadWord* %1) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZNK11btTransformmlERKS_(%struct.btTransform* noalias sret %agg.result, %struct.btTransform* %this, %struct.btTransform* %t) inlinehint align 2 {
+entry:
+ %memtmp = alloca %struct.btTransform* ; [#uses=2]
+ %this_addr = alloca %struct.btTransform*, align 4 ; [#uses=3]
+ %t_addr = alloca %struct.btTransform*, align 4 ; [#uses=3]
+ %0 = alloca %struct.btMatrix3x3 ; [#uses=2]
+ %1 = alloca %struct.btQuadWord ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTransform* %agg.result, %struct.btTransform** %memtmp
+ store %struct.btTransform* %this, %struct.btTransform** %this_addr
+ store %struct.btTransform* %t, %struct.btTransform** %t_addr
+ %2 = load %struct.btTransform** %memtmp, align 4 ; [#uses=1]
+ %3 = load %struct.btTransform** %t_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTransform* %3, i32 0, i32 1 ; [#uses=1]
+ %5 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ call void @_ZNK11btTransformclERK9btVector3(%struct.btQuadWord* noalias sret %1, %struct.btTransform* %5, %struct.btQuadWord* %4) nounwind
+ %6 = load %struct.btTransform** %t_addr, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = load %struct.btTransform** %this_addr, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %8, i32 0, i32 0 ; [#uses=1]
+ call void @_ZmlRK11btMatrix3x3S1_(%struct.btMatrix3x3* noalias sret %0, %struct.btMatrix3x3* %9, %struct.btMatrix3x3* %7)
+ call void @_ZN11btTransformC1ERK11btMatrix3x3RK9btVector3(%struct.btTransform* %2, %struct.btMatrix3x3* %0, %struct.btQuadWord* %1) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr i8* @_ZnwjPv(i32 %unnamed_arg, i8* %__p) nounwind inlinehint {
+entry:
+ %unnamed_arg_addr = alloca i32, align 4 ; [#uses=1]
+ %__p_addr = alloca i8*, align 4 ; [#uses=2]
+ %retval = alloca i8* ; [#uses=2]
+ %0 = alloca i8* ; [#uses=4]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store i32 %unnamed_arg, i32* %unnamed_arg_addr
+ store i8* %__p, i8** %__p_addr
+ %1 = load i8** %__p_addr, align 4 ; [#uses=1]
+ store i8* %1, i8** %0, align 4
+ %2 = load i8** %0, align 4 ; [#uses=1]
+ store i8* %2, i8** %0, align 4
+ %3 = load i8** %0, align 4 ; [#uses=1]
+ store i8* %3, i8** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i8** %retval ; [#uses=1]
+ ret i8* %retval1
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK17btCollisionObject15getInternalTypeEv(%struct.btCollisionObject* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btCollisionObject*, align 4 ; [#uses=2]
+ %retval = alloca i32 ; [#uses=2]
+ %0 = alloca i32 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btCollisionObject* %this, %struct.btCollisionObject** %this_addr
+ %1 = load %struct.btCollisionObject** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCollisionObject* %1, i32 0, i32 19 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ store i32 %3, i32* %0, align 4
+ %4 = load i32* %0, align 4 ; [#uses=1]
+ store i32 %4, i32* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i32* %retval ; [#uses=1]
+ ret i32 %retval1
+}
+
+; [#uses=2]
+define linkonce_odr %"struct.btAlignedObjectArray<btCollisionObject*>"* @_ZN16btCollisionWorld23getCollisionObjectArrayEv(%struct.btCollisionWorld* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btCollisionWorld*, align 4 ; [#uses=2]
+ %retval = alloca %"struct.btAlignedObjectArray<btCollisionObject*>"* ; [#uses=2]
+ %0 = alloca %"struct.btAlignedObjectArray<btCollisionObject*>"* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btCollisionWorld* %this, %struct.btCollisionWorld** %this_addr
+ %1 = load %struct.btCollisionWorld** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCollisionWorld* %1, i32 0, i32 1 ; [#uses=1]
+ store %"struct.btAlignedObjectArray<btCollisionObject*>"* %2, %"struct.btAlignedObjectArray<btCollisionObject*>"** %0, align 4
+ %3 = load %"struct.btAlignedObjectArray<btCollisionObject*>"** %0, align 4 ; [#uses=1]
+ store %"struct.btAlignedObjectArray<btCollisionObject*>"* %3, %"struct.btAlignedObjectArray<btCollisionObject*>"** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load %"struct.btAlignedObjectArray<btCollisionObject*>"** %retval ; [#uses=1]
+ ret %"struct.btAlignedObjectArray<btCollisionObject*>"* %retval1
+}
+
+; [#uses=4]
+define linkonce_odr float @_ZNK21btConvexInternalShape9getMarginEv(%struct.btConvexInternalShape* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btConvexInternalShape*, align 4 ; [#uses=2]
+ %retval = alloca float ; [#uses=2]
+ %0 = alloca float ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btConvexInternalShape* %this, %struct.btConvexInternalShape** %this_addr
+ %1 = load %struct.btConvexInternalShape** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btConvexInternalShape* %1, i32 0, i32 3 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %0, align 4
+ %4 = load float* %0, align 4 ; [#uses=1]
+ store float %4, float* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load float* %retval ; [#uses=1]
+ ret float %retval1
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK9btHashInt7getUid1Ev(%struct.btHashInt* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btHashInt*, align 4 ; [#uses=2]
+ %retval = alloca i32 ; [#uses=2]
+ %0 = alloca i32 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btHashInt* %this, %struct.btHashInt** %this_addr
+ %1 = load %struct.btHashInt** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btHashInt* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ store i32 %3, i32* %0, align 4
+ %4 = load i32* %0, align 4 ; [#uses=1]
+ store i32 %4, i32* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i32* %retval ; [#uses=1]
+ ret i32 %retval1
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK17btTriangleInfoMap28calculateSerializeBufferSizeEv(%struct.btTriangleInfoMap* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btTriangleInfoMap*, align 4 ; [#uses=1]
+ %retval = alloca i32 ; [#uses=2]
+ %0 = alloca i32 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTriangleInfoMap* %this, %struct.btTriangleInfoMap** %this_addr
+ store i32 56, i32* %0, align 4
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ store i32 %1, i32* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i32* %retval ; [#uses=1]
+ ret i32 %retval1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN34btDefaultCollisionConstructionInfoC1Ev(%struct.btDefaultCollisionConstructionInfo* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btDefaultCollisionConstructionInfo*, align 4 ; [#uses=9]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btDefaultCollisionConstructionInfo* %this, %struct.btDefaultCollisionConstructionInfo** %this_addr
+ %0 = load %struct.btDefaultCollisionConstructionInfo** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %0, i32 0, i32 0 ; [#uses=1]
+ store %struct.btStackAlloc* null, %struct.btStackAlloc** %1, align 4
+ %2 = load %struct.btDefaultCollisionConstructionInfo** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %2, i32 0, i32 1 ; [#uses=1]
+ store %struct.btPoolAllocator* null, %struct.btPoolAllocator** %3, align 4
+ %4 = load %struct.btDefaultCollisionConstructionInfo** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %4, i32 0, i32 2 ; [#uses=1]
+ store %struct.btPoolAllocator* null, %struct.btPoolAllocator** %5, align 4
+ %6 = load %struct.btDefaultCollisionConstructionInfo** %this_addr, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %6, i32 0, i32 3 ; [#uses=1]
+ store i32 4096, i32* %7, align 4
+ %8 = load %struct.btDefaultCollisionConstructionInfo** %this_addr, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %8, i32 0, i32 4 ; [#uses=1]
+ store i32 4096, i32* %9, align 4
+ %10 = load %struct.btDefaultCollisionConstructionInfo** %this_addr, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %10, i32 0, i32 5 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = load %struct.btDefaultCollisionConstructionInfo** %this_addr, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %12, i32 0, i32 6 ; [#uses=1]
+ store i32 0, i32* %13, align 4
+ %14 = load %struct.btDefaultCollisionConstructionInfo** %this_addr, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %14, i32 0, i32 7 ; [#uses=1]
+ store i32 1, i32* %15, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN13btMotionStateC2Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btActionInterface*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btActionInterface* %this, %struct.btActionInterface** %this_addr
+ %0 = load %struct.btActionInterface** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btActionInterface* %0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV13btMotionState, i32 0, i32 2), i32 (...)*** %1, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN13btMotionStateD1Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btActionInterface*, align 4 ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btActionInterface* %this, %struct.btActionInterface** %this_addr
+ %0 = load %struct.btActionInterface** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btActionInterface* %0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV13btMotionState, i32 0, i32 2), i32 (...)*** %1, align 4
+ br label %bb
+
+bb: ; preds = %entry
+ %2 = trunc i32 0 to i8 ; [#uses=1]
+ %toBool = icmp ne i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %3 = load %struct.btActionInterface** %this_addr, align 4 ; [#uses=1]
+ %4 = bitcast %struct.btActionInterface* %3 to i8* ; [#uses=1]
+ call void @_ZdlPv(i8* %4) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN13btMotionStateD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btActionInterface*, align 4 ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btActionInterface* %this, %struct.btActionInterface** %this_addr
+ %0 = load %struct.btActionInterface** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btActionInterface* %0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV13btMotionState, i32 0, i32 2), i32 (...)*** %1, align 4
+ br label %bb
+
+bb: ; preds = %entry
+ %2 = trunc i32 1 to i8 ; [#uses=1]
+ %toBool = icmp ne i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %3 = load %struct.btActionInterface** %this_addr, align 4 ; [#uses=1]
+ %4 = bitcast %struct.btActionInterface* %3 to i8* ; [#uses=1]
+ call void @_ZdlPv(i8* %4) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=1]
+declare void @__cxa_pure_virtual() nounwind
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btDefaultMotionStateC1ERK11btTransformS2_(%struct.btDefaultMotionState* %this, %struct.btTransform* %startTrans, %struct.btTransform* %centerOfMassOffset) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btDefaultMotionState*, align 4 ; [#uses=7]
+ %startTrans_addr = alloca %struct.btTransform*, align 4 ; [#uses=3]
+ %centerOfMassOffset_addr = alloca %struct.btTransform*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btDefaultMotionState* %this, %struct.btDefaultMotionState** %this_addr
+ store %struct.btTransform* %startTrans, %struct.btTransform** %startTrans_addr
+ store %struct.btTransform* %centerOfMassOffset, %struct.btTransform** %centerOfMassOffset_addr
+ %0 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btDefaultMotionState* %0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN13btMotionStateC2Ev(%struct.btActionInterface* %1) nounwind
+ %2 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btDefaultMotionState* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btActionInterface* %3, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV20btDefaultMotionState, i32 0, i32 2), i32 (...)*** %4, align 4
+ %5 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btDefaultMotionState* %5, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btTransform** %startTrans_addr, align 4 ; [#uses=1]
+ call void @_ZN11btTransformC1ERKS_(%struct.btTransform* %6, %struct.btTransform* %7) nounwind
+ %8 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btDefaultMotionState* %8, i32 0, i32 2 ; [#uses=1]
+ %10 = load %struct.btTransform** %centerOfMassOffset_addr, align 4 ; [#uses=1]
+ call void @_ZN11btTransformC1ERKS_(%struct.btTransform* %9, %struct.btTransform* %10) nounwind
+ %11 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btDefaultMotionState* %11, i32 0, i32 3 ; [#uses=1]
+ %13 = load %struct.btTransform** %startTrans_addr, align 4 ; [#uses=1]
+ call void @_ZN11btTransformC1ERKS_(%struct.btTransform* %12, %struct.btTransform* %13) nounwind
+ %14 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btDefaultMotionState* %14, i32 0, i32 4 ; [#uses=1]
+ store i8* null, i8** %15, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btDefaultMotionStateD1Ev(%struct.btDefaultMotionState* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btDefaultMotionState*, align 4 ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btDefaultMotionState* %this, %struct.btDefaultMotionState** %this_addr
+ %0 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btDefaultMotionState* %0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV20btDefaultMotionState, i32 0, i32 2), i32 (...)*** %2, align 4
+ br label %bb
+
+bb: ; preds = %entry
+ %3 = trunc i32 0 to i8 ; [#uses=1]
+ %toBool = icmp ne i8 %3, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %4 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btDefaultMotionState* %4 to i8* ; [#uses=1]
+ call void @_ZdlPv(i8* %5) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btDefaultMotionStateD0Ev(%struct.btDefaultMotionState* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btDefaultMotionState*, align 4 ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btDefaultMotionState* %this, %struct.btDefaultMotionState** %this_addr
+ %0 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btDefaultMotionState* %0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV20btDefaultMotionState, i32 0, i32 2), i32 (...)*** %2, align 4
+ br label %bb
+
+bb: ; preds = %entry
+ %3 = trunc i32 1 to i8 ; [#uses=1]
+ %toBool = icmp ne i8 %3, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %4 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btDefaultMotionState* %4 to i8* ; [#uses=1]
+ call void @_ZdlPv(i8* %5) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK20btDefaultMotionState17getWorldTransformER11btTransform(%struct.btDefaultMotionState* %this, %struct.btTransform* %centerOfMassWorldTrans) align 2 {
+entry:
+ %this_addr = alloca %struct.btDefaultMotionState*, align 4 ; [#uses=3]
+ %centerOfMassWorldTrans_addr = alloca %struct.btTransform*, align 4 ; [#uses=2]
+ %0 = alloca %struct.btTransform ; [#uses=2]
+ %1 = alloca %struct.btTransform ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btDefaultMotionState* %this, %struct.btDefaultMotionState** %this_addr
+ store %struct.btTransform* %centerOfMassWorldTrans, %struct.btTransform** %centerOfMassWorldTrans_addr
+ %2 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btDefaultMotionState* %2, i32 0, i32 1 ; [#uses=1]
+ %4 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btDefaultMotionState* %4, i32 0, i32 2 ; [#uses=1]
+ call void @_ZNK11btTransform7inverseEv(%struct.btTransform* noalias sret %0, %struct.btTransform* %5)
+ call void @_ZNK11btTransformmlERKS_(%struct.btTransform* noalias sret %1, %struct.btTransform* %0, %struct.btTransform* %3)
+ %6 = load %struct.btTransform** %centerOfMassWorldTrans_addr, align 4 ; [#uses=1]
+ %7 = call %struct.btTransform* @_ZN11btTransformaSERKS_(%struct.btTransform* %6, %struct.btTransform* %1) nounwind ; [#uses=0]
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btDefaultMotionState17setWorldTransformERK11btTransform(%struct.btDefaultMotionState* %this, %struct.btTransform* %centerOfMassWorldTrans) align 2 {
+entry:
+ %this_addr = alloca %struct.btDefaultMotionState*, align 4 ; [#uses=3]
+ %centerOfMassWorldTrans_addr = alloca %struct.btTransform*, align 4 ; [#uses=2]
+ %0 = alloca %struct.btTransform ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btDefaultMotionState* %this, %struct.btDefaultMotionState** %this_addr
+ store %struct.btTransform* %centerOfMassWorldTrans, %struct.btTransform** %centerOfMassWorldTrans_addr
+ %1 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btDefaultMotionState* %1, i32 0, i32 2 ; [#uses=1]
+ %3 = load %struct.btTransform** %centerOfMassWorldTrans_addr, align 4 ; [#uses=1]
+ call void @_ZNK11btTransformmlERKS_(%struct.btTransform* noalias sret %0, %struct.btTransform* %3, %struct.btTransform* %2)
+ %4 = load %struct.btDefaultMotionState** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btDefaultMotionState* %4, i32 0, i32 1 ; [#uses=1]
+ %6 = call %struct.btTransform* @_ZN11btTransformaSERKS_(%struct.btTransform* %5, %struct.btTransform* %0) nounwind ; [#uses=0]
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN11btRigidBody27btRigidBodyConstructionInfoC1EfP13btMotionStateP16btCollisionShapeRK9btVector3(%"struct.btRigidBody::btRigidBodyConstructionInfo"* %this, float %mass, %struct.btActionInterface* %motionState, %struct.btCollisionShape* %collisionShape, %struct.btQuadWord* %localInertia) nounwind align 2 {
+entry:
+ %this_addr = alloca %"struct.btRigidBody::btRigidBodyConstructionInfo"*, align 4 ; [#uses=18]
+ %mass_addr = alloca float, align 4 ; [#uses=2]
+ %motionState_addr = alloca %struct.btActionInterface*, align 4 ; [#uses=2]
+ %collisionShape_addr = alloca %struct.btCollisionShape*, align 4 ; [#uses=2]
+ %localInertia_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btRigidBody::btRigidBodyConstructionInfo"* %this, %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr
+ store float %mass, float* %mass_addr
+ store %struct.btActionInterface* %motionState, %struct.btActionInterface** %motionState_addr
+ store %struct.btCollisionShape* %collisionShape, %struct.btCollisionShape** %collisionShape_addr
+ store %struct.btQuadWord* %localInertia, %struct.btQuadWord** %localInertia_addr
+ %0 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %mass_addr, align 4 ; [#uses=1]
+ store float %2, float* %1, align 4
+ %3 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %3, i32 0, i32 1 ; [#uses=1]
+ %5 = load %struct.btActionInterface** %motionState_addr, align 4 ; [#uses=1]
+ store %struct.btActionInterface* %5, %struct.btActionInterface** %4, align 4
+ %6 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %6, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN11btTransformC1Ev(%struct.btTransform* %7) nounwind
+ %8 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %8, i32 0, i32 3 ; [#uses=1]
+ %10 = load %struct.btCollisionShape** %collisionShape_addr, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %10, %struct.btCollisionShape** %9, align 4
+ %11 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %11, i32 0, i32 4 ; [#uses=1]
+ %13 = load %struct.btQuadWord** %localInertia_addr, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %12, i32 0, i32 0 ; [#uses=4]
+ %15 = getelementptr inbounds %struct.btQuadWord* %13, i32 0, i32 0 ; [#uses=4]
+ %16 = getelementptr inbounds [4 x float]* %14, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds [4 x float]* %15, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds [4 x float]* %14, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds [4 x float]* %15, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds [4 x float]* %14, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds [4 x float]* %15, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds [4 x float]* %14, i32 0, i32 3 ; [#uses=1]
+ %26 = getelementptr inbounds [4 x float]* %15, i32 0, i32 3 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %28, i32 0, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ %30 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %30, i32 0, i32 6 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %32, i32 0, i32 7 ; [#uses=1]
+ store float 5.000000e-01, float* %33, align 4
+ %34 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %34, i32 0, i32 8 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %36, i32 0, i32 9 ; [#uses=1]
+ store float 0x3FE99999A0000000, float* %37, align 4
+ %38 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %38, i32 0, i32 10 ; [#uses=1]
+ store float 1.000000e+00, float* %39, align 4
+ %40 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %40, i32 0, i32 11 ; [#uses=1]
+ store i8 0, i8* %41, align 4
+ %42 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %42, i32 0, i32 12 ; [#uses=1]
+ store float 0x3F747AE140000000, float* %43, align 4
+ %44 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %44, i32 0, i32 13 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %45, align 4
+ %46 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %46, i32 0, i32 14 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %47, align 4
+ %48 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %48, i32 0, i32 15 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %49, align 4
+ %50 = load %"struct.btRigidBody::btRigidBodyConstructionInfo"** %this_addr, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %50, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN11btTransform11setIdentityEv(%struct.btTransform* %51) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr %struct.btRigidBody* @_ZN11btRigidBody6upcastEP17btCollisionObject(%struct.btCollisionObject* %colObj) nounwind {
+entry:
+ %colObj_addr = alloca %struct.btCollisionObject*, align 4 ; [#uses=3]
+ %retval = alloca %struct.btRigidBody* ; [#uses=2]
+ %0 = alloca %struct.btRigidBody* ; [#uses=3]
+ %retval.413 = alloca i8 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btCollisionObject* %colObj, %struct.btCollisionObject** %colObj_addr
+ %1 = load %struct.btCollisionObject** %colObj_addr, align 4 ; [#uses=1]
+ %2 = call i32 @_ZNK17btCollisionObject15getInternalTypeEv(%struct.btCollisionObject* %1) nounwind ; [#uses=1]
+ %3 = and i32 %2, 2 ; [#uses=1]
+ %4 = icmp ne i32 %3, 0 ; [#uses=1]
+ %5 = zext i1 %4 to i8 ; [#uses=1]
+ store i8 %5, i8* %retval.413, align 1
+ %6 = load i8* %retval.413, align 1 ; [#uses=1]
+ %toBool = icmp ne i8 %6, 0 ; [#uses=1]
+ br i1 %toBool, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %7 = load %struct.btCollisionObject** %colObj_addr, align 4 ; [#uses=1]
+ %8 = bitcast %struct.btCollisionObject* %7 to %struct.btRigidBody* ; [#uses=1]
+ store %struct.btRigidBody* %8, %struct.btRigidBody** %0, align 4
+ br label %bb2
+
+bb1: ; preds = %entry
+ store %struct.btRigidBody* null, %struct.btRigidBody** %0, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %9 = load %struct.btRigidBody** %0, align 4 ; [#uses=1]
+ store %struct.btRigidBody* %9, %struct.btRigidBody** %retval, align 4
+ br label %return
+
+return: ; preds = %bb2
+ %retval3 = load %struct.btRigidBody** %retval ; [#uses=1]
+ ret %struct.btRigidBody* %retval3
+}
+
+; [#uses=4]
+define linkonce_odr %struct.btActionInterface* @_ZN11btRigidBody14getMotionStateEv(%struct.btRigidBody* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btRigidBody*, align 4 ; [#uses=2]
+ %retval = alloca %struct.btActionInterface* ; [#uses=2]
+ %0 = alloca %struct.btActionInterface* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btRigidBody* %this, %struct.btRigidBody** %this_addr
+ %1 = load %struct.btRigidBody** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 20 ; [#uses=1]
+ %3 = load %struct.btActionInterface** %2, align 4 ; [#uses=1]
+ store %struct.btActionInterface* %3, %struct.btActionInterface** %0, align 4
+ %4 = load %struct.btActionInterface** %0, align 4 ; [#uses=1]
+ store %struct.btActionInterface* %4, %struct.btActionInterface** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load %struct.btActionInterface** %retval ; [#uses=1]
+ ret %struct.btActionInterface* %retval1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btTypedConstraint13buildJacobianEv(%struct.btTypedConstraint* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btTypedConstraint*, align 4 ; [#uses=1]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTypedConstraint* %this, %struct.btTypedConstraint** %this_addr
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btTypedConstraint21setupSolverConstraintER20btAlignedObjectArrayI18btSolverConstraintEiif(%struct.btTypedConstraint* %this, %struct.btConstraintArray* %ca, i32 %solverBodyA, i32 %solverBodyB, float %timeStep) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btTypedConstraint*, align 4 ; [#uses=1]
+ %ca_addr = alloca %struct.btConstraintArray*, align 4 ; [#uses=1]
+ %solverBodyA_addr = alloca i32, align 4 ; [#uses=1]
+ %solverBodyB_addr = alloca i32, align 4 ; [#uses=1]
+ %timeStep_addr = alloca float, align 4 ; [#uses=1]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTypedConstraint* %this, %struct.btTypedConstraint** %this_addr
+ store %struct.btConstraintArray* %ca, %struct.btConstraintArray** %ca_addr
+ store i32 %solverBodyA, i32* %solverBodyA_addr
+ store i32 %solverBodyB, i32* %solverBodyB_addr
+ store float %timeStep, float* %timeStep_addr
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btTypedConstraint23solveConstraintObsoleteER11btRigidBodyS1_f(%struct.btTypedConstraint* %this, %struct.btRigidBody* %unnamed_arg, %struct.btRigidBody* %unnamed_arg2, float %unnamed_arg4) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btTypedConstraint*, align 4 ; [#uses=1]
+ %unnamed_arg_addr = alloca %struct.btRigidBody*, align 4 ; [#uses=1]
+ %unnamed_arg_addr1 = alloca %struct.btRigidBody*, align 4 ; [#uses=1]
+ %unnamed_arg_addr3 = alloca float, align 4 ; [#uses=1]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTypedConstraint* %this, %struct.btTypedConstraint** %this_addr
+ store %struct.btRigidBody* %unnamed_arg, %struct.btRigidBody** %unnamed_arg_addr
+ store %struct.btRigidBody* %unnamed_arg2, %struct.btRigidBody** %unnamed_arg_addr1
+ store float %unnamed_arg4, float* %unnamed_arg_addr3
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK17btTypedConstraint28calculateSerializeBufferSizeEv(%struct.btTypedConstraint* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btTypedConstraint*, align 4 ; [#uses=1]
+ %retval = alloca i32 ; [#uses=2]
+ %0 = alloca i32 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTypedConstraint* %this, %struct.btTypedConstraint** %this_addr
+ store i32 44, i32* %0, align 4
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ store i32 %1, i32* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i32* %retval ; [#uses=1]
+ ret i32 %retval1
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4sizeEv(%"struct.btAlignedObjectArray<btCollisionObject*>"* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionObject*>"*, align 4 ; [#uses=2]
+ %retval = alloca i32 ; [#uses=2]
+ %0 = alloca i32 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionObject*>"* %this, %"struct.btAlignedObjectArray<btCollisionObject*>"** %this_addr
+ %1 = load %"struct.btAlignedObjectArray<btCollisionObject*>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionObject*>"* %1, i32 0, i32 1 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ store i32 %3, i32* %0, align 4
+ %4 = load i32* %0, align 4 ; [#uses=1]
+ store i32 %4, i32* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i32* %retval ; [#uses=1]
+ ret i32 %retval1
+}
+
+; [#uses=2]
+define linkonce_odr i32 @_ZNK16btCollisionWorld22getNumCollisionObjectsEv(%struct.btCollisionWorld* %this) align 2 {
+entry:
+ %this_addr = alloca %struct.btCollisionWorld*, align 4 ; [#uses=2]
+ %retval = alloca i32 ; [#uses=2]
+ %0 = alloca i32 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btCollisionWorld* %this, %struct.btCollisionWorld** %this_addr
+ %1 = load %struct.btCollisionWorld** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCollisionWorld* %1, i32 0, i32 1 ; [#uses=1]
+ %3 = call i32 @_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4sizeEv(%"struct.btAlignedObjectArray<btCollisionObject*>"* %2) nounwind ; [#uses=1]
+ store i32 %3, i32* %0, align 4
+ %4 = load i32* %0, align 4 ; [#uses=1]
+ store i32 %4, i32* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i32* %retval ; [#uses=1]
+ ret i32 %retval1
+}
+
+; [#uses=3]
+define linkonce_odr i32 @_ZNK20btAlignedObjectArrayIiE4sizeEv(%"struct.btAlignedObjectArray<int>"* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<int>"*, align 4 ; [#uses=2]
+ %retval = alloca i32 ; [#uses=2]
+ %0 = alloca i32 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<int>"* %this, %"struct.btAlignedObjectArray<int>"** %this_addr
+ %1 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %1, i32 0, i32 1 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ store i32 %3, i32* %0, align 4
+ %4 = load i32* %0, align 4 ; [#uses=1]
+ store i32 %4, i32* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i32* %retval ; [#uses=1]
+ ret i32 %retval1
+}
+
+; [#uses=6]
+define linkonce_odr i32* @_ZNK20btAlignedObjectArrayIiEixEi(%"struct.btAlignedObjectArray<int>"* %this, i32 %n) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<int>"*, align 4 ; [#uses=2]
+ %n_addr = alloca i32, align 4 ; [#uses=2]
+ %retval = alloca i32* ; [#uses=2]
+ %0 = alloca i32* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<int>"* %this, %"struct.btAlignedObjectArray<int>"** %this_addr
+ store i32 %n, i32* %n_addr
+ %1 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %1, i32 0, i32 3 ; [#uses=1]
+ %3 = load i32** %2, align 4 ; [#uses=1]
+ %4 = load i32* %n_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32* %3, i32 %4 ; [#uses=1]
+ store i32* %5, i32** %0, align 4
+ %6 = load i32** %0, align 4 ; [#uses=1]
+ store i32* %6, i32** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i32** %retval ; [#uses=1]
+ ret i32* %retval1
+}
+
+; [#uses=2]
+define linkonce_odr i32 @_ZNK20btAlignedObjectArrayI14btTriangleInfoE4sizeEv(%"struct.btAlignedObjectArray<btTriangleInfo>"* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btTriangleInfo>"*, align 4 ; [#uses=2]
+ %retval = alloca i32 ; [#uses=2]
+ %0 = alloca i32 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr
+ %1 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %1, i32 0, i32 1 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ store i32 %3, i32* %0, align 4
+ %4 = load i32* %0, align 4 ; [#uses=1]
+ store i32 %4, i32* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i32* %retval ; [#uses=1]
+ ret i32 %retval1
+}
+
+; [#uses=6]
+define linkonce_odr %struct.btTriangleInfo* @_ZNK20btAlignedObjectArrayI14btTriangleInfoEixEi(%"struct.btAlignedObjectArray<btTriangleInfo>"* %this, i32 %n) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btTriangleInfo>"*, align 4 ; [#uses=2]
+ %n_addr = alloca i32, align 4 ; [#uses=2]
+ %retval = alloca %struct.btTriangleInfo* ; [#uses=2]
+ %0 = alloca %struct.btTriangleInfo* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr
+ store i32 %n, i32* %n_addr
+ %1 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %1, i32 0, i32 3 ; [#uses=1]
+ %3 = load %struct.btTriangleInfo** %2, align 4 ; [#uses=1]
+ %4 = load i32* %n_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTriangleInfo* %3, i32 %4 ; [#uses=1]
+ store %struct.btTriangleInfo* %5, %struct.btTriangleInfo** %0, align 4
+ %6 = load %struct.btTriangleInfo** %0, align 4 ; [#uses=1]
+ store %struct.btTriangleInfo* %6, %struct.btTriangleInfo** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load %struct.btTriangleInfo** %retval ; [#uses=1]
+ ret %struct.btTriangleInfo* %retval1
+}
+
+; [#uses=2]
+define linkonce_odr i32 @_ZNK20btAlignedObjectArrayI9btHashIntE4sizeEv(%"struct.btAlignedObjectArray<btHashInt>"* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btHashInt>"*, align 4 ; [#uses=2]
+ %retval = alloca i32 ; [#uses=2]
+ %0 = alloca i32 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btHashInt>"* %this, %"struct.btAlignedObjectArray<btHashInt>"** %this_addr
+ %1 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %1, i32 0, i32 1 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ store i32 %3, i32* %0, align 4
+ %4 = load i32* %0, align 4 ; [#uses=1]
+ store i32 %4, i32* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i32* %retval ; [#uses=1]
+ ret i32 %retval1
+}
+
+; [#uses=3]
+define linkonce_odr %struct.btHashInt* @_ZNK20btAlignedObjectArrayI9btHashIntEixEi(%"struct.btAlignedObjectArray<btHashInt>"* %this, i32 %n) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btHashInt>"*, align 4 ; [#uses=2]
+ %n_addr = alloca i32, align 4 ; [#uses=2]
+ %retval = alloca %struct.btHashInt* ; [#uses=2]
+ %0 = alloca %struct.btHashInt* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btHashInt>"* %this, %"struct.btAlignedObjectArray<btHashInt>"** %this_addr
+ store i32 %n, i32* %n_addr
+ %1 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %1, i32 0, i32 3 ; [#uses=1]
+ %3 = load %struct.btHashInt** %2, align 4 ; [#uses=1]
+ %4 = load i32* %n_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btHashInt* %3, i32 %4 ; [#uses=1]
+ store %struct.btHashInt* %5, %struct.btHashInt** %0, align 4
+ %6 = load %struct.btHashInt** %0, align 4 ; [#uses=1]
+ store %struct.btHashInt* %6, %struct.btHashInt** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load %struct.btHashInt** %retval ; [#uses=1]
+ ret %struct.btHashInt* %retval1
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK17btTriangleInfoMap9serializeEPvP12btSerializer(%struct.btTriangleInfoMap* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) inlinehint align 2 {
+entry:
+ %this_addr = alloca %struct.btTriangleInfoMap*, align 4 ; [#uses=25]
+ %dataBuffer_addr = alloca i8*, align 4 ; [#uses=2]
+ %serializer_addr = alloca %struct.btActionInterface*, align 4 ; [#uses=25]
+ %retval = alloca i8* ; [#uses=2]
+ %0 = alloca i8* ; [#uses=2]
+ %iftmp.303 = alloca i32* ; [#uses=3]
+ %iftmp.301 = alloca %struct.btTriangleInfo* ; [#uses=3]
+ %iftmp.299 = alloca i32* ; [#uses=3]
+ %iftmp.297 = alloca i32* ; [#uses=3]
+ %tmapData = alloca %struct.btTriangleInfoMapData* ; [#uses=26]
+ %sz = alloca i32 ; [#uses=2]
+ %numElem = alloca i32 ; [#uses=3]
+ %chunk = alloca %struct.btChunk* ; [#uses=3]
+ %memPtr = alloca i32* ; [#uses=4]
+ %i = alloca i32 ; [#uses=5]
+ %sz12 = alloca i32 ; [#uses=2]
+ %numElem13 = alloca i32 ; [#uses=3]
+ %chunk14 = alloca %struct.btChunk* ; [#uses=3]
+ %memPtr15 = alloca i32* ; [#uses=4]
+ %i16 = alloca i32 ; [#uses=5]
+ %sz25 = alloca i32 ; [#uses=2]
+ %numElem26 = alloca i32 ; [#uses=3]
+ %chunk27 = alloca %struct.btChunk* ; [#uses=3]
+ %memPtr28 = alloca %struct.btTriangleInfo* ; [#uses=7]
+ %i29 = alloca i32 ; [#uses=8]
+ %sz38 = alloca i32 ; [#uses=2]
+ %numElem39 = alloca i32 ; [#uses=3]
+ %chunk40 = alloca %struct.btChunk* ; [#uses=3]
+ %memPtr41 = alloca i32* ; [#uses=4]
+ %i42 = alloca i32 ; [#uses=5]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTriangleInfoMap* %this, %struct.btTriangleInfoMap** %this_addr
+ store i8* %dataBuffer, i8** %dataBuffer_addr
+ store %struct.btActionInterface* %serializer, %struct.btActionInterface** %serializer_addr
+ %1 = load i8** %dataBuffer_addr, align 4 ; [#uses=1]
+ %2 = bitcast i8* %1 to %struct.btTriangleInfoMapData* ; [#uses=1]
+ store %struct.btTriangleInfoMapData* %2, %struct.btTriangleInfoMapData** %tmapData, align 4
+ %3 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTriangleInfoMap* %3, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTriangleInfoMapData* %6, i32 0, i32 4 ; [#uses=1]
+ store float %5, float* %7, align 4
+ %8 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTriangleInfoMap* %8, i32 0, i32 3 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTriangleInfoMapData* %11, i32 0, i32 5 ; [#uses=1]
+ store float %10, float* %12, align 4
+ %13 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTriangleInfoMap* %13, i32 0, i32 4 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTriangleInfoMapData* %16, i32 0, i32 6 ; [#uses=1]
+ store float %15, float* %17, align 4
+ %18 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTriangleInfoMap* %18, i32 0, i32 5 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTriangleInfoMapData* %21, i32 0, i32 7 ; [#uses=1]
+ store float %20, float* %22, align 4
+ %23 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTriangleInfoMap* %23, i32 0, i32 6 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTriangleInfoMapData* %26, i32 0, i32 8 ; [#uses=1]
+ store float %25, float* %27, align 4
+ %28 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btTriangleInfoMap* %28, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %29, i32 0, i32 0 ; [#uses=1]
+ %31 = call i32 @_ZNK20btAlignedObjectArrayIiE4sizeEv(%"struct.btAlignedObjectArray<int>"* %30) nounwind ; [#uses=1]
+ %32 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTriangleInfoMapData* %32, i32 0, i32 10 ; [#uses=1]
+ store i32 %31, i32* %33, align 4
+ %34 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTriangleInfoMapData* %34, i32 0, i32 10 ; [#uses=1]
+ %36 = load i32* %35, align 4 ; [#uses=1]
+ %37 = icmp ne i32 %36, 0 ; [#uses=1]
+ br i1 %37, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %38 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btActionInterface* %38, i32 0, i32 0 ; [#uses=1]
+ %40 = load i32 (...)*** %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds i32 (...)** %40, i32 7 ; [#uses=1]
+ %42 = load i32 (...)** %41, align 1 ; [#uses=1]
+ %43 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btTriangleInfoMap* %43, i32 0, i32 1 ; [#uses=1]
+ %45 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %44, i32 0, i32 0 ; [#uses=1]
+ %46 = call i32* @_ZNK20btAlignedObjectArrayIiEixEi(%"struct.btAlignedObjectArray<int>"* %45, i32 0) nounwind ; [#uses=1]
+ %47 = bitcast i32* %46 to i8* ; [#uses=1]
+ %48 = bitcast i32 (...)* %42 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %49 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %50 = call i8* %48(%struct.btActionInterface* %49, i8* %47) ; [#uses=1]
+ %51 = bitcast i8* %50 to i32* ; [#uses=1]
+ store i32* %51, i32** %iftmp.297, align 4
+ br label %bb2
+
+bb1: ; preds = %entry
+ store i32* null, i32** %iftmp.297, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %52 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btTriangleInfoMapData* %52, i32 0, i32 0 ; [#uses=1]
+ %54 = load i32** %iftmp.297, align 4 ; [#uses=1]
+ store i32* %54, i32** %53, align 4
+ %55 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btTriangleInfoMapData* %55, i32 0, i32 0 ; [#uses=1]
+ %57 = load i32** %56, align 4 ; [#uses=1]
+ %58 = icmp ne i32* %57, null ; [#uses=1]
+ br i1 %58, label %bb3, label %bb7
+
+bb3: ; preds = %bb2
+ store i32 4, i32* %sz, align 4
+ %59 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btTriangleInfoMapData* %59, i32 0, i32 10 ; [#uses=1]
+ %61 = load i32* %60, align 4 ; [#uses=1]
+ store i32 %61, i32* %numElem, align 4
+ %62 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btActionInterface* %62, i32 0, i32 0 ; [#uses=1]
+ %64 = load i32 (...)*** %63, align 4 ; [#uses=1]
+ %65 = getelementptr inbounds i32 (...)** %64, i32 4 ; [#uses=1]
+ %66 = load i32 (...)** %65, align 1 ; [#uses=1]
+ %67 = load i32* %sz, align 4 ; [#uses=1]
+ %68 = bitcast i32 (...)* %66 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %69 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %70 = load i32* %numElem, align 4 ; [#uses=1]
+ %71 = call %struct.btChunk* %68(%struct.btActionInterface* %69, i32 %67, i32 %70) ; [#uses=1]
+ store %struct.btChunk* %71, %struct.btChunk** %chunk, align 4
+ %72 = load %struct.btChunk** %chunk, align 4 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btChunk* %72, i32 0, i32 2 ; [#uses=1]
+ %74 = load i8** %73, align 4 ; [#uses=1]
+ %75 = bitcast i8* %74 to i32* ; [#uses=1]
+ store i32* %75, i32** %memPtr, align 4
+ store i32 0, i32* %i, align 4
+ br label %bb5
+
+bb4: ; preds = %bb5
+ %76 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btTriangleInfoMap* %76, i32 0, i32 1 ; [#uses=1]
+ %78 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %77, i32 0, i32 0 ; [#uses=1]
+ %79 = load i32* %i, align 4 ; [#uses=1]
+ %80 = call i32* @_ZNK20btAlignedObjectArrayIiEixEi(%"struct.btAlignedObjectArray<int>"* %78, i32 %79) nounwind ; [#uses=1]
+ %81 = load i32* %80, align 4 ; [#uses=1]
+ %82 = load i32** %memPtr, align 4 ; [#uses=1]
+ store i32 %81, i32* %82, align 4
+ %83 = load i32* %i, align 4 ; [#uses=1]
+ %84 = add nsw i32 %83, 1 ; [#uses=1]
+ store i32 %84, i32* %i, align 4
+ %85 = load i32** %memPtr, align 4 ; [#uses=1]
+ %86 = getelementptr inbounds i32* %85, i64 1 ; [#uses=1]
+ store i32* %86, i32** %memPtr, align 4
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ %87 = load i32* %i, align 4 ; [#uses=1]
+ %88 = load i32* %numElem, align 4 ; [#uses=1]
+ %89 = icmp slt i32 %87, %88 ; [#uses=1]
+ br i1 %89, label %bb4, label %bb6
+
+bb6: ; preds = %bb5
+ %90 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btActionInterface* %90, i32 0, i32 0 ; [#uses=1]
+ %92 = load i32 (...)*** %91, align 4 ; [#uses=1]
+ %93 = getelementptr inbounds i32 (...)** %92, i32 5 ; [#uses=1]
+ %94 = load i32 (...)** %93, align 1 ; [#uses=1]
+ %95 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btTriangleInfoMap* %95, i32 0, i32 1 ; [#uses=1]
+ %97 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %96, i32 0, i32 0 ; [#uses=1]
+ %98 = call i32* @_ZNK20btAlignedObjectArrayIiEixEi(%"struct.btAlignedObjectArray<int>"* %97, i32 0) nounwind ; [#uses=1]
+ %99 = bitcast i32* %98 to i8* ; [#uses=1]
+ %100 = bitcast i32 (...)* %94 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ %101 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %102 = load %struct.btChunk** %chunk, align 4 ; [#uses=1]
+ call void %100(%struct.btActionInterface* %101, %struct.btChunk* %102, i8* getelementptr inbounds ([4 x i8]* @.str, i32 0, i32 0), i32 1497453121, i8* %99)
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb2
+ %103 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btTriangleInfoMap* %103, i32 0, i32 1 ; [#uses=1]
+ %105 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %104, i32 0, i32 1 ; [#uses=1]
+ %106 = call i32 @_ZNK20btAlignedObjectArrayIiE4sizeEv(%"struct.btAlignedObjectArray<int>"* %105) nounwind ; [#uses=1]
+ %107 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btTriangleInfoMapData* %107, i32 0, i32 9 ; [#uses=1]
+ store i32 %106, i32* %108, align 4
+ %109 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btTriangleInfoMapData* %109, i32 0, i32 9 ; [#uses=1]
+ %111 = load i32* %110, align 4 ; [#uses=1]
+ %112 = icmp ne i32 %111, 0 ; [#uses=1]
+ br i1 %112, label %bb8, label %bb9
+
+bb8: ; preds = %bb7
+ %113 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btActionInterface* %113, i32 0, i32 0 ; [#uses=1]
+ %115 = load i32 (...)*** %114, align 4 ; [#uses=1]
+ %116 = getelementptr inbounds i32 (...)** %115, i32 7 ; [#uses=1]
+ %117 = load i32 (...)** %116, align 1 ; [#uses=1]
+ %118 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btTriangleInfoMap* %118, i32 0, i32 1 ; [#uses=1]
+ %120 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %119, i32 0, i32 1 ; [#uses=1]
+ %121 = call i32* @_ZNK20btAlignedObjectArrayIiEixEi(%"struct.btAlignedObjectArray<int>"* %120, i32 0) nounwind ; [#uses=1]
+ %122 = bitcast i32* %121 to i8* ; [#uses=1]
+ %123 = bitcast i32 (...)* %117 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %124 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %125 = call i8* %123(%struct.btActionInterface* %124, i8* %122) ; [#uses=1]
+ %126 = bitcast i8* %125 to i32* ; [#uses=1]
+ store i32* %126, i32** %iftmp.299, align 4
+ br label %bb10
+
+bb9: ; preds = %bb7
+ store i32* null, i32** %iftmp.299, align 4
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb8
+ %127 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %128 = getelementptr inbounds %struct.btTriangleInfoMapData* %127, i32 0, i32 1 ; [#uses=1]
+ %129 = load i32** %iftmp.299, align 4 ; [#uses=1]
+ store i32* %129, i32** %128, align 4
+ %130 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %131 = getelementptr inbounds %struct.btTriangleInfoMapData* %130, i32 0, i32 1 ; [#uses=1]
+ %132 = load i32** %131, align 4 ; [#uses=1]
+ %133 = icmp ne i32* %132, null ; [#uses=1]
+ br i1 %133, label %bb11, label %bb20
+
+bb11: ; preds = %bb10
+ store i32 4, i32* %sz12, align 4
+ %134 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btTriangleInfoMapData* %134, i32 0, i32 9 ; [#uses=1]
+ %136 = load i32* %135, align 4 ; [#uses=1]
+ store i32 %136, i32* %numElem13, align 4
+ %137 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btActionInterface* %137, i32 0, i32 0 ; [#uses=1]
+ %139 = load i32 (...)*** %138, align 4 ; [#uses=1]
+ %140 = getelementptr inbounds i32 (...)** %139, i32 4 ; [#uses=1]
+ %141 = load i32 (...)** %140, align 1 ; [#uses=1]
+ %142 = load i32* %sz12, align 4 ; [#uses=1]
+ %143 = bitcast i32 (...)* %141 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %144 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %145 = load i32* %numElem13, align 4 ; [#uses=1]
+ %146 = call %struct.btChunk* %143(%struct.btActionInterface* %144, i32 %142, i32 %145) ; [#uses=1]
+ store %struct.btChunk* %146, %struct.btChunk** %chunk14, align 4
+ %147 = load %struct.btChunk** %chunk14, align 4 ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btChunk* %147, i32 0, i32 2 ; [#uses=1]
+ %149 = load i8** %148, align 4 ; [#uses=1]
+ %150 = bitcast i8* %149 to i32* ; [#uses=1]
+ store i32* %150, i32** %memPtr15, align 4
+ store i32 0, i32* %i16, align 4
+ br label %bb18
+
+bb17: ; preds = %bb18
+ %151 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btTriangleInfoMap* %151, i32 0, i32 1 ; [#uses=1]
+ %153 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %152, i32 0, i32 1 ; [#uses=1]
+ %154 = load i32* %i16, align 4 ; [#uses=1]
+ %155 = call i32* @_ZNK20btAlignedObjectArrayIiEixEi(%"struct.btAlignedObjectArray<int>"* %153, i32 %154) nounwind ; [#uses=1]
+ %156 = load i32* %155, align 4 ; [#uses=1]
+ %157 = load i32** %memPtr15, align 4 ; [#uses=1]
+ store i32 %156, i32* %157, align 4
+ %158 = load i32* %i16, align 4 ; [#uses=1]
+ %159 = add nsw i32 %158, 1 ; [#uses=1]
+ store i32 %159, i32* %i16, align 4
+ %160 = load i32** %memPtr15, align 4 ; [#uses=1]
+ %161 = getelementptr inbounds i32* %160, i64 1 ; [#uses=1]
+ store i32* %161, i32** %memPtr15, align 4
+ br label %bb18
+
+bb18: ; preds = %bb17, %bb11
+ %162 = load i32* %i16, align 4 ; [#uses=1]
+ %163 = load i32* %numElem13, align 4 ; [#uses=1]
+ %164 = icmp slt i32 %162, %163 ; [#uses=1]
+ br i1 %164, label %bb17, label %bb19
+
+bb19: ; preds = %bb18
+ %165 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btActionInterface* %165, i32 0, i32 0 ; [#uses=1]
+ %167 = load i32 (...)*** %166, align 4 ; [#uses=1]
+ %168 = getelementptr inbounds i32 (...)** %167, i32 5 ; [#uses=1]
+ %169 = load i32 (...)** %168, align 1 ; [#uses=1]
+ %170 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btTriangleInfoMap* %170, i32 0, i32 1 ; [#uses=1]
+ %172 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %171, i32 0, i32 1 ; [#uses=1]
+ %173 = call i32* @_ZNK20btAlignedObjectArrayIiEixEi(%"struct.btAlignedObjectArray<int>"* %172, i32 0) nounwind ; [#uses=1]
+ %174 = bitcast i32* %173 to i8* ; [#uses=1]
+ %175 = bitcast i32 (...)* %169 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ %176 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %177 = load %struct.btChunk** %chunk14, align 4 ; [#uses=1]
+ call void %175(%struct.btActionInterface* %176, %struct.btChunk* %177, i8* getelementptr inbounds ([4 x i8]* @.str, i32 0, i32 0), i32 1497453121, i8* %174)
+ br label %bb20
+
+bb20: ; preds = %bb19, %bb10
+ %178 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %179 = getelementptr inbounds %struct.btTriangleInfoMap* %178, i32 0, i32 1 ; [#uses=1]
+ %180 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %179, i32 0, i32 2 ; [#uses=1]
+ %181 = call i32 @_ZNK20btAlignedObjectArrayI14btTriangleInfoE4sizeEv(%"struct.btAlignedObjectArray<btTriangleInfo>"* %180) nounwind ; [#uses=1]
+ %182 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %183 = getelementptr inbounds %struct.btTriangleInfoMapData* %182, i32 0, i32 11 ; [#uses=1]
+ store i32 %181, i32* %183, align 4
+ %184 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %185 = getelementptr inbounds %struct.btTriangleInfoMapData* %184, i32 0, i32 11 ; [#uses=1]
+ %186 = load i32* %185, align 4 ; [#uses=1]
+ %187 = icmp ne i32 %186, 0 ; [#uses=1]
+ br i1 %187, label %bb21, label %bb22
+
+bb21: ; preds = %bb20
+ %188 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btActionInterface* %188, i32 0, i32 0 ; [#uses=1]
+ %190 = load i32 (...)*** %189, align 4 ; [#uses=1]
+ %191 = getelementptr inbounds i32 (...)** %190, i32 7 ; [#uses=1]
+ %192 = load i32 (...)** %191, align 1 ; [#uses=1]
+ %193 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %194 = getelementptr inbounds %struct.btTriangleInfoMap* %193, i32 0, i32 1 ; [#uses=1]
+ %195 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %194, i32 0, i32 2 ; [#uses=1]
+ %196 = call %struct.btTriangleInfo* @_ZNK20btAlignedObjectArrayI14btTriangleInfoEixEi(%"struct.btAlignedObjectArray<btTriangleInfo>"* %195, i32 0) nounwind ; [#uses=1]
+ %197 = bitcast %struct.btTriangleInfo* %196 to i8* ; [#uses=1]
+ %198 = bitcast i32 (...)* %192 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %199 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %200 = call i8* %198(%struct.btActionInterface* %199, i8* %197) ; [#uses=1]
+ %201 = bitcast i8* %200 to %struct.btTriangleInfo* ; [#uses=1]
+ store %struct.btTriangleInfo* %201, %struct.btTriangleInfo** %iftmp.301, align 4
+ br label %bb23
+
+bb22: ; preds = %bb20
+ store %struct.btTriangleInfo* null, %struct.btTriangleInfo** %iftmp.301, align 4
+ br label %bb23
+
+bb23: ; preds = %bb22, %bb21
+ %202 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %203 = getelementptr inbounds %struct.btTriangleInfoMapData* %202, i32 0, i32 2 ; [#uses=1]
+ %204 = load %struct.btTriangleInfo** %iftmp.301, align 4 ; [#uses=1]
+ store %struct.btTriangleInfo* %204, %struct.btTriangleInfo** %203, align 4
+ %205 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %206 = getelementptr inbounds %struct.btTriangleInfoMapData* %205, i32 0, i32 2 ; [#uses=1]
+ %207 = load %struct.btTriangleInfo** %206, align 4 ; [#uses=1]
+ %208 = icmp ne %struct.btTriangleInfo* %207, null ; [#uses=1]
+ br i1 %208, label %bb24, label %bb33
+
+bb24: ; preds = %bb23
+ store i32 16, i32* %sz25, align 4
+ %209 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %210 = getelementptr inbounds %struct.btTriangleInfoMapData* %209, i32 0, i32 11 ; [#uses=1]
+ %211 = load i32* %210, align 4 ; [#uses=1]
+ store i32 %211, i32* %numElem26, align 4
+ %212 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %213 = getelementptr inbounds %struct.btActionInterface* %212, i32 0, i32 0 ; [#uses=1]
+ %214 = load i32 (...)*** %213, align 4 ; [#uses=1]
+ %215 = getelementptr inbounds i32 (...)** %214, i32 4 ; [#uses=1]
+ %216 = load i32 (...)** %215, align 1 ; [#uses=1]
+ %217 = load i32* %sz25, align 4 ; [#uses=1]
+ %218 = bitcast i32 (...)* %216 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %219 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %220 = load i32* %numElem26, align 4 ; [#uses=1]
+ %221 = call %struct.btChunk* %218(%struct.btActionInterface* %219, i32 %217, i32 %220) ; [#uses=1]
+ store %struct.btChunk* %221, %struct.btChunk** %chunk27, align 4
+ %222 = load %struct.btChunk** %chunk27, align 4 ; [#uses=1]
+ %223 = getelementptr inbounds %struct.btChunk* %222, i32 0, i32 2 ; [#uses=1]
+ %224 = load i8** %223, align 4 ; [#uses=1]
+ %225 = bitcast i8* %224 to %struct.btTriangleInfo* ; [#uses=1]
+ store %struct.btTriangleInfo* %225, %struct.btTriangleInfo** %memPtr28, align 4
+ store i32 0, i32* %i29, align 4
+ br label %bb31
+
+bb30: ; preds = %bb31
+ %226 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %227 = getelementptr inbounds %struct.btTriangleInfoMap* %226, i32 0, i32 1 ; [#uses=1]
+ %228 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %227, i32 0, i32 2 ; [#uses=1]
+ %229 = load i32* %i29, align 4 ; [#uses=1]
+ %230 = call %struct.btTriangleInfo* @_ZNK20btAlignedObjectArrayI14btTriangleInfoEixEi(%"struct.btAlignedObjectArray<btTriangleInfo>"* %228, i32 %229) nounwind ; [#uses=1]
+ %231 = getelementptr inbounds %struct.btTriangleInfo* %230, i32 0, i32 1 ; [#uses=1]
+ %232 = load float* %231, align 4 ; [#uses=1]
+ %233 = load %struct.btTriangleInfo** %memPtr28, align 4 ; [#uses=1]
+ %234 = getelementptr inbounds %struct.btTriangleInfo* %233, i32 0, i32 1 ; [#uses=1]
+ store float %232, float* %234, align 4
+ %235 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %236 = getelementptr inbounds %struct.btTriangleInfoMap* %235, i32 0, i32 1 ; [#uses=1]
+ %237 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %236, i32 0, i32 2 ; [#uses=1]
+ %238 = load i32* %i29, align 4 ; [#uses=1]
+ %239 = call %struct.btTriangleInfo* @_ZNK20btAlignedObjectArrayI14btTriangleInfoEixEi(%"struct.btAlignedObjectArray<btTriangleInfo>"* %237, i32 %238) nounwind ; [#uses=1]
+ %240 = getelementptr inbounds %struct.btTriangleInfo* %239, i32 0, i32 2 ; [#uses=1]
+ %241 = load float* %240, align 4 ; [#uses=1]
+ %242 = load %struct.btTriangleInfo** %memPtr28, align 4 ; [#uses=1]
+ %243 = getelementptr inbounds %struct.btTriangleInfo* %242, i32 0, i32 2 ; [#uses=1]
+ store float %241, float* %243, align 4
+ %244 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %245 = getelementptr inbounds %struct.btTriangleInfoMap* %244, i32 0, i32 1 ; [#uses=1]
+ %246 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %245, i32 0, i32 2 ; [#uses=1]
+ %247 = load i32* %i29, align 4 ; [#uses=1]
+ %248 = call %struct.btTriangleInfo* @_ZNK20btAlignedObjectArrayI14btTriangleInfoEixEi(%"struct.btAlignedObjectArray<btTriangleInfo>"* %246, i32 %247) nounwind ; [#uses=1]
+ %249 = getelementptr inbounds %struct.btTriangleInfo* %248, i32 0, i32 3 ; [#uses=1]
+ %250 = load float* %249, align 4 ; [#uses=1]
+ %251 = load %struct.btTriangleInfo** %memPtr28, align 4 ; [#uses=1]
+ %252 = getelementptr inbounds %struct.btTriangleInfo* %251, i32 0, i32 3 ; [#uses=1]
+ store float %250, float* %252, align 4
+ %253 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %254 = getelementptr inbounds %struct.btTriangleInfoMap* %253, i32 0, i32 1 ; [#uses=1]
+ %255 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %254, i32 0, i32 2 ; [#uses=1]
+ %256 = load i32* %i29, align 4 ; [#uses=1]
+ %257 = call %struct.btTriangleInfo* @_ZNK20btAlignedObjectArrayI14btTriangleInfoEixEi(%"struct.btAlignedObjectArray<btTriangleInfo>"* %255, i32 %256) nounwind ; [#uses=1]
+ %258 = getelementptr inbounds %struct.btTriangleInfo* %257, i32 0, i32 0 ; [#uses=1]
+ %259 = load i32* %258, align 4 ; [#uses=1]
+ %260 = load %struct.btTriangleInfo** %memPtr28, align 4 ; [#uses=1]
+ %261 = getelementptr inbounds %struct.btTriangleInfo* %260, i32 0, i32 0 ; [#uses=1]
+ store i32 %259, i32* %261, align 4
+ %262 = load i32* %i29, align 4 ; [#uses=1]
+ %263 = add nsw i32 %262, 1 ; [#uses=1]
+ store i32 %263, i32* %i29, align 4
+ %264 = load %struct.btTriangleInfo** %memPtr28, align 4 ; [#uses=1]
+ %265 = getelementptr inbounds %struct.btTriangleInfo* %264, i64 1 ; [#uses=1]
+ store %struct.btTriangleInfo* %265, %struct.btTriangleInfo** %memPtr28, align 4
+ br label %bb31
+
+bb31: ; preds = %bb30, %bb24
+ %266 = load i32* %i29, align 4 ; [#uses=1]
+ %267 = load i32* %numElem26, align 4 ; [#uses=1]
+ %268 = icmp slt i32 %266, %267 ; [#uses=1]
+ br i1 %268, label %bb30, label %bb32
+
+bb32: ; preds = %bb31
+ %269 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.btActionInterface* %269, i32 0, i32 0 ; [#uses=1]
+ %271 = load i32 (...)*** %270, align 4 ; [#uses=1]
+ %272 = getelementptr inbounds i32 (...)** %271, i32 5 ; [#uses=1]
+ %273 = load i32 (...)** %272, align 1 ; [#uses=1]
+ %274 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %275 = getelementptr inbounds %struct.btTriangleInfoMap* %274, i32 0, i32 1 ; [#uses=1]
+ %276 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %275, i32 0, i32 2 ; [#uses=1]
+ %277 = call %struct.btTriangleInfo* @_ZNK20btAlignedObjectArrayI14btTriangleInfoEixEi(%"struct.btAlignedObjectArray<btTriangleInfo>"* %276, i32 0) nounwind ; [#uses=1]
+ %278 = bitcast %struct.btTriangleInfo* %277 to i8* ; [#uses=1]
+ %279 = bitcast i32 (...)* %273 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ %280 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %281 = load %struct.btChunk** %chunk27, align 4 ; [#uses=1]
+ call void %279(%struct.btActionInterface* %280, %struct.btChunk* %281, i8* getelementptr inbounds ([19 x i8]* @.str1, i32 0, i32 0), i32 1497453121, i8* %278)
+ br label %bb33
+
+bb33: ; preds = %bb32, %bb23
+ %282 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %283 = getelementptr inbounds %struct.btTriangleInfoMap* %282, i32 0, i32 1 ; [#uses=1]
+ %284 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %283, i32 0, i32 3 ; [#uses=1]
+ %285 = call i32 @_ZNK20btAlignedObjectArrayI9btHashIntE4sizeEv(%"struct.btAlignedObjectArray<btHashInt>"* %284) nounwind ; [#uses=1]
+ %286 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %287 = getelementptr inbounds %struct.btTriangleInfoMapData* %286, i32 0, i32 12 ; [#uses=1]
+ store i32 %285, i32* %287, align 4
+ %288 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %289 = getelementptr inbounds %struct.btTriangleInfoMapData* %288, i32 0, i32 12 ; [#uses=1]
+ %290 = load i32* %289, align 4 ; [#uses=1]
+ %291 = icmp ne i32 %290, 0 ; [#uses=1]
+ br i1 %291, label %bb34, label %bb35
+
+bb34: ; preds = %bb33
+ %292 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %293 = getelementptr inbounds %struct.btActionInterface* %292, i32 0, i32 0 ; [#uses=1]
+ %294 = load i32 (...)*** %293, align 4 ; [#uses=1]
+ %295 = getelementptr inbounds i32 (...)** %294, i32 7 ; [#uses=1]
+ %296 = load i32 (...)** %295, align 1 ; [#uses=1]
+ %297 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %298 = getelementptr inbounds %struct.btTriangleInfoMap* %297, i32 0, i32 1 ; [#uses=1]
+ %299 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %298, i32 0, i32 3 ; [#uses=1]
+ %300 = call %struct.btHashInt* @_ZNK20btAlignedObjectArrayI9btHashIntEixEi(%"struct.btAlignedObjectArray<btHashInt>"* %299, i32 0) nounwind ; [#uses=1]
+ %301 = bitcast %struct.btHashInt* %300 to i8* ; [#uses=1]
+ %302 = bitcast i32 (...)* %296 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %303 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %304 = call i8* %302(%struct.btActionInterface* %303, i8* %301) ; [#uses=1]
+ %305 = bitcast i8* %304 to i32* ; [#uses=1]
+ store i32* %305, i32** %iftmp.303, align 4
+ br label %bb36
+
+bb35: ; preds = %bb33
+ store i32* null, i32** %iftmp.303, align 4
+ br label %bb36
+
+bb36: ; preds = %bb35, %bb34
+ %306 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %307 = getelementptr inbounds %struct.btTriangleInfoMapData* %306, i32 0, i32 3 ; [#uses=1]
+ %308 = load i32** %iftmp.303, align 4 ; [#uses=1]
+ store i32* %308, i32** %307, align 4
+ %309 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %310 = getelementptr inbounds %struct.btTriangleInfoMapData* %309, i32 0, i32 3 ; [#uses=1]
+ %311 = load i32** %310, align 4 ; [#uses=1]
+ %312 = icmp ne i32* %311, null ; [#uses=1]
+ br i1 %312, label %bb37, label %bb46
+
+bb37: ; preds = %bb36
+ store i32 4, i32* %sz38, align 4
+ %313 = load %struct.btTriangleInfoMapData** %tmapData, align 4 ; [#uses=1]
+ %314 = getelementptr inbounds %struct.btTriangleInfoMapData* %313, i32 0, i32 11 ; [#uses=1]
+ %315 = load i32* %314, align 4 ; [#uses=1]
+ store i32 %315, i32* %numElem39, align 4
+ %316 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %317 = getelementptr inbounds %struct.btActionInterface* %316, i32 0, i32 0 ; [#uses=1]
+ %318 = load i32 (...)*** %317, align 4 ; [#uses=1]
+ %319 = getelementptr inbounds i32 (...)** %318, i32 4 ; [#uses=1]
+ %320 = load i32 (...)** %319, align 1 ; [#uses=1]
+ %321 = load i32* %sz38, align 4 ; [#uses=1]
+ %322 = bitcast i32 (...)* %320 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %323 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %324 = load i32* %numElem39, align 4 ; [#uses=1]
+ %325 = call %struct.btChunk* %322(%struct.btActionInterface* %323, i32 %321, i32 %324) ; [#uses=1]
+ store %struct.btChunk* %325, %struct.btChunk** %chunk40, align 4
+ %326 = load %struct.btChunk** %chunk40, align 4 ; [#uses=1]
+ %327 = getelementptr inbounds %struct.btChunk* %326, i32 0, i32 2 ; [#uses=1]
+ %328 = load i8** %327, align 4 ; [#uses=1]
+ %329 = bitcast i8* %328 to i32* ; [#uses=1]
+ store i32* %329, i32** %memPtr41, align 4
+ store i32 0, i32* %i42, align 4
+ br label %bb44
+
+bb43: ; preds = %bb44
+ %330 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %331 = getelementptr inbounds %struct.btTriangleInfoMap* %330, i32 0, i32 1 ; [#uses=1]
+ %332 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %331, i32 0, i32 3 ; [#uses=1]
+ %333 = load i32* %i42, align 4 ; [#uses=1]
+ %334 = call %struct.btHashInt* @_ZNK20btAlignedObjectArrayI9btHashIntEixEi(%"struct.btAlignedObjectArray<btHashInt>"* %332, i32 %333) nounwind ; [#uses=1]
+ %335 = call i32 @_ZNK9btHashInt7getUid1Ev(%struct.btHashInt* %334) nounwind ; [#uses=1]
+ %336 = load i32** %memPtr41, align 4 ; [#uses=1]
+ store i32 %335, i32* %336, align 4
+ %337 = load i32* %i42, align 4 ; [#uses=1]
+ %338 = add nsw i32 %337, 1 ; [#uses=1]
+ store i32 %338, i32* %i42, align 4
+ %339 = load i32** %memPtr41, align 4 ; [#uses=1]
+ %340 = getelementptr inbounds i32* %339, i64 1 ; [#uses=1]
+ store i32* %340, i32** %memPtr41, align 4
+ br label %bb44
+
+bb44: ; preds = %bb43, %bb37
+ %341 = load i32* %i42, align 4 ; [#uses=1]
+ %342 = load i32* %numElem39, align 4 ; [#uses=1]
+ %343 = icmp slt i32 %341, %342 ; [#uses=1]
+ br i1 %343, label %bb43, label %bb45
+
+bb45: ; preds = %bb44
+ %344 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %345 = getelementptr inbounds %struct.btActionInterface* %344, i32 0, i32 0 ; [#uses=1]
+ %346 = load i32 (...)*** %345, align 4 ; [#uses=1]
+ %347 = getelementptr inbounds i32 (...)** %346, i32 5 ; [#uses=1]
+ %348 = load i32 (...)** %347, align 1 ; [#uses=1]
+ %349 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %350 = getelementptr inbounds %struct.btTriangleInfoMap* %349, i32 0, i32 1 ; [#uses=1]
+ %351 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %350, i32 0, i32 3 ; [#uses=1]
+ %352 = call %struct.btHashInt* @_ZNK20btAlignedObjectArrayI9btHashIntEixEi(%"struct.btAlignedObjectArray<btHashInt>"* %351, i32 0) nounwind ; [#uses=1]
+ %353 = bitcast %struct.btHashInt* %352 to i8* ; [#uses=1]
+ %354 = bitcast i32 (...)* %348 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ %355 = load %struct.btActionInterface** %serializer_addr, align 4 ; [#uses=1]
+ %356 = load %struct.btChunk** %chunk40, align 4 ; [#uses=1]
+ call void %354(%struct.btActionInterface* %355, %struct.btChunk* %356, i8* getelementptr inbounds ([4 x i8]* @.str, i32 0, i32 0), i32 1497453121, i8* %353)
+ br label %bb46
+
+bb46: ; preds = %bb45, %bb36
+ store i8* getelementptr inbounds ([22 x i8]* @.str2, i32 0, i32 0), i8** %0, align 4
+ %357 = load i8** %0, align 4 ; [#uses=1]
+ store i8* %357, i8** %retval, align 4
+ br label %return
+
+return: ; preds = %bb46
+ %retval47 = load i8** %retval ; [#uses=1]
+ ret i8* %retval47
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN14btTriangleInfoD1Ev(%struct.btTriangleInfo* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btTriangleInfo*, align 4 ; [#uses=1]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTriangleInfo* %this, %struct.btTriangleInfo** %this_addr
+ br label %bb
+
+bb: ; preds = %entry
+ br label %return
+
+return: ; preds = %bb
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN9btHashIntD1Ev(%struct.btHashInt* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btHashInt*, align 4 ; [#uses=1]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btHashInt* %this, %struct.btHashInt** %this_addr
+ br label %bb
+
+bb: ; preds = %entry
+ br label %return
+
+return: ; preds = %bb
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr %struct.btCollisionObject** @_ZN20btAlignedObjectArrayIP17btCollisionObjectEixEi(%"struct.btAlignedObjectArray<btCollisionObject*>"* %this, i32 %n) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionObject*>"*, align 4 ; [#uses=2]
+ %n_addr = alloca i32, align 4 ; [#uses=2]
+ %retval = alloca %struct.btCollisionObject** ; [#uses=2]
+ %0 = alloca %struct.btCollisionObject** ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionObject*>"* %this, %"struct.btAlignedObjectArray<btCollisionObject*>"** %this_addr
+ store i32 %n, i32* %n_addr
+ %1 = load %"struct.btAlignedObjectArray<btCollisionObject*>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionObject*>"* %1, i32 0, i32 3 ; [#uses=1]
+ %3 = load %struct.btCollisionObject*** %2, align 4 ; [#uses=1]
+ %4 = load i32* %n_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btCollisionObject** %3, i32 %4 ; [#uses=1]
+ store %struct.btCollisionObject** %5, %struct.btCollisionObject*** %0, align 4
+ %6 = load %struct.btCollisionObject*** %0, align 4 ; [#uses=1]
+ store %struct.btCollisionObject** %6, %struct.btCollisionObject*** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load %struct.btCollisionObject*** %retval ; [#uses=1]
+ ret %struct.btCollisionObject** %retval1
+}
+
+; [#uses=6]
+define linkonce_odr i32 @_ZNK20btAlignedObjectArrayIP16btCollisionShapeE4sizeEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=2]
+ %retval = alloca i32 ; [#uses=2]
+ %0 = alloca i32 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ %1 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %1, i32 0, i32 1 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ store i32 %3, i32* %0, align 4
+ %4 = load i32* %0, align 4 ; [#uses=1]
+ store i32 %4, i32* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i32* %retval ; [#uses=1]
+ ret i32 %retval1
+}
+
+; [#uses=2]
+define linkonce_odr %struct.btCollisionShape** @_ZN20btAlignedObjectArrayIP16btCollisionShapeEixEi(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this, i32 %n) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=2]
+ %n_addr = alloca i32, align 4 ; [#uses=2]
+ %retval = alloca %struct.btCollisionShape** ; [#uses=2]
+ %0 = alloca %struct.btCollisionShape** ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ store i32 %n, i32* %n_addr
+ %1 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %1, i32 0, i32 3 ; [#uses=1]
+ %3 = load %struct.btCollisionShape*** %2, align 4 ; [#uses=1]
+ %4 = load i32* %n_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btCollisionShape** %3, i32 %4 ; [#uses=1]
+ store %struct.btCollisionShape** %5, %struct.btCollisionShape*** %0, align 4
+ %6 = load %struct.btCollisionShape*** %0, align 4 ; [#uses=1]
+ store %struct.btCollisionShape** %6, %struct.btCollisionShape*** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load %struct.btCollisionShape*** %retval ; [#uses=1]
+ ret %struct.btCollisionShape** %retval1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIiE4initEv(%"struct.btAlignedObjectArray<int>"* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<int>"*, align 4 ; [#uses=5]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<int>"* %this, %"struct.btAlignedObjectArray<int>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %1, align 4
+ %2 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %2, i32 0, i32 3 ; [#uses=1]
+ store i32* null, i32** %3, align 4
+ %4 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %4, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %6, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI9btHashIntE4initEv(%"struct.btAlignedObjectArray<btHashInt>"* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btHashInt>"*, align 4 ; [#uses=5]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btHashInt>"* %this, %"struct.btAlignedObjectArray<btHashInt>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %1, align 4
+ %2 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %2, i32 0, i32 3 ; [#uses=1]
+ store %struct.btHashInt* null, %struct.btHashInt** %3, align 4
+ %4 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %4, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %6, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI14btTriangleInfoE4initEv(%"struct.btAlignedObjectArray<btTriangleInfo>"* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btTriangleInfo>"*, align 4 ; [#uses=5]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %1, align 4
+ %2 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %2, i32 0, i32 3 ; [#uses=1]
+ store %struct.btTriangleInfo* null, %struct.btTriangleInfo** %3, align 4
+ %4 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %4, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %6, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIiE7destroyEii(%"struct.btAlignedObjectArray<int>"* %this, i32 %first, i32 %last) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<int>"*, align 4 ; [#uses=2]
+ %first_addr = alloca i32, align 4 ; [#uses=2]
+ %last_addr = alloca i32, align 4 ; [#uses=2]
+ %i = alloca i32 ; [#uses=4]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<int>"* %this, %"struct.btAlignedObjectArray<int>"** %this_addr
+ store i32 %first, i32* %first_addr
+ store i32 %last, i32* %last_addr
+ %0 = load i32* %first_addr, align 4 ; [#uses=1]
+ store i32 %0, i32* %i, align 4
+ br label %bb1
+
+bb: ; preds = %bb1
+ %1 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %1, i32 0, i32 3 ; [#uses=1]
+ %3 = load i32** %2, align 4 ; [#uses=0]
+ %4 = load i32* %i, align 4 ; [#uses=1]
+ %5 = add nsw i32 %4, 1 ; [#uses=1]
+ store i32 %5, i32* %i, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %6 = load i32* %i, align 4 ; [#uses=1]
+ %7 = load i32* %last_addr, align 4 ; [#uses=1]
+ %8 = icmp slt i32 %6, %7 ; [#uses=1]
+ br i1 %8, label %bb, label %bb2
+
+bb2: ; preds = %bb1
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btAlignedAllocatorIP16btCollisionShapeLj16EEC1Ev(%struct.CONTACT_KEY_TOKEN_COMP* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.CONTACT_KEY_TOKEN_COMP*, align 4 ; [#uses=1]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.CONTACT_KEY_TOKEN_COMP* %this, %struct.CONTACT_KEY_TOKEN_COMP** %this_addr
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE4initEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=5]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %1, align 4
+ %2 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %2, i32 0, i32 3 ; [#uses=1]
+ store %struct.btCollisionShape** null, %struct.btCollisionShape*** %3, align 4
+ %4 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %4, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %6, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP16btCollisionShapeEC1Ev(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this) align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN18btAlignedAllocatorIP16btCollisionShapeLj16EEC1Ev(%struct.CONTACT_KEY_TOKEN_COMP* %1) nounwind
+ %2 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE4initEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %2) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr i32 @_ZNK20btAlignedObjectArrayIP16btCollisionShapeE8capacityEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=2]
+ %retval = alloca i32 ; [#uses=2]
+ %0 = alloca i32 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ %1 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %1, i32 0, i32 2 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ store i32 %3, i32* %0, align 4
+ %4 = load i32* %0, align 4 ; [#uses=1]
+ store i32 %4, i32* %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i32* %retval ; [#uses=1]
+ ret i32 %retval1
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZN20btAlignedObjectArrayIP16btCollisionShapeE9allocSizeEi(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this, i32 %size) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=1]
+ %size_addr = alloca i32, align 4 ; [#uses=3]
+ %retval = alloca i32 ; [#uses=2]
+ %iftmp.574 = alloca i32 ; [#uses=3]
+ %0 = alloca i32 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ store i32 %size, i32* %size_addr
+ %1 = load i32* %size_addr, align 4 ; [#uses=1]
+ %2 = icmp ne i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %3 = load i32* %size_addr, align 4 ; [#uses=1]
+ %4 = mul nsw i32 %3, 2 ; [#uses=1]
+ store i32 %4, i32* %iftmp.574, align 4
+ br label %bb2
+
+bb1: ; preds = %entry
+ store i32 1, i32* %iftmp.574, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %5 = load i32* %iftmp.574, align 4 ; [#uses=1]
+ store i32 %5, i32* %0, align 4
+ %6 = load i32* %0, align 4 ; [#uses=1]
+ store i32 %6, i32* %retval, align 4
+ br label %return
+
+return: ; preds = %bb2
+ %retval3 = load i32* %retval ; [#uses=1]
+ ret i32 %retval3
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE7destroyEii(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this, i32 %first, i32 %last) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=2]
+ %first_addr = alloca i32, align 4 ; [#uses=2]
+ %last_addr = alloca i32, align 4 ; [#uses=2]
+ %i = alloca i32 ; [#uses=4]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ store i32 %first, i32* %first_addr
+ store i32 %last, i32* %last_addr
+ %0 = load i32* %first_addr, align 4 ; [#uses=1]
+ store i32 %0, i32* %i, align 4
+ br label %bb1
+
+bb: ; preds = %bb1
+ %1 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %1, i32 0, i32 3 ; [#uses=1]
+ %3 = load %struct.btCollisionShape*** %2, align 4 ; [#uses=0]
+ %4 = load i32* %i, align 4 ; [#uses=1]
+ %5 = add nsw i32 %4, 1 ; [#uses=1]
+ store i32 %5, i32* %i, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %6 = load i32* %i, align 4 ; [#uses=1]
+ %7 = load i32* %last_addr, align 4 ; [#uses=1]
+ %8 = icmp slt i32 %6, %7 ; [#uses=1]
+ br i1 %8, label %bb, label %bb2
+
+bb2: ; preds = %bb1
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI9btHashIntE7destroyEii(%"struct.btAlignedObjectArray<btHashInt>"* %this, i32 %first, i32 %last) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btHashInt>"*, align 4 ; [#uses=2]
+ %first_addr = alloca i32, align 4 ; [#uses=2]
+ %last_addr = alloca i32, align 4 ; [#uses=2]
+ %i = alloca i32 ; [#uses=5]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btHashInt>"* %this, %"struct.btAlignedObjectArray<btHashInt>"** %this_addr
+ store i32 %first, i32* %first_addr
+ store i32 %last, i32* %last_addr
+ %0 = load i32* %first_addr, align 4 ; [#uses=1]
+ store i32 %0, i32* %i, align 4
+ br label %bb1
+
+bb: ; preds = %bb1
+ %1 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %1, i32 0, i32 3 ; [#uses=1]
+ %3 = load %struct.btHashInt** %2, align 4 ; [#uses=1]
+ %4 = load i32* %i, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btHashInt* %3, i32 %4 ; [#uses=1]
+ call void @_ZN9btHashIntD1Ev(%struct.btHashInt* %5) nounwind
+ %6 = load i32* %i, align 4 ; [#uses=1]
+ %7 = add nsw i32 %6, 1 ; [#uses=1]
+ store i32 %7, i32* %i, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %8 = load i32* %i, align 4 ; [#uses=1]
+ %9 = load i32* %last_addr, align 4 ; [#uses=1]
+ %10 = icmp slt i32 %8, %9 ; [#uses=1]
+ br i1 %10, label %bb, label %bb2
+
+bb2: ; preds = %bb1
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI14btTriangleInfoE7destroyEii(%"struct.btAlignedObjectArray<btTriangleInfo>"* %this, i32 %first, i32 %last) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btTriangleInfo>"*, align 4 ; [#uses=2]
+ %first_addr = alloca i32, align 4 ; [#uses=2]
+ %last_addr = alloca i32, align 4 ; [#uses=2]
+ %i = alloca i32 ; [#uses=5]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr
+ store i32 %first, i32* %first_addr
+ store i32 %last, i32* %last_addr
+ %0 = load i32* %first_addr, align 4 ; [#uses=1]
+ store i32 %0, i32* %i, align 4
+ br label %bb1
+
+bb: ; preds = %bb1
+ %1 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %1, i32 0, i32 3 ; [#uses=1]
+ %3 = load %struct.btTriangleInfo** %2, align 4 ; [#uses=1]
+ %4 = load i32* %i, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTriangleInfo* %3, i32 %4 ; [#uses=1]
+ call void @_ZN14btTriangleInfoD1Ev(%struct.btTriangleInfo* %5) nounwind
+ %6 = load i32* %i, align 4 ; [#uses=1]
+ %7 = add nsw i32 %6, 1 ; [#uses=1]
+ store i32 %7, i32* %i, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %8 = load i32* %i, align 4 ; [#uses=1]
+ %9 = load i32* %last_addr, align 4 ; [#uses=1]
+ %10 = icmp slt i32 %8, %9 ; [#uses=1]
+ br i1 %10, label %bb, label %bb2
+
+bb2: ; preds = %bb1
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK20btAlignedObjectArrayIP16btCollisionShapeE4copyEiiPS1_(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this, i32 %start, i32 %end, %struct.btCollisionShape** %dest) nounwind inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=2]
+ %start_addr = alloca i32, align 4 ; [#uses=2]
+ %end_addr = alloca i32, align 4 ; [#uses=2]
+ %dest_addr = alloca %struct.btCollisionShape**, align 4 ; [#uses=2]
+ %iftmp.601 = alloca %struct.btCollisionShape** ; [#uses=2]
+ %0 = alloca %struct.btCollisionShape** ; [#uses=5]
+ %i = alloca i32 ; [#uses=6]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ store i32 %start, i32* %start_addr
+ store i32 %end, i32* %end_addr
+ store %struct.btCollisionShape** %dest, %struct.btCollisionShape*** %dest_addr
+ %1 = load i32* %start_addr, align 4 ; [#uses=1]
+ store i32 %1, i32* %i, align 4
+ br label %bb4
+
+bb: ; preds = %bb4
+ %2 = load %struct.btCollisionShape*** %dest_addr, align 4 ; [#uses=1]
+ %3 = load i32* %i, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btCollisionShape** %2, i32 %3 ; [#uses=1]
+ %5 = bitcast %struct.btCollisionShape** %4 to i8* ; [#uses=1]
+ %6 = call i8* @_ZnwjPv(i32 4, i8* %5) nounwind ; [#uses=1]
+ %7 = bitcast i8* %6 to %struct.btCollisionShape** ; [#uses=1]
+ store %struct.btCollisionShape** %7, %struct.btCollisionShape*** %0, align 4
+ %8 = load %struct.btCollisionShape*** %0, align 4 ; [#uses=1]
+ %9 = icmp ne %struct.btCollisionShape** %8, null ; [#uses=1]
+ br i1 %9, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %10 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %10, i32 0, i32 3 ; [#uses=1]
+ %12 = load %struct.btCollisionShape*** %11, align 4 ; [#uses=1]
+ %13 = load i32* %i, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btCollisionShape** %12, i32 %13 ; [#uses=1]
+ %15 = load %struct.btCollisionShape** %14, align 1 ; [#uses=1]
+ %16 = load %struct.btCollisionShape*** %0, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %15, %struct.btCollisionShape** %16, align 4
+ %17 = load %struct.btCollisionShape*** %0, align 4 ; [#uses=1]
+ store %struct.btCollisionShape** %17, %struct.btCollisionShape*** %iftmp.601, align 4
+ br label %bb3
+
+bb2: ; preds = %bb
+ %18 = load %struct.btCollisionShape*** %0, align 4 ; [#uses=1]
+ store %struct.btCollisionShape** %18, %struct.btCollisionShape*** %iftmp.601, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1
+ %19 = load i32* %i, align 4 ; [#uses=1]
+ %20 = add nsw i32 %19, 1 ; [#uses=1]
+ store i32 %20, i32* %i, align 4
+ br label %bb4
+
+bb4: ; preds = %bb3, %entry
+ %21 = load i32* %i, align 4 ; [#uses=1]
+ %22 = load i32* %end_addr, align 4 ; [#uses=1]
+ %23 = icmp slt i32 %21, %22 ; [#uses=1]
+ br i1 %23, label %bb, label %bb5
+
+bb5: ; preds = %bb4
+ br label %return
+
+return: ; preds = %bb5
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btTypedConstraintD0Ev(%struct.btTypedConstraint* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btTypedConstraint*, align 4 ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTypedConstraint* %this, %struct.btTypedConstraint** %this_addr
+ %0 = load %struct.btTypedConstraint** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTypedConstraint* %0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV17btTypedConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ br label %bb
+
+bb: ; preds = %entry
+ %2 = trunc i32 1 to i8 ; [#uses=1]
+ %toBool = icmp ne i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %3 = load %struct.btTypedConstraint** %this_addr, align 4 ; [#uses=1]
+ %4 = bitcast %struct.btTypedConstraint* %3 to i8* ; [#uses=1]
+ call void @_ZdlPv(i8* %4) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btTypedConstraintD1Ev(%struct.btTypedConstraint* %this) nounwind align 2 {
+entry:
+ %this_addr = alloca %struct.btTypedConstraint*, align 4 ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTypedConstraint* %this, %struct.btTypedConstraint** %this_addr
+ %0 = load %struct.btTypedConstraint** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTypedConstraint* %0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV17btTypedConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ br label %bb
+
+bb: ; preds = %entry
+ %2 = trunc i32 0 to i8 ; [#uses=1]
+ %toBool = icmp ne i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %3 = load %struct.btTypedConstraint** %this_addr, align 4 ; [#uses=1]
+ %4 = bitcast %struct.btTypedConstraint* %3 to i8* ; [#uses=1]
+ call void @_ZdlPv(i8* %4) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=180]
+declare void @_ZdlPv(i8*) nounwind
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btAlignedAllocatorI9btHashIntLj16EE10deallocateEPS0_(%struct.CONTACT_KEY_TOKEN_COMP* %this, %struct.btHashInt* %ptr) align 2 {
+entry:
+ %this_addr = alloca %struct.CONTACT_KEY_TOKEN_COMP*, align 4 ; [#uses=1]
+ %ptr_addr = alloca %struct.btHashInt*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.CONTACT_KEY_TOKEN_COMP* %this, %struct.CONTACT_KEY_TOKEN_COMP** %this_addr
+ store %struct.btHashInt* %ptr, %struct.btHashInt** %ptr_addr
+ %0 = load %struct.btHashInt** %ptr_addr, align 4 ; [#uses=1]
+ %1 = bitcast %struct.btHashInt* %0 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %1)
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI9btHashIntE10deallocateEv(%"struct.btAlignedObjectArray<btHashInt>"* %this) inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btHashInt>"*, align 4 ; [#uses=6]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btHashInt>"* %this, %"struct.btAlignedObjectArray<btHashInt>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %0, i32 0, i32 3 ; [#uses=1]
+ %2 = load %struct.btHashInt** %1, align 4 ; [#uses=1]
+ %3 = icmp ne %struct.btHashInt* %2, null ; [#uses=1]
+ br i1 %3, label %bb, label %bb3
+
+bb: ; preds = %entry
+ %4 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %4, i32 0, i32 4 ; [#uses=1]
+ %6 = load i8* %5, align 4 ; [#uses=1]
+ %toBool = icmp ne i8 %6, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %7 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %7, i32 0, i32 3 ; [#uses=1]
+ %9 = load %struct.btHashInt** %8, align 4 ; [#uses=1]
+ %10 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %10, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN18btAlignedAllocatorI9btHashIntLj16EE10deallocateEPS0_(%struct.CONTACT_KEY_TOKEN_COMP* %11, %struct.btHashInt* %9)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %12 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %12, i32 0, i32 3 ; [#uses=1]
+ store %struct.btHashInt* null, %struct.btHashInt** %13, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2, %entry
+ br label %return
+
+return: ; preds = %bb3
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI9btHashIntE5clearEv(%"struct.btAlignedObjectArray<btHashInt>"* %this) inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btHashInt>"*, align 4 ; [#uses=5]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btHashInt>"* %this, %"struct.btAlignedObjectArray<btHashInt>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ %1 = call i32 @_ZNK20btAlignedObjectArrayI9btHashIntE4sizeEv(%"struct.btAlignedObjectArray<btHashInt>"* %0) nounwind ; [#uses=1]
+ %2 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI9btHashIntE7destroyEii(%"struct.btAlignedObjectArray<btHashInt>"* %2, i32 0, i32 %1) nounwind
+ %3 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI9btHashIntE10deallocateEv(%"struct.btAlignedObjectArray<btHashInt>"* %3) inlinehint
+ %4 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI9btHashIntE4initEv(%"struct.btAlignedObjectArray<btHashInt>"* %4) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI9btHashIntED1Ev(%"struct.btAlignedObjectArray<btHashInt>"* %this) align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btHashInt>"*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btHashInt>"* %this, %"struct.btAlignedObjectArray<btHashInt>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<btHashInt>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI9btHashIntE5clearEv(%"struct.btAlignedObjectArray<btHashInt>"* %0) inlinehint
+ br label %bb
+
+bb: ; preds = %entry
+ br label %return
+
+return: ; preds = %bb
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btAlignedAllocatorI14btTriangleInfoLj16EE10deallocateEPS0_(%struct.CONTACT_KEY_TOKEN_COMP* %this, %struct.btTriangleInfo* %ptr) align 2 {
+entry:
+ %this_addr = alloca %struct.CONTACT_KEY_TOKEN_COMP*, align 4 ; [#uses=1]
+ %ptr_addr = alloca %struct.btTriangleInfo*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.CONTACT_KEY_TOKEN_COMP* %this, %struct.CONTACT_KEY_TOKEN_COMP** %this_addr
+ store %struct.btTriangleInfo* %ptr, %struct.btTriangleInfo** %ptr_addr
+ %0 = load %struct.btTriangleInfo** %ptr_addr, align 4 ; [#uses=1]
+ %1 = bitcast %struct.btTriangleInfo* %0 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %1)
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI14btTriangleInfoE10deallocateEv(%"struct.btAlignedObjectArray<btTriangleInfo>"* %this) inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btTriangleInfo>"*, align 4 ; [#uses=6]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %0, i32 0, i32 3 ; [#uses=1]
+ %2 = load %struct.btTriangleInfo** %1, align 4 ; [#uses=1]
+ %3 = icmp ne %struct.btTriangleInfo* %2, null ; [#uses=1]
+ br i1 %3, label %bb, label %bb3
+
+bb: ; preds = %entry
+ %4 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %4, i32 0, i32 4 ; [#uses=1]
+ %6 = load i8* %5, align 4 ; [#uses=1]
+ %toBool = icmp ne i8 %6, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %7 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %7, i32 0, i32 3 ; [#uses=1]
+ %9 = load %struct.btTriangleInfo** %8, align 4 ; [#uses=1]
+ %10 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %10, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN18btAlignedAllocatorI14btTriangleInfoLj16EE10deallocateEPS0_(%struct.CONTACT_KEY_TOKEN_COMP* %11, %struct.btTriangleInfo* %9)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %12 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %12, i32 0, i32 3 ; [#uses=1]
+ store %struct.btTriangleInfo* null, %struct.btTriangleInfo** %13, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2, %entry
+ br label %return
+
+return: ; preds = %bb3
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI14btTriangleInfoE5clearEv(%"struct.btAlignedObjectArray<btTriangleInfo>"* %this) inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btTriangleInfo>"*, align 4 ; [#uses=5]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %1 = call i32 @_ZNK20btAlignedObjectArrayI14btTriangleInfoE4sizeEv(%"struct.btAlignedObjectArray<btTriangleInfo>"* %0) nounwind ; [#uses=1]
+ %2 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI14btTriangleInfoE7destroyEii(%"struct.btAlignedObjectArray<btTriangleInfo>"* %2, i32 0, i32 %1) nounwind
+ %3 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI14btTriangleInfoE10deallocateEv(%"struct.btAlignedObjectArray<btTriangleInfo>"* %3) inlinehint
+ %4 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI14btTriangleInfoE4initEv(%"struct.btAlignedObjectArray<btTriangleInfo>"* %4) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI14btTriangleInfoED1Ev(%"struct.btAlignedObjectArray<btTriangleInfo>"* %this) align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btTriangleInfo>"*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI14btTriangleInfoE5clearEv(%"struct.btAlignedObjectArray<btTriangleInfo>"* %0) inlinehint
+ br label %bb
+
+bb: ; preds = %entry
+ br label %return
+
+return: ; preds = %bb
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btAlignedAllocatorIiLj16EE10deallocateEPi(%struct.CONTACT_KEY_TOKEN_COMP* %this, i32* %ptr) align 2 {
+entry:
+ %this_addr = alloca %struct.CONTACT_KEY_TOKEN_COMP*, align 4 ; [#uses=1]
+ %ptr_addr = alloca i32*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.CONTACT_KEY_TOKEN_COMP* %this, %struct.CONTACT_KEY_TOKEN_COMP** %this_addr
+ store i32* %ptr, i32** %ptr_addr
+ %0 = load i32** %ptr_addr, align 4 ; [#uses=1]
+ %1 = bitcast i32* %0 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %1)
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIiE10deallocateEv(%"struct.btAlignedObjectArray<int>"* %this) inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<int>"*, align 4 ; [#uses=6]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<int>"* %this, %"struct.btAlignedObjectArray<int>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %0, i32 0, i32 3 ; [#uses=1]
+ %2 = load i32** %1, align 4 ; [#uses=1]
+ %3 = icmp ne i32* %2, null ; [#uses=1]
+ br i1 %3, label %bb, label %bb3
+
+bb: ; preds = %entry
+ %4 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %4, i32 0, i32 4 ; [#uses=1]
+ %6 = load i8* %5, align 4 ; [#uses=1]
+ %toBool = icmp ne i8 %6, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %7 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %7, i32 0, i32 3 ; [#uses=1]
+ %9 = load i32** %8, align 4 ; [#uses=1]
+ %10 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %10, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN18btAlignedAllocatorIiLj16EE10deallocateEPi(%struct.CONTACT_KEY_TOKEN_COMP* %11, i32* %9)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %12 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %12, i32 0, i32 3 ; [#uses=1]
+ store i32* null, i32** %13, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2, %entry
+ br label %return
+
+return: ; preds = %bb3
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIiE5clearEv(%"struct.btAlignedObjectArray<int>"* %this) inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<int>"*, align 4 ; [#uses=5]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<int>"* %this, %"struct.btAlignedObjectArray<int>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ %1 = call i32 @_ZNK20btAlignedObjectArrayIiE4sizeEv(%"struct.btAlignedObjectArray<int>"* %0) nounwind ; [#uses=1]
+ %2 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIiE7destroyEii(%"struct.btAlignedObjectArray<int>"* %2, i32 0, i32 %1) nounwind
+ %3 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIiE10deallocateEv(%"struct.btAlignedObjectArray<int>"* %3) inlinehint
+ %4 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIiE4initEv(%"struct.btAlignedObjectArray<int>"* %4) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIiED1Ev(%"struct.btAlignedObjectArray<int>"* %this) align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<int>"*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<int>"* %this, %"struct.btAlignedObjectArray<int>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<int>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIiE5clearEv(%"struct.btAlignedObjectArray<int>"* %0) inlinehint
+ br label %bb
+
+bb: ; preds = %entry
+ br label %return
+
+return: ; preds = %bb
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN9btHashMapI9btHashInt14btTriangleInfoED2Ev(%"struct.btHashMap<btHashInt,btTriangleInfo>"* %this) align 2 {
+entry:
+ %this_addr = alloca %"struct.btHashMap<btHashInt,btTriangleInfo>"*, align 4 ; [#uses=8]
+ %save_filt.630 = alloca i32 ; [#uses=2]
+ %save_eptr.629 = alloca i8* ; [#uses=2]
+ %save_filt.628 = alloca i32 ; [#uses=2]
+ %save_eptr.627 = alloca i8* ; [#uses=2]
+ %save_filt.626 = alloca i32 ; [#uses=2]
+ %save_eptr.625 = alloca i8* ; [#uses=2]
+ %eh_exception = alloca i8* ; [#uses=19]
+ %eh_selector = alloca i32 ; [#uses=12]
+ %memtmp = alloca %"struct.btAlignedObjectArray<btTriangleInfo>"* ; [#uses=4]
+ %memtmp9 = alloca %"struct.btAlignedObjectArray<int>"* ; [#uses=4]
+ %memtmp17 = alloca %"struct.btAlignedObjectArray<int>"* ; [#uses=4]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, %"struct.btHashMap<btHashInt,btTriangleInfo>"** %this_addr
+ %0 = load %"struct.btHashMap<btHashInt,btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %0, i32 0, i32 3 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI9btHashIntED1Ev(%"struct.btAlignedObjectArray<btHashInt>"* %1)
+ to label %invcont unwind label %lpad28
+
+invcont: ; preds = %entry
+ %2 = load %"struct.btHashMap<btHashInt,btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %2, i32 0, i32 2 ; [#uses=1]
+ store %"struct.btAlignedObjectArray<btTriangleInfo>"* %3, %"struct.btAlignedObjectArray<btTriangleInfo>"** %memtmp
+ %mtmp = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %memtmp ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI14btTriangleInfoED1Ev(%"struct.btAlignedObjectArray<btTriangleInfo>"* %mtmp)
+ to label %invcont1 unwind label %lpad24
+
+invcont1: ; preds = %invcont
+ br label %bb4
+
+bb: ; preds = %ppad45
+ %eh_select = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select, i32* %save_filt.626, align 4
+ %eh_value = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value, i8** %save_eptr.625, align 4
+ %4 = load %"struct.btHashMap<btHashInt,btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %4, i32 0, i32 2 ; [#uses=1]
+ store %"struct.btAlignedObjectArray<btTriangleInfo>"* %5, %"struct.btAlignedObjectArray<btTriangleInfo>"** %memtmp, align 4
+ %6 = load %"struct.btAlignedObjectArray<btTriangleInfo>"** %memtmp, align 4 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI14btTriangleInfoED1Ev(%"struct.btAlignedObjectArray<btTriangleInfo>"* %6)
+ to label %invcont2 unwind label %lpad32
+
+invcont2: ; preds = %bb
+ %7 = load i8** %save_eptr.625, align 4 ; [#uses=1]
+ store i8* %7, i8** %eh_exception, align 4
+ %8 = load i32* %save_filt.626, align 4 ; [#uses=1]
+ store i32 %8, i32* %eh_selector, align 4
+ br label %ppad44
+
+bb3: ; preds = %ppad46
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+bb4: ; preds = %invcont1
+ %9 = load %"struct.btHashMap<btHashInt,btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %9, i32 0, i32 1 ; [#uses=1]
+ store %"struct.btAlignedObjectArray<int>"* %10, %"struct.btAlignedObjectArray<int>"** %memtmp9
+ %mtmp10 = load %"struct.btAlignedObjectArray<int>"** %memtmp9 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayIiED1Ev(%"struct.btAlignedObjectArray<int>"* %mtmp10)
+ to label %invcont5 unwind label %lpad
+
+invcont5: ; preds = %bb4
+ br label %bb13
+
+bb6: ; preds = %ppad44
+ %eh_select7 = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select7, i32* %save_filt.628, align 4
+ %eh_value8 = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value8, i8** %save_eptr.627, align 4
+ %11 = load %"struct.btHashMap<btHashInt,btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %11, i32 0, i32 1 ; [#uses=1]
+ store %"struct.btAlignedObjectArray<int>"* %12, %"struct.btAlignedObjectArray<int>"** %memtmp9, align 4
+ %13 = load %"struct.btAlignedObjectArray<int>"** %memtmp9, align 4 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayIiED1Ev(%"struct.btAlignedObjectArray<int>"* %13)
+ to label %invcont11 unwind label %lpad36
+
+invcont11: ; preds = %bb6
+ %14 = load i8** %save_eptr.627, align 4 ; [#uses=1]
+ store i8* %14, i8** %eh_exception, align 4
+ %15 = load i32* %save_filt.628, align 4 ; [#uses=1]
+ store i32 %15, i32* %eh_selector, align 4
+ br label %ppad
+
+bb12: ; preds = %ppad47
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+bb13: ; preds = %invcont5
+ %16 = load %"struct.btHashMap<btHashInt,btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %16, i32 0, i32 0 ; [#uses=1]
+ store %"struct.btAlignedObjectArray<int>"* %17, %"struct.btAlignedObjectArray<int>"** %memtmp17
+ %mtmp18 = load %"struct.btAlignedObjectArray<int>"** %memtmp17 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIiED1Ev(%"struct.btAlignedObjectArray<int>"* %mtmp18)
+ br label %bb21
+
+bb14: ; preds = %ppad
+ %eh_select15 = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select15, i32* %save_filt.630, align 4
+ %eh_value16 = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value16, i8** %save_eptr.629, align 4
+ %18 = load %"struct.btHashMap<btHashInt,btTriangleInfo>"** %this_addr, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %18, i32 0, i32 0 ; [#uses=1]
+ store %"struct.btAlignedObjectArray<int>"* %19, %"struct.btAlignedObjectArray<int>"** %memtmp17, align 4
+ %20 = load %"struct.btAlignedObjectArray<int>"** %memtmp17, align 4 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayIiED1Ev(%"struct.btAlignedObjectArray<int>"* %20)
+ to label %invcont19 unwind label %lpad40
+
+invcont19: ; preds = %bb14
+ %21 = load i8** %save_eptr.629, align 4 ; [#uses=1]
+ store i8* %21, i8** %eh_exception, align 4
+ %22 = load i32* %save_filt.630, align 4 ; [#uses=1]
+ store i32 %22, i32* %eh_selector, align 4
+ br label %Unwind
+
+bb20: ; preds = %ppad48
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+bb21: ; preds = %bb13
+ br label %return
+
+return: ; preds = %bb21
+ ret void
+
+lpad: ; preds = %bb4
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr, i8** %eh_exception
+ %eh_ptr22 = load i8** %eh_exception ; [#uses=1]
+ %eh_select23 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr22, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select23, i32* %eh_selector
+ br label %ppad
+
+lpad24: ; preds = %invcont
+ %eh_ptr25 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr25, i8** %eh_exception
+ %eh_ptr26 = load i8** %eh_exception ; [#uses=1]
+ %eh_select27 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr26, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select27, i32* %eh_selector
+ br label %ppad44
+
+lpad28: ; preds = %entry
+ %eh_ptr29 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr29, i8** %eh_exception
+ %eh_ptr30 = load i8** %eh_exception ; [#uses=1]
+ %eh_select31 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr30, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select31, i32* %eh_selector
+ br label %ppad45
+
+lpad32: ; preds = %bb
+ %eh_ptr33 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr33, i8** %eh_exception
+ %eh_ptr34 = load i8** %eh_exception ; [#uses=1]
+ %eh_select35 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr34, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=1]
+ store i32 %eh_select35, i32* %eh_selector
+ br label %ppad46
+
+lpad36: ; preds = %bb6
+ %eh_ptr37 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr37, i8** %eh_exception
+ %eh_ptr38 = load i8** %eh_exception ; [#uses=1]
+ %eh_select39 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr38, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=1]
+ store i32 %eh_select39, i32* %eh_selector
+ br label %ppad47
+
+lpad40: ; preds = %bb14
+ %eh_ptr41 = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr41, i8** %eh_exception
+ %eh_ptr42 = load i8** %eh_exception ; [#uses=1]
+ %eh_select43 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr42, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=1]
+ store i32 %eh_select43, i32* %eh_selector
+ br label %ppad48
+
+ppad: ; preds = %lpad, %invcont11
+ br label %bb14
+
+ppad44: ; preds = %lpad24, %invcont2
+ br label %bb6
+
+ppad45: ; preds = %lpad28
+ br label %bb
+
+ppad46: ; preds = %lpad32
+ br label %bb3
+
+ppad47: ; preds = %lpad36
+ br label %bb12
+
+ppad48: ; preds = %lpad40
+ br label %bb20
+
+Unwind: ; preds = %invcont19
+ %eh_ptr49 = load i8** %eh_exception ; [#uses=1]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr49)
+ unreachable
+}
+
+; [#uses=830]
+declare i8* @llvm.eh.exception() nounwind readonly
+
+; [#uses=830]
+declare i32 @llvm.eh.selector(i8*, i8*, ...) nounwind
+
+; [#uses=0]
+declare i32 @llvm.eh.typeid.for(i8*) nounwind
+
+; [#uses=374]
+declare void @_ZSt9terminatev() noreturn nounwind
+
+; [#uses=1]
+declare i32 @__gxx_personality_v0(...)
+
+; [#uses=317]
+declare void @_Unwind_Resume_or_Rethrow(i8*)
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btTriangleInfoMapD0Ev(%struct.btTriangleInfoMap* %this) align 2 {
+entry:
+ %this_addr = alloca %struct.btTriangleInfoMap*, align 4 ; [#uses=4]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTriangleInfoMap* %this, %struct.btTriangleInfoMap** %this_addr
+ %0 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTriangleInfoMap* %0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV17btTriangleInfoMap, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %3 = ptrtoint %struct.btTriangleInfoMap* %2 to i32 ; [#uses=1]
+ %4 = ptrtoint %struct.btTriangleInfoMap* inttoptr (i64 4 to %struct.btTriangleInfoMap*) to i32 ; [#uses=1]
+ %5 = add i32 %3, %4 ; [#uses=1]
+ %6 = inttoptr i32 %5 to %struct.btTriangleInfoMap* ; [#uses=1]
+ %7 = bitcast %struct.btTriangleInfoMap* %6 to %"struct.btHashMap<btHashInt,btTriangleInfo>"* ; [#uses=1]
+ call void @_ZN9btHashMapI9btHashInt14btTriangleInfoED2Ev(%"struct.btHashMap<btHashInt,btTriangleInfo>"* %7)
+ br label %bb
+
+bb: ; preds = %entry
+ %8 = trunc i32 1 to i8 ; [#uses=1]
+ %toBool = icmp ne i8 %8, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %9 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %10 = bitcast %struct.btTriangleInfoMap* %9 to i8* ; [#uses=1]
+ call void @_ZdlPv(i8* %10) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btTriangleInfoMapD1Ev(%struct.btTriangleInfoMap* %this) align 2 {
+entry:
+ %this_addr = alloca %struct.btTriangleInfoMap*, align 4 ; [#uses=4]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btTriangleInfoMap* %this, %struct.btTriangleInfoMap** %this_addr
+ %0 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTriangleInfoMap* %0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV17btTriangleInfoMap, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %3 = ptrtoint %struct.btTriangleInfoMap* %2 to i32 ; [#uses=1]
+ %4 = ptrtoint %struct.btTriangleInfoMap* inttoptr (i64 4 to %struct.btTriangleInfoMap*) to i32 ; [#uses=1]
+ %5 = add i32 %3, %4 ; [#uses=1]
+ %6 = inttoptr i32 %5 to %struct.btTriangleInfoMap* ; [#uses=1]
+ %7 = bitcast %struct.btTriangleInfoMap* %6 to %"struct.btHashMap<btHashInt,btTriangleInfo>"* ; [#uses=1]
+ call void @_ZN9btHashMapI9btHashInt14btTriangleInfoED2Ev(%"struct.btHashMap<btHashInt,btTriangleInfo>"* %7)
+ br label %bb
+
+bb: ; preds = %entry
+ %8 = trunc i32 0 to i8 ; [#uses=1]
+ %toBool = icmp ne i8 %8, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %9 = load %struct.btTriangleInfoMap** %this_addr, align 4 ; [#uses=1]
+ %10 = bitcast %struct.btTriangleInfoMap* %9 to i8* ; [#uses=1]
+ call void @_ZdlPv(i8* %10) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ br label %return
+
+return: ; preds = %bb2
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN13btConvexShapedlEPv(i8* %ptr) inlinehint {
+entry:
+ %ptr_addr = alloca i8*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store i8* %ptr, i8** %ptr_addr
+ %0 = load i8** %ptr_addr, align 4 ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %0)
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btAlignedAllocatorIP16btCollisionShapeLj16EE10deallocateEPS1_(%struct.CONTACT_KEY_TOKEN_COMP* %this, %struct.btCollisionShape** %ptr) align 2 {
+entry:
+ %this_addr = alloca %struct.CONTACT_KEY_TOKEN_COMP*, align 4 ; [#uses=1]
+ %ptr_addr = alloca %struct.btCollisionShape**, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.CONTACT_KEY_TOKEN_COMP* %this, %struct.CONTACT_KEY_TOKEN_COMP** %this_addr
+ store %struct.btCollisionShape** %ptr, %struct.btCollisionShape*** %ptr_addr
+ %0 = load %struct.btCollisionShape*** %ptr_addr, align 4 ; [#uses=1]
+ %1 = bitcast %struct.btCollisionShape** %0 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %1)
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE10deallocateEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this) inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=6]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %0, i32 0, i32 3 ; [#uses=1]
+ %2 = load %struct.btCollisionShape*** %1, align 4 ; [#uses=1]
+ %3 = icmp ne %struct.btCollisionShape** %2, null ; [#uses=1]
+ br i1 %3, label %bb, label %bb3
+
+bb: ; preds = %entry
+ %4 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %4, i32 0, i32 4 ; [#uses=1]
+ %6 = load i8* %5, align 4 ; [#uses=1]
+ %toBool = icmp ne i8 %6, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %7 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %7, i32 0, i32 3 ; [#uses=1]
+ %9 = load %struct.btCollisionShape*** %8, align 4 ; [#uses=1]
+ %10 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %10, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN18btAlignedAllocatorIP16btCollisionShapeLj16EE10deallocateEPS1_(%struct.CONTACT_KEY_TOKEN_COMP* %11, %struct.btCollisionShape** %9)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %12 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %12, i32 0, i32 3 ; [#uses=1]
+ store %struct.btCollisionShape** null, %struct.btCollisionShape*** %13, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2, %entry
+ br label %return
+
+return: ; preds = %bb3
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE5clearEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this) inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=5]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %1 = call i32 @_ZNK20btAlignedObjectArrayIP16btCollisionShapeE4sizeEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %0) nounwind ; [#uses=1]
+ %2 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE7destroyEii(%"struct.btAlignedObjectArray<btCollisionShape*>"* %2, i32 0, i32 %1) nounwind
+ %3 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE10deallocateEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %3) inlinehint
+ %4 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE4initEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %4) nounwind
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP16btCollisionShapeED1Ev(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this) align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ %0 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE5clearEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %0) inlinehint
+ br label %bb
+
+bb: ; preds = %entry
+ br label %return
+
+return: ; preds = %bb
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN13btSphereShapedlEPv(i8* %ptr) inlinehint {
+entry:
+ %ptr_addr = alloca i8*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store i8* %ptr, i8** %ptr_addr
+ %0 = load i8** %ptr_addr, align 4 ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %0)
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN17btCollisionObjectdlEPv(i8* %ptr) inlinehint {
+entry:
+ %ptr_addr = alloca i8*, align 4 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store i8* %ptr, i8** %ptr_addr
+ %0 = load i8** %ptr_addr, align 4 ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %0)
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZN13btConvexShapenwEj(i32 %sizeInBytes) inlinehint {
+entry:
+ %sizeInBytes_addr = alloca i32, align 4 ; [#uses=2]
+ %retval = alloca i8* ; [#uses=2]
+ %0 = alloca i8* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store i32 %sizeInBytes, i32* %sizeInBytes_addr
+ %1 = load i32* %sizeInBytes_addr, align 4 ; [#uses=1]
+ %2 = call i8* @_Z22btAlignedAllocInternalji(i32 %1, i32 16) ; [#uses=1]
+ store i8* %2, i8** %0, align 4
+ %3 = load i8** %0, align 4 ; [#uses=1]
+ store i8* %3, i8** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i8** %retval ; [#uses=1]
+ ret i8* %retval1
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZN13btSphereShapenwEj(i32 %sizeInBytes) inlinehint {
+entry:
+ %sizeInBytes_addr = alloca i32, align 4 ; [#uses=2]
+ %retval = alloca i8* ; [#uses=2]
+ %0 = alloca i8* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store i32 %sizeInBytes, i32* %sizeInBytes_addr
+ %1 = load i32* %sizeInBytes_addr, align 4 ; [#uses=1]
+ %2 = call i8* @_Z22btAlignedAllocInternalji(i32 %1, i32 16) ; [#uses=1]
+ store i8* %2, i8** %0, align 4
+ %3 = load i8** %0, align 4 ; [#uses=1]
+ store i8* %3, i8** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i8** %retval ; [#uses=1]
+ ret i8* %retval1
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionShape** @_ZN18btAlignedAllocatorIP16btCollisionShapeLj16EE8allocateEiPPKS1_(%struct.CONTACT_KEY_TOKEN_COMP* %this, i32 %n, %struct.btCollisionShape*** %hint) align 2 {
+entry:
+ %this_addr = alloca %struct.CONTACT_KEY_TOKEN_COMP*, align 4 ; [#uses=1]
+ %n_addr = alloca i32, align 4 ; [#uses=2]
+ %hint_addr = alloca %struct.btCollisionShape***, align 4 ; [#uses=1]
+ %retval = alloca %struct.btCollisionShape** ; [#uses=2]
+ %0 = alloca %struct.btCollisionShape** ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.CONTACT_KEY_TOKEN_COMP* %this, %struct.CONTACT_KEY_TOKEN_COMP** %this_addr
+ store i32 %n, i32* %n_addr
+ store %struct.btCollisionShape*** %hint, %struct.btCollisionShape**** %hint_addr
+ %1 = load i32* %n_addr, align 4 ; [#uses=1]
+ %2 = mul i32 %1, 4 ; [#uses=1]
+ %3 = call i8* @_Z22btAlignedAllocInternalji(i32 %2, i32 16) ; [#uses=1]
+ %4 = bitcast i8* %3 to %struct.btCollisionShape** ; [#uses=1]
+ store %struct.btCollisionShape** %4, %struct.btCollisionShape*** %0, align 4
+ %5 = load %struct.btCollisionShape*** %0, align 4 ; [#uses=1]
+ store %struct.btCollisionShape** %5, %struct.btCollisionShape*** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load %struct.btCollisionShape*** %retval ; [#uses=1]
+ ret %struct.btCollisionShape** %retval1
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZN20btAlignedObjectArrayIP16btCollisionShapeE8allocateEi(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this, i32 %size) inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=2]
+ %size_addr = alloca i32, align 4 ; [#uses=3]
+ %retval = alloca i8* ; [#uses=2]
+ %0 = alloca i8* ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ store i32 %size, i32* %size_addr
+ %1 = load i32* %size_addr, align 4 ; [#uses=1]
+ %2 = icmp ne i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %3 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %3, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32* %size_addr, align 4 ; [#uses=1]
+ %6 = call %struct.btCollisionShape** @_ZN18btAlignedAllocatorIP16btCollisionShapeLj16EE8allocateEiPPKS1_(%struct.CONTACT_KEY_TOKEN_COMP* %4, i32 %5, %struct.btCollisionShape*** null) ; [#uses=1]
+ %7 = bitcast %struct.btCollisionShape** %6 to i8* ; [#uses=1]
+ store i8* %7, i8** %0, align 4
+ br label %bb2
+
+bb1: ; preds = %entry
+ store i8* null, i8** %0, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %8 = load i8** %0, align 4 ; [#uses=1]
+ store i8* %8, i8** %retval, align 4
+ br label %return
+
+return: ; preds = %bb2
+ %retval3 = load i8** %retval ; [#uses=1]
+ ret i8* %retval3
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE7reserveEi(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this, i32 %_Count) inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=11]
+ %_Count_addr = alloca i32, align 4 ; [#uses=4]
+ %retval.573 = alloca i8 ; [#uses=2]
+ %s = alloca %struct.btCollisionShape** ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ store i32 %_Count, i32* %_Count_addr
+ %0 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %1 = call i32 @_ZNK20btAlignedObjectArrayIP16btCollisionShapeE8capacityEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %0) nounwind ; [#uses=1]
+ %2 = load i32* %_Count_addr, align 4 ; [#uses=1]
+ %3 = icmp slt i32 %1, %2 ; [#uses=1]
+ %4 = zext i1 %3 to i8 ; [#uses=1]
+ store i8 %4, i8* %retval.573, align 1
+ %5 = load i8* %retval.573, align 1 ; [#uses=1]
+ %toBool = icmp ne i8 %5, 0 ; [#uses=1]
+ br i1 %toBool, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %6 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %7 = load i32* %_Count_addr, align 4 ; [#uses=1]
+ %8 = call i8* @_ZN20btAlignedObjectArrayIP16btCollisionShapeE8allocateEi(%"struct.btAlignedObjectArray<btCollisionShape*>"* %6, i32 %7) inlinehint ; [#uses=1]
+ %9 = bitcast i8* %8 to %struct.btCollisionShape** ; [#uses=1]
+ store %struct.btCollisionShape** %9, %struct.btCollisionShape*** %s, align 4
+ %10 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %11 = call i32 @_ZNK20btAlignedObjectArrayIP16btCollisionShapeE4sizeEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %10) nounwind ; [#uses=1]
+ %12 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %13 = load %struct.btCollisionShape*** %s, align 4 ; [#uses=1]
+ call void @_ZNK20btAlignedObjectArrayIP16btCollisionShapeE4copyEiiPS1_(%"struct.btAlignedObjectArray<btCollisionShape*>"* %12, i32 0, i32 %11, %struct.btCollisionShape** %13) nounwind
+ %14 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %15 = call i32 @_ZNK20btAlignedObjectArrayIP16btCollisionShapeE4sizeEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %14) nounwind ; [#uses=1]
+ %16 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE7destroyEii(%"struct.btAlignedObjectArray<btCollisionShape*>"* %16, i32 0, i32 %15) nounwind
+ %17 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE10deallocateEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %17) inlinehint
+ %18 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %18, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %19, align 4
+ %20 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %20, i32 0, i32 3 ; [#uses=1]
+ %22 = load %struct.btCollisionShape*** %s, align 4 ; [#uses=1]
+ store %struct.btCollisionShape** %22, %struct.btCollisionShape*** %21, align 4
+ %23 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %23, i32 0, i32 2 ; [#uses=1]
+ %25 = load i32* %_Count_addr, align 4 ; [#uses=1]
+ store i32 %25, i32* %24, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ br label %return
+
+return: ; preds = %bb1
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE9push_backERKS1_(%"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %struct.btCollisionShape** %_Val) inlinehint align 2 {
+entry:
+ %this_addr = alloca %"struct.btAlignedObjectArray<btCollisionShape*>"*, align 4 ; [#uses=10]
+ %_Val_addr = alloca %struct.btCollisionShape**, align 4 ; [#uses=2]
+ %iftmp.506 = alloca %struct.btCollisionShape** ; [#uses=2]
+ %0 = alloca %struct.btCollisionShape** ; [#uses=5]
+ %retval.505 = alloca i8 ; [#uses=2]
+ %sz = alloca i32 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %"struct.btAlignedObjectArray<btCollisionShape*>"* %this, %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr
+ store %struct.btCollisionShape** %_Val, %struct.btCollisionShape*** %_Val_addr
+ %1 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %2 = call i32 @_ZNK20btAlignedObjectArrayIP16btCollisionShapeE4sizeEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %1) nounwind ; [#uses=1]
+ store i32 %2, i32* %sz, align 4
+ %3 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %4 = call i32 @_ZNK20btAlignedObjectArrayIP16btCollisionShapeE8capacityEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %3) nounwind ; [#uses=1]
+ %5 = load i32* %sz, align 4 ; [#uses=1]
+ %6 = icmp eq i32 %4, %5 ; [#uses=1]
+ %7 = zext i1 %6 to i8 ; [#uses=1]
+ store i8 %7, i8* %retval.505, align 1
+ %8 = load i8* %retval.505, align 1 ; [#uses=1]
+ %toBool = icmp ne i8 %8, 0 ; [#uses=1]
+ br i1 %toBool, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %9 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %10 = call i32 @_ZNK20btAlignedObjectArrayIP16btCollisionShapeE4sizeEv(%"struct.btAlignedObjectArray<btCollisionShape*>"* %9) nounwind ; [#uses=1]
+ %11 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %12 = call i32 @_ZN20btAlignedObjectArrayIP16btCollisionShapeE9allocSizeEi(%"struct.btAlignedObjectArray<btCollisionShape*>"* %11, i32 %10) nounwind ; [#uses=1]
+ %13 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE7reserveEi(%"struct.btAlignedObjectArray<btCollisionShape*>"* %13, i32 %12) inlinehint
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %14 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %14, i32 0, i32 3 ; [#uses=1]
+ %16 = load %struct.btCollisionShape*** %15, align 4 ; [#uses=1]
+ %17 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %17, i32 0, i32 1 ; [#uses=1]
+ %19 = load i32* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCollisionShape** %16, i32 %19 ; [#uses=1]
+ %21 = bitcast %struct.btCollisionShape** %20 to i8* ; [#uses=1]
+ %22 = call i8* @_ZnwjPv(i32 4, i8* %21) nounwind ; [#uses=1]
+ %23 = bitcast i8* %22 to %struct.btCollisionShape** ; [#uses=1]
+ store %struct.btCollisionShape** %23, %struct.btCollisionShape*** %0, align 4
+ %24 = load %struct.btCollisionShape*** %0, align 4 ; [#uses=1]
+ %25 = icmp ne %struct.btCollisionShape** %24, null ; [#uses=1]
+ br i1 %25, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ %26 = load %struct.btCollisionShape*** %_Val_addr, align 4 ; [#uses=1]
+ %27 = load %struct.btCollisionShape** %26, align 4 ; [#uses=1]
+ %28 = load %struct.btCollisionShape*** %0, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %27, %struct.btCollisionShape** %28, align 4
+ %29 = load %struct.btCollisionShape*** %0, align 4 ; [#uses=1]
+ store %struct.btCollisionShape** %29, %struct.btCollisionShape*** %iftmp.506, align 4
+ br label %bb4
+
+bb3: ; preds = %bb1
+ %30 = load %struct.btCollisionShape*** %0, align 4 ; [#uses=1]
+ store %struct.btCollisionShape** %30, %struct.btCollisionShape*** %iftmp.506, align 4
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %31 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %31, i32 0, i32 1 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ %34 = add nsw i32 %33, 1 ; [#uses=1]
+ %35 = load %"struct.btAlignedObjectArray<btCollisionShape*>"** %this_addr, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionShape*>"* %35, i32 0, i32 1 ; [#uses=1]
+ store i32 %34, i32* %36, align 4
+ br label %return
+
+return: ; preds = %bb4
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr i8* @_ZN17btCollisionObjectnwEj(i32 %sizeInBytes) inlinehint {
+entry:
+ %sizeInBytes_addr = alloca i32, align 4 ; [#uses=2]
+ %retval = alloca i8* ; [#uses=2]
+ %0 = alloca i8* ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store i32 %sizeInBytes, i32* %sizeInBytes_addr
+ %1 = load i32* %sizeInBytes_addr, align 4 ; [#uses=1]
+ %2 = call i8* @_Z22btAlignedAllocInternalji(i32 %1, i32 16) ; [#uses=1]
+ store i8* %2, i8** %0, align 4
+ %3 = load i8** %0, align 4 ; [#uses=1]
+ store i8* %3, i8** %retval, align 4
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i8** %retval ; [#uses=1]
+ ret i8* %retval1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN10btBoxShapeC1ERK9btVector3(%struct.btBoxShape* %this, %struct.btQuadWord* %boxHalfExtents) align 2 {
+entry:
+ %this_addr = alloca %struct.btBoxShape*, align 4 ; [#uses=9]
+ %boxHalfExtents_addr = alloca %struct.btQuadWord*, align 4 ; [#uses=2]
+ %0 = alloca %struct.btQuadWord ; [#uses=2]
+ %1 = alloca float ; [#uses=2]
+ %2 = alloca float ; [#uses=2]
+ %3 = alloca float ; [#uses=2]
+ %margin = alloca %struct.btQuadWord ; [#uses=2]
+ %memtmp = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btBoxShape* %this, %struct.btBoxShape** %this_addr
+ store %struct.btQuadWord* %boxHalfExtents, %struct.btQuadWord** %boxHalfExtents_addr
+ %4 = load %struct.btBoxShape** %this_addr, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btBoxShape* %4, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %5)
+ %6 = load %struct.btBoxShape** %this_addr, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBoxShape* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btPolyhedralConvexShape* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btConvexInternalShape* %8, i32 0, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btConvexShape* %9, i32 0, i32 0 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCollisionShape* %10, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV10btBoxShape, i32 0, i32 2), i32 (...)*** %11, align 4
+ %12 = load %struct.btBoxShape** %this_addr, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btBoxShape* %12, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btPolyhedralConvexShape* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btConvexInternalShape* %14, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btConvexShape* %15, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCollisionShape* %16, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = load %struct.btBoxShape** %this_addr, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btBoxShape* %18, i32 0, i32 0 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btPolyhedralConvexShape* %19, i32 0, i32 0 ; [#uses=1]
+ %21 = call float @_ZNK21btConvexInternalShape9getMarginEv(%struct.btConvexInternalShape* %20) nounwind ; [#uses=1]
+ store float %21, float* %3, align 4
+ %22 = load %struct.btBoxShape** %this_addr, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btBoxShape* %22, i32 0, i32 0 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btPolyhedralConvexShape* %23, i32 0, i32 0 ; [#uses=1]
+ %25 = call float @_ZNK21btConvexInternalShape9getMarginEv(%struct.btConvexInternalShape* %24) nounwind ; [#uses=1]
+ store float %25, float* %2, align 4
+ %26 = load %struct.btBoxShape** %this_addr, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btBoxShape* %26, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btPolyhedralConvexShape* %27, i32 0, i32 0 ; [#uses=1]
+ %29 = call float @_ZNK21btConvexInternalShape9getMarginEv(%struct.btConvexInternalShape* %28) nounwind ; [#uses=1]
+ store float %29, float* %1, align 4
+ call void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %margin, float* %1, float* %2, float* %3) nounwind
+ %30 = load %struct.btBoxShape** %this_addr, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btBoxShape* %30, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btPolyhedralConvexShape* %31, i32 0, i32 0 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btConvexInternalShape* %32, i32 0, i32 1 ; [#uses=1]
+ %34 = load %struct.btQuadWord** %boxHalfExtents_addr, align 4 ; [#uses=1]
+ call void @_ZmlRK9btVector3S1_(%struct.btQuadWord* noalias sret %0, %struct.btQuadWord* %34, %struct.btQuadWord* %33) nounwind
+ %35 = load %struct.btBoxShape** %this_addr, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btBoxShape* %35, i32 0, i32 0 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btPolyhedralConvexShape* %36, i32 0, i32 0 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btConvexInternalShape* %37, i32 0, i32 2 ; [#uses=1]
+ call void @_ZmiRK9btVector3S1_(%struct.btQuadWord* noalias sret %memtmp, %struct.btQuadWord* %0, %struct.btQuadWord* %margin) nounwind
+ %39 = getelementptr inbounds %struct.btQuadWord* %38, i32 0, i32 0 ; [#uses=4]
+ %40 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0 ; [#uses=4]
+ %41 = getelementptr inbounds [4 x float]* %39, i32 0, i32 0 ; [#uses=1]
+ %42 = getelementptr inbounds [4 x float]* %40, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds [4 x float]* %39, i32 0, i32 1 ; [#uses=1]
+ %45 = getelementptr inbounds [4 x float]* %40, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds [4 x float]* %39, i32 0, i32 2 ; [#uses=1]
+ %48 = getelementptr inbounds [4 x float]* %40, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds [4 x float]* %39, i32 0, i32 3 ; [#uses=1]
+ %51 = getelementptr inbounds [4 x float]* %40, i32 0, i32 3 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN13btSphereShapeC1Ef(%struct.btPolyhedralConvexShape* %this, float %radius) align 2 {
+entry:
+ %this_addr = alloca %struct.btPolyhedralConvexShape*, align 4 ; [#uses=6]
+ %radius_addr = alloca float, align 4 ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ store %struct.btPolyhedralConvexShape* %this, %struct.btPolyhedralConvexShape** %this_addr
+ store float %radius, float* %radius_addr
+ %0 = load %struct.btPolyhedralConvexShape** %this_addr, align 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btPolyhedralConvexShape* %0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %1)
+ %2 = load %struct.btPolyhedralConvexShape** %this_addr, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btPolyhedralConvexShape* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btConvexInternalShape* %3, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btConvexShape* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCollisionShape* %5, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btSphereShape, i32 0, i32 2), i32 (...)*** %6, align 4
+ %7 = load %struct.btPolyhedralConvexShape** %this_addr, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btPolyhedralConvexShape* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btConvexInternalShape* %8, i32 0, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btConvexShape* %9, i32 0, i32 0 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCollisionShape* %10, i32 0, i32 1 ; [#uses=1]
+ store i32 8, i32* %11, align 4
+ %12 = load %struct.btPolyhedralConvexShape** %this_addr, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btPolyhedralConvexShape* %12, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btConvexInternalShape* %13, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %radius_addr, align 4 ; [#uses=1]
+ call void @_ZN9btVector34setXEf(%struct.btQuadWord* %14, float %15) nounwind
+ %16 = load %struct.btPolyhedralConvexShape** %this_addr, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btPolyhedralConvexShape* %16, i32 0, i32 0 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btConvexInternalShape* %17, i32 0, i32 3 ; [#uses=1]
+ %19 = load float* %radius_addr, align 4 ; [#uses=1]
+ store float %19, float* %18, align 4
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btMatrix3x3* @_ZN11btMatrix3x311getIdentityEv() {
+entry:
+ %retval = alloca %struct.btMatrix3x3* ; [#uses=2]
+ %save_filt.654 = alloca i32 ; [#uses=2]
+ %save_eptr.653 = alloca i8* ; [#uses=2]
+ %0 = alloca %struct.btMatrix3x3* ; [#uses=2]
+ %1 = alloca float ; [#uses=2]
+ %2 = alloca float ; [#uses=2]
+ %3 = alloca float ; [#uses=2]
+ %4 = alloca float ; [#uses=2]
+ %5 = alloca float ; [#uses=2]
+ %6 = alloca float ; [#uses=2]
+ %7 = alloca float ; [#uses=2]
+ %8 = alloca float ; [#uses=2]
+ %9 = alloca float ; [#uses=2]
+ %10 = alloca i8 ; [#uses=3]
+ %retval.48 = alloca i8 ; [#uses=2]
+ %eh_exception = alloca i8* ; [#uses=5]
+ %eh_selector = alloca i32 ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ %11 = load i8* bitcast (i64* @_ZGVZN11btMatrix3x311getIdentityEvE14identityMatrix to i8*), align 1 ; [#uses=1]
+ %12 = icmp eq i8 %11, 0 ; [#uses=1]
+ br i1 %12, label %bb, label %bb9
+
+bb: ; preds = %entry
+ %13 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN11btMatrix3x311getIdentityEvE14identityMatrix) nounwind ; [#uses=1]
+ %14 = icmp ne i32 %13, 0 ; [#uses=1]
+ %15 = zext i1 %14 to i8 ; [#uses=1]
+ store i8 %15, i8* %retval.48, align 1
+ %16 = load i8* %retval.48, align 1 ; [#uses=1]
+ %toBool = icmp ne i8 %16, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb9
+
+bb1: ; preds = %bb
+ store i8 0, i8* %10, align 1
+ store float 1.000000e+00, float* %9, align 4
+ store float 0.000000e+00, float* %8, align 4
+ store float 0.000000e+00, float* %7, align 4
+ store float 0.000000e+00, float* %6, align 4
+ store float 1.000000e+00, float* %5, align 4
+ store float 0.000000e+00, float* %4, align 4
+ store float 0.000000e+00, float* %3, align 4
+ store float 0.000000e+00, float* %2, align 4
+ store float 1.000000e+00, float* %1, align 4
+ invoke void @_ZN11btMatrix3x3C1ERKfS1_S1_S1_S1_S1_S1_S1_S1_(%struct.btMatrix3x3* @_ZZN11btMatrix3x311getIdentityEvE14identityMatrix, float* %1, float* %2, float* %3, float* %4, float* %5, float* %6, float* %7, float* %8, float* %9)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb1
+ store i8 1, i8* %10, align 1
+ call void @__cxa_guard_release(i64* @_ZGVZN11btMatrix3x311getIdentityEvE14identityMatrix) nounwind
+ br label %bb9
+
+bb2: ; preds = %ppad
+ %eh_select = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select, i32* %save_filt.654, align 4
+ %eh_value = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value, i8** %save_eptr.653, align 4
+ %17 = load i8* %10, align 1 ; [#uses=1]
+ %toBool3 = icmp ne i8 %17, 0 ; [#uses=1]
+ %toBool3not = xor i1 %toBool3, true ; [#uses=1]
+ %toBool3not4 = zext i1 %toBool3not to i8 ; [#uses=1]
+ %toBool6 = icmp ne i8 %toBool3not4, 0 ; [#uses=1]
+ br i1 %toBool6, label %bb7, label %bb8
+
+bb7: ; preds = %bb2
+ call void @__cxa_guard_abort(i64* @_ZGVZN11btMatrix3x311getIdentityEvE14identityMatrix) nounwind
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb2
+ %18 = load i8** %save_eptr.653, align 4 ; [#uses=1]
+ store i8* %18, i8** %eh_exception, align 4
+ %19 = load i32* %save_filt.654, align 4 ; [#uses=1]
+ store i32 %19, i32* %eh_selector, align 4
+ br label %Unwind
+
+bb9: ; preds = %invcont, %bb, %entry
+ store %struct.btMatrix3x3* @_ZZN11btMatrix3x311getIdentityEvE14identityMatrix, %struct.btMatrix3x3** %0, align 4
+ %20 = load %struct.btMatrix3x3** %0, align 4 ; [#uses=1]
+ store %struct.btMatrix3x3* %20, %struct.btMatrix3x3** %retval, align 4
+ br label %return
+
+return: ; preds = %bb9
+ %retval10 = load %struct.btMatrix3x3** %retval ; [#uses=1]
+ ret %struct.btMatrix3x3* %retval10
+
+lpad: ; preds = %bb1
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr, i8** %eh_exception
+ %eh_ptr11 = load i8** %eh_exception ; [#uses=1]
+ %eh_select12 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select12, i32* %eh_selector
+ br label %ppad
+
+ppad: ; preds = %lpad
+ br label %bb2
+
+Unwind: ; preds = %bb8
+ %eh_ptr13 = load i8** %eh_exception ; [#uses=1]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr13)
+ unreachable
+}
+
+; [#uses=25]
+declare i32 @__cxa_guard_acquire(i64*) nounwind
+
+; [#uses=25]
+declare void @__cxa_guard_release(i64*) nounwind
+
+; [#uses=5]
+declare void @__cxa_guard_abort(i64*) nounwind
+
+; [#uses=7]
+define linkonce_odr %struct.btTransform* @_ZN11btTransform11getIdentityEv() {
+entry:
+ %retval = alloca %struct.btTransform* ; [#uses=2]
+ %save_filt.652 = alloca i32 ; [#uses=2]
+ %save_eptr.651 = alloca i8* ; [#uses=2]
+ %0 = alloca %struct.btTransform* ; [#uses=2]
+ %1 = alloca float ; [#uses=2]
+ %2 = alloca float ; [#uses=2]
+ %3 = alloca float ; [#uses=2]
+ %4 = alloca %struct.btQuadWord ; [#uses=2]
+ %5 = alloca i8 ; [#uses=3]
+ %retval.99 = alloca i8 ; [#uses=2]
+ %eh_exception = alloca i8* ; [#uses=5]
+ %eh_selector = alloca i32 ; [#uses=3]
+ %"alloca point" = bitcast i32 0 to i32 ; [#uses=0]
+ %6 = load i8* bitcast (i64* @_ZGVZN11btTransform11getIdentityEvE17identityTransform to i8*), align 1 ; [#uses=1]
+ %7 = icmp eq i8 %6, 0 ; [#uses=1]
+ br i1 %7, label %bb, label %bb9
+
+bb: ; preds = %entry
+ %8 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN11btTransform11getIdentityEvE17identityTransform) nounwind ; [#uses=1]
+ %9 = icmp ne i32 %8, 0 ; [#uses=1]
+ %10 = zext i1 %9 to i8 ; [#uses=1]
+ store i8 %10, i8* %retval.99, align 1
+ %11 = load i8* %retval.99, align 1 ; [#uses=1]
+ %toBool = icmp ne i8 %11, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb9
+
+bb1: ; preds = %bb
+ store i8 0, i8* %5, align 1
+ store float 0.000000e+00, float* %3, align 4
+ store float 0.000000e+00, float* %2, align 4
+ store float 0.000000e+00, float* %1, align 4
+ call void @_ZN9btVector3C1ERKfS1_S1_(%struct.btQuadWord* %4, float* %1, float* %2, float* %3) nounwind
+ %12 = invoke %struct.btMatrix3x3* @_ZN11btMatrix3x311getIdentityEv()
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb1
+ call void @_ZN11btTransformC1ERK11btMatrix3x3RK9btVector3(%struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, %struct.btMatrix3x3* %12, %struct.btQuadWord* %4) nounwind
+ store i8 1, i8* %5, align 1
+ call void @__cxa_guard_release(i64* @_ZGVZN11btTransform11getIdentityEvE17identityTransform) nounwind
+ br label %bb9
+
+bb2: ; preds = %ppad
+ %eh_select = load i32* %eh_selector ; [#uses=1]
+ store i32 %eh_select, i32* %save_filt.652, align 4
+ %eh_value = load i8** %eh_exception ; [#uses=1]
+ store i8* %eh_value, i8** %save_eptr.651, align 4
+ %13 = load i8* %5, align 1 ; [#uses=1]
+ %toBool3 = icmp ne i8 %13, 0 ; [#uses=1]
+ %toBool3not = xor i1 %toBool3, true ; [#uses=1]
+ %toBool3not4 = zext i1 %toBool3not to i8 ; [#uses=1]
+ %toBool6 = icmp ne i8 %toBool3not4, 0 ; [#uses=1]
+ br i1 %toBool6, label %bb7, label %bb8
+
+bb7: ; preds = %bb2
+ call void @__cxa_guard_abort(i64* @_ZGVZN11btTransform11getIdentityEvE17identityTransform) nounwind
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb2
+ %14 = load i8** %save_eptr.651, align 4 ; [#uses=1]
+ store i8* %14, i8** %eh_exception, align 4
+ %15 = load i32* %save_filt.652, align 4 ; [#uses=1]
+ store i32 %15, i32* %eh_selector, align 4
+ br label %Unwind
+
+bb9: ; preds = %invcont, %bb, %entry
+ store %struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, %struct.btTransform** %0, align 4
+ %16 = load %struct.btTransform** %0, align 4 ; [#uses=1]
+ store %struct.btTransform* %16, %struct.btTransform** %retval, align 4
+ br label %return
+
+return: ; preds = %bb9
+ %retval10 = load %struct.btTransform** %retval ; [#uses=1]
+ ret %struct.btTransform* %retval10
+
+lpad: ; preds = %bb1
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=1]
+ store i8* %eh_ptr, i8** %eh_exception
+ %eh_ptr11 = load i8** %eh_exception ; [#uses=1]
+ %eh_select12 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=1]
+ store i32 %eh_select12, i32* %eh_selector
+ br label %ppad
+
+ppad: ; preds = %lpad
+ br label %bb2
+
+Unwind: ; preds = %bb8
+ %eh_ptr13 = load i8** %eh_exception ; [#uses=1]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr13)
+ unreachable
+}
+
+; [#uses=15]
+declare i8* @_Znwj(i32)
+
+; [#uses=8]
+declare i32 @printf(i8* noalias, ...)
+
+; [#uses=0]
+define void @_ZN12btAxisSweep3C2ERK9btVector3S2_tP22btOverlappingPairCacheb(%struct.btAxisSweep3* %this, %struct.btQuadWord* nocapture %worldAabbMin, %struct.btQuadWord* nocapture %worldAabbMax, i16 zeroext %maxHandles, %struct..0btMultiSapOverlapFilterCallback* %pairCache, i8 zeroext %disableRaycastAccelerator) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btAxisSweep3* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btAxisSweep3InternalItEC2ERK9btVector3S3_tttP22btOverlappingPairCacheb(%"struct.btAxisSweep3Internal<short unsigned int>"* %0, %struct.btQuadWord* %worldAabbMin, %struct.btQuadWord* %worldAabbMax, i16 zeroext -2, i16 zeroext -1, i16 zeroext %maxHandles, %struct..0btMultiSapOverlapFilterCallback* %pairCache, i8 zeroext %disableRaycastAccelerator)
+ %1 = getelementptr inbounds %struct.btAxisSweep3* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV12btAxisSweep3, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btBroadphaseInterface9resetPoolEP12btDispatcher(%struct.btActionInterface* nocapture %this, %struct.btActionInterface* nocapture %dispatcher) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %"struct.btAlignedObjectArray<btBroadphasePair>"* @_ZN15btNullPairCache23getOverlappingPairArrayEv(%struct.btNullPairCache* %this) nounwind readnone align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 1 ; [#uses=1]
+ ret %"struct.btAlignedObjectArray<btBroadphasePair>"* %0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btNullPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher(%struct.btNullPairCache* nocapture %this, %struct.btBroadphasePair* nocapture %unnamed_arg, %struct.btActionInterface* nocapture %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK15btNullPairCache22getNumOverlappingPairsEv(%struct.btNullPairCache* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btNullPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher(%struct.btNullPairCache* nocapture %this, %struct.btBroadphaseProxy* nocapture %unnamed_arg, %struct.btActionInterface* nocapture %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btNullPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback(%struct.btNullPairCache* nocapture %this, %struct.btActionInterface* nocapture %unnamed_arg) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btNullPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher(%struct.btNullPairCache* nocapture %this, %struct.btActionInterface* nocapture %unnamed_arg, %struct.btActionInterface* nocapture %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr noalias %struct.btBroadphasePair* @_ZN15btNullPairCache8findPairEP17btBroadphaseProxyS1_(%struct.btNullPairCache* nocapture %this, %struct.btBroadphaseProxy* nocapture %unnamed_arg, %struct.btBroadphaseProxy* nocapture %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret %struct.btBroadphasePair* null
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZN15btNullPairCache18hasDeferredRemovalEv(%struct.btNullPairCache* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8 1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btNullPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback(%struct.btNullPairCache* nocapture %this, %struct.btActionInterface* nocapture %unnamed_arg) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr noalias %struct.btBroadphasePair* @_ZN15btNullPairCache18addOverlappingPairEP17btBroadphaseProxyS1_(%struct.btNullPairCache* nocapture %this, %struct.btBroadphaseProxy* nocapture %unnamed_arg, %struct.btBroadphaseProxy* nocapture %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret %struct.btBroadphasePair* null
+}
+
+; [#uses=1]
+define linkonce_odr noalias i8* @_ZN15btNullPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher(%struct.btNullPairCache* nocapture %this, %struct.btBroadphaseProxy* nocapture %unnamed_arg, %struct.btBroadphaseProxy* nocapture %unnamed_arg2, %struct.btActionInterface* nocapture %unnamed_arg4) nounwind readnone align 2 {
+entry:
+ ret i8* null
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btNullPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher(%struct.btNullPairCache* nocapture %this, %struct.btBroadphaseProxy* nocapture %unnamed_arg, %struct.btActionInterface* nocapture %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btNullPairCache20sortOverlappingPairsEP12btDispatcher(%struct.btNullPairCache* nocapture %this, %struct.btActionInterface* nocapture %dispatcher) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btBroadphasePair* @_ZN15btNullPairCache26getOverlappingPairArrayPtrEv(%struct.btNullPairCache* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %1 = load %struct.btBroadphasePair** %0, align 4 ; [#uses=1]
+ ret %struct.btBroadphasePair* %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btBroadphasePair* @_ZNK15btNullPairCache26getOverlappingPairArrayPtrEv(%struct.btNullPairCache* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %1 = load %struct.btBroadphasePair** %0, align 4 ; [#uses=1]
+ ret %struct.btBroadphasePair* %1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btBroadphaseInterfaceD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV21btBroadphaseInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btBroadphaseInterfaceD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV21btBroadphaseInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN25btOverlappingPairCallbackD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV25btOverlappingPairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN25btOverlappingPairCallbackD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV25btOverlappingPairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btOverlappingPairCacheD1Ev(%struct..0btMultiSapOverlapFilterCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV22btOverlappingPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btOverlappingPairCacheD0Ev(%struct..0btMultiSapOverlapFilterCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV22btOverlappingPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..0btMultiSapOverlapFilterCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK20btAxisSweep3InternalIjE7getAabbEP17btBroadphaseProxyR9btVector3S4_(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, %struct.btBroadphaseProxy* nocapture %proxy, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct..0btMultiSapOverlapFilterCallback* @_ZN20btAxisSweep3InternalIjE23getOverlappingPairCacheEv(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 12 ; [#uses=1]
+ %1 = load %struct..0btMultiSapOverlapFilterCallback** %0, align 4 ; [#uses=1]
+ ret %struct..0btMultiSapOverlapFilterCallback* %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct..0btMultiSapOverlapFilterCallback* @_ZNK20btAxisSweep3InternalIjE23getOverlappingPairCacheEv(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 12 ; [#uses=1]
+ %1 = load %struct..0btMultiSapOverlapFilterCallback** %0, align 4 ; [#uses=1]
+ ret %struct..0btMultiSapOverlapFilterCallback* %1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK20btAxisSweep3InternalIjE17getBroadphaseAabbER9btVector3S2_(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjE9resetPoolEP12btDispatcher(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, %struct.btActionInterface* nocapture %dispatcher) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 9 ; [#uses=1]
+ store i32 1, i32* %3, align 4
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 7 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=2]
+ %6 = icmp ugt i32 %5, 1 ; [#uses=1]
+ br i1 %6, label %bb.nph, label %bb3
+
+bb.nph: ; preds = %bb
+ %7 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb1, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %tmp, %bb1 ] ; [#uses=2]
+ %tmp = add i32 %indvar, 1 ; [#uses=2]
+ %tmp6 = add i32 %indvar, 2 ; [#uses=2]
+ %8 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %7, align 4 ; [#uses=1]
+ %scevgep = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %8, i32 %tmp, i32 1, i32 0 ; [#uses=1]
+ store i32 %tmp6, i32* %scevgep, align 4
+ %9 = load i32* %4, align 4 ; [#uses=2]
+ %10 = icmp ugt i32 %9, %tmp6 ; [#uses=1]
+ br i1 %10, label %bb1, label %bb3
+
+bb3: ; preds = %bb1, %bb
+ %11 = phi i32 [ %5, %bb ], [ %9, %bb1 ] ; [#uses=1]
+ %12 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %13 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %12, align 4 ; [#uses=1]
+ %14 = add i32 %11, -1 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %13, i32 %14, i32 1, i32 0 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjE10printStatsEv(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK20btAxisSweep3InternalItE7getAabbEP17btBroadphaseProxyR9btVector3S4_(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, %struct.btBroadphaseProxy* nocapture %proxy, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct..0btMultiSapOverlapFilterCallback* @_ZN20btAxisSweep3InternalItE23getOverlappingPairCacheEv(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 12 ; [#uses=1]
+ %1 = load %struct..0btMultiSapOverlapFilterCallback** %0, align 4 ; [#uses=1]
+ ret %struct..0btMultiSapOverlapFilterCallback* %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct..0btMultiSapOverlapFilterCallback* @_ZNK20btAxisSweep3InternalItE23getOverlappingPairCacheEv(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 12 ; [#uses=1]
+ %1 = load %struct..0btMultiSapOverlapFilterCallback** %0, align 4 ; [#uses=1]
+ ret %struct..0btMultiSapOverlapFilterCallback* %1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK20btAxisSweep3InternalItE17getBroadphaseAabbER9btVector3S2_(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItE9resetPoolEP12btDispatcher(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, %struct.btActionInterface* nocapture %dispatcher) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load i16* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i16 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 9 ; [#uses=1]
+ store i16 1, i16* %3, align 4
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 7 ; [#uses=2]
+ %5 = load i16* %4, align 2 ; [#uses=2]
+ %6 = icmp ugt i16 %5, 1 ; [#uses=1]
+ br i1 %6, label %bb.nph, label %bb3
+
+bb.nph: ; preds = %bb
+ %7 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb1, %bb.nph
+ %indvar = phi i16 [ 0, %bb.nph ], [ %i.05, %bb1 ] ; [#uses=2]
+ %i.05 = add i16 %indvar, 1 ; [#uses=2]
+ %tmp = add i16 %indvar, 2 ; [#uses=2]
+ %8 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %7, align 4 ; [#uses=1]
+ %9 = zext i16 %i.05 to i32 ; [#uses=1]
+ %10 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %8, i32 %9, i32 1, i32 0 ; [#uses=1]
+ store i16 %tmp, i16* %10, align 2
+ %11 = load i16* %4, align 2 ; [#uses=2]
+ %12 = icmp ugt i16 %11, %tmp ; [#uses=1]
+ br i1 %12, label %bb1, label %bb3
+
+bb3: ; preds = %bb1, %bb
+ %13 = phi i16 [ %5, %bb ], [ %11, %bb1 ] ; [#uses=1]
+ %14 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %15 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %14, align 4 ; [#uses=1]
+ %16 = zext i16 %13 to i32 ; [#uses=1]
+ %17 = add nsw i32 %16, -1 ; [#uses=1]
+ %18 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %15, i32 %17, i32 1, i32 0 ; [#uses=1]
+ store i16 0, i16* %18, align 2
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItE10printStatsEv(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %callback) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 16 ; [#uses=1]
+ %1 = load %struct.btDbvtBroadphase** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.btDbvtBroadphase* %1, null ; [#uses=1]
+ br i1 %2, label %bb7.preheader, label %bb
+
+bb7.preheader: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 6 ; [#uses=2]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %5 = shl i32 %4, 1 ; [#uses=1]
+ %6 = or i32 %5, 1 ; [#uses=1]
+ %7 = icmp eq i32 %6, 1 ; [#uses=1]
+ br i1 %7, label %return, label %bb.nph
+
+bb: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btDbvtBroadphase* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 7 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btDbvtBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %12(%struct.btDbvtBroadphase* %1, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %callback)
+ ret void
+
+bb.nph: ; preds = %bb7.preheader
+ %13 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btActionInterface* %callback, i32 0, i32 0 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb6, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %tmp, %bb6 ] ; [#uses=2]
+ %tmp = add i32 %indvar, 1 ; [#uses=3]
+ %tmp13 = add i32 %indvar, 2 ; [#uses=1]
+ %22 = load %struct.CONTACT_KEY_TOKEN** %13, align 4 ; [#uses=2]
+ %scevgep1112 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %22, i32 %tmp, i32 0 ; [#uses=1]
+ %23 = load i32* %scevgep1112, align 4 ; [#uses=1]
+ %24 = and i32 %23, 1 ; [#uses=1]
+ %25 = icmp eq i32 %24, 0 ; [#uses=1]
+ br i1 %25, label %bb6, label %bb3
+
+bb3: ; preds = %bb2
+ %scevgep = getelementptr %struct.CONTACT_KEY_TOKEN* %22, i32 %tmp, i32 1 ; [#uses=1]
+ %26 = load i32* %scevgep, align 4 ; [#uses=7]
+ %27 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %14, align 4 ; [#uses=7]
+ %28 = load float* %15, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %27, i32 %26, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fcmp ogt float %28, %30 ; [#uses=1]
+ br i1 %31, label %bb2.i, label %bb.i
+
+bb.i: ; preds = %bb3
+ %32 = load float* %21, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %27, i32 %26, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fcmp olt float %32, %34 ; [#uses=1]
+ br i1 %35, label %bb2.i, label %bb3.i
+
+bb2.i: ; preds = %bb.i, %bb3
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb.i
+ %iftmp.122.0.i = phi i8 [ 0, %bb2.i ], [ 1, %bb.i ] ; [#uses=1]
+ %36 = load float* %16, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %27, i32 %26, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fcmp ogt float %36, %38 ; [#uses=1]
+ br i1 %39, label %bb6.i, label %bb4.i
+
+bb4.i: ; preds = %bb3.i
+ %40 = load float* %20, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %27, i32 %26, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = fcmp olt float %40, %42 ; [#uses=1]
+ br i1 %43, label %bb6.i, label %bb7.i
+
+bb6.i: ; preds = %bb4.i, %bb3.i
+ br label %bb7.i
+
+bb7.i: ; preds = %bb6.i, %bb4.i
+ %iftmp.123.0.i = phi i8 [ 0, %bb6.i ], [ %iftmp.122.0.i, %bb4.i ] ; [#uses=1]
+ %44 = load float* %17, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %27, i32 %26, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fcmp ogt float %44, %46 ; [#uses=1]
+ br i1 %47, label %bb6, label %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+
+_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit: ; preds = %bb7.i
+ %48 = load float* %18, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %27, i32 %26, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fcmp olt float %48, %50 ; [#uses=1]
+ %phitmp9 = icmp eq i8 %iftmp.123.0.i, 0 ; [#uses=1]
+ %phitmp = or i1 %51, %phitmp9 ; [#uses=1]
+ br i1 %phitmp, label %bb6, label %bb5
+
+bb5: ; preds = %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+ %52 = load i32 (...)*** %19, align 4 ; [#uses=1]
+ %53 = getelementptr inbounds i32 (...)** %52, i32 2 ; [#uses=1]
+ %54 = load i32 (...)** %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %27, i32 %26, i32 0 ; [#uses=1]
+ %56 = bitcast i32 (...)* %54 to i8 (%struct.btActionInterface*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %57 = tail call zeroext i8 %56(%struct.btActionInterface* %callback, %struct.btBroadphaseProxy* %55) ; [#uses=0]
+ br label %bb6
+
+bb6: ; preds = %bb5, %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit, %bb7.i, %bb2
+ %58 = load i32* %3, align 4 ; [#uses=1]
+ %59 = shl i32 %58, 1 ; [#uses=1]
+ %60 = or i32 %59, 1 ; [#uses=1]
+ %61 = icmp ugt i32 %60, %tmp13 ; [#uses=1]
+ br i1 %61, label %bb2, label %return
+
+return: ; preds = %bb6, %bb7.preheader
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3_(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, %struct.btQuadWord* %rayFrom, %struct.btQuadWord* %rayTo, %struct.btBroadphaseRayCallback* %rayCallback, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 16 ; [#uses=1]
+ %1 = load %struct.btDbvtBroadphase** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.btDbvtBroadphase* %1, null ; [#uses=1]
+ br i1 %2, label %bb5.preheader, label %bb
+
+bb5.preheader: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 6 ; [#uses=2]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %5 = shl i32 %4, 1 ; [#uses=1]
+ %6 = or i32 %5, 1 ; [#uses=1]
+ %7 = icmp eq i32 %6, 1 ; [#uses=1]
+ br i1 %7, label %return, label %bb.nph
+
+bb: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btDbvtBroadphase* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 6 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btDbvtBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btBroadphaseRayCallback*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %12(%struct.btDbvtBroadphase* %1, %struct.btQuadWord* %rayFrom, %struct.btQuadWord* %rayTo, %struct.btBroadphaseRayCallback* %rayCallback, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ ret void
+
+bb.nph: ; preds = %bb5.preheader
+ %13 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btBroadphaseRayCallback* %rayCallback, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btBroadphaseRayCallback* %rayCallback, i32 0, i32 0 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb4, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %tmp, %bb4 ] ; [#uses=2]
+ %tmp = add i32 %indvar, 1 ; [#uses=3]
+ %tmp10 = add i32 %indvar, 2 ; [#uses=1]
+ %17 = load %struct.CONTACT_KEY_TOKEN** %13, align 4 ; [#uses=2]
+ %scevgep89 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %17, i32 %tmp, i32 0 ; [#uses=1]
+ %18 = load i32* %scevgep89, align 4 ; [#uses=1]
+ %19 = and i32 %18, 1 ; [#uses=1]
+ %20 = icmp eq i32 %19, 0 ; [#uses=1]
+ br i1 %20, label %bb4, label %bb3
+
+bb3: ; preds = %bb2
+ %21 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds i32 (...)** %21, i32 2 ; [#uses=1]
+ %23 = load i32 (...)** %22, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.CONTACT_KEY_TOKEN* %17, i32 %tmp, i32 1 ; [#uses=1]
+ %24 = load i32* %scevgep, align 4 ; [#uses=1]
+ %25 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %15, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %25, i32 %24, i32 0 ; [#uses=1]
+ %27 = bitcast i32 (...)* %23 to i8 (%struct.btActionInterface*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %28 = tail call zeroext i8 %27(%struct.btActionInterface* %16, %struct.btBroadphaseProxy* %26) ; [#uses=0]
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %29 = load i32* %3, align 4 ; [#uses=1]
+ %30 = shl i32 %29, 1 ; [#uses=1]
+ %31 = or i32 %30, 1 ; [#uses=1]
+ %32 = icmp ugt i32 %31, %tmp10 ; [#uses=1]
+ br i1 %32, label %bb2, label %return
+
+return: ; preds = %bb4, %bb5.preheader
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItE8aabbTestERK9btVector3S3_R24btBroadphaseAabbCallback(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %callback) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 16 ; [#uses=1]
+ %1 = load %struct.btDbvtBroadphase** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.btDbvtBroadphase* %1, null ; [#uses=1]
+ br i1 %2, label %bb7.preheader, label %bb
+
+bb7.preheader: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 6 ; [#uses=2]
+ %4 = load i16* %3, align 4 ; [#uses=1]
+ %5 = zext i16 %4 to i32 ; [#uses=1]
+ %6 = shl i32 %5, 1 ; [#uses=1]
+ %7 = or i32 %6, 1 ; [#uses=1]
+ %8 = icmp eq i32 %7, 1 ; [#uses=1]
+ br i1 %8, label %return, label %bb.nph
+
+bb: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btDbvtBroadphase* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %10 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i32 (...)** %10, i32 7 ; [#uses=1]
+ %12 = load i32 (...)** %11, align 4 ; [#uses=1]
+ %13 = bitcast i32 (...)* %12 to void (%struct.btDbvtBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %13(%struct.btDbvtBroadphase* %1, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %callback)
+ ret void
+
+bb.nph: ; preds = %bb7.preheader
+ %14 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btActionInterface* %callback, i32 0, i32 0 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb6, %bb.nph
+ %indvar = phi i16 [ 0, %bb.nph ], [ %i.010, %bb6 ] ; [#uses=2]
+ %i.010 = add i16 %indvar, 1 ; [#uses=2]
+ %tmp = add i16 %indvar, 2 ; [#uses=1]
+ %23 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %14, align 4 ; [#uses=2]
+ %24 = zext i16 %i.010 to i32 ; [#uses=2]
+ %25 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %23, i32 %24, i32 0 ; [#uses=1]
+ %26 = load i16* %25, align 2 ; [#uses=1]
+ %27 = and i16 %26, 1 ; [#uses=1]
+ %28 = icmp eq i16 %27, 0 ; [#uses=1]
+ br i1 %28, label %bb6, label %bb3
+
+bb3: ; preds = %bb2
+ %29 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %23, i32 %24, i32 1 ; [#uses=1]
+ %30 = load i16* %29, align 2 ; [#uses=1]
+ %31 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %15, align 4 ; [#uses=7]
+ %32 = zext i16 %30 to i32 ; [#uses=7]
+ %33 = load float* %16, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %31, i32 %32, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fcmp ogt float %33, %35 ; [#uses=1]
+ br i1 %36, label %bb2.i, label %bb.i
+
+bb.i: ; preds = %bb3
+ %37 = load float* %22, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %31, i32 %32, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fcmp olt float %37, %39 ; [#uses=1]
+ br i1 %40, label %bb2.i, label %bb3.i
+
+bb2.i: ; preds = %bb.i, %bb3
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb.i
+ %iftmp.122.0.i = phi i8 [ 0, %bb2.i ], [ 1, %bb.i ] ; [#uses=1]
+ %41 = load float* %17, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %31, i32 %32, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fcmp ogt float %41, %43 ; [#uses=1]
+ br i1 %44, label %bb6.i, label %bb4.i
+
+bb4.i: ; preds = %bb3.i
+ %45 = load float* %21, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %31, i32 %32, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = fcmp olt float %45, %47 ; [#uses=1]
+ br i1 %48, label %bb6.i, label %bb7.i
+
+bb6.i: ; preds = %bb4.i, %bb3.i
+ br label %bb7.i
+
+bb7.i: ; preds = %bb6.i, %bb4.i
+ %iftmp.123.0.i = phi i8 [ 0, %bb6.i ], [ %iftmp.122.0.i, %bb4.i ] ; [#uses=1]
+ %49 = load float* %18, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %31, i32 %32, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fcmp ogt float %49, %51 ; [#uses=1]
+ br i1 %52, label %bb6, label %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+
+_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit: ; preds = %bb7.i
+ %53 = load float* %19, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %31, i32 %32, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fcmp olt float %53, %55 ; [#uses=1]
+ %phitmp9 = icmp eq i8 %iftmp.123.0.i, 0 ; [#uses=1]
+ %phitmp = or i1 %56, %phitmp9 ; [#uses=1]
+ br i1 %phitmp, label %bb6, label %bb5
+
+bb5: ; preds = %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+ %57 = load i32 (...)*** %20, align 4 ; [#uses=1]
+ %58 = getelementptr inbounds i32 (...)** %57, i32 2 ; [#uses=1]
+ %59 = load i32 (...)** %58, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %31, i32 %32, i32 0 ; [#uses=1]
+ %61 = bitcast i32 (...)* %59 to i8 (%struct.btActionInterface*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %62 = tail call zeroext i8 %61(%struct.btActionInterface* %callback, %struct.btBroadphaseProxy* %60) ; [#uses=0]
+ br label %bb6
+
+bb6: ; preds = %bb5, %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit, %bb7.i, %bb2
+ %63 = zext i16 %tmp to i32 ; [#uses=1]
+ %64 = load i16* %3, align 4 ; [#uses=1]
+ %65 = zext i16 %64 to i32 ; [#uses=1]
+ %66 = shl i32 %65, 1 ; [#uses=1]
+ %67 = or i32 %66, 1 ; [#uses=1]
+ %68 = icmp ult i32 %63, %67 ; [#uses=1]
+ br i1 %68, label %bb2, label %return
+
+return: ; preds = %bb6, %bb7.preheader
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItE7rayTestERK9btVector3S3_R23btBroadphaseRayCallbackS3_S3_(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, %struct.btQuadWord* %rayFrom, %struct.btQuadWord* %rayTo, %struct.btBroadphaseRayCallback* %rayCallback, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 16 ; [#uses=1]
+ %1 = load %struct.btDbvtBroadphase** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.btDbvtBroadphase* %1, null ; [#uses=1]
+ br i1 %2, label %bb5.preheader, label %bb
+
+bb5.preheader: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 6 ; [#uses=2]
+ %4 = load i16* %3, align 4 ; [#uses=1]
+ %5 = zext i16 %4 to i32 ; [#uses=1]
+ %6 = shl i32 %5, 1 ; [#uses=1]
+ %7 = or i32 %6, 1 ; [#uses=1]
+ %8 = icmp eq i32 %7, 1 ; [#uses=1]
+ br i1 %8, label %return, label %bb.nph
+
+bb: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btDbvtBroadphase* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %10 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i32 (...)** %10, i32 6 ; [#uses=1]
+ %12 = load i32 (...)** %11, align 4 ; [#uses=1]
+ %13 = bitcast i32 (...)* %12 to void (%struct.btDbvtBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btBroadphaseRayCallback*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %13(%struct.btDbvtBroadphase* %1, %struct.btQuadWord* %rayFrom, %struct.btQuadWord* %rayTo, %struct.btBroadphaseRayCallback* %rayCallback, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ ret void
+
+bb.nph: ; preds = %bb5.preheader
+ %14 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btBroadphaseRayCallback* %rayCallback, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btBroadphaseRayCallback* %rayCallback, i32 0, i32 0 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb4, %bb.nph
+ %indvar = phi i16 [ 0, %bb.nph ], [ %i.07, %bb4 ] ; [#uses=2]
+ %i.07 = add i16 %indvar, 1 ; [#uses=2]
+ %tmp = add i16 %indvar, 2 ; [#uses=1]
+ %18 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %14, align 4 ; [#uses=2]
+ %19 = zext i16 %i.07 to i32 ; [#uses=2]
+ %20 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %18, i32 %19, i32 0 ; [#uses=1]
+ %21 = load i16* %20, align 2 ; [#uses=1]
+ %22 = and i16 %21, 1 ; [#uses=1]
+ %23 = icmp eq i16 %22, 0 ; [#uses=1]
+ br i1 %23, label %bb4, label %bb3
+
+bb3: ; preds = %bb2
+ %24 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i32 (...)** %24, i32 2 ; [#uses=1]
+ %26 = load i32 (...)** %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %18, i32 %19, i32 1 ; [#uses=1]
+ %28 = load i16* %27, align 2 ; [#uses=1]
+ %29 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %16, align 4 ; [#uses=1]
+ %30 = zext i16 %28 to i32 ; [#uses=1]
+ %31 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %29, i32 %30, i32 0 ; [#uses=1]
+ %32 = bitcast i32 (...)* %26 to i8 (%struct.btActionInterface*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %33 = tail call zeroext i8 %32(%struct.btActionInterface* %17, %struct.btBroadphaseProxy* %31) ; [#uses=0]
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %34 = zext i16 %tmp to i32 ; [#uses=1]
+ %35 = load i16* %3, align 4 ; [#uses=1]
+ %36 = zext i16 %35 to i32 ; [#uses=1]
+ %37 = shl i32 %36, 1 ; [#uses=1]
+ %38 = or i32 %37, 1 ; [#uses=1]
+ %39 = icmp ult i32 %34, %38 ; [#uses=1]
+ br i1 %39, label %bb2, label %return
+
+return: ; preds = %bb4, %bb5.preheader
+ ret void
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZNK20btAxisSweep3InternalIjE8quantizeEPjRK9btVector3i(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, i32* nocapture %out, %struct.btQuadWord* nocapture %point, i32 %isMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fsub float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fsub float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fsub float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fmul float %4, %16 ; [#uses=3]
+ %18 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fmul float %9, %19 ; [#uses=3]
+ %21 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fmul float %14, %22 ; [#uses=3]
+ %24 = fcmp ugt float %23, 0.000000e+00 ; [#uses=1]
+ br i1 %24, label %bb1, label %bb5
+
+bb1: ; preds = %entry
+ %25 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 2 ; [#uses=1]
+ %26 = load i32* %25, align 4 ; [#uses=2]
+ %27 = uitofp i32 %26 to float ; [#uses=1]
+ %28 = fcmp ult float %23, %27 ; [#uses=1]
+ br i1 %28, label %bb3, label %bb2
+
+bb2: ; preds = %bb1
+ %29 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ %30 = load i32* %29, align 4 ; [#uses=1]
+ %31 = and i32 %30, %26 ; [#uses=1]
+ br label %bb4
+
+bb3: ; preds = %bb1
+ %32 = fptoui float %23 to i32 ; [#uses=1]
+ %33 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ %34 = load i32* %33, align 4 ; [#uses=1]
+ %35 = and i32 %34, %32 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %.pn = phi i32 [ %31, %bb2 ], [ %35, %bb3 ] ; [#uses=1]
+ %iftmp.386.0 = or i32 %.pn, %isMax ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb4, %entry
+ %iftmp.385.0 = phi i32 [ %iftmp.386.0, %bb4 ], [ %isMax, %entry ] ; [#uses=1]
+ store i32 %iftmp.385.0, i32* %out, align 4
+ %36 = fcmp ugt float %20, 0.000000e+00 ; [#uses=1]
+ br i1 %36, label %bb7, label %bb11
+
+bb7: ; preds = %bb5
+ %37 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 2 ; [#uses=1]
+ %38 = load i32* %37, align 4 ; [#uses=2]
+ %39 = uitofp i32 %38 to float ; [#uses=1]
+ %40 = fcmp ult float %20, %39 ; [#uses=1]
+ br i1 %40, label %bb9, label %bb8
+
+bb8: ; preds = %bb7
+ %41 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ %42 = load i32* %41, align 4 ; [#uses=1]
+ %43 = and i32 %42, %38 ; [#uses=1]
+ br label %bb10
+
+bb9: ; preds = %bb7
+ %44 = fptoui float %20 to i32 ; [#uses=1]
+ %45 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ %46 = load i32* %45, align 4 ; [#uses=1]
+ %47 = and i32 %46, %44 ; [#uses=1]
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb8
+ %.pn18 = phi i32 [ %43, %bb8 ], [ %47, %bb9 ] ; [#uses=1]
+ %iftmp.390.0 = or i32 %.pn18, %isMax ; [#uses=1]
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb5
+ %iftmp.389.0 = phi i32 [ %iftmp.390.0, %bb10 ], [ %isMax, %bb5 ] ; [#uses=1]
+ %48 = getelementptr inbounds i32* %out, i32 1 ; [#uses=1]
+ store i32 %iftmp.389.0, i32* %48, align 4
+ %49 = fcmp ugt float %17, 0.000000e+00 ; [#uses=1]
+ br i1 %49, label %bb13, label %bb17
+
+bb13: ; preds = %bb11
+ %50 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 2 ; [#uses=1]
+ %51 = load i32* %50, align 4 ; [#uses=2]
+ %52 = uitofp i32 %51 to float ; [#uses=1]
+ %53 = fcmp ult float %17, %52 ; [#uses=1]
+ br i1 %53, label %bb15, label %bb14
+
+bb14: ; preds = %bb13
+ %54 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ %55 = load i32* %54, align 4 ; [#uses=1]
+ %56 = and i32 %55, %51 ; [#uses=1]
+ br label %bb16
+
+bb15: ; preds = %bb13
+ %57 = fptoui float %17 to i32 ; [#uses=1]
+ %58 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ %59 = load i32* %58, align 4 ; [#uses=1]
+ %60 = and i32 %59, %57 ; [#uses=1]
+ br label %bb16
+
+bb16: ; preds = %bb15, %bb14
+ %.pn19 = phi i32 [ %56, %bb14 ], [ %60, %bb15 ] ; [#uses=1]
+ %iftmp.394.0 = or i32 %.pn19, %isMax ; [#uses=1]
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb11
+ %iftmp.393.0 = phi i32 [ %iftmp.394.0, %bb16 ], [ %isMax, %bb11 ] ; [#uses=1]
+ %61 = getelementptr inbounds i32* %out, i32 2 ; [#uses=1]
+ store i32 %iftmp.393.0, i32* %61, align 4
+ ret void
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, i16* nocapture %out, %struct.btQuadWord* nocapture %point, i32 %isMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fsub float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fsub float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fsub float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fmul float %4, %16 ; [#uses=3]
+ %18 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fmul float %9, %19 ; [#uses=3]
+ %21 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fmul float %14, %22 ; [#uses=3]
+ %24 = fcmp ugt float %23, 0.000000e+00 ; [#uses=1]
+ br i1 %24, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %25 = trunc i32 %isMax to i16 ; [#uses=1]
+ br label %bb5
+
+bb1: ; preds = %entry
+ %26 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 2 ; [#uses=1]
+ %27 = load i16* %26, align 2 ; [#uses=2]
+ %28 = zext i16 %27 to i32 ; [#uses=1]
+ %29 = sitofp i32 %28 to float ; [#uses=1]
+ %30 = fcmp ult float %23, %29 ; [#uses=1]
+ br i1 %30, label %bb3, label %bb2
+
+bb2: ; preds = %bb1
+ %31 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ %32 = load i16* %31, align 4 ; [#uses=1]
+ %33 = and i16 %32, %27 ; [#uses=1]
+ %34 = trunc i32 %isMax to i16 ; [#uses=1]
+ %35 = or i16 %33, %34 ; [#uses=1]
+ br label %bb5
+
+bb3: ; preds = %bb1
+ %36 = fptoui float %23 to i16 ; [#uses=1]
+ %37 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ %38 = load i16* %37, align 4 ; [#uses=1]
+ %39 = and i16 %38, %36 ; [#uses=1]
+ %40 = trunc i32 %isMax to i16 ; [#uses=1]
+ %41 = or i16 %39, %40 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb3, %bb2, %bb
+ %iftmp.444.0 = phi i16 [ %25, %bb ], [ %35, %bb2 ], [ %41, %bb3 ] ; [#uses=1]
+ store i16 %iftmp.444.0, i16* %out, align 2
+ %42 = fcmp ugt float %20, 0.000000e+00 ; [#uses=1]
+ br i1 %42, label %bb7, label %bb6
+
+bb6: ; preds = %bb5
+ %43 = trunc i32 %isMax to i16 ; [#uses=1]
+ br label %bb11
+
+bb7: ; preds = %bb5
+ %44 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 2 ; [#uses=1]
+ %45 = load i16* %44, align 2 ; [#uses=2]
+ %46 = zext i16 %45 to i32 ; [#uses=1]
+ %47 = sitofp i32 %46 to float ; [#uses=1]
+ %48 = fcmp ult float %20, %47 ; [#uses=1]
+ br i1 %48, label %bb9, label %bb8
+
+bb8: ; preds = %bb7
+ %49 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ %50 = load i16* %49, align 4 ; [#uses=1]
+ %51 = and i16 %50, %45 ; [#uses=1]
+ %52 = trunc i32 %isMax to i16 ; [#uses=1]
+ %53 = or i16 %51, %52 ; [#uses=1]
+ br label %bb11
+
+bb9: ; preds = %bb7
+ %54 = fptoui float %20 to i16 ; [#uses=1]
+ %55 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ %56 = load i16* %55, align 4 ; [#uses=1]
+ %57 = and i16 %56, %54 ; [#uses=1]
+ %58 = trunc i32 %isMax to i16 ; [#uses=1]
+ %59 = or i16 %57, %58 ; [#uses=1]
+ br label %bb11
+
+bb11: ; preds = %bb9, %bb8, %bb6
+ %iftmp.446.0 = phi i16 [ %43, %bb6 ], [ %53, %bb8 ], [ %59, %bb9 ] ; [#uses=1]
+ %60 = getelementptr inbounds i16* %out, i32 1 ; [#uses=1]
+ store i16 %iftmp.446.0, i16* %60, align 2
+ %61 = fcmp ugt float %17, 0.000000e+00 ; [#uses=1]
+ br i1 %61, label %bb13, label %bb12
+
+bb12: ; preds = %bb11
+ %62 = trunc i32 %isMax to i16 ; [#uses=1]
+ br label %bb17
+
+bb13: ; preds = %bb11
+ %63 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 2 ; [#uses=1]
+ %64 = load i16* %63, align 2 ; [#uses=2]
+ %65 = zext i16 %64 to i32 ; [#uses=1]
+ %66 = sitofp i32 %65 to float ; [#uses=1]
+ %67 = fcmp ult float %17, %66 ; [#uses=1]
+ br i1 %67, label %bb15, label %bb14
+
+bb14: ; preds = %bb13
+ %68 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ %69 = load i16* %68, align 4 ; [#uses=1]
+ %70 = and i16 %69, %64 ; [#uses=1]
+ %71 = trunc i32 %isMax to i16 ; [#uses=1]
+ %72 = or i16 %70, %71 ; [#uses=1]
+ br label %bb17
+
+bb15: ; preds = %bb13
+ %73 = fptoui float %17 to i16 ; [#uses=1]
+ %74 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ %75 = load i16* %74, align 4 ; [#uses=1]
+ %76 = and i16 %75, %73 ; [#uses=1]
+ %77 = trunc i32 %isMax to i16 ; [#uses=1]
+ %78 = or i16 %76, %77 ; [#uses=1]
+ br label %bb17
+
+bb17: ; preds = %bb15, %bb14, %bb12
+ %iftmp.448.0 = phi i16 [ %62, %bb12 ], [ %72, %bb14 ], [ %78, %bb15 ] ; [#uses=1]
+ %79 = getelementptr inbounds i16* %out, i32 2 ; [#uses=1]
+ store i16 %iftmp.448.0, i16* %79, align 2
+ ret void
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjE11sortMinDownEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, i32 %axis, i32 %edge, %struct.btActionInterface* nocapture %unnamed_arg, i8 zeroext %updateOverlaps) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 %axis ; [#uses=1]
+ %1 = load %struct.CONTACT_KEY_TOKEN** %0, align 4 ; [#uses=7]
+ %.sum = add i32 %edge, -1 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %edge, i32 1 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=6]
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=2]
+ %5 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %4, align 4 ; [#uses=7]
+ %6 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %edge, i32 0 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %.sum, i32 0 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %10 = icmp ult i32 %7, %9 ; [#uses=1]
+ br i1 %10, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %11 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 1, i32 %axis ; [#uses=2]
+ %12 = shl i32 1, %axis ; [#uses=1]
+ %13 = and i32 %12, 3 ; [#uses=5]
+ %toBool2not = icmp eq i8 %updateOverlaps, 0 ; [#uses=1]
+ %14 = shl i32 1, %13 ; [#uses=1]
+ %15 = and i32 %14, 3 ; [#uses=4]
+ %16 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 2, i32 %13 ; [#uses=1]
+ %17 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 1, i32 %13 ; [#uses=1]
+ %18 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 2, i32 %15 ; [#uses=1]
+ %19 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 1, i32 %15 ; [#uses=1]
+ %20 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 12 ; [#uses=1]
+ %21 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 0 ; [#uses=2]
+ %22 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 13 ; [#uses=1]
+ %tmp26 = add i32 %edge, -2 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb19.bb_crit_edge, %bb.nph
+ %23 = phi %"struct.btAxisSweep3Internal<unsigned int>::Handle"* [ %5, %bb.nph ], [ %.pre, %bb19.bb_crit_edge ] ; [#uses=7]
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb19.bb_crit_edge ] ; [#uses=4]
+ %tmp27 = sub i32 %tmp26, %indvar ; [#uses=1]
+ %scevgep28 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp27, i32 0 ; [#uses=1]
+ %tmp29 = sub i32 %edge, %indvar ; [#uses=2]
+ %scevgep30 = getelementptr %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp29, i32 0 ; [#uses=3]
+ %scevgep31 = getelementptr i32* %scevgep30, i32 -1 ; [#uses=3]
+ %tmp33 = sub i32 %.sum, %indvar ; [#uses=1]
+ %scevgep3435 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp33, i32 0 ; [#uses=3]
+ %scevgep36 = getelementptr %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp29, i32 1 ; [#uses=2]
+ %24 = load i32* %scevgep31, align 4 ; [#uses=7]
+ %25 = load i32* %scevgep3435, align 4 ; [#uses=1]
+ %26 = and i32 %25, 1 ; [#uses=1]
+ %27 = icmp eq i32 %26, 0 ; [#uses=1]
+ br i1 %27, label %bb18, label %bb1
+
+bb1: ; preds = %bb
+ br i1 %toBool2not, label %bb17, label %bb6
+
+bb6: ; preds = %bb1
+ %28 = load i32* %16, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %23, i32 %24, i32 1, i32 %13 ; [#uses=1]
+ %30 = load i32* %29, align 4 ; [#uses=1]
+ %31 = icmp ult i32 %28, %30 ; [#uses=1]
+ br i1 %31, label %bb17, label %bb.i
+
+bb.i: ; preds = %bb6
+ %32 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %23, i32 %24, i32 2, i32 %13 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ %34 = load i32* %17, align 4 ; [#uses=1]
+ %35 = icmp ult i32 %33, %34 ; [#uses=1]
+ br i1 %35, label %bb17, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %36 = load i32* %18, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %23, i32 %24, i32 1, i32 %15 ; [#uses=1]
+ %38 = load i32* %37, align 4 ; [#uses=1]
+ %39 = icmp ult i32 %36, %38 ; [#uses=1]
+ br i1 %39, label %bb17, label %_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+
+_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit: ; preds = %bb1.i
+ %40 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %23, i32 %24, i32 2, i32 %15 ; [#uses=1]
+ %41 = load i32* %40, align 4 ; [#uses=1]
+ %42 = load i32* %19, align 4 ; [#uses=1]
+ %phitmp = icmp ult i32 %41, %42 ; [#uses=1]
+ br i1 %phitmp, label %bb17, label %bb15
+
+bb15: ; preds = %_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+ %43 = load %struct..0btMultiSapOverlapFilterCallback** %20, align 4 ; [#uses=2]
+ %44 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %43, i32 0, i32 0, i32 0 ; [#uses=1]
+ %45 = load i32 (...)*** %44, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds i32 (...)** %45, i32 2 ; [#uses=1]
+ %47 = load i32 (...)** %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %23, i32 %24, i32 0 ; [#uses=2]
+ %49 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %43, i32 0, i32 0 ; [#uses=1]
+ %50 = bitcast i32 (...)* %47 to %struct.btBroadphasePair* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %51 = tail call %struct.btBroadphasePair* %50(%struct.btActionInterface* %49, %struct.btBroadphaseProxy* %21, %struct.btBroadphaseProxy* %48) ; [#uses=0]
+ %52 = load %struct.btActionInterface** %22, align 4 ; [#uses=3]
+ %53 = icmp eq %struct.btActionInterface* %52, null ; [#uses=1]
+ br i1 %53, label %bb17, label %bb16
+
+bb16: ; preds = %bb15
+ %54 = getelementptr inbounds %struct.btActionInterface* %52, i32 0, i32 0 ; [#uses=1]
+ %55 = load i32 (...)*** %54, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds i32 (...)** %55, i32 2 ; [#uses=1]
+ %57 = load i32 (...)** %56, align 4 ; [#uses=1]
+ %58 = bitcast i32 (...)* %57 to %struct.btBroadphasePair* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %59 = tail call %struct.btBroadphasePair* %58(%struct.btActionInterface* %52, %struct.btBroadphaseProxy* %21, %struct.btBroadphaseProxy* %48) ; [#uses=0]
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb15, %_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit, %bb1.i, %bb.i, %bb6, %bb1
+ %60 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %23, i32 %24, i32 2, i32 %axis ; [#uses=2]
+ %61 = load i32* %60, align 4 ; [#uses=1]
+ %62 = add i32 %61, 1 ; [#uses=1]
+ store i32 %62, i32* %60, align 4
+ br label %bb19
+
+bb18: ; preds = %bb
+ %63 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %23, i32 %24, i32 1, i32 %axis ; [#uses=2]
+ %64 = load i32* %63, align 4 ; [#uses=1]
+ %65 = add i32 %64, 1 ; [#uses=1]
+ store i32 %65, i32* %63, align 4
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb17
+ %66 = load i32* %11, align 4 ; [#uses=1]
+ %67 = add i32 %66, -1 ; [#uses=1]
+ store i32 %67, i32* %11, align 4
+ %68 = load i32* %scevgep30, align 4 ; [#uses=2]
+ %69 = load i32* %scevgep36, align 4 ; [#uses=1]
+ %70 = load i32* %scevgep3435, align 4 ; [#uses=1]
+ %71 = load i32* %scevgep31, align 4 ; [#uses=1]
+ store i32 %70, i32* %scevgep30, align 4
+ store i32 %71, i32* %scevgep36, align 4
+ store i32 %68, i32* %scevgep3435, align 4
+ store i32 %69, i32* %scevgep31, align 4
+ %72 = load i32* %scevgep28, align 4 ; [#uses=1]
+ %73 = icmp ult i32 %68, %72 ; [#uses=1]
+ br i1 %73, label %bb19.bb_crit_edge, label %return
+
+bb19.bb_crit_edge: ; preds = %bb19
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ %.pre = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %4, align 4 ; [#uses=1]
+ br label %bb
+
+return: ; preds = %bb19, %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjE9sortMaxUpEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, i32 %axis, i32 %edge, %struct.btActionInterface* nocapture %unnamed_arg, i8 zeroext %updateOverlaps) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 %axis ; [#uses=1]
+ %1 = load %struct.CONTACT_KEY_TOKEN** %0, align 4 ; [#uses=5]
+ %2 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %edge, i32 1 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=5]
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=2]
+ %5 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %4, align 4 ; [#uses=5]
+ %6 = shl i32 1, %axis ; [#uses=1]
+ %7 = and i32 %6, 3 ; [#uses=5]
+ %8 = shl i32 1, %7 ; [#uses=1]
+ %9 = and i32 %8, 3 ; [#uses=4]
+ %toBool2not = icmp eq i8 %updateOverlaps, 0 ; [#uses=1]
+ %10 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 2, i32 %7 ; [#uses=1]
+ %11 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 1, i32 %7 ; [#uses=1]
+ %12 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 2, i32 %9 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 1, i32 %9 ; [#uses=1]
+ %14 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 12 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 13 ; [#uses=1]
+ %16 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 2, i32 %axis ; [#uses=2]
+ %tmp27 = add i32 %edge, 1 ; [#uses=1]
+ br label %bb20
+
+bb: ; preds = %bb21
+ %17 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %4, align 4 ; [#uses=8]
+ %18 = and i32 %69, 1 ; [#uses=1]
+ %19 = icmp eq i32 %18, 0 ; [#uses=1]
+ br i1 %19, label %bb1, label %bb18
+
+bb1: ; preds = %bb
+ br i1 %toBool2not, label %bb17, label %bb6
+
+bb6: ; preds = %bb1
+ %20 = load i32* %10, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %17, i32 %66, i32 1, i32 %7 ; [#uses=1]
+ %22 = load i32* %21, align 4 ; [#uses=1]
+ %23 = icmp ult i32 %20, %22 ; [#uses=1]
+ br i1 %23, label %bb17, label %bb.i
+
+bb.i: ; preds = %bb6
+ %24 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %17, i32 %66, i32 2, i32 %7 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ %26 = load i32* %11, align 4 ; [#uses=1]
+ %27 = icmp ult i32 %25, %26 ; [#uses=1]
+ br i1 %27, label %bb17, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %28 = load i32* %12, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %17, i32 %66, i32 1, i32 %9 ; [#uses=1]
+ %30 = load i32* %29, align 4 ; [#uses=1]
+ %31 = icmp ult i32 %28, %30 ; [#uses=1]
+ br i1 %31, label %bb17, label %_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+
+_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit: ; preds = %bb1.i
+ %32 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %17, i32 %66, i32 2, i32 %9 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ %34 = load i32* %13, align 4 ; [#uses=1]
+ %phitmp = icmp ult i32 %33, %34 ; [#uses=1]
+ br i1 %phitmp, label %bb17, label %bb15
+
+bb15: ; preds = %_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+ %35 = load i32* %scevgep26, align 4 ; [#uses=1]
+ %36 = load %struct..0btMultiSapOverlapFilterCallback** %14, align 4 ; [#uses=2]
+ %37 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %36, i32 0, i32 0, i32 0 ; [#uses=1]
+ %38 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds i32 (...)** %38, i32 2 ; [#uses=1]
+ %40 = load i32 (...)** %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %17, i32 %66, i32 0 ; [#uses=2]
+ %42 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %17, i32 %35, i32 0 ; [#uses=2]
+ %43 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %36, i32 0, i32 0 ; [#uses=1]
+ %44 = bitcast i32 (...)* %40 to %struct.btBroadphasePair* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %45 = tail call %struct.btBroadphasePair* %44(%struct.btActionInterface* %43, %struct.btBroadphaseProxy* %42, %struct.btBroadphaseProxy* %41) ; [#uses=0]
+ %46 = load %struct.btActionInterface** %15, align 4 ; [#uses=3]
+ %47 = icmp eq %struct.btActionInterface* %46, null ; [#uses=1]
+ br i1 %47, label %bb17, label %bb16
+
+bb16: ; preds = %bb15
+ %48 = getelementptr inbounds %struct.btActionInterface* %46, i32 0, i32 0 ; [#uses=1]
+ %49 = load i32 (...)*** %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds i32 (...)** %49, i32 2 ; [#uses=1]
+ %51 = load i32 (...)** %50, align 4 ; [#uses=1]
+ %52 = bitcast i32 (...)* %51 to %struct.btBroadphasePair* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %53 = tail call %struct.btBroadphasePair* %52(%struct.btActionInterface* %46, %struct.btBroadphaseProxy* %42, %struct.btBroadphaseProxy* %41) ; [#uses=0]
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb15, %_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit, %bb1.i, %bb.i, %bb6, %bb1
+ %54 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %17, i32 %66, i32 1, i32 %axis ; [#uses=2]
+ %55 = load i32* %54, align 4 ; [#uses=1]
+ %56 = add i32 %55, -1 ; [#uses=1]
+ store i32 %56, i32* %54, align 4
+ br label %bb19
+
+bb18: ; preds = %bb
+ %57 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %17, i32 %66, i32 2, i32 %axis ; [#uses=2]
+ %58 = load i32* %57, align 4 ; [#uses=1]
+ %59 = add i32 %58, -1 ; [#uses=1]
+ store i32 %59, i32* %57, align 4
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb17
+ %60 = load i32* %16, align 4 ; [#uses=1]
+ %61 = add i32 %60, 1 ; [#uses=1]
+ store i32 %61, i32* %16, align 4
+ %62 = load i32* %scevgep25, align 4 ; [#uses=1]
+ %63 = load i32* %scevgep26, align 4 ; [#uses=1]
+ %64 = load i32* %scevgep2930, align 4 ; [#uses=1]
+ %65 = load i32* %scevgep31, align 4 ; [#uses=1]
+ store i32 %64, i32* %scevgep25, align 4
+ store i32 %65, i32* %scevgep26, align 4
+ store i32 %62, i32* %scevgep2930, align 4
+ store i32 %63, i32* %scevgep31, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb20
+
+bb20: ; preds = %bb19, %entry
+ %indvar = phi i32 [ %indvar.next, %bb19 ], [ 0, %entry ] ; [#uses=3]
+ %tmp = add i32 %indvar, %edge ; [#uses=2]
+ %scevgep25 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp, i32 0 ; [#uses=3]
+ %scevgep26 = getelementptr %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp, i32 1 ; [#uses=3]
+ %tmp28 = add i32 %tmp27, %indvar ; [#uses=2]
+ %scevgep2930 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp28, i32 0 ; [#uses=3]
+ %scevgep31 = getelementptr %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp28, i32 1 ; [#uses=3]
+ %66 = load i32* %scevgep31, align 4 ; [#uses=8]
+ %67 = icmp eq i32 %66, 0 ; [#uses=1]
+ br i1 %67, label %return, label %bb21
+
+bb21: ; preds = %bb20
+ %68 = load i32* %scevgep25, align 4 ; [#uses=1]
+ %69 = load i32* %scevgep2930, align 4 ; [#uses=2]
+ %70 = icmp ult i32 %68, %69 ; [#uses=1]
+ br i1 %70, label %return, label %bb
+
+return: ; preds = %bb21, %bb20
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjE9sortMinUpEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, i32 %axis, i32 %edge, %struct.btActionInterface* %dispatcher, i8 zeroext %updateOverlaps) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 %axis ; [#uses=1]
+ %1 = load %struct.CONTACT_KEY_TOKEN** %0, align 4 ; [#uses=5]
+ %2 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %edge, i32 1 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=2]
+ %5 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 1, i32 %axis ; [#uses=2]
+ %7 = shl i32 1, %axis ; [#uses=1]
+ %8 = and i32 %7, 3 ; [#uses=5]
+ %toBool2not = icmp eq i8 %updateOverlaps, 0 ; [#uses=1]
+ %9 = shl i32 1, %8 ; [#uses=1]
+ %10 = and i32 %9, 3 ; [#uses=4]
+ %11 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 12 ; [#uses=1]
+ %12 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 13 ; [#uses=1]
+ %tmp27 = add i32 %edge, 1 ; [#uses=1]
+ br label %bb20
+
+bb: ; preds = %bb21
+ %13 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %4, align 4 ; [#uses=12]
+ %14 = and i32 %69, 1 ; [#uses=1]
+ %15 = icmp eq i32 %14, 0 ; [#uses=1]
+ br i1 %15, label %bb18, label %bb1
+
+bb1: ; preds = %bb
+ %16 = load i32* %scevgep26, align 4 ; [#uses=5]
+ br i1 %toBool2not, label %bb17, label %bb6
+
+bb6: ; preds = %bb1
+ %17 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %13, i32 %16, i32 2, i32 %8 ; [#uses=1]
+ %18 = load i32* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %13, i32 %66, i32 1, i32 %8 ; [#uses=1]
+ %20 = load i32* %19, align 4 ; [#uses=1]
+ %21 = icmp ult i32 %18, %20 ; [#uses=1]
+ br i1 %21, label %bb17, label %bb.i
+
+bb.i: ; preds = %bb6
+ %22 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %13, i32 %66, i32 2, i32 %8 ; [#uses=1]
+ %23 = load i32* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %13, i32 %16, i32 1, i32 %8 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ %26 = icmp ult i32 %23, %25 ; [#uses=1]
+ br i1 %26, label %bb17, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %27 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %13, i32 %16, i32 2, i32 %10 ; [#uses=1]
+ %28 = load i32* %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %13, i32 %66, i32 1, i32 %10 ; [#uses=1]
+ %30 = load i32* %29, align 4 ; [#uses=1]
+ %31 = icmp ult i32 %28, %30 ; [#uses=1]
+ br i1 %31, label %bb17, label %_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+
+_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit: ; preds = %bb1.i
+ %32 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %13, i32 %66, i32 2, i32 %10 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %13, i32 %16, i32 1, i32 %10 ; [#uses=1]
+ %35 = load i32* %34, align 4 ; [#uses=1]
+ %phitmp = icmp ult i32 %33, %35 ; [#uses=1]
+ br i1 %phitmp, label %bb17, label %bb15
+
+bb15: ; preds = %_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+ %36 = load %struct..0btMultiSapOverlapFilterCallback** %11, align 4 ; [#uses=2]
+ %37 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %36, i32 0, i32 0, i32 0 ; [#uses=1]
+ %38 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds i32 (...)** %38, i32 3 ; [#uses=1]
+ %40 = load i32 (...)** %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %13, i32 %66, i32 0 ; [#uses=2]
+ %42 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %13, i32 %16, i32 0 ; [#uses=2]
+ %43 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %36, i32 0, i32 0 ; [#uses=1]
+ %44 = bitcast i32 (...)* %40 to i8* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %45 = tail call i8* %44(%struct.btActionInterface* %43, %struct.btBroadphaseProxy* %42, %struct.btBroadphaseProxy* %41, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ %46 = load %struct.btActionInterface** %12, align 4 ; [#uses=3]
+ %47 = icmp eq %struct.btActionInterface* %46, null ; [#uses=1]
+ br i1 %47, label %bb17, label %bb16
+
+bb16: ; preds = %bb15
+ %48 = getelementptr inbounds %struct.btActionInterface* %46, i32 0, i32 0 ; [#uses=1]
+ %49 = load i32 (...)*** %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds i32 (...)** %49, i32 3 ; [#uses=1]
+ %51 = load i32 (...)** %50, align 4 ; [#uses=1]
+ %52 = bitcast i32 (...)* %51 to i8* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %53 = tail call i8* %52(%struct.btActionInterface* %46, %struct.btBroadphaseProxy* %42, %struct.btBroadphaseProxy* %41, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb15, %_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit, %bb1.i, %bb.i, %bb6, %bb1
+ %54 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %13, i32 %66, i32 2, i32 %axis ; [#uses=2]
+ %55 = load i32* %54, align 4 ; [#uses=1]
+ %56 = add i32 %55, -1 ; [#uses=1]
+ store i32 %56, i32* %54, align 4
+ br label %bb19
+
+bb18: ; preds = %bb
+ %57 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %13, i32 %66, i32 1, i32 %axis ; [#uses=2]
+ %58 = load i32* %57, align 4 ; [#uses=1]
+ %59 = add i32 %58, -1 ; [#uses=1]
+ store i32 %59, i32* %57, align 4
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb17
+ %60 = load i32* %6, align 4 ; [#uses=1]
+ %61 = add i32 %60, 1 ; [#uses=1]
+ store i32 %61, i32* %6, align 4
+ %62 = load i32* %scevgep25, align 4 ; [#uses=1]
+ %63 = load i32* %scevgep26, align 4 ; [#uses=1]
+ %64 = load i32* %scevgep2930, align 4 ; [#uses=1]
+ %65 = load i32* %scevgep31, align 4 ; [#uses=1]
+ store i32 %64, i32* %scevgep25, align 4
+ store i32 %65, i32* %scevgep26, align 4
+ store i32 %62, i32* %scevgep2930, align 4
+ store i32 %63, i32* %scevgep31, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb20
+
+bb20: ; preds = %bb19, %entry
+ %indvar = phi i32 [ %indvar.next, %bb19 ], [ 0, %entry ] ; [#uses=3]
+ %tmp = add i32 %indvar, %edge ; [#uses=2]
+ %scevgep25 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp, i32 0 ; [#uses=3]
+ %scevgep26 = getelementptr %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp, i32 1 ; [#uses=3]
+ %tmp28 = add i32 %tmp27, %indvar ; [#uses=2]
+ %scevgep2930 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp28, i32 0 ; [#uses=3]
+ %scevgep31 = getelementptr %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp28, i32 1 ; [#uses=3]
+ %66 = load i32* %scevgep31, align 4 ; [#uses=8]
+ %67 = icmp eq i32 %66, 0 ; [#uses=1]
+ br i1 %67, label %return, label %bb21
+
+bb21: ; preds = %bb20
+ %68 = load i32* %scevgep25, align 4 ; [#uses=1]
+ %69 = load i32* %scevgep2930, align 4 ; [#uses=2]
+ %70 = icmp ult i32 %68, %69 ; [#uses=1]
+ br i1 %70, label %return, label %bb
+
+return: ; preds = %bb21, %bb20
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjE12removeHandleEjP12btDispatcher(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, i32 %handle, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=5]
+ %1 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 12 ; [#uses=2]
+ %3 = load %struct..0btMultiSapOverlapFilterCallback** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 14 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to i8 (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %9 = tail call zeroext i8 %8(%struct..0btMultiSapOverlapFilterCallback* %3) ; [#uses=1]
+ %toBoolnot = icmp eq i8 %9, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb, label %bb.nph
+
+bb: ; preds = %entry
+ %10 = load %struct..0btMultiSapOverlapFilterCallback** %2, align 4 ; [#uses=2]
+ %11 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %10, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = load i32 (...)*** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 4 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %1, i32 %handle, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %10, i32 0, i32 0 ; [#uses=1]
+ %17 = bitcast i32 (...)* %14 to void (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %17(%struct.btActionInterface* %16, %struct.btBroadphaseProxy* %15, %struct.btActionInterface* %dispatcher)
+ br label %bb.nph
+
+bb.nph: ; preds = %bb, %entry
+ %18 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 6 ; [#uses=3]
+ %19 = load i32* %18, align 4 ; [#uses=1]
+ %20 = shl i32 %19, 1 ; [#uses=1]
+ %21 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %0, align 4 ; [#uses=1]
+ %scevgep16 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %21, i32 0, i32 2, i32 0 ; [#uses=2]
+ %22 = load i32* %scevgep16, align 4 ; [#uses=1]
+ %23 = add i32 %22, -2 ; [#uses=1]
+ store i32 %23, i32* %scevgep16, align 4
+ %24 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %0, align 4 ; [#uses=1]
+ %scevgep16.1 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %24, i32 0, i32 2, i32 1 ; [#uses=2]
+ %25 = load i32* %scevgep16.1, align 4 ; [#uses=1]
+ %26 = add i32 %25, -2 ; [#uses=1]
+ store i32 %26, i32* %scevgep16.1, align 4
+ %27 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %0, align 4 ; [#uses=1]
+ %scevgep16.2 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %27, i32 0, i32 2, i32 2 ; [#uses=2]
+ %28 = load i32* %scevgep16.2, align 4 ; [#uses=1]
+ %29 = add i32 %28, -2 ; [#uses=1]
+ store i32 %29, i32* %scevgep16.2, align 4
+ %30 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 2 ; [#uses=3]
+ %31 = add nsw i32 %20, -1 ; [#uses=2]
+ br label %bb7
+
+bb7: ; preds = %bb7, %bb.nph
+ %32 = phi i32 [ 0, %bb.nph ], [ %43, %bb7 ] ; [#uses=6]
+ %scevgep = getelementptr %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 %32 ; [#uses=1]
+ %scevgep13 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %1, i32 %handle, i32 2, i32 %32 ; [#uses=1]
+ %scevgep14 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %1, i32 %handle, i32 1, i32 %32 ; [#uses=1]
+ %33 = load %struct.CONTACT_KEY_TOKEN** %scevgep, align 4 ; [#uses=4]
+ %34 = load i32* %scevgep13, align 4 ; [#uses=2]
+ %35 = load i32* %30, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %33, i32 %34, i32 0 ; [#uses=1]
+ store i32 %35, i32* %36, align 4
+ tail call void @_ZN20btAxisSweep3InternalIjE9sortMaxUpEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 %32, i32 %34, %struct.btActionInterface* %dispatcher, i8 zeroext 0)
+ %37 = load i32* %scevgep14, align 4 ; [#uses=2]
+ %38 = load i32* %30, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %33, i32 %37, i32 0 ; [#uses=1]
+ store i32 %38, i32* %39, align 4
+ tail call void @_ZN20btAxisSweep3InternalIjE9sortMinUpEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 %32, i32 %37, %struct.btActionInterface* %dispatcher, i8 zeroext 0)
+ %40 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %33, i32 %31, i32 1 ; [#uses=1]
+ store i32 0, i32* %40, align 4
+ %41 = load i32* %30, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %33, i32 %31, i32 0 ; [#uses=1]
+ store i32 %41, i32* %42, align 4
+ %43 = add nsw i32 %32, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %43, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb9, label %bb7
+
+bb9: ; preds = %bb7
+ %44 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 9 ; [#uses=2]
+ %45 = load i32* %44, align 4 ; [#uses=1]
+ %46 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %0, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %46, i32 %handle, i32 1, i32 0 ; [#uses=1]
+ store i32 %45, i32* %47, align 4
+ store i32 %handle, i32* %44, align 4
+ %48 = load i32* %18, align 4 ; [#uses=1]
+ %49 = add i32 %48, -1 ; [#uses=1]
+ store i32 %49, i32* %18, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjE12destroyProxyEP17btBroadphaseProxyP12btDispatcher(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, %struct.btBroadphaseProxy* nocapture %proxy, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 16 ; [#uses=1]
+ %1 = load %struct.btDbvtBroadphase** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.btDbvtBroadphase* %1, null ; [#uses=1]
+ br i1 %2, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDbvtBroadphase* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32 (...)** %4, i32 3 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 5, i32 0, i32 2 ; [#uses=1]
+ %8 = bitcast float* %7 to %struct.btBroadphaseProxy** ; [#uses=1]
+ %9 = load %struct.btBroadphaseProxy** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %6 to void (%struct.btDbvtBroadphase*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %10(%struct.btDbvtBroadphase* %1, %struct.btBroadphaseProxy* %9, %struct.btActionInterface* %dispatcher)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %11 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 4 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ tail call void @_ZN20btAxisSweep3InternalIjE12removeHandleEjP12btDispatcher(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 %12, %struct.btActionInterface* %dispatcher)
+ ret void
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjE11sortMaxDownEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, i32 %axis, i32 %edge, %struct.btActionInterface* %dispatcher, i8 zeroext %updateOverlaps) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 %axis ; [#uses=1]
+ %1 = load %struct.CONTACT_KEY_TOKEN** %0, align 4 ; [#uses=7]
+ %.sum = add i32 %edge, -1 ; [#uses=2]
+ %2 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=2]
+ %3 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %edge, i32 0 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %.sum, i32 0 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = icmp ult i32 %5, %7 ; [#uses=1]
+ br i1 %8, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %9 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %edge, i32 1 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = shl i32 1, %axis ; [#uses=1]
+ %12 = and i32 %11, 3 ; [#uses=5]
+ %toBool2not = icmp eq i8 %updateOverlaps, 0 ; [#uses=1]
+ %13 = shl i32 1, %12 ; [#uses=1]
+ %14 = and i32 %13, 3 ; [#uses=4]
+ %15 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 12 ; [#uses=1]
+ %16 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 13 ; [#uses=1]
+ %17 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %3, i32 %10, i32 2, i32 %axis ; [#uses=2]
+ %tmp26 = add i32 %edge, -2 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb19.bb_crit_edge, %bb.nph
+ %18 = phi %"struct.btAxisSweep3Internal<unsigned int>::Handle"* [ %3, %bb.nph ], [ %.pre, %bb19.bb_crit_edge ] ; [#uses=12]
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb19.bb_crit_edge ] ; [#uses=4]
+ %tmp27 = sub i32 %tmp26, %indvar ; [#uses=1]
+ %scevgep28 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp27, i32 0 ; [#uses=1]
+ %tmp29 = sub i32 %edge, %indvar ; [#uses=2]
+ %scevgep30 = getelementptr %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp29, i32 0 ; [#uses=3]
+ %scevgep31 = getelementptr i32* %scevgep30, i32 -1 ; [#uses=3]
+ %tmp33 = sub i32 %.sum, %indvar ; [#uses=1]
+ %scevgep3435 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp33, i32 0 ; [#uses=3]
+ %scevgep36 = getelementptr %struct.CONTACT_KEY_TOKEN* %1, i32 %tmp29, i32 1 ; [#uses=3]
+ %19 = load i32* %scevgep31, align 4 ; [#uses=7]
+ %20 = load i32* %scevgep3435, align 4 ; [#uses=1]
+ %21 = and i32 %20, 1 ; [#uses=1]
+ %22 = icmp eq i32 %21, 0 ; [#uses=1]
+ br i1 %22, label %bb1, label %bb18
+
+bb1: ; preds = %bb
+ %23 = load i32* %scevgep36, align 4 ; [#uses=5]
+ br i1 %toBool2not, label %bb17, label %bb6
+
+bb6: ; preds = %bb1
+ %24 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %18, i32 %23, i32 2, i32 %12 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %18, i32 %19, i32 1, i32 %12 ; [#uses=1]
+ %27 = load i32* %26, align 4 ; [#uses=1]
+ %28 = icmp ult i32 %25, %27 ; [#uses=1]
+ br i1 %28, label %bb17, label %bb.i
+
+bb.i: ; preds = %bb6
+ %29 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %18, i32 %19, i32 2, i32 %12 ; [#uses=1]
+ %30 = load i32* %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %18, i32 %23, i32 1, i32 %12 ; [#uses=1]
+ %32 = load i32* %31, align 4 ; [#uses=1]
+ %33 = icmp ult i32 %30, %32 ; [#uses=1]
+ br i1 %33, label %bb17, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %34 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %18, i32 %23, i32 2, i32 %14 ; [#uses=1]
+ %35 = load i32* %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %18, i32 %19, i32 1, i32 %14 ; [#uses=1]
+ %37 = load i32* %36, align 4 ; [#uses=1]
+ %38 = icmp ult i32 %35, %37 ; [#uses=1]
+ br i1 %38, label %bb17, label %_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+
+_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit: ; preds = %bb1.i
+ %39 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %18, i32 %19, i32 2, i32 %14 ; [#uses=1]
+ %40 = load i32* %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %18, i32 %23, i32 1, i32 %14 ; [#uses=1]
+ %42 = load i32* %41, align 4 ; [#uses=1]
+ %phitmp = icmp ult i32 %40, %42 ; [#uses=1]
+ br i1 %phitmp, label %bb17, label %bb15
+
+bb15: ; preds = %_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+ %43 = load %struct..0btMultiSapOverlapFilterCallback** %15, align 4 ; [#uses=2]
+ %44 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %43, i32 0, i32 0, i32 0 ; [#uses=1]
+ %45 = load i32 (...)*** %44, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds i32 (...)** %45, i32 3 ; [#uses=1]
+ %47 = load i32 (...)** %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %18, i32 %19, i32 0 ; [#uses=2]
+ %49 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %18, i32 %23, i32 0 ; [#uses=2]
+ %50 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %43, i32 0, i32 0 ; [#uses=1]
+ %51 = bitcast i32 (...)* %47 to i8* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %52 = tail call i8* %51(%struct.btActionInterface* %50, %struct.btBroadphaseProxy* %49, %struct.btBroadphaseProxy* %48, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ %53 = load %struct.btActionInterface** %16, align 4 ; [#uses=3]
+ %54 = icmp eq %struct.btActionInterface* %53, null ; [#uses=1]
+ br i1 %54, label %bb17, label %bb16
+
+bb16: ; preds = %bb15
+ %55 = getelementptr inbounds %struct.btActionInterface* %53, i32 0, i32 0 ; [#uses=1]
+ %56 = load i32 (...)*** %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds i32 (...)** %56, i32 3 ; [#uses=1]
+ %58 = load i32 (...)** %57, align 4 ; [#uses=1]
+ %59 = bitcast i32 (...)* %58 to i8* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %60 = tail call i8* %59(%struct.btActionInterface* %53, %struct.btBroadphaseProxy* %49, %struct.btBroadphaseProxy* %48, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb15, %_ZN20btAxisSweep3InternalIjE13testOverlap2DEPKNS0_6HandleES3_ii.exit, %bb1.i, %bb.i, %bb6, %bb1
+ %61 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %18, i32 %19, i32 1, i32 %axis ; [#uses=2]
+ %62 = load i32* %61, align 4 ; [#uses=1]
+ %63 = add i32 %62, 1 ; [#uses=1]
+ store i32 %63, i32* %61, align 4
+ br label %bb19
+
+bb18: ; preds = %bb
+ %64 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %18, i32 %19, i32 2, i32 %axis ; [#uses=2]
+ %65 = load i32* %64, align 4 ; [#uses=1]
+ %66 = add i32 %65, 1 ; [#uses=1]
+ store i32 %66, i32* %64, align 4
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb17
+ %67 = load i32* %17, align 4 ; [#uses=1]
+ %68 = add i32 %67, -1 ; [#uses=1]
+ store i32 %68, i32* %17, align 4
+ %69 = load i32* %scevgep30, align 4 ; [#uses=2]
+ %70 = load i32* %scevgep36, align 4 ; [#uses=1]
+ %71 = load i32* %scevgep3435, align 4 ; [#uses=1]
+ %72 = load i32* %scevgep31, align 4 ; [#uses=1]
+ store i32 %71, i32* %scevgep30, align 4
+ store i32 %72, i32* %scevgep36, align 4
+ store i32 %69, i32* %scevgep3435, align 4
+ store i32 %70, i32* %scevgep31, align 4
+ %73 = load i32* %scevgep28, align 4 ; [#uses=1]
+ %74 = icmp ult i32 %69, %73 ; [#uses=1]
+ br i1 %74, label %bb19.bb_crit_edge, label %return
+
+bb19.bb_crit_edge: ; preds = %bb19
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ %.pre = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %2, align 4 ; [#uses=1]
+ br label %bb
+
+return: ; preds = %bb19, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjE12updateHandleEjRK9btVector3S3_P12btDispatcher(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, i32 %handle, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, %struct.btActionInterface* %dispatcher) align 2 {
+bb.nph:
+ %min = alloca [3 x i32], align 4 ; [#uses=2]
+ %max = alloca [3 x i32], align 4 ; [#uses=2]
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %1 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds [3 x i32]* %min, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK20btAxisSweep3InternalIjE8quantizeEPjRK9btVector3i(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32* %2, %struct.btQuadWord* %aabbMin, i32 0) nounwind
+ %3 = getelementptr inbounds [3 x i32]* %max, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK20btAxisSweep3InternalIjE8quantizeEPjRK9btVector3i(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32* %3, %struct.btQuadWord* %aabbMax, i32 1) nounwind
+ br label %bb
+
+bb: ; preds = %bb8, %bb.nph
+ %4 = phi i32 [ 0, %bb.nph ], [ %22, %bb8 ] ; [#uses=10]
+ %scevgep = getelementptr [3 x i32]* %min, i32 0, i32 %4 ; [#uses=1]
+ %scevgep12 = getelementptr [3 x i32]* %max, i32 0, i32 %4 ; [#uses=1]
+ %scevgep13 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %1, i32 %handle, i32 1, i32 %4 ; [#uses=1]
+ %scevgep14 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %1, i32 %handle, i32 2, i32 %4 ; [#uses=1]
+ %scevgep15 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 %4 ; [#uses=2]
+ %5 = load i32* %scevgep13, align 4 ; [#uses=3]
+ %6 = load i32* %scevgep14, align 4 ; [#uses=4]
+ %7 = load i32* %scevgep, align 4 ; [#uses=2]
+ %8 = load %struct.CONTACT_KEY_TOKEN** %scevgep15, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %5, i32 0 ; [#uses=2]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = sub nsw i32 %7, %10 ; [#uses=2]
+ %12 = load i32* %scevgep12, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %6, i32 0 ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=1]
+ %15 = sub nsw i32 %12, %14 ; [#uses=2]
+ store i32 %7, i32* %9, align 4
+ %16 = load %struct.CONTACT_KEY_TOKEN** %scevgep15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %16, i32 %6, i32 0 ; [#uses=1]
+ store i32 %12, i32* %17, align 4
+ %18 = icmp slt i32 %11, 0 ; [#uses=1]
+ br i1 %18, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ call void @_ZN20btAxisSweep3InternalIjE11sortMinDownEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 %4, i32 %5, %struct.btActionInterface* %dispatcher, i8 zeroext 1)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %19 = icmp sgt i32 %15, 0 ; [#uses=1]
+ br i1 %19, label %bb3, label %bb4
+
+bb3: ; preds = %bb2
+ call void @_ZN20btAxisSweep3InternalIjE9sortMaxUpEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 %4, i32 %6, %struct.btActionInterface* %dispatcher, i8 zeroext 1)
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %20 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %20, label %bb5, label %bb6
+
+bb5: ; preds = %bb4
+ call void @_ZN20btAxisSweep3InternalIjE9sortMinUpEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 %4, i32 %5, %struct.btActionInterface* %dispatcher, i8 zeroext 1)
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %21 = icmp slt i32 %15, 0 ; [#uses=1]
+ br i1 %21, label %bb7, label %bb8
+
+bb7: ; preds = %bb6
+ call void @_ZN20btAxisSweep3InternalIjE11sortMaxDownEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 %4, i32 %6, %struct.btActionInterface* %dispatcher, i8 zeroext 1)
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb6
+ %22 = add nsw i32 %4, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %22, 3 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb8
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, %struct.btBroadphaseProxy* nocapture %proxy, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 4 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ tail call void @_ZN20btAxisSweep3InternalIjE12updateHandleEjRK9btVector3S3_P12btDispatcher(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 %25, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %dispatcher)
+ %26 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 16 ; [#uses=1]
+ %27 = load %struct.btDbvtBroadphase** %26, align 4 ; [#uses=3]
+ %28 = icmp eq %struct.btDbvtBroadphase* %27, null ; [#uses=1]
+ br i1 %28, label %return, label %bb
+
+bb: ; preds = %entry
+ %29 = getelementptr inbounds %struct.btDbvtBroadphase* %27, i32 0, i32 0, i32 0 ; [#uses=1]
+ %30 = load i32 (...)*** %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds i32 (...)** %30, i32 4 ; [#uses=1]
+ %32 = load i32 (...)** %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 5, i32 0, i32 2 ; [#uses=1]
+ %34 = bitcast float* %33 to %struct.btBroadphaseProxy** ; [#uses=1]
+ %35 = load %struct.btBroadphaseProxy** %34, align 4 ; [#uses=1]
+ %36 = bitcast i32 (...)* %32 to void (%struct.btDbvtBroadphase*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %36(%struct.btDbvtBroadphase* %27, %struct.btBroadphaseProxy* %35, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %dispatcher)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZN20btAxisSweep3InternalIjE9addHandleERK9btVector3S3_PvssP12btDispatcherS4_(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, i8* %pOwner, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask, %struct.btActionInterface* %dispatcher, i8* %multiSapProxy) align 2 {
+bb2:
+ %min = alloca [3 x i32], align 4 ; [#uses=3]
+ %max = alloca [3 x i32], align 4 ; [#uses=3]
+ %0 = getelementptr inbounds [3 x i32]* %min, i32 0, i32 0 ; [#uses=2]
+ call void @_ZNK20btAxisSweep3InternalIjE8quantizeEPjRK9btVector3i(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32* %0, %struct.btQuadWord* %aabbMin, i32 0) nounwind
+ %1 = getelementptr inbounds [3 x i32]* %max, i32 0, i32 0 ; [#uses=2]
+ call void @_ZNK20btAxisSweep3InternalIjE8quantizeEPjRK9btVector3i(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32* %1, %struct.btQuadWord* %aabbMax, i32 1) nounwind
+ %2 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 9 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=24]
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=4]
+ %5 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %4, align 4 ; [#uses=16]
+ %6 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 1, i32 0 ; [#uses=3]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ store i32 %7, i32* %2, align 4
+ %8 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 6 ; [#uses=3]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %10 = add i32 %9, 1 ; [#uses=1]
+ store i32 %10, i32* %8, align 4
+ %11 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 0, i32 4 ; [#uses=1]
+ store i32 %3, i32* %11, align 4
+ %12 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 0, i32 0 ; [#uses=1]
+ store i8* %pOwner, i8** %12, align 4
+ %13 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 0, i32 1 ; [#uses=1]
+ store i16 %collisionFilterGroup, i16* %13, align 4
+ %14 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 0, i32 2 ; [#uses=1]
+ store i16 %collisionFilterMask, i16* %14, align 2
+ %15 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 0, i32 3 ; [#uses=1]
+ store i8* %multiSapProxy, i8** %15, align 4
+ %16 = load i32* %8, align 4 ; [#uses=1]
+ %17 = shl i32 %16, 1 ; [#uses=11]
+ %18 = or i32 %17, 1 ; [#uses=6]
+ %19 = add i32 %17, -1 ; [#uses=15]
+ %scevgep8 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 0 ; [#uses=5]
+ %scevgep10 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 2, i32 0 ; [#uses=1]
+ %20 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %4, align 4 ; [#uses=1]
+ %scevgep6 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %20, i32 0, i32 2, i32 0 ; [#uses=2]
+ %21 = load i32* %scevgep6, align 4 ; [#uses=1]
+ %22 = add i32 %21, 2 ; [#uses=1]
+ store i32 %22, i32* %scevgep6, align 4
+ %23 = load %struct.CONTACT_KEY_TOKEN** %scevgep8, align 4 ; [#uses=4]
+ %24 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %23, i32 %19, i32 0 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %23, i32 %19, i32 1 ; [#uses=1]
+ %27 = load i32* %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %23, i32 %18, i32 0 ; [#uses=1]
+ store i32 %25, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %23, i32 %18, i32 1 ; [#uses=1]
+ store i32 %27, i32* %29, align 4
+ %30 = load %struct.CONTACT_KEY_TOKEN** %scevgep8, align 4 ; [#uses=1]
+ %31 = load i32* %0, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %30, i32 %19, i32 0 ; [#uses=1]
+ store i32 %31, i32* %32, align 4
+ %33 = load %struct.CONTACT_KEY_TOKEN** %scevgep8, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %33, i32 %19, i32 1 ; [#uses=1]
+ store i32 %3, i32* %34, align 4
+ %35 = load %struct.CONTACT_KEY_TOKEN** %scevgep8, align 4 ; [#uses=1]
+ %36 = load i32* %1, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %35, i32 %17, i32 0 ; [#uses=1]
+ store i32 %36, i32* %37, align 4
+ %38 = load %struct.CONTACT_KEY_TOKEN** %scevgep8, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %38, i32 %17, i32 1 ; [#uses=1]
+ store i32 %3, i32* %39, align 4
+ store i32 %19, i32* %6, align 4
+ store i32 %17, i32* %scevgep10, align 4
+ %scevgep.1 = getelementptr [3 x i32]* %min, i32 0, i32 1 ; [#uses=1]
+ %scevgep5.1 = getelementptr [3 x i32]* %max, i32 0, i32 1 ; [#uses=1]
+ %scevgep8.1 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 1 ; [#uses=5]
+ %scevgep9.1 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 1, i32 1 ; [#uses=1]
+ %scevgep10.1 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 2, i32 1 ; [#uses=1]
+ %40 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %4, align 4 ; [#uses=1]
+ %scevgep6.1 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %40, i32 0, i32 2, i32 1 ; [#uses=2]
+ %41 = load i32* %scevgep6.1, align 4 ; [#uses=1]
+ %42 = add i32 %41, 2 ; [#uses=1]
+ store i32 %42, i32* %scevgep6.1, align 4
+ %43 = load %struct.CONTACT_KEY_TOKEN** %scevgep8.1, align 4 ; [#uses=4]
+ %44 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %43, i32 %19, i32 0 ; [#uses=1]
+ %45 = load i32* %44, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %43, i32 %19, i32 1 ; [#uses=1]
+ %47 = load i32* %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %43, i32 %18, i32 0 ; [#uses=1]
+ store i32 %45, i32* %48, align 4
+ %49 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %43, i32 %18, i32 1 ; [#uses=1]
+ store i32 %47, i32* %49, align 4
+ %50 = load %struct.CONTACT_KEY_TOKEN** %scevgep8.1, align 4 ; [#uses=1]
+ %51 = load i32* %scevgep.1, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %50, i32 %19, i32 0 ; [#uses=1]
+ store i32 %51, i32* %52, align 4
+ %53 = load %struct.CONTACT_KEY_TOKEN** %scevgep8.1, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %53, i32 %19, i32 1 ; [#uses=1]
+ store i32 %3, i32* %54, align 4
+ %55 = load %struct.CONTACT_KEY_TOKEN** %scevgep8.1, align 4 ; [#uses=1]
+ %56 = load i32* %scevgep5.1, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %55, i32 %17, i32 0 ; [#uses=1]
+ store i32 %56, i32* %57, align 4
+ %58 = load %struct.CONTACT_KEY_TOKEN** %scevgep8.1, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %58, i32 %17, i32 1 ; [#uses=1]
+ store i32 %3, i32* %59, align 4
+ store i32 %19, i32* %scevgep9.1, align 4
+ store i32 %17, i32* %scevgep10.1, align 4
+ %scevgep.2 = getelementptr [3 x i32]* %min, i32 0, i32 2 ; [#uses=1]
+ %scevgep5.2 = getelementptr [3 x i32]* %max, i32 0, i32 2 ; [#uses=1]
+ %scevgep8.2 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 2 ; [#uses=5]
+ %scevgep9.2 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 1, i32 2 ; [#uses=1]
+ %scevgep10.2 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 2, i32 2 ; [#uses=1]
+ %60 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %4, align 4 ; [#uses=1]
+ %scevgep6.2 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %60, i32 0, i32 2, i32 2 ; [#uses=2]
+ %61 = load i32* %scevgep6.2, align 4 ; [#uses=1]
+ %62 = add i32 %61, 2 ; [#uses=1]
+ store i32 %62, i32* %scevgep6.2, align 4
+ %63 = load %struct.CONTACT_KEY_TOKEN** %scevgep8.2, align 4 ; [#uses=4]
+ %64 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %63, i32 %19, i32 0 ; [#uses=1]
+ %65 = load i32* %64, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %63, i32 %19, i32 1 ; [#uses=1]
+ %67 = load i32* %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %63, i32 %18, i32 0 ; [#uses=1]
+ store i32 %65, i32* %68, align 4
+ %69 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %63, i32 %18, i32 1 ; [#uses=1]
+ store i32 %67, i32* %69, align 4
+ %70 = load %struct.CONTACT_KEY_TOKEN** %scevgep8.2, align 4 ; [#uses=1]
+ %71 = load i32* %scevgep.2, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %70, i32 %19, i32 0 ; [#uses=1]
+ store i32 %71, i32* %72, align 4
+ %73 = load %struct.CONTACT_KEY_TOKEN** %scevgep8.2, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %73, i32 %19, i32 1 ; [#uses=1]
+ store i32 %3, i32* %74, align 4
+ %75 = load %struct.CONTACT_KEY_TOKEN** %scevgep8.2, align 4 ; [#uses=1]
+ %76 = load i32* %scevgep5.2, align 4 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %75, i32 %17, i32 0 ; [#uses=1]
+ store i32 %76, i32* %77, align 4
+ %78 = load %struct.CONTACT_KEY_TOKEN** %scevgep8.2, align 4 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %78, i32 %17, i32 1 ; [#uses=1]
+ store i32 %3, i32* %79, align 4
+ store i32 %19, i32* %scevgep9.2, align 4
+ store i32 %17, i32* %scevgep10.2, align 4
+ %80 = load i32* %6, align 4 ; [#uses=1]
+ call void @_ZN20btAxisSweep3InternalIjE11sortMinDownEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 %80, %struct.btActionInterface* %dispatcher, i8 zeroext 0)
+ %81 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 2, i32 0 ; [#uses=1]
+ %82 = load i32* %81, align 4 ; [#uses=1]
+ call void @_ZN20btAxisSweep3InternalIjE11sortMaxDownEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 %82, %struct.btActionInterface* %dispatcher, i8 zeroext 0)
+ %83 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 1, i32 1 ; [#uses=1]
+ %84 = load i32* %83, align 4 ; [#uses=1]
+ call void @_ZN20btAxisSweep3InternalIjE11sortMinDownEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 1, i32 %84, %struct.btActionInterface* %dispatcher, i8 zeroext 0)
+ %85 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 2, i32 1 ; [#uses=1]
+ %86 = load i32* %85, align 4 ; [#uses=1]
+ call void @_ZN20btAxisSweep3InternalIjE11sortMaxDownEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 1, i32 %86, %struct.btActionInterface* %dispatcher, i8 zeroext 0)
+ %87 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 1, i32 2 ; [#uses=1]
+ %88 = load i32* %87, align 4 ; [#uses=1]
+ call void @_ZN20btAxisSweep3InternalIjE11sortMinDownEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 2, i32 %88, %struct.btActionInterface* %dispatcher, i8 zeroext 1)
+ %89 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %5, i32 %3, i32 2, i32 2 ; [#uses=1]
+ %90 = load i32* %89, align 4 ; [#uses=1]
+ call void @_ZN20btAxisSweep3InternalIjE11sortMaxDownEijP12btDispatcherb(%"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 2, i32 %90, %struct.btActionInterface* %dispatcher, i8 zeroext 1)
+ ret i32 %3
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btBroadphaseProxy* @_ZN20btAxisSweep3InternalIjE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4_(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, i32 %shapeType, i8* %userPtr, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask, %struct.btActionInterface* %dispatcher, i8* %multiSapProxy) align 2 {
+entry:
+ %0 = tail call i32 @_ZN20btAxisSweep3InternalIjE9addHandleERK9btVector3S3_PvssP12btDispatcherS4_(%"struct.btAxisSweep3Internal<unsigned int>"* %this, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, i8* %userPtr, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask, %struct.btActionInterface* %dispatcher, i8* %multiSapProxy) ; [#uses=2]
+ %1 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %2 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %1, align 4 ; [#uses=2]
+ %3 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 16 ; [#uses=1]
+ %4 = load %struct.btDbvtBroadphase** %3, align 4 ; [#uses=3]
+ %5 = icmp eq %struct.btDbvtBroadphase* %4, null ; [#uses=1]
+ br i1 %5, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btDbvtBroadphase* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 2 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to %struct.btBroadphaseProxy* (%struct.btDbvtBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, i32, i8*, i16, i16, %struct.btActionInterface*, i8*)* ; [#uses=1]
+ %11 = tail call %struct.btBroadphaseProxy* %10(%struct.btDbvtBroadphase* %4, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, i32 %shapeType, i8* %userPtr, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask, %struct.btActionInterface* %dispatcher, i8* null) ; [#uses=1]
+ %12 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %2, i32 %0, i32 3 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %11, %struct.btBroadphaseProxy** %12, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %13 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %2, i32 %0, i32 0 ; [#uses=1]
+ ret %struct.btBroadphaseProxy* %13
+}
+
+; [#uses=11]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* nocapture byval align 4 %CompareFunc, i32 %lo, i32 %hi) nounwind align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %1 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 3 ; [#uses=3]
+ %3 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=3]
+ %4 = add nsw i32 %hi, %lo ; [#uses=1]
+ %5 = sdiv i32 %4, 2 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 %5, i32 0 ; [#uses=1]
+ %7 = load %struct.btBroadphaseProxy** %6, align 4 ; [#uses=4]
+ %8 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 %5, i32 1 ; [#uses=1]
+ %9 = load %struct.btBroadphaseProxy** %8, align 4 ; [#uses=4]
+ %10 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 %5, i32 2 ; [#uses=1]
+ %11 = load %struct.btCollisionAlgorithm** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btBroadphaseProxy* %7, null ; [#uses=2]
+ %13 = icmp eq %struct.btBroadphaseProxy* %9, null ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btBroadphaseProxy* %9, i32 0, i32 4 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btBroadphaseProxy* %7, i32 0, i32 4 ; [#uses=2]
+ br label %bb1.outer
+
+bb1.outer: ; preds = %bb7, %entry
+ %i.0.ph = phi i32 [ %lo, %entry ], [ %i.1, %bb7 ] ; [#uses=1]
+ %j.1.ph = phi i32 [ %hi, %entry ], [ %j.2, %bb7 ] ; [#uses=1]
+ %16 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=8]
+ br label %bb1
+
+bb: ; preds = %_ZN29btBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit, %bb12.i, %bb11.i
+ %indvar.next42 = add i32 %indvar41, 1 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb, %bb1.outer
+ %indvar41 = phi i32 [ 0, %bb1.outer ], [ %indvar.next42, %bb ] ; [#uses=2]
+ %i.0 = add i32 %i.0.ph, %indvar41 ; [#uses=7]
+ %scevgep44 = getelementptr %struct.btBroadphasePair* %16, i32 %i.0, i32 2 ; [#uses=3]
+ %scevgep45 = getelementptr %struct.btBroadphasePair* %16, i32 %i.0, i32 1 ; [#uses=2]
+ %scevgep4647 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %i.0, i32 0 ; [#uses=2]
+ %17 = load %struct.btBroadphaseProxy** %scevgep4647, align 4 ; [#uses=4]
+ %18 = icmp eq %struct.btBroadphaseProxy* %17, null ; [#uses=1]
+ br i1 %18, label %bb2.i, label %bb.i
+
+bb.i: ; preds = %bb1
+ %19 = getelementptr inbounds %struct.btBroadphaseProxy* %17, i32 0, i32 4 ; [#uses=1]
+ %20 = load i32* %19, align 4 ; [#uses=1]
+ br label %bb2.i
+
+bb2.i: ; preds = %bb.i, %bb1
+ %iftmp.37.0.i = phi i32 [ %20, %bb.i ], [ -1, %bb1 ] ; [#uses=1]
+ br i1 %12, label %bb5.i, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %21 = load i32* %15, align 4 ; [#uses=1]
+ br label %bb5.i
+
+bb5.i: ; preds = %bb3.i, %bb2.i
+ %iftmp.38.0.i = phi i32 [ %21, %bb3.i ], [ -1, %bb2.i ] ; [#uses=1]
+ %22 = load %struct.btBroadphaseProxy** %scevgep45, align 4 ; [#uses=4]
+ %23 = icmp eq %struct.btBroadphaseProxy* %22, null ; [#uses=1]
+ br i1 %23, label %bb8.i, label %bb6.i
+
+bb6.i: ; preds = %bb5.i
+ %24 = getelementptr inbounds %struct.btBroadphaseProxy* %22, i32 0, i32 4 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ br label %bb8.i
+
+bb8.i: ; preds = %bb6.i, %bb5.i
+ %iftmp.39.0.i = phi i32 [ %25, %bb6.i ], [ -1, %bb5.i ] ; [#uses=1]
+ br i1 %13, label %bb11.i, label %bb9.i
+
+bb9.i: ; preds = %bb8.i
+ %26 = load i32* %14, align 4 ; [#uses=1]
+ br label %bb11.i
+
+bb11.i: ; preds = %bb9.i, %bb8.i
+ %iftmp.40.0.i = phi i32 [ %26, %bb9.i ], [ -1, %bb8.i ] ; [#uses=1]
+ %27 = icmp sgt i32 %iftmp.37.0.i, %iftmp.38.0.i ; [#uses=1]
+ br i1 %27, label %bb, label %bb12.i
+
+bb12.i: ; preds = %bb11.i
+ %28 = icmp eq %struct.btBroadphaseProxy* %17, %7 ; [#uses=2]
+ %29 = icmp sgt i32 %iftmp.39.0.i, %iftmp.40.0.i ; [#uses=1]
+ %30 = and i1 %28, %29 ; [#uses=1]
+ br i1 %30, label %bb, label %bb15.i
+
+bb15.i: ; preds = %bb12.i
+ %31 = icmp eq %struct.btBroadphaseProxy* %22, %9 ; [#uses=1]
+ %or.cond.i = and i1 %28, %31 ; [#uses=1]
+ br i1 %or.cond.i, label %_ZN29btBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit, label %bb3
+
+_ZN29btBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit: ; preds = %bb15.i
+ %32 = load %struct.btCollisionAlgorithm** %scevgep44, align 4 ; [#uses=1]
+ %phitmp = icmp ugt %struct.btCollisionAlgorithm* %32, %11 ; [#uses=1]
+ br i1 %phitmp, label %bb, label %bb3
+
+bb2: ; preds = %_ZN29btBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit32, %bb12.i25, %bb11.i24
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %_ZN29btBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit, %bb15.i
+ %indvar = phi i32 [ %indvar.next, %bb2 ], [ 0, %bb15.i ], [ 0, %_ZN29btBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit ] ; [#uses=2]
+ %j.0 = sub i32 %j.1.ph, %indvar ; [#uses=11]
+ %scevgep = getelementptr %struct.btBroadphasePair* %16, i32 %j.0, i32 2 ; [#uses=2]
+ %scevgep38 = getelementptr %struct.btBroadphasePair* %16, i32 %j.0, i32 1 ; [#uses=1]
+ %scevgep3940 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %j.0, i32 0 ; [#uses=1]
+ br i1 %12, label %bb2.i15, label %bb.i13
+
+bb.i13: ; preds = %bb3
+ %33 = load i32* %15, align 4 ; [#uses=1]
+ br label %bb2.i15
+
+bb2.i15: ; preds = %bb.i13, %bb3
+ %iftmp.37.0.i14 = phi i32 [ %33, %bb.i13 ], [ -1, %bb3 ] ; [#uses=1]
+ %34 = load %struct.btBroadphaseProxy** %scevgep3940, align 4 ; [#uses=4]
+ %35 = icmp eq %struct.btBroadphaseProxy* %34, null ; [#uses=1]
+ br i1 %35, label %bb5.i18, label %bb3.i16
+
+bb3.i16: ; preds = %bb2.i15
+ %36 = getelementptr inbounds %struct.btBroadphaseProxy* %34, i32 0, i32 4 ; [#uses=1]
+ %37 = load i32* %36, align 4 ; [#uses=1]
+ br label %bb5.i18
+
+bb5.i18: ; preds = %bb3.i16, %bb2.i15
+ %iftmp.38.0.i17 = phi i32 [ %37, %bb3.i16 ], [ -1, %bb2.i15 ] ; [#uses=1]
+ br i1 %13, label %bb8.i21, label %bb6.i19
+
+bb6.i19: ; preds = %bb5.i18
+ %38 = load i32* %14, align 4 ; [#uses=1]
+ br label %bb8.i21
+
+bb8.i21: ; preds = %bb6.i19, %bb5.i18
+ %iftmp.39.0.i20 = phi i32 [ %38, %bb6.i19 ], [ -1, %bb5.i18 ] ; [#uses=1]
+ %39 = load %struct.btBroadphaseProxy** %scevgep38, align 4 ; [#uses=4]
+ %40 = icmp eq %struct.btBroadphaseProxy* %39, null ; [#uses=1]
+ br i1 %40, label %bb11.i24, label %bb9.i22
+
+bb9.i22: ; preds = %bb8.i21
+ %41 = getelementptr inbounds %struct.btBroadphaseProxy* %39, i32 0, i32 4 ; [#uses=1]
+ %42 = load i32* %41, align 4 ; [#uses=1]
+ br label %bb11.i24
+
+bb11.i24: ; preds = %bb9.i22, %bb8.i21
+ %iftmp.40.0.i23 = phi i32 [ %42, %bb9.i22 ], [ -1, %bb8.i21 ] ; [#uses=1]
+ %43 = icmp sgt i32 %iftmp.37.0.i14, %iftmp.38.0.i17 ; [#uses=1]
+ br i1 %43, label %bb2, label %bb12.i25
+
+bb12.i25: ; preds = %bb11.i24
+ %44 = icmp eq %struct.btBroadphaseProxy* %7, %34 ; [#uses=2]
+ %45 = icmp sgt i32 %iftmp.39.0.i20, %iftmp.40.0.i23 ; [#uses=1]
+ %46 = and i1 %44, %45 ; [#uses=1]
+ br i1 %46, label %bb2, label %bb15.i27
+
+bb15.i27: ; preds = %bb12.i25
+ %47 = icmp eq %struct.btBroadphaseProxy* %9, %39 ; [#uses=1]
+ %or.cond.i26 = and i1 %44, %47 ; [#uses=1]
+ br i1 %or.cond.i26, label %_ZN29btBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit32, label %bb5
+
+_ZN29btBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit32: ; preds = %bb15.i27
+ %48 = load %struct.btCollisionAlgorithm** %scevgep, align 4 ; [#uses=1]
+ %phitmp34 = icmp ugt %struct.btCollisionAlgorithm* %11, %48 ; [#uses=1]
+ br i1 %phitmp34, label %bb2, label %bb5
+
+bb5: ; preds = %_ZN29btBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit32, %bb15.i27
+ %49 = icmp sgt i32 %i.0, %j.0 ; [#uses=1]
+ br i1 %49, label %bb7, label %bb6
+
+bb6: ; preds = %bb5
+ %50 = load %struct.btCollisionAlgorithm** %scevgep44, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %i.0, i32 3, i32 0 ; [#uses=2]
+ %52 = load i8** %51, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %34, %struct.btBroadphaseProxy** %scevgep4647, align 4
+ store %struct.btBroadphaseProxy* %39, %struct.btBroadphaseProxy** %scevgep45, align 4
+ %53 = load %struct.btCollisionAlgorithm** %scevgep, align 4 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %53, %struct.btCollisionAlgorithm** %scevgep44, align 4
+ %54 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %j.0, i32 3, i32 0 ; [#uses=1]
+ %55 = load i8** %54, align 4 ; [#uses=1]
+ store i8* %55, i8** %51, align 4
+ %56 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=4]
+ %57 = getelementptr inbounds %struct.btBroadphasePair* %56, i32 %j.0, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %17, %struct.btBroadphaseProxy** %57, align 4
+ %58 = getelementptr inbounds %struct.btBroadphasePair* %56, i32 %j.0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %22, %struct.btBroadphaseProxy** %58, align 4
+ %59 = getelementptr inbounds %struct.btBroadphasePair* %56, i32 %j.0, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %50, %struct.btCollisionAlgorithm** %59, align 4
+ %60 = getelementptr inbounds %struct.btBroadphasePair* %56, i32 %j.0, i32 3, i32 0 ; [#uses=1]
+ store i8* %52, i8** %60, align 4
+ %61 = add nsw i32 %i.0, 1 ; [#uses=1]
+ %62 = add nsw i32 %j.0, -1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5
+ %i.1 = phi i32 [ %61, %bb6 ], [ %i.0, %bb5 ] ; [#uses=4]
+ %j.2 = phi i32 [ %62, %bb6 ], [ %j.0, %bb5 ] ; [#uses=4]
+ %63 = icmp sgt i32 %i.1, %j.2 ; [#uses=1]
+ br i1 %63, label %bb8, label %bb1.outer
+
+bb8: ; preds = %bb7
+ %64 = icmp sgt i32 %j.2, %lo ; [#uses=1]
+ br i1 %64, label %bb9, label %bb10
+
+bb9: ; preds = %bb8
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %1, i32 %lo, i32 %j.2)
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb8
+ %65 = icmp slt i32 %i.1, %hi ; [#uses=1]
+ br i1 %65, label %bb11, label %return
+
+bb11: ; preds = %bb10
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 %i.1, i32 %hi)
+ ret void
+
+return: ; preds = %bb10
+ ret void
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, i32 %axis, i16 zeroext %edge, %struct.btActionInterface* nocapture %unnamed_arg, i8 zeroext %updateOverlaps) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 %axis ; [#uses=1]
+ %1 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %0, align 4 ; [#uses=7]
+ %2 = zext i16 %edge to i32 ; [#uses=5]
+ %.sum = add i32 %2, -1 ; [#uses=2]
+ %3 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %2, i32 1 ; [#uses=1]
+ %4 = load i16* %3, align 2 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=2]
+ %6 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %5, align 4 ; [#uses=7]
+ %7 = zext i16 %4 to i32 ; [#uses=6]
+ %8 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %2, i32 0 ; [#uses=1]
+ %9 = load i16* %8, align 2 ; [#uses=1]
+ %10 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %.sum, i32 0 ; [#uses=1]
+ %11 = load i16* %10, align 2 ; [#uses=1]
+ %12 = icmp ult i16 %9, %11 ; [#uses=1]
+ br i1 %12, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %13 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %6, i32 %7, i32 1, i32 %axis ; [#uses=2]
+ %14 = shl i32 1, %axis ; [#uses=1]
+ %15 = and i32 %14, 3 ; [#uses=5]
+ %toBool2not = icmp eq i8 %updateOverlaps, 0 ; [#uses=1]
+ %16 = shl i32 1, %15 ; [#uses=1]
+ %17 = and i32 %16, 3 ; [#uses=4]
+ %18 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %6, i32 %7, i32 2, i32 %15 ; [#uses=1]
+ %19 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %6, i32 %7, i32 1, i32 %15 ; [#uses=1]
+ %20 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %6, i32 %7, i32 2, i32 %17 ; [#uses=1]
+ %21 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %6, i32 %7, i32 1, i32 %17 ; [#uses=1]
+ %22 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 12 ; [#uses=1]
+ %23 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %6, i32 %7, i32 0 ; [#uses=2]
+ %24 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 13 ; [#uses=1]
+ %tmp27 = add i32 %2, -2 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb19.bb_crit_edge, %bb.nph
+ %25 = phi %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* [ %6, %bb.nph ], [ %.pre, %bb19.bb_crit_edge ] ; [#uses=7]
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb19.bb_crit_edge ] ; [#uses=4]
+ %tmp28 = sub i32 %tmp27, %indvar ; [#uses=1]
+ %scevgep29 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp28, i32 0 ; [#uses=1]
+ %tmp30 = sub i32 %2, %indvar ; [#uses=2]
+ %scevgep31 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp30, i32 0 ; [#uses=3]
+ %scevgep32 = getelementptr i16* %scevgep31, i32 -1 ; [#uses=3]
+ %tmp34 = sub i32 %.sum, %indvar ; [#uses=1]
+ %scevgep3536 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp34, i32 0 ; [#uses=3]
+ %scevgep37 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp30, i32 1 ; [#uses=2]
+ %26 = load i16* %scevgep32, align 2 ; [#uses=1]
+ %27 = zext i16 %26 to i32 ; [#uses=7]
+ %28 = load i16* %scevgep3536, align 2 ; [#uses=1]
+ %29 = and i16 %28, 1 ; [#uses=1]
+ %30 = icmp eq i16 %29, 0 ; [#uses=1]
+ br i1 %30, label %bb18, label %bb1
+
+bb1: ; preds = %bb
+ br i1 %toBool2not, label %bb17, label %bb6
+
+bb6: ; preds = %bb1
+ %31 = load i16* %18, align 2 ; [#uses=1]
+ %32 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %25, i32 %27, i32 1, i32 %15 ; [#uses=1]
+ %33 = load i16* %32, align 2 ; [#uses=1]
+ %34 = icmp ult i16 %31, %33 ; [#uses=1]
+ br i1 %34, label %bb17, label %bb.i
+
+bb.i: ; preds = %bb6
+ %35 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %25, i32 %27, i32 2, i32 %15 ; [#uses=1]
+ %36 = load i16* %35, align 2 ; [#uses=1]
+ %37 = load i16* %19, align 2 ; [#uses=1]
+ %38 = icmp ult i16 %36, %37 ; [#uses=1]
+ br i1 %38, label %bb17, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %39 = load i16* %20, align 2 ; [#uses=1]
+ %40 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %25, i32 %27, i32 1, i32 %17 ; [#uses=1]
+ %41 = load i16* %40, align 2 ; [#uses=1]
+ %42 = icmp ult i16 %39, %41 ; [#uses=1]
+ br i1 %42, label %bb17, label %_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+
+_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit: ; preds = %bb1.i
+ %43 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %25, i32 %27, i32 2, i32 %17 ; [#uses=1]
+ %44 = load i16* %43, align 2 ; [#uses=1]
+ %45 = load i16* %21, align 2 ; [#uses=1]
+ %phitmp = icmp ult i16 %44, %45 ; [#uses=1]
+ br i1 %phitmp, label %bb17, label %bb15
+
+bb15: ; preds = %_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+ %46 = load %struct..0btMultiSapOverlapFilterCallback** %22, align 4 ; [#uses=2]
+ %47 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %46, i32 0, i32 0, i32 0 ; [#uses=1]
+ %48 = load i32 (...)*** %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds i32 (...)** %48, i32 2 ; [#uses=1]
+ %50 = load i32 (...)** %49, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %25, i32 %27, i32 0 ; [#uses=2]
+ %52 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %46, i32 0, i32 0 ; [#uses=1]
+ %53 = bitcast i32 (...)* %50 to %struct.btBroadphasePair* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %54 = tail call %struct.btBroadphasePair* %53(%struct.btActionInterface* %52, %struct.btBroadphaseProxy* %23, %struct.btBroadphaseProxy* %51) ; [#uses=0]
+ %55 = load %struct.btActionInterface** %24, align 4 ; [#uses=3]
+ %56 = icmp eq %struct.btActionInterface* %55, null ; [#uses=1]
+ br i1 %56, label %bb17, label %bb16
+
+bb16: ; preds = %bb15
+ %57 = getelementptr inbounds %struct.btActionInterface* %55, i32 0, i32 0 ; [#uses=1]
+ %58 = load i32 (...)*** %57, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds i32 (...)** %58, i32 2 ; [#uses=1]
+ %60 = load i32 (...)** %59, align 4 ; [#uses=1]
+ %61 = bitcast i32 (...)* %60 to %struct.btBroadphasePair* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %62 = tail call %struct.btBroadphasePair* %61(%struct.btActionInterface* %55, %struct.btBroadphaseProxy* %23, %struct.btBroadphaseProxy* %51) ; [#uses=0]
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb15, %_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit, %bb1.i, %bb.i, %bb6, %bb1
+ %63 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %25, i32 %27, i32 2, i32 %axis ; [#uses=2]
+ %64 = load i16* %63, align 2 ; [#uses=1]
+ %65 = add i16 %64, 1 ; [#uses=1]
+ store i16 %65, i16* %63, align 2
+ br label %bb19
+
+bb18: ; preds = %bb
+ %66 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %25, i32 %27, i32 1, i32 %axis ; [#uses=2]
+ %67 = load i16* %66, align 2 ; [#uses=1]
+ %68 = add i16 %67, 1 ; [#uses=1]
+ store i16 %68, i16* %66, align 2
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb17
+ %69 = load i16* %13, align 2 ; [#uses=1]
+ %70 = add i16 %69, -1 ; [#uses=1]
+ store i16 %70, i16* %13, align 2
+ %71 = load i16* %scevgep31, align 2 ; [#uses=2]
+ %72 = load i16* %scevgep37, align 2 ; [#uses=1]
+ %73 = load i16* %scevgep3536, align 2 ; [#uses=1]
+ %74 = load i16* %scevgep32, align 2 ; [#uses=1]
+ store i16 %73, i16* %scevgep31, align 2
+ store i16 %74, i16* %scevgep37, align 2
+ store i16 %71, i16* %scevgep3536, align 2
+ store i16 %72, i16* %scevgep32, align 2
+ %75 = load i16* %scevgep29, align 2 ; [#uses=1]
+ %76 = icmp ult i16 %71, %75 ; [#uses=1]
+ br i1 %76, label %bb19.bb_crit_edge, label %return
+
+bb19.bb_crit_edge: ; preds = %bb19
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ %.pre = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %5, align 4 ; [#uses=1]
+ br label %bb
+
+return: ; preds = %bb19, %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItE9sortMaxUpEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, i32 %axis, i16 zeroext %edge, %struct.btActionInterface* nocapture %unnamed_arg, i8 zeroext %updateOverlaps) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 %axis ; [#uses=1]
+ %1 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %0, align 4 ; [#uses=5]
+ %2 = zext i16 %edge to i32 ; [#uses=3]
+ %3 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %2, i32 1 ; [#uses=1]
+ %4 = load i16* %3, align 2 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=2]
+ %6 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %5, align 4 ; [#uses=5]
+ %7 = zext i16 %4 to i32 ; [#uses=5]
+ %8 = shl i32 1, %axis ; [#uses=1]
+ %9 = and i32 %8, 3 ; [#uses=5]
+ %10 = shl i32 1, %9 ; [#uses=1]
+ %11 = and i32 %10, 3 ; [#uses=4]
+ %toBool2not = icmp eq i8 %updateOverlaps, 0 ; [#uses=1]
+ %12 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %6, i32 %7, i32 2, i32 %9 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %6, i32 %7, i32 1, i32 %9 ; [#uses=1]
+ %14 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %6, i32 %7, i32 2, i32 %11 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %6, i32 %7, i32 1, i32 %11 ; [#uses=1]
+ %16 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 12 ; [#uses=1]
+ %17 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 13 ; [#uses=1]
+ %18 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %6, i32 %7, i32 2, i32 %axis ; [#uses=2]
+ %tmp28 = add i32 %2, 1 ; [#uses=1]
+ br label %bb20
+
+bb: ; preds = %bb21
+ %19 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %5, align 4 ; [#uses=8]
+ %20 = zext i16 %70 to i32 ; [#uses=7]
+ %21 = and i16 %73, 1 ; [#uses=1]
+ %22 = icmp eq i16 %21, 0 ; [#uses=1]
+ br i1 %22, label %bb1, label %bb18
+
+bb1: ; preds = %bb
+ br i1 %toBool2not, label %bb17, label %bb6
+
+bb6: ; preds = %bb1
+ %23 = load i16* %12, align 2 ; [#uses=1]
+ %24 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %19, i32 %20, i32 1, i32 %9 ; [#uses=1]
+ %25 = load i16* %24, align 2 ; [#uses=1]
+ %26 = icmp ult i16 %23, %25 ; [#uses=1]
+ br i1 %26, label %bb17, label %bb.i
+
+bb.i: ; preds = %bb6
+ %27 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %19, i32 %20, i32 2, i32 %9 ; [#uses=1]
+ %28 = load i16* %27, align 2 ; [#uses=1]
+ %29 = load i16* %13, align 2 ; [#uses=1]
+ %30 = icmp ult i16 %28, %29 ; [#uses=1]
+ br i1 %30, label %bb17, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %31 = load i16* %14, align 2 ; [#uses=1]
+ %32 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %19, i32 %20, i32 1, i32 %11 ; [#uses=1]
+ %33 = load i16* %32, align 2 ; [#uses=1]
+ %34 = icmp ult i16 %31, %33 ; [#uses=1]
+ br i1 %34, label %bb17, label %_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+
+_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit: ; preds = %bb1.i
+ %35 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %19, i32 %20, i32 2, i32 %11 ; [#uses=1]
+ %36 = load i16* %35, align 2 ; [#uses=1]
+ %37 = load i16* %15, align 2 ; [#uses=1]
+ %phitmp = icmp ult i16 %36, %37 ; [#uses=1]
+ br i1 %phitmp, label %bb17, label %bb15
+
+bb15: ; preds = %_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+ %38 = load i16* %scevgep27, align 2 ; [#uses=1]
+ %39 = zext i16 %38 to i32 ; [#uses=1]
+ %40 = load %struct..0btMultiSapOverlapFilterCallback** %16, align 4 ; [#uses=2]
+ %41 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %40, i32 0, i32 0, i32 0 ; [#uses=1]
+ %42 = load i32 (...)*** %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds i32 (...)** %42, i32 2 ; [#uses=1]
+ %44 = load i32 (...)** %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %19, i32 %20, i32 0 ; [#uses=2]
+ %46 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %19, i32 %39, i32 0 ; [#uses=2]
+ %47 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %40, i32 0, i32 0 ; [#uses=1]
+ %48 = bitcast i32 (...)* %44 to %struct.btBroadphasePair* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %49 = tail call %struct.btBroadphasePair* %48(%struct.btActionInterface* %47, %struct.btBroadphaseProxy* %46, %struct.btBroadphaseProxy* %45) ; [#uses=0]
+ %50 = load %struct.btActionInterface** %17, align 4 ; [#uses=3]
+ %51 = icmp eq %struct.btActionInterface* %50, null ; [#uses=1]
+ br i1 %51, label %bb17, label %bb16
+
+bb16: ; preds = %bb15
+ %52 = getelementptr inbounds %struct.btActionInterface* %50, i32 0, i32 0 ; [#uses=1]
+ %53 = load i32 (...)*** %52, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds i32 (...)** %53, i32 2 ; [#uses=1]
+ %55 = load i32 (...)** %54, align 4 ; [#uses=1]
+ %56 = bitcast i32 (...)* %55 to %struct.btBroadphasePair* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %57 = tail call %struct.btBroadphasePair* %56(%struct.btActionInterface* %50, %struct.btBroadphaseProxy* %46, %struct.btBroadphaseProxy* %45) ; [#uses=0]
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb15, %_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit, %bb1.i, %bb.i, %bb6, %bb1
+ %58 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %19, i32 %20, i32 1, i32 %axis ; [#uses=2]
+ %59 = load i16* %58, align 2 ; [#uses=1]
+ %60 = add i16 %59, -1 ; [#uses=1]
+ store i16 %60, i16* %58, align 2
+ br label %bb19
+
+bb18: ; preds = %bb
+ %61 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %19, i32 %20, i32 2, i32 %axis ; [#uses=2]
+ %62 = load i16* %61, align 2 ; [#uses=1]
+ %63 = add i16 %62, -1 ; [#uses=1]
+ store i16 %63, i16* %61, align 2
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb17
+ %64 = load i16* %18, align 2 ; [#uses=1]
+ %65 = add i16 %64, 1 ; [#uses=1]
+ store i16 %65, i16* %18, align 2
+ %66 = load i16* %scevgep26, align 2 ; [#uses=1]
+ %67 = load i16* %scevgep27, align 2 ; [#uses=1]
+ %68 = load i16* %scevgep3031, align 2 ; [#uses=1]
+ %69 = load i16* %scevgep32, align 2 ; [#uses=1]
+ store i16 %68, i16* %scevgep26, align 2
+ store i16 %69, i16* %scevgep27, align 2
+ store i16 %66, i16* %scevgep3031, align 2
+ store i16 %67, i16* %scevgep32, align 2
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb20
+
+bb20: ; preds = %bb19, %entry
+ %indvar = phi i32 [ %indvar.next, %bb19 ], [ 0, %entry ] ; [#uses=3]
+ %tmp25 = add i32 %2, %indvar ; [#uses=2]
+ %scevgep26 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp25, i32 0 ; [#uses=3]
+ %scevgep27 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp25, i32 1 ; [#uses=3]
+ %tmp29 = add i32 %tmp28, %indvar ; [#uses=2]
+ %scevgep3031 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp29, i32 0 ; [#uses=3]
+ %scevgep32 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp29, i32 1 ; [#uses=3]
+ %70 = load i16* %scevgep32, align 2 ; [#uses=2]
+ %71 = icmp eq i16 %70, 0 ; [#uses=1]
+ br i1 %71, label %return, label %bb21
+
+bb21: ; preds = %bb20
+ %72 = load i16* %scevgep26, align 2 ; [#uses=1]
+ %73 = load i16* %scevgep3031, align 2 ; [#uses=2]
+ %74 = icmp ult i16 %72, %73 ; [#uses=1]
+ br i1 %74, label %return, label %bb
+
+return: ; preds = %bb21, %bb20
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItE9sortMinUpEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, i32 %axis, i16 zeroext %edge, %struct.btActionInterface* %dispatcher, i8 zeroext %updateOverlaps) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 %axis ; [#uses=1]
+ %1 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %0, align 4 ; [#uses=5]
+ %2 = zext i16 %edge to i32 ; [#uses=3]
+ %3 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %2, i32 1 ; [#uses=1]
+ %4 = load i16* %3, align 2 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=2]
+ %6 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %5, align 4 ; [#uses=1]
+ %7 = zext i16 %4 to i32 ; [#uses=1]
+ %8 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %6, i32 %7, i32 1, i32 %axis ; [#uses=2]
+ %9 = shl i32 1, %axis ; [#uses=1]
+ %10 = and i32 %9, 3 ; [#uses=5]
+ %toBool2not = icmp eq i8 %updateOverlaps, 0 ; [#uses=1]
+ %11 = shl i32 1, %10 ; [#uses=1]
+ %12 = and i32 %11, 3 ; [#uses=4]
+ %13 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 12 ; [#uses=1]
+ %14 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 13 ; [#uses=1]
+ %tmp28 = add i32 %2, 1 ; [#uses=1]
+ br label %bb20
+
+bb: ; preds = %bb21
+ %15 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %5, align 4 ; [#uses=12]
+ %16 = zext i16 %70 to i32 ; [#uses=7]
+ %17 = and i16 %73, 1 ; [#uses=1]
+ %18 = icmp eq i16 %17, 0 ; [#uses=1]
+ br i1 %18, label %bb18, label %bb1
+
+bb1: ; preds = %bb
+ %19 = load i16* %scevgep27, align 2 ; [#uses=1]
+ %20 = zext i16 %19 to i32 ; [#uses=5]
+ br i1 %toBool2not, label %bb17, label %bb6
+
+bb6: ; preds = %bb1
+ %21 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %15, i32 %20, i32 2, i32 %10 ; [#uses=1]
+ %22 = load i16* %21, align 2 ; [#uses=1]
+ %23 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %15, i32 %16, i32 1, i32 %10 ; [#uses=1]
+ %24 = load i16* %23, align 2 ; [#uses=1]
+ %25 = icmp ult i16 %22, %24 ; [#uses=1]
+ br i1 %25, label %bb17, label %bb.i
+
+bb.i: ; preds = %bb6
+ %26 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %15, i32 %16, i32 2, i32 %10 ; [#uses=1]
+ %27 = load i16* %26, align 2 ; [#uses=1]
+ %28 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %15, i32 %20, i32 1, i32 %10 ; [#uses=1]
+ %29 = load i16* %28, align 2 ; [#uses=1]
+ %30 = icmp ult i16 %27, %29 ; [#uses=1]
+ br i1 %30, label %bb17, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %31 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %15, i32 %20, i32 2, i32 %12 ; [#uses=1]
+ %32 = load i16* %31, align 2 ; [#uses=1]
+ %33 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %15, i32 %16, i32 1, i32 %12 ; [#uses=1]
+ %34 = load i16* %33, align 2 ; [#uses=1]
+ %35 = icmp ult i16 %32, %34 ; [#uses=1]
+ br i1 %35, label %bb17, label %_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+
+_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit: ; preds = %bb1.i
+ %36 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %15, i32 %16, i32 2, i32 %12 ; [#uses=1]
+ %37 = load i16* %36, align 2 ; [#uses=1]
+ %38 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %15, i32 %20, i32 1, i32 %12 ; [#uses=1]
+ %39 = load i16* %38, align 2 ; [#uses=1]
+ %phitmp = icmp ult i16 %37, %39 ; [#uses=1]
+ br i1 %phitmp, label %bb17, label %bb15
+
+bb15: ; preds = %_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+ %40 = load %struct..0btMultiSapOverlapFilterCallback** %13, align 4 ; [#uses=2]
+ %41 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %40, i32 0, i32 0, i32 0 ; [#uses=1]
+ %42 = load i32 (...)*** %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds i32 (...)** %42, i32 3 ; [#uses=1]
+ %44 = load i32 (...)** %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %15, i32 %16, i32 0 ; [#uses=2]
+ %46 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %15, i32 %20, i32 0 ; [#uses=2]
+ %47 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %40, i32 0, i32 0 ; [#uses=1]
+ %48 = bitcast i32 (...)* %44 to i8* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %49 = tail call i8* %48(%struct.btActionInterface* %47, %struct.btBroadphaseProxy* %46, %struct.btBroadphaseProxy* %45, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ %50 = load %struct.btActionInterface** %14, align 4 ; [#uses=3]
+ %51 = icmp eq %struct.btActionInterface* %50, null ; [#uses=1]
+ br i1 %51, label %bb17, label %bb16
+
+bb16: ; preds = %bb15
+ %52 = getelementptr inbounds %struct.btActionInterface* %50, i32 0, i32 0 ; [#uses=1]
+ %53 = load i32 (...)*** %52, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds i32 (...)** %53, i32 3 ; [#uses=1]
+ %55 = load i32 (...)** %54, align 4 ; [#uses=1]
+ %56 = bitcast i32 (...)* %55 to i8* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %57 = tail call i8* %56(%struct.btActionInterface* %50, %struct.btBroadphaseProxy* %46, %struct.btBroadphaseProxy* %45, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb15, %_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit, %bb1.i, %bb.i, %bb6, %bb1
+ %58 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %15, i32 %16, i32 2, i32 %axis ; [#uses=2]
+ %59 = load i16* %58, align 2 ; [#uses=1]
+ %60 = add i16 %59, -1 ; [#uses=1]
+ store i16 %60, i16* %58, align 2
+ br label %bb19
+
+bb18: ; preds = %bb
+ %61 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %15, i32 %16, i32 1, i32 %axis ; [#uses=2]
+ %62 = load i16* %61, align 2 ; [#uses=1]
+ %63 = add i16 %62, -1 ; [#uses=1]
+ store i16 %63, i16* %61, align 2
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb17
+ %64 = load i16* %8, align 2 ; [#uses=1]
+ %65 = add i16 %64, 1 ; [#uses=1]
+ store i16 %65, i16* %8, align 2
+ %66 = load i16* %scevgep26, align 2 ; [#uses=1]
+ %67 = load i16* %scevgep27, align 2 ; [#uses=1]
+ %68 = load i16* %scevgep3031, align 2 ; [#uses=1]
+ %69 = load i16* %scevgep32, align 2 ; [#uses=1]
+ store i16 %68, i16* %scevgep26, align 2
+ store i16 %69, i16* %scevgep27, align 2
+ store i16 %66, i16* %scevgep3031, align 2
+ store i16 %67, i16* %scevgep32, align 2
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb20
+
+bb20: ; preds = %bb19, %entry
+ %indvar = phi i32 [ %indvar.next, %bb19 ], [ 0, %entry ] ; [#uses=3]
+ %tmp25 = add i32 %2, %indvar ; [#uses=2]
+ %scevgep26 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp25, i32 0 ; [#uses=3]
+ %scevgep27 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp25, i32 1 ; [#uses=3]
+ %tmp29 = add i32 %tmp28, %indvar ; [#uses=2]
+ %scevgep3031 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp29, i32 0 ; [#uses=3]
+ %scevgep32 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp29, i32 1 ; [#uses=3]
+ %70 = load i16* %scevgep32, align 2 ; [#uses=2]
+ %71 = icmp eq i16 %70, 0 ; [#uses=1]
+ br i1 %71, label %return, label %bb21
+
+bb21: ; preds = %bb20
+ %72 = load i16* %scevgep26, align 2 ; [#uses=1]
+ %73 = load i16* %scevgep3031, align 2 ; [#uses=2]
+ %74 = icmp ult i16 %72, %73 ; [#uses=1]
+ br i1 %74, label %return, label %bb
+
+return: ; preds = %bb21, %bb20
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItE12removeHandleEtP12btDispatcher(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, i16 zeroext %handle, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=5]
+ %1 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 12 ; [#uses=2]
+ %3 = load %struct..0btMultiSapOverlapFilterCallback** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 14 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to i8 (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %9 = tail call zeroext i8 %8(%struct..0btMultiSapOverlapFilterCallback* %3) ; [#uses=1]
+ %toBoolnot = icmp eq i8 %9, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb, label %bb.nph
+
+bb: ; preds = %entry
+ %10 = zext i16 %handle to i32 ; [#uses=1]
+ %11 = load %struct..0btMultiSapOverlapFilterCallback** %2, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %11, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 4 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %1, i32 %10, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %11, i32 0, i32 0 ; [#uses=1]
+ %18 = bitcast i32 (...)* %15 to void (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %18(%struct.btActionInterface* %17, %struct.btBroadphaseProxy* %16, %struct.btActionInterface* %dispatcher)
+ br label %bb.nph
+
+bb.nph: ; preds = %bb, %entry
+ %19 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 6 ; [#uses=3]
+ %20 = load i16* %19, align 4 ; [#uses=1]
+ %21 = zext i16 %20 to i32 ; [#uses=1]
+ %22 = shl i32 %21, 1 ; [#uses=1]
+ %23 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %0, align 4 ; [#uses=1]
+ %scevgep16 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %23, i32 0, i32 2, i32 0 ; [#uses=2]
+ %24 = load i16* %scevgep16, align 2 ; [#uses=1]
+ %25 = add i16 %24, -2 ; [#uses=1]
+ store i16 %25, i16* %scevgep16, align 2
+ %26 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %0, align 4 ; [#uses=1]
+ %scevgep16.1 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %26, i32 0, i32 2, i32 1 ; [#uses=2]
+ %27 = load i16* %scevgep16.1, align 2 ; [#uses=1]
+ %28 = add i16 %27, -2 ; [#uses=1]
+ store i16 %28, i16* %scevgep16.1, align 2
+ %29 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %0, align 4 ; [#uses=1]
+ %scevgep16.2 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %29, i32 0, i32 2, i32 2 ; [#uses=2]
+ %30 = load i16* %scevgep16.2, align 2 ; [#uses=1]
+ %31 = add i16 %30, -2 ; [#uses=1]
+ store i16 %31, i16* %scevgep16.2, align 2
+ %32 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 2 ; [#uses=3]
+ %33 = add nsw i32 %22, -1 ; [#uses=2]
+ %tmp = zext i16 %handle to i32 ; [#uses=2]
+ br label %bb7
+
+bb7: ; preds = %bb7, %bb.nph
+ %34 = phi i32 [ 0, %bb.nph ], [ %47, %bb7 ] ; [#uses=6]
+ %scevgep = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 %34 ; [#uses=1]
+ %scevgep13 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %1, i32 %tmp, i32 2, i32 %34 ; [#uses=1]
+ %scevgep14 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %1, i32 %tmp, i32 1, i32 %34 ; [#uses=1]
+ %35 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep, align 4 ; [#uses=4]
+ %36 = load i16* %scevgep13, align 2 ; [#uses=2]
+ %37 = zext i16 %36 to i32 ; [#uses=1]
+ %38 = load i16* %32, align 2 ; [#uses=1]
+ %39 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %35, i32 %37, i32 0 ; [#uses=1]
+ store i16 %38, i16* %39, align 2
+ tail call void @_ZN20btAxisSweep3InternalItE9sortMaxUpEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 %34, i16 zeroext %36, %struct.btActionInterface* %dispatcher, i8 zeroext 0)
+ %40 = load i16* %scevgep14, align 2 ; [#uses=2]
+ %41 = zext i16 %40 to i32 ; [#uses=1]
+ %42 = load i16* %32, align 2 ; [#uses=1]
+ %43 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %35, i32 %41, i32 0 ; [#uses=1]
+ store i16 %42, i16* %43, align 2
+ tail call void @_ZN20btAxisSweep3InternalItE9sortMinUpEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 %34, i16 zeroext %40, %struct.btActionInterface* %dispatcher, i8 zeroext 0)
+ %44 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %35, i32 %33, i32 1 ; [#uses=1]
+ store i16 0, i16* %44, align 2
+ %45 = load i16* %32, align 2 ; [#uses=1]
+ %46 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %35, i32 %33, i32 0 ; [#uses=1]
+ store i16 %45, i16* %46, align 2
+ %47 = add nsw i32 %34, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %47, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb9, label %bb7
+
+bb9: ; preds = %bb7
+ %48 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 9 ; [#uses=2]
+ %49 = load i16* %48, align 4 ; [#uses=1]
+ %50 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %0, align 4 ; [#uses=1]
+ %51 = zext i16 %handle to i32 ; [#uses=1]
+ %52 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %50, i32 %51, i32 1, i32 0 ; [#uses=1]
+ store i16 %49, i16* %52, align 2
+ store i16 %handle, i16* %48, align 4
+ %53 = load i16* %19, align 4 ; [#uses=1]
+ %54 = add i16 %53, -1 ; [#uses=1]
+ store i16 %54, i16* %19, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItE12destroyProxyEP17btBroadphaseProxyP12btDispatcher(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, %struct.btBroadphaseProxy* nocapture %proxy, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 16 ; [#uses=1]
+ %1 = load %struct.btDbvtBroadphase** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.btDbvtBroadphase* %1, null ; [#uses=1]
+ br i1 %2, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDbvtBroadphase* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32 (...)** %4, i32 3 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 4 ; [#uses=1]
+ %8 = bitcast i32* %7 to %struct.btBroadphaseProxy** ; [#uses=1]
+ %9 = load %struct.btBroadphaseProxy** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %6 to void (%struct.btDbvtBroadphase*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %10(%struct.btDbvtBroadphase* %1, %struct.btBroadphaseProxy* %9, %struct.btActionInterface* %dispatcher)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %11 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 4 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %13 = trunc i32 %12 to i16 ; [#uses=1]
+ tail call void @_ZN20btAxisSweep3InternalItE12removeHandleEtP12btDispatcher(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i16 zeroext %13, %struct.btActionInterface* %dispatcher)
+ ret void
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, i32 %axis, i16 zeroext %edge, %struct.btActionInterface* %dispatcher, i8 zeroext %updateOverlaps) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 %axis ; [#uses=1]
+ %1 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %0, align 4 ; [#uses=7]
+ %2 = zext i16 %edge to i32 ; [#uses=5]
+ %.sum = add i32 %2, -1 ; [#uses=2]
+ %3 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=2]
+ %4 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %2, i32 0 ; [#uses=1]
+ %6 = load i16* %5, align 2 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %.sum, i32 0 ; [#uses=1]
+ %8 = load i16* %7, align 2 ; [#uses=1]
+ %9 = icmp ult i16 %6, %8 ; [#uses=1]
+ br i1 %9, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %10 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %2, i32 1 ; [#uses=1]
+ %11 = load i16* %10, align 2 ; [#uses=1]
+ %12 = zext i16 %11 to i32 ; [#uses=1]
+ %13 = shl i32 1, %axis ; [#uses=1]
+ %14 = and i32 %13, 3 ; [#uses=5]
+ %toBool2not = icmp eq i8 %updateOverlaps, 0 ; [#uses=1]
+ %15 = shl i32 1, %14 ; [#uses=1]
+ %16 = and i32 %15, 3 ; [#uses=4]
+ %17 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 12 ; [#uses=1]
+ %18 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 13 ; [#uses=1]
+ %19 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %4, i32 %12, i32 2, i32 %axis ; [#uses=2]
+ %tmp27 = add i32 %2, -2 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb19.bb_crit_edge, %bb.nph
+ %20 = phi %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* [ %4, %bb.nph ], [ %.pre, %bb19.bb_crit_edge ] ; [#uses=12]
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb19.bb_crit_edge ] ; [#uses=4]
+ %tmp28 = sub i32 %tmp27, %indvar ; [#uses=1]
+ %scevgep29 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp28, i32 0 ; [#uses=1]
+ %tmp30 = sub i32 %2, %indvar ; [#uses=2]
+ %scevgep31 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp30, i32 0 ; [#uses=3]
+ %scevgep32 = getelementptr i16* %scevgep31, i32 -1 ; [#uses=3]
+ %tmp34 = sub i32 %.sum, %indvar ; [#uses=1]
+ %scevgep3536 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp34, i32 0 ; [#uses=3]
+ %scevgep37 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %1, i32 %tmp30, i32 1 ; [#uses=3]
+ %21 = load i16* %scevgep32, align 2 ; [#uses=1]
+ %22 = zext i16 %21 to i32 ; [#uses=7]
+ %23 = load i16* %scevgep3536, align 2 ; [#uses=1]
+ %24 = and i16 %23, 1 ; [#uses=1]
+ %25 = icmp eq i16 %24, 0 ; [#uses=1]
+ br i1 %25, label %bb1, label %bb18
+
+bb1: ; preds = %bb
+ %26 = load i16* %scevgep37, align 2 ; [#uses=1]
+ %27 = zext i16 %26 to i32 ; [#uses=5]
+ br i1 %toBool2not, label %bb17, label %bb6
+
+bb6: ; preds = %bb1
+ %28 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %20, i32 %27, i32 2, i32 %14 ; [#uses=1]
+ %29 = load i16* %28, align 2 ; [#uses=1]
+ %30 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %20, i32 %22, i32 1, i32 %14 ; [#uses=1]
+ %31 = load i16* %30, align 2 ; [#uses=1]
+ %32 = icmp ult i16 %29, %31 ; [#uses=1]
+ br i1 %32, label %bb17, label %bb.i
+
+bb.i: ; preds = %bb6
+ %33 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %20, i32 %22, i32 2, i32 %14 ; [#uses=1]
+ %34 = load i16* %33, align 2 ; [#uses=1]
+ %35 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %20, i32 %27, i32 1, i32 %14 ; [#uses=1]
+ %36 = load i16* %35, align 2 ; [#uses=1]
+ %37 = icmp ult i16 %34, %36 ; [#uses=1]
+ br i1 %37, label %bb17, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %38 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %20, i32 %27, i32 2, i32 %16 ; [#uses=1]
+ %39 = load i16* %38, align 2 ; [#uses=1]
+ %40 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %20, i32 %22, i32 1, i32 %16 ; [#uses=1]
+ %41 = load i16* %40, align 2 ; [#uses=1]
+ %42 = icmp ult i16 %39, %41 ; [#uses=1]
+ br i1 %42, label %bb17, label %_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+
+_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit: ; preds = %bb1.i
+ %43 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %20, i32 %22, i32 2, i32 %16 ; [#uses=1]
+ %44 = load i16* %43, align 2 ; [#uses=1]
+ %45 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %20, i32 %27, i32 1, i32 %16 ; [#uses=1]
+ %46 = load i16* %45, align 2 ; [#uses=1]
+ %phitmp = icmp ult i16 %44, %46 ; [#uses=1]
+ br i1 %phitmp, label %bb17, label %bb15
+
+bb15: ; preds = %_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit
+ %47 = load %struct..0btMultiSapOverlapFilterCallback** %17, align 4 ; [#uses=2]
+ %48 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %47, i32 0, i32 0, i32 0 ; [#uses=1]
+ %49 = load i32 (...)*** %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds i32 (...)** %49, i32 3 ; [#uses=1]
+ %51 = load i32 (...)** %50, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %20, i32 %22, i32 0 ; [#uses=2]
+ %53 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %20, i32 %27, i32 0 ; [#uses=2]
+ %54 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %47, i32 0, i32 0 ; [#uses=1]
+ %55 = bitcast i32 (...)* %51 to i8* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %56 = tail call i8* %55(%struct.btActionInterface* %54, %struct.btBroadphaseProxy* %53, %struct.btBroadphaseProxy* %52, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ %57 = load %struct.btActionInterface** %18, align 4 ; [#uses=3]
+ %58 = icmp eq %struct.btActionInterface* %57, null ; [#uses=1]
+ br i1 %58, label %bb17, label %bb16
+
+bb16: ; preds = %bb15
+ %59 = getelementptr inbounds %struct.btActionInterface* %57, i32 0, i32 0 ; [#uses=1]
+ %60 = load i32 (...)*** %59, align 4 ; [#uses=1]
+ %61 = getelementptr inbounds i32 (...)** %60, i32 3 ; [#uses=1]
+ %62 = load i32 (...)** %61, align 4 ; [#uses=1]
+ %63 = bitcast i32 (...)* %62 to i8* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %64 = tail call i8* %63(%struct.btActionInterface* %57, %struct.btBroadphaseProxy* %53, %struct.btBroadphaseProxy* %52, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb15, %_ZN20btAxisSweep3InternalItE13testOverlap2DEPKNS0_6HandleES3_ii.exit, %bb1.i, %bb.i, %bb6, %bb1
+ %65 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %20, i32 %22, i32 1, i32 %axis ; [#uses=2]
+ %66 = load i16* %65, align 2 ; [#uses=1]
+ %67 = add i16 %66, 1 ; [#uses=1]
+ store i16 %67, i16* %65, align 2
+ br label %bb19
+
+bb18: ; preds = %bb
+ %68 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %20, i32 %22, i32 2, i32 %axis ; [#uses=2]
+ %69 = load i16* %68, align 2 ; [#uses=1]
+ %70 = add i16 %69, 1 ; [#uses=1]
+ store i16 %70, i16* %68, align 2
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb17
+ %71 = load i16* %19, align 2 ; [#uses=1]
+ %72 = add i16 %71, -1 ; [#uses=1]
+ store i16 %72, i16* %19, align 2
+ %73 = load i16* %scevgep31, align 2 ; [#uses=2]
+ %74 = load i16* %scevgep37, align 2 ; [#uses=1]
+ %75 = load i16* %scevgep3536, align 2 ; [#uses=1]
+ %76 = load i16* %scevgep32, align 2 ; [#uses=1]
+ store i16 %75, i16* %scevgep31, align 2
+ store i16 %76, i16* %scevgep37, align 2
+ store i16 %73, i16* %scevgep3536, align 2
+ store i16 %74, i16* %scevgep32, align 2
+ %77 = load i16* %scevgep29, align 2 ; [#uses=1]
+ %78 = icmp ult i16 %73, %77 ; [#uses=1]
+ br i1 %78, label %bb19.bb_crit_edge, label %return
+
+bb19.bb_crit_edge: ; preds = %bb19
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ %.pre = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %3, align 4 ; [#uses=1]
+ br label %bb
+
+return: ; preds = %bb19, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItE12updateHandleEtRK9btVector3S3_P12btDispatcher(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, i16 zeroext %handle, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, %struct.btActionInterface* %dispatcher) align 2 {
+bb.nph:
+ %min = alloca [3 x i16], align 2 ; [#uses=2]
+ %max = alloca [3 x i16], align 2 ; [#uses=2]
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %1 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds [3 x i16]* %min, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i16* %2, %struct.btQuadWord* %aabbMin, i32 0) nounwind
+ %3 = getelementptr inbounds [3 x i16]* %max, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i16* %3, %struct.btQuadWord* %aabbMax, i32 1) nounwind
+ %tmp = zext i16 %handle to i32 ; [#uses=2]
+ br label %bb
+
+bb: ; preds = %bb8, %bb.nph
+ %4 = phi i32 [ 0, %bb.nph ], [ %28, %bb8 ] ; [#uses=10]
+ %scevgep = getelementptr [3 x i16]* %min, i32 0, i32 %4 ; [#uses=1]
+ %scevgep12 = getelementptr [3 x i16]* %max, i32 0, i32 %4 ; [#uses=1]
+ %scevgep13 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %1, i32 %tmp, i32 1, i32 %4 ; [#uses=1]
+ %scevgep14 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %1, i32 %tmp, i32 2, i32 %4 ; [#uses=1]
+ %scevgep15 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 %4 ; [#uses=2]
+ %5 = load i16* %scevgep13, align 2 ; [#uses=3]
+ %6 = load i16* %scevgep14, align 2 ; [#uses=3]
+ %7 = load i16* %scevgep, align 2 ; [#uses=2]
+ %8 = zext i16 %7 to i32 ; [#uses=1]
+ %9 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep15, align 4 ; [#uses=2]
+ %10 = zext i16 %5 to i32 ; [#uses=1]
+ %11 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %9, i32 %10, i32 0 ; [#uses=2]
+ %12 = load i16* %11, align 2 ; [#uses=1]
+ %13 = zext i16 %12 to i32 ; [#uses=1]
+ %14 = sub nsw i32 %8, %13 ; [#uses=2]
+ %15 = load i16* %scevgep12, align 2 ; [#uses=2]
+ %16 = zext i16 %15 to i32 ; [#uses=1]
+ %17 = zext i16 %6 to i32 ; [#uses=2]
+ %18 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %9, i32 %17, i32 0 ; [#uses=1]
+ %19 = load i16* %18, align 2 ; [#uses=1]
+ %20 = zext i16 %19 to i32 ; [#uses=1]
+ %21 = sub nsw i32 %16, %20 ; [#uses=2]
+ store i16 %7, i16* %11, align 2
+ %22 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep15, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %22, i32 %17, i32 0 ; [#uses=1]
+ store i16 %15, i16* %23, align 2
+ %24 = icmp slt i32 %14, 0 ; [#uses=1]
+ br i1 %24, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ call void @_ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 %4, i16 zeroext %5, %struct.btActionInterface* %dispatcher, i8 zeroext 1)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %25 = icmp sgt i32 %21, 0 ; [#uses=1]
+ br i1 %25, label %bb3, label %bb4
+
+bb3: ; preds = %bb2
+ call void @_ZN20btAxisSweep3InternalItE9sortMaxUpEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 %4, i16 zeroext %6, %struct.btActionInterface* %dispatcher, i8 zeroext 1)
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %26 = icmp sgt i32 %14, 0 ; [#uses=1]
+ br i1 %26, label %bb5, label %bb6
+
+bb5: ; preds = %bb4
+ call void @_ZN20btAxisSweep3InternalItE9sortMinUpEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 %4, i16 zeroext %5, %struct.btActionInterface* %dispatcher, i8 zeroext 1)
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %27 = icmp slt i32 %21, 0 ; [#uses=1]
+ br i1 %27, label %bb7, label %bb8
+
+bb7: ; preds = %bb6
+ call void @_ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 %4, i16 zeroext %6, %struct.btActionInterface* %dispatcher, i8 zeroext 1)
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb6
+ %28 = add nsw i32 %4, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %28, 3 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb8
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItE7setAabbEP17btBroadphaseProxyRK9btVector3S5_P12btDispatcher(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, %struct.btBroadphaseProxy* nocapture %proxy, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 4 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ %26 = trunc i32 %25 to i16 ; [#uses=1]
+ tail call void @_ZN20btAxisSweep3InternalItE12updateHandleEtRK9btVector3S3_P12btDispatcher(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i16 zeroext %26, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %dispatcher)
+ %27 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 16 ; [#uses=1]
+ %28 = load %struct.btDbvtBroadphase** %27, align 4 ; [#uses=3]
+ %29 = icmp eq %struct.btDbvtBroadphase* %28, null ; [#uses=1]
+ br i1 %29, label %return, label %bb
+
+bb: ; preds = %entry
+ %30 = getelementptr inbounds %struct.btDbvtBroadphase* %28, i32 0, i32 0, i32 0 ; [#uses=1]
+ %31 = load i32 (...)*** %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds i32 (...)** %31, i32 4 ; [#uses=1]
+ %33 = load i32 (...)** %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 4 ; [#uses=1]
+ %35 = bitcast i32* %34 to %struct.btBroadphaseProxy** ; [#uses=1]
+ %36 = load %struct.btBroadphaseProxy** %35, align 4 ; [#uses=1]
+ %37 = bitcast i32 (...)* %33 to void (%struct.btDbvtBroadphase*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %37(%struct.btDbvtBroadphase* %28, %struct.btBroadphaseProxy* %36, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %dispatcher)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i16 @_ZN20btAxisSweep3InternalItE9addHandleERK9btVector3S3_PvssP12btDispatcherS4_(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, i8* %pOwner, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask, %struct.btActionInterface* %dispatcher, i8* %multiSapProxy) align 2 {
+bb2:
+ %min = alloca [3 x i16], align 2 ; [#uses=3]
+ %max = alloca [3 x i16], align 2 ; [#uses=3]
+ %0 = getelementptr inbounds [3 x i16]* %min, i32 0, i32 0 ; [#uses=2]
+ call void @_ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i16* %0, %struct.btQuadWord* %aabbMin, i32 0) nounwind
+ %1 = getelementptr inbounds [3 x i16]* %max, i32 0, i32 0 ; [#uses=2]
+ call void @_ZNK20btAxisSweep3InternalItE8quantizeEPtRK9btVector3i(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i16* %1, %struct.btQuadWord* %aabbMax, i32 1) nounwind
+ %2 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 9 ; [#uses=2]
+ %3 = load i16* %2, align 4 ; [#uses=8]
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=4]
+ %5 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %4, align 4 ; [#uses=16]
+ %6 = zext i16 %3 to i32 ; [#uses=17]
+ %7 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 1, i32 0 ; [#uses=3]
+ %8 = load i16* %7, align 2 ; [#uses=1]
+ store i16 %8, i16* %2, align 4
+ %9 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 6 ; [#uses=3]
+ %10 = load i16* %9, align 4 ; [#uses=1]
+ %11 = add i16 %10, 1 ; [#uses=1]
+ store i16 %11, i16* %9, align 4
+ %12 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 0, i32 4 ; [#uses=1]
+ store i32 %6, i32* %12, align 4
+ %13 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 0, i32 0 ; [#uses=1]
+ store i8* %pOwner, i8** %13, align 4
+ %14 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 0, i32 1 ; [#uses=1]
+ store i16 %collisionFilterGroup, i16* %14, align 4
+ %15 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 0, i32 2 ; [#uses=1]
+ store i16 %collisionFilterMask, i16* %15, align 2
+ %16 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 0, i32 3 ; [#uses=1]
+ store i8* %multiSapProxy, i8** %16, align 4
+ %17 = load i16* %9, align 4 ; [#uses=1]
+ %18 = shl i16 %17, 1 ; [#uses=5]
+ %19 = zext i16 %18 to i32 ; [#uses=8]
+ %20 = or i32 %19, 1 ; [#uses=6]
+ %21 = add nsw i32 %19, -1 ; [#uses=12]
+ %22 = add i16 %18, -1 ; [#uses=3]
+ %scevgep7 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 0 ; [#uses=5]
+ %scevgep11 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 2, i32 0 ; [#uses=1]
+ %23 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %4, align 4 ; [#uses=1]
+ %scevgep6 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %23, i32 0, i32 2, i32 0 ; [#uses=2]
+ %24 = load i16* %scevgep6, align 2 ; [#uses=1]
+ %25 = add i16 %24, 2 ; [#uses=1]
+ store i16 %25, i16* %scevgep6, align 2
+ %26 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7, align 4 ; [#uses=4]
+ %27 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %26, i32 %21, i32 0 ; [#uses=1]
+ %28 = load i16* %27, align 2 ; [#uses=1]
+ %29 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %26, i32 %21, i32 1 ; [#uses=1]
+ %30 = load i16* %29, align 2 ; [#uses=1]
+ %31 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %26, i32 %20, i32 0 ; [#uses=1]
+ store i16 %28, i16* %31, align 2
+ %32 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %26, i32 %20, i32 1 ; [#uses=1]
+ store i16 %30, i16* %32, align 2
+ %33 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7, align 4 ; [#uses=1]
+ %34 = load i16* %0, align 2 ; [#uses=1]
+ %35 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %33, i32 %21, i32 0 ; [#uses=1]
+ store i16 %34, i16* %35, align 2
+ %36 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %36, i32 %21, i32 1 ; [#uses=1]
+ store i16 %3, i16* %37, align 2
+ %38 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7, align 4 ; [#uses=1]
+ %39 = load i16* %1, align 2 ; [#uses=1]
+ %40 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %38, i32 %19, i32 0 ; [#uses=1]
+ store i16 %39, i16* %40, align 2
+ %41 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %41, i32 %19, i32 1 ; [#uses=1]
+ store i16 %3, i16* %42, align 2
+ store i16 %22, i16* %7, align 2
+ store i16 %18, i16* %scevgep11, align 2
+ %scevgep7.1 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 1 ; [#uses=5]
+ %scevgep8.1 = getelementptr [3 x i16]* %min, i32 0, i32 1 ; [#uses=1]
+ %scevgep9.1 = getelementptr [3 x i16]* %max, i32 0, i32 1 ; [#uses=1]
+ %scevgep10.1 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 1, i32 1 ; [#uses=1]
+ %scevgep11.1 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 2, i32 1 ; [#uses=1]
+ %43 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %4, align 4 ; [#uses=1]
+ %scevgep6.1 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %43, i32 0, i32 2, i32 1 ; [#uses=2]
+ %44 = load i16* %scevgep6.1, align 2 ; [#uses=1]
+ %45 = add i16 %44, 2 ; [#uses=1]
+ store i16 %45, i16* %scevgep6.1, align 2
+ %46 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7.1, align 4 ; [#uses=4]
+ %47 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %46, i32 %21, i32 0 ; [#uses=1]
+ %48 = load i16* %47, align 2 ; [#uses=1]
+ %49 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %46, i32 %21, i32 1 ; [#uses=1]
+ %50 = load i16* %49, align 2 ; [#uses=1]
+ %51 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %46, i32 %20, i32 0 ; [#uses=1]
+ store i16 %48, i16* %51, align 2
+ %52 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %46, i32 %20, i32 1 ; [#uses=1]
+ store i16 %50, i16* %52, align 2
+ %53 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7.1, align 4 ; [#uses=1]
+ %54 = load i16* %scevgep8.1, align 2 ; [#uses=1]
+ %55 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %53, i32 %21, i32 0 ; [#uses=1]
+ store i16 %54, i16* %55, align 2
+ %56 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7.1, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %56, i32 %21, i32 1 ; [#uses=1]
+ store i16 %3, i16* %57, align 2
+ %58 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7.1, align 4 ; [#uses=1]
+ %59 = load i16* %scevgep9.1, align 2 ; [#uses=1]
+ %60 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %58, i32 %19, i32 0 ; [#uses=1]
+ store i16 %59, i16* %60, align 2
+ %61 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7.1, align 4 ; [#uses=1]
+ %62 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %61, i32 %19, i32 1 ; [#uses=1]
+ store i16 %3, i16* %62, align 2
+ store i16 %22, i16* %scevgep10.1, align 2
+ store i16 %18, i16* %scevgep11.1, align 2
+ %scevgep7.2 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 2 ; [#uses=5]
+ %scevgep8.2 = getelementptr [3 x i16]* %min, i32 0, i32 2 ; [#uses=1]
+ %scevgep9.2 = getelementptr [3 x i16]* %max, i32 0, i32 2 ; [#uses=1]
+ %scevgep10.2 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 1, i32 2 ; [#uses=1]
+ %scevgep11.2 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 2, i32 2 ; [#uses=1]
+ %63 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %4, align 4 ; [#uses=1]
+ %scevgep6.2 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %63, i32 0, i32 2, i32 2 ; [#uses=2]
+ %64 = load i16* %scevgep6.2, align 2 ; [#uses=1]
+ %65 = add i16 %64, 2 ; [#uses=1]
+ store i16 %65, i16* %scevgep6.2, align 2
+ %66 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7.2, align 4 ; [#uses=4]
+ %67 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %66, i32 %21, i32 0 ; [#uses=1]
+ %68 = load i16* %67, align 2 ; [#uses=1]
+ %69 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %66, i32 %21, i32 1 ; [#uses=1]
+ %70 = load i16* %69, align 2 ; [#uses=1]
+ %71 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %66, i32 %20, i32 0 ; [#uses=1]
+ store i16 %68, i16* %71, align 2
+ %72 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %66, i32 %20, i32 1 ; [#uses=1]
+ store i16 %70, i16* %72, align 2
+ %73 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7.2, align 4 ; [#uses=1]
+ %74 = load i16* %scevgep8.2, align 2 ; [#uses=1]
+ %75 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %73, i32 %21, i32 0 ; [#uses=1]
+ store i16 %74, i16* %75, align 2
+ %76 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7.2, align 4 ; [#uses=1]
+ %77 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %76, i32 %21, i32 1 ; [#uses=1]
+ store i16 %3, i16* %77, align 2
+ %78 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7.2, align 4 ; [#uses=1]
+ %79 = load i16* %scevgep9.2, align 2 ; [#uses=1]
+ %80 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %78, i32 %19, i32 0 ; [#uses=1]
+ store i16 %79, i16* %80, align 2
+ %81 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep7.2, align 4 ; [#uses=1]
+ %82 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %81, i32 %19, i32 1 ; [#uses=1]
+ store i16 %3, i16* %82, align 2
+ store i16 %22, i16* %scevgep10.2, align 2
+ store i16 %18, i16* %scevgep11.2, align 2
+ %83 = load i16* %7, align 2 ; [#uses=1]
+ call void @_ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i16 zeroext %83, %struct.btActionInterface* %dispatcher, i8 zeroext 0)
+ %84 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 2, i32 0 ; [#uses=1]
+ %85 = load i16* %84, align 2 ; [#uses=1]
+ call void @_ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i16 zeroext %85, %struct.btActionInterface* %dispatcher, i8 zeroext 0)
+ %86 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 1, i32 1 ; [#uses=1]
+ %87 = load i16* %86, align 2 ; [#uses=1]
+ call void @_ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 1, i16 zeroext %87, %struct.btActionInterface* %dispatcher, i8 zeroext 0)
+ %88 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 2, i32 1 ; [#uses=1]
+ %89 = load i16* %88, align 2 ; [#uses=1]
+ call void @_ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 1, i16 zeroext %89, %struct.btActionInterface* %dispatcher, i8 zeroext 0)
+ %90 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 1, i32 2 ; [#uses=1]
+ %91 = load i16* %90, align 2 ; [#uses=1]
+ call void @_ZN20btAxisSweep3InternalItE11sortMinDownEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 2, i16 zeroext %91, %struct.btActionInterface* %dispatcher, i8 zeroext 1)
+ %92 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %5, i32 %6, i32 2, i32 2 ; [#uses=1]
+ %93 = load i16* %92, align 2 ; [#uses=1]
+ call void @_ZN20btAxisSweep3InternalItE11sortMaxDownEitP12btDispatcherb(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 2, i16 zeroext %93, %struct.btActionInterface* %dispatcher, i8 zeroext 1)
+ ret i16 %3
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btBroadphaseProxy* @_ZN20btAxisSweep3InternalItE11createProxyERK9btVector3S3_iPvssP12btDispatcherS4_(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, i32 %shapeType, i8* %userPtr, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask, %struct.btActionInterface* %dispatcher, i8* %multiSapProxy) align 2 {
+entry:
+ %0 = tail call zeroext i16 @_ZN20btAxisSweep3InternalItE9addHandleERK9btVector3S3_PvssP12btDispatcherS4_(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, i8* %userPtr, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask, %struct.btActionInterface* %dispatcher, i8* %multiSapProxy) ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %2 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %1, align 4 ; [#uses=2]
+ %3 = zext i16 %0 to i32 ; [#uses=2]
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 16 ; [#uses=1]
+ %5 = load %struct.btDbvtBroadphase** %4, align 4 ; [#uses=3]
+ %6 = icmp eq %struct.btDbvtBroadphase* %5, null ; [#uses=1]
+ br i1 %6, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btDbvtBroadphase* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 2 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = bitcast i32 (...)* %10 to %struct.btBroadphaseProxy* (%struct.btDbvtBroadphase*, %struct.btQuadWord*, %struct.btQuadWord*, i32, i8*, i16, i16, %struct.btActionInterface*, i8*)* ; [#uses=1]
+ %12 = tail call %struct.btBroadphaseProxy* %11(%struct.btDbvtBroadphase* %5, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, i32 %shapeType, i8* %userPtr, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask, %struct.btActionInterface* %dispatcher, i8* null) ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %2, i32 %3, i32 3 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %12, %struct.btBroadphaseProxy** %13, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %14 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %2, i32 %3, i32 0 ; [#uses=1]
+ ret %struct.btBroadphaseProxy* %14
+}
+
+; [#uses=9]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(%"struct.btAlignedObjectArray<btBroadphasePair>"* nocapture %this, i32 %newsize, %struct.btBroadphasePair* nocapture %fillData) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = icmp sgt i32 %1, %newsize ; [#uses=1]
+ br i1 %2, label %bb9, label %bb3
+
+bb3: ; preds = %entry
+ %3 = icmp slt i32 %1, %newsize ; [#uses=2]
+ br i1 %3, label %bb4, label %bb9
+
+bb4: ; preds = %bb3
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 2 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp slt i32 %5, %newsize ; [#uses=1]
+ br i1 %6, label %bb.i, label %bb.nph
+
+bb.i: ; preds = %bb4
+ %7 = icmp eq i32 %newsize, 0 ; [#uses=1]
+ br i1 %7, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %8 = shl i32 %newsize, 4 ; [#uses=1]
+ %9 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %8, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %9 to %struct.btBroadphasePair* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %10 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %11 = phi %struct.btBroadphasePair* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=5]
+ %12 = icmp sgt i32 %10, 0 ; [#uses=1]
+ br i1 %12, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb.i4.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb.i4.i ] ; [#uses=9]
+ %scevgep13.i.i = getelementptr %struct.btBroadphasePair* %11, i32 %indvar.i.i, i32 3, i32 0 ; [#uses=1]
+ %scevgep11.i.i = getelementptr %struct.btBroadphasePair* %11, i32 %indvar.i.i, i32 2 ; [#uses=1]
+ %scevgep9.i.i = getelementptr %struct.btBroadphasePair* %11, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %scevgep67.i.i = getelementptr inbounds %struct.btBroadphasePair* %11, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %14 = load %struct.btBroadphasePair** %13, align 4 ; [#uses=4]
+ %scevgep5.i.i = getelementptr inbounds %struct.btBroadphasePair* %14, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %15 = load %struct.btBroadphaseProxy** %scevgep5.i.i, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %15, %struct.btBroadphaseProxy** %scevgep67.i.i, align 4
+ %scevgep8.i.i = getelementptr %struct.btBroadphasePair* %14, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %16 = load %struct.btBroadphaseProxy** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %16, %struct.btBroadphaseProxy** %scevgep9.i.i, align 4
+ %scevgep10.i.i = getelementptr %struct.btBroadphasePair* %14, i32 %indvar.i.i, i32 2 ; [#uses=1]
+ %17 = load %struct.btCollisionAlgorithm** %scevgep10.i.i, align 4 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %17, %struct.btCollisionAlgorithm** %scevgep11.i.i, align 4
+ %scevgep12.i.i = getelementptr %struct.btBroadphasePair* %14, i32 %indvar.i.i, i32 3, i32 0 ; [#uses=1]
+ %18 = load i8** %scevgep12.i.i, align 4 ; [#uses=1]
+ store i8* %18, i8** %scevgep13.i.i, align 4
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond19 = icmp eq i32 %indvar.next.i.i, %10 ; [#uses=1]
+ br i1 %exitcond19, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i: ; preds = %bb.i4.i, %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i
+ %19 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 3 ; [#uses=3]
+ %20 = load %struct.btBroadphasePair** %19, align 4 ; [#uses=2]
+ %21 = icmp eq %struct.btBroadphasePair* %20, null ; [#uses=1]
+ br i1 %21, label %bb8.preheader, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+ %22 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %24 = bitcast %struct.btBroadphasePair* %20 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %24)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %19, align 4
+ br label %bb8.preheader
+
+bb8.preheader: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+ %25 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ store %struct.btBroadphasePair* %11, %struct.btBroadphasePair** %19, align 4
+ store i32 %newsize, i32* %4, align 4
+ br i1 %3, label %bb.nph, label %bb9
+
+bb.nph: ; preds = %bb8.preheader, %bb4
+ %26 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btBroadphasePair* %fillData, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btBroadphasePair* %fillData, i32 0, i32 1 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btBroadphasePair* %fillData, i32 0, i32 2 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btBroadphasePair* %fillData, i32 0, i32 3, i32 0 ; [#uses=1]
+ %tmp = sub i32 %newsize, %1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb7, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb7 ] ; [#uses=2]
+ %tmp14 = add i32 %1, %indvar ; [#uses=4]
+ %31 = load %struct.btBroadphasePair** %26, align 4 ; [#uses=4]
+ %32 = load %struct.btBroadphaseProxy** %27, align 4 ; [#uses=1]
+ %scevgep15 = getelementptr inbounds %struct.btBroadphasePair* %31, i32 %tmp14, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %32, %struct.btBroadphaseProxy** %scevgep15, align 4
+ %33 = load %struct.btBroadphaseProxy** %28, align 4 ; [#uses=1]
+ %scevgep16 = getelementptr %struct.btBroadphasePair* %31, i32 %tmp14, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %33, %struct.btBroadphaseProxy** %scevgep16, align 4
+ %34 = load %struct.btCollisionAlgorithm** %29, align 4 ; [#uses=1]
+ %scevgep17 = getelementptr %struct.btBroadphasePair* %31, i32 %tmp14, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %34, %struct.btCollisionAlgorithm** %scevgep17, align 4
+ %35 = load i8** %30, align 4 ; [#uses=1]
+ %scevgep18 = getelementptr %struct.btBroadphasePair* %31, i32 %tmp14, i32 3, i32 0 ; [#uses=1]
+ store i8* %35, i8** %scevgep18, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; [#uses=1]
+ br i1 %exitcond, label %bb9, label %bb7
+
+bb9: ; preds = %bb7, %bb8.preheader, %bb3, %entry
+ store i32 %newsize, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjE25calculateOverlappingPairsEP12btDispatcher(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %1 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %2 = alloca %struct.btBroadphasePair, align 8 ; [#uses=5]
+ %3 = alloca %struct.btBroadphasePair, align 8 ; [#uses=5]
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 12 ; [#uses=3]
+ %5 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 14 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to i8 (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %11 = call zeroext i8 %10(%struct..0btMultiSapOverlapFilterCallback* %5) ; [#uses=1]
+ %toBool = icmp eq i8 %11, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %12 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %12, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds i32 (...)** %14, i32 7 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to %"struct.btAlignedObjectArray<btBroadphasePair>"* (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %18 = call %"struct.btAlignedObjectArray<btBroadphasePair>"* %17(%struct..0btMultiSapOverlapFilterCallback* %12) ; [#uses=6]
+ %19 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %18, i32 0, i32 1 ; [#uses=5]
+ %20 = load i32* %19, align 4 ; [#uses=3]
+ %21 = icmp sgt i32 %20, 1 ; [#uses=1]
+ br i1 %21, label %bb.i, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit
+
+bb.i: ; preds = %bb
+ %22 = add nsw i32 %20, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %18, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %1, i32 0, i32 %22) nounwind
+ %.pre = load i32* %19, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit: ; preds = %bb.i, %bb
+ %23 = phi i32 [ %20, %bb ], [ %.pre, %bb.i ] ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %24, align 8
+ %25 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %25, align 4
+ %26 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %26, align 8
+ %27 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i8* null, i8** %27, align 4
+ %28 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 15 ; [#uses=6]
+ %29 = load i32* %28, align 4 ; [#uses=1]
+ %30 = sub nsw i32 %23, %29 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(%"struct.btAlignedObjectArray<btBroadphasePair>"* %18, i32 %30, %struct.btBroadphasePair* %3) inlinehint
+ store i32 0, i32* %28, align 4
+ %31 = load i32* %19, align 4 ; [#uses=2]
+ %32 = icmp sgt i32 %31, 0 ; [#uses=1]
+ br i1 %32, label %bb.nph, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit26
+
+bb.nph: ; preds = %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit
+ %33 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %18, i32 0, i32 3 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb14, %bb.nph
+ %i.037 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb14 ] ; [#uses=5]
+ %previousPair.1.036 = phi %struct.btBroadphaseProxy* [ null, %bb.nph ], [ %58, %bb14 ] ; [#uses=1]
+ %previousPair.0.035 = phi %struct.btBroadphaseProxy* [ null, %bb.nph ], [ %35, %bb14 ] ; [#uses=1]
+ %tmp = add i32 %i.037, 1 ; [#uses=2]
+ %34 = load %struct.btBroadphasePair** %33, align 4 ; [#uses=4]
+ %scevgep4849 = getelementptr inbounds %struct.btBroadphasePair* %34, i32 %i.037, i32 0 ; [#uses=2]
+ %35 = load %struct.btBroadphaseProxy** %scevgep4849, align 4 ; [#uses=4]
+ %36 = icmp eq %struct.btBroadphaseProxy* %35, %previousPair.0.035 ; [#uses=1]
+ %scevgep58 = getelementptr %struct.btBroadphasePair* %34, i32 %i.037, i32 1 ; [#uses=2]
+ %37 = load %struct.btBroadphaseProxy** %scevgep58, align 4 ; [#uses=6]
+ %phitmp = icmp eq %struct.btBroadphaseProxy* %37, %previousPair.1.036 ; [#uses=1]
+ %or.cond = and i1 %36, %phitmp ; [#uses=1]
+ br i1 %or.cond, label %bb13, label %bb6
+
+bb6: ; preds = %bb1
+ %scevgep = getelementptr %struct.btBroadphaseProxy* %35, i32 1, i32 0 ; [#uses=1]
+ %scevgep40 = getelementptr %struct.btBroadphaseProxy* %37, i32 1, i32 4 ; [#uses=1]
+ %scevgep42 = getelementptr %struct.btBroadphaseProxy* %35, i32 1, i32 4 ; [#uses=1]
+ %scevgep44 = getelementptr %struct.btBroadphaseProxy* %37, i32 1, i32 0 ; [#uses=1]
+ br label %bb4.i
+
+bb.i27: ; preds = %bb4.i
+ %scevgep45 = getelementptr i8** %scevgep44, i32 %45 ; [#uses=1]
+ %scevgep1617.i = bitcast i8** %scevgep45 to i32* ; [#uses=1]
+ %scevgep11.i = getelementptr i32* %scevgep42, i32 %45 ; [#uses=1]
+ %38 = load i32* %scevgep11.i, align 4 ; [#uses=1]
+ %39 = load i32* %scevgep1617.i, align 4 ; [#uses=1]
+ %40 = icmp ult i32 %38, %39 ; [#uses=1]
+ br i1 %40, label %bb13.loopexit, label %bb1.i
+
+bb1.i: ; preds = %bb.i27
+ %41 = load i32* %scevgep9.i, align 4 ; [#uses=1]
+ %42 = load i32* %scevgep1314.i, align 4 ; [#uses=1]
+ %43 = icmp ult i32 %41, %42 ; [#uses=1]
+ br i1 %43, label %bb13.loopexit, label %bb3.i
+
+bb3.i: ; preds = %bb1.i
+ %44 = add nsw i32 %45, 1 ; [#uses=1]
+ br label %bb4.i
+
+bb4.i: ; preds = %bb3.i, %bb6
+ %45 = phi i32 [ 0, %bb6 ], [ %44, %bb3.i ] ; [#uses=6]
+ %scevgep38 = getelementptr i8** %scevgep, i32 %45 ; [#uses=1]
+ %scevgep1314.i = bitcast i8** %scevgep38 to i32* ; [#uses=1]
+ %scevgep9.i = getelementptr i32* %scevgep40, i32 %45 ; [#uses=1]
+ %46 = icmp slt i32 %45, 3 ; [#uses=1]
+ br i1 %46, label %bb.i27, label %bb14
+
+bb13.loopexit: ; preds = %bb1.i, %bb.i27
+ %scevgep54.pre = getelementptr %struct.btBroadphasePair* %34, i32 %i.037, i32 1 ; [#uses=1]
+ br label %bb13
+
+bb13: ; preds = %bb13.loopexit, %bb1
+ %scevgep54.pre-phi = phi %struct.btBroadphaseProxy** [ %scevgep54.pre, %bb13.loopexit ], [ %scevgep58, %bb1 ] ; [#uses=1]
+ %47 = phi %struct.btBroadphaseProxy* [ %37, %bb13.loopexit ], [ %37, %bb1 ] ; [#uses=1]
+ %48 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=2]
+ %49 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %48, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = load i32 (...)*** %49, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds i32 (...)** %50, i32 8 ; [#uses=1]
+ %52 = load i32 (...)** %51, align 4 ; [#uses=1]
+ %53 = bitcast i32 (...)* %52 to void (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphasePair*, %struct.btActionInterface*)* ; [#uses=1]
+ %scevgep47 = getelementptr %struct.btBroadphasePair* %34, i32 %i.037 ; [#uses=1]
+ call void %53(%struct..0btMultiSapOverlapFilterCallback* %48, %struct.btBroadphasePair* %scevgep47, %struct.btActionInterface* %dispatcher)
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %scevgep4849, align 4
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %scevgep54.pre-phi, align 4
+ %54 = load i32* %28, align 4 ; [#uses=1]
+ %55 = add nsw i32 %54, 1 ; [#uses=1]
+ store i32 %55, i32* %28, align 4
+ %56 = load i32* @gOverlappingPairs, align 4 ; [#uses=1]
+ %57 = add nsw i32 %56, -1 ; [#uses=1]
+ store i32 %57, i32* @gOverlappingPairs, align 4
+ br label %bb14
+
+bb14: ; preds = %bb13, %bb4.i
+ %58 = phi %struct.btBroadphaseProxy* [ %47, %bb13 ], [ %37, %bb4.i ] ; [#uses=1]
+ %59 = load i32* %19, align 4 ; [#uses=4]
+ %60 = icmp sgt i32 %59, %tmp ; [#uses=1]
+ br i1 %60, label %bb1, label %bb17
+
+bb17: ; preds = %bb14
+ %61 = icmp sgt i32 %59, 1 ; [#uses=1]
+ br i1 %61, label %bb.i24, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit26
+
+bb.i24: ; preds = %bb17
+ %62 = add nsw i32 %59, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %18, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 0, i32 %62) nounwind
+ %.pre62 = load i32* %19, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit26
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit26: ; preds = %bb.i24, %bb17, %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit
+ %63 = phi i32 [ %.pre62, %bb.i24 ], [ %59, %bb17 ], [ %31, %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit ] ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %64, align 8
+ %65 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %65, align 4
+ %66 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %66, align 8
+ %67 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i8* null, i8** %67, align 4
+ %68 = load i32* %28, align 4 ; [#uses=1]
+ %69 = sub nsw i32 %63, %68 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(%"struct.btAlignedObjectArray<btBroadphasePair>"* %18, i32 %69, %struct.btBroadphasePair* %2) inlinehint
+ store i32 0, i32* %28, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItE25calculateOverlappingPairsEP12btDispatcher(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %1 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %2 = alloca %struct.btBroadphasePair, align 8 ; [#uses=5]
+ %3 = alloca %struct.btBroadphasePair, align 8 ; [#uses=5]
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 12 ; [#uses=3]
+ %5 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 14 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to i8 (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %11 = call zeroext i8 %10(%struct..0btMultiSapOverlapFilterCallback* %5) ; [#uses=1]
+ %toBool = icmp eq i8 %11, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %12 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %12, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds i32 (...)** %14, i32 7 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to %"struct.btAlignedObjectArray<btBroadphasePair>"* (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %18 = call %"struct.btAlignedObjectArray<btBroadphasePair>"* %17(%struct..0btMultiSapOverlapFilterCallback* %12) ; [#uses=6]
+ %19 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %18, i32 0, i32 1 ; [#uses=5]
+ %20 = load i32* %19, align 4 ; [#uses=3]
+ %21 = icmp sgt i32 %20, 1 ; [#uses=1]
+ br i1 %21, label %bb.i, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit
+
+bb.i: ; preds = %bb
+ %22 = add nsw i32 %20, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %18, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %1, i32 0, i32 %22) nounwind
+ %.pre = load i32* %19, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit: ; preds = %bb.i, %bb
+ %23 = phi i32 [ %20, %bb ], [ %.pre, %bb.i ] ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %24, align 8
+ %25 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %25, align 4
+ %26 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %26, align 8
+ %27 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i8* null, i8** %27, align 4
+ %28 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 15 ; [#uses=6]
+ %29 = load i32* %28, align 4 ; [#uses=1]
+ %30 = sub nsw i32 %23, %29 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(%"struct.btAlignedObjectArray<btBroadphasePair>"* %18, i32 %30, %struct.btBroadphasePair* %3) inlinehint
+ store i32 0, i32* %28, align 4
+ %31 = load i32* %19, align 4 ; [#uses=2]
+ %32 = icmp sgt i32 %31, 0 ; [#uses=1]
+ br i1 %32, label %bb.nph, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit26
+
+bb.nph: ; preds = %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit
+ %33 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %18, i32 0, i32 3 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb14, %bb.nph
+ %i.037 = phi i32 [ 0, %bb.nph ], [ %tmp63, %bb14 ] ; [#uses=5]
+ %previousPair.1.036 = phi %struct.btBroadphaseProxy* [ null, %bb.nph ], [ %58, %bb14 ] ; [#uses=1]
+ %previousPair.0.035 = phi %struct.btBroadphaseProxy* [ null, %bb.nph ], [ %35, %bb14 ] ; [#uses=1]
+ %tmp63 = add i32 %i.037, 1 ; [#uses=2]
+ %34 = load %struct.btBroadphasePair** %33, align 4 ; [#uses=4]
+ %scevgep4950 = getelementptr inbounds %struct.btBroadphasePair* %34, i32 %i.037, i32 0 ; [#uses=2]
+ %35 = load %struct.btBroadphaseProxy** %scevgep4950, align 4 ; [#uses=4]
+ %36 = icmp eq %struct.btBroadphaseProxy* %35, %previousPair.0.035 ; [#uses=1]
+ %scevgep59 = getelementptr %struct.btBroadphasePair* %34, i32 %i.037, i32 1 ; [#uses=2]
+ %37 = load %struct.btBroadphaseProxy** %scevgep59, align 4 ; [#uses=6]
+ %phitmp = icmp eq %struct.btBroadphaseProxy* %37, %previousPair.1.036 ; [#uses=1]
+ %or.cond = and i1 %36, %phitmp ; [#uses=1]
+ br i1 %or.cond, label %bb13, label %bb6
+
+bb6: ; preds = %bb1
+ %scevgep = getelementptr %struct.btBroadphaseProxy* %35, i32 1, i32 0 ; [#uses=1]
+ %scevgep38 = bitcast i8** %scevgep to i8* ; [#uses=1]
+ %scevgep40 = getelementptr %struct.btBroadphaseProxy* %37, i32 1, i32 0 ; [#uses=1]
+ %scevgep4041 = bitcast i8** %scevgep40 to i8* ; [#uses=1]
+ %scevgep44 = getelementptr %struct.btBroadphaseProxy* %37, i32 1, i32 2 ; [#uses=1]
+ %scevgep46 = getelementptr %struct.btBroadphaseProxy* %35, i32 1, i32 2 ; [#uses=1]
+ br label %bb4.i
+
+bb.i27: ; preds = %bb4.i
+ %uglygep42 = getelementptr i8* %scevgep4041, i32 %tmp ; [#uses=1]
+ %scevgep11.i = getelementptr i16* %scevgep46, i32 %45 ; [#uses=1]
+ %uglygep1718.i = bitcast i8* %uglygep42 to i16* ; [#uses=1]
+ %38 = load i16* %scevgep11.i, align 2 ; [#uses=1]
+ %39 = load i16* %uglygep1718.i, align 2 ; [#uses=1]
+ %40 = icmp ult i16 %38, %39 ; [#uses=1]
+ br i1 %40, label %bb13.loopexit, label %bb1.i
+
+bb1.i: ; preds = %bb.i27
+ %41 = load i16* %scevgep9.i, align 2 ; [#uses=1]
+ %42 = load i16* %uglygep14.i, align 2 ; [#uses=1]
+ %43 = icmp ult i16 %41, %42 ; [#uses=1]
+ br i1 %43, label %bb13.loopexit, label %bb3.i
+
+bb3.i: ; preds = %bb1.i
+ %44 = add nsw i32 %45, 1 ; [#uses=1]
+ br label %bb4.i
+
+bb4.i: ; preds = %bb3.i, %bb6
+ %45 = phi i32 [ 0, %bb6 ], [ %44, %bb3.i ] ; [#uses=5]
+ %tmp = shl i32 %45, 1 ; [#uses=2]
+ %uglygep = getelementptr i8* %scevgep38, i32 %tmp ; [#uses=1]
+ %uglygep14.i = bitcast i8* %uglygep to i16* ; [#uses=1]
+ %scevgep9.i = getelementptr i16* %scevgep44, i32 %45 ; [#uses=1]
+ %46 = icmp slt i32 %45, 3 ; [#uses=1]
+ br i1 %46, label %bb.i27, label %bb14
+
+bb13.loopexit: ; preds = %bb1.i, %bb.i27
+ %scevgep55.pre = getelementptr %struct.btBroadphasePair* %34, i32 %i.037, i32 1 ; [#uses=1]
+ br label %bb13
+
+bb13: ; preds = %bb13.loopexit, %bb1
+ %scevgep55.pre-phi = phi %struct.btBroadphaseProxy** [ %scevgep55.pre, %bb13.loopexit ], [ %scevgep59, %bb1 ] ; [#uses=1]
+ %47 = phi %struct.btBroadphaseProxy* [ %37, %bb13.loopexit ], [ %37, %bb1 ] ; [#uses=1]
+ %48 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=2]
+ %49 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %48, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = load i32 (...)*** %49, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds i32 (...)** %50, i32 8 ; [#uses=1]
+ %52 = load i32 (...)** %51, align 4 ; [#uses=1]
+ %53 = bitcast i32 (...)* %52 to void (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphasePair*, %struct.btActionInterface*)* ; [#uses=1]
+ %scevgep48 = getelementptr %struct.btBroadphasePair* %34, i32 %i.037 ; [#uses=1]
+ call void %53(%struct..0btMultiSapOverlapFilterCallback* %48, %struct.btBroadphasePair* %scevgep48, %struct.btActionInterface* %dispatcher)
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %scevgep4950, align 4
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %scevgep55.pre-phi, align 4
+ %54 = load i32* %28, align 4 ; [#uses=1]
+ %55 = add nsw i32 %54, 1 ; [#uses=1]
+ store i32 %55, i32* %28, align 4
+ %56 = load i32* @gOverlappingPairs, align 4 ; [#uses=1]
+ %57 = add nsw i32 %56, -1 ; [#uses=1]
+ store i32 %57, i32* @gOverlappingPairs, align 4
+ br label %bb14
+
+bb14: ; preds = %bb13, %bb4.i
+ %58 = phi %struct.btBroadphaseProxy* [ %47, %bb13 ], [ %37, %bb4.i ] ; [#uses=1]
+ %59 = load i32* %19, align 4 ; [#uses=4]
+ %60 = icmp sgt i32 %59, %tmp63 ; [#uses=1]
+ br i1 %60, label %bb1, label %bb17
+
+bb17: ; preds = %bb14
+ %61 = icmp sgt i32 %59, 1 ; [#uses=1]
+ br i1 %61, label %bb.i24, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit26
+
+bb.i24: ; preds = %bb17
+ %62 = add nsw i32 %59, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %18, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 0, i32 %62) nounwind
+ %.pre64 = load i32* %19, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit26
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit26: ; preds = %bb.i24, %bb17, %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit
+ %63 = phi i32 [ %.pre64, %bb.i24 ], [ %59, %bb17 ], [ %31, %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit ] ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %64, align 8
+ %65 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %65, align 4
+ %66 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %66, align 8
+ %67 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i8* null, i8** %67, align 4
+ %68 = load i32* %28, align 4 ; [#uses=1]
+ %69 = sub nsw i32 %63, %68 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(%"struct.btAlignedObjectArray<btBroadphasePair>"* %18, i32 %69, %struct.btBroadphasePair* %2) inlinehint
+ store i32 0, i32* %28, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjED2Ev(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV20btAxisSweep3InternalIjE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 16 ; [#uses=3]
+ %2 = load %struct.btDbvtBroadphase** %1, align 4 ; [#uses=1]
+ %3 = icmp eq %struct.btDbvtBroadphase* %2, null ; [#uses=1]
+ br i1 %3, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 17 ; [#uses=2]
+ %5 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ tail call void %9(%struct..0btMultiSapOverlapFilterCallback* %5)
+ %10 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=1]
+ %11 = bitcast %struct..0btMultiSapOverlapFilterCallback* %10 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %11)
+ %12 = load %struct.btDbvtBroadphase** %1, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btDbvtBroadphase* %12, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to void (%struct.btDbvtBroadphase*)* ; [#uses=1]
+ tail call void %16(%struct.btDbvtBroadphase* %12)
+ %17 = load %struct.btDbvtBroadphase** %1, align 4 ; [#uses=1]
+ %18 = bitcast %struct.btDbvtBroadphase* %17 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %18)
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb, %entry
+ %indvar = phi i32 [ %indvar.next, %bb2 ], [ 0, %bb ], [ 0, %entry ] ; [#uses=2]
+ %tmp13 = sub i32 2, %indvar ; [#uses=1]
+ %scevgep = getelementptr %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 11, i32 %tmp13 ; [#uses=1]
+ %19 = load i8** %scevgep, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %19)
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb2
+
+bb4: ; preds = %bb2
+ %20 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %21 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %21, null ; [#uses=1]
+ br i1 %22, label %bb6, label %bb5
+
+bb5: ; preds = %bb4
+ %23 = bitcast %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %21 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %24 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 14 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb7
+
+bb7: ; preds = %bb6
+ %26 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 12 ; [#uses=2]
+ %27 = load %struct..0btMultiSapOverlapFilterCallback** %26, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %27, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load i32 (...)*** %28, align 4 ; [#uses=1]
+ %30 = load i32 (...)** %29, align 4 ; [#uses=1]
+ %31 = bitcast i32 (...)* %30 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ tail call void %31(%struct..0btMultiSapOverlapFilterCallback* %27)
+ %32 = load %struct..0btMultiSapOverlapFilterCallback** %26, align 4 ; [#uses=1]
+ %33 = bitcast %struct..0btMultiSapOverlapFilterCallback* %32 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %33)
+ ret void
+
+return: ; preds = %bb6
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjED1Ev(%"struct.btAxisSweep3Internal<unsigned int>"* nocapture %this) align 2 {
+entry:
+ tail call void @_ZN20btAxisSweep3InternalIjED2Ev(%"struct.btAxisSweep3Internal<unsigned int>"* %this)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjED0Ev(%"struct.btAxisSweep3Internal<unsigned int>"* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV20btAxisSweep3InternalIjE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 16 ; [#uses=3]
+ %2 = load %struct.btDbvtBroadphase** %1, align 4 ; [#uses=1]
+ %3 = icmp eq %struct.btDbvtBroadphase* %2, null ; [#uses=1]
+ br i1 %3, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 17 ; [#uses=2]
+ %5 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ tail call void %9(%struct..0btMultiSapOverlapFilterCallback* %5)
+ %10 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=1]
+ %11 = bitcast %struct..0btMultiSapOverlapFilterCallback* %10 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %11)
+ %12 = load %struct.btDbvtBroadphase** %1, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btDbvtBroadphase* %12, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to void (%struct.btDbvtBroadphase*)* ; [#uses=1]
+ tail call void %16(%struct.btDbvtBroadphase* %12)
+ %17 = load %struct.btDbvtBroadphase** %1, align 4 ; [#uses=1]
+ %18 = bitcast %struct.btDbvtBroadphase* %17 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %18)
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb, %entry
+ %indvar = phi i32 [ %indvar.next, %bb2 ], [ 0, %bb ], [ 0, %entry ] ; [#uses=2]
+ %tmp13 = sub i32 2, %indvar ; [#uses=1]
+ %scevgep = getelementptr %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 11, i32 %tmp13 ; [#uses=1]
+ %19 = load i8** %scevgep, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %19)
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb2
+
+bb4: ; preds = %bb2
+ %20 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %21 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %21, null ; [#uses=1]
+ br i1 %22, label %bb6, label %bb5
+
+bb5: ; preds = %bb4
+ %23 = bitcast %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %21 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %24 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 14 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool, label %bb10, label %bb7
+
+bb7: ; preds = %bb6
+ %26 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 12 ; [#uses=2]
+ %27 = load %struct..0btMultiSapOverlapFilterCallback** %26, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %27, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load i32 (...)*** %28, align 4 ; [#uses=1]
+ %30 = load i32 (...)** %29, align 4 ; [#uses=1]
+ %31 = bitcast i32 (...)* %30 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ tail call void %31(%struct..0btMultiSapOverlapFilterCallback* %27)
+ %32 = load %struct..0btMultiSapOverlapFilterCallback** %26, align 4 ; [#uses=1]
+ %33 = bitcast %struct..0btMultiSapOverlapFilterCallback* %32 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %33)
+ br label %bb10
+
+bb10: ; preds = %bb7, %bb6
+ %34 = bitcast %"struct.btAxisSweep3Internal<unsigned int>"* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %34)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17bt32BitAxisSweep3D0Ev(%struct.bt32BitAxisSweep3* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.bt32BitAxisSweep3* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV17bt32BitAxisSweep3, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.bt32BitAxisSweep3* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btAxisSweep3InternalIjED2Ev(%"struct.btAxisSweep3Internal<unsigned int>"* %1)
+ %2 = bitcast %struct.bt32BitAxisSweep3* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17bt32BitAxisSweep3D1Ev(%struct.bt32BitAxisSweep3* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.bt32BitAxisSweep3* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV17bt32BitAxisSweep3, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.bt32BitAxisSweep3* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btAxisSweep3InternalIjED2Ev(%"struct.btAxisSweep3Internal<unsigned int>"* %1)
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItED2Ev(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV20btAxisSweep3InternalItE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 16 ; [#uses=3]
+ %2 = load %struct.btDbvtBroadphase** %1, align 4 ; [#uses=1]
+ %3 = icmp eq %struct.btDbvtBroadphase* %2, null ; [#uses=1]
+ br i1 %3, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 17 ; [#uses=2]
+ %5 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ tail call void %9(%struct..0btMultiSapOverlapFilterCallback* %5)
+ %10 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=1]
+ %11 = bitcast %struct..0btMultiSapOverlapFilterCallback* %10 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %11)
+ %12 = load %struct.btDbvtBroadphase** %1, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btDbvtBroadphase* %12, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to void (%struct.btDbvtBroadphase*)* ; [#uses=1]
+ tail call void %16(%struct.btDbvtBroadphase* %12)
+ %17 = load %struct.btDbvtBroadphase** %1, align 4 ; [#uses=1]
+ %18 = bitcast %struct.btDbvtBroadphase* %17 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %18)
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb, %entry
+ %indvar = phi i32 [ %indvar.next, %bb2 ], [ 0, %bb ], [ 0, %entry ] ; [#uses=2]
+ %tmp13 = sub i32 2, %indvar ; [#uses=1]
+ %scevgep = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 11, i32 %tmp13 ; [#uses=1]
+ %19 = load i8** %scevgep, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %19)
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb2
+
+bb4: ; preds = %bb2
+ %20 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %21 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %21, null ; [#uses=1]
+ br i1 %22, label %bb6, label %bb5
+
+bb5: ; preds = %bb4
+ %23 = bitcast %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %21 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %24 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 14 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb7
+
+bb7: ; preds = %bb6
+ %26 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 12 ; [#uses=2]
+ %27 = load %struct..0btMultiSapOverlapFilterCallback** %26, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %27, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load i32 (...)*** %28, align 4 ; [#uses=1]
+ %30 = load i32 (...)** %29, align 4 ; [#uses=1]
+ %31 = bitcast i32 (...)* %30 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ tail call void %31(%struct..0btMultiSapOverlapFilterCallback* %27)
+ %32 = load %struct..0btMultiSapOverlapFilterCallback** %26, align 4 ; [#uses=1]
+ %33 = bitcast %struct..0btMultiSapOverlapFilterCallback* %32 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %33)
+ ret void
+
+return: ; preds = %bb6
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItED1Ev(%"struct.btAxisSweep3Internal<short unsigned int>"* nocapture %this) align 2 {
+entry:
+ tail call void @_ZN20btAxisSweep3InternalItED2Ev(%"struct.btAxisSweep3Internal<short unsigned int>"* %this)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItED0Ev(%"struct.btAxisSweep3Internal<short unsigned int>"* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV20btAxisSweep3InternalItE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 16 ; [#uses=3]
+ %2 = load %struct.btDbvtBroadphase** %1, align 4 ; [#uses=1]
+ %3 = icmp eq %struct.btDbvtBroadphase* %2, null ; [#uses=1]
+ br i1 %3, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 17 ; [#uses=2]
+ %5 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ tail call void %9(%struct..0btMultiSapOverlapFilterCallback* %5)
+ %10 = load %struct..0btMultiSapOverlapFilterCallback** %4, align 4 ; [#uses=1]
+ %11 = bitcast %struct..0btMultiSapOverlapFilterCallback* %10 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %11)
+ %12 = load %struct.btDbvtBroadphase** %1, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btDbvtBroadphase* %12, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to void (%struct.btDbvtBroadphase*)* ; [#uses=1]
+ tail call void %16(%struct.btDbvtBroadphase* %12)
+ %17 = load %struct.btDbvtBroadphase** %1, align 4 ; [#uses=1]
+ %18 = bitcast %struct.btDbvtBroadphase* %17 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %18)
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb, %entry
+ %indvar = phi i32 [ %indvar.next, %bb2 ], [ 0, %bb ], [ 0, %entry ] ; [#uses=2]
+ %tmp13 = sub i32 2, %indvar ; [#uses=1]
+ %scevgep = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 11, i32 %tmp13 ; [#uses=1]
+ %19 = load i8** %scevgep, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %19)
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb2
+
+bb4: ; preds = %bb2
+ %20 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=1]
+ %21 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %21, null ; [#uses=1]
+ br i1 %22, label %bb6, label %bb5
+
+bb5: ; preds = %bb4
+ %23 = bitcast %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %21 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %24 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 14 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool, label %bb10, label %bb7
+
+bb7: ; preds = %bb6
+ %26 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 12 ; [#uses=2]
+ %27 = load %struct..0btMultiSapOverlapFilterCallback** %26, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %27, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load i32 (...)*** %28, align 4 ; [#uses=1]
+ %30 = load i32 (...)** %29, align 4 ; [#uses=1]
+ %31 = bitcast i32 (...)* %30 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ tail call void %31(%struct..0btMultiSapOverlapFilterCallback* %27)
+ %32 = load %struct..0btMultiSapOverlapFilterCallback** %26, align 4 ; [#uses=1]
+ %33 = bitcast %struct..0btMultiSapOverlapFilterCallback* %32 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %33)
+ br label %bb10
+
+bb10: ; preds = %bb7, %bb6
+ %34 = bitcast %"struct.btAxisSweep3Internal<short unsigned int>"* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %34)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btAxisSweep3D0Ev(%struct.btAxisSweep3* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btAxisSweep3* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV12btAxisSweep3, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btAxisSweep3* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btAxisSweep3InternalItED2Ev(%"struct.btAxisSweep3Internal<short unsigned int>"* %1)
+ %2 = bitcast %struct.btAxisSweep3* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btAxisSweep3D1Ev(%struct.btAxisSweep3* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btAxisSweep3* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV12btAxisSweep3, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btAxisSweep3* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btAxisSweep3InternalItED2Ev(%"struct.btAxisSweep3Internal<short unsigned int>"* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btNullPairCacheD0Ev(%struct.btNullPairCache* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV15btNullPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btBroadphasePair** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btBroadphasePair* %2, null ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btBroadphasePair* %2 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %1, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %1, align 4
+ %8 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = bitcast %struct.btNullPairCache* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %10) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btNullPairCacheD1Ev(%struct.btNullPairCache* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV15btNullPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btBroadphasePair** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btBroadphasePair* %2, null ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btBroadphasePair* %2 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %1, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %1, align 4
+ %8 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btNullPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAxisSweep3InternalIjEC2ERK9btVector3S3_jjjP22btOverlappingPairCacheb(%"struct.btAxisSweep3Internal<unsigned int>"* %this, %struct.btQuadWord* nocapture %worldAabbMin, %struct.btQuadWord* nocapture %worldAabbMax, i32 %handleMask, i32 %handleSentinel, i32 %userMaxHandles, %struct..0btMultiSapOverlapFilterCallback* %pairCache, i8 zeroext %disableRaycastAccelerator) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV20btAxisSweep3InternalIjE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ store i32 %handleMask, i32* %1, align 4
+ %2 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 2 ; [#uses=5]
+ store i32 %handleSentinel, i32* %2, align 4
+ %3 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 12 ; [#uses=2]
+ store %struct..0btMultiSapOverlapFilterCallback* %pairCache, %struct..0btMultiSapOverlapFilterCallback** %3, align 4
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 13 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %4, align 4
+ %5 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 14 ; [#uses=2]
+ store i8 0, i8* %5, align 4
+ %6 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 0, i32* %6, align 4
+ %7 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 16 ; [#uses=2]
+ store %struct.btDbvtBroadphase* null, %struct.btDbvtBroadphase** %7, align 4
+ %8 = add i32 %userMaxHandles, 1 ; [#uses=5]
+ %9 = icmp eq %struct..0btMultiSapOverlapFilterCallback* %pairCache, null ; [#uses=1]
+ br i1 %9, label %bb, label %bb7
+
+bb: ; preds = %entry
+ %10 = invoke i8* @_Z22btAlignedAllocInternalji(i32 76, i32 16)
+ to label %invcont unwind label %lpad ; [#uses=3]
+
+invcont: ; preds = %bb
+ %11 = icmp eq i8* %10, null ; [#uses=1]
+ br i1 %11, label %bb6, label %bb1
+
+bb1: ; preds = %invcont
+ %12 = bitcast i8* %10 to %struct.btHashedOverlappingPairCache* ; [#uses=1]
+ invoke void @_ZN28btHashedOverlappingPairCacheC1Ev(%struct.btHashedOverlappingPairCache* %12)
+ to label %bb6 unwind label %lpad54
+
+bb6: ; preds = %bb1, %invcont
+ %13 = bitcast i8* %10 to %struct..0btMultiSapOverlapFilterCallback* ; [#uses=1]
+ store %struct..0btMultiSapOverlapFilterCallback* %13, %struct..0btMultiSapOverlapFilterCallback** %3, align 4
+ store i8 1, i8* %5, align 4
+ br label %bb7
+
+bb7: ; preds = %bb6, %entry
+ %toBoolnot = icmp eq i8 %disableRaycastAccelerator, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb11, label %bb30
+
+bb11: ; preds = %bb7
+ %14 = invoke i8* @_Z22btAlignedAllocInternalji(i32 24, i32 16)
+ to label %invcont12 unwind label %lpad ; [#uses=7]
+
+invcont12: ; preds = %bb11
+ %15 = icmp eq i8* %14, null ; [#uses=1]
+ br i1 %15, label %bb20, label %bb13
+
+bb13: ; preds = %invcont12
+ %16 = bitcast i8* %14 to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV15btNullPairCache, i32 0, i32 2), i32 (...)*** %16, align 4
+ %17 = getelementptr inbounds i8* %14, i32 20 ; [#uses=1]
+ store i8 1, i8* %17, align 4
+ %18 = getelementptr inbounds i8* %14, i32 16 ; [#uses=1]
+ %19 = bitcast i8* %18 to %struct.btBroadphasePair** ; [#uses=1]
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %19, align 4
+ %20 = getelementptr inbounds i8* %14, i32 8 ; [#uses=1]
+ %21 = bitcast i8* %20 to i32* ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds i8* %14, i32 12 ; [#uses=1]
+ %23 = bitcast i8* %22 to i32* ; [#uses=1]
+ store i32 0, i32* %23, align 4
+ br label %bb20
+
+bb20: ; preds = %bb13, %invcont12
+ %24 = bitcast i8* %14 to %struct..0btMultiSapOverlapFilterCallback* ; [#uses=1]
+ %25 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 17 ; [#uses=2]
+ store %struct..0btMultiSapOverlapFilterCallback* %24, %struct..0btMultiSapOverlapFilterCallback** %25, align 4
+ %26 = invoke i8* @_Z22btAlignedAllocInternalji(i32 156, i32 16)
+ to label %invcont21 unwind label %lpad ; [#uses=3]
+
+invcont21: ; preds = %bb20
+ %27 = bitcast i8* %26 to %struct.btDbvtBroadphase* ; [#uses=2]
+ %28 = icmp eq i8* %26, null ; [#uses=1]
+ br i1 %28, label %bb29, label %bb22
+
+bb22: ; preds = %invcont21
+ %29 = load %struct..0btMultiSapOverlapFilterCallback** %25, align 4 ; [#uses=1]
+ invoke void @_ZN16btDbvtBroadphaseC1EP22btOverlappingPairCache(%struct.btDbvtBroadphase* %27, %struct..0btMultiSapOverlapFilterCallback* %29)
+ to label %bb29 unwind label %lpad62
+
+bb29: ; preds = %bb22, %invcont21
+ store %struct.btDbvtBroadphase* %27, %struct.btDbvtBroadphase** %7, align 4
+ %30 = getelementptr inbounds i8* %26, i32 153 ; [#uses=1]
+ store i8 1, i8* %30, align 1
+ br label %bb30
+
+bb30: ; preds = %bb29, %bb7
+ %31 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=2]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=2]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=2]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=2]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=2]
+ store float %51, float* %49, align 4
+ %52 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ %55 = fsub float %51, %39 ; [#uses=1]
+ %56 = fsub float %48, %36 ; [#uses=1]
+ %57 = fsub float %45, %33 ; [#uses=1]
+ %58 = load i32* %2, align 4 ; [#uses=1]
+ %59 = uitofp i32 %58 to float ; [#uses=3]
+ %60 = fdiv float %59, %55 ; [#uses=1]
+ %61 = fdiv float %59, %56 ; [#uses=1]
+ %62 = fdiv float %59, %57 ; [#uses=1]
+ %63 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store float %62, float* %63, align 4
+ %64 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ store float %61, float* %64, align 4
+ %65 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ store float %60, float* %65, align 4
+ %66 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %66, align 4
+ %67 = mul i32 %8, 76 ; [#uses=1]
+ %68 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %67, i32 16)
+ to label %invcont31 unwind label %lpad ; [#uses=3]
+
+invcont31: ; preds = %bb30
+ %69 = icmp eq i32 %userMaxHandles, -1 ; [#uses=1]
+ br i1 %69, label %bb34, label %bb32
+
+bb32: ; preds = %bb32, %invcont31
+ %indvar90 = phi i32 [ %indvar.next91, %bb32 ], [ 0, %invcont31 ] ; [#uses=2]
+ %tmp94 = mul i32 %indvar90, 76 ; [#uses=2]
+ %scevgep95 = getelementptr i8* %68, i32 %tmp94 ; [#uses=1]
+ %scevgep9596 = bitcast i8* %scevgep95 to i8** ; [#uses=1]
+ %tmp97 = add i32 %tmp94, 8 ; [#uses=1]
+ %scevgep98 = getelementptr i8* %68, i32 %tmp97 ; [#uses=1]
+ %scevgep9899 = bitcast i8* %scevgep98 to i8** ; [#uses=1]
+ store i8* null, i8** %scevgep9596, align 4
+ store i8* null, i8** %scevgep9899, align 4
+ %indvar.next91 = add i32 %indvar90, 1 ; [#uses=2]
+ %exitcond93 = icmp eq i32 %indvar.next91, %8 ; [#uses=1]
+ br i1 %exitcond93, label %bb34, label %bb32
+
+bb34: ; preds = %bb32, %invcont31
+ %70 = bitcast i8* %68 to %"struct.btAxisSweep3Internal<unsigned int>::Handle"* ; [#uses=3]
+ %71 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 8 ; [#uses=9]
+ store %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %70, %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %71, align 4
+ %72 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 %8, i32* %72, align 4
+ %73 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 0, i32* %73, align 4
+ %74 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 9 ; [#uses=1]
+ store i32 1, i32* %74, align 4
+ %75 = icmp ugt i32 %8, 1 ; [#uses=1]
+ br i1 %75, label %bb36, label %bb38
+
+bb36: ; preds = %bb36, %bb34
+ %76 = phi %"struct.btAxisSweep3Internal<unsigned int>::Handle"* [ %70, %bb34 ], [ %.pre, %bb36 ] ; [#uses=1]
+ %indvar = phi i32 [ 0, %bb34 ], [ %tmp, %bb36 ] ; [#uses=2]
+ %tmp = add i32 %indvar, 1 ; [#uses=3]
+ %tmp89 = add i32 %indvar, 2 ; [#uses=1]
+ %scevgep88 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %76, i32 %tmp, i32 1, i32 0 ; [#uses=1]
+ store i32 %tmp89, i32* %scevgep88, align 4
+ %exitcond = icmp eq i32 %tmp, %userMaxHandles ; [#uses=1]
+ %.pre = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %71, align 4 ; [#uses=2]
+ br i1 %exitcond, label %bb38, label %bb36
+
+bb38: ; preds = %bb36, %bb34
+ %77 = phi %"struct.btAxisSweep3Internal<unsigned int>::Handle"* [ %70, %bb34 ], [ %.pre, %bb36 ] ; [#uses=1]
+ %78 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %77, i32 %userMaxHandles, i32 1, i32 0 ; [#uses=1]
+ store i32 0, i32* %78, align 4
+ %79 = shl i32 %8, 4 ; [#uses=1]
+ br label %bb43
+
+bb41: ; preds = %bb43
+ %80 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %79, i32 16)
+ to label %invcont42 unwind label %lpad ; [#uses=2]
+
+invcont42: ; preds = %bb41
+ store i8* %80, i8** %scevgep87, align 4
+ %81 = bitcast i8* %80 to %struct.CONTACT_KEY_TOKEN* ; [#uses=1]
+ store %struct.CONTACT_KEY_TOKEN* %81, %struct.CONTACT_KEY_TOKEN** %scevgep86, align 4
+ %82 = add nsw i32 %83, 1 ; [#uses=1]
+ br label %bb43
+
+bb43: ; preds = %invcont42, %bb38
+ %83 = phi i32 [ 0, %bb38 ], [ %82, %invcont42 ] ; [#uses=4]
+ %scevgep86 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 %83 ; [#uses=1]
+ %scevgep87 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 11, i32 %83 ; [#uses=1]
+ %84 = icmp slt i32 %83, 3 ; [#uses=1]
+ br i1 %84, label %bb41, label %return
+
+return: ; preds = %bb43
+ %85 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %71, align 4 ; [#uses=1]
+ %86 = getelementptr inbounds %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %85, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i8* null, i8** %86, align 4
+ %scevgep85 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 0 ; [#uses=4]
+ %87 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %71, align 4 ; [#uses=1]
+ %scevgep = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %87, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i32 0, i32* %scevgep, align 4
+ %88 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %71, align 4 ; [#uses=1]
+ %scevgep84 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %88, i32 0, i32 2, i32 0 ; [#uses=1]
+ store i32 1, i32* %scevgep84, align 4
+ %89 = load %struct.CONTACT_KEY_TOKEN** %scevgep85, align 4 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %89, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %90, align 4
+ %91 = load %struct.CONTACT_KEY_TOKEN** %scevgep85, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %91, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %92, align 4
+ %93 = load %struct.CONTACT_KEY_TOKEN** %scevgep85, align 4 ; [#uses=1]
+ %94 = load i32* %2, align 4 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %93, i32 1, i32 0 ; [#uses=1]
+ store i32 %94, i32* %95, align 4
+ %96 = load %struct.CONTACT_KEY_TOKEN** %scevgep85, align 4 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %96, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %97, align 4
+ %scevgep85.1 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 1 ; [#uses=4]
+ %98 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %71, align 4 ; [#uses=1]
+ %scevgep.1 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %98, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %scevgep.1, align 4
+ %99 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %71, align 4 ; [#uses=1]
+ %scevgep84.1 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %99, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 1, i32* %scevgep84.1, align 4
+ %100 = load %struct.CONTACT_KEY_TOKEN** %scevgep85.1, align 4 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %100, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %101, align 4
+ %102 = load %struct.CONTACT_KEY_TOKEN** %scevgep85.1, align 4 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %102, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %103, align 4
+ %104 = load %struct.CONTACT_KEY_TOKEN** %scevgep85.1, align 4 ; [#uses=1]
+ %105 = load i32* %2, align 4 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %104, i32 1, i32 0 ; [#uses=1]
+ store i32 %105, i32* %106, align 4
+ %107 = load %struct.CONTACT_KEY_TOKEN** %scevgep85.1, align 4 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %107, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %108, align 4
+ %scevgep85.2 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>"* %this, i32 0, i32 10, i32 2 ; [#uses=4]
+ %109 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %71, align 4 ; [#uses=1]
+ %scevgep.2 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %109, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %scevgep.2, align 4
+ %110 = load %"struct.btAxisSweep3Internal<unsigned int>::Handle"** %71, align 4 ; [#uses=1]
+ %scevgep84.2 = getelementptr %"struct.btAxisSweep3Internal<unsigned int>::Handle"* %110, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 1, i32* %scevgep84.2, align 4
+ %111 = load %struct.CONTACT_KEY_TOKEN** %scevgep85.2, align 4 ; [#uses=1]
+ %112 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %111, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %112, align 4
+ %113 = load %struct.CONTACT_KEY_TOKEN** %scevgep85.2, align 4 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %113, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %114, align 4
+ %115 = load %struct.CONTACT_KEY_TOKEN** %scevgep85.2, align 4 ; [#uses=1]
+ %116 = load i32* %2, align 4 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %115, i32 1, i32 0 ; [#uses=1]
+ store i32 %116, i32* %117, align 4
+ %118 = load %struct.CONTACT_KEY_TOKEN** %scevgep85.2, align 4 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %118, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %119, align 4
+ ret void
+
+lpad: ; preds = %bb41, %bb30, %bb20, %bb11, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select53 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad54: ; preds = %bb1
+ %eh_ptr55 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select57 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr55, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad62: ; preds = %bb22
+ %eh_ptr63 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select65 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr63, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+ppad: ; preds = %lpad62, %lpad54, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr63, %lpad62 ], [ %eh_ptr55, %lpad54 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV21btBroadphaseInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN17bt32BitAxisSweep3C1ERK9btVector3S2_jP22btOverlappingPairCacheb(%struct.bt32BitAxisSweep3* %this, %struct.btQuadWord* nocapture %worldAabbMin, %struct.btQuadWord* nocapture %worldAabbMax, i32 %maxHandles, %struct..0btMultiSapOverlapFilterCallback* %pairCache, i8 zeroext %disableRaycastAccelerator) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.bt32BitAxisSweep3* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btAxisSweep3InternalIjEC2ERK9btVector3S3_jjjP22btOverlappingPairCacheb(%"struct.btAxisSweep3Internal<unsigned int>"* %0, %struct.btQuadWord* %worldAabbMin, %struct.btQuadWord* %worldAabbMax, i32 -2, i32 2147483647, i32 %maxHandles, %struct..0btMultiSapOverlapFilterCallback* %pairCache, i8 zeroext %disableRaycastAccelerator)
+ %1 = getelementptr inbounds %struct.bt32BitAxisSweep3* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV17bt32BitAxisSweep3, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17bt32BitAxisSweep3C2ERK9btVector3S2_jP22btOverlappingPairCacheb(%struct.bt32BitAxisSweep3* %this, %struct.btQuadWord* nocapture %worldAabbMin, %struct.btQuadWord* nocapture %worldAabbMax, i32 %maxHandles, %struct..0btMultiSapOverlapFilterCallback* %pairCache, i8 zeroext %disableRaycastAccelerator) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.bt32BitAxisSweep3* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btAxisSweep3InternalIjEC2ERK9btVector3S3_jjjP22btOverlappingPairCacheb(%"struct.btAxisSweep3Internal<unsigned int>"* %0, %struct.btQuadWord* %worldAabbMin, %struct.btQuadWord* %worldAabbMax, i32 -2, i32 2147483647, i32 %maxHandles, %struct..0btMultiSapOverlapFilterCallback* %pairCache, i8 zeroext %disableRaycastAccelerator)
+ %1 = getelementptr inbounds %struct.bt32BitAxisSweep3* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV17bt32BitAxisSweep3, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAxisSweep3InternalItEC2ERK9btVector3S3_tttP22btOverlappingPairCacheb(%"struct.btAxisSweep3Internal<short unsigned int>"* %this, %struct.btQuadWord* nocapture %worldAabbMin, %struct.btQuadWord* nocapture %worldAabbMax, i16 zeroext %handleMask, i16 zeroext %handleSentinel, i16 zeroext %userMaxHandles, %struct..0btMultiSapOverlapFilterCallback* %pairCache, i8 zeroext %disableRaycastAccelerator) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV20btAxisSweep3InternalItE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 1 ; [#uses=1]
+ store i16 %handleMask, i16* %1, align 4
+ %2 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 2 ; [#uses=5]
+ store i16 %handleSentinel, i16* %2, align 2
+ %3 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 12 ; [#uses=2]
+ store %struct..0btMultiSapOverlapFilterCallback* %pairCache, %struct..0btMultiSapOverlapFilterCallback** %3, align 4
+ %4 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 13 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %4, align 4
+ %5 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 14 ; [#uses=2]
+ store i8 0, i8* %5, align 4
+ %6 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 0, i32* %6, align 4
+ %7 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 16 ; [#uses=2]
+ store %struct.btDbvtBroadphase* null, %struct.btDbvtBroadphase** %7, align 4
+ %8 = add i16 %userMaxHandles, 1 ; [#uses=4]
+ %9 = icmp eq %struct..0btMultiSapOverlapFilterCallback* %pairCache, null ; [#uses=1]
+ br i1 %9, label %bb, label %bb7
+
+bb: ; preds = %entry
+ %10 = invoke i8* @_Z22btAlignedAllocInternalji(i32 76, i32 16)
+ to label %invcont unwind label %lpad ; [#uses=3]
+
+invcont: ; preds = %bb
+ %11 = icmp eq i8* %10, null ; [#uses=1]
+ br i1 %11, label %bb6, label %bb1
+
+bb1: ; preds = %invcont
+ %12 = bitcast i8* %10 to %struct.btHashedOverlappingPairCache* ; [#uses=1]
+ invoke void @_ZN28btHashedOverlappingPairCacheC1Ev(%struct.btHashedOverlappingPairCache* %12)
+ to label %bb6 unwind label %lpad54
+
+bb6: ; preds = %bb1, %invcont
+ %13 = bitcast i8* %10 to %struct..0btMultiSapOverlapFilterCallback* ; [#uses=1]
+ store %struct..0btMultiSapOverlapFilterCallback* %13, %struct..0btMultiSapOverlapFilterCallback** %3, align 4
+ store i8 1, i8* %5, align 4
+ br label %bb7
+
+bb7: ; preds = %bb6, %entry
+ %toBoolnot = icmp eq i8 %disableRaycastAccelerator, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb11, label %bb30
+
+bb11: ; preds = %bb7
+ %14 = invoke i8* @_Z22btAlignedAllocInternalji(i32 24, i32 16)
+ to label %invcont12 unwind label %lpad ; [#uses=7]
+
+invcont12: ; preds = %bb11
+ %15 = icmp eq i8* %14, null ; [#uses=1]
+ br i1 %15, label %bb20, label %bb13
+
+bb13: ; preds = %invcont12
+ %16 = bitcast i8* %14 to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV15btNullPairCache, i32 0, i32 2), i32 (...)*** %16, align 4
+ %17 = getelementptr inbounds i8* %14, i32 20 ; [#uses=1]
+ store i8 1, i8* %17, align 4
+ %18 = getelementptr inbounds i8* %14, i32 16 ; [#uses=1]
+ %19 = bitcast i8* %18 to %struct.btBroadphasePair** ; [#uses=1]
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %19, align 4
+ %20 = getelementptr inbounds i8* %14, i32 8 ; [#uses=1]
+ %21 = bitcast i8* %20 to i32* ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds i8* %14, i32 12 ; [#uses=1]
+ %23 = bitcast i8* %22 to i32* ; [#uses=1]
+ store i32 0, i32* %23, align 4
+ br label %bb20
+
+bb20: ; preds = %bb13, %invcont12
+ %24 = bitcast i8* %14 to %struct..0btMultiSapOverlapFilterCallback* ; [#uses=1]
+ %25 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 17 ; [#uses=2]
+ store %struct..0btMultiSapOverlapFilterCallback* %24, %struct..0btMultiSapOverlapFilterCallback** %25, align 4
+ %26 = invoke i8* @_Z22btAlignedAllocInternalji(i32 156, i32 16)
+ to label %invcont21 unwind label %lpad ; [#uses=3]
+
+invcont21: ; preds = %bb20
+ %27 = bitcast i8* %26 to %struct.btDbvtBroadphase* ; [#uses=2]
+ %28 = icmp eq i8* %26, null ; [#uses=1]
+ br i1 %28, label %bb29, label %bb22
+
+bb22: ; preds = %invcont21
+ %29 = load %struct..0btMultiSapOverlapFilterCallback** %25, align 4 ; [#uses=1]
+ invoke void @_ZN16btDbvtBroadphaseC1EP22btOverlappingPairCache(%struct.btDbvtBroadphase* %27, %struct..0btMultiSapOverlapFilterCallback* %29)
+ to label %bb29 unwind label %lpad62
+
+bb29: ; preds = %bb22, %invcont21
+ store %struct.btDbvtBroadphase* %27, %struct.btDbvtBroadphase** %7, align 4
+ %30 = getelementptr inbounds i8* %26, i32 153 ; [#uses=1]
+ store i8 1, i8* %30, align 1
+ br label %bb30
+
+bb30: ; preds = %bb29, %bb7
+ %31 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=2]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=2]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=2]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=2]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=2]
+ store float %51, float* %49, align 4
+ %52 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ %55 = fsub float %51, %39 ; [#uses=1]
+ %56 = fsub float %48, %36 ; [#uses=1]
+ %57 = fsub float %45, %33 ; [#uses=1]
+ %58 = load i16* %2, align 2 ; [#uses=1]
+ %59 = uitofp i16 %58 to float ; [#uses=3]
+ %60 = fdiv float %59, %55 ; [#uses=1]
+ %61 = fdiv float %59, %56 ; [#uses=1]
+ %62 = fdiv float %59, %57 ; [#uses=1]
+ %63 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store float %62, float* %63, align 4
+ %64 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ store float %61, float* %64, align 4
+ %65 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ store float %60, float* %65, align 4
+ %66 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %66, align 4
+ %67 = zext i16 %8 to i32 ; [#uses=4]
+ %68 = shl i32 %67, 6 ; [#uses=1]
+ %69 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %68, i32 16)
+ to label %invcont31 unwind label %lpad ; [#uses=3]
+
+invcont31: ; preds = %bb30
+ %70 = icmp eq i16 %8, 0 ; [#uses=1]
+ br i1 %70, label %bb34, label %bb32
+
+bb32: ; preds = %bb32, %invcont31
+ %indvar95 = phi i32 [ %indvar.next96, %bb32 ], [ 0, %invcont31 ] ; [#uses=2]
+ %tmp100 = shl i32 %indvar95, 6 ; [#uses=2]
+ %scevgep101 = getelementptr i8* %69, i32 %tmp100 ; [#uses=1]
+ %scevgep101102 = bitcast i8* %scevgep101 to i8** ; [#uses=1]
+ %tmp103106 = or i32 %tmp100, 8 ; [#uses=1]
+ %scevgep104 = getelementptr i8* %69, i32 %tmp103106 ; [#uses=1]
+ %scevgep104105 = bitcast i8* %scevgep104 to i8** ; [#uses=1]
+ store i8* null, i8** %scevgep101102, align 4
+ store i8* null, i8** %scevgep104105, align 4
+ %indvar.next96 = add i32 %indvar95, 1 ; [#uses=2]
+ %exitcond99 = icmp eq i32 %indvar.next96, %67 ; [#uses=1]
+ br i1 %exitcond99, label %bb34, label %bb32
+
+bb34: ; preds = %bb32, %invcont31
+ %71 = bitcast i8* %69 to %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* ; [#uses=3]
+ %72 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 8 ; [#uses=9]
+ store %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %71, %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %72, align 4
+ %73 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 7 ; [#uses=1]
+ store i16 %8, i16* %73, align 2
+ %74 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 6 ; [#uses=1]
+ store i16 0, i16* %74, align 4
+ %75 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 9 ; [#uses=1]
+ store i16 1, i16* %75, align 4
+ %76 = icmp ugt i16 %8, 1 ; [#uses=1]
+ br i1 %76, label %bb.nph80, label %bb38
+
+bb.nph80: ; preds = %bb34
+ %tmp = add i16 %userMaxHandles, -1 ; [#uses=1]
+ %tmp89 = zext i16 %tmp to i32 ; [#uses=1]
+ %tmp90 = add i32 %tmp89, 1 ; [#uses=1]
+ br label %bb36
+
+bb36: ; preds = %bb36, %bb.nph80
+ %77 = phi %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* [ %71, %bb.nph80 ], [ %.pre, %bb36 ] ; [#uses=1]
+ %indvar = phi i32 [ 0, %bb.nph80 ], [ %tmp91, %bb36 ] ; [#uses=2]
+ %tmp91 = add i32 %indvar, 1 ; [#uses=3]
+ %tmp93 = add i32 %indvar, 2 ; [#uses=1]
+ %tmp94 = trunc i32 %tmp93 to i16 ; [#uses=1]
+ %scevgep92 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %77, i32 %tmp91, i32 1, i32 0 ; [#uses=1]
+ store i16 %tmp94, i16* %scevgep92, align 2
+ %exitcond = icmp eq i32 %tmp91, %tmp90 ; [#uses=1]
+ %.pre = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %72, align 4 ; [#uses=2]
+ br i1 %exitcond, label %bb38, label %bb36
+
+bb38: ; preds = %bb36, %bb34
+ %78 = phi %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* [ %71, %bb34 ], [ %.pre, %bb36 ] ; [#uses=1]
+ %79 = add nsw i32 %67, -1 ; [#uses=1]
+ %80 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %78, i32 %79, i32 1, i32 0 ; [#uses=1]
+ store i16 0, i16* %80, align 2
+ %81 = shl i32 %67, 3 ; [#uses=1]
+ br label %bb43
+
+bb41: ; preds = %bb43
+ %82 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %81, i32 16)
+ to label %invcont42 unwind label %lpad ; [#uses=2]
+
+invcont42: ; preds = %bb41
+ store i8* %82, i8** %scevgep88, align 4
+ %83 = bitcast i8* %82 to %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* ; [#uses=1]
+ store %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %83, %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep87, align 4
+ %84 = add nsw i32 %85, 1 ; [#uses=1]
+ br label %bb43
+
+bb43: ; preds = %invcont42, %bb38
+ %85 = phi i32 [ 0, %bb38 ], [ %84, %invcont42 ] ; [#uses=4]
+ %scevgep87 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 %85 ; [#uses=1]
+ %scevgep88 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 11, i32 %85 ; [#uses=1]
+ %86 = icmp slt i32 %85, 3 ; [#uses=1]
+ br i1 %86, label %bb41, label %return
+
+return: ; preds = %bb43
+ %87 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %72, align 4 ; [#uses=1]
+ %88 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %87, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i8* null, i8** %88, align 4
+ %scevgep86 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 0 ; [#uses=4]
+ %89 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %72, align 4 ; [#uses=1]
+ %scevgep = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %89, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i16 0, i16* %scevgep, align 2
+ %90 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %72, align 4 ; [#uses=1]
+ %scevgep85 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %90, i32 0, i32 2, i32 0 ; [#uses=1]
+ store i16 1, i16* %scevgep85, align 2
+ %91 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep86, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %91, i32 0, i32 0 ; [#uses=1]
+ store i16 0, i16* %92, align 2
+ %93 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep86, align 4 ; [#uses=1]
+ %94 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %93, i32 0, i32 1 ; [#uses=1]
+ store i16 0, i16* %94, align 2
+ %95 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep86, align 4 ; [#uses=1]
+ %96 = load i16* %2, align 2 ; [#uses=1]
+ %97 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %95, i32 1, i32 0 ; [#uses=1]
+ store i16 %96, i16* %97, align 2
+ %98 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep86, align 4 ; [#uses=1]
+ %99 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %98, i32 1, i32 1 ; [#uses=1]
+ store i16 0, i16* %99, align 2
+ %scevgep86.1 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 1 ; [#uses=4]
+ %100 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %72, align 4 ; [#uses=1]
+ %scevgep.1 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %100, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i16 0, i16* %scevgep.1, align 2
+ %101 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %72, align 4 ; [#uses=1]
+ %scevgep85.1 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %101, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i16 1, i16* %scevgep85.1, align 2
+ %102 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep86.1, align 4 ; [#uses=1]
+ %103 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %102, i32 0, i32 0 ; [#uses=1]
+ store i16 0, i16* %103, align 2
+ %104 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep86.1, align 4 ; [#uses=1]
+ %105 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %104, i32 0, i32 1 ; [#uses=1]
+ store i16 0, i16* %105, align 2
+ %106 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep86.1, align 4 ; [#uses=1]
+ %107 = load i16* %2, align 2 ; [#uses=1]
+ %108 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %106, i32 1, i32 0 ; [#uses=1]
+ store i16 %107, i16* %108, align 2
+ %109 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep86.1, align 4 ; [#uses=1]
+ %110 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %109, i32 1, i32 1 ; [#uses=1]
+ store i16 0, i16* %110, align 2
+ %scevgep86.2 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>"* %this, i32 0, i32 10, i32 2 ; [#uses=4]
+ %111 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %72, align 4 ; [#uses=1]
+ %scevgep.2 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %111, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i16 0, i16* %scevgep.2, align 2
+ %112 = load %"struct.btAxisSweep3Internal<short unsigned int>::Handle"** %72, align 4 ; [#uses=1]
+ %scevgep85.2 = getelementptr %"struct.btAxisSweep3Internal<short unsigned int>::Handle"* %112, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i16 1, i16* %scevgep85.2, align 2
+ %113 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep86.2, align 4 ; [#uses=1]
+ %114 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %113, i32 0, i32 0 ; [#uses=1]
+ store i16 0, i16* %114, align 2
+ %115 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep86.2, align 4 ; [#uses=1]
+ %116 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %115, i32 0, i32 1 ; [#uses=1]
+ store i16 0, i16* %116, align 2
+ %117 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep86.2, align 4 ; [#uses=1]
+ %118 = load i16* %2, align 2 ; [#uses=1]
+ %119 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %117, i32 1, i32 0 ; [#uses=1]
+ store i16 %118, i16* %119, align 2
+ %120 = load %"struct.btAxisSweep3Internal<short unsigned int>::Edge"** %scevgep86.2, align 4 ; [#uses=1]
+ %121 = getelementptr inbounds %"struct.btAxisSweep3Internal<short unsigned int>::Edge"* %120, i32 1, i32 1 ; [#uses=1]
+ store i16 0, i16* %121, align 2
+ ret void
+
+lpad: ; preds = %bb41, %bb30, %bb20, %bb11, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select53 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad54: ; preds = %bb1
+ %eh_ptr55 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select57 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr55, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad62: ; preds = %bb22
+ %eh_ptr63 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select65 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr63, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+ppad: ; preds = %lpad62, %lpad54, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr63, %lpad62 ], [ %eh_ptr55, %lpad54 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV21btBroadphaseInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN12btAxisSweep3C1ERK9btVector3S2_tP22btOverlappingPairCacheb(%struct.btAxisSweep3* %this, %struct.btQuadWord* nocapture %worldAabbMin, %struct.btQuadWord* nocapture %worldAabbMax, i16 zeroext %maxHandles, %struct..0btMultiSapOverlapFilterCallback* %pairCache, i8 zeroext %disableRaycastAccelerator) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btAxisSweep3* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btAxisSweep3InternalItEC2ERK9btVector3S3_tttP22btOverlappingPairCacheb(%"struct.btAxisSweep3Internal<short unsigned int>"* %0, %struct.btQuadWord* %worldAabbMin, %struct.btQuadWord* %worldAabbMax, i16 zeroext -2, i16 zeroext -1, i16 zeroext %maxHandles, %struct..0btMultiSapOverlapFilterCallback* %pairCache, i8 zeroext %disableRaycastAccelerator)
+ %1 = getelementptr inbounds %struct.btAxisSweep3* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV12btAxisSweep3, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=8]
+define void @_ZN20btCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfo(%struct.btCollisionAlgorithm* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* nocapture %ci) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV20btCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %2 = load %struct.btActionInterface** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %2, %struct.btActionInterface** %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btCollisionAlgorithmD1Ev(%struct.btCollisionAlgorithm* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV20btCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btCollisionAlgorithmD0Ev(%struct.btCollisionAlgorithm* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV20btCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btCollisionAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN20btCollisionAlgorithmC1ERK36btCollisionAlgorithmConstructionInfo(%struct.btCollisionAlgorithm* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* nocapture %ci) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV20btCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %2 = load %struct.btActionInterface** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %2, %struct.btActionInterface** %3, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN6btDbvtC2Ev(%struct.btDbvt* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %0, align 4
+ %1 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %1, align 4
+ %2 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %4, align 4
+ %5 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %5, align 4
+ %6 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ ret void
+}
+
+; [#uses=289]
+declare float @fabsf(float)
+
+; [#uses=1]
+define linkonce_odr void @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodeS3_(%struct.btActionInterface* nocapture %this, %struct.btDbvtNode* nocapture %unnamed_arg, %struct.btDbvtNode* nocapture %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNode(%struct.btActionInterface* nocapture %this, %struct.btDbvtNode* nocapture %unnamed_arg) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN6btDbvt8ICollide7ProcessEPK10btDbvtNodef(%struct.btActionInterface* %this, %struct.btDbvtNode* %n, float %unnamed_arg) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 3 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btActionInterface*, %struct.btDbvtNode*)* ; [#uses=1]
+ tail call void %4(%struct.btActionInterface* %this, %struct.btDbvtNode* %n)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZN6btDbvt8ICollide7DescentEPK10btDbvtNode(%struct.btActionInterface* nocapture %this, %struct.btDbvtNode* nocapture %unnamed_arg) nounwind readnone align 2 {
+entry:
+ ret i8 1
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZN6btDbvt8ICollide9AllLeavesEPK10btDbvtNode(%struct.btActionInterface* nocapture %this, %struct.btDbvtNode* nocapture %unnamed_arg) nounwind readnone align 2 {
+entry:
+ ret i8 1
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN6btDbvt9enumNodesEPK10btDbvtNodeRNS_8ICollideE(%struct.btDbvtNode* %root, %struct.btActionInterface* %policy) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %policy, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 3 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btActionInterface*, %struct.btDbvtNode*)* ; [#uses=1]
+ tail call void %4(%struct.btActionInterface* %policy, %struct.btDbvtNode* %root)
+ %5 = getelementptr inbounds %struct.btDbvtNode* %root, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = load %struct.btDbvtNode** %5, align 4 ; [#uses=1]
+ %toBoolnot.i2 = icmp eq %struct.btDbvtNode* %6, null ; [#uses=1]
+ br i1 %toBoolnot.i2, label %return, label %bb
+
+bb: ; preds = %bb, %entry
+ %root.tr3 = phi %struct.btDbvtNode* [ %10, %bb ], [ %root, %entry ] ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btDbvtNode* %root.tr3, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %8 = load %struct.btDbvtNode** %7, align 4 ; [#uses=1]
+ tail call void @_ZN6btDbvt9enumNodesEPK10btDbvtNodeRNS_8ICollideE(%struct.btDbvtNode* %8, %struct.btActionInterface* %policy) inlinehint
+ %9 = getelementptr inbounds %struct.btDbvtNode* %root.tr3, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %10 = load %struct.btDbvtNode** %9, align 4 ; [#uses=3]
+ %11 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 3 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to void (%struct.btActionInterface*, %struct.btDbvtNode*)* ; [#uses=1]
+ tail call void %14(%struct.btActionInterface* %policy, %struct.btDbvtNode* %10)
+ %15 = getelementptr inbounds %struct.btDbvtNode* %10, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %16 = load %struct.btDbvtNode** %15, align 4 ; [#uses=1]
+ %toBoolnot.i = icmp eq %struct.btDbvtNode* %16, null ; [#uses=1]
+ br i1 %toBoolnot.i, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN6btDbvt8ICollideD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTVN6btDbvt8ICollideE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN6btDbvt8ICollideD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTVN6btDbvt8ICollideE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZN6btDbvt11countLeavesEPK10btDbvtNode(%struct.btDbvtNode* nocapture %node) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtNode* %node, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=2]
+ %toBoolnot.i4 = icmp eq %struct.btDbvtNode* %1, null ; [#uses=1]
+ br i1 %toBoolnot.i4, label %bb2, label %bb
+
+bb: ; preds = %bb, %entry
+ %2 = phi %struct.btDbvtNode* [ %8, %bb ], [ %1, %entry ] ; [#uses=2]
+ %node.tr6 = phi %struct.btDbvtNode* [ %2, %bb ], [ %node, %entry ] ; [#uses=1]
+ %accumulator.tr5 = phi i32 [ %6, %bb ], [ 1, %entry ] ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btDbvtNode* %node.tr6, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.btDbvtNode** %3, align 4 ; [#uses=1]
+ %5 = tail call i32 @_ZN6btDbvt11countLeavesEPK10btDbvtNode(%struct.btDbvtNode* %4) ; [#uses=1]
+ %6 = add nsw i32 %5, %accumulator.tr5 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btDbvtNode* %2, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = load %struct.btDbvtNode** %7, align 4 ; [#uses=2]
+ %toBoolnot.i = icmp eq %struct.btDbvtNode* %8, null ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb2, label %bb
+
+bb2: ; preds = %bb, %entry
+ %accumulator.tr.lcssa = phi i32 [ 1, %entry ], [ %6, %bb ] ; [#uses=1]
+ ret i32 %accumulator.tr.lcssa
+}
+
+; [#uses=3]
+define internal fastcc void @_ZL11getmaxdepthPK10btDbvtNodeiRi(%struct.btDbvtNode* nocapture %node, i32 %depth, i32* %maxdepth) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtNode* %node, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=1]
+ %toBoolnot.i = icmp eq %struct.btDbvtNode* %1, null ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %2 = add nsw i32 %depth, 1 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btDbvtNode* %node, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.btDbvtNode** %3, align 4 ; [#uses=1]
+ call fastcc void @_ZL11getmaxdepthPK10btDbvtNodeiRi(%struct.btDbvtNode* %4, i32 %2, i32* %maxdepth)
+ %5 = load %struct.btDbvtNode** %0, align 4 ; [#uses=1]
+ call fastcc void @_ZL11getmaxdepthPK10btDbvtNodeiRi(%struct.btDbvtNode* %5, i32 %2, i32* %maxdepth)
+ ret void
+
+bb1: ; preds = %entry
+ %6 = load i32* %maxdepth, align 4 ; [#uses=2]
+ %7 = icmp sgt i32 %6, %depth ; [#uses=1]
+ %8 = select i1 %7, i32 %6, i32 %depth ; [#uses=1]
+ store i32 %8, i32* %maxdepth, align 4
+ ret void
+}
+
+; [#uses=0]
+define i32 @_ZN6btDbvt8maxdepthEPK10btDbvtNode(%struct.btDbvtNode* %node) nounwind align 2 {
+entry:
+ %depth = alloca i32, align 4 ; [#uses=3]
+ store i32 0, i32* %depth, align 4
+ %0 = icmp eq %struct.btDbvtNode* %node, null ; [#uses=1]
+ br i1 %0, label %bb1, label %bb
+
+bb: ; preds = %entry
+ call fastcc void @_ZL11getmaxdepthPK10btDbvtNodeiRi(%struct.btDbvtNode* %node, i32 1, i32* %depth)
+ %.pre = load i32* %depth, align 4 ; [#uses=1]
+ ret i32 %.pre
+
+bb1: ; preds = %entry
+ ret i32 0
+}
+
+; [#uses=3]
+define void @_ZN6btDbvtC1Ev(%struct.btDbvt* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %0, align 4
+ %1 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %1, align 4
+ %2 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %4, align 4
+ %5 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %5, align 4
+ %6 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ ret void
+}
+
+; [#uses=7]
+define internal fastcc void @_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(%struct.btDbvt* nocapture %pdbvt, %struct.btDbvtNode* %root, %struct.btDbvtNode* %leaf) {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvt* %pdbvt, i32 0, i32 0 ; [#uses=3]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btDbvtNode* %1, null ; [#uses=1]
+ br i1 %2, label %bb, label %bb1
+
+bb: ; preds = %entry
+ store %struct.btDbvtNode* %leaf, %struct.btDbvtNode** %0, align 4
+ %3 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %3, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btDbvtNode* %root, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %5 = load %struct.btDbvtNode** %4, align 4 ; [#uses=2]
+ %6 = icmp eq %struct.btDbvtNode* %5, null ; [#uses=1]
+ br i1 %6, label %bb8, label %bb4.preheader
+
+bb4.preheader: ; preds = %bb1
+ %7 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fadd float %8, %10 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fadd float %13, %15 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fadd float %18, %20 ; [#uses=2]
+ br label %bb4
+
+bb4: ; preds = %bb4, %bb4.preheader
+ %22 = phi %struct.btDbvtNode* [ %76, %bb4 ], [ %5, %bb4.preheader ] ; [#uses=6]
+ %root_addr.0 = phi %struct.btDbvtNode* [ %74, %bb4 ], [ %root, %bb4.preheader ] ; [#uses=2]
+ %23 = getelementptr inbounds %struct.btDbvtNode* %root_addr.0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %24 = load %struct.btDbvtNode** %23, align 4 ; [#uses=6]
+ %25 = getelementptr inbounds %struct.btDbvtNode* %24, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btDbvtNode* %24, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fadd float %26, %28 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btDbvtNode* %24, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btDbvtNode* %24, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fadd float %31, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btDbvtNode* %24, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btDbvtNode* %24, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fadd float %36, %38 ; [#uses=1]
+ %40 = fsub float %11, %29 ; [#uses=1]
+ %41 = fsub float %16, %34 ; [#uses=1]
+ %42 = fsub float %21, %39 ; [#uses=1]
+ %43 = tail call float @fabsf(float %42) nounwind readnone ; [#uses=1]
+ %44 = tail call float @fabsf(float %41) nounwind readnone ; [#uses=1]
+ %45 = fadd float %43, %44 ; [#uses=1]
+ %46 = tail call float @fabsf(float %40) nounwind readnone ; [#uses=1]
+ %47 = fadd float %45, %46 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btDbvtNode* %22, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btDbvtNode* %22, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fadd float %49, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btDbvtNode* %22, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btDbvtNode* %22, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = fadd float %54, %56 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btDbvtNode* %22, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btDbvtNode* %22, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fadd float %59, %61 ; [#uses=1]
+ %63 = fsub float %11, %52 ; [#uses=1]
+ %64 = fsub float %16, %57 ; [#uses=1]
+ %65 = fsub float %21, %62 ; [#uses=1]
+ %66 = tail call float @fabsf(float %65) nounwind readnone ; [#uses=1]
+ %67 = tail call float @fabsf(float %64) nounwind readnone ; [#uses=1]
+ %68 = fadd float %66, %67 ; [#uses=1]
+ %69 = tail call float @fabsf(float %63) nounwind readnone ; [#uses=1]
+ %70 = fadd float %68, %69 ; [#uses=1]
+ %71 = fcmp uge float %47, %70 ; [#uses=1]
+ %72 = zext i1 %71 to i32 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btDbvtNode* %root_addr.0, i32 0, i32 2, i32 0, i32 %72 ; [#uses=1]
+ %74 = load %struct.btDbvtNode** %73, align 4 ; [#uses=3]
+ %75 = getelementptr inbounds %struct.btDbvtNode* %74, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %76 = load %struct.btDbvtNode** %75, align 4 ; [#uses=2]
+ %77 = icmp eq %struct.btDbvtNode* %76, null ; [#uses=1]
+ br i1 %77, label %bb8, label %bb4
+
+bb8: ; preds = %bb4, %bb1
+ %root_addr.1 = phi %struct.btDbvtNode* [ %root, %bb1 ], [ %74, %bb4 ] ; [#uses=10]
+ %78 = getelementptr inbounds %struct.btDbvtNode* %root_addr.1, i32 0, i32 1 ; [#uses=4]
+ %79 = load %struct.btDbvtNode** %78, align 4 ; [#uses=4]
+ %80 = getelementptr inbounds %struct.btDbvt* %pdbvt, i32 0, i32 1 ; [#uses=2]
+ %81 = load %struct.btDbvtNode** %80, align 4 ; [#uses=2]
+ %82 = icmp eq %struct.btDbvtNode* %81, null ; [#uses=1]
+ br i1 %82, label %bb1.i.i, label %bb.i.i
+
+bb.i.i: ; preds = %bb8
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %80, align 4
+ br label %_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmS5_Pv.exit
+
+bb1.i.i: ; preds = %bb8
+ %83 = tail call i8* @_Z22btAlignedAllocInternalji(i32 44, i32 16) ; [#uses=1]
+ %84 = bitcast i8* %83 to %struct.btDbvtNode* ; [#uses=1]
+ br label %_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmS5_Pv.exit
+
+_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmS5_Pv.exit: ; preds = %bb1.i.i, %bb.i.i
+ %node.0.i.i = phi %struct.btDbvtNode* [ %81, %bb.i.i ], [ %84, %bb1.i.i ] ; [#uses=16]
+ %85 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %79, %struct.btDbvtNode** %85, align 4
+ %86 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %86, align 4
+ %87 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %87, align 4
+ %scevgep.i.i = getelementptr %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep11.i.i = getelementptr %struct.btDbvtNode* %root_addr.1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep12.i.i = getelementptr %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %scevgep13.i.i = getelementptr %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep14.i.i = getelementptr %struct.btDbvtNode* %root_addr.1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep15.i.i = getelementptr %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = load float* %scevgep.i.i, align 4 ; [#uses=2]
+ %89 = load float* %scevgep11.i.i, align 4 ; [#uses=2]
+ %90 = fcmp olt float %88, %89 ; [#uses=1]
+ %storemerge.i.i = select i1 %90, float %88, float %89 ; [#uses=1]
+ store float %storemerge.i.i, float* %scevgep12.i.i, align 4
+ %91 = load float* %scevgep13.i.i, align 4 ; [#uses=2]
+ %92 = load float* %scevgep14.i.i, align 4 ; [#uses=2]
+ %93 = fcmp ogt float %91, %92 ; [#uses=1]
+ %storemerge16.i.i = select i1 %93, float %91, float %92 ; [#uses=1]
+ store float %storemerge16.i.i, float* %scevgep15.i.i, align 4
+ %scevgep.1.i.i = getelementptr %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep11.1.i.i = getelementptr %struct.btDbvtNode* %root_addr.1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep12.1.i.i = getelementptr %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep13.1.i.i = getelementptr %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep14.1.i.i = getelementptr %struct.btDbvtNode* %root_addr.1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep15.1.i.i = getelementptr %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %94 = load float* %scevgep.1.i.i, align 4 ; [#uses=2]
+ %95 = load float* %scevgep11.1.i.i, align 4 ; [#uses=2]
+ %96 = fcmp olt float %94, %95 ; [#uses=1]
+ %storemerge17.i.i = select i1 %96, float %94, float %95 ; [#uses=1]
+ store float %storemerge17.i.i, float* %scevgep12.1.i.i, align 4
+ %97 = load float* %scevgep13.1.i.i, align 4 ; [#uses=2]
+ %98 = load float* %scevgep14.1.i.i, align 4 ; [#uses=2]
+ %99 = fcmp ogt float %97, %98 ; [#uses=1]
+ %storemerge18.i.i = select i1 %99, float %97, float %98 ; [#uses=1]
+ store float %storemerge18.i.i, float* %scevgep15.1.i.i, align 4
+ %scevgep.2.i.i = getelementptr %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep11.2.i.i = getelementptr %struct.btDbvtNode* %root_addr.1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep12.2.i.i = getelementptr %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep13.2.i.i = getelementptr %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep14.2.i.i = getelementptr %struct.btDbvtNode* %root_addr.1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep15.2.i.i = getelementptr %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %100 = load float* %scevgep.2.i.i, align 4 ; [#uses=2]
+ %101 = load float* %scevgep11.2.i.i, align 4 ; [#uses=2]
+ %102 = fcmp olt float %100, %101 ; [#uses=1]
+ %storemerge19.i.i = select i1 %102, float %100, float %101 ; [#uses=1]
+ store float %storemerge19.i.i, float* %scevgep12.2.i.i, align 4
+ %103 = load float* %scevgep13.2.i.i, align 4 ; [#uses=2]
+ %104 = load float* %scevgep14.2.i.i, align 4 ; [#uses=2]
+ %105 = fcmp ogt float %103, %104 ; [#uses=1]
+ %storemerge20.i.i = select i1 %105, float %103, float %104 ; [#uses=1]
+ store float %storemerge20.i.i, float* %scevgep15.2.i.i, align 4
+ %106 = icmp eq %struct.btDbvtNode* %79, null ; [#uses=1]
+ br i1 %106, label %bb16, label %bb9
+
+bb9: ; preds = %_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmS5_Pv.exit
+ %107 = load %struct.btDbvtNode** %78, align 4 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btDbvtNode* %107, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %109 = load %struct.btDbvtNode** %108, align 4 ; [#uses=1]
+ %110 = icmp eq %struct.btDbvtNode* %109, %root_addr.1 ; [#uses=1]
+ %111 = zext i1 %110 to i32 ; [#uses=1]
+ %112 = getelementptr inbounds %struct.btDbvtNode* %79, i32 0, i32 2, i32 0, i32 %111 ; [#uses=1]
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %112, align 4
+ store %struct.btDbvtNode* %root_addr.1, %struct.btDbvtNode** %86, align 4
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %78, align 4
+ store %struct.btDbvtNode* %leaf, %struct.btDbvtNode** %87, align 4
+ %113 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %113, align 4
+ %.pre = load float* %scevgep12.i.i, align 4 ; [#uses=1]
+ br label %bb10
+
+bb10: ; preds = %bb14, %bb9
+ %114 = phi float [ %.pre, %bb9 ], [ %storemerge.i, %bb14 ] ; [#uses=1]
+ %prev.0 = phi %struct.btDbvtNode* [ %79, %bb9 ], [ %165, %bb14 ] ; [#uses=15]
+ %node.0 = phi %struct.btDbvtNode* [ %node.0.i.i, %bb9 ], [ %prev.0, %bb14 ] ; [#uses=5]
+ %115 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %116 = load float* %115, align 4 ; [#uses=1]
+ %117 = fcmp ugt float %116, %114 ; [#uses=1]
+ br i1 %117, label %bb14, label %bb.i
+
+bb.i: ; preds = %bb10
+ %118 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %119 = load float* %118, align 4 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btDbvtNode* %node.0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %121 = load float* %120, align 4 ; [#uses=1]
+ %122 = fcmp ugt float %119, %121 ; [#uses=1]
+ br i1 %122, label %bb14, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %123 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %124 = load float* %123, align 4 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btDbvtNode* %node.0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %126 = load float* %125, align 4 ; [#uses=1]
+ %127 = fcmp ugt float %124, %126 ; [#uses=1]
+ br i1 %127, label %bb14, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %128 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %129 = load float* %128, align 4 ; [#uses=1]
+ %130 = getelementptr inbounds %struct.btDbvtNode* %node.0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %131 = load float* %130, align 4 ; [#uses=1]
+ %132 = fcmp ult float %129, %131 ; [#uses=1]
+ br i1 %132, label %bb14, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %133 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %134 = load float* %133, align 4 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btDbvtNode* %node.0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %136 = load float* %135, align 4 ; [#uses=1]
+ %137 = fcmp ult float %134, %136 ; [#uses=1]
+ br i1 %137, label %bb14, label %_ZNK12btDbvtAabbMm7ContainERKS_.exit
+
+_ZNK12btDbvtAabbMm7ContainERKS_.exit: ; preds = %bb3.i
+ %138 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %139 = load float* %138, align 4 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btDbvtNode* %node.0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ %phitmp = fcmp ult float %139, %141 ; [#uses=1]
+ br i1 %phitmp, label %bb14, label %return
+
+bb14: ; preds = %_ZNK12btDbvtAabbMm7ContainERKS_.exit, %bb3.i, %bb2.i, %bb1.i, %bb.i, %bb10
+ %142 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %143 = load %struct.btDbvtNode** %142, align 4 ; [#uses=6]
+ %144 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %145 = load %struct.btDbvtNode** %144, align 4 ; [#uses=6]
+ %scevgep.i = getelementptr %struct.btDbvtNode* %145, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep11.i = getelementptr %struct.btDbvtNode* %143, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep13.i = getelementptr %struct.btDbvtNode* %145, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep14.i = getelementptr %struct.btDbvtNode* %143, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep15.i = getelementptr %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %146 = load float* %scevgep.i, align 4 ; [#uses=2]
+ %147 = load float* %scevgep11.i, align 4 ; [#uses=2]
+ %148 = fcmp olt float %146, %147 ; [#uses=1]
+ %storemerge.i = select i1 %148, float %146, float %147 ; [#uses=2]
+ store float %storemerge.i, float* %115, align 4
+ %149 = load float* %scevgep13.i, align 4 ; [#uses=2]
+ %150 = load float* %scevgep14.i, align 4 ; [#uses=2]
+ %151 = fcmp ogt float %149, %150 ; [#uses=1]
+ %storemerge16.i = select i1 %151, float %149, float %150 ; [#uses=1]
+ store float %storemerge16.i, float* %scevgep15.i, align 4
+ %scevgep.1.i = getelementptr %struct.btDbvtNode* %145, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep11.1.i = getelementptr %struct.btDbvtNode* %143, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep12.1.i = getelementptr %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep13.1.i = getelementptr %struct.btDbvtNode* %145, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep14.1.i = getelementptr %struct.btDbvtNode* %143, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep15.1.i = getelementptr %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %152 = load float* %scevgep.1.i, align 4 ; [#uses=2]
+ %153 = load float* %scevgep11.1.i, align 4 ; [#uses=2]
+ %154 = fcmp olt float %152, %153 ; [#uses=1]
+ %storemerge17.i = select i1 %154, float %152, float %153 ; [#uses=1]
+ store float %storemerge17.i, float* %scevgep12.1.i, align 4
+ %155 = load float* %scevgep13.1.i, align 4 ; [#uses=2]
+ %156 = load float* %scevgep14.1.i, align 4 ; [#uses=2]
+ %157 = fcmp ogt float %155, %156 ; [#uses=1]
+ %storemerge18.i = select i1 %157, float %155, float %156 ; [#uses=1]
+ store float %storemerge18.i, float* %scevgep15.1.i, align 4
+ %scevgep.2.i = getelementptr %struct.btDbvtNode* %145, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep11.2.i = getelementptr %struct.btDbvtNode* %143, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep12.2.i = getelementptr %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep13.2.i = getelementptr %struct.btDbvtNode* %145, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep14.2.i = getelementptr %struct.btDbvtNode* %143, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep15.2.i = getelementptr %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %158 = load float* %scevgep.2.i, align 4 ; [#uses=2]
+ %159 = load float* %scevgep11.2.i, align 4 ; [#uses=2]
+ %160 = fcmp olt float %158, %159 ; [#uses=1]
+ %storemerge19.i = select i1 %160, float %158, float %159 ; [#uses=1]
+ store float %storemerge19.i, float* %scevgep12.2.i, align 4
+ %161 = load float* %scevgep13.2.i, align 4 ; [#uses=2]
+ %162 = load float* %scevgep14.2.i, align 4 ; [#uses=2]
+ %163 = fcmp ogt float %161, %162 ; [#uses=1]
+ %storemerge20.i = select i1 %163, float %161, float %162 ; [#uses=1]
+ store float %storemerge20.i, float* %scevgep15.2.i, align 4
+ %164 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 1 ; [#uses=1]
+ %165 = load %struct.btDbvtNode** %164, align 4 ; [#uses=2]
+ %166 = icmp eq %struct.btDbvtNode* %165, null ; [#uses=1]
+ br i1 %166, label %return, label %bb10
+
+bb16: ; preds = %_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmS5_Pv.exit
+ store %struct.btDbvtNode* %root_addr.1, %struct.btDbvtNode** %86, align 4
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %78, align 4
+ store %struct.btDbvtNode* %leaf, %struct.btDbvtNode** %87, align 4
+ %167 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %167, align 4
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %0, align 4
+ ret void
+
+return: ; preds = %bb14, %_ZNK12btDbvtAabbMm7ContainERKS_.exit
+ ret void
+}
+
+; [#uses=6]
+define %struct.btDbvtNode* @_ZN6btDbvt6insertERK12btDbvtAabbMmPv(%struct.btDbvt* nocapture %this, %struct.GIM_AABB* nocapture %volume, i8* %data) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 1 ; [#uses=2]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btDbvtNode* %1, null ; [#uses=1]
+ br i1 %2, label %bb1.i.i, label %bb.i.i
+
+bb.i.i: ; preds = %entry
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %0, align 4
+ br label %_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmPv.exit
+
+bb1.i.i: ; preds = %entry
+ %3 = tail call i8* @_Z22btAlignedAllocInternalji(i32 44, i32 16) ; [#uses=1]
+ %4 = bitcast i8* %3 to %struct.btDbvtNode* ; [#uses=1]
+ br label %_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmPv.exit
+
+_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmPv.exit: ; preds = %bb1.i.i, %bb.i.i
+ %node.0.i.i = phi %struct.btDbvtNode* [ %1, %bb.i.i ], [ %4, %bb1.i.i ] ; [#uses=13]
+ %5 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %5, align 4
+ %6 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %data.c.i.i = bitcast i8* %data to %struct.btDbvtNode* ; [#uses=1]
+ store %struct.btDbvtNode* %data.c.i.i, %struct.btDbvtNode** %6, align 4
+ %7 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %7, align 4
+ %8 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=1]
+ %33 = load %struct.btDbvtNode** %32, align 4 ; [#uses=1]
+ tail call fastcc void @_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(%struct.btDbvt* %this, %struct.btDbvtNode* %33, %struct.btDbvtNode* %node.0.i.i)
+ %34 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 3 ; [#uses=2]
+ %35 = load i32* %34, align 4 ; [#uses=1]
+ %36 = add nsw i32 %35, 1 ; [#uses=1]
+ store i32 %36, i32* %34, align 4
+ ret %struct.btDbvtNode* %node.0.i.i
+}
+
+; [#uses=2]
+define internal fastcc void @_ZL8bottomupP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeE(%struct.btDbvt* nocapture %pdbvt, %"struct.btAlignedObjectArray<btDbvtNode*>"* nocapture %leaves) {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 1 ; [#uses=4]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = icmp sgt i32 %1, 1 ; [#uses=1]
+ br i1 %2, label %bb.nph49, label %return
+
+bb.nph: ; preds = %bb5.preheader
+ %tmp66 = xor i32 %33, -1 ; [#uses=1]
+ %3 = load %struct.btDbvtNode*** %81, align 4 ; [#uses=2]
+ %scevgep68 = getelementptr %struct.btDbvtNode** %3, i32 %33 ; [#uses=1]
+ %4 = load %struct.btDbvtNode** %scevgep68, align 4 ; [#uses=6]
+ %scevgep.i.i13 = getelementptr %struct.btDbvtNode* %4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep13.i.i15 = getelementptr %struct.btDbvtNode* %4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %scevgep.i.i13, align 4 ; [#uses=2]
+ %6 = load float* %scevgep13.i.i15, align 4 ; [#uses=2]
+ %scevgep.1.i.i19 = getelementptr %struct.btDbvtNode* %4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep13.1.i.i21 = getelementptr %struct.btDbvtNode* %4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %scevgep.1.i.i19, align 4 ; [#uses=2]
+ %8 = load float* %scevgep13.1.i.i21, align 4 ; [#uses=2]
+ %scevgep.2.i.i25 = getelementptr %struct.btDbvtNode* %4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep13.2.i.i27 = getelementptr %struct.btDbvtNode* %4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %scevgep.2.i.i25, align 4 ; [#uses=2]
+ %10 = load float* %scevgep13.2.i.i27, align 4 ; [#uses=2]
+ %tmp63 = icmp sgt i32 %83, %tmp ; [#uses=1]
+ %smax64 = select i1 %tmp63, i32 %83, i32 %tmp ; [#uses=1]
+ %tmp53 = add i32 %smax64, %tmp66 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb2 ] ; [#uses=2]
+ %minsize.138 = phi float [ %minsize.244, %bb.nph ], [ %minsize.0, %bb2 ] ; [#uses=2]
+ %minidx.0.137 = phi i32 [ %minidx.0.243, %bb.nph ], [ %minidx.0.0, %bb2 ] ; [#uses=1]
+ %minidx.1.136 = phi i32 [ %minidx.1.242, %bb.nph ], [ %minidx.1.0, %bb2 ] ; [#uses=1]
+ %j.039 = add i32 %j.035, %indvar ; [#uses=2]
+ %scevgep = getelementptr %struct.btDbvtNode** %3, i32 %j.039 ; [#uses=1]
+ %11 = load %struct.btDbvtNode** %scevgep, align 4 ; [#uses=6]
+ %scevgep11.i.i14 = getelementptr %struct.btDbvtNode* %11, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep14.i.i16 = getelementptr %struct.btDbvtNode* %11, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %12 = load float* %scevgep11.i.i14, align 4 ; [#uses=2]
+ %13 = fcmp olt float %5, %12 ; [#uses=1]
+ %storemerge.i.i17 = select i1 %13, float %5, float %12 ; [#uses=1]
+ %14 = load float* %scevgep14.i.i16, align 4 ; [#uses=2]
+ %15 = fcmp ogt float %6, %14 ; [#uses=1]
+ %storemerge16.i.i18 = select i1 %15, float %6, float %14 ; [#uses=1]
+ %scevgep11.1.i.i20 = getelementptr %struct.btDbvtNode* %11, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep14.1.i.i22 = getelementptr %struct.btDbvtNode* %11, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %scevgep11.1.i.i20, align 4 ; [#uses=2]
+ %17 = fcmp olt float %7, %16 ; [#uses=1]
+ %storemerge17.i.i23 = select i1 %17, float %7, float %16 ; [#uses=1]
+ %18 = load float* %scevgep14.1.i.i22, align 4 ; [#uses=2]
+ %19 = fcmp ogt float %8, %18 ; [#uses=1]
+ %storemerge18.i.i24 = select i1 %19, float %8, float %18 ; [#uses=1]
+ %scevgep11.2.i.i26 = getelementptr %struct.btDbvtNode* %11, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep14.2.i.i28 = getelementptr %struct.btDbvtNode* %11, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %scevgep11.2.i.i26, align 4 ; [#uses=2]
+ %21 = fcmp olt float %9, %20 ; [#uses=1]
+ %storemerge19.i.i29 = select i1 %21, float %9, float %20 ; [#uses=1]
+ %22 = load float* %scevgep14.2.i.i28, align 4 ; [#uses=2]
+ %23 = fcmp ogt float %10, %22 ; [#uses=1]
+ %storemerge20.i.i30 = select i1 %23, float %10, float %22 ; [#uses=1]
+ %24 = fsub float %storemerge20.i.i30, %storemerge19.i.i29 ; [#uses=2]
+ %25 = fsub float %storemerge18.i.i24, %storemerge17.i.i23 ; [#uses=2]
+ %26 = fsub float %storemerge16.i.i18, %storemerge.i.i17 ; [#uses=2]
+ %27 = fmul float %26, %25 ; [#uses=1]
+ %28 = fmul float %27, %24 ; [#uses=1]
+ %29 = fadd float %28, %26 ; [#uses=1]
+ %30 = fadd float %29, %25 ; [#uses=1]
+ %31 = fadd float %30, %24 ; [#uses=2]
+ %32 = fcmp olt float %31, %minsize.138 ; [#uses=3]
+ %minidx.1.0 = select i1 %32, i32 %j.039, i32 %minidx.1.136 ; [#uses=2]
+ %minidx.0.0 = select i1 %32, i32 %33, i32 %minidx.0.137 ; [#uses=2]
+ %minsize.0 = select i1 %32, float %31, float %minsize.138 ; [#uses=2]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp53 ; [#uses=1]
+ br i1 %exitcond, label %bb6, label %bb2
+
+bb6: ; preds = %bb5.preheader, %bb2
+ %minsize.1.lcssa = phi float [ %minsize.244, %bb5.preheader ], [ %minsize.0, %bb2 ] ; [#uses=1]
+ %minidx.0.1.lcssa = phi i32 [ %minidx.0.243, %bb5.preheader ], [ %minidx.0.0, %bb2 ] ; [#uses=2]
+ %minidx.1.1.lcssa = phi i32 [ %minidx.1.242, %bb5.preheader ], [ %minidx.1.0, %bb2 ] ; [#uses=2]
+ %exitcond58 = icmp eq i32 %j.035, %83 ; [#uses=1]
+ br i1 %exitcond58, label %bb9, label %bb5.preheader
+
+bb5.preheader: ; preds = %bb7.preheader, %bb6
+ %33 = phi i32 [ %j.035, %bb6 ], [ 0, %bb7.preheader ] ; [#uses=5]
+ %minsize.244 = phi float [ %minsize.1.lcssa, %bb6 ], [ 0x47EFFFFFE0000000, %bb7.preheader ] ; [#uses=2]
+ %minidx.0.243 = phi i32 [ %minidx.0.1.lcssa, %bb6 ], [ -1, %bb7.preheader ] ; [#uses=2]
+ %minidx.1.242 = phi i32 [ %minidx.1.1.lcssa, %bb6 ], [ -1, %bb7.preheader ] ; [#uses=2]
+ %j.035 = add i32 %33, 1 ; [#uses=4]
+ %tmp = add i32 %33, 2 ; [#uses=2]
+ %34 = icmp sgt i32 %83, %j.035 ; [#uses=1]
+ br i1 %34, label %bb.nph, label %bb6
+
+bb9: ; preds = %bb7.preheader, %bb6
+ %minidx.0.2.lcssa = phi i32 [ %minidx.0.1.lcssa, %bb6 ], [ -1, %bb7.preheader ] ; [#uses=2]
+ %minidx.1.2.lcssa = phi i32 [ %minidx.1.1.lcssa, %bb6 ], [ -1, %bb7.preheader ] ; [#uses=2]
+ %35 = load %struct.btDbvtNode*** %81, align 4 ; [#uses=2]
+ %36 = getelementptr inbounds %struct.btDbvtNode** %35, i32 %minidx.0.2.lcssa ; [#uses=1]
+ %37 = load %struct.btDbvtNode** %36, align 4 ; [#uses=8]
+ %38 = getelementptr inbounds %struct.btDbvtNode** %35, i32 %minidx.1.2.lcssa ; [#uses=1]
+ %39 = load %struct.btDbvtNode** %38, align 4 ; [#uses=8]
+ %40 = load %struct.btDbvtNode** %82, align 4 ; [#uses=2]
+ %41 = icmp eq %struct.btDbvtNode* %40, null ; [#uses=1]
+ br i1 %41, label %bb1.i.i, label %bb.i.i
+
+bb.i.i: ; preds = %bb9
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %82, align 4
+ br label %_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmS5_Pv.exit
+
+bb1.i.i: ; preds = %bb9
+ %42 = tail call i8* @_Z22btAlignedAllocInternalji(i32 44, i32 16) ; [#uses=1]
+ %43 = bitcast i8* %42 to %struct.btDbvtNode* ; [#uses=1]
+ br label %_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmS5_Pv.exit
+
+_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmS5_Pv.exit: ; preds = %bb1.i.i, %bb.i.i
+ %node.0.i.i = phi %struct.btDbvtNode* [ %40, %bb.i.i ], [ %43, %bb1.i.i ] ; [#uses=12]
+ %44 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %44, align 4
+ %45 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %45, align 4
+ %46 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %46, align 4
+ %scevgep.i.i = getelementptr %struct.btDbvtNode* %37, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep11.i.i = getelementptr %struct.btDbvtNode* %39, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep12.i.i = getelementptr %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep13.i.i = getelementptr %struct.btDbvtNode* %37, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep14.i.i = getelementptr %struct.btDbvtNode* %39, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep15.i.i = getelementptr %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %scevgep.i.i, align 4 ; [#uses=2]
+ %48 = load float* %scevgep11.i.i, align 4 ; [#uses=2]
+ %49 = fcmp olt float %47, %48 ; [#uses=1]
+ %storemerge.i.i = select i1 %49, float %47, float %48 ; [#uses=1]
+ store float %storemerge.i.i, float* %scevgep12.i.i, align 4
+ %50 = load float* %scevgep13.i.i, align 4 ; [#uses=2]
+ %51 = load float* %scevgep14.i.i, align 4 ; [#uses=2]
+ %52 = fcmp ogt float %50, %51 ; [#uses=1]
+ %storemerge16.i.i = select i1 %52, float %50, float %51 ; [#uses=1]
+ store float %storemerge16.i.i, float* %scevgep15.i.i, align 4
+ %scevgep.1.i.i = getelementptr %struct.btDbvtNode* %37, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep11.1.i.i = getelementptr %struct.btDbvtNode* %39, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep12.1.i.i = getelementptr %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep13.1.i.i = getelementptr %struct.btDbvtNode* %37, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep14.1.i.i = getelementptr %struct.btDbvtNode* %39, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep15.1.i.i = getelementptr %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %scevgep.1.i.i, align 4 ; [#uses=2]
+ %54 = load float* %scevgep11.1.i.i, align 4 ; [#uses=2]
+ %55 = fcmp olt float %53, %54 ; [#uses=1]
+ %storemerge17.i.i = select i1 %55, float %53, float %54 ; [#uses=1]
+ store float %storemerge17.i.i, float* %scevgep12.1.i.i, align 4
+ %56 = load float* %scevgep13.1.i.i, align 4 ; [#uses=2]
+ %57 = load float* %scevgep14.1.i.i, align 4 ; [#uses=2]
+ %58 = fcmp ogt float %56, %57 ; [#uses=1]
+ %storemerge18.i.i = select i1 %58, float %56, float %57 ; [#uses=1]
+ store float %storemerge18.i.i, float* %scevgep15.1.i.i, align 4
+ %scevgep.2.i.i = getelementptr %struct.btDbvtNode* %37, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep11.2.i.i = getelementptr %struct.btDbvtNode* %39, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep12.2.i.i = getelementptr %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep13.2.i.i = getelementptr %struct.btDbvtNode* %37, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep14.2.i.i = getelementptr %struct.btDbvtNode* %39, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep15.2.i.i = getelementptr %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %59 = load float* %scevgep.2.i.i, align 4 ; [#uses=2]
+ %60 = load float* %scevgep11.2.i.i, align 4 ; [#uses=2]
+ %61 = fcmp olt float %59, %60 ; [#uses=1]
+ %storemerge19.i.i = select i1 %61, float %59, float %60 ; [#uses=1]
+ store float %storemerge19.i.i, float* %scevgep12.2.i.i, align 4
+ %62 = load float* %scevgep13.2.i.i, align 4 ; [#uses=2]
+ %63 = load float* %scevgep14.2.i.i, align 4 ; [#uses=2]
+ %64 = fcmp ogt float %62, %63 ; [#uses=1]
+ %storemerge20.i.i = select i1 %64, float %62, float %63 ; [#uses=1]
+ store float %storemerge20.i.i, float* %scevgep15.2.i.i, align 4
+ store %struct.btDbvtNode* %37, %struct.btDbvtNode** %45, align 4
+ store %struct.btDbvtNode* %39, %struct.btDbvtNode** %46, align 4
+ %65 = getelementptr inbounds %struct.btDbvtNode* %37, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %65, align 4
+ %66 = getelementptr inbounds %struct.btDbvtNode* %39, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %66, align 4
+ %67 = load %struct.btDbvtNode*** %81, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btDbvtNode** %67, i32 %minidx.0.2.lcssa ; [#uses=1]
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %68, align 4
+ %69 = load i32* %0, align 4 ; [#uses=1]
+ %70 = add nsw i32 %69, -1 ; [#uses=2]
+ %71 = load %struct.btDbvtNode*** %81, align 4 ; [#uses=2]
+ %72 = getelementptr inbounds %struct.btDbvtNode** %71, i32 %minidx.1.2.lcssa ; [#uses=2]
+ %73 = load %struct.btDbvtNode** %72, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btDbvtNode** %71, i32 %70 ; [#uses=1]
+ %75 = load %struct.btDbvtNode** %74, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %75, %struct.btDbvtNode** %72, align 4
+ %76 = load %struct.btDbvtNode*** %81, align 4 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btDbvtNode** %76, i32 %70 ; [#uses=1]
+ store %struct.btDbvtNode* %73, %struct.btDbvtNode** %77, align 4
+ %78 = load i32* %0, align 4 ; [#uses=1]
+ %79 = add nsw i32 %78, -1 ; [#uses=3]
+ store i32 %79, i32* %0, align 4
+ %80 = icmp sgt i32 %79, 1 ; [#uses=1]
+ br i1 %80, label %bb7.preheader, label %return
+
+bb.nph49: ; preds = %entry
+ %81 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 3 ; [#uses=5]
+ %82 = getelementptr inbounds %struct.btDbvt* %pdbvt, i32 0, i32 1 ; [#uses=2]
+ br label %bb7.preheader
+
+bb7.preheader: ; preds = %bb.nph49, %_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmS5_Pv.exit
+ %83 = phi i32 [ %1, %bb.nph49 ], [ %79, %_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmS5_Pv.exit ] ; [#uses=5]
+ %84 = icmp sgt i32 %83, 0 ; [#uses=1]
+ br i1 %84, label %bb5.preheader, label %bb9
+
+return: ; preds = %_ZL10createnodeP6btDbvtP10btDbvtNodeRK12btDbvtAabbMmS5_Pv.exit, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN6btDbvt13extractLeavesEPK10btDbvtNodeR20btAlignedObjectArrayIS2_E(%struct.btDbvtNode* %node, %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtNode* %node, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=1]
+ %toBoolnot.i3 = icmp eq %struct.btDbvtNode* %1, null ; [#uses=1]
+ br i1 %toBoolnot.i3, label %bb1, label %bb
+
+bb: ; preds = %bb, %entry
+ %node.tr4 = phi %struct.btDbvtNode* [ %5, %bb ], [ %node, %entry ] ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btDbvtNode* %node.tr4, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = load %struct.btDbvtNode** %2, align 4 ; [#uses=1]
+ tail call void @_ZN6btDbvt13extractLeavesEPK10btDbvtNodeR20btAlignedObjectArrayIS2_E(%struct.btDbvtNode* %3, %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves)
+ %4 = getelementptr inbounds %struct.btDbvtNode* %node.tr4, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %5 = load %struct.btDbvtNode** %4, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btDbvtNode* %5, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btDbvtNode** %6, align 4 ; [#uses=1]
+ %toBoolnot.i = icmp eq %struct.btDbvtNode* %7, null ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb1, label %bb
+
+bb1: ; preds = %bb, %entry
+ %node.tr.lcssa = phi %struct.btDbvtNode* [ %node, %entry ], [ %5, %bb ] ; [#uses=1]
+ %8 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 1 ; [#uses=5]
+ %9 = load i32* %8, align 4 ; [#uses=6]
+ %10 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 2 ; [#uses=2]
+ %11 = load i32* %10, align 4 ; [#uses=2]
+ %12 = icmp eq i32 %11, %9 ; [#uses=1]
+ br i1 %12, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb1
+ %13 = icmp eq i32 %9, 0 ; [#uses=1]
+ %14 = shl i32 %9, 1 ; [#uses=1]
+ %iftmp.309.0.i.i = select i1 %13, i32 1, i32 %14 ; [#uses=4]
+ %15 = icmp slt i32 %11, %iftmp.309.0.i.i ; [#uses=1]
+ br i1 %15, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %16 = icmp eq i32 %iftmp.309.0.i.i, 0 ; [#uses=1]
+ br i1 %16, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %17 = shl i32 %iftmp.309.0.i.i, 2 ; [#uses=1]
+ %18 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %17, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %18 to %struct.btDbvtNode** ; [#uses=1]
+ %.pre.i = load i32* %8, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %19 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %9, %bb.i.i ] ; [#uses=2]
+ %20 = phi %struct.btDbvtNode** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %21 = icmp sgt i32 %19, 0 ; [#uses=1]
+ br i1 %21, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i
+ %22 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btDbvtNode** %20, i32 %indvar.i.i.i ; [#uses=2]
+ %23 = icmp eq %struct.btDbvtNode** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %23, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %24 = load %struct.btDbvtNode*** %22, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btDbvtNode** %24, i32 %indvar.i.i.i ; [#uses=1]
+ %25 = load %struct.btDbvtNode** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %25, %struct.btDbvtNode** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %19 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i
+ %26 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 3 ; [#uses=3]
+ %27 = load %struct.btDbvtNode*** %26, align 4 ; [#uses=2]
+ %28 = icmp eq %struct.btDbvtNode** %27, null ; [#uses=1]
+ br i1 %28, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i
+ %29 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 4 ; [#uses=1]
+ %30 = load i8* %29, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %30, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %31 = bitcast %struct.btDbvtNode** %27 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %31)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %26, align 4
+ br label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i
+ %32 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %32, align 4
+ store %struct.btDbvtNode** %20, %struct.btDbvtNode*** %26, align 4
+ store i32 %iftmp.309.0.i.i, i32* %10, align 4
+ %.pre5.i = load i32* %8, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i.i, %bb.i, %bb1
+ %33 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i.i ], [ %9, %bb1 ], [ %9, %bb.i ] ; [#uses=2]
+ %34 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 3 ; [#uses=1]
+ %35 = load %struct.btDbvtNode*** %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btDbvtNode** %35, i32 %33 ; [#uses=2]
+ %37 = icmp eq %struct.btDbvtNode** %36, null ; [#uses=1]
+ br i1 %37, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE9push_backERKS2_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %struct.btDbvtNode* %node.tr.lcssa, %struct.btDbvtNode** %36, align 4
+ %.pre6.i = load i32* %8, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE9push_backERKS2_.exit
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeE9push_backERKS2_.exit: ; preds = %bb2.i, %bb1.i
+ %38 = phi i32 [ %33, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %39 = add nsw i32 %38, 1 ; [#uses=1]
+ store i32 %39, i32* %8, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btDbvtNodeEnumerator7ProcessEPK10btDbvtNode(%struct.btDbvtNodeEnumerator* nocapture %this, %struct.btDbvtNode* %n) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.309.0.i.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.309.0.i.i ; [#uses=1]
+ br i1 %7, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %8 = icmp eq i32 %iftmp.309.0.i.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %9 = shl i32 %iftmp.309.0.i.i, 2 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %10 to %struct.btDbvtNode** ; [#uses=1]
+ %.pre.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %11 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %1, %bb.i.i ] ; [#uses=2]
+ %12 = phi %struct.btDbvtNode** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i
+ %14 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btDbvtNode** %12, i32 %indvar.i.i.i ; [#uses=2]
+ %15 = icmp eq %struct.btDbvtNode** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %16 = load %struct.btDbvtNode*** %14, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btDbvtNode** %16, i32 %indvar.i.i.i ; [#uses=1]
+ %17 = load %struct.btDbvtNode** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %17, %struct.btDbvtNode** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i
+ %18 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %19 = load %struct.btDbvtNode*** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.btDbvtNode** %19, null ; [#uses=1]
+ br i1 %20, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i
+ %21 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %23 = bitcast %struct.btDbvtNode** %19 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %18, align 4
+ br label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i
+ %24 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store %struct.btDbvtNode** %12, %struct.btDbvtNode*** %18, align 4
+ store i32 %iftmp.309.0.i.i, i32* %2, align 4
+ %.pre5.i = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i.i, %bb.i, %entry
+ %25 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i.i ], [ %1, %entry ], [ %1, %bb.i ] ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %27 = load %struct.btDbvtNode*** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btDbvtNode** %27, i32 %25 ; [#uses=2]
+ %29 = icmp eq %struct.btDbvtNode** %28, null ; [#uses=1]
+ br i1 %29, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE9push_backERKS2_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %struct.btDbvtNode* %n, %struct.btDbvtNode** %28, align 4
+ %.pre6.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE9push_backERKS2_.exit
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeE9push_backERKS2_.exit: ; preds = %bb2.i, %bb1.i
+ %30 = phi i32 [ %25, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %31 = add nsw i32 %30, 1 ; [#uses=1]
+ store i32 %31, i32* %0, align 4
+ ret void
+}
+
+; [#uses=7]
+define internal fastcc %struct.btDbvtNode* @_ZL10removeleafP6btDbvtP10btDbvtNode(%struct.btDbvt* nocapture %pdbvt, %struct.btDbvtNode* %leaf) {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvt* %pdbvt, i32 0, i32 0 ; [#uses=5]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btDbvtNode* %1, %leaf ; [#uses=1]
+ br i1 %2, label %bb, label %bb1
+
+bb: ; preds = %entry
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %0, align 4
+ ret %struct.btDbvtNode* null
+
+bb1: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 1 ; [#uses=1]
+ %4 = load %struct.btDbvtNode** %3, align 4 ; [#uses=6]
+ %5 = getelementptr inbounds %struct.btDbvtNode* %4, i32 0, i32 1 ; [#uses=1]
+ %6 = load %struct.btDbvtNode** %5, align 4 ; [#uses=5]
+ %7 = getelementptr inbounds %struct.btDbvtNode* %4, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = load %struct.btDbvtNode** %7, align 4 ; [#uses=1]
+ %not. = icmp ne %struct.btDbvtNode* %8, %leaf ; [#uses=1]
+ %9 = zext i1 %not. to i32 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btDbvtNode* %4, i32 0, i32 2, i32 0, i32 %9 ; [#uses=1]
+ %11 = load %struct.btDbvtNode** %10, align 4 ; [#uses=4]
+ %12 = icmp eq %struct.btDbvtNode* %6, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb2
+
+bb2: ; preds = %bb1
+ %13 = getelementptr inbounds %struct.btDbvtNode* %6, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %14 = load %struct.btDbvtNode** %13, align 4 ; [#uses=1]
+ %15 = icmp eq %struct.btDbvtNode* %14, %4 ; [#uses=1]
+ %16 = zext i1 %15 to i32 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btDbvtNode* %6, i32 0, i32 2, i32 0, i32 %16 ; [#uses=1]
+ store %struct.btDbvtNode* %11, %struct.btDbvtNode** %17, align 4
+ %18 = getelementptr inbounds %struct.btDbvtNode* %11, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %6, %struct.btDbvtNode** %18, align 4
+ %19 = getelementptr inbounds %struct.btDbvt* %pdbvt, i32 0, i32 1 ; [#uses=2]
+ %20 = load %struct.btDbvtNode** %19, align 4 ; [#uses=1]
+ %21 = bitcast %struct.btDbvtNode* %20 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %21)
+ store %struct.btDbvtNode* %4, %struct.btDbvtNode** %19, align 4
+ br label %bb5
+
+bb3: ; preds = %bb5
+ %22 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %35 = load %struct.btDbvtNode** %34, align 4 ; [#uses=6]
+ %36 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %37 = load %struct.btDbvtNode** %36, align 4 ; [#uses=6]
+ %scevgep.i = getelementptr %struct.btDbvtNode* %37, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep11.i = getelementptr %struct.btDbvtNode* %35, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep13.i = getelementptr %struct.btDbvtNode* %37, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep14.i = getelementptr %struct.btDbvtNode* %35, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %scevgep.i, align 4 ; [#uses=2]
+ %39 = load float* %scevgep11.i, align 4 ; [#uses=2]
+ %40 = fcmp olt float %38, %39 ; [#uses=1]
+ %storemerge.i = select i1 %40, float %38, float %39 ; [#uses=2]
+ store float %storemerge.i, float* %22, align 4
+ %41 = load float* %scevgep13.i, align 4 ; [#uses=2]
+ %42 = load float* %scevgep14.i, align 4 ; [#uses=2]
+ %43 = fcmp ogt float %41, %42 ; [#uses=1]
+ %storemerge16.i = select i1 %43, float %41, float %42 ; [#uses=2]
+ store float %storemerge16.i, float* %28, align 4
+ %scevgep.1.i = getelementptr %struct.btDbvtNode* %37, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep11.1.i = getelementptr %struct.btDbvtNode* %35, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep13.1.i = getelementptr %struct.btDbvtNode* %37, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep14.1.i = getelementptr %struct.btDbvtNode* %35, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %44 = load float* %scevgep.1.i, align 4 ; [#uses=2]
+ %45 = load float* %scevgep11.1.i, align 4 ; [#uses=2]
+ %46 = fcmp olt float %44, %45 ; [#uses=1]
+ %storemerge17.i = select i1 %46, float %44, float %45 ; [#uses=2]
+ store float %storemerge17.i, float* %24, align 4
+ %47 = load float* %scevgep13.1.i, align 4 ; [#uses=2]
+ %48 = load float* %scevgep14.1.i, align 4 ; [#uses=2]
+ %49 = fcmp ogt float %47, %48 ; [#uses=1]
+ %storemerge18.i = select i1 %49, float %47, float %48 ; [#uses=2]
+ store float %storemerge18.i, float* %30, align 4
+ %scevgep.2.i = getelementptr %struct.btDbvtNode* %37, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep11.2.i = getelementptr %struct.btDbvtNode* %35, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep13.2.i = getelementptr %struct.btDbvtNode* %37, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep14.2.i = getelementptr %struct.btDbvtNode* %35, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %50 = load float* %scevgep.2.i, align 4 ; [#uses=2]
+ %51 = load float* %scevgep11.2.i, align 4 ; [#uses=2]
+ %52 = fcmp olt float %50, %51 ; [#uses=1]
+ %storemerge19.i = select i1 %52, float %50, float %51 ; [#uses=2]
+ store float %storemerge19.i, float* %26, align 4
+ %53 = load float* %scevgep13.2.i, align 4 ; [#uses=2]
+ %54 = load float* %scevgep14.2.i, align 4 ; [#uses=2]
+ %55 = fcmp ogt float %53, %54 ; [#uses=1]
+ %storemerge20.i = select i1 %55, float %53, float %54 ; [#uses=2]
+ store float %storemerge20.i, float* %32, align 4
+ %56 = fcmp une float %23, %storemerge.i ; [#uses=1]
+ %57 = fcmp une float %25, %storemerge17.i ; [#uses=1]
+ %or.cond = or i1 %56, %57 ; [#uses=1]
+ %58 = fcmp une float %27, %storemerge19.i ; [#uses=1]
+ %or.cond19 = or i1 %or.cond, %58 ; [#uses=1]
+ %59 = fcmp une float %29, %storemerge16.i ; [#uses=1]
+ %or.cond20 = or i1 %or.cond19, %59 ; [#uses=1]
+ %60 = fcmp une float %31, %storemerge18.i ; [#uses=1]
+ %or.cond21 = or i1 %or.cond20, %60 ; [#uses=1]
+ %or.cond21.not = xor i1 %or.cond21, true ; [#uses=1]
+ %phitmp = fcmp oeq float %33, %storemerge20.i ; [#uses=1]
+ %or.cond22 = and i1 %or.cond21.not, %phitmp ; [#uses=1]
+ br i1 %or.cond22, label %bb11, label %bb4
+
+bb4: ; preds = %bb3
+ %61 = getelementptr inbounds %struct.btDbvtNode* %prev.0, i32 0, i32 1 ; [#uses=1]
+ %62 = load %struct.btDbvtNode** %61, align 4 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb2
+ %prev.0 = phi %struct.btDbvtNode* [ %6, %bb2 ], [ %62, %bb4 ] ; [#uses=11]
+ %cond = icmp eq %struct.btDbvtNode* %prev.0, null ; [#uses=1]
+ br i1 %cond, label %bb7, label %bb3
+
+bb7: ; preds = %bb5
+ %63 = load %struct.btDbvtNode** %0, align 4 ; [#uses=1]
+ ret %struct.btDbvtNode* %63
+
+bb10: ; preds = %bb1
+ store %struct.btDbvtNode* %11, %struct.btDbvtNode** %0, align 4
+ %64 = getelementptr inbounds %struct.btDbvtNode* %11, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %64, align 4
+ %65 = getelementptr inbounds %struct.btDbvt* %pdbvt, i32 0, i32 1 ; [#uses=2]
+ %66 = load %struct.btDbvtNode** %65, align 4 ; [#uses=1]
+ %67 = bitcast %struct.btDbvtNode* %66 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %67)
+ store %struct.btDbvtNode* %4, %struct.btDbvtNode** %65, align 4
+ %68 = load %struct.btDbvtNode** %0, align 4 ; [#uses=1]
+ ret %struct.btDbvtNode* %68
+
+bb11: ; preds = %bb3
+ ret %struct.btDbvtNode* %prev.0
+}
+
+; [#uses=7]
+define void @_ZN6btDbvt6removeEP10btDbvtNode(%struct.btDbvt* nocapture %this, %struct.btDbvtNode* %leaf) align 2 {
+entry:
+ %0 = tail call fastcc %struct.btDbvtNode* @_ZL10removeleafP6btDbvtP10btDbvtNode(%struct.btDbvt* %this, %struct.btDbvtNode* %leaf) ; [#uses=0]
+ %1 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 1 ; [#uses=2]
+ %2 = load %struct.btDbvtNode** %1, align 4 ; [#uses=1]
+ %3 = bitcast %struct.btDbvtNode* %2 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %3)
+ store %struct.btDbvtNode* %leaf, %struct.btDbvtNode** %1, align 4
+ %4 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 3 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = add nsw i32 %5, -1 ; [#uses=1]
+ store i32 %6, i32* %4, align 4
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm(%struct.btDbvt* nocapture %this, %struct.btDbvtNode* %leaf, %struct.GIM_AABB* nocapture %volume) align 2 {
+entry:
+ %0 = tail call fastcc %struct.btDbvtNode* @_ZL10removeleafP6btDbvtP10btDbvtNode(%struct.btDbvt* %this, %struct.btDbvtNode* %leaf) ; [#uses=2]
+ %1 = icmp eq %struct.btDbvtNode* %0, null ; [#uses=1]
+ br i1 %1, label %bb6, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 2 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp sgt i32 %3, -1 ; [#uses=1]
+ br i1 %4, label %bb3, label %bb5
+
+bb2: ; preds = %bb4
+ %5 = add nsw i32 %6, 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb
+ %root.0 = phi %struct.btDbvtNode* [ %9, %bb2 ], [ %0, %bb ] ; [#uses=3]
+ %6 = phi i32 [ %5, %bb2 ], [ 0, %bb ] ; [#uses=2]
+ %7 = icmp sgt i32 %3, %6 ; [#uses=1]
+ br i1 %7, label %bb4, label %bb6
+
+bb4: ; preds = %bb3
+ %8 = getelementptr inbounds %struct.btDbvtNode* %root.0, i32 0, i32 1 ; [#uses=1]
+ %9 = load %struct.btDbvtNode** %8, align 4 ; [#uses=2]
+ %10 = icmp eq %struct.btDbvtNode* %9, null ; [#uses=1]
+ br i1 %10, label %bb6, label %bb2
+
+bb5: ; preds = %bb
+ %11 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=1]
+ %12 = load %struct.btDbvtNode** %11, align 4 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4, %bb3, %entry
+ %root.1 = phi %struct.btDbvtNode* [ %12, %bb5 ], [ null, %entry ], [ %root.0, %bb3 ], [ %root.0, %bb4 ] ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ tail call fastcc void @_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(%struct.btDbvt* %this, %struct.btDbvtNode* %root.1, %struct.btDbvtNode* %leaf)
+ ret void
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMmf(%struct.btDbvt* nocapture %this, %struct.btDbvtNode* %leaf, %struct.GIM_AABB* nocapture %volume, float %margin) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fcmp ugt float %1, %3 ; [#uses=1]
+ br i1 %4, label %entry.bb1_crit_edge, label %bb.i
+
+entry.bb1_crit_edge: ; preds = %entry
+ %.phi.trans.insert = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre = load float* %.phi.trans.insert, align 4 ; [#uses=1]
+ br label %bb1
+
+bb.i: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=6]
+ %9 = fcmp ugt float %6, %8 ; [#uses=1]
+ br i1 %9, label %bb1, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %10 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fcmp ugt float %11, %13 ; [#uses=1]
+ br i1 %14, label %bb1, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %15 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fcmp ult float %16, %18 ; [#uses=1]
+ br i1 %19, label %bb1, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %20 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fcmp ult float %21, %23 ; [#uses=1]
+ br i1 %24, label %bb1, label %_ZNK12btDbvtAabbMm7ContainERKS_.exit
+
+_ZNK12btDbvtAabbMm7ContainERKS_.exit: ; preds = %bb3.i
+ %25 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %phitmp = fcmp ult float %26, %28 ; [#uses=1]
+ br i1 %phitmp, label %bb1, label %bb2
+
+bb1: ; preds = %_ZNK12btDbvtAabbMm7ContainERKS_.exit, %bb3.i, %bb2.i, %bb1.i, %bb.i, %entry.bb1_crit_edge
+ %29 = phi float [ %.pre, %entry.bb1_crit_edge ], [ %8, %_ZNK12btDbvtAabbMm7ContainERKS_.exit ], [ %8, %bb.i ], [ %8, %bb1.i ], [ %8, %bb2.i ], [ %8, %bb3.i ] ; [#uses=1]
+ %30 = fsub float %3, %margin ; [#uses=1]
+ store float %30, float* %2, align 4
+ %31 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %32 = fsub float %29, %margin ; [#uses=1]
+ store float %32, float* %31, align 4
+ %33 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fsub float %34, %margin ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fadd float %37, %margin ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fadd float %40, %margin ; [#uses=1]
+ store float %41, float* %39, align 4
+ %42 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fadd float %43, %margin ; [#uses=1]
+ store float %44, float* %42, align 4
+ %45 = tail call fastcc %struct.btDbvtNode* @_ZL10removeleafP6btDbvtP10btDbvtNode(%struct.btDbvt* %this, %struct.btDbvtNode* %leaf) ; [#uses=2]
+ %46 = icmp eq %struct.btDbvtNode* %45, null ; [#uses=1]
+ br i1 %46, label %_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit, label %bb.i5
+
+bb.i5: ; preds = %bb1
+ %47 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 2 ; [#uses=1]
+ %48 = load i32* %47, align 4 ; [#uses=2]
+ %49 = icmp sgt i32 %48, -1 ; [#uses=1]
+ br i1 %49, label %bb3.i7, label %bb5.i
+
+bb2.i6: ; preds = %bb4.i8
+ %50 = add nsw i32 %51, 1 ; [#uses=1]
+ br label %bb3.i7
+
+bb3.i7: ; preds = %bb2.i6, %bb.i5
+ %root.0.i = phi %struct.btDbvtNode* [ %54, %bb2.i6 ], [ %45, %bb.i5 ] ; [#uses=3]
+ %51 = phi i32 [ %50, %bb2.i6 ], [ 0, %bb.i5 ] ; [#uses=2]
+ %52 = icmp sgt i32 %48, %51 ; [#uses=1]
+ br i1 %52, label %bb4.i8, label %_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit
+
+bb4.i8: ; preds = %bb3.i7
+ %53 = getelementptr inbounds %struct.btDbvtNode* %root.0.i, i32 0, i32 1 ; [#uses=1]
+ %54 = load %struct.btDbvtNode** %53, align 4 ; [#uses=2]
+ %55 = icmp eq %struct.btDbvtNode* %54, null ; [#uses=1]
+ br i1 %55, label %_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit, label %bb2.i6
+
+bb5.i: ; preds = %bb.i5
+ %56 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=1]
+ %57 = load %struct.btDbvtNode** %56, align 4 ; [#uses=1]
+ br label %_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit
+
+_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit: ; preds = %bb5.i, %bb4.i8, %bb3.i7, %bb1
+ %root.1.i = phi %struct.btDbvtNode* [ %57, %bb5.i ], [ null, %bb1 ], [ %root.0.i, %bb4.i8 ], [ %root.0.i, %bb3.i7 ] ; [#uses=1]
+ %58 = load float* %2, align 4 ; [#uses=1]
+ store float %58, float* %0, align 4
+ %59 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %60 = load float* %31, align 4 ; [#uses=1]
+ store float %60, float* %59, align 4
+ %61 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %62 = load float* %33, align 4 ; [#uses=1]
+ store float %62, float* %61, align 4
+ %63 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ store float %65, float* %63, align 4
+ %66 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %67 = load float* %36, align 4 ; [#uses=1]
+ store float %67, float* %66, align 4
+ %68 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %39, align 4 ; [#uses=1]
+ store float %69, float* %68, align 4
+ %70 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %71 = load float* %42, align 4 ; [#uses=1]
+ store float %71, float* %70, align 4
+ %72 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ store float %74, float* %72, align 4
+ tail call fastcc void @_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(%struct.btDbvt* %this, %struct.btDbvtNode* %root.1.i, %struct.btDbvtNode* %leaf)
+ ret i8 1
+
+bb2: ; preds = %_ZNK12btDbvtAabbMm7ContainERKS_.exit
+ ret i8 0
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMmRK9btVector3(%struct.btDbvt* nocapture %this, %struct.btDbvtNode* %leaf, %struct.GIM_AABB* nocapture %volume, %struct.btQuadWord* nocapture %velocity) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fcmp ugt float %1, %3 ; [#uses=1]
+ br i1 %4, label %bb1, label %bb.i
+
+bb.i: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fcmp ugt float %6, %8 ; [#uses=1]
+ br i1 %9, label %bb1, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %10 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fcmp ugt float %11, %13 ; [#uses=1]
+ br i1 %14, label %bb1, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %15 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fcmp ult float %16, %18 ; [#uses=1]
+ br i1 %19, label %bb1, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %20 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fcmp ult float %21, %23 ; [#uses=1]
+ br i1 %24, label %bb1, label %_ZNK12btDbvtAabbMm7ContainERKS_.exit
+
+_ZNK12btDbvtAabbMm7ContainERKS_.exit: ; preds = %bb3.i
+ %25 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %phitmp = fcmp ult float %26, %28 ; [#uses=1]
+ br i1 %phitmp, label %bb1, label %bb2
+
+bb1: ; preds = %_ZNK12btDbvtAabbMm7ContainERKS_.exit, %bb3.i, %bb2.i, %bb1.i, %bb.i, %entry
+ %29 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 0 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=3]
+ %31 = fcmp ogt float %30, 0.000000e+00 ; [#uses=1]
+ br i1 %31, label %bb.i10, label %bb1.i11
+
+bb.i10: ; preds = %bb1
+ %32 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fadd float %33, %30 ; [#uses=1]
+ store float %34, float* %32, align 4
+ br label %bb2.i12
+
+bb1.i11: ; preds = %bb1
+ %35 = fadd float %3, %30 ; [#uses=1]
+ store float %35, float* %2, align 4
+ br label %bb2.i12
+
+bb2.i12: ; preds = %bb1.i11, %bb.i10
+ %36 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 1 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=3]
+ %38 = fcmp ogt float %37, 0.000000e+00 ; [#uses=1]
+ br i1 %38, label %bb4.i13, label %bb5.i14
+
+bb4.i13: ; preds = %bb2.i12
+ %39 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fadd float %40, %37 ; [#uses=1]
+ store float %41, float* %39, align 4
+ br label %bb6.i15
+
+bb5.i14: ; preds = %bb2.i12
+ %42 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fadd float %43, %37 ; [#uses=1]
+ store float %44, float* %42, align 4
+ br label %bb6.i15
+
+bb6.i15: ; preds = %bb5.i14, %bb4.i13
+ %45 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=3]
+ %47 = fcmp ogt float %46, 0.000000e+00 ; [#uses=1]
+ br i1 %47, label %bb8.i, label %bb9.i
+
+bb8.i: ; preds = %bb6.i15
+ %48 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fadd float %49, %46 ; [#uses=1]
+ store float %50, float* %48, align 4
+ br label %_ZN12btDbvtAabbMm12SignedExpandERK9btVector3.exit
+
+bb9.i: ; preds = %bb6.i15
+ %51 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = fadd float %52, %46 ; [#uses=1]
+ store float %53, float* %51, align 4
+ br label %_ZN12btDbvtAabbMm12SignedExpandERK9btVector3.exit
+
+_ZN12btDbvtAabbMm12SignedExpandERK9btVector3.exit: ; preds = %bb9.i, %bb8.i
+ %54 = tail call fastcc %struct.btDbvtNode* @_ZL10removeleafP6btDbvtP10btDbvtNode(%struct.btDbvt* %this, %struct.btDbvtNode* %leaf) ; [#uses=2]
+ %55 = icmp eq %struct.btDbvtNode* %54, null ; [#uses=1]
+ br i1 %55, label %_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit, label %bb.i5
+
+bb.i5: ; preds = %_ZN12btDbvtAabbMm12SignedExpandERK9btVector3.exit
+ %56 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 2 ; [#uses=1]
+ %57 = load i32* %56, align 4 ; [#uses=2]
+ %58 = icmp sgt i32 %57, -1 ; [#uses=1]
+ br i1 %58, label %bb3.i7, label %bb5.i
+
+bb2.i6: ; preds = %bb4.i8
+ %59 = add nsw i32 %60, 1 ; [#uses=1]
+ br label %bb3.i7
+
+bb3.i7: ; preds = %bb2.i6, %bb.i5
+ %root.0.i = phi %struct.btDbvtNode* [ %63, %bb2.i6 ], [ %54, %bb.i5 ] ; [#uses=3]
+ %60 = phi i32 [ %59, %bb2.i6 ], [ 0, %bb.i5 ] ; [#uses=2]
+ %61 = icmp sgt i32 %57, %60 ; [#uses=1]
+ br i1 %61, label %bb4.i8, label %_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit
+
+bb4.i8: ; preds = %bb3.i7
+ %62 = getelementptr inbounds %struct.btDbvtNode* %root.0.i, i32 0, i32 1 ; [#uses=1]
+ %63 = load %struct.btDbvtNode** %62, align 4 ; [#uses=2]
+ %64 = icmp eq %struct.btDbvtNode* %63, null ; [#uses=1]
+ br i1 %64, label %_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit, label %bb2.i6
+
+bb5.i: ; preds = %bb.i5
+ %65 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=1]
+ %66 = load %struct.btDbvtNode** %65, align 4 ; [#uses=1]
+ br label %_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit
+
+_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit: ; preds = %bb5.i, %bb4.i8, %bb3.i7, %_ZN12btDbvtAabbMm12SignedExpandERK9btVector3.exit
+ %root.1.i = phi %struct.btDbvtNode* [ %66, %bb5.i ], [ null, %_ZN12btDbvtAabbMm12SignedExpandERK9btVector3.exit ], [ %root.0.i, %bb4.i8 ], [ %root.0.i, %bb3.i7 ] ; [#uses=1]
+ %67 = load float* %2, align 4 ; [#uses=1]
+ store float %67, float* %0, align 4
+ %68 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %71, align 4
+ %74 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ store float %76, float* %74, align 4
+ %77 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ store float %79, float* %77, align 4
+ %80 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ store float %82, float* %80, align 4
+ %83 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ store float %85, float* %83, align 4
+ %86 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ store float %88, float* %86, align 4
+ tail call fastcc void @_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(%struct.btDbvt* %this, %struct.btDbvtNode* %root.1.i, %struct.btDbvtNode* %leaf)
+ ret i8 1
+
+bb2: ; preds = %_ZNK12btDbvtAabbMm7ContainERKS_.exit
+ ret i8 0
+}
+
+; [#uses=1]
+define zeroext i8 @_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMmRK9btVector3f(%struct.btDbvt* nocapture %this, %struct.btDbvtNode* %leaf, %struct.GIM_AABB* %volume, %struct.btQuadWord* nocapture %velocity, float %margin) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fcmp ugt float %1, %3 ; [#uses=1]
+ br i1 %4, label %entry.bb1_crit_edge, label %bb.i
+
+entry.bb1_crit_edge: ; preds = %entry
+ %.phi.trans.insert = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre = load float* %.phi.trans.insert, align 4 ; [#uses=1]
+ br label %bb1
+
+bb.i: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=6]
+ %9 = fcmp ugt float %6, %8 ; [#uses=1]
+ br i1 %9, label %bb1, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %10 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fcmp ugt float %11, %13 ; [#uses=1]
+ br i1 %14, label %bb1, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %15 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fcmp ult float %16, %18 ; [#uses=1]
+ br i1 %19, label %bb1, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %20 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fcmp ult float %21, %23 ; [#uses=1]
+ br i1 %24, label %bb1, label %_ZNK12btDbvtAabbMm7ContainERKS_.exit
+
+_ZNK12btDbvtAabbMm7ContainERKS_.exit: ; preds = %bb3.i
+ %25 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %phitmp = fcmp ult float %26, %28 ; [#uses=1]
+ br i1 %phitmp, label %bb1, label %bb2
+
+bb1: ; preds = %_ZNK12btDbvtAabbMm7ContainERKS_.exit, %bb3.i, %bb2.i, %bb1.i, %bb.i, %entry.bb1_crit_edge
+ %29 = phi float [ %.pre, %entry.bb1_crit_edge ], [ %8, %_ZNK12btDbvtAabbMm7ContainERKS_.exit ], [ %8, %bb.i ], [ %8, %bb1.i ], [ %8, %bb2.i ], [ %8, %bb3.i ] ; [#uses=1]
+ %30 = fsub float %3, %margin ; [#uses=2]
+ store float %30, float* %2, align 4
+ %31 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %32 = fsub float %29, %margin ; [#uses=2]
+ store float %32, float* %31, align 4
+ %33 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 2 ; [#uses=4]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fsub float %34, %margin ; [#uses=2]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 0 ; [#uses=4]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fadd float %37, %margin ; [#uses=2]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 1 ; [#uses=4]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fadd float %40, %margin ; [#uses=2]
+ store float %41, float* %39, align 4
+ %42 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 2 ; [#uses=4]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fadd float %43, %margin ; [#uses=2]
+ store float %44, float* %42, align 4
+ %45 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=3]
+ %47 = fcmp ogt float %46, 0.000000e+00 ; [#uses=1]
+ br i1 %47, label %bb.i10, label %bb1.i11
+
+bb.i10: ; preds = %bb1
+ %48 = fadd float %38, %46 ; [#uses=1]
+ store float %48, float* %36, align 4
+ br label %bb2.i12
+
+bb1.i11: ; preds = %bb1
+ %49 = fadd float %30, %46 ; [#uses=1]
+ store float %49, float* %2, align 4
+ br label %bb2.i12
+
+bb2.i12: ; preds = %bb1.i11, %bb.i10
+ %50 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 1 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=3]
+ %52 = fcmp ogt float %51, 0.000000e+00 ; [#uses=1]
+ br i1 %52, label %bb4.i13, label %bb5.i14
+
+bb4.i13: ; preds = %bb2.i12
+ %53 = fadd float %41, %51 ; [#uses=1]
+ store float %53, float* %39, align 4
+ br label %bb6.i15
+
+bb5.i14: ; preds = %bb2.i12
+ %54 = fadd float %32, %51 ; [#uses=1]
+ store float %54, float* %31, align 4
+ br label %bb6.i15
+
+bb6.i15: ; preds = %bb5.i14, %bb4.i13
+ %55 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 2 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=3]
+ %57 = fcmp ogt float %56, 0.000000e+00 ; [#uses=1]
+ br i1 %57, label %bb8.i, label %bb9.i
+
+bb8.i: ; preds = %bb6.i15
+ %58 = fadd float %44, %56 ; [#uses=1]
+ store float %58, float* %42, align 4
+ br label %_ZN12btDbvtAabbMm12SignedExpandERK9btVector3.exit
+
+bb9.i: ; preds = %bb6.i15
+ %59 = fadd float %35, %56 ; [#uses=1]
+ store float %59, float* %33, align 4
+ br label %_ZN12btDbvtAabbMm12SignedExpandERK9btVector3.exit
+
+_ZN12btDbvtAabbMm12SignedExpandERK9btVector3.exit: ; preds = %bb9.i, %bb8.i
+ %60 = tail call fastcc %struct.btDbvtNode* @_ZL10removeleafP6btDbvtP10btDbvtNode(%struct.btDbvt* %this, %struct.btDbvtNode* %leaf) ; [#uses=2]
+ %61 = icmp eq %struct.btDbvtNode* %60, null ; [#uses=1]
+ br i1 %61, label %_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit, label %bb.i5
+
+bb.i5: ; preds = %_ZN12btDbvtAabbMm12SignedExpandERK9btVector3.exit
+ %62 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 2 ; [#uses=1]
+ %63 = load i32* %62, align 4 ; [#uses=2]
+ %64 = icmp sgt i32 %63, -1 ; [#uses=1]
+ br i1 %64, label %bb3.i7, label %bb5.i
+
+bb2.i6: ; preds = %bb4.i8
+ %65 = add nsw i32 %66, 1 ; [#uses=1]
+ br label %bb3.i7
+
+bb3.i7: ; preds = %bb2.i6, %bb.i5
+ %root.0.i = phi %struct.btDbvtNode* [ %69, %bb2.i6 ], [ %60, %bb.i5 ] ; [#uses=3]
+ %66 = phi i32 [ %65, %bb2.i6 ], [ 0, %bb.i5 ] ; [#uses=2]
+ %67 = icmp sgt i32 %63, %66 ; [#uses=1]
+ br i1 %67, label %bb4.i8, label %_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit
+
+bb4.i8: ; preds = %bb3.i7
+ %68 = getelementptr inbounds %struct.btDbvtNode* %root.0.i, i32 0, i32 1 ; [#uses=1]
+ %69 = load %struct.btDbvtNode** %68, align 4 ; [#uses=2]
+ %70 = icmp eq %struct.btDbvtNode* %69, null ; [#uses=1]
+ br i1 %70, label %_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit, label %bb2.i6
+
+bb5.i: ; preds = %bb.i5
+ %71 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=1]
+ %72 = load %struct.btDbvtNode** %71, align 4 ; [#uses=1]
+ br label %_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit
+
+_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm.exit: ; preds = %bb5.i, %bb4.i8, %bb3.i7, %_ZN12btDbvtAabbMm12SignedExpandERK9btVector3.exit
+ %root.1.i = phi %struct.btDbvtNode* [ %72, %bb5.i ], [ null, %_ZN12btDbvtAabbMm12SignedExpandERK9btVector3.exit ], [ %root.0.i, %bb4.i8 ], [ %root.0.i, %bb3.i7 ] ; [#uses=1]
+ %73 = load float* %2, align 4 ; [#uses=1]
+ store float %73, float* %0, align 4
+ %74 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %31, align 4 ; [#uses=1]
+ store float %75, float* %74, align 4
+ %76 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %77 = load float* %33, align 4 ; [#uses=1]
+ store float %77, float* %76, align 4
+ %78 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ store float %80, float* %78, align 4
+ %81 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %82 = load float* %36, align 4 ; [#uses=1]
+ store float %82, float* %81, align 4
+ %83 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %84 = load float* %39, align 4 ; [#uses=1]
+ store float %84, float* %83, align 4
+ %85 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %86 = load float* %42, align 4 ; [#uses=1]
+ store float %86, float* %85, align 4
+ %87 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.GIM_AABB* %volume, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ store float %89, float* %87, align 4
+ tail call fastcc void @_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(%struct.btDbvt* %this, %struct.btDbvtNode* %root.1.i, %struct.btDbvtNode* %leaf)
+ ret i8 1
+
+bb2: ; preds = %_ZNK12btDbvtAabbMm7ContainERKS_.exit
+ ret i8 0
+}
+
+; [#uses=0]
+define void @_ZN6btDbvt6updateEP10btDbvtNodei(%struct.btDbvt* nocapture %this, %struct.btDbvtNode* %leaf, i32 %lookahead) align 2 {
+entry:
+ %0 = tail call fastcc %struct.btDbvtNode* @_ZL10removeleafP6btDbvtP10btDbvtNode(%struct.btDbvt* %this, %struct.btDbvtNode* %leaf) ; [#uses=2]
+ %1 = icmp eq %struct.btDbvtNode* %0, null ; [#uses=1]
+ br i1 %1, label %bb6, label %bb
+
+bb: ; preds = %entry
+ %2 = icmp sgt i32 %lookahead, -1 ; [#uses=1]
+ br i1 %2, label %bb3, label %bb5
+
+bb2: ; preds = %bb4
+ %3 = add nsw i32 %4, 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb
+ %root.0 = phi %struct.btDbvtNode* [ %7, %bb2 ], [ %0, %bb ] ; [#uses=3]
+ %4 = phi i32 [ %3, %bb2 ], [ 0, %bb ] ; [#uses=2]
+ %5 = icmp slt i32 %4, %lookahead ; [#uses=1]
+ br i1 %5, label %bb4, label %bb6
+
+bb4: ; preds = %bb3
+ %6 = getelementptr inbounds %struct.btDbvtNode* %root.0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btDbvtNode** %6, align 4 ; [#uses=2]
+ %8 = icmp eq %struct.btDbvtNode* %7, null ; [#uses=1]
+ br i1 %8, label %bb6, label %bb2
+
+bb5: ; preds = %bb
+ %9 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=1]
+ %10 = load %struct.btDbvtNode** %9, align 4 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4, %bb3, %entry
+ %root.1 = phi %struct.btDbvtNode* [ %10, %bb5 ], [ null, %entry ], [ %root.0, %bb3 ], [ %root.0, %bb4 ] ; [#uses=1]
+ tail call fastcc void @_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(%struct.btDbvt* %this, %struct.btDbvtNode* %root.1, %struct.btDbvtNode* %leaf)
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN6btDbvt19optimizeIncrementalEi(%struct.btDbvt* nocapture %this, i32 %passes) align 2 {
+entry:
+ %0 = icmp slt i32 %passes, 0 ; [#uses=1]
+ br i1 %0, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 3 ; [#uses=1]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %passes_addr.0 = phi i32 [ %2, %bb ], [ %passes, %entry ] ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=4]
+ %4 = load %struct.btDbvtNode** %3, align 4 ; [#uses=2]
+ %5 = icmp ne %struct.btDbvtNode* %4, null ; [#uses=1]
+ %6 = icmp sgt i32 %passes_addr.0, 0 ; [#uses=1]
+ %7 = and i1 %5, %6 ; [#uses=1]
+ br i1 %7, label %bb4.preheader, label %return
+
+bb4.preheader: ; preds = %bb1
+ %8 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 4 ; [#uses=3]
+ br label %bb4
+
+bb4: ; preds = %_ZN6btDbvt6updateEP10btDbvtNodei.exit.bb4_crit_edge, %bb4.preheader
+ %node.013 = phi %struct.btDbvtNode* [ %4, %bb4.preheader ], [ %node.013.pre, %_ZN6btDbvt6updateEP10btDbvtNodei.exit.bb4_crit_edge ] ; [#uses=3]
+ %indvar = phi i32 [ 1, %bb4.preheader ], [ %phitmp, %_ZN6btDbvt6updateEP10btDbvtNodei.exit.bb4_crit_edge ] ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btDbvtNode* %node.013, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %10 = load %struct.btDbvtNode** %9, align 4 ; [#uses=1]
+ %toBoolnot.i14 = icmp eq %struct.btDbvtNode* %10, null ; [#uses=1]
+ br i1 %toBoolnot.i14, label %bb8, label %bb5
+
+bb5: ; preds = %_ZL4sortP10btDbvtNodeRS0_.exit, %bb4
+ %node.016 = phi %struct.btDbvtNode* [ %node.0, %_ZL4sortP10btDbvtNodeRS0_.exit ], [ %node.013, %bb4 ] ; [#uses=20]
+ %bit.015 = phi i32 [ %78, %_ZL4sortP10btDbvtNodeRS0_.exit ], [ 0, %bb4 ] ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btDbvtNode* %node.016, i32 0, i32 1 ; [#uses=2]
+ %12 = load %struct.btDbvtNode** %11, align 4 ; [#uses=18]
+ %13 = icmp ugt %struct.btDbvtNode* %12, %node.016 ; [#uses=1]
+ br i1 %13, label %bb.i, label %_ZL4sortP10btDbvtNodeRS0_.exit
+
+bb.i: ; preds = %bb5
+ %14 = getelementptr inbounds %struct.btDbvtNode* %12, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %15 = load %struct.btDbvtNode** %14, align 4 ; [#uses=1]
+ %16 = icmp eq %struct.btDbvtNode* %15, %node.016 ; [#uses=1]
+ %17 = zext i1 %16 to i32 ; [#uses=2]
+ %18 = xor i32 %17, 1 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btDbvtNode* %12, i32 0, i32 2, i32 0, i32 %18 ; [#uses=1]
+ %20 = load %struct.btDbvtNode** %19, align 4 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btDbvtNode* %12, i32 0, i32 1 ; [#uses=2]
+ %22 = load %struct.btDbvtNode** %21, align 4 ; [#uses=4]
+ %23 = icmp eq %struct.btDbvtNode* %22, null ; [#uses=1]
+ br i1 %23, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %24 = getelementptr inbounds %struct.btDbvtNode* %22, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %25 = load %struct.btDbvtNode** %24, align 4 ; [#uses=1]
+ %26 = icmp eq %struct.btDbvtNode* %25, %12 ; [#uses=1]
+ %27 = zext i1 %26 to i32 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btDbvtNode* %22, i32 0, i32 2, i32 0, i32 %27 ; [#uses=1]
+ store %struct.btDbvtNode* %node.016, %struct.btDbvtNode** %28, align 4
+ br label %bb3.i
+
+bb2.i: ; preds = %bb.i
+ store %struct.btDbvtNode* %node.016, %struct.btDbvtNode** %3, align 4
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb1.i
+ %29 = getelementptr inbounds %struct.btDbvtNode* %20, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %node.016, %struct.btDbvtNode** %29, align 4
+ store %struct.btDbvtNode* %node.016, %struct.btDbvtNode** %21, align 4
+ store %struct.btDbvtNode* %22, %struct.btDbvtNode** %11, align 4
+ %30 = getelementptr inbounds %struct.btDbvtNode* %node.016, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %31 = load %struct.btDbvtNode** %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btDbvtNode* %12, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %31, %struct.btDbvtNode** %32, align 4
+ %33 = getelementptr inbounds %struct.btDbvtNode* %node.016, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %34 = load %struct.btDbvtNode** %33, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %34, %struct.btDbvtNode** %14, align 4
+ %35 = load %struct.btDbvtNode** %30, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btDbvtNode* %35, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %12, %struct.btDbvtNode** %36, align 4
+ %37 = load %struct.btDbvtNode** %33, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btDbvtNode* %37, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %12, %struct.btDbvtNode** %38, align 4
+ %39 = getelementptr inbounds %struct.btDbvtNode* %node.016, i32 0, i32 2, i32 0, i32 %17 ; [#uses=1]
+ store %struct.btDbvtNode* %12, %struct.btDbvtNode** %39, align 4
+ %40 = getelementptr inbounds %struct.btDbvtNode* %node.016, i32 0, i32 2, i32 0, i32 %18 ; [#uses=1]
+ store %struct.btDbvtNode* %20, %struct.btDbvtNode** %40, align 4
+ %41 = getelementptr inbounds %struct.btDbvtNode* %12, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btDbvtNode* %12, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btDbvtNode* %12, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btDbvtNode* %12, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btDbvtNode* %12, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btDbvtNode* %12, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btDbvtNode* %12, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btDbvtNode* %12, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btDbvtNode* %node.016, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ store float %58, float* %41, align 4
+ %59 = getelementptr inbounds %struct.btDbvtNode* %node.016, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ store float %60, float* %43, align 4
+ %61 = getelementptr inbounds %struct.btDbvtNode* %node.016, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ store float %62, float* %45, align 4
+ %63 = getelementptr inbounds %struct.btDbvtNode* %node.016, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ store float %64, float* %47, align 4
+ %65 = getelementptr inbounds %struct.btDbvtNode* %node.016, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %49, align 4
+ %67 = getelementptr inbounds %struct.btDbvtNode* %node.016, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ store float %68, float* %51, align 4
+ %69 = getelementptr inbounds %struct.btDbvtNode* %node.016, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ store float %70, float* %53, align 4
+ %71 = getelementptr inbounds %struct.btDbvtNode* %node.016, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %55, align 4
+ store float %42, float* %57, align 4
+ store float %44, float* %59, align 4
+ store float %46, float* %61, align 4
+ store float %48, float* %63, align 4
+ store float %50, float* %65, align 4
+ store float %52, float* %67, align 4
+ store float %54, float* %69, align 4
+ store float %56, float* %71, align 4
+ br label %_ZL4sortP10btDbvtNodeRS0_.exit
+
+_ZL4sortP10btDbvtNodeRS0_.exit: ; preds = %bb3.i, %bb5
+ %73 = phi %struct.btDbvtNode* [ %12, %bb3.i ], [ %node.016, %bb5 ] ; [#uses=1]
+ %74 = load i32* %8, align 4 ; [#uses=1]
+ %75 = lshr i32 %74, %bit.015 ; [#uses=1]
+ %76 = add i32 %bit.015, 1 ; [#uses=1]
+ %77 = and i32 %75, 1 ; [#uses=1]
+ %78 = and i32 %76, 31 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btDbvtNode* %73, i32 0, i32 2, i32 0, i32 %77 ; [#uses=1]
+ %node.0 = load %struct.btDbvtNode** %79, align 4 ; [#uses=3]
+ %80 = getelementptr inbounds %struct.btDbvtNode* %node.0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %81 = load %struct.btDbvtNode** %80, align 4 ; [#uses=1]
+ %toBoolnot.i = icmp eq %struct.btDbvtNode* %81, null ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb8, label %bb5
+
+bb8: ; preds = %_ZL4sortP10btDbvtNodeRS0_.exit, %bb4
+ %node.0.lcssa = phi %struct.btDbvtNode* [ %node.013, %bb4 ], [ %node.0, %_ZL4sortP10btDbvtNodeRS0_.exit ] ; [#uses=2]
+ %82 = tail call fastcc %struct.btDbvtNode* @_ZL10removeleafP6btDbvtP10btDbvtNode(%struct.btDbvt* %this, %struct.btDbvtNode* %node.0.lcssa) ; [#uses=1]
+ %83 = icmp eq %struct.btDbvtNode* %82, null ; [#uses=1]
+ br i1 %83, label %_ZN6btDbvt6updateEP10btDbvtNodei.exit, label %bb.i11
+
+bb.i11: ; preds = %bb8
+ %84 = load %struct.btDbvtNode** %3, align 4 ; [#uses=1]
+ br label %_ZN6btDbvt6updateEP10btDbvtNodei.exit
+
+_ZN6btDbvt6updateEP10btDbvtNodei.exit: ; preds = %bb.i11, %bb8
+ %root.1.i = phi %struct.btDbvtNode* [ %84, %bb.i11 ], [ null, %bb8 ] ; [#uses=1]
+ tail call fastcc void @_ZL10insertleafP6btDbvtP10btDbvtNodeS2_(%struct.btDbvt* %this, %struct.btDbvtNode* %root.1.i, %struct.btDbvtNode* %node.0.lcssa)
+ %85 = load i32* %8, align 4 ; [#uses=1]
+ %86 = add i32 %85, 1 ; [#uses=1]
+ store i32 %86, i32* %8, align 4
+ %exitcond = icmp eq i32 %indvar, %passes_addr.0 ; [#uses=1]
+ br i1 %exitcond, label %return, label %_ZN6btDbvt6updateEP10btDbvtNodei.exit.bb4_crit_edge
+
+_ZN6btDbvt6updateEP10btDbvtNodei.exit.bb4_crit_edge: ; preds = %_ZN6btDbvt6updateEP10btDbvtNodei.exit
+ %node.013.pre = load %struct.btDbvtNode** %3, align 4 ; [#uses=1]
+ %phitmp = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb4
+
+return: ; preds = %_ZN6btDbvt6updateEP10btDbvtNodei.exit, %bb1
+ ret void
+}
+
+; [#uses=6]
+define internal fastcc void @_ZL17recursedeletenodeP6btDbvtP10btDbvtNode(%struct.btDbvt* %pdbvt, %struct.btDbvtNode* %node) {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtNode* %node, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btDbvtNode* %1, null ; [#uses=1]
+ br i1 %2, label %bb3, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDbvtNode* %node, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.btDbvtNode** %3, align 4 ; [#uses=1]
+ tail call fastcc void @_ZL17recursedeletenodeP6btDbvtP10btDbvtNode(%struct.btDbvt* %pdbvt, %struct.btDbvtNode* %4)
+ %5 = load %struct.btDbvtNode** %0, align 4 ; [#uses=1]
+ tail call fastcc void @_ZL17recursedeletenodeP6btDbvtP10btDbvtNode(%struct.btDbvt* %pdbvt, %struct.btDbvtNode* %5)
+ br label %bb3
+
+bb3: ; preds = %bb, %entry
+ %6 = getelementptr inbounds %struct.btDbvt* %pdbvt, i32 0, i32 0 ; [#uses=2]
+ %7 = load %struct.btDbvtNode** %6, align 4 ; [#uses=1]
+ %8 = icmp eq %struct.btDbvtNode* %7, %node ; [#uses=1]
+ br i1 %8, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %6, align 4
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ %9 = getelementptr inbounds %struct.btDbvt* %pdbvt, i32 0, i32 1 ; [#uses=2]
+ %10 = load %struct.btDbvtNode** %9, align 4 ; [#uses=1]
+ %11 = bitcast %struct.btDbvtNode* %10 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %11)
+ store %struct.btDbvtNode* %node, %struct.btDbvtNode** %9, align 4
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP10btDbvtNodeE9push_backERKS1_(%"struct.btAlignedObjectArray<btDbvtNode*>"* nocapture %this, %struct.btDbvtNode** nocapture %_Val) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %this, i32 0, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.315.0.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.315.0.i ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb1
+
+bb.i: ; preds = %bb
+ %8 = icmp eq i32 %iftmp.315.0.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %9 = shl i32 %iftmp.315.0.i, 2 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %10 to %struct.btDbvtNode** ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %11 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %12 = phi %struct.btDbvtNode** [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=2]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i
+ %14 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=3]
+ %scevgep.i.i = getelementptr %struct.btDbvtNode** %12, i32 %indvar.i.i ; [#uses=2]
+ %15 = icmp eq %struct.btDbvtNode** %scevgep.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %16 = load %struct.btDbvtNode*** %14, align 4 ; [#uses=1]
+ %scevgep8.i.i = getelementptr %struct.btDbvtNode** %16, i32 %indvar.i.i ; [#uses=1]
+ %17 = load %struct.btDbvtNode** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %17, %struct.btDbvtNode** %scevgep.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i
+ %18 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %this, i32 0, i32 3 ; [#uses=3]
+ %19 = load %struct.btDbvtNode*** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.btDbvtNode** %19, null ; [#uses=1]
+ br i1 %20, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %this, i32 0, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %23 = bitcast %struct.btDbvtNode** %19 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %18, align 4
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store %struct.btDbvtNode** %12, %struct.btDbvtNode*** %18, align 4
+ store i32 %iftmp.315.0.i, i32* %2, align 4
+ %.pre5 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i, %bb, %entry
+ %25 = phi i32 [ %.pre5, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i ], [ %1, %entry ], [ %1, %bb ] ; [#uses=2]
+ %26 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %this, i32 0, i32 3 ; [#uses=1]
+ %27 = load %struct.btDbvtNode*** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btDbvtNode** %27, i32 %25 ; [#uses=2]
+ %29 = icmp eq %struct.btDbvtNode** %28, null ; [#uses=1]
+ br i1 %29, label %bb4, label %bb2
+
+bb2: ; preds = %bb1
+ %30 = load %struct.btDbvtNode** %_Val, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %30, %struct.btDbvtNode** %28, align 4
+ %.pre6 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb2, %bb1
+ %31 = phi i32 [ %25, %bb1 ], [ %.pre6, %bb2 ] ; [#uses=1]
+ %32 = add nsw i32 %31, 1 ; [#uses=1]
+ store i32 %32, i32* %0, align 4
+ ret void
+}
+
+; [#uses=4]
+define internal fastcc void @_ZL11fetchleavesP6btDbvtP10btDbvtNodeR20btAlignedObjectArrayIS2_Ei(%struct.btDbvt* %pdbvt, %struct.btDbvtNode* %root, %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 %depth) {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtNode* %root, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=1]
+ %notlhs = icmp ne i32 %depth, 0 ; [#uses=1]
+ %notrhs = icmp ne %struct.btDbvtNode* %1, null ; [#uses=1]
+ %not.or.cond = and i1 %notrhs, %notlhs ; [#uses=1]
+ br i1 %not.or.cond, label %bb8, label %bb9
+
+bb8: ; preds = %entry
+ %2 = add nsw i32 %depth, -1 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btDbvtNode* %root, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.btDbvtNode** %3, align 4 ; [#uses=1]
+ tail call fastcc void @_ZL11fetchleavesP6btDbvtP10btDbvtNodeR20btAlignedObjectArrayIS2_Ei(%struct.btDbvt* %pdbvt, %struct.btDbvtNode* %4, %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 %2)
+ %5 = load %struct.btDbvtNode** %0, align 4 ; [#uses=1]
+ tail call fastcc void @_ZL11fetchleavesP6btDbvtP10btDbvtNodeR20btAlignedObjectArrayIS2_Ei(%struct.btDbvt* %pdbvt, %struct.btDbvtNode* %5, %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 %2)
+ %6 = getelementptr inbounds %struct.btDbvt* %pdbvt, i32 0, i32 1 ; [#uses=2]
+ %7 = load %struct.btDbvtNode** %6, align 4 ; [#uses=1]
+ %8 = bitcast %struct.btDbvtNode* %7 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %8)
+ store %struct.btDbvtNode* %root, %struct.btDbvtNode** %6, align 4
+ ret void
+
+bb9: ; preds = %entry
+ %9 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 1 ; [#uses=5]
+ %10 = load i32* %9, align 4 ; [#uses=6]
+ %11 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 2 ; [#uses=2]
+ %12 = load i32* %11, align 4 ; [#uses=2]
+ %13 = icmp eq i32 %12, %10 ; [#uses=1]
+ br i1 %13, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb9
+ %14 = icmp eq i32 %10, 0 ; [#uses=1]
+ %15 = shl i32 %10, 1 ; [#uses=1]
+ %iftmp.315.0.i.i = select i1 %14, i32 1, i32 %15 ; [#uses=4]
+ %16 = icmp slt i32 %12, %iftmp.315.0.i.i ; [#uses=1]
+ br i1 %16, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %17 = icmp eq i32 %iftmp.315.0.i.i, 0 ; [#uses=1]
+ br i1 %17, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %18 = shl i32 %iftmp.315.0.i.i, 2 ; [#uses=1]
+ %19 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %18, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %19 to %struct.btDbvtNode** ; [#uses=1]
+ %.pre.i = load i32* %9, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %20 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %10, %bb.i.i ] ; [#uses=2]
+ %21 = phi %struct.btDbvtNode** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %22 = icmp sgt i32 %20, 0 ; [#uses=1]
+ br i1 %22, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i.i
+ %23 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btDbvtNode** %21, i32 %indvar.i.i.i ; [#uses=2]
+ %24 = icmp eq %struct.btDbvtNode** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %24, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %25 = load %struct.btDbvtNode*** %23, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btDbvtNode** %25, i32 %indvar.i.i.i ; [#uses=1]
+ %26 = load %struct.btDbvtNode** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %26, %struct.btDbvtNode** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %20 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i.i
+ %27 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 3 ; [#uses=3]
+ %28 = load %struct.btDbvtNode*** %27, align 4 ; [#uses=2]
+ %29 = icmp eq %struct.btDbvtNode** %28, null ; [#uses=1]
+ br i1 %29, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i.i
+ %30 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 4 ; [#uses=1]
+ %31 = load i8* %30, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %31, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %32 = bitcast %struct.btDbvtNode** %28 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %32)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %27, align 4
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i.i
+ %33 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %33, align 4
+ store %struct.btDbvtNode** %21, %struct.btDbvtNode*** %27, align 4
+ store i32 %iftmp.315.0.i.i, i32* %11, align 4
+ %.pre5.i = load i32* %9, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i.i, %bb.i, %bb9
+ %34 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i.i ], [ %10, %bb9 ], [ %10, %bb.i ] ; [#uses=2]
+ %35 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 3 ; [#uses=1]
+ %36 = load %struct.btDbvtNode*** %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btDbvtNode** %36, i32 %34 ; [#uses=2]
+ %38 = icmp eq %struct.btDbvtNode** %37, null ; [#uses=1]
+ br i1 %38, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE9push_backERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %struct.btDbvtNode* %root, %struct.btDbvtNode** %37, align 4
+ %.pre6.i = load i32* %9, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE9push_backERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE9push_backERKS1_.exit: ; preds = %bb2.i, %bb1.i
+ %39 = phi i32 [ %34, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %40 = add nsw i32 %39, 1 ; [#uses=1]
+ store i32 %40, i32* %9, align 4
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN6btDbvt5clearEv(%struct.btDbvt* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btDbvtNode* %1, null ; [#uses=1]
+ br i1 %2, label %bb1, label %bb
+
+bb: ; preds = %entry
+ tail call fastcc void @_ZL17recursedeletenodeP6btDbvtP10btDbvtNode(%struct.btDbvt* %this, %struct.btDbvtNode* %1)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %3 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 1 ; [#uses=2]
+ %4 = load %struct.btDbvtNode** %3, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btDbvtNode* %4 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %5)
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %3, align 4
+ %6 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 3 ; [#uses=3]
+ %8 = load %"struct.btDbvt::sStkCLN"** %7, align 4 ; [#uses=2]
+ %9 = icmp eq %"struct.btDbvt::sStkCLN"* %8, null ; [#uses=1]
+ br i1 %9, label %_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEE5clearEv.exit, label %bb.i.i
+
+bb.i.i: ; preds = %bb1
+ %10 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %11 = load i8* %10, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %11, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %12 = bitcast %"struct.btDbvt::sStkCLN"* %8 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %12)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %7, align 4
+ br label %_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEE5clearEv.exit
+
+_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEE5clearEv.exit: ; preds = %bb2.i.i, %bb1
+ %13 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %13, align 4
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %7, align 4
+ %14 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZNK6btDbvt5cloneERS_PNS_6ICloneE(%struct.btDbvt* nocapture %this, %struct.btDbvt* %dest, %struct.btActionInterface* %iclone) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvt* %dest, i32 0, i32 0 ; [#uses=2]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btDbvtNode* %1, null ; [#uses=1]
+ br i1 %2, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %entry
+ tail call fastcc void @_ZL17recursedeletenodeP6btDbvtP10btDbvtNode(%struct.btDbvt* %dest, %struct.btDbvtNode* %1)
+ br label %bb1.i
+
+bb1.i: ; preds = %bb.i, %entry
+ %3 = getelementptr inbounds %struct.btDbvt* %dest, i32 0, i32 1 ; [#uses=4]
+ %4 = load %struct.btDbvtNode** %3, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btDbvtNode* %4 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %5)
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %3, align 4
+ %6 = getelementptr inbounds %struct.btDbvt* %dest, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btDbvt* %dest, i32 0, i32 5, i32 3 ; [#uses=3]
+ %8 = load %"struct.btDbvt::sStkCLN"** %7, align 4 ; [#uses=2]
+ %9 = icmp eq %"struct.btDbvt::sStkCLN"* %8, null ; [#uses=1]
+ br i1 %9, label %_ZN6btDbvt5clearEv.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb1.i
+ %10 = getelementptr inbounds %struct.btDbvt* %dest, i32 0, i32 5, i32 4 ; [#uses=1]
+ %11 = load i8* %10, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %11, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %12 = bitcast %"struct.btDbvt::sStkCLN"* %8 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %12)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %7, align 4
+ br label %_ZN6btDbvt5clearEv.exit
+
+_ZN6btDbvt5clearEv.exit: ; preds = %bb2.i.i.i, %bb1.i
+ %13 = getelementptr inbounds %struct.btDbvt* %dest, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %13, align 4
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %7, align 4
+ %14 = getelementptr inbounds %struct.btDbvt* %dest, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btDbvt* %dest, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btDbvt* %dest, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=2]
+ %18 = load %struct.btDbvtNode** %17, align 4 ; [#uses=2]
+ %19 = icmp eq %struct.btDbvtNode* %18, null ; [#uses=1]
+ br i1 %19, label %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEED1Ev.exit51, label %bb
+
+bb: ; preds = %_ZN6btDbvt5clearEv.exit
+ %20 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 3 ; [#uses=1]
+ %21 = load i32* %20, align 4 ; [#uses=3]
+ %22 = icmp sgt i32 %21, 0 ; [#uses=1]
+ br i1 %22, label %bb.i2.i, label %bb.i2.i.i
+
+bb.i2.i: ; preds = %bb
+ %23 = shl i32 %21, 3 ; [#uses=1]
+ %24 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %23, i32 16)
+ to label %invcont unwind label %lpad.thread ; [#uses=1]
+
+invcont: ; preds = %bb.i2.i
+ %25 = load %struct.btDbvtNode** %17, align 4 ; [#uses=1]
+ br label %bb1.i36
+
+bb.i2.i.i: ; preds = %bb
+ %26 = invoke i8* @_Z22btAlignedAllocInternalji(i32 8, i32 16)
+ to label %bb1.i36 unwind label %lpad.thread ; [#uses=1]
+
+bb1.i36: ; preds = %bb.i2.i.i, %invcont
+ %27 = phi %struct.btDbvtNode* [ %25, %invcont ], [ %18, %bb.i2.i.i ] ; [#uses=1]
+ %stack.2.4 = phi i32 [ %21, %invcont ], [ 1, %bb.i2.i.i ] ; [#uses=1]
+ %stack.3.5.in = phi i8* [ %24, %invcont ], [ %26, %bb.i2.i.i ] ; [#uses=4]
+ %stack.3.5 = bitcast i8* %stack.3.5.in to %"struct.btDbvt::sStkCLN"* ; [#uses=1]
+ %28 = icmp eq i8* %stack.3.5.in, null ; [#uses=1]
+ br i1 %28, label %bb2.preheader, label %bb2.i
+
+bb2.i: ; preds = %bb1.i36
+ %29 = bitcast i8* %stack.3.5.in to %struct.btDbvtNode** ; [#uses=1]
+ store %struct.btDbvtNode* %27, %struct.btDbvtNode** %29, align 4
+ %30 = getelementptr inbounds i8* %stack.3.5.in, i32 4 ; [#uses=1]
+ %31 = bitcast i8* %30 to %struct.btDbvtNode** ; [#uses=1]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %31, align 4
+ br label %bb2.preheader
+
+bb2.preheader: ; preds = %bb2.i, %bb1.i36
+ %32 = getelementptr inbounds %struct.btActionInterface* %iclone, i32 0, i32 0 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb12, %bb2.preheader
+ %stack.1.1 = phi i32 [ %stack.1.0, %bb12 ], [ 1, %bb2.preheader ] ; [#uses=10]
+ %stack.2.2 = phi i32 [ %stack.2.1, %bb12 ], [ %stack.2.4, %bb2.preheader ] ; [#uses=5]
+ %stack.3.2 = phi %"struct.btDbvt::sStkCLN"* [ %stack.3.1, %bb12 ], [ %stack.3.5, %bb2.preheader ] ; [#uses=13]
+ %33 = add nsw i32 %stack.1.1, -1 ; [#uses=12]
+ %34 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %stack.3.2, i32 %33, i32 0 ; [#uses=1]
+ %35 = load %struct.btDbvtNode** %34, align 4 ; [#uses=11]
+ %36 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %stack.3.2, i32 %33, i32 1 ; [#uses=1]
+ %37 = load %struct.btDbvtNode** %36, align 4 ; [#uses=3]
+ %38 = getelementptr inbounds %struct.btDbvtNode* %35, i32 0, i32 2, i32 0 ; [#uses=1]
+ %39 = bitcast [2 x %struct.btDbvtNode*]* %38 to i8** ; [#uses=1]
+ %40 = load i8** %39, align 4 ; [#uses=1]
+ %41 = load %struct.btDbvtNode** %3, align 4 ; [#uses=2]
+ %42 = icmp eq %struct.btDbvtNode* %41, null ; [#uses=1]
+ br i1 %42, label %bb1.i.i40, label %bb.i.i39
+
+bb.i.i39: ; preds = %bb2
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %3, align 4
+ br label %invcont3
+
+bb1.i.i40: ; preds = %bb2
+ %43 = invoke i8* @_Z22btAlignedAllocInternalji(i32 44, i32 16)
+ to label %.noexc41 unwind label %lpad ; [#uses=1]
+
+.noexc41: ; preds = %bb1.i.i40
+ %44 = bitcast i8* %43 to %struct.btDbvtNode* ; [#uses=1]
+ br label %invcont3
+
+invcont3: ; preds = %.noexc41, %bb.i.i39
+ %node.0.i.i = phi %struct.btDbvtNode* [ %41, %bb.i.i39 ], [ %44, %.noexc41 ] ; [#uses=16]
+ %45 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %37, %struct.btDbvtNode** %45, align 4
+ %46 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %data.c.i.i = bitcast i8* %40 to %struct.btDbvtNode* ; [#uses=1]
+ store %struct.btDbvtNode* %data.c.i.i, %struct.btDbvtNode** %46, align 4
+ %47 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %47, align 4
+ %48 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btDbvtNode* %35, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ store float %50, float* %48, align 4
+ %51 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btDbvtNode* %35, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ store float %53, float* %51, align 4
+ %54 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btDbvtNode* %35, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ store float %56, float* %54, align 4
+ %57 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btDbvtNode* %35, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ store float %59, float* %57, align 4
+ %60 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btDbvtNode* %35, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ store float %62, float* %60, align 4
+ %63 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btDbvtNode* %35, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ store float %65, float* %63, align 4
+ %66 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btDbvtNode* %35, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ store float %68, float* %66, align 4
+ %69 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btDbvtNode* %35, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ store float %71, float* %69, align 4
+ %72 = icmp eq %struct.btDbvtNode* %37, null ; [#uses=1]
+ br i1 %72, label %bb5, label %bb4
+
+bb4: ; preds = %invcont3
+ %73 = and i32 %33, 1 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btDbvtNode* %37, i32 0, i32 2, i32 0, i32 %73 ; [#uses=1]
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %74, align 4
+ br label %bb6
+
+bb5: ; preds = %invcont3
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %0, align 4
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %75 = getelementptr inbounds %struct.btDbvtNode* %35, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %76 = load %struct.btDbvtNode** %75, align 4 ; [#uses=1]
+ %toBoolnot.i = icmp eq %struct.btDbvtNode* %76, null ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb10, label %bb7
+
+bb7: ; preds = %bb6
+ %77 = getelementptr inbounds %struct.btDbvtNode* %35, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %78 = load %struct.btDbvtNode** %77, align 4 ; [#uses=1]
+ %79 = icmp eq i32 %stack.2.2, %33 ; [#uses=1]
+ br i1 %79, label %bb.i53, label %bb1.i78
+
+bb.i53: ; preds = %bb7
+ %80 = icmp eq i32 %33, 0 ; [#uses=1]
+ %81 = shl i32 %33, 1 ; [#uses=1]
+ %iftmp.318.0.i.i52 = select i1 %80, i32 1, i32 %81 ; [#uses=5]
+ %82 = icmp slt i32 %stack.2.2, %iftmp.318.0.i.i52 ; [#uses=1]
+ br i1 %82, label %bb.i.i54, label %bb1.i78
+
+bb.i.i54: ; preds = %bb.i53
+ %83 = icmp eq i32 %iftmp.318.0.i.i52, 0 ; [#uses=1]
+ br i1 %83, label %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE8allocateEi.exit.i.i58, label %bb.i2.i.i57
+
+bb.i2.i.i57: ; preds = %bb.i.i54
+ %84 = shl i32 %iftmp.318.0.i.i52, 3 ; [#uses=1]
+ %85 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %84, i32 16)
+ to label %.noexc81 unwind label %lpad ; [#uses=1]
+
+.noexc81: ; preds = %bb.i2.i.i57
+ %phitmp.i.i55 = bitcast i8* %85 to %"struct.btDbvt::sStkCLN"* ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE8allocateEi.exit.i.i58
+
+_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE8allocateEi.exit.i.i58: ; preds = %.noexc81, %bb.i.i54
+ %86 = phi %"struct.btDbvt::sStkCLN"* [ %phitmp.i.i55, %.noexc81 ], [ null, %bb.i.i54 ] ; [#uses=5]
+ %87 = icmp sgt i32 %33, 0 ; [#uses=1]
+ br i1 %87, label %bb.i4.i.i62, label %_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i71
+
+bb.i4.i.i62: ; preds = %bb3.i.i.i70, %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE8allocateEi.exit.i.i58
+ %indvar.i.i.i60 = phi i32 [ %indvar.next.i.i.i68, %bb3.i.i.i70 ], [ 0, %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE8allocateEi.exit.i.i58 ] ; [#uses=6]
+ %scevgep.i.i.i61 = getelementptr %"struct.btDbvt::sStkCLN"* %86, i32 %indvar.i.i.i60 ; [#uses=1]
+ %88 = icmp eq %"struct.btDbvt::sStkCLN"* %scevgep.i.i.i61, null ; [#uses=1]
+ br i1 %88, label %bb3.i.i.i70, label %bb1.i5.i.i67
+
+bb1.i5.i.i67: ; preds = %bb.i4.i.i62
+ %scevgep12.i.i.i63 = getelementptr %"struct.btDbvt::sStkCLN"* %86, i32 %indvar.i.i.i60, i32 1 ; [#uses=1]
+ %scevgep11.i.i.i64 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %86, i32 %indvar.i.i.i60, i32 0 ; [#uses=1]
+ %scevgep89.i.i.i65 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %stack.3.2, i32 %indvar.i.i.i60, i32 0 ; [#uses=1]
+ %scevgep10.i.i.i66 = getelementptr %"struct.btDbvt::sStkCLN"* %stack.3.2, i32 %indvar.i.i.i60, i32 1 ; [#uses=1]
+ %89 = load %struct.btDbvtNode** %scevgep89.i.i.i65, align 4 ; [#uses=1]
+ %90 = load %struct.btDbvtNode** %scevgep10.i.i.i66, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %89, %struct.btDbvtNode** %scevgep11.i.i.i64, align 4
+ store %struct.btDbvtNode* %90, %struct.btDbvtNode** %scevgep12.i.i.i63, align 4
+ br label %bb3.i.i.i70
+
+bb3.i.i.i70: ; preds = %bb1.i5.i.i67, %bb.i4.i.i62
+ %indvar.next.i.i.i68 = add i32 %indvar.i.i.i60, 1 ; [#uses=2]
+ %exitcond135 = icmp eq i32 %indvar.next.i.i.i68, %33 ; [#uses=1]
+ br i1 %exitcond135, label %_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i71, label %bb.i4.i.i62
+
+_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i71: ; preds = %bb3.i.i.i70, %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE8allocateEi.exit.i.i58
+ %91 = icmp eq %"struct.btDbvt::sStkCLN"* %stack.3.2, null ; [#uses=1]
+ br i1 %91, label %bb1.i78, label %bb1.i.i.i74
+
+bb1.i.i.i74: ; preds = %_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i71
+ %92 = bitcast %"struct.btDbvt::sStkCLN"* %stack.3.2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %92)
+ to label %bb1.i78 unwind label %lpad.thread126
+
+bb1.i78: ; preds = %bb1.i.i.i74, %_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i71, %bb.i53, %bb7
+ %stack.2.3 = phi i32 [ %stack.2.2, %bb.i53 ], [ %stack.2.2, %bb7 ], [ %iftmp.318.0.i.i52, %bb1.i.i.i74 ], [ %iftmp.318.0.i.i52, %_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i71 ] ; [#uses=4]
+ %stack.3.4 = phi %"struct.btDbvt::sStkCLN"* [ %stack.3.2, %bb.i53 ], [ %stack.3.2, %bb7 ], [ %86, %bb1.i.i.i74 ], [ %86, %_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i71 ] ; [#uses=11]
+ %93 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %stack.3.4, i32 %33 ; [#uses=1]
+ %94 = icmp eq %"struct.btDbvt::sStkCLN"* %93, null ; [#uses=1]
+ br i1 %94, label %invcont8, label %bb2.i80
+
+bb2.i80: ; preds = %bb1.i78
+ %95 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %stack.3.4, i32 %33, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %78, %struct.btDbvtNode** %95, align 4
+ %96 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %stack.3.4, i32 %33, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %96, align 4
+ br label %invcont8
+
+invcont8: ; preds = %bb2.i80, %bb1.i78
+ %97 = load %struct.btDbvtNode** %75, align 4 ; [#uses=1]
+ %98 = icmp eq i32 %stack.2.3, %stack.1.1 ; [#uses=1]
+ br i1 %98, label %bb.i85, label %bb1.i110
+
+bb.i85: ; preds = %invcont8
+ %99 = icmp eq i32 %stack.1.1, 0 ; [#uses=1]
+ %100 = shl i32 %stack.1.1, 1 ; [#uses=1]
+ %iftmp.318.0.i.i84 = select i1 %99, i32 1, i32 %100 ; [#uses=5]
+ %101 = icmp slt i32 %stack.2.3, %iftmp.318.0.i.i84 ; [#uses=1]
+ br i1 %101, label %bb.i.i86, label %bb1.i110
+
+bb.i.i86: ; preds = %bb.i85
+ %102 = icmp eq i32 %iftmp.318.0.i.i84, 0 ; [#uses=1]
+ br i1 %102, label %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE8allocateEi.exit.i.i90, label %bb.i2.i.i89
+
+bb.i2.i.i89: ; preds = %bb.i.i86
+ %103 = shl i32 %iftmp.318.0.i.i84, 3 ; [#uses=1]
+ %104 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %103, i32 16)
+ to label %.noexc113 unwind label %lpad ; [#uses=1]
+
+.noexc113: ; preds = %bb.i2.i.i89
+ %phitmp.i.i87 = bitcast i8* %104 to %"struct.btDbvt::sStkCLN"* ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE8allocateEi.exit.i.i90
+
+_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE8allocateEi.exit.i.i90: ; preds = %.noexc113, %bb.i.i86
+ %105 = phi %"struct.btDbvt::sStkCLN"* [ %phitmp.i.i87, %.noexc113 ], [ null, %bb.i.i86 ] ; [#uses=5]
+ %106 = icmp sgt i32 %stack.1.1, 0 ; [#uses=1]
+ br i1 %106, label %bb.i4.i.i94, label %_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i103
+
+bb.i4.i.i94: ; preds = %bb3.i.i.i102, %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE8allocateEi.exit.i.i90
+ %indvar.i.i.i92 = phi i32 [ %indvar.next.i.i.i100, %bb3.i.i.i102 ], [ 0, %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE8allocateEi.exit.i.i90 ] ; [#uses=6]
+ %scevgep.i.i.i93 = getelementptr %"struct.btDbvt::sStkCLN"* %105, i32 %indvar.i.i.i92 ; [#uses=1]
+ %107 = icmp eq %"struct.btDbvt::sStkCLN"* %scevgep.i.i.i93, null ; [#uses=1]
+ br i1 %107, label %bb3.i.i.i102, label %bb1.i5.i.i99
+
+bb1.i5.i.i99: ; preds = %bb.i4.i.i94
+ %scevgep12.i.i.i95 = getelementptr %"struct.btDbvt::sStkCLN"* %105, i32 %indvar.i.i.i92, i32 1 ; [#uses=1]
+ %scevgep11.i.i.i96 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %105, i32 %indvar.i.i.i92, i32 0 ; [#uses=1]
+ %scevgep89.i.i.i97 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %stack.3.4, i32 %indvar.i.i.i92, i32 0 ; [#uses=1]
+ %scevgep10.i.i.i98 = getelementptr %"struct.btDbvt::sStkCLN"* %stack.3.4, i32 %indvar.i.i.i92, i32 1 ; [#uses=1]
+ %108 = load %struct.btDbvtNode** %scevgep89.i.i.i97, align 4 ; [#uses=1]
+ %109 = load %struct.btDbvtNode** %scevgep10.i.i.i98, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %108, %struct.btDbvtNode** %scevgep11.i.i.i96, align 4
+ store %struct.btDbvtNode* %109, %struct.btDbvtNode** %scevgep12.i.i.i95, align 4
+ br label %bb3.i.i.i102
+
+bb3.i.i.i102: ; preds = %bb1.i5.i.i99, %bb.i4.i.i94
+ %indvar.next.i.i.i100 = add i32 %indvar.i.i.i92, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i100, %stack.1.1 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i103, label %bb.i4.i.i94
+
+_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i103: ; preds = %bb3.i.i.i102, %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE8allocateEi.exit.i.i90
+ %110 = icmp eq %"struct.btDbvt::sStkCLN"* %stack.3.4, null ; [#uses=1]
+ br i1 %110, label %bb1.i110, label %bb1.i.i.i106
+
+bb1.i.i.i106: ; preds = %_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i103
+ %111 = bitcast %"struct.btDbvt::sStkCLN"* %stack.3.4 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %111)
+ to label %bb1.i110 unwind label %lpad.thread126
+
+bb1.i110: ; preds = %bb1.i.i.i106, %_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i103, %bb.i85, %invcont8
+ %stack.2.0 = phi i32 [ %stack.2.3, %bb.i85 ], [ %stack.2.3, %invcont8 ], [ %iftmp.318.0.i.i84, %bb1.i.i.i106 ], [ %iftmp.318.0.i.i84, %_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i103 ] ; [#uses=1]
+ %stack.3.0 = phi %"struct.btDbvt::sStkCLN"* [ %stack.3.4, %bb.i85 ], [ %stack.3.4, %invcont8 ], [ %105, %bb1.i.i.i106 ], [ %105, %_ZNK20btAlignedObjectArrayIN6btDbvt7sStkCLNEE4copyEiiPS1_.exit.i.i103 ] ; [#uses=4]
+ %112 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %stack.3.0, i32 %stack.1.1 ; [#uses=1]
+ %113 = icmp eq %"struct.btDbvt::sStkCLN"* %112, null ; [#uses=1]
+ br i1 %113, label %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE9push_backERKS1_.exit115, label %bb2.i112
+
+bb2.i112: ; preds = %bb1.i110
+ %114 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %stack.3.0, i32 %stack.1.1, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %97, %struct.btDbvtNode** %114, align 4
+ %115 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %stack.3.0, i32 %stack.1.1, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %115, align 4
+ br label %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE9push_backERKS1_.exit115
+
+_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE9push_backERKS1_.exit115: ; preds = %bb2.i112, %bb1.i110
+ %116 = add nsw i32 %stack.1.1, 1 ; [#uses=1]
+ br label %bb12
+
+bb10: ; preds = %bb6
+ %117 = load i32 (...)*** %32, align 4 ; [#uses=1]
+ %118 = getelementptr inbounds i32 (...)** %117, i32 2 ; [#uses=1]
+ %119 = load i32 (...)** %118, align 4 ; [#uses=1]
+ %120 = bitcast i32 (...)* %119 to void (%struct.btActionInterface*, %struct.btDbvtNode*)* ; [#uses=1]
+ invoke void %120(%struct.btActionInterface* %iclone, %struct.btDbvtNode* %node.0.i.i)
+ to label %bb12 unwind label %lpad
+
+bb12: ; preds = %bb10, %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE9push_backERKS1_.exit115
+ %stack.1.0 = phi i32 [ %33, %bb10 ], [ %116, %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE9push_backERKS1_.exit115 ] ; [#uses=2]
+ %stack.2.1 = phi i32 [ %stack.2.2, %bb10 ], [ %stack.2.0, %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE9push_backERKS1_.exit115 ] ; [#uses=1]
+ %stack.3.1 = phi %"struct.btDbvt::sStkCLN"* [ %stack.3.2, %bb10 ], [ %stack.3.0, %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEE9push_backERKS1_.exit115 ] ; [#uses=3]
+ %121 = icmp sgt i32 %stack.1.0, 0 ; [#uses=1]
+ br i1 %121, label %bb2, label %bb17
+
+invcont15: ; preds = %bb1.i.i.i44, %lpad, %lpad.thread
+ %eh_ptr124 = phi i8* [ %eh_ptr122, %lpad.thread ], [ %eh_ptr, %lpad ], [ %eh_ptr130, %bb1.i.i.i44 ] ; [#uses=1]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr124)
+ unreachable
+
+bb17: ; preds = %bb12
+ %122 = icmp eq %"struct.btDbvt::sStkCLN"* %stack.3.1, null ; [#uses=1]
+ br i1 %122, label %_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEED1Ev.exit51, label %bb2.i.i.i50
+
+bb2.i.i.i50: ; preds = %bb17
+ %123 = bitcast %"struct.btDbvt::sStkCLN"* %stack.3.1 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %123)
+ ret void
+
+_ZN20btAlignedObjectArrayIN6btDbvt7sStkCLNEED1Ev.exit51: ; preds = %bb17, %_ZN6btDbvt5clearEv.exit
+ ret void
+
+lpad.thread: ; preds = %bb.i2.i.i, %bb.i2.i
+ %eh_ptr122 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select20123 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr122, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %invcont15
+
+lpad.thread126: ; preds = %bb1.i.i.i106, %bb1.i.i.i74
+ %stack.3.3.ph = phi %"struct.btDbvt::sStkCLN"* [ %stack.3.4, %bb1.i.i.i106 ], [ %stack.3.2, %bb1.i.i.i74 ] ; [#uses=1]
+ %eh_ptr127 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select20128 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr127, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %bb1.i.i.i44
+
+lpad: ; preds = %bb10, %bb.i2.i.i89, %bb.i2.i.i57, %bb1.i.i40
+ %stack.3.3 = phi %"struct.btDbvt::sStkCLN"* [ %stack.3.2, %bb10 ], [ %stack.3.4, %bb.i2.i.i89 ], [ %stack.3.2, %bb.i2.i.i57 ], [ %stack.3.2, %bb1.i.i40 ] ; [#uses=2]
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=3]
+ %eh_select20 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %124 = icmp eq %"struct.btDbvt::sStkCLN"* %stack.3.3, null ; [#uses=1]
+ br i1 %124, label %invcont15, label %bb1.i.i.i44
+
+bb1.i.i.i44: ; preds = %lpad, %lpad.thread126
+ %stack.3.3129 = phi %"struct.btDbvt::sStkCLN"* [ %stack.3.3.ph, %lpad.thread126 ], [ %stack.3.3, %lpad ] ; [#uses=1]
+ %eh_ptr130 = phi i8* [ %eh_ptr127, %lpad.thread126 ], [ %eh_ptr, %lpad ] ; [#uses=1]
+ %125 = bitcast %"struct.btDbvt::sStkCLN"* %stack.3.3129 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %125)
+ to label %invcont15 unwind label %lpad21
+
+lpad21: ; preds = %bb1.i.i.i44
+ %eh_ptr22 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select24 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr22, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN6btDbvt16optimizeBottomUpEv(%struct.btDbvt* %this) align 2 {
+entry:
+ %leaves = alloca %"struct.btAlignedObjectArray<btDbvtNode*>", align 8 ; [#uses=6]
+ %0 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=3]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btDbvtNode* %1, null ; [#uses=1]
+ br i1 %2, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit21, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 4 ; [#uses=6]
+ store i8 1, i8* %3, align 8
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 3 ; [#uses=10]
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %4, align 4
+ %5 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 1 ; [#uses=3]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 2 ; [#uses=3]
+ store i32 0, i32* %6, align 8
+ %7 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 3 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=3]
+ %9 = icmp sgt i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb.i2.i, label %invcont
+
+bb.i2.i: ; preds = %bb
+ %10 = shl i32 %8, 2 ; [#uses=1]
+ %11 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %10, i32 16)
+ to label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i unwind label %lpad ; [#uses=2]
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i: ; preds = %bb.i2.i
+ %phitmp.i = bitcast i8* %11 to %struct.btDbvtNode** ; [#uses=1]
+ %12 = load i32* %5, align 4 ; [#uses=2]
+ %13 = icmp sgt i32 %12, 0 ; [#uses=1]
+ br i1 %13, label %bb.i4.i, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i
+
+bb.i4.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i
+ %indvar.i.i = phi i32 [ %indvar.next.i.i, %bb3.i.i ], [ 0, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i ] ; [#uses=3]
+ %tmp = shl i32 %indvar.i.i, 2 ; [#uses=1]
+ %scevgep = getelementptr i8* %11, i32 %tmp ; [#uses=2]
+ %14 = icmp eq i8* %scevgep, null ; [#uses=1]
+ br i1 %14, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %scevgep.i.i = bitcast i8* %scevgep to %struct.btDbvtNode** ; [#uses=1]
+ %15 = load %struct.btDbvtNode*** %4, align 4 ; [#uses=1]
+ %scevgep8.i.i = getelementptr %struct.btDbvtNode** %15, i32 %indvar.i.i ; [#uses=1]
+ %16 = load %struct.btDbvtNode** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %16, %struct.btDbvtNode** %scevgep.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %12 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i
+ %17 = load %struct.btDbvtNode*** %4, align 4 ; [#uses=2]
+ %18 = icmp eq %struct.btDbvtNode** %17, null ; [#uses=1]
+ br i1 %18, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i
+ %19 = load i8* %3, align 8 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %19, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %20 = bitcast %struct.btDbvtNode** %17 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %20)
+ to label %bb2.i.i unwind label %lpad
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %4, align 4
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i
+ store i8 1, i8* %3, align 8
+ store %struct.btDbvtNode** %phitmp.i, %struct.btDbvtNode*** %4, align 4
+ store i32 %8, i32* %6, align 8
+ %.pre = load %struct.btDbvtNode** %0, align 4 ; [#uses=1]
+ br label %invcont
+
+invcont: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i, %bb
+ %21 = phi %struct.btDbvtNode* [ %.pre, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i ], [ %1, %bb ] ; [#uses=1]
+ invoke fastcc void @_ZL11fetchleavesP6btDbvtP10btDbvtNodeR20btAlignedObjectArrayIS2_Ei(%struct.btDbvt* %this, %struct.btDbvtNode* %21, %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 -1)
+ to label %invcont1 unwind label %lpad
+
+invcont1: ; preds = %invcont
+ invoke fastcc void @_ZL8bottomupP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeE(%struct.btDbvt* %this, %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves)
+ to label %invcont2 unwind label %lpad
+
+invcont2: ; preds = %invcont1
+ %22 = load %struct.btDbvtNode*** %4, align 4 ; [#uses=3]
+ %23 = load %struct.btDbvtNode** %22, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %23, %struct.btDbvtNode** %0, align 4
+ %24 = icmp eq %struct.btDbvtNode** %22, null ; [#uses=1]
+ br i1 %24, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit21, label %bb.i.i.i18
+
+bb.i.i.i18: ; preds = %invcont2
+ %25 = load i8* %3, align 8 ; [#uses=1]
+ %toBool.i.i.i17 = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i17, label %bb2.i.i.i20, label %bb1.i.i.i19
+
+bb1.i.i.i19: ; preds = %bb.i.i.i18
+ %26 = bitcast %struct.btDbvtNode** %22 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %26)
+ br label %bb2.i.i.i20
+
+bb2.i.i.i20: ; preds = %bb1.i.i.i19, %bb.i.i.i18
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %4, align 4
+ ret void
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit21: ; preds = %invcont2, %entry
+ ret void
+
+invcont4: ; preds = %bb2.i.i.i, %lpad
+ store i8 1, i8* %3, align 8
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %4, align 4
+ store i32 0, i32* %5, align 4
+ store i32 0, i32* %6, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %invcont1, %invcont, %bb1.i.i, %bb.i2.i
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %27 = load %struct.btDbvtNode*** %4, align 4 ; [#uses=2]
+ %28 = icmp eq %struct.btDbvtNode** %27, null ; [#uses=1]
+ br i1 %28, label %invcont4, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad
+ %29 = load i8* %3, align 8 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %29, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %30 = bitcast %struct.btDbvtNode** %27 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %30)
+ to label %bb2.i.i.i unwind label %lpad9
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %4, align 4
+ br label %invcont4
+
+lpad9: ; preds = %bb1.i.i.i
+ %eh_ptr10 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=11]
+define void @_ZN6btDbvtD1Ev(%struct.btDbvt* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btDbvtNode* %1, null ; [#uses=1]
+ br i1 %2, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %entry
+ invoke fastcc void @_ZL17recursedeletenodeP6btDbvtP10btDbvtNode(%struct.btDbvt* %this, %struct.btDbvtNode* %1)
+ to label %bb1.i unwind label %lpad
+
+bb1.i: ; preds = %bb.i, %entry
+ %3 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 1 ; [#uses=2]
+ %4 = load %struct.btDbvtNode** %3, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btDbvtNode* %4 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %.noexc13 unwind label %lpad
+
+.noexc13: ; preds = %bb1.i
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %3, align 4
+ %6 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 3 ; [#uses=3]
+ %8 = load %"struct.btDbvt::sStkCLN"** %7, align 4 ; [#uses=2]
+ %9 = icmp eq %"struct.btDbvt::sStkCLN"* %8, null ; [#uses=1]
+ br i1 %9, label %_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %.noexc13
+ %10 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %11 = load i8* %10, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %11, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %12 = bitcast %"struct.btDbvt::sStkCLN"* %8 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %12)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %7, align 4
+ br label %_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEED1Ev.exit
+
+invcont1: ; preds = %bb2.i.i.i22, %lpad
+ %13 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %13, align 4
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %20, align 4
+ %14 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEED1Ev.exit: ; preds = %bb2.i.i.i, %.noexc13
+ %16 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %19, align 4
+ store i8 1, i8* %16, align 4
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %7, align 4
+ store i32 0, i32* %17, align 4
+ store i32 0, i32* %18, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i, %bb1.i, %bb.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %20 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 3 ; [#uses=3]
+ %21 = load %"struct.btDbvt::sStkCLN"** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %"struct.btDbvt::sStkCLN"* %21, null ; [#uses=1]
+ br i1 %22, label %invcont1, label %bb.i.i.i20
+
+bb.i.i.i20: ; preds = %lpad
+ %23 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i.i19 = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i19, label %bb2.i.i.i22, label %bb1.i.i.i21
+
+bb1.i.i.i21: ; preds = %bb.i.i.i20
+ %25 = bitcast %"struct.btDbvt::sStkCLN"* %21 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %25)
+ to label %bb2.i.i.i22 unwind label %lpad7
+
+bb2.i.i.i22: ; preds = %bb1.i.i.i21, %bb.i.i.i20
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %20, align 4
+ br label %invcont1
+
+lpad7: ; preds = %bb1.i.i.i21
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN6btDbvtD2Ev(%struct.btDbvt* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btDbvtNode* %1, null ; [#uses=1]
+ br i1 %2, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %entry
+ invoke fastcc void @_ZL17recursedeletenodeP6btDbvtP10btDbvtNode(%struct.btDbvt* %this, %struct.btDbvtNode* %1)
+ to label %bb1.i unwind label %lpad
+
+bb1.i: ; preds = %bb.i, %entry
+ %3 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 1 ; [#uses=2]
+ %4 = load %struct.btDbvtNode** %3, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btDbvtNode* %4 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %.noexc13 unwind label %lpad
+
+.noexc13: ; preds = %bb1.i
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %3, align 4
+ %6 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 3 ; [#uses=3]
+ %8 = load %"struct.btDbvt::sStkCLN"** %7, align 4 ; [#uses=2]
+ %9 = icmp eq %"struct.btDbvt::sStkCLN"* %8, null ; [#uses=1]
+ br i1 %9, label %_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %.noexc13
+ %10 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %11 = load i8* %10, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %11, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %12 = bitcast %"struct.btDbvt::sStkCLN"* %8 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %12)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %7, align 4
+ br label %_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEED1Ev.exit
+
+invcont1: ; preds = %bb2.i.i.i22, %lpad
+ %13 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %13, align 4
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %20, align 4
+ %14 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEED1Ev.exit: ; preds = %bb2.i.i.i, %.noexc13
+ %16 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %19, align 4
+ store i8 1, i8* %16, align 4
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %7, align 4
+ store i32 0, i32* %17, align 4
+ store i32 0, i32* %18, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i, %bb1.i, %bb.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %20 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 3 ; [#uses=3]
+ %21 = load %"struct.btDbvt::sStkCLN"** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %"struct.btDbvt::sStkCLN"* %21, null ; [#uses=1]
+ br i1 %22, label %invcont1, label %bb.i.i.i20
+
+bb.i.i.i20: ; preds = %lpad
+ %23 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i.i19 = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i19, label %bb2.i.i.i22, label %bb1.i.i.i21
+
+bb1.i.i.i21: ; preds = %bb.i.i.i20
+ %25 = bitcast %"struct.btDbvt::sStkCLN"* %21 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %25)
+ to label %bb2.i.i.i22 unwind label %lpad7
+
+bb2.i.i.i22: ; preds = %bb1.i.i.i21, %bb.i.i.i20
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %20, align 4
+ br label %invcont1
+
+lpad7: ; preds = %bb1.i.i.i21
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btDbvtNodeEnumeratorD0Ev(%struct.btDbvtNodeEnumerator* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV20btDbvtNodeEnumerator, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btDbvtNode*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btDbvtNode** %2, null ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btDbvtNode** %2 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %1, align 4
+ br label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeED1Ev.exit
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeED1Ev.exit: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %1, align 4
+ %8 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = bitcast %struct.btDbvtNodeEnumerator* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %10) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btDbvtNodeEnumeratorD1Ev(%struct.btDbvtNodeEnumerator* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV20btDbvtNodeEnumerator, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btDbvtNode*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btDbvtNode** %2, null ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btDbvtNode** %2 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %1, align 4
+ br label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeED1Ev.exit
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeED1Ev.exit: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %1, align 4
+ %8 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZNK6btDbvt5writeEPNS_7IWriterE(%struct.btDbvt* nocapture %this, %struct.btActionInterface* %iwriter) align 2 {
+entry:
+ %nodes = alloca %struct.btDbvtNodeEnumerator, align 8 ; [#uses=6]
+ %0 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %nodes, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV20btDbvtNodeEnumerator, i32 0, i32 2), i32 (...)*** %0, align 8
+ %1 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %nodes, i32 0, i32 1, i32 4 ; [#uses=6]
+ store i8 1, i8* %1, align 4
+ %2 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %nodes, i32 0, i32 1, i32 3 ; [#uses=11]
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %2, align 4
+ %3 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %nodes, i32 0, i32 1, i32 1 ; [#uses=5]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %nodes, i32 0, i32 1, i32 2 ; [#uses=3]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 3 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=2]
+ %7 = shl i32 %6, 1 ; [#uses=2]
+ %8 = icmp sgt i32 %7, 0 ; [#uses=1]
+ br i1 %8, label %bb.i2.i, label %invcont
+
+bb.i2.i: ; preds = %entry
+ %9 = shl i32 %6, 3 ; [#uses=1]
+ %10 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16)
+ to label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i unwind label %lpad ; [#uses=2]
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i: ; preds = %bb.i2.i
+ %phitmp.i = bitcast i8* %10 to %struct.btDbvtNode** ; [#uses=1]
+ %11 = load i32* %3, align 4 ; [#uses=2]
+ %12 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %12, label %bb.i4.i, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i
+
+bb.i4.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i
+ %indvar.i.i = phi i32 [ %indvar.next.i.i, %bb3.i.i ], [ 0, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i ] ; [#uses=3]
+ %tmp = shl i32 %indvar.i.i, 2 ; [#uses=1]
+ %scevgep45 = getelementptr i8* %10, i32 %tmp ; [#uses=2]
+ %13 = icmp eq i8* %scevgep45, null ; [#uses=1]
+ br i1 %13, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %scevgep.i.i = bitcast i8* %scevgep45 to %struct.btDbvtNode** ; [#uses=1]
+ %14 = load %struct.btDbvtNode*** %2, align 4 ; [#uses=1]
+ %scevgep8.i.i = getelementptr %struct.btDbvtNode** %14, i32 %indvar.i.i ; [#uses=1]
+ %15 = load %struct.btDbvtNode** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %15, %struct.btDbvtNode** %scevgep.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i
+ %16 = load %struct.btDbvtNode*** %2, align 4 ; [#uses=2]
+ %17 = icmp eq %struct.btDbvtNode** %16, null ; [#uses=1]
+ br i1 %17, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i
+ %18 = load i8* %1, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %18, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %19 = bitcast %struct.btDbvtNode** %16 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %19)
+ to label %bb2.i.i unwind label %lpad
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %2, align 4
+ br label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i
+ store i8 1, i8* %1, align 4
+ store %struct.btDbvtNode** %phitmp.i, %struct.btDbvtNode*** %2, align 4
+ store i32 %7, i32* %4, align 4
+ br label %invcont
+
+invcont: ; preds = %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE10deallocateEv.exit.i, %entry
+ %20 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=2]
+ %21 = load %struct.btDbvtNode** %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btDbvtNodeEnumerator* %nodes, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN6btDbvt9enumNodesEPK10btDbvtNodeRNS_8ICollideE(%struct.btDbvtNode* %21, %struct.btActionInterface* %22) inlinehint
+ to label %invcont1 unwind label %lpad
+
+invcont1: ; preds = %invcont
+ %23 = getelementptr inbounds %struct.btActionInterface* %iwriter, i32 0, i32 0 ; [#uses=3]
+ %24 = load i32 (...)*** %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i32 (...)** %24, i32 2 ; [#uses=1]
+ %26 = load i32 (...)** %25, align 4 ; [#uses=1]
+ %27 = load i32* %3, align 4 ; [#uses=1]
+ %28 = load %struct.btDbvtNode** %20, align 4 ; [#uses=1]
+ %29 = bitcast i32 (...)* %26 to void (%struct.btActionInterface*, %struct.btDbvtNode*, i32)* ; [#uses=1]
+ invoke void %29(%struct.btActionInterface* %iwriter, %struct.btDbvtNode* %28, i32 %27)
+ to label %bb10 unwind label %lpad
+
+bb: ; preds = %bb10
+ %30 = load %struct.btDbvtNode*** %2, align 4 ; [#uses=4]
+ %scevgep = getelementptr %struct.btDbvtNode** %30, i32 %63 ; [#uses=1]
+ %31 = load %struct.btDbvtNode** %scevgep, align 4 ; [#uses=5]
+ %32 = getelementptr inbounds %struct.btDbvtNode* %31, i32 0, i32 1 ; [#uses=1]
+ %33 = load %struct.btDbvtNode** %32, align 4 ; [#uses=2]
+ %34 = icmp eq %struct.btDbvtNode* %33, null ; [#uses=1]
+ br i1 %34, label %bb4, label %bb3.i
+
+bb.i31: ; preds = %bb3.i
+ %scevgep.i = getelementptr %struct.btDbvtNode** %30, i32 %38 ; [#uses=1]
+ %35 = load %struct.btDbvtNode** %scevgep.i, align 4 ; [#uses=1]
+ %36 = icmp eq %struct.btDbvtNode* %35, %33 ; [#uses=1]
+ br i1 %36, label %bb4, label %bb2.i
+
+bb2.i: ; preds = %bb.i31
+ %37 = add nsw i32 %38, 1 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb
+ %38 = phi i32 [ %37, %bb2.i ], [ 0, %bb ] ; [#uses=4]
+ %39 = icmp sgt i32 %64, %38 ; [#uses=1]
+ br i1 %39, label %bb.i31, label %bb4
+
+bb4: ; preds = %bb3.i, %bb.i31, %bb
+ %p.0 = phi i32 [ -1, %bb ], [ %64, %bb3.i ], [ %38, %bb.i31 ] ; [#uses=2]
+ %40 = getelementptr inbounds %struct.btDbvtNode* %31, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %41 = load %struct.btDbvtNode** %40, align 4 ; [#uses=2]
+ %toBoolnot.i = icmp eq %struct.btDbvtNode* %41, null ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb7, label %bb5
+
+bb5: ; preds = %bb4
+ %42 = getelementptr inbounds %struct.btDbvtNode* %31, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %43 = load %struct.btDbvtNode** %42, align 4 ; [#uses=1]
+ br label %bb3.i35
+
+bb.i33: ; preds = %bb3.i35
+ %scevgep.i32 = getelementptr %struct.btDbvtNode** %30, i32 %47 ; [#uses=1]
+ %44 = load %struct.btDbvtNode** %scevgep.i32, align 4 ; [#uses=1]
+ %45 = icmp eq %struct.btDbvtNode* %44, %43 ; [#uses=1]
+ br i1 %45, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE16findLinearSearchERKS2_.exit37, label %bb2.i34
+
+bb2.i34: ; preds = %bb.i33
+ %46 = add nsw i32 %47, 1 ; [#uses=1]
+ br label %bb3.i35
+
+bb3.i35: ; preds = %bb2.i34, %bb5
+ %47 = phi i32 [ 0, %bb5 ], [ %46, %bb2.i34 ] ; [#uses=4]
+ %48 = icmp sgt i32 %64, %47 ; [#uses=1]
+ br i1 %48, label %bb.i33, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE16findLinearSearchERKS2_.exit37
+
+_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE16findLinearSearchERKS2_.exit37: ; preds = %bb3.i35, %bb.i33
+ %index.0.i36 = phi i32 [ %64, %bb3.i35 ], [ %47, %bb.i33 ] ; [#uses=1]
+ br label %bb3.i41
+
+bb.i39: ; preds = %bb3.i41
+ %scevgep.i38 = getelementptr %struct.btDbvtNode** %30, i32 %52 ; [#uses=1]
+ %49 = load %struct.btDbvtNode** %scevgep.i38, align 4 ; [#uses=1]
+ %50 = icmp eq %struct.btDbvtNode* %49, %41 ; [#uses=1]
+ br i1 %50, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE16findLinearSearchERKS2_.exit43, label %bb2.i40
+
+bb2.i40: ; preds = %bb.i39
+ %51 = add nsw i32 %52, 1 ; [#uses=1]
+ br label %bb3.i41
+
+bb3.i41: ; preds = %bb2.i40, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE16findLinearSearchERKS2_.exit37
+ %52 = phi i32 [ 0, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE16findLinearSearchERKS2_.exit37 ], [ %51, %bb2.i40 ] ; [#uses=4]
+ %53 = icmp sgt i32 %64, %52 ; [#uses=1]
+ br i1 %53, label %bb.i39, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE16findLinearSearchERKS2_.exit43
+
+_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE16findLinearSearchERKS2_.exit43: ; preds = %bb3.i41, %bb.i39
+ %index.0.i42 = phi i32 [ %64, %bb3.i41 ], [ %52, %bb.i39 ] ; [#uses=1]
+ %54 = load i32 (...)*** %23, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds i32 (...)** %54, i32 3 ; [#uses=1]
+ %56 = load i32 (...)** %55, align 4 ; [#uses=1]
+ %57 = bitcast i32 (...)* %56 to void (%struct.btActionInterface*, %struct.btDbvtNode*, i32, i32, i32, i32)* ; [#uses=1]
+ invoke void %57(%struct.btActionInterface* %iwriter, %struct.btDbvtNode* %31, i32 %63, i32 %p.0, i32 %index.0.i36, i32 %index.0.i42)
+ to label %bb9 unwind label %lpad
+
+bb7: ; preds = %bb4
+ %58 = load i32 (...)*** %23, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds i32 (...)** %58, i32 4 ; [#uses=1]
+ %60 = load i32 (...)** %59, align 4 ; [#uses=1]
+ %61 = bitcast i32 (...)* %60 to void (%struct.btActionInterface*, %struct.btDbvtNode*, i32, i32)* ; [#uses=1]
+ invoke void %61(%struct.btActionInterface* %iwriter, %struct.btDbvtNode* %31, i32 %63, i32 %p.0)
+ to label %bb9 unwind label %lpad
+
+bb9: ; preds = %bb7, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE16findLinearSearchERKS2_.exit43
+ %62 = add nsw i32 %63, 1 ; [#uses=1]
+ br label %bb10
+
+bb10: ; preds = %bb9, %invcont1
+ %63 = phi i32 [ %62, %bb9 ], [ 0, %invcont1 ] ; [#uses=5]
+ %64 = load i32* %3, align 4 ; [#uses=7]
+ %65 = icmp sgt i32 %64, %63 ; [#uses=1]
+ br i1 %65, label %bb, label %bb15
+
+invcont13: ; preds = %bb2.i.i.i.i, %lpad
+ store i8 1, i8* %1, align 4
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %2, align 4
+ store i32 0, i32* %3, align 4
+ store i32 0, i32* %4, align 4
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb15: ; preds = %bb10
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV20btDbvtNodeEnumerator, i32 0, i32 2), i32 (...)*** %0, align 8
+ %66 = load %struct.btDbvtNode*** %2, align 4 ; [#uses=2]
+ %67 = icmp eq %struct.btDbvtNode** %66, null ; [#uses=1]
+ br i1 %67, label %_ZN20btDbvtNodeEnumeratorD1Ev.exit30, label %bb.i.i.i.i27
+
+bb.i.i.i.i27: ; preds = %bb15
+ %68 = load i8* %1, align 4 ; [#uses=1]
+ %toBool.i.i.i.i26 = icmp eq i8 %68, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i26, label %bb2.i.i.i.i29, label %bb1.i.i.i.i28
+
+bb1.i.i.i.i28: ; preds = %bb.i.i.i.i27
+ %69 = bitcast %struct.btDbvtNode** %66 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %69)
+ br label %bb2.i.i.i.i29
+
+bb2.i.i.i.i29: ; preds = %bb1.i.i.i.i28, %bb.i.i.i.i27
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %2, align 4
+ ret void
+
+_ZN20btDbvtNodeEnumeratorD1Ev.exit30: ; preds = %bb15
+ ret void
+
+lpad: ; preds = %bb7, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE16findLinearSearchERKS2_.exit43, %invcont1, %invcont, %bb1.i.i, %bb.i2.i
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV20btDbvtNodeEnumerator, i32 0, i32 2), i32 (...)*** %0, align 8
+ %70 = load %struct.btDbvtNode*** %2, align 4 ; [#uses=2]
+ %71 = icmp eq %struct.btDbvtNode** %70, null ; [#uses=1]
+ br i1 %71, label %invcont13, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %lpad
+ %72 = load i8* %1, align 4 ; [#uses=1]
+ %toBool.i.i.i.i = icmp eq i8 %72, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i, label %bb2.i.i.i.i, label %bb1.i.i.i.i
+
+bb1.i.i.i.i: ; preds = %bb.i.i.i.i
+ %73 = bitcast %struct.btDbvtNode** %70 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %73)
+ to label %bb2.i.i.i.i unwind label %lpad18
+
+bb2.i.i.i.i: ; preds = %bb1.i.i.i.i, %bb.i.i.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %2, align 4
+ br label %invcont13
+
+lpad18: ; preds = %bb1.i.i.i.i
+ %eh_ptr19 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select21 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=3]
+define internal fastcc %struct.btDbvtNode* @_ZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEi(%struct.btDbvt* %pdbvt, %"struct.btAlignedObjectArray<btDbvtNode*>"* nocapture %leaves, i32 %bu_treshold) {
+entry:
+ %sets = alloca [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"], align 8 ; [#uses=57]
+ %splitcount = alloca [3 x [2 x i32]], align 4 ; [#uses=11]
+ %0 = load i8* bitcast (i64* @_ZGVZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis to i8*), align 8 ; [#uses=1]
+ %1 = icmp eq i8 %0, 0 ; [#uses=1]
+ br i1 %1, label %bb, label %bb2
+
+bb: ; preds = %entry
+ %2 = call i32 @__cxa_guard_acquire(i64* @_ZGVZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis) nounwind ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 0, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 0, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 0, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 1, i32 0, i32 0), align 16
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 1, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 1, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 1, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 2, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 2, i32 0, i32 1), align 4
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 2, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 2, i32 0, i32 3), align 4
+ call void @__cxa_guard_release(i64* @_ZGVZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb, %entry
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 1 ; [#uses=4]
+ %5 = load i32* %4, align 4 ; [#uses=11]
+ %6 = icmp sgt i32 %5, 1 ; [#uses=1]
+ br i1 %6, label %bb4, label %bb60
+
+bb4: ; preds = %bb2
+ %7 = icmp sgt i32 %5, %bu_treshold ; [#uses=1]
+ br i1 %7, label %bb.nph.i, label %bb59
+
+bb.nph.i: ; preds = %bb4
+ %leaves.idx85 = getelementptr %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 3 ; [#uses=3]
+ %leaves.idx85.val = load %struct.btDbvtNode*** %leaves.idx85, align 4 ; [#uses=3]
+ %8 = load %struct.btDbvtNode** %leaves.idx85.val, align 4 ; [#uses=8]
+ %9 = getelementptr inbounds %struct.btDbvtNode* %8, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btDbvtNode* %8, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btDbvtNode* %8, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btDbvtNode* %8, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btDbvtNode* %8, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btDbvtNode* %8, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btDbvtNode* %8, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btDbvtNode* %8, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %tmp.i = add i32 %5, -1 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %bb.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %tmp276, %bb.i ] ; [#uses=1]
+ %locals.0.0.0.014.i = phi float [ %10, %bb.nph.i ], [ %storemerge.i.i, %bb.i ] ; [#uses=2]
+ %locals.0.0.1.013.i = phi float [ %12, %bb.nph.i ], [ %storemerge17.i.i, %bb.i ] ; [#uses=2]
+ %locals.0.0.2.012.i = phi float [ %14, %bb.nph.i ], [ %storemerge19.i.i, %bb.i ] ; [#uses=2]
+ %locals.1.0.2.011.i = phi float [ %22, %bb.nph.i ], [ %storemerge20.i.i, %bb.i ] ; [#uses=2]
+ %locals.1.0.0.010.i = phi float [ %18, %bb.nph.i ], [ %storemerge16.i.i, %bb.i ] ; [#uses=2]
+ %locals.1.0.1.09.i = phi float [ %20, %bb.nph.i ], [ %storemerge18.i.i, %bb.i ] ; [#uses=2]
+ %tmp276 = add i32 %indvar.i, 1 ; [#uses=3]
+ %scevgep.i = getelementptr %struct.btDbvtNode** %leaves.idx85.val, i32 %tmp276 ; [#uses=1]
+ %25 = load %struct.btDbvtNode** %scevgep.i, align 4 ; [#uses=6]
+ %scevgep11.i.i = getelementptr %struct.btDbvtNode* %25, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep14.i.i = getelementptr %struct.btDbvtNode* %25, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %scevgep11.i.i, align 4 ; [#uses=2]
+ %27 = fcmp olt float %locals.0.0.0.014.i, %26 ; [#uses=1]
+ %storemerge.i.i = select i1 %27, float %locals.0.0.0.014.i, float %26 ; [#uses=3]
+ %28 = load float* %scevgep14.i.i, align 4 ; [#uses=2]
+ %29 = fcmp ogt float %locals.1.0.0.010.i, %28 ; [#uses=1]
+ %storemerge16.i.i = select i1 %29, float %locals.1.0.0.010.i, float %28 ; [#uses=3]
+ %scevgep11.1.i.i = getelementptr %struct.btDbvtNode* %25, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep14.1.i.i = getelementptr %struct.btDbvtNode* %25, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %scevgep11.1.i.i, align 4 ; [#uses=2]
+ %31 = fcmp olt float %locals.0.0.1.013.i, %30 ; [#uses=1]
+ %storemerge17.i.i = select i1 %31, float %locals.0.0.1.013.i, float %30 ; [#uses=3]
+ %32 = load float* %scevgep14.1.i.i, align 4 ; [#uses=2]
+ %33 = fcmp ogt float %locals.1.0.1.09.i, %32 ; [#uses=1]
+ %storemerge18.i.i = select i1 %33, float %locals.1.0.1.09.i, float %32 ; [#uses=3]
+ %scevgep11.2.i.i = getelementptr %struct.btDbvtNode* %25, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep14.2.i.i = getelementptr %struct.btDbvtNode* %25, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %scevgep11.2.i.i, align 4 ; [#uses=2]
+ %35 = fcmp olt float %locals.0.0.2.012.i, %34 ; [#uses=1]
+ %storemerge19.i.i = select i1 %35, float %locals.0.0.2.012.i, float %34 ; [#uses=3]
+ %36 = load float* %scevgep14.2.i.i, align 4 ; [#uses=2]
+ %37 = fcmp ogt float %locals.1.0.2.011.i, %36 ; [#uses=1]
+ %storemerge20.i.i = select i1 %37, float %locals.1.0.2.011.i, float %36 ; [#uses=3]
+ %exitcond275 = icmp eq i32 %tmp276, %tmp.i ; [#uses=1]
+ br i1 %exitcond275, label %bb16, label %bb.i
+
+bb16: ; preds = %bb.i
+ %38 = fadd float %storemerge19.i.i, %storemerge20.i.i ; [#uses=1]
+ %39 = fadd float %storemerge17.i.i, %storemerge18.i.i ; [#uses=1]
+ %40 = fadd float %storemerge.i.i, %storemerge16.i.i ; [#uses=1]
+ %41 = fmul float %38, 5.000000e-01 ; [#uses=2]
+ %42 = fmul float %39, 5.000000e-01 ; [#uses=2]
+ %43 = fmul float %40, 5.000000e-01 ; [#uses=2]
+ %scevgep271 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 4 ; [#uses=1]
+ %scevgep272 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep273 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep274 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i8 1, i8* %scevgep271, align 8
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %scevgep272, align 4
+ store i32 0, i32* %scevgep273, align 4
+ store i32 0, i32* %scevgep274, align 8
+ %scevgep271.1 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 4 ; [#uses=1]
+ %scevgep272.1 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 3 ; [#uses=1]
+ %scevgep273.1 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 1 ; [#uses=1]
+ %scevgep274.1 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i8 1, i8* %scevgep271.1, align 4
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %scevgep272.1, align 4
+ store i32 0, i32* %scevgep273.1, align 4
+ store i32 0, i32* %scevgep274.1, align 4
+ %44 = getelementptr inbounds [3 x [2 x i32]]* %splitcount, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 0, i32* %44, align 4
+ %45 = getelementptr inbounds [3 x [2 x i32]]* %splitcount, i32 0, i32 0, i32 1 ; [#uses=2]
+ store i32 0, i32* %45, align 4
+ %46 = getelementptr inbounds [3 x [2 x i32]]* %splitcount, i32 0, i32 1, i32 0 ; [#uses=2]
+ store i32 0, i32* %46, align 4
+ %47 = getelementptr inbounds [3 x [2 x i32]]* %splitcount, i32 0, i32 1, i32 1 ; [#uses=2]
+ store i32 0, i32* %47, align 4
+ %48 = getelementptr inbounds [3 x [2 x i32]]* %splitcount, i32 0, i32 2, i32 0 ; [#uses=2]
+ store i32 0, i32* %48, align 4
+ %49 = getelementptr inbounds [3 x [2 x i32]]* %splitcount, i32 0, i32 2, i32 1 ; [#uses=2]
+ store i32 0, i32* %49, align 4
+ %50 = icmp sgt i32 %5, 0 ; [#uses=1]
+ br i1 %50, label %bb23, label %bb.nph206
+
+bb23: ; preds = %bb23, %bb16
+ %i.0209 = phi i32 [ 0, %bb16 ], [ %106, %bb23 ] ; [#uses=2]
+ %scevgep267 = getelementptr %struct.btDbvtNode** %leaves.idx85.val, i32 %i.0209 ; [#uses=1]
+ %51 = load %struct.btDbvtNode** %scevgep267, align 4 ; [#uses=6]
+ %52 = getelementptr inbounds %struct.btDbvtNode* %51, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btDbvtNode* %51, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fadd float %53, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btDbvtNode* %51, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btDbvtNode* %51, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ %61 = fadd float %58, %60 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btDbvtNode* %51, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btDbvtNode* %51, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ %66 = fadd float %63, %65 ; [#uses=1]
+ %67 = fmul float %56, 5.000000e-01 ; [#uses=1]
+ %68 = fmul float %61, 5.000000e-01 ; [#uses=1]
+ %69 = fmul float %66, 5.000000e-01 ; [#uses=1]
+ %70 = fsub float %67, %41 ; [#uses=3]
+ %71 = fsub float %68, %42 ; [#uses=3]
+ %72 = fsub float %69, %43 ; [#uses=3]
+ %73 = load float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 0, i32 0, i32 0), align 32 ; [#uses=1]
+ %74 = fmul float %72, %73 ; [#uses=1]
+ %75 = load float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 0, i32 0, i32 1), align 4 ; [#uses=1]
+ %76 = fmul float %71, %75 ; [#uses=1]
+ %77 = fadd float %74, %76 ; [#uses=1]
+ %78 = load float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 0, i32 0, i32 2), align 8 ; [#uses=1]
+ %79 = fmul float %70, %78 ; [#uses=1]
+ %80 = fadd float %77, %79 ; [#uses=1]
+ %81 = fcmp ogt float %80, 0.000000e+00 ; [#uses=1]
+ %tmp257 = zext i1 %81 to i32 ; [#uses=1]
+ %scevgep258 = getelementptr [3 x [2 x i32]]* %splitcount, i32 0, i32 0, i32 %tmp257 ; [#uses=2]
+ %82 = load i32* %scevgep258, align 4 ; [#uses=1]
+ %83 = add nsw i32 %82, 1 ; [#uses=1]
+ store i32 %83, i32* %scevgep258, align 4
+ %84 = load float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 1, i32 0, i32 0), align 16 ; [#uses=1]
+ %85 = fmul float %72, %84 ; [#uses=1]
+ %86 = load float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 1, i32 0, i32 1), align 4 ; [#uses=1]
+ %87 = fmul float %71, %86 ; [#uses=1]
+ %88 = fadd float %85, %87 ; [#uses=1]
+ %89 = load float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 1, i32 0, i32 2), align 8 ; [#uses=1]
+ %90 = fmul float %70, %89 ; [#uses=1]
+ %91 = fadd float %88, %90 ; [#uses=1]
+ %92 = fcmp ogt float %91, 0.000000e+00 ; [#uses=1]
+ %tmp257.1 = zext i1 %92 to i32 ; [#uses=1]
+ %scevgep258.1 = getelementptr [3 x [2 x i32]]* %splitcount, i32 0, i32 1, i32 %tmp257.1 ; [#uses=2]
+ %93 = load i32* %scevgep258.1, align 4 ; [#uses=1]
+ %94 = add nsw i32 %93, 1 ; [#uses=1]
+ store i32 %94, i32* %scevgep258.1, align 4
+ %95 = load float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 2, i32 0, i32 0), align 32 ; [#uses=1]
+ %96 = fmul float %72, %95 ; [#uses=1]
+ %97 = load float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 2, i32 0, i32 1), align 4 ; [#uses=1]
+ %98 = fmul float %71, %97 ; [#uses=1]
+ %99 = fadd float %96, %98 ; [#uses=1]
+ %100 = load float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 2, i32 0, i32 2), align 8 ; [#uses=1]
+ %101 = fmul float %70, %100 ; [#uses=1]
+ %102 = fadd float %99, %101 ; [#uses=1]
+ %103 = fcmp ogt float %102, 0.000000e+00 ; [#uses=1]
+ %tmp257.2 = zext i1 %103 to i32 ; [#uses=1]
+ %scevgep258.2 = getelementptr [3 x [2 x i32]]* %splitcount, i32 0, i32 2, i32 %tmp257.2 ; [#uses=2]
+ %104 = load i32* %scevgep258.2, align 4 ; [#uses=1]
+ %105 = add nsw i32 %104, 1 ; [#uses=1]
+ store i32 %105, i32* %scevgep258.2, align 4
+ %106 = add nsw i32 %i.0209, 1 ; [#uses=2]
+ %exitcond266 = icmp eq i32 %106, %5 ; [#uses=1]
+ br i1 %exitcond266, label %bb.nph206, label %bb23
+
+bb.nph206: ; preds = %bb23, %bb16
+ %107 = load i32* %44, align 4 ; [#uses=2]
+ %108 = icmp sgt i32 %107, 0 ; [#uses=1]
+ br i1 %108, label %bb28, label %bb31
+
+bb28: ; preds = %bb.nph206
+ %109 = load i32* %45, align 4 ; [#uses=2]
+ %110 = icmp sgt i32 %109, 0 ; [#uses=1]
+ br i1 %110, label %bb29, label %bb31
+
+bb29: ; preds = %bb28
+ %111 = sub nsw i32 %107, %109 ; [#uses=1]
+ %112 = sitofp i32 %111 to float ; [#uses=1]
+ %113 = call float @fabsf(float %112) nounwind readnone ; [#uses=1]
+ %114 = fptosi float %113 to i32 ; [#uses=2]
+ %115 = icmp slt i32 %114, %5 ; [#uses=1]
+ br i1 %115, label %bb30, label %bb31
+
+bb30: ; preds = %bb29
+ br label %bb31
+
+bb31: ; preds = %bb30, %bb29, %bb28, %bb.nph206
+ %bestaxis.0 = phi i32 [ 0, %bb30 ], [ -1, %bb.nph206 ], [ -1, %bb28 ], [ -1, %bb29 ] ; [#uses=3]
+ %bestmidp.0 = phi i32 [ %114, %bb30 ], [ %5, %bb.nph206 ], [ %5, %bb28 ], [ %5, %bb29 ] ; [#uses=4]
+ %116 = load i32* %46, align 4 ; [#uses=2]
+ %117 = icmp sgt i32 %116, 0 ; [#uses=1]
+ br i1 %117, label %bb28.1, label %bb31.1
+
+bb33: ; preds = %bb29.2, %bb28.2, %bb31.1
+ %118 = icmp sgt i32 %bestaxis.0.1, -1 ; [#uses=1]
+ br i1 %118, label %bb34, label %bb38
+
+bb34: ; preds = %bb29.2, %bb33
+ %bestaxis.0.2279 = phi i32 [ %bestaxis.0.1, %bb33 ], [ 2, %bb29.2 ] ; [#uses=5]
+ %119 = getelementptr inbounds [3 x [2 x i32]]* %splitcount, i32 0, i32 %bestaxis.0.2279, i32 0 ; [#uses=1]
+ %120 = load i32* %119, align 4 ; [#uses=4]
+ %121 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 2 ; [#uses=4]
+ %122 = load i32* %121, align 8 ; [#uses=1]
+ %123 = icmp slt i32 %122, %120 ; [#uses=1]
+ br i1 %123, label %bb.i140, label %invcont35
+
+bb.i140: ; preds = %bb34
+ %124 = icmp eq i32 %120, 0 ; [#uses=1]
+ br i1 %124, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i143, label %bb.i2.i142
+
+bb.i2.i142: ; preds = %bb.i140
+ %125 = shl i32 %120, 2 ; [#uses=1]
+ %126 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %125, i32 16)
+ to label %.noexc160 unwind label %lpad69 ; [#uses=1]
+
+.noexc160: ; preds = %bb.i2.i142
+ %phitmp.i141 = bitcast i8* %126 to %struct.btDbvtNode** ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i143
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i143: ; preds = %.noexc160, %bb.i140
+ %127 = phi %struct.btDbvtNode** [ %phitmp.i141, %.noexc160 ], [ null, %bb.i140 ] ; [#uses=2]
+ %128 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 1 ; [#uses=1]
+ %129 = load i32* %128, align 4 ; [#uses=2]
+ %130 = icmp sgt i32 %129, 0 ; [#uses=1]
+ br i1 %130, label %bb.nph.i.i144, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i153
+
+bb.nph.i.i144: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i143
+ %131 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i147
+
+bb.i4.i147: ; preds = %bb3.i.i152, %bb.nph.i.i144
+ %indvar.i.i145 = phi i32 [ 0, %bb.nph.i.i144 ], [ %indvar.next.i.i150, %bb3.i.i152 ] ; [#uses=3]
+ %scevgep.i.i146 = getelementptr %struct.btDbvtNode** %127, i32 %indvar.i.i145 ; [#uses=2]
+ %132 = icmp eq %struct.btDbvtNode** %scevgep.i.i146, null ; [#uses=1]
+ br i1 %132, label %bb3.i.i152, label %bb1.i5.i149
+
+bb1.i5.i149: ; preds = %bb.i4.i147
+ %133 = load %struct.btDbvtNode*** %131, align 4 ; [#uses=1]
+ %scevgep8.i.i148 = getelementptr %struct.btDbvtNode** %133, i32 %indvar.i.i145 ; [#uses=1]
+ %134 = load %struct.btDbvtNode** %scevgep8.i.i148, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %134, %struct.btDbvtNode** %scevgep.i.i146, align 4
+ br label %bb3.i.i152
+
+bb3.i.i152: ; preds = %bb1.i5.i149, %bb.i4.i147
+ %indvar.next.i.i150 = add i32 %indvar.i.i145, 1 ; [#uses=2]
+ %exitcond249 = icmp eq i32 %indvar.next.i.i150, %129 ; [#uses=1]
+ br i1 %exitcond249, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i153, label %bb.i4.i147
+
+_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i153: ; preds = %bb3.i.i152, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i143
+ %135 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 3 ; [#uses=3]
+ %136 = load %struct.btDbvtNode*** %135, align 4 ; [#uses=2]
+ %137 = icmp eq %struct.btDbvtNode** %136, null ; [#uses=1]
+ br i1 %137, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i158, label %bb.i.i155
+
+bb.i.i155: ; preds = %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i153
+ %138 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 4 ; [#uses=1]
+ %139 = load i8* %138, align 8 ; [#uses=1]
+ %toBool.i.i154 = icmp eq i8 %139, 0 ; [#uses=1]
+ br i1 %toBool.i.i154, label %bb2.i.i157, label %bb1.i.i156
+
+bb1.i.i156: ; preds = %bb.i.i155
+ %140 = bitcast %struct.btDbvtNode** %136 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %140)
+ to label %bb2.i.i157 unwind label %lpad69
+
+bb2.i.i157: ; preds = %bb1.i.i156, %bb.i.i155
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %135, align 4
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i158
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i158: ; preds = %bb2.i.i157, %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i153
+ %141 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %141, align 8
+ store %struct.btDbvtNode** %127, %struct.btDbvtNode*** %135, align 4
+ store i32 %120, i32* %121, align 8
+ br label %invcont35
+
+invcont35: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i158, %bb34
+ %142 = getelementptr inbounds [3 x [2 x i32]]* %splitcount, i32 0, i32 %bestaxis.0.2279, i32 1 ; [#uses=1]
+ %143 = load i32* %142, align 4 ; [#uses=4]
+ %144 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 2 ; [#uses=4]
+ %145 = load i32* %144, align 4 ; [#uses=1]
+ %146 = icmp slt i32 %145, %143 ; [#uses=1]
+ br i1 %146, label %bb.i163, label %invcont36
+
+bb.i163: ; preds = %invcont35
+ %147 = icmp eq i32 %143, 0 ; [#uses=1]
+ br i1 %147, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i166, label %bb.i2.i165
+
+bb.i2.i165: ; preds = %bb.i163
+ %148 = shl i32 %143, 2 ; [#uses=1]
+ %149 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %148, i32 16)
+ to label %.noexc183 unwind label %lpad69 ; [#uses=1]
+
+.noexc183: ; preds = %bb.i2.i165
+ %phitmp.i164 = bitcast i8* %149 to %struct.btDbvtNode** ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i166
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i166: ; preds = %.noexc183, %bb.i163
+ %150 = phi %struct.btDbvtNode** [ %phitmp.i164, %.noexc183 ], [ null, %bb.i163 ] ; [#uses=2]
+ %151 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 1 ; [#uses=1]
+ %152 = load i32* %151, align 4 ; [#uses=2]
+ %153 = icmp sgt i32 %152, 0 ; [#uses=1]
+ br i1 %153, label %bb.nph.i.i167, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i176
+
+bb.nph.i.i167: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i166
+ %154 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb.i4.i170
+
+bb.i4.i170: ; preds = %bb3.i.i175, %bb.nph.i.i167
+ %indvar.i.i168 = phi i32 [ 0, %bb.nph.i.i167 ], [ %indvar.next.i.i173, %bb3.i.i175 ] ; [#uses=3]
+ %scevgep.i.i169 = getelementptr %struct.btDbvtNode** %150, i32 %indvar.i.i168 ; [#uses=2]
+ %155 = icmp eq %struct.btDbvtNode** %scevgep.i.i169, null ; [#uses=1]
+ br i1 %155, label %bb3.i.i175, label %bb1.i5.i172
+
+bb1.i5.i172: ; preds = %bb.i4.i170
+ %156 = load %struct.btDbvtNode*** %154, align 4 ; [#uses=1]
+ %scevgep8.i.i171 = getelementptr %struct.btDbvtNode** %156, i32 %indvar.i.i168 ; [#uses=1]
+ %157 = load %struct.btDbvtNode** %scevgep8.i.i171, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %157, %struct.btDbvtNode** %scevgep.i.i169, align 4
+ br label %bb3.i.i175
+
+bb3.i.i175: ; preds = %bb1.i5.i172, %bb.i4.i170
+ %indvar.next.i.i173 = add i32 %indvar.i.i168, 1 ; [#uses=2]
+ %exitcond246 = icmp eq i32 %indvar.next.i.i173, %152 ; [#uses=1]
+ br i1 %exitcond246, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i176, label %bb.i4.i170
+
+_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i176: ; preds = %bb3.i.i175, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i166
+ %158 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 3 ; [#uses=3]
+ %159 = load %struct.btDbvtNode*** %158, align 4 ; [#uses=2]
+ %160 = icmp eq %struct.btDbvtNode** %159, null ; [#uses=1]
+ br i1 %160, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i181, label %bb.i.i178
+
+bb.i.i178: ; preds = %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i176
+ %161 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 4 ; [#uses=1]
+ %162 = load i8* %161, align 4 ; [#uses=1]
+ %toBool.i.i177 = icmp eq i8 %162, 0 ; [#uses=1]
+ br i1 %toBool.i.i177, label %bb2.i.i180, label %bb1.i.i179
+
+bb1.i.i179: ; preds = %bb.i.i178
+ %163 = bitcast %struct.btDbvtNode** %159 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %163)
+ to label %bb2.i.i180 unwind label %lpad69
+
+bb2.i.i180: ; preds = %bb1.i.i179, %bb.i.i178
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %158, align 4
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i181
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i181: ; preds = %bb2.i.i180, %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i176
+ %164 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %164, align 4
+ store %struct.btDbvtNode** %150, %struct.btDbvtNode*** %158, align 4
+ store i32 %143, i32* %144, align 4
+ br label %invcont36
+
+invcont36: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i181, %invcont35
+ %165 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0 ; [#uses=1]
+ %166 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1 ; [#uses=1]
+ %167 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 1 ; [#uses=2]
+ %168 = load i32* %167, align 4 ; [#uses=3]
+ %169 = icmp slt i32 %168, 0 ; [#uses=1]
+ br i1 %169, label %bb4.i.i, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE6resizeEiRKS1_.exit.i
+
+bb4.i.i: ; preds = %invcont36
+ %170 = load i32* %121, align 8 ; [#uses=1]
+ %171 = icmp slt i32 %170, 0 ; [#uses=1]
+ br i1 %171, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i.i.i, label %bb.nph.i.i127
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i.i.i: ; preds = %bb4.i.i
+ %172 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 3 ; [#uses=3]
+ %173 = load %struct.btDbvtNode*** %172, align 4 ; [#uses=2]
+ %174 = icmp eq %struct.btDbvtNode** %173, null ; [#uses=1]
+ br i1 %174, label %bb11.preheader.i.i, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i.i.i
+ %175 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 4 ; [#uses=1]
+ %176 = load i8* %175, align 8 ; [#uses=1]
+ %toBool.i.i.i.i = icmp eq i8 %176, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i, label %bb2.i.i.i.i, label %bb1.i.i.i.i
+
+bb1.i.i.i.i: ; preds = %bb.i.i.i.i
+ %177 = bitcast %struct.btDbvtNode** %173 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %177)
+ to label %bb2.i.i.i.i unwind label %lpad69
+
+bb2.i.i.i.i: ; preds = %bb1.i.i.i.i, %bb.i.i.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %172, align 4
+ br label %bb11.preheader.i.i
+
+bb11.preheader.i.i: ; preds = %bb2.i.i.i.i, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i.i.i
+ %178 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %178, align 8
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %172, align 4
+ store i32 0, i32* %121, align 8
+ br label %bb.nph.i.i127
+
+bb.nph.i.i127: ; preds = %bb11.preheader.i.i, %bb4.i.i
+ %179 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 3 ; [#uses=1]
+ %tmp.i.i = sub i32 0, %168 ; [#uses=1]
+ br label %bb7.i.i
+
+bb7.i.i: ; preds = %bb10.i.i, %bb.nph.i.i127
+ %indvar.i.i128 = phi i32 [ 0, %bb.nph.i.i127 ], [ %indvar.next.i.i131, %bb10.i.i ] ; [#uses=2]
+ %tmp243 = add i32 %168, %indvar.i.i128 ; [#uses=1]
+ %180 = load %struct.btDbvtNode*** %179, align 4 ; [#uses=1]
+ %scevgep245 = getelementptr %struct.btDbvtNode** %180, i32 %tmp243 ; [#uses=2]
+ %181 = icmp eq %struct.btDbvtNode** %scevgep245, null ; [#uses=1]
+ br i1 %181, label %bb10.i.i, label %bb8.i.i
+
+bb8.i.i: ; preds = %bb7.i.i
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %scevgep245, align 4
+ br label %bb10.i.i
+
+bb10.i.i: ; preds = %bb8.i.i, %bb7.i.i
+ %indvar.next.i.i131 = add i32 %indvar.i.i128, 1 ; [#uses=2]
+ %exitcond242 = icmp eq i32 %indvar.next.i.i131, %tmp.i.i ; [#uses=1]
+ br i1 %exitcond242, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE6resizeEiRKS1_.exit.i, label %bb7.i.i
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE6resizeEiRKS1_.exit.i: ; preds = %bb10.i.i, %invcont36
+ store i32 0, i32* %167, align 4
+ %182 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 1 ; [#uses=2]
+ %183 = load i32* %182, align 4 ; [#uses=3]
+ %184 = icmp slt i32 %183, 0 ; [#uses=1]
+ br i1 %184, label %bb4.i7.i, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE6resizeEiRKS1_.exit35.i
+
+bb4.i7.i: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE6resizeEiRKS1_.exit.i
+ %185 = load i32* %144, align 4 ; [#uses=1]
+ %186 = icmp slt i32 %185, 0 ; [#uses=1]
+ br i1 %186, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i.i9.i, label %bb.nph.i26.i
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i.i9.i: ; preds = %bb4.i7.i
+ %187 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 3 ; [#uses=3]
+ %188 = load %struct.btDbvtNode*** %187, align 4 ; [#uses=2]
+ %189 = icmp eq %struct.btDbvtNode** %188, null ; [#uses=1]
+ br i1 %189, label %bb11.preheader.i24.i, label %bb.i.i.i21.i
+
+bb.i.i.i21.i: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i.i9.i
+ %190 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 4 ; [#uses=1]
+ %191 = load i8* %190, align 4 ; [#uses=1]
+ %toBool.i.i.i20.i = icmp eq i8 %191, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i20.i, label %bb2.i.i.i23.i, label %bb1.i.i.i22.i
+
+bb1.i.i.i22.i: ; preds = %bb.i.i.i21.i
+ %192 = bitcast %struct.btDbvtNode** %188 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %192)
+ to label %bb2.i.i.i23.i unwind label %lpad69
+
+bb2.i.i.i23.i: ; preds = %bb1.i.i.i22.i, %bb.i.i.i21.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %187, align 4
+ br label %bb11.preheader.i24.i
+
+bb11.preheader.i24.i: ; preds = %bb2.i.i.i23.i, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i.i9.i
+ %193 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %193, align 4
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %187, align 4
+ store i32 0, i32* %144, align 4
+ br label %bb.nph.i26.i
+
+bb.nph.i26.i: ; preds = %bb11.preheader.i24.i, %bb4.i7.i
+ %194 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 3 ; [#uses=1]
+ %tmp.i25.i = sub i32 0, %183 ; [#uses=1]
+ br label %bb7.i30.i
+
+bb7.i30.i: ; preds = %bb10.i34.i, %bb.nph.i26.i
+ %indvar.i27.i = phi i32 [ 0, %bb.nph.i26.i ], [ %indvar.next.i32.i, %bb10.i34.i ] ; [#uses=2]
+ %tmp239 = add i32 %183, %indvar.i27.i ; [#uses=1]
+ %195 = load %struct.btDbvtNode*** %194, align 4 ; [#uses=1]
+ %scevgep241 = getelementptr %struct.btDbvtNode** %195, i32 %tmp239 ; [#uses=2]
+ %196 = icmp eq %struct.btDbvtNode** %scevgep241, null ; [#uses=1]
+ br i1 %196, label %bb10.i34.i, label %bb8.i31.i
+
+bb8.i31.i: ; preds = %bb7.i30.i
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %scevgep241, align 4
+ br label %bb10.i34.i
+
+bb10.i34.i: ; preds = %bb8.i31.i, %bb7.i30.i
+ %indvar.next.i32.i = add i32 %indvar.i27.i, 1 ; [#uses=2]
+ %exitcond238 = icmp eq i32 %indvar.next.i32.i, %tmp.i25.i ; [#uses=1]
+ br i1 %exitcond238, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE6resizeEiRKS1_.exit35.i, label %bb7.i30.i
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE6resizeEiRKS1_.exit35.i: ; preds = %bb10.i34.i, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE6resizeEiRKS1_.exit.i
+ store i32 0, i32* %182, align 4
+ %197 = load i32* %4, align 4 ; [#uses=2]
+ %198 = icmp sgt i32 %197, 0 ; [#uses=1]
+ br i1 %198, label %bb.nph.i133, label %bb45
+
+bb.nph.i133: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE6resizeEiRKS1_.exit35.i
+ %199 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 %bestaxis.0.2279, i32 0, i32 0 ; [#uses=1]
+ %200 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 %bestaxis.0.2279, i32 0, i32 1 ; [#uses=1]
+ %201 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEiE4axis, i32 0, i32 %bestaxis.0.2279, i32 0, i32 2 ; [#uses=1]
+ br label %bb.i134
+
+bb.i134: ; preds = %bb3.i, %bb.nph.i133
+ %i.044.i = phi i32 [ 0, %bb.nph.i133 ], [ %tmp234, %bb3.i ] ; [#uses=2]
+ %tmp234 = add i32 %i.044.i, 1 ; [#uses=2]
+ %202 = load %struct.btDbvtNode*** %leaves.idx85, align 4 ; [#uses=1]
+ %scevgep237 = getelementptr %struct.btDbvtNode** %202, i32 %i.044.i ; [#uses=3]
+ %203 = load %struct.btDbvtNode** %scevgep237, align 4 ; [#uses=6]
+ %204 = getelementptr inbounds %struct.btDbvtNode* %203, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %205 = load float* %204, align 4 ; [#uses=1]
+ %206 = getelementptr inbounds %struct.btDbvtNode* %203, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %207 = load float* %206, align 4 ; [#uses=1]
+ %208 = fadd float %205, %207 ; [#uses=1]
+ %209 = getelementptr inbounds %struct.btDbvtNode* %203, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %210 = load float* %209, align 4 ; [#uses=1]
+ %211 = getelementptr inbounds %struct.btDbvtNode* %203, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %212 = load float* %211, align 4 ; [#uses=1]
+ %213 = fadd float %210, %212 ; [#uses=1]
+ %214 = getelementptr inbounds %struct.btDbvtNode* %203, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %215 = load float* %214, align 4 ; [#uses=1]
+ %216 = getelementptr inbounds %struct.btDbvtNode* %203, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %217 = load float* %216, align 4 ; [#uses=1]
+ %218 = fadd float %215, %217 ; [#uses=1]
+ %219 = fmul float %208, 5.000000e-01 ; [#uses=1]
+ %220 = fmul float %213, 5.000000e-01 ; [#uses=1]
+ %221 = fmul float %218, 5.000000e-01 ; [#uses=1]
+ %222 = fsub float %219, %41 ; [#uses=1]
+ %223 = fsub float %220, %42 ; [#uses=1]
+ %224 = fsub float %221, %43 ; [#uses=1]
+ %225 = load float* %199, align 16 ; [#uses=1]
+ %226 = fmul float %225, %224 ; [#uses=1]
+ %227 = load float* %200, align 4 ; [#uses=1]
+ %228 = fmul float %227, %223 ; [#uses=1]
+ %229 = fadd float %226, %228 ; [#uses=1]
+ %230 = load float* %201, align 8 ; [#uses=1]
+ %231 = fmul float %230, %222 ; [#uses=1]
+ %232 = fadd float %229, %231 ; [#uses=1]
+ %233 = fcmp olt float %232, 0.000000e+00 ; [#uses=1]
+ br i1 %233, label %bb1.i, label %bb2.i
+
+bb1.i: ; preds = %bb.i134
+ invoke void @_ZN20btAlignedObjectArrayIP10btDbvtNodeE9push_backERKS1_(%"struct.btAlignedObjectArray<btDbvtNode*>"* %165, %struct.btDbvtNode** %scevgep237) inlinehint
+ to label %bb3.i unwind label %lpad69
+
+bb2.i: ; preds = %bb.i134
+ invoke void @_ZN20btAlignedObjectArrayIP10btDbvtNodeE9push_backERKS1_(%"struct.btAlignedObjectArray<btDbvtNode*>"* %166, %struct.btDbvtNode** %scevgep237) inlinehint
+ to label %bb3.i unwind label %lpad69
+
+bb3.i: ; preds = %bb2.i, %bb1.i
+ %exitcond49.i = icmp eq i32 %tmp234, %197 ; [#uses=1]
+ br i1 %exitcond49.i, label %bb45, label %bb.i134
+
+bb38: ; preds = %bb33
+ %234 = sdiv i32 %5, 2 ; [#uses=1]
+ %235 = add nsw i32 %234, 1 ; [#uses=4]
+ %236 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 2 ; [#uses=2]
+ %237 = load i32* %236, align 8 ; [#uses=1]
+ %238 = icmp slt i32 %237, %235 ; [#uses=1]
+ br i1 %238, label %bb.i104, label %invcont39
+
+bb.i104: ; preds = %bb38
+ %239 = icmp eq i32 %235, 0 ; [#uses=1]
+ br i1 %239, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i107, label %bb.i2.i106
+
+bb.i2.i106: ; preds = %bb.i104
+ %240 = shl i32 %235, 2 ; [#uses=1]
+ %241 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %240, i32 16)
+ to label %.noexc124 unwind label %lpad69 ; [#uses=1]
+
+.noexc124: ; preds = %bb.i2.i106
+ %phitmp.i105 = bitcast i8* %241 to %struct.btDbvtNode** ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i107
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i107: ; preds = %.noexc124, %bb.i104
+ %242 = phi %struct.btDbvtNode** [ %phitmp.i105, %.noexc124 ], [ null, %bb.i104 ] ; [#uses=2]
+ %243 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 1 ; [#uses=1]
+ %244 = load i32* %243, align 4 ; [#uses=2]
+ %245 = icmp sgt i32 %244, 0 ; [#uses=1]
+ br i1 %245, label %bb.nph.i.i108, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i117
+
+bb.nph.i.i108: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i107
+ %246 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i111
+
+bb.i4.i111: ; preds = %bb3.i.i116, %bb.nph.i.i108
+ %indvar.i.i109 = phi i32 [ 0, %bb.nph.i.i108 ], [ %indvar.next.i.i114, %bb3.i.i116 ] ; [#uses=3]
+ %scevgep.i.i110 = getelementptr %struct.btDbvtNode** %242, i32 %indvar.i.i109 ; [#uses=2]
+ %247 = icmp eq %struct.btDbvtNode** %scevgep.i.i110, null ; [#uses=1]
+ br i1 %247, label %bb3.i.i116, label %bb1.i5.i113
+
+bb1.i5.i113: ; preds = %bb.i4.i111
+ %248 = load %struct.btDbvtNode*** %246, align 4 ; [#uses=1]
+ %scevgep8.i.i112 = getelementptr %struct.btDbvtNode** %248, i32 %indvar.i.i109 ; [#uses=1]
+ %249 = load %struct.btDbvtNode** %scevgep8.i.i112, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %249, %struct.btDbvtNode** %scevgep.i.i110, align 4
+ br label %bb3.i.i116
+
+bb3.i.i116: ; preds = %bb1.i5.i113, %bb.i4.i111
+ %indvar.next.i.i114 = add i32 %indvar.i.i109, 1 ; [#uses=2]
+ %exitcond216 = icmp eq i32 %indvar.next.i.i114, %244 ; [#uses=1]
+ br i1 %exitcond216, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i117, label %bb.i4.i111
+
+_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i117: ; preds = %bb3.i.i116, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i107
+ %250 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 3 ; [#uses=3]
+ %251 = load %struct.btDbvtNode*** %250, align 4 ; [#uses=2]
+ %252 = icmp eq %struct.btDbvtNode** %251, null ; [#uses=1]
+ br i1 %252, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i122, label %bb.i.i119
+
+bb.i.i119: ; preds = %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i117
+ %253 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 4 ; [#uses=1]
+ %254 = load i8* %253, align 8 ; [#uses=1]
+ %toBool.i.i118 = icmp eq i8 %254, 0 ; [#uses=1]
+ br i1 %toBool.i.i118, label %bb2.i.i121, label %bb1.i.i120
+
+bb1.i.i120: ; preds = %bb.i.i119
+ %255 = bitcast %struct.btDbvtNode** %251 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %255)
+ to label %bb2.i.i121 unwind label %lpad69
+
+bb2.i.i121: ; preds = %bb1.i.i120, %bb.i.i119
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %250, align 4
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i122
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i122: ; preds = %bb2.i.i121, %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i117
+ %256 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %256, align 8
+ store %struct.btDbvtNode** %242, %struct.btDbvtNode*** %250, align 4
+ store i32 %235, i32* %236, align 8
+ %.pre = load i32* %4, align 4 ; [#uses=1]
+ br label %invcont39
+
+invcont39: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i122, %bb38
+ %257 = phi i32 [ %.pre, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i122 ], [ %5, %bb38 ] ; [#uses=3]
+ %258 = sdiv i32 %257, 2 ; [#uses=3]
+ %259 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 2 ; [#uses=2]
+ %260 = load i32* %259, align 4 ; [#uses=1]
+ %261 = icmp slt i32 %260, %258 ; [#uses=1]
+ br i1 %261, label %bb.i92, label %invcont40
+
+bb.i92: ; preds = %invcont39
+ %.off = add i32 %257, 1 ; [#uses=1]
+ %262 = icmp ult i32 %.off, 3 ; [#uses=1]
+ br i1 %262, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i92
+ %263 = shl i32 %258, 2 ; [#uses=1]
+ %264 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %263, i32 16)
+ to label %.noexc96 unwind label %lpad69 ; [#uses=1]
+
+.noexc96: ; preds = %bb.i2.i
+ %phitmp.i = bitcast i8* %264 to %struct.btDbvtNode** ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i: ; preds = %.noexc96, %bb.i92
+ %265 = phi %struct.btDbvtNode** [ %phitmp.i, %.noexc96 ], [ null, %bb.i92 ] ; [#uses=2]
+ %266 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 1 ; [#uses=1]
+ %267 = load i32* %266, align 4 ; [#uses=2]
+ %268 = icmp sgt i32 %267, 0 ; [#uses=1]
+ br i1 %268, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i
+ %269 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=3]
+ %scevgep.i.i = getelementptr %struct.btDbvtNode** %265, i32 %indvar.i.i ; [#uses=2]
+ %270 = icmp eq %struct.btDbvtNode** %scevgep.i.i, null ; [#uses=1]
+ br i1 %270, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %271 = load %struct.btDbvtNode*** %269, align 4 ; [#uses=1]
+ %scevgep8.i.i = getelementptr %struct.btDbvtNode** %271, i32 %indvar.i.i ; [#uses=1]
+ %272 = load %struct.btDbvtNode** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %272, %struct.btDbvtNode** %scevgep.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %267 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i
+ %273 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 3 ; [#uses=3]
+ %274 = load %struct.btDbvtNode*** %273, align 4 ; [#uses=2]
+ %275 = icmp eq %struct.btDbvtNode** %274, null ; [#uses=1]
+ br i1 %275, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i, label %bb.i.i94
+
+bb.i.i94: ; preds = %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i
+ %276 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 4 ; [#uses=1]
+ %277 = load i8* %276, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %277, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i95
+
+bb1.i.i95: ; preds = %bb.i.i94
+ %278 = bitcast %struct.btDbvtNode** %274 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %278)
+ to label %bb2.i.i unwind label %lpad69
+
+bb2.i.i: ; preds = %bb1.i.i95, %bb.i.i94
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %273, align 4
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i
+ %279 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %279, align 4
+ store %struct.btDbvtNode** %265, %struct.btDbvtNode*** %273, align 4
+ store i32 %258, i32* %259, align 4
+ %.pre278 = load i32* %4, align 4 ; [#uses=1]
+ br label %invcont40
+
+invcont40: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i, %invcont39
+ %280 = phi i32 [ %.pre278, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i ], [ %257, %invcont39 ] ; [#uses=1]
+ br label %bb44
+
+bb42: ; preds = %bb44
+ %281 = load %struct.btDbvtNode*** %leaves.idx85, align 4 ; [#uses=1]
+ %282 = and i32 %285, 1 ; [#uses=1]
+ %283 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 %282 ; [#uses=1]
+ %scevgep = getelementptr %struct.btDbvtNode** %281, i32 %285 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayIP10btDbvtNodeE9push_backERKS1_(%"struct.btAlignedObjectArray<btDbvtNode*>"* %283, %struct.btDbvtNode** %scevgep) inlinehint
+ to label %invcont43 unwind label %lpad69
+
+invcont43: ; preds = %bb42
+ %284 = add nsw i32 %285, 1 ; [#uses=1]
+ br label %bb44
+
+bb44: ; preds = %invcont43, %invcont40
+ %285 = phi i32 [ 0, %invcont40 ], [ %284, %invcont43 ] ; [#uses=4]
+ %286 = icmp slt i32 %285, %280 ; [#uses=1]
+ br i1 %286, label %bb42, label %bb45
+
+bb45: ; preds = %bb44, %bb3.i, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE6resizeEiRKS1_.exit35.i
+ %287 = getelementptr inbounds %struct.btDbvt* %pdbvt, i32 0, i32 1 ; [#uses=2]
+ %288 = load %struct.btDbvtNode** %287, align 4 ; [#uses=2]
+ %289 = icmp eq %struct.btDbvtNode* %288, null ; [#uses=1]
+ br i1 %289, label %bb1.i.i, label %bb.i.i
+
+bb.i.i: ; preds = %bb45
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %287, align 4
+ br label %invcont46
+
+bb1.i.i: ; preds = %bb45
+ %290 = invoke i8* @_Z22btAlignedAllocInternalji(i32 44, i32 16)
+ to label %.noexc91 unwind label %lpad69 ; [#uses=1]
+
+.noexc91: ; preds = %bb1.i.i
+ %291 = bitcast i8* %290 to %struct.btDbvtNode* ; [#uses=1]
+ br label %invcont46
+
+invcont46: ; preds = %.noexc91, %bb.i.i
+ %node.0.i.i = phi %struct.btDbvtNode* [ %288, %bb.i.i ], [ %291, %.noexc91 ] ; [#uses=14]
+ %292 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %292, align 4
+ %293 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %293, align 4
+ %294 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %294, align 4
+ %295 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %storemerge.i.i, float* %295, align 4
+ %296 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %storemerge17.i.i, float* %296, align 4
+ %297 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %storemerge19.i.i, float* %297, align 4
+ %298 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %16, float* %298, align 4
+ %299 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %storemerge16.i.i, float* %299, align 4
+ %300 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %storemerge18.i.i, float* %300, align 4
+ %301 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %storemerge20.i.i, float* %301, align 4
+ %302 = getelementptr inbounds %struct.btDbvtNode* %node.0.i.i, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %24, float* %302, align 4
+ %303 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0 ; [#uses=1]
+ %304 = invoke fastcc %struct.btDbvtNode* @_ZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEi(%struct.btDbvt* %pdbvt, %"struct.btAlignedObjectArray<btDbvtNode*>"* %303, i32 %bu_treshold)
+ to label %invcont47 unwind label %lpad69 ; [#uses=1]
+
+invcont47: ; preds = %invcont46
+ store %struct.btDbvtNode* %304, %struct.btDbvtNode** %293, align 4
+ %305 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 1 ; [#uses=1]
+ %306 = invoke fastcc %struct.btDbvtNode* @_ZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEi(%struct.btDbvt* %pdbvt, %"struct.btAlignedObjectArray<btDbvtNode*>"* %305, i32 %bu_treshold)
+ to label %bb.nph unwind label %lpad69 ; [#uses=1]
+
+bb52: ; preds = %lpad69, %_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit90
+ %indvar = phi i32 [ %indvar.next, %_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit90 ], [ 0, %lpad69 ] ; [#uses=3]
+ %tmp = sub i32 0, %indvar ; [#uses=1]
+ %tmp219 = sub i32 1, %indvar ; [#uses=4]
+ %scevgep220 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 %tmp219, i32 2 ; [#uses=1]
+ %scevgep221 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 %tmp219, i32 1 ; [#uses=1]
+ %scevgep222 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 %tmp219, i32 4 ; [#uses=2]
+ %scevgep223 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 %tmp219, i32 3 ; [#uses=3]
+ %.081 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 1, i32 %tmp ; [#uses=1]
+ %307 = icmp eq %"struct.btAlignedObjectArray<btDbvtNode*>"* %.081, %326 ; [#uses=1]
+ br i1 %307, label %Unwind, label %bb53
+
+bb53: ; preds = %bb52
+ %308 = load %struct.btDbvtNode*** %scevgep223, align 4 ; [#uses=2]
+ %309 = icmp eq %struct.btDbvtNode** %308, null ; [#uses=1]
+ br i1 %309, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit90, label %bb.i.i.i87
+
+bb.i.i.i87: ; preds = %bb53
+ %310 = load i8* %scevgep222, align 4 ; [#uses=1]
+ %toBool.i.i.i86 = icmp eq i8 %310, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i86, label %bb2.i.i.i89, label %bb1.i.i.i88
+
+bb1.i.i.i88: ; preds = %bb.i.i.i87
+ %311 = bitcast %struct.btDbvtNode** %308 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %311)
+ to label %bb2.i.i.i89 unwind label %lpad73
+
+bb2.i.i.i89: ; preds = %bb1.i.i.i88, %bb.i.i.i87
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %scevgep223, align 4
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit90
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit90: ; preds = %bb2.i.i.i89, %bb53
+ store i8 1, i8* %scevgep222, align 4
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %scevgep223, align 4
+ store i32 0, i32* %scevgep221, align 4
+ store i32 0, i32* %scevgep220, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb52
+
+bb.nph: ; preds = %invcont47
+ store %struct.btDbvtNode* %306, %struct.btDbvtNode** %294, align 4
+ %312 = load %struct.btDbvtNode** %293, align 4 ; [#uses=1]
+ %313 = getelementptr inbounds %struct.btDbvtNode* %312, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %313, align 4
+ %314 = load %struct.btDbvtNode** %294, align 4 ; [#uses=1]
+ %315 = getelementptr inbounds %struct.btDbvtNode* %314, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %node.0.i.i, %struct.btDbvtNode** %315, align 4
+ br label %bb58
+
+bb58: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit, %bb.nph
+ %indvar225 = phi i32 [ 0, %bb.nph ], [ %indvar.next226, %_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit ] ; [#uses=2]
+ %tmp229 = sub i32 1, %indvar225 ; [#uses=4]
+ %scevgep230 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 %tmp229, i32 3 ; [#uses=3]
+ %scevgep231 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 %tmp229, i32 4 ; [#uses=2]
+ %scevgep232 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 %tmp229, i32 1 ; [#uses=1]
+ %scevgep233 = getelementptr [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 %tmp229, i32 2 ; [#uses=1]
+ %316 = load %struct.btDbvtNode*** %scevgep230, align 4 ; [#uses=2]
+ %317 = icmp eq %struct.btDbvtNode** %316, null ; [#uses=1]
+ br i1 %317, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb58
+ %318 = load i8* %scevgep231, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %318, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %319 = bitcast %struct.btDbvtNode** %316 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %319)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %scevgep230, align 4
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit: ; preds = %bb2.i.i.i, %bb58
+ store i8 1, i8* %scevgep231, align 4
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %scevgep230, align 4
+ store i32 0, i32* %scevgep232, align 4
+ store i32 0, i32* %scevgep233, align 4
+ %indvar.next226 = add i32 %indvar225, 1 ; [#uses=2]
+ %exitcond227 = icmp eq i32 %indvar.next226, 2 ; [#uses=1]
+ br i1 %exitcond227, label %bb61, label %bb58
+
+bb59: ; preds = %bb4
+ call fastcc void @_ZL8bottomupP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeE(%struct.btDbvt* %pdbvt, %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves)
+ %320 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 3 ; [#uses=1]
+ %321 = load %struct.btDbvtNode*** %320, align 4 ; [#uses=1]
+ %322 = load %struct.btDbvtNode** %321, align 4 ; [#uses=1]
+ ret %struct.btDbvtNode* %322
+
+bb60: ; preds = %bb2
+ %323 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 3 ; [#uses=1]
+ %324 = load %struct.btDbvtNode*** %323, align 4 ; [#uses=1]
+ %325 = load %struct.btDbvtNode** %324, align 4 ; [#uses=1]
+ ret %struct.btDbvtNode* %325
+
+bb61: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit
+ ret %struct.btDbvtNode* %node.0.i.i
+
+lpad69: ; preds = %invcont47, %invcont46, %bb1.i.i, %bb42, %bb1.i.i95, %bb.i2.i, %bb1.i.i120, %bb.i2.i106, %bb2.i, %bb1.i, %bb1.i.i.i22.i, %bb1.i.i.i.i, %bb1.i.i179, %bb.i2.i165, %bb1.i.i156, %bb.i2.i142
+ %eh_ptr70 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select72 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr70, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %326 = getelementptr inbounds [2 x %"struct.btAlignedObjectArray<btDbvtNode*>"]* %sets, i32 0, i32 0 ; [#uses=1]
+ br label %bb52
+
+lpad73: ; preds = %bb1.i.i.i88
+ %eh_ptr74 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select76 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr74, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+Unwind: ; preds = %bb52
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr70)
+ unreachable
+
+bb31.1: ; preds = %bb30.1, %bb29.1, %bb28.1, %bb31
+ %bestaxis.0.1 = phi i32 [ 1, %bb30.1 ], [ %bestaxis.0, %bb31 ], [ %bestaxis.0, %bb28.1 ], [ %bestaxis.0, %bb29.1 ] ; [#uses=2]
+ %bestmidp.0.1 = phi i32 [ %334, %bb30.1 ], [ %bestmidp.0, %bb31 ], [ %bestmidp.0, %bb28.1 ], [ %bestmidp.0, %bb29.1 ] ; [#uses=1]
+ %327 = load i32* %48, align 4 ; [#uses=2]
+ %328 = icmp sgt i32 %327, 0 ; [#uses=1]
+ br i1 %328, label %bb28.2, label %bb33
+
+bb28.1: ; preds = %bb31
+ %329 = load i32* %47, align 4 ; [#uses=2]
+ %330 = icmp sgt i32 %329, 0 ; [#uses=1]
+ br i1 %330, label %bb29.1, label %bb31.1
+
+bb29.1: ; preds = %bb28.1
+ %331 = sub nsw i32 %116, %329 ; [#uses=1]
+ %332 = sitofp i32 %331 to float ; [#uses=1]
+ %333 = call float @fabsf(float %332) nounwind readnone ; [#uses=1]
+ %334 = fptosi float %333 to i32 ; [#uses=2]
+ %335 = icmp slt i32 %334, %bestmidp.0 ; [#uses=1]
+ br i1 %335, label %bb30.1, label %bb31.1
+
+bb30.1: ; preds = %bb29.1
+ br label %bb31.1
+
+bb28.2: ; preds = %bb31.1
+ %336 = load i32* %49, align 4 ; [#uses=2]
+ %337 = icmp sgt i32 %336, 0 ; [#uses=1]
+ br i1 %337, label %bb29.2, label %bb33
+
+bb29.2: ; preds = %bb28.2
+ %338 = sub nsw i32 %327, %336 ; [#uses=1]
+ %339 = sitofp i32 %338 to float ; [#uses=1]
+ %340 = call float @fabsf(float %339) nounwind readnone ; [#uses=1]
+ %341 = fptosi float %340 to i32 ; [#uses=1]
+ %342 = icmp slt i32 %341, %bestmidp.0.1 ; [#uses=1]
+ br i1 %342, label %bb34, label %bb33
+}
+
+; [#uses=2]
+define void @_ZN6btDbvt15optimizeTopDownEi(%struct.btDbvt* %this, i32 %bu_treshold) align 2 {
+entry:
+ %leaves = alloca %"struct.btAlignedObjectArray<btDbvtNode*>", align 8 ; [#uses=6]
+ %0 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 0 ; [#uses=3]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btDbvtNode* %1, null ; [#uses=1]
+ br i1 %2, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit21, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 4 ; [#uses=6]
+ store i8 1, i8* %3, align 8
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 3 ; [#uses=10]
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %4, align 4
+ %5 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 1 ; [#uses=3]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 0, i32 2 ; [#uses=3]
+ store i32 0, i32* %6, align 8
+ %7 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 3 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=3]
+ %9 = icmp sgt i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb.i2.i, label %invcont
+
+bb.i2.i: ; preds = %bb
+ %10 = shl i32 %8, 2 ; [#uses=1]
+ %11 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %10, i32 16)
+ to label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i unwind label %lpad ; [#uses=2]
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i: ; preds = %bb.i2.i
+ %phitmp.i = bitcast i8* %11 to %struct.btDbvtNode** ; [#uses=1]
+ %12 = load i32* %5, align 4 ; [#uses=2]
+ %13 = icmp sgt i32 %12, 0 ; [#uses=1]
+ br i1 %13, label %bb.i4.i, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i
+
+bb.i4.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i
+ %indvar.i.i = phi i32 [ %indvar.next.i.i, %bb3.i.i ], [ 0, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i ] ; [#uses=3]
+ %tmp = shl i32 %indvar.i.i, 2 ; [#uses=1]
+ %scevgep = getelementptr i8* %11, i32 %tmp ; [#uses=2]
+ %14 = icmp eq i8* %scevgep, null ; [#uses=1]
+ br i1 %14, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %scevgep.i.i = bitcast i8* %scevgep to %struct.btDbvtNode** ; [#uses=1]
+ %15 = load %struct.btDbvtNode*** %4, align 4 ; [#uses=1]
+ %scevgep8.i.i = getelementptr %struct.btDbvtNode** %15, i32 %indvar.i.i ; [#uses=1]
+ %16 = load %struct.btDbvtNode** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %16, %struct.btDbvtNode** %scevgep.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %12 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE8allocateEi.exit.i
+ %17 = load %struct.btDbvtNode*** %4, align 4 ; [#uses=2]
+ %18 = icmp eq %struct.btDbvtNode** %17, null ; [#uses=1]
+ br i1 %18, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i
+ %19 = load i8* %3, align 8 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %19, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %20 = bitcast %struct.btDbvtNode** %17 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %20)
+ to label %bb2.i.i unwind label %lpad
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %4, align 4
+ br label %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIP10btDbvtNodeE4copyEiiPS1_.exit.i
+ store i8 1, i8* %3, align 8
+ store %struct.btDbvtNode** %phitmp.i, %struct.btDbvtNode*** %4, align 4
+ store i32 %8, i32* %6, align 8
+ %.pre = load %struct.btDbvtNode** %0, align 4 ; [#uses=1]
+ br label %invcont
+
+invcont: ; preds = %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i, %bb
+ %21 = phi %struct.btDbvtNode* [ %.pre, %_ZN20btAlignedObjectArrayIP10btDbvtNodeE10deallocateEv.exit.i ], [ %1, %bb ] ; [#uses=1]
+ invoke fastcc void @_ZL11fetchleavesP6btDbvtP10btDbvtNodeR20btAlignedObjectArrayIS2_Ei(%struct.btDbvt* %this, %struct.btDbvtNode* %21, %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 -1)
+ to label %invcont1 unwind label %lpad
+
+invcont1: ; preds = %invcont
+ %22 = invoke fastcc %struct.btDbvtNode* @_ZL7topdownP6btDbvtR20btAlignedObjectArrayIP10btDbvtNodeEi(%struct.btDbvt* %this, %"struct.btAlignedObjectArray<btDbvtNode*>"* %leaves, i32 %bu_treshold)
+ to label %invcont2 unwind label %lpad ; [#uses=1]
+
+invcont2: ; preds = %invcont1
+ store %struct.btDbvtNode* %22, %struct.btDbvtNode** %0, align 4
+ %23 = load %struct.btDbvtNode*** %4, align 4 ; [#uses=2]
+ %24 = icmp eq %struct.btDbvtNode** %23, null ; [#uses=1]
+ br i1 %24, label %_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit21, label %bb.i.i.i18
+
+bb.i.i.i18: ; preds = %invcont2
+ %25 = load i8* %3, align 8 ; [#uses=1]
+ %toBool.i.i.i17 = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i17, label %bb2.i.i.i20, label %bb1.i.i.i19
+
+bb1.i.i.i19: ; preds = %bb.i.i.i18
+ %26 = bitcast %struct.btDbvtNode** %23 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %26)
+ br label %bb2.i.i.i20
+
+bb2.i.i.i20: ; preds = %bb1.i.i.i19, %bb.i.i.i18
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %4, align 4
+ ret void
+
+_ZN20btAlignedObjectArrayIP10btDbvtNodeED1Ev.exit21: ; preds = %invcont2, %entry
+ ret void
+
+invcont4: ; preds = %bb2.i.i.i, %lpad
+ store i8 1, i8* %3, align 8
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %4, align 4
+ store i32 0, i32* %5, align 4
+ store i32 0, i32* %6, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %invcont1, %invcont, %bb1.i.i, %bb.i2.i
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %27 = load %struct.btDbvtNode*** %4, align 4 ; [#uses=2]
+ %28 = icmp eq %struct.btDbvtNode** %27, null ; [#uses=1]
+ br i1 %28, label %invcont4, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad
+ %29 = load i8* %3, align 8 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %29, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %30 = bitcast %struct.btDbvtNode** %27 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %30)
+ to label %bb2.i.i.i unwind label %lpad9
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btDbvtNode** null, %struct.btDbvtNode*** %4, align 4
+ br label %invcont4
+
+lpad9: ; preds = %bb1.i.i.i
+ %eh_ptr10 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN16btDbvtBroadphaseC2EP22btOverlappingPairCache(%struct.btDbvtBroadphase* %this, %struct..0btMultiSapOverlapFilterCallback* %paircache) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV16btDbvtBroadphase, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=3]
+ br label %bb1
+
+bb: ; preds = %bb1
+ %.0 = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 %indvar79 ; [#uses=1]
+ invoke void @_ZN6btDbvtC1Ev(%struct.btDbvt* %.0)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %indvar.next80 = add i32 %indvar79, 1 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %invcont, %entry
+ %indvar79 = phi i32 [ %indvar.next80, %invcont ], [ 0, %entry ] ; [#uses=3]
+ %.061 = sub i32 1, %indvar79 ; [#uses=2]
+ %2 = icmp eq i32 %.061, -1 ; [#uses=1]
+ br i1 %2, label %bb9, label %bb
+
+bb3: ; preds = %lpad
+ %3 = sub nsw i32 1, %.061 ; [#uses=1]
+ %4 = mul i32 %3, 40 ; [#uses=1]
+ %5 = ptrtoint %struct.btDbvt* %1 to i32 ; [#uses=1]
+ %6 = add i32 %4, %5 ; [#uses=1]
+ %7 = inttoptr i32 %6 to %struct.btDbvt* ; [#uses=2]
+ br label %bb4
+
+bb4: ; preds = %bb5, %bb3
+ %indvar = phi i32 [ %indvar.next, %bb5 ], [ 0, %bb3 ] ; [#uses=3]
+ %tmp = sub i32 0, %indvar ; [#uses=1]
+ %.062 = getelementptr %struct.btDbvt* %7, i32 %tmp ; [#uses=1]
+ %8 = icmp eq %struct.btDbvt* %.062, %1 ; [#uses=1]
+ br i1 %8, label %ppad, label %bb5
+
+bb5: ; preds = %bb4
+ %tmp67 = xor i32 %indvar, -1 ; [#uses=1]
+ %scevgep = getelementptr %struct.btDbvt* %7, i32 %tmp67 ; [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ invoke void @_ZN6btDbvtD1Ev(%struct.btDbvt* %scevgep)
+ to label %bb4 unwind label %lpad39
+
+bb9: ; preds = %bb1
+ %9 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 18 ; [#uses=1]
+ store i8 0, i8* %9, align 1
+ %10 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 19 ; [#uses=1]
+ store i8 1, i8* %10, align 2
+ %11 = icmp eq %struct..0btMultiSapOverlapFilterCallback* %paircache, null ; [#uses=2]
+ %12 = zext i1 %11 to i8 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 17 ; [#uses=1]
+ store i8 %12, i8* %13, align 4
+ %14 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 4 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 10 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 1, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 8 ; [#uses=1]
+ store i32 10, i32* %19, align 4
+ %20 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 9 ; [#uses=1]
+ store i32 1, i32* %20, align 4
+ %21 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 11 ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 12 ; [#uses=1]
+ store i32 0, i32* %22, align 4
+ %23 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 4
+ br i1 %11, label %bb10, label %return
+
+bb10: ; preds = %bb9
+ %24 = invoke i8* @_Z22btAlignedAllocInternalji(i32 76, i32 16)
+ to label %invcont11 unwind label %lpad43 ; [#uses=3]
+
+invcont11: ; preds = %bb10
+ %25 = icmp eq i8* %24, null ; [#uses=1]
+ br i1 %25, label %bb19, label %bb12
+
+bb12: ; preds = %invcont11
+ %26 = bitcast i8* %24 to %struct.btHashedOverlappingPairCache* ; [#uses=1]
+ invoke void @_ZN28btHashedOverlappingPairCacheC1Ev(%struct.btHashedOverlappingPairCache* %26)
+ to label %bb19 unwind label %lpad47
+
+bb19: ; preds = %bb12, %invcont11
+ %27 = bitcast i8* %24 to %struct..0btMultiSapOverlapFilterCallback* ; [#uses=1]
+ br label %return
+
+bb28: ; preds = %ppad57, %bb29
+ %indvar69 = phi i32 [ %indvar.next70, %bb29 ], [ 0, %ppad57 ] ; [#uses=3]
+ %scevgep75.idx = mul i32 %indvar69, -40 ; [#uses=1]
+ %28 = icmp eq i32 %scevgep75.idx, -80 ; [#uses=1]
+ br i1 %28, label %ppad, label %bb29
+
+bb29: ; preds = %bb28
+ %tmp72 = sub i32 1, %indvar69 ; [#uses=1]
+ %scevgep73 = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 %tmp72 ; [#uses=1]
+ %indvar.next70 = add i32 %indvar69, 1 ; [#uses=1]
+ invoke void @_ZN6btDbvtD1Ev(%struct.btDbvt* %scevgep73)
+ to label %bb28 unwind label %lpad51
+
+return: ; preds = %bb19, %bb9
+ %iftmp.237.0 = phi %struct..0btMultiSapOverlapFilterCallback* [ %27, %bb19 ], [ %paircache, %bb9 ] ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct..0btMultiSapOverlapFilterCallback* %iftmp.237.0, %struct..0btMultiSapOverlapFilterCallback** %29, align 4
+ %30 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 16 ; [#uses=1]
+ store i32 0, i32* %30, align 4
+ %31 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 14 ; [#uses=1]
+ store i32 0, i32* %31, align 4
+ %32 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 0, i32* %32, align 4
+ %scevgep77 = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ store %struct.btDbvtProxy* null, %struct.btDbvtProxy** %scevgep77, align 4
+ %scevgep77.1 = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store %struct.btDbvtProxy* null, %struct.btDbvtProxy** %scevgep77.1, align 4
+ %scevgep77.2 = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store %struct.btDbvtProxy* null, %struct.btDbvtProxy** %scevgep77.2, align 4
+ ret void
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=3]
+ %eh_select38 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %33 = icmp eq %struct.btDbvt* %1, null ; [#uses=1]
+ br i1 %33, label %ppad, label %bb3
+
+lpad39: ; preds = %bb5
+ %eh_ptr40 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select42 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr40, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad43: ; preds = %bb10
+ %eh_ptr44 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select46 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr44, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad57
+
+lpad47: ; preds = %bb12
+ %eh_ptr48 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select50 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr48, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad57
+
+lpad51: ; preds = %bb29
+ %eh_ptr52 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select54 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr52, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %ppad57, %lpad, %bb28, %bb4
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.1, %ppad57 ], [ %eh_ptr, %bb4 ], [ %eh_exception.1, %bb28 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV21btBroadphaseInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+ppad57: ; preds = %lpad47, %lpad43
+ %eh_exception.1 = phi i8* [ %eh_ptr48, %lpad47 ], [ %eh_ptr44, %lpad43 ] ; [#uses=2]
+ %34 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1 ; [#uses=1]
+ %35 = icmp eq [2 x %struct.btDbvt]* %34, null ; [#uses=1]
+ br i1 %35, label %ppad, label %bb28
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btDbvtTreeColliderD1Ev(%struct.btDbvtTreeCollider* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtTreeCollider* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV18btDbvtTreeCollider, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btDbvtTreeColliderD0Ev(%struct.btDbvtTreeCollider* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtTreeCollider* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV18btDbvtTreeCollider, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btDbvtTreeCollider* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNodeS2_(%struct.btDbvtTreeCollider* nocapture %this, %struct.btDbvtNode* %na, %struct.btDbvtNode* %nb) align 2 {
+entry:
+ %0 = icmp eq %struct.btDbvtNode* %na, %nb ; [#uses=1]
+ br i1 %0, label %return, label %bb
+
+bb: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btDbvtNode* %na, i32 0, i32 2, i32 0 ; [#uses=1]
+ %2 = bitcast [2 x %struct.btDbvtNode*]* %1 to i8** ; [#uses=1]
+ %3 = load i8** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btDbvtNode* %nb, i32 0, i32 2, i32 0 ; [#uses=1]
+ %5 = bitcast [2 x %struct.btDbvtNode*]* %4 to i8** ; [#uses=1]
+ %6 = load i8** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btDbvtTreeCollider* %this, i32 0, i32 1 ; [#uses=2]
+ %8 = load %struct.btDbvtBroadphase** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btDbvtBroadphase* %8, i32 0, i32 3 ; [#uses=1]
+ %10 = load %struct..0btMultiSapOverlapFilterCallback** %9, align 4 ; [#uses=2]
+ %11 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %10, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = load i32 (...)*** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 2 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = bitcast i8* %6 to %struct.btBroadphaseProxy* ; [#uses=1]
+ %16 = bitcast i8* %3 to %struct.btBroadphaseProxy* ; [#uses=1]
+ %17 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %10, i32 0, i32 0 ; [#uses=1]
+ %18 = bitcast i32 (...)* %14 to %struct.btBroadphasePair* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %19 = tail call %struct.btBroadphasePair* %18(%struct.btActionInterface* %17, %struct.btBroadphaseProxy* %16, %struct.btBroadphaseProxy* %15) ; [#uses=0]
+ %20 = load %struct.btDbvtBroadphase** %7, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btDbvtBroadphase* %20, i32 0, i32 9 ; [#uses=2]
+ %22 = load i32* %21, align 4 ; [#uses=1]
+ %23 = add nsw i32 %22, 1 ; [#uses=1]
+ store i32 %23, i32* %21, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btDbvtTreeCollider7ProcessEPK10btDbvtNode(%struct.btDbvtTreeCollider* %this, %struct.btDbvtNode* %n) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtTreeCollider* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 2 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btDbvtTreeCollider* %this, i32 0, i32 2 ; [#uses=1]
+ %5 = load %struct.btDbvtProxy** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btDbvtProxy* %5, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btDbvtNode** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %3 to void (%struct.btDbvtTreeCollider*, %struct.btDbvtNode*, %struct.btDbvtNode*)* ; [#uses=1]
+ tail call void %8(%struct.btDbvtTreeCollider* %this, %struct.btDbvtNode* %n, %struct.btDbvtNode* %7)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK16btDbvtBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3_(%struct.btDbvtBroadphase* nocapture %this, %struct.btBroadphaseProxy* nocapture %absproxy, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN19BroadphaseRayTesterD1Ev(%struct.BroadphaseRayTester* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.BroadphaseRayTester* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV19BroadphaseRayTester, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN19BroadphaseRayTesterD0Ev(%struct.BroadphaseRayTester* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.BroadphaseRayTester* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV19BroadphaseRayTester, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.BroadphaseRayTester* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN19BroadphaseRayTester7ProcessEPK10btDbvtNode(%struct.BroadphaseRayTester* nocapture %this, %struct.btDbvtNode* nocapture %leaf) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 2, i32 0 ; [#uses=1]
+ %1 = bitcast [2 x %struct.btDbvtNode*]* %0 to i8** ; [#uses=1]
+ %2 = load i8** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.BroadphaseRayTester* %this, i32 0, i32 1 ; [#uses=1]
+ %4 = load %struct.btBroadphaseRayCallback** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btBroadphaseRayCallback* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 2 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i8* %2 to %struct.btBroadphaseProxy* ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btBroadphaseRayCallback* %4, i32 0, i32 0 ; [#uses=1]
+ %11 = bitcast i32 (...)* %8 to i8 (%struct.btActionInterface*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %12 = tail call zeroext i8 %11(%struct.btActionInterface* %10, %struct.btBroadphaseProxy* %9) ; [#uses=0]
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20BroadphaseAabbTesterD1Ev(%struct.BroadphaseAabbTester* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.BroadphaseAabbTester* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV20BroadphaseAabbTester, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20BroadphaseAabbTesterD0Ev(%struct.BroadphaseAabbTester* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.BroadphaseAabbTester* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV20BroadphaseAabbTester, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.BroadphaseAabbTester* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20BroadphaseAabbTester7ProcessEPK10btDbvtNode(%struct.BroadphaseAabbTester* nocapture %this, %struct.btDbvtNode* nocapture %leaf) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 2, i32 0 ; [#uses=1]
+ %1 = bitcast [2 x %struct.btDbvtNode*]* %0 to i8** ; [#uses=1]
+ %2 = load i8** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.BroadphaseAabbTester* %this, i32 0, i32 1 ; [#uses=1]
+ %4 = load %struct.btActionInterface** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btActionInterface* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 2 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i8* %2 to %struct.btBroadphaseProxy* ; [#uses=1]
+ %10 = bitcast i32 (...)* %8 to i8 (%struct.btActionInterface*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %11 = tail call zeroext i8 %10(%struct.btActionInterface* %4, %struct.btBroadphaseProxy* %9) ; [#uses=0]
+ ret void
+}
+
+; [#uses=1]
+define %struct..0btMultiSapOverlapFilterCallback* @_ZN16btDbvtBroadphase23getOverlappingPairCacheEv(%struct.btDbvtBroadphase* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 3 ; [#uses=1]
+ %1 = load %struct..0btMultiSapOverlapFilterCallback** %0, align 4 ; [#uses=1]
+ ret %struct..0btMultiSapOverlapFilterCallback* %1
+}
+
+; [#uses=1]
+define %struct..0btMultiSapOverlapFilterCallback* @_ZNK16btDbvtBroadphase23getOverlappingPairCacheEv(%struct.btDbvtBroadphase* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 3 ; [#uses=1]
+ %1 = load %struct..0btMultiSapOverlapFilterCallback** %0, align 4 ; [#uses=1]
+ ret %struct..0btMultiSapOverlapFilterCallback* %1
+}
+
+; [#uses=1]
+define void @_ZNK16btDbvtBroadphase17getBroadphaseAabbER9btVector3S1_(%struct.btDbvtBroadphase* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btDbvtNode** %0, align 4 ; [#uses=14]
+ %2 = icmp eq %struct.btDbvtNode* %1, null ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1, i32 0 ; [#uses=1]
+ %4 = load %struct.btDbvtNode** %3, align 4 ; [#uses=15]
+ %5 = icmp eq %struct.btDbvtNode* %4, null ; [#uses=2]
+ br i1 %2, label %bb8, label %bb
+
+bb: ; preds = %entry
+ %6 = getelementptr %struct.btDbvtNode* %1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ br i1 %5, label %bb7, label %bb6
+
+bb6: ; preds = %bb
+ %scevgep11.i = getelementptr %struct.btDbvtNode* %4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep13.i = getelementptr %struct.btDbvtNode* %1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep14.i = getelementptr %struct.btDbvtNode* %4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = load float* %scevgep11.i, align 4 ; [#uses=2]
+ %9 = fcmp olt float %7, %8 ; [#uses=1]
+ %storemerge.i = select i1 %9, float %7, float %8 ; [#uses=1]
+ %10 = load float* %scevgep13.i, align 4 ; [#uses=2]
+ %11 = load float* %scevgep14.i, align 4 ; [#uses=2]
+ %12 = fcmp ogt float %10, %11 ; [#uses=1]
+ %storemerge16.i = select i1 %12, float %10, float %11 ; [#uses=1]
+ %scevgep.1.i = getelementptr %struct.btDbvtNode* %1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep11.1.i = getelementptr %struct.btDbvtNode* %4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep13.1.i = getelementptr %struct.btDbvtNode* %1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep14.1.i = getelementptr %struct.btDbvtNode* %4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %scevgep.1.i, align 4 ; [#uses=2]
+ %14 = load float* %scevgep11.1.i, align 4 ; [#uses=2]
+ %15 = fcmp olt float %13, %14 ; [#uses=1]
+ %storemerge17.i = select i1 %15, float %13, float %14 ; [#uses=1]
+ %16 = load float* %scevgep13.1.i, align 4 ; [#uses=2]
+ %17 = load float* %scevgep14.1.i, align 4 ; [#uses=2]
+ %18 = fcmp ogt float %16, %17 ; [#uses=1]
+ %storemerge18.i = select i1 %18, float %16, float %17 ; [#uses=1]
+ %scevgep.2.i = getelementptr %struct.btDbvtNode* %1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep11.2.i = getelementptr %struct.btDbvtNode* %4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep13.2.i = getelementptr %struct.btDbvtNode* %1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep14.2.i = getelementptr %struct.btDbvtNode* %4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %scevgep.2.i, align 4 ; [#uses=2]
+ %20 = load float* %scevgep11.2.i, align 4 ; [#uses=2]
+ %21 = fcmp olt float %19, %20 ; [#uses=1]
+ %storemerge19.i = select i1 %21, float %19, float %20 ; [#uses=1]
+ %22 = load float* %scevgep13.2.i, align 4 ; [#uses=2]
+ %23 = load float* %scevgep14.2.i, align 4 ; [#uses=2]
+ %24 = fcmp ogt float %22, %23 ; [#uses=1]
+ %storemerge20.i = select i1 %24, float %22, float %23 ; [#uses=1]
+ br label %bb14
+
+bb7: ; preds = %bb
+ %25 = load float* %6, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btDbvtNode* %1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btDbvtNode* %1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btDbvtNode* %1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btDbvtNode* %1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btDbvtNode* %1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btDbvtNode* %1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btDbvtNode* %1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ br label %bb14
+
+bb8: ; preds = %entry
+ br i1 %5, label %bb14, label %bb12
+
+bb12: ; preds = %bb8
+ %40 = getelementptr inbounds %struct.btDbvtNode* %4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btDbvtNode* %4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btDbvtNode* %4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btDbvtNode* %4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btDbvtNode* %4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btDbvtNode* %4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btDbvtNode* %4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btDbvtNode* %4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ br label %bb14
+
+bb14: ; preds = %bb12, %bb8, %bb7, %bb6
+ %bounds.0.0.3.0 = phi float [ undef, %bb6 ], [ %31, %bb7 ], [ %47, %bb12 ], [ 0.000000e+00, %bb8 ] ; [#uses=1]
+ %bounds.0.0.2.0 = phi float [ %storemerge19.i, %bb6 ], [ %29, %bb7 ], [ %45, %bb12 ], [ 0.000000e+00, %bb8 ] ; [#uses=1]
+ %bounds.0.0.1.0 = phi float [ %storemerge17.i, %bb6 ], [ %27, %bb7 ], [ %43, %bb12 ], [ 0.000000e+00, %bb8 ] ; [#uses=1]
+ %bounds.0.0.0.0 = phi float [ %storemerge.i, %bb6 ], [ %25, %bb7 ], [ %41, %bb12 ], [ 0.000000e+00, %bb8 ] ; [#uses=1]
+ %bounds.1.0.0.0 = phi float [ %storemerge16.i, %bb6 ], [ %33, %bb7 ], [ %49, %bb12 ], [ 0.000000e+00, %bb8 ] ; [#uses=1]
+ %bounds.1.0.1.0 = phi float [ %storemerge18.i, %bb6 ], [ %35, %bb7 ], [ %51, %bb12 ], [ 0.000000e+00, %bb8 ] ; [#uses=1]
+ %bounds.1.0.2.0 = phi float [ %storemerge20.i, %bb6 ], [ %37, %bb7 ], [ %53, %bb12 ], [ 0.000000e+00, %bb8 ] ; [#uses=1]
+ %bounds.1.0.3.0 = phi float [ undef, %bb6 ], [ %39, %bb7 ], [ %55, %bb12 ], [ 0.000000e+00, %bb8 ] ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %bounds.0.0.0.0, float* %56, align 4
+ %57 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %bounds.0.0.1.0, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %bounds.0.0.2.0, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %bounds.0.0.3.0, float* %59, align 4
+ %60 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %bounds.1.0.0.0, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %bounds.1.0.1.0, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %bounds.1.0.2.0, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %bounds.1.0.3.0, float* %63, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btDbvtBroadphase10printStatsEv(%struct.btDbvtBroadphase* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btDbvtBroadphase9benchmarkEP21btBroadphaseInterface(%struct.btActionInterface* nocapture %unnamed_arg) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btDbvtBroadphase9resetPoolEP12btDispatcher(%struct.btDbvtBroadphase* %this, %struct.btActionInterface* nocapture %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1, i32 3 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = sub i32 0, %3 ; [#uses=1]
+ %5 = icmp eq i32 %1, %4 ; [#uses=1]
+ br i1 %5, label %return.loopexit, label %return
+
+return.loopexit: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ tail call void @_ZN6btDbvt5clearEv(%struct.btDbvt* %6)
+ %7 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ tail call void @_ZN6btDbvt5clearEv(%struct.btDbvt* %7)
+ %8 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 18 ; [#uses=1]
+ store i8 0, i8* %8, align 1
+ %9 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 19 ; [#uses=1]
+ store i8 1, i8* %9, align 2
+ %10 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 10 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 1, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 8 ; [#uses=1]
+ store i32 10, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 9 ; [#uses=1]
+ store i32 1, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 11 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 12 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 16 ; [#uses=1]
+ store i32 0, i32* %19, align 4
+ %20 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 14 ; [#uses=1]
+ store i32 0, i32* %20, align 4
+ %21 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %scevgep = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ store %struct.btDbvtProxy* null, %struct.btDbvtProxy** %scevgep, align 4
+ %scevgep.1 = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store %struct.btDbvtProxy* null, %struct.btDbvtProxy** %scevgep.1, align 4
+ %scevgep.2 = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store %struct.btDbvtProxy* null, %struct.btDbvtProxy** %scevgep.2, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btDbvtBroadphase8optimizeEv(%struct.btDbvtBroadphase* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ tail call void @_ZN6btDbvt15optimizeTopDownEi(%struct.btDbvt* %0, i32 128)
+ %1 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ tail call void @_ZN6btDbvt15optimizeTopDownEi(%struct.btDbvt* %1, i32 128)
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEE6resizeEiRKS1_(%"struct.btAlignedObjectArray<btDbvt::sStkCLN>"* nocapture %this, i32 %newsize, %"struct.btDbvt::sStkCLN"* nocapture %fillData) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvt::sStkCLN>"* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = icmp sgt i32 %1, %newsize ; [#uses=1]
+ br i1 %2, label %bb12, label %bb3
+
+bb3: ; preds = %entry
+ %3 = icmp slt i32 %1, %newsize ; [#uses=2]
+ br i1 %3, label %bb4, label %bb12
+
+bb4: ; preds = %bb3
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvt::sStkCLN>"* %this, i32 0, i32 2 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp slt i32 %5, %newsize ; [#uses=1]
+ br i1 %6, label %bb.i, label %bb.nph
+
+bb.i: ; preds = %bb4
+ %7 = icmp eq i32 %newsize, 0 ; [#uses=1]
+ br i1 %7, label %_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %8 = shl i32 %newsize, 3 ; [#uses=1]
+ %9 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %8, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %9 to %"struct.btDbvt::sStkCLN"* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %10 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %11 = phi %"struct.btDbvt::sStkCLN"* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=4]
+ %12 = icmp sgt i32 %10, 0 ; [#uses=1]
+ br i1 %12, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayIN6btDbvt6sStkNNEE4copyEiiPS1_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEE8allocateEi.exit.i
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvt::sStkCLN>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=6]
+ %scevgep.i.i = getelementptr %"struct.btDbvt::sStkCLN"* %11, i32 %indvar.i.i ; [#uses=1]
+ %14 = icmp eq %"struct.btDbvt::sStkCLN"* %scevgep.i.i, null ; [#uses=1]
+ br i1 %14, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %scevgep12.i.i = getelementptr %"struct.btDbvt::sStkCLN"* %11, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %scevgep11.i.i = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %11, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %15 = load %"struct.btDbvt::sStkCLN"** %13, align 4 ; [#uses=2]
+ %scevgep89.i.i = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %15, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %16 = load %struct.btDbvtNode** %scevgep89.i.i, align 4 ; [#uses=1]
+ %scevgep10.i.i = getelementptr %"struct.btDbvt::sStkCLN"* %15, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %17 = load %struct.btDbvtNode** %scevgep10.i.i, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %16, %struct.btDbvtNode** %scevgep11.i.i, align 4
+ store %struct.btDbvtNode* %17, %struct.btDbvtNode** %scevgep12.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond21 = icmp eq i32 %indvar.next.i.i, %10 ; [#uses=1]
+ br i1 %exitcond21, label %_ZNK20btAlignedObjectArrayIN6btDbvt6sStkNNEE4copyEiiPS1_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIN6btDbvt6sStkNNEE4copyEiiPS1_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEE8allocateEi.exit.i
+ %18 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvt::sStkCLN>"* %this, i32 0, i32 3 ; [#uses=3]
+ %19 = load %"struct.btDbvt::sStkCLN"** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %"struct.btDbvt::sStkCLN"* %19, null ; [#uses=1]
+ br i1 %20, label %bb11.preheader, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIN6btDbvt6sStkNNEE4copyEiiPS1_.exit.i
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvt::sStkCLN>"* %this, i32 0, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %23 = bitcast %"struct.btDbvt::sStkCLN"* %19 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %"struct.btDbvt::sStkCLN"* null, %"struct.btDbvt::sStkCLN"** %18, align 4
+ br label %bb11.preheader
+
+bb11.preheader: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIN6btDbvt6sStkNNEE4copyEiiPS1_.exit.i
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvt::sStkCLN>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store %"struct.btDbvt::sStkCLN"* %11, %"struct.btDbvt::sStkCLN"** %18, align 4
+ store i32 %newsize, i32* %4, align 4
+ br i1 %3, label %bb.nph, label %bb12
+
+bb.nph: ; preds = %bb11.preheader, %bb4
+ %25 = getelementptr inbounds %"struct.btAlignedObjectArray<btDbvt::sStkCLN>"* %this, i32 0, i32 3 ; [#uses=1]
+ %26 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %fillData, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %fillData, i32 0, i32 1 ; [#uses=1]
+ %tmp = sub i32 %newsize, %1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb10, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb10 ] ; [#uses=2]
+ %tmp17 = add i32 %1, %indvar ; [#uses=3]
+ %28 = load %"struct.btDbvt::sStkCLN"** %25, align 4 ; [#uses=3]
+ %scevgep = getelementptr %"struct.btDbvt::sStkCLN"* %28, i32 %tmp17 ; [#uses=1]
+ %29 = icmp eq %"struct.btDbvt::sStkCLN"* %scevgep, null ; [#uses=1]
+ br i1 %29, label %bb10, label %bb8
+
+bb8: ; preds = %bb7
+ %30 = load %struct.btDbvtNode** %26, align 4 ; [#uses=1]
+ %31 = load %struct.btDbvtNode** %27, align 4 ; [#uses=1]
+ %scevgep1819 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %28, i32 %tmp17, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %30, %struct.btDbvtNode** %scevgep1819, align 4
+ %scevgep20 = getelementptr %"struct.btDbvt::sStkCLN"* %28, i32 %tmp17, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %31, %struct.btDbvtNode** %scevgep20, align 4
+ br label %bb10
+
+bb10: ; preds = %bb8, %bb7
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; [#uses=1]
+ br i1 %exitcond, label %bb12, label %bb7
+
+bb12: ; preds = %bb10, %bb11.preheader, %bb3, %entry
+ store i32 %newsize, i32* %0, align 4
+ ret void
+}
+
+; [#uses=6]
+define linkonce_odr void @_ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(%struct.btDbvt* nocapture %this, %struct.btDbvtNode* %root0, %struct.btDbvtNode* %root1, %struct.btActionInterface* %policy) inlinehint align 2 {
+entry:
+ %0 = alloca %"struct.btDbvt::sStkCLN", align 8 ; [#uses=1]
+ %1 = alloca %"struct.btDbvt::sStkCLN", align 8 ; [#uses=1]
+ %2 = icmp ne %struct.btDbvtNode* %root0, null ; [#uses=1]
+ %3 = icmp ne %struct.btDbvtNode* %root1, null ; [#uses=1]
+ %4 = and i1 %2, %3 ; [#uses=1]
+ br i1 %4, label %bb, label %return
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5 ; [#uses=2]
+ call void @_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEE6resizeEiRKS1_(%"struct.btAlignedObjectArray<btDbvt::sStkCLN>"* %5, i32 128, %"struct.btDbvt::sStkCLN"* %1) inlinehint
+ %6 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 3 ; [#uses=12]
+ %7 = load %"struct.btDbvt::sStkCLN"** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %7, i32 0, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %root0, %struct.btDbvtNode** %8, align 4
+ %9 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %7, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %root1, %struct.btDbvtNode** %9, align 4
+ %10 = getelementptr inbounds %struct.btDbvt* %this, i32 0, i32 5, i32 1 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btActionInterface* %policy, i32 0, i32 0 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb21, %bb
+ %depth.0 = phi i32 [ 1, %bb ], [ %depth.1, %bb21 ] ; [#uses=16]
+ %treshold.1 = phi i32 [ 124, %bb ], [ %treshold.0, %bb21 ] ; [#uses=2]
+ %12 = add nsw i32 %depth.0, -1 ; [#uses=19]
+ %13 = load %"struct.btDbvt::sStkCLN"** %6, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %13, i32 %12, i32 0 ; [#uses=1]
+ %15 = load %struct.btDbvtNode** %14, align 4 ; [#uses=15]
+ %16 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %13, i32 %12, i32 1 ; [#uses=1]
+ %17 = load %struct.btDbvtNode** %16, align 4 ; [#uses=13]
+ %18 = icmp sgt i32 %12, %treshold.1 ; [#uses=1]
+ br i1 %18, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ %19 = load i32* %10, align 4 ; [#uses=1]
+ %20 = shl i32 %19, 1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIN6btDbvt6sStkNNEE6resizeEiRKS1_(%"struct.btAlignedObjectArray<btDbvt::sStkCLN>"* %5, i32 %20, %"struct.btDbvt::sStkCLN"* %0) inlinehint
+ %21 = load i32* %10, align 4 ; [#uses=1]
+ %22 = add nsw i32 %21, -4 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ %treshold.0 = phi i32 [ %22, %bb4 ], [ %treshold.1, %bb3 ] ; [#uses=1]
+ %23 = icmp eq %struct.btDbvtNode* %15, %17 ; [#uses=1]
+ br i1 %23, label %bb6, label %bb9
+
+bb6: ; preds = %bb5
+ %24 = getelementptr inbounds %struct.btDbvtNode* %15, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %25 = load %struct.btDbvtNode** %24, align 4 ; [#uses=1]
+ %toBoolnot.i25 = icmp eq %struct.btDbvtNode* %25, null ; [#uses=1]
+ br i1 %toBoolnot.i25, label %bb21, label %bb8
+
+bb8: ; preds = %bb6
+ %26 = load %"struct.btDbvt::sStkCLN"** %6, align 4 ; [#uses=2]
+ %27 = getelementptr inbounds %struct.btDbvtNode* %15, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %28 = load %struct.btDbvtNode** %27, align 4 ; [#uses=2]
+ %29 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %26, i32 %12, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %28, %struct.btDbvtNode** %29, align 4
+ %30 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %26, i32 %12, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %28, %struct.btDbvtNode** %30, align 4
+ %31 = add nsw i32 %depth.0, 1 ; [#uses=2]
+ %32 = load %"struct.btDbvt::sStkCLN"** %6, align 4 ; [#uses=2]
+ %33 = load %struct.btDbvtNode** %24, align 4 ; [#uses=2]
+ %34 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %32, i32 %depth.0, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %33, %struct.btDbvtNode** %34, align 4
+ %35 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %32, i32 %depth.0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %33, %struct.btDbvtNode** %35, align 4
+ %36 = add nsw i32 %depth.0, 2 ; [#uses=1]
+ %37 = load %"struct.btDbvt::sStkCLN"** %6, align 4 ; [#uses=2]
+ %38 = load %struct.btDbvtNode** %24, align 4 ; [#uses=1]
+ %39 = load %struct.btDbvtNode** %27, align 4 ; [#uses=1]
+ %40 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %37, i32 %31, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %39, %struct.btDbvtNode** %40, align 4
+ %41 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %37, i32 %31, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %38, %struct.btDbvtNode** %41, align 4
+ br label %bb21
+
+bb9: ; preds = %bb5
+ %42 = getelementptr inbounds %struct.btDbvtNode* %15, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btDbvtNode* %17, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fcmp ugt float %43, %45 ; [#uses=1]
+ br i1 %46, label %bb21, label %bb.i
+
+bb.i: ; preds = %bb9
+ %47 = getelementptr inbounds %struct.btDbvtNode* %15, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btDbvtNode* %17, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fcmp ult float %48, %50 ; [#uses=1]
+ br i1 %51, label %bb21, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %52 = getelementptr inbounds %struct.btDbvtNode* %15, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btDbvtNode* %17, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fcmp ugt float %53, %55 ; [#uses=1]
+ br i1 %56, label %bb21, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %57 = getelementptr inbounds %struct.btDbvtNode* %15, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btDbvtNode* %17, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ %61 = fcmp ult float %58, %60 ; [#uses=1]
+ br i1 %61, label %bb21, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %62 = getelementptr inbounds %struct.btDbvtNode* %15, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btDbvtNode* %17, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ %66 = fcmp ugt float %63, %65 ; [#uses=1]
+ br i1 %66, label %bb21, label %_Z9IntersectRK12btDbvtAabbMmS1_.exit
+
+_Z9IntersectRK12btDbvtAabbMmS1_.exit: ; preds = %bb3.i
+ %67 = getelementptr inbounds %struct.btDbvtNode* %15, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btDbvtNode* %17, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ %phitmp = fcmp ult float %68, %70 ; [#uses=1]
+ br i1 %phitmp, label %bb21, label %bb11
+
+bb11: ; preds = %_Z9IntersectRK12btDbvtAabbMmS1_.exit
+ %71 = getelementptr inbounds %struct.btDbvtNode* %15, i32 0, i32 2, i32 0, i32 1 ; [#uses=4]
+ %72 = load %struct.btDbvtNode** %71, align 4 ; [#uses=1]
+ %toBoolnot.i23 = icmp eq %struct.btDbvtNode* %72, null ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btDbvtNode* %17, i32 0, i32 2, i32 0, i32 1 ; [#uses=4]
+ %74 = load %struct.btDbvtNode** %73, align 4 ; [#uses=1]
+ %toBoolnot.i = icmp ne %struct.btDbvtNode* %74, null ; [#uses=2]
+ br i1 %toBoolnot.i23, label %bb17, label %bb13
+
+bb13: ; preds = %bb11
+ %75 = load %"struct.btDbvt::sStkCLN"** %6, align 4 ; [#uses=4]
+ br i1 %toBoolnot.i, label %bb15, label %bb16
+
+bb15: ; preds = %bb13
+ %76 = getelementptr inbounds %struct.btDbvtNode* %17, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %77 = load %struct.btDbvtNode** %76, align 4 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btDbvtNode* %15, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %79 = load %struct.btDbvtNode** %78, align 4 ; [#uses=1]
+ %80 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %75, i32 %12, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %79, %struct.btDbvtNode** %80, align 4
+ %81 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %75, i32 %12, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %77, %struct.btDbvtNode** %81, align 4
+ %82 = add nsw i32 %depth.0, 1 ; [#uses=2]
+ %83 = load %"struct.btDbvt::sStkCLN"** %6, align 4 ; [#uses=2]
+ %84 = load %struct.btDbvtNode** %76, align 4 ; [#uses=1]
+ %85 = load %struct.btDbvtNode** %71, align 4 ; [#uses=1]
+ %86 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %83, i32 %depth.0, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %85, %struct.btDbvtNode** %86, align 4
+ %87 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %83, i32 %depth.0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %84, %struct.btDbvtNode** %87, align 4
+ %88 = add nsw i32 %depth.0, 2 ; [#uses=2]
+ %89 = load %"struct.btDbvt::sStkCLN"** %6, align 4 ; [#uses=2]
+ %90 = load %struct.btDbvtNode** %73, align 4 ; [#uses=1]
+ %91 = load %struct.btDbvtNode** %78, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %89, i32 %82, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %91, %struct.btDbvtNode** %92, align 4
+ %93 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %89, i32 %82, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %90, %struct.btDbvtNode** %93, align 4
+ %94 = add nsw i32 %depth.0, 3 ; [#uses=1]
+ %95 = load %"struct.btDbvt::sStkCLN"** %6, align 4 ; [#uses=2]
+ %96 = load %struct.btDbvtNode** %73, align 4 ; [#uses=1]
+ %97 = load %struct.btDbvtNode** %71, align 4 ; [#uses=1]
+ %98 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %95, i32 %88, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %97, %struct.btDbvtNode** %98, align 4
+ %99 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %95, i32 %88, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %96, %struct.btDbvtNode** %99, align 4
+ br label %bb21
+
+bb16: ; preds = %bb13
+ %100 = getelementptr inbounds %struct.btDbvtNode* %15, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %101 = load %struct.btDbvtNode** %100, align 4 ; [#uses=1]
+ %102 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %75, i32 %12, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %101, %struct.btDbvtNode** %102, align 4
+ %103 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %75, i32 %12, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %17, %struct.btDbvtNode** %103, align 4
+ %104 = add nsw i32 %depth.0, 1 ; [#uses=1]
+ %105 = load %"struct.btDbvt::sStkCLN"** %6, align 4 ; [#uses=2]
+ %106 = load %struct.btDbvtNode** %71, align 4 ; [#uses=1]
+ %107 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %105, i32 %depth.0, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %106, %struct.btDbvtNode** %107, align 4
+ %108 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %105, i32 %depth.0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %17, %struct.btDbvtNode** %108, align 4
+ br label %bb21
+
+bb17: ; preds = %bb11
+ br i1 %toBoolnot.i, label %bb19, label %bb20
+
+bb19: ; preds = %bb17
+ %109 = load %"struct.btDbvt::sStkCLN"** %6, align 4 ; [#uses=2]
+ %110 = getelementptr inbounds %struct.btDbvtNode* %17, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %111 = load %struct.btDbvtNode** %110, align 4 ; [#uses=1]
+ %112 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %109, i32 %12, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %15, %struct.btDbvtNode** %112, align 4
+ %113 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %109, i32 %12, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %111, %struct.btDbvtNode** %113, align 4
+ %114 = add nsw i32 %depth.0, 1 ; [#uses=1]
+ %115 = load %"struct.btDbvt::sStkCLN"** %6, align 4 ; [#uses=2]
+ %116 = load %struct.btDbvtNode** %73, align 4 ; [#uses=1]
+ %117 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %115, i32 %depth.0, i32 0 ; [#uses=1]
+ store %struct.btDbvtNode* %15, %struct.btDbvtNode** %117, align 4
+ %118 = getelementptr inbounds %"struct.btDbvt::sStkCLN"* %115, i32 %depth.0, i32 1 ; [#uses=1]
+ store %struct.btDbvtNode* %116, %struct.btDbvtNode** %118, align 4
+ br label %bb21
+
+bb20: ; preds = %bb17
+ %119 = load i32 (...)*** %11, align 4 ; [#uses=1]
+ %120 = getelementptr inbounds i32 (...)** %119, i32 2 ; [#uses=1]
+ %121 = load i32 (...)** %120, align 4 ; [#uses=1]
+ %122 = bitcast i32 (...)* %121 to void (%struct.btActionInterface*, %struct.btDbvtNode*, %struct.btDbvtNode*)* ; [#uses=1]
+ call void %122(%struct.btActionInterface* %policy, %struct.btDbvtNode* %15, %struct.btDbvtNode* %17)
+ br label %bb21
+
+bb21: ; preds = %bb20, %bb19, %bb16, %bb15, %_Z9IntersectRK12btDbvtAabbMmS1_.exit, %bb3.i, %bb2.i, %bb1.i, %bb.i, %bb9, %bb8, %bb6
+ %depth.1 = phi i32 [ %36, %bb8 ], [ %12, %bb6 ], [ %94, %bb15 ], [ %104, %bb16 ], [ %114, %bb19 ], [ %12, %bb20 ], [ %12, %_Z9IntersectRK12btDbvtAabbMmS1_.exit ], [ %12, %bb3.i ], [ %12, %bb2.i ], [ %12, %bb1.i ], [ %12, %bb.i ], [ %12, %bb9 ] ; [#uses=2]
+ %123 = icmp eq i32 %depth.1, 0 ; [#uses=1]
+ br i1 %123, label %return, label %bb3
+
+return: ; preds = %bb21, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btDbvtBroadphase7collideEP12btDispatcher(%struct.btDbvtBroadphase* %this, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %curAabb = alloca %struct.GIM_AABB, align 8 ; [#uses=9]
+ %collider8 = alloca %struct.btDbvtTreeCollider, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 7 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = mul nsw i32 %3, %1 ; [#uses=1]
+ %5 = sdiv i32 %4, 100 ; [#uses=1]
+ %6 = add nsw i32 %5, 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=4]
+ call void @_ZN6btDbvt19optimizeIncrementalEi(%struct.btDbvt* %7, i32 %6)
+ %8 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 10 ; [#uses=4]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %10 = icmp eq i32 %9, 0 ; [#uses=1]
+ br i1 %10, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %11 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1, i32 3 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 6 ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=1]
+ %15 = mul nsw i32 %14, %12 ; [#uses=2]
+ %16 = sdiv i32 %15, 100 ; [#uses=1]
+ %17 = add nsw i32 %16, 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ call void @_ZN6btDbvt19optimizeIncrementalEi(%struct.btDbvt* %18, i32 %17)
+ %19 = load i32* %8, align 4 ; [#uses=1]
+ %.neg = sdiv i32 %15, -100 ; [#uses=1]
+ %.neg58 = add nsw i32 %.neg, -1 ; [#uses=1]
+ %20 = add i32 %.neg58, %19 ; [#uses=2]
+ %21 = icmp slt i32 %20, 0 ; [#uses=1]
+ %22 = select i1 %21, i32 0, i32 %20 ; [#uses=1]
+ store i32 %22, i32* %8, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %23 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 5 ; [#uses=2]
+ %24 = load i32* %23, align 4 ; [#uses=1]
+ %25 = add nsw i32 %24, 1 ; [#uses=1]
+ %26 = srem i32 %25, 2 ; [#uses=2]
+ store i32 %26, i32* %23, align 4
+ %27 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 %26 ; [#uses=1]
+ %28 = load %struct.btDbvtProxy** %27, align 4 ; [#uses=2]
+ %29 = icmp eq %struct.btDbvtProxy* %28, null ; [#uses=1]
+ br i1 %29, label %bb7, label %bb3.preheader
+
+bb3.preheader: ; preds = %bb1
+ %30 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 2 ; [#uses=3]
+ %31 = getelementptr inbounds %struct.GIM_AABB* %curAabb, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.GIM_AABB* %curAabb, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.GIM_AABB* %curAabb, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.GIM_AABB* %curAabb, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.GIM_AABB* %curAabb, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.GIM_AABB* %curAabb, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.GIM_AABB* %curAabb, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.GIM_AABB* %curAabb, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %invcont4, %bb3.preheader
+ %current.0 = phi %struct.btDbvtProxy* [ %41, %invcont4 ], [ %28, %bb3.preheader ] ; [#uses=16]
+ %40 = getelementptr inbounds %struct.btDbvtProxy* %current.0, i32 0, i32 2, i32 1 ; [#uses=3]
+ %41 = load %struct.btDbvtProxy** %40, align 4 ; [#uses=4]
+ %42 = getelementptr inbounds %struct.btDbvtProxy* %current.0, i32 0, i32 2, i32 0 ; [#uses=3]
+ %43 = load %struct.btDbvtProxy** %42, align 4 ; [#uses=2]
+ %44 = icmp eq %struct.btDbvtProxy* %43, null ; [#uses=1]
+ br i1 %44, label %bb1.i48, label %bb.i47
+
+bb.i47: ; preds = %bb3
+ %45 = getelementptr inbounds %struct.btDbvtProxy* %43, i32 0, i32 2, i32 1 ; [#uses=1]
+ store %struct.btDbvtProxy* %41, %struct.btDbvtProxy** %45, align 4
+ br label %bb2.i49
+
+bb1.i48: ; preds = %bb3
+ %46 = getelementptr inbounds %struct.btDbvtProxy* %current.0, i32 0, i32 3 ; [#uses=1]
+ %47 = load i32* %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 %47 ; [#uses=1]
+ store %struct.btDbvtProxy* %41, %struct.btDbvtProxy** %48, align 4
+ br label %bb2.i49
+
+bb2.i49: ; preds = %bb1.i48, %bb.i47
+ %49 = load %struct.btDbvtProxy** %40, align 4 ; [#uses=2]
+ %50 = icmp eq %struct.btDbvtProxy* %49, null ; [#uses=1]
+ br i1 %50, label %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit, label %bb3.i50
+
+bb3.i50: ; preds = %bb2.i49
+ %51 = load %struct.btDbvtProxy** %42, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btDbvtProxy* %49, i32 0, i32 2, i32 0 ; [#uses=1]
+ store %struct.btDbvtProxy* %51, %struct.btDbvtProxy** %52, align 4
+ br label %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit
+
+_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit: ; preds = %bb3.i50, %bb2.i49
+ store %struct.btDbvtProxy* null, %struct.btDbvtProxy** %42, align 4
+ %53 = load %struct.btDbvtProxy** %30, align 4 ; [#uses=1]
+ store %struct.btDbvtProxy* %53, %struct.btDbvtProxy** %40, align 4
+ %54 = load %struct.btDbvtProxy** %30, align 4 ; [#uses=2]
+ %55 = icmp eq %struct.btDbvtProxy* %54, null ; [#uses=1]
+ br i1 %55, label %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit, label %bb.i51
+
+bb.i51: ; preds = %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit
+ %56 = getelementptr inbounds %struct.btDbvtProxy* %54, i32 0, i32 2, i32 0 ; [#uses=1]
+ store %struct.btDbvtProxy* %current.0, %struct.btDbvtProxy** %56, align 4
+ br label %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit
+
+_Z10listappendI11btDbvtProxyEvPT_RS2_.exit: ; preds = %bb.i51, %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit
+ store %struct.btDbvtProxy* %current.0, %struct.btDbvtProxy** %30, align 4
+ %57 = getelementptr inbounds %struct.btDbvtProxy* %current.0, i32 0, i32 1 ; [#uses=2]
+ %58 = load %struct.btDbvtNode** %57, align 4 ; [#uses=1]
+ invoke void @_ZN6btDbvt6removeEP10btDbvtNode(%struct.btDbvt* %7, %struct.btDbvtNode* %58)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit
+ %59 = getelementptr inbounds %struct.btDbvtProxy* %current.0, i32 0, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ store float %60, float* %31, align 8
+ %61 = getelementptr inbounds %struct.btDbvtProxy* %current.0, i32 0, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ store float %62, float* %32, align 4
+ %63 = getelementptr inbounds %struct.btDbvtProxy* %current.0, i32 0, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ store float %64, float* %33, align 8
+ %65 = getelementptr inbounds %struct.btDbvtProxy* %current.0, i32 0, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %34, align 4
+ %67 = getelementptr inbounds %struct.btDbvtProxy* %current.0, i32 0, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ store float %68, float* %35, align 8
+ %69 = getelementptr inbounds %struct.btDbvtProxy* %current.0, i32 0, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ store float %70, float* %36, align 4
+ %71 = getelementptr inbounds %struct.btDbvtProxy* %current.0, i32 0, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %37, align 8
+ %73 = getelementptr inbounds %struct.btDbvtProxy* %current.0, i32 0, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ store float %74, float* %38, align 4
+ %75 = bitcast %struct.btDbvtProxy* %current.0 to i8* ; [#uses=1]
+ %76 = invoke %struct.btDbvtNode* @_ZN6btDbvt6insertERK12btDbvtAabbMmPv(%struct.btDbvt* %39, %struct.GIM_AABB* %curAabb, i8* %75)
+ to label %invcont4 unwind label %lpad ; [#uses=1]
+
+invcont4: ; preds = %invcont
+ store %struct.btDbvtNode* %76, %struct.btDbvtNode** %57, align 4
+ %77 = getelementptr inbounds %struct.btDbvtProxy* %current.0, i32 0, i32 3 ; [#uses=1]
+ store i32 2, i32* %77, align 4
+ %78 = icmp eq %struct.btDbvtProxy* %41, null ; [#uses=1]
+ br i1 %78, label %bb5, label %bb3
+
+bb5: ; preds = %invcont4
+ %79 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1, i32 3 ; [#uses=1]
+ %80 = load i32* %79, align 4 ; [#uses=1]
+ store i32 %80, i32* %8, align 4
+ %81 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 19 ; [#uses=1]
+ store i8 1, i8* %81, align 2
+ br label %bb7
+
+bb7: ; preds = %bb5, %bb1
+ %82 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider8, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV18btDbvtTreeCollider, i32 0, i32 2), i32 (...)*** %82, align 8
+ %83 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider8, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtBroadphase* %this, %struct.btDbvtBroadphase** %83, align 4
+ %84 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 18 ; [#uses=2]
+ %85 = load i8* %84, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %85, 0 ; [#uses=1]
+ br i1 %toBool, label %bb18, label %bb9
+
+bb9: ; preds = %bb7
+ %86 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1, i32 0 ; [#uses=1]
+ %87 = load %struct.btDbvtNode** %86, align 4 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %89 = load %struct.btDbvtNode** %88, align 4 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider8, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(%struct.btDbvt* %7, %struct.btDbvtNode* %89, %struct.btDbvtNode* %87, %struct.btActionInterface* %90) inlinehint
+ to label %bb11 unwind label %lpad40
+
+bb11: ; preds = %bb9
+ %.pre62 = load i8* %84, align 1 ; [#uses=1]
+ %toBool12 = icmp eq i8 %.pre62, 0 ; [#uses=1]
+ br i1 %toBool12, label %bb18, label %bb13
+
+bb13: ; preds = %bb11
+ %91 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %92 = load %struct.btDbvtNode** %91, align 4 ; [#uses=2]
+ %93 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider8, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(%struct.btDbvt* %7, %struct.btDbvtNode* %92, %struct.btDbvtNode* %92, %struct.btActionInterface* %93) inlinehint
+ to label %bb18 unwind label %lpad40
+
+bb18: ; preds = %bb13, %bb11, %bb7
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV18btDbvtTreeCollider, i32 0, i32 2), i32 (...)*** %82, align 8
+ %94 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 19 ; [#uses=2]
+ %95 = load i8* %94, align 2 ; [#uses=1]
+ %toBool19 = icmp eq i8 %95, 0 ; [#uses=1]
+ br i1 %toBool19, label %bb34, label %bb20
+
+bb20: ; preds = %bb18
+ %96 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 3 ; [#uses=2]
+ %97 = load %struct..0btMultiSapOverlapFilterCallback** %96, align 4 ; [#uses=2]
+ %98 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %97, i32 0, i32 0, i32 0 ; [#uses=1]
+ %99 = load i32 (...)*** %98, align 4 ; [#uses=1]
+ %100 = getelementptr inbounds i32 (...)** %99, i32 7 ; [#uses=1]
+ %101 = load i32 (...)** %100, align 4 ; [#uses=1]
+ %102 = bitcast i32 (...)* %101 to %"struct.btAlignedObjectArray<btBroadphasePair>"* (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %103 = call %"struct.btAlignedObjectArray<btBroadphasePair>"* %102(%struct..0btMultiSapOverlapFilterCallback* %97) ; [#uses=2]
+ %104 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %103, i32 0, i32 1 ; [#uses=3]
+ %105 = load i32* %104, align 4 ; [#uses=5]
+ %106 = icmp sgt i32 %105, 0 ; [#uses=1]
+ br i1 %106, label %bb22, label %bb34
+
+bb22: ; preds = %bb20
+ %107 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 8 ; [#uses=1]
+ %108 = load i32* %107, align 4 ; [#uses=1]
+ %109 = mul nsw i32 %108, %105 ; [#uses=1]
+ %110 = sdiv i32 %109, 100 ; [#uses=2]
+ %111 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 9 ; [#uses=1]
+ %112 = load i32* %111, align 4 ; [#uses=2]
+ %113 = icmp sgt i32 %112, %110 ; [#uses=1]
+ %114 = select i1 %113, i32 %112, i32 %110 ; [#uses=2]
+ %115 = icmp slt i32 %105, %114 ; [#uses=1]
+ %116 = select i1 %115, i32 %105, i32 %114 ; [#uses=3]
+ %117 = icmp sgt i32 %116, 0 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 15 ; [#uses=2]
+ br i1 %117, label %bb.nph, label %bb32
+
+bb.nph: ; preds = %bb22
+ %119 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %103, i32 0, i32 3 ; [#uses=1]
+ br label %bb23
+
+bb23: ; preds = %bb28, %bb.nph
+ %i.160 = phi i32 [ 0, %bb.nph ], [ %174, %bb28 ] ; [#uses=3]
+ %ni.159 = phi i32 [ %116, %bb.nph ], [ %ni.0, %bb28 ] ; [#uses=2]
+ %120 = load i32* %118, align 4 ; [#uses=1]
+ %121 = add nsw i32 %120, %i.160 ; [#uses=1]
+ %122 = load i32* %104, align 4 ; [#uses=1]
+ %123 = srem i32 %121, %122 ; [#uses=2]
+ %124 = load %struct.btBroadphasePair** %119, align 4 ; [#uses=2]
+ %125 = getelementptr inbounds %struct.btBroadphasePair* %124, i32 %123, i32 0 ; [#uses=1]
+ %126 = load %struct.btBroadphaseProxy** %125, align 4 ; [#uses=2]
+ %127 = getelementptr inbounds %struct.btBroadphasePair* %124, i32 %123, i32 1 ; [#uses=1]
+ %128 = load %struct.btBroadphaseProxy** %127, align 4 ; [#uses=2]
+ %129 = getelementptr inbounds %struct.btBroadphaseProxy* %128, i32 1 ; [#uses=1]
+ %130 = bitcast %struct.btBroadphaseProxy* %129 to %struct.btDbvtNode** ; [#uses=1]
+ %131 = load %struct.btDbvtNode** %130, align 4 ; [#uses=6]
+ %132 = getelementptr inbounds %struct.btBroadphaseProxy* %126, i32 1 ; [#uses=1]
+ %133 = bitcast %struct.btBroadphaseProxy* %132 to %struct.btDbvtNode** ; [#uses=1]
+ %134 = load %struct.btDbvtNode** %133, align 4 ; [#uses=6]
+ %135 = getelementptr inbounds %struct.btDbvtNode* %134, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %136 = load float* %135, align 4 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btDbvtNode* %131, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %138 = load float* %137, align 4 ; [#uses=1]
+ %139 = fcmp ugt float %136, %138 ; [#uses=1]
+ br i1 %139, label %bb27, label %bb.i
+
+bb.i: ; preds = %bb23
+ %140 = getelementptr inbounds %struct.btDbvtNode* %134, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ %142 = getelementptr inbounds %struct.btDbvtNode* %131, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %143 = load float* %142, align 4 ; [#uses=1]
+ %144 = fcmp ult float %141, %143 ; [#uses=1]
+ br i1 %144, label %bb27, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %145 = getelementptr inbounds %struct.btDbvtNode* %134, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %146 = load float* %145, align 4 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btDbvtNode* %131, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %148 = load float* %147, align 4 ; [#uses=1]
+ %149 = fcmp ugt float %146, %148 ; [#uses=1]
+ br i1 %149, label %bb27, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %150 = getelementptr inbounds %struct.btDbvtNode* %134, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %151 = load float* %150, align 4 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btDbvtNode* %131, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %153 = load float* %152, align 4 ; [#uses=1]
+ %154 = fcmp ult float %151, %153 ; [#uses=1]
+ br i1 %154, label %bb27, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %155 = getelementptr inbounds %struct.btDbvtNode* %134, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %156 = load float* %155, align 4 ; [#uses=1]
+ %157 = getelementptr inbounds %struct.btDbvtNode* %131, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %158 = load float* %157, align 4 ; [#uses=1]
+ %159 = fcmp ugt float %156, %158 ; [#uses=1]
+ br i1 %159, label %bb27, label %_Z9IntersectRK12btDbvtAabbMmS1_.exit
+
+_Z9IntersectRK12btDbvtAabbMmS1_.exit: ; preds = %bb3.i
+ %160 = getelementptr inbounds %struct.btDbvtNode* %134, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %161 = load float* %160, align 4 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btDbvtNode* %131, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %163 = load float* %162, align 4 ; [#uses=1]
+ %phitmp = fcmp ult float %161, %163 ; [#uses=1]
+ br i1 %phitmp, label %bb27, label %bb28
+
+bb27: ; preds = %_Z9IntersectRK12btDbvtAabbMmS1_.exit, %bb3.i, %bb2.i, %bb1.i, %bb.i, %bb23
+ %164 = load %struct..0btMultiSapOverlapFilterCallback** %96, align 4 ; [#uses=2]
+ %165 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %164, i32 0, i32 0, i32 0 ; [#uses=1]
+ %166 = load i32 (...)*** %165, align 4 ; [#uses=1]
+ %167 = getelementptr inbounds i32 (...)** %166, i32 3 ; [#uses=1]
+ %168 = load i32 (...)** %167, align 4 ; [#uses=1]
+ %169 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %164, i32 0, i32 0 ; [#uses=1]
+ %170 = bitcast i32 (...)* %168 to i8* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %171 = call i8* %170(%struct.btActionInterface* %169, %struct.btBroadphaseProxy* %126, %struct.btBroadphaseProxy* %128, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ %172 = add nsw i32 %ni.159, -1 ; [#uses=1]
+ %173 = add nsw i32 %i.160, -1 ; [#uses=1]
+ br label %bb28
+
+bb28: ; preds = %bb27, %_Z9IntersectRK12btDbvtAabbMmS1_.exit
+ %ni.0 = phi i32 [ %172, %bb27 ], [ %ni.159, %_Z9IntersectRK12btDbvtAabbMmS1_.exit ] ; [#uses=3]
+ %i.0 = phi i32 [ %173, %bb27 ], [ %i.160, %_Z9IntersectRK12btDbvtAabbMmS1_.exit ] ; [#uses=1]
+ %174 = add nsw i32 %i.0, 1 ; [#uses=2]
+ %175 = icmp slt i32 %174, %ni.0 ; [#uses=1]
+ br i1 %175, label %bb23, label %bb30
+
+bb30: ; preds = %bb28
+ %.pre61 = load i32* %104, align 4 ; [#uses=2]
+ %176 = icmp sgt i32 %.pre61, 0 ; [#uses=1]
+ %177 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 15 ; [#uses=2]
+ br i1 %176, label %bb32, label %bb33
+
+bb32: ; preds = %bb30, %bb22
+ %178 = phi i32* [ %177, %bb30 ], [ %118, %bb22 ] ; [#uses=2]
+ %ni.1.lcssa64 = phi i32 [ %ni.0, %bb30 ], [ %116, %bb22 ] ; [#uses=1]
+ %179 = phi i32 [ %.pre61, %bb30 ], [ %105, %bb22 ] ; [#uses=1]
+ %180 = load i32* %178, align 4 ; [#uses=1]
+ %181 = add nsw i32 %180, %ni.1.lcssa64 ; [#uses=1]
+ %182 = srem i32 %181, %179 ; [#uses=1]
+ store i32 %182, i32* %178, align 4
+ br label %bb34
+
+bb33: ; preds = %bb30
+ store i32 0, i32* %177, align 4
+ br label %bb34
+
+bb34: ; preds = %bb33, %bb32, %bb20, %bb18
+ %183 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 14 ; [#uses=2]
+ %184 = load i32* %183, align 4 ; [#uses=1]
+ %185 = add nsw i32 %184, 1 ; [#uses=1]
+ store i32 %185, i32* %183, align 4
+ %186 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 9 ; [#uses=1]
+ store i32 1, i32* %186, align 4
+ store i8 0, i8* %94, align 2
+ %187 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 11 ; [#uses=2]
+ %188 = load i32* %187, align 4 ; [#uses=3]
+ %189 = icmp eq i32 %188, 0 ; [#uses=1]
+ br i1 %189, label %bb36, label %bb35
+
+bb35: ; preds = %bb34
+ %190 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 12 ; [#uses=1]
+ %191 = load i32* %190, align 4 ; [#uses=2]
+ %192 = uitofp i32 %191 to float ; [#uses=1]
+ %193 = uitofp i32 %188 to float ; [#uses=1]
+ %194 = fdiv float %192, %193 ; [#uses=1]
+ %195 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 13 ; [#uses=1]
+ store float %194, float* %195, align 4
+ br label %bb37
+
+bb36: ; preds = %bb34
+ %196 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %196, align 4
+ %.phi.trans.insert = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 12 ; [#uses=1]
+ %.pre = load i32* %.phi.trans.insert, align 4 ; [#uses=1]
+ br label %bb37
+
+bb37: ; preds = %bb36, %bb35
+ %197 = phi i32 [ %.pre, %bb36 ], [ %191, %bb35 ] ; [#uses=1]
+ %198 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 12 ; [#uses=1]
+ %199 = lshr i32 %197, 1 ; [#uses=1]
+ store i32 %199, i32* %198, align 4
+ %200 = lshr i32 %188, 1 ; [#uses=1]
+ store i32 %200, i32* %187, align 4
+ ret void
+
+lpad: ; preds = %invcont, %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select39 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %Unwind
+
+lpad40: ; preds = %bb13, %bb9
+ %eh_ptr41 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select43 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr41, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV18btDbvtTreeCollider, i32 0, i32 2), i32 (...)*** %82, align 8
+ br label %Unwind
+
+Unwind: ; preds = %lpad40, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr41, %lpad40 ], [ %eh_ptr, %lpad ] ; [#uses=1]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN16btDbvtBroadphase22performDeferredRemovalEP12btDispatcher(%struct.btDbvtBroadphase* nocapture %this, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %1 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %2 = alloca %struct.btBroadphasePair, align 8 ; [#uses=5]
+ %3 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 3 ; [#uses=3]
+ %4 = load %struct..0btMultiSapOverlapFilterCallback** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 14 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to i8 (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %10 = call zeroext i8 %9(%struct..0btMultiSapOverlapFilterCallback* %4) ; [#uses=1]
+ %toBool = icmp eq i8 %10, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %11 = load %struct..0btMultiSapOverlapFilterCallback** %3, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %11, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 7 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to %"struct.btAlignedObjectArray<btBroadphasePair>"* (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %17 = call %"struct.btAlignedObjectArray<btBroadphasePair>"* %16(%struct..0btMultiSapOverlapFilterCallback* %11) ; [#uses=5]
+ %18 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %17, i32 0, i32 1 ; [#uses=4]
+ %19 = load i32* %18, align 4 ; [#uses=3]
+ %20 = icmp sgt i32 %19, 1 ; [#uses=1]
+ br i1 %20, label %bb.i, label %bb15.preheader
+
+bb.i: ; preds = %bb
+ %21 = add nsw i32 %19, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %17, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %1, i32 0, i32 %21) nounwind
+ %.pre = load i32* %18, align 4 ; [#uses=1]
+ br label %bb15.preheader
+
+bb15.preheader: ; preds = %bb.i, %bb
+ %22 = phi i32 [ %19, %bb ], [ %.pre, %bb.i ] ; [#uses=2]
+ %23 = icmp sgt i32 %22, 0 ; [#uses=1]
+ br i1 %23, label %bb.nph, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit26
+
+bb.nph: ; preds = %bb15.preheader
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %17, i32 0, i32 3 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb14, %bb.nph
+ %i.041 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb14 ] ; [#uses=5]
+ %invalidPair.140 = phi i32 [ 0, %bb.nph ], [ %invalidPair.0, %bb14 ] ; [#uses=2]
+ %previousPair.1.039 = phi %struct.btBroadphaseProxy* [ null, %bb.nph ], [ %72, %bb14 ] ; [#uses=1]
+ %previousPair.0.038 = phi %struct.btBroadphaseProxy* [ null, %bb.nph ], [ %26, %bb14 ] ; [#uses=1]
+ %tmp = add i32 %i.041, 1 ; [#uses=2]
+ %25 = load %struct.btBroadphasePair** %24, align 4 ; [#uses=4]
+ %scevgep4243 = getelementptr inbounds %struct.btBroadphasePair* %25, i32 %i.041, i32 0 ; [#uses=2]
+ %26 = load %struct.btBroadphaseProxy** %scevgep4243, align 4 ; [#uses=3]
+ %27 = icmp eq %struct.btBroadphaseProxy* %26, %previousPair.0.038 ; [#uses=1]
+ %scevgep52 = getelementptr %struct.btBroadphasePair* %25, i32 %i.041, i32 1 ; [#uses=1]
+ %28 = load %struct.btBroadphaseProxy** %scevgep52, align 4 ; [#uses=10]
+ %phitmp = icmp eq %struct.btBroadphaseProxy* %28, %previousPair.1.039 ; [#uses=1]
+ %or.cond = and i1 %27, %phitmp ; [#uses=1]
+ br i1 %or.cond, label %bb13, label %bb6
+
+bb6: ; preds = %bb1
+ %29 = getelementptr inbounds %struct.btBroadphaseProxy* %28, i32 1 ; [#uses=1]
+ %30 = bitcast %struct.btBroadphaseProxy* %29 to %struct.btDbvtNode** ; [#uses=1]
+ %31 = load %struct.btDbvtNode** %30, align 4 ; [#uses=6]
+ %32 = getelementptr inbounds %struct.btBroadphaseProxy* %26, i32 1 ; [#uses=1]
+ %33 = bitcast %struct.btBroadphaseProxy* %32 to %struct.btDbvtNode** ; [#uses=1]
+ %34 = load %struct.btDbvtNode** %33, align 4 ; [#uses=6]
+ %35 = getelementptr inbounds %struct.btDbvtNode* %34, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btDbvtNode* %31, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fcmp ugt float %36, %38 ; [#uses=1]
+ br i1 %39, label %bb13, label %bb.i28
+
+bb.i28: ; preds = %bb6
+ %40 = getelementptr inbounds %struct.btDbvtNode* %34, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btDbvtNode* %31, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fcmp ult float %41, %43 ; [#uses=1]
+ br i1 %44, label %bb13, label %bb1.i
+
+bb1.i: ; preds = %bb.i28
+ %45 = getelementptr inbounds %struct.btDbvtNode* %34, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btDbvtNode* %31, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = fcmp ugt float %46, %48 ; [#uses=1]
+ br i1 %49, label %bb13, label %bb2.i29
+
+bb2.i29: ; preds = %bb1.i
+ %50 = getelementptr inbounds %struct.btDbvtNode* %34, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btDbvtNode* %31, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ %54 = fcmp ult float %51, %53 ; [#uses=1]
+ br i1 %54, label %bb13, label %bb3.i
+
+bb3.i: ; preds = %bb2.i29
+ %55 = getelementptr inbounds %struct.btDbvtNode* %34, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btDbvtNode* %31, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = fcmp ugt float %56, %58 ; [#uses=1]
+ br i1 %59, label %bb13, label %_Z9IntersectRK12btDbvtAabbMmS1_.exit
+
+_Z9IntersectRK12btDbvtAabbMmS1_.exit: ; preds = %bb3.i
+ %60 = getelementptr inbounds %struct.btDbvtNode* %34, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btDbvtNode* %31, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ %phitmp37 = fcmp ult float %61, %63 ; [#uses=1]
+ br i1 %phitmp37, label %bb13, label %bb14
+
+bb13: ; preds = %_Z9IntersectRK12btDbvtAabbMmS1_.exit, %bb3.i, %bb2.i29, %bb1.i, %bb.i28, %bb6, %bb1
+ %64 = phi %struct.btBroadphaseProxy* [ %28, %_Z9IntersectRK12btDbvtAabbMmS1_.exit ], [ %28, %bb3.i ], [ %28, %bb2.i29 ], [ %28, %bb1.i ], [ %28, %bb.i28 ], [ %28, %bb6 ], [ %28, %bb1 ] ; [#uses=1]
+ %65 = load %struct..0btMultiSapOverlapFilterCallback** %3, align 4 ; [#uses=2]
+ %66 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %65, i32 0, i32 0, i32 0 ; [#uses=1]
+ %67 = load i32 (...)*** %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds i32 (...)** %67, i32 8 ; [#uses=1]
+ %69 = load i32 (...)** %68, align 4 ; [#uses=1]
+ %70 = bitcast i32 (...)* %69 to void (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphasePair*, %struct.btActionInterface*)* ; [#uses=1]
+ %scevgep = getelementptr %struct.btBroadphasePair* %25, i32 %i.041 ; [#uses=1]
+ call void %70(%struct..0btMultiSapOverlapFilterCallback* %65, %struct.btBroadphasePair* %scevgep, %struct.btActionInterface* %dispatcher)
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %scevgep4243, align 4
+ %scevgep48 = getelementptr %struct.btBroadphasePair* %25, i32 %i.041, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %scevgep48, align 4
+ %71 = add nsw i32 %invalidPair.140, 1 ; [#uses=1]
+ br label %bb14
+
+bb14: ; preds = %bb13, %_Z9IntersectRK12btDbvtAabbMmS1_.exit
+ %72 = phi %struct.btBroadphaseProxy* [ %64, %bb13 ], [ %28, %_Z9IntersectRK12btDbvtAabbMmS1_.exit ] ; [#uses=1]
+ %invalidPair.0 = phi i32 [ %71, %bb13 ], [ %invalidPair.140, %_Z9IntersectRK12btDbvtAabbMmS1_.exit ] ; [#uses=3]
+ %73 = load i32* %18, align 4 ; [#uses=4]
+ %74 = icmp sgt i32 %73, %tmp ; [#uses=1]
+ br i1 %74, label %bb1, label %bb17
+
+bb17: ; preds = %bb14
+ %75 = icmp sgt i32 %73, 1 ; [#uses=1]
+ br i1 %75, label %bb.i24, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit26
+
+bb.i24: ; preds = %bb17
+ %76 = add nsw i32 %73, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %17, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 0, i32 %76) nounwind
+ %.pre56 = load i32* %18, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit26
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit26: ; preds = %bb.i24, %bb17, %bb15.preheader
+ %invalidPair.1.lcssa57 = phi i32 [ %invalidPair.0, %bb17 ], [ %invalidPair.0, %bb.i24 ], [ 0, %bb15.preheader ] ; [#uses=1]
+ %77 = phi i32 [ %73, %bb17 ], [ %.pre56, %bb.i24 ], [ %22, %bb15.preheader ] ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %78, align 8
+ %79 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %79, align 4
+ %80 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %80, align 8
+ %81 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i8* null, i8** %81, align 4
+ %82 = sub nsw i32 %77, %invalidPair.1.lcssa57 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(%"struct.btAlignedObjectArray<btBroadphasePair>"* %17, i32 %82, %struct.btBroadphasePair* %2) inlinehint
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btDbvtBroadphase25calculateOverlappingPairsEP12btDispatcher(%struct.btDbvtBroadphase* %this, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ tail call void @_ZN16btDbvtBroadphase7collideEP12btDispatcher(%struct.btDbvtBroadphase* %this, %struct.btActionInterface* %dispatcher)
+ tail call void @_ZN16btDbvtBroadphase22performDeferredRemovalEP12btDispatcher(%struct.btDbvtBroadphase* %this, %struct.btActionInterface* %dispatcher)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btDbvtBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher(%struct.btDbvtBroadphase* %this, %struct.btBroadphaseProxy* %absproxy, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1, i32 4 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 2 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1 ; [#uses=1]
+ %4 = bitcast %struct.btBroadphaseProxy* %3 to %struct.btDbvtNode** ; [#uses=1]
+ %5 = load %struct.btDbvtNode** %4, align 4 ; [#uses=2]
+ br i1 %2, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ tail call void @_ZN6btDbvt6removeEP10btDbvtNode(%struct.btDbvt* %6, %struct.btDbvtNode* %5)
+ br label %bb2
+
+bb1: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ tail call void @_ZN6btDbvt6removeEP10btDbvtNode(%struct.btDbvt* %7, %struct.btDbvtNode* %5)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %8 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1, i32 1 ; [#uses=1]
+ %9 = bitcast i16* %8 to %struct.btDbvtProxy** ; [#uses=2]
+ %10 = load %struct.btDbvtProxy** %9, align 4 ; [#uses=2]
+ %11 = icmp eq %struct.btDbvtProxy* %10, null ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1, i32 3 ; [#uses=2]
+ %13 = load i8** %12, align 4 ; [#uses=1]
+ %14 = bitcast i8* %13 to %struct.btDbvtProxy* ; [#uses=2]
+ br i1 %11, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %bb2
+ %15 = getelementptr inbounds %struct.btDbvtProxy* %10, i32 0, i32 2, i32 1 ; [#uses=1]
+ store %struct.btDbvtProxy* %14, %struct.btDbvtProxy** %15, align 4
+ br label %bb2.i
+
+bb1.i: ; preds = %bb2
+ %16 = load i32* %0, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 %16 ; [#uses=1]
+ store %struct.btDbvtProxy* %14, %struct.btDbvtProxy** %17, align 4
+ br label %bb2.i
+
+bb2.i: ; preds = %bb1.i, %bb.i
+ %18 = load i8** %12, align 4 ; [#uses=2]
+ %19 = icmp eq i8* %18, null ; [#uses=1]
+ br i1 %19, label %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %20 = load %struct.btDbvtProxy** %9, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds i8* %18, i32 52 ; [#uses=1]
+ %22 = bitcast i8* %21 to %struct.btDbvtProxy** ; [#uses=1]
+ store %struct.btDbvtProxy* %20, %struct.btDbvtProxy** %22, align 4
+ br label %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit
+
+_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit: ; preds = %bb3.i, %bb2.i
+ %23 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 3 ; [#uses=1]
+ %24 = load %struct..0btMultiSapOverlapFilterCallback** %23, align 4 ; [#uses=2]
+ %25 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %24, i32 0, i32 0, i32 0 ; [#uses=1]
+ %26 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds i32 (...)** %26, i32 4 ; [#uses=1]
+ %28 = load i32 (...)** %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %24, i32 0, i32 0 ; [#uses=1]
+ %30 = bitcast i32 (...)* %28 to void (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %30(%struct.btActionInterface* %29, %struct.btBroadphaseProxy* %absproxy, %struct.btActionInterface* %dispatcher)
+ %31 = bitcast %struct.btBroadphaseProxy* %absproxy to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %31)
+ %32 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 19 ; [#uses=1]
+ store i8 1, i8* %32, align 2
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btDbvtBroadphase18setAabbForceUpdateEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher(%struct.btDbvtBroadphase* %this, %struct.btBroadphaseProxy* %absproxy, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, %struct.btActionInterface* nocapture %unnamed_arg) align 2 {
+entry:
+ %aabb = alloca %struct.GIM_AABB, align 8 ; [#uses=10]
+ %collider = alloca %struct.btDbvtTreeCollider, align 8 ; [#uses=3]
+ %0 = bitcast %struct.btBroadphaseProxy* %absproxy to %struct.btDbvtProxy* ; [#uses=2]
+ %1 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=2]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %1, align 8
+ %4 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=2]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=2]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 8
+ %10 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=2]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 8
+ %16 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 8
+ %22 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1, i32 4 ; [#uses=3]
+ %26 = load i32* %25, align 4 ; [#uses=1]
+ %27 = icmp eq i32 %26, 2 ; [#uses=1]
+ br i1 %27, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %28 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1 ; [#uses=1]
+ %29 = bitcast %struct.btBroadphaseProxy* %28 to %struct.btDbvtNode** ; [#uses=1]
+ %30 = load %struct.btDbvtNode** %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ call void @_ZN6btDbvt6removeEP10btDbvtNode(%struct.btDbvt* %31, %struct.btDbvtNode* %30)
+ %32 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %33 = bitcast %struct.btBroadphaseProxy* %absproxy to i8* ; [#uses=1]
+ %34 = call %struct.btDbvtNode* @_ZN6btDbvt6insertERK12btDbvtAabbMmPv(%struct.btDbvt* %32, %struct.GIM_AABB* %aabb, i8* %33) ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1, i32 0 ; [#uses=1]
+ %.c = bitcast %struct.btDbvtNode* %34 to i8* ; [#uses=1]
+ store i8* %.c, i8** %35, align 4
+ br label %bb2
+
+bb1: ; preds = %entry
+ %36 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 11 ; [#uses=2]
+ %37 = load i32* %36, align 4 ; [#uses=1]
+ %38 = add i32 %37, 1 ; [#uses=1]
+ store i32 %38, i32* %36, align 4
+ %39 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1 ; [#uses=1]
+ %40 = bitcast %struct.btBroadphaseProxy* %39 to %struct.btDbvtNode** ; [#uses=1]
+ %41 = load %struct.btDbvtNode** %40, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ call void @_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm(%struct.btDbvt* %42, %struct.btDbvtNode* %41, %struct.GIM_AABB* %aabb)
+ %43 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 12 ; [#uses=2]
+ %44 = load i32* %43, align 4 ; [#uses=1]
+ %45 = add i32 %44, 1 ; [#uses=1]
+ store i32 %45, i32* %43, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %46 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1, i32 1 ; [#uses=1]
+ %47 = bitcast i16* %46 to %struct.btDbvtProxy** ; [#uses=3]
+ %48 = load %struct.btDbvtProxy** %47, align 4 ; [#uses=2]
+ %49 = icmp eq %struct.btDbvtProxy* %48, null ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1, i32 3 ; [#uses=3]
+ %51 = load i8** %50, align 4 ; [#uses=1]
+ %52 = bitcast i8* %51 to %struct.btDbvtProxy* ; [#uses=2]
+ br i1 %49, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %bb2
+ %53 = getelementptr inbounds %struct.btDbvtProxy* %48, i32 0, i32 2, i32 1 ; [#uses=1]
+ store %struct.btDbvtProxy* %52, %struct.btDbvtProxy** %53, align 4
+ br label %bb2.i
+
+bb1.i: ; preds = %bb2
+ %54 = load i32* %25, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 %54 ; [#uses=1]
+ store %struct.btDbvtProxy* %52, %struct.btDbvtProxy** %55, align 4
+ br label %bb2.i
+
+bb2.i: ; preds = %bb1.i, %bb.i
+ %56 = load i8** %50, align 4 ; [#uses=2]
+ %57 = icmp eq i8* %56, null ; [#uses=1]
+ br i1 %57, label %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %58 = load %struct.btDbvtProxy** %47, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds i8* %56, i32 52 ; [#uses=1]
+ %60 = bitcast i8* %59 to %struct.btDbvtProxy** ; [#uses=1]
+ store %struct.btDbvtProxy* %58, %struct.btDbvtProxy** %60, align 4
+ br label %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit
+
+_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit: ; preds = %bb3.i, %bb2.i
+ %61 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %62 = load float* %2, align 4 ; [#uses=1]
+ store float %62, float* %61, align 4
+ %63 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %64 = load float* %5, align 4 ; [#uses=1]
+ store float %64, float* %63, align 4
+ %65 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %66 = load float* %8, align 4 ; [#uses=1]
+ store float %66, float* %65, align 4
+ %67 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %68 = load float* %11, align 4 ; [#uses=1]
+ store float %68, float* %67, align 4
+ %69 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %70 = load float* %14, align 4 ; [#uses=1]
+ store float %70, float* %69, align 4
+ %71 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %72 = load float* %17, align 4 ; [#uses=1]
+ store float %72, float* %71, align 4
+ %73 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %74 = load float* %20, align 4 ; [#uses=1]
+ store float %74, float* %73, align 4
+ %75 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %76 = load float* %23, align 4 ; [#uses=1]
+ store float %76, float* %75, align 4
+ %77 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 5 ; [#uses=2]
+ %78 = load i32* %77, align 4 ; [#uses=1]
+ store i32 %78, i32* %25, align 4
+ %79 = load i32* %77, align 4 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 %79 ; [#uses=3]
+ store %struct.btDbvtProxy* null, %struct.btDbvtProxy** %47, align 4
+ %81 = load %struct.btDbvtProxy** %80, align 4 ; [#uses=1]
+ %.c18 = bitcast %struct.btDbvtProxy* %81 to i8* ; [#uses=1]
+ store i8* %.c18, i8** %50, align 4
+ %82 = load %struct.btDbvtProxy** %80, align 4 ; [#uses=2]
+ %83 = icmp eq %struct.btDbvtProxy* %82, null ; [#uses=1]
+ br i1 %83, label %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit, label %bb.i16
+
+bb.i16: ; preds = %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit
+ %84 = getelementptr inbounds %struct.btDbvtProxy* %82, i32 0, i32 2, i32 0 ; [#uses=1]
+ store %struct.btDbvtProxy* %0, %struct.btDbvtProxy** %84, align 4
+ br label %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit
+
+_Z10listappendI11btDbvtProxyEvPT_RS2_.exit: ; preds = %bb.i16, %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit
+ store %struct.btDbvtProxy* %0, %struct.btDbvtProxy** %80, align 4
+ %85 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 19 ; [#uses=1]
+ store i8 1, i8* %85, align 2
+ %86 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 18 ; [#uses=1]
+ %87 = load i8* %86, align 1 ; [#uses=1]
+ %toBool4not = icmp eq i8 %87, 0 ; [#uses=1]
+ br i1 %toBool4not, label %bb8, label %bb11
+
+bb8: ; preds = %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit
+ %88 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV18btDbvtTreeCollider, i32 0, i32 2), i32 (...)*** %88, align 8
+ %89 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtBroadphase* %this, %struct.btDbvtBroadphase** %89, align 4
+ %90 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1 ; [#uses=1]
+ %91 = bitcast %struct.btBroadphaseProxy* %90 to %struct.btDbvtNode** ; [#uses=2]
+ %92 = load %struct.btDbvtNode** %91, align 4 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1, i32 0 ; [#uses=1]
+ %94 = load %struct.btDbvtNode** %93, align 4 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider, i32 0, i32 0 ; [#uses=2]
+ invoke void @_ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(%struct.btDbvt* %95, %struct.btDbvtNode* %94, %struct.btDbvtNode* %92, %struct.btActionInterface* %96) inlinehint
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb8
+ %97 = load %struct.btDbvtNode** %91, align 4 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %99 = load %struct.btDbvtNode** %98, align 4 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ invoke void @_ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(%struct.btDbvt* %100, %struct.btDbvtNode* %99, %struct.btDbvtNode* %97, %struct.btActionInterface* %96) inlinehint
+ to label %bb11 unwind label %lpad
+
+bb11: ; preds = %invcont, %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit
+ ret void
+
+lpad: ; preds = %invcont, %bb8
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select14 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV18btDbvtTreeCollider, i32 0, i32 2), i32 (...)*** %88, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN16btDbvtBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher(%struct.btDbvtBroadphase* %this, %struct.btBroadphaseProxy* %absproxy, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, %struct.btActionInterface* nocapture %unnamed_arg) align 2 {
+entry:
+ %aabb = alloca %struct.GIM_AABB, align 8 ; [#uses=11]
+ %velocity = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %collider = alloca %struct.btDbvtTreeCollider, align 8 ; [#uses=3]
+ %0 = bitcast %struct.btBroadphaseProxy* %absproxy to %struct.btDbvtProxy* ; [#uses=2]
+ %1 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=3]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ store float %3, float* %1, align 8
+ %4 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=3]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=3]
+ %9 = load float* %8, align 4 ; [#uses=2]
+ store float %9, float* %7, align 8
+ %10 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=2]
+ %15 = load float* %14, align 4 ; [#uses=2]
+ store float %15, float* %13, align 8
+ %16 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=2]
+ store float %21, float* %19, align 8
+ %22 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1, i32 4 ; [#uses=3]
+ %26 = load i32* %25, align 4 ; [#uses=1]
+ %27 = icmp eq i32 %26, 2 ; [#uses=1]
+ br i1 %27, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %28 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1 ; [#uses=1]
+ %29 = bitcast %struct.btBroadphaseProxy* %28 to %struct.btDbvtNode** ; [#uses=1]
+ %30 = load %struct.btDbvtNode** %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ call void @_ZN6btDbvt6removeEP10btDbvtNode(%struct.btDbvt* %31, %struct.btDbvtNode* %30)
+ %32 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %33 = bitcast %struct.btBroadphaseProxy* %absproxy to i8* ; [#uses=1]
+ %34 = call %struct.btDbvtNode* @_ZN6btDbvt6insertERK12btDbvtAabbMmPv(%struct.btDbvt* %32, %struct.GIM_AABB* %aabb, i8* %33) ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1, i32 0 ; [#uses=1]
+ %.c = bitcast %struct.btDbvtNode* %34 to i8* ; [#uses=1]
+ store i8* %.c, i8** %35, align 4
+ br label %bb15
+
+bb1: ; preds = %entry
+ %36 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 11 ; [#uses=2]
+ %37 = load i32* %36, align 4 ; [#uses=1]
+ %38 = add i32 %37, 1 ; [#uses=1]
+ store i32 %38, i32* %36, align 4
+ %39 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1 ; [#uses=1]
+ %40 = bitcast %struct.btBroadphaseProxy* %39 to %struct.btDbvtNode** ; [#uses=1]
+ %41 = load %struct.btDbvtNode** %40, align 4 ; [#uses=8]
+ %42 = getelementptr inbounds %struct.btDbvtNode* %41, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fcmp ugt float %43, %15 ; [#uses=1]
+ br i1 %44, label %bb14, label %bb.i
+
+bb.i: ; preds = %bb1
+ %45 = getelementptr inbounds %struct.btDbvtNode* %41, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fcmp ult float %46, %3 ; [#uses=1]
+ br i1 %47, label %bb14, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %48 = getelementptr inbounds %struct.btDbvtNode* %41, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fcmp ugt float %49, %18 ; [#uses=1]
+ br i1 %50, label %bb14, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %51 = getelementptr inbounds %struct.btDbvtNode* %41, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = fcmp ult float %52, %6 ; [#uses=1]
+ br i1 %53, label %bb14, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %54 = getelementptr inbounds %struct.btDbvtNode* %41, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fcmp ugt float %55, %21 ; [#uses=1]
+ br i1 %56, label %bb14, label %_Z9IntersectRK12btDbvtAabbMmS1_.exit
+
+_Z9IntersectRK12btDbvtAabbMmS1_.exit: ; preds = %bb3.i
+ %57 = getelementptr inbounds %struct.btDbvtNode* %41, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %phitmp = fcmp ult float %58, %9 ; [#uses=1]
+ br i1 %phitmp, label %bb14, label %bb2
+
+bb2: ; preds = %_Z9IntersectRK12btDbvtAabbMmS1_.exit
+ %59 = load float* %8, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=2]
+ %62 = fsub float %59, %61 ; [#uses=1]
+ %63 = load float* %5, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=2]
+ %66 = fsub float %63, %65 ; [#uses=1]
+ %67 = load float* %2, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=2]
+ %70 = fsub float %67, %69 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 4 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ %74 = fsub float %73, %61 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ %77 = fsub float %76, %65 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = fsub float %79, %69 ; [#uses=1]
+ %81 = fmul float %74, 5.000000e-01 ; [#uses=1]
+ %82 = fmul float %77, 5.000000e-01 ; [#uses=1]
+ %83 = fmul float %80, 5.000000e-01 ; [#uses=1]
+ %84 = load float* %71, align 4 ; [#uses=3]
+ %85 = fmul float %81, %84 ; [#uses=2]
+ %86 = fmul float %82, %84 ; [#uses=2]
+ %87 = fmul float %83, %84 ; [#uses=2]
+ %88 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %87, float* %88, align 8
+ %89 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %86, float* %89, align 4
+ %90 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %85, float* %90, align 8
+ %91 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %91, align 4
+ %92 = fcmp olt float %70, 0.000000e+00 ; [#uses=1]
+ br i1 %92, label %bb4, label %bb5
+
+bb4: ; preds = %bb2
+ %93 = fsub float -0.000000e+00, %87 ; [#uses=1]
+ store float %93, float* %88, align 8
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb2
+ %94 = fcmp olt float %66, 0.000000e+00 ; [#uses=1]
+ br i1 %94, label %bb7, label %bb8
+
+bb7: ; preds = %bb5
+ %95 = fsub float -0.000000e+00, %86 ; [#uses=1]
+ store float %95, float* %89, align 4
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb5
+ %96 = fcmp olt float %62, 0.000000e+00 ; [#uses=1]
+ br i1 %96, label %bb10, label %bb11
+
+bb10: ; preds = %bb8
+ %97 = fsub float -0.000000e+00, %85 ; [#uses=1]
+ store float %97, float* %90, align 8
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb8
+ %98 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %99 = call zeroext i8 @_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMmRK9btVector3f(%struct.btDbvt* %98, %struct.btDbvtNode* %41, %struct.GIM_AABB* %aabb, %struct.btQuadWord* %velocity, float 0x3FA99999A0000000) ; [#uses=1]
+ %toBool12 = icmp eq i8 %99, 0 ; [#uses=1]
+ br i1 %toBool12, label %bb15, label %bb13
+
+bb13: ; preds = %bb11
+ %100 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 12 ; [#uses=2]
+ %101 = load i32* %100, align 4 ; [#uses=1]
+ %102 = add i32 %101, 1 ; [#uses=1]
+ store i32 %102, i32* %100, align 4
+ br label %bb15
+
+bb14: ; preds = %_Z9IntersectRK12btDbvtAabbMmS1_.exit, %bb3.i, %bb2.i, %bb1.i, %bb.i, %bb1
+ %103 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ call void @_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm(%struct.btDbvt* %103, %struct.btDbvtNode* %41, %struct.GIM_AABB* %aabb)
+ %104 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 12 ; [#uses=2]
+ %105 = load i32* %104, align 4 ; [#uses=1]
+ %106 = add i32 %105, 1 ; [#uses=1]
+ store i32 %106, i32* %104, align 4
+ br label %bb15
+
+bb15: ; preds = %bb14, %bb13, %bb11, %bb
+ %docollide.0 = phi i1 [ true, %bb ], [ true, %bb13 ], [ false, %bb11 ], [ true, %bb14 ] ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1, i32 1 ; [#uses=1]
+ %108 = bitcast i16* %107 to %struct.btDbvtProxy** ; [#uses=3]
+ %109 = load %struct.btDbvtProxy** %108, align 4 ; [#uses=2]
+ %110 = icmp eq %struct.btDbvtProxy* %109, null ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1, i32 3 ; [#uses=3]
+ %112 = load i8** %111, align 4 ; [#uses=1]
+ %113 = bitcast i8* %112 to %struct.btDbvtProxy* ; [#uses=2]
+ br i1 %110, label %bb1.i33, label %bb.i32
+
+bb.i32: ; preds = %bb15
+ %114 = getelementptr inbounds %struct.btDbvtProxy* %109, i32 0, i32 2, i32 1 ; [#uses=1]
+ store %struct.btDbvtProxy* %113, %struct.btDbvtProxy** %114, align 4
+ br label %bb2.i34
+
+bb1.i33: ; preds = %bb15
+ %115 = load i32* %25, align 4 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 %115 ; [#uses=1]
+ store %struct.btDbvtProxy* %113, %struct.btDbvtProxy** %116, align 4
+ br label %bb2.i34
+
+bb2.i34: ; preds = %bb1.i33, %bb.i32
+ %117 = load i8** %111, align 4 ; [#uses=2]
+ %118 = icmp eq i8* %117, null ; [#uses=1]
+ br i1 %118, label %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit, label %bb3.i35
+
+bb3.i35: ; preds = %bb2.i34
+ %119 = load %struct.btDbvtProxy** %108, align 4 ; [#uses=1]
+ %120 = getelementptr inbounds i8* %117, i32 52 ; [#uses=1]
+ %121 = bitcast i8* %120 to %struct.btDbvtProxy** ; [#uses=1]
+ store %struct.btDbvtProxy* %119, %struct.btDbvtProxy** %121, align 4
+ br label %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit
+
+_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit: ; preds = %bb3.i35, %bb2.i34
+ %122 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %123 = load float* %2, align 4 ; [#uses=1]
+ store float %123, float* %122, align 4
+ %124 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %125 = load float* %5, align 4 ; [#uses=1]
+ store float %125, float* %124, align 4
+ %126 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %127 = load float* %8, align 4 ; [#uses=1]
+ store float %127, float* %126, align 4
+ %128 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %129 = load float* %11, align 4 ; [#uses=1]
+ store float %129, float* %128, align 4
+ %130 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %131 = load float* %14, align 4 ; [#uses=1]
+ store float %131, float* %130, align 4
+ %132 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %133 = load float* %17, align 4 ; [#uses=1]
+ store float %133, float* %132, align 4
+ %134 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %135 = load float* %20, align 4 ; [#uses=1]
+ store float %135, float* %134, align 4
+ %136 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %137 = load float* %23, align 4 ; [#uses=1]
+ store float %137, float* %136, align 4
+ %138 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 5 ; [#uses=2]
+ %139 = load i32* %138, align 4 ; [#uses=1]
+ store i32 %139, i32* %25, align 4
+ %140 = load i32* %138, align 4 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 %140 ; [#uses=3]
+ store %struct.btDbvtProxy* null, %struct.btDbvtProxy** %108, align 4
+ %142 = load %struct.btDbvtProxy** %141, align 4 ; [#uses=1]
+ %.c48 = bitcast %struct.btDbvtProxy* %142 to i8* ; [#uses=1]
+ store i8* %.c48, i8** %111, align 4
+ %143 = load %struct.btDbvtProxy** %141, align 4 ; [#uses=2]
+ %144 = icmp eq %struct.btDbvtProxy* %143, null ; [#uses=1]
+ br i1 %144, label %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit, label %bb.i30
+
+bb.i30: ; preds = %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit
+ %145 = getelementptr inbounds %struct.btDbvtProxy* %143, i32 0, i32 2, i32 0 ; [#uses=1]
+ store %struct.btDbvtProxy* %0, %struct.btDbvtProxy** %145, align 4
+ br label %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit
+
+_Z10listappendI11btDbvtProxyEvPT_RS2_.exit: ; preds = %bb.i30, %_Z10listremoveI11btDbvtProxyEvPT_RS2_.exit
+ store %struct.btDbvtProxy* %0, %struct.btDbvtProxy** %141, align 4
+ br i1 %docollide.0, label %bb17, label %bb25
+
+bb17: ; preds = %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit
+ %146 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 19 ; [#uses=1]
+ store i8 1, i8* %146, align 2
+ %147 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 18 ; [#uses=1]
+ %148 = load i8* %147, align 1 ; [#uses=1]
+ %toBool18not = icmp eq i8 %148, 0 ; [#uses=1]
+ br i1 %toBool18not, label %bb22, label %bb25
+
+bb22: ; preds = %bb17
+ %149 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV18btDbvtTreeCollider, i32 0, i32 2), i32 (...)*** %149, align 8
+ %150 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtBroadphase* %this, %struct.btDbvtBroadphase** %150, align 4
+ %151 = getelementptr inbounds %struct.btBroadphaseProxy* %absproxy, i32 1 ; [#uses=1]
+ %152 = bitcast %struct.btBroadphaseProxy* %151 to %struct.btDbvtNode** ; [#uses=2]
+ %153 = load %struct.btDbvtNode** %152, align 4 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1, i32 0 ; [#uses=1]
+ %155 = load %struct.btDbvtNode** %154, align 4 ; [#uses=1]
+ %156 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %157 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider, i32 0, i32 0 ; [#uses=2]
+ invoke void @_ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(%struct.btDbvt* %156, %struct.btDbvtNode* %155, %struct.btDbvtNode* %153, %struct.btActionInterface* %157) inlinehint
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb22
+ %158 = load %struct.btDbvtNode** %152, align 4 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %160 = load %struct.btDbvtNode** %159, align 4 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ invoke void @_ZN6btDbvt24collideTTpersistentStackEPK10btDbvtNodeS2_RNS_8ICollideE(%struct.btDbvt* %161, %struct.btDbvtNode* %160, %struct.btDbvtNode* %158, %struct.btActionInterface* %157) inlinehint
+ to label %bb25 unwind label %lpad
+
+bb25: ; preds = %invcont, %bb17, %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit
+ ret void
+
+lpad: ; preds = %invcont, %bb22
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select28 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV18btDbvtTreeCollider, i32 0, i32 2), i32 (...)*** %149, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=5]
+define linkonce_odr void @_ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(%struct.btDbvt* nocapture %this, %struct.btDbvtNode* %root, %struct.GIM_AABB* nocapture %vol, %struct.btActionInterface* %policy) inlinehint align 2 {
+entry:
+ %0 = icmp eq %struct.btDbvtNode* %root, null ; [#uses=1]
+ br i1 %0, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeED1Ev.exit59, label %bb.i
+
+bb.i: ; preds = %entry
+ %1 = getelementptr inbounds %struct.GIM_AABB* %vol, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.GIM_AABB* %vol, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.GIM_AABB* %vol, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.GIM_AABB* %vol, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.GIM_AABB* %vol, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.GIM_AABB* %vol, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = invoke i8* @_Z22btAlignedAllocInternalji(i32 256, i32 16)
+ to label %bb1.i unwind label %lpad.thread134 ; [#uses=2]
+
+lpad.thread134: ; preds = %bb.i
+ %eh_ptr135 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select19136 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr135, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %invcont14
+
+bb1.i: ; preds = %bb.i
+ %phitmp.i = bitcast i8* %13 to %struct.btDbvtNode** ; [#uses=2]
+ %14 = icmp eq i8* %13, null ; [#uses=1]
+ br i1 %14, label %bb3.preheader, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %struct.btDbvtNode* %root, %struct.btDbvtNode** %phitmp.i, align 4
+ br label %bb3.preheader
+
+bb3.preheader: ; preds = %bb2.i, %bb1.i
+ %15 = getelementptr inbounds %struct.btActionInterface* %policy, i32 0, i32 0 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb11, %bb3.preheader
+ %stack.1.1 = phi i32 [ 1, %bb3.preheader ], [ %stack.1.0, %bb11 ] ; [#uses=8]
+ %stack.2.2 = phi i32 [ 64, %bb3.preheader ], [ %stack.2.1, %bb11 ] ; [#uses=11]
+ %stack.3.3 = phi %struct.btDbvtNode** [ %phitmp.i, %bb3.preheader ], [ %stack.3.1, %bb11 ] ; [#uses=16]
+ %16 = add nsw i32 %stack.1.1, -1 ; [#uses=14]
+ %17 = getelementptr inbounds %struct.btDbvtNode** %stack.3.3, i32 %16 ; [#uses=1]
+ %18 = load %struct.btDbvtNode** %17, align 4 ; [#uses=9]
+ %19 = getelementptr inbounds %struct.btDbvtNode* %18, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fcmp ugt float %20, %8 ; [#uses=1]
+ br i1 %21, label %bb11, label %bb.i60
+
+bb.i60: ; preds = %bb3
+ %22 = getelementptr inbounds %struct.btDbvtNode* %18, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fcmp ult float %23, %2 ; [#uses=1]
+ br i1 %24, label %bb11, label %bb1.i61
+
+bb1.i61: ; preds = %bb.i60
+ %25 = getelementptr inbounds %struct.btDbvtNode* %18, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = fcmp ugt float %26, %10 ; [#uses=1]
+ br i1 %27, label %bb11, label %bb2.i62
+
+bb2.i62: ; preds = %bb1.i61
+ %28 = getelementptr inbounds %struct.btDbvtNode* %18, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = fcmp ult float %29, %4 ; [#uses=1]
+ br i1 %30, label %bb11, label %bb3.i63
+
+bb3.i63: ; preds = %bb2.i62
+ %31 = getelementptr inbounds %struct.btDbvtNode* %18, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fcmp ugt float %32, %12 ; [#uses=1]
+ br i1 %33, label %bb11, label %_Z9IntersectRK12btDbvtAabbMmS1_.exit
+
+_Z9IntersectRK12btDbvtAabbMmS1_.exit: ; preds = %bb3.i63
+ %34 = getelementptr inbounds %struct.btDbvtNode* %18, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %phitmp = fcmp ult float %35, %6 ; [#uses=1]
+ br i1 %phitmp, label %bb11, label %bb4
+
+bb4: ; preds = %_Z9IntersectRK12btDbvtAabbMmS1_.exit
+ %36 = getelementptr inbounds %struct.btDbvtNode* %18, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %37 = load %struct.btDbvtNode** %36, align 4 ; [#uses=1]
+ %toBoolnot.i = icmp eq %struct.btDbvtNode* %37, null ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb9, label %bb6
+
+bb6: ; preds = %bb4
+ %38 = getelementptr inbounds %struct.btDbvtNode* %18, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %39 = load %struct.btDbvtNode** %38, align 4 ; [#uses=1]
+ %40 = icmp eq i32 %stack.2.2, %16 ; [#uses=1]
+ br i1 %40, label %bb.i96, label %bb1.i118
+
+bb.i96: ; preds = %bb6
+ %41 = icmp eq i32 %16, 0 ; [#uses=1]
+ %42 = shl i32 %16, 1 ; [#uses=1]
+ %iftmp.288.0.i.i95 = select i1 %41, i32 1, i32 %42 ; [#uses=5]
+ %43 = icmp slt i32 %stack.2.2, %iftmp.288.0.i.i95 ; [#uses=1]
+ br i1 %43, label %bb.i.i97, label %bb1.i118
+
+bb.i.i97: ; preds = %bb.i96
+ %44 = icmp eq i32 %iftmp.288.0.i.i95, 0 ; [#uses=1]
+ br i1 %44, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i101, label %bb.i2.i.i100
+
+bb.i2.i.i100: ; preds = %bb.i.i97
+ %45 = shl i32 %iftmp.288.0.i.i95, 2 ; [#uses=1]
+ %46 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %45, i32 16)
+ to label %.noexc122 unwind label %lpad ; [#uses=1]
+
+.noexc122: ; preds = %bb.i2.i.i100
+ %phitmp.i.i98 = bitcast i8* %46 to %struct.btDbvtNode** ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i101
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i101: ; preds = %.noexc122, %bb.i.i97
+ %47 = phi %struct.btDbvtNode** [ %phitmp.i.i98, %.noexc122 ], [ null, %bb.i.i97 ] ; [#uses=3]
+ %48 = icmp sgt i32 %16, 0 ; [#uses=1]
+ br i1 %48, label %bb.i4.i.i105, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i111
+
+bb.i4.i.i105: ; preds = %bb3.i.i.i110, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i101
+ %indvar.i.i.i103 = phi i32 [ %indvar.next.i.i.i108, %bb3.i.i.i110 ], [ 0, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i101 ] ; [#uses=3]
+ %scevgep.i.i.i104 = getelementptr %struct.btDbvtNode** %47, i32 %indvar.i.i.i103 ; [#uses=2]
+ %49 = icmp eq %struct.btDbvtNode** %scevgep.i.i.i104, null ; [#uses=1]
+ br i1 %49, label %bb3.i.i.i110, label %bb1.i5.i.i107
+
+bb1.i5.i.i107: ; preds = %bb.i4.i.i105
+ %scevgep8.i.i.i106 = getelementptr %struct.btDbvtNode** %stack.3.3, i32 %indvar.i.i.i103 ; [#uses=1]
+ %50 = load %struct.btDbvtNode** %scevgep8.i.i.i106, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %50, %struct.btDbvtNode** %scevgep.i.i.i104, align 4
+ br label %bb3.i.i.i110
+
+bb3.i.i.i110: ; preds = %bb1.i5.i.i107, %bb.i4.i.i105
+ %indvar.next.i.i.i108 = add i32 %indvar.i.i.i103, 1 ; [#uses=2]
+ %exitcond137 = icmp eq i32 %indvar.next.i.i.i108, %16 ; [#uses=1]
+ br i1 %exitcond137, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i111, label %bb.i4.i.i105
+
+_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i111: ; preds = %bb3.i.i.i110, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i101
+ %51 = icmp eq %struct.btDbvtNode** %stack.3.3, null ; [#uses=1]
+ br i1 %51, label %bb1.i118, label %bb1.i.i.i114
+
+bb1.i.i.i114: ; preds = %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i111
+ %52 = bitcast %struct.btDbvtNode** %stack.3.3 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %52)
+ to label %bb1.i118 unwind label %lpad.thread
+
+bb1.i118: ; preds = %bb1.i.i.i114, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i111, %bb.i96, %bb6
+ %stack.2.0 = phi i32 [ %stack.2.2, %bb.i96 ], [ %stack.2.2, %bb6 ], [ %iftmp.288.0.i.i95, %bb1.i.i.i114 ], [ %iftmp.288.0.i.i95, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i111 ] ; [#uses=4]
+ %stack.3.0 = phi %struct.btDbvtNode** [ %stack.3.3, %bb.i96 ], [ %stack.3.3, %bb6 ], [ %47, %bb1.i.i.i114 ], [ %47, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i111 ] ; [#uses=8]
+ %53 = getelementptr inbounds %struct.btDbvtNode** %stack.3.0, i32 %16 ; [#uses=2]
+ %54 = icmp eq %struct.btDbvtNode** %53, null ; [#uses=1]
+ br i1 %54, label %invcont7, label %bb2.i120
+
+bb2.i120: ; preds = %bb1.i118
+ store %struct.btDbvtNode* %39, %struct.btDbvtNode** %53, align 4
+ br label %invcont7
+
+invcont7: ; preds = %bb2.i120, %bb1.i118
+ %55 = load %struct.btDbvtNode** %36, align 4 ; [#uses=1]
+ %56 = icmp eq i32 %stack.2.0, %stack.1.1 ; [#uses=1]
+ br i1 %56, label %bb.i66, label %bb1.i88
+
+bb.i66: ; preds = %invcont7
+ %57 = icmp eq i32 %stack.1.1, 0 ; [#uses=1]
+ %58 = shl i32 %stack.1.1, 1 ; [#uses=1]
+ %iftmp.288.0.i.i65 = select i1 %57, i32 1, i32 %58 ; [#uses=5]
+ %59 = icmp slt i32 %stack.2.0, %iftmp.288.0.i.i65 ; [#uses=1]
+ br i1 %59, label %bb.i.i67, label %bb1.i88
+
+bb.i.i67: ; preds = %bb.i66
+ %60 = icmp eq i32 %iftmp.288.0.i.i65, 0 ; [#uses=1]
+ br i1 %60, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i71, label %bb.i2.i.i70
+
+bb.i2.i.i70: ; preds = %bb.i.i67
+ %61 = shl i32 %iftmp.288.0.i.i65, 2 ; [#uses=1]
+ %62 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %61, i32 16)
+ to label %.noexc92 unwind label %lpad ; [#uses=1]
+
+.noexc92: ; preds = %bb.i2.i.i70
+ %phitmp.i.i68 = bitcast i8* %62 to %struct.btDbvtNode** ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i71
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i71: ; preds = %.noexc92, %bb.i.i67
+ %63 = phi %struct.btDbvtNode** [ %phitmp.i.i68, %.noexc92 ], [ null, %bb.i.i67 ] ; [#uses=3]
+ %64 = icmp sgt i32 %stack.1.1, 0 ; [#uses=1]
+ br i1 %64, label %bb.i4.i.i75, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i81
+
+bb.i4.i.i75: ; preds = %bb3.i.i.i80, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i71
+ %indvar.i.i.i73 = phi i32 [ %indvar.next.i.i.i78, %bb3.i.i.i80 ], [ 0, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i71 ] ; [#uses=3]
+ %scevgep.i.i.i74 = getelementptr %struct.btDbvtNode** %63, i32 %indvar.i.i.i73 ; [#uses=2]
+ %65 = icmp eq %struct.btDbvtNode** %scevgep.i.i.i74, null ; [#uses=1]
+ br i1 %65, label %bb3.i.i.i80, label %bb1.i5.i.i77
+
+bb1.i5.i.i77: ; preds = %bb.i4.i.i75
+ %scevgep8.i.i.i76 = getelementptr %struct.btDbvtNode** %stack.3.0, i32 %indvar.i.i.i73 ; [#uses=1]
+ %66 = load %struct.btDbvtNode** %scevgep8.i.i.i76, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %66, %struct.btDbvtNode** %scevgep.i.i.i74, align 4
+ br label %bb3.i.i.i80
+
+bb3.i.i.i80: ; preds = %bb1.i5.i.i77, %bb.i4.i.i75
+ %indvar.next.i.i.i78 = add i32 %indvar.i.i.i73, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i78, %stack.1.1 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i81, label %bb.i4.i.i75
+
+_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i81: ; preds = %bb3.i.i.i80, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i71
+ %67 = icmp eq %struct.btDbvtNode** %stack.3.0, null ; [#uses=1]
+ br i1 %67, label %bb1.i88, label %bb1.i.i.i84
+
+bb1.i.i.i84: ; preds = %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i81
+ %68 = bitcast %struct.btDbvtNode** %stack.3.0 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %68)
+ to label %bb1.i88 unwind label %lpad.thread
+
+bb1.i88: ; preds = %bb1.i.i.i84, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i81, %bb.i66, %invcont7
+ %stack.2.3 = phi i32 [ %stack.2.0, %bb.i66 ], [ %stack.2.0, %invcont7 ], [ %iftmp.288.0.i.i65, %bb1.i.i.i84 ], [ %iftmp.288.0.i.i65, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i81 ] ; [#uses=1]
+ %stack.3.4 = phi %struct.btDbvtNode** [ %stack.3.0, %bb.i66 ], [ %stack.3.0, %invcont7 ], [ %63, %bb1.i.i.i84 ], [ %63, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i81 ] ; [#uses=2]
+ %69 = getelementptr inbounds %struct.btDbvtNode** %stack.3.4, i32 %stack.1.1 ; [#uses=2]
+ %70 = icmp eq %struct.btDbvtNode** %69, null ; [#uses=1]
+ br i1 %70, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE9push_backERKS2_.exit94, label %bb2.i90
+
+bb2.i90: ; preds = %bb1.i88
+ store %struct.btDbvtNode* %55, %struct.btDbvtNode** %69, align 4
+ br label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE9push_backERKS2_.exit94
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeE9push_backERKS2_.exit94: ; preds = %bb2.i90, %bb1.i88
+ %71 = add nsw i32 %stack.1.1, 1 ; [#uses=1]
+ br label %bb11
+
+bb9: ; preds = %bb4
+ %72 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %73 = getelementptr inbounds i32 (...)** %72, i32 3 ; [#uses=1]
+ %74 = load i32 (...)** %73, align 4 ; [#uses=1]
+ %75 = bitcast i32 (...)* %74 to void (%struct.btActionInterface*, %struct.btDbvtNode*)* ; [#uses=1]
+ invoke void %75(%struct.btActionInterface* %policy, %struct.btDbvtNode* %18)
+ to label %bb11 unwind label %lpad
+
+bb11: ; preds = %bb9, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE9push_backERKS2_.exit94, %_Z9IntersectRK12btDbvtAabbMmS1_.exit, %bb3.i63, %bb2.i62, %bb1.i61, %bb.i60, %bb3
+ %stack.1.0 = phi i32 [ %16, %_Z9IntersectRK12btDbvtAabbMmS1_.exit ], [ %16, %bb9 ], [ %71, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE9push_backERKS2_.exit94 ], [ %16, %bb3.i63 ], [ %16, %bb2.i62 ], [ %16, %bb1.i61 ], [ %16, %bb.i60 ], [ %16, %bb3 ] ; [#uses=2]
+ %stack.2.1 = phi i32 [ %stack.2.2, %_Z9IntersectRK12btDbvtAabbMmS1_.exit ], [ %stack.2.2, %bb9 ], [ %stack.2.3, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE9push_backERKS2_.exit94 ], [ %stack.2.2, %bb3.i63 ], [ %stack.2.2, %bb2.i62 ], [ %stack.2.2, %bb1.i61 ], [ %stack.2.2, %bb.i60 ], [ %stack.2.2, %bb3 ] ; [#uses=1]
+ %stack.3.1 = phi %struct.btDbvtNode** [ %stack.3.3, %_Z9IntersectRK12btDbvtAabbMmS1_.exit ], [ %stack.3.3, %bb9 ], [ %stack.3.4, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE9push_backERKS2_.exit94 ], [ %stack.3.3, %bb3.i63 ], [ %stack.3.3, %bb2.i62 ], [ %stack.3.3, %bb1.i61 ], [ %stack.3.3, %bb.i60 ], [ %stack.3.3, %bb3 ] ; [#uses=3]
+ %76 = icmp sgt i32 %stack.1.0, 0 ; [#uses=1]
+ br i1 %76, label %bb3, label %bb16
+
+invcont14: ; preds = %bb1.i.i.i, %lpad, %lpad.thread134
+ %eh_ptr133 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr135, %lpad.thread134 ], [ %eh_ptr132, %bb1.i.i.i ] ; [#uses=1]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr133)
+ unreachable
+
+bb16: ; preds = %bb11
+ %77 = icmp eq %struct.btDbvtNode** %stack.3.1, null ; [#uses=1]
+ br i1 %77, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeED1Ev.exit59, label %bb2.i.i.i58
+
+bb2.i.i.i58: ; preds = %bb16
+ %78 = bitcast %struct.btDbvtNode** %stack.3.1 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %78)
+ ret void
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeED1Ev.exit59: ; preds = %bb16, %entry
+ ret void
+
+lpad.thread: ; preds = %bb1.i.i.i84, %bb1.i.i.i114
+ %stack.3.2.ph = phi %struct.btDbvtNode** [ %stack.3.0, %bb1.i.i.i84 ], [ %stack.3.3, %bb1.i.i.i114 ] ; [#uses=1]
+ %eh_ptr129 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select19130 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr129, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %bb1.i.i.i
+
+lpad: ; preds = %bb9, %bb.i2.i.i70, %bb.i2.i.i100
+ %stack.3.2 = phi %struct.btDbvtNode** [ %stack.3.3, %bb9 ], [ %stack.3.0, %bb.i2.i.i70 ], [ %stack.3.3, %bb.i2.i.i100 ] ; [#uses=2]
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=3]
+ %eh_select19 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %79 = icmp eq %struct.btDbvtNode** %stack.3.2, null ; [#uses=1]
+ br i1 %79, label %invcont14, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %lpad, %lpad.thread
+ %stack.3.2131 = phi %struct.btDbvtNode** [ %stack.3.2.ph, %lpad.thread ], [ %stack.3.2, %lpad ] ; [#uses=1]
+ %eh_ptr132 = phi i8* [ %eh_ptr129, %lpad.thread ], [ %eh_ptr, %lpad ] ; [#uses=1]
+ %80 = bitcast %struct.btDbvtNode** %stack.3.2131 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %80)
+ to label %invcont14 unwind label %lpad20
+
+lpad20: ; preds = %bb1.i.i.i
+ %eh_ptr21 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select23 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr21, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN16btDbvtBroadphase8aabbTestERK9btVector3S2_R24btBroadphaseAabbCallback(%struct.btDbvtBroadphase* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, %struct.btActionInterface* %aabbCallback) align 2 {
+entry:
+ %callback = alloca %struct.BroadphaseAabbTester, align 8 ; [#uses=3]
+ %bounds = alloca %struct.GIM_AABB, align 8 ; [#uses=10]
+ %0 = getelementptr inbounds %struct.BroadphaseAabbTester* %callback, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV20BroadphaseAabbTester, i32 0, i32 2), i32 (...)*** %0, align 8
+ %1 = getelementptr inbounds %struct.BroadphaseAabbTester* %callback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %aabbCallback, %struct.btActionInterface** %1, align 4
+ %2 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 8
+ %5 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 8
+ %11 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 8
+ %17 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 8
+ %23 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %27 = load %struct.btDbvtNode** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.BroadphaseAabbTester* %callback, i32 0, i32 0 ; [#uses=2]
+ invoke void @_ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(%struct.btDbvt* %28, %struct.btDbvtNode* %27, %struct.GIM_AABB* %bounds, %struct.btActionInterface* %29) inlinehint
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %30 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1, i32 0 ; [#uses=1]
+ %31 = load %struct.btDbvtNode** %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ invoke void @_ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(%struct.btDbvt* %32, %struct.btDbvtNode* %31, %struct.GIM_AABB* %bounds, %struct.btActionInterface* %29) inlinehint
+ to label %bb2 unwind label %lpad
+
+bb2: ; preds = %invcont
+ ret void
+
+lpad: ; preds = %invcont, %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select4 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV20BroadphaseAabbTester, i32 0, i32 2), i32 (...)*** %0, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define %struct.btBroadphaseProxy* @_ZN16btDbvtBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3_(%struct.btDbvtBroadphase* %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, i32 %unnamed_arg, i8* %userPtr, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask, %struct.btActionInterface* nocapture %unnamed_arg2, i8* nocapture %unnamed_arg4) align 2 {
+entry:
+ %aabb = alloca %struct.GIM_AABB, align 8 ; [#uses=11]
+ %collider = alloca %struct.btDbvtTreeCollider, align 8 ; [#uses=4]
+ %0 = call i8* @_Z22btAlignedAllocInternalji(i32 64, i32 16) ; [#uses=20]
+ %1 = bitcast i8* %0 to %struct.btDbvtProxy* ; [#uses=3]
+ %2 = bitcast i8* %0 to i8** ; [#uses=1]
+ store i8* %userPtr, i8** %2, align 4
+ %3 = getelementptr inbounds i8* %0, i32 4 ; [#uses=1]
+ %4 = bitcast i8* %3 to i16* ; [#uses=1]
+ store i16 %collisionFilterGroup, i16* %4, align 4
+ %5 = getelementptr inbounds i8* %0, i32 6 ; [#uses=1]
+ %6 = bitcast i8* %5 to i16* ; [#uses=1]
+ store i16 %collisionFilterMask, i16* %6, align 2
+ %7 = getelementptr inbounds i8* %0, i32 16 ; [#uses=1]
+ %8 = bitcast i8* %7 to float* ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=2]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds i8* %0, i32 20 ; [#uses=1]
+ %12 = bitcast i8* %11 to float* ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds i8* %0, i32 24 ; [#uses=1]
+ %16 = bitcast i8* %15 to float* ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds i8* %0, i32 28 ; [#uses=1]
+ %20 = bitcast i8* %19 to float* ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=2]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds i8* %0, i32 32 ; [#uses=1]
+ %24 = bitcast i8* %23 to float* ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=2]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds i8* %0, i32 36 ; [#uses=1]
+ %28 = bitcast i8* %27 to float* ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=2]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds i8* %0, i32 40 ; [#uses=1]
+ %32 = bitcast i8* %31 to float* ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=2]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds i8* %0, i32 44 ; [#uses=1]
+ %36 = bitcast i8* %35 to float* ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=2]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds i8* %0, i32 8 ; [#uses=1]
+ %40 = bitcast i8* %39 to i8** ; [#uses=1]
+ store i8* null, i8** %40, align 4
+ %41 = getelementptr inbounds i8* %0, i32 56 ; [#uses=1]
+ %42 = bitcast i8* %41 to %struct.btDbvtProxy** ; [#uses=2]
+ store %struct.btDbvtProxy* null, %struct.btDbvtProxy** %42, align 4
+ %43 = getelementptr inbounds i8* %0, i32 52 ; [#uses=1]
+ %44 = bitcast i8* %43 to %struct.btDbvtProxy** ; [#uses=2]
+ store %struct.btDbvtProxy* null, %struct.btDbvtProxy** %44, align 4
+ %45 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %9, align 4 ; [#uses=1]
+ store float %46, float* %45, align 8
+ %47 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %48 = load float* %13, align 4 ; [#uses=1]
+ store float %48, float* %47, align 4
+ %49 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %50 = load float* %17, align 4 ; [#uses=1]
+ store float %50, float* %49, align 8
+ %51 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %52 = load float* %21, align 4 ; [#uses=1]
+ store float %52, float* %51, align 4
+ %53 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %54 = load float* %25, align 4 ; [#uses=1]
+ store float %54, float* %53, align 8
+ %55 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %56 = load float* %29, align 4 ; [#uses=1]
+ store float %56, float* %55, align 4
+ %57 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %33, align 4 ; [#uses=1]
+ store float %58, float* %57, align 8
+ %59 = getelementptr inbounds %struct.GIM_AABB* %aabb, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %60 = load float* %37, align 4 ; [#uses=1]
+ store float %60, float* %59, align 4
+ %61 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 5 ; [#uses=2]
+ %62 = load i32* %61, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds i8* %0, i32 60 ; [#uses=1]
+ %64 = bitcast i8* %63 to i32* ; [#uses=1]
+ store i32 %62, i32* %64, align 4
+ %65 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 16 ; [#uses=2]
+ %66 = load i32* %65, align 4 ; [#uses=1]
+ %67 = add nsw i32 %66, 1 ; [#uses=2]
+ store i32 %67, i32* %65, align 4
+ %68 = getelementptr inbounds i8* %0, i32 12 ; [#uses=1]
+ %69 = bitcast i8* %68 to i32* ; [#uses=1]
+ store i32 %67, i32* %69, align 4
+ %70 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=2]
+ %71 = call %struct.btDbvtNode* @_ZN6btDbvt6insertERK12btDbvtAabbMmPv(%struct.btDbvt* %70, %struct.GIM_AABB* %aabb, i8* %0) ; [#uses=1]
+ %72 = getelementptr inbounds i8* %0, i32 48 ; [#uses=1]
+ %73 = bitcast i8* %72 to %struct.btDbvtNode** ; [#uses=1]
+ store %struct.btDbvtNode* %71, %struct.btDbvtNode** %73, align 4
+ %74 = load i32* %61, align 4 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 2, i32 %74 ; [#uses=3]
+ store %struct.btDbvtProxy* null, %struct.btDbvtProxy** %44, align 4
+ %76 = load %struct.btDbvtProxy** %75, align 4 ; [#uses=1]
+ store %struct.btDbvtProxy* %76, %struct.btDbvtProxy** %42, align 4
+ %77 = load %struct.btDbvtProxy** %75, align 4 ; [#uses=2]
+ %78 = icmp eq %struct.btDbvtProxy* %77, null ; [#uses=1]
+ br i1 %78, label %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit, label %bb.i
+
+bb.i: ; preds = %entry
+ %79 = getelementptr inbounds %struct.btDbvtProxy* %77, i32 0, i32 2, i32 0 ; [#uses=1]
+ store %struct.btDbvtProxy* %1, %struct.btDbvtProxy** %79, align 4
+ br label %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit
+
+_Z10listappendI11btDbvtProxyEvPT_RS2_.exit: ; preds = %bb.i, %entry
+ store %struct.btDbvtProxy* %1, %struct.btDbvtProxy** %75, align 4
+ %80 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 18 ; [#uses=1]
+ %81 = load i8* %80, align 1 ; [#uses=1]
+ %toBoolnot = icmp eq i8 %81, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb, label %bb11
+
+bb: ; preds = %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit
+ %82 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV18btDbvtTreeCollider, i32 0, i32 2), i32 (...)*** %82, align 8
+ %83 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDbvtBroadphase* %this, %struct.btDbvtBroadphase** %83, align 4
+ %84 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider, i32 0, i32 2 ; [#uses=1]
+ store %struct.btDbvtProxy* %1, %struct.btDbvtProxy** %84, align 8
+ %85 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %86 = load %struct.btDbvtNode** %85, align 4 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btDbvtTreeCollider* %collider, i32 0, i32 0 ; [#uses=2]
+ invoke void @_ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(%struct.btDbvt* %70, %struct.btDbvtNode* %86, %struct.GIM_AABB* %aabb, %struct.btActionInterface* %87) inlinehint
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %88 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1, i32 0 ; [#uses=1]
+ %89 = load %struct.btDbvtNode** %88, align 4 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ invoke void @_ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(%struct.btDbvt* %90, %struct.btDbvtNode* %89, %struct.GIM_AABB* %aabb, %struct.btActionInterface* %87) inlinehint
+ to label %bb10 unwind label %lpad
+
+bb10: ; preds = %invcont
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV18btDbvtTreeCollider, i32 0, i32 2), i32 (...)*** %82, align 8
+ br label %bb11
+
+bb11: ; preds = %bb10, %_Z10listappendI11btDbvtProxyEvPT_RS2_.exit
+ %91 = bitcast i8* %0 to %struct.btBroadphaseProxy* ; [#uses=1]
+ ret %struct.btBroadphaseProxy* %91
+
+lpad: ; preds = %invcont, %bb
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select14 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV18btDbvtTreeCollider, i32 0, i32 2), i32 (...)*** %82, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZNK6btDbvt15rayTestInternalEPK10btDbvtNodeRK9btVector3S5_S5_PjfS5_S5_RNS_8ICollideE(%struct.btDbvt* nocapture %this, %struct.btDbvtNode* %root, %struct.btQuadWord* nocapture %rayFrom, %struct.btQuadWord* nocapture %rayTo, %struct.btQuadWord* nocapture %rayDirectionInverse, i32* nocapture %signs, float %lambda_max, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, %struct.btActionInterface* %policy) inlinehint align 2 {
+entry:
+ %bounds = alloca [2 x %struct.btQuadWord], align 8 ; [#uses=14]
+ %0 = icmp eq %struct.btDbvtNode* %root, null ; [#uses=1]
+ br i1 %0, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeED1Ev.exit34, label %bb.i.i
+
+bb.i.i: ; preds = %entry
+ %1 = invoke i8* @_Z22btAlignedAllocInternalji(i32 512, i32 16)
+ to label %bb7.i unwind label %lpad.thread ; [#uses=2]
+
+lpad.thread: ; preds = %bb.i.i
+ %eh_ptr82 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select2283 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr82, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %invcont17
+
+bb7.i: ; preds = %bb10.i, %bb.i.i
+ %indvar.i = phi i32 [ %indvar.next.i, %bb10.i ], [ 0, %bb.i.i ] ; [#uses=2]
+ %tmp99 = shl i32 %indvar.i, 2 ; [#uses=1]
+ %scevgep = getelementptr i8* %1, i32 %tmp99 ; [#uses=2]
+ %2 = icmp eq i8* %scevgep, null ; [#uses=1]
+ br i1 %2, label %bb10.i, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ %scevgep18.i = bitcast i8* %scevgep to %struct.btDbvtNode** ; [#uses=1]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %scevgep18.i, align 4
+ br label %bb10.i
+
+bb10.i: ; preds = %bb8.i, %bb7.i
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond98 = icmp eq i32 %indvar.next.i, 128 ; [#uses=1]
+ br i1 %exitcond98, label %bb4.preheader, label %bb7.i
+
+bb4.preheader: ; preds = %bb10.i
+ %phitmp.i.i = bitcast i8* %1 to %struct.btDbvtNode** ; [#uses=2]
+ store %struct.btDbvtNode* %root, %struct.btDbvtNode** %phitmp.i.i, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %15 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %16 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %rayFrom, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %rayDirectionInverse, i32 0, i32 0, i32 0 ; [#uses=1]
+ %19 = getelementptr inbounds i32* %signs, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %rayFrom, i32 0, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %rayDirectionInverse, i32 0, i32 0, i32 1 ; [#uses=1]
+ %22 = getelementptr inbounds i32* %signs, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %rayFrom, i32 0, i32 0, i32 2 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %rayDirectionInverse, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btActionInterface* %policy, i32 0, i32 0 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb13, %bb4.preheader
+ %stack.3.4 = phi %struct.btDbvtNode** [ %phitmp.i.i, %bb4.preheader ], [ %stack.3.3, %bb13 ] ; [#uses=14]
+ %stack.2.4 = phi i32 [ 128, %bb4.preheader ], [ %stack.2.3, %bb13 ] ; [#uses=9]
+ %stack.1.2 = phi i32 [ 128, %bb4.preheader ], [ %stack.1.1, %bb13 ] ; [#uses=13]
+ %depth.0 = phi i32 [ 1, %bb4.preheader ], [ %depth.1, %bb13 ] ; [#uses=3]
+ %treshold.2 = phi i32 [ 126, %bb4.preheader ], [ %treshold.1, %bb13 ] ; [#uses=6]
+ %26 = add nsw i32 %depth.0, -1 ; [#uses=7]
+ %27 = getelementptr inbounds %struct.btDbvtNode** %stack.3.4, i32 %26 ; [#uses=1]
+ %28 = load %struct.btDbvtNode** %27, align 4 ; [#uses=9]
+ %29 = getelementptr inbounds %struct.btDbvtNode* %28, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = load float* %3, align 4 ; [#uses=1]
+ %32 = fsub float %30, %31 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btDbvtNode* %28, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = load float* %4, align 4 ; [#uses=1]
+ %36 = fsub float %34, %35 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btDbvtNode* %28, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = load float* %5, align 4 ; [#uses=1]
+ %40 = fsub float %38, %39 ; [#uses=1]
+ store float %40, float* %6, align 8
+ store float %36, float* %7, align 4
+ store float %32, float* %8, align 8
+ store float 0.000000e+00, float* %9, align 4
+ %41 = getelementptr inbounds %struct.btDbvtNode* %28, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = load float* %10, align 4 ; [#uses=1]
+ %44 = fsub float %42, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btDbvtNode* %28, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = load float* %11, align 4 ; [#uses=1]
+ %48 = fsub float %46, %47 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btDbvtNode* %28, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = load float* %12, align 4 ; [#uses=1]
+ %52 = fsub float %50, %51 ; [#uses=1]
+ store float %52, float* %13, align 8
+ store float %48, float* %14, align 4
+ store float %44, float* %15, align 8
+ store float 0.000000e+00, float* %16, align 4
+ %53 = load i32* %signs, align 4 ; [#uses=2]
+ %54 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %53, i32 0, i32 0 ; [#uses=1]
+ %55 = load float* %54, align 8 ; [#uses=1]
+ %56 = load float* %17, align 4 ; [#uses=2]
+ %57 = fsub float %55, %56 ; [#uses=1]
+ %58 = load float* %18, align 4 ; [#uses=2]
+ %59 = fmul float %57, %58 ; [#uses=3]
+ %60 = sub i32 1, %53 ; [#uses=1]
+ %61 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %60, i32 0, i32 0 ; [#uses=1]
+ %62 = load float* %61, align 8 ; [#uses=1]
+ %63 = fsub float %62, %56 ; [#uses=1]
+ %64 = fmul float %63, %58 ; [#uses=3]
+ %65 = load i32* %19, align 4 ; [#uses=2]
+ %66 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %65, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = load float* %20, align 4 ; [#uses=2]
+ %69 = fsub float %67, %68 ; [#uses=1]
+ %70 = load float* %21, align 4 ; [#uses=2]
+ %71 = fmul float %69, %70 ; [#uses=3]
+ %72 = sub i32 1, %65 ; [#uses=1]
+ %73 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %72, i32 0, i32 1 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = fsub float %74, %68 ; [#uses=1]
+ %76 = fmul float %75, %70 ; [#uses=3]
+ %77 = fcmp ogt float %59, %76 ; [#uses=1]
+ %78 = fcmp ogt float %71, %64 ; [#uses=1]
+ %or.cond.i = or i1 %77, %78 ; [#uses=1]
+ br i1 %or.cond.i, label %bb13, label %bb2.i
+
+bb2.i: ; preds = %bb4
+ %79 = fcmp olt float %59, %71 ; [#uses=1]
+ %80 = select i1 %79, float %71, float %59 ; [#uses=3]
+ %81 = fcmp olt float %76, %64 ; [#uses=1]
+ %tmax.0.i = select i1 %81, float %76, float %64 ; [#uses=3]
+ %82 = load i32* %22, align 4 ; [#uses=2]
+ %83 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %82, i32 0, i32 2 ; [#uses=1]
+ %84 = load float* %83, align 8 ; [#uses=1]
+ %85 = load float* %23, align 4 ; [#uses=2]
+ %86 = fsub float %84, %85 ; [#uses=1]
+ %87 = load float* %24, align 4 ; [#uses=2]
+ %88 = fmul float %86, %87 ; [#uses=3]
+ %89 = sub i32 1, %82 ; [#uses=1]
+ %90 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %89, i32 0, i32 2 ; [#uses=1]
+ %91 = load float* %90, align 8 ; [#uses=1]
+ %92 = fsub float %91, %85 ; [#uses=1]
+ %93 = fmul float %92, %87 ; [#uses=3]
+ %94 = fcmp ogt float %80, %93 ; [#uses=1]
+ %95 = fcmp ogt float %88, %tmax.0.i ; [#uses=1]
+ %or.cond21.i = or i1 %94, %95 ; [#uses=1]
+ br i1 %or.cond21.i, label %bb13, label %bb9.i
+
+bb9.i: ; preds = %bb2.i
+ %96 = fcmp olt float %80, %88 ; [#uses=1]
+ %97 = select i1 %96, float %88, float %80 ; [#uses=1]
+ %98 = fcmp olt float %93, %tmax.0.i ; [#uses=1]
+ %tmax.1.i = select i1 %98, float %93, float %tmax.0.i ; [#uses=1]
+ %99 = fcmp uge float %97, %lambda_max ; [#uses=1]
+ %100 = fcmp ule float %tmax.1.i, 0.000000e+00 ; [#uses=1]
+ %or.cond22.i = or i1 %99, %100 ; [#uses=1]
+ br i1 %or.cond22.i, label %bb13, label %bb6
+
+bb6: ; preds = %bb9.i
+ %101 = getelementptr inbounds %struct.btDbvtNode* %28, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %102 = load %struct.btDbvtNode** %101, align 4 ; [#uses=1]
+ %toBoolnot.i = icmp eq %struct.btDbvtNode* %102, null ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb11, label %bb7
+
+bb7: ; preds = %bb6
+ %103 = icmp sgt i32 %26, %treshold.2 ; [#uses=1]
+ br i1 %103, label %bb8, label %bb10
+
+bb8: ; preds = %bb7
+ %104 = shl i32 %stack.1.2, 1 ; [#uses=8]
+ %105 = icmp sgt i32 %stack.1.2, %104 ; [#uses=1]
+ br i1 %105, label %invcont9, label %bb3.i41
+
+bb3.i41: ; preds = %bb8
+ %106 = icmp slt i32 %stack.1.2, %104 ; [#uses=2]
+ br i1 %106, label %bb4.i42, label %invcont9
+
+bb4.i42: ; preds = %bb3.i41
+ %107 = icmp slt i32 %stack.2.4, %104 ; [#uses=1]
+ br i1 %107, label %bb.i.i43, label %bb.nph.i63
+
+bb.i.i43: ; preds = %bb4.i42
+ %108 = icmp eq i32 %104, 0 ; [#uses=1]
+ br i1 %108, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i46, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i43
+ %109 = shl i32 %stack.1.2, 3 ; [#uses=1]
+ %110 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %109, i32 16)
+ to label %.noexc72 unwind label %lpad ; [#uses=1]
+
+.noexc72: ; preds = %bb.i2.i.i
+ %phitmp.i.i44 = bitcast i8* %110 to %struct.btDbvtNode** ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i46
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i46: ; preds = %.noexc72, %bb.i.i43
+ %111 = phi %struct.btDbvtNode** [ %phitmp.i.i44, %.noexc72 ], [ null, %bb.i.i43 ] ; [#uses=3]
+ %112 = icmp sgt i32 %stack.1.2, 0 ; [#uses=1]
+ br i1 %112, label %bb.i4.i.i50, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i56
+
+bb.i4.i.i50: ; preds = %bb3.i.i.i55, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i46
+ %indvar.i.i.i48 = phi i32 [ %indvar.next.i.i.i53, %bb3.i.i.i55 ], [ 0, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i46 ] ; [#uses=3]
+ %scevgep.i.i.i49 = getelementptr %struct.btDbvtNode** %111, i32 %indvar.i.i.i48 ; [#uses=2]
+ %113 = icmp eq %struct.btDbvtNode** %scevgep.i.i.i49, null ; [#uses=1]
+ br i1 %113, label %bb3.i.i.i55, label %bb1.i5.i.i52
+
+bb1.i5.i.i52: ; preds = %bb.i4.i.i50
+ %scevgep8.i.i.i51 = getelementptr %struct.btDbvtNode** %stack.3.4, i32 %indvar.i.i.i48 ; [#uses=1]
+ %114 = load %struct.btDbvtNode** %scevgep8.i.i.i51, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %114, %struct.btDbvtNode** %scevgep.i.i.i49, align 4
+ br label %bb3.i.i.i55
+
+bb3.i.i.i55: ; preds = %bb1.i5.i.i52, %bb.i4.i.i50
+ %indvar.next.i.i.i53 = add i32 %indvar.i.i.i48, 1 ; [#uses=2]
+ %exitcond93 = icmp eq i32 %indvar.next.i.i.i53, %stack.1.2 ; [#uses=1]
+ br i1 %exitcond93, label %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i56, label %bb.i4.i.i50
+
+_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i56: ; preds = %bb3.i.i.i55, %_ZN20btAlignedObjectArrayIPK10btDbvtNodeE8allocateEi.exit.i.i46
+ %115 = icmp eq %struct.btDbvtNode** %stack.3.4, null ; [#uses=1]
+ br i1 %115, label %bb11.preheader.i61, label %bb1.i.i.i59
+
+bb1.i.i.i59: ; preds = %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i56
+ %116 = bitcast %struct.btDbvtNode** %stack.3.4 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %116)
+ to label %bb11.preheader.i61 unwind label %lpad.thread85
+
+lpad.thread85: ; preds = %bb1.i.i.i59
+ %eh_ptr86 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select2287 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr86, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %bb1.i.i.i
+
+bb11.preheader.i61: ; preds = %bb1.i.i.i59, %_ZNK20btAlignedObjectArrayIPK10btDbvtNodeE4copyEiiPS2_.exit.i.i56
+ br i1 %106, label %bb.nph.i63, label %invcont9
+
+bb.nph.i63: ; preds = %bb11.preheader.i61, %bb4.i42
+ %stack.3.0 = phi %struct.btDbvtNode** [ %111, %bb11.preheader.i61 ], [ %stack.3.4, %bb4.i42 ] ; [#uses=2]
+ %stack.2.0 = phi i32 [ %104, %bb11.preheader.i61 ], [ %stack.2.4, %bb4.i42 ] ; [#uses=1]
+ br label %bb7.i67
+
+bb7.i67: ; preds = %bb10.i71, %bb.nph.i63
+ %indvar.i64 = phi i32 [ 0, %bb.nph.i63 ], [ %indvar.next.i69, %bb10.i71 ] ; [#uses=2]
+ %tmp = add i32 %stack.1.2, %indvar.i64 ; [#uses=1]
+ %scevgep18.i66 = getelementptr %struct.btDbvtNode** %stack.3.0, i32 %tmp ; [#uses=2]
+ %117 = icmp eq %struct.btDbvtNode** %scevgep18.i66, null ; [#uses=1]
+ br i1 %117, label %bb10.i71, label %bb8.i68
+
+bb8.i68: ; preds = %bb7.i67
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %scevgep18.i66, align 4
+ br label %bb10.i71
+
+bb10.i71: ; preds = %bb8.i68, %bb7.i67
+ %indvar.next.i69 = add i32 %indvar.i64, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i69, %stack.1.2 ; [#uses=1]
+ br i1 %exitcond, label %invcont9, label %bb7.i67
+
+invcont9: ; preds = %bb10.i71, %bb11.preheader.i61, %bb3.i41, %bb8
+ %stack.2.1 = phi i32 [ %stack.2.4, %bb8 ], [ %104, %bb11.preheader.i61 ], [ %stack.2.4, %bb3.i41 ], [ %stack.2.0, %bb10.i71 ] ; [#uses=1]
+ %stack.3.1 = phi %struct.btDbvtNode** [ %stack.3.4, %bb8 ], [ %111, %bb11.preheader.i61 ], [ %stack.3.4, %bb3.i41 ], [ %stack.3.0, %bb10.i71 ] ; [#uses=1]
+ %118 = add nsw i32 %104, -2 ; [#uses=1]
+ br label %bb10
+
+bb10: ; preds = %invcont9, %bb7
+ %stack.3.2 = phi %struct.btDbvtNode** [ %stack.3.1, %invcont9 ], [ %stack.3.4, %bb7 ] ; [#uses=3]
+ %stack.2.2 = phi i32 [ %stack.2.1, %invcont9 ], [ %stack.2.4, %bb7 ] ; [#uses=1]
+ %stack.1.0 = phi i32 [ %104, %invcont9 ], [ %stack.1.2, %bb7 ] ; [#uses=1]
+ %treshold.0 = phi i32 [ %118, %invcont9 ], [ %treshold.2, %bb7 ] ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btDbvtNode** %stack.3.2, i32 %26 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btDbvtNode* %28, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %121 = load %struct.btDbvtNode** %120, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %121, %struct.btDbvtNode** %119, align 4
+ %122 = add nsw i32 %depth.0, 1 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btDbvtNode** %stack.3.2, i32 %depth.0 ; [#uses=1]
+ %124 = load %struct.btDbvtNode** %101, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %124, %struct.btDbvtNode** %123, align 4
+ br label %bb13
+
+bb11: ; preds = %bb6
+ %125 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %126 = getelementptr inbounds i32 (...)** %125, i32 3 ; [#uses=1]
+ %127 = load i32 (...)** %126, align 4 ; [#uses=1]
+ %128 = bitcast i32 (...)* %127 to void (%struct.btActionInterface*, %struct.btDbvtNode*)* ; [#uses=1]
+ invoke void %128(%struct.btActionInterface* %policy, %struct.btDbvtNode* %28)
+ to label %bb13 unwind label %lpad
+
+bb13: ; preds = %bb11, %bb10, %bb9.i, %bb2.i, %bb4
+ %stack.3.3 = phi %struct.btDbvtNode** [ %stack.3.4, %bb9.i ], [ %stack.3.4, %bb11 ], [ %stack.3.2, %bb10 ], [ %stack.3.4, %bb2.i ], [ %stack.3.4, %bb4 ] ; [#uses=3]
+ %stack.2.3 = phi i32 [ %stack.2.4, %bb9.i ], [ %stack.2.4, %bb11 ], [ %stack.2.2, %bb10 ], [ %stack.2.4, %bb2.i ], [ %stack.2.4, %bb4 ] ; [#uses=1]
+ %stack.1.1 = phi i32 [ %stack.1.2, %bb9.i ], [ %stack.1.2, %bb11 ], [ %stack.1.0, %bb10 ], [ %stack.1.2, %bb2.i ], [ %stack.1.2, %bb4 ] ; [#uses=1]
+ %depth.1 = phi i32 [ %26, %bb9.i ], [ %26, %bb11 ], [ %122, %bb10 ], [ %26, %bb2.i ], [ %26, %bb4 ] ; [#uses=2]
+ %treshold.1 = phi i32 [ %treshold.2, %bb9.i ], [ %treshold.2, %bb11 ], [ %treshold.0, %bb10 ], [ %treshold.2, %bb2.i ], [ %treshold.2, %bb4 ] ; [#uses=1]
+ %129 = icmp eq i32 %depth.1, 0 ; [#uses=1]
+ br i1 %129, label %bb19, label %bb4
+
+invcont17: ; preds = %bb1.i.i.i, %lpad, %lpad.thread
+ %eh_ptr84 = phi i8* [ %eh_ptr82, %lpad.thread ], [ %eh_ptr, %lpad ], [ %eh_ptr88, %bb1.i.i.i ] ; [#uses=1]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr84)
+ unreachable
+
+bb19: ; preds = %bb13
+ %130 = icmp eq %struct.btDbvtNode** %stack.3.3, null ; [#uses=1]
+ br i1 %130, label %_ZN20btAlignedObjectArrayIPK10btDbvtNodeED1Ev.exit34, label %bb2.i.i.i33
+
+bb2.i.i.i33: ; preds = %bb19
+ %131 = bitcast %struct.btDbvtNode** %stack.3.3 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %131)
+ ret void
+
+_ZN20btAlignedObjectArrayIPK10btDbvtNodeED1Ev.exit34: ; preds = %bb19, %entry
+ ret void
+
+lpad: ; preds = %bb11, %bb.i2.i.i
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=3]
+ %eh_select22 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %132 = icmp eq %struct.btDbvtNode** %stack.3.4, null ; [#uses=1]
+ br i1 %132, label %invcont17, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %lpad, %lpad.thread85
+ %eh_ptr88 = phi i8* [ %eh_ptr86, %lpad.thread85 ], [ %eh_ptr, %lpad ] ; [#uses=1]
+ %133 = bitcast %struct.btDbvtNode** %stack.3.4 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %133)
+ to label %invcont17 unwind label %lpad23
+
+lpad23: ; preds = %bb1.i.i.i
+ %eh_ptr24 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select26 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr24, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN16btDbvtBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2_(%struct.btDbvtBroadphase* nocapture %this, %struct.btQuadWord* nocapture %rayFrom, %struct.btQuadWord* nocapture %rayTo, %struct.btBroadphaseRayCallback* %rayCallback, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %callback = alloca %struct.BroadphaseRayTester, align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.BroadphaseRayTester* %callback, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV19BroadphaseRayTester, i32 0, i32 2), i32 (...)*** %0, align 8
+ %1 = getelementptr inbounds %struct.BroadphaseRayTester* %callback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseRayCallback* %rayCallback, %struct.btBroadphaseRayCallback** %1, align 4
+ %2 = getelementptr inbounds %struct.btBroadphaseRayCallback* %rayCallback, i32 0, i32 3 ; [#uses=2]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBroadphaseRayCallback* %rayCallback, i32 0, i32 2, i32 0 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btBroadphaseRayCallback* %rayCallback, i32 0, i32 1 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = load %struct.btDbvtNode** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.BroadphaseRayTester* %callback, i32 0, i32 0 ; [#uses=2]
+ invoke void @_ZNK6btDbvt15rayTestInternalEPK10btDbvtNodeRK9btVector3S5_S5_PjfS5_S5_RNS_8ICollideE(%struct.btDbvt* %8, %struct.btDbvtNode* %7, %struct.btQuadWord* %rayFrom, %struct.btQuadWord* %rayTo, %struct.btQuadWord* %5, i32* %4, float %3, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %9) inlinehint
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %10 = load float* %2, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1, i32 0 ; [#uses=1]
+ %12 = load %struct.btDbvtNode** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ invoke void @_ZNK6btDbvt15rayTestInternalEPK10btDbvtNodeRK9btVector3S5_S5_PjfS5_S5_RNS_8ICollideE(%struct.btDbvt* %13, %struct.btDbvtNode* %12, %struct.btQuadWord* %rayFrom, %struct.btQuadWord* %rayTo, %struct.btQuadWord* %5, i32* %4, float %10, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %9) inlinehint
+ to label %bb2 unwind label %lpad
+
+bb2: ; preds = %invcont
+ ret void
+
+lpad: ; preds = %invcont, %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select4 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV19BroadphaseRayTester, i32 0, i32 2), i32 (...)*** %0, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN16btDbvtBroadphaseD0Ev(%struct.btDbvtBroadphase* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV16btDbvtBroadphase, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 17 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb9, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 3 ; [#uses=2]
+ %4 = load %struct..0btMultiSapOverlapFilterCallback** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ invoke void %8(%struct..0btMultiSapOverlapFilterCallback* %4)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %9 = load %struct..0btMultiSapOverlapFilterCallback** %3, align 4 ; [#uses=1]
+ %10 = bitcast %struct..0btMultiSapOverlapFilterCallback* %9 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %10)
+ to label %bb9 unwind label %lpad
+
+bb4: ; preds = %lpad, %bb5
+ %indvar = phi i32 [ %indvar.next, %bb5 ], [ 0, %lpad ] ; [#uses=3]
+ %scevgep32.idx = mul i32 %indvar, -40 ; [#uses=1]
+ %11 = icmp eq i32 %scevgep32.idx, -80 ; [#uses=1]
+ br i1 %11, label %bb7, label %bb5
+
+bb5: ; preds = %bb4
+ %tmp30 = sub i32 1, %indvar ; [#uses=1]
+ %scevgep = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 %tmp30 ; [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ invoke void @_ZN6btDbvtD1Ev(%struct.btDbvt* %scevgep)
+ to label %bb4 unwind label %lpad23
+
+bb7: ; preds = %lpad, %bb4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb9: ; preds = %invcont, %entry
+ %12 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1 ; [#uses=2]
+ %13 = icmp eq [2 x %struct.btDbvt]* %12, null ; [#uses=1]
+ br i1 %13, label %bb19, label %bb10
+
+bb10: ; preds = %bb9
+ %14 = getelementptr inbounds [2 x %struct.btDbvt]* %12, i32 1, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %16 = icmp eq %struct.btDbvt* %14, %15 ; [#uses=1]
+ br i1 %16, label %bb19, label %bb16
+
+bb16: ; preds = %bb16, %bb10
+ %indvar34 = phi i32 [ %indvar.next35, %bb16 ], [ 0, %bb10 ] ; [#uses=2]
+ %tmp37 = sub i32 1, %indvar34 ; [#uses=1]
+ %scevgep38 = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 %tmp37 ; [#uses=1]
+ tail call void @_ZN6btDbvtD1Ev(%struct.btDbvt* %scevgep38)
+ %indvar.next35 = add i32 %indvar34, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next35, 2 ; [#uses=1]
+ br i1 %exitcond, label %bb19, label %bb16
+
+bb19: ; preds = %bb16, %bb10, %bb9
+ %17 = bitcast %struct.btDbvtBroadphase* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %17) nounwind
+ ret void
+
+lpad: ; preds = %invcont, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select22 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %18 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1 ; [#uses=1]
+ %19 = icmp eq [2 x %struct.btDbvt]* %18, null ; [#uses=1]
+ br i1 %19, label %bb7, label %bb4
+
+lpad23: ; preds = %bb5
+ %eh_ptr24 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select26 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr24, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN16btDbvtBroadphaseD1Ev(%struct.btDbvtBroadphase* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV16btDbvtBroadphase, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 17 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb9, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 3 ; [#uses=2]
+ %4 = load %struct..0btMultiSapOverlapFilterCallback** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ invoke void %8(%struct..0btMultiSapOverlapFilterCallback* %4)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %9 = load %struct..0btMultiSapOverlapFilterCallback** %3, align 4 ; [#uses=1]
+ %10 = bitcast %struct..0btMultiSapOverlapFilterCallback* %9 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %10)
+ to label %bb9 unwind label %lpad
+
+bb4: ; preds = %lpad, %bb5
+ %indvar = phi i32 [ %indvar.next, %bb5 ], [ 0, %lpad ] ; [#uses=3]
+ %scevgep32.idx = mul i32 %indvar, -40 ; [#uses=1]
+ %11 = icmp eq i32 %scevgep32.idx, -80 ; [#uses=1]
+ br i1 %11, label %bb7, label %bb5
+
+bb5: ; preds = %bb4
+ %tmp30 = sub i32 1, %indvar ; [#uses=1]
+ %scevgep = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 %tmp30 ; [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ invoke void @_ZN6btDbvtD1Ev(%struct.btDbvt* %scevgep)
+ to label %bb4 unwind label %lpad23
+
+bb7: ; preds = %lpad, %bb4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb9: ; preds = %invcont, %entry
+ %12 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1 ; [#uses=2]
+ %13 = icmp eq [2 x %struct.btDbvt]* %12, null ; [#uses=1]
+ br i1 %13, label %return, label %bb10
+
+bb10: ; preds = %bb9
+ %14 = getelementptr inbounds [2 x %struct.btDbvt]* %12, i32 1, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %16 = icmp eq %struct.btDbvt* %14, %15 ; [#uses=1]
+ br i1 %16, label %return, label %bb16
+
+bb16: ; preds = %bb16, %bb10
+ %indvar34 = phi i32 [ %indvar.next35, %bb16 ], [ 0, %bb10 ] ; [#uses=2]
+ %tmp37 = sub i32 1, %indvar34 ; [#uses=1]
+ %scevgep38 = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 %tmp37 ; [#uses=1]
+ tail call void @_ZN6btDbvtD1Ev(%struct.btDbvt* %scevgep38)
+ %indvar.next35 = add i32 %indvar34, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next35, 2 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb16
+
+return: ; preds = %bb16, %bb10, %bb9
+ ret void
+
+lpad: ; preds = %invcont, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select22 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %17 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1 ; [#uses=1]
+ %18 = icmp eq [2 x %struct.btDbvt]* %17, null ; [#uses=1]
+ br i1 %18, label %bb7, label %bb4
+
+lpad23: ; preds = %bb5
+ %eh_ptr24 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select26 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr24, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN16btDbvtBroadphaseD2Ev(%struct.btDbvtBroadphase* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV16btDbvtBroadphase, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 17 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb9, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 3 ; [#uses=2]
+ %4 = load %struct..0btMultiSapOverlapFilterCallback** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ invoke void %8(%struct..0btMultiSapOverlapFilterCallback* %4)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %9 = load %struct..0btMultiSapOverlapFilterCallback** %3, align 4 ; [#uses=1]
+ %10 = bitcast %struct..0btMultiSapOverlapFilterCallback* %9 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %10)
+ to label %bb9 unwind label %lpad
+
+bb4: ; preds = %lpad, %bb5
+ %indvar = phi i32 [ %indvar.next, %bb5 ], [ 0, %lpad ] ; [#uses=3]
+ %scevgep32.idx = mul i32 %indvar, -40 ; [#uses=1]
+ %11 = icmp eq i32 %scevgep32.idx, -80 ; [#uses=1]
+ br i1 %11, label %bb7, label %bb5
+
+bb5: ; preds = %bb4
+ %tmp30 = sub i32 1, %indvar ; [#uses=1]
+ %scevgep = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 %tmp30 ; [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ invoke void @_ZN6btDbvtD1Ev(%struct.btDbvt* %scevgep)
+ to label %bb4 unwind label %lpad23
+
+bb7: ; preds = %lpad, %bb4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb9: ; preds = %invcont, %entry
+ %12 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1 ; [#uses=2]
+ %13 = icmp eq [2 x %struct.btDbvt]* %12, null ; [#uses=1]
+ br i1 %13, label %return, label %bb10
+
+bb10: ; preds = %bb9
+ %14 = getelementptr inbounds [2 x %struct.btDbvt]* %12, i32 1, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %16 = icmp eq %struct.btDbvt* %14, %15 ; [#uses=1]
+ br i1 %16, label %return, label %bb16
+
+bb16: ; preds = %bb16, %bb10
+ %indvar34 = phi i32 [ %indvar.next35, %bb16 ], [ 0, %bb10 ] ; [#uses=2]
+ %tmp37 = sub i32 1, %indvar34 ; [#uses=1]
+ %scevgep38 = getelementptr %struct.btDbvtBroadphase* %this, i32 0, i32 1, i32 %tmp37 ; [#uses=1]
+ tail call void @_ZN6btDbvtD1Ev(%struct.btDbvt* %scevgep38)
+ %indvar.next35 = add i32 %indvar34, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next35, 2 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb16
+
+return: ; preds = %bb16, %bb10, %bb9
+ ret void
+
+lpad: ; preds = %invcont, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select22 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %17 = getelementptr inbounds %struct.btDbvtBroadphase* %this, i32 0, i32 1 ; [#uses=1]
+ %18 = icmp eq [2 x %struct.btDbvt]* %17, null ; [#uses=1]
+ br i1 %18, label %bb7, label %bb4
+
+lpad23: ; preds = %bb5
+ %eh_ptr24 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select26 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr24, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=3]
+define void @_ZN16btDbvtBroadphaseC1EP22btOverlappingPairCache(%struct.btDbvtBroadphase* %this, %struct..0btMultiSapOverlapFilterCallback* %paircache) align 2 {
+entry:
+ tail call void @_ZN16btDbvtBroadphaseC2EP22btOverlappingPairCache(%struct.btDbvtBroadphase* %this, %struct..0btMultiSapOverlapFilterCallback* %paircache)
+ ret void
+}
+
+; [#uses=7]
+define void @_ZN12btDispatcherD2Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV12btDispatcher, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN12btDispatcherD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV12btDispatcher, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN12btDispatcherD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV12btDispatcher, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheEN31btMultiSapOverlapFilterCallbackC2Ev(%struct..0btMultiSapOverlapFilterCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheE31btMultiSapOverlapFilterCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct..0btMultiSapOverlapFilterCallback* @_ZN20btMultiSapBroadphase23getOverlappingPairCacheEv(%struct.btMultiSapBroadphase* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 3 ; [#uses=1]
+ %1 = load %struct..0btMultiSapOverlapFilterCallback** %0, align 4 ; [#uses=1]
+ ret %struct..0btMultiSapOverlapFilterCallback* %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct..0btMultiSapOverlapFilterCallback* @_ZNK20btMultiSapBroadphase23getOverlappingPairCacheEv(%struct.btMultiSapBroadphase* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 3 ; [#uses=1]
+ %1 = load %struct..0btMultiSapOverlapFilterCallback** %0, align 4 ; [#uses=1]
+ ret %struct..0btMultiSapOverlapFilterCallback* %1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK20btMultiSapBroadphase17getBroadphaseAabbER9btVector3S1_(%struct.btMultiSapBroadphase* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ ret void
+}
+
+; [#uses=1]
+define internal zeroext i8 @_ZZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheENK31btMultiSapOverlapFilterCallback23needBroadphaseCollisionEP17btBroadphaseProxyS4_(%struct..0btMultiSapOverlapFilterCallback* nocapture %this, %struct.btBroadphaseProxy* nocapture %childProxy0, %struct.btBroadphaseProxy* nocapture %childProxy1) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %childProxy0, i32 0, i32 3 ; [#uses=1]
+ %1 = load i8** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btBroadphaseProxy* %childProxy1, i32 0, i32 3 ; [#uses=1]
+ %3 = load i8** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds i8* %1, i32 4 ; [#uses=1]
+ %5 = bitcast i8* %4 to i16* ; [#uses=1]
+ %6 = load i16* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i8* %3, i32 6 ; [#uses=1]
+ %8 = bitcast i8* %7 to i16* ; [#uses=1]
+ %9 = load i16* %8, align 2 ; [#uses=1]
+ %10 = and i16 %9, %6 ; [#uses=1]
+ %toBoolnot = icmp eq i16 %10, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %11 = getelementptr inbounds i8* %3, i32 4 ; [#uses=1]
+ %12 = bitcast i8* %11 to i16* ; [#uses=1]
+ %13 = load i16* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i8* %1, i32 6 ; [#uses=1]
+ %15 = bitcast i8* %14 to i16* ; [#uses=1]
+ %16 = load i16* %15, align 2 ; [#uses=1]
+ %17 = and i16 %16, %13 ; [#uses=1]
+ %not. = icmp ne i16 %17, 0 ; [#uses=1]
+ %retval = zext i1 %not. to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb5: ; preds = %entry
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btOverlapFilterCallbackD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btOverlapFilterCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btOverlapFilterCallbackD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btOverlapFilterCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheEN31btMultiSapOverlapFilterCallbackD1Ev(%struct..0btMultiSapOverlapFilterCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheE31btMultiSapOverlapFilterCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheEN31btMultiSapOverlapFilterCallbackD0Ev(%struct..0btMultiSapOverlapFilterCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheE31btMultiSapOverlapFilterCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..0btMultiSapOverlapFilterCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheEN31btMultiSapOverlapFilterCallbackC1Ev(%struct..0btMultiSapOverlapFilterCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheE31btMultiSapOverlapFilterCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN20btMultiSapBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher(%struct.btMultiSapBroadphase* nocapture %this, %struct.btBroadphaseProxy* nocapture %unnamed_arg, %struct.btActionInterface* nocapture %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=0]
+define zeroext i8 @_Z23boxIsContainedWithinBoxRK9btVector3S1_S1_S1_(%struct.btQuadWord* nocapture %amin, %struct.btQuadWord* nocapture %amax, %struct.btQuadWord* nocapture %bmin, %struct.btQuadWord* nocapture %bmax) nounwind readonly {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %amin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %bmin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fcmp ult float %1, %3 ; [#uses=1]
+ br i1 %4, label %bb6, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btQuadWord* %amax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %bmax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fcmp ugt float %6, %8 ; [#uses=1]
+ br i1 %9, label %bb6, label %bb1
+
+bb1: ; preds = %bb
+ %10 = getelementptr inbounds %struct.btQuadWord* %amin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %bmin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fcmp ult float %11, %13 ; [#uses=1]
+ br i1 %14, label %bb6, label %bb2
+
+bb2: ; preds = %bb1
+ %15 = getelementptr inbounds %struct.btQuadWord* %amax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %bmax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fcmp ugt float %16, %18 ; [#uses=1]
+ br i1 %19, label %bb6, label %bb3
+
+bb3: ; preds = %bb2
+ %20 = getelementptr inbounds %struct.btQuadWord* %amin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %bmin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fcmp ult float %21, %23 ; [#uses=1]
+ br i1 %24, label %bb6, label %bb4
+
+bb4: ; preds = %bb3
+ %25 = getelementptr inbounds %struct.btQuadWord* %amax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %bmax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %not. = fcmp ole float %26, %28 ; [#uses=1]
+ %retval = zext i1 %not. to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb6: ; preds = %bb3, %bb2, %bb1, %bb, %entry
+ ret i8 0
+}
+
+; [#uses=1]
+define void @_ZNK20btMultiSapBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3_(%struct.btMultiSapBroadphase* nocapture %this, %struct.btBroadphaseProxy* nocapture %proxy, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 5, i32 0, i32 1 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %0, align 4 ; [#uses=1]
+ store float %2, float* %1, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 5, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 5, i32 0, i32 3 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 5, i32 0, i32 4 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 6, i32 0, i32 1 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %12, align 4 ; [#uses=1]
+ store float %14, float* %13, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 6, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 6, i32 0, i32 3 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 6, i32 0, i32 4 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btNodeOverlapCallbackD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV21btNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btNodeOverlapCallbackD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV21btNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherEN21MyNodeOverlapCallbackD1Ev(%struct..1MyNodeOverlapCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1MyNodeOverlapCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherE21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherEN21MyNodeOverlapCallbackD0Ev(%struct..1MyNodeOverlapCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1MyNodeOverlapCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherE21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..1MyNodeOverlapCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherEN21MyNodeOverlapCallback11processNodeEii(%struct..1MyNodeOverlapCallback* nocapture %this, i32 %unnamed_arg, i32 %broadphaseIndex) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1MyNodeOverlapCallback* %this, i32 0, i32 1 ; [#uses=2]
+ %1 = load %struct.btMultiSapBroadphase** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btMultiSapBroadphase* %1, i32 0, i32 1, i32 3 ; [#uses=1]
+ %3 = load %struct.btActionInterface*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btActionInterface** %3, i32 %broadphaseIndex ; [#uses=1]
+ %5 = load %struct.btActionInterface** %4, align 4 ; [#uses=4]
+ %6 = getelementptr inbounds %struct..1MyNodeOverlapCallback* %this, i32 0, i32 2 ; [#uses=2]
+ %7 = load %"struct.btMultiSapBroadphase::btMultiSapProxy"** %6, align 4 ; [#uses=9]
+ %8 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %7, i32 0, i32 1, i32 1 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ br label %bb3
+
+bb: ; preds = %bb3
+ %10 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %7, i32 0, i32 1, i32 3 ; [#uses=1]
+ %11 = load %"struct.btMultiSapBroadphase::btBridgeProxy"*** %10, align 4 ; [#uses=1]
+ %scevgep = getelementptr %"struct.btMultiSapBroadphase::btBridgeProxy"** %11, i32 %17 ; [#uses=1]
+ %12 = load %"struct.btMultiSapBroadphase::btBridgeProxy"** %scevgep, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btMultiSapBroadphase::btBridgeProxy"* %12, i32 0, i32 1 ; [#uses=1]
+ %14 = load %struct.btActionInterface** %13, align 4 ; [#uses=1]
+ %15 = icmp eq %struct.btActionInterface* %14, %5 ; [#uses=1]
+ br i1 %15, label %bb5, label %bb2
+
+bb2: ; preds = %bb
+ %16 = add nsw i32 %17, 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %entry
+ %17 = phi i32 [ 0, %entry ], [ %16, %bb2 ] ; [#uses=4]
+ %18 = icmp sgt i32 %9, %17 ; [#uses=1]
+ br i1 %18, label %bb, label %bb6
+
+bb5: ; preds = %bb
+ %19 = icmp slt i32 %17, 0 ; [#uses=1]
+ br i1 %19, label %bb6, label %return
+
+bb6: ; preds = %bb5, %bb3
+ %20 = getelementptr inbounds %struct.btActionInterface* %5, i32 0, i32 0 ; [#uses=1]
+ %21 = load i32 (...)*** %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds i32 (...)** %21, i32 2 ; [#uses=1]
+ %23 = load i32 (...)** %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct..1MyNodeOverlapCallback* %this, i32 0, i32 3 ; [#uses=1]
+ %25 = load %struct.btActionInterface** %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %7, i32 0, i32 0, i32 2 ; [#uses=1]
+ %27 = load i16* %26, align 2 ; [#uses=1]
+ %28 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %7, i32 0, i32 0, i32 1 ; [#uses=1]
+ %29 = load i16* %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %7, i32 0, i32 0, i32 0 ; [#uses=1]
+ %31 = load i8** %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %7, i32 0, i32 4 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %7, i32 0, i32 3 ; [#uses=1]
+ %35 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %7, i32 0, i32 2 ; [#uses=1]
+ %36 = bitcast i32 (...)* %23 to %struct.btBroadphaseProxy* (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, i32, i8*, i16, i16, %struct.btActionInterface*, i8*)* ; [#uses=1]
+ %37 = bitcast %"struct.btMultiSapBroadphase::btMultiSapProxy"* %7 to i8* ; [#uses=1]
+ %38 = tail call %struct.btBroadphaseProxy* %36(%struct.btActionInterface* %5, %struct.btQuadWord* %35, %struct.btQuadWord* %34, i32 %33, i8* %31, i16 signext %29, i16 signext %27, %struct.btActionInterface* %25, i8* %37) ; [#uses=1]
+ %39 = load %"struct.btMultiSapBroadphase::btMultiSapProxy"** %6, align 4 ; [#uses=1]
+ %40 = load %struct.btMultiSapBroadphase** %0, align 4 ; [#uses=1]
+ tail call void @_ZN20btMultiSapBroadphase20addToChildBroadphaseEPNS_15btMultiSapProxyEP17btBroadphaseProxyP21btBroadphaseInterface(%struct.btMultiSapBroadphase* %40, %"struct.btMultiSapBroadphase::btMultiSapProxy"* %39, %struct.btBroadphaseProxy* %38, %struct.btActionInterface* %5)
+ ret void
+
+return: ; preds = %bb5
+ ret void
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN20btMultiSapBroadphase15testAabbOverlapEP17btBroadphaseProxyS1_(%struct.btMultiSapBroadphase* nocapture %this, %struct.btBroadphaseProxy* nocapture %childProxy0, %struct.btBroadphaseProxy* nocapture %childProxy1) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %childProxy0, i32 0, i32 3 ; [#uses=1]
+ %1 = load i8** %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %struct.btBroadphaseProxy* %childProxy1, i32 0, i32 3 ; [#uses=1]
+ %3 = load i8** %2, align 4 ; [#uses=6]
+ %4 = getelementptr inbounds i8* %3, i32 84 ; [#uses=1]
+ %5 = getelementptr inbounds i8* %1, i32 68 ; [#uses=1]
+ %6 = bitcast i8* %5 to float* ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = bitcast i8* %4 to float* ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = fcmp ogt float %7, %9 ; [#uses=1]
+ br i1 %10, label %bb2.i, label %bb.i
+
+bb.i: ; preds = %entry
+ %11 = getelementptr inbounds i8* %1, i32 84 ; [#uses=1]
+ %12 = getelementptr inbounds i8* %3, i32 68 ; [#uses=1]
+ %13 = bitcast i8* %11 to float* ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = bitcast i8* %12 to float* ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fcmp olt float %14, %16 ; [#uses=1]
+ br i1 %17, label %bb2.i, label %bb3.i
+
+bb2.i: ; preds = %bb.i, %entry
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb.i
+ %iftmp.123.0.i = phi i8 [ 0, %bb2.i ], [ 1, %bb.i ] ; [#uses=1]
+ %18 = getelementptr inbounds i8* %1, i32 76 ; [#uses=1]
+ %19 = bitcast i8* %18 to float* ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds i8* %3, i32 92 ; [#uses=1]
+ %22 = bitcast i8* %21 to float* ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fcmp ogt float %20, %23 ; [#uses=1]
+ br i1 %24, label %bb6.i, label %bb4.i
+
+bb4.i: ; preds = %bb3.i
+ %25 = getelementptr inbounds i8* %1, i32 92 ; [#uses=1]
+ %26 = bitcast i8* %25 to float* ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds i8* %3, i32 76 ; [#uses=1]
+ %29 = bitcast i8* %28 to float* ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fcmp olt float %27, %30 ; [#uses=1]
+ br i1 %31, label %bb6.i, label %bb7.i
+
+bb6.i: ; preds = %bb4.i, %bb3.i
+ br label %bb7.i
+
+bb7.i: ; preds = %bb6.i, %bb4.i
+ %iftmp.124.0.i = phi i8 [ 0, %bb6.i ], [ %iftmp.123.0.i, %bb4.i ] ; [#uses=1]
+ %32 = getelementptr inbounds i8* %1, i32 72 ; [#uses=1]
+ %33 = bitcast i8* %32 to float* ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds i8* %3, i32 88 ; [#uses=1]
+ %36 = bitcast i8* %35 to float* ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fcmp ogt float %34, %37 ; [#uses=1]
+ br i1 %38, label %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ %39 = getelementptr inbounds i8* %1, i32 88 ; [#uses=1]
+ %40 = bitcast i8* %39 to float* ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds i8* %3, i32 72 ; [#uses=1]
+ %43 = bitcast i8* %42 to float* ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = fcmp olt float %41, %44 ; [#uses=1]
+ %retval.i = select i1 %45, i8 0, i8 %iftmp.124.0.i ; [#uses=1]
+ ret i8 %retval.i
+
+_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit: ; preds = %bb7.i
+ ret i8 0
+}
+
+; [#uses=1]
+define void @_ZN20btMultiSapBroadphase10printStatsEv(%struct.btMultiSapBroadphase* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN20btMultiSapBroadphase9resetPoolEP12btDispatcher(%struct.btMultiSapBroadphase* nocapture %this, %struct.btActionInterface* nocapture %dispatcher) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN20btMultiSapBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2_(%struct.btMultiSapBroadphase* nocapture %this, %struct.btQuadWord* nocapture %rayFrom, %struct.btQuadWord* nocapture %rayTo, %struct.btBroadphaseRayCallback* %rayCallback, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBroadphaseRayCallback* %rayCallback, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btBroadphaseRayCallback* %rayCallback, i32 0, i32 0 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %i.03 = phi i32 [ 0, %bb.nph ], [ %14, %bb ] ; [#uses=2]
+ %6 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 2 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = load %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %4, align 4 ; [#uses=1]
+ %scevgep = getelementptr %"struct.btMultiSapBroadphase::btMultiSapProxy"** %9, i32 %i.03 ; [#uses=1]
+ %10 = load %"struct.btMultiSapBroadphase::btMultiSapProxy"** %scevgep, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %10, i32 0, i32 0 ; [#uses=1]
+ %12 = bitcast i32 (...)* %8 to i8 (%struct.btActionInterface*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %13 = tail call zeroext i8 %12(%struct.btActionInterface* %5, %struct.btBroadphaseProxy* %11) ; [#uses=0]
+ %14 = add nsw i32 %i.03, 1 ; [#uses=2]
+ %15 = load i32* %0, align 4 ; [#uses=1]
+ %16 = icmp sgt i32 %15, %14 ; [#uses=1]
+ br i1 %16, label %bb, label %return
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI37btMultiSapBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* nocapture byval align 4 %CompareFunc, i32 %lo, i32 %hi) nounwind align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %1 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 3 ; [#uses=3]
+ %3 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=3]
+ %4 = add nsw i32 %hi, %lo ; [#uses=1]
+ %5 = sdiv i32 %4, 2 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 %5, i32 0 ; [#uses=1]
+ %7 = load %struct.btBroadphaseProxy** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 %5, i32 1 ; [#uses=1]
+ %9 = load %struct.btBroadphaseProxy** %8, align 4 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 %5, i32 2 ; [#uses=1]
+ %11 = load %struct.btCollisionAlgorithm** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btBroadphaseProxy* %7, null ; [#uses=2]
+ %13 = icmp eq %struct.btBroadphaseProxy* %9, null ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btBroadphaseProxy* %9, i32 0, i32 3 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btBroadphaseProxy* %7, i32 0, i32 3 ; [#uses=2]
+ br label %bb1.outer
+
+bb1.outer: ; preds = %bb7, %entry
+ %i.0.ph = phi i32 [ %lo, %entry ], [ %i.1, %bb7 ] ; [#uses=1]
+ %j.1.ph = phi i32 [ %hi, %entry ], [ %j.2, %bb7 ] ; [#uses=1]
+ %16 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=8]
+ br label %bb1
+
+bb: ; preds = %_ZN37btMultiSapBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit, %bb12.i, %bb11.i
+ %indvar.next44 = add i32 %indvar43, 1 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb, %bb1.outer
+ %indvar43 = phi i32 [ 0, %bb1.outer ], [ %indvar.next44, %bb ] ; [#uses=2]
+ %i.0 = add i32 %i.0.ph, %indvar43 ; [#uses=7]
+ %scevgep46 = getelementptr %struct.btBroadphasePair* %16, i32 %i.0, i32 2 ; [#uses=3]
+ %scevgep47 = getelementptr %struct.btBroadphasePair* %16, i32 %i.0, i32 1 ; [#uses=2]
+ %scevgep4849 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %i.0, i32 0 ; [#uses=2]
+ %17 = load %struct.btBroadphaseProxy** %scevgep4849, align 4 ; [#uses=3]
+ %18 = icmp eq %struct.btBroadphaseProxy* %17, null ; [#uses=1]
+ br i1 %18, label %bb2.i, label %bb.i
+
+bb.i: ; preds = %bb1
+ %19 = getelementptr inbounds %struct.btBroadphaseProxy* %17, i32 0, i32 3 ; [#uses=1]
+ %20 = load i8** %19, align 4 ; [#uses=1]
+ %21 = bitcast i8* %20 to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ br label %bb2.i
+
+bb2.i: ; preds = %bb.i, %bb1
+ %iftmp.170.0.i = phi %"struct.btMultiSapBroadphase::btMultiSapProxy"* [ %21, %bb.i ], [ null, %bb1 ] ; [#uses=3]
+ %22 = load %struct.btBroadphaseProxy** %scevgep47, align 4 ; [#uses=3]
+ %23 = icmp eq %struct.btBroadphaseProxy* %22, null ; [#uses=1]
+ br i1 %23, label %bb5.i, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %24 = getelementptr inbounds %struct.btBroadphaseProxy* %22, i32 0, i32 3 ; [#uses=1]
+ %25 = load i8** %24, align 4 ; [#uses=1]
+ %26 = bitcast i8* %25 to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ br label %bb5.i
+
+bb5.i: ; preds = %bb3.i, %bb2.i
+ %iftmp.171.0.i = phi %"struct.btMultiSapBroadphase::btMultiSapProxy"* [ %26, %bb3.i ], [ null, %bb2.i ] ; [#uses=2]
+ br i1 %12, label %bb8.i, label %bb6.i
+
+bb6.i: ; preds = %bb5.i
+ %27 = load i8** %15, align 4 ; [#uses=1]
+ %28 = bitcast i8* %27 to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ br label %bb8.i
+
+bb8.i: ; preds = %bb6.i, %bb5.i
+ %iftmp.172.0.i = phi %"struct.btMultiSapBroadphase::btMultiSapProxy"* [ %28, %bb6.i ], [ null, %bb5.i ] ; [#uses=3]
+ br i1 %13, label %bb11.i, label %bb9.i
+
+bb9.i: ; preds = %bb8.i
+ %29 = load i8** %14, align 4 ; [#uses=1]
+ %30 = bitcast i8* %29 to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ br label %bb11.i
+
+bb11.i: ; preds = %bb9.i, %bb8.i
+ %iftmp.173.0.i = phi %"struct.btMultiSapBroadphase::btMultiSapProxy"* [ %30, %bb9.i ], [ null, %bb8.i ] ; [#uses=2]
+ %31 = icmp ugt %"struct.btMultiSapBroadphase::btMultiSapProxy"* %iftmp.170.0.i, %iftmp.172.0.i ; [#uses=1]
+ br i1 %31, label %bb, label %bb12.i
+
+bb12.i: ; preds = %bb11.i
+ %32 = icmp eq %"struct.btMultiSapBroadphase::btMultiSapProxy"* %iftmp.170.0.i, %iftmp.172.0.i ; [#uses=1]
+ %33 = icmp ugt %"struct.btMultiSapBroadphase::btMultiSapProxy"* %iftmp.171.0.i, %iftmp.173.0.i ; [#uses=1]
+ %34 = and i1 %32, %33 ; [#uses=1]
+ br i1 %34, label %bb, label %bb15.i
+
+bb15.i: ; preds = %bb12.i
+ %notlhs.i = icmp ne %"struct.btMultiSapBroadphase::btMultiSapProxy"* %iftmp.170.0.i, %iftmp.172.0.i ; [#uses=1]
+ %notrhs.i = icmp ne %"struct.btMultiSapBroadphase::btMultiSapProxy"* %iftmp.171.0.i, %iftmp.173.0.i ; [#uses=1]
+ %toBool18not.i = or i1 %notrhs.i, %notlhs.i ; [#uses=1]
+ br i1 %toBool18not.i, label %bb3, label %_ZN37btMultiSapBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit
+
+_ZN37btMultiSapBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit: ; preds = %bb15.i
+ %35 = load %struct.btCollisionAlgorithm** %scevgep46, align 4 ; [#uses=1]
+ %phitmp = icmp ugt %struct.btCollisionAlgorithm* %35, %11 ; [#uses=1]
+ br i1 %phitmp, label %bb, label %bb3
+
+bb2: ; preds = %_ZN37btMultiSapBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit34, %bb12.i25, %bb11.i24
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %_ZN37btMultiSapBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit, %bb15.i
+ %indvar = phi i32 [ %indvar.next, %bb2 ], [ 0, %bb15.i ], [ 0, %_ZN37btMultiSapBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit ] ; [#uses=2]
+ %j.0 = sub i32 %j.1.ph, %indvar ; [#uses=11]
+ %scevgep = getelementptr %struct.btBroadphasePair* %16, i32 %j.0, i32 2 ; [#uses=2]
+ %scevgep40 = getelementptr %struct.btBroadphasePair* %16, i32 %j.0, i32 1 ; [#uses=1]
+ %scevgep4142 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %j.0, i32 0 ; [#uses=1]
+ br i1 %12, label %bb2.i15, label %bb.i13
+
+bb.i13: ; preds = %bb3
+ %36 = load i8** %15, align 4 ; [#uses=1]
+ %37 = bitcast i8* %36 to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ br label %bb2.i15
+
+bb2.i15: ; preds = %bb.i13, %bb3
+ %iftmp.170.0.i14 = phi %"struct.btMultiSapBroadphase::btMultiSapProxy"* [ %37, %bb.i13 ], [ null, %bb3 ] ; [#uses=3]
+ br i1 %13, label %bb5.i18, label %bb3.i16
+
+bb3.i16: ; preds = %bb2.i15
+ %38 = load i8** %14, align 4 ; [#uses=1]
+ %39 = bitcast i8* %38 to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ br label %bb5.i18
+
+bb5.i18: ; preds = %bb3.i16, %bb2.i15
+ %iftmp.171.0.i17 = phi %"struct.btMultiSapBroadphase::btMultiSapProxy"* [ %39, %bb3.i16 ], [ null, %bb2.i15 ] ; [#uses=2]
+ %40 = load %struct.btBroadphaseProxy** %scevgep4142, align 4 ; [#uses=3]
+ %41 = icmp eq %struct.btBroadphaseProxy* %40, null ; [#uses=1]
+ br i1 %41, label %bb8.i21, label %bb6.i19
+
+bb6.i19: ; preds = %bb5.i18
+ %42 = getelementptr inbounds %struct.btBroadphaseProxy* %40, i32 0, i32 3 ; [#uses=1]
+ %43 = load i8** %42, align 4 ; [#uses=1]
+ %44 = bitcast i8* %43 to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ br label %bb8.i21
+
+bb8.i21: ; preds = %bb6.i19, %bb5.i18
+ %iftmp.172.0.i20 = phi %"struct.btMultiSapBroadphase::btMultiSapProxy"* [ %44, %bb6.i19 ], [ null, %bb5.i18 ] ; [#uses=3]
+ %45 = load %struct.btBroadphaseProxy** %scevgep40, align 4 ; [#uses=3]
+ %46 = icmp eq %struct.btBroadphaseProxy* %45, null ; [#uses=1]
+ br i1 %46, label %bb11.i24, label %bb9.i22
+
+bb9.i22: ; preds = %bb8.i21
+ %47 = getelementptr inbounds %struct.btBroadphaseProxy* %45, i32 0, i32 3 ; [#uses=1]
+ %48 = load i8** %47, align 4 ; [#uses=1]
+ %49 = bitcast i8* %48 to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ br label %bb11.i24
+
+bb11.i24: ; preds = %bb9.i22, %bb8.i21
+ %iftmp.173.0.i23 = phi %"struct.btMultiSapBroadphase::btMultiSapProxy"* [ %49, %bb9.i22 ], [ null, %bb8.i21 ] ; [#uses=2]
+ %50 = icmp ugt %"struct.btMultiSapBroadphase::btMultiSapProxy"* %iftmp.170.0.i14, %iftmp.172.0.i20 ; [#uses=1]
+ br i1 %50, label %bb2, label %bb12.i25
+
+bb12.i25: ; preds = %bb11.i24
+ %51 = icmp eq %"struct.btMultiSapBroadphase::btMultiSapProxy"* %iftmp.170.0.i14, %iftmp.172.0.i20 ; [#uses=1]
+ %52 = icmp ugt %"struct.btMultiSapBroadphase::btMultiSapProxy"* %iftmp.171.0.i17, %iftmp.173.0.i23 ; [#uses=1]
+ %53 = and i1 %51, %52 ; [#uses=1]
+ br i1 %53, label %bb2, label %bb15.i29
+
+bb15.i29: ; preds = %bb12.i25
+ %notlhs.i26 = icmp ne %"struct.btMultiSapBroadphase::btMultiSapProxy"* %iftmp.170.0.i14, %iftmp.172.0.i20 ; [#uses=1]
+ %notrhs.i27 = icmp ne %"struct.btMultiSapBroadphase::btMultiSapProxy"* %iftmp.171.0.i17, %iftmp.173.0.i23 ; [#uses=1]
+ %toBool18not.i28 = or i1 %notrhs.i27, %notlhs.i26 ; [#uses=1]
+ br i1 %toBool18not.i28, label %bb5, label %_ZN37btMultiSapBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit34
+
+_ZN37btMultiSapBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit34: ; preds = %bb15.i29
+ %54 = load %struct.btCollisionAlgorithm** %scevgep, align 4 ; [#uses=1]
+ %phitmp36 = icmp ugt %struct.btCollisionAlgorithm* %11, %54 ; [#uses=1]
+ br i1 %phitmp36, label %bb2, label %bb5
+
+bb5: ; preds = %_ZN37btMultiSapBroadphasePairSortPredicateclERK16btBroadphasePairS2_.exit34, %bb15.i29
+ %55 = icmp sgt i32 %i.0, %j.0 ; [#uses=1]
+ br i1 %55, label %bb7, label %bb6
+
+bb6: ; preds = %bb5
+ %56 = load %struct.btCollisionAlgorithm** %scevgep46, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %i.0, i32 3, i32 0 ; [#uses=2]
+ %58 = load i8** %57, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %40, %struct.btBroadphaseProxy** %scevgep4849, align 4
+ store %struct.btBroadphaseProxy* %45, %struct.btBroadphaseProxy** %scevgep47, align 4
+ %59 = load %struct.btCollisionAlgorithm** %scevgep, align 4 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %59, %struct.btCollisionAlgorithm** %scevgep46, align 4
+ %60 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %j.0, i32 3, i32 0 ; [#uses=1]
+ %61 = load i8** %60, align 4 ; [#uses=1]
+ store i8* %61, i8** %57, align 4
+ %62 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=4]
+ %63 = getelementptr inbounds %struct.btBroadphasePair* %62, i32 %j.0, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %17, %struct.btBroadphaseProxy** %63, align 4
+ %64 = getelementptr inbounds %struct.btBroadphasePair* %62, i32 %j.0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %22, %struct.btBroadphaseProxy** %64, align 4
+ %65 = getelementptr inbounds %struct.btBroadphasePair* %62, i32 %j.0, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %56, %struct.btCollisionAlgorithm** %65, align 4
+ %66 = getelementptr inbounds %struct.btBroadphasePair* %62, i32 %j.0, i32 3, i32 0 ; [#uses=1]
+ store i8* %58, i8** %66, align 4
+ %67 = add nsw i32 %i.0, 1 ; [#uses=1]
+ %68 = add nsw i32 %j.0, -1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5
+ %i.1 = phi i32 [ %67, %bb6 ], [ %i.0, %bb5 ] ; [#uses=4]
+ %j.2 = phi i32 [ %68, %bb6 ], [ %j.0, %bb5 ] ; [#uses=4]
+ %69 = icmp sgt i32 %i.1, %j.2 ; [#uses=1]
+ br i1 %69, label %bb8, label %bb1.outer
+
+bb8: ; preds = %bb7
+ %70 = icmp sgt i32 %j.2, %lo ; [#uses=1]
+ br i1 %70, label %bb9, label %bb10
+
+bb9: ; preds = %bb8
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI37btMultiSapBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %1, i32 %lo, i32 %j.2)
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb8
+ %71 = icmp slt i32 %i.1, %hi ; [#uses=1]
+ br i1 %71, label %bb11, label %return
+
+bb11: ; preds = %bb10
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI37btMultiSapBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 %i.1, i32 %hi)
+ ret void
+
+return: ; preds = %bb10
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN20btMultiSapBroadphase25calculateOverlappingPairsEP12btDispatcher(%struct.btMultiSapBroadphase* %this, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %1 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %2 = alloca %struct.btBroadphasePair, align 8 ; [#uses=5]
+ %3 = alloca %struct.btBroadphasePair, align 8 ; [#uses=5]
+ %4 = load i8* @stopUpdating, align 1 ; [#uses=1]
+ %toBool3not = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool3not, label %bb, label %bb12
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 0, i32 0 ; [#uses=3]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 9 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to %struct..0btMultiSapOverlapFilterCallback* (%struct.btMultiSapBroadphase*)* ; [#uses=1]
+ %10 = call %struct..0btMultiSapOverlapFilterCallback* %9(%struct.btMultiSapBroadphase* %this) ; [#uses=2]
+ %11 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %10, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = load i32 (...)*** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 14 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = bitcast i32 (...)* %14 to i8 (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %16 = call zeroext i8 %15(%struct..0btMultiSapOverlapFilterCallback* %10) ; [#uses=1]
+ %toBool7not = icmp eq i8 %16, 0 ; [#uses=1]
+ br i1 %toBool7not, label %bb12, label %bb15
+
+bb12: ; preds = %bb, %entry
+ ret void
+
+bb15: ; preds = %bb
+ %17 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 9 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = bitcast i32 (...)* %19 to %struct..0btMultiSapOverlapFilterCallback* (%struct.btMultiSapBroadphase*)* ; [#uses=1]
+ %21 = call %struct..0btMultiSapOverlapFilterCallback* %20(%struct.btMultiSapBroadphase* %this) ; [#uses=2]
+ %22 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %21, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = load i32 (...)*** %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds i32 (...)** %23, i32 7 ; [#uses=1]
+ %25 = load i32 (...)** %24, align 4 ; [#uses=1]
+ %26 = bitcast i32 (...)* %25 to %"struct.btAlignedObjectArray<btBroadphasePair>"* (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %27 = call %"struct.btAlignedObjectArray<btBroadphasePair>"* %26(%struct..0btMultiSapOverlapFilterCallback* %21) ; [#uses=6]
+ %28 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %27, i32 0, i32 1 ; [#uses=5]
+ %29 = load i32* %28, align 4 ; [#uses=3]
+ %30 = icmp sgt i32 %29, 1 ; [#uses=1]
+ br i1 %30, label %bb.i, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI37btMultiSapBroadphasePairSortPredicateEEvT_.exit
+
+bb.i: ; preds = %bb15
+ %31 = add nsw i32 %29, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI37btMultiSapBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %27, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %1, i32 0, i32 %31) nounwind
+ %.pre = load i32* %28, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI37btMultiSapBroadphasePairSortPredicateEEvT_.exit
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI37btMultiSapBroadphasePairSortPredicateEEvT_.exit: ; preds = %bb.i, %bb15
+ %32 = phi i32 [ %29, %bb15 ], [ %.pre, %bb.i ] ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %33, align 8
+ %34 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %34, align 4
+ %35 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %35, align 8
+ %36 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i8* null, i8** %36, align 4
+ %37 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 7 ; [#uses=6]
+ %38 = load i32* %37, align 4 ; [#uses=1]
+ %39 = sub nsw i32 %32, %38 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(%"struct.btAlignedObjectArray<btBroadphasePair>"* %27, i32 %39, %struct.btBroadphasePair* %3) inlinehint
+ store i32 0, i32* %37, align 4
+ %40 = load i32* %28, align 4 ; [#uses=2]
+ %41 = icmp sgt i32 %40, 0 ; [#uses=1]
+ br i1 %41, label %bb.nph, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI37btMultiSapBroadphasePairSortPredicateEEvT_.exit55
+
+bb.nph: ; preds = %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI37btMultiSapBroadphasePairSortPredicateEEvT_.exit
+ %42 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %27, i32 0, i32 3 ; [#uses=1]
+ br label %bb16
+
+bb16: ; preds = %bb43, %bb.nph
+ %i.065 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb43 ] ; [#uses=4]
+ %previousPair.1.064 = phi %struct.btBroadphaseProxy* [ null, %bb.nph ], [ %49, %bb43 ] ; [#uses=2]
+ %previousPair.0.063 = phi %struct.btBroadphaseProxy* [ null, %bb.nph ], [ %44, %bb43 ] ; [#uses=2]
+ %tmp = add i32 %i.065, 1 ; [#uses=2]
+ %43 = load %struct.btBroadphasePair** %42, align 4 ; [#uses=3]
+ %scevgep6667 = getelementptr inbounds %struct.btBroadphasePair* %43, i32 %i.065, i32 0 ; [#uses=2]
+ %44 = load %struct.btBroadphaseProxy** %scevgep6667, align 4 ; [#uses=4]
+ %45 = icmp eq %struct.btBroadphaseProxy* %44, null ; [#uses=1]
+ br i1 %45, label %bb19, label %bb17
+
+bb17: ; preds = %bb16
+ %46 = getelementptr inbounds %struct.btBroadphaseProxy* %44, i32 0, i32 3 ; [#uses=1]
+ %47 = load i8** %46, align 4 ; [#uses=1]
+ %48 = bitcast i8* %47 to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ br label %bb19
+
+bb19: ; preds = %bb17, %bb16
+ %iftmp.179.0 = phi %"struct.btMultiSapBroadphase::btMultiSapProxy"* [ %48, %bb17 ], [ null, %bb16 ] ; [#uses=1]
+ %scevgep70 = getelementptr %struct.btBroadphasePair* %43, i32 %i.065, i32 1 ; [#uses=2]
+ %49 = load %struct.btBroadphaseProxy** %scevgep70, align 4 ; [#uses=4]
+ %50 = icmp eq %struct.btBroadphaseProxy* %49, null ; [#uses=1]
+ br i1 %50, label %bb22, label %bb20
+
+bb20: ; preds = %bb19
+ %51 = getelementptr inbounds %struct.btBroadphaseProxy* %49, i32 0, i32 3 ; [#uses=1]
+ %52 = load i8** %51, align 4 ; [#uses=1]
+ %53 = bitcast i8* %52 to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ br label %bb22
+
+bb22: ; preds = %bb20, %bb19
+ %iftmp.180.0 = phi %"struct.btMultiSapBroadphase::btMultiSapProxy"* [ %53, %bb20 ], [ null, %bb19 ] ; [#uses=1]
+ %54 = icmp eq %struct.btBroadphaseProxy* %previousPair.0.063, null ; [#uses=1]
+ br i1 %54, label %bb25, label %bb23
+
+bb23: ; preds = %bb22
+ %55 = getelementptr inbounds %struct.btBroadphaseProxy* %previousPair.0.063, i32 0, i32 3 ; [#uses=1]
+ %56 = load i8** %55, align 4 ; [#uses=1]
+ %57 = bitcast i8* %56 to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ br label %bb25
+
+bb25: ; preds = %bb23, %bb22
+ %iftmp.181.0 = phi %"struct.btMultiSapBroadphase::btMultiSapProxy"* [ %57, %bb23 ], [ null, %bb22 ] ; [#uses=1]
+ %58 = icmp eq %struct.btBroadphaseProxy* %previousPair.1.064, null ; [#uses=1]
+ br i1 %58, label %bb28, label %bb26
+
+bb26: ; preds = %bb25
+ %59 = getelementptr inbounds %struct.btBroadphaseProxy* %previousPair.1.064, i32 0, i32 3 ; [#uses=1]
+ %60 = load i8** %59, align 4 ; [#uses=1]
+ %61 = bitcast i8* %60 to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ br label %bb28
+
+bb28: ; preds = %bb26, %bb25
+ %iftmp.182.0 = phi %"struct.btMultiSapBroadphase::btMultiSapProxy"* [ %61, %bb26 ], [ null, %bb25 ] ; [#uses=1]
+ %notlhs = icmp ne %"struct.btMultiSapBroadphase::btMultiSapProxy"* %iftmp.179.0, %iftmp.181.0 ; [#uses=1]
+ %notrhs = icmp ne %"struct.btMultiSapBroadphase::btMultiSapProxy"* %iftmp.180.0, %iftmp.182.0 ; [#uses=1]
+ %toBool31not = or i1 %notrhs, %notlhs ; [#uses=1]
+ br i1 %toBool31not, label %bb35, label %bb42
+
+bb35: ; preds = %bb28
+ %62 = getelementptr inbounds %struct.btBroadphaseProxy* %44, i32 0, i32 3 ; [#uses=1]
+ %63 = load i8** %62, align 4 ; [#uses=6]
+ %64 = getelementptr inbounds %struct.btBroadphaseProxy* %49, i32 0, i32 3 ; [#uses=1]
+ %65 = load i8** %64, align 4 ; [#uses=6]
+ %66 = getelementptr inbounds i8* %65, i32 84 ; [#uses=1]
+ %67 = getelementptr inbounds i8* %63, i32 68 ; [#uses=1]
+ %68 = bitcast i8* %67 to float* ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = bitcast i8* %66 to float* ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ %72 = fcmp ogt float %69, %71 ; [#uses=1]
+ br i1 %72, label %bb2.i.i, label %bb.i.i
+
+bb.i.i: ; preds = %bb35
+ %73 = getelementptr inbounds i8* %63, i32 84 ; [#uses=1]
+ %74 = getelementptr inbounds i8* %65, i32 68 ; [#uses=1]
+ %75 = bitcast i8* %73 to float* ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ %77 = bitcast i8* %74 to float* ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ %79 = fcmp olt float %76, %78 ; [#uses=1]
+ br i1 %79, label %bb2.i.i, label %bb3.i.i
+
+bb2.i.i: ; preds = %bb.i.i, %bb35
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb2.i.i, %bb.i.i
+ %iftmp.123.0.i.i = phi i8 [ 0, %bb2.i.i ], [ 1, %bb.i.i ] ; [#uses=1]
+ %80 = getelementptr inbounds i8* %63, i32 76 ; [#uses=1]
+ %81 = bitcast i8* %80 to float* ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ %83 = getelementptr inbounds i8* %65, i32 92 ; [#uses=1]
+ %84 = bitcast i8* %83 to float* ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = fcmp ogt float %82, %85 ; [#uses=1]
+ br i1 %86, label %bb6.i.i, label %bb4.i.i
+
+bb4.i.i: ; preds = %bb3.i.i
+ %87 = getelementptr inbounds i8* %63, i32 92 ; [#uses=1]
+ %88 = bitcast i8* %87 to float* ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ %90 = getelementptr inbounds i8* %65, i32 76 ; [#uses=1]
+ %91 = bitcast i8* %90 to float* ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=1]
+ %93 = fcmp olt float %89, %92 ; [#uses=1]
+ br i1 %93, label %bb6.i.i, label %bb7.i.i
+
+bb6.i.i: ; preds = %bb4.i.i, %bb3.i.i
+ br label %bb7.i.i
+
+bb7.i.i: ; preds = %bb6.i.i, %bb4.i.i
+ %iftmp.124.0.i.i = phi i8 [ 0, %bb6.i.i ], [ %iftmp.123.0.i.i, %bb4.i.i ] ; [#uses=1]
+ %94 = getelementptr inbounds i8* %63, i32 72 ; [#uses=1]
+ %95 = bitcast i8* %94 to float* ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ %97 = getelementptr inbounds i8* %65, i32 88 ; [#uses=1]
+ %98 = bitcast i8* %97 to float* ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ %100 = fcmp ogt float %96, %99 ; [#uses=1]
+ br i1 %100, label %bb42, label %_ZN20btMultiSapBroadphase15testAabbOverlapEP17btBroadphaseProxyS1_.exit
+
+_ZN20btMultiSapBroadphase15testAabbOverlapEP17btBroadphaseProxyS1_.exit: ; preds = %bb7.i.i
+ %101 = getelementptr inbounds i8* %63, i32 88 ; [#uses=1]
+ %102 = bitcast i8* %101 to float* ; [#uses=1]
+ %103 = load float* %102, align 4 ; [#uses=1]
+ %104 = getelementptr inbounds i8* %65, i32 72 ; [#uses=1]
+ %105 = bitcast i8* %104 to float* ; [#uses=1]
+ %106 = load float* %105, align 4 ; [#uses=1]
+ %107 = fcmp olt float %103, %106 ; [#uses=1]
+ %phitmp62 = icmp eq i8 %iftmp.124.0.i.i, 0 ; [#uses=1]
+ %phitmp = or i1 %107, %phitmp62 ; [#uses=1]
+ br i1 %phitmp, label %bb42, label %bb43
+
+bb42: ; preds = %_ZN20btMultiSapBroadphase15testAabbOverlapEP17btBroadphaseProxyS1_.exit, %bb7.i.i, %bb28
+ %108 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %109 = getelementptr inbounds i32 (...)** %108, i32 9 ; [#uses=1]
+ %110 = load i32 (...)** %109, align 4 ; [#uses=1]
+ %111 = bitcast i32 (...)* %110 to %struct..0btMultiSapOverlapFilterCallback* (%struct.btMultiSapBroadphase*)* ; [#uses=1]
+ %112 = call %struct..0btMultiSapOverlapFilterCallback* %111(%struct.btMultiSapBroadphase* %this) ; [#uses=2]
+ %113 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %112, i32 0, i32 0, i32 0 ; [#uses=1]
+ %114 = load i32 (...)*** %113, align 4 ; [#uses=1]
+ %115 = getelementptr inbounds i32 (...)** %114, i32 8 ; [#uses=1]
+ %116 = load i32 (...)** %115, align 4 ; [#uses=1]
+ %117 = bitcast i32 (...)* %116 to void (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphasePair*, %struct.btActionInterface*)* ; [#uses=1]
+ %scevgep = getelementptr %struct.btBroadphasePair* %43, i32 %i.065 ; [#uses=1]
+ call void %117(%struct..0btMultiSapOverlapFilterCallback* %112, %struct.btBroadphasePair* %scevgep, %struct.btActionInterface* %dispatcher)
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %scevgep6667, align 4
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %scevgep70, align 4
+ %118 = load i32* %37, align 4 ; [#uses=1]
+ %119 = add nsw i32 %118, 1 ; [#uses=1]
+ store i32 %119, i32* %37, align 4
+ %120 = load i32* @gOverlappingPairs, align 4 ; [#uses=1]
+ %121 = add nsw i32 %120, -1 ; [#uses=1]
+ store i32 %121, i32* @gOverlappingPairs, align 4
+ br label %bb43
+
+bb43: ; preds = %bb42, %_ZN20btMultiSapBroadphase15testAabbOverlapEP17btBroadphaseProxyS1_.exit
+ %122 = load i32* %28, align 4 ; [#uses=4]
+ %123 = icmp sgt i32 %122, %tmp ; [#uses=1]
+ br i1 %123, label %bb16, label %bb46
+
+bb46: ; preds = %bb43
+ %124 = icmp sgt i32 %122, 1 ; [#uses=1]
+ br i1 %124, label %bb.i53, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI37btMultiSapBroadphasePairSortPredicateEEvT_.exit55
+
+bb.i53: ; preds = %bb46
+ %125 = add nsw i32 %122, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI37btMultiSapBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %27, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 0, i32 %125) nounwind
+ %.pre81 = load i32* %28, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI37btMultiSapBroadphasePairSortPredicateEEvT_.exit55
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI37btMultiSapBroadphasePairSortPredicateEEvT_.exit55: ; preds = %bb.i53, %bb46, %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI37btMultiSapBroadphasePairSortPredicateEEvT_.exit
+ %126 = phi i32 [ %.pre81, %bb.i53 ], [ %122, %bb46 ], [ %40, %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI37btMultiSapBroadphasePairSortPredicateEEvT_.exit ] ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %127, align 8
+ %128 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %128, align 4
+ %129 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %129, align 8
+ %130 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i8* null, i8** %130, align 4
+ %131 = load i32* %37, align 4 ; [#uses=1]
+ %132 = sub nsw i32 %126, %131 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(%"struct.btAlignedObjectArray<btBroadphasePair>"* %27, i32 %132, %struct.btBroadphasePair* %2) inlinehint
+ store i32 0, i32* %37, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN20btMultiSapBroadphase20addToChildBroadphaseEPNS_15btMultiSapProxyEP17btBroadphaseProxyP21btBroadphaseInterface(%struct.btMultiSapBroadphase* nocapture %this, %"struct.btMultiSapBroadphase::btMultiSapProxy"* nocapture %parentMultiSapProxy, %struct.btBroadphaseProxy* %childProxy, %struct.btActionInterface* %childBroadphase) align 2 {
+entry:
+ %0 = tail call i8* @_Z22btAlignedAllocInternalji(i32 8, i32 16) ; [#uses=3]
+ %1 = bitcast i8* %0 to %"struct.btMultiSapBroadphase::btBridgeProxy"* ; [#uses=1]
+ %2 = bitcast i8* %0 to %struct.btBroadphaseProxy** ; [#uses=1]
+ store %struct.btBroadphaseProxy* %childProxy, %struct.btBroadphaseProxy** %2, align 4
+ %3 = getelementptr inbounds i8* %0, i32 4 ; [#uses=1]
+ %4 = bitcast i8* %3 to %struct.btActionInterface** ; [#uses=1]
+ store %struct.btActionInterface* %childBroadphase, %struct.btActionInterface** %4, align 4
+ %5 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %parentMultiSapProxy, i32 0, i32 1, i32 1 ; [#uses=5]
+ %6 = load i32* %5, align 4 ; [#uses=6]
+ %7 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %parentMultiSapProxy, i32 0, i32 1, i32 2 ; [#uses=2]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = icmp eq i32 %8, %6 ; [#uses=1]
+ br i1 %9, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %entry
+ %10 = icmp eq i32 %6, 0 ; [#uses=1]
+ %11 = shl i32 %6, 1 ; [#uses=1]
+ %iftmp.199.0.i.i = select i1 %10, i32 1, i32 %11 ; [#uses=4]
+ %12 = icmp slt i32 %8, %iftmp.199.0.i.i ; [#uses=1]
+ br i1 %12, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %13 = icmp eq i32 %iftmp.199.0.i.i, 0 ; [#uses=1]
+ br i1 %13, label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %14 = shl i32 %iftmp.199.0.i.i, 2 ; [#uses=1]
+ %15 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %14, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %15 to %"struct.btMultiSapBroadphase::btBridgeProxy"** ; [#uses=1]
+ %.pre.i = load i32* %5, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %16 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %6, %bb.i.i ] ; [#uses=2]
+ %17 = phi %"struct.btMultiSapBroadphase::btBridgeProxy"** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %18 = icmp sgt i32 %16, 0 ; [#uses=1]
+ br i1 %18, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE4copyEiiPS2_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE8allocateEi.exit.i.i
+ %19 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %parentMultiSapProxy, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %"struct.btMultiSapBroadphase::btBridgeProxy"** %17, i32 %indvar.i.i.i ; [#uses=2]
+ %20 = icmp eq %"struct.btMultiSapBroadphase::btBridgeProxy"** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %20, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %21 = load %"struct.btMultiSapBroadphase::btBridgeProxy"*** %19, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %"struct.btMultiSapBroadphase::btBridgeProxy"** %21, i32 %indvar.i.i.i ; [#uses=1]
+ %22 = load %"struct.btMultiSapBroadphase::btBridgeProxy"** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %"struct.btMultiSapBroadphase::btBridgeProxy"* %22, %"struct.btMultiSapBroadphase::btBridgeProxy"** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %16 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE4copyEiiPS2_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE4copyEiiPS2_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE8allocateEi.exit.i.i
+ %23 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %parentMultiSapProxy, i32 0, i32 1, i32 3 ; [#uses=3]
+ %24 = load %"struct.btMultiSapBroadphase::btBridgeProxy"*** %23, align 4 ; [#uses=2]
+ %25 = icmp eq %"struct.btMultiSapBroadphase::btBridgeProxy"** %24, null ; [#uses=1]
+ br i1 %25, label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE4copyEiiPS2_.exit.i.i
+ %26 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %parentMultiSapProxy, i32 0, i32 1, i32 4 ; [#uses=1]
+ %27 = load i8* %26, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %27, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %28 = bitcast %"struct.btMultiSapBroadphase::btBridgeProxy"** %24 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %28)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %"struct.btMultiSapBroadphase::btBridgeProxy"** null, %"struct.btMultiSapBroadphase::btBridgeProxy"*** %23, align 4
+ br label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE4copyEiiPS2_.exit.i.i
+ %29 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %parentMultiSapProxy, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %29, align 4
+ store %"struct.btMultiSapBroadphase::btBridgeProxy"** %17, %"struct.btMultiSapBroadphase::btBridgeProxy"*** %23, align 4
+ store i32 %iftmp.199.0.i.i, i32* %7, align 4
+ %.pre5.i = load i32* %5, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE10deallocateEv.exit.i.i, %bb.i, %entry
+ %30 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE10deallocateEv.exit.i.i ], [ %6, %entry ], [ %6, %bb.i ] ; [#uses=2]
+ %31 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"* %parentMultiSapProxy, i32 0, i32 1, i32 3 ; [#uses=1]
+ %32 = load %"struct.btMultiSapBroadphase::btBridgeProxy"*** %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds %"struct.btMultiSapBroadphase::btBridgeProxy"** %32, i32 %30 ; [#uses=2]
+ %34 = icmp eq %"struct.btMultiSapBroadphase::btBridgeProxy"** %33, null ; [#uses=1]
+ br i1 %34, label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE9push_backERKS2_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %"struct.btMultiSapBroadphase::btBridgeProxy"* %1, %"struct.btMultiSapBroadphase::btBridgeProxy"** %33, align 4
+ %.pre6.i = load i32* %5, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE9push_backERKS2_.exit
+
+_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase13btBridgeProxyEE9push_backERKS2_.exit: ; preds = %bb2.i, %bb1.i
+ %35 = phi i32 [ %30, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %36 = add nsw i32 %35, 1 ; [#uses=1]
+ store i32 %36, i32* %5, align 4
+ ret void
+}
+
+; [#uses=1]
+define %struct.btBroadphaseProxy* @_ZN20btMultiSapBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3_(%struct.btMultiSapBroadphase* %this, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, i32 %shapeType, i8* %userPtr, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask, %struct.btActionInterface* %dispatcher, i8* nocapture %unnamed_arg) align 2 {
+bb1:
+ %0 = tail call i8* @_Z22btAlignedAllocInternalji(i32 104, i32 16) ; [#uses=28]
+ %1 = bitcast i8* %0 to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ %2 = bitcast i8* %0 to i8** ; [#uses=1]
+ store i8* %userPtr, i8** %2, align 4
+ %3 = getelementptr inbounds i8* %0, i32 4 ; [#uses=1]
+ %4 = bitcast i8* %3 to i16* ; [#uses=1]
+ store i16 %collisionFilterGroup, i16* %4, align 4
+ %5 = getelementptr inbounds i8* %0, i32 6 ; [#uses=1]
+ %6 = bitcast i8* %5 to i16* ; [#uses=1]
+ store i16 %collisionFilterMask, i16* %6, align 2
+ %7 = getelementptr inbounds i8* %0, i32 16 ; [#uses=1]
+ %8 = bitcast i8* %7 to float* ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=2]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds i8* %0, i32 20 ; [#uses=1]
+ %12 = bitcast i8* %11 to float* ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds i8* %0, i32 24 ; [#uses=1]
+ %16 = bitcast i8* %15 to float* ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds i8* %0, i32 28 ; [#uses=1]
+ %20 = bitcast i8* %19 to float* ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=2]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds i8* %0, i32 32 ; [#uses=1]
+ %24 = bitcast i8* %23 to float* ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=2]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds i8* %0, i32 36 ; [#uses=1]
+ %28 = bitcast i8* %27 to float* ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=2]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds i8* %0, i32 40 ; [#uses=1]
+ %32 = bitcast i8* %31 to float* ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=2]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds i8* %0, i32 44 ; [#uses=1]
+ %36 = bitcast i8* %35 to float* ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=2]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds i8* %0, i32 8 ; [#uses=1]
+ %40 = bitcast i8* %39 to i8** ; [#uses=2]
+ store i8* null, i8** %40, align 4
+ %41 = getelementptr inbounds i8* %0, i32 64 ; [#uses=1]
+ store i8 1, i8* %41, align 4
+ %42 = getelementptr inbounds i8* %0, i32 60 ; [#uses=1]
+ %43 = bitcast i8* %42 to %"struct.btMultiSapBroadphase::btBridgeProxy"*** ; [#uses=1]
+ store %"struct.btMultiSapBroadphase::btBridgeProxy"** null, %"struct.btMultiSapBroadphase::btBridgeProxy"*** %43, align 4
+ %44 = getelementptr inbounds i8* %0, i32 52 ; [#uses=1]
+ %45 = bitcast i8* %44 to i32* ; [#uses=1]
+ store i32 0, i32* %45, align 4
+ %46 = getelementptr inbounds i8* %0, i32 56 ; [#uses=1]
+ %47 = bitcast i8* %46 to i32* ; [#uses=1]
+ store i32 0, i32* %47, align 4
+ %48 = getelementptr inbounds i8* %0, i32 68 ; [#uses=1]
+ %49 = bitcast i8* %48 to float* ; [#uses=1]
+ %50 = load float* %9, align 4 ; [#uses=1]
+ store float %50, float* %49, align 4
+ %51 = getelementptr inbounds i8* %0, i32 72 ; [#uses=1]
+ %52 = bitcast i8* %51 to float* ; [#uses=1]
+ %53 = load float* %13, align 4 ; [#uses=1]
+ store float %53, float* %52, align 4
+ %54 = getelementptr inbounds i8* %0, i32 76 ; [#uses=1]
+ %55 = bitcast i8* %54 to float* ; [#uses=1]
+ %56 = load float* %17, align 4 ; [#uses=1]
+ store float %56, float* %55, align 4
+ %57 = getelementptr inbounds i8* %0, i32 80 ; [#uses=1]
+ %58 = bitcast i8* %57 to float* ; [#uses=1]
+ %59 = load float* %21, align 4 ; [#uses=1]
+ store float %59, float* %58, align 4
+ %60 = getelementptr inbounds i8* %0, i32 84 ; [#uses=1]
+ %61 = bitcast i8* %60 to float* ; [#uses=1]
+ %62 = load float* %25, align 4 ; [#uses=1]
+ store float %62, float* %61, align 4
+ %63 = getelementptr inbounds i8* %0, i32 88 ; [#uses=1]
+ %64 = bitcast i8* %63 to float* ; [#uses=1]
+ %65 = load float* %29, align 4 ; [#uses=1]
+ store float %65, float* %64, align 4
+ %66 = getelementptr inbounds i8* %0, i32 92 ; [#uses=1]
+ %67 = bitcast i8* %66 to float* ; [#uses=1]
+ %68 = load float* %33, align 4 ; [#uses=1]
+ store float %68, float* %67, align 4
+ %69 = getelementptr inbounds i8* %0, i32 96 ; [#uses=1]
+ %70 = bitcast i8* %69 to float* ; [#uses=1]
+ %71 = load float* %37, align 4 ; [#uses=1]
+ store float %71, float* %70, align 4
+ %72 = getelementptr inbounds i8* %0, i32 100 ; [#uses=1]
+ %73 = bitcast i8* %72 to i32* ; [#uses=1]
+ store i32 %shapeType, i32* %73, align 4
+ store i8* %0, i8** %40, align 4
+ %74 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 1 ; [#uses=5]
+ %75 = load i32* %74, align 4 ; [#uses=6]
+ %76 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 2 ; [#uses=2]
+ %77 = load i32* %76, align 4 ; [#uses=2]
+ %78 = icmp eq i32 %77, %75 ; [#uses=1]
+ br i1 %78, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb1
+ %79 = icmp eq i32 %75, 0 ; [#uses=1]
+ %80 = shl i32 %75, 1 ; [#uses=1]
+ %iftmp.197.0.i.i = select i1 %79, i32 1, i32 %80 ; [#uses=4]
+ %81 = icmp slt i32 %77, %iftmp.197.0.i.i ; [#uses=1]
+ br i1 %81, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %82 = icmp eq i32 %iftmp.197.0.i.i, 0 ; [#uses=1]
+ br i1 %82, label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %83 = shl i32 %iftmp.197.0.i.i, 2 ; [#uses=1]
+ %84 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %83, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %84 to %"struct.btMultiSapBroadphase::btMultiSapProxy"** ; [#uses=1]
+ %.pre.i = load i32* %74, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %85 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %75, %bb.i.i ] ; [#uses=2]
+ %86 = phi %"struct.btMultiSapBroadphase::btMultiSapProxy"** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %87 = icmp sgt i32 %85, 0 ; [#uses=1]
+ br i1 %87, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE4copyEiiPS2_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE8allocateEi.exit.i.i
+ %88 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %"struct.btMultiSapBroadphase::btMultiSapProxy"** %86, i32 %indvar.i.i.i ; [#uses=2]
+ %89 = icmp eq %"struct.btMultiSapBroadphase::btMultiSapProxy"** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %89, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %90 = load %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %88, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %"struct.btMultiSapBroadphase::btMultiSapProxy"** %90, i32 %indvar.i.i.i ; [#uses=1]
+ %91 = load %"struct.btMultiSapBroadphase::btMultiSapProxy"** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"* %91, %"struct.btMultiSapBroadphase::btMultiSapProxy"** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %85 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE4copyEiiPS2_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE4copyEiiPS2_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE8allocateEi.exit.i.i
+ %92 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %93 = load %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %92, align 4 ; [#uses=2]
+ %94 = icmp eq %"struct.btMultiSapBroadphase::btMultiSapProxy"** %93, null ; [#uses=1]
+ br i1 %94, label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE4copyEiiPS2_.exit.i.i
+ %95 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %96 = load i8* %95, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %96, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %97 = bitcast %"struct.btMultiSapBroadphase::btMultiSapProxy"** %93 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %97)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"** null, %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %92, align 4
+ br label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE4copyEiiPS2_.exit.i.i
+ %98 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %98, align 4
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"** %86, %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %92, align 4
+ store i32 %iftmp.197.0.i.i, i32* %76, align 4
+ %.pre5.i = load i32* %74, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE10deallocateEv.exit.i.i, %bb.i, %bb1
+ %99 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE10deallocateEv.exit.i.i ], [ %75, %bb1 ], [ %75, %bb.i ] ; [#uses=2]
+ %100 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ %101 = load %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %100, align 4 ; [#uses=1]
+ %102 = getelementptr inbounds %"struct.btMultiSapBroadphase::btMultiSapProxy"** %101, i32 %99 ; [#uses=2]
+ %103 = icmp eq %"struct.btMultiSapBroadphase::btMultiSapProxy"** %102, null ; [#uses=1]
+ br i1 %103, label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE9push_backERKS2_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"* %1, %"struct.btMultiSapBroadphase::btMultiSapProxy"** %102, align 4
+ %.pre6.i = load i32* %74, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE9push_backERKS2_.exit
+
+_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEE9push_backERKS2_.exit: ; preds = %bb2.i, %bb1.i
+ %104 = phi i32 [ %99, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %105 = add nsw i32 %104, 1 ; [#uses=1]
+ store i32 %105, i32* %74, align 4
+ %106 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %107 = load i32 (...)*** %106, align 4 ; [#uses=1]
+ %108 = getelementptr inbounds i32 (...)** %107, i32 4 ; [#uses=1]
+ %109 = load i32 (...)** %108, align 4 ; [#uses=1]
+ %110 = bitcast i8* %0 to %struct.btBroadphaseProxy* ; [#uses=2]
+ %111 = bitcast i32 (...)* %109 to void (%struct.btMultiSapBroadphase*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %111(%struct.btMultiSapBroadphase* %this, %struct.btBroadphaseProxy* %110, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %dispatcher)
+ ret %struct.btBroadphaseProxy* %110
+}
+
+; [#uses=6]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(%struct.QuantizedNodeArray* nocapture %this, i32 %_Count) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.QuantizedNodeArray* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp slt i32 %1, %_Count ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = icmp eq i32 %_Count, 0 ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE8allocateEi.exit, label %bb.i2
+
+bb.i2: ; preds = %bb
+ %4 = shl i32 %_Count, 4 ; [#uses=1]
+ %5 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %4, i32 16) ; [#uses=1]
+ %phitmp = bitcast i8* %5 to %struct.BT_QUANTIZED_BVH_NODE* ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE8allocateEi.exit
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE8allocateEi.exit: ; preds = %bb.i2, %bb
+ %6 = phi %struct.BT_QUANTIZED_BVH_NODE* [ %phitmp, %bb.i2 ], [ null, %bb ] ; [#uses=8]
+ %7 = getelementptr inbounds %struct.QuantizedNodeArray* %this, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = icmp sgt i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb.nph.i, label %_ZNK20btAlignedObjectArrayI18btQuantizedBvhNodeE4copyEiiPS0_.exit
+
+bb.nph.i: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE8allocateEi.exit
+ %10 = getelementptr inbounds %struct.QuantizedNodeArray* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4
+
+bb.i4: ; preds = %bb.i4, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb.i4 ] ; [#uses=15]
+ %scevgep1213.i = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 0, i32 0 ; [#uses=1]
+ %scevgep14.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 0, i32 1 ; [#uses=1]
+ %scevgep15.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 0, i32 2 ; [#uses=1]
+ %scevgep16.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 1, i32 0 ; [#uses=1]
+ %scevgep17.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 1, i32 1 ; [#uses=1]
+ %scevgep18.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 1, i32 2 ; [#uses=1]
+ %scevgep19.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 2 ; [#uses=1]
+ %11 = load %struct.BT_QUANTIZED_BVH_NODE** %10, align 4 ; [#uses=7]
+ %scevgep5.i = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %indvar.i, i32 0, i32 0 ; [#uses=1]
+ %12 = load i16* %scevgep5.i, align 4 ; [#uses=1]
+ store i16 %12, i16* %scevgep1213.i, align 4
+ %scevgep6.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %indvar.i, i32 0, i32 1 ; [#uses=1]
+ %13 = load i16* %scevgep6.i, align 2 ; [#uses=1]
+ store i16 %13, i16* %scevgep14.i, align 2
+ %scevgep7.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %indvar.i, i32 0, i32 2 ; [#uses=1]
+ %14 = load i16* %scevgep7.i, align 4 ; [#uses=1]
+ store i16 %14, i16* %scevgep15.i, align 4
+ %scevgep8.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %indvar.i, i32 1, i32 0 ; [#uses=1]
+ %15 = load i16* %scevgep8.i, align 2 ; [#uses=1]
+ store i16 %15, i16* %scevgep16.i, align 2
+ %scevgep9.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %indvar.i, i32 1, i32 1 ; [#uses=1]
+ %16 = load i16* %scevgep9.i, align 2 ; [#uses=1]
+ store i16 %16, i16* %scevgep17.i, align 2
+ %scevgep10.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %indvar.i, i32 1, i32 2 ; [#uses=1]
+ %17 = load i16* %scevgep10.i, align 2 ; [#uses=1]
+ store i16 %17, i16* %scevgep18.i, align 2
+ %scevgep11.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %indvar.i, i32 2 ; [#uses=1]
+ %18 = load i32* %scevgep11.i, align 4 ; [#uses=1]
+ store i32 %18, i32* %scevgep19.i, align 4
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %8 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI18btQuantizedBvhNodeE4copyEiiPS0_.exit, label %bb.i4
+
+_ZNK20btAlignedObjectArrayI18btQuantizedBvhNodeE4copyEiiPS0_.exit: ; preds = %bb.i4, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE8allocateEi.exit
+ %19 = getelementptr inbounds %struct.QuantizedNodeArray* %this, i32 0, i32 3 ; [#uses=3]
+ %20 = load %struct.BT_QUANTIZED_BVH_NODE** %19, align 4 ; [#uses=2]
+ %21 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %20, null ; [#uses=1]
+ br i1 %21, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE10deallocateEv.exit, label %bb.i
+
+bb.i: ; preds = %_ZNK20btAlignedObjectArrayI18btQuantizedBvhNodeE4copyEiiPS0_.exit
+ %22 = getelementptr inbounds %struct.QuantizedNodeArray* %this, i32 0, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %24 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %20 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %24)
+ br label %bb2.i
+
+bb2.i: ; preds = %bb1.i, %bb.i
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %19, align 4
+ br label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE10deallocateEv.exit
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE10deallocateEv.exit: ; preds = %bb2.i, %_ZNK20btAlignedObjectArrayI18btQuantizedBvhNodeE4copyEiiPS0_.exit
+ %25 = getelementptr inbounds %struct.QuantizedNodeArray* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* %6, %struct.BT_QUANTIZED_BVH_NODE** %19, align 4
+ store i32 %_Count, i32* %0, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher(%struct.btMultiSapBroadphase* %this, %struct.btBroadphaseProxy* %proxy, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %myNodeCallback = alloca %struct..1MyNodeOverlapCallback, align 8 ; [#uses=5]
+ %worldAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %worldAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = bitcast %struct.btBroadphaseProxy* %proxy to %"struct.btMultiSapBroadphase::btMultiSapProxy"* ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 5, i32 0, i32 1 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %1, align 4
+ %4 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 5, i32 0, i32 2 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 5, i32 0, i32 3 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 5, i32 0, i32 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 6, i32 0, i32 1 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 6, i32 0, i32 2 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 6, i32 0, i32 3 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 6, i32 0, i32 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct..1MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherE21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %25, align 8
+ %26 = getelementptr inbounds %struct..1MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btMultiSapBroadphase* %this, %struct.btMultiSapBroadphase** %26, align 4
+ %27 = getelementptr inbounds %struct..1MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 2 ; [#uses=1]
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"* %0, %"struct.btMultiSapBroadphase::btMultiSapProxy"** %27, align 8
+ %28 = getelementptr inbounds %struct..1MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 3 ; [#uses=1]
+ store %struct.btActionInterface* %dispatcher, %struct.btActionInterface** %28, align 4
+ %29 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 4 ; [#uses=1]
+ %30 = load %struct.btQuantizedBvh** %29, align 4 ; [#uses=2]
+ %31 = icmp eq %struct.btQuantizedBvh* %30, null ; [#uses=1]
+ br i1 %31, label %bb10.preheader, label %bb
+
+bb: ; preds = %entry
+ %32 = getelementptr inbounds %struct..1MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZNK14btQuantizedBvh26reportAabbOverlappingNodexEP21btNodeOverlapCallbackRK9btVector3S4_(%struct.btQuantizedBvh* %30, %struct.btActionInterface* %32, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ to label %bb10.preheader unwind label %lpad
+
+bb10.preheader: ; preds = %bb, %entry
+ %33 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 1 ; [#uses=1]
+ %34 = bitcast i16* %33 to i32* ; [#uses=5]
+ %35 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 1, i32 4 ; [#uses=1]
+ %36 = bitcast i32* %35 to %"struct.btMultiSapBroadphase::btBridgeProxy"*** ; [#uses=5]
+ %37 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb10
+
+bb2: ; preds = %bb10
+ %43 = load %"struct.btMultiSapBroadphase::btBridgeProxy"*** %36, align 4 ; [#uses=1]
+ %scevgep24 = getelementptr %"struct.btMultiSapBroadphase::btBridgeProxy"** %43, i32 %92 ; [#uses=1]
+ %44 = load %"struct.btMultiSapBroadphase::btBridgeProxy"** %scevgep24, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %"struct.btMultiSapBroadphase::btBridgeProxy"* %44, i32 0, i32 1 ; [#uses=1]
+ %46 = load %struct.btActionInterface** %45, align 4 ; [#uses=2]
+ %47 = getelementptr inbounds %struct.btActionInterface* %46, i32 0, i32 0 ; [#uses=1]
+ %48 = load i32 (...)*** %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds i32 (...)** %48, i32 11 ; [#uses=1]
+ %50 = load i32 (...)** %49, align 4 ; [#uses=1]
+ %51 = bitcast i32 (...)* %50 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %51(%struct.btActionInterface* %46, %struct.btQuadWord* %worldAabbMin, %struct.btQuadWord* %worldAabbMax)
+ to label %invcont3 unwind label %lpad
+
+invcont3: ; preds = %bb2
+ %52 = load float* %37, align 8 ; [#uses=1]
+ %53 = load float* %13, align 4 ; [#uses=1]
+ %54 = fcmp ogt float %52, %53 ; [#uses=1]
+ br i1 %54, label %bb2.i, label %bb.i
+
+bb.i: ; preds = %invcont3
+ %55 = load float* %42, align 8 ; [#uses=1]
+ %56 = load float* %1, align 4 ; [#uses=1]
+ %57 = fcmp olt float %55, %56 ; [#uses=1]
+ br i1 %57, label %bb2.i, label %bb3.i
+
+bb2.i: ; preds = %bb.i, %invcont3
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb.i
+ %iftmp.123.0.i = phi i8 [ 0, %bb2.i ], [ 1, %bb.i ] ; [#uses=1]
+ %58 = load float* %38, align 8 ; [#uses=1]
+ %59 = load float* %19, align 4 ; [#uses=1]
+ %60 = fcmp ogt float %58, %59 ; [#uses=1]
+ br i1 %60, label %bb6.i, label %bb4.i
+
+bb4.i: ; preds = %bb3.i
+ %61 = load float* %41, align 8 ; [#uses=1]
+ %62 = load float* %7, align 4 ; [#uses=1]
+ %63 = fcmp olt float %61, %62 ; [#uses=1]
+ br i1 %63, label %bb6.i, label %bb7.i
+
+bb6.i: ; preds = %bb4.i, %bb3.i
+ br label %bb7.i
+
+bb7.i: ; preds = %bb6.i, %bb4.i
+ %iftmp.124.0.i = phi i8 [ 0, %bb6.i ], [ %iftmp.123.0.i, %bb4.i ] ; [#uses=1]
+ %64 = load float* %39, align 4 ; [#uses=1]
+ %65 = load float* %16, align 4 ; [#uses=1]
+ %66 = fcmp ogt float %64, %65 ; [#uses=1]
+ br i1 %66, label %bb7, label %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+
+_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit: ; preds = %bb7.i
+ %67 = load float* %40, align 4 ; [#uses=1]
+ %68 = load float* %4, align 4 ; [#uses=1]
+ %69 = fcmp olt float %67, %68 ; [#uses=1]
+ %phitmp22 = icmp eq i8 %iftmp.124.0.i, 0 ; [#uses=1]
+ %phitmp = or i1 %69, %phitmp22 ; [#uses=1]
+ br i1 %phitmp, label %bb7, label %bb9
+
+bb7: ; preds = %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit, %bb7.i
+ %70 = load %"struct.btMultiSapBroadphase::btBridgeProxy"*** %36, align 4 ; [#uses=1]
+ %scevgep25 = getelementptr %"struct.btMultiSapBroadphase::btBridgeProxy"** %70, i32 %92 ; [#uses=1]
+ %71 = load %"struct.btMultiSapBroadphase::btBridgeProxy"** %scevgep25, align 4 ; [#uses=2]
+ %72 = getelementptr inbounds %"struct.btMultiSapBroadphase::btBridgeProxy"* %71, i32 0, i32 0 ; [#uses=1]
+ %73 = load %struct.btBroadphaseProxy** %72, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds %"struct.btMultiSapBroadphase::btBridgeProxy"* %71, i32 0, i32 1 ; [#uses=1]
+ %75 = load %struct.btActionInterface** %74, align 4 ; [#uses=2]
+ %76 = getelementptr inbounds %struct.btActionInterface* %75, i32 0, i32 0 ; [#uses=1]
+ %77 = load i32 (...)*** %76, align 4 ; [#uses=1]
+ %78 = getelementptr inbounds i32 (...)** %77, i32 3 ; [#uses=1]
+ %79 = load i32 (...)** %78, align 4 ; [#uses=1]
+ %80 = bitcast i32 (...)* %79 to void (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ invoke void %80(%struct.btActionInterface* %75, %struct.btBroadphaseProxy* %73, %struct.btActionInterface* %dispatcher)
+ to label %invcont8 unwind label %lpad
+
+invcont8: ; preds = %bb7
+ %81 = load i32* %34, align 4 ; [#uses=1]
+ %82 = add nsw i32 %81, -1 ; [#uses=2]
+ %83 = load %"struct.btMultiSapBroadphase::btBridgeProxy"*** %36, align 4 ; [#uses=2]
+ %scevgep27 = getelementptr %"struct.btMultiSapBroadphase::btBridgeProxy"** %83, i32 %92 ; [#uses=2]
+ %84 = load %"struct.btMultiSapBroadphase::btBridgeProxy"** %scevgep27, align 4 ; [#uses=1]
+ %85 = getelementptr inbounds %"struct.btMultiSapBroadphase::btBridgeProxy"** %83, i32 %82 ; [#uses=1]
+ %86 = load %"struct.btMultiSapBroadphase::btBridgeProxy"** %85, align 4 ; [#uses=1]
+ store %"struct.btMultiSapBroadphase::btBridgeProxy"* %86, %"struct.btMultiSapBroadphase::btBridgeProxy"** %scevgep27, align 4
+ %87 = load %"struct.btMultiSapBroadphase::btBridgeProxy"*** %36, align 4 ; [#uses=1]
+ %88 = getelementptr inbounds %"struct.btMultiSapBroadphase::btBridgeProxy"** %87, i32 %82 ; [#uses=1]
+ store %"struct.btMultiSapBroadphase::btBridgeProxy"* %84, %"struct.btMultiSapBroadphase::btBridgeProxy"** %88, align 4
+ %89 = load i32* %34, align 4 ; [#uses=1]
+ %90 = add nsw i32 %89, -1 ; [#uses=1]
+ store i32 %90, i32* %34, align 4
+ br label %bb9
+
+bb9: ; preds = %invcont8, %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+ %91 = add nsw i32 %92, 1 ; [#uses=1]
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb10.preheader
+ %92 = phi i32 [ %91, %bb9 ], [ 0, %bb10.preheader ] ; [#uses=5]
+ %93 = load i32* %34, align 4 ; [#uses=2]
+ %94 = icmp sgt i32 %93, %92 ; [#uses=1]
+ br i1 %94, label %bb2, label %bb15
+
+bb13: ; preds = %bb15
+ %95 = load %"struct.btMultiSapBroadphase::btBridgeProxy"*** %36, align 4 ; [#uses=1]
+ %scevgep = getelementptr %"struct.btMultiSapBroadphase::btBridgeProxy"** %95, i32 %108 ; [#uses=1]
+ %96 = load %"struct.btMultiSapBroadphase::btBridgeProxy"** %scevgep, align 4 ; [#uses=2]
+ %97 = getelementptr inbounds %"struct.btMultiSapBroadphase::btBridgeProxy"* %96, i32 0, i32 1 ; [#uses=1]
+ %98 = load %struct.btActionInterface** %97, align 4 ; [#uses=2]
+ %99 = getelementptr inbounds %struct.btActionInterface* %98, i32 0, i32 0 ; [#uses=1]
+ %100 = load i32 (...)*** %99, align 4 ; [#uses=1]
+ %101 = getelementptr inbounds i32 (...)** %100, i32 4 ; [#uses=1]
+ %102 = load i32 (...)** %101, align 4 ; [#uses=1]
+ %103 = getelementptr inbounds %"struct.btMultiSapBroadphase::btBridgeProxy"* %96, i32 0, i32 0 ; [#uses=1]
+ %104 = load %struct.btBroadphaseProxy** %103, align 4 ; [#uses=1]
+ %105 = bitcast i32 (...)* %102 to void (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* ; [#uses=1]
+ invoke void %105(%struct.btActionInterface* %98, %struct.btBroadphaseProxy* %104, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %dispatcher)
+ to label %invcont14 unwind label %lpad
+
+invcont14: ; preds = %bb13
+ %106 = add nsw i32 %108, 1 ; [#uses=1]
+ %.pre = load i32* %34, align 4 ; [#uses=1]
+ br label %bb15
+
+bb15: ; preds = %invcont14, %bb10
+ %107 = phi i32 [ %.pre, %invcont14 ], [ %93, %bb10 ] ; [#uses=1]
+ %108 = phi i32 [ %106, %invcont14 ], [ 0, %bb10 ] ; [#uses=3]
+ %109 = icmp sgt i32 %107, %108 ; [#uses=1]
+ br i1 %109, label %bb13, label %bb18
+
+bb18: ; preds = %bb15
+ ret void
+
+lpad: ; preds = %bb13, %bb7, %bb2, %bb
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select20 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherE21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %25, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherEN21MyNodeOverlapCallbackD2Ev(%struct..1MyNodeOverlapCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1MyNodeOverlapCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN20btMultiSapBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcherE21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN20btMultiSapBroadphaseD0Ev(%struct.btMultiSapBroadphase* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV20btMultiSapBroadphase, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 5 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 3 ; [#uses=2]
+ %4 = load %struct..0btMultiSapOverlapFilterCallback** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ invoke void %8(%struct..0btMultiSapOverlapFilterCallback* %4)
+ to label %invcont unwind label %lpad21
+
+invcont: ; preds = %bb
+ %9 = load %struct..0btMultiSapOverlapFilterCallback** %3, align 4 ; [#uses=1]
+ %10 = bitcast %struct..0btMultiSapOverlapFilterCallback* %9 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %10)
+ to label %bb5 unwind label %lpad21
+
+bb5: ; preds = %invcont, %entry
+ %11 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %12 = load %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %11, align 4 ; [#uses=2]
+ %13 = icmp eq %"struct.btMultiSapBroadphase::btMultiSapProxy"** %12, null ; [#uses=1]
+ br i1 %13, label %bb12, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb5
+ %14 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %15 = load i8* %14, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %15, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %16 = bitcast %"struct.btMultiSapBroadphase::btMultiSapProxy"** %12 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %16)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"** null, %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %11, align 4
+ br label %bb12
+
+invcont10: ; preds = %bb2.i.i.i50, %ppad
+ %17 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %17, align 4
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %42, align 4
+ %18 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %19, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb12: ; preds = %bb2.i.i.i, %bb5
+ %20 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %20, align 4
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"** null, %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %11, align 4
+ %21 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %22, align 4
+ %23 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %24 = load %struct.btActionInterface*** %23, align 4 ; [#uses=2]
+ %25 = icmp eq %struct.btActionInterface** %24, null ; [#uses=1]
+ br i1 %25, label %_ZN20btAlignedObjectArrayIP21btBroadphaseInterfaceED1Ev.exit, label %bb.i.i.i38
+
+bb.i.i.i38: ; preds = %bb12
+ %26 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %27 = load i8* %26, align 4 ; [#uses=1]
+ %toBool.i.i.i37 = icmp eq i8 %27, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i37, label %bb2.i.i.i40, label %bb1.i.i.i39
+
+bb1.i.i.i39: ; preds = %bb.i.i.i38
+ %28 = bitcast %struct.btActionInterface** %24 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %28)
+ br label %bb2.i.i.i40
+
+bb2.i.i.i40: ; preds = %bb1.i.i.i39, %bb.i.i.i38
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %23, align 4
+ br label %_ZN20btAlignedObjectArrayIP21btBroadphaseInterfaceED1Ev.exit
+
+_ZN20btAlignedObjectArrayIP21btBroadphaseInterfaceED1Ev.exit: ; preds = %bb2.i.i.i40, %bb12
+ %29 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %29, align 4
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %23, align 4
+ %30 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %30, align 4
+ %31 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %31, align 4
+ %32 = bitcast %struct.btMultiSapBroadphase* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %32) nounwind
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select20 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad21: ; preds = %invcont, %bb
+ %eh_ptr22 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select24 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr22, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %33 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %34 = load %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %33, align 4 ; [#uses=2]
+ %35 = icmp eq %"struct.btMultiSapBroadphase::btMultiSapProxy"** %34, null ; [#uses=1]
+ br i1 %35, label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEED1Ev.exit46, label %bb.i.i.i42
+
+bb.i.i.i42: ; preds = %lpad21
+ %36 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %37 = load i8* %36, align 4 ; [#uses=1]
+ %toBool.i.i.i41 = icmp eq i8 %37, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i41, label %bb2.i.i.i44, label %bb1.i.i.i43
+
+bb1.i.i.i43: ; preds = %bb.i.i.i42
+ %38 = bitcast %"struct.btMultiSapBroadphase::btMultiSapProxy"** %34 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %38)
+ to label %bb2.i.i.i44 unwind label %lpad25
+
+bb2.i.i.i44: ; preds = %bb1.i.i.i43, %bb.i.i.i42
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"** null, %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %33, align 4
+ br label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEED1Ev.exit46
+
+_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEED1Ev.exit46: ; preds = %bb2.i.i.i44, %lpad21
+ %39 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %39, align 4
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"** null, %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %33, align 4
+ %40 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %40, align 4
+ %41 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %41, align 4
+ br label %ppad
+
+lpad25: ; preds = %bb1.i.i.i43
+ %eh_ptr26 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select28 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr26, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad29: ; preds = %bb1.i.i.i49
+ %eh_ptr30 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select32 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr30, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEED1Ev.exit46, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr22, %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEED1Ev.exit46 ] ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %43 = load %struct.btActionInterface*** %42, align 4 ; [#uses=2]
+ %44 = icmp eq %struct.btActionInterface** %43, null ; [#uses=1]
+ br i1 %44, label %invcont10, label %bb.i.i.i48
+
+bb.i.i.i48: ; preds = %ppad
+ %45 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %46 = load i8* %45, align 4 ; [#uses=1]
+ %toBool.i.i.i47 = icmp eq i8 %46, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i47, label %bb2.i.i.i50, label %bb1.i.i.i49
+
+bb1.i.i.i49: ; preds = %bb.i.i.i48
+ %47 = bitcast %struct.btActionInterface** %43 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %47)
+ to label %bb2.i.i.i50 unwind label %lpad29
+
+bb2.i.i.i50: ; preds = %bb1.i.i.i49, %bb.i.i.i48
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %42, align 4
+ br label %invcont10
+}
+
+; [#uses=1]
+define void @_ZN20btMultiSapBroadphaseD1Ev(%struct.btMultiSapBroadphase* nocapture %this) align 2 {
+entry:
+ tail call void @_ZN20btMultiSapBroadphaseD2Ev(%struct.btMultiSapBroadphase* %this)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN20btMultiSapBroadphaseD2Ev(%struct.btMultiSapBroadphase* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV20btMultiSapBroadphase, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 5 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 3 ; [#uses=2]
+ %4 = load %struct..0btMultiSapOverlapFilterCallback** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ invoke void %8(%struct..0btMultiSapOverlapFilterCallback* %4)
+ to label %invcont unwind label %lpad21
+
+invcont: ; preds = %bb
+ %9 = load %struct..0btMultiSapOverlapFilterCallback** %3, align 4 ; [#uses=1]
+ %10 = bitcast %struct..0btMultiSapOverlapFilterCallback* %9 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %10)
+ to label %bb5 unwind label %lpad21
+
+bb5: ; preds = %invcont, %entry
+ %11 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %12 = load %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %11, align 4 ; [#uses=2]
+ %13 = icmp eq %"struct.btMultiSapBroadphase::btMultiSapProxy"** %12, null ; [#uses=1]
+ br i1 %13, label %bb12, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb5
+ %14 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %15 = load i8* %14, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %15, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %16 = bitcast %"struct.btMultiSapBroadphase::btMultiSapProxy"** %12 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %16)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"** null, %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %11, align 4
+ br label %bb12
+
+invcont10: ; preds = %bb2.i.i.i50, %ppad
+ %17 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %17, align 4
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %41, align 4
+ %18 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %19, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb12: ; preds = %bb2.i.i.i, %bb5
+ %20 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %20, align 4
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"** null, %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %11, align 4
+ %21 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %22, align 4
+ %23 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %24 = load %struct.btActionInterface*** %23, align 4 ; [#uses=2]
+ %25 = icmp eq %struct.btActionInterface** %24, null ; [#uses=1]
+ br i1 %25, label %_ZN20btAlignedObjectArrayIP21btBroadphaseInterfaceED1Ev.exit, label %bb.i.i.i38
+
+bb.i.i.i38: ; preds = %bb12
+ %26 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %27 = load i8* %26, align 4 ; [#uses=1]
+ %toBool.i.i.i37 = icmp eq i8 %27, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i37, label %bb2.i.i.i40, label %bb1.i.i.i39
+
+bb1.i.i.i39: ; preds = %bb.i.i.i38
+ %28 = bitcast %struct.btActionInterface** %24 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %28)
+ br label %bb2.i.i.i40
+
+bb2.i.i.i40: ; preds = %bb1.i.i.i39, %bb.i.i.i38
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %23, align 4
+ br label %_ZN20btAlignedObjectArrayIP21btBroadphaseInterfaceED1Ev.exit
+
+_ZN20btAlignedObjectArrayIP21btBroadphaseInterfaceED1Ev.exit: ; preds = %bb2.i.i.i40, %bb12
+ %29 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %29, align 4
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %23, align 4
+ %30 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %30, align 4
+ %31 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %31, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select20 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad21: ; preds = %invcont, %bb
+ %eh_ptr22 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select24 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr22, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %32 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %33 = load %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %32, align 4 ; [#uses=2]
+ %34 = icmp eq %"struct.btMultiSapBroadphase::btMultiSapProxy"** %33, null ; [#uses=1]
+ br i1 %34, label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEED1Ev.exit46, label %bb.i.i.i42
+
+bb.i.i.i42: ; preds = %lpad21
+ %35 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %36 = load i8* %35, align 4 ; [#uses=1]
+ %toBool.i.i.i41 = icmp eq i8 %36, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i41, label %bb2.i.i.i44, label %bb1.i.i.i43
+
+bb1.i.i.i43: ; preds = %bb.i.i.i42
+ %37 = bitcast %"struct.btMultiSapBroadphase::btMultiSapProxy"** %33 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %37)
+ to label %bb2.i.i.i44 unwind label %lpad25
+
+bb2.i.i.i44: ; preds = %bb1.i.i.i43, %bb.i.i.i42
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"** null, %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %32, align 4
+ br label %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEED1Ev.exit46
+
+_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEED1Ev.exit46: ; preds = %bb2.i.i.i44, %lpad21
+ %38 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %38, align 4
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"** null, %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %32, align 4
+ %39 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %39, align 4
+ %40 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %40, align 4
+ br label %ppad
+
+lpad25: ; preds = %bb1.i.i.i43
+ %eh_ptr26 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select28 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr26, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad29: ; preds = %bb1.i.i.i49
+ %eh_ptr30 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select32 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr30, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEED1Ev.exit46, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr22, %_ZN20btAlignedObjectArrayIPN20btMultiSapBroadphase15btMultiSapProxyEED1Ev.exit46 ] ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %42 = load %struct.btActionInterface*** %41, align 4 ; [#uses=2]
+ %43 = icmp eq %struct.btActionInterface** %42, null ; [#uses=1]
+ br i1 %43, label %invcont10, label %bb.i.i.i48
+
+bb.i.i.i48: ; preds = %ppad
+ %44 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %45 = load i8* %44, align 4 ; [#uses=1]
+ %toBool.i.i.i47 = icmp eq i8 %45, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i47, label %bb2.i.i.i50, label %bb1.i.i.i49
+
+bb1.i.i.i49: ; preds = %bb.i.i.i48
+ %46 = bitcast %struct.btActionInterface** %42 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %46)
+ to label %bb2.i.i.i50 unwind label %lpad29
+
+bb2.i.i.i50: ; preds = %bb1.i.i.i49, %bb.i.i.i48
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %41, align 4
+ br label %invcont10
+}
+
+; [#uses=0]
+define void @_ZN20btMultiSapBroadphase9buildTreeERK9btVector3S2_(%struct.btMultiSapBroadphase* nocapture %this, %struct.btQuadWord* %bvhAabbMin, %struct.btQuadWord* %bvhAabbMax) align 2 {
+entry:
+ %aabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %aabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = call i8* @_Z22btAlignedAllocInternalji(i32 172, i32 16) ; [#uses=2]
+ %1 = bitcast i8* %0 to %struct.btQuantizedBvh* ; [#uses=3]
+ invoke void @_ZN14btQuantizedBvhC1Ev(%struct.btQuantizedBvh* %1)
+ to label %bb3 unwind label %lpad
+
+invcont1: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 4 ; [#uses=4]
+ store %struct.btQuantizedBvh* %1, %struct.btQuantizedBvh** %2, align 4
+ call void @_ZN14btQuantizedBvh21setQuantizationValuesERK9btVector3S2_f(%struct.btQuantizedBvh* %1, %struct.btQuadWord* %bvhAabbMin, %struct.btQuadWord* %bvhAabbMax, float 1.000000e+00)
+ %3 = load %struct.btQuantizedBvh** %2, align 4 ; [#uses=5]
+ %4 = getelementptr inbounds %struct.btQuantizedBvh* %3, i32 0, i32 9 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = icmp sgt i32 %6, 0 ; [#uses=1]
+ br i1 %7, label %bb.nph, label %bb6
+
+bb.nph: ; preds = %bb3
+ %8 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuantizedBvh* %3, i32 0, i32 9, i32 1 ; [#uses=4]
+ %16 = getelementptr inbounds %struct.btQuantizedBvh* %3, i32 0, i32 9, i32 2 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuantizedBvh* %3, i32 0, i32 9, i32 3 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE9push_backERKS0_.exit, %bb.nph
+ %18 = phi i32 [ 0, %bb.nph ], [ %tmp, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE9push_backERKS0_.exit ] ; [#uses=3]
+ %tmp = add i32 %18, 1 ; [#uses=2]
+ %19 = load %struct.btActionInterface*** %8, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btActionInterface** %19, i32 %18 ; [#uses=1]
+ %20 = load %struct.btActionInterface** %scevgep, align 4 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btActionInterface* %20, i32 0, i32 0 ; [#uses=1]
+ %22 = load i32 (...)*** %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds i32 (...)** %22, i32 11 ; [#uses=1]
+ %24 = load i32 (...)** %23, align 4 ; [#uses=1]
+ %25 = bitcast i32 (...)* %24 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %25(%struct.btActionInterface* %20, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ %26 = load %struct.btQuantizedBvh** %2, align 4 ; [#uses=6]
+ %27 = load float* %9, align 8 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuantizedBvh* %26, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=2]
+ %30 = fsub float %27, %29 ; [#uses=1]
+ %31 = load float* %10, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuantizedBvh* %26, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=2]
+ %34 = fsub float %31, %33 ; [#uses=1]
+ %35 = load float* %11, align 8 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuantizedBvh* %26, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=2]
+ %38 = fsub float %35, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuantizedBvh* %26, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=2]
+ %41 = fmul float %30, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuantizedBvh* %26, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=2]
+ %44 = fmul float %34, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btQuantizedBvh* %26, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=2]
+ %47 = fmul float %38, %46 ; [#uses=1]
+ %48 = fptoui float %47 to i16 ; [#uses=1]
+ %49 = and i16 %48, -2 ; [#uses=1]
+ %50 = fptoui float %44 to i16 ; [#uses=1]
+ %51 = and i16 %50, -2 ; [#uses=1]
+ %52 = fptoui float %41 to i16 ; [#uses=1]
+ %53 = and i16 %52, -2 ; [#uses=1]
+ %54 = load float* %12, align 8 ; [#uses=1]
+ %55 = fsub float %54, %29 ; [#uses=1]
+ %56 = load float* %13, align 4 ; [#uses=1]
+ %57 = fsub float %56, %33 ; [#uses=1]
+ %58 = load float* %14, align 8 ; [#uses=1]
+ %59 = fsub float %58, %37 ; [#uses=1]
+ %60 = fmul float %55, %40 ; [#uses=1]
+ %61 = fmul float %57, %43 ; [#uses=1]
+ %62 = fmul float %59, %46 ; [#uses=1]
+ %63 = fadd float %62, 1.000000e+00 ; [#uses=1]
+ %64 = fptoui float %63 to i16 ; [#uses=1]
+ %65 = or i16 %64, 1 ; [#uses=1]
+ %66 = fadd float %61, 1.000000e+00 ; [#uses=1]
+ %67 = fptoui float %66 to i16 ; [#uses=1]
+ %68 = or i16 %67, 1 ; [#uses=1]
+ %69 = fadd float %60, 1.000000e+00 ; [#uses=1]
+ %70 = fptoui float %69 to i16 ; [#uses=1]
+ %71 = or i16 %70, 1 ; [#uses=1]
+ %72 = load i32* %15, align 4 ; [#uses=4]
+ %73 = load i32* %16, align 4 ; [#uses=1]
+ %74 = icmp eq i32 %73, %72 ; [#uses=1]
+ br i1 %74, label %bb.i, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE9push_backERKS0_.exit
+
+bb.i: ; preds = %bb4
+ %75 = icmp eq i32 %72, 0 ; [#uses=1]
+ %76 = shl i32 %72, 1 ; [#uses=1]
+ %iftmp.195.0.i.i = select i1 %75, i32 1, i32 %76 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(%struct.QuantizedNodeArray* %4, i32 %iftmp.195.0.i.i) inlinehint
+ %.pre.i = load i32* %15, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE9push_backERKS0_.exit
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE9push_backERKS0_.exit: ; preds = %bb.i, %bb4
+ %77 = phi i32 [ %.pre.i, %bb.i ], [ %72, %bb4 ] ; [#uses=7]
+ %78 = load %struct.BT_QUANTIZED_BVH_NODE** %17, align 4 ; [#uses=7]
+ %79 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %78, i32 %77, i32 0, i32 0 ; [#uses=1]
+ store i16 %49, i16* %79, align 4
+ %80 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %78, i32 %77, i32 0, i32 1 ; [#uses=1]
+ store i16 %51, i16* %80, align 2
+ %81 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %78, i32 %77, i32 0, i32 2 ; [#uses=1]
+ store i16 %53, i16* %81, align 4
+ %82 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %78, i32 %77, i32 1, i32 0 ; [#uses=1]
+ store i16 %65, i16* %82, align 2
+ %83 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %78, i32 %77, i32 1, i32 1 ; [#uses=1]
+ store i16 %68, i16* %83, align 2
+ %84 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %78, i32 %77, i32 1, i32 2 ; [#uses=1]
+ store i16 %71, i16* %84, align 2
+ %85 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %78, i32 %77, i32 2 ; [#uses=1]
+ store i32 %18, i32* %85, align 4
+ %86 = load i32* %15, align 4 ; [#uses=1]
+ %87 = add nsw i32 %86, 1 ; [#uses=1]
+ store i32 %87, i32* %15, align 4
+ %88 = load i32* %5, align 4 ; [#uses=1]
+ %89 = icmp sgt i32 %88, %tmp ; [#uses=1]
+ br i1 %89, label %bb4, label %bb5.bb6_crit_edge
+
+bb5.bb6_crit_edge: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE9push_backERKS0_.exit
+ %.pre = load %struct.btQuantizedBvh** %2, align 4 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb5.bb6_crit_edge, %bb3
+ %90 = phi %struct.btQuantizedBvh* [ %.pre, %bb5.bb6_crit_edge ], [ %3, %bb3 ] ; [#uses=1]
+ call void @_ZN14btQuantizedBvh13buildInternalEv(%struct.btQuantizedBvh* %90)
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %0)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN20btMultiSapBroadphaseC2EiP22btOverlappingPairCache(%struct.btMultiSapBroadphase* nocapture %this, i32 %unnamed_arg, %struct..0btMultiSapOverlapFilterCallback* %pairCache) align 2 {
+invcont1:
+ %0 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV20btMultiSapBroadphase, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 4 ; [#uses=3]
+ store i8 1, i8* %1, align 4
+ %2 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 3 ; [#uses=4]
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %2, align 4
+ %3 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 3 ; [#uses=3]
+ store %struct..0btMultiSapOverlapFilterCallback* %pairCache, %struct..0btMultiSapOverlapFilterCallback** %5, align 4
+ %6 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btQuantizedBvh* null, %struct.btQuantizedBvh** %6, align 4
+ %7 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 5 ; [#uses=2]
+ store i8 0, i8* %7, align 4
+ %8 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 4 ; [#uses=3]
+ store i8 1, i8* %9, align 4
+ %10 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 3 ; [#uses=4]
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"** null, %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %10, align 4
+ %11 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 1 ; [#uses=2]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 8, i32 2 ; [#uses=2]
+ store i32 0, i32* %12, align 4
+ %13 = icmp eq %struct..0btMultiSapOverlapFilterCallback* %pairCache, null ; [#uses=1]
+ br i1 %13, label %bb, label %bb10
+
+bb: ; preds = %invcont1
+ store i8 1, i8* %7, align 4
+ %14 = invoke i8* @_Z22btAlignedAllocInternalji(i32 36, i32 16)
+ to label %invcont3 unwind label %lpad36 ; [#uses=3]
+
+invcont3: ; preds = %bb
+ %15 = icmp eq i8* %14, null ; [#uses=1]
+ br i1 %15, label %bb9, label %bb4
+
+bb4: ; preds = %invcont3
+ %16 = bitcast i8* %14 to %struct.btSortedOverlappingPairCache* ; [#uses=1]
+ invoke void @_ZN28btSortedOverlappingPairCacheC1Ev(%struct.btSortedOverlappingPairCache* %16)
+ to label %bb9 unwind label %lpad40
+
+bb9: ; preds = %bb4, %invcont3
+ %17 = bitcast i8* %14 to %struct..0btMultiSapOverlapFilterCallback* ; [#uses=1]
+ store %struct..0btMultiSapOverlapFilterCallback* %17, %struct..0btMultiSapOverlapFilterCallback** %5, align 4
+ br label %bb10
+
+bb10: ; preds = %bb9, %invcont1
+ %18 = invoke i8* @_Z22btAlignedAllocInternalji(i32 4, i32 16)
+ to label %invcont11 unwind label %lpad36 ; [#uses=3]
+
+invcont11: ; preds = %bb10
+ %19 = icmp eq i8* %18, null ; [#uses=1]
+ br i1 %19, label %bb14, label %bb12
+
+bb12: ; preds = %invcont11
+ %20 = bitcast i8* %18 to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN20btMultiSapBroadphaseC4EiP22btOverlappingPairCacheE31btMultiSapOverlapFilterCallback, i32 0, i32 2), i32 (...)*** %20, align 4
+ br label %bb14
+
+bb14: ; preds = %bb12, %invcont11
+ %21 = bitcast i8* %18 to %struct.btActionInterface* ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btMultiSapBroadphase* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* %21, %struct.btActionInterface** %22, align 4
+ %23 = load %struct..0btMultiSapOverlapFilterCallback** %5, align 4 ; [#uses=2]
+ %24 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %23, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = load i32 (...)*** %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds i32 (...)** %25, i32 11 ; [#uses=1]
+ %27 = load i32 (...)** %26, align 4 ; [#uses=1]
+ %28 = bitcast i32 (...)* %27 to void (%struct..0btMultiSapOverlapFilterCallback*, %struct.btActionInterface*)* ; [#uses=1]
+ invoke void %28(%struct..0btMultiSapOverlapFilterCallback* %23, %struct.btActionInterface* %21)
+ to label %return unwind label %lpad36
+
+return: ; preds = %bb14
+ ret void
+
+lpad36: ; preds = %bb14, %bb10, %bb
+ %eh_ptr37 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select39 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr37, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad53
+
+lpad40: ; preds = %bb4
+ %eh_ptr41 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select43 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr41, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad53
+
+lpad44: ; preds = %bb1.i.i.i
+ %eh_ptr45 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select47 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr45, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad48: ; preds = %bb1.i.i.i60
+ %eh_ptr49 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select51 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr49, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i61, %ppad52
+ store i8 1, i8* %1, align 4
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %2, align 4
+ store i32 0, i32* %3, align 4
+ store i32 0, i32* %4, align 4
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV21btBroadphaseInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+ppad52: ; preds = %bb2.i.i.i, %ppad53
+ store i8 1, i8* %9, align 4
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"** null, %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %10, align 4
+ store i32 0, i32* %11, align 4
+ store i32 0, i32* %12, align 4
+ %29 = load %struct.btActionInterface*** %2, align 4 ; [#uses=2]
+ %30 = icmp eq %struct.btActionInterface** %29, null ; [#uses=1]
+ br i1 %30, label %ppad, label %bb.i.i.i59
+
+bb.i.i.i59: ; preds = %ppad52
+ %31 = load i8* %1, align 4 ; [#uses=1]
+ %toBool.i.i.i58 = icmp eq i8 %31, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i58, label %bb2.i.i.i61, label %bb1.i.i.i60
+
+bb1.i.i.i60: ; preds = %bb.i.i.i59
+ %32 = bitcast %struct.btActionInterface** %29 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %32)
+ to label %bb2.i.i.i61 unwind label %lpad48
+
+bb2.i.i.i61: ; preds = %bb1.i.i.i60, %bb.i.i.i59
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %2, align 4
+ br label %ppad
+
+ppad53: ; preds = %lpad40, %lpad36
+ %eh_exception.0 = phi i8* [ %eh_ptr37, %lpad36 ], [ %eh_ptr41, %lpad40 ] ; [#uses=1]
+ %33 = load %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %10, align 4 ; [#uses=2]
+ %34 = icmp eq %"struct.btMultiSapBroadphase::btMultiSapProxy"** %33, null ; [#uses=1]
+ br i1 %34, label %ppad52, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %ppad53
+ %35 = load i8* %9, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %35, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %36 = bitcast %"struct.btMultiSapBroadphase::btMultiSapProxy"** %33 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %36)
+ to label %bb2.i.i.i unwind label %lpad44
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %"struct.btMultiSapBroadphase::btMultiSapProxy"** null, %"struct.btMultiSapBroadphase::btMultiSapProxy"*** %10, align 4
+ br label %ppad52
+}
+
+; [#uses=0]
+define void @_ZN20btMultiSapBroadphaseC1EiP22btOverlappingPairCache(%struct.btMultiSapBroadphase* nocapture %this, i32 %unnamed_arg, %struct..0btMultiSapOverlapFilterCallback* %pairCache) align 2 {
+entry:
+ tail call void @_ZN20btMultiSapBroadphaseC2EiP22btOverlappingPairCache(%struct.btMultiSapBroadphase* %this, i32 %unnamed_arg, %struct..0btMultiSapOverlapFilterCallback* %pairCache)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %"struct.btAlignedObjectArray<btBroadphasePair>"* @_ZN28btHashedOverlappingPairCache23getOverlappingPairArrayEv(%struct.btHashedOverlappingPairCache* %this) nounwind readnone align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1 ; [#uses=1]
+ ret %"struct.btAlignedObjectArray<btBroadphasePair>"* %0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN28btHashedOverlappingPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback(%struct.btHashedOverlappingPairCache* nocapture %this, %struct.btActionInterface* %callback) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %callback, %struct.btActionInterface** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZN28btHashedOverlappingPairCache18hasDeferredRemovalEv(%struct.btHashedOverlappingPairCache* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN28btHashedOverlappingPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback(%struct.btHashedOverlappingPairCache* nocapture %this, %struct.btActionInterface* %ghostPairCallback) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* %ghostPairCallback, %struct.btActionInterface** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %"struct.btAlignedObjectArray<btBroadphasePair>"* @_ZN28btSortedOverlappingPairCache23getOverlappingPairArrayEv(%struct.btSortedOverlappingPairCache* %this) nounwind readnone align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1 ; [#uses=1]
+ ret %"struct.btAlignedObjectArray<btBroadphasePair>"* %0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN28btSortedOverlappingPairCache24setOverlapFilterCallbackEP23btOverlapFilterCallback(%struct.btSortedOverlappingPairCache* nocapture %this, %struct.btActionInterface* %callback) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btActionInterface* %callback, %struct.btActionInterface** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZN28btSortedOverlappingPairCache18hasDeferredRemovalEv(%struct.btSortedOverlappingPairCache* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 3 ; [#uses=1]
+ %1 = load i8* %0, align 1 ; [#uses=1]
+ ret i8 %1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN28btSortedOverlappingPairCache28setInternalGhostPairCallbackEP25btOverlappingPairCallback(%struct.btSortedOverlappingPairCache* nocapture %this, %struct.btActionInterface* %ghostPairCallback) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btActionInterface* %ghostPairCallback, %struct.btActionInterface** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN28btHashedOverlappingPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher(%struct.btHashedOverlappingPairCache* nocapture %this, %struct.btBroadphasePair* nocapture %pair, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphasePair* %pair, i32 0, i32 2 ; [#uses=3]
+ %1 = load %struct.btCollisionAlgorithm** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.btCollisionAlgorithm* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btCollisionAlgorithm* %1, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ tail call void %6(%struct.btCollisionAlgorithm* %1)
+ %7 = getelementptr inbounds %struct.btActionInterface* %dispatcher, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 13 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = load %struct.btCollisionAlgorithm** %0, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %10 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %13 = bitcast %struct.btCollisionAlgorithm* %11 to i8* ; [#uses=1]
+ tail call void %12(%struct.btActionInterface* %dispatcher, i8* %13)
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %0, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btOverlapCallbackD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV17btOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btOverlapCallbackD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV17btOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD1Ev(%struct..0CleanPairCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0CleanPairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD0Ev(%struct..0CleanPairCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0CleanPairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..0CleanPairCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal zeroext i8 @_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallback14processOverlapER16btBroadphasePair(%struct..0CleanPairCallback* nocapture %this, %struct.btBroadphasePair* %pair) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphasePair* %pair, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btBroadphaseProxy** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct..0CleanPairCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load %struct.btBroadphaseProxy** %2, align 4 ; [#uses=2]
+ %4 = icmp eq %struct.btBroadphaseProxy* %1, %3 ; [#uses=1]
+ br i1 %4, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btBroadphasePair* %pair, i32 0, i32 1 ; [#uses=1]
+ %6 = load %struct.btBroadphaseProxy** %5, align 4 ; [#uses=1]
+ %7 = icmp eq %struct.btBroadphaseProxy* %6, %3 ; [#uses=1]
+ br i1 %7, label %bb1, label %bb2
+
+bb1: ; preds = %bb, %entry
+ %8 = getelementptr inbounds %struct..0CleanPairCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %9 = load %struct..0btMultiSapOverlapFilterCallback** %8, align 4 ; [#uses=2]
+ %10 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %9, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 8 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct..0CleanPairCallback* %this, i32 0, i32 3 ; [#uses=1]
+ %15 = load %struct.btActionInterface** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %13 to void (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphasePair*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %16(%struct..0btMultiSapOverlapFilterCallback* %9, %struct.btBroadphasePair* %pair, %struct.btActionInterface* %15)
+ ret i8 0
+
+bb2: ; preds = %bb
+ ret i8 0
+}
+
+; [#uses=1]
+define void @_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD1Ev(%struct..1RemovePairCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1RemovePairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD0Ev(%struct..1RemovePairCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1RemovePairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..1RemovePairCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal zeroext i8 @_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallback14processOverlapER16btBroadphasePair(%struct..1RemovePairCallback* nocapture %this, %struct.btBroadphasePair* nocapture %pair) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphasePair* %pair, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btBroadphaseProxy** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct..1RemovePairCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load %struct.btBroadphaseProxy** %2, align 4 ; [#uses=2]
+ %4 = icmp eq %struct.btBroadphaseProxy* %1, %3 ; [#uses=1]
+ br i1 %4, label %bb3, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btBroadphasePair* %pair, i32 0, i32 1 ; [#uses=1]
+ %6 = load %struct.btBroadphaseProxy** %5, align 4 ; [#uses=1]
+ %7 = icmp eq %struct.btBroadphaseProxy* %6, %3 ; [#uses=1]
+ %retval = zext i1 %7 to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb3: ; preds = %entry
+ ret i8 1
+}
+
+; [#uses=1]
+define void @_ZN28btSortedOverlappingPairCache20cleanOverlappingPairER16btBroadphasePairP12btDispatcher(%struct.btSortedOverlappingPairCache* nocapture %this, %struct.btBroadphasePair* nocapture %pair, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphasePair* %pair, i32 0, i32 2 ; [#uses=3]
+ %1 = load %struct.btCollisionAlgorithm** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.btCollisionAlgorithm* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btCollisionAlgorithm* %1, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ tail call void %6(%struct.btCollisionAlgorithm* %1)
+ %7 = getelementptr inbounds %struct.btActionInterface* %dispatcher, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 13 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = load %struct.btCollisionAlgorithm** %0, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %10 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %13 = bitcast %struct.btCollisionAlgorithm* %11 to i8* ; [#uses=1]
+ tail call void %12(%struct.btActionInterface* %dispatcher, i8* %13)
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %0, align 4
+ %14 = load i32* @gRemovePairs, align 4 ; [#uses=1]
+ %15 = add nsw i32 %14, -1 ; [#uses=1]
+ store i32 %15, i32* @gRemovePairs, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD1Ev(%struct..0CleanPairCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0CleanPairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD0Ev(%struct..0CleanPairCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0CleanPairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..0CleanPairCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal zeroext i8 @_ZZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallback14processOverlapER16btBroadphasePair(%struct..0CleanPairCallback* nocapture %this, %struct.btBroadphasePair* %pair) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphasePair* %pair, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btBroadphaseProxy** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct..0CleanPairCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load %struct.btBroadphaseProxy** %2, align 4 ; [#uses=2]
+ %4 = icmp eq %struct.btBroadphaseProxy* %1, %3 ; [#uses=1]
+ br i1 %4, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btBroadphasePair* %pair, i32 0, i32 1 ; [#uses=1]
+ %6 = load %struct.btBroadphaseProxy** %5, align 4 ; [#uses=1]
+ %7 = icmp eq %struct.btBroadphaseProxy* %6, %3 ; [#uses=1]
+ br i1 %7, label %bb1, label %bb2
+
+bb1: ; preds = %bb, %entry
+ %8 = getelementptr inbounds %struct..0CleanPairCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %9 = load %struct..0btMultiSapOverlapFilterCallback** %8, align 4 ; [#uses=2]
+ %10 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %9, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 8 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct..0CleanPairCallback* %this, i32 0, i32 3 ; [#uses=1]
+ %15 = load %struct.btActionInterface** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %13 to void (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphasePair*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %16(%struct..0btMultiSapOverlapFilterCallback* %9, %struct.btBroadphasePair* %pair, %struct.btActionInterface* %15)
+ ret i8 0
+
+bb2: ; preds = %bb
+ ret i8 0
+}
+
+; [#uses=1]
+define void @_ZZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD1Ev(%struct..1RemovePairCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1RemovePairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD0Ev(%struct..1RemovePairCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1RemovePairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..1RemovePairCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal zeroext i8 @_ZZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallback14processOverlapER16btBroadphasePair(%struct..1RemovePairCallback* nocapture %this, %struct.btBroadphasePair* nocapture %pair) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphasePair* %pair, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btBroadphaseProxy** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct..1RemovePairCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load %struct.btBroadphaseProxy** %2, align 4 ; [#uses=2]
+ %4 = icmp eq %struct.btBroadphaseProxy* %1, %3 ; [#uses=1]
+ br i1 %4, label %bb3, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btBroadphasePair* %pair, i32 0, i32 1 ; [#uses=1]
+ %6 = load %struct.btBroadphaseProxy** %5, align 4 ; [#uses=1]
+ %7 = icmp eq %struct.btBroadphaseProxy* %6, %3 ; [#uses=1]
+ %retval = zext i1 %7 to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb3: ; preds = %entry
+ ret i8 1
+}
+
+; [#uses=1]
+define void @_ZN28btSortedOverlappingPairCache20sortOverlappingPairsEP12btDispatcher(%struct.btSortedOverlappingPairCache* nocapture %this, %struct.btActionInterface* nocapture %dispatcher) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btBroadphasePair* @_ZN28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv(%struct.btHashedOverlappingPairCache* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %1 = load %struct.btBroadphasePair** %0, align 4 ; [#uses=1]
+ ret %struct.btBroadphasePair* %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btBroadphasePair* @_ZN28btSortedOverlappingPairCache26getOverlappingPairArrayPtrEv(%struct.btSortedOverlappingPairCache* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %1 = load %struct.btBroadphasePair** %0, align 4 ; [#uses=1]
+ ret %struct.btBroadphasePair* %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btBroadphasePair* @_ZNK28btHashedOverlappingPairCache26getOverlappingPairArrayPtrEv(%struct.btHashedOverlappingPairCache* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %1 = load %struct.btBroadphasePair** %0, align 4 ; [#uses=1]
+ ret %struct.btBroadphasePair* %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btBroadphasePair* @_ZNK28btSortedOverlappingPairCache26getOverlappingPairArrayPtrEv(%struct.btSortedOverlappingPairCache* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %1 = load %struct.btBroadphasePair** %0, align 4 ; [#uses=1]
+ ret %struct.btBroadphasePair* %1
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK28btHashedOverlappingPairCache22getNumOverlappingPairsEv(%struct.btHashedOverlappingPairCache* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK28btSortedOverlappingPairCache22getNumOverlappingPairsEv(%struct.btSortedOverlappingPairCache* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=1]
+define void @_ZN28btHashedOverlappingPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher(%struct.btHashedOverlappingPairCache* %this, %struct.btActionInterface* %callback, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btActionInterface* %callback, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb3.outer
+
+bb: ; preds = %bb3
+ %4 = load %struct.btBroadphasePair** %1, align 4 ; [#uses=3]
+ %5 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 2 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to i8 (%struct.btActionInterface*, %struct.btBroadphasePair*)* ; [#uses=1]
+ %scevgep = getelementptr %struct.btBroadphasePair* %4, i32 %20 ; [#uses=1]
+ %9 = tail call zeroext i8 %8(%struct.btActionInterface* %callback, %struct.btBroadphasePair* %scevgep) ; [#uses=1]
+ %toBool = icmp eq i8 %9, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %10 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i32 (...)** %10, i32 3 ; [#uses=1]
+ %12 = load i32 (...)** %11, align 4 ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btBroadphasePair* %4, i32 %20, i32 1 ; [#uses=1]
+ %13 = load %struct.btBroadphaseProxy** %scevgep6, align 4 ; [#uses=1]
+ %scevgep78 = getelementptr inbounds %struct.btBroadphasePair* %4, i32 %20, i32 0 ; [#uses=1]
+ %14 = load %struct.btBroadphaseProxy** %scevgep78, align 4 ; [#uses=1]
+ %15 = bitcast i32 (...)* %12 to i8* (%struct.btHashedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %16 = tail call i8* %15(%struct.btHashedOverlappingPairCache* %this, %struct.btBroadphaseProxy* %14, %struct.btBroadphaseProxy* %13, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ %17 = load i32* @gOverlappingPairs, align 4 ; [#uses=1]
+ %18 = add nsw i32 %17, -1 ; [#uses=1]
+ store i32 %18, i32* @gOverlappingPairs, align 4
+ br label %bb3
+
+bb2: ; preds = %bb
+ %19 = add nsw i32 %20, 1 ; [#uses=1]
+ br label %bb3.outer
+
+bb3.outer: ; preds = %bb2, %entry
+ %20 = phi i32 [ 0, %entry ], [ %19, %bb2 ] ; [#uses=5]
+ br label %bb3
+
+bb3: ; preds = %bb3.outer, %bb1
+ %21 = load i32* %0, align 4 ; [#uses=1]
+ %22 = icmp sgt i32 %21, %20 ; [#uses=1]
+ br i1 %22, label %bb, label %return
+
+return: ; preds = %bb3
+ ret void
+}
+
+; [#uses=1]
+define %struct.btBroadphasePair* @_ZN28btHashedOverlappingPairCache8findPairEP17btBroadphaseProxyS1_(%struct.btHashedOverlappingPairCache* nocapture %this, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1) nounwind align 2 {
+entry:
+ %0 = load i32* @gFindPairs, align 4 ; [#uses=1]
+ %1 = add nsw i32 %0, 1 ; [#uses=1]
+ store i32 %1, i32* @gFindPairs, align 4
+ %2 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 4 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 4 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp sgt i32 %3, %5 ; [#uses=2]
+ %proxy1_addr.0 = select i1 %6, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1 ; [#uses=1]
+ %proxy0_addr.0 = select i1 %6, %struct.btBroadphaseProxy* %proxy1, %struct.btBroadphaseProxy* %proxy0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0_addr.0, i32 0, i32 4 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1_addr.0, i32 0, i32 4 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=2]
+ %11 = shl i32 %10, 16 ; [#uses=1]
+ %12 = or i32 %11, %8 ; [#uses=2]
+ %13 = shl i32 %12, 15 ; [#uses=1]
+ %not.i = xor i32 %13, -1 ; [#uses=1]
+ %14 = add nsw i32 %12, %not.i ; [#uses=2]
+ %15 = ashr i32 %14, 10 ; [#uses=1]
+ %16 = xor i32 %15, %14 ; [#uses=1]
+ %17 = mul i32 %16, 9 ; [#uses=2]
+ %18 = ashr i32 %17, 6 ; [#uses=1]
+ %19 = xor i32 %18, %17 ; [#uses=2]
+ %20 = shl i32 %19, 11 ; [#uses=1]
+ %not2.i = xor i32 %20, -1 ; [#uses=1]
+ %21 = add nsw i32 %19, %not2.i ; [#uses=2]
+ %22 = ashr i32 %21, 16 ; [#uses=1]
+ %23 = xor i32 %22, %21 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ %26 = add nsw i32 %25, -1 ; [#uses=1]
+ %27 = and i32 %23, %26 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ %29 = load i32* %28, align 4 ; [#uses=1]
+ %30 = icmp sgt i32 %29, %27 ; [#uses=1]
+ br i1 %30, label %bb3, label %bb21
+
+bb3: ; preds = %entry
+ %31 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %32 = load i32** %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32* %32, i32 %27 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ br label %bb5
+
+bb4: ; preds = %_ZN28btHashedOverlappingPairCache10equalsPairERK16btBroadphasePairii.exit, %bb6
+ %36 = load i32** %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds i32* %36, i32 %index.0 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ %index.0.in = phi i32* [ %33, %bb3 ], [ %37, %bb4 ] ; [#uses=1]
+ %index.0 = load i32* %index.0.in, align 4 ; [#uses=5]
+ %cond = icmp eq i32 %index.0, -1 ; [#uses=1]
+ br i1 %cond, label %bb21, label %bb6
+
+bb6: ; preds = %bb5
+ %38 = load %struct.btBroadphasePair** %34, align 4 ; [#uses=3]
+ %39 = getelementptr inbounds %struct.btBroadphasePair* %38, i32 %index.0, i32 0 ; [#uses=1]
+ %40 = load %struct.btBroadphaseProxy** %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btBroadphaseProxy* %40, i32 0, i32 4 ; [#uses=1]
+ %42 = load i32* %41, align 4 ; [#uses=1]
+ %43 = icmp eq i32 %42, %8 ; [#uses=1]
+ br i1 %43, label %_ZN28btHashedOverlappingPairCache10equalsPairERK16btBroadphasePairii.exit, label %bb4
+
+_ZN28btHashedOverlappingPairCache10equalsPairERK16btBroadphasePairii.exit: ; preds = %bb6
+ %44 = getelementptr inbounds %struct.btBroadphasePair* %38, i32 %index.0, i32 1 ; [#uses=1]
+ %45 = load %struct.btBroadphaseProxy** %44, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btBroadphaseProxy* %45, i32 0, i32 4 ; [#uses=1]
+ %47 = load i32* %46, align 4 ; [#uses=1]
+ %phitmp = icmp eq i32 %47, %10 ; [#uses=1]
+ br i1 %phitmp, label %bb20, label %bb4
+
+bb20: ; preds = %_ZN28btHashedOverlappingPairCache10equalsPairERK16btBroadphasePairii.exit
+ %48 = getelementptr inbounds %struct.btBroadphasePair* %38, i32 %index.0 ; [#uses=1]
+ ret %struct.btBroadphasePair* %48
+
+bb21: ; preds = %bb5, %entry
+ ret %struct.btBroadphasePair* null
+}
+
+; [#uses=1]
+define i8* @_ZN28btHashedOverlappingPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher(%struct.btHashedOverlappingPairCache* %this, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = load i32* @gRemovePairs, align 4 ; [#uses=1]
+ %1 = add nsw i32 %0, 1 ; [#uses=1]
+ store i32 %1, i32* @gRemovePairs, align 4
+ %2 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 4 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 4 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp sgt i32 %3, %5 ; [#uses=2]
+ %proxy1_addr.0 = select i1 %6, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1 ; [#uses=2]
+ %proxy0_addr.0 = select i1 %6, %struct.btBroadphaseProxy* %proxy1, %struct.btBroadphaseProxy* %proxy0 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0_addr.0, i32 0, i32 4 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1_addr.0, i32 0, i32 4 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=2]
+ %11 = shl i32 %10, 16 ; [#uses=1]
+ %12 = or i32 %11, %8 ; [#uses=2]
+ %13 = shl i32 %12, 15 ; [#uses=1]
+ %not.i22 = xor i32 %13, -1 ; [#uses=1]
+ %14 = add nsw i32 %12, %not.i22 ; [#uses=2]
+ %15 = ashr i32 %14, 10 ; [#uses=1]
+ %16 = xor i32 %15, %14 ; [#uses=1]
+ %17 = mul i32 %16, 9 ; [#uses=2]
+ %18 = ashr i32 %17, 6 ; [#uses=1]
+ %19 = xor i32 %18, %17 ; [#uses=2]
+ %20 = shl i32 %19, 11 ; [#uses=1]
+ %not2.i23 = xor i32 %20, -1 ; [#uses=1]
+ %21 = add nsw i32 %19, %not2.i23 ; [#uses=2]
+ %22 = ashr i32 %21, 16 ; [#uses=1]
+ %23 = xor i32 %22, %21 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ %26 = add nsw i32 %25, -1 ; [#uses=1]
+ %27 = and i32 %23, %26 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 3 ; [#uses=5]
+ %29 = load i32** %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds i32* %29, i32 %27 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=4]
+ %32 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 3 ; [#uses=8]
+ br label %bb1.i
+
+bb.i: ; preds = %_ZN28btHashedOverlappingPairCache10equalsPairERK16btBroadphasePairii.exit.i, %bb2.i
+ %33 = load i32** %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds i32* %33, i32 %index.0.i ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %bb.i, %entry
+ %index.0.in.i = phi i32* [ %30, %entry ], [ %34, %bb.i ] ; [#uses=1]
+ %index.0.i = load i32* %index.0.in.i, align 4 ; [#uses=6]
+ %cond.i = icmp eq i32 %index.0.i, -1 ; [#uses=1]
+ br i1 %cond.i, label %bb20, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %35 = load %struct.btBroadphasePair** %31, align 4 ; [#uses=4]
+ %36 = getelementptr inbounds %struct.btBroadphasePair* %35, i32 %index.0.i, i32 0 ; [#uses=1]
+ %37 = load %struct.btBroadphaseProxy** %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btBroadphaseProxy* %37, i32 0, i32 4 ; [#uses=1]
+ %39 = load i32* %38, align 4 ; [#uses=1]
+ %40 = icmp eq i32 %39, %8 ; [#uses=1]
+ br i1 %40, label %_ZN28btHashedOverlappingPairCache10equalsPairERK16btBroadphasePairii.exit.i, label %bb.i
+
+_ZN28btHashedOverlappingPairCache10equalsPairERK16btBroadphasePairii.exit.i: ; preds = %bb2.i
+ %41 = getelementptr inbounds %struct.btBroadphasePair* %35, i32 %index.0.i, i32 1 ; [#uses=1]
+ %42 = load %struct.btBroadphaseProxy** %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btBroadphaseProxy* %42, i32 0, i32 4 ; [#uses=1]
+ %44 = load i32* %43, align 4 ; [#uses=1]
+ %phitmp.i = icmp eq i32 %44, %10 ; [#uses=1]
+ br i1 %phitmp.i, label %_ZN28btHashedOverlappingPairCache16internalFindPairEP17btBroadphaseProxyS1_i.exit, label %bb.i
+
+_ZN28btHashedOverlappingPairCache16internalFindPairEP17btBroadphaseProxyS1_i.exit: ; preds = %_ZN28btHashedOverlappingPairCache10equalsPairERK16btBroadphasePairii.exit.i
+ %45 = getelementptr inbounds %struct.btBroadphasePair* %35, i32 %index.0.i ; [#uses=3]
+ %46 = icmp eq %struct.btBroadphasePair* %45, null ; [#uses=1]
+ br i1 %46, label %bb20, label %bb3
+
+bb3: ; preds = %_ZN28btHashedOverlappingPairCache16internalFindPairEP17btBroadphaseProxyS1_i.exit
+ %47 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %48 = load i32 (...)*** %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds i32 (...)** %48, i32 8 ; [#uses=1]
+ %50 = load i32 (...)** %49, align 4 ; [#uses=1]
+ %51 = bitcast i32 (...)* %50 to void (%struct.btHashedOverlappingPairCache*, %struct.btBroadphasePair*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %51(%struct.btHashedOverlappingPairCache* %this, %struct.btBroadphasePair* %45, %struct.btActionInterface* %dispatcher)
+ %52 = getelementptr inbounds %struct.btBroadphasePair* %35, i32 %index.0.i, i32 3, i32 0 ; [#uses=1]
+ %53 = load i8** %52, align 4 ; [#uses=2]
+ %54 = ptrtoint %struct.btBroadphasePair* %45 to i32 ; [#uses=1]
+ %55 = load %struct.btBroadphasePair** %31, align 4 ; [#uses=1]
+ %56 = ptrtoint %struct.btBroadphasePair* %55 to i32 ; [#uses=1]
+ %57 = sub nsw i32 %54, %56 ; [#uses=1]
+ %58 = ashr i32 %57, 4 ; [#uses=11]
+ %59 = load i32** %28, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds i32* %59, i32 %27 ; [#uses=2]
+ %index.026 = load i32* %60, align 4 ; [#uses=2]
+ %61 = icmp eq i32 %index.026, %58 ; [#uses=1]
+ br i1 %61, label %bb8, label %bb.nph28
+
+bb.nph28: ; preds = %bb3
+ %62 = load i32** %32, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb4, %bb.nph28
+ %index.027 = phi i32 [ %index.026, %bb.nph28 ], [ %index.0, %bb4 ] ; [#uses=3]
+ %63 = getelementptr inbounds i32* %62, i32 %index.027 ; [#uses=1]
+ %index.0 = load i32* %63, align 4 ; [#uses=2]
+ %64 = icmp eq i32 %index.0, %58 ; [#uses=1]
+ br i1 %64, label %bb6, label %bb4
+
+bb6: ; preds = %bb4
+ %65 = icmp eq i32 %index.027, -1 ; [#uses=1]
+ br i1 %65, label %bb8, label %bb7
+
+bb7: ; preds = %bb6
+ %66 = load i32** %32, align 4 ; [#uses=2]
+ %67 = getelementptr inbounds i32* %66, i32 %index.027 ; [#uses=1]
+ %68 = getelementptr inbounds i32* %66, i32 %58 ; [#uses=1]
+ %69 = load i32* %68, align 4 ; [#uses=1]
+ store i32 %69, i32* %67, align 4
+ br label %bb9
+
+bb8: ; preds = %bb6, %bb3
+ %70 = load i32** %32, align 4 ; [#uses=1]
+ %71 = getelementptr inbounds i32* %70, i32 %58 ; [#uses=1]
+ %72 = load i32* %71, align 4 ; [#uses=1]
+ store i32 %72, i32* %60, align 4
+ br label %bb9
+
+bb9: ; preds = %bb8, %bb7
+ %73 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=5]
+ %74 = load i32* %73, align 4 ; [#uses=1]
+ %75 = add nsw i32 %74, -1 ; [#uses=11]
+ %76 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 6 ; [#uses=1]
+ %77 = load %struct.btActionInterface** %76, align 4 ; [#uses=3]
+ %78 = icmp eq %struct.btActionInterface* %77, null ; [#uses=1]
+ br i1 %78, label %bb11, label %bb10
+
+bb10: ; preds = %bb9
+ %79 = getelementptr inbounds %struct.btActionInterface* %77, i32 0, i32 0 ; [#uses=1]
+ %80 = load i32 (...)*** %79, align 4 ; [#uses=1]
+ %81 = getelementptr inbounds i32 (...)** %80, i32 3 ; [#uses=1]
+ %82 = load i32 (...)** %81, align 4 ; [#uses=1]
+ %83 = bitcast i32 (...)* %82 to i8* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %84 = tail call i8* %83(%struct.btActionInterface* %77, %struct.btBroadphaseProxy* %proxy0_addr.0, %struct.btBroadphaseProxy* %proxy1_addr.0, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb9
+ %85 = icmp eq i32 %75, %58 ; [#uses=1]
+ br i1 %85, label %bb12, label %bb13
+
+bb12: ; preds = %bb11
+ %86 = load i32* %73, align 4 ; [#uses=1]
+ %87 = add nsw i32 %86, -1 ; [#uses=1]
+ store i32 %87, i32* %73, align 4
+ ret i8* %53
+
+bb13: ; preds = %bb11
+ %88 = load %struct.btBroadphasePair** %31, align 4 ; [#uses=2]
+ %89 = getelementptr inbounds %struct.btBroadphasePair* %88, i32 %75, i32 1 ; [#uses=1]
+ %90 = load %struct.btBroadphaseProxy** %89, align 4 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btBroadphaseProxy* %90, i32 0, i32 4 ; [#uses=1]
+ %92 = load i32* %91, align 4 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btBroadphasePair* %88, i32 %75, i32 0 ; [#uses=1]
+ %94 = load %struct.btBroadphaseProxy** %93, align 4 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btBroadphaseProxy* %94, i32 0, i32 4 ; [#uses=1]
+ %96 = load i32* %95, align 4 ; [#uses=1]
+ %97 = shl i32 %92, 16 ; [#uses=1]
+ %98 = or i32 %96, %97 ; [#uses=2]
+ %99 = shl i32 %98, 15 ; [#uses=1]
+ %not.i = xor i32 %99, -1 ; [#uses=1]
+ %100 = add nsw i32 %98, %not.i ; [#uses=2]
+ %101 = ashr i32 %100, 10 ; [#uses=1]
+ %102 = xor i32 %101, %100 ; [#uses=1]
+ %103 = mul i32 %102, 9 ; [#uses=2]
+ %104 = ashr i32 %103, 6 ; [#uses=1]
+ %105 = xor i32 %104, %103 ; [#uses=2]
+ %106 = shl i32 %105, 11 ; [#uses=1]
+ %not2.i = xor i32 %106, -1 ; [#uses=1]
+ %107 = add nsw i32 %105, %not2.i ; [#uses=2]
+ %108 = ashr i32 %107, 16 ; [#uses=1]
+ %109 = xor i32 %108, %107 ; [#uses=1]
+ %110 = load i32* %24, align 4 ; [#uses=1]
+ %111 = add nsw i32 %110, -1 ; [#uses=1]
+ %112 = and i32 %109, %111 ; [#uses=3]
+ %113 = load i32** %28, align 4 ; [#uses=1]
+ %114 = getelementptr inbounds i32* %113, i32 %112 ; [#uses=2]
+ %index.124 = load i32* %114, align 4 ; [#uses=2]
+ %115 = icmp eq i32 %index.124, %75 ; [#uses=1]
+ br i1 %115, label %bb18, label %bb.nph
+
+bb.nph: ; preds = %bb13
+ %116 = load i32** %32, align 4 ; [#uses=1]
+ br label %bb14
+
+bb14: ; preds = %bb14, %bb.nph
+ %index.125 = phi i32 [ %index.124, %bb.nph ], [ %index.1, %bb14 ] ; [#uses=3]
+ %117 = getelementptr inbounds i32* %116, i32 %index.125 ; [#uses=1]
+ %index.1 = load i32* %117, align 4 ; [#uses=2]
+ %118 = icmp eq i32 %index.1, %75 ; [#uses=1]
+ br i1 %118, label %bb16, label %bb14
+
+bb16: ; preds = %bb14
+ %119 = icmp eq i32 %index.125, -1 ; [#uses=1]
+ br i1 %119, label %bb18, label %bb17
+
+bb17: ; preds = %bb16
+ %120 = load i32** %32, align 4 ; [#uses=2]
+ %121 = getelementptr inbounds i32* %120, i32 %index.125 ; [#uses=1]
+ %122 = getelementptr inbounds i32* %120, i32 %75 ; [#uses=1]
+ %123 = load i32* %122, align 4 ; [#uses=1]
+ store i32 %123, i32* %121, align 4
+ br label %bb19
+
+bb18: ; preds = %bb16, %bb13
+ %124 = load i32** %32, align 4 ; [#uses=1]
+ %125 = getelementptr inbounds i32* %124, i32 %75 ; [#uses=1]
+ %126 = load i32* %125, align 4 ; [#uses=1]
+ store i32 %126, i32* %114, align 4
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb17
+ %127 = load %struct.btBroadphasePair** %31, align 4 ; [#uses=8]
+ %128 = getelementptr inbounds %struct.btBroadphasePair* %127, i32 %58, i32 0 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btBroadphasePair* %127, i32 %75, i32 0 ; [#uses=1]
+ %130 = load %struct.btBroadphaseProxy** %129, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %130, %struct.btBroadphaseProxy** %128, align 4
+ %131 = getelementptr inbounds %struct.btBroadphasePair* %127, i32 %58, i32 1 ; [#uses=1]
+ %132 = getelementptr inbounds %struct.btBroadphasePair* %127, i32 %75, i32 1 ; [#uses=1]
+ %133 = load %struct.btBroadphaseProxy** %132, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %133, %struct.btBroadphaseProxy** %131, align 4
+ %134 = getelementptr inbounds %struct.btBroadphasePair* %127, i32 %58, i32 2 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btBroadphasePair* %127, i32 %75, i32 2 ; [#uses=1]
+ %136 = load %struct.btCollisionAlgorithm** %135, align 4 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %136, %struct.btCollisionAlgorithm** %134, align 4
+ %137 = getelementptr inbounds %struct.btBroadphasePair* %127, i32 %58, i32 3, i32 0 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btBroadphasePair* %127, i32 %75, i32 3, i32 0 ; [#uses=1]
+ %139 = load i8** %138, align 4 ; [#uses=1]
+ store i8* %139, i8** %137, align 4
+ %140 = load i32** %32, align 4 ; [#uses=1]
+ %141 = getelementptr inbounds i32* %140, i32 %58 ; [#uses=1]
+ %142 = load i32** %28, align 4 ; [#uses=1]
+ %143 = getelementptr inbounds i32* %142, i32 %112 ; [#uses=1]
+ %144 = load i32* %143, align 4 ; [#uses=1]
+ store i32 %144, i32* %141, align 4
+ %145 = load i32** %28, align 4 ; [#uses=1]
+ %146 = getelementptr inbounds i32* %145, i32 %112 ; [#uses=1]
+ store i32 %58, i32* %146, align 4
+ %147 = load i32* %73, align 4 ; [#uses=1]
+ %148 = add nsw i32 %147, -1 ; [#uses=1]
+ store i32 %148, i32* %73, align 4
+ ret i8* %53
+
+bb20: ; preds = %_ZN28btHashedOverlappingPairCache16internalFindPairEP17btBroadphaseProxyS1_i.exit, %bb1.i
+ ret i8* null
+}
+
+; [#uses=1]
+define %struct.btBroadphasePair* @_ZN28btSortedOverlappingPairCache8findPairEP17btBroadphaseProxyS1_(%struct.btSortedOverlappingPairCache* nocapture %this, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 4 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.btActionInterface* %1, null ; [#uses=1]
+ br i1 %2, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32 (...)** %4, i32 2 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = bitcast i32 (...)* %6 to i8 (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %8 = tail call zeroext i8 %7(%struct.btActionInterface* %1, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1) ; [#uses=1]
+ br label %_ZNK28btSortedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit
+
+bb1.i: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 1 ; [#uses=1]
+ %10 = load i16* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 2 ; [#uses=1]
+ %12 = load i16* %11, align 2 ; [#uses=1]
+ %13 = and i16 %12, %10 ; [#uses=1]
+ %toBoolnot.i = icmp eq i16 %13, 0 ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb7, label %bb5.i
+
+bb5.i: ; preds = %bb1.i
+ %14 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 1 ; [#uses=1]
+ %15 = load i16* %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 2 ; [#uses=1]
+ %17 = load i16* %16, align 2 ; [#uses=1]
+ %18 = and i16 %17, %15 ; [#uses=1]
+ %not..i = icmp ne i16 %18, 0 ; [#uses=1]
+ %retval.i = zext i1 %not..i to i8 ; [#uses=1]
+ br label %_ZNK28btSortedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit
+
+_ZNK28btSortedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit: ; preds = %bb5.i, %bb.i
+ %19 = phi i8 [ %8, %bb.i ], [ %retval.i, %bb5.i ] ; [#uses=1]
+ %toBoolnot = icmp eq i8 %19, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb7, label %bb3
+
+bb3: ; preds = %_ZNK28btSortedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit
+ %20 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 4 ; [#uses=1]
+ %21 = load i32* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 4 ; [#uses=1]
+ %23 = load i32* %22, align 4 ; [#uses=1]
+ %24 = icmp slt i32 %21, %23 ; [#uses=2]
+ %tmpPair.1.0 = select i1 %24, %struct.btBroadphaseProxy* %proxy1, %struct.btBroadphaseProxy* %proxy0 ; [#uses=1]
+ %tmpPair.0.0 = select i1 %24, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %26 = load i32* %25, align 4 ; [#uses=3]
+ %27 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=2]
+ br label %bb3.i
+
+bb.i11: ; preds = %bb3.i
+ %28 = load %struct.btBroadphasePair** %27, align 4 ; [#uses=2]
+ %scevgep78.i = getelementptr inbounds %struct.btBroadphasePair* %28, i32 %33, i32 0 ; [#uses=1]
+ %29 = load %struct.btBroadphaseProxy** %scevgep78.i, align 4 ; [#uses=1]
+ %30 = icmp eq %struct.btBroadphaseProxy* %29, %tmpPair.0.0 ; [#uses=1]
+ br i1 %30, label %_ZeqRK16btBroadphasePairS1_.exit.i, label %bb2.i
+
+_ZeqRK16btBroadphasePairS1_.exit.i: ; preds = %bb.i11
+ %scevgep.i = getelementptr %struct.btBroadphasePair* %28, i32 %33, i32 1 ; [#uses=1]
+ %31 = load %struct.btBroadphaseProxy** %scevgep.i, align 4 ; [#uses=1]
+ %phitmp.i = icmp eq %struct.btBroadphaseProxy* %31, %tmpPair.1.0 ; [#uses=1]
+ br i1 %phitmp.i, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE16findLinearSearchERKS0_.exit, label %bb2.i
+
+bb2.i: ; preds = %_ZeqRK16btBroadphasePairS1_.exit.i, %bb.i11
+ %32 = add nsw i32 %33, 1 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb3
+ %33 = phi i32 [ 0, %bb3 ], [ %32, %bb2.i ] ; [#uses=5]
+ %34 = icmp sgt i32 %26, %33 ; [#uses=1]
+ br i1 %34, label %bb.i11, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE16findLinearSearchERKS0_.exit
+
+_ZNK20btAlignedObjectArrayI16btBroadphasePairE16findLinearSearchERKS0_.exit: ; preds = %bb3.i, %_ZeqRK16btBroadphasePairS1_.exit.i
+ %index.0.i = phi i32 [ %26, %bb3.i ], [ %33, %_ZeqRK16btBroadphasePairS1_.exit.i ] ; [#uses=2]
+ %35 = icmp sgt i32 %26, %index.0.i ; [#uses=1]
+ br i1 %35, label %bb5, label %bb7
+
+bb5: ; preds = %_ZNK20btAlignedObjectArrayI16btBroadphasePairE16findLinearSearchERKS0_.exit
+ %36 = load %struct.btBroadphasePair** %27, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btBroadphasePair* %36, i32 %index.0.i ; [#uses=1]
+ ret %struct.btBroadphasePair* %37
+
+bb7: ; preds = %_ZNK20btAlignedObjectArrayI16btBroadphasePairE16findLinearSearchERKS0_.exit, %_ZNK28btSortedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit, %bb1.i
+ ret %struct.btBroadphasePair* null
+}
+
+; [#uses=1]
+define void @_ZN28btSortedOverlappingPairCache26processAllOverlappingPairsEP17btOverlapCallbackP12btDispatcher(%struct.btSortedOverlappingPairCache* %this, %struct.btActionInterface* %callback, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=4]
+ %1 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btActionInterface* %callback, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb3.outer
+
+bb: ; preds = %bb3
+ %4 = load %struct.btBroadphasePair** %1, align 4 ; [#uses=3]
+ %5 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 2 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to i8 (%struct.btActionInterface*, %struct.btBroadphasePair*)* ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btBroadphasePair* %4, i32 %39 ; [#uses=2]
+ %9 = tail call zeroext i8 %8(%struct.btActionInterface* %callback, %struct.btBroadphasePair* %scevgep6) ; [#uses=1]
+ %toBool = icmp eq i8 %9, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %10 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i32 (...)** %10, i32 8 ; [#uses=1]
+ %12 = load i32 (...)** %11, align 4 ; [#uses=1]
+ %13 = bitcast i32 (...)* %12 to void (%struct.btSortedOverlappingPairCache*, %struct.btBroadphasePair*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %13(%struct.btSortedOverlappingPairCache* %this, %struct.btBroadphasePair* %scevgep6, %struct.btActionInterface* %dispatcher)
+ %scevgep1718 = getelementptr inbounds %struct.btBroadphasePair* %4, i32 %39, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %scevgep1718, align 4
+ %scevgep19 = getelementptr %struct.btBroadphasePair* %4, i32 %39, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %scevgep19, align 4
+ %14 = load i32* %0, align 4 ; [#uses=1]
+ %15 = add nsw i32 %14, -1 ; [#uses=8]
+ %16 = load %struct.btBroadphasePair** %1, align 4 ; [#uses=8]
+ %scevgep910 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %39, i32 0 ; [#uses=2]
+ %17 = load %struct.btBroadphaseProxy** %scevgep910, align 4 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btBroadphasePair* %16, i32 %39, i32 1 ; [#uses=2]
+ %18 = load %struct.btBroadphaseProxy** %scevgep12, align 4 ; [#uses=1]
+ %scevgep14 = getelementptr %struct.btBroadphasePair* %16, i32 %39, i32 2 ; [#uses=2]
+ %19 = load %struct.btCollisionAlgorithm** %scevgep14, align 4 ; [#uses=1]
+ %scevgep16 = getelementptr %struct.btBroadphasePair* %16, i32 %39, i32 3, i32 0 ; [#uses=2]
+ %20 = load i8** %scevgep16, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %15, i32 0 ; [#uses=1]
+ %22 = load %struct.btBroadphaseProxy** %21, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %22, %struct.btBroadphaseProxy** %scevgep910, align 4
+ %23 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %15, i32 1 ; [#uses=1]
+ %24 = load %struct.btBroadphaseProxy** %23, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %24, %struct.btBroadphaseProxy** %scevgep12, align 4
+ %25 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %15, i32 2 ; [#uses=1]
+ %26 = load %struct.btCollisionAlgorithm** %25, align 4 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %26, %struct.btCollisionAlgorithm** %scevgep14, align 4
+ %27 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %15, i32 3, i32 0 ; [#uses=1]
+ %28 = load i8** %27, align 4 ; [#uses=1]
+ store i8* %28, i8** %scevgep16, align 4
+ %29 = load %struct.btBroadphasePair** %1, align 4 ; [#uses=4]
+ %30 = getelementptr inbounds %struct.btBroadphasePair* %29, i32 %15, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %17, %struct.btBroadphaseProxy** %30, align 4
+ %31 = getelementptr inbounds %struct.btBroadphasePair* %29, i32 %15, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %18, %struct.btBroadphaseProxy** %31, align 4
+ %32 = getelementptr inbounds %struct.btBroadphasePair* %29, i32 %15, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %19, %struct.btCollisionAlgorithm** %32, align 4
+ %33 = getelementptr inbounds %struct.btBroadphasePair* %29, i32 %15, i32 3, i32 0 ; [#uses=1]
+ store i8* %20, i8** %33, align 4
+ %34 = load i32* %0, align 4 ; [#uses=1]
+ %35 = add nsw i32 %34, -1 ; [#uses=1]
+ store i32 %35, i32* %0, align 4
+ %36 = load i32* @gOverlappingPairs, align 4 ; [#uses=1]
+ %37 = add nsw i32 %36, -1 ; [#uses=1]
+ store i32 %37, i32* @gOverlappingPairs, align 4
+ br label %bb3
+
+bb2: ; preds = %bb
+ %38 = add nsw i32 %39, 1 ; [#uses=1]
+ br label %bb3.outer
+
+bb3.outer: ; preds = %bb2, %entry
+ %39 = phi i32 [ 0, %entry ], [ %38, %bb2 ] ; [#uses=9]
+ br label %bb3
+
+bb3: ; preds = %bb3.outer, %bb1
+ %40 = load i32* %0, align 4 ; [#uses=1]
+ %41 = icmp sgt i32 %40, %39 ; [#uses=1]
+ br i1 %41, label %bb, label %return
+
+return: ; preds = %bb3
+ ret void
+}
+
+; [#uses=1]
+define i8* @_ZN28btSortedOverlappingPairCache21removeOverlappingPairEP17btBroadphaseProxyS1_P12btDispatcher(%struct.btSortedOverlappingPairCache* %this, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 14 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to i8 (%struct.btSortedOverlappingPairCache*)* ; [#uses=1]
+ %5 = tail call zeroext i8 %4(%struct.btSortedOverlappingPairCache* %this) ; [#uses=1]
+ %toBoolnot = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb, label %bb8
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 4 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 4 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %10 = icmp slt i32 %7, %9 ; [#uses=2]
+ %findPair.1.0 = select i1 %10, %struct.btBroadphaseProxy* %proxy1, %struct.btBroadphaseProxy* %proxy0 ; [#uses=1]
+ %findPair.0.0 = select i1 %10, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ %12 = load i32* %11, align 4 ; [#uses=3]
+ %13 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=4]
+ br label %bb3.i
+
+bb.i10: ; preds = %bb3.i
+ %14 = load %struct.btBroadphasePair** %13, align 4 ; [#uses=2]
+ %scevgep78.i = getelementptr inbounds %struct.btBroadphasePair* %14, i32 %19, i32 0 ; [#uses=1]
+ %15 = load %struct.btBroadphaseProxy** %scevgep78.i, align 4 ; [#uses=1]
+ %16 = icmp eq %struct.btBroadphaseProxy* %15, %findPair.0.0 ; [#uses=1]
+ br i1 %16, label %_ZeqRK16btBroadphasePairS1_.exit.i, label %bb2.i
+
+_ZeqRK16btBroadphasePairS1_.exit.i: ; preds = %bb.i10
+ %scevgep.i = getelementptr %struct.btBroadphasePair* %14, i32 %19, i32 1 ; [#uses=1]
+ %17 = load %struct.btBroadphaseProxy** %scevgep.i, align 4 ; [#uses=1]
+ %phitmp.i = icmp eq %struct.btBroadphaseProxy* %17, %findPair.1.0 ; [#uses=1]
+ br i1 %phitmp.i, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE16findLinearSearchERKS0_.exit, label %bb2.i
+
+bb2.i: ; preds = %_ZeqRK16btBroadphasePairS1_.exit.i, %bb.i10
+ %18 = add nsw i32 %19, 1 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb
+ %19 = phi i32 [ 0, %bb ], [ %18, %bb2.i ] ; [#uses=5]
+ %20 = icmp sgt i32 %12, %19 ; [#uses=1]
+ br i1 %20, label %bb.i10, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE16findLinearSearchERKS0_.exit
+
+_ZNK20btAlignedObjectArrayI16btBroadphasePairE16findLinearSearchERKS0_.exit: ; preds = %bb3.i, %_ZeqRK16btBroadphasePairS1_.exit.i
+ %index.0.i = phi i32 [ %12, %bb3.i ], [ %19, %_ZeqRK16btBroadphasePairS1_.exit.i ] ; [#uses=7]
+ %21 = icmp sgt i32 %12, %index.0.i ; [#uses=1]
+ br i1 %21, label %bb4, label %bb8
+
+bb4: ; preds = %_ZNK20btAlignedObjectArrayI16btBroadphasePairE16findLinearSearchERKS0_.exit
+ %22 = load i32* @gOverlappingPairs, align 4 ; [#uses=1]
+ %23 = add nsw i32 %22, -1 ; [#uses=1]
+ store i32 %23, i32* @gOverlappingPairs, align 4
+ %24 = load %struct.btBroadphasePair** %13, align 4 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btBroadphasePair* %24, i32 %index.0.i ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btBroadphasePair* %24, i32 %index.0.i, i32 3, i32 0 ; [#uses=1]
+ %27 = load i8** %26, align 4 ; [#uses=1]
+ %28 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds i32 (...)** %28, i32 8 ; [#uses=1]
+ %30 = load i32 (...)** %29, align 4 ; [#uses=1]
+ %31 = bitcast i32 (...)* %30 to void (%struct.btSortedOverlappingPairCache*, %struct.btBroadphasePair*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %31(%struct.btSortedOverlappingPairCache* %this, %struct.btBroadphasePair* %25, %struct.btActionInterface* %dispatcher)
+ %32 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 5 ; [#uses=1]
+ %33 = load %struct.btActionInterface** %32, align 4 ; [#uses=3]
+ %34 = icmp eq %struct.btActionInterface* %33, null ; [#uses=1]
+ br i1 %34, label %bb6, label %bb5
+
+bb5: ; preds = %bb4
+ %35 = getelementptr inbounds %struct.btActionInterface* %33, i32 0, i32 0 ; [#uses=1]
+ %36 = load i32 (...)*** %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds i32 (...)** %36, i32 3 ; [#uses=1]
+ %38 = load i32 (...)** %37, align 4 ; [#uses=1]
+ %39 = bitcast i32 (...)* %38 to i8* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %40 = tail call i8* %39(%struct.btActionInterface* %33, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %41 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ %42 = load i32* %41, align 4 ; [#uses=1]
+ %43 = add nsw i32 %42, -1 ; [#uses=8]
+ %44 = load %struct.btBroadphasePair** %13, align 4 ; [#uses=8]
+ %45 = getelementptr inbounds %struct.btBroadphasePair* %44, i32 %index.0.i, i32 0 ; [#uses=2]
+ %46 = load %struct.btBroadphaseProxy** %45, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btBroadphasePair* %44, i32 %index.0.i, i32 1 ; [#uses=2]
+ %48 = load %struct.btBroadphaseProxy** %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btBroadphasePair* %44, i32 %index.0.i, i32 2 ; [#uses=2]
+ %50 = load %struct.btCollisionAlgorithm** %49, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btBroadphasePair* %44, i32 %index.0.i, i32 3, i32 0 ; [#uses=2]
+ %52 = load i8** %51, align 4 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btBroadphasePair* %44, i32 %43, i32 0 ; [#uses=1]
+ %54 = load %struct.btBroadphaseProxy** %53, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %54, %struct.btBroadphaseProxy** %45, align 4
+ %55 = getelementptr inbounds %struct.btBroadphasePair* %44, i32 %43, i32 1 ; [#uses=1]
+ %56 = load %struct.btBroadphaseProxy** %55, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %56, %struct.btBroadphaseProxy** %47, align 4
+ %57 = getelementptr inbounds %struct.btBroadphasePair* %44, i32 %43, i32 2 ; [#uses=1]
+ %58 = load %struct.btCollisionAlgorithm** %57, align 4 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %58, %struct.btCollisionAlgorithm** %49, align 4
+ %59 = getelementptr inbounds %struct.btBroadphasePair* %44, i32 %43, i32 3, i32 0 ; [#uses=1]
+ %60 = load i8** %59, align 4 ; [#uses=1]
+ store i8* %60, i8** %51, align 4
+ %61 = load %struct.btBroadphasePair** %13, align 4 ; [#uses=4]
+ %62 = getelementptr inbounds %struct.btBroadphasePair* %61, i32 %43, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %46, %struct.btBroadphaseProxy** %62, align 4
+ %63 = getelementptr inbounds %struct.btBroadphasePair* %61, i32 %43, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %48, %struct.btBroadphaseProxy** %63, align 4
+ %64 = getelementptr inbounds %struct.btBroadphasePair* %61, i32 %43, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %50, %struct.btCollisionAlgorithm** %64, align 4
+ %65 = getelementptr inbounds %struct.btBroadphasePair* %61, i32 %43, i32 3, i32 0 ; [#uses=1]
+ store i8* %52, i8** %65, align 4
+ %66 = load i32* %11, align 4 ; [#uses=1]
+ %67 = add nsw i32 %66, -1 ; [#uses=1]
+ store i32 %67, i32* %11, align 4
+ ret i8* %27
+
+bb8: ; preds = %_ZNK20btAlignedObjectArrayI16btBroadphasePairE16findLinearSearchERKS0_.exit, %entry
+ ret i8* null
+}
+
+; [#uses=1]
+define void @_ZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher(%struct.btSortedOverlappingPairCache* %this, %struct.btBroadphaseProxy* %proxy, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %removeCallback = alloca %struct..1RemovePairCallback, align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct..1RemovePairCallback* %removeCallback, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ %1 = getelementptr inbounds %struct..1RemovePairCallback* %removeCallback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %proxy, %struct.btBroadphaseProxy** %1, align 4
+ %2 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btSortedOverlappingPairCache*, %struct.btActionInterface*, %struct.btActionInterface*)* ; [#uses=1]
+ %7 = getelementptr inbounds %struct..1RemovePairCallback* %removeCallback, i32 0, i32 0 ; [#uses=1]
+ invoke void %6(%struct.btSortedOverlappingPairCache* %this, %struct.btActionInterface* %7, %struct.btActionInterface* %dispatcher)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select3 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD2Ev(%struct..1RemovePairCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1RemovePairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btSortedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher(%struct.btSortedOverlappingPairCache* %this, %struct.btBroadphaseProxy* %proxy, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %cleanPairs = alloca %struct..0CleanPairCallback, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct..0CleanPairCallback* %cleanPairs, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback, i32 0, i32 2), i32 (...)*** %1, align 8
+ %2 = getelementptr inbounds %struct..0CleanPairCallback* %cleanPairs, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %proxy, %struct.btBroadphaseProxy** %2, align 4
+ %3 = getelementptr inbounds %struct..0CleanPairCallback* %cleanPairs, i32 0, i32 2 ; [#uses=1]
+ store %struct..0btMultiSapOverlapFilterCallback* %0, %struct..0btMultiSapOverlapFilterCallback** %3, align 8
+ %4 = getelementptr inbounds %struct..0CleanPairCallback* %cleanPairs, i32 0, i32 3 ; [#uses=1]
+ store %struct.btActionInterface* %dispatcher, %struct.btActionInterface** %4, align 4
+ %5 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 12 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to void (%struct.btSortedOverlappingPairCache*, %struct.btActionInterface*, %struct.btActionInterface*)* ; [#uses=1]
+ %10 = getelementptr inbounds %struct..0CleanPairCallback* %cleanPairs, i32 0, i32 0 ; [#uses=1]
+ invoke void %9(%struct.btSortedOverlappingPairCache* %this, %struct.btActionInterface* %10, %struct.btActionInterface* %dispatcher)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select3 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback, i32 0, i32 2), i32 (...)*** %1, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD2Ev(%struct..0CleanPairCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0CleanPairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btSortedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcher(%struct.btHashedOverlappingPairCache* %this, %struct.btBroadphaseProxy* %proxy, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %removeCallback = alloca %struct..1RemovePairCallback, align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct..1RemovePairCallback* %removeCallback, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ %1 = getelementptr inbounds %struct..1RemovePairCallback* %removeCallback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %proxy, %struct.btBroadphaseProxy** %1, align 4
+ %2 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btHashedOverlappingPairCache*, %struct.btActionInterface*, %struct.btActionInterface*)* ; [#uses=1]
+ %7 = getelementptr inbounds %struct..1RemovePairCallback* %removeCallback, i32 0, i32 0 ; [#uses=1]
+ invoke void %6(%struct.btHashedOverlappingPairCache* %this, %struct.btActionInterface* %7, %struct.btActionInterface* %dispatcher)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select3 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherEN18RemovePairCallbackD2Ev(%struct..1RemovePairCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1RemovePairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btHashedOverlappingPairCache37removeOverlappingPairsContainingProxyEP17btBroadphaseProxyP12btDispatcherE18RemovePairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcher(%struct.btHashedOverlappingPairCache* %this, %struct.btBroadphaseProxy* %proxy, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %cleanPairs = alloca %struct..0CleanPairCallback, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct..0CleanPairCallback* %cleanPairs, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback, i32 0, i32 2), i32 (...)*** %1, align 8
+ %2 = getelementptr inbounds %struct..0CleanPairCallback* %cleanPairs, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %proxy, %struct.btBroadphaseProxy** %2, align 4
+ %3 = getelementptr inbounds %struct..0CleanPairCallback* %cleanPairs, i32 0, i32 2 ; [#uses=1]
+ store %struct..0btMultiSapOverlapFilterCallback* %0, %struct..0btMultiSapOverlapFilterCallback** %3, align 8
+ %4 = getelementptr inbounds %struct..0CleanPairCallback* %cleanPairs, i32 0, i32 3 ; [#uses=1]
+ store %struct.btActionInterface* %dispatcher, %struct.btActionInterface** %4, align 4
+ %5 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 12 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to void (%struct.btHashedOverlappingPairCache*, %struct.btActionInterface*, %struct.btActionInterface*)* ; [#uses=1]
+ %10 = getelementptr inbounds %struct..0CleanPairCallback* %cleanPairs, i32 0, i32 0 ; [#uses=1]
+ invoke void %9(%struct.btHashedOverlappingPairCache* %this, %struct.btActionInterface* %10, %struct.btActionInterface* %dispatcher)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select3 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback, i32 0, i32 2), i32 (...)*** %1, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherEN17CleanPairCallbackD2Ev(%struct..0CleanPairCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0CleanPairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN28btHashedOverlappingPairCache19cleanProxyFromPairsEP17btBroadphaseProxyP12btDispatcherE17CleanPairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN28btSortedOverlappingPairCacheD0Ev(%struct.btSortedOverlappingPairCache* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV28btSortedOverlappingPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btBroadphasePair** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btBroadphasePair* %2, null ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btBroadphasePair* %2 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %1, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %1, align 4
+ %8 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = bitcast %struct.btSortedOverlappingPairCache* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %10) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN28btSortedOverlappingPairCacheD1Ev(%struct.btSortedOverlappingPairCache* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV28btSortedOverlappingPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btBroadphasePair** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btBroadphasePair* %2, null ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btBroadphasePair* %2 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %1, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %1, align 4
+ %8 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define %struct.btBroadphasePair* @_ZN28btSortedOverlappingPairCache18addOverlappingPairEP17btBroadphaseProxyS1_(%struct.btSortedOverlappingPairCache* nocapture %this, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 4 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.btActionInterface* %1, null ; [#uses=1]
+ br i1 %2, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32 (...)** %4, i32 2 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = bitcast i32 (...)* %6 to i8 (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %8 = tail call zeroext i8 %7(%struct.btActionInterface* %1, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1) ; [#uses=1]
+ br label %_ZNK28btSortedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit
+
+bb1.i: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 1 ; [#uses=1]
+ %10 = load i16* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 2 ; [#uses=1]
+ %12 = load i16* %11, align 2 ; [#uses=1]
+ %13 = and i16 %12, %10 ; [#uses=1]
+ %toBoolnot.i = icmp eq i16 %13, 0 ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb6, label %bb5.i
+
+bb5.i: ; preds = %bb1.i
+ %14 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 1 ; [#uses=1]
+ %15 = load i16* %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 2 ; [#uses=1]
+ %17 = load i16* %16, align 2 ; [#uses=1]
+ %18 = and i16 %17, %15 ; [#uses=1]
+ %not..i = icmp ne i16 %18, 0 ; [#uses=1]
+ %retval.i = zext i1 %not..i to i8 ; [#uses=1]
+ br label %_ZNK28btSortedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit
+
+_ZNK28btSortedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit: ; preds = %bb5.i, %bb.i
+ %19 = phi i8 [ %8, %bb.i ], [ %retval.i, %bb5.i ] ; [#uses=1]
+ %toBoolnot = icmp eq i8 %19, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb6, label %bb3
+
+bb3: ; preds = %_ZNK28btSortedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit
+ %20 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1 ; [#uses=1]
+ %21 = tail call %struct.btBroadphasePair* @_ZN20btAlignedObjectArrayI16btBroadphasePairE21expandNonInitializingEv(%"struct.btAlignedObjectArray<btBroadphasePair>"* %20) inlinehint ; [#uses=7]
+ %22 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 4 ; [#uses=1]
+ %23 = load i32* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 4 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ %26 = icmp slt i32 %23, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btBroadphasePair* %21, i32 0, i32 0 ; [#uses=2]
+ br i1 %26, label %bb.i8, label %bb1.i9
+
+bb.i8: ; preds = %bb3
+ store %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy** %27, align 4
+ %28 = getelementptr inbounds %struct.btBroadphasePair* %21, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %proxy1, %struct.btBroadphaseProxy** %28, align 4
+ br label %_ZN16btBroadphasePairC1ER17btBroadphaseProxyS1_.exit
+
+bb1.i9: ; preds = %bb3
+ store %struct.btBroadphaseProxy* %proxy1, %struct.btBroadphaseProxy** %27, align 4
+ %29 = getelementptr inbounds %struct.btBroadphasePair* %21, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy** %29, align 4
+ br label %_ZN16btBroadphasePairC1ER17btBroadphaseProxyS1_.exit
+
+_ZN16btBroadphasePairC1ER17btBroadphaseProxyS1_.exit: ; preds = %bb1.i9, %bb.i8
+ %30 = getelementptr inbounds %struct.btBroadphasePair* %21, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %30, align 4
+ %31 = getelementptr inbounds %struct.btBroadphasePair* %21, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i8* null, i8** %31, align 4
+ %32 = load i32* @gOverlappingPairs, align 4 ; [#uses=1]
+ %33 = add nsw i32 %32, 1 ; [#uses=1]
+ store i32 %33, i32* @gOverlappingPairs, align 4
+ %34 = load i32* @gAddedPairs, align 4 ; [#uses=1]
+ %35 = add nsw i32 %34, 1 ; [#uses=1]
+ store i32 %35, i32* @gAddedPairs, align 4
+ %36 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 5 ; [#uses=1]
+ %37 = load %struct.btActionInterface** %36, align 4 ; [#uses=3]
+ %38 = icmp eq %struct.btActionInterface* %37, null ; [#uses=1]
+ br i1 %38, label %bb6, label %bb4
+
+bb4: ; preds = %_ZN16btBroadphasePairC1ER17btBroadphaseProxyS1_.exit
+ %39 = getelementptr inbounds %struct.btActionInterface* %37, i32 0, i32 0 ; [#uses=1]
+ %40 = load i32 (...)*** %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds i32 (...)** %40, i32 2 ; [#uses=1]
+ %42 = load i32 (...)** %41, align 4 ; [#uses=1]
+ %43 = bitcast i32 (...)* %42 to %struct.btBroadphasePair* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %44 = tail call %struct.btBroadphasePair* %43(%struct.btActionInterface* %37, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1) ; [#uses=0]
+ ret %struct.btBroadphasePair* %21
+
+bb6: ; preds = %_ZN16btBroadphasePairC1ER17btBroadphaseProxyS1_.exit, %_ZNK28btSortedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit, %bb1.i
+ %.0 = phi %struct.btBroadphasePair* [ null, %_ZNK28btSortedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit ], [ %21, %_ZN16btBroadphasePairC1ER17btBroadphaseProxyS1_.exit ], [ null, %bb1.i ] ; [#uses=1]
+ ret %struct.btBroadphasePair* %.0
+}
+
+; [#uses=0]
+define void @_ZN28btSortedOverlappingPairCacheD2Ev(%struct.btSortedOverlappingPairCache* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV28btSortedOverlappingPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btBroadphasePair** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btBroadphasePair* %2, null ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btBroadphasePair* %2 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %1, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %1, align 4
+ %8 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN28btHashedOverlappingPairCacheD0Ev(%struct.btHashedOverlappingPairCache* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV28btHashedOverlappingPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 3 ; [#uses=3]
+ %2 = load i32** %1, align 4 ; [#uses=2]
+ %3 = icmp eq i32* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast i32* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad18
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store i32* null, i32** %1, align 4
+ %8 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %11 = load i32** %10, align 4 ; [#uses=2]
+ %12 = icmp eq i32* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i35
+
+bb.i.i.i35: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i34 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i34, label %bb2.i.i.i37, label %bb1.i.i.i36
+
+bb1.i.i.i36: ; preds = %bb.i.i.i35
+ %15 = bitcast i32* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i37 unwind label %lpad
+
+bb2.i.i.i37: ; preds = %bb1.i.i.i36, %bb.i.i.i35
+ store i32* null, i32** %10, align 4
+ br label %bb10
+
+invcont8: ; preds = %bb2.i.i.i53, %ppad
+ %16 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %41, align 4
+ %17 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i37, %bb3
+ %19 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %19, align 4
+ store i32* null, i32** %10, align 4
+ %20 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %20, align 4
+ %21 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %23 = load %struct.btBroadphasePair** %22, align 4 ; [#uses=2]
+ %24 = icmp eq %struct.btBroadphasePair* %23, null ; [#uses=1]
+ br i1 %24, label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit, label %bb.i.i.i41
+
+bb.i.i.i41: ; preds = %bb10
+ %25 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %26 = load i8* %25, align 4 ; [#uses=1]
+ %toBool.i.i.i40 = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i40, label %bb2.i.i.i43, label %bb1.i.i.i42
+
+bb1.i.i.i42: ; preds = %bb.i.i.i41
+ %27 = bitcast %struct.btBroadphasePair* %23 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %27)
+ br label %bb2.i.i.i43
+
+bb2.i.i.i43: ; preds = %bb1.i.i.i42, %bb.i.i.i41
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %22, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit: ; preds = %bb2.i.i.i43, %bb10
+ %28 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %28, align 4
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %22, align 4
+ %29 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %30, align 4
+ %31 = bitcast %struct.btHashedOverlappingPairCache* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %31) nounwind
+ ret void
+
+lpad: ; preds = %bb1.i.i.i36
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %bb1.i.i.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %32 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %33 = load i32** %32, align 4 ; [#uses=2]
+ %34 = icmp eq i32* %33, null ; [#uses=1]
+ br i1 %34, label %_ZN20btAlignedObjectArrayIiED1Ev.exit49, label %bb.i.i.i45
+
+bb.i.i.i45: ; preds = %lpad18
+ %35 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %36 = load i8* %35, align 4 ; [#uses=1]
+ %toBool.i.i.i44 = icmp eq i8 %36, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i44, label %bb2.i.i.i47, label %bb1.i.i.i46
+
+bb1.i.i.i46: ; preds = %bb.i.i.i45
+ %37 = bitcast i32* %33 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %37)
+ to label %bb2.i.i.i47 unwind label %lpad22
+
+bb2.i.i.i47: ; preds = %bb1.i.i.i46, %bb.i.i.i45
+ store i32* null, i32** %32, align 4
+ br label %_ZN20btAlignedObjectArrayIiED1Ev.exit49
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit49: ; preds = %bb2.i.i.i47, %lpad18
+ %38 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %38, align 4
+ store i32* null, i32** %32, align 4
+ %39 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %39, align 4
+ %40 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %40, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i46
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %bb1.i.i.i52
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIiED1Ev.exit49, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayIiED1Ev.exit49 ] ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %42 = load %struct.btBroadphasePair** %41, align 4 ; [#uses=2]
+ %43 = icmp eq %struct.btBroadphasePair* %42, null ; [#uses=1]
+ br i1 %43, label %invcont8, label %bb.i.i.i51
+
+bb.i.i.i51: ; preds = %ppad
+ %44 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %45 = load i8* %44, align 4 ; [#uses=1]
+ %toBool.i.i.i50 = icmp eq i8 %45, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i50, label %bb2.i.i.i53, label %bb1.i.i.i52
+
+bb1.i.i.i52: ; preds = %bb.i.i.i51
+ %46 = bitcast %struct.btBroadphasePair* %42 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %46)
+ to label %bb2.i.i.i53 unwind label %lpad26
+
+bb2.i.i.i53: ; preds = %bb1.i.i.i52, %bb.i.i.i51
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %41, align 4
+ br label %invcont8
+}
+
+; [#uses=1]
+define void @_ZN28btHashedOverlappingPairCacheD1Ev(%struct.btHashedOverlappingPairCache* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV28btHashedOverlappingPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 3 ; [#uses=3]
+ %2 = load i32** %1, align 4 ; [#uses=2]
+ %3 = icmp eq i32* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast i32* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad18
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store i32* null, i32** %1, align 4
+ %8 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %11 = load i32** %10, align 4 ; [#uses=2]
+ %12 = icmp eq i32* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i35
+
+bb.i.i.i35: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i34 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i34, label %bb2.i.i.i37, label %bb1.i.i.i36
+
+bb1.i.i.i36: ; preds = %bb.i.i.i35
+ %15 = bitcast i32* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i37 unwind label %lpad
+
+bb2.i.i.i37: ; preds = %bb1.i.i.i36, %bb.i.i.i35
+ store i32* null, i32** %10, align 4
+ br label %bb10
+
+invcont8: ; preds = %bb2.i.i.i53, %ppad
+ %16 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %40, align 4
+ %17 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i37, %bb3
+ %19 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %19, align 4
+ store i32* null, i32** %10, align 4
+ %20 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %20, align 4
+ %21 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %23 = load %struct.btBroadphasePair** %22, align 4 ; [#uses=2]
+ %24 = icmp eq %struct.btBroadphasePair* %23, null ; [#uses=1]
+ br i1 %24, label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit, label %bb.i.i.i41
+
+bb.i.i.i41: ; preds = %bb10
+ %25 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %26 = load i8* %25, align 4 ; [#uses=1]
+ %toBool.i.i.i40 = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i40, label %bb2.i.i.i43, label %bb1.i.i.i42
+
+bb1.i.i.i42: ; preds = %bb.i.i.i41
+ %27 = bitcast %struct.btBroadphasePair* %23 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %27)
+ br label %bb2.i.i.i43
+
+bb2.i.i.i43: ; preds = %bb1.i.i.i42, %bb.i.i.i41
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %22, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit: ; preds = %bb2.i.i.i43, %bb10
+ %28 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %28, align 4
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %22, align 4
+ %29 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %30, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i36
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %bb1.i.i.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %31 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %32 = load i32** %31, align 4 ; [#uses=2]
+ %33 = icmp eq i32* %32, null ; [#uses=1]
+ br i1 %33, label %_ZN20btAlignedObjectArrayIiED1Ev.exit49, label %bb.i.i.i45
+
+bb.i.i.i45: ; preds = %lpad18
+ %34 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %35 = load i8* %34, align 4 ; [#uses=1]
+ %toBool.i.i.i44 = icmp eq i8 %35, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i44, label %bb2.i.i.i47, label %bb1.i.i.i46
+
+bb1.i.i.i46: ; preds = %bb.i.i.i45
+ %36 = bitcast i32* %32 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %36)
+ to label %bb2.i.i.i47 unwind label %lpad22
+
+bb2.i.i.i47: ; preds = %bb1.i.i.i46, %bb.i.i.i45
+ store i32* null, i32** %31, align 4
+ br label %_ZN20btAlignedObjectArrayIiED1Ev.exit49
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit49: ; preds = %bb2.i.i.i47, %lpad18
+ %37 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %37, align 4
+ store i32* null, i32** %31, align 4
+ %38 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ %39 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %39, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i46
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %bb1.i.i.i52
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIiED1Ev.exit49, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayIiED1Ev.exit49 ] ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %41 = load %struct.btBroadphasePair** %40, align 4 ; [#uses=2]
+ %42 = icmp eq %struct.btBroadphasePair* %41, null ; [#uses=1]
+ br i1 %42, label %invcont8, label %bb.i.i.i51
+
+bb.i.i.i51: ; preds = %ppad
+ %43 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %44 = load i8* %43, align 4 ; [#uses=1]
+ %toBool.i.i.i50 = icmp eq i8 %44, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i50, label %bb2.i.i.i53, label %bb1.i.i.i52
+
+bb1.i.i.i52: ; preds = %bb.i.i.i51
+ %45 = bitcast %struct.btBroadphasePair* %41 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %45)
+ to label %bb2.i.i.i53 unwind label %lpad26
+
+bb2.i.i.i53: ; preds = %bb1.i.i.i52, %bb.i.i.i51
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %40, align 4
+ br label %invcont8
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btBroadphasePair* @_ZN28btHashedOverlappingPairCache18addOverlappingPairEP17btBroadphaseProxyS1_(%struct.btHashedOverlappingPairCache* nocapture %this, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1) align 2 {
+entry:
+ %0 = load i32* @gAddedPairs, align 4 ; [#uses=1]
+ %1 = add nsw i32 %0, 1 ; [#uses=1]
+ store i32 %1, i32* @gAddedPairs, align 4
+ %2 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 2 ; [#uses=1]
+ %3 = load %struct.btActionInterface** %2, align 4 ; [#uses=3]
+ %4 = icmp eq %struct.btActionInterface* %3, null ; [#uses=1]
+ br i1 %4, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btActionInterface* %3, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 2 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to i8 (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %10 = tail call zeroext i8 %9(%struct.btActionInterface* %3, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1) ; [#uses=1]
+ br label %_ZNK28btHashedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit
+
+bb1.i: ; preds = %entry
+ %11 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 1 ; [#uses=1]
+ %12 = load i16* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 2 ; [#uses=1]
+ %14 = load i16* %13, align 2 ; [#uses=1]
+ %15 = and i16 %14, %12 ; [#uses=1]
+ %toBoolnot.i = icmp eq i16 %15, 0 ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb4, label %bb5.i
+
+bb5.i: ; preds = %bb1.i
+ %16 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 1 ; [#uses=1]
+ %17 = load i16* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 2 ; [#uses=1]
+ %19 = load i16* %18, align 2 ; [#uses=1]
+ %20 = and i16 %19, %17 ; [#uses=1]
+ %not..i = icmp ne i16 %20, 0 ; [#uses=1]
+ %retval.i = zext i1 %not..i to i8 ; [#uses=1]
+ br label %_ZNK28btHashedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit
+
+_ZNK28btHashedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit: ; preds = %bb5.i, %bb.i
+ %21 = phi i8 [ %10, %bb.i ], [ %retval.i, %bb5.i ] ; [#uses=1]
+ %toBoolnot = icmp eq i8 %21, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb4, label %bb3
+
+bb3: ; preds = %_ZNK28btHashedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit
+ %22 = tail call %struct.btBroadphasePair* @_ZN28btHashedOverlappingPairCache15internalAddPairEP17btBroadphaseProxyS1_(%struct.btHashedOverlappingPairCache* %this, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1) ; [#uses=1]
+ ret %struct.btBroadphasePair* %22
+
+bb4: ; preds = %_ZNK28btHashedOverlappingPairCache24needsBroadphaseCollisionEP17btBroadphaseProxyS1_.exit, %bb1.i
+ ret %struct.btBroadphasePair* null
+}
+
+; [#uses=1]
+define void @_ZN28btHashedOverlappingPairCache20sortOverlappingPairsEP12btDispatcher(%struct.btHashedOverlappingPairCache* %this, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %tmpPairs = alloca %"struct.btAlignedObjectArray<btBroadphasePair>", align 8 ; [#uses=6]
+ %1 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %tmpPairs, i32 0, i32 4 ; [#uses=4]
+ store i8 1, i8* %1, align 8
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %tmpPairs, i32 0, i32 3 ; [#uses=8]
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %2, align 4
+ %3 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %tmpPairs, i32 0, i32 1 ; [#uses=5]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %tmpPairs, i32 0, i32 2 ; [#uses=2]
+ store i32 0, i32* %4, align 8
+ %5 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb1
+
+bb: ; preds = %bb1
+ %7 = load %struct.btBroadphasePair** %6, align 4 ; [#uses=1]
+ %scevgep46 = getelementptr %struct.btBroadphasePair* %7, i32 %9 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI16btBroadphasePairE9push_backERKS0_(%"struct.btAlignedObjectArray<btBroadphasePair>"* %tmpPairs, %struct.btBroadphasePair* %scevgep46) inlinehint
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %8 = add nsw i32 %9, 1 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %invcont, %entry
+ %9 = phi i32 [ 0, %entry ], [ %8, %invcont ] ; [#uses=3]
+ %10 = load i32* %5, align 4 ; [#uses=1]
+ %11 = icmp sgt i32 %10, %9 ; [#uses=1]
+ br i1 %11, label %bb, label %bb5.preheader
+
+bb5.preheader: ; preds = %bb1
+ %12 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ br label %bb5
+
+bb3: ; preds = %bb5
+ %13 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 3 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=2]
+ %scevgep45 = getelementptr %struct.btBroadphasePair* %16, i32 %22, i32 1 ; [#uses=1]
+ %17 = load %struct.btBroadphaseProxy** %scevgep45, align 4 ; [#uses=1]
+ %scevgep4344 = getelementptr inbounds %struct.btBroadphasePair* %16, i32 %22, i32 0 ; [#uses=1]
+ %18 = load %struct.btBroadphaseProxy** %scevgep4344, align 4 ; [#uses=1]
+ %19 = bitcast i32 (...)* %15 to i8* (%struct.btHashedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %20 = invoke i8* %19(%struct.btHashedOverlappingPairCache* %this, %struct.btBroadphaseProxy* %18, %struct.btBroadphaseProxy* %17, %struct.btActionInterface* %dispatcher)
+ to label %invcont4 unwind label %lpad ; [#uses=0]
+
+invcont4: ; preds = %bb3
+ %21 = add nsw i32 %22, 1 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %invcont4, %bb5.preheader
+ %22 = phi i32 [ %21, %invcont4 ], [ 0, %bb5.preheader ] ; [#uses=4]
+ %23 = load i32* %3, align 4 ; [#uses=2]
+ %24 = icmp sgt i32 %23, %22 ; [#uses=1]
+ br i1 %24, label %bb3, label %bb9.preheader
+
+bb9.preheader: ; preds = %bb5
+ %25 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 1 ; [#uses=2]
+ %26 = load i32* %25, align 4 ; [#uses=1]
+ %27 = icmp sgt i32 %26, 0 ; [#uses=1]
+ br i1 %27, label %bb.nph, label %bb11
+
+bb.nph: ; preds = %bb9.preheader
+ %28 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb8, %bb.nph
+ %i.237 = phi i32 [ 0, %bb.nph ], [ %30, %bb8 ] ; [#uses=2]
+ %29 = load i32** %28, align 4 ; [#uses=1]
+ %scevgep42 = getelementptr i32* %29, i32 %i.237 ; [#uses=1]
+ store i32 -1, i32* %scevgep42, align 4
+ %30 = add nsw i32 %i.237, 1 ; [#uses=2]
+ %31 = load i32* %25, align 4 ; [#uses=1]
+ %32 = icmp sgt i32 %31, %30 ; [#uses=1]
+ br i1 %32, label %bb8, label %bb9.bb11_crit_edge
+
+bb9.bb11_crit_edge: ; preds = %bb8
+ %.pre = load i32* %3, align 4 ; [#uses=1]
+ br label %bb11
+
+bb11: ; preds = %bb9.bb11_crit_edge, %bb9.preheader
+ %33 = phi i32 [ %.pre, %bb9.bb11_crit_edge ], [ %23, %bb9.preheader ] ; [#uses=2]
+ %34 = icmp sgt i32 %33, 1 ; [#uses=1]
+ br i1 %34, label %bb.i, label %bb15
+
+bb.i: ; preds = %bb11
+ %35 = add nsw i32 %33, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %tmpPairs, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 0, i32 %35) nounwind
+ br label %bb15
+
+bb13: ; preds = %bb15
+ %36 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds i32 (...)** %36, i32 2 ; [#uses=1]
+ %38 = load i32 (...)** %37, align 4 ; [#uses=1]
+ %39 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=2]
+ %scevgep41 = getelementptr %struct.btBroadphasePair* %39, i32 %45, i32 1 ; [#uses=1]
+ %40 = load %struct.btBroadphaseProxy** %scevgep41, align 4 ; [#uses=1]
+ %scevgep40 = getelementptr inbounds %struct.btBroadphasePair* %39, i32 %45, i32 0 ; [#uses=1]
+ %41 = load %struct.btBroadphaseProxy** %scevgep40, align 4 ; [#uses=1]
+ %42 = bitcast i32 (...)* %38 to %struct.btBroadphasePair* (%struct.btHashedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %43 = invoke %struct.btBroadphasePair* %42(%struct.btHashedOverlappingPairCache* %this, %struct.btBroadphaseProxy* %41, %struct.btBroadphaseProxy* %40)
+ to label %invcont14 unwind label %lpad ; [#uses=0]
+
+invcont14: ; preds = %bb13
+ %44 = add nsw i32 %45, 1 ; [#uses=1]
+ br label %bb15
+
+bb15: ; preds = %invcont14, %bb.i, %bb11
+ %45 = phi i32 [ %44, %invcont14 ], [ 0, %bb11 ], [ 0, %bb.i ] ; [#uses=4]
+ %46 = load i32* %3, align 4 ; [#uses=1]
+ %47 = icmp sgt i32 %46, %45 ; [#uses=1]
+ br i1 %47, label %bb13, label %bb20
+
+invcont18: ; preds = %bb2.i.i.i, %lpad
+ store i8 1, i8* %1, align 8
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %2, align 4
+ store i32 0, i32* %3, align 4
+ store i32 0, i32* %4, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb20: ; preds = %bb15
+ %48 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=2]
+ %49 = icmp eq %struct.btBroadphasePair* %48, null ; [#uses=1]
+ br i1 %49, label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit33, label %bb.i.i.i30
+
+bb.i.i.i30: ; preds = %bb20
+ %50 = load i8* %1, align 8 ; [#uses=1]
+ %toBool.i.i.i29 = icmp eq i8 %50, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i29, label %bb2.i.i.i32, label %bb1.i.i.i31
+
+bb1.i.i.i31: ; preds = %bb.i.i.i30
+ %51 = bitcast %struct.btBroadphasePair* %48 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %51)
+ br label %bb2.i.i.i32
+
+bb2.i.i.i32: ; preds = %bb1.i.i.i31, %bb.i.i.i30
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %2, align 4
+ ret void
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit33: ; preds = %bb20
+ ret void
+
+lpad: ; preds = %bb13, %bb3, %bb
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select22 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %52 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=2]
+ %53 = icmp eq %struct.btBroadphasePair* %52, null ; [#uses=1]
+ br i1 %53, label %invcont18, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad
+ %54 = load i8* %1, align 8 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %54, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %55 = bitcast %struct.btBroadphasePair* %52 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %55)
+ to label %bb2.i.i.i unwind label %lpad23
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %2, align 4
+ br label %invcont18
+
+lpad23: ; preds = %bb1.i.i.i
+ %eh_ptr24 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select26 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr24, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN28btHashedOverlappingPairCacheD2Ev(%struct.btHashedOverlappingPairCache* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV28btHashedOverlappingPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 3 ; [#uses=3]
+ %2 = load i32** %1, align 4 ; [#uses=2]
+ %3 = icmp eq i32* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast i32* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad18
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store i32* null, i32** %1, align 4
+ %8 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %11 = load i32** %10, align 4 ; [#uses=2]
+ %12 = icmp eq i32* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i35
+
+bb.i.i.i35: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i34 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i34, label %bb2.i.i.i37, label %bb1.i.i.i36
+
+bb1.i.i.i36: ; preds = %bb.i.i.i35
+ %15 = bitcast i32* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i37 unwind label %lpad
+
+bb2.i.i.i37: ; preds = %bb1.i.i.i36, %bb.i.i.i35
+ store i32* null, i32** %10, align 4
+ br label %bb10
+
+invcont8: ; preds = %bb2.i.i.i53, %ppad
+ %16 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %40, align 4
+ %17 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i37, %bb3
+ %19 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %19, align 4
+ store i32* null, i32** %10, align 4
+ %20 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %20, align 4
+ %21 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %23 = load %struct.btBroadphasePair** %22, align 4 ; [#uses=2]
+ %24 = icmp eq %struct.btBroadphasePair* %23, null ; [#uses=1]
+ br i1 %24, label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit, label %bb.i.i.i41
+
+bb.i.i.i41: ; preds = %bb10
+ %25 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %26 = load i8* %25, align 4 ; [#uses=1]
+ %toBool.i.i.i40 = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i40, label %bb2.i.i.i43, label %bb1.i.i.i42
+
+bb1.i.i.i42: ; preds = %bb.i.i.i41
+ %27 = bitcast %struct.btBroadphasePair* %23 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %27)
+ br label %bb2.i.i.i43
+
+bb2.i.i.i43: ; preds = %bb1.i.i.i42, %bb.i.i.i41
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %22, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairED1Ev.exit: ; preds = %bb2.i.i.i43, %bb10
+ %28 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %28, align 4
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %22, align 4
+ %29 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %30, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i36
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %bb1.i.i.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %31 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %32 = load i32** %31, align 4 ; [#uses=2]
+ %33 = icmp eq i32* %32, null ; [#uses=1]
+ br i1 %33, label %_ZN20btAlignedObjectArrayIiED1Ev.exit49, label %bb.i.i.i45
+
+bb.i.i.i45: ; preds = %lpad18
+ %34 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %35 = load i8* %34, align 4 ; [#uses=1]
+ %toBool.i.i.i44 = icmp eq i8 %35, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i44, label %bb2.i.i.i47, label %bb1.i.i.i46
+
+bb1.i.i.i46: ; preds = %bb.i.i.i45
+ %36 = bitcast i32* %32 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %36)
+ to label %bb2.i.i.i47 unwind label %lpad22
+
+bb2.i.i.i47: ; preds = %bb1.i.i.i46, %bb.i.i.i45
+ store i32* null, i32** %31, align 4
+ br label %_ZN20btAlignedObjectArrayIiED1Ev.exit49
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit49: ; preds = %bb2.i.i.i47, %lpad18
+ %37 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %37, align 4
+ store i32* null, i32** %31, align 4
+ %38 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ %39 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %39, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i46
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %bb1.i.i.i52
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIiED1Ev.exit49, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayIiED1Ev.exit49 ] ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %41 = load %struct.btBroadphasePair** %40, align 4 ; [#uses=2]
+ %42 = icmp eq %struct.btBroadphasePair* %41, null ; [#uses=1]
+ br i1 %42, label %invcont8, label %bb.i.i.i51
+
+bb.i.i.i51: ; preds = %ppad
+ %43 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %44 = load i8* %43, align 4 ; [#uses=1]
+ %toBool.i.i.i50 = icmp eq i8 %44, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i50, label %bb2.i.i.i53, label %bb1.i.i.i52
+
+bb1.i.i.i52: ; preds = %bb.i.i.i51
+ %45 = bitcast %struct.btBroadphasePair* %41 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %45)
+ to label %bb2.i.i.i53 unwind label %lpad26
+
+bb2.i.i.i53: ; preds = %bb1.i.i.i52, %bb.i.i.i51
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %40, align 4
+ br label %invcont8
+}
+
+; [#uses=1]
+define void @_ZN28btSortedOverlappingPairCacheC2Ev(%struct.btSortedOverlappingPairCache* nocapture %this) align 2 {
+bb.i:
+ %0 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV28btSortedOverlappingPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=5]
+ store i8 1, i8* %1, align 4
+ %2 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=8]
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %2, align 4
+ %3 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=3]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 2 ; [#uses=1]
+ store i8 0, i8* %5, align 4
+ %6 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 1, i8* %6, align 1
+ %7 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %7, align 4
+ %8 = getelementptr inbounds %struct.btSortedOverlappingPairCache* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %8, align 4
+ %9 = invoke i8* @_Z22btAlignedAllocInternalji(i32 32, i32 16)
+ to label %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i unwind label %lpad10 ; [#uses=5]
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i: ; preds = %bb.i
+ %phitmp.i = bitcast i8* %9 to %struct.btBroadphasePair* ; [#uses=1]
+ %10 = load i32* %3, align 4 ; [#uses=2]
+ %11 = icmp sgt i32 %10, 0 ; [#uses=1]
+ br i1 %11, label %bb.i4.i, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+
+bb.i4.i: ; preds = %bb.i4.i, %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i
+ %indvar.i.i = phi i32 [ %indvar.next.i.i, %bb.i4.i ], [ 0, %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i ] ; [#uses=6]
+ %tmp = shl i32 %indvar.i.i, 4 ; [#uses=4]
+ %tmp2435 = or i32 %tmp, 12 ; [#uses=1]
+ %scevgep25 = getelementptr i8* %9, i32 %tmp2435 ; [#uses=1]
+ %scevgep13.i.i = bitcast i8* %scevgep25 to i8** ; [#uses=1]
+ %tmp2736 = or i32 %tmp, 8 ; [#uses=1]
+ %scevgep28 = getelementptr i8* %9, i32 %tmp2736 ; [#uses=1]
+ %scevgep11.i.i = bitcast i8* %scevgep28 to %struct.btCollisionAlgorithm** ; [#uses=1]
+ %tmp3037 = or i32 %tmp, 4 ; [#uses=1]
+ %scevgep31 = getelementptr i8* %9, i32 %tmp3037 ; [#uses=1]
+ %scevgep9.i.i = bitcast i8* %scevgep31 to %struct.btBroadphaseProxy** ; [#uses=1]
+ %scevgep33 = getelementptr i8* %9, i32 %tmp ; [#uses=1]
+ %scevgep67.i.i = bitcast i8* %scevgep33 to %struct.btBroadphaseProxy** ; [#uses=1]
+ %12 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=4]
+ %scevgep5.i.i = getelementptr inbounds %struct.btBroadphasePair* %12, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %13 = load %struct.btBroadphaseProxy** %scevgep5.i.i, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %13, %struct.btBroadphaseProxy** %scevgep67.i.i, align 4
+ %scevgep8.i.i = getelementptr %struct.btBroadphasePair* %12, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %14 = load %struct.btBroadphaseProxy** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %14, %struct.btBroadphaseProxy** %scevgep9.i.i, align 4
+ %scevgep10.i.i = getelementptr %struct.btBroadphasePair* %12, i32 %indvar.i.i, i32 2 ; [#uses=1]
+ %15 = load %struct.btCollisionAlgorithm** %scevgep10.i.i, align 4 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %15, %struct.btCollisionAlgorithm** %scevgep11.i.i, align 4
+ %scevgep12.i.i = getelementptr %struct.btBroadphasePair* %12, i32 %indvar.i.i, i32 3, i32 0 ; [#uses=1]
+ %16 = load i8** %scevgep12.i.i, align 4 ; [#uses=1]
+ store i8* %16, i8** %scevgep13.i.i, align 4
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %10 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i: ; preds = %bb.i4.i, %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i
+ %17 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=2]
+ %18 = icmp eq %struct.btBroadphasePair* %17, null ; [#uses=1]
+ br i1 %18, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+ %19 = load i8* %1, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %19, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %20 = bitcast %struct.btBroadphasePair* %17 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %20)
+ to label %bb2.i.i unwind label %lpad10
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %2, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+ store i8 1, i8* %1, align 4
+ store %struct.btBroadphasePair* %phitmp.i, %struct.btBroadphasePair** %2, align 4
+ store i32 2, i32* %4, align 4
+ ret void
+
+lpad10: ; preds = %bb1.i.i, %bb.i
+ %eh_ptr11 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select13 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %21 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.btBroadphasePair* %21, null ; [#uses=1]
+ br i1 %22, label %ppad, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad10
+ %23 = load i8* %1, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %24 = bitcast %struct.btBroadphasePair* %21 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %24)
+ to label %bb2.i.i.i unwind label %lpad14
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %2, align 4
+ br label %ppad
+
+lpad14: ; preds = %bb1.i.i.i
+ %eh_ptr15 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr15, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i, %lpad10
+ store i8 1, i8* %1, align 4
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %2, align 4
+ store i32 0, i32* %3, align 4
+ store i32 0, i32* %4, align 4
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV22btOverlappingPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr11)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN28btSortedOverlappingPairCacheC1Ev(%struct.btSortedOverlappingPairCache* nocapture %this) align 2 {
+entry:
+ tail call void @_ZN28btSortedOverlappingPairCacheC2Ev(%struct.btSortedOverlappingPairCache* %this)
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr %struct.btBroadphasePair* @_ZN20btAlignedObjectArrayI16btBroadphasePairE21expandNonInitializingEv(%"struct.btAlignedObjectArray<btBroadphasePair>"* nocapture %this) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 1 ; [#uses=4]
+ %1 = load i32* %0, align 4 ; [#uses=7]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.218.0.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.218.0.i ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb1
+
+bb.i: ; preds = %bb
+ %8 = icmp eq i32 %iftmp.218.0.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %9 = shl i32 %iftmp.218.0.i, 4 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %10 to %struct.btBroadphasePair* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %11 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %12 = phi %struct.btBroadphasePair* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=5]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i
+ %14 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb.i4.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb.i4.i ] ; [#uses=9]
+ %scevgep13.i.i = getelementptr %struct.btBroadphasePair* %12, i32 %indvar.i.i, i32 3, i32 0 ; [#uses=1]
+ %scevgep11.i.i = getelementptr %struct.btBroadphasePair* %12, i32 %indvar.i.i, i32 2 ; [#uses=1]
+ %scevgep9.i.i = getelementptr %struct.btBroadphasePair* %12, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %scevgep67.i.i = getelementptr inbounds %struct.btBroadphasePair* %12, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %15 = load %struct.btBroadphasePair** %14, align 4 ; [#uses=4]
+ %scevgep5.i.i = getelementptr inbounds %struct.btBroadphasePair* %15, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %16 = load %struct.btBroadphaseProxy** %scevgep5.i.i, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %16, %struct.btBroadphaseProxy** %scevgep67.i.i, align 4
+ %scevgep8.i.i = getelementptr %struct.btBroadphasePair* %15, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %17 = load %struct.btBroadphaseProxy** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %17, %struct.btBroadphaseProxy** %scevgep9.i.i, align 4
+ %scevgep10.i.i = getelementptr %struct.btBroadphasePair* %15, i32 %indvar.i.i, i32 2 ; [#uses=1]
+ %18 = load %struct.btCollisionAlgorithm** %scevgep10.i.i, align 4 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %18, %struct.btCollisionAlgorithm** %scevgep11.i.i, align 4
+ %scevgep12.i.i = getelementptr %struct.btBroadphasePair* %15, i32 %indvar.i.i, i32 3, i32 0 ; [#uses=1]
+ %19 = load i8** %scevgep12.i.i, align 4 ; [#uses=1]
+ store i8* %19, i8** %scevgep13.i.i, align 4
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i: ; preds = %bb.i4.i, %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i
+ %20 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 3 ; [#uses=3]
+ %21 = load %struct.btBroadphasePair** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.btBroadphasePair* %21, null ; [#uses=1]
+ br i1 %22, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+ %23 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %25 = bitcast %struct.btBroadphasePair* %21 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %25)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %20, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+ %26 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %26, align 4
+ store %struct.btBroadphasePair* %12, %struct.btBroadphasePair** %20, align 4
+ store i32 %iftmp.218.0.i, i32* %2, align 4
+ %.pre9 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayI16btBroadphasePairE10deallocateEv.exit.i, %bb, %entry
+ %27 = phi i32 [ %.pre9, %_ZN20btAlignedObjectArrayI16btBroadphasePairE10deallocateEv.exit.i ], [ %1, %entry ], [ %1, %bb ] ; [#uses=1]
+ %28 = add nsw i32 %27, 1 ; [#uses=1]
+ store i32 %28, i32* %0, align 4
+ %29 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 3 ; [#uses=1]
+ %30 = load %struct.btBroadphasePair** %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btBroadphasePair* %30, i32 %1 ; [#uses=1]
+ ret %struct.btBroadphasePair* %31
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI16btBroadphasePairE9push_backERKS0_(%"struct.btAlignedObjectArray<btBroadphasePair>"* nocapture %this, %struct.btBroadphasePair* nocapture %_Val) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.218.0.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.218.0.i ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb1
+
+bb.i: ; preds = %bb
+ %8 = icmp eq i32 %iftmp.218.0.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %9 = shl i32 %iftmp.218.0.i, 4 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %10 to %struct.btBroadphasePair* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %11 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %12 = phi %struct.btBroadphasePair* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=5]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i
+ %14 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb.i4.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb.i4.i ] ; [#uses=9]
+ %scevgep13.i.i = getelementptr %struct.btBroadphasePair* %12, i32 %indvar.i.i, i32 3, i32 0 ; [#uses=1]
+ %scevgep11.i.i = getelementptr %struct.btBroadphasePair* %12, i32 %indvar.i.i, i32 2 ; [#uses=1]
+ %scevgep9.i.i = getelementptr %struct.btBroadphasePair* %12, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %scevgep67.i.i = getelementptr inbounds %struct.btBroadphasePair* %12, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %15 = load %struct.btBroadphasePair** %14, align 4 ; [#uses=4]
+ %scevgep5.i.i = getelementptr inbounds %struct.btBroadphasePair* %15, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %16 = load %struct.btBroadphaseProxy** %scevgep5.i.i, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %16, %struct.btBroadphaseProxy** %scevgep67.i.i, align 4
+ %scevgep8.i.i = getelementptr %struct.btBroadphasePair* %15, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %17 = load %struct.btBroadphaseProxy** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %17, %struct.btBroadphaseProxy** %scevgep9.i.i, align 4
+ %scevgep10.i.i = getelementptr %struct.btBroadphasePair* %15, i32 %indvar.i.i, i32 2 ; [#uses=1]
+ %18 = load %struct.btCollisionAlgorithm** %scevgep10.i.i, align 4 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %18, %struct.btCollisionAlgorithm** %scevgep11.i.i, align 4
+ %scevgep12.i.i = getelementptr %struct.btBroadphasePair* %15, i32 %indvar.i.i, i32 3, i32 0 ; [#uses=1]
+ %19 = load i8** %scevgep12.i.i, align 4 ; [#uses=1]
+ store i8* %19, i8** %scevgep13.i.i, align 4
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i: ; preds = %bb.i4.i, %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i
+ %20 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 3 ; [#uses=3]
+ %21 = load %struct.btBroadphasePair** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.btBroadphasePair* %21, null ; [#uses=1]
+ br i1 %22, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+ %23 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %25 = bitcast %struct.btBroadphasePair* %21 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %25)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %20, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+ %26 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %26, align 4
+ store %struct.btBroadphasePair* %12, %struct.btBroadphasePair** %20, align 4
+ store i32 %iftmp.218.0.i, i32* %2, align 4
+ %.pre8 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayI16btBroadphasePairE10deallocateEv.exit.i, %bb, %entry
+ %27 = phi i32 [ %.pre8, %_ZN20btAlignedObjectArrayI16btBroadphasePairE10deallocateEv.exit.i ], [ %1, %entry ], [ %1, %bb ] ; [#uses=4]
+ %28 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %this, i32 0, i32 3 ; [#uses=1]
+ %29 = load %struct.btBroadphasePair** %28, align 4 ; [#uses=4]
+ %30 = getelementptr inbounds %struct.btBroadphasePair* %_Val, i32 0, i32 0 ; [#uses=1]
+ %31 = load %struct.btBroadphaseProxy** %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btBroadphasePair* %29, i32 %27, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %31, %struct.btBroadphaseProxy** %32, align 4
+ %33 = getelementptr inbounds %struct.btBroadphasePair* %_Val, i32 0, i32 1 ; [#uses=1]
+ %34 = load %struct.btBroadphaseProxy** %33, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btBroadphasePair* %29, i32 %27, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %34, %struct.btBroadphaseProxy** %35, align 4
+ %36 = getelementptr inbounds %struct.btBroadphasePair* %_Val, i32 0, i32 2 ; [#uses=1]
+ %37 = load %struct.btCollisionAlgorithm** %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btBroadphasePair* %29, i32 %27, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %37, %struct.btCollisionAlgorithm** %38, align 4
+ %39 = getelementptr inbounds %struct.btBroadphasePair* %_Val, i32 0, i32 3, i32 0 ; [#uses=1]
+ %40 = load i8** %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btBroadphasePair* %29, i32 %27, i32 3, i32 0 ; [#uses=1]
+ store i8* %40, i8** %41, align 4
+ %42 = load i32* %0, align 4 ; [#uses=1]
+ %43 = add nsw i32 %42, 1 ; [#uses=1]
+ store i32 %43, i32* %0, align 4
+ ret void
+}
+
+; [#uses=8]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIiE6resizeEiRKi(%"struct.btAlignedObjectArray<int>"* nocapture %this, i32 %newsize, i32* nocapture %fillData) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = icmp sgt i32 %1, %newsize ; [#uses=1]
+ br i1 %2, label %bb12, label %bb3
+
+bb3: ; preds = %entry
+ %3 = icmp slt i32 %1, %newsize ; [#uses=2]
+ br i1 %3, label %bb4, label %bb12
+
+bb4: ; preds = %bb3
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 2 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp slt i32 %5, %newsize ; [#uses=1]
+ br i1 %6, label %bb.i, label %bb.nph
+
+bb.i: ; preds = %bb4
+ %7 = icmp eq i32 %newsize, 0 ; [#uses=1]
+ br i1 %7, label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %8 = shl i32 %newsize, 2 ; [#uses=1]
+ %9 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %8, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %9 to i32* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %10 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %11 = phi i32* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=2]
+ %12 = icmp sgt i32 %10, 0 ; [#uses=1]
+ br i1 %12, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=3]
+ %scevgep.i.i = getelementptr i32* %11, i32 %indvar.i.i ; [#uses=2]
+ %14 = icmp eq i32* %scevgep.i.i, null ; [#uses=1]
+ br i1 %14, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %15 = load i32** %13, align 4 ; [#uses=1]
+ %scevgep8.i.i = getelementptr i32* %15, i32 %indvar.i.i ; [#uses=1]
+ %16 = load i32* %scevgep8.i.i, align 4 ; [#uses=1]
+ store i32 %16, i32* %scevgep.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond19 = icmp eq i32 %indvar.next.i.i, %10 ; [#uses=1]
+ br i1 %exitcond19, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i
+ %17 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 3 ; [#uses=3]
+ %18 = load i32** %17, align 4 ; [#uses=2]
+ %19 = icmp eq i32* %18, null ; [#uses=1]
+ br i1 %19, label %bb11.preheader, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i
+ %20 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 4 ; [#uses=1]
+ %21 = load i8* %20, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %21, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %22 = bitcast i32* %18 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %22)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store i32* null, i32** %17, align 4
+ br label %bb11.preheader
+
+bb11.preheader: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i
+ %23 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %23, align 4
+ store i32* %11, i32** %17, align 4
+ store i32 %newsize, i32* %4, align 4
+ br i1 %3, label %bb.nph, label %bb12
+
+bb.nph: ; preds = %bb11.preheader, %bb4
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 3 ; [#uses=1]
+ %tmp = sub i32 %newsize, %1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb10, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb10 ] ; [#uses=2]
+ %tmp17 = add i32 %1, %indvar ; [#uses=1]
+ %25 = load i32** %24, align 4 ; [#uses=1]
+ %scevgep18 = getelementptr i32* %25, i32 %tmp17 ; [#uses=2]
+ %26 = icmp eq i32* %scevgep18, null ; [#uses=1]
+ br i1 %26, label %bb10, label %bb8
+
+bb8: ; preds = %bb7
+ %27 = load i32* %fillData, align 4 ; [#uses=1]
+ store i32 %27, i32* %scevgep18, align 4
+ br label %bb10
+
+bb10: ; preds = %bb8, %bb7
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; [#uses=1]
+ br i1 %exitcond, label %bb12, label %bb7
+
+bb12: ; preds = %bb10, %bb11.preheader, %bb3, %entry
+ store i32 %newsize, i32* %0, align 4
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN28btHashedOverlappingPairCache10growTablesEv(%struct.btHashedOverlappingPairCache* nocapture %this) align 2 {
+entry:
+ %0 = alloca i32, align 4 ; [#uses=2]
+ %1 = alloca i32, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=6]
+ %4 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=3]
+ %6 = icmp slt i32 %5, %3 ; [#uses=1]
+ br i1 %6, label %bb, label %return
+
+bb: ; preds = %entry
+ store i32 0, i32* %1, align 4
+ %7 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIiE6resizeEiRKi(%"struct.btAlignedObjectArray<int>"* %7, i32 %3, i32* %1) inlinehint
+ store i32 0, i32* %0, align 4
+ %8 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIiE6resizeEiRKi(%"struct.btAlignedObjectArray<int>"* %8, i32 %3, i32* %0) inlinehint
+ %9 = icmp sgt i32 %3, 0 ; [#uses=2]
+ br i1 %9, label %bb.nph14, label %bb8.preheader
+
+bb.nph14: ; preds = %bb
+ %10 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb1, %bb.nph14
+ %i.013 = phi i32 [ 0, %bb.nph14 ], [ %12, %bb1 ] ; [#uses=2]
+ %11 = load i32** %10, align 4 ; [#uses=1]
+ %scevgep21 = getelementptr i32* %11, i32 %i.013 ; [#uses=1]
+ store i32 -1, i32* %scevgep21, align 4
+ %12 = add nsw i32 %i.013, 1 ; [#uses=2]
+ %exitcond20 = icmp eq i32 %12, %3 ; [#uses=1]
+ br i1 %exitcond20, label %bb5.preheader, label %bb1
+
+bb5.preheader: ; preds = %bb1
+ br i1 %9, label %bb.nph12, label %bb8.preheader
+
+bb.nph12: ; preds = %bb5.preheader
+ %13 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb4, %bb.nph12
+ %i.111 = phi i32 [ 0, %bb.nph12 ], [ %15, %bb4 ] ; [#uses=2]
+ %14 = load i32** %13, align 4 ; [#uses=1]
+ %scevgep19 = getelementptr i32* %14, i32 %i.111 ; [#uses=1]
+ store i32 -1, i32* %scevgep19, align 4
+ %15 = add nsw i32 %i.111, 1 ; [#uses=2]
+ %exitcond18 = icmp eq i32 %15, %3 ; [#uses=1]
+ br i1 %exitcond18, label %bb8.preheader, label %bb4
+
+bb8.preheader: ; preds = %bb4, %bb5.preheader, %bb
+ %16 = icmp sgt i32 %5, 0 ; [#uses=1]
+ br i1 %16, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb8.preheader
+ %17 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 3 ; [#uses=2]
+ br label %bb7
+
+bb7: ; preds = %bb7, %bb.nph
+ %20 = phi i32 [ 0, %bb.nph ], [ %50, %bb7 ] ; [#uses=5]
+ %21 = load %struct.btBroadphasePair** %17, align 4 ; [#uses=2]
+ %scevgep1516 = getelementptr inbounds %struct.btBroadphasePair* %21, i32 %20, i32 0 ; [#uses=1]
+ %22 = load %struct.btBroadphaseProxy** %scevgep1516, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btBroadphaseProxy* %22, i32 0, i32 4 ; [#uses=1]
+ %24 = load i32* %23, align 4 ; [#uses=1]
+ %scevgep17 = getelementptr %struct.btBroadphasePair* %21, i32 %20, i32 1 ; [#uses=1]
+ %25 = load %struct.btBroadphaseProxy** %scevgep17, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btBroadphaseProxy* %25, i32 0, i32 4 ; [#uses=1]
+ %27 = load i32* %26, align 4 ; [#uses=1]
+ %28 = shl i32 %27, 16 ; [#uses=1]
+ %29 = or i32 %28, %24 ; [#uses=2]
+ %30 = shl i32 %29, 15 ; [#uses=1]
+ %not.i = xor i32 %30, -1 ; [#uses=1]
+ %31 = add nsw i32 %29, %not.i ; [#uses=2]
+ %32 = ashr i32 %31, 10 ; [#uses=1]
+ %33 = xor i32 %32, %31 ; [#uses=1]
+ %34 = mul i32 %33, 9 ; [#uses=2]
+ %35 = ashr i32 %34, 6 ; [#uses=1]
+ %36 = xor i32 %35, %34 ; [#uses=2]
+ %37 = shl i32 %36, 11 ; [#uses=1]
+ %not2.i = xor i32 %37, -1 ; [#uses=1]
+ %38 = add nsw i32 %36, %not2.i ; [#uses=2]
+ %39 = ashr i32 %38, 16 ; [#uses=1]
+ %40 = xor i32 %39, %38 ; [#uses=1]
+ %41 = load i32* %2, align 4 ; [#uses=1]
+ %42 = add nsw i32 %41, -1 ; [#uses=1]
+ %43 = and i32 %40, %42 ; [#uses=2]
+ %44 = load i32** %18, align 4 ; [#uses=1]
+ %45 = load i32** %19, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds i32* %45, i32 %43 ; [#uses=1]
+ %47 = load i32* %46, align 4 ; [#uses=1]
+ %scevgep = getelementptr i32* %44, i32 %20 ; [#uses=1]
+ store i32 %47, i32* %scevgep, align 4
+ %48 = load i32** %19, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds i32* %48, i32 %43 ; [#uses=1]
+ store i32 %20, i32* %49, align 4
+ %50 = add nsw i32 %20, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %50, %5 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb7
+
+return: ; preds = %bb7, %bb8.preheader, %entry
+ ret void
+}
+
+; [#uses=1]
+define %struct.btBroadphasePair* @_ZN28btHashedOverlappingPairCache15internalAddPairEP17btBroadphaseProxyS1_(%struct.btHashedOverlappingPairCache* nocapture %this, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 4 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 4 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = icmp sgt i32 %1, %3 ; [#uses=2]
+ %proxy1_addr.0 = select i1 %4, %struct.btBroadphaseProxy* %proxy0, %struct.btBroadphaseProxy* %proxy1 ; [#uses=4]
+ %proxy0_addr.0 = select i1 %4, %struct.btBroadphaseProxy* %proxy1, %struct.btBroadphaseProxy* %proxy0 ; [#uses=4]
+ %5 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0_addr.0, i32 0, i32 4 ; [#uses=2]
+ %6 = load i32* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1_addr.0, i32 0, i32 4 ; [#uses=2]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = shl i32 %8, 16 ; [#uses=1]
+ %10 = or i32 %9, %6 ; [#uses=2]
+ %11 = shl i32 %10, 15 ; [#uses=1]
+ %not.i10 = xor i32 %11, -1 ; [#uses=1]
+ %12 = add nsw i32 %10, %not.i10 ; [#uses=2]
+ %13 = ashr i32 %12, 10 ; [#uses=1]
+ %14 = xor i32 %13, %12 ; [#uses=1]
+ %15 = mul i32 %14, 9 ; [#uses=2]
+ %16 = ashr i32 %15, 6 ; [#uses=1]
+ %17 = xor i32 %16, %15 ; [#uses=2]
+ %18 = shl i32 %17, 11 ; [#uses=1]
+ %not2.i11 = xor i32 %18, -1 ; [#uses=1]
+ %19 = add nsw i32 %17, %not2.i11 ; [#uses=2]
+ %20 = ashr i32 %19, 16 ; [#uses=1]
+ %21 = xor i32 %20, %19 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=3]
+ %23 = load i32* %22, align 4 ; [#uses=2]
+ %24 = add nsw i32 %23, -1 ; [#uses=1]
+ %25 = and i32 %21, %24 ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %27 = load i32** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds i32* %27, i32 %25 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 3 ; [#uses=2]
+ br label %bb1.i13
+
+bb.i12: ; preds = %_ZN28btHashedOverlappingPairCache10equalsPairERK16btBroadphasePairii.exit.i, %bb2.i
+ %31 = load i32** %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds i32* %31, i32 %index.0.i ; [#uses=1]
+ br label %bb1.i13
+
+bb1.i13: ; preds = %bb.i12, %entry
+ %index.0.in.i = phi i32* [ %28, %entry ], [ %32, %bb.i12 ] ; [#uses=1]
+ %index.0.i = load i32* %index.0.in.i, align 4 ; [#uses=5]
+ %cond.i = icmp eq i32 %index.0.i, -1 ; [#uses=1]
+ br i1 %cond.i, label %bb3, label %bb2.i
+
+bb2.i: ; preds = %bb1.i13
+ %33 = load %struct.btBroadphasePair** %29, align 4 ; [#uses=3]
+ %34 = getelementptr inbounds %struct.btBroadphasePair* %33, i32 %index.0.i, i32 0 ; [#uses=1]
+ %35 = load %struct.btBroadphaseProxy** %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btBroadphaseProxy* %35, i32 0, i32 4 ; [#uses=1]
+ %37 = load i32* %36, align 4 ; [#uses=1]
+ %38 = icmp eq i32 %37, %6 ; [#uses=1]
+ br i1 %38, label %_ZN28btHashedOverlappingPairCache10equalsPairERK16btBroadphasePairii.exit.i, label %bb.i12
+
+_ZN28btHashedOverlappingPairCache10equalsPairERK16btBroadphasePairii.exit.i: ; preds = %bb2.i
+ %39 = getelementptr inbounds %struct.btBroadphasePair* %33, i32 %index.0.i, i32 1 ; [#uses=1]
+ %40 = load %struct.btBroadphaseProxy** %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btBroadphaseProxy* %40, i32 0, i32 4 ; [#uses=1]
+ %42 = load i32* %41, align 4 ; [#uses=1]
+ %phitmp.i = icmp eq i32 %42, %8 ; [#uses=1]
+ br i1 %phitmp.i, label %_ZN28btHashedOverlappingPairCache16internalFindPairEP17btBroadphaseProxyS1_i.exit, label %bb.i12
+
+_ZN28btHashedOverlappingPairCache16internalFindPairEP17btBroadphaseProxyS1_i.exit: ; preds = %_ZN28btHashedOverlappingPairCache10equalsPairERK16btBroadphasePairii.exit.i
+ %43 = getelementptr inbounds %struct.btBroadphasePair* %33, i32 %index.0.i ; [#uses=2]
+ %44 = icmp eq %struct.btBroadphasePair* %43, null ; [#uses=1]
+ br i1 %44, label %bb3, label %bb8
+
+bb3: ; preds = %_ZN28btHashedOverlappingPairCache16internalFindPairEP17btBroadphaseProxyS1_i.exit, %bb1.i13
+ %45 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %46 = load i32* %45, align 4 ; [#uses=2]
+ %47 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1 ; [#uses=1]
+ %48 = tail call %struct.btBroadphasePair* @_ZN20btAlignedObjectArrayI16btBroadphasePairE21expandNonInitializingEv(%"struct.btAlignedObjectArray<btBroadphasePair>"* %47) inlinehint ; [#uses=6]
+ %49 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 6 ; [#uses=1]
+ %50 = load %struct.btActionInterface** %49, align 4 ; [#uses=3]
+ %51 = icmp eq %struct.btActionInterface* %50, null ; [#uses=1]
+ br i1 %51, label %bb5, label %bb4
+
+bb4: ; preds = %bb3
+ %52 = getelementptr inbounds %struct.btActionInterface* %50, i32 0, i32 0 ; [#uses=1]
+ %53 = load i32 (...)*** %52, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds i32 (...)** %53, i32 2 ; [#uses=1]
+ %55 = load i32 (...)** %54, align 4 ; [#uses=1]
+ %56 = bitcast i32 (...)* %55 to %struct.btBroadphasePair* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %57 = tail call %struct.btBroadphasePair* %56(%struct.btActionInterface* %50, %struct.btBroadphaseProxy* %proxy0_addr.0, %struct.btBroadphaseProxy* %proxy1_addr.0) ; [#uses=0]
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ %58 = load i32* %22, align 4 ; [#uses=1]
+ %59 = icmp slt i32 %23, %58 ; [#uses=1]
+ br i1 %59, label %bb6, label %bb7
+
+bb6: ; preds = %bb5
+ tail call void @_ZN28btHashedOverlappingPairCache10growTablesEv(%struct.btHashedOverlappingPairCache* %this)
+ %60 = load i32* %22, align 4 ; [#uses=1]
+ %61 = add nsw i32 %60, -1 ; [#uses=1]
+ %62 = and i32 %61, %21 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5
+ %hash.0 = phi i32 [ %62, %bb6 ], [ %25, %bb5 ] ; [#uses=2]
+ %63 = load i32* %5, align 4 ; [#uses=1]
+ %64 = load i32* %7, align 4 ; [#uses=1]
+ %65 = icmp slt i32 %63, %64 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btBroadphasePair* %48, i32 0, i32 0 ; [#uses=2]
+ br i1 %65, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb7
+ store %struct.btBroadphaseProxy* %proxy0_addr.0, %struct.btBroadphaseProxy** %66, align 4
+ %67 = getelementptr inbounds %struct.btBroadphasePair* %48, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %proxy1_addr.0, %struct.btBroadphaseProxy** %67, align 4
+ br label %_ZN16btBroadphasePairC1ER17btBroadphaseProxyS1_.exit
+
+bb1.i: ; preds = %bb7
+ store %struct.btBroadphaseProxy* %proxy1_addr.0, %struct.btBroadphaseProxy** %66, align 4
+ %68 = getelementptr inbounds %struct.btBroadphasePair* %48, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %proxy0_addr.0, %struct.btBroadphaseProxy** %68, align 4
+ br label %_ZN16btBroadphasePairC1ER17btBroadphaseProxyS1_.exit
+
+_ZN16btBroadphasePairC1ER17btBroadphaseProxyS1_.exit: ; preds = %bb1.i, %bb.i
+ %69 = getelementptr inbounds %struct.btBroadphasePair* %48, i32 0, i32 2 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btBroadphasePair* %48, i32 0, i32 3, i32 0 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %69, align 4
+ store i8* null, i8** %70, align 4
+ %71 = load i32** %30, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds i32* %71, i32 %46 ; [#uses=1]
+ %73 = load i32** %26, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds i32* %73, i32 %hash.0 ; [#uses=1]
+ %75 = load i32* %74, align 4 ; [#uses=1]
+ store i32 %75, i32* %72, align 4
+ %76 = load i32** %26, align 4 ; [#uses=1]
+ %77 = getelementptr inbounds i32* %76, i32 %hash.0 ; [#uses=1]
+ store i32 %46, i32* %77, align 4
+ ret %struct.btBroadphasePair* %48
+
+bb8: ; preds = %_ZN28btHashedOverlappingPairCache16internalFindPairEP17btBroadphaseProxyS1_i.exit
+ ret %struct.btBroadphasePair* %43
+}
+
+; [#uses=1]
+define void @_ZN28btHashedOverlappingPairCacheC2Ev(%struct.btHashedOverlappingPairCache* nocapture %this) align 2 {
+bb.i:
+ %0 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV28btHashedOverlappingPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 4 ; [#uses=5]
+ store i8 1, i8* %1, align 4
+ %2 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 3 ; [#uses=8]
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %2, align 4
+ %3 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 1, i32 2 ; [#uses=3]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %5, align 4
+ %6 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 0, i8* %6, align 4
+ %7 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 4 ; [#uses=3]
+ store i8 1, i8* %7, align 4
+ %8 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 3 ; [#uses=4]
+ store i32* null, i32** %8, align 4
+ %9 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 1 ; [#uses=2]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 4, i32 2 ; [#uses=2]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 4 ; [#uses=3]
+ store i8 1, i8* %11, align 4
+ %12 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 3 ; [#uses=4]
+ store i32* null, i32** %12, align 4
+ %13 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 1 ; [#uses=2]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 5, i32 2 ; [#uses=2]
+ store i32 0, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %15, align 4
+ %16 = invoke i8* @_Z22btAlignedAllocInternalji(i32 32, i32 16)
+ to label %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i unwind label %lpad31 ; [#uses=5]
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i: ; preds = %bb.i
+ %phitmp.i = bitcast i8* %16 to %struct.btBroadphasePair* ; [#uses=1]
+ %17 = load i32* %3, align 4 ; [#uses=2]
+ %18 = icmp sgt i32 %17, 0 ; [#uses=1]
+ br i1 %18, label %bb.i4.i, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+
+bb.i4.i: ; preds = %bb.i4.i, %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i
+ %indvar.i.i = phi i32 [ %indvar.next.i.i, %bb.i4.i ], [ 0, %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i ] ; [#uses=6]
+ %tmp = shl i32 %indvar.i.i, 4 ; [#uses=4]
+ %tmp6879 = or i32 %tmp, 12 ; [#uses=1]
+ %scevgep69 = getelementptr i8* %16, i32 %tmp6879 ; [#uses=1]
+ %scevgep13.i.i = bitcast i8* %scevgep69 to i8** ; [#uses=1]
+ %tmp7180 = or i32 %tmp, 8 ; [#uses=1]
+ %scevgep72 = getelementptr i8* %16, i32 %tmp7180 ; [#uses=1]
+ %scevgep11.i.i = bitcast i8* %scevgep72 to %struct.btCollisionAlgorithm** ; [#uses=1]
+ %tmp7481 = or i32 %tmp, 4 ; [#uses=1]
+ %scevgep75 = getelementptr i8* %16, i32 %tmp7481 ; [#uses=1]
+ %scevgep9.i.i = bitcast i8* %scevgep75 to %struct.btBroadphaseProxy** ; [#uses=1]
+ %scevgep77 = getelementptr i8* %16, i32 %tmp ; [#uses=1]
+ %scevgep67.i.i = bitcast i8* %scevgep77 to %struct.btBroadphaseProxy** ; [#uses=1]
+ %19 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=4]
+ %scevgep5.i.i = getelementptr inbounds %struct.btBroadphasePair* %19, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %20 = load %struct.btBroadphaseProxy** %scevgep5.i.i, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %20, %struct.btBroadphaseProxy** %scevgep67.i.i, align 4
+ %scevgep8.i.i = getelementptr %struct.btBroadphasePair* %19, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %21 = load %struct.btBroadphaseProxy** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %21, %struct.btBroadphaseProxy** %scevgep9.i.i, align 4
+ %scevgep10.i.i = getelementptr %struct.btBroadphasePair* %19, i32 %indvar.i.i, i32 2 ; [#uses=1]
+ %22 = load %struct.btCollisionAlgorithm** %scevgep10.i.i, align 4 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %22, %struct.btCollisionAlgorithm** %scevgep11.i.i, align 4
+ %scevgep12.i.i = getelementptr %struct.btBroadphasePair* %19, i32 %indvar.i.i, i32 3, i32 0 ; [#uses=1]
+ %23 = load i8** %scevgep12.i.i, align 4 ; [#uses=1]
+ store i8* %23, i8** %scevgep13.i.i, align 4
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %17 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i: ; preds = %bb.i4.i, %_ZN20btAlignedObjectArrayI16btBroadphasePairE8allocateEi.exit.i
+ %24 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=2]
+ %25 = icmp eq %struct.btBroadphasePair* %24, null ; [#uses=1]
+ br i1 %25, label %invcont3, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+ %26 = load i8* %1, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %27 = bitcast %struct.btBroadphasePair* %24 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %27)
+ to label %bb2.i.i unwind label %lpad31
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %2, align 4
+ br label %invcont3
+
+invcont3: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI16btBroadphasePairE4copyEiiPS0_.exit.i
+ store i8 1, i8* %1, align 4
+ store %struct.btBroadphasePair* %phitmp.i, %struct.btBroadphasePair** %2, align 4
+ store i32 2, i32* %4, align 4
+ invoke void @_ZN28btHashedOverlappingPairCache10growTablesEv(%struct.btHashedOverlappingPairCache* %this)
+ to label %return unwind label %lpad31
+
+return: ; preds = %invcont3
+ ret void
+
+lpad31: ; preds = %invcont3, %bb1.i.i, %bb.i
+ %eh_ptr32 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select34 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr32, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %28 = load i32** %12, align 4 ; [#uses=2]
+ %29 = icmp eq i32* %28, null ; [#uses=1]
+ br i1 %29, label %ppad48, label %bb.i.i.i60
+
+bb.i.i.i60: ; preds = %lpad31
+ %30 = load i8* %11, align 4 ; [#uses=1]
+ %toBool.i.i.i59 = icmp eq i8 %30, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i59, label %bb2.i.i.i62, label %bb1.i.i.i61
+
+bb1.i.i.i61: ; preds = %bb.i.i.i60
+ %31 = bitcast i32* %28 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %31)
+ to label %bb2.i.i.i62 unwind label %lpad35
+
+bb2.i.i.i62: ; preds = %bb1.i.i.i61, %bb.i.i.i60
+ store i32* null, i32** %12, align 4
+ br label %ppad48
+
+lpad35: ; preds = %bb1.i.i.i61
+ %eh_ptr36 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select38 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr36, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad39: ; preds = %bb1.i.i.i
+ %eh_ptr40 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select42 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr40, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad43: ; preds = %bb1.i.i.i56
+ %eh_ptr44 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select46 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr44, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i57, %ppad47
+ store i8 1, i8* %1, align 4
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %2, align 4
+ store i32 0, i32* %3, align 4
+ store i32 0, i32* %4, align 4
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV22btOverlappingPairCache, i32 0, i32 2), i32 (...)*** %0, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr32)
+ unreachable
+
+ppad47: ; preds = %bb2.i.i.i, %ppad48
+ store i8 1, i8* %7, align 4
+ store i32* null, i32** %8, align 4
+ store i32 0, i32* %9, align 4
+ store i32 0, i32* %10, align 4
+ %32 = load %struct.btBroadphasePair** %2, align 4 ; [#uses=2]
+ %33 = icmp eq %struct.btBroadphasePair* %32, null ; [#uses=1]
+ br i1 %33, label %ppad, label %bb.i.i.i55
+
+bb.i.i.i55: ; preds = %ppad47
+ %34 = load i8* %1, align 4 ; [#uses=1]
+ %toBool.i.i.i54 = icmp eq i8 %34, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i54, label %bb2.i.i.i57, label %bb1.i.i.i56
+
+bb1.i.i.i56: ; preds = %bb.i.i.i55
+ %35 = bitcast %struct.btBroadphasePair* %32 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %35)
+ to label %bb2.i.i.i57 unwind label %lpad43
+
+bb2.i.i.i57: ; preds = %bb1.i.i.i56, %bb.i.i.i55
+ store %struct.btBroadphasePair* null, %struct.btBroadphasePair** %2, align 4
+ br label %ppad
+
+ppad48: ; preds = %bb2.i.i.i62, %lpad31
+ store i8 1, i8* %11, align 4
+ store i32* null, i32** %12, align 4
+ store i32 0, i32* %13, align 4
+ store i32 0, i32* %14, align 4
+ %36 = load i32** %8, align 4 ; [#uses=2]
+ %37 = icmp eq i32* %36, null ; [#uses=1]
+ br i1 %37, label %ppad47, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %ppad48
+ %38 = load i8* %7, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %38, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %39 = bitcast i32* %36 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %39)
+ to label %bb2.i.i.i unwind label %lpad39
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %8, align 4
+ br label %ppad47
+}
+
+; [#uses=5]
+define void @_ZN28btHashedOverlappingPairCacheC1Ev(%struct.btHashedOverlappingPairCache* nocapture %this) align 2 {
+entry:
+ tail call void @_ZN28btHashedOverlappingPairCacheC2Ev(%struct.btHashedOverlappingPairCache* %this)
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN14btQuantizedBvhC2Ev(%struct.btQuantizedBvh* nocapture %this) align 2 {
+invcont3:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV14btQuantizedBvh, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 277, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ store i8 1, i8* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=1]
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %4, align 4
+ %5 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 1 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 2 ; [#uses=1]
+ store i32 0, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %8, align 4
+ %9 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %11, align 4
+ %12 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=1]
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %12, align 4
+ %13 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %15, align 4
+ %16 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %16, align 4
+ %17 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 11 ; [#uses=1]
+ store i32 0, i32* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ store i8 1, i8* %20, align 4
+ %21 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %21, align 4
+ %22 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=1]
+ store i32 0, i32* %22, align 4
+ %23 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 2 ; [#uses=1]
+ store i32 0, i32* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 13 ; [#uses=1]
+ store i32 0, i32* %24, align 4
+ %25 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %32, align 4
+ ret void
+}
+
+; [#uses=18]
+declare i32 @llvm.bswap.i32(i32) nounwind readnone
+
+; [#uses=24]
+declare i16 @llvm.bswap.i16(i16) nounwind readnone
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK14btQuantizedBvh31calculateSerializeBufferSizeNewEv(%struct.btQuantizedBvh* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 84
+}
+
+; [#uses=3]
+define void @_ZN14btQuantizedBvh21setQuantizationValuesERK9btVector3S2_f(%struct.btQuantizedBvh* nocapture %this, %struct.btQuadWord* nocapture %bvhAabbMin, %struct.btQuadWord* nocapture %bvhAabbMax, float %quantizationMargin) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %bvhAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = fsub float %1, %quantizationMargin ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btQuadWord* %bvhAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = fsub float %4, %quantizationMargin ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %bvhAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = fsub float %7, %quantizationMargin ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %8, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %5, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %2, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btQuadWord* %bvhAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fadd float %14, %quantizationMargin ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btQuadWord* %bvhAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fadd float %17, %quantizationMargin ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btQuadWord* %bvhAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fadd float %20, %quantizationMargin ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %21, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %18, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %15, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = fsub float %15, %2 ; [#uses=1]
+ %27 = fsub float %18, %5 ; [#uses=1]
+ %28 = fsub float %21, %8 ; [#uses=1]
+ %29 = fdiv float 6.553300e+04, %26 ; [#uses=1]
+ %30 = fdiv float 6.553300e+04, %27 ; [#uses=1]
+ %31 = fdiv float 6.553300e+04, %28 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %31, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %30, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %29, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ store i8 1, i8* %36, align 4
+ ret void
+}
+
+; [#uses=2]
+define void @_ZNK14btQuantizedBvh42walkRecursiveQuantizedTreeAgainstQueryAabbEPK18btQuantizedBvhNodeP21btNodeOverlapCallbackPtS5_(%struct.btQuantizedBvh* %this, %struct.BT_QUANTIZED_BVH_NODE* %currentNode, %struct.btActionInterface* %nodeCallback, i16* %quantizedQueryAabbMin, i16* %quantizedQueryAabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds i16* %quantizedQueryAabbMin, i32 2 ; [#uses=1]
+ %1 = getelementptr inbounds i16* %quantizedQueryAabbMax, i32 2 ; [#uses=1]
+ %2 = getelementptr inbounds i16* %quantizedQueryAabbMin, i32 1 ; [#uses=1]
+ %3 = getelementptr inbounds i16* %quantizedQueryAabbMax, i32 1 ; [#uses=1]
+ br label %tailrecurse
+
+tailrecurse: ; preds = %bb5, %bb4, %entry
+ %currentNode.tr = phi %struct.BT_QUANTIZED_BVH_NODE* [ %currentNode, %entry ], [ %45, %bb4 ], [ %46, %bb5 ] ; [#uses=11]
+ %4 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %currentNode.tr, i32 0, i32 1, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %currentNode.tr, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i16* %quantizedQueryAabbMin, align 2 ; [#uses=1]
+ %7 = load i16* %4, align 2 ; [#uses=1]
+ %8 = icmp ule i16 %6, %7 ; [#uses=1]
+ %9 = load i16* %quantizedQueryAabbMax, align 2 ; [#uses=1]
+ %10 = load i16* %5, align 2 ; [#uses=1]
+ %11 = icmp uge i16 %9, %10 ; [#uses=1]
+ %12 = and i1 %8, %11 ; [#uses=1]
+ %13 = load i16* %0, align 2 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %currentNode.tr, i32 0, i32 1, i32 2 ; [#uses=1]
+ %15 = load i16* %14, align 2 ; [#uses=1]
+ %16 = icmp ule i16 %13, %15 ; [#uses=1]
+ %17 = and i1 %12, %16 ; [#uses=1]
+ %18 = load i16* %1, align 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %currentNode.tr, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load i16* %19, align 2 ; [#uses=1]
+ %21 = icmp uge i16 %18, %20 ; [#uses=1]
+ %22 = and i1 %17, %21 ; [#uses=1]
+ %23 = load i16* %2, align 2 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %currentNode.tr, i32 0, i32 1, i32 1 ; [#uses=1]
+ %25 = load i16* %24, align 2 ; [#uses=1]
+ %26 = icmp ule i16 %23, %25 ; [#uses=1]
+ %27 = and i1 %22, %26 ; [#uses=1]
+ %28 = load i16* %3, align 2 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %currentNode.tr, i32 0, i32 0, i32 1 ; [#uses=1]
+ %30 = load i16* %29, align 2 ; [#uses=1]
+ %31 = icmp uge i16 %28, %30 ; [#uses=1]
+ %32 = and i1 %27, %31 ; [#uses=1]
+ br i1 %32, label %bb, label %return
+
+bb: ; preds = %tailrecurse
+ %33 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %currentNode.tr, i32 0, i32 2 ; [#uses=1]
+ %34 = load i32* %33, align 4 ; [#uses=3]
+ %toBool = icmp slt i32 %34, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %35 = getelementptr inbounds %struct.btActionInterface* %nodeCallback, i32 0, i32 0 ; [#uses=1]
+ %36 = load i32 (...)*** %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds i32 (...)** %36, i32 2 ; [#uses=1]
+ %38 = load i32 (...)** %37, align 4 ; [#uses=1]
+ %39 = and i32 %34, 2097151 ; [#uses=1]
+ %40 = ashr i32 %34, 21 ; [#uses=1]
+ %41 = bitcast i32 (...)* %38 to void (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ tail call void %41(%struct.btActionInterface* %nodeCallback, i32 %40, i32 %39)
+ ret void
+
+bb2: ; preds = %bb
+ %42 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %currentNode.tr, i32 1 ; [#uses=1]
+ tail call void @_ZNK14btQuantizedBvh42walkRecursiveQuantizedTreeAgainstQueryAabbEPK18btQuantizedBvhNodeP21btNodeOverlapCallbackPtS5_(%struct.btQuantizedBvh* %this, %struct.BT_QUANTIZED_BVH_NODE* %42, %struct.btActionInterface* %nodeCallback, i16* %quantizedQueryAabbMin, i16* %quantizedQueryAabbMax)
+ %43 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %currentNode.tr, i32 1, i32 2 ; [#uses=1]
+ %44 = load i32* %43, align 4 ; [#uses=2]
+ %toBool3 = icmp slt i32 %44, 0 ; [#uses=1]
+ br i1 %toBool3, label %bb5, label %bb4
+
+bb4: ; preds = %bb2
+ %45 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %currentNode.tr, i32 2 ; [#uses=1]
+ br label %tailrecurse
+
+bb5: ; preds = %bb2
+ %.sum = sub i32 1, %44 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %currentNode.tr, i32 %.sum ; [#uses=1]
+ br label %tailrecurse
+
+return: ; preds = %tailrecurse
+ ret void
+}
+
+; [#uses=0]
+define i32 @_ZN14btQuantizedBvh32getAlignmentSerializationPaddingEv() nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=0]
+define i32 @_ZNK14btQuantizedBvh28calculateSerializeBufferSizeEv(%struct.btQuantizedBvh* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 13 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = shl i32 %1, 5 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 5 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %.pn.v = select i1 %toBool, i32 6, i32 4 ; [#uses=1]
+ %.pn = shl i32 %6, %.pn.v ; [#uses=1]
+ %7 = add i32 %2, 172 ; [#uses=1]
+ %.0 = add i32 %7, %.pn ; [#uses=1]
+ ret i32 %.0
+}
+
+; [#uses=0]
+define void @_ZN14btQuantizedBvh30assignInternalNodeFromLeafNodeEii(%struct.btQuantizedBvh* nocapture %this, i32 %internalNode, i32 %leafNodeIndex) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %3 = load %struct.BT_QUANTIZED_BVH_NODE** %2, align 4 ; [#uses=7]
+ %4 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=1]
+ %5 = load %struct.BT_QUANTIZED_BVH_NODE** %4, align 4 ; [#uses=7]
+ %6 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %internalNode, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %5, i32 %leafNodeIndex, i32 0, i32 0 ; [#uses=1]
+ %8 = load i16* %7, align 4 ; [#uses=1]
+ store i16 %8, i16* %6, align 4
+ %9 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %internalNode, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %5, i32 %leafNodeIndex, i32 0, i32 1 ; [#uses=1]
+ %11 = load i16* %10, align 2 ; [#uses=1]
+ store i16 %11, i16* %9, align 2
+ %12 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %internalNode, i32 0, i32 2 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %5, i32 %leafNodeIndex, i32 0, i32 2 ; [#uses=1]
+ %14 = load i16* %13, align 4 ; [#uses=1]
+ store i16 %14, i16* %12, align 4
+ %15 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %internalNode, i32 1, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %5, i32 %leafNodeIndex, i32 1, i32 0 ; [#uses=1]
+ %17 = load i16* %16, align 2 ; [#uses=1]
+ store i16 %17, i16* %15, align 2
+ %18 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %internalNode, i32 1, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %5, i32 %leafNodeIndex, i32 1, i32 1 ; [#uses=1]
+ %20 = load i16* %19, align 2 ; [#uses=1]
+ store i16 %20, i16* %18, align 2
+ %21 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %internalNode, i32 1, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %5, i32 %leafNodeIndex, i32 1, i32 2 ; [#uses=1]
+ %23 = load i16* %22, align 2 ; [#uses=1]
+ store i16 %23, i16* %21, align 2
+ %24 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %internalNode, i32 2 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %5, i32 %leafNodeIndex, i32 2 ; [#uses=1]
+ %26 = load i32* %25, align 4 ; [#uses=1]
+ store i32 %26, i32* %24, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %27 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ %28 = load %struct.btOptimizedBvhNode** %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btOptimizedBvhNode* %28, i32 %internalNode ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=1]
+ %31 = load %struct.btOptimizedBvhNode** %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btOptimizedBvhNode* %31, i32 %leafNodeIndex ; [#uses=1]
+ %33 = bitcast %struct.btOptimizedBvhNode* %29 to i8* ; [#uses=1]
+ %34 = bitcast %struct.btOptimizedBvhNode* %32 to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %33, i8* %34, i32 64, i32 4, i1 false)
+ ret void
+}
+
+; [#uses=44]
+declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind
+
+; [#uses=1]
+define void @_ZN14btQuantizedBvh13swapLeafNodesEii(%struct.btQuantizedBvh* nocapture %this, i32 %i, i32 %splitIndex) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=2]
+ %3 = load %struct.BT_QUANTIZED_BVH_NODE** %2, align 4 ; [#uses=14]
+ %4 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %i, i32 0, i32 0 ; [#uses=2]
+ %5 = load i16* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %i, i32 0, i32 1 ; [#uses=2]
+ %7 = load i16* %6, align 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %i, i32 0, i32 2 ; [#uses=2]
+ %9 = load i16* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %i, i32 1, i32 0 ; [#uses=2]
+ %11 = load i16* %10, align 2 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %i, i32 1, i32 1 ; [#uses=2]
+ %13 = load i16* %12, align 2 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %i, i32 1, i32 2 ; [#uses=2]
+ %15 = load i16* %14, align 2 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %i, i32 2 ; [#uses=2]
+ %17 = load i32* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %splitIndex, i32 0, i32 0 ; [#uses=1]
+ %19 = load i16* %18, align 4 ; [#uses=1]
+ store i16 %19, i16* %4, align 4
+ %20 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %splitIndex, i32 0, i32 1 ; [#uses=1]
+ %21 = load i16* %20, align 2 ; [#uses=1]
+ store i16 %21, i16* %6, align 2
+ %22 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %splitIndex, i32 0, i32 2 ; [#uses=1]
+ %23 = load i16* %22, align 4 ; [#uses=1]
+ store i16 %23, i16* %8, align 4
+ %24 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %splitIndex, i32 1, i32 0 ; [#uses=1]
+ %25 = load i16* %24, align 2 ; [#uses=1]
+ store i16 %25, i16* %10, align 2
+ %26 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %splitIndex, i32 1, i32 1 ; [#uses=1]
+ %27 = load i16* %26, align 2 ; [#uses=1]
+ store i16 %27, i16* %12, align 2
+ %28 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %splitIndex, i32 1, i32 2 ; [#uses=1]
+ %29 = load i16* %28, align 2 ; [#uses=1]
+ store i16 %29, i16* %14, align 2
+ %30 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %3, i32 %splitIndex, i32 2 ; [#uses=1]
+ %31 = load i32* %30, align 4 ; [#uses=1]
+ store i32 %31, i32* %16, align 4
+ %32 = load %struct.BT_QUANTIZED_BVH_NODE** %2, align 4 ; [#uses=7]
+ %33 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %32, i32 %splitIndex, i32 0, i32 0 ; [#uses=1]
+ store i16 %5, i16* %33, align 4
+ %34 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %32, i32 %splitIndex, i32 0, i32 1 ; [#uses=1]
+ store i16 %7, i16* %34, align 2
+ %35 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %32, i32 %splitIndex, i32 0, i32 2 ; [#uses=1]
+ store i16 %9, i16* %35, align 4
+ %36 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %32, i32 %splitIndex, i32 1, i32 0 ; [#uses=1]
+ store i16 %11, i16* %36, align 2
+ %37 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %32, i32 %splitIndex, i32 1, i32 1 ; [#uses=1]
+ store i16 %13, i16* %37, align 2
+ %38 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %32, i32 %splitIndex, i32 1, i32 2 ; [#uses=1]
+ store i16 %15, i16* %38, align 2
+ %39 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %32, i32 %splitIndex, i32 2 ; [#uses=1]
+ store i32 %17, i32* %39, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %40 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=2]
+ %41 = load %struct.btOptimizedBvhNode** %40, align 4 ; [#uses=18]
+ %.068 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %tmp69 = load float* %.068, align 4 ; [#uses=1]
+ %.170 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %tmp71 = load float* %.170, align 4 ; [#uses=1]
+ %.272 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %tmp73 = load float* %.272, align 4 ; [#uses=1]
+ %.374 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 0, i32 0, i32 3 ; [#uses=1]
+ %tmp75 = load float* %.374, align 4 ; [#uses=1]
+ %.11850.0 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 1, i32 0, i32 0 ; [#uses=1]
+ %tmp51 = load float* %.11850.0, align 4 ; [#uses=1]
+ %.11850.1 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 1, i32 0, i32 1 ; [#uses=1]
+ %tmp52 = load float* %.11850.1, align 4 ; [#uses=1]
+ %.11850.2 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 1, i32 0, i32 2 ; [#uses=1]
+ %tmp53 = load float* %.11850.2, align 4 ; [#uses=1]
+ %.11850.3 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 1, i32 0, i32 3 ; [#uses=1]
+ %tmp54 = load float* %.11850.3, align 4 ; [#uses=1]
+ %.221 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 2 ; [#uses=1]
+ %tmp22 = load i32* %.221, align 4 ; [#uses=1]
+ %.323 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 3 ; [#uses=1]
+ %tmp25 = load i32* %.323, align 4 ; [#uses=1]
+ %.426 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 4 ; [#uses=1]
+ %tmp27 = load i32* %.426, align 4 ; [#uses=1]
+ %.528.0 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 5, i32 0 ; [#uses=1]
+ %tmp31 = load i32* %.528.0, align 4 ; [#uses=1]
+ %.528.1 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 5, i32 1 ; [#uses=1]
+ %tmp32 = load i32* %.528.1, align 4 ; [#uses=1]
+ %.528.2 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 5, i32 2 ; [#uses=1]
+ %tmp33 = load i32* %.528.2, align 4 ; [#uses=1]
+ %.528.3 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 5, i32 3 ; [#uses=1]
+ %tmp34 = load i32* %.528.3, align 4 ; [#uses=1]
+ %.528.4 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i, i32 5, i32 4 ; [#uses=1]
+ %tmp35 = load i32* %.528.4, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %i ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btOptimizedBvhNode* %41, i32 %splitIndex ; [#uses=1]
+ %44 = bitcast %struct.btOptimizedBvhNode* %42 to i8* ; [#uses=1]
+ %45 = bitcast %struct.btOptimizedBvhNode* %43 to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %44, i8* %45, i32 64, i32 4, i1 false)
+ %46 = load %struct.btOptimizedBvhNode** %40, align 4 ; [#uses=16]
+ %.0 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %tmp69, float* %.0, align 4
+ %.162 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %tmp71, float* %.162, align 4
+ %.264 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %tmp73, float* %.264, align 4
+ %.366 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %tmp75, float* %.366, align 4
+ %.145.0 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %tmp51, float* %.145.0, align 4
+ %.145.1 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %tmp52, float* %.145.1, align 4
+ %.145.2 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %tmp53, float* %.145.2, align 4
+ %.145.3 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %tmp54, float* %.145.3, align 4
+ %.2 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 2 ; [#uses=1]
+ store i32 %tmp22, i32* %.2, align 4
+ %.3 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 3 ; [#uses=1]
+ store i32 %tmp25, i32* %.3, align 4
+ %.4 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 4 ; [#uses=1]
+ store i32 %tmp27, i32* %.4, align 4
+ %.5.0 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 5, i32 0 ; [#uses=1]
+ store i32 %tmp31, i32* %.5.0, align 4
+ %.5.1 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 5, i32 1 ; [#uses=1]
+ store i32 %tmp32, i32* %.5.1, align 4
+ %.5.2 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 5, i32 2 ; [#uses=1]
+ store i32 %tmp33, i32* %.5.2, align 4
+ %.5.3 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 5, i32 3 ; [#uses=1]
+ store i32 %tmp34, i32* %.5.3, align 4
+ %.5.4 = getelementptr inbounds %struct.btOptimizedBvhNode* %46, i32 %splitIndex, i32 5, i32 4 ; [#uses=1]
+ store i32 %tmp35, i32* %.5.4, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN14btQuantizedBvh21mergeInternalNodeAabbEiRK9btVector3S2_(%struct.btQuantizedBvh* nocapture %this, i32 %nodeIndex, %struct.btQuadWord* nocapture %newAabbMin, %struct.btQuadWord* nocapture %newAabbMax) nounwind align 2 {
+entry:
+ %quantizedAabbMin = alloca [3 x i16], align 2 ; [#uses=3]
+ %quantizedAabbMax = alloca [3 x i16], align 2 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %bb9, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %2 = getelementptr inbounds [3 x i16]* %quantizedAabbMin, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %newAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = fsub float %4, %6 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %newAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = fsub float %9, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %newAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = fsub float %14, %16 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=2]
+ %20 = fmul float %7, %19 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ %23 = fmul float %12, %22 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=2]
+ %26 = fmul float %17, %25 ; [#uses=1]
+ %27 = fptoui float %26 to i16 ; [#uses=1]
+ %28 = and i16 %27, -2 ; [#uses=3]
+ store i16 %28, i16* %2, align 2
+ %29 = fptoui float %23 to i16 ; [#uses=1]
+ %30 = and i16 %29, -2 ; [#uses=3]
+ %31 = getelementptr inbounds [3 x i16]* %quantizedAabbMin, i32 0, i32 1 ; [#uses=1]
+ store i16 %30, i16* %31, align 2
+ %32 = fptoui float %20 to i16 ; [#uses=1]
+ %33 = and i16 %32, -2 ; [#uses=1]
+ %34 = getelementptr inbounds [3 x i16]* %quantizedAabbMin, i32 0, i32 2 ; [#uses=2]
+ store i16 %33, i16* %34, align 2
+ %35 = getelementptr inbounds [3 x i16]* %quantizedAabbMax, i32 0, i32 0 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuadWord* %newAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fsub float %37, %6 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %newAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fsub float %40, %11 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %newAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fsub float %43, %16 ; [#uses=1]
+ %45 = fmul float %38, %19 ; [#uses=1]
+ %46 = fmul float %41, %22 ; [#uses=1]
+ %47 = fmul float %44, %25 ; [#uses=1]
+ %48 = fadd float %47, 1.000000e+00 ; [#uses=1]
+ %49 = fptoui float %48 to i16 ; [#uses=1]
+ %50 = or i16 %49, 1 ; [#uses=3]
+ store i16 %50, i16* %35, align 2
+ %51 = fadd float %46, 1.000000e+00 ; [#uses=1]
+ %52 = fptoui float %51 to i16 ; [#uses=1]
+ %53 = or i16 %52, 1 ; [#uses=2]
+ %54 = getelementptr inbounds [3 x i16]* %quantizedAabbMax, i32 0, i32 1 ; [#uses=2]
+ store i16 %53, i16* %54, align 2
+ %55 = fadd float %45, 1.000000e+00 ; [#uses=1]
+ %56 = fptoui float %55 to i16 ; [#uses=1]
+ %57 = or i16 %56, 1 ; [#uses=1]
+ %58 = getelementptr inbounds [3 x i16]* %quantizedAabbMax, i32 0, i32 2 ; [#uses=2]
+ store i16 %57, i16* %58, align 2
+ %59 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=6]
+ %60 = load %struct.BT_QUANTIZED_BVH_NODE** %59, align 4 ; [#uses=2]
+ %scevgep17 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %60, i32 %nodeIndex, i32 0, i32 0 ; [#uses=2]
+ %61 = load i16* %scevgep17, align 2 ; [#uses=1]
+ %62 = icmp ugt i16 %61, %28 ; [#uses=1]
+ br i1 %62, label %bb3, label %bb4
+
+bb3: ; preds = %bb.nph
+ store i16 %28, i16* %scevgep17, align 2
+ %.pre = load %struct.BT_QUANTIZED_BVH_NODE** %59, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb.nph
+ %63 = phi %struct.BT_QUANTIZED_BVH_NODE* [ %.pre, %bb3 ], [ %60, %bb.nph ] ; [#uses=2]
+ %scevgep18 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %63, i32 %nodeIndex, i32 1, i32 0 ; [#uses=2]
+ %64 = load i16* %scevgep18, align 2 ; [#uses=1]
+ %65 = icmp ult i16 %64, %50 ; [#uses=1]
+ br i1 %65, label %bb6, label %bb7
+
+bb6: ; preds = %bb4
+ store i16 %50, i16* %scevgep18, align 2
+ %.pre21 = load %struct.BT_QUANTIZED_BVH_NODE** %59, align 4 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb4
+ %66 = phi %struct.BT_QUANTIZED_BVH_NODE* [ %.pre21, %bb6 ], [ %63, %bb4 ] ; [#uses=2]
+ %scevgep17.1 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %66, i32 %nodeIndex, i32 0, i32 1 ; [#uses=2]
+ %67 = load i16* %scevgep17.1, align 2 ; [#uses=1]
+ %68 = icmp ugt i16 %67, %30 ; [#uses=1]
+ br i1 %68, label %bb3.1, label %bb4.1
+
+bb9: ; preds = %entry
+ %69 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=2]
+ %70 = load %struct.btOptimizedBvhNode** %69, align 4 ; [#uses=4]
+ %71 = getelementptr inbounds %struct.btQuadWord* %newAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btOptimizedBvhNode* %70, i32 %nodeIndex, i32 0, i32 0, i32 0 ; [#uses=2]
+ %73 = load float* %71, align 4 ; [#uses=2]
+ %74 = load float* %72, align 4 ; [#uses=1]
+ %75 = fcmp olt float %73, %74 ; [#uses=1]
+ br i1 %75, label %bb.i.i11, label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+bb.i.i11: ; preds = %bb9
+ store float %73, float* %72, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i11, %bb9
+ %76 = getelementptr inbounds %struct.btQuadWord* %newAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btOptimizedBvhNode* %70, i32 %nodeIndex, i32 0, i32 0, i32 1 ; [#uses=2]
+ %78 = load float* %76, align 4 ; [#uses=2]
+ %79 = load float* %77, align 4 ; [#uses=1]
+ %80 = fcmp olt float %78, %79 ; [#uses=1]
+ br i1 %80, label %bb.i7.i12, label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+bb.i7.i12: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ store float %78, float* %77, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i12, %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ %81 = getelementptr inbounds %struct.btQuadWord* %newAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btOptimizedBvhNode* %70, i32 %nodeIndex, i32 0, i32 0, i32 2 ; [#uses=2]
+ %83 = load float* %81, align 4 ; [#uses=2]
+ %84 = load float* %82, align 4 ; [#uses=1]
+ %85 = fcmp olt float %83, %84 ; [#uses=1]
+ br i1 %85, label %bb.i4.i13, label %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+
+bb.i4.i13: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ store float %83, float* %82, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit6.i: ; preds = %bb.i4.i13, %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ %86 = getelementptr inbounds %struct.btQuadWord* %newAabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btOptimizedBvhNode* %70, i32 %nodeIndex, i32 0, i32 0, i32 3 ; [#uses=2]
+ %88 = load float* %86, align 4 ; [#uses=2]
+ %89 = load float* %87, align 4 ; [#uses=1]
+ %90 = fcmp olt float %88, %89 ; [#uses=1]
+ br i1 %90, label %bb.i1.i14, label %_ZN9btVector36setMinERKS_.exit
+
+bb.i1.i14: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+ store float %88, float* %87, align 4
+ br label %_ZN9btVector36setMinERKS_.exit
+
+_ZN9btVector36setMinERKS_.exit: ; preds = %bb.i1.i14, %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+ %91 = load %struct.btOptimizedBvhNode** %69, align 4 ; [#uses=4]
+ %92 = getelementptr inbounds %struct.btQuadWord* %newAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btOptimizedBvhNode* %91, i32 %nodeIndex, i32 1, i32 0, i32 0 ; [#uses=2]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = load float* %92, align 4 ; [#uses=2]
+ %96 = fcmp olt float %94, %95 ; [#uses=1]
+ br i1 %96, label %bb.i.i, label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+bb.i.i: ; preds = %_ZN9btVector36setMinERKS_.exit
+ store float %95, float* %93, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i, %_ZN9btVector36setMinERKS_.exit
+ %97 = getelementptr inbounds %struct.btQuadWord* %newAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btOptimizedBvhNode* %91, i32 %nodeIndex, i32 1, i32 0, i32 1 ; [#uses=2]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ %100 = load float* %97, align 4 ; [#uses=2]
+ %101 = fcmp olt float %99, %100 ; [#uses=1]
+ br i1 %101, label %bb.i7.i, label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+bb.i7.i: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ store float %100, float* %98, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i, %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ %102 = getelementptr inbounds %struct.btQuadWord* %newAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btOptimizedBvhNode* %91, i32 %nodeIndex, i32 1, i32 0, i32 2 ; [#uses=2]
+ %104 = load float* %103, align 4 ; [#uses=1]
+ %105 = load float* %102, align 4 ; [#uses=2]
+ %106 = fcmp olt float %104, %105 ; [#uses=1]
+ br i1 %106, label %bb.i4.i, label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+
+bb.i4.i: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ store float %105, float* %103, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit6.i: ; preds = %bb.i4.i, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ %107 = getelementptr inbounds %struct.btQuadWord* %newAabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btOptimizedBvhNode* %91, i32 %nodeIndex, i32 1, i32 0, i32 3 ; [#uses=2]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ %110 = load float* %107, align 4 ; [#uses=2]
+ %111 = fcmp olt float %109, %110 ; [#uses=1]
+ br i1 %111, label %bb.i1.i, label %_ZN9btVector36setMaxERKS_.exit
+
+bb.i1.i: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+ store float %110, float* %108, align 4
+ ret void
+
+_ZN9btVector36setMaxERKS_.exit: ; preds = %bb4.2, %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+ ret void
+
+bb7.1: ; preds = %bb6.1, %bb4.1
+ %112 = phi %struct.BT_QUANTIZED_BVH_NODE* [ %.pre24, %bb6.1 ], [ %117, %bb4.1 ] ; [#uses=2]
+ %scevgep17.2 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %112, i32 %nodeIndex, i32 0, i32 2 ; [#uses=2]
+ %113 = load i16* %scevgep17.2, align 2 ; [#uses=1]
+ %114 = load i16* %34, align 2 ; [#uses=2]
+ %115 = icmp ugt i16 %113, %114 ; [#uses=1]
+ br i1 %115, label %bb3.2, label %bb4.2
+
+bb4.1: ; preds = %bb3.1, %bb7
+ %116 = phi i16 [ %.pre23, %bb3.1 ], [ %53, %bb7 ] ; [#uses=2]
+ %117 = phi %struct.BT_QUANTIZED_BVH_NODE* [ %.pre22, %bb3.1 ], [ %66, %bb7 ] ; [#uses=2]
+ %scevgep18.1 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %117, i32 %nodeIndex, i32 1, i32 1 ; [#uses=2]
+ %118 = load i16* %scevgep18.1, align 2 ; [#uses=1]
+ %119 = icmp ult i16 %118, %116 ; [#uses=1]
+ br i1 %119, label %bb6.1, label %bb7.1
+
+bb3.1: ; preds = %bb7
+ store i16 %30, i16* %scevgep17.1, align 2
+ %.pre22 = load %struct.BT_QUANTIZED_BVH_NODE** %59, align 4 ; [#uses=1]
+ %.pre23 = load i16* %54, align 2 ; [#uses=1]
+ br label %bb4.1
+
+bb6.1: ; preds = %bb4.1
+ store i16 %116, i16* %scevgep18.1, align 2
+ %.pre24 = load %struct.BT_QUANTIZED_BVH_NODE** %59, align 4 ; [#uses=1]
+ br label %bb7.1
+
+bb4.2: ; preds = %bb3.2, %bb7.1
+ %120 = phi %struct.BT_QUANTIZED_BVH_NODE* [ %.pre25, %bb3.2 ], [ %112, %bb7.1 ] ; [#uses=1]
+ %scevgep18.2 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %120, i32 %nodeIndex, i32 1, i32 2 ; [#uses=2]
+ %121 = load i16* %scevgep18.2, align 2 ; [#uses=1]
+ %122 = load i16* %58, align 2 ; [#uses=2]
+ %123 = icmp ult i16 %121, %122 ; [#uses=1]
+ br i1 %123, label %bb6.2, label %_ZN9btVector36setMaxERKS_.exit
+
+bb3.2: ; preds = %bb7.1
+ store i16 %114, i16* %scevgep17.2, align 2
+ %.pre25 = load %struct.BT_QUANTIZED_BVH_NODE** %59, align 4 ; [#uses=1]
+ br label %bb4.2
+
+bb6.2: ; preds = %bb4.2
+ store i16 %122, i16* %scevgep18.2, align 2
+ ret void
+}
+
+; [#uses=3]
+define void @_ZNK14btQuantizedBvh26walkStacklessQuantizedTreeEP21btNodeOverlapCallbackPtS2_ii(%struct.btQuantizedBvh* nocapture %this, %struct.btActionInterface* %nodeCallback, i16* nocapture %quantizedQueryAabbMin, i16* nocapture %quantizedQueryAabbMax, i32 %startNodeIndex, i32 %endNodeIndex) align 2 {
+entry:
+ %0 = icmp slt i32 %startNodeIndex, %endNodeIndex ; [#uses=1]
+ br i1 %0, label %bb.nph, label %bb9
+
+bb.nph: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %2 = load %struct.BT_QUANTIZED_BVH_NODE** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %2, i32 %startNodeIndex ; [#uses=1]
+ %4 = getelementptr inbounds i16* %quantizedQueryAabbMin, i32 2 ; [#uses=1]
+ %5 = getelementptr inbounds i16* %quantizedQueryAabbMax, i32 2 ; [#uses=1]
+ %6 = getelementptr inbounds i16* %quantizedQueryAabbMin, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds i16* %quantizedQueryAabbMax, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btActionInterface* %nodeCallback, i32 0, i32 0 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb8.backedge, %bb.nph
+ %rootNode.015 = phi %struct.BT_QUANTIZED_BVH_NODE* [ %3, %bb.nph ], [ %rootNode.0.be, %bb8.backedge ] ; [#uses=9]
+ %walkIterations.014 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb8.backedge ] ; [#uses=1]
+ %curIndex.013 = phi i32 [ %startNodeIndex, %bb.nph ], [ %curIndex.0.be, %bb8.backedge ] ; [#uses=2]
+ %tmp = add i32 %walkIterations.014, 1 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.015, i32 0, i32 1, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.015, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load i16* %quantizedQueryAabbMin, align 2 ; [#uses=1]
+ %12 = load i16* %9, align 2 ; [#uses=1]
+ %13 = icmp ule i16 %11, %12 ; [#uses=1]
+ %14 = load i16* %quantizedQueryAabbMax, align 2 ; [#uses=1]
+ %15 = load i16* %10, align 2 ; [#uses=1]
+ %16 = icmp uge i16 %14, %15 ; [#uses=1]
+ %17 = and i1 %13, %16 ; [#uses=1]
+ %18 = load i16* %4, align 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.015, i32 0, i32 1, i32 2 ; [#uses=1]
+ %20 = load i16* %19, align 2 ; [#uses=1]
+ %21 = icmp ule i16 %18, %20 ; [#uses=1]
+ %22 = and i1 %17, %21 ; [#uses=1]
+ %23 = load i16* %5, align 2 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.015, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = load i16* %24, align 2 ; [#uses=1]
+ %26 = icmp uge i16 %23, %25 ; [#uses=1]
+ %27 = and i1 %22, %26 ; [#uses=1]
+ %28 = load i16* %6, align 2 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.015, i32 0, i32 1, i32 1 ; [#uses=1]
+ %30 = load i16* %29, align 2 ; [#uses=1]
+ %31 = icmp ule i16 %28, %30 ; [#uses=1]
+ %32 = and i1 %27, %31 ; [#uses=1]
+ %33 = load i16* %7, align 2 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.015, i32 0, i32 0, i32 1 ; [#uses=1]
+ %35 = load i16* %34, align 2 ; [#uses=1]
+ %36 = icmp uge i16 %33, %35 ; [#uses=1]
+ %37 = and i1 %32, %36 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.015, i32 0, i32 2 ; [#uses=2]
+ %39 = load i32* %38, align 4 ; [#uses=3]
+ %toBool = icmp slt i32 %39, 0 ; [#uses=2]
+ %40 = xor i1 %37, true ; [#uses=2]
+ %or.cond = or i1 %toBool, %40 ; [#uses=1]
+ br i1 %or.cond, label %bb3, label %bb2
+
+bb2: ; preds = %bb
+ %41 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds i32 (...)** %41, i32 2 ; [#uses=1]
+ %43 = load i32 (...)** %42, align 4 ; [#uses=1]
+ %44 = and i32 %39, 2097151 ; [#uses=1]
+ %45 = ashr i32 %39, 21 ; [#uses=1]
+ %46 = bitcast i32 (...)* %43 to void (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ tail call void %46(%struct.btActionInterface* %nodeCallback, i32 %45, i32 %44)
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb
+ %or.cond12 = and i1 %toBool, %40 ; [#uses=1]
+ br i1 %or.cond12, label %bb7, label %bb6
+
+bb6: ; preds = %bb3
+ %47 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.015, i32 1 ; [#uses=1]
+ %48 = add nsw i32 %curIndex.013, 1 ; [#uses=1]
+ br label %bb8.backedge
+
+bb8.backedge: ; preds = %bb7, %bb6
+ %curIndex.0.be = phi i32 [ %48, %bb6 ], [ %53, %bb7 ] ; [#uses=2]
+ %rootNode.0.be = phi %struct.BT_QUANTIZED_BVH_NODE* [ %47, %bb6 ], [ %52, %bb7 ] ; [#uses=1]
+ %49 = icmp slt i32 %curIndex.0.be, %endNodeIndex ; [#uses=1]
+ br i1 %49, label %bb, label %bb9
+
+bb7: ; preds = %bb3
+ %50 = load i32* %38, align 4 ; [#uses=2]
+ %51 = sub nsw i32 0, %50 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.015, i32 %51 ; [#uses=1]
+ %53 = sub i32 %curIndex.013, %50 ; [#uses=1]
+ br label %bb8.backedge
+
+bb9: ; preds = %bb8.backedge, %entry
+ %walkIterations.0.lcssa = phi i32 [ 0, %entry ], [ %tmp, %bb8.backedge ] ; [#uses=2]
+ %54 = load i32* @maxIterations, align 4 ; [#uses=1]
+ %55 = icmp slt i32 %54, %walkIterations.0.lcssa ; [#uses=1]
+ br i1 %55, label %bb10, label %return
+
+bb10: ; preds = %bb9
+ store i32 %walkIterations.0.lcssa, i32* @maxIterations, align 4
+ ret void
+
+return: ; preds = %bb9
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK14btQuantizedBvh17walkStacklessTreeEP21btNodeOverlapCallbackRK9btVector3S4_(%struct.btQuantizedBvh* nocapture %this, %struct.btActionInterface* %nodeCallback, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 5 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %bb9
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ %4 = load %struct.btOptimizedBvhNode** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btActionInterface* %nodeCallback, i32 0, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb8.backedge, %bb.nph
+ %walkIterations.017 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb8.backedge ] ; [#uses=1]
+ %curIndex.016 = phi i32 [ 0, %bb.nph ], [ %curIndex.0.be, %bb8.backedge ] ; [#uses=2]
+ %rootNode.015 = phi %struct.btOptimizedBvhNode* [ %4, %bb.nph ], [ %rootNode.0.be, %bb8.backedge ] ; [#uses=13]
+ %tmp = add i32 %walkIterations.017, 1 ; [#uses=2]
+ %12 = load float* %5, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.015, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fcmp ogt float %12, %14 ; [#uses=1]
+ br i1 %15, label %bb2.i, label %bb.i
+
+bb.i: ; preds = %bb
+ %16 = load float* %11, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.015, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fcmp olt float %16, %18 ; [#uses=1]
+ br i1 %19, label %bb2.i, label %bb3.i
+
+bb2.i: ; preds = %bb.i, %bb
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb.i
+ %iftmp.116.0.i = phi i8 [ 0, %bb2.i ], [ 1, %bb.i ] ; [#uses=1]
+ %20 = load float* %6, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.015, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fcmp ogt float %20, %22 ; [#uses=1]
+ br i1 %23, label %bb6.i, label %bb4.i
+
+bb4.i: ; preds = %bb3.i
+ %24 = load float* %10, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.015, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = fcmp olt float %24, %26 ; [#uses=1]
+ br i1 %27, label %bb6.i, label %bb7.i
+
+bb6.i: ; preds = %bb4.i, %bb3.i
+ br label %bb7.i
+
+bb7.i: ; preds = %bb6.i, %bb4.i
+ %iftmp.117.0.i = phi i8 [ 0, %bb6.i ], [ %iftmp.116.0.i, %bb4.i ] ; [#uses=1]
+ %28 = load float* %7, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.015, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fcmp ogt float %28, %30 ; [#uses=1]
+ br i1 %31, label %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit.thread, label %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+
+_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit.thread: ; preds = %bb7.i
+ %32 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.015, i32 0, i32 2 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ %34 = icmp eq i32 %33, -1 ; [#uses=1]
+ br label %bb3
+
+_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit: ; preds = %bb7.i
+ %35 = load float* %8, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.015, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fcmp olt float %35, %37 ; [#uses=1]
+ %retval.i = select i1 %38, i8 0, i8 %iftmp.117.0.i ; [#uses=3]
+ %39 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.015, i32 0, i32 2 ; [#uses=1]
+ %40 = load i32* %39, align 4 ; [#uses=1]
+ %41 = icmp eq i32 %40, -1 ; [#uses=3]
+ %.not = xor i1 %41, true ; [#uses=1]
+ %42 = icmp eq i8 %retval.i, 0 ; [#uses=1]
+ %or.cond = or i1 %42, %.not ; [#uses=1]
+ br i1 %or.cond, label %bb3, label %bb2
+
+bb2: ; preds = %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+ %43 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds i32 (...)** %43, i32 2 ; [#uses=1]
+ %45 = load i32 (...)** %44, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.015, i32 0, i32 4 ; [#uses=1]
+ %47 = load i32* %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.015, i32 0, i32 3 ; [#uses=1]
+ %49 = load i32* %48, align 4 ; [#uses=1]
+ %50 = bitcast i32 (...)* %45 to void (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ tail call void %50(%struct.btActionInterface* %nodeCallback, i32 %49, i32 %47)
+ br label %bb3
+
+bb3: ; preds = %bb2, %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit, %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit.thread
+ %51 = phi i1 [ %34, %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit.thread ], [ %41, %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit ], [ %41, %bb2 ] ; [#uses=1]
+ %52 = phi i8 [ 0, %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit.thread ], [ %retval.i, %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit ], [ %retval.i, %bb2 ] ; [#uses=1]
+ %.not12 = icmp ne i8 %52, 0 ; [#uses=1]
+ %brmerge = or i1 %.not12, %51 ; [#uses=1]
+ br i1 %brmerge, label %bb6, label %bb7
+
+bb6: ; preds = %bb3
+ %53 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.015, i32 1 ; [#uses=1]
+ %54 = add nsw i32 %curIndex.016, 1 ; [#uses=1]
+ br label %bb8.backedge
+
+bb8.backedge: ; preds = %bb7, %bb6
+ %rootNode.0.be = phi %struct.btOptimizedBvhNode* [ %53, %bb6 ], [ %59, %bb7 ] ; [#uses=1]
+ %curIndex.0.be = phi i32 [ %54, %bb6 ], [ %60, %bb7 ] ; [#uses=2]
+ %55 = load i32* %0, align 4 ; [#uses=1]
+ %56 = icmp sgt i32 %55, %curIndex.0.be ; [#uses=1]
+ br i1 %56, label %bb, label %bb9
+
+bb7: ; preds = %bb3
+ %57 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.015, i32 0, i32 2 ; [#uses=1]
+ %58 = load i32* %57, align 4 ; [#uses=2]
+ %59 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.015, i32 %58 ; [#uses=1]
+ %60 = add nsw i32 %58, %curIndex.016 ; [#uses=1]
+ br label %bb8.backedge
+
+bb9: ; preds = %bb8.backedge, %entry
+ %walkIterations.0.lcssa = phi i32 [ 0, %entry ], [ %tmp, %bb8.backedge ] ; [#uses=2]
+ %61 = load i32* @maxIterations, align 4 ; [#uses=1]
+ %62 = icmp slt i32 %61, %walkIterations.0.lcssa ; [#uses=1]
+ br i1 %62, label %bb10, label %return
+
+bb10: ; preds = %bb9
+ store i32 %walkIterations.0.lcssa, i32* @maxIterations, align 4
+ ret void
+
+return: ; preds = %bb9
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZN14btQuantizedBvh17calcSplittingAxisEii(%struct.btQuantizedBvh* %this, i32 %startIndex, i32 %endIndex) nounwind readonly align 2 {
+entry:
+ %0 = sub nsw i32 %endIndex, %startIndex ; [#uses=4]
+ %1 = icmp slt i32 %startIndex, %endIndex ; [#uses=2]
+ br i1 %1, label %bb.nph85, label %bb2.thread
+
+bb2.thread: ; preds = %entry
+ %2 = sitofp i32 %0 to float ; [#uses=1]
+ br label %bb6
+
+bb.nph85: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i16 = icmp eq i8 %4, 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ br label %bb
+
+bb: ; preds = %_ZNK14btQuantizedBvh10getAabbMaxEi.exit15, %bb.nph85
+ %indvar108 = phi i32 [ 0, %bb.nph85 ], [ %indvar.next109, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit15 ] ; [#uses=2]
+ %means.0.2.083 = phi float [ 0.000000e+00, %bb.nph85 ], [ %67, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit15 ] ; [#uses=1]
+ %means.0.1.082 = phi float [ 0.000000e+00, %bb.nph85 ], [ %66, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit15 ] ; [#uses=1]
+ %means.0.0.081 = phi float [ 0.000000e+00, %bb.nph85 ], [ %65, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit15 ] ; [#uses=1]
+ %tmp112 = add i32 %indvar108, %startIndex ; [#uses=12]
+ br i1 %toBool.i16, label %bb1.i14, label %bb.i13
+
+bb.i13: ; preds = %bb
+ %13 = load %struct.BT_QUANTIZED_BVH_NODE** %6, align 4 ; [#uses=3]
+ %scevgep121 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %13, i32 %tmp112, i32 0, i32 2 ; [#uses=1]
+ %14 = load i16* %scevgep121, align 2 ; [#uses=1]
+ %15 = uitofp i16 %14 to float ; [#uses=1]
+ %16 = load float* %7, align 4 ; [#uses=1]
+ %17 = fdiv float %15, %16 ; [#uses=1]
+ %scevgep122 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %13, i32 %tmp112, i32 0, i32 1 ; [#uses=1]
+ %18 = load i16* %scevgep122, align 2 ; [#uses=1]
+ %19 = uitofp i16 %18 to float ; [#uses=1]
+ %20 = load float* %8, align 4 ; [#uses=1]
+ %21 = fdiv float %19, %20 ; [#uses=1]
+ %scevgep119120 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %13, i32 %tmp112, i32 0, i32 0 ; [#uses=1]
+ %22 = load i16* %scevgep119120, align 2 ; [#uses=1]
+ %23 = uitofp i16 %22 to float ; [#uses=1]
+ %24 = load float* %9, align 4 ; [#uses=1]
+ %25 = fdiv float %23, %24 ; [#uses=1]
+ %26 = load float* %10, align 4 ; [#uses=1]
+ %27 = fadd float %25, %26 ; [#uses=1]
+ %28 = load float* %11, align 4 ; [#uses=1]
+ %29 = fadd float %21, %28 ; [#uses=1]
+ %30 = load float* %12, align 4 ; [#uses=1]
+ %31 = fadd float %17, %30 ; [#uses=1]
+ %32 = load %struct.BT_QUANTIZED_BVH_NODE** %6, align 4 ; [#uses=3]
+ %scevgep114 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %32, i32 %tmp112, i32 1, i32 2 ; [#uses=1]
+ %33 = load i16* %scevgep114, align 2 ; [#uses=1]
+ %34 = uitofp i16 %33 to float ; [#uses=1]
+ %35 = load float* %7, align 4 ; [#uses=1]
+ %36 = fdiv float %34, %35 ; [#uses=1]
+ %scevgep115 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %32, i32 %tmp112, i32 1, i32 1 ; [#uses=1]
+ %37 = load i16* %scevgep115, align 2 ; [#uses=1]
+ %38 = uitofp i16 %37 to float ; [#uses=1]
+ %39 = load float* %8, align 4 ; [#uses=1]
+ %40 = fdiv float %38, %39 ; [#uses=1]
+ %scevgep113 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %32, i32 %tmp112, i32 1, i32 0 ; [#uses=1]
+ %41 = load i16* %scevgep113, align 2 ; [#uses=1]
+ %42 = uitofp i16 %41 to float ; [#uses=1]
+ %43 = load float* %9, align 4 ; [#uses=1]
+ %44 = fdiv float %42, %43 ; [#uses=1]
+ %45 = load float* %10, align 4 ; [#uses=1]
+ %46 = fadd float %44, %45 ; [#uses=1]
+ %47 = load float* %11, align 4 ; [#uses=1]
+ %48 = fadd float %40, %47 ; [#uses=1]
+ %49 = load float* %12, align 4 ; [#uses=1]
+ %50 = fadd float %36, %49 ; [#uses=1]
+ br label %_ZNK14btQuantizedBvh10getAabbMaxEi.exit15
+
+bb1.i14: ; preds = %bb
+ %51 = load %struct.btOptimizedBvhNode** %5, align 4 ; [#uses=3]
+ %scevgep123124 = getelementptr inbounds %struct.btOptimizedBvhNode* %51, i32 %tmp112, i32 0, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %scevgep123124, align 4 ; [#uses=1]
+ %scevgep125 = getelementptr %struct.btOptimizedBvhNode* %51, i32 %tmp112, i32 0, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %scevgep125, align 4 ; [#uses=1]
+ %scevgep126 = getelementptr %struct.btOptimizedBvhNode* %51, i32 %tmp112, i32 0, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %scevgep126, align 4 ; [#uses=1]
+ %55 = load %struct.btOptimizedBvhNode** %5, align 4 ; [#uses=3]
+ %scevgep116 = getelementptr %struct.btOptimizedBvhNode* %55, i32 %tmp112, i32 1, i32 0, i32 0 ; [#uses=1]
+ %56 = load float* %scevgep116, align 4 ; [#uses=1]
+ %scevgep117 = getelementptr %struct.btOptimizedBvhNode* %55, i32 %tmp112, i32 1, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %scevgep117, align 4 ; [#uses=1]
+ %scevgep118 = getelementptr %struct.btOptimizedBvhNode* %55, i32 %tmp112, i32 1, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %scevgep118, align 4 ; [#uses=1]
+ br label %_ZNK14btQuantizedBvh10getAabbMaxEi.exit15
+
+_ZNK14btQuantizedBvh10getAabbMaxEi.exit15: ; preds = %bb1.i14, %bb.i13
+ %.0.044.0131 = phi float [ %52, %bb1.i14 ], [ %27, %bb.i13 ] ; [#uses=1]
+ %.0.145.0129 = phi float [ %53, %bb1.i14 ], [ %29, %bb.i13 ] ; [#uses=1]
+ %.0.246.0127 = phi float [ %54, %bb1.i14 ], [ %31, %bb.i13 ] ; [#uses=1]
+ %.0.253.0 = phi float [ %58, %bb1.i14 ], [ %50, %bb.i13 ] ; [#uses=1]
+ %.0.152.0 = phi float [ %57, %bb1.i14 ], [ %48, %bb.i13 ] ; [#uses=1]
+ %.0.051.0 = phi float [ %56, %bb1.i14 ], [ %46, %bb.i13 ] ; [#uses=1]
+ %59 = fadd float %.0.253.0, %.0.246.0127 ; [#uses=1]
+ %60 = fadd float %.0.152.0, %.0.145.0129 ; [#uses=1]
+ %61 = fadd float %.0.051.0, %.0.044.0131 ; [#uses=1]
+ %62 = fmul float %59, 5.000000e-01 ; [#uses=1]
+ %63 = fmul float %60, 5.000000e-01 ; [#uses=1]
+ %64 = fmul float %61, 5.000000e-01 ; [#uses=1]
+ %65 = fadd float %means.0.0.081, %64 ; [#uses=2]
+ %66 = fadd float %means.0.1.082, %63 ; [#uses=2]
+ %67 = fadd float %means.0.2.083, %62 ; [#uses=2]
+ %indvar.next109 = add i32 %indvar108, 1 ; [#uses=2]
+ %exitcond111 = icmp eq i32 %indvar.next109, %0 ; [#uses=1]
+ br i1 %exitcond111, label %bb2, label %bb
+
+bb2: ; preds = %_ZNK14btQuantizedBvh10getAabbMaxEi.exit15
+ %68 = sitofp i32 %0 to float ; [#uses=3]
+ %69 = fdiv float 1.000000e+00, %68 ; [#uses=3]
+ %70 = fmul float %65, %69 ; [#uses=1]
+ %71 = fmul float %66, %69 ; [#uses=1]
+ %72 = fmul float %67, %69 ; [#uses=1]
+ br i1 %1, label %bb.nph, label %bb6
+
+bb.nph: ; preds = %bb2
+ %73 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ %74 = load i8* %73, align 4 ; [#uses=1]
+ %toBool.i9 = icmp eq i8 %74, 0 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=2]
+ %76 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=2]
+ %77 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %78 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %79 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %80 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %81 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %82 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ br label %bb3
+
+bb3: ; preds = %_ZNK14btQuantizedBvh10getAabbMaxEi.exit, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit ] ; [#uses=2]
+ %variance.0.2.077 = phi float [ 0.000000e+00, %bb.nph ], [ %143, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit ] ; [#uses=1]
+ %variance.0.1.076 = phi float [ 0.000000e+00, %bb.nph ], [ %142, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit ] ; [#uses=1]
+ %variance.0.0.075 = phi float [ 0.000000e+00, %bb.nph ], [ %141, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit ] ; [#uses=1]
+ %tmp91 = add i32 %indvar, %startIndex ; [#uses=12]
+ br i1 %toBool.i9, label %bb1.i, label %bb.i8
+
+bb.i8: ; preds = %bb3
+ %83 = load %struct.BT_QUANTIZED_BVH_NODE** %76, align 4 ; [#uses=3]
+ %scevgep99 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %83, i32 %tmp91, i32 0, i32 2 ; [#uses=1]
+ %84 = load i16* %scevgep99, align 2 ; [#uses=1]
+ %85 = uitofp i16 %84 to float ; [#uses=1]
+ %86 = load float* %77, align 4 ; [#uses=1]
+ %87 = fdiv float %85, %86 ; [#uses=1]
+ %scevgep100 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %83, i32 %tmp91, i32 0, i32 1 ; [#uses=1]
+ %88 = load i16* %scevgep100, align 2 ; [#uses=1]
+ %89 = uitofp i16 %88 to float ; [#uses=1]
+ %90 = load float* %78, align 4 ; [#uses=1]
+ %91 = fdiv float %89, %90 ; [#uses=1]
+ %scevgep9798 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %83, i32 %tmp91, i32 0, i32 0 ; [#uses=1]
+ %92 = load i16* %scevgep9798, align 2 ; [#uses=1]
+ %93 = uitofp i16 %92 to float ; [#uses=1]
+ %94 = load float* %79, align 4 ; [#uses=1]
+ %95 = fdiv float %93, %94 ; [#uses=1]
+ %96 = load float* %80, align 4 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = load float* %81, align 4 ; [#uses=1]
+ %99 = fadd float %91, %98 ; [#uses=1]
+ %100 = load float* %82, align 4 ; [#uses=1]
+ %101 = fadd float %87, %100 ; [#uses=1]
+ %102 = load %struct.BT_QUANTIZED_BVH_NODE** %76, align 4 ; [#uses=3]
+ %scevgep92 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %102, i32 %tmp91, i32 1, i32 2 ; [#uses=1]
+ %103 = load i16* %scevgep92, align 2 ; [#uses=1]
+ %104 = uitofp i16 %103 to float ; [#uses=1]
+ %105 = load float* %77, align 4 ; [#uses=1]
+ %106 = fdiv float %104, %105 ; [#uses=1]
+ %scevgep93 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %102, i32 %tmp91, i32 1, i32 1 ; [#uses=1]
+ %107 = load i16* %scevgep93, align 2 ; [#uses=1]
+ %108 = uitofp i16 %107 to float ; [#uses=1]
+ %109 = load float* %78, align 4 ; [#uses=1]
+ %110 = fdiv float %108, %109 ; [#uses=1]
+ %scevgep = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %102, i32 %tmp91, i32 1, i32 0 ; [#uses=1]
+ %111 = load i16* %scevgep, align 2 ; [#uses=1]
+ %112 = uitofp i16 %111 to float ; [#uses=1]
+ %113 = load float* %79, align 4 ; [#uses=1]
+ %114 = fdiv float %112, %113 ; [#uses=1]
+ %115 = load float* %80, align 4 ; [#uses=1]
+ %116 = fadd float %114, %115 ; [#uses=1]
+ %117 = load float* %81, align 4 ; [#uses=1]
+ %118 = fadd float %110, %117 ; [#uses=1]
+ %119 = load float* %82, align 4 ; [#uses=1]
+ %120 = fadd float %106, %119 ; [#uses=1]
+ br label %_ZNK14btQuantizedBvh10getAabbMaxEi.exit
+
+bb1.i: ; preds = %bb3
+ %121 = load %struct.btOptimizedBvhNode** %75, align 4 ; [#uses=3]
+ %scevgep101102 = getelementptr inbounds %struct.btOptimizedBvhNode* %121, i32 %tmp91, i32 0, i32 0, i32 0 ; [#uses=1]
+ %122 = load float* %scevgep101102, align 4 ; [#uses=1]
+ %scevgep103 = getelementptr %struct.btOptimizedBvhNode* %121, i32 %tmp91, i32 0, i32 0, i32 1 ; [#uses=1]
+ %123 = load float* %scevgep103, align 4 ; [#uses=1]
+ %scevgep104 = getelementptr %struct.btOptimizedBvhNode* %121, i32 %tmp91, i32 0, i32 0, i32 2 ; [#uses=1]
+ %124 = load float* %scevgep104, align 4 ; [#uses=1]
+ %125 = load %struct.btOptimizedBvhNode** %75, align 4 ; [#uses=3]
+ %scevgep94 = getelementptr %struct.btOptimizedBvhNode* %125, i32 %tmp91, i32 1, i32 0, i32 0 ; [#uses=1]
+ %126 = load float* %scevgep94, align 4 ; [#uses=1]
+ %scevgep95 = getelementptr %struct.btOptimizedBvhNode* %125, i32 %tmp91, i32 1, i32 0, i32 1 ; [#uses=1]
+ %127 = load float* %scevgep95, align 4 ; [#uses=1]
+ %scevgep96 = getelementptr %struct.btOptimizedBvhNode* %125, i32 %tmp91, i32 1, i32 0, i32 2 ; [#uses=1]
+ %128 = load float* %scevgep96, align 4 ; [#uses=1]
+ br label %_ZNK14btQuantizedBvh10getAabbMaxEi.exit
+
+_ZNK14btQuantizedBvh10getAabbMaxEi.exit: ; preds = %bb1.i, %bb.i8
+ %.0.064.0137 = phi float [ %122, %bb1.i ], [ %97, %bb.i8 ] ; [#uses=1]
+ %.0.165.0135 = phi float [ %123, %bb1.i ], [ %99, %bb.i8 ] ; [#uses=1]
+ %.0.266.0133 = phi float [ %124, %bb1.i ], [ %101, %bb.i8 ] ; [#uses=1]
+ %.0.273.0 = phi float [ %128, %bb1.i ], [ %120, %bb.i8 ] ; [#uses=1]
+ %.0.172.0 = phi float [ %127, %bb1.i ], [ %118, %bb.i8 ] ; [#uses=1]
+ %.0.071.0 = phi float [ %126, %bb1.i ], [ %116, %bb.i8 ] ; [#uses=1]
+ %129 = fadd float %.0.273.0, %.0.266.0133 ; [#uses=1]
+ %130 = fadd float %.0.172.0, %.0.165.0135 ; [#uses=1]
+ %131 = fadd float %.0.071.0, %.0.064.0137 ; [#uses=1]
+ %132 = fmul float %129, 5.000000e-01 ; [#uses=1]
+ %133 = fmul float %130, 5.000000e-01 ; [#uses=1]
+ %134 = fmul float %131, 5.000000e-01 ; [#uses=1]
+ %135 = fsub float %132, %72 ; [#uses=2]
+ %136 = fsub float %133, %71 ; [#uses=2]
+ %137 = fsub float %134, %70 ; [#uses=2]
+ %138 = fmul float %135, %135 ; [#uses=1]
+ %139 = fmul float %136, %136 ; [#uses=1]
+ %140 = fmul float %137, %137 ; [#uses=1]
+ %141 = fadd float %variance.0.0.075, %140 ; [#uses=2]
+ %142 = fadd float %variance.0.1.076, %139 ; [#uses=2]
+ %143 = fadd float %variance.0.2.077, %138 ; [#uses=2]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %0 ; [#uses=1]
+ br i1 %exitcond, label %bb6, label %bb3
+
+bb6: ; preds = %_ZNK14btQuantizedBvh10getAabbMaxEi.exit, %bb2, %bb2.thread
+ %144 = phi float [ %68, %bb2 ], [ %2, %bb2.thread ], [ %68, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit ] ; [#uses=1]
+ %variance.0.2.0.lcssa = phi float [ 0.000000e+00, %bb2 ], [ 0.000000e+00, %bb2.thread ], [ %143, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit ] ; [#uses=1]
+ %variance.0.1.0.lcssa = phi float [ 0.000000e+00, %bb2 ], [ 0.000000e+00, %bb2.thread ], [ %142, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit ] ; [#uses=1]
+ %variance.0.0.0.lcssa = phi float [ 0.000000e+00, %bb2 ], [ 0.000000e+00, %bb2.thread ], [ %141, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit ] ; [#uses=1]
+ %145 = fadd float %144, -1.000000e+00 ; [#uses=1]
+ %146 = fdiv float 1.000000e+00, %145 ; [#uses=3]
+ %147 = fmul float %variance.0.0.0.lcssa, %146 ; [#uses=2]
+ %148 = fmul float %variance.0.1.0.lcssa, %146 ; [#uses=2]
+ %149 = fmul float %variance.0.2.0.lcssa, %146 ; [#uses=2]
+ %150 = fcmp olt float %147, %148 ; [#uses=1]
+ br i1 %150, label %bb.i, label %bb4.i
+
+bb.i: ; preds = %bb6
+ %151 = fcmp olt float %148, %149 ; [#uses=1]
+ %iftmp.18.0.i = select i1 %151, i32 2, i32 1 ; [#uses=1]
+ ret i32 %iftmp.18.0.i
+
+bb4.i: ; preds = %bb6
+ %152 = fcmp olt float %147, %149 ; [#uses=1]
+ %iftmp.19.0.i = select i1 %152, i32 2, i32 0 ; [#uses=1]
+ ret i32 %iftmp.19.0.i
+}
+
+; [#uses=1]
+define i32 @_ZN14btQuantizedBvh25sortAndCalcSplittingIndexEiii(%struct.btQuantizedBvh* %this, i32 %startIndex, i32 %endIndex, i32 %splitAxis) nounwind align 2 {
+entry:
+ %means = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %center4 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = sub nsw i32 %endIndex, %startIndex ; [#uses=5]
+ %1 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float 0.000000e+00, float* %1, align 8
+ %2 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float 0.000000e+00, float* %3, align 8
+ %4 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = icmp slt i32 %startIndex, %endIndex ; [#uses=2]
+ br i1 %5, label %bb.nph71, label %bb2
+
+bb.nph71: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ %7 = load i8* %6, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %7, 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ br label %bb
+
+bb: ; preds = %_ZNK14btQuantizedBvh10getAabbMaxEi.exit29, %bb.nph71
+ %indvar92 = phi i32 [ 0, %bb.nph71 ], [ %indvar.next93, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit29 ] ; [#uses=2]
+ %16 = phi float [ 0.000000e+00, %bb.nph71 ], [ %73, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit29 ] ; [#uses=1]
+ %17 = phi float [ 0.000000e+00, %bb.nph71 ], [ %72, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit29 ] ; [#uses=1]
+ %18 = phi float [ 0.000000e+00, %bb.nph71 ], [ %71, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit29 ] ; [#uses=1]
+ %tmp96 = add i32 %indvar92, %startIndex ; [#uses=12]
+ br i1 %toBool.i, label %bb1.i28, label %bb.i27
+
+bb.i27: ; preds = %bb
+ %19 = load %struct.BT_QUANTIZED_BVH_NODE** %9, align 4 ; [#uses=3]
+ %scevgep99 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %19, i32 %tmp96, i32 0, i32 2 ; [#uses=1]
+ %20 = load i16* %scevgep99, align 2 ; [#uses=1]
+ %21 = uitofp i16 %20 to float ; [#uses=1]
+ %22 = load float* %10, align 4 ; [#uses=1]
+ %23 = fdiv float %21, %22 ; [#uses=1]
+ %scevgep100 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %19, i32 %tmp96, i32 0, i32 1 ; [#uses=1]
+ %24 = load i16* %scevgep100, align 2 ; [#uses=1]
+ %25 = uitofp i16 %24 to float ; [#uses=1]
+ %26 = load float* %11, align 4 ; [#uses=1]
+ %27 = fdiv float %25, %26 ; [#uses=1]
+ %scevgep9798 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %19, i32 %tmp96, i32 0, i32 0 ; [#uses=1]
+ %28 = load i16* %scevgep9798, align 2 ; [#uses=1]
+ %29 = uitofp i16 %28 to float ; [#uses=1]
+ %30 = load float* %12, align 4 ; [#uses=1]
+ %31 = fdiv float %29, %30 ; [#uses=1]
+ %32 = load float* %13, align 4 ; [#uses=1]
+ %33 = fadd float %31, %32 ; [#uses=1]
+ %34 = load float* %14, align 4 ; [#uses=1]
+ %35 = fadd float %27, %34 ; [#uses=1]
+ %36 = load float* %15, align 4 ; [#uses=1]
+ %37 = fadd float %23, %36 ; [#uses=1]
+ %38 = load %struct.BT_QUANTIZED_BVH_NODE** %9, align 4 ; [#uses=3]
+ %scevgep106 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %38, i32 %tmp96, i32 1, i32 2 ; [#uses=1]
+ %39 = load i16* %scevgep106, align 2 ; [#uses=1]
+ %40 = uitofp i16 %39 to float ; [#uses=1]
+ %41 = load float* %10, align 4 ; [#uses=1]
+ %42 = fdiv float %40, %41 ; [#uses=1]
+ %scevgep107 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %38, i32 %tmp96, i32 1, i32 1 ; [#uses=1]
+ %43 = load i16* %scevgep107, align 2 ; [#uses=1]
+ %44 = uitofp i16 %43 to float ; [#uses=1]
+ %45 = load float* %11, align 4 ; [#uses=1]
+ %46 = fdiv float %44, %45 ; [#uses=1]
+ %scevgep105 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %38, i32 %tmp96, i32 1, i32 0 ; [#uses=1]
+ %47 = load i16* %scevgep105, align 2 ; [#uses=1]
+ %48 = uitofp i16 %47 to float ; [#uses=1]
+ %49 = load float* %12, align 4 ; [#uses=1]
+ %50 = fdiv float %48, %49 ; [#uses=1]
+ %51 = load float* %13, align 4 ; [#uses=1]
+ %52 = fadd float %50, %51 ; [#uses=1]
+ %53 = load float* %14, align 4 ; [#uses=1]
+ %54 = fadd float %46, %53 ; [#uses=1]
+ %55 = load float* %15, align 4 ; [#uses=1]
+ %56 = fadd float %42, %55 ; [#uses=1]
+ br label %_ZNK14btQuantizedBvh10getAabbMaxEi.exit29
+
+bb1.i28: ; preds = %bb
+ %57 = load %struct.btOptimizedBvhNode** %8, align 4 ; [#uses=3]
+ %scevgep101102 = getelementptr inbounds %struct.btOptimizedBvhNode* %57, i32 %tmp96, i32 0, i32 0, i32 0 ; [#uses=1]
+ %58 = load float* %scevgep101102, align 4 ; [#uses=1]
+ %scevgep103 = getelementptr %struct.btOptimizedBvhNode* %57, i32 %tmp96, i32 0, i32 0, i32 1 ; [#uses=1]
+ %59 = load float* %scevgep103, align 4 ; [#uses=1]
+ %scevgep104 = getelementptr %struct.btOptimizedBvhNode* %57, i32 %tmp96, i32 0, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %scevgep104, align 4 ; [#uses=1]
+ %61 = load %struct.btOptimizedBvhNode** %8, align 4 ; [#uses=3]
+ %scevgep108 = getelementptr %struct.btOptimizedBvhNode* %61, i32 %tmp96, i32 1, i32 0, i32 0 ; [#uses=1]
+ %62 = load float* %scevgep108, align 4 ; [#uses=1]
+ %scevgep109 = getelementptr %struct.btOptimizedBvhNode* %61, i32 %tmp96, i32 1, i32 0, i32 1 ; [#uses=1]
+ %63 = load float* %scevgep109, align 4 ; [#uses=1]
+ %scevgep110 = getelementptr %struct.btOptimizedBvhNode* %61, i32 %tmp96, i32 1, i32 0, i32 2 ; [#uses=1]
+ %64 = load float* %scevgep110, align 4 ; [#uses=1]
+ br label %_ZNK14btQuantizedBvh10getAabbMaxEi.exit29
+
+_ZNK14btQuantizedBvh10getAabbMaxEi.exit29: ; preds = %bb1.i28, %bb.i27
+ %.0.239.0115 = phi float [ %60, %bb1.i28 ], [ %37, %bb.i27 ] ; [#uses=1]
+ %.0.138.0113 = phi float [ %59, %bb1.i28 ], [ %35, %bb.i27 ] ; [#uses=1]
+ %.0.037.0111 = phi float [ %58, %bb1.i28 ], [ %33, %bb.i27 ] ; [#uses=1]
+ %.0.246.0 = phi float [ %64, %bb1.i28 ], [ %56, %bb.i27 ] ; [#uses=1]
+ %.0.145.0 = phi float [ %63, %bb1.i28 ], [ %54, %bb.i27 ] ; [#uses=1]
+ %.0.044.0 = phi float [ %62, %bb1.i28 ], [ %52, %bb.i27 ] ; [#uses=1]
+ %65 = fadd float %.0.246.0, %.0.239.0115 ; [#uses=1]
+ %66 = fadd float %.0.145.0, %.0.138.0113 ; [#uses=1]
+ %67 = fadd float %.0.044.0, %.0.037.0111 ; [#uses=1]
+ %68 = fmul float %65, 5.000000e-01 ; [#uses=1]
+ %69 = fmul float %66, 5.000000e-01 ; [#uses=1]
+ %70 = fmul float %67, 5.000000e-01 ; [#uses=1]
+ %71 = fadd float %18, %70 ; [#uses=3]
+ %72 = fadd float %17, %69 ; [#uses=3]
+ %73 = fadd float %16, %68 ; [#uses=3]
+ %indvar.next93 = add i32 %indvar92, 1 ; [#uses=2]
+ %exitcond95 = icmp eq i32 %indvar.next93, %0 ; [#uses=1]
+ br i1 %exitcond95, label %bb1.bb2_crit_edge, label %bb
+
+bb1.bb2_crit_edge: ; preds = %_ZNK14btQuantizedBvh10getAabbMaxEi.exit29
+ store float %73, float* %3, align 8
+ store float %72, float* %2, align 4
+ store float %71, float* %1, align 8
+ br label %bb2
+
+bb2: ; preds = %bb1.bb2_crit_edge, %entry
+ %74 = phi float [ %73, %bb1.bb2_crit_edge ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %75 = phi float [ %72, %bb1.bb2_crit_edge ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %76 = phi float [ %71, %bb1.bb2_crit_edge ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %77 = sitofp i32 %0 to float ; [#uses=1]
+ %78 = fdiv float 1.000000e+00, %77 ; [#uses=3]
+ %79 = fmul float %76, %78 ; [#uses=1]
+ store float %79, float* %1, align 8
+ %80 = fmul float %75, %78 ; [#uses=1]
+ store float %80, float* %2, align 4
+ %81 = fmul float %74, %78 ; [#uses=1]
+ store float %81, float* %3, align 8
+ %82 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 %splitAxis ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ br i1 %5, label %bb.nph, label %bb8
+
+bb.nph: ; preds = %bb2
+ %84 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=2]
+ %86 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 1 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 2 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 3 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 %splitAxis ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=2]
+ %92 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %93 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %94 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %95 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %96 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %97 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ br label %bb3
+
+bb3: ; preds = %bb6, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb6 ] ; [#uses=2]
+ %splitIndex.169 = phi i32 [ %startIndex, %bb.nph ], [ %splitIndex.0, %bb6 ] ; [#uses=3]
+ %i.168 = add i32 %indvar, %startIndex ; [#uses=13]
+ %98 = load i8* %84, align 4 ; [#uses=1]
+ %toBool.i22 = icmp eq i8 %98, 0 ; [#uses=1]
+ br i1 %toBool.i22, label %bb1.i21, label %bb.i20
+
+bb.i20: ; preds = %bb3
+ %99 = load %struct.BT_QUANTIZED_BVH_NODE** %91, align 4 ; [#uses=3]
+ %scevgep84 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %99, i32 %i.168, i32 0, i32 2 ; [#uses=1]
+ %100 = load i16* %scevgep84, align 2 ; [#uses=1]
+ %101 = uitofp i16 %100 to float ; [#uses=1]
+ %102 = load float* %92, align 4 ; [#uses=1]
+ %103 = fdiv float %101, %102 ; [#uses=1]
+ %scevgep85 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %99, i32 %i.168, i32 0, i32 1 ; [#uses=1]
+ %104 = load i16* %scevgep85, align 2 ; [#uses=1]
+ %105 = uitofp i16 %104 to float ; [#uses=1]
+ %106 = load float* %93, align 4 ; [#uses=1]
+ %107 = fdiv float %105, %106 ; [#uses=1]
+ %scevgep8283 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %99, i32 %i.168, i32 0, i32 0 ; [#uses=1]
+ %108 = load i16* %scevgep8283, align 2 ; [#uses=1]
+ %109 = uitofp i16 %108 to float ; [#uses=1]
+ %110 = load float* %94, align 4 ; [#uses=1]
+ %111 = fdiv float %109, %110 ; [#uses=1]
+ %112 = load float* %95, align 4 ; [#uses=1]
+ %113 = fadd float %111, %112 ; [#uses=1]
+ %114 = load float* %96, align 4 ; [#uses=1]
+ %115 = fadd float %107, %114 ; [#uses=1]
+ %116 = load float* %97, align 4 ; [#uses=1]
+ %117 = fadd float %103, %116 ; [#uses=1]
+ %118 = load %struct.BT_QUANTIZED_BVH_NODE** %91, align 4 ; [#uses=3]
+ %scevgep77 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %118, i32 %i.168, i32 1, i32 2 ; [#uses=1]
+ %119 = load i16* %scevgep77, align 2 ; [#uses=1]
+ %120 = uitofp i16 %119 to float ; [#uses=1]
+ %121 = load float* %92, align 4 ; [#uses=1]
+ %122 = fdiv float %120, %121 ; [#uses=1]
+ %scevgep78 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %118, i32 %i.168, i32 1, i32 1 ; [#uses=1]
+ %123 = load i16* %scevgep78, align 2 ; [#uses=1]
+ %124 = uitofp i16 %123 to float ; [#uses=1]
+ %125 = load float* %93, align 4 ; [#uses=1]
+ %126 = fdiv float %124, %125 ; [#uses=1]
+ %scevgep = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %118, i32 %i.168, i32 1, i32 0 ; [#uses=1]
+ %127 = load i16* %scevgep, align 2 ; [#uses=1]
+ %128 = uitofp i16 %127 to float ; [#uses=1]
+ %129 = load float* %94, align 4 ; [#uses=1]
+ %130 = fdiv float %128, %129 ; [#uses=1]
+ %131 = load float* %95, align 4 ; [#uses=1]
+ %132 = fadd float %130, %131 ; [#uses=1]
+ %133 = load float* %96, align 4 ; [#uses=1]
+ %134 = fadd float %126, %133 ; [#uses=1]
+ %135 = load float* %97, align 4 ; [#uses=1]
+ %136 = fadd float %122, %135 ; [#uses=1]
+ br label %_ZNK14btQuantizedBvh10getAabbMaxEi.exit
+
+bb1.i21: ; preds = %bb3
+ %137 = load %struct.btOptimizedBvhNode** %85, align 4 ; [#uses=3]
+ %scevgep8687 = getelementptr inbounds %struct.btOptimizedBvhNode* %137, i32 %i.168, i32 0, i32 0, i32 0 ; [#uses=1]
+ %138 = load float* %scevgep8687, align 4 ; [#uses=1]
+ %scevgep88 = getelementptr %struct.btOptimizedBvhNode* %137, i32 %i.168, i32 0, i32 0, i32 1 ; [#uses=1]
+ %139 = load float* %scevgep88, align 4 ; [#uses=1]
+ %scevgep89 = getelementptr %struct.btOptimizedBvhNode* %137, i32 %i.168, i32 0, i32 0, i32 2 ; [#uses=1]
+ %140 = load float* %scevgep89, align 4 ; [#uses=1]
+ %141 = load %struct.btOptimizedBvhNode** %85, align 4 ; [#uses=3]
+ %scevgep79 = getelementptr %struct.btOptimizedBvhNode* %141, i32 %i.168, i32 1, i32 0, i32 0 ; [#uses=1]
+ %142 = load float* %scevgep79, align 4 ; [#uses=1]
+ %scevgep80 = getelementptr %struct.btOptimizedBvhNode* %141, i32 %i.168, i32 1, i32 0, i32 1 ; [#uses=1]
+ %143 = load float* %scevgep80, align 4 ; [#uses=1]
+ %scevgep81 = getelementptr %struct.btOptimizedBvhNode* %141, i32 %i.168, i32 1, i32 0, i32 2 ; [#uses=1]
+ %144 = load float* %scevgep81, align 4 ; [#uses=1]
+ br label %_ZNK14btQuantizedBvh10getAabbMaxEi.exit
+
+_ZNK14btQuantizedBvh10getAabbMaxEi.exit: ; preds = %bb1.i21, %bb.i20
+ %.0.057.0121 = phi float [ %138, %bb1.i21 ], [ %113, %bb.i20 ] ; [#uses=1]
+ %.0.158.0119 = phi float [ %139, %bb1.i21 ], [ %115, %bb.i20 ] ; [#uses=1]
+ %.0.259.0117 = phi float [ %140, %bb1.i21 ], [ %117, %bb.i20 ] ; [#uses=1]
+ %.0.266.0 = phi float [ %144, %bb1.i21 ], [ %136, %bb.i20 ] ; [#uses=1]
+ %.0.165.0 = phi float [ %143, %bb1.i21 ], [ %134, %bb.i20 ] ; [#uses=1]
+ %.0.064.0 = phi float [ %142, %bb1.i21 ], [ %132, %bb.i20 ] ; [#uses=1]
+ %145 = fadd float %.0.266.0, %.0.259.0117 ; [#uses=1]
+ %146 = fadd float %.0.165.0, %.0.158.0119 ; [#uses=1]
+ %147 = fadd float %.0.064.0, %.0.057.0121 ; [#uses=1]
+ %148 = fmul float %145, 5.000000e-01 ; [#uses=1]
+ %149 = fmul float %146, 5.000000e-01 ; [#uses=1]
+ %150 = fmul float %147, 5.000000e-01 ; [#uses=1]
+ store float %150, float* %86, align 8
+ store float %149, float* %87, align 4
+ store float %148, float* %88, align 8
+ store float 0.000000e+00, float* %89, align 4
+ %151 = load float* %90, align 4 ; [#uses=1]
+ %152 = fcmp ogt float %151, %83 ; [#uses=1]
+ br i1 %152, label %bb5, label %bb6
+
+bb5: ; preds = %_ZNK14btQuantizedBvh10getAabbMaxEi.exit
+ call void @_ZN14btQuantizedBvh13swapLeafNodesEii(%struct.btQuantizedBvh* %this, i32 %i.168, i32 %splitIndex.169)
+ %153 = add nsw i32 %splitIndex.169, 1 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb5, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit
+ %splitIndex.0 = phi i32 [ %153, %bb5 ], [ %splitIndex.169, %_ZNK14btQuantizedBvh10getAabbMaxEi.exit ] ; [#uses=2]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %0 ; [#uses=1]
+ br i1 %exitcond, label %bb8, label %bb3
+
+bb8: ; preds = %bb6, %bb2
+ %splitIndex.1.lcssa = phi i32 [ %startIndex, %bb2 ], [ %splitIndex.0, %bb6 ] ; [#uses=3]
+ %154 = sdiv i32 %0, 3 ; [#uses=2]
+ %155 = add nsw i32 %154, %startIndex ; [#uses=1]
+ %156 = icmp slt i32 %155, %splitIndex.1.lcssa ; [#uses=1]
+ br i1 %156, label %bb9, label %bb14
+
+bb9: ; preds = %bb8
+ %157 = add nsw i32 %endIndex, -1 ; [#uses=1]
+ %158 = sub i32 %157, %154 ; [#uses=1]
+ %159 = icmp sgt i32 %158, %splitIndex.1.lcssa ; [#uses=1]
+ br i1 %159, label %bb11, label %bb14
+
+bb11: ; preds = %bb9
+ ret i32 %splitIndex.1.lcssa
+
+bb14: ; preds = %bb9, %bb8
+ %160 = ashr i32 %0, 1 ; [#uses=1]
+ %161 = add nsw i32 %160, %startIndex ; [#uses=1]
+ ret i32 %161
+}
+
+; [#uses=0]
+define void @_ZNK14btQuantizedBvh39walkStacklessQuantizedTreeCacheFriendlyEP21btNodeOverlapCallbackPtS2_(%struct.btQuantizedBvh* nocapture %this, %struct.btActionInterface* %nodeCallback, i16* nocapture %quantizedQueryAabbMin, i16* nocapture %quantizedQueryAabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ %4 = getelementptr inbounds i16* %quantizedQueryAabbMin, i32 2 ; [#uses=1]
+ %5 = getelementptr inbounds i16* %quantizedQueryAabbMax, i32 2 ; [#uses=1]
+ %6 = getelementptr inbounds i16* %quantizedQueryAabbMin, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds i16* %quantizedQueryAabbMax, i32 1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb2, %bb.nph
+ %i.05 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb2 ] ; [#uses=9]
+ %tmp = add i32 %i.05, 1 ; [#uses=2]
+ %8 = load %struct.btBvhSubtreeInfo** %3, align 4 ; [#uses=8]
+ %9 = load i16* %quantizedQueryAabbMin, align 2 ; [#uses=1]
+ %scevgep = getelementptr %struct.btBvhSubtreeInfo* %8, i32 %i.05, i32 1, i32 0 ; [#uses=1]
+ %10 = load i16* %scevgep, align 2 ; [#uses=1]
+ %11 = icmp ule i16 %9, %10 ; [#uses=1]
+ %12 = load i16* %quantizedQueryAabbMax, align 2 ; [#uses=1]
+ %scevgep67 = getelementptr inbounds %struct.btBvhSubtreeInfo* %8, i32 %i.05, i32 0, i32 0 ; [#uses=1]
+ %13 = load i16* %scevgep67, align 2 ; [#uses=1]
+ %14 = icmp uge i16 %12, %13 ; [#uses=1]
+ %15 = and i1 %11, %14 ; [#uses=1]
+ %16 = load i16* %4, align 2 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btBvhSubtreeInfo* %8, i32 %i.05, i32 1, i32 2 ; [#uses=1]
+ %17 = load i16* %scevgep8, align 2 ; [#uses=1]
+ %18 = icmp ule i16 %16, %17 ; [#uses=1]
+ %19 = and i1 %15, %18 ; [#uses=1]
+ %20 = load i16* %5, align 2 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btBvhSubtreeInfo* %8, i32 %i.05, i32 0, i32 2 ; [#uses=1]
+ %21 = load i16* %scevgep9, align 2 ; [#uses=1]
+ %22 = icmp uge i16 %20, %21 ; [#uses=1]
+ %23 = and i1 %19, %22 ; [#uses=1]
+ %24 = load i16* %6, align 2 ; [#uses=1]
+ %scevgep10 = getelementptr %struct.btBvhSubtreeInfo* %8, i32 %i.05, i32 1, i32 1 ; [#uses=1]
+ %25 = load i16* %scevgep10, align 2 ; [#uses=1]
+ %26 = icmp ule i16 %24, %25 ; [#uses=1]
+ %27 = and i1 %23, %26 ; [#uses=1]
+ %28 = load i16* %7, align 2 ; [#uses=1]
+ %scevgep11 = getelementptr %struct.btBvhSubtreeInfo* %8, i32 %i.05, i32 0, i32 1 ; [#uses=1]
+ %29 = load i16* %scevgep11, align 2 ; [#uses=1]
+ %30 = icmp uge i16 %28, %29 ; [#uses=1]
+ %31 = and i1 %27, %30 ; [#uses=1]
+ br i1 %31, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %scevgep12 = getelementptr %struct.btBvhSubtreeInfo* %8, i32 %i.05, i32 2 ; [#uses=1]
+ %32 = load i32* %scevgep12, align 4 ; [#uses=2]
+ %scevgep13 = getelementptr %struct.btBvhSubtreeInfo* %8, i32 %i.05, i32 3 ; [#uses=1]
+ %33 = load i32* %scevgep13, align 4 ; [#uses=1]
+ %34 = add nsw i32 %33, %32 ; [#uses=1]
+ tail call void @_ZNK14btQuantizedBvh26walkStacklessQuantizedTreeEP21btNodeOverlapCallbackPtS2_ii(%struct.btQuantizedBvh* %this, %struct.btActionInterface* %nodeCallback, i16* %quantizedQueryAabbMin, i16* %quantizedQueryAabbMax, i32 %32, i32 %34)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %35 = load i32* %0, align 4 ; [#uses=1]
+ %36 = icmp sgt i32 %35, %tmp ; [#uses=1]
+ br i1 %36, label %bb, label %return
+
+return: ; preds = %bb2, %entry
+ ret void
+}
+
+; [#uses=2]
+define void @_ZNK14btQuantizedBvh26reportAabbOverlappingNodexEP21btNodeOverlapCallbackRK9btVector3S4_(%struct.btQuantizedBvh* %this, %struct.btActionInterface* %nodeCallback, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %quantizedQueryAabbMin = alloca [3 x i16], align 2 ; [#uses=3]
+ %quantizedQueryAabbMax = alloca [3 x i16], align 2 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds [3 x i16]* %quantizedQueryAabbMin, i32 0, i32 0 ; [#uses=5]
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=6]
+ %11 = fcmp olt float %4, %10 ; [#uses=1]
+ %clampedPoint.0.0.0.i = select i1 %11, float %10, float %4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=6]
+ %14 = fcmp olt float %6, %13 ; [#uses=1]
+ %clampedPoint.0.1.0.i = select i1 %14, float %13, float %6 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=6]
+ %17 = fcmp olt float %8, %16 ; [#uses=1]
+ %clampedPoint.0.2.0.i = select i1 %17, float %16, float %8 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=4]
+ %20 = fcmp olt float %19, %clampedPoint.0.0.0.i ; [#uses=1]
+ %clampedPoint.0.0.1.i = select i1 %20, float %19, float %clampedPoint.0.0.0.i ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=4]
+ %23 = fcmp olt float %22, %clampedPoint.0.1.0.i ; [#uses=1]
+ %clampedPoint.0.1.1.i = select i1 %23, float %22, float %clampedPoint.0.1.0.i ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=4]
+ %26 = fcmp olt float %25, %clampedPoint.0.2.0.i ; [#uses=1]
+ %clampedPoint.0.2.1.i = select i1 %26, float %25, float %clampedPoint.0.2.0.i ; [#uses=1]
+ %27 = fsub float %clampedPoint.0.2.1.i, %16 ; [#uses=1]
+ %28 = fsub float %clampedPoint.0.1.1.i, %13 ; [#uses=1]
+ %29 = fsub float %clampedPoint.0.0.1.i, %10 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=2]
+ %32 = fmul float %27, %31 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ %35 = fmul float %28, %34 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=2]
+ %38 = fmul float %29, %37 ; [#uses=1]
+ %39 = fptoui float %38 to i16 ; [#uses=1]
+ %40 = and i16 %39, -2 ; [#uses=1]
+ store i16 %40, i16* %2, align 2
+ %41 = fptoui float %35 to i16 ; [#uses=1]
+ %42 = and i16 %41, -2 ; [#uses=1]
+ %43 = getelementptr inbounds [3 x i16]* %quantizedQueryAabbMin, i32 0, i32 1 ; [#uses=2]
+ store i16 %42, i16* %43, align 2
+ %44 = fptoui float %32 to i16 ; [#uses=1]
+ %45 = and i16 %44, -2 ; [#uses=1]
+ %46 = getelementptr inbounds [3 x i16]* %quantizedQueryAabbMin, i32 0, i32 2 ; [#uses=2]
+ store i16 %45, i16* %46, align 2
+ %47 = getelementptr inbounds [3 x i16]* %quantizedQueryAabbMax, i32 0, i32 0 ; [#uses=5]
+ %48 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=2]
+ %50 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=2]
+ %52 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=2]
+ %54 = fcmp olt float %49, %10 ; [#uses=1]
+ %clampedPoint.0.0.0.i6 = select i1 %54, float %10, float %49 ; [#uses=2]
+ %55 = fcmp olt float %51, %13 ; [#uses=1]
+ %clampedPoint.0.1.0.i7 = select i1 %55, float %13, float %51 ; [#uses=2]
+ %56 = fcmp olt float %53, %16 ; [#uses=1]
+ %clampedPoint.0.2.0.i8 = select i1 %56, float %16, float %53 ; [#uses=2]
+ %57 = fcmp olt float %19, %clampedPoint.0.0.0.i6 ; [#uses=1]
+ %clampedPoint.0.0.1.i9 = select i1 %57, float %19, float %clampedPoint.0.0.0.i6 ; [#uses=1]
+ %58 = fcmp olt float %22, %clampedPoint.0.1.0.i7 ; [#uses=1]
+ %clampedPoint.0.1.1.i10 = select i1 %58, float %22, float %clampedPoint.0.1.0.i7 ; [#uses=1]
+ %59 = fcmp olt float %25, %clampedPoint.0.2.0.i8 ; [#uses=1]
+ %clampedPoint.0.2.1.i11 = select i1 %59, float %25, float %clampedPoint.0.2.0.i8 ; [#uses=1]
+ %60 = fsub float %clampedPoint.0.2.1.i11, %16 ; [#uses=1]
+ %61 = fsub float %clampedPoint.0.1.1.i10, %13 ; [#uses=1]
+ %62 = fsub float %clampedPoint.0.0.1.i9, %10 ; [#uses=1]
+ %63 = fmul float %60, %31 ; [#uses=1]
+ %64 = fmul float %61, %34 ; [#uses=1]
+ %65 = fmul float %62, %37 ; [#uses=1]
+ %66 = fadd float %65, 1.000000e+00 ; [#uses=1]
+ %67 = fptoui float %66 to i16 ; [#uses=1]
+ %68 = or i16 %67, 1 ; [#uses=1]
+ store i16 %68, i16* %47, align 2
+ %69 = fadd float %64, 1.000000e+00 ; [#uses=1]
+ %70 = fptoui float %69 to i16 ; [#uses=1]
+ %71 = or i16 %70, 1 ; [#uses=1]
+ %72 = getelementptr inbounds [3 x i16]* %quantizedQueryAabbMax, i32 0, i32 1 ; [#uses=2]
+ store i16 %71, i16* %72, align 2
+ %73 = fadd float %63, 1.000000e+00 ; [#uses=1]
+ %74 = fptoui float %73 to i16 ; [#uses=1]
+ %75 = or i16 %74, 1 ; [#uses=1]
+ %76 = getelementptr inbounds [3 x i16]* %quantizedQueryAabbMax, i32 0, i32 2 ; [#uses=2]
+ store i16 %75, i16* %76, align 2
+ %77 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 11 ; [#uses=1]
+ %78 = load i32* %77, align 4 ; [#uses=1]
+ switch i32 %78, label %_ZNK14btQuantizedBvh39walkStacklessQuantizedTreeCacheFriendlyEP21btNodeOverlapCallbackPtS2_.exit [
+ i32 0, label %bb1
+ i32 1, label %bb2
+ i32 2, label %bb3
+ ]
+
+bb1: ; preds = %bb
+ %79 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 5 ; [#uses=1]
+ %80 = load i32* %79, align 4 ; [#uses=1]
+ call void @_ZNK14btQuantizedBvh26walkStacklessQuantizedTreeEP21btNodeOverlapCallbackPtS2_ii(%struct.btQuantizedBvh* %this, %struct.btActionInterface* %nodeCallback, i16* %2, i16* %47, i32 0, i32 %80)
+ ret void
+
+bb2: ; preds = %bb
+ %81 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=2]
+ %82 = load i32* %81, align 4 ; [#uses=1]
+ %83 = icmp sgt i32 %82, 0 ; [#uses=1]
+ br i1 %83, label %bb.nph.i, label %_ZNK14btQuantizedBvh39walkStacklessQuantizedTreeCacheFriendlyEP21btNodeOverlapCallbackPtS2_.exit
+
+bb.nph.i: ; preds = %bb2
+ %84 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %bb2.i, %bb.nph.i
+ %i.05.i = phi i32 [ 0, %bb.nph.i ], [ %tmp.i, %bb2.i ] ; [#uses=9]
+ %tmp.i = add i32 %i.05.i, 1 ; [#uses=2]
+ %85 = load %struct.btBvhSubtreeInfo** %84, align 4 ; [#uses=8]
+ %86 = load i16* %2, align 2 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btBvhSubtreeInfo* %85, i32 %i.05.i, i32 1, i32 0 ; [#uses=1]
+ %87 = load i16* %scevgep.i, align 2 ; [#uses=1]
+ %88 = icmp ule i16 %86, %87 ; [#uses=1]
+ %89 = load i16* %47, align 2 ; [#uses=1]
+ %scevgep67.i = getelementptr inbounds %struct.btBvhSubtreeInfo* %85, i32 %i.05.i, i32 0, i32 0 ; [#uses=1]
+ %90 = load i16* %scevgep67.i, align 2 ; [#uses=1]
+ %91 = icmp uge i16 %89, %90 ; [#uses=1]
+ %92 = and i1 %88, %91 ; [#uses=1]
+ %93 = load i16* %46, align 2 ; [#uses=1]
+ %scevgep8.i = getelementptr %struct.btBvhSubtreeInfo* %85, i32 %i.05.i, i32 1, i32 2 ; [#uses=1]
+ %94 = load i16* %scevgep8.i, align 2 ; [#uses=1]
+ %95 = icmp ule i16 %93, %94 ; [#uses=1]
+ %96 = and i1 %92, %95 ; [#uses=1]
+ %97 = load i16* %76, align 2 ; [#uses=1]
+ %scevgep9.i = getelementptr %struct.btBvhSubtreeInfo* %85, i32 %i.05.i, i32 0, i32 2 ; [#uses=1]
+ %98 = load i16* %scevgep9.i, align 2 ; [#uses=1]
+ %99 = icmp uge i16 %97, %98 ; [#uses=1]
+ %100 = and i1 %96, %99 ; [#uses=1]
+ %101 = load i16* %43, align 2 ; [#uses=1]
+ %scevgep10.i = getelementptr %struct.btBvhSubtreeInfo* %85, i32 %i.05.i, i32 1, i32 1 ; [#uses=1]
+ %102 = load i16* %scevgep10.i, align 2 ; [#uses=1]
+ %103 = icmp ule i16 %101, %102 ; [#uses=1]
+ %104 = and i1 %100, %103 ; [#uses=1]
+ %105 = load i16* %72, align 2 ; [#uses=1]
+ %scevgep11.i = getelementptr %struct.btBvhSubtreeInfo* %85, i32 %i.05.i, i32 0, i32 1 ; [#uses=1]
+ %106 = load i16* %scevgep11.i, align 2 ; [#uses=1]
+ %107 = icmp uge i16 %105, %106 ; [#uses=1]
+ %108 = and i1 %104, %107 ; [#uses=1]
+ br i1 %108, label %bb1.i, label %bb2.i
+
+bb1.i: ; preds = %bb.i
+ %scevgep12.i = getelementptr %struct.btBvhSubtreeInfo* %85, i32 %i.05.i, i32 2 ; [#uses=1]
+ %109 = load i32* %scevgep12.i, align 4 ; [#uses=2]
+ %scevgep13.i = getelementptr %struct.btBvhSubtreeInfo* %85, i32 %i.05.i, i32 3 ; [#uses=1]
+ %110 = load i32* %scevgep13.i, align 4 ; [#uses=1]
+ %111 = add nsw i32 %110, %109 ; [#uses=1]
+ call void @_ZNK14btQuantizedBvh26walkStacklessQuantizedTreeEP21btNodeOverlapCallbackPtS2_ii(%struct.btQuantizedBvh* %this, %struct.btActionInterface* %nodeCallback, i16* %2, i16* %47, i32 %109, i32 %111)
+ br label %bb2.i
+
+bb2.i: ; preds = %bb1.i, %bb.i
+ %112 = load i32* %81, align 4 ; [#uses=1]
+ %113 = icmp sgt i32 %112, %tmp.i ; [#uses=1]
+ br i1 %113, label %bb.i, label %_ZNK14btQuantizedBvh39walkStacklessQuantizedTreeCacheFriendlyEP21btNodeOverlapCallbackPtS2_.exit
+
+_ZNK14btQuantizedBvh39walkStacklessQuantizedTreeCacheFriendlyEP21btNodeOverlapCallbackPtS2_.exit: ; preds = %bb2.i, %bb2, %bb
+ ret void
+
+bb3: ; preds = %bb
+ %114 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %115 = load %struct.BT_QUANTIZED_BVH_NODE** %114, align 4 ; [#uses=1]
+ call void @_ZNK14btQuantizedBvh42walkRecursiveQuantizedTreeAgainstQueryAabbEPK18btQuantizedBvhNodeP21btNodeOverlapCallbackPtS5_(%struct.btQuantizedBvh* %this, %struct.BT_QUANTIZED_BVH_NODE* %115, %struct.btActionInterface* %nodeCallback, i16* %2, i16* %47)
+ ret void
+
+bb4: ; preds = %entry
+ call void @_ZNK14btQuantizedBvh17walkStacklessTreeEP21btNodeOverlapCallbackRK9btVector3S4_(%struct.btQuantizedBvh* %this, %struct.btActionInterface* %nodeCallback, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ ret void
+}
+
+; [#uses=1]
+define i8* @_ZNK14btQuantizedBvh9serializeEPvP12btSerializer(%struct.btQuantizedBvh* %this, i8* nocapture %dataBuffer, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds i8* %dataBuffer, i32 16 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i = bitcast i8* %0 to float* ; [#uses=1]
+ %1 = load float* %scevgep.i, align 4 ; [#uses=1]
+ store float %1, float* %scevgep4.i, align 4
+ %scevgep.1.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i = getelementptr i8* %dataBuffer, i32 20 ; [#uses=1]
+ %2 = bitcast i8* %scevgep4.1.i to float* ; [#uses=1]
+ %3 = load float* %scevgep.1.i, align 4 ; [#uses=1]
+ store float %3, float* %2, align 4
+ %scevgep.2.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i = getelementptr i8* %dataBuffer, i32 24 ; [#uses=1]
+ %4 = bitcast i8* %scevgep4.2.i to float* ; [#uses=1]
+ %5 = load float* %scevgep.2.i, align 4 ; [#uses=1]
+ store float %5, float* %4, align 4
+ %scevgep.3.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i = getelementptr i8* %dataBuffer, i32 28 ; [#uses=1]
+ %6 = bitcast i8* %scevgep4.3.i to float* ; [#uses=1]
+ %7 = load float* %scevgep.3.i, align 4 ; [#uses=1]
+ store float %7, float* %6, align 4
+ %scevgep.i37 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i38 = bitcast i8* %dataBuffer to float* ; [#uses=1]
+ %8 = load float* %scevgep.i37, align 4 ; [#uses=1]
+ store float %8, float* %scevgep4.i38, align 4
+ %scevgep.1.i39 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i40 = getelementptr i8* %dataBuffer, i32 4 ; [#uses=1]
+ %9 = bitcast i8* %scevgep4.1.i40 to float* ; [#uses=1]
+ %10 = load float* %scevgep.1.i39, align 4 ; [#uses=1]
+ store float %10, float* %9, align 4
+ %scevgep.2.i41 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i42 = getelementptr i8* %dataBuffer, i32 8 ; [#uses=1]
+ %11 = bitcast i8* %scevgep4.2.i42 to float* ; [#uses=1]
+ %12 = load float* %scevgep.2.i41, align 4 ; [#uses=1]
+ store float %12, float* %11, align 4
+ %scevgep.3.i43 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i44 = getelementptr i8* %dataBuffer, i32 12 ; [#uses=1]
+ %13 = bitcast i8* %scevgep4.3.i44 to float* ; [#uses=1]
+ %14 = load float* %scevgep.3.i43, align 4 ; [#uses=1]
+ store float %14, float* %13, align 4
+ %15 = getelementptr inbounds i8* %dataBuffer, i32 32 ; [#uses=1]
+ %scevgep.i45 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i46 = bitcast i8* %15 to float* ; [#uses=1]
+ %16 = load float* %scevgep.i45, align 4 ; [#uses=1]
+ store float %16, float* %scevgep4.i46, align 4
+ %scevgep.1.i47 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i48 = getelementptr i8* %dataBuffer, i32 36 ; [#uses=1]
+ %17 = bitcast i8* %scevgep4.1.i48 to float* ; [#uses=1]
+ %18 = load float* %scevgep.1.i47, align 4 ; [#uses=1]
+ store float %18, float* %17, align 4
+ %scevgep.2.i49 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i50 = getelementptr i8* %dataBuffer, i32 40 ; [#uses=1]
+ %19 = bitcast i8* %scevgep4.2.i50 to float* ; [#uses=1]
+ %20 = load float* %scevgep.2.i49, align 4 ; [#uses=1]
+ store float %20, float* %19, align 4
+ %scevgep.3.i51 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i52 = getelementptr i8* %dataBuffer, i32 44 ; [#uses=1]
+ %21 = bitcast i8* %scevgep4.3.i52 to float* ; [#uses=1]
+ %22 = load float* %scevgep.3.i51, align 4 ; [#uses=1]
+ store float %22, float* %21, align 4
+ %23 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 5 ; [#uses=1]
+ %24 = load i32* %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i8* %dataBuffer, i32 48 ; [#uses=1]
+ %26 = bitcast i8* %25 to i32* ; [#uses=1]
+ store i32 %24, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ %28 = load i8* %27, align 4 ; [#uses=1]
+ %29 = zext i8 %28 to i32 ; [#uses=1]
+ %30 = getelementptr inbounds i8* %dataBuffer, i32 52 ; [#uses=1]
+ %31 = bitcast i8* %30 to i32* ; [#uses=1]
+ store i32 %29, i32* %31, align 4
+ %32 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 1 ; [#uses=3]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds i8* %dataBuffer, i32 56 ; [#uses=1]
+ %35 = bitcast i8* %34 to i32* ; [#uses=1]
+ store i32 %33, i32* %35, align 4
+ %36 = load i32* %32, align 4 ; [#uses=1]
+ %37 = icmp eq i32 %36, 0 ; [#uses=1]
+ br i1 %37, label %bb2.thread, label %bb2
+
+bb2.thread: ; preds = %entry
+ %38 = getelementptr inbounds i8* %dataBuffer, i32 64 ; [#uses=1]
+ %39 = bitcast i8* %38 to %struct.btOptimizedBvhNodeFloatData** ; [#uses=1]
+ store %struct.btOptimizedBvhNodeFloatData* null, %struct.btOptimizedBvhNodeFloatData** %39, align 4
+ br label %bb7
+
+bb2: ; preds = %entry
+ %40 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=1]
+ %41 = load i32 (...)*** %40, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds i32 (...)** %41, i32 7 ; [#uses=1]
+ %43 = load i32 (...)** %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ %45 = load %struct.btOptimizedBvhNode** %44, align 4 ; [#uses=1]
+ %46 = bitcast %struct.btOptimizedBvhNode* %45 to i8* ; [#uses=1]
+ %47 = bitcast i32 (...)* %43 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %48 = tail call i8* %47(%struct.btActionInterface* %serializer, i8* %46) ; [#uses=1]
+ %phitmp = bitcast i8* %48 to %struct.btOptimizedBvhNodeFloatData* ; [#uses=2]
+ %49 = getelementptr inbounds i8* %dataBuffer, i32 64 ; [#uses=1]
+ %50 = bitcast i8* %49 to %struct.btOptimizedBvhNodeFloatData** ; [#uses=1]
+ store %struct.btOptimizedBvhNodeFloatData* %phitmp, %struct.btOptimizedBvhNodeFloatData** %50, align 4
+ %51 = icmp eq %struct.btOptimizedBvhNodeFloatData* %phitmp, null ; [#uses=1]
+ br i1 %51, label %bb7, label %bb3
+
+bb3: ; preds = %bb2
+ %52 = load i32* %32, align 4 ; [#uses=3]
+ %53 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=2]
+ %54 = load i32 (...)*** %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds i32 (...)** %54, i32 4 ; [#uses=1]
+ %56 = load i32 (...)** %55, align 4 ; [#uses=1]
+ %57 = bitcast i32 (...)* %56 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %58 = tail call %struct.btChunk* %57(%struct.btActionInterface* %serializer, i32 48, i32 %52) ; [#uses=2]
+ %59 = icmp sgt i32 %52, 0 ; [#uses=1]
+ br i1 %59, label %bb.nph, label %bb6
+
+bb.nph: ; preds = %bb3
+ %60 = getelementptr inbounds %struct.btChunk* %58, i32 0, i32 2 ; [#uses=1]
+ %61 = load i8** %60, align 4 ; [#uses=11]
+ %62 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=5]
+ br label %bb4
+
+bb4: ; preds = %bb4, %bb.nph
+ %i.070 = phi i32 [ 0, %bb.nph ], [ %79, %bb4 ] ; [#uses=13]
+ %tmp = mul i32 %i.070, 48 ; [#uses=11]
+ %tmp84 = add i32 %tmp, 32 ; [#uses=1]
+ %scevgep85 = getelementptr i8* %61, i32 %tmp84 ; [#uses=1]
+ %scevgep8586 = bitcast i8* %scevgep85 to i32* ; [#uses=1]
+ %tmp87 = add i32 %tmp, 36 ; [#uses=1]
+ %scevgep88 = getelementptr i8* %61, i32 %tmp87 ; [#uses=1]
+ %scevgep8889 = bitcast i8* %scevgep88 to i32* ; [#uses=1]
+ %tmp90 = add i32 %tmp, 40 ; [#uses=1]
+ %scevgep91 = getelementptr i8* %61, i32 %tmp90 ; [#uses=1]
+ %scevgep9192 = bitcast i8* %scevgep91 to i32* ; [#uses=1]
+ %tmp93 = add i32 %tmp, 16 ; [#uses=1]
+ %scevgep94 = getelementptr i8* %61, i32 %tmp93 ; [#uses=1]
+ %scevgep4.i62 = bitcast i8* %scevgep94 to float* ; [#uses=1]
+ %tmp96 = add i32 %tmp, 20 ; [#uses=1]
+ %scevgep97 = getelementptr i8* %61, i32 %tmp96 ; [#uses=1]
+ %scevgep4.1.i64 = bitcast i8* %scevgep97 to float* ; [#uses=1]
+ %tmp99 = add i32 %tmp, 24 ; [#uses=1]
+ %scevgep100 = getelementptr i8* %61, i32 %tmp99 ; [#uses=1]
+ %scevgep4.2.i66 = bitcast i8* %scevgep100 to float* ; [#uses=1]
+ %tmp102 = add i32 %tmp, 28 ; [#uses=1]
+ %scevgep103 = getelementptr i8* %61, i32 %tmp102 ; [#uses=1]
+ %scevgep4.3.i68 = bitcast i8* %scevgep103 to float* ; [#uses=1]
+ %scevgep105 = getelementptr i8* %61, i32 %tmp ; [#uses=1]
+ %scevgep4.i54 = bitcast i8* %scevgep105 to float* ; [#uses=1]
+ %tmp107186 = or i32 %tmp, 4 ; [#uses=1]
+ %scevgep108 = getelementptr i8* %61, i32 %tmp107186 ; [#uses=1]
+ %scevgep4.1.i56 = bitcast i8* %scevgep108 to float* ; [#uses=1]
+ %tmp110187 = or i32 %tmp, 8 ; [#uses=1]
+ %scevgep111 = getelementptr i8* %61, i32 %tmp110187 ; [#uses=1]
+ %scevgep4.2.i58 = bitcast i8* %scevgep111 to float* ; [#uses=1]
+ %tmp113188 = or i32 %tmp, 12 ; [#uses=1]
+ %scevgep114 = getelementptr i8* %61, i32 %tmp113188 ; [#uses=1]
+ %scevgep4.3.i60 = bitcast i8* %scevgep114 to float* ; [#uses=1]
+ %63 = load %struct.btOptimizedBvhNode** %62, align 4 ; [#uses=4]
+ %scevgep.i61 = getelementptr %struct.btOptimizedBvhNode* %63, i32 %i.070, i32 1, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %scevgep.i61, align 4 ; [#uses=1]
+ store float %64, float* %scevgep4.i62, align 4
+ %scevgep.1.i63 = getelementptr %struct.btOptimizedBvhNode* %63, i32 %i.070, i32 1, i32 0, i32 1 ; [#uses=1]
+ %65 = load float* %scevgep.1.i63, align 4 ; [#uses=1]
+ store float %65, float* %scevgep4.1.i64, align 4
+ %scevgep.2.i65 = getelementptr %struct.btOptimizedBvhNode* %63, i32 %i.070, i32 1, i32 0, i32 2 ; [#uses=1]
+ %66 = load float* %scevgep.2.i65, align 4 ; [#uses=1]
+ store float %66, float* %scevgep4.2.i66, align 4
+ %scevgep.3.i67 = getelementptr %struct.btOptimizedBvhNode* %63, i32 %i.070, i32 1, i32 0, i32 3 ; [#uses=1]
+ %67 = load float* %scevgep.3.i67, align 4 ; [#uses=1]
+ store float %67, float* %scevgep4.3.i68, align 4
+ %68 = load %struct.btOptimizedBvhNode** %62, align 4 ; [#uses=4]
+ %scevgep.i53 = getelementptr inbounds %struct.btOptimizedBvhNode* %68, i32 %i.070, i32 0, i32 0, i32 0 ; [#uses=1]
+ %69 = load float* %scevgep.i53, align 4 ; [#uses=1]
+ store float %69, float* %scevgep4.i54, align 4
+ %scevgep.1.i55 = getelementptr %struct.btOptimizedBvhNode* %68, i32 %i.070, i32 0, i32 0, i32 1 ; [#uses=1]
+ %70 = load float* %scevgep.1.i55, align 4 ; [#uses=1]
+ store float %70, float* %scevgep4.1.i56, align 4
+ %scevgep.2.i57 = getelementptr %struct.btOptimizedBvhNode* %68, i32 %i.070, i32 0, i32 0, i32 2 ; [#uses=1]
+ %71 = load float* %scevgep.2.i57, align 4 ; [#uses=1]
+ store float %71, float* %scevgep4.2.i58, align 4
+ %scevgep.3.i59 = getelementptr %struct.btOptimizedBvhNode* %68, i32 %i.070, i32 0, i32 0, i32 3 ; [#uses=1]
+ %72 = load float* %scevgep.3.i59, align 4 ; [#uses=1]
+ store float %72, float* %scevgep4.3.i60, align 4
+ %73 = load %struct.btOptimizedBvhNode** %62, align 4 ; [#uses=1]
+ %scevgep81 = getelementptr %struct.btOptimizedBvhNode* %73, i32 %i.070, i32 2 ; [#uses=1]
+ %74 = load i32* %scevgep81, align 4 ; [#uses=1]
+ store i32 %74, i32* %scevgep8586, align 4
+ %75 = load %struct.btOptimizedBvhNode** %62, align 4 ; [#uses=1]
+ %scevgep82 = getelementptr %struct.btOptimizedBvhNode* %75, i32 %i.070, i32 3 ; [#uses=1]
+ %76 = load i32* %scevgep82, align 4 ; [#uses=1]
+ store i32 %76, i32* %scevgep8889, align 4
+ %77 = load %struct.btOptimizedBvhNode** %62, align 4 ; [#uses=1]
+ %scevgep83 = getelementptr %struct.btOptimizedBvhNode* %77, i32 %i.070, i32 4 ; [#uses=1]
+ %78 = load i32* %scevgep83, align 4 ; [#uses=1]
+ store i32 %78, i32* %scevgep9192, align 4
+ %79 = add nsw i32 %i.070, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %79, %52 ; [#uses=1]
+ br i1 %exitcond, label %bb6, label %bb4
+
+bb6: ; preds = %bb4, %bb3
+ %80 = load i32 (...)*** %53, align 4 ; [#uses=1]
+ %81 = getelementptr inbounds i32 (...)** %80, i32 5 ; [#uses=1]
+ %82 = load i32 (...)** %81, align 4 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ %84 = load %struct.btOptimizedBvhNode** %83, align 4 ; [#uses=1]
+ %85 = bitcast %struct.btOptimizedBvhNode* %84 to i8* ; [#uses=1]
+ %86 = bitcast i32 (...)* %82 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ tail call void %86(%struct.btActionInterface* %serializer, %struct.btChunk* %58, i8* getelementptr inbounds ([23 x i8]* @.str4, i32 0, i32 0), i32 1497453121, i8* %85)
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb2, %bb2.thread
+ %87 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 1 ; [#uses=3]
+ %88 = load i32* %87, align 4 ; [#uses=1]
+ %89 = getelementptr inbounds i8* %dataBuffer, i32 60 ; [#uses=1]
+ %90 = bitcast i8* %89 to i32* ; [#uses=1]
+ store i32 %88, i32* %90, align 4
+ %91 = load i32* %87, align 4 ; [#uses=1]
+ %92 = icmp eq i32 %91, 0 ; [#uses=1]
+ br i1 %92, label %bb10.thread, label %bb10
+
+bb10.thread: ; preds = %bb7
+ %93 = getelementptr inbounds i8* %dataBuffer, i32 68 ; [#uses=1]
+ %94 = bitcast i8* %93 to %struct.BT_QUANTIZED_BVH_NODE** ; [#uses=1]
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %94, align 4
+ br label %bb20
+
+bb10: ; preds = %bb7
+ %95 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=1]
+ %96 = load i32 (...)*** %95, align 4 ; [#uses=1]
+ %97 = getelementptr inbounds i32 (...)** %96, i32 7 ; [#uses=1]
+ %98 = load i32 (...)** %97, align 4 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %100 = load %struct.BT_QUANTIZED_BVH_NODE** %99, align 4 ; [#uses=1]
+ %101 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %100 to i8* ; [#uses=1]
+ %102 = bitcast i32 (...)* %98 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %103 = tail call i8* %102(%struct.btActionInterface* %serializer, i8* %101) ; [#uses=1]
+ %phitmp35 = bitcast i8* %103 to %struct.BT_QUANTIZED_BVH_NODE* ; [#uses=2]
+ %104 = getelementptr inbounds i8* %dataBuffer, i32 68 ; [#uses=1]
+ %105 = bitcast i8* %104 to %struct.BT_QUANTIZED_BVH_NODE** ; [#uses=1]
+ store %struct.BT_QUANTIZED_BVH_NODE* %phitmp35, %struct.BT_QUANTIZED_BVH_NODE** %105, align 4
+ %106 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %phitmp35, null ; [#uses=1]
+ br i1 %106, label %bb20, label %bb11
+
+bb11: ; preds = %bb10
+ %107 = load i32* %87, align 4 ; [#uses=3]
+ %108 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=2]
+ %109 = load i32 (...)*** %108, align 4 ; [#uses=1]
+ %110 = getelementptr inbounds i32 (...)** %109, i32 4 ; [#uses=1]
+ %111 = load i32 (...)** %110, align 4 ; [#uses=1]
+ %112 = bitcast i32 (...)* %111 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %113 = tail call %struct.btChunk* %112(%struct.btActionInterface* %serializer, i32 16, i32 %107) ; [#uses=2]
+ %114 = icmp sgt i32 %107, 0 ; [#uses=1]
+ br i1 %114, label %bb.nph73, label %bb19
+
+bb.nph73: ; preds = %bb11
+ %115 = getelementptr inbounds %struct.btChunk* %113, i32 0, i32 2 ; [#uses=1]
+ %116 = load i8** %115, align 4 ; [#uses=7]
+ %117 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=7]
+ br label %bb17
+
+bb17: ; preds = %bb17, %bb.nph73
+ %i16.072 = phi i32 [ 0, %bb.nph73 ], [ %132, %bb17 ] ; [#uses=9]
+ %tmp125 = shl i32 %i16.072, 4 ; [#uses=7]
+ %tmp126180 = or i32 %tmp125, 12 ; [#uses=1]
+ %scevgep127 = getelementptr i8* %116, i32 %tmp126180 ; [#uses=1]
+ %scevgep127128 = bitcast i8* %scevgep127 to i32* ; [#uses=1]
+ %tmp129181 = or i32 %tmp125, 6 ; [#uses=1]
+ %scevgep130 = getelementptr i8* %116, i32 %tmp129181 ; [#uses=1]
+ %scevgep130131 = bitcast i8* %scevgep130 to i16* ; [#uses=1]
+ %tmp132182 = or i32 %tmp125, 8 ; [#uses=1]
+ %scevgep133 = getelementptr i8* %116, i32 %tmp132182 ; [#uses=1]
+ %scevgep133134 = bitcast i8* %scevgep133 to i16* ; [#uses=1]
+ %tmp135183 = or i32 %tmp125, 10 ; [#uses=1]
+ %scevgep136 = getelementptr i8* %116, i32 %tmp135183 ; [#uses=1]
+ %scevgep136137 = bitcast i8* %scevgep136 to i16* ; [#uses=1]
+ %scevgep138 = getelementptr i8* %116, i32 %tmp125 ; [#uses=1]
+ %scevgep138139 = bitcast i8* %scevgep138 to i16* ; [#uses=1]
+ %tmp140184 = or i32 %tmp125, 2 ; [#uses=1]
+ %scevgep141 = getelementptr i8* %116, i32 %tmp140184 ; [#uses=1]
+ %scevgep141142 = bitcast i8* %scevgep141 to i16* ; [#uses=1]
+ %tmp143185 = or i32 %tmp125, 4 ; [#uses=1]
+ %scevgep144 = getelementptr i8* %116, i32 %tmp143185 ; [#uses=1]
+ %scevgep144145 = bitcast i8* %scevgep144 to i16* ; [#uses=1]
+ %118 = load %struct.BT_QUANTIZED_BVH_NODE** %117, align 4 ; [#uses=1]
+ %scevgep117 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %118, i32 %i16.072, i32 2 ; [#uses=1]
+ %119 = load i32* %scevgep117, align 4 ; [#uses=1]
+ store i32 %119, i32* %scevgep127128, align 4
+ %120 = load %struct.BT_QUANTIZED_BVH_NODE** %117, align 4 ; [#uses=1]
+ %scevgep118 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %120, i32 %i16.072, i32 1, i32 0 ; [#uses=1]
+ %121 = load i16* %scevgep118, align 2 ; [#uses=1]
+ store i16 %121, i16* %scevgep130131, align 2
+ %122 = load %struct.BT_QUANTIZED_BVH_NODE** %117, align 4 ; [#uses=1]
+ %scevgep119 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %122, i32 %i16.072, i32 1, i32 1 ; [#uses=1]
+ %123 = load i16* %scevgep119, align 2 ; [#uses=1]
+ store i16 %123, i16* %scevgep133134, align 2
+ %124 = load %struct.BT_QUANTIZED_BVH_NODE** %117, align 4 ; [#uses=1]
+ %scevgep120 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %124, i32 %i16.072, i32 1, i32 2 ; [#uses=1]
+ %125 = load i16* %scevgep120, align 2 ; [#uses=1]
+ store i16 %125, i16* %scevgep136137, align 2
+ %126 = load %struct.BT_QUANTIZED_BVH_NODE** %117, align 4 ; [#uses=1]
+ %scevgep121122 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %126, i32 %i16.072, i32 0, i32 0 ; [#uses=1]
+ %127 = load i16* %scevgep121122, align 2 ; [#uses=1]
+ store i16 %127, i16* %scevgep138139, align 2
+ %128 = load %struct.BT_QUANTIZED_BVH_NODE** %117, align 4 ; [#uses=1]
+ %scevgep123 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %128, i32 %i16.072, i32 0, i32 1 ; [#uses=1]
+ %129 = load i16* %scevgep123, align 2 ; [#uses=1]
+ store i16 %129, i16* %scevgep141142, align 2
+ %130 = load %struct.BT_QUANTIZED_BVH_NODE** %117, align 4 ; [#uses=1]
+ %scevgep124 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %130, i32 %i16.072, i32 0, i32 2 ; [#uses=1]
+ %131 = load i16* %scevgep124, align 2 ; [#uses=1]
+ store i16 %131, i16* %scevgep144145, align 2
+ %132 = add nsw i32 %i16.072, 1 ; [#uses=2]
+ %exitcond116 = icmp eq i32 %132, %107 ; [#uses=1]
+ br i1 %exitcond116, label %bb19, label %bb17
+
+bb19: ; preds = %bb17, %bb11
+ %133 = load i32 (...)*** %108, align 4 ; [#uses=1]
+ %134 = getelementptr inbounds i32 (...)** %133, i32 5 ; [#uses=1]
+ %135 = load i32 (...)** %134, align 4 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %137 = load %struct.BT_QUANTIZED_BVH_NODE** %136, align 4 ; [#uses=1]
+ %138 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %137 to i8* ; [#uses=1]
+ %139 = bitcast i32 (...)* %135 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ tail call void %139(%struct.btActionInterface* %serializer, %struct.btChunk* %113, i8* getelementptr inbounds ([23 x i8]* @.str15, i32 0, i32 0), i32 1497453121, i8* %138)
+ br label %bb20
+
+bb20: ; preds = %bb19, %bb10, %bb10.thread
+ %140 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 11 ; [#uses=1]
+ %141 = load i32* %140, align 4 ; [#uses=1]
+ %142 = getelementptr inbounds i8* %dataBuffer, i32 76 ; [#uses=1]
+ %143 = bitcast i8* %142 to i32* ; [#uses=1]
+ store i32 %141, i32* %143, align 4
+ %144 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=3]
+ %145 = load i32* %144, align 4 ; [#uses=1]
+ %146 = getelementptr inbounds i8* %dataBuffer, i32 80 ; [#uses=1]
+ %147 = bitcast i8* %146 to i32* ; [#uses=1]
+ store i32 %145, i32* %147, align 4
+ %148 = load i32* %144, align 4 ; [#uses=1]
+ %149 = icmp eq i32 %148, 0 ; [#uses=1]
+ br i1 %149, label %bb23.thread, label %bb23
+
+bb23.thread: ; preds = %bb20
+ %150 = getelementptr inbounds i8* %dataBuffer, i32 72 ; [#uses=1]
+ %151 = bitcast i8* %150 to %struct.btBvhSubtreeInfoData** ; [#uses=1]
+ store %struct.btBvhSubtreeInfoData* null, %struct.btBvhSubtreeInfoData** %151, align 4
+ ret i8* getelementptr inbounds ([24 x i8]* @.str37, i32 0, i32 0)
+
+bb23: ; preds = %bb20
+ %152 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=1]
+ %153 = load i32 (...)*** %152, align 4 ; [#uses=1]
+ %154 = getelementptr inbounds i32 (...)** %153, i32 7 ; [#uses=1]
+ %155 = load i32 (...)** %154, align 4 ; [#uses=1]
+ %156 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ %157 = load %struct.btBvhSubtreeInfo** %156, align 4 ; [#uses=1]
+ %158 = bitcast %struct.btBvhSubtreeInfo* %157 to i8* ; [#uses=1]
+ %159 = bitcast i32 (...)* %155 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %160 = tail call i8* %159(%struct.btActionInterface* %serializer, i8* %158) ; [#uses=1]
+ %phitmp36 = bitcast i8* %160 to %struct.btBvhSubtreeInfoData* ; [#uses=2]
+ %161 = getelementptr inbounds i8* %dataBuffer, i32 72 ; [#uses=1]
+ %162 = bitcast i8* %161 to %struct.btBvhSubtreeInfoData** ; [#uses=1]
+ store %struct.btBvhSubtreeInfoData* %phitmp36, %struct.btBvhSubtreeInfoData** %162, align 4
+ %163 = icmp eq %struct.btBvhSubtreeInfoData* %phitmp36, null ; [#uses=1]
+ br i1 %163, label %bb33, label %bb24
+
+bb24: ; preds = %bb23
+ %164 = load i32* %144, align 4 ; [#uses=3]
+ %165 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=2]
+ %166 = load i32 (...)*** %165, align 4 ; [#uses=1]
+ %167 = getelementptr inbounds i32 (...)** %166, i32 4 ; [#uses=1]
+ %168 = load i32 (...)** %167, align 4 ; [#uses=1]
+ %169 = bitcast i32 (...)* %168 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %170 = tail call %struct.btChunk* %169(%struct.btActionInterface* %serializer, i32 20, i32 %164) ; [#uses=2]
+ %171 = icmp sgt i32 %164, 0 ; [#uses=1]
+ br i1 %171, label %bb.nph76, label %bb32
+
+bb.nph76: ; preds = %bb24
+ %172 = getelementptr inbounds %struct.btChunk* %170, i32 0, i32 2 ; [#uses=1]
+ %173 = load i8** %172, align 4 ; [#uses=8]
+ %174 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=8]
+ br label %bb30
+
+bb30: ; preds = %bb30, %bb.nph76
+ %i29.075 = phi i32 [ 0, %bb.nph76 ], [ %191, %bb30 ] ; [#uses=10]
+ %tmp156 = mul i32 %i29.075, 20 ; [#uses=8]
+ %scevgep157 = getelementptr i8* %173, i32 %tmp156 ; [#uses=1]
+ %scevgep157158 = bitcast i8* %scevgep157 to i32* ; [#uses=1]
+ %tmp159 = add i32 %tmp156, 4 ; [#uses=1]
+ %scevgep160 = getelementptr i8* %173, i32 %tmp159 ; [#uses=1]
+ %scevgep160161 = bitcast i8* %scevgep160 to i32* ; [#uses=1]
+ %tmp162 = add i32 %tmp156, 14 ; [#uses=1]
+ %scevgep163 = getelementptr i8* %173, i32 %tmp162 ; [#uses=1]
+ %scevgep163164 = bitcast i8* %scevgep163 to i16* ; [#uses=1]
+ %tmp165 = add i32 %tmp156, 16 ; [#uses=1]
+ %scevgep166 = getelementptr i8* %173, i32 %tmp165 ; [#uses=1]
+ %scevgep166167 = bitcast i8* %scevgep166 to i16* ; [#uses=1]
+ %tmp168 = add i32 %tmp156, 18 ; [#uses=1]
+ %scevgep169 = getelementptr i8* %173, i32 %tmp168 ; [#uses=1]
+ %scevgep169170 = bitcast i8* %scevgep169 to i16* ; [#uses=1]
+ %tmp171 = add i32 %tmp156, 8 ; [#uses=1]
+ %scevgep172 = getelementptr i8* %173, i32 %tmp171 ; [#uses=1]
+ %scevgep172173 = bitcast i8* %scevgep172 to i16* ; [#uses=1]
+ %tmp174 = add i32 %tmp156, 10 ; [#uses=1]
+ %scevgep175 = getelementptr i8* %173, i32 %tmp174 ; [#uses=1]
+ %scevgep175176 = bitcast i8* %scevgep175 to i16* ; [#uses=1]
+ %tmp177 = add i32 %tmp156, 12 ; [#uses=1]
+ %scevgep178 = getelementptr i8* %173, i32 %tmp177 ; [#uses=1]
+ %scevgep178179 = bitcast i8* %scevgep178 to i16* ; [#uses=1]
+ %175 = load %struct.btBvhSubtreeInfo** %174, align 4 ; [#uses=1]
+ %scevgep147 = getelementptr %struct.btBvhSubtreeInfo* %175, i32 %i29.075, i32 1, i32 0 ; [#uses=1]
+ %176 = load i16* %scevgep147, align 2 ; [#uses=1]
+ store i16 %176, i16* %scevgep163164, align 2
+ %177 = load %struct.btBvhSubtreeInfo** %174, align 4 ; [#uses=1]
+ %scevgep148 = getelementptr %struct.btBvhSubtreeInfo* %177, i32 %i29.075, i32 1, i32 1 ; [#uses=1]
+ %178 = load i16* %scevgep148, align 2 ; [#uses=1]
+ store i16 %178, i16* %scevgep166167, align 2
+ %179 = load %struct.btBvhSubtreeInfo** %174, align 4 ; [#uses=1]
+ %scevgep149 = getelementptr %struct.btBvhSubtreeInfo* %179, i32 %i29.075, i32 1, i32 2 ; [#uses=1]
+ %180 = load i16* %scevgep149, align 2 ; [#uses=1]
+ store i16 %180, i16* %scevgep169170, align 2
+ %181 = load %struct.btBvhSubtreeInfo** %174, align 4 ; [#uses=1]
+ %scevgep150151 = getelementptr inbounds %struct.btBvhSubtreeInfo* %181, i32 %i29.075, i32 0, i32 0 ; [#uses=1]
+ %182 = load i16* %scevgep150151, align 2 ; [#uses=1]
+ store i16 %182, i16* %scevgep172173, align 2
+ %183 = load %struct.btBvhSubtreeInfo** %174, align 4 ; [#uses=1]
+ %scevgep152 = getelementptr %struct.btBvhSubtreeInfo* %183, i32 %i29.075, i32 0, i32 1 ; [#uses=1]
+ %184 = load i16* %scevgep152, align 2 ; [#uses=1]
+ store i16 %184, i16* %scevgep175176, align 2
+ %185 = load %struct.btBvhSubtreeInfo** %174, align 4 ; [#uses=1]
+ %scevgep153 = getelementptr %struct.btBvhSubtreeInfo* %185, i32 %i29.075, i32 0, i32 2 ; [#uses=1]
+ %186 = load i16* %scevgep153, align 2 ; [#uses=1]
+ store i16 %186, i16* %scevgep178179, align 2
+ %187 = load %struct.btBvhSubtreeInfo** %174, align 4 ; [#uses=1]
+ %scevgep154 = getelementptr %struct.btBvhSubtreeInfo* %187, i32 %i29.075, i32 2 ; [#uses=1]
+ %188 = load i32* %scevgep154, align 4 ; [#uses=1]
+ store i32 %188, i32* %scevgep157158, align 4
+ %189 = load %struct.btBvhSubtreeInfo** %174, align 4 ; [#uses=1]
+ %scevgep155 = getelementptr %struct.btBvhSubtreeInfo* %189, i32 %i29.075, i32 3 ; [#uses=1]
+ %190 = load i32* %scevgep155, align 4 ; [#uses=1]
+ store i32 %190, i32* %scevgep160161, align 4
+ %191 = add nsw i32 %i29.075, 1 ; [#uses=2]
+ %exitcond146 = icmp eq i32 %191, %164 ; [#uses=1]
+ br i1 %exitcond146, label %bb32, label %bb30
+
+bb32: ; preds = %bb30, %bb24
+ %192 = load i32 (...)*** %165, align 4 ; [#uses=1]
+ %193 = getelementptr inbounds i32 (...)** %192, i32 5 ; [#uses=1]
+ %194 = load i32 (...)** %193, align 4 ; [#uses=1]
+ %195 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ %196 = load %struct.btBvhSubtreeInfo** %195, align 4 ; [#uses=1]
+ %197 = bitcast %struct.btBvhSubtreeInfo* %196 to i8* ; [#uses=1]
+ %198 = bitcast i32 (...)* %194 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ tail call void %198(%struct.btActionInterface* %serializer, %struct.btChunk* %170, i8* getelementptr inbounds ([21 x i8]* @.str26, i32 0, i32 0), i32 1497453121, i8* %197)
+ ret i8* getelementptr inbounds ([24 x i8]* @.str37, i32 0, i32 0)
+
+bb33: ; preds = %bb23
+ ret i8* getelementptr inbounds ([24 x i8]* @.str37, i32 0, i32 0)
+}
+
+; [#uses=1]
+define void @_ZN14btQuantizedBvh17deSerializeDoubleER24btQuantizedBvhDoubleData(%struct.btQuantizedBvh* %this, %struct.btQuantizedBvhDoubleData* nocapture %quantizedBvhDoubleData) align 2 {
+entry:
+ %scevgep.i = getelementptr %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %0 = load double* %scevgep.i, align 4 ; [#uses=1]
+ %1 = fptrunc double %0 to float ; [#uses=1]
+ store float %1, float* %scevgep4.i, align 4
+ %scevgep.1.i = getelementptr %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %2 = load double* %scevgep.1.i, align 4 ; [#uses=1]
+ %3 = fptrunc double %2 to float ; [#uses=1]
+ store float %3, float* %scevgep4.1.i, align 4
+ %scevgep.2.i = getelementptr %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %4 = load double* %scevgep.2.i, align 4 ; [#uses=1]
+ %5 = fptrunc double %4 to float ; [#uses=1]
+ store float %5, float* %scevgep4.2.i, align 4
+ %scevgep.3.i = getelementptr %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %6 = load double* %scevgep.3.i, align 4 ; [#uses=1]
+ %7 = fptrunc double %6 to float ; [#uses=1]
+ store float %7, float* %scevgep4.3.i, align 4
+ %scevgep.i19 = getelementptr %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i20 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %8 = load double* %scevgep.i19, align 4 ; [#uses=1]
+ %9 = fptrunc double %8 to float ; [#uses=1]
+ store float %9, float* %scevgep4.i20, align 4
+ %scevgep.1.i21 = getelementptr %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i22 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = load double* %scevgep.1.i21, align 4 ; [#uses=1]
+ %11 = fptrunc double %10 to float ; [#uses=1]
+ store float %11, float* %scevgep4.1.i22, align 4
+ %scevgep.2.i23 = getelementptr %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i24 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %12 = load double* %scevgep.2.i23, align 4 ; [#uses=1]
+ %13 = fptrunc double %12 to float ; [#uses=1]
+ store float %13, float* %scevgep4.2.i24, align 4
+ %scevgep.3.i25 = getelementptr %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i26 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %14 = load double* %scevgep.3.i25, align 4 ; [#uses=1]
+ %15 = fptrunc double %14 to float ; [#uses=1]
+ store float %15, float* %scevgep4.3.i26, align 4
+ %scevgep.i27 = getelementptr %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i28 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %16 = load double* %scevgep.i27, align 4 ; [#uses=1]
+ %17 = fptrunc double %16 to float ; [#uses=1]
+ store float %17, float* %scevgep4.i28, align 4
+ %scevgep.1.i29 = getelementptr %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i30 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %18 = load double* %scevgep.1.i29, align 4 ; [#uses=1]
+ %19 = fptrunc double %18 to float ; [#uses=1]
+ store float %19, float* %scevgep4.1.i30, align 4
+ %scevgep.2.i31 = getelementptr %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i32 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %20 = load double* %scevgep.2.i31, align 4 ; [#uses=1]
+ %21 = fptrunc double %20 to float ; [#uses=1]
+ store float %21, float* %scevgep4.2.i32, align 4
+ %scevgep.3.i33 = getelementptr %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i34 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %22 = load double* %scevgep.3.i33, align 4 ; [#uses=1]
+ %23 = fptrunc double %22 to float ; [#uses=1]
+ store float %23, float* %scevgep4.3.i34, align 4
+ %24 = getelementptr inbounds %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 3 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 %25, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 4 ; [#uses=1]
+ %28 = load i32* %27, align 4 ; [#uses=1]
+ %29 = icmp ne i32 %28, 0 ; [#uses=1]
+ %30 = zext i1 %29 to i8 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ store i8 %30, i8* %31, align 4
+ %32 = getelementptr inbounds %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 5 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=10]
+ %34 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 1 ; [#uses=3]
+ %35 = load i32* %34, align 4 ; [#uses=3]
+ %36 = icmp sgt i32 %35, %33 ; [#uses=1]
+ %.not = xor i1 %36, true ; [#uses=1]
+ %37 = icmp slt i32 %35, %33 ; [#uses=1]
+ %or.cond = and i1 %.not, %37 ; [#uses=1]
+ br i1 %or.cond, label %bb4.i36, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE6resizeEiRKS0_.exit
+
+bb4.i36: ; preds = %entry
+ %38 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 2 ; [#uses=2]
+ %39 = load i32* %38, align 4 ; [#uses=1]
+ %40 = icmp slt i32 %39, %33 ; [#uses=1]
+ br i1 %40, label %bb.i.i37, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE6resizeEiRKS0_.exit
+
+bb.i.i37: ; preds = %bb4.i36
+ %41 = icmp eq i32 %33, 0 ; [#uses=1]
+ br i1 %41, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i, label %bb.i2.i.i40
+
+bb.i2.i.i40: ; preds = %bb.i.i37
+ %42 = shl i32 %33, 6 ; [#uses=1]
+ %43 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %42, i32 16) ; [#uses=1]
+ %phitmp.i.i38 = bitcast i8* %43 to %struct.btOptimizedBvhNode* ; [#uses=1]
+ %.pre.i39 = load i32* %34, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i40, %bb.i.i37
+ %44 = phi i32 [ %.pre.i39, %bb.i2.i.i40 ], [ %35, %bb.i.i37 ] ; [#uses=2]
+ %45 = phi %struct.btOptimizedBvhNode* [ %phitmp.i.i38, %bb.i2.i.i40 ], [ null, %bb.i.i37 ] ; [#uses=2]
+ %46 = icmp sgt i32 %44, 0 ; [#uses=1]
+ br i1 %46, label %bb.nph.i.i.i41, label %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i
+
+bb.nph.i.i.i41: ; preds = %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i
+ %47 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i49
+
+bb.i4.i.i49: ; preds = %bb.i4.i.i49, %bb.nph.i.i.i41
+ %indvar.i.i.i42 = phi i32 [ 0, %bb.nph.i.i.i41 ], [ %indvar.next.i.i.i47, %bb.i4.i.i49 ] ; [#uses=3]
+ %scevgep159 = getelementptr %struct.btOptimizedBvhNode* %45, i32 %indvar.i.i.i42 ; [#uses=1]
+ %scevgep5.i.i.i44 = bitcast %struct.btOptimizedBvhNode* %scevgep159 to i8* ; [#uses=1]
+ %48 = load %struct.btOptimizedBvhNode** %47, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btOptimizedBvhNode* %48, i32 %indvar.i.i.i42 ; [#uses=1]
+ %scevgep67.i.i.i46 = bitcast %struct.btOptimizedBvhNode* %scevgep to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep5.i.i.i44, i8* %scevgep67.i.i.i46, i32 64, i32 4, i1 false) nounwind
+ %indvar.next.i.i.i47 = add i32 %indvar.i.i.i42, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i47, %44 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i49
+
+_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i: ; preds = %bb.i4.i.i49, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i
+ %49 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %50 = load %struct.btOptimizedBvhNode** %49, align 4 ; [#uses=2]
+ %51 = icmp eq %struct.btOptimizedBvhNode* %50, null ; [#uses=1]
+ br i1 %51, label %bb8.preheader.i54, label %bb.i.i.i51
+
+bb.i.i.i51: ; preds = %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i
+ %52 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %53 = load i8* %52, align 4 ; [#uses=1]
+ %toBool.i.i.i50 = icmp eq i8 %53, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i50, label %bb2.i.i.i53, label %bb1.i.i.i52
+
+bb1.i.i.i52: ; preds = %bb.i.i.i51
+ %54 = bitcast %struct.btOptimizedBvhNode* %50 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %54)
+ br label %bb2.i.i.i53
+
+bb2.i.i.i53: ; preds = %bb1.i.i.i52, %bb.i.i.i51
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %49, align 4
+ br label %bb8.preheader.i54
+
+bb8.preheader.i54: ; preds = %bb2.i.i.i53, %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i
+ %55 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %55, align 4
+ store %struct.btOptimizedBvhNode* %45, %struct.btOptimizedBvhNode** %49, align 4
+ store i32 %33, i32* %38, align 4
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE6resizeEiRKS0_.exit
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE6resizeEiRKS0_.exit: ; preds = %bb8.preheader.i54, %bb4.i36, %entry
+ store i32 %33, i32* %34, align 4
+ %56 = icmp eq i32 %33, 0 ; [#uses=1]
+ %.not238 = xor i1 %56, true ; [#uses=1]
+ %57 = icmp sgt i32 %33, 0 ; [#uses=1]
+ %or.cond239 = and i1 %.not238, %57 ; [#uses=1]
+ br i1 %or.cond239, label %bb.nph, label %bb3
+
+bb.nph: ; preds = %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE6resizeEiRKS0_.exit
+ %58 = getelementptr inbounds %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 7 ; [#uses=1]
+ %59 = load %struct.btOptimizedBvhNodeDoubleData** %58, align 4 ; [#uses=11]
+ %60 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=5]
+ br label %bb1
+
+bb1: ; preds = %bb1, %bb.nph
+ %i.0150 = phi i32 [ 0, %bb.nph ], [ %85, %bb1 ] ; [#uses=23]
+ %scevgep162 = getelementptr %struct.btOptimizedBvhNodeDoubleData* %59, i32 %i.0150, i32 2 ; [#uses=1]
+ %scevgep163 = getelementptr %struct.btOptimizedBvhNodeDoubleData* %59, i32 %i.0150, i32 3 ; [#uses=1]
+ %scevgep164 = getelementptr %struct.btOptimizedBvhNodeDoubleData* %59, i32 %i.0150, i32 4 ; [#uses=1]
+ %scevgep.i64 = getelementptr %struct.btOptimizedBvhNodeDoubleData* %59, i32 %i.0150, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep.1.i66 = getelementptr %struct.btOptimizedBvhNodeDoubleData* %59, i32 %i.0150, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep.2.i68 = getelementptr %struct.btOptimizedBvhNodeDoubleData* %59, i32 %i.0150, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep.3.i70 = getelementptr %struct.btOptimizedBvhNodeDoubleData* %59, i32 %i.0150, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep.i72 = getelementptr inbounds %struct.btOptimizedBvhNodeDoubleData* %59, i32 %i.0150, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep.1.i74 = getelementptr %struct.btOptimizedBvhNodeDoubleData* %59, i32 %i.0150, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep.2.i76 = getelementptr %struct.btOptimizedBvhNodeDoubleData* %59, i32 %i.0150, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep.3.i78 = getelementptr %struct.btOptimizedBvhNodeDoubleData* %59, i32 %i.0150, i32 0, i32 0, i32 3 ; [#uses=1]
+ %61 = load %struct.btOptimizedBvhNode** %60, align 4 ; [#uses=4]
+ %62 = load double* %scevgep.i64, align 4 ; [#uses=1]
+ %63 = fptrunc double %62 to float ; [#uses=1]
+ %scevgep4.i65 = getelementptr %struct.btOptimizedBvhNode* %61, i32 %i.0150, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %63, float* %scevgep4.i65, align 4
+ %64 = load double* %scevgep.1.i66, align 4 ; [#uses=1]
+ %65 = fptrunc double %64 to float ; [#uses=1]
+ %scevgep4.1.i67 = getelementptr %struct.btOptimizedBvhNode* %61, i32 %i.0150, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %65, float* %scevgep4.1.i67, align 4
+ %66 = load double* %scevgep.2.i68, align 4 ; [#uses=1]
+ %67 = fptrunc double %66 to float ; [#uses=1]
+ %scevgep4.2.i69 = getelementptr %struct.btOptimizedBvhNode* %61, i32 %i.0150, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %67, float* %scevgep4.2.i69, align 4
+ %68 = load double* %scevgep.3.i70, align 4 ; [#uses=1]
+ %69 = fptrunc double %68 to float ; [#uses=1]
+ %scevgep4.3.i71 = getelementptr %struct.btOptimizedBvhNode* %61, i32 %i.0150, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %69, float* %scevgep4.3.i71, align 4
+ %70 = load %struct.btOptimizedBvhNode** %60, align 4 ; [#uses=4]
+ %71 = load double* %scevgep.i72, align 4 ; [#uses=1]
+ %72 = fptrunc double %71 to float ; [#uses=1]
+ %scevgep4.i73 = getelementptr inbounds %struct.btOptimizedBvhNode* %70, i32 %i.0150, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %72, float* %scevgep4.i73, align 4
+ %73 = load double* %scevgep.1.i74, align 4 ; [#uses=1]
+ %74 = fptrunc double %73 to float ; [#uses=1]
+ %scevgep4.1.i75 = getelementptr %struct.btOptimizedBvhNode* %70, i32 %i.0150, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %74, float* %scevgep4.1.i75, align 4
+ %75 = load double* %scevgep.2.i76, align 4 ; [#uses=1]
+ %76 = fptrunc double %75 to float ; [#uses=1]
+ %scevgep4.2.i77 = getelementptr %struct.btOptimizedBvhNode* %70, i32 %i.0150, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %76, float* %scevgep4.2.i77, align 4
+ %77 = load double* %scevgep.3.i78, align 4 ; [#uses=1]
+ %78 = fptrunc double %77 to float ; [#uses=1]
+ %scevgep4.3.i79 = getelementptr %struct.btOptimizedBvhNode* %70, i32 %i.0150, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %78, float* %scevgep4.3.i79, align 4
+ %79 = load %struct.btOptimizedBvhNode** %60, align 4 ; [#uses=1]
+ %80 = load i32* %scevgep162, align 4 ; [#uses=1]
+ %scevgep183 = getelementptr %struct.btOptimizedBvhNode* %79, i32 %i.0150, i32 2 ; [#uses=1]
+ store i32 %80, i32* %scevgep183, align 4
+ %81 = load %struct.btOptimizedBvhNode** %60, align 4 ; [#uses=1]
+ %82 = load i32* %scevgep163, align 4 ; [#uses=1]
+ %scevgep184 = getelementptr %struct.btOptimizedBvhNode* %81, i32 %i.0150, i32 3 ; [#uses=1]
+ store i32 %82, i32* %scevgep184, align 4
+ %83 = load %struct.btOptimizedBvhNode** %60, align 4 ; [#uses=1]
+ %84 = load i32* %scevgep164, align 4 ; [#uses=1]
+ %scevgep185 = getelementptr %struct.btOptimizedBvhNode* %83, i32 %i.0150, i32 4 ; [#uses=1]
+ store i32 %84, i32* %scevgep185, align 4
+ %85 = add nsw i32 %i.0150, 1 ; [#uses=2]
+ %exitcond161 = icmp eq i32 %85, %33 ; [#uses=1]
+ br i1 %exitcond161, label %bb3, label %bb1
+
+bb3: ; preds = %bb1, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE6resizeEiRKS0_.exit
+ %86 = getelementptr inbounds %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 6 ; [#uses=1]
+ %87 = load i32* %86, align 4 ; [#uses=7]
+ %88 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 1 ; [#uses=2]
+ %89 = load i32* %88, align 4 ; [#uses=3]
+ %90 = icmp slt i32 %89, %87 ; [#uses=1]
+ br i1 %90, label %bb.nph.i81, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit
+
+bb.nph.i81: ; preds = %bb3
+ %91 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(%struct.QuantizedNodeArray* %91, i32 %87) inlinehint
+ %92 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %tmp.i80 = sub i32 %87, %89 ; [#uses=1]
+ br label %bb7.i89
+
+bb7.i89: ; preds = %bb7.i89, %bb.nph.i81
+ %indvar.i82 = phi i32 [ 0, %bb.nph.i81 ], [ %indvar.next.i87, %bb7.i89 ] ; [#uses=2]
+ %tmp = add i32 %89, %indvar.i82 ; [#uses=1]
+ %93 = load %struct.BT_QUANTIZED_BVH_NODE** %92, align 4 ; [#uses=1]
+ %scevgep15.i84 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %93, i32 %tmp, i32 0, i32 0 ; [#uses=1]
+ %indvar.next.i87 = add i32 %indvar.i82, 1 ; [#uses=2]
+ %exitcond228 = icmp eq i32 %indvar.next.i87, %tmp.i80 ; [#uses=1]
+ %scevgep15.i84237 = bitcast i16* %scevgep15.i84 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %scevgep15.i84237, i8 0, i64 16, i32 4, i1 false)
+ br i1 %exitcond228, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit, label %bb7.i89
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit: ; preds = %bb7.i89, %bb3
+ store i32 %87, i32* %88, align 4
+ %94 = icmp eq i32 %87, 0 ; [#uses=1]
+ %.not240 = xor i1 %94, true ; [#uses=1]
+ %95 = icmp sgt i32 %87, 0 ; [#uses=1]
+ %or.cond241 = and i1 %.not240, %95 ; [#uses=1]
+ br i1 %or.cond241, label %bb.nph154, label %bb10
+
+bb.nph154: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit
+ %96 = getelementptr inbounds %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 8 ; [#uses=1]
+ %97 = load %struct.BT_QUANTIZED_BVH_NODE** %96, align 4 ; [#uses=7]
+ %98 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=7]
+ br label %bb8
+
+bb8: ; preds = %bb8, %bb.nph154
+ %i7.0153 = phi i32 [ 0, %bb.nph154 ], [ %113, %bb8 ] ; [#uses=15]
+ %scevgep195 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %97, i32 %i7.0153, i32 2 ; [#uses=1]
+ %scevgep196 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %97, i32 %i7.0153, i32 1, i32 0 ; [#uses=1]
+ %scevgep197 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %97, i32 %i7.0153, i32 1, i32 1 ; [#uses=1]
+ %scevgep198 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %97, i32 %i7.0153, i32 1, i32 2 ; [#uses=1]
+ %scevgep199200 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %97, i32 %i7.0153, i32 0, i32 0 ; [#uses=1]
+ %scevgep201 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %97, i32 %i7.0153, i32 0, i32 1 ; [#uses=1]
+ %scevgep202 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %97, i32 %i7.0153, i32 0, i32 2 ; [#uses=1]
+ %99 = load %struct.BT_QUANTIZED_BVH_NODE** %98, align 4 ; [#uses=1]
+ %100 = load i32* %scevgep195, align 4 ; [#uses=1]
+ %scevgep187 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %99, i32 %i7.0153, i32 2 ; [#uses=1]
+ store i32 %100, i32* %scevgep187, align 4
+ %101 = load %struct.BT_QUANTIZED_BVH_NODE** %98, align 4 ; [#uses=1]
+ %102 = load i16* %scevgep196, align 2 ; [#uses=1]
+ %scevgep188 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %101, i32 %i7.0153, i32 1, i32 0 ; [#uses=1]
+ store i16 %102, i16* %scevgep188, align 2
+ %103 = load %struct.BT_QUANTIZED_BVH_NODE** %98, align 4 ; [#uses=1]
+ %104 = load i16* %scevgep197, align 2 ; [#uses=1]
+ %scevgep189 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %103, i32 %i7.0153, i32 1, i32 1 ; [#uses=1]
+ store i16 %104, i16* %scevgep189, align 2
+ %105 = load %struct.BT_QUANTIZED_BVH_NODE** %98, align 4 ; [#uses=1]
+ %106 = load i16* %scevgep198, align 2 ; [#uses=1]
+ %scevgep190 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %105, i32 %i7.0153, i32 1, i32 2 ; [#uses=1]
+ store i16 %106, i16* %scevgep190, align 2
+ %107 = load %struct.BT_QUANTIZED_BVH_NODE** %98, align 4 ; [#uses=1]
+ %108 = load i16* %scevgep199200, align 2 ; [#uses=1]
+ %scevgep191192 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %107, i32 %i7.0153, i32 0, i32 0 ; [#uses=1]
+ store i16 %108, i16* %scevgep191192, align 2
+ %109 = load %struct.BT_QUANTIZED_BVH_NODE** %98, align 4 ; [#uses=1]
+ %110 = load i16* %scevgep201, align 2 ; [#uses=1]
+ %scevgep193 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %109, i32 %i7.0153, i32 0, i32 1 ; [#uses=1]
+ store i16 %110, i16* %scevgep193, align 2
+ %111 = load %struct.BT_QUANTIZED_BVH_NODE** %98, align 4 ; [#uses=1]
+ %112 = load i16* %scevgep202, align 2 ; [#uses=1]
+ %scevgep194 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %111, i32 %i7.0153, i32 0, i32 2 ; [#uses=1]
+ store i16 %112, i16* %scevgep194, align 2
+ %113 = add nsw i32 %i7.0153, 1 ; [#uses=2]
+ %exitcond186 = icmp eq i32 %113, %87 ; [#uses=1]
+ br i1 %exitcond186, label %bb10, label %bb8
+
+bb10: ; preds = %bb8, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit
+ %114 = getelementptr inbounds %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 9 ; [#uses=1]
+ %115 = load i32* %114, align 4 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 11 ; [#uses=1]
+ store i32 %115, i32* %116, align 4
+ %117 = getelementptr inbounds %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 10 ; [#uses=1]
+ %118 = load i32* %117, align 4 ; [#uses=10]
+ %119 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=3]
+ %120 = load i32* %119, align 4 ; [#uses=3]
+ %121 = icmp sgt i32 %120, %118 ; [#uses=1]
+ %.not242 = xor i1 %121, true ; [#uses=1]
+ %122 = icmp slt i32 %120, %118 ; [#uses=1]
+ %or.cond243 = and i1 %.not242, %122 ; [#uses=1]
+ br i1 %or.cond243, label %bb4.i, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6resizeEiRKS0_.exit
+
+bb4.i: ; preds = %bb10
+ %123 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 2 ; [#uses=2]
+ %124 = load i32* %123, align 4 ; [#uses=1]
+ %125 = icmp slt i32 %124, %118 ; [#uses=1]
+ br i1 %125, label %bb.i.i, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6resizeEiRKS0_.exit
+
+bb.i.i: ; preds = %bb4.i
+ %126 = icmp eq i32 %118, 0 ; [#uses=1]
+ br i1 %126, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %127 = shl i32 %118, 5 ; [#uses=1]
+ %128 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %127, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %128 to %struct.btBvhSubtreeInfo* ; [#uses=1]
+ %.pre.i = load i32* %119, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %129 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %120, %bb.i.i ] ; [#uses=2]
+ %130 = phi %struct.btBvhSubtreeInfo* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %131 = icmp sgt i32 %129, 0 ; [#uses=1]
+ br i1 %131, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i
+ %132 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb.i4.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb.i4.i.i ] ; [#uses=3]
+ %scevgep207 = getelementptr %struct.btBvhSubtreeInfo* %130, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep5.i.i.i = bitcast %struct.btBvhSubtreeInfo* %scevgep207 to i8* ; [#uses=1]
+ %133 = load %struct.btBvhSubtreeInfo** %132, align 4 ; [#uses=1]
+ %scevgep205 = getelementptr %struct.btBvhSubtreeInfo* %133, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep67.i.i.i = bitcast %struct.btBvhSubtreeInfo* %scevgep205 to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep5.i.i.i, i8* %scevgep67.i.i.i, i32 32, i32 4, i1 false) nounwind
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond204 = icmp eq i32 %indvar.next.i.i.i, %129 ; [#uses=1]
+ br i1 %exitcond204, label %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i: ; preds = %bb.i4.i.i, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i
+ %134 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=3]
+ %135 = load %struct.btBvhSubtreeInfo** %134, align 4 ; [#uses=2]
+ %136 = icmp eq %struct.btBvhSubtreeInfo* %135, null ; [#uses=1]
+ br i1 %136, label %bb8.preheader.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+ %137 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ %138 = load i8* %137, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %138, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %139 = bitcast %struct.btBvhSubtreeInfo* %135 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %139)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %134, align 4
+ br label %bb8.preheader.i
+
+bb8.preheader.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+ %140 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ store i8 1, i8* %140, align 4
+ store %struct.btBvhSubtreeInfo* %130, %struct.btBvhSubtreeInfo** %134, align 4
+ store i32 %118, i32* %123, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6resizeEiRKS0_.exit
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6resizeEiRKS0_.exit: ; preds = %bb8.preheader.i, %bb4.i, %bb10
+ store i32 %118, i32* %119, align 4
+ %141 = icmp eq i32 %118, 0 ; [#uses=1]
+ %.not244 = xor i1 %141, true ; [#uses=1]
+ %142 = icmp sgt i32 %118, 0 ; [#uses=1]
+ %or.cond245 = and i1 %.not244, %142 ; [#uses=1]
+ br i1 %or.cond245, label %bb.nph157, label %return
+
+bb.nph157: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6resizeEiRKS0_.exit
+ %143 = getelementptr inbounds %struct.btQuantizedBvhDoubleData* %quantizedBvhDoubleData, i32 0, i32 11 ; [#uses=1]
+ %144 = load %struct.btBvhSubtreeInfoData** %143, align 4 ; [#uses=8]
+ %145 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=8]
+ br label %bb15
+
+bb15: ; preds = %bb15, %bb.nph157
+ %i14.0156 = phi i32 [ 0, %bb.nph157 ], [ %162, %bb15 ] ; [#uses=17]
+ %scevgep219220 = getelementptr inbounds %struct.btBvhSubtreeInfoData* %144, i32 %i14.0156, i32 0 ; [#uses=1]
+ %scevgep221 = getelementptr %struct.btBvhSubtreeInfoData* %144, i32 %i14.0156, i32 1 ; [#uses=1]
+ %scevgep222 = getelementptr %struct.btBvhSubtreeInfoData* %144, i32 %i14.0156, i32 3, i32 0 ; [#uses=1]
+ %scevgep223 = getelementptr %struct.btBvhSubtreeInfoData* %144, i32 %i14.0156, i32 3, i32 1 ; [#uses=1]
+ %scevgep224 = getelementptr %struct.btBvhSubtreeInfoData* %144, i32 %i14.0156, i32 3, i32 2 ; [#uses=1]
+ %scevgep225 = getelementptr %struct.btBvhSubtreeInfoData* %144, i32 %i14.0156, i32 2, i32 0 ; [#uses=1]
+ %scevgep226 = getelementptr %struct.btBvhSubtreeInfoData* %144, i32 %i14.0156, i32 2, i32 1 ; [#uses=1]
+ %scevgep227 = getelementptr %struct.btBvhSubtreeInfoData* %144, i32 %i14.0156, i32 2, i32 2 ; [#uses=1]
+ %146 = load %struct.btBvhSubtreeInfo** %145, align 4 ; [#uses=1]
+ %147 = load i16* %scevgep222, align 2 ; [#uses=1]
+ %scevgep210 = getelementptr %struct.btBvhSubtreeInfo* %146, i32 %i14.0156, i32 1, i32 0 ; [#uses=1]
+ store i16 %147, i16* %scevgep210, align 2
+ %148 = load %struct.btBvhSubtreeInfo** %145, align 4 ; [#uses=1]
+ %149 = load i16* %scevgep223, align 2 ; [#uses=1]
+ %scevgep211 = getelementptr %struct.btBvhSubtreeInfo* %148, i32 %i14.0156, i32 1, i32 1 ; [#uses=1]
+ store i16 %149, i16* %scevgep211, align 2
+ %150 = load %struct.btBvhSubtreeInfo** %145, align 4 ; [#uses=1]
+ %151 = load i16* %scevgep224, align 2 ; [#uses=1]
+ %scevgep212 = getelementptr %struct.btBvhSubtreeInfo* %150, i32 %i14.0156, i32 1, i32 2 ; [#uses=1]
+ store i16 %151, i16* %scevgep212, align 2
+ %152 = load %struct.btBvhSubtreeInfo** %145, align 4 ; [#uses=1]
+ %153 = load i16* %scevgep225, align 2 ; [#uses=1]
+ %scevgep213214 = getelementptr inbounds %struct.btBvhSubtreeInfo* %152, i32 %i14.0156, i32 0, i32 0 ; [#uses=1]
+ store i16 %153, i16* %scevgep213214, align 2
+ %154 = load %struct.btBvhSubtreeInfo** %145, align 4 ; [#uses=1]
+ %155 = load i16* %scevgep226, align 2 ; [#uses=1]
+ %scevgep215 = getelementptr %struct.btBvhSubtreeInfo* %154, i32 %i14.0156, i32 0, i32 1 ; [#uses=1]
+ store i16 %155, i16* %scevgep215, align 2
+ %156 = load %struct.btBvhSubtreeInfo** %145, align 4 ; [#uses=1]
+ %157 = load i16* %scevgep227, align 2 ; [#uses=1]
+ %scevgep216 = getelementptr %struct.btBvhSubtreeInfo* %156, i32 %i14.0156, i32 0, i32 2 ; [#uses=1]
+ store i16 %157, i16* %scevgep216, align 2
+ %158 = load %struct.btBvhSubtreeInfo** %145, align 4 ; [#uses=1]
+ %159 = load i32* %scevgep219220, align 4 ; [#uses=1]
+ %scevgep217 = getelementptr %struct.btBvhSubtreeInfo* %158, i32 %i14.0156, i32 2 ; [#uses=1]
+ store i32 %159, i32* %scevgep217, align 4
+ %160 = load %struct.btBvhSubtreeInfo** %145, align 4 ; [#uses=1]
+ %161 = load i32* %scevgep221, align 4 ; [#uses=1]
+ %scevgep218 = getelementptr %struct.btBvhSubtreeInfo* %160, i32 %i14.0156, i32 3 ; [#uses=1]
+ store i32 %161, i32* %scevgep218, align 4
+ %162 = add nsw i32 %i14.0156, 1 ; [#uses=2]
+ %exitcond209 = icmp eq i32 %162, %118 ; [#uses=1]
+ br i1 %exitcond209, label %return, label %bb15
+
+return: ; preds = %bb15, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6resizeEiRKS0_.exit
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN14btQuantizedBvh16deSerializeFloatER23btQuantizedBvhFloatData(%struct.btQuantizedBvh* %this, %struct.btQuantizedBvhFloatData* nocapture %quantizedBvhFloatData) align 2 {
+entry:
+ %scevgep.i = getelementptr %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %0 = load float* %scevgep.i, align 4 ; [#uses=1]
+ store float %0, float* %scevgep4.i, align 4
+ %scevgep.1.i = getelementptr %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1 = load float* %scevgep.1.i, align 4 ; [#uses=1]
+ store float %1, float* %scevgep4.1.i, align 4
+ %scevgep.2.i = getelementptr %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %2 = load float* %scevgep.2.i, align 4 ; [#uses=1]
+ store float %2, float* %scevgep4.2.i, align 4
+ %scevgep.3.i = getelementptr %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %3 = load float* %scevgep.3.i, align 4 ; [#uses=1]
+ store float %3, float* %scevgep4.3.i, align 4
+ %scevgep.i19 = getelementptr %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i20 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %scevgep.i19, align 4 ; [#uses=1]
+ store float %4, float* %scevgep4.i20, align 4
+ %scevgep.1.i21 = getelementptr %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i22 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %scevgep.1.i21, align 4 ; [#uses=1]
+ store float %5, float* %scevgep4.1.i22, align 4
+ %scevgep.2.i23 = getelementptr %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i24 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %scevgep.2.i23, align 4 ; [#uses=1]
+ store float %6, float* %scevgep4.2.i24, align 4
+ %scevgep.3.i25 = getelementptr %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i26 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %7 = load float* %scevgep.3.i25, align 4 ; [#uses=1]
+ store float %7, float* %scevgep4.3.i26, align 4
+ %scevgep.i27 = getelementptr %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i28 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %scevgep.i27, align 4 ; [#uses=1]
+ store float %8, float* %scevgep4.i28, align 4
+ %scevgep.1.i29 = getelementptr %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i30 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %scevgep.1.i29, align 4 ; [#uses=1]
+ store float %9, float* %scevgep4.1.i30, align 4
+ %scevgep.2.i31 = getelementptr %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i32 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %scevgep.2.i31, align 4 ; [#uses=1]
+ store float %10, float* %scevgep4.2.i32, align 4
+ %scevgep.3.i33 = getelementptr %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i34 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %scevgep.3.i33, align 4 ; [#uses=1]
+ store float %11, float* %scevgep4.3.i34, align 4
+ %12 = getelementptr inbounds %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 3 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 %13, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 4 ; [#uses=1]
+ %16 = load i32* %15, align 4 ; [#uses=1]
+ %17 = icmp ne i32 %16, 0 ; [#uses=1]
+ %18 = zext i1 %17 to i8 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ store i8 %18, i8* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 5 ; [#uses=1]
+ %21 = load i32* %20, align 4 ; [#uses=10]
+ %22 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 1 ; [#uses=3]
+ %23 = load i32* %22, align 4 ; [#uses=3]
+ %24 = icmp sgt i32 %23, %21 ; [#uses=1]
+ %.not = xor i1 %24, true ; [#uses=1]
+ %25 = icmp slt i32 %23, %21 ; [#uses=1]
+ %or.cond = and i1 %.not, %25 ; [#uses=1]
+ br i1 %or.cond, label %bb4.i36, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE6resizeEiRKS0_.exit
+
+bb4.i36: ; preds = %entry
+ %26 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 2 ; [#uses=2]
+ %27 = load i32* %26, align 4 ; [#uses=1]
+ %28 = icmp slt i32 %27, %21 ; [#uses=1]
+ br i1 %28, label %bb.i.i37, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE6resizeEiRKS0_.exit
+
+bb.i.i37: ; preds = %bb4.i36
+ %29 = icmp eq i32 %21, 0 ; [#uses=1]
+ br i1 %29, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i, label %bb.i2.i.i40
+
+bb.i2.i.i40: ; preds = %bb.i.i37
+ %30 = shl i32 %21, 6 ; [#uses=1]
+ %31 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %30, i32 16) ; [#uses=1]
+ %phitmp.i.i38 = bitcast i8* %31 to %struct.btOptimizedBvhNode* ; [#uses=1]
+ %.pre.i39 = load i32* %22, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i40, %bb.i.i37
+ %32 = phi i32 [ %.pre.i39, %bb.i2.i.i40 ], [ %23, %bb.i.i37 ] ; [#uses=2]
+ %33 = phi %struct.btOptimizedBvhNode* [ %phitmp.i.i38, %bb.i2.i.i40 ], [ null, %bb.i.i37 ] ; [#uses=2]
+ %34 = icmp sgt i32 %32, 0 ; [#uses=1]
+ br i1 %34, label %bb.nph.i.i.i41, label %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i
+
+bb.nph.i.i.i41: ; preds = %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i
+ %35 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i49
+
+bb.i4.i.i49: ; preds = %bb.i4.i.i49, %bb.nph.i.i.i41
+ %indvar.i.i.i42 = phi i32 [ 0, %bb.nph.i.i.i41 ], [ %indvar.next.i.i.i47, %bb.i4.i.i49 ] ; [#uses=3]
+ %scevgep159 = getelementptr %struct.btOptimizedBvhNode* %33, i32 %indvar.i.i.i42 ; [#uses=1]
+ %scevgep5.i.i.i44 = bitcast %struct.btOptimizedBvhNode* %scevgep159 to i8* ; [#uses=1]
+ %36 = load %struct.btOptimizedBvhNode** %35, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btOptimizedBvhNode* %36, i32 %indvar.i.i.i42 ; [#uses=1]
+ %scevgep67.i.i.i46 = bitcast %struct.btOptimizedBvhNode* %scevgep to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep5.i.i.i44, i8* %scevgep67.i.i.i46, i32 64, i32 4, i1 false) nounwind
+ %indvar.next.i.i.i47 = add i32 %indvar.i.i.i42, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i47, %32 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i49
+
+_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i: ; preds = %bb.i4.i.i49, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i
+ %37 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %38 = load %struct.btOptimizedBvhNode** %37, align 4 ; [#uses=2]
+ %39 = icmp eq %struct.btOptimizedBvhNode* %38, null ; [#uses=1]
+ br i1 %39, label %bb8.preheader.i54, label %bb.i.i.i51
+
+bb.i.i.i51: ; preds = %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i
+ %40 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %41 = load i8* %40, align 4 ; [#uses=1]
+ %toBool.i.i.i50 = icmp eq i8 %41, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i50, label %bb2.i.i.i53, label %bb1.i.i.i52
+
+bb1.i.i.i52: ; preds = %bb.i.i.i51
+ %42 = bitcast %struct.btOptimizedBvhNode* %38 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %42)
+ br label %bb2.i.i.i53
+
+bb2.i.i.i53: ; preds = %bb1.i.i.i52, %bb.i.i.i51
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %37, align 4
+ br label %bb8.preheader.i54
+
+bb8.preheader.i54: ; preds = %bb2.i.i.i53, %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i
+ %43 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %43, align 4
+ store %struct.btOptimizedBvhNode* %33, %struct.btOptimizedBvhNode** %37, align 4
+ store i32 %21, i32* %26, align 4
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE6resizeEiRKS0_.exit
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE6resizeEiRKS0_.exit: ; preds = %bb8.preheader.i54, %bb4.i36, %entry
+ store i32 %21, i32* %22, align 4
+ %44 = icmp eq i32 %21, 0 ; [#uses=1]
+ %.not238 = xor i1 %44, true ; [#uses=1]
+ %45 = icmp sgt i32 %21, 0 ; [#uses=1]
+ %or.cond239 = and i1 %.not238, %45 ; [#uses=1]
+ br i1 %or.cond239, label %bb.nph, label %bb3
+
+bb.nph: ; preds = %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE6resizeEiRKS0_.exit
+ %46 = getelementptr inbounds %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 7 ; [#uses=1]
+ %47 = load %struct.btOptimizedBvhNodeFloatData** %46, align 4 ; [#uses=11]
+ %48 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=5]
+ br label %bb1
+
+bb1: ; preds = %bb1, %bb.nph
+ %i.0150 = phi i32 [ 0, %bb.nph ], [ %65, %bb1 ] ; [#uses=23]
+ %scevgep162 = getelementptr %struct.btOptimizedBvhNodeFloatData* %47, i32 %i.0150, i32 2 ; [#uses=1]
+ %scevgep163 = getelementptr %struct.btOptimizedBvhNodeFloatData* %47, i32 %i.0150, i32 3 ; [#uses=1]
+ %scevgep164 = getelementptr %struct.btOptimizedBvhNodeFloatData* %47, i32 %i.0150, i32 4 ; [#uses=1]
+ %scevgep.i64 = getelementptr %struct.btOptimizedBvhNodeFloatData* %47, i32 %i.0150, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep.1.i66 = getelementptr %struct.btOptimizedBvhNodeFloatData* %47, i32 %i.0150, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep.2.i68 = getelementptr %struct.btOptimizedBvhNodeFloatData* %47, i32 %i.0150, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep.3.i70 = getelementptr %struct.btOptimizedBvhNodeFloatData* %47, i32 %i.0150, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep.i72 = getelementptr inbounds %struct.btOptimizedBvhNodeFloatData* %47, i32 %i.0150, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep.1.i74 = getelementptr %struct.btOptimizedBvhNodeFloatData* %47, i32 %i.0150, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep.2.i76 = getelementptr %struct.btOptimizedBvhNodeFloatData* %47, i32 %i.0150, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep.3.i78 = getelementptr %struct.btOptimizedBvhNodeFloatData* %47, i32 %i.0150, i32 0, i32 0, i32 3 ; [#uses=1]
+ %49 = load %struct.btOptimizedBvhNode** %48, align 4 ; [#uses=4]
+ %50 = load float* %scevgep.i64, align 4 ; [#uses=1]
+ %scevgep4.i65 = getelementptr %struct.btOptimizedBvhNode* %49, i32 %i.0150, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %50, float* %scevgep4.i65, align 4
+ %51 = load float* %scevgep.1.i66, align 4 ; [#uses=1]
+ %scevgep4.1.i67 = getelementptr %struct.btOptimizedBvhNode* %49, i32 %i.0150, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %51, float* %scevgep4.1.i67, align 4
+ %52 = load float* %scevgep.2.i68, align 4 ; [#uses=1]
+ %scevgep4.2.i69 = getelementptr %struct.btOptimizedBvhNode* %49, i32 %i.0150, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %52, float* %scevgep4.2.i69, align 4
+ %53 = load float* %scevgep.3.i70, align 4 ; [#uses=1]
+ %scevgep4.3.i71 = getelementptr %struct.btOptimizedBvhNode* %49, i32 %i.0150, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %53, float* %scevgep4.3.i71, align 4
+ %54 = load %struct.btOptimizedBvhNode** %48, align 4 ; [#uses=4]
+ %55 = load float* %scevgep.i72, align 4 ; [#uses=1]
+ %scevgep4.i73 = getelementptr inbounds %struct.btOptimizedBvhNode* %54, i32 %i.0150, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %55, float* %scevgep4.i73, align 4
+ %56 = load float* %scevgep.1.i74, align 4 ; [#uses=1]
+ %scevgep4.1.i75 = getelementptr %struct.btOptimizedBvhNode* %54, i32 %i.0150, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %56, float* %scevgep4.1.i75, align 4
+ %57 = load float* %scevgep.2.i76, align 4 ; [#uses=1]
+ %scevgep4.2.i77 = getelementptr %struct.btOptimizedBvhNode* %54, i32 %i.0150, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %57, float* %scevgep4.2.i77, align 4
+ %58 = load float* %scevgep.3.i78, align 4 ; [#uses=1]
+ %scevgep4.3.i79 = getelementptr %struct.btOptimizedBvhNode* %54, i32 %i.0150, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %58, float* %scevgep4.3.i79, align 4
+ %59 = load %struct.btOptimizedBvhNode** %48, align 4 ; [#uses=1]
+ %60 = load i32* %scevgep162, align 4 ; [#uses=1]
+ %scevgep183 = getelementptr %struct.btOptimizedBvhNode* %59, i32 %i.0150, i32 2 ; [#uses=1]
+ store i32 %60, i32* %scevgep183, align 4
+ %61 = load %struct.btOptimizedBvhNode** %48, align 4 ; [#uses=1]
+ %62 = load i32* %scevgep163, align 4 ; [#uses=1]
+ %scevgep184 = getelementptr %struct.btOptimizedBvhNode* %61, i32 %i.0150, i32 3 ; [#uses=1]
+ store i32 %62, i32* %scevgep184, align 4
+ %63 = load %struct.btOptimizedBvhNode** %48, align 4 ; [#uses=1]
+ %64 = load i32* %scevgep164, align 4 ; [#uses=1]
+ %scevgep185 = getelementptr %struct.btOptimizedBvhNode* %63, i32 %i.0150, i32 4 ; [#uses=1]
+ store i32 %64, i32* %scevgep185, align 4
+ %65 = add nsw i32 %i.0150, 1 ; [#uses=2]
+ %exitcond161 = icmp eq i32 %65, %21 ; [#uses=1]
+ br i1 %exitcond161, label %bb3, label %bb1
+
+bb3: ; preds = %bb1, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE6resizeEiRKS0_.exit
+ %66 = getelementptr inbounds %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 6 ; [#uses=1]
+ %67 = load i32* %66, align 4 ; [#uses=7]
+ %68 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 1 ; [#uses=2]
+ %69 = load i32* %68, align 4 ; [#uses=3]
+ %70 = icmp slt i32 %69, %67 ; [#uses=1]
+ br i1 %70, label %bb.nph.i81, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit
+
+bb.nph.i81: ; preds = %bb3
+ %71 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(%struct.QuantizedNodeArray* %71, i32 %67) inlinehint
+ %72 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %tmp.i80 = sub i32 %67, %69 ; [#uses=1]
+ br label %bb7.i89
+
+bb7.i89: ; preds = %bb7.i89, %bb.nph.i81
+ %indvar.i82 = phi i32 [ 0, %bb.nph.i81 ], [ %indvar.next.i87, %bb7.i89 ] ; [#uses=2]
+ %tmp = add i32 %69, %indvar.i82 ; [#uses=1]
+ %73 = load %struct.BT_QUANTIZED_BVH_NODE** %72, align 4 ; [#uses=1]
+ %scevgep15.i84 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %73, i32 %tmp, i32 0, i32 0 ; [#uses=1]
+ %indvar.next.i87 = add i32 %indvar.i82, 1 ; [#uses=2]
+ %exitcond228 = icmp eq i32 %indvar.next.i87, %tmp.i80 ; [#uses=1]
+ %scevgep15.i84237 = bitcast i16* %scevgep15.i84 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %scevgep15.i84237, i8 0, i64 16, i32 4, i1 false)
+ br i1 %exitcond228, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit, label %bb7.i89
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit: ; preds = %bb7.i89, %bb3
+ store i32 %67, i32* %68, align 4
+ %74 = icmp eq i32 %67, 0 ; [#uses=1]
+ %.not240 = xor i1 %74, true ; [#uses=1]
+ %75 = icmp sgt i32 %67, 0 ; [#uses=1]
+ %or.cond241 = and i1 %.not240, %75 ; [#uses=1]
+ br i1 %or.cond241, label %bb.nph154, label %bb10
+
+bb.nph154: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit
+ %76 = getelementptr inbounds %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 8 ; [#uses=1]
+ %77 = load %struct.BT_QUANTIZED_BVH_NODE** %76, align 4 ; [#uses=7]
+ %78 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=7]
+ br label %bb8
+
+bb8: ; preds = %bb8, %bb.nph154
+ %i7.0153 = phi i32 [ 0, %bb.nph154 ], [ %93, %bb8 ] ; [#uses=15]
+ %scevgep195 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %77, i32 %i7.0153, i32 2 ; [#uses=1]
+ %scevgep196 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %77, i32 %i7.0153, i32 1, i32 0 ; [#uses=1]
+ %scevgep197 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %77, i32 %i7.0153, i32 1, i32 1 ; [#uses=1]
+ %scevgep198 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %77, i32 %i7.0153, i32 1, i32 2 ; [#uses=1]
+ %scevgep199200 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %77, i32 %i7.0153, i32 0, i32 0 ; [#uses=1]
+ %scevgep201 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %77, i32 %i7.0153, i32 0, i32 1 ; [#uses=1]
+ %scevgep202 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %77, i32 %i7.0153, i32 0, i32 2 ; [#uses=1]
+ %79 = load %struct.BT_QUANTIZED_BVH_NODE** %78, align 4 ; [#uses=1]
+ %80 = load i32* %scevgep195, align 4 ; [#uses=1]
+ %scevgep187 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %79, i32 %i7.0153, i32 2 ; [#uses=1]
+ store i32 %80, i32* %scevgep187, align 4
+ %81 = load %struct.BT_QUANTIZED_BVH_NODE** %78, align 4 ; [#uses=1]
+ %82 = load i16* %scevgep196, align 2 ; [#uses=1]
+ %scevgep188 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %81, i32 %i7.0153, i32 1, i32 0 ; [#uses=1]
+ store i16 %82, i16* %scevgep188, align 2
+ %83 = load %struct.BT_QUANTIZED_BVH_NODE** %78, align 4 ; [#uses=1]
+ %84 = load i16* %scevgep197, align 2 ; [#uses=1]
+ %scevgep189 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %83, i32 %i7.0153, i32 1, i32 1 ; [#uses=1]
+ store i16 %84, i16* %scevgep189, align 2
+ %85 = load %struct.BT_QUANTIZED_BVH_NODE** %78, align 4 ; [#uses=1]
+ %86 = load i16* %scevgep198, align 2 ; [#uses=1]
+ %scevgep190 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %85, i32 %i7.0153, i32 1, i32 2 ; [#uses=1]
+ store i16 %86, i16* %scevgep190, align 2
+ %87 = load %struct.BT_QUANTIZED_BVH_NODE** %78, align 4 ; [#uses=1]
+ %88 = load i16* %scevgep199200, align 2 ; [#uses=1]
+ %scevgep191192 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %87, i32 %i7.0153, i32 0, i32 0 ; [#uses=1]
+ store i16 %88, i16* %scevgep191192, align 2
+ %89 = load %struct.BT_QUANTIZED_BVH_NODE** %78, align 4 ; [#uses=1]
+ %90 = load i16* %scevgep201, align 2 ; [#uses=1]
+ %scevgep193 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %89, i32 %i7.0153, i32 0, i32 1 ; [#uses=1]
+ store i16 %90, i16* %scevgep193, align 2
+ %91 = load %struct.BT_QUANTIZED_BVH_NODE** %78, align 4 ; [#uses=1]
+ %92 = load i16* %scevgep202, align 2 ; [#uses=1]
+ %scevgep194 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %91, i32 %i7.0153, i32 0, i32 2 ; [#uses=1]
+ store i16 %92, i16* %scevgep194, align 2
+ %93 = add nsw i32 %i7.0153, 1 ; [#uses=2]
+ %exitcond186 = icmp eq i32 %93, %67 ; [#uses=1]
+ br i1 %exitcond186, label %bb10, label %bb8
+
+bb10: ; preds = %bb8, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit
+ %94 = getelementptr inbounds %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 10 ; [#uses=1]
+ %95 = load i32* %94, align 4 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 11 ; [#uses=1]
+ store i32 %95, i32* %96, align 4
+ %97 = getelementptr inbounds %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 11 ; [#uses=1]
+ %98 = load i32* %97, align 4 ; [#uses=10]
+ %99 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=3]
+ %100 = load i32* %99, align 4 ; [#uses=3]
+ %101 = icmp sgt i32 %100, %98 ; [#uses=1]
+ %.not242 = xor i1 %101, true ; [#uses=1]
+ %102 = icmp slt i32 %100, %98 ; [#uses=1]
+ %or.cond243 = and i1 %.not242, %102 ; [#uses=1]
+ br i1 %or.cond243, label %bb4.i, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6resizeEiRKS0_.exit
+
+bb4.i: ; preds = %bb10
+ %103 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 2 ; [#uses=2]
+ %104 = load i32* %103, align 4 ; [#uses=1]
+ %105 = icmp slt i32 %104, %98 ; [#uses=1]
+ br i1 %105, label %bb.i.i, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6resizeEiRKS0_.exit
+
+bb.i.i: ; preds = %bb4.i
+ %106 = icmp eq i32 %98, 0 ; [#uses=1]
+ br i1 %106, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %107 = shl i32 %98, 5 ; [#uses=1]
+ %108 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %107, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %108 to %struct.btBvhSubtreeInfo* ; [#uses=1]
+ %.pre.i = load i32* %99, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %109 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %100, %bb.i.i ] ; [#uses=2]
+ %110 = phi %struct.btBvhSubtreeInfo* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %111 = icmp sgt i32 %109, 0 ; [#uses=1]
+ br i1 %111, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i
+ %112 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb.i4.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb.i4.i.i ] ; [#uses=3]
+ %scevgep207 = getelementptr %struct.btBvhSubtreeInfo* %110, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep5.i.i.i = bitcast %struct.btBvhSubtreeInfo* %scevgep207 to i8* ; [#uses=1]
+ %113 = load %struct.btBvhSubtreeInfo** %112, align 4 ; [#uses=1]
+ %scevgep205 = getelementptr %struct.btBvhSubtreeInfo* %113, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep67.i.i.i = bitcast %struct.btBvhSubtreeInfo* %scevgep205 to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep5.i.i.i, i8* %scevgep67.i.i.i, i32 32, i32 4, i1 false) nounwind
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond204 = icmp eq i32 %indvar.next.i.i.i, %109 ; [#uses=1]
+ br i1 %exitcond204, label %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i: ; preds = %bb.i4.i.i, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i
+ %114 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=3]
+ %115 = load %struct.btBvhSubtreeInfo** %114, align 4 ; [#uses=2]
+ %116 = icmp eq %struct.btBvhSubtreeInfo* %115, null ; [#uses=1]
+ br i1 %116, label %bb8.preheader.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+ %117 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ %118 = load i8* %117, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %118, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %119 = bitcast %struct.btBvhSubtreeInfo* %115 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %119)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %114, align 4
+ br label %bb8.preheader.i
+
+bb8.preheader.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+ %120 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ store i8 1, i8* %120, align 4
+ store %struct.btBvhSubtreeInfo* %110, %struct.btBvhSubtreeInfo** %114, align 4
+ store i32 %98, i32* %103, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6resizeEiRKS0_.exit
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6resizeEiRKS0_.exit: ; preds = %bb8.preheader.i, %bb4.i, %bb10
+ store i32 %98, i32* %99, align 4
+ %121 = icmp eq i32 %98, 0 ; [#uses=1]
+ %.not244 = xor i1 %121, true ; [#uses=1]
+ %122 = icmp sgt i32 %98, 0 ; [#uses=1]
+ %or.cond245 = and i1 %.not244, %122 ; [#uses=1]
+ br i1 %or.cond245, label %bb.nph157, label %return
+
+bb.nph157: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6resizeEiRKS0_.exit
+ %123 = getelementptr inbounds %struct.btQuantizedBvhFloatData* %quantizedBvhFloatData, i32 0, i32 9 ; [#uses=1]
+ %124 = load %struct.btBvhSubtreeInfoData** %123, align 4 ; [#uses=8]
+ %125 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=8]
+ br label %bb15
+
+bb15: ; preds = %bb15, %bb.nph157
+ %i14.0156 = phi i32 [ 0, %bb.nph157 ], [ %142, %bb15 ] ; [#uses=17]
+ %scevgep219220 = getelementptr inbounds %struct.btBvhSubtreeInfoData* %124, i32 %i14.0156, i32 0 ; [#uses=1]
+ %scevgep221 = getelementptr %struct.btBvhSubtreeInfoData* %124, i32 %i14.0156, i32 1 ; [#uses=1]
+ %scevgep222 = getelementptr %struct.btBvhSubtreeInfoData* %124, i32 %i14.0156, i32 3, i32 0 ; [#uses=1]
+ %scevgep223 = getelementptr %struct.btBvhSubtreeInfoData* %124, i32 %i14.0156, i32 3, i32 1 ; [#uses=1]
+ %scevgep224 = getelementptr %struct.btBvhSubtreeInfoData* %124, i32 %i14.0156, i32 3, i32 2 ; [#uses=1]
+ %scevgep225 = getelementptr %struct.btBvhSubtreeInfoData* %124, i32 %i14.0156, i32 2, i32 0 ; [#uses=1]
+ %scevgep226 = getelementptr %struct.btBvhSubtreeInfoData* %124, i32 %i14.0156, i32 2, i32 1 ; [#uses=1]
+ %scevgep227 = getelementptr %struct.btBvhSubtreeInfoData* %124, i32 %i14.0156, i32 2, i32 2 ; [#uses=1]
+ %126 = load %struct.btBvhSubtreeInfo** %125, align 4 ; [#uses=1]
+ %127 = load i16* %scevgep222, align 2 ; [#uses=1]
+ %scevgep210 = getelementptr %struct.btBvhSubtreeInfo* %126, i32 %i14.0156, i32 1, i32 0 ; [#uses=1]
+ store i16 %127, i16* %scevgep210, align 2
+ %128 = load %struct.btBvhSubtreeInfo** %125, align 4 ; [#uses=1]
+ %129 = load i16* %scevgep223, align 2 ; [#uses=1]
+ %scevgep211 = getelementptr %struct.btBvhSubtreeInfo* %128, i32 %i14.0156, i32 1, i32 1 ; [#uses=1]
+ store i16 %129, i16* %scevgep211, align 2
+ %130 = load %struct.btBvhSubtreeInfo** %125, align 4 ; [#uses=1]
+ %131 = load i16* %scevgep224, align 2 ; [#uses=1]
+ %scevgep212 = getelementptr %struct.btBvhSubtreeInfo* %130, i32 %i14.0156, i32 1, i32 2 ; [#uses=1]
+ store i16 %131, i16* %scevgep212, align 2
+ %132 = load %struct.btBvhSubtreeInfo** %125, align 4 ; [#uses=1]
+ %133 = load i16* %scevgep225, align 2 ; [#uses=1]
+ %scevgep213214 = getelementptr inbounds %struct.btBvhSubtreeInfo* %132, i32 %i14.0156, i32 0, i32 0 ; [#uses=1]
+ store i16 %133, i16* %scevgep213214, align 2
+ %134 = load %struct.btBvhSubtreeInfo** %125, align 4 ; [#uses=1]
+ %135 = load i16* %scevgep226, align 2 ; [#uses=1]
+ %scevgep215 = getelementptr %struct.btBvhSubtreeInfo* %134, i32 %i14.0156, i32 0, i32 1 ; [#uses=1]
+ store i16 %135, i16* %scevgep215, align 2
+ %136 = load %struct.btBvhSubtreeInfo** %125, align 4 ; [#uses=1]
+ %137 = load i16* %scevgep227, align 2 ; [#uses=1]
+ %scevgep216 = getelementptr %struct.btBvhSubtreeInfo* %136, i32 %i14.0156, i32 0, i32 2 ; [#uses=1]
+ store i16 %137, i16* %scevgep216, align 2
+ %138 = load %struct.btBvhSubtreeInfo** %125, align 4 ; [#uses=1]
+ %139 = load i32* %scevgep219220, align 4 ; [#uses=1]
+ %scevgep217 = getelementptr %struct.btBvhSubtreeInfo* %138, i32 %i14.0156, i32 2 ; [#uses=1]
+ store i32 %139, i32* %scevgep217, align 4
+ %140 = load %struct.btBvhSubtreeInfo** %125, align 4 ; [#uses=1]
+ %141 = load i32* %scevgep221, align 4 ; [#uses=1]
+ %scevgep218 = getelementptr %struct.btBvhSubtreeInfo* %140, i32 %i14.0156, i32 3 ; [#uses=1]
+ store i32 %141, i32* %scevgep218, align 4
+ %142 = add nsw i32 %i14.0156, 1 ; [#uses=2]
+ %exitcond209 = icmp eq i32 %142, %98 ; [#uses=1]
+ br i1 %exitcond209, label %return, label %bb15
+
+return: ; preds = %bb15, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6resizeEiRKS0_.exit
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN14btQuantizedBvh20updateSubtreeHeadersEii(%struct.btQuantizedBvh* nocapture %this, i32 %leftChildNodexIndex, i32 %rightChildNodexIndex) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %1 = load %struct.BT_QUANTIZED_BVH_NODE** %0, align 4 ; [#uses=14]
+ %2 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %leftChildNodexIndex, i32 2 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = sub nsw i32 0, %3 ; [#uses=1]
+ %toBool = icmp slt i32 %3, 0 ; [#uses=2]
+ %. = select i1 %toBool, i32 %4, i32 1 ; [#uses=4]
+ %iftmp.222.0 = select i1 %toBool, i32 %., i32 %. ; [#uses=0]
+ %5 = shl i32 %., 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %rightChildNodexIndex, i32 2 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=2]
+ %8 = sub nsw i32 0, %7 ; [#uses=1]
+ %toBool3 = icmp slt i32 %7, 0 ; [#uses=2]
+ %.104 = select i1 %toBool3, i32 %8, i32 1 ; [#uses=4]
+ %iftmp.223.0 = select i1 %toBool3, i32 %.104, i32 %.104 ; [#uses=0]
+ %9 = shl i32 %.104, 4 ; [#uses=1]
+ %10 = icmp slt i32 %5, 2049 ; [#uses=1]
+ br i1 %10, label %bb7, label %bb8
+
+bb7: ; preds = %entry
+ %11 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=4]
+ %12 = load i32* %11, align 4 ; [#uses=14]
+ %13 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 2 ; [#uses=2]
+ %14 = load i32* %13, align 4 ; [#uses=2]
+ %15 = icmp eq i32 %14, %12 ; [#uses=1]
+ br i1 %15, label %bb.i16, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit38
+
+bb.i16: ; preds = %bb7
+ %16 = icmp eq i32 %12, 0 ; [#uses=1]
+ %17 = shl i32 %12, 1 ; [#uses=1]
+ %iftmp.322.0.i.i15 = select i1 %16, i32 1, i32 %17 ; [#uses=4]
+ %18 = icmp slt i32 %14, %iftmp.322.0.i.i15 ; [#uses=1]
+ br i1 %18, label %bb.i.i17, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit38
+
+bb.i.i17: ; preds = %bb.i16
+ %19 = icmp eq i32 %iftmp.322.0.i.i15, 0 ; [#uses=1]
+ br i1 %19, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i21, label %bb.i2.i.i20
+
+bb.i2.i.i20: ; preds = %bb.i.i17
+ %20 = shl i32 %iftmp.322.0.i.i15, 5 ; [#uses=1]
+ %21 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %20, i32 16) ; [#uses=1]
+ %phitmp.i.i18 = bitcast i8* %21 to %struct.btBvhSubtreeInfo* ; [#uses=1]
+ %.pre.i19 = load i32* %11, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i21
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i21: ; preds = %bb.i2.i.i20, %bb.i.i17
+ %22 = phi i32 [ %.pre.i19, %bb.i2.i.i20 ], [ %12, %bb.i.i17 ] ; [#uses=2]
+ %23 = phi %struct.btBvhSubtreeInfo* [ %phitmp.i.i18, %bb.i2.i.i20 ], [ null, %bb.i.i17 ] ; [#uses=2]
+ %24 = icmp sgt i32 %22, 0 ; [#uses=1]
+ br i1 %24, label %bb.nph.i.i.i22, label %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i31
+
+bb.nph.i.i.i22: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i21
+ %25 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i30
+
+bb.i4.i.i30: ; preds = %bb.i4.i.i30, %bb.nph.i.i.i22
+ %indvar.i.i.i23 = phi i32 [ 0, %bb.nph.i.i.i22 ], [ %indvar.next.i.i.i28, %bb.i4.i.i30 ] ; [#uses=3]
+ %scevgep102 = getelementptr %struct.btBvhSubtreeInfo* %23, i32 %indvar.i.i.i23 ; [#uses=1]
+ %scevgep5.i.i.i25 = bitcast %struct.btBvhSubtreeInfo* %scevgep102 to i8* ; [#uses=1]
+ %26 = load %struct.btBvhSubtreeInfo** %25, align 4 ; [#uses=1]
+ %scevgep100 = getelementptr %struct.btBvhSubtreeInfo* %26, i32 %indvar.i.i.i23 ; [#uses=1]
+ %scevgep67.i.i.i27 = bitcast %struct.btBvhSubtreeInfo* %scevgep100 to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep5.i.i.i25, i8* %scevgep67.i.i.i27, i32 32, i32 4, i1 false) nounwind
+ %indvar.next.i.i.i28 = add i32 %indvar.i.i.i23, 1 ; [#uses=2]
+ %exitcond99 = icmp eq i32 %indvar.next.i.i.i28, %22 ; [#uses=1]
+ br i1 %exitcond99, label %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i31, label %bb.i4.i.i30
+
+_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i31: ; preds = %bb.i4.i.i30, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i21
+ %27 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=3]
+ %28 = load %struct.btBvhSubtreeInfo** %27, align 4 ; [#uses=2]
+ %29 = icmp eq %struct.btBvhSubtreeInfo* %28, null ; [#uses=1]
+ br i1 %29, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i37, label %bb.i.i.i33
+
+bb.i.i.i33: ; preds = %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i31
+ %30 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ %31 = load i8* %30, align 4 ; [#uses=1]
+ %toBool.i.i.i32 = icmp eq i8 %31, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i32, label %bb2.i.i.i35, label %bb1.i.i.i34
+
+bb1.i.i.i34: ; preds = %bb.i.i.i33
+ %32 = bitcast %struct.btBvhSubtreeInfo* %28 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %32)
+ br label %bb2.i.i.i35
+
+bb2.i.i.i35: ; preds = %bb1.i.i.i34, %bb.i.i.i33
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %27, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i37
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i37: ; preds = %bb2.i.i.i35, %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i31
+ %33 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ store i8 1, i8* %33, align 4
+ store %struct.btBvhSubtreeInfo* %23, %struct.btBvhSubtreeInfo** %27, align 4
+ store i32 %iftmp.322.0.i.i15, i32* %13, align 4
+ %.pre6.i36 = load i32* %11, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit38
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit38: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i37, %bb.i16, %bb7
+ %34 = phi i32 [ %.pre6.i36, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i37 ], [ %12, %bb7 ], [ %12, %bb.i16 ] ; [#uses=1]
+ %35 = add nsw i32 %34, 1 ; [#uses=1]
+ store i32 %35, i32* %11, align 4
+ %36 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ %37 = load %struct.btBvhSubtreeInfo** %36, align 4 ; [#uses=8]
+ %38 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %leftChildNodexIndex, i32 0, i32 0 ; [#uses=1]
+ %39 = load i16* %38, align 2 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btBvhSubtreeInfo* %37, i32 %12, i32 0, i32 0 ; [#uses=1]
+ store i16 %39, i16* %40, align 2
+ %41 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %leftChildNodexIndex, i32 0, i32 1 ; [#uses=1]
+ %42 = load i16* %41, align 2 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btBvhSubtreeInfo* %37, i32 %12, i32 0, i32 1 ; [#uses=1]
+ store i16 %42, i16* %43, align 2
+ %44 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %leftChildNodexIndex, i32 0, i32 2 ; [#uses=1]
+ %45 = load i16* %44, align 2 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btBvhSubtreeInfo* %37, i32 %12, i32 0, i32 2 ; [#uses=1]
+ store i16 %45, i16* %46, align 2
+ %47 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %leftChildNodexIndex, i32 1, i32 0 ; [#uses=1]
+ %48 = load i16* %47, align 2 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btBvhSubtreeInfo* %37, i32 %12, i32 1, i32 0 ; [#uses=1]
+ store i16 %48, i16* %49, align 2
+ %50 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %leftChildNodexIndex, i32 1, i32 1 ; [#uses=1]
+ %51 = load i16* %50, align 2 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btBvhSubtreeInfo* %37, i32 %12, i32 1, i32 1 ; [#uses=1]
+ store i16 %51, i16* %52, align 2
+ %53 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %leftChildNodexIndex, i32 1, i32 2 ; [#uses=1]
+ %54 = load i16* %53, align 2 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btBvhSubtreeInfo* %37, i32 %12, i32 1, i32 2 ; [#uses=1]
+ store i16 %54, i16* %55, align 2
+ %56 = getelementptr inbounds %struct.btBvhSubtreeInfo* %37, i32 %12, i32 2 ; [#uses=1]
+ store i32 %leftChildNodexIndex, i32* %56, align 4
+ %57 = getelementptr inbounds %struct.btBvhSubtreeInfo* %37, i32 %12, i32 3 ; [#uses=1]
+ store i32 %., i32* %57, align 4
+ br label %bb8
+
+bb8: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit38, %entry
+ %58 = icmp slt i32 %9, 2049 ; [#uses=1]
+ br i1 %58, label %bb9, label %bb11
+
+bb9: ; preds = %bb8
+ %59 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=4]
+ %60 = load i32* %59, align 4 ; [#uses=14]
+ %61 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 2 ; [#uses=2]
+ %62 = load i32* %61, align 4 ; [#uses=2]
+ %63 = icmp eq i32 %62, %60 ; [#uses=1]
+ br i1 %63, label %bb.i, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit
+
+bb.i: ; preds = %bb9
+ %64 = icmp eq i32 %60, 0 ; [#uses=1]
+ %65 = shl i32 %60, 1 ; [#uses=1]
+ %iftmp.322.0.i.i = select i1 %64, i32 1, i32 %65 ; [#uses=4]
+ %66 = icmp slt i32 %62, %iftmp.322.0.i.i ; [#uses=1]
+ br i1 %66, label %bb.i.i, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit
+
+bb.i.i: ; preds = %bb.i
+ %67 = icmp eq i32 %iftmp.322.0.i.i, 0 ; [#uses=1]
+ br i1 %67, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %68 = shl i32 %iftmp.322.0.i.i, 5 ; [#uses=1]
+ %69 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %68, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %69 to %struct.btBvhSubtreeInfo* ; [#uses=1]
+ %.pre.i = load i32* %59, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %70 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %60, %bb.i.i ] ; [#uses=2]
+ %71 = phi %struct.btBvhSubtreeInfo* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %72 = icmp sgt i32 %70, 0 ; [#uses=1]
+ br i1 %72, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i
+ %73 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb.i4.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb.i4.i.i ] ; [#uses=3]
+ %scevgep97 = getelementptr %struct.btBvhSubtreeInfo* %71, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep5.i.i.i = bitcast %struct.btBvhSubtreeInfo* %scevgep97 to i8* ; [#uses=1]
+ %74 = load %struct.btBvhSubtreeInfo** %73, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btBvhSubtreeInfo* %74, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep67.i.i.i = bitcast %struct.btBvhSubtreeInfo* %scevgep to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep5.i.i.i, i8* %scevgep67.i.i.i, i32 32, i32 4, i1 false) nounwind
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %70 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i: ; preds = %bb.i4.i.i, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i
+ %75 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=3]
+ %76 = load %struct.btBvhSubtreeInfo** %75, align 4 ; [#uses=2]
+ %77 = icmp eq %struct.btBvhSubtreeInfo* %76, null ; [#uses=1]
+ br i1 %77, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+ %78 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ %79 = load i8* %78, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %79, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %80 = bitcast %struct.btBvhSubtreeInfo* %76 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %80)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %75, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+ %81 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ store i8 1, i8* %81, align 4
+ store %struct.btBvhSubtreeInfo* %71, %struct.btBvhSubtreeInfo** %75, align 4
+ store i32 %iftmp.322.0.i.i, i32* %61, align 4
+ %.pre6.i = load i32* %59, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i, %bb.i, %bb9
+ %82 = phi i32 [ %.pre6.i, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i ], [ %60, %bb9 ], [ %60, %bb.i ] ; [#uses=1]
+ %83 = add nsw i32 %82, 1 ; [#uses=1]
+ store i32 %83, i32* %59, align 4
+ %84 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ %85 = load %struct.btBvhSubtreeInfo** %84, align 4 ; [#uses=8]
+ %86 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %rightChildNodexIndex, i32 0, i32 0 ; [#uses=1]
+ %87 = load i16* %86, align 2 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btBvhSubtreeInfo* %85, i32 %60, i32 0, i32 0 ; [#uses=1]
+ store i16 %87, i16* %88, align 2
+ %89 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %rightChildNodexIndex, i32 0, i32 1 ; [#uses=1]
+ %90 = load i16* %89, align 2 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btBvhSubtreeInfo* %85, i32 %60, i32 0, i32 1 ; [#uses=1]
+ store i16 %90, i16* %91, align 2
+ %92 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %rightChildNodexIndex, i32 0, i32 2 ; [#uses=1]
+ %93 = load i16* %92, align 2 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btBvhSubtreeInfo* %85, i32 %60, i32 0, i32 2 ; [#uses=1]
+ store i16 %93, i16* %94, align 2
+ %95 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %rightChildNodexIndex, i32 1, i32 0 ; [#uses=1]
+ %96 = load i16* %95, align 2 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btBvhSubtreeInfo* %85, i32 %60, i32 1, i32 0 ; [#uses=1]
+ store i16 %96, i16* %97, align 2
+ %98 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %rightChildNodexIndex, i32 1, i32 1 ; [#uses=1]
+ %99 = load i16* %98, align 2 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btBvhSubtreeInfo* %85, i32 %60, i32 1, i32 1 ; [#uses=1]
+ store i16 %99, i16* %100, align 2
+ %101 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %rightChildNodexIndex, i32 1, i32 2 ; [#uses=1]
+ %102 = load i16* %101, align 2 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btBvhSubtreeInfo* %85, i32 %60, i32 1, i32 2 ; [#uses=1]
+ store i16 %102, i16* %103, align 2
+ %104 = getelementptr inbounds %struct.btBvhSubtreeInfo* %85, i32 %60, i32 2 ; [#uses=1]
+ store i32 %rightChildNodexIndex, i32* %104, align 4
+ %105 = getelementptr inbounds %struct.btBvhSubtreeInfo* %85, i32 %60, i32 3 ; [#uses=1]
+ store i32 %.104, i32* %105, align 4
+ br label %bb11
+
+bb11: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit, %bb8
+ %106 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=1]
+ %107 = load i32* %106, align 4 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 13 ; [#uses=1]
+ store i32 %107, i32* %108, align 4
+ ret void
+}
+
+; [#uses=4]
+define void @_ZN14btQuantizedBvh9buildTreeEii(%struct.btQuantizedBvh* %this, i32 %startIndex, i32 %endIndex) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = sub nsw i32 %endIndex, %startIndex ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 5 ; [#uses=10]
+ %4 = load i32* %3, align 4 ; [#uses=9]
+ %5 = icmp eq i32 %2, 1 ; [#uses=1]
+ br i1 %5, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ %7 = load i8* %6, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %7, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %bb
+ %8 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %9 = load %struct.BT_QUANTIZED_BVH_NODE** %8, align 4 ; [#uses=7]
+ %10 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=1]
+ %11 = load %struct.BT_QUANTIZED_BVH_NODE** %10, align 4 ; [#uses=7]
+ %12 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %9, i32 %4, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %startIndex, i32 0, i32 0 ; [#uses=1]
+ %14 = load i16* %13, align 4 ; [#uses=1]
+ store i16 %14, i16* %12, align 4
+ %15 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %9, i32 %4, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %startIndex, i32 0, i32 1 ; [#uses=1]
+ %17 = load i16* %16, align 2 ; [#uses=1]
+ store i16 %17, i16* %15, align 2
+ %18 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %9, i32 %4, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %startIndex, i32 0, i32 2 ; [#uses=1]
+ %20 = load i16* %19, align 4 ; [#uses=1]
+ store i16 %20, i16* %18, align 4
+ %21 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %9, i32 %4, i32 1, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %startIndex, i32 1, i32 0 ; [#uses=1]
+ %23 = load i16* %22, align 2 ; [#uses=1]
+ store i16 %23, i16* %21, align 2
+ %24 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %9, i32 %4, i32 1, i32 1 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %startIndex, i32 1, i32 1 ; [#uses=1]
+ %26 = load i16* %25, align 2 ; [#uses=1]
+ store i16 %26, i16* %24, align 2
+ %27 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %9, i32 %4, i32 1, i32 2 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %startIndex, i32 1, i32 2 ; [#uses=1]
+ %29 = load i16* %28, align 2 ; [#uses=1]
+ store i16 %29, i16* %27, align 2
+ %30 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %9, i32 %4, i32 2 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %11, i32 %startIndex, i32 2 ; [#uses=1]
+ %32 = load i32* %31, align 4 ; [#uses=1]
+ store i32 %32, i32* %30, align 4
+ br label %_ZN14btQuantizedBvh30assignInternalNodeFromLeafNodeEii.exit
+
+bb1.i: ; preds = %bb
+ %33 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ %34 = load %struct.btOptimizedBvhNode** %33, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btOptimizedBvhNode* %34, i32 %4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=1]
+ %37 = load %struct.btOptimizedBvhNode** %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btOptimizedBvhNode* %37, i32 %startIndex ; [#uses=1]
+ %39 = bitcast %struct.btOptimizedBvhNode* %35 to i8* ; [#uses=1]
+ %40 = bitcast %struct.btOptimizedBvhNode* %38 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %39, i8* %40, i32 64, i32 4, i1 false) nounwind
+ br label %_ZN14btQuantizedBvh30assignInternalNodeFromLeafNodeEii.exit
+
+_ZN14btQuantizedBvh30assignInternalNodeFromLeafNodeEii.exit: ; preds = %bb1.i, %bb.i
+ %41 = load i32* %3, align 4 ; [#uses=1]
+ %42 = add nsw i32 %41, 1 ; [#uses=1]
+ store i32 %42, i32* %3, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %43 = call i32 @_ZN14btQuantizedBvh17calcSplittingAxisEii(%struct.btQuantizedBvh* %this, i32 %startIndex, i32 %endIndex) ; [#uses=1]
+ %44 = call i32 @_ZN14btQuantizedBvh25sortAndCalcSplittingIndexEiii(%struct.btQuantizedBvh* %this, i32 %startIndex, i32 %endIndex, i32 %43) ; [#uses=2]
+ %45 = load i32* %3, align 4 ; [#uses=9]
+ %46 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=5]
+ %47 = load i8* %46, align 4 ; [#uses=1]
+ %toBool.i9 = icmp eq i8 %47, 0 ; [#uses=1]
+ br i1 %toBool.i9, label %bb1.i11, label %bb.i10
+
+bb.i10: ; preds = %bb1
+ %48 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %49 = load %struct.BT_QUANTIZED_BVH_NODE** %48, align 4 ; [#uses=3]
+ %50 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %49, i32 %45, i32 0, i32 0 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = fsub float %52, %54 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = fsub float %57, %59 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %65 = fsub float %62, %64 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = fmul float %55, %67 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ %71 = fmul float %60, %70 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ %74 = fmul float %65, %73 ; [#uses=1]
+ %75 = fptoui float %74 to i16 ; [#uses=1]
+ %76 = and i16 %75, -2 ; [#uses=1]
+ store i16 %76, i16* %50, align 2
+ %77 = fptoui float %71 to i16 ; [#uses=1]
+ %78 = and i16 %77, -2 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %49, i32 %45, i32 0, i32 1 ; [#uses=1]
+ store i16 %78, i16* %79, align 2
+ %80 = fptoui float %68 to i16 ; [#uses=1]
+ %81 = and i16 %80, -2 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %49, i32 %45, i32 0, i32 2 ; [#uses=1]
+ store i16 %81, i16* %82, align 2
+ br label %_ZN14btQuantizedBvh22setInternalNodeAabbMinEiRK9btVector3.exit
+
+bb1.i11: ; preds = %bb1
+ %83 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ %84 = load %struct.btOptimizedBvhNode** %83, align 4 ; [#uses=4]
+ %85 = getelementptr inbounds %struct.btOptimizedBvhNode* %84, i32 %45, i32 0, i32 0, i32 0 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ store float %87, float* %85, align 4
+ %88 = getelementptr inbounds %struct.btOptimizedBvhNode* %84, i32 %45, i32 0, i32 0, i32 1 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ store float %90, float* %88, align 4
+ %91 = getelementptr inbounds %struct.btOptimizedBvhNode* %84, i32 %45, i32 0, i32 0, i32 2 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ store float %93, float* %91, align 4
+ %94 = getelementptr inbounds %struct.btOptimizedBvhNode* %84, i32 %45, i32 0, i32 0, i32 3 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %94, align 4
+ br label %_ZN14btQuantizedBvh22setInternalNodeAabbMinEiRK9btVector3.exit
+
+_ZN14btQuantizedBvh22setInternalNodeAabbMinEiRK9btVector3.exit: ; preds = %bb1.i11, %bb.i10
+ %97 = load i32* %3, align 4 ; [#uses=7]
+ %98 = load i8* %46, align 4 ; [#uses=1]
+ %toBool.i12 = icmp eq i8 %98, 0 ; [#uses=1]
+ br i1 %toBool.i12, label %bb1.i14, label %bb.i13
+
+bb.i13: ; preds = %_ZN14btQuantizedBvh22setInternalNodeAabbMinEiRK9btVector3.exit
+ %99 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %100 = load %struct.BT_QUANTIZED_BVH_NODE** %99, align 4 ; [#uses=3]
+ %101 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %100, i32 %97, i32 1, i32 0 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %103 = load float* %102, align 4 ; [#uses=2]
+ %104 = fsub float %103, %103 ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %106 = load float* %105, align 4 ; [#uses=2]
+ %107 = fsub float %106, %106 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=2]
+ %110 = fsub float %109, %109 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ %113 = fmul float %104, %112 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=1]
+ %116 = fmul float %107, %115 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %118 = load float* %117, align 4 ; [#uses=1]
+ %119 = fmul float %110, %118 ; [#uses=1]
+ %120 = fadd float %119, 1.000000e+00 ; [#uses=1]
+ %121 = fptoui float %120 to i16 ; [#uses=1]
+ %122 = or i16 %121, 1 ; [#uses=1]
+ store i16 %122, i16* %101, align 2
+ %123 = fadd float %116, 1.000000e+00 ; [#uses=1]
+ %124 = fptoui float %123 to i16 ; [#uses=1]
+ %125 = or i16 %124, 1 ; [#uses=1]
+ %126 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %100, i32 %97, i32 1, i32 1 ; [#uses=1]
+ store i16 %125, i16* %126, align 2
+ %127 = fadd float %113, 1.000000e+00 ; [#uses=1]
+ %128 = fptoui float %127 to i16 ; [#uses=1]
+ %129 = or i16 %128, 1 ; [#uses=1]
+ %130 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %100, i32 %97, i32 1, i32 2 ; [#uses=1]
+ store i16 %129, i16* %130, align 2
+ br label %bb3.preheader
+
+bb1.i14: ; preds = %_ZN14btQuantizedBvh22setInternalNodeAabbMinEiRK9btVector3.exit
+ %131 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ %132 = load %struct.btOptimizedBvhNode** %131, align 4 ; [#uses=4]
+ %133 = getelementptr inbounds %struct.btOptimizedBvhNode* %132, i32 %97, i32 1, i32 0, i32 0 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ store float %135, float* %133, align 4
+ %136 = getelementptr inbounds %struct.btOptimizedBvhNode* %132, i32 %97, i32 1, i32 0, i32 1 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %138 = load float* %137, align 4 ; [#uses=1]
+ store float %138, float* %136, align 4
+ %139 = getelementptr inbounds %struct.btOptimizedBvhNode* %132, i32 %97, i32 1, i32 0, i32 2 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ store float %141, float* %139, align 4
+ %142 = getelementptr inbounds %struct.btOptimizedBvhNode* %132, i32 %97, i32 1, i32 0, i32 3 ; [#uses=1]
+ %143 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %144 = load float* %143, align 4 ; [#uses=1]
+ store float %144, float* %142, align 4
+ br label %bb3.preheader
+
+bb3.preheader: ; preds = %bb1.i14, %bb.i13
+ %145 = icmp slt i32 %startIndex, %endIndex ; [#uses=1]
+ br i1 %145, label %bb.nph, label %bb4
+
+bb.nph: ; preds = %bb3.preheader
+ %146 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=2]
+ %147 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=2]
+ %148 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=2]
+ %149 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=2]
+ %150 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=2]
+ %151 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %152 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %153 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %154 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %155 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=2]
+ %156 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %157 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %158 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %159 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %160 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %161 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ br label %bb2
+
+bb2: ; preds = %_ZNK14btQuantizedBvh10getAabbMinEi.exit, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %_ZNK14btQuantizedBvh10getAabbMinEi.exit ] ; [#uses=2]
+ %tmp25 = add i32 %indvar, %startIndex ; [#uses=14]
+ %162 = load i8* %46, align 4 ; [#uses=1]
+ %toBool.i15 = icmp eq i8 %162, 0 ; [#uses=1]
+ br i1 %toBool.i15, label %bb1.i20, label %bb.i19
+
+bb.i19: ; preds = %bb2
+ %163 = load %struct.BT_QUANTIZED_BVH_NODE** %155, align 4 ; [#uses=3]
+ %scevgep26 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %163, i32 %tmp25, i32 1, i32 2 ; [#uses=1]
+ %164 = load i16* %scevgep26, align 2 ; [#uses=1]
+ %165 = uitofp i16 %164 to float ; [#uses=1]
+ %166 = load float* %156, align 4 ; [#uses=1]
+ %167 = fdiv float %165, %166 ; [#uses=1]
+ %scevgep27 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %163, i32 %tmp25, i32 1, i32 1 ; [#uses=1]
+ %168 = load i16* %scevgep27, align 2 ; [#uses=1]
+ %169 = uitofp i16 %168 to float ; [#uses=1]
+ %170 = load float* %157, align 4 ; [#uses=1]
+ %171 = fdiv float %169, %170 ; [#uses=1]
+ %scevgep = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %163, i32 %tmp25, i32 1, i32 0 ; [#uses=1]
+ %172 = load i16* %scevgep, align 2 ; [#uses=1]
+ %173 = uitofp i16 %172 to float ; [#uses=1]
+ %174 = load float* %158, align 4 ; [#uses=1]
+ %175 = fdiv float %173, %174 ; [#uses=1]
+ store float 0.000000e+00, float* %150, align 4
+ %176 = load float* %159, align 4 ; [#uses=1]
+ %177 = fadd float %175, %176 ; [#uses=1]
+ store float %177, float* %147, align 8
+ %178 = load float* %160, align 4 ; [#uses=1]
+ %179 = fadd float %171, %178 ; [#uses=1]
+ store float %179, float* %148, align 4
+ %180 = load float* %161, align 4 ; [#uses=1]
+ %181 = fadd float %167, %180 ; [#uses=1]
+ store float %181, float* %149, align 8
+ %182 = load %struct.BT_QUANTIZED_BVH_NODE** %155, align 4 ; [#uses=3]
+ %scevgep34 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %182, i32 %tmp25, i32 0, i32 2 ; [#uses=1]
+ %183 = load i16* %scevgep34, align 2 ; [#uses=1]
+ %184 = uitofp i16 %183 to float ; [#uses=1]
+ %185 = load float* %156, align 4 ; [#uses=1]
+ %186 = fdiv float %184, %185 ; [#uses=1]
+ %scevgep35 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %182, i32 %tmp25, i32 0, i32 1 ; [#uses=1]
+ %187 = load i16* %scevgep35, align 2 ; [#uses=1]
+ %188 = uitofp i16 %187 to float ; [#uses=1]
+ %189 = load float* %157, align 4 ; [#uses=1]
+ %190 = fdiv float %188, %189 ; [#uses=1]
+ %scevgep3233 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %182, i32 %tmp25, i32 0, i32 0 ; [#uses=1]
+ %191 = load i16* %scevgep3233, align 2 ; [#uses=1]
+ %192 = uitofp i16 %191 to float ; [#uses=1]
+ %193 = load float* %158, align 4 ; [#uses=1]
+ %194 = fdiv float %192, %193 ; [#uses=1]
+ store float 0.000000e+00, float* %154, align 4
+ %195 = load float* %159, align 4 ; [#uses=1]
+ %196 = fadd float %194, %195 ; [#uses=1]
+ store float %196, float* %151, align 8
+ %197 = load float* %160, align 4 ; [#uses=1]
+ %198 = fadd float %190, %197 ; [#uses=1]
+ store float %198, float* %152, align 4
+ %199 = load float* %161, align 4 ; [#uses=1]
+ %200 = fadd float %186, %199 ; [#uses=1]
+ store float %200, float* %153, align 8
+ br label %_ZNK14btQuantizedBvh10getAabbMinEi.exit
+
+bb1.i20: ; preds = %bb2
+ %201 = load %struct.btOptimizedBvhNode** %146, align 4 ; [#uses=4]
+ %scevgep28 = getelementptr %struct.btOptimizedBvhNode* %201, i32 %tmp25, i32 1, i32 0, i32 0 ; [#uses=1]
+ %202 = load float* %scevgep28, align 4 ; [#uses=1]
+ store float %202, float* %147, align 8
+ %scevgep29 = getelementptr %struct.btOptimizedBvhNode* %201, i32 %tmp25, i32 1, i32 0, i32 1 ; [#uses=1]
+ %203 = load float* %scevgep29, align 4 ; [#uses=1]
+ store float %203, float* %148, align 4
+ %scevgep30 = getelementptr %struct.btOptimizedBvhNode* %201, i32 %tmp25, i32 1, i32 0, i32 2 ; [#uses=1]
+ %204 = load float* %scevgep30, align 4 ; [#uses=1]
+ store float %204, float* %149, align 8
+ %scevgep31 = getelementptr %struct.btOptimizedBvhNode* %201, i32 %tmp25, i32 1, i32 0, i32 3 ; [#uses=1]
+ %205 = load float* %scevgep31, align 4 ; [#uses=1]
+ store float %205, float* %150, align 4
+ %206 = load %struct.btOptimizedBvhNode** %146, align 4 ; [#uses=4]
+ %scevgep3637 = getelementptr inbounds %struct.btOptimizedBvhNode* %206, i32 %tmp25, i32 0, i32 0, i32 0 ; [#uses=1]
+ %207 = load float* %scevgep3637, align 4 ; [#uses=1]
+ store float %207, float* %151, align 8
+ %scevgep38 = getelementptr %struct.btOptimizedBvhNode* %206, i32 %tmp25, i32 0, i32 0, i32 1 ; [#uses=1]
+ %208 = load float* %scevgep38, align 4 ; [#uses=1]
+ store float %208, float* %152, align 4
+ %scevgep39 = getelementptr %struct.btOptimizedBvhNode* %206, i32 %tmp25, i32 0, i32 0, i32 2 ; [#uses=1]
+ %209 = load float* %scevgep39, align 4 ; [#uses=1]
+ store float %209, float* %153, align 8
+ %scevgep40 = getelementptr %struct.btOptimizedBvhNode* %206, i32 %tmp25, i32 0, i32 0, i32 3 ; [#uses=1]
+ %210 = load float* %scevgep40, align 4 ; [#uses=1]
+ store float %210, float* %154, align 4
+ br label %_ZNK14btQuantizedBvh10getAabbMinEi.exit
+
+_ZNK14btQuantizedBvh10getAabbMinEi.exit: ; preds = %bb1.i20, %bb.i19
+ %211 = load i32* %3, align 4 ; [#uses=1]
+ call void @_ZN14btQuantizedBvh21mergeInternalNodeAabbEiRK9btVector3S2_(%struct.btQuantizedBvh* %this, i32 %211, %struct.btQuadWord* %0, %struct.btQuadWord* %1)
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %2 ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb2
+
+bb4: ; preds = %_ZNK14btQuantizedBvh10getAabbMinEi.exit, %bb3.preheader
+ %212 = load i32* %3, align 4 ; [#uses=1]
+ %213 = add nsw i32 %212, 1 ; [#uses=2]
+ store i32 %213, i32* %3, align 4
+ call void @_ZN14btQuantizedBvh9buildTreeEii(%struct.btQuantizedBvh* %this, i32 %startIndex, i32 %44)
+ %214 = load i32* %3, align 4 ; [#uses=1]
+ call void @_ZN14btQuantizedBvh9buildTreeEii(%struct.btQuantizedBvh* %this, i32 %44, i32 %endIndex)
+ %215 = load i32* %3, align 4 ; [#uses=1]
+ %216 = sub nsw i32 %215, %4 ; [#uses=3]
+ %217 = load i8* %46, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %217, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1.i23, label %bb5
+
+bb5: ; preds = %bb4
+ %218 = shl i32 %216, 4 ; [#uses=1]
+ %219 = icmp sgt i32 %218, 2048 ; [#uses=1]
+ br i1 %219, label %bb7, label %bb.i22
+
+bb7: ; preds = %bb5
+ call void @_ZN14btQuantizedBvh20updateSubtreeHeadersEii(%struct.btQuantizedBvh* %this, i32 %213, i32 %214)
+ %.pre = load i8* %46, align 4 ; [#uses=1]
+ %toBool.i21 = icmp eq i8 %.pre, 0 ; [#uses=1]
+ br i1 %toBool.i21, label %bb1.i23, label %bb.i22
+
+bb.i22: ; preds = %bb7, %bb5
+ %220 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %221 = load %struct.BT_QUANTIZED_BVH_NODE** %220, align 4 ; [#uses=1]
+ %222 = sub nsw i32 0, %216 ; [#uses=1]
+ %223 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %221, i32 %45, i32 2 ; [#uses=1]
+ store i32 %222, i32* %223, align 4
+ ret void
+
+bb1.i23: ; preds = %bb7, %bb4
+ %224 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ %225 = load %struct.btOptimizedBvhNode** %224, align 4 ; [#uses=1]
+ %226 = getelementptr inbounds %struct.btOptimizedBvhNode* %225, i32 %45, i32 2 ; [#uses=1]
+ store i32 %216, i32* %226, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN14btQuantizedBvh13buildInternalEv(%struct.btQuantizedBvh* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=2]
+ store i8 1, i8* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 1 ; [#uses=2]
+ %2 = load i32* %1, align 4 ; [#uses=2]
+ %3 = shl i32 %2, 1 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 1 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=3]
+ %6 = icmp slt i32 %5, %3 ; [#uses=1]
+ br i1 %6, label %bb.nph.i, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit
+
+bb.nph.i: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(%struct.QuantizedNodeArray* %7, i32 %3) inlinehint
+ %8 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %tmp61 = sub i32 %3, %5 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb7.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb7.i ] ; [#uses=2]
+ %tmp63 = add i32 %5, %indvar.i ; [#uses=1]
+ %9 = load %struct.BT_QUANTIZED_BVH_NODE** %8, align 4 ; [#uses=1]
+ %scevgep15.i = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %9, i32 %tmp63, i32 0, i32 0 ; [#uses=1]
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond62 = icmp eq i32 %indvar.next.i, %tmp61 ; [#uses=1]
+ %scevgep15.i72 = bitcast i16* %scevgep15.i to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %scevgep15.i72, i8 0, i64 16, i32 4, i1 false)
+ br i1 %exitcond62, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit, label %bb7.i
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit: ; preds = %bb7.i, %entry
+ store i32 %3, i32* %4, align 4
+ %10 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ tail call void @_ZN14btQuantizedBvh9buildTreeEii(%struct.btQuantizedBvh* %this, i32 0, i32 %2)
+ %11 = load i8* %0, align 4 ; [#uses=1]
+ %toBool2not = icmp eq i8 %11, 0 ; [#uses=1]
+ br i1 %toBool2not, label %bb16, label %bb6
+
+bb6: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit
+ %12 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=4]
+ %13 = load i32* %12, align 4 ; [#uses=10]
+ %14 = icmp eq i32 %13, 0 ; [#uses=1]
+ br i1 %14, label %bb11, label %bb16
+
+bb11: ; preds = %bb6
+ %15 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 2 ; [#uses=2]
+ %16 = load i32* %15, align 4 ; [#uses=2]
+ %17 = icmp eq i32 %16, %13 ; [#uses=1]
+ %18 = icmp slt i32 %16, 1 ; [#uses=1]
+ %or.cond = and i1 %17, %18 ; [#uses=1]
+ br i1 %or.cond, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i: ; preds = %bb11
+ %19 = tail call i8* @_Z22btAlignedAllocInternalji(i32 32, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %19 to %struct.btBvhSubtreeInfo* ; [#uses=2]
+ %.pre.i = load i32* %12, align 4 ; [#uses=2]
+ %20 = icmp sgt i32 %.pre.i, 0 ; [#uses=1]
+ br i1 %20, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i
+ %21 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb.i4.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb.i4.i.i ] ; [#uses=3]
+ %scevgep59 = getelementptr %struct.btBvhSubtreeInfo* %phitmp.i.i, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep5.i.i.i = bitcast %struct.btBvhSubtreeInfo* %scevgep59 to i8* ; [#uses=1]
+ %22 = load %struct.btBvhSubtreeInfo** %21, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btBvhSubtreeInfo* %22, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep67.i.i.i = bitcast %struct.btBvhSubtreeInfo* %scevgep to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep5.i.i.i, i8* %scevgep67.i.i.i, i32 32, i32 4, i1 false) nounwind
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %.pre.i ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i: ; preds = %bb.i4.i.i, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i
+ %23 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=3]
+ %24 = load %struct.btBvhSubtreeInfo** %23, align 4 ; [#uses=2]
+ %25 = icmp eq %struct.btBvhSubtreeInfo* %24, null ; [#uses=1]
+ br i1 %25, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+ %26 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ %27 = load i8* %26, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %27, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %28 = bitcast %struct.btBvhSubtreeInfo* %24 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %28)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %23, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+ %29 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ store i8 1, i8* %29, align 4
+ store %struct.btBvhSubtreeInfo* %phitmp.i.i, %struct.btBvhSubtreeInfo** %23, align 4
+ store i32 1, i32* %15, align 4
+ %.pre6.i = load i32* %12, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i, %bb11
+ %30 = phi i32 [ %.pre6.i, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i ], [ 0, %bb11 ] ; [#uses=1]
+ %31 = add nsw i32 %30, 1 ; [#uses=1]
+ store i32 %31, i32* %12, align 4
+ %32 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ %33 = load %struct.btBvhSubtreeInfo** %32, align 4 ; [#uses=8]
+ %34 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=2]
+ %35 = load %struct.BT_QUANTIZED_BVH_NODE** %34, align 4 ; [#uses=6]
+ %36 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %35, i32 0, i32 0, i32 0 ; [#uses=1]
+ %37 = load i16* %36, align 2 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btBvhSubtreeInfo* %33, i32 %13, i32 0, i32 0 ; [#uses=1]
+ store i16 %37, i16* %38, align 2
+ %39 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %35, i32 0, i32 0, i32 1 ; [#uses=1]
+ %40 = load i16* %39, align 2 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btBvhSubtreeInfo* %33, i32 %13, i32 0, i32 1 ; [#uses=1]
+ store i16 %40, i16* %41, align 2
+ %42 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %35, i32 0, i32 0, i32 2 ; [#uses=1]
+ %43 = load i16* %42, align 2 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btBvhSubtreeInfo* %33, i32 %13, i32 0, i32 2 ; [#uses=1]
+ store i16 %43, i16* %44, align 2
+ %45 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %35, i32 0, i32 1, i32 0 ; [#uses=1]
+ %46 = load i16* %45, align 2 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btBvhSubtreeInfo* %33, i32 %13, i32 1, i32 0 ; [#uses=1]
+ store i16 %46, i16* %47, align 2
+ %48 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %35, i32 0, i32 1, i32 1 ; [#uses=1]
+ %49 = load i16* %48, align 2 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btBvhSubtreeInfo* %33, i32 %13, i32 1, i32 1 ; [#uses=1]
+ store i16 %49, i16* %50, align 2
+ %51 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %35, i32 0, i32 1, i32 2 ; [#uses=1]
+ %52 = load i16* %51, align 2 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btBvhSubtreeInfo* %33, i32 %13, i32 1, i32 2 ; [#uses=1]
+ store i16 %52, i16* %53, align 2
+ %54 = getelementptr inbounds %struct.btBvhSubtreeInfo* %33, i32 %13, i32 2 ; [#uses=1]
+ store i32 0, i32* %54, align 4
+ %55 = load %struct.BT_QUANTIZED_BVH_NODE** %34, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %55, i32 0, i32 2 ; [#uses=1]
+ %57 = load i32* %56, align 4 ; [#uses=2]
+ %58 = sub nsw i32 0, %57 ; [#uses=1]
+ %toBool12 = icmp slt i32 %57, 0 ; [#uses=2]
+ %. = select i1 %toBool12, i32 %58, i32 1 ; [#uses=3]
+ %iftmp.221.0 = select i1 %toBool12, i32 %., i32 %. ; [#uses=0]
+ %59 = getelementptr inbounds %struct.btBvhSubtreeInfo* %33, i32 %13, i32 3 ; [#uses=1]
+ store i32 %., i32* %59, align 4
+ br label %bb16
+
+bb16: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit, %bb6, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE6resizeEiRKS0_.exit
+ %60 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=1]
+ %61 = load i32* %60, align 4 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 13 ; [#uses=1]
+ store i32 %61, i32* %62, align 4
+ %63 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=3]
+ %64 = load %struct.BT_QUANTIZED_BVH_NODE** %63, align 4 ; [#uses=2]
+ %65 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %64, null ; [#uses=1]
+ br i1 %65, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE5clearEv.exit, label %bb.i.i18
+
+bb.i.i18: ; preds = %bb16
+ %66 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ %67 = load i8* %66, align 4 ; [#uses=1]
+ %toBool.i.i17 = icmp eq i8 %67, 0 ; [#uses=1]
+ br i1 %toBool.i.i17, label %bb2.i.i20, label %bb1.i.i19
+
+bb1.i.i19: ; preds = %bb.i.i18
+ %68 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %64 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %68)
+ br label %bb2.i.i20
+
+bb2.i.i20: ; preds = %bb1.i.i19, %bb.i.i18
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %63, align 4
+ br label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE5clearEv.exit
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE5clearEv.exit: ; preds = %bb2.i.i20, %bb16
+ %69 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %69, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %63, align 4
+ store i32 0, i32* %1, align 4
+ %70 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %70, align 4
+ %71 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=3]
+ %72 = load %struct.btOptimizedBvhNode** %71, align 4 ; [#uses=2]
+ %73 = icmp eq %struct.btOptimizedBvhNode* %72, null ; [#uses=1]
+ br i1 %73, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE5clearEv.exit, label %bb.i.i
+
+bb.i.i: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE5clearEv.exit
+ %74 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ %75 = load i8* %74, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %75, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %76 = bitcast %struct.btOptimizedBvhNode* %72 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %76)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %71, align 4
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE5clearEv.exit
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE5clearEv.exit: ; preds = %bb2.i.i, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE5clearEv.exit
+ %77 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ store i8 1, i8* %77, align 4
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %71, align 4
+ %78 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 1 ; [#uses=1]
+ store i32 0, i32* %78, align 4
+ %79 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 2 ; [#uses=1]
+ store i32 0, i32* %79, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN14btQuantizedBvhC2ERS_b(%struct.btQuantizedBvh* %this, %struct.btQuantizedBvh* nocapture %self, i8 zeroext %unnamed_arg) align 2 {
+return:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV14btQuantizedBvh, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %1, align 4
+ %4 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 277, i32* %37, align 4
+ %38 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ store i8 1, i8* %38, align 4
+ %39 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=1]
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %39, align 4
+ %40 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 1 ; [#uses=1]
+ store i32 0, i32* %40, align 4
+ %41 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 2 ; [#uses=1]
+ store i32 0, i32* %41, align 4
+ %42 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %42, align 4
+ %43 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %43, align 4
+ %44 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %44, align 4
+ %45 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %45, align 4
+ %46 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %46, align 4
+ %47 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=1]
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %47, align 4
+ %48 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %48, align 4
+ %49 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %49, align 4
+ %50 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %50, align 4
+ %51 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %51, align 4
+ %52 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %52, align 4
+ %53 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %53, align 4
+ %54 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ store i8 1, i8* %54, align 4
+ %55 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %55, align 4
+ %56 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=1]
+ store i32 0, i32* %56, align 4
+ %57 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 2 ; [#uses=1]
+ store i32 0, i32* %57, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN14btQuantizedBvhD1Ev(%struct.btQuantizedBvh* nocapture %this) align 2 {
+entry:
+ tail call void @_ZN14btQuantizedBvhD2Ev(%struct.btQuantizedBvh* %this)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN14btQuantizedBvhD0Ev(%struct.btQuantizedBvh* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV14btQuantizedBvh, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=3]
+ %2 = load %struct.btBvhSubtreeInfo** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btBvhSubtreeInfo* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btBvhSubtreeInfo* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad44
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %1, align 4
+ %8 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ %11 = load %struct.BT_QUANTIZED_BVH_NODE** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i73
+
+bb.i.i.i73: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i72 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i72, label %bb2.i.i.i75, label %bb1.i.i.i74
+
+bb1.i.i.i74: ; preds = %bb.i.i.i73
+ %15 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i75 unwind label %lpad40
+
+bb2.i.i.i75: ; preds = %bb1.i.i.i74, %bb.i.i.i73
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %10, align 4
+ br label %bb10
+
+bb10: ; preds = %bb2.i.i.i75, %bb3
+ %16 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %10, align 4
+ %17 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=3]
+ %20 = load %struct.BT_QUANTIZED_BVH_NODE** %19, align 4 ; [#uses=2]
+ %21 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %20, null ; [#uses=1]
+ br i1 %21, label %bb19, label %bb.i.i.i78
+
+bb.i.i.i78: ; preds = %bb10
+ %22 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i.i77 = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i77, label %bb2.i.i.i80, label %bb1.i.i.i79
+
+bb1.i.i.i79: ; preds = %bb.i.i.i78
+ %24 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %20 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %24)
+ to label %bb2.i.i.i80 unwind label %lpad36
+
+bb2.i.i.i80: ; preds = %bb1.i.i.i79, %bb.i.i.i78
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %19, align 4
+ br label %bb19
+
+bb19: ; preds = %bb2.i.i.i80, %bb10
+ %25 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %19, align 4
+ %26 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %29 = load %struct.btOptimizedBvhNode** %28, align 4 ; [#uses=2]
+ %30 = icmp eq %struct.btOptimizedBvhNode* %29, null ; [#uses=1]
+ br i1 %30, label %bb28, label %bb.i.i.i84
+
+bb.i.i.i84: ; preds = %bb19
+ %31 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %32 = load i8* %31, align 4 ; [#uses=1]
+ %toBool.i.i.i83 = icmp eq i8 %32, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i83, label %bb2.i.i.i86, label %bb1.i.i.i85
+
+bb1.i.i.i85: ; preds = %bb.i.i.i84
+ %33 = bitcast %struct.btOptimizedBvhNode* %29 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %33)
+ to label %bb2.i.i.i86 unwind label %lpad
+
+bb2.i.i.i86: ; preds = %bb1.i.i.i85, %bb.i.i.i84
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %28, align 4
+ br label %bb28
+
+invcont26: ; preds = %bb2.i.i.i102, %ppad
+ %34 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ store i8 1, i8* %34, align 4
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %59, align 4
+ %35 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 1 ; [#uses=1]
+ store i32 0, i32* %35, align 4
+ %36 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 2 ; [#uses=1]
+ store i32 0, i32* %36, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.2)
+ unreachable
+
+bb28: ; preds = %bb2.i.i.i86, %bb19
+ %37 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %37, align 4
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %28, align 4
+ %38 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ %39 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %39, align 4
+ %40 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=3]
+ %41 = load %struct.btOptimizedBvhNode** %40, align 4 ; [#uses=2]
+ %42 = icmp eq %struct.btOptimizedBvhNode* %41, null ; [#uses=1]
+ br i1 %42, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit92, label %bb.i.i.i89
+
+bb.i.i.i89: ; preds = %bb28
+ %43 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ %44 = load i8* %43, align 4 ; [#uses=1]
+ %toBool.i.i.i88 = icmp eq i8 %44, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i88, label %bb2.i.i.i91, label %bb1.i.i.i90
+
+bb1.i.i.i90: ; preds = %bb.i.i.i89
+ %45 = bitcast %struct.btOptimizedBvhNode* %41 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %45)
+ br label %bb2.i.i.i91
+
+bb2.i.i.i91: ; preds = %bb1.i.i.i90, %bb.i.i.i89
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %40, align 4
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit92
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit92: ; preds = %bb2.i.i.i91, %bb28
+ %46 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ store i8 1, i8* %46, align 4
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %40, align 4
+ %47 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 1 ; [#uses=1]
+ store i32 0, i32* %47, align 4
+ %48 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 2 ; [#uses=1]
+ store i32 0, i32* %48, align 4
+ %49 = bitcast %struct.btQuantizedBvh* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %49)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i85
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select35 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad36: ; preds = %bb1.i.i.i79
+ %eh_ptr37 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select39 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr37, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad64
+
+lpad40: ; preds = %bb1.i.i.i74
+ %eh_ptr41 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select43 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr41, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad65
+
+lpad44: ; preds = %bb1.i.i.i
+ %eh_ptr45 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select47 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr45, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %50 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ %51 = load %struct.BT_QUANTIZED_BVH_NODE** %50, align 4 ; [#uses=2]
+ %52 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %51, null ; [#uses=1]
+ br i1 %52, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit98, label %bb.i.i.i94
+
+bb.i.i.i94: ; preds = %lpad44
+ %53 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ %54 = load i8* %53, align 4 ; [#uses=1]
+ %toBool.i.i.i93 = icmp eq i8 %54, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i93, label %bb2.i.i.i96, label %bb1.i.i.i95
+
+bb1.i.i.i95: ; preds = %bb.i.i.i94
+ %55 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %51 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %55)
+ to label %bb2.i.i.i96 unwind label %lpad48
+
+bb2.i.i.i96: ; preds = %bb1.i.i.i95, %bb.i.i.i94
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %50, align 4
+ br label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit98
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit98: ; preds = %bb2.i.i.i96, %lpad44
+ %56 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %56, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %50, align 4
+ %57 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %57, align 4
+ %58 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %58, align 4
+ br label %ppad65
+
+lpad48: ; preds = %bb1.i.i.i95
+ %eh_ptr49 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select51 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr49, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad52: ; preds = %bb1.i.i.i113
+ %eh_ptr53 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select55 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr53, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad56: ; preds = %bb1.i.i.i107
+ %eh_ptr57 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select59 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr57, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad60: ; preds = %bb1.i.i.i101
+ %eh_ptr61 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select63 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr61, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit110, %lpad
+ %eh_exception.2 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.1, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit110 ] ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=3]
+ %60 = load %struct.btOptimizedBvhNode** %59, align 4 ; [#uses=2]
+ %61 = icmp eq %struct.btOptimizedBvhNode* %60, null ; [#uses=1]
+ br i1 %61, label %invcont26, label %bb.i.i.i100
+
+bb.i.i.i100: ; preds = %ppad
+ %62 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ %63 = load i8* %62, align 4 ; [#uses=1]
+ %toBool.i.i.i99 = icmp eq i8 %63, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i99, label %bb2.i.i.i102, label %bb1.i.i.i101
+
+bb1.i.i.i101: ; preds = %bb.i.i.i100
+ %64 = bitcast %struct.btOptimizedBvhNode* %60 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %64)
+ to label %bb2.i.i.i102 unwind label %lpad60
+
+bb2.i.i.i102: ; preds = %bb1.i.i.i101, %bb.i.i.i100
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %59, align 4
+ br label %invcont26
+
+ppad64: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit116, %lpad36
+ %eh_exception.1 = phi i8* [ %eh_ptr37, %lpad36 ], [ %eh_exception.0, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit116 ] ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %66 = load %struct.btOptimizedBvhNode** %65, align 4 ; [#uses=2]
+ %67 = icmp eq %struct.btOptimizedBvhNode* %66, null ; [#uses=1]
+ br i1 %67, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit110, label %bb.i.i.i106
+
+bb.i.i.i106: ; preds = %ppad64
+ %68 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %69 = load i8* %68, align 4 ; [#uses=1]
+ %toBool.i.i.i105 = icmp eq i8 %69, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i105, label %bb2.i.i.i108, label %bb1.i.i.i107
+
+bb1.i.i.i107: ; preds = %bb.i.i.i106
+ %70 = bitcast %struct.btOptimizedBvhNode* %66 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %70)
+ to label %bb2.i.i.i108 unwind label %lpad56
+
+bb2.i.i.i108: ; preds = %bb1.i.i.i107, %bb.i.i.i106
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %65, align 4
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit110
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit110: ; preds = %bb2.i.i.i108, %ppad64
+ %71 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %71, align 4
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %65, align 4
+ %72 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %72, align 4
+ %73 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %73, align 4
+ br label %ppad
+
+ppad65: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit98, %lpad40
+ %eh_exception.0 = phi i8* [ %eh_ptr41, %lpad40 ], [ %eh_ptr45, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit98 ] ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=3]
+ %75 = load %struct.BT_QUANTIZED_BVH_NODE** %74, align 4 ; [#uses=2]
+ %76 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %75, null ; [#uses=1]
+ br i1 %76, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit116, label %bb.i.i.i112
+
+bb.i.i.i112: ; preds = %ppad65
+ %77 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ %78 = load i8* %77, align 4 ; [#uses=1]
+ %toBool.i.i.i111 = icmp eq i8 %78, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i111, label %bb2.i.i.i114, label %bb1.i.i.i113
+
+bb1.i.i.i113: ; preds = %bb.i.i.i112
+ %79 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %75 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %79)
+ to label %bb2.i.i.i114 unwind label %lpad52
+
+bb2.i.i.i114: ; preds = %bb1.i.i.i113, %bb.i.i.i112
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %74, align 4
+ br label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit116
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit116: ; preds = %bb2.i.i.i114, %ppad65
+ %80 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %80, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %74, align 4
+ %81 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %81, align 4
+ %82 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %82, align 4
+ br label %ppad64
+}
+
+; [#uses=2]
+define zeroext i8 @_ZNK14btQuantizedBvh9serializeEPvjb(%struct.btQuantizedBvh* %this, i8* %o_alignedDataBuffer, i32 %unnamed_arg, i8 zeroext %i_swapEndian) align 2 {
+bb1:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 13 ; [#uses=7]
+ store i32 %1, i32* %2, align 4
+ %3 = bitcast i8* %o_alignedDataBuffer to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV14btQuantizedBvh, i32 0, i32 2), i32 (...)*** %3, align 4
+ %4 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 52 ; [#uses=1]
+ %5 = bitcast i8* %4 to i32* ; [#uses=1]
+ store i32 277, i32* %5, align 4
+ %6 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 60 ; [#uses=2]
+ store i8 0, i8* %6, align 4
+ %7 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 80 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ %8 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 76 ; [#uses=1]
+ %9 = bitcast i8* %8 to %struct.btOptimizedBvhNode** ; [#uses=1]
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %9, align 4
+ %10 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 68 ; [#uses=1]
+ %11 = bitcast i8* %10 to i32* ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 72 ; [#uses=1]
+ %13 = bitcast i8* %12 to i32* ; [#uses=1]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 100 ; [#uses=4]
+ store i8 1, i8* %14, align 4
+ %15 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 96 ; [#uses=1]
+ %16 = bitcast i8* %15 to %struct.btOptimizedBvhNode** ; [#uses=15]
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %16, align 4
+ %17 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 88 ; [#uses=1]
+ %18 = bitcast i8* %17 to i32* ; [#uses=3]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 92 ; [#uses=1]
+ %20 = bitcast i8* %19 to i32* ; [#uses=3]
+ store i32 0, i32* %20, align 4
+ %21 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 120 ; [#uses=1]
+ store i8 1, i8* %21, align 4
+ %22 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 116 ; [#uses=1]
+ %23 = bitcast i8* %22 to %struct.BT_QUANTIZED_BVH_NODE** ; [#uses=1]
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %23, align 4
+ %24 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 108 ; [#uses=1]
+ %25 = bitcast i8* %24 to i32* ; [#uses=1]
+ store i32 0, i32* %25, align 4
+ %26 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 112 ; [#uses=1]
+ %27 = bitcast i8* %26 to i32* ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 140 ; [#uses=4]
+ store i8 1, i8* %28, align 4
+ %29 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 136 ; [#uses=1]
+ %30 = bitcast i8* %29 to %struct.BT_QUANTIZED_BVH_NODE** ; [#uses=19]
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %30, align 4
+ %31 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 128 ; [#uses=1]
+ %32 = bitcast i8* %31 to i32* ; [#uses=3]
+ store i32 0, i32* %32, align 4
+ %33 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 132 ; [#uses=1]
+ %34 = bitcast i8* %33 to i32* ; [#uses=3]
+ store i32 0, i32* %34, align 4
+ %35 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 144 ; [#uses=1]
+ %36 = bitcast i8* %35 to i32* ; [#uses=3]
+ store i32 0, i32* %36, align 4
+ %37 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 164 ; [#uses=5]
+ store i8 1, i8* %37, align 4
+ %38 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 160 ; [#uses=1]
+ %39 = bitcast i8* %38 to %struct.btBvhSubtreeInfo** ; [#uses=26]
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %39, align 4
+ %40 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 152 ; [#uses=1]
+ %41 = bitcast i8* %40 to i32* ; [#uses=3]
+ store i32 0, i32* %41, align 4
+ %42 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 156 ; [#uses=1]
+ %43 = bitcast i8* %42 to i32* ; [#uses=3]
+ store i32 0, i32* %43, align 4
+ %44 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 168 ; [#uses=1]
+ %45 = bitcast i8* %44 to i32* ; [#uses=2]
+ store i32 0, i32* %45, align 4
+ %46 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 4 ; [#uses=2]
+ %47 = bitcast i8* %46 to float* ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %47, align 4
+ %48 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 8 ; [#uses=2]
+ %49 = bitcast i8* %48 to float* ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %49, align 4
+ %50 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 12 ; [#uses=2]
+ %51 = bitcast i8* %50 to float* ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %51, align 4
+ %52 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 16 ; [#uses=2]
+ %53 = bitcast i8* %52 to float* ; [#uses=2]
+ store float 0.000000e+00, float* %53, align 4
+ %54 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 20 ; [#uses=2]
+ %55 = bitcast i8* %54 to float* ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %55, align 4
+ %56 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 24 ; [#uses=2]
+ %57 = bitcast i8* %56 to float* ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %57, align 4
+ %58 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 28 ; [#uses=2]
+ %59 = bitcast i8* %58 to float* ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %59, align 4
+ %60 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 32 ; [#uses=2]
+ %61 = bitcast i8* %60 to float* ; [#uses=2]
+ store float 0.000000e+00, float* %61, align 4
+ %toBool = icmp eq i8 %i_swapEndian, 0 ; [#uses=4]
+ %62 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 5 ; [#uses=2]
+ %63 = load i32* %62, align 4 ; [#uses=2]
+ br i1 %toBool, label %bb3, label %bb2
+
+bb2: ; preds = %bb1
+ %64 = tail call i32 @llvm.bswap.i32(i32 %63) nounwind ; [#uses=1]
+ %65 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 56 ; [#uses=1]
+ %66 = bitcast i8* %65 to i32* ; [#uses=1]
+ store i32 %64, i32* %66, align 4
+ %67 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1 ; [#uses=1]
+ %uglygep.i = getelementptr i8* %o_alignedDataBuffer, i32 7 ; [#uses=1]
+ %uglygep7.i = getelementptr i8* %o_alignedDataBuffer, i32 6 ; [#uses=1]
+ %uglygep10.i = getelementptr i8* %o_alignedDataBuffer, i32 5 ; [#uses=1]
+ %scevgep1314.i = bitcast %struct.btQuadWord* %67 to i8* ; [#uses=4]
+ %uglygep17.i = getelementptr i8* %scevgep1314.i, i32 1 ; [#uses=1]
+ %uglygep20.i = getelementptr i8* %scevgep1314.i, i32 2 ; [#uses=1]
+ %uglygep23.i = getelementptr i8* %scevgep1314.i, i32 3 ; [#uses=1]
+ %68 = load i8* %uglygep23.i, align 1 ; [#uses=1]
+ store i8 %68, i8* %46, align 1
+ %69 = load i8* %uglygep20.i, align 1 ; [#uses=1]
+ store i8 %69, i8* %uglygep10.i, align 1
+ %70 = load i8* %uglygep17.i, align 1 ; [#uses=1]
+ store i8 %70, i8* %uglygep7.i, align 1
+ %71 = load i8* %scevgep1314.i, align 1 ; [#uses=1]
+ store i8 %71, i8* %uglygep.i, align 1
+ %uglygep.1.i = getelementptr i8* %o_alignedDataBuffer, i32 11 ; [#uses=1]
+ %uglygep7.1.i = getelementptr i8* %o_alignedDataBuffer, i32 10 ; [#uses=1]
+ %uglygep10.1.i = getelementptr i8* %o_alignedDataBuffer, i32 9 ; [#uses=1]
+ %scevgep13.1.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep1314.1.i = bitcast float* %scevgep13.1.i to i8* ; [#uses=4]
+ %uglygep17.1.i = getelementptr i8* %scevgep1314.1.i, i32 1 ; [#uses=1]
+ %uglygep20.1.i = getelementptr i8* %scevgep1314.1.i, i32 2 ; [#uses=1]
+ %uglygep23.1.i = getelementptr i8* %scevgep1314.1.i, i32 3 ; [#uses=1]
+ %72 = load i8* %uglygep23.1.i, align 1 ; [#uses=1]
+ store i8 %72, i8* %48, align 1
+ %73 = load i8* %uglygep20.1.i, align 1 ; [#uses=1]
+ store i8 %73, i8* %uglygep10.1.i, align 1
+ %74 = load i8* %uglygep17.1.i, align 1 ; [#uses=1]
+ store i8 %74, i8* %uglygep7.1.i, align 1
+ %75 = load i8* %scevgep1314.1.i, align 1 ; [#uses=1]
+ store i8 %75, i8* %uglygep.1.i, align 1
+ %uglygep.2.i = getelementptr i8* %o_alignedDataBuffer, i32 15 ; [#uses=1]
+ %uglygep7.2.i = getelementptr i8* %o_alignedDataBuffer, i32 14 ; [#uses=1]
+ %uglygep10.2.i = getelementptr i8* %o_alignedDataBuffer, i32 13 ; [#uses=1]
+ %scevgep13.2.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep1314.2.i = bitcast float* %scevgep13.2.i to i8* ; [#uses=4]
+ %uglygep17.2.i = getelementptr i8* %scevgep1314.2.i, i32 1 ; [#uses=1]
+ %uglygep20.2.i = getelementptr i8* %scevgep1314.2.i, i32 2 ; [#uses=1]
+ %uglygep23.2.i = getelementptr i8* %scevgep1314.2.i, i32 3 ; [#uses=1]
+ %76 = load i8* %uglygep23.2.i, align 1 ; [#uses=1]
+ store i8 %76, i8* %50, align 1
+ %77 = load i8* %uglygep20.2.i, align 1 ; [#uses=1]
+ store i8 %77, i8* %uglygep10.2.i, align 1
+ %78 = load i8* %uglygep17.2.i, align 1 ; [#uses=1]
+ store i8 %78, i8* %uglygep7.2.i, align 1
+ %79 = load i8* %scevgep1314.2.i, align 1 ; [#uses=1]
+ store i8 %79, i8* %uglygep.2.i, align 1
+ %uglygep.3.i = getelementptr i8* %o_alignedDataBuffer, i32 19 ; [#uses=1]
+ %uglygep7.3.i = getelementptr i8* %o_alignedDataBuffer, i32 18 ; [#uses=1]
+ %uglygep10.3.i = getelementptr i8* %o_alignedDataBuffer, i32 17 ; [#uses=1]
+ %scevgep13.3.i = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep1314.3.i = bitcast float* %scevgep13.3.i to i8* ; [#uses=4]
+ %uglygep17.3.i = getelementptr i8* %scevgep1314.3.i, i32 1 ; [#uses=1]
+ %uglygep20.3.i = getelementptr i8* %scevgep1314.3.i, i32 2 ; [#uses=1]
+ %uglygep23.3.i = getelementptr i8* %scevgep1314.3.i, i32 3 ; [#uses=1]
+ %80 = load i8* %uglygep23.3.i, align 1 ; [#uses=1]
+ store i8 %80, i8* %52, align 1
+ %81 = load i8* %uglygep20.3.i, align 1 ; [#uses=1]
+ store i8 %81, i8* %uglygep10.3.i, align 1
+ %82 = load i8* %uglygep17.3.i, align 1 ; [#uses=1]
+ store i8 %82, i8* %uglygep7.3.i, align 1
+ %83 = load i8* %scevgep1314.3.i, align 1 ; [#uses=1]
+ store i8 %83, i8* %uglygep.3.i, align 1
+ %84 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2 ; [#uses=1]
+ %uglygep.i44 = getelementptr i8* %o_alignedDataBuffer, i32 23 ; [#uses=1]
+ %uglygep7.i45 = getelementptr i8* %o_alignedDataBuffer, i32 22 ; [#uses=1]
+ %uglygep10.i46 = getelementptr i8* %o_alignedDataBuffer, i32 21 ; [#uses=1]
+ %scevgep1314.i47 = bitcast %struct.btQuadWord* %84 to i8* ; [#uses=4]
+ %uglygep17.i48 = getelementptr i8* %scevgep1314.i47, i32 1 ; [#uses=1]
+ %uglygep20.i49 = getelementptr i8* %scevgep1314.i47, i32 2 ; [#uses=1]
+ %uglygep23.i50 = getelementptr i8* %scevgep1314.i47, i32 3 ; [#uses=1]
+ %85 = load i8* %uglygep23.i50, align 1 ; [#uses=1]
+ store i8 %85, i8* %54, align 1
+ %86 = load i8* %uglygep20.i49, align 1 ; [#uses=1]
+ store i8 %86, i8* %uglygep10.i46, align 1
+ %87 = load i8* %uglygep17.i48, align 1 ; [#uses=1]
+ store i8 %87, i8* %uglygep7.i45, align 1
+ %88 = load i8* %scevgep1314.i47, align 1 ; [#uses=1]
+ store i8 %88, i8* %uglygep.i44, align 1
+ %uglygep.1.i53 = getelementptr i8* %o_alignedDataBuffer, i32 27 ; [#uses=1]
+ %uglygep7.1.i54 = getelementptr i8* %o_alignedDataBuffer, i32 26 ; [#uses=1]
+ %uglygep10.1.i55 = getelementptr i8* %o_alignedDataBuffer, i32 25 ; [#uses=1]
+ %scevgep13.1.i56 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep1314.1.i57 = bitcast float* %scevgep13.1.i56 to i8* ; [#uses=4]
+ %uglygep17.1.i58 = getelementptr i8* %scevgep1314.1.i57, i32 1 ; [#uses=1]
+ %uglygep20.1.i59 = getelementptr i8* %scevgep1314.1.i57, i32 2 ; [#uses=1]
+ %uglygep23.1.i60 = getelementptr i8* %scevgep1314.1.i57, i32 3 ; [#uses=1]
+ %89 = load i8* %uglygep23.1.i60, align 1 ; [#uses=1]
+ store i8 %89, i8* %56, align 1
+ %90 = load i8* %uglygep20.1.i59, align 1 ; [#uses=1]
+ store i8 %90, i8* %uglygep10.1.i55, align 1
+ %91 = load i8* %uglygep17.1.i58, align 1 ; [#uses=1]
+ store i8 %91, i8* %uglygep7.1.i54, align 1
+ %92 = load i8* %scevgep1314.1.i57, align 1 ; [#uses=1]
+ store i8 %92, i8* %uglygep.1.i53, align 1
+ %uglygep.2.i63 = getelementptr i8* %o_alignedDataBuffer, i32 31 ; [#uses=1]
+ %uglygep7.2.i64 = getelementptr i8* %o_alignedDataBuffer, i32 30 ; [#uses=1]
+ %uglygep10.2.i65 = getelementptr i8* %o_alignedDataBuffer, i32 29 ; [#uses=1]
+ %scevgep13.2.i66 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep1314.2.i67 = bitcast float* %scevgep13.2.i66 to i8* ; [#uses=4]
+ %uglygep17.2.i68 = getelementptr i8* %scevgep1314.2.i67, i32 1 ; [#uses=1]
+ %uglygep20.2.i69 = getelementptr i8* %scevgep1314.2.i67, i32 2 ; [#uses=1]
+ %uglygep23.2.i70 = getelementptr i8* %scevgep1314.2.i67, i32 3 ; [#uses=1]
+ %93 = load i8* %uglygep23.2.i70, align 1 ; [#uses=1]
+ store i8 %93, i8* %58, align 1
+ %94 = load i8* %uglygep20.2.i69, align 1 ; [#uses=1]
+ store i8 %94, i8* %uglygep10.2.i65, align 1
+ %95 = load i8* %uglygep17.2.i68, align 1 ; [#uses=1]
+ store i8 %95, i8* %uglygep7.2.i64, align 1
+ %96 = load i8* %scevgep1314.2.i67, align 1 ; [#uses=1]
+ store i8 %96, i8* %uglygep.2.i63, align 1
+ %uglygep.3.i73 = getelementptr i8* %o_alignedDataBuffer, i32 35 ; [#uses=1]
+ %uglygep7.3.i74 = getelementptr i8* %o_alignedDataBuffer, i32 34 ; [#uses=1]
+ %uglygep10.3.i75 = getelementptr i8* %o_alignedDataBuffer, i32 33 ; [#uses=1]
+ %scevgep13.3.i76 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep1314.3.i77 = bitcast float* %scevgep13.3.i76 to i8* ; [#uses=4]
+ %uglygep17.3.i78 = getelementptr i8* %scevgep1314.3.i77, i32 1 ; [#uses=1]
+ %uglygep20.3.i79 = getelementptr i8* %scevgep1314.3.i77, i32 2 ; [#uses=1]
+ %uglygep23.3.i80 = getelementptr i8* %scevgep1314.3.i77, i32 3 ; [#uses=1]
+ %97 = load i8* %uglygep23.3.i80, align 1 ; [#uses=1]
+ store i8 %97, i8* %60, align 1
+ %98 = load i8* %uglygep20.3.i79, align 1 ; [#uses=1]
+ store i8 %98, i8* %uglygep10.3.i75, align 1
+ %99 = load i8* %uglygep17.3.i78, align 1 ; [#uses=1]
+ store i8 %99, i8* %uglygep7.3.i74, align 1
+ %100 = load i8* %scevgep1314.3.i77, align 1 ; [#uses=1]
+ store i8 %100, i8* %uglygep.3.i73, align 1
+ %101 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 36 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3 ; [#uses=1]
+ %uglygep.i82 = getelementptr i8* %o_alignedDataBuffer, i32 39 ; [#uses=1]
+ %uglygep7.i83 = getelementptr i8* %o_alignedDataBuffer, i32 38 ; [#uses=1]
+ %uglygep10.i84 = getelementptr i8* %o_alignedDataBuffer, i32 37 ; [#uses=1]
+ %scevgep1314.i85 = bitcast %struct.btQuadWord* %102 to i8* ; [#uses=4]
+ %uglygep17.i86 = getelementptr i8* %scevgep1314.i85, i32 1 ; [#uses=1]
+ %uglygep20.i87 = getelementptr i8* %scevgep1314.i85, i32 2 ; [#uses=1]
+ %uglygep23.i88 = getelementptr i8* %scevgep1314.i85, i32 3 ; [#uses=1]
+ %103 = load i8* %uglygep23.i88, align 1 ; [#uses=1]
+ store i8 %103, i8* %101, align 1
+ %104 = load i8* %uglygep20.i87, align 1 ; [#uses=1]
+ store i8 %104, i8* %uglygep10.i84, align 1
+ %105 = load i8* %uglygep17.i86, align 1 ; [#uses=1]
+ store i8 %105, i8* %uglygep7.i83, align 1
+ %106 = load i8* %scevgep1314.i85, align 1 ; [#uses=1]
+ store i8 %106, i8* %uglygep.i82, align 1
+ %scevgep.1.i89 = getelementptr i8* %o_alignedDataBuffer, i32 40 ; [#uses=1]
+ %uglygep.1.i91 = getelementptr i8* %o_alignedDataBuffer, i32 43 ; [#uses=1]
+ %uglygep7.1.i92 = getelementptr i8* %o_alignedDataBuffer, i32 42 ; [#uses=1]
+ %uglygep10.1.i93 = getelementptr i8* %o_alignedDataBuffer, i32 41 ; [#uses=1]
+ %scevgep13.1.i94 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %scevgep1314.1.i95 = bitcast float* %scevgep13.1.i94 to i8* ; [#uses=4]
+ %uglygep17.1.i96 = getelementptr i8* %scevgep1314.1.i95, i32 1 ; [#uses=1]
+ %uglygep20.1.i97 = getelementptr i8* %scevgep1314.1.i95, i32 2 ; [#uses=1]
+ %uglygep23.1.i98 = getelementptr i8* %scevgep1314.1.i95, i32 3 ; [#uses=1]
+ %107 = load i8* %uglygep23.1.i98, align 1 ; [#uses=1]
+ store i8 %107, i8* %scevgep.1.i89, align 1
+ %108 = load i8* %uglygep20.1.i97, align 1 ; [#uses=1]
+ store i8 %108, i8* %uglygep10.1.i93, align 1
+ %109 = load i8* %uglygep17.1.i96, align 1 ; [#uses=1]
+ store i8 %109, i8* %uglygep7.1.i92, align 1
+ %110 = load i8* %scevgep1314.1.i95, align 1 ; [#uses=1]
+ store i8 %110, i8* %uglygep.1.i91, align 1
+ %scevgep.2.i99 = getelementptr i8* %o_alignedDataBuffer, i32 44 ; [#uses=1]
+ %uglygep.2.i101 = getelementptr i8* %o_alignedDataBuffer, i32 47 ; [#uses=1]
+ %uglygep7.2.i102 = getelementptr i8* %o_alignedDataBuffer, i32 46 ; [#uses=1]
+ %uglygep10.2.i103 = getelementptr i8* %o_alignedDataBuffer, i32 45 ; [#uses=1]
+ %scevgep13.2.i104 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %scevgep1314.2.i105 = bitcast float* %scevgep13.2.i104 to i8* ; [#uses=4]
+ %uglygep17.2.i106 = getelementptr i8* %scevgep1314.2.i105, i32 1 ; [#uses=1]
+ %uglygep20.2.i107 = getelementptr i8* %scevgep1314.2.i105, i32 2 ; [#uses=1]
+ %uglygep23.2.i108 = getelementptr i8* %scevgep1314.2.i105, i32 3 ; [#uses=1]
+ %111 = load i8* %uglygep23.2.i108, align 1 ; [#uses=1]
+ store i8 %111, i8* %scevgep.2.i99, align 1
+ %112 = load i8* %uglygep20.2.i107, align 1 ; [#uses=1]
+ store i8 %112, i8* %uglygep10.2.i103, align 1
+ %113 = load i8* %uglygep17.2.i106, align 1 ; [#uses=1]
+ store i8 %113, i8* %uglygep7.2.i102, align 1
+ %114 = load i8* %scevgep1314.2.i105, align 1 ; [#uses=1]
+ store i8 %114, i8* %uglygep.2.i101, align 1
+ %scevgep.3.i109 = getelementptr i8* %o_alignedDataBuffer, i32 48 ; [#uses=1]
+ %uglygep.3.i111 = getelementptr i8* %o_alignedDataBuffer, i32 51 ; [#uses=1]
+ %uglygep7.3.i112 = getelementptr i8* %o_alignedDataBuffer, i32 50 ; [#uses=1]
+ %uglygep10.3.i113 = getelementptr i8* %o_alignedDataBuffer, i32 49 ; [#uses=1]
+ %scevgep13.3.i114 = getelementptr %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %scevgep1314.3.i115 = bitcast float* %scevgep13.3.i114 to i8* ; [#uses=4]
+ %uglygep17.3.i116 = getelementptr i8* %scevgep1314.3.i115, i32 1 ; [#uses=1]
+ %uglygep20.3.i117 = getelementptr i8* %scevgep1314.3.i115, i32 2 ; [#uses=1]
+ %uglygep23.3.i118 = getelementptr i8* %scevgep1314.3.i115, i32 3 ; [#uses=1]
+ %115 = load i8* %uglygep23.3.i118, align 1 ; [#uses=1]
+ store i8 %115, i8* %scevgep.3.i109, align 1
+ %116 = load i8* %uglygep20.3.i117, align 1 ; [#uses=1]
+ store i8 %116, i8* %uglygep10.3.i113, align 1
+ %117 = load i8* %uglygep17.3.i116, align 1 ; [#uses=1]
+ store i8 %117, i8* %uglygep7.3.i112, align 1
+ %118 = load i8* %scevgep1314.3.i115, align 1 ; [#uses=1]
+ store i8 %118, i8* %uglygep.3.i111, align 1
+ %119 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 11 ; [#uses=1]
+ %120 = load i32* %119, align 4 ; [#uses=1]
+ %121 = tail call i32 @llvm.bswap.i32(i32 %120) nounwind ; [#uses=1]
+ store i32 %121, i32* %36, align 4
+ %122 = load i32* %2, align 4 ; [#uses=1]
+ %123 = tail call i32 @llvm.bswap.i32(i32 %122) nounwind ; [#uses=1]
+ br label %bb4
+
+bb3: ; preds = %bb1
+ %124 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 56 ; [#uses=1]
+ %125 = bitcast i8* %124 to i32* ; [#uses=1]
+ store i32 %63, i32* %125, align 4
+ %126 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %127 = load float* %126, align 4 ; [#uses=1]
+ store float %127, float* %47, align 4
+ %128 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %129 = load float* %128, align 4 ; [#uses=1]
+ store float %129, float* %49, align 4
+ %130 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %131 = load float* %130, align 4 ; [#uses=1]
+ store float %131, float* %51, align 4
+ %132 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %133 = load float* %132, align 4 ; [#uses=1]
+ store float %133, float* %53, align 4
+ %134 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ store float %135, float* %55, align 4
+ %136 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %137 = load float* %136, align 4 ; [#uses=1]
+ store float %137, float* %57, align 4
+ %138 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %139 = load float* %138, align 4 ; [#uses=1]
+ store float %139, float* %59, align 4
+ %140 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ store float %141, float* %61, align 4
+ %142 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 36 ; [#uses=1]
+ %143 = bitcast i8* %142 to float* ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ store float %145, float* %143, align 4
+ %146 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 40 ; [#uses=1]
+ %147 = bitcast i8* %146 to float* ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %149 = load float* %148, align 4 ; [#uses=1]
+ store float %149, float* %147, align 4
+ %150 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 44 ; [#uses=1]
+ %151 = bitcast i8* %150 to float* ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %153 = load float* %152, align 4 ; [#uses=1]
+ store float %153, float* %151, align 4
+ %154 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 48 ; [#uses=1]
+ %155 = bitcast i8* %154 to float* ; [#uses=1]
+ %156 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %157 = load float* %156, align 4 ; [#uses=1]
+ store float %157, float* %155, align 4
+ %158 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 11 ; [#uses=1]
+ %159 = load i32* %158, align 4 ; [#uses=1]
+ store i32 %159, i32* %36, align 4
+ %160 = load i32* %2, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %storemerge = phi i32 [ %123, %bb2 ], [ %160, %bb3 ] ; [#uses=1]
+ store i32 %storemerge, i32* %45, align 4
+ %161 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=2]
+ %162 = load i8* %161, align 4 ; [#uses=1]
+ store i8 %162, i8* %6, align 4
+ %163 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 172 ; [#uses=2]
+ %164 = load i32* %62, align 4 ; [#uses=12]
+ %165 = load i8* %161, align 4 ; [#uses=1]
+ %toBool5 = icmp eq i8 %165, 0 ; [#uses=1]
+ br i1 %toBool5, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit212, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit: ; preds = %bb4
+ store i8 0, i8* %28, align 4
+ %166 = bitcast i8* %163 to %struct.BT_QUANTIZED_BVH_NODE* ; [#uses=3]
+ store %struct.BT_QUANTIZED_BVH_NODE* %166, %struct.BT_QUANTIZED_BVH_NODE** %30, align 4
+ store i32 %164, i32* %32, align 4
+ store i32 %164, i32* %34, align 4
+ %167 = icmp sgt i32 %164, 0 ; [#uses=2]
+ br i1 %toBool, label %bb14.preheader, label %bb10.preheader
+
+bb14.preheader: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit
+ br i1 %167, label %bb.nph221, label %bb15
+
+bb10.preheader: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit
+ br i1 %167, label %bb.nph, label %bb15
+
+bb.nph: ; preds = %bb10.preheader
+ %168 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=7]
+ br label %bb9
+
+bb9: ; preds = %bb9.bb9_crit_edge, %bb.nph
+ %169 = phi %struct.BT_QUANTIZED_BVH_NODE* [ %166, %bb.nph ], [ %.pre467, %bb9.bb9_crit_edge ] ; [#uses=1]
+ %nodeIndex.0218 = phi i32 [ 0, %bb.nph ], [ %197, %bb9.bb9_crit_edge ] ; [#uses=15]
+ %170 = load %struct.BT_QUANTIZED_BVH_NODE** %168, align 4 ; [#uses=1]
+ %scevgep232 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %170, i32 %nodeIndex.0218, i32 0, i32 0 ; [#uses=1]
+ %171 = load i16* %scevgep232, align 2 ; [#uses=1]
+ %172 = tail call i16 @llvm.bswap.i16(i16 %171) nounwind ; [#uses=1]
+ %scevgep233234 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %169, i32 %nodeIndex.0218, i32 0, i32 0 ; [#uses=1]
+ store i16 %172, i16* %scevgep233234, align 2
+ %173 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ %174 = load %struct.BT_QUANTIZED_BVH_NODE** %168, align 4 ; [#uses=1]
+ %scevgep235 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %174, i32 %nodeIndex.0218, i32 0, i32 1 ; [#uses=1]
+ %175 = load i16* %scevgep235, align 2 ; [#uses=1]
+ %176 = tail call i16 @llvm.bswap.i16(i16 %175) nounwind ; [#uses=1]
+ %scevgep236 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %173, i32 %nodeIndex.0218, i32 0, i32 1 ; [#uses=1]
+ store i16 %176, i16* %scevgep236, align 2
+ %177 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ %178 = load %struct.BT_QUANTIZED_BVH_NODE** %168, align 4 ; [#uses=1]
+ %scevgep237 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %178, i32 %nodeIndex.0218, i32 0, i32 2 ; [#uses=1]
+ %179 = load i16* %scevgep237, align 2 ; [#uses=1]
+ %180 = tail call i16 @llvm.bswap.i16(i16 %179) nounwind ; [#uses=1]
+ %scevgep238 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %177, i32 %nodeIndex.0218, i32 0, i32 2 ; [#uses=1]
+ store i16 %180, i16* %scevgep238, align 2
+ %181 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ %182 = load %struct.BT_QUANTIZED_BVH_NODE** %168, align 4 ; [#uses=1]
+ %scevgep239 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %182, i32 %nodeIndex.0218, i32 1, i32 0 ; [#uses=1]
+ %183 = load i16* %scevgep239, align 2 ; [#uses=1]
+ %184 = tail call i16 @llvm.bswap.i16(i16 %183) nounwind ; [#uses=1]
+ %scevgep240 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %181, i32 %nodeIndex.0218, i32 1, i32 0 ; [#uses=1]
+ store i16 %184, i16* %scevgep240, align 2
+ %185 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ %186 = load %struct.BT_QUANTIZED_BVH_NODE** %168, align 4 ; [#uses=1]
+ %scevgep241 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %186, i32 %nodeIndex.0218, i32 1, i32 1 ; [#uses=1]
+ %187 = load i16* %scevgep241, align 2 ; [#uses=1]
+ %188 = tail call i16 @llvm.bswap.i16(i16 %187) nounwind ; [#uses=1]
+ %scevgep242 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %185, i32 %nodeIndex.0218, i32 1, i32 1 ; [#uses=1]
+ store i16 %188, i16* %scevgep242, align 2
+ %189 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ %190 = load %struct.BT_QUANTIZED_BVH_NODE** %168, align 4 ; [#uses=1]
+ %scevgep243 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %190, i32 %nodeIndex.0218, i32 1, i32 2 ; [#uses=1]
+ %191 = load i16* %scevgep243, align 2 ; [#uses=1]
+ %192 = tail call i16 @llvm.bswap.i16(i16 %191) nounwind ; [#uses=1]
+ %scevgep244 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %189, i32 %nodeIndex.0218, i32 1, i32 2 ; [#uses=1]
+ store i16 %192, i16* %scevgep244, align 2
+ %193 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ %194 = load %struct.BT_QUANTIZED_BVH_NODE** %168, align 4 ; [#uses=1]
+ %scevgep245 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %194, i32 %nodeIndex.0218, i32 2 ; [#uses=1]
+ %195 = load i32* %scevgep245, align 4 ; [#uses=1]
+ %196 = tail call i32 @llvm.bswap.i32(i32 %195) nounwind ; [#uses=1]
+ %scevgep246 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %193, i32 %nodeIndex.0218, i32 2 ; [#uses=1]
+ store i32 %196, i32* %scevgep246, align 4
+ %197 = add nsw i32 %nodeIndex.0218, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %197, %164 ; [#uses=1]
+ br i1 %exitcond, label %bb15, label %bb9.bb9_crit_edge
+
+bb9.bb9_crit_edge: ; preds = %bb9
+ %.pre467 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ br label %bb9
+
+bb.nph221: ; preds = %bb14.preheader
+ %198 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=7]
+ br label %bb13
+
+bb13: ; preds = %bb13.bb13_crit_edge, %bb.nph221
+ %199 = phi %struct.BT_QUANTIZED_BVH_NODE* [ %166, %bb.nph221 ], [ %.pre468, %bb13.bb13_crit_edge ] ; [#uses=1]
+ %nodeIndex12.0220 = phi i32 [ 0, %bb.nph221 ], [ %220, %bb13.bb13_crit_edge ] ; [#uses=15]
+ %200 = load %struct.BT_QUANTIZED_BVH_NODE** %198, align 4 ; [#uses=1]
+ %scevgep248249 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %200, i32 %nodeIndex12.0220, i32 0, i32 0 ; [#uses=1]
+ %201 = load i16* %scevgep248249, align 2 ; [#uses=1]
+ %scevgep250251 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %199, i32 %nodeIndex12.0220, i32 0, i32 0 ; [#uses=1]
+ store i16 %201, i16* %scevgep250251, align 2
+ %202 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ %203 = load %struct.BT_QUANTIZED_BVH_NODE** %198, align 4 ; [#uses=1]
+ %scevgep252 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %203, i32 %nodeIndex12.0220, i32 0, i32 1 ; [#uses=1]
+ %204 = load i16* %scevgep252, align 2 ; [#uses=1]
+ %scevgep253 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %202, i32 %nodeIndex12.0220, i32 0, i32 1 ; [#uses=1]
+ store i16 %204, i16* %scevgep253, align 2
+ %205 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ %206 = load %struct.BT_QUANTIZED_BVH_NODE** %198, align 4 ; [#uses=1]
+ %scevgep254 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %206, i32 %nodeIndex12.0220, i32 0, i32 2 ; [#uses=1]
+ %207 = load i16* %scevgep254, align 2 ; [#uses=1]
+ %scevgep255 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %205, i32 %nodeIndex12.0220, i32 0, i32 2 ; [#uses=1]
+ store i16 %207, i16* %scevgep255, align 2
+ %208 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ %209 = load %struct.BT_QUANTIZED_BVH_NODE** %198, align 4 ; [#uses=1]
+ %scevgep256 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %209, i32 %nodeIndex12.0220, i32 1, i32 0 ; [#uses=1]
+ %210 = load i16* %scevgep256, align 2 ; [#uses=1]
+ %scevgep257 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %208, i32 %nodeIndex12.0220, i32 1, i32 0 ; [#uses=1]
+ store i16 %210, i16* %scevgep257, align 2
+ %211 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ %212 = load %struct.BT_QUANTIZED_BVH_NODE** %198, align 4 ; [#uses=1]
+ %scevgep258 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %212, i32 %nodeIndex12.0220, i32 1, i32 1 ; [#uses=1]
+ %213 = load i16* %scevgep258, align 2 ; [#uses=1]
+ %scevgep259 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %211, i32 %nodeIndex12.0220, i32 1, i32 1 ; [#uses=1]
+ store i16 %213, i16* %scevgep259, align 2
+ %214 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ %215 = load %struct.BT_QUANTIZED_BVH_NODE** %198, align 4 ; [#uses=1]
+ %scevgep260 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %215, i32 %nodeIndex12.0220, i32 1, i32 2 ; [#uses=1]
+ %216 = load i16* %scevgep260, align 2 ; [#uses=1]
+ %scevgep261 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %214, i32 %nodeIndex12.0220, i32 1, i32 2 ; [#uses=1]
+ store i16 %216, i16* %scevgep261, align 2
+ %217 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ %218 = load %struct.BT_QUANTIZED_BVH_NODE** %198, align 4 ; [#uses=1]
+ %scevgep262 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %218, i32 %nodeIndex12.0220, i32 2 ; [#uses=1]
+ %219 = load i32* %scevgep262, align 4 ; [#uses=1]
+ %scevgep263 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %217, i32 %nodeIndex12.0220, i32 2 ; [#uses=1]
+ store i32 %219, i32* %scevgep263, align 4
+ %220 = add nsw i32 %nodeIndex12.0220, 1 ; [#uses=2]
+ %exitcond247 = icmp eq i32 %220, %164 ; [#uses=1]
+ br i1 %exitcond247, label %bb15, label %bb13.bb13_crit_edge
+
+bb13.bb13_crit_edge: ; preds = %bb13
+ %.pre468 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=1]
+ br label %bb13
+
+bb15: ; preds = %bb13, %bb9, %bb10.preheader, %bb14.preheader
+ %221 = shl i32 %164, 4 ; [#uses=1]
+ %222 = load %struct.BT_QUANTIZED_BVH_NODE** %30, align 4 ; [#uses=2]
+ %223 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %222, null ; [#uses=1]
+ br i1 %223, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit217, label %bb.i.i.i214
+
+bb.i.i.i214: ; preds = %bb15
+ %224 = load i8* %28, align 4 ; [#uses=1]
+ %toBool.i.i.i213 = icmp eq i8 %224, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i213, label %bb2.i.i.i216, label %bb1.i.i.i215
+
+bb1.i.i.i215: ; preds = %bb.i.i.i214
+ %225 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %222 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %225)
+ br label %bb2.i.i.i216
+
+bb2.i.i.i216: ; preds = %bb1.i.i.i215, %bb.i.i.i214
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %30, align 4
+ br label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit217
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit217: ; preds = %bb2.i.i.i216, %bb15
+ store i8 0, i8* %28, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %30, align 4
+ store i32 0, i32* %32, align 4
+ store i32 0, i32* %34, align 4
+ br label %bb27
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit212: ; preds = %bb4
+ store i8 0, i8* %14, align 4
+ %226 = bitcast i8* %163 to %struct.btOptimizedBvhNode* ; [#uses=3]
+ store %struct.btOptimizedBvhNode* %226, %struct.btOptimizedBvhNode** %16, align 4
+ store i32 %164, i32* %18, align 4
+ store i32 %164, i32* %20, align 4
+ %227 = icmp sgt i32 %164, 0 ; [#uses=2]
+ br i1 %toBool, label %bb25.preheader, label %bb21.preheader
+
+bb25.preheader: ; preds = %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit212
+ br i1 %227, label %bb.nph231, label %bb26
+
+bb21.preheader: ; preds = %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit212
+ br i1 %227, label %bb.nph223, label %bb26
+
+bb.nph223: ; preds = %bb21.preheader
+ %228 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=5]
+ br label %bb20
+
+bb20: ; preds = %bb20.bb20_crit_edge, %bb.nph223
+ %229 = phi %struct.btOptimizedBvhNode* [ %226, %bb.nph223 ], [ %.pre, %bb20.bb20_crit_edge ] ; [#uses=5]
+ %nodeIndex19.0222 = phi i32 [ 0, %bb.nph223 ], [ %277, %bb20.bb20_crit_edge ] ; [#uses=25]
+ %230 = load %struct.btOptimizedBvhNode** %228, align 4 ; [#uses=5]
+ %scevgep275 = getelementptr %struct.btOptimizedBvhNode* %230, i32 %nodeIndex19.0222, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep275276 = bitcast float* %scevgep275 to i8* ; [#uses=3]
+ %uglygep23.i177 = getelementptr i8* %scevgep275276, i32 3 ; [#uses=1]
+ %231 = load i8* %uglygep23.i177, align 1 ; [#uses=1]
+ %scevgep265 = getelementptr %struct.btOptimizedBvhNode* %229, i32 %nodeIndex19.0222 ; [#uses=1]
+ %scevgep4.i170 = bitcast %struct.btOptimizedBvhNode* %scevgep265 to i8* ; [#uses=1]
+ store i8 %231, i8* %scevgep4.i170, align 1
+ %uglygep20.i176 = getelementptr i8* %scevgep275276, i32 2 ; [#uses=1]
+ %232 = load i8* %uglygep20.i176, align 1 ; [#uses=1]
+ %scevgep267 = getelementptr %struct.btOptimizedBvhNode* %229, i32 %nodeIndex19.0222, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep267268 = bitcast float* %scevgep267 to i8* ; [#uses=3]
+ %uglygep10.i173 = getelementptr i8* %scevgep267268, i32 1 ; [#uses=1]
+ store i8 %232, i8* %uglygep10.i173, align 1
+ %uglygep17.i175 = getelementptr i8* %scevgep275276, i32 1 ; [#uses=1]
+ %233 = load i8* %uglygep17.i175, align 1 ; [#uses=1]
+ %uglygep7.i172 = getelementptr i8* %scevgep267268, i32 2 ; [#uses=1]
+ store i8 %233, i8* %uglygep7.i172, align 1
+ %scevgep273 = getelementptr %struct.btOptimizedBvhNode* %230, i32 %nodeIndex19.0222 ; [#uses=1]
+ %scevgep1314.i174 = bitcast %struct.btOptimizedBvhNode* %scevgep273 to i8* ; [#uses=1]
+ %234 = load i8* %scevgep1314.i174, align 1 ; [#uses=1]
+ %uglygep.i171 = getelementptr i8* %scevgep267268, i32 3 ; [#uses=1]
+ store i8 %234, i8* %uglygep.i171, align 1
+ %scevgep291 = getelementptr %struct.btOptimizedBvhNode* %230, i32 %nodeIndex19.0222, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep291292 = bitcast float* %scevgep291 to i8* ; [#uses=4]
+ %uglygep23.1.i187 = getelementptr i8* %scevgep291292, i32 3 ; [#uses=1]
+ %235 = load i8* %uglygep23.1.i187, align 1 ; [#uses=1]
+ %scevgep281 = getelementptr %struct.btOptimizedBvhNode* %229, i32 %nodeIndex19.0222, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i179 = bitcast float* %scevgep281 to i8* ; [#uses=4]
+ store i8 %235, i8* %scevgep4.1.i179, align 1
+ %uglygep20.1.i186 = getelementptr i8* %scevgep291292, i32 2 ; [#uses=1]
+ %236 = load i8* %uglygep20.1.i186, align 1 ; [#uses=1]
+ %uglygep10.1.i182 = getelementptr i8* %scevgep4.1.i179, i32 1 ; [#uses=1]
+ store i8 %236, i8* %uglygep10.1.i182, align 1
+ %uglygep17.1.i185 = getelementptr i8* %scevgep291292, i32 1 ; [#uses=1]
+ %237 = load i8* %uglygep17.1.i185, align 1 ; [#uses=1]
+ %uglygep7.1.i181 = getelementptr i8* %scevgep4.1.i179, i32 2 ; [#uses=1]
+ store i8 %237, i8* %uglygep7.1.i181, align 1
+ %238 = load i8* %scevgep291292, align 1 ; [#uses=1]
+ %uglygep.1.i180 = getelementptr i8* %scevgep4.1.i179, i32 3 ; [#uses=1]
+ store i8 %238, i8* %uglygep.1.i180, align 1
+ %scevgep307 = getelementptr %struct.btOptimizedBvhNode* %230, i32 %nodeIndex19.0222, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep307308 = bitcast float* %scevgep307 to i8* ; [#uses=4]
+ %uglygep23.2.i197 = getelementptr i8* %scevgep307308, i32 3 ; [#uses=1]
+ %239 = load i8* %uglygep23.2.i197, align 1 ; [#uses=1]
+ %scevgep297 = getelementptr %struct.btOptimizedBvhNode* %229, i32 %nodeIndex19.0222, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i189 = bitcast float* %scevgep297 to i8* ; [#uses=4]
+ store i8 %239, i8* %scevgep4.2.i189, align 1
+ %uglygep20.2.i196 = getelementptr i8* %scevgep307308, i32 2 ; [#uses=1]
+ %240 = load i8* %uglygep20.2.i196, align 1 ; [#uses=1]
+ %uglygep10.2.i192 = getelementptr i8* %scevgep4.2.i189, i32 1 ; [#uses=1]
+ store i8 %240, i8* %uglygep10.2.i192, align 1
+ %uglygep17.2.i195 = getelementptr i8* %scevgep307308, i32 1 ; [#uses=1]
+ %241 = load i8* %uglygep17.2.i195, align 1 ; [#uses=1]
+ %uglygep7.2.i191 = getelementptr i8* %scevgep4.2.i189, i32 2 ; [#uses=1]
+ store i8 %241, i8* %uglygep7.2.i191, align 1
+ %242 = load i8* %scevgep307308, align 1 ; [#uses=1]
+ %uglygep.2.i190 = getelementptr i8* %scevgep4.2.i189, i32 3 ; [#uses=1]
+ store i8 %242, i8* %uglygep.2.i190, align 1
+ %scevgep323 = getelementptr %struct.btOptimizedBvhNode* %230, i32 %nodeIndex19.0222, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep323324 = bitcast float* %scevgep323 to i8* ; [#uses=4]
+ %uglygep23.3.i207 = getelementptr i8* %scevgep323324, i32 3 ; [#uses=1]
+ %243 = load i8* %uglygep23.3.i207, align 1 ; [#uses=1]
+ %scevgep313 = getelementptr %struct.btOptimizedBvhNode* %229, i32 %nodeIndex19.0222, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i199 = bitcast float* %scevgep313 to i8* ; [#uses=4]
+ store i8 %243, i8* %scevgep4.3.i199, align 1
+ %uglygep20.3.i206 = getelementptr i8* %scevgep323324, i32 2 ; [#uses=1]
+ %244 = load i8* %uglygep20.3.i206, align 1 ; [#uses=1]
+ %uglygep10.3.i202 = getelementptr i8* %scevgep4.3.i199, i32 1 ; [#uses=1]
+ store i8 %244, i8* %uglygep10.3.i202, align 1
+ %uglygep17.3.i205 = getelementptr i8* %scevgep323324, i32 1 ; [#uses=1]
+ %245 = load i8* %uglygep17.3.i205, align 1 ; [#uses=1]
+ %uglygep7.3.i201 = getelementptr i8* %scevgep4.3.i199, i32 2 ; [#uses=1]
+ store i8 %245, i8* %uglygep7.3.i201, align 1
+ %246 = load i8* %scevgep323324, align 1 ; [#uses=1]
+ %uglygep.3.i200 = getelementptr i8* %scevgep4.3.i199, i32 3 ; [#uses=1]
+ store i8 %246, i8* %uglygep.3.i200, align 1
+ %247 = load %struct.btOptimizedBvhNode** %16, align 4 ; [#uses=4]
+ %248 = load %struct.btOptimizedBvhNode** %228, align 4 ; [#uses=4]
+ %scevgep339 = getelementptr %struct.btOptimizedBvhNode* %248, i32 %nodeIndex19.0222, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep339340 = bitcast float* %scevgep339 to i8* ; [#uses=4]
+ %uglygep23.i139 = getelementptr i8* %scevgep339340, i32 3 ; [#uses=1]
+ %249 = load i8* %uglygep23.i139, align 1 ; [#uses=1]
+ %scevgep329 = getelementptr %struct.btOptimizedBvhNode* %247, i32 %nodeIndex19.0222, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i132 = bitcast float* %scevgep329 to i8* ; [#uses=4]
+ store i8 %249, i8* %scevgep4.i132, align 1
+ %uglygep20.i138 = getelementptr i8* %scevgep339340, i32 2 ; [#uses=1]
+ %250 = load i8* %uglygep20.i138, align 1 ; [#uses=1]
+ %uglygep10.i135 = getelementptr i8* %scevgep4.i132, i32 1 ; [#uses=1]
+ store i8 %250, i8* %uglygep10.i135, align 1
+ %uglygep17.i137 = getelementptr i8* %scevgep339340, i32 1 ; [#uses=1]
+ %251 = load i8* %uglygep17.i137, align 1 ; [#uses=1]
+ %uglygep7.i134 = getelementptr i8* %scevgep4.i132, i32 2 ; [#uses=1]
+ store i8 %251, i8* %uglygep7.i134, align 1
+ %252 = load i8* %scevgep339340, align 1 ; [#uses=1]
+ %uglygep.i133 = getelementptr i8* %scevgep4.i132, i32 3 ; [#uses=1]
+ store i8 %252, i8* %uglygep.i133, align 1
+ %scevgep355 = getelementptr %struct.btOptimizedBvhNode* %248, i32 %nodeIndex19.0222, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep355356 = bitcast float* %scevgep355 to i8* ; [#uses=4]
+ %uglygep23.1.i149 = getelementptr i8* %scevgep355356, i32 3 ; [#uses=1]
+ %253 = load i8* %uglygep23.1.i149, align 1 ; [#uses=1]
+ %scevgep345 = getelementptr %struct.btOptimizedBvhNode* %247, i32 %nodeIndex19.0222, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i141 = bitcast float* %scevgep345 to i8* ; [#uses=4]
+ store i8 %253, i8* %scevgep4.1.i141, align 1
+ %uglygep20.1.i148 = getelementptr i8* %scevgep355356, i32 2 ; [#uses=1]
+ %254 = load i8* %uglygep20.1.i148, align 1 ; [#uses=1]
+ %uglygep10.1.i144 = getelementptr i8* %scevgep4.1.i141, i32 1 ; [#uses=1]
+ store i8 %254, i8* %uglygep10.1.i144, align 1
+ %uglygep17.1.i147 = getelementptr i8* %scevgep355356, i32 1 ; [#uses=1]
+ %255 = load i8* %uglygep17.1.i147, align 1 ; [#uses=1]
+ %uglygep7.1.i143 = getelementptr i8* %scevgep4.1.i141, i32 2 ; [#uses=1]
+ store i8 %255, i8* %uglygep7.1.i143, align 1
+ %256 = load i8* %scevgep355356, align 1 ; [#uses=1]
+ %uglygep.1.i142 = getelementptr i8* %scevgep4.1.i141, i32 3 ; [#uses=1]
+ store i8 %256, i8* %uglygep.1.i142, align 1
+ %scevgep371 = getelementptr %struct.btOptimizedBvhNode* %248, i32 %nodeIndex19.0222, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep371372 = bitcast float* %scevgep371 to i8* ; [#uses=4]
+ %uglygep23.2.i159 = getelementptr i8* %scevgep371372, i32 3 ; [#uses=1]
+ %257 = load i8* %uglygep23.2.i159, align 1 ; [#uses=1]
+ %scevgep361 = getelementptr %struct.btOptimizedBvhNode* %247, i32 %nodeIndex19.0222, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i151 = bitcast float* %scevgep361 to i8* ; [#uses=4]
+ store i8 %257, i8* %scevgep4.2.i151, align 1
+ %uglygep20.2.i158 = getelementptr i8* %scevgep371372, i32 2 ; [#uses=1]
+ %258 = load i8* %uglygep20.2.i158, align 1 ; [#uses=1]
+ %uglygep10.2.i154 = getelementptr i8* %scevgep4.2.i151, i32 1 ; [#uses=1]
+ store i8 %258, i8* %uglygep10.2.i154, align 1
+ %uglygep17.2.i157 = getelementptr i8* %scevgep371372, i32 1 ; [#uses=1]
+ %259 = load i8* %uglygep17.2.i157, align 1 ; [#uses=1]
+ %uglygep7.2.i153 = getelementptr i8* %scevgep4.2.i151, i32 2 ; [#uses=1]
+ store i8 %259, i8* %uglygep7.2.i153, align 1
+ %260 = load i8* %scevgep371372, align 1 ; [#uses=1]
+ %uglygep.2.i152 = getelementptr i8* %scevgep4.2.i151, i32 3 ; [#uses=1]
+ store i8 %260, i8* %uglygep.2.i152, align 1
+ %scevgep387 = getelementptr %struct.btOptimizedBvhNode* %248, i32 %nodeIndex19.0222, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep387388 = bitcast float* %scevgep387 to i8* ; [#uses=4]
+ %uglygep23.3.i169 = getelementptr i8* %scevgep387388, i32 3 ; [#uses=1]
+ %261 = load i8* %uglygep23.3.i169, align 1 ; [#uses=1]
+ %scevgep377 = getelementptr %struct.btOptimizedBvhNode* %247, i32 %nodeIndex19.0222, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i161 = bitcast float* %scevgep377 to i8* ; [#uses=4]
+ store i8 %261, i8* %scevgep4.3.i161, align 1
+ %uglygep20.3.i168 = getelementptr i8* %scevgep387388, i32 2 ; [#uses=1]
+ %262 = load i8* %uglygep20.3.i168, align 1 ; [#uses=1]
+ %uglygep10.3.i164 = getelementptr i8* %scevgep4.3.i161, i32 1 ; [#uses=1]
+ store i8 %262, i8* %uglygep10.3.i164, align 1
+ %uglygep17.3.i167 = getelementptr i8* %scevgep387388, i32 1 ; [#uses=1]
+ %263 = load i8* %uglygep17.3.i167, align 1 ; [#uses=1]
+ %uglygep7.3.i163 = getelementptr i8* %scevgep4.3.i161, i32 2 ; [#uses=1]
+ store i8 %263, i8* %uglygep7.3.i163, align 1
+ %264 = load i8* %scevgep387388, align 1 ; [#uses=1]
+ %uglygep.3.i162 = getelementptr i8* %scevgep4.3.i161, i32 3 ; [#uses=1]
+ store i8 %264, i8* %uglygep.3.i162, align 1
+ %265 = load %struct.btOptimizedBvhNode** %16, align 4 ; [#uses=1]
+ %266 = load %struct.btOptimizedBvhNode** %228, align 4 ; [#uses=1]
+ %scevgep393 = getelementptr %struct.btOptimizedBvhNode* %266, i32 %nodeIndex19.0222, i32 2 ; [#uses=1]
+ %267 = load i32* %scevgep393, align 4 ; [#uses=1]
+ %268 = tail call i32 @llvm.bswap.i32(i32 %267) nounwind ; [#uses=1]
+ %scevgep394 = getelementptr %struct.btOptimizedBvhNode* %265, i32 %nodeIndex19.0222, i32 2 ; [#uses=1]
+ store i32 %268, i32* %scevgep394, align 4
+ %269 = load %struct.btOptimizedBvhNode** %16, align 4 ; [#uses=1]
+ %270 = load %struct.btOptimizedBvhNode** %228, align 4 ; [#uses=1]
+ %scevgep395 = getelementptr %struct.btOptimizedBvhNode* %270, i32 %nodeIndex19.0222, i32 3 ; [#uses=1]
+ %271 = load i32* %scevgep395, align 4 ; [#uses=1]
+ %272 = tail call i32 @llvm.bswap.i32(i32 %271) nounwind ; [#uses=1]
+ %scevgep396 = getelementptr %struct.btOptimizedBvhNode* %269, i32 %nodeIndex19.0222, i32 3 ; [#uses=1]
+ store i32 %272, i32* %scevgep396, align 4
+ %273 = load %struct.btOptimizedBvhNode** %16, align 4 ; [#uses=1]
+ %274 = load %struct.btOptimizedBvhNode** %228, align 4 ; [#uses=1]
+ %scevgep397 = getelementptr %struct.btOptimizedBvhNode* %274, i32 %nodeIndex19.0222, i32 4 ; [#uses=1]
+ %275 = load i32* %scevgep397, align 4 ; [#uses=1]
+ %276 = tail call i32 @llvm.bswap.i32(i32 %275) nounwind ; [#uses=1]
+ %scevgep398 = getelementptr %struct.btOptimizedBvhNode* %273, i32 %nodeIndex19.0222, i32 4 ; [#uses=1]
+ store i32 %276, i32* %scevgep398, align 4
+ %277 = add nsw i32 %nodeIndex19.0222, 1 ; [#uses=2]
+ %exitcond264 = icmp eq i32 %277, %164 ; [#uses=1]
+ br i1 %exitcond264, label %bb26, label %bb20.bb20_crit_edge
+
+bb20.bb20_crit_edge: ; preds = %bb20
+ %.pre = load %struct.btOptimizedBvhNode** %16, align 4 ; [#uses=1]
+ br label %bb20
+
+bb.nph231: ; preds = %bb25.preheader
+ %278 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=5]
+ br label %bb24
+
+bb24: ; preds = %bb24.bb24_crit_edge, %bb.nph231
+ %279 = phi %struct.btOptimizedBvhNode* [ %226, %bb.nph231 ], [ %.pre464, %bb24.bb24_crit_edge ] ; [#uses=4]
+ %nodeIndex23.0230 = phi i32 [ 0, %bb.nph231 ], [ %300, %bb24.bb24_crit_edge ] ; [#uses=23]
+ %280 = load %struct.btOptimizedBvhNode** %278, align 4 ; [#uses=4]
+ %scevgep442443 = getelementptr inbounds %struct.btOptimizedBvhNode* %280, i32 %nodeIndex23.0230, i32 0, i32 0, i32 0 ; [#uses=1]
+ %281 = load float* %scevgep442443, align 4 ; [#uses=1]
+ %scevgep440441 = getelementptr inbounds %struct.btOptimizedBvhNode* %279, i32 %nodeIndex23.0230, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %281, float* %scevgep440441, align 4
+ %scevgep445 = getelementptr %struct.btOptimizedBvhNode* %280, i32 %nodeIndex23.0230, i32 0, i32 0, i32 1 ; [#uses=1]
+ %282 = load float* %scevgep445, align 4 ; [#uses=1]
+ %scevgep444 = getelementptr %struct.btOptimizedBvhNode* %279, i32 %nodeIndex23.0230, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %282, float* %scevgep444, align 4
+ %scevgep447 = getelementptr %struct.btOptimizedBvhNode* %280, i32 %nodeIndex23.0230, i32 0, i32 0, i32 2 ; [#uses=1]
+ %283 = load float* %scevgep447, align 4 ; [#uses=1]
+ %scevgep446 = getelementptr %struct.btOptimizedBvhNode* %279, i32 %nodeIndex23.0230, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %283, float* %scevgep446, align 4
+ %scevgep449 = getelementptr %struct.btOptimizedBvhNode* %280, i32 %nodeIndex23.0230, i32 0, i32 0, i32 3 ; [#uses=1]
+ %284 = load float* %scevgep449, align 4 ; [#uses=1]
+ %scevgep448 = getelementptr %struct.btOptimizedBvhNode* %279, i32 %nodeIndex23.0230, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %284, float* %scevgep448, align 4
+ %285 = load %struct.btOptimizedBvhNode** %16, align 4 ; [#uses=4]
+ %286 = load %struct.btOptimizedBvhNode** %278, align 4 ; [#uses=4]
+ %scevgep451 = getelementptr %struct.btOptimizedBvhNode* %286, i32 %nodeIndex23.0230, i32 1, i32 0, i32 0 ; [#uses=1]
+ %287 = load float* %scevgep451, align 4 ; [#uses=1]
+ %scevgep450 = getelementptr %struct.btOptimizedBvhNode* %285, i32 %nodeIndex23.0230, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %287, float* %scevgep450, align 4
+ %scevgep453 = getelementptr %struct.btOptimizedBvhNode* %286, i32 %nodeIndex23.0230, i32 1, i32 0, i32 1 ; [#uses=1]
+ %288 = load float* %scevgep453, align 4 ; [#uses=1]
+ %scevgep452 = getelementptr %struct.btOptimizedBvhNode* %285, i32 %nodeIndex23.0230, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %288, float* %scevgep452, align 4
+ %scevgep455 = getelementptr %struct.btOptimizedBvhNode* %286, i32 %nodeIndex23.0230, i32 1, i32 0, i32 2 ; [#uses=1]
+ %289 = load float* %scevgep455, align 4 ; [#uses=1]
+ %scevgep454 = getelementptr %struct.btOptimizedBvhNode* %285, i32 %nodeIndex23.0230, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %289, float* %scevgep454, align 4
+ %scevgep457 = getelementptr %struct.btOptimizedBvhNode* %286, i32 %nodeIndex23.0230, i32 1, i32 0, i32 3 ; [#uses=1]
+ %290 = load float* %scevgep457, align 4 ; [#uses=1]
+ %scevgep456 = getelementptr %struct.btOptimizedBvhNode* %285, i32 %nodeIndex23.0230, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %290, float* %scevgep456, align 4
+ %291 = load %struct.btOptimizedBvhNode** %16, align 4 ; [#uses=1]
+ %292 = load %struct.btOptimizedBvhNode** %278, align 4 ; [#uses=1]
+ %scevgep458 = getelementptr %struct.btOptimizedBvhNode* %292, i32 %nodeIndex23.0230, i32 2 ; [#uses=1]
+ %293 = load i32* %scevgep458, align 4 ; [#uses=1]
+ %scevgep459 = getelementptr %struct.btOptimizedBvhNode* %291, i32 %nodeIndex23.0230, i32 2 ; [#uses=1]
+ store i32 %293, i32* %scevgep459, align 4
+ %294 = load %struct.btOptimizedBvhNode** %16, align 4 ; [#uses=1]
+ %295 = load %struct.btOptimizedBvhNode** %278, align 4 ; [#uses=1]
+ %scevgep460 = getelementptr %struct.btOptimizedBvhNode* %295, i32 %nodeIndex23.0230, i32 3 ; [#uses=1]
+ %296 = load i32* %scevgep460, align 4 ; [#uses=1]
+ %scevgep461 = getelementptr %struct.btOptimizedBvhNode* %294, i32 %nodeIndex23.0230, i32 3 ; [#uses=1]
+ store i32 %296, i32* %scevgep461, align 4
+ %297 = load %struct.btOptimizedBvhNode** %16, align 4 ; [#uses=1]
+ %298 = load %struct.btOptimizedBvhNode** %278, align 4 ; [#uses=1]
+ %scevgep462 = getelementptr %struct.btOptimizedBvhNode* %298, i32 %nodeIndex23.0230, i32 4 ; [#uses=1]
+ %299 = load i32* %scevgep462, align 4 ; [#uses=1]
+ %scevgep463 = getelementptr %struct.btOptimizedBvhNode* %297, i32 %nodeIndex23.0230, i32 4 ; [#uses=1]
+ store i32 %299, i32* %scevgep463, align 4
+ %300 = add nsw i32 %nodeIndex23.0230, 1 ; [#uses=2]
+ %exitcond439 = icmp eq i32 %300, %164 ; [#uses=1]
+ br i1 %exitcond439, label %bb26, label %bb24.bb24_crit_edge
+
+bb24.bb24_crit_edge: ; preds = %bb24
+ %.pre464 = load %struct.btOptimizedBvhNode** %16, align 4 ; [#uses=1]
+ br label %bb24
+
+bb26: ; preds = %bb24, %bb20, %bb21.preheader, %bb25.preheader
+ %301 = shl i32 %164, 6 ; [#uses=1]
+ %302 = load %struct.btOptimizedBvhNode** %16, align 4 ; [#uses=2]
+ %303 = icmp eq %struct.btOptimizedBvhNode* %302, null ; [#uses=1]
+ br i1 %303, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit, label %bb.i.i.i129
+
+bb.i.i.i129: ; preds = %bb26
+ %304 = load i8* %14, align 4 ; [#uses=1]
+ %toBool.i.i.i128 = icmp eq i8 %304, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i128, label %bb2.i.i.i131, label %bb1.i.i.i130
+
+bb1.i.i.i130: ; preds = %bb.i.i.i129
+ %305 = bitcast %struct.btOptimizedBvhNode* %302 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %305)
+ br label %bb2.i.i.i131
+
+bb2.i.i.i131: ; preds = %bb1.i.i.i130, %bb.i.i.i129
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %16, align 4
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit: ; preds = %bb2.i.i.i131, %bb26
+ store i8 0, i8* %14, align 4
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %16, align 4
+ store i32 0, i32* %18, align 4
+ store i32 0, i32* %20, align 4
+ br label %bb27
+
+bb27: ; preds = %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit217
+ %.sum42.pn.in = phi i32 [ %221, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit217 ], [ %301, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit ] ; [#uses=1]
+ %.sum42.pn = add i32 %.sum42.pn.in, 172 ; [#uses=1]
+ %nodeData.0 = getelementptr inbounds i8* %o_alignedDataBuffer, i32 %.sum42.pn ; [#uses=1]
+ %306 = load i32* %2, align 4 ; [#uses=2]
+ %307 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=2]
+ %308 = icmp eq %struct.btBvhSubtreeInfo* %307, null ; [#uses=1]
+ br i1 %308, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit127, label %bb.i.i.i124
+
+bb.i.i.i124: ; preds = %bb27
+ %309 = load i8* %37, align 4 ; [#uses=1]
+ %toBool.i.i.i123 = icmp eq i8 %309, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i123, label %bb2.i.i.i126, label %bb1.i.i.i125
+
+bb1.i.i.i125: ; preds = %bb.i.i.i124
+ %310 = bitcast %struct.btBvhSubtreeInfo* %307 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %310)
+ br label %bb2.i.i.i126
+
+bb2.i.i.i126: ; preds = %bb1.i.i.i125, %bb.i.i.i124
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %39, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit127
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit127: ; preds = %bb2.i.i.i126, %bb27
+ store i8 0, i8* %37, align 4
+ %311 = bitcast i8* %nodeData.0 to %struct.btBvhSubtreeInfo* ; [#uses=3]
+ store %struct.btBvhSubtreeInfo* %311, %struct.btBvhSubtreeInfo** %39, align 4
+ store i32 %306, i32* %41, align 4
+ store i32 %306, i32* %43, align 4
+ %312 = load i32* %2, align 4 ; [#uses=1]
+ %313 = icmp sgt i32 %312, 0 ; [#uses=2]
+ br i1 %toBool, label %bb35.preheader, label %bb31.preheader
+
+bb35.preheader: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit127
+ br i1 %313, label %bb.nph228, label %bb36
+
+bb31.preheader: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit127
+ br i1 %313, label %bb.nph225, label %bb36
+
+bb.nph225: ; preds = %bb31.preheader
+ %314 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=8]
+ br label %bb30
+
+bb30: ; preds = %bb30.bb30_crit_edge, %bb.nph225
+ %315 = phi %struct.btBvhSubtreeInfo* [ %311, %bb.nph225 ], [ %.pre465, %bb30.bb30_crit_edge ] ; [#uses=1]
+ %i.0224 = phi i32 [ 0, %bb.nph225 ], [ %347, %bb30.bb30_crit_edge ] ; [#uses=17]
+ %316 = load %struct.btBvhSubtreeInfo** %314, align 4 ; [#uses=1]
+ %scevgep399400 = getelementptr inbounds %struct.btBvhSubtreeInfo* %316, i32 %i.0224, i32 0, i32 0 ; [#uses=1]
+ %317 = load i16* %scevgep399400, align 2 ; [#uses=1]
+ %318 = tail call i16 @llvm.bswap.i16(i16 %317) nounwind ; [#uses=1]
+ %scevgep401402 = getelementptr inbounds %struct.btBvhSubtreeInfo* %315, i32 %i.0224, i32 0, i32 0 ; [#uses=1]
+ store i16 %318, i16* %scevgep401402, align 2
+ %319 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %320 = load %struct.btBvhSubtreeInfo** %314, align 4 ; [#uses=1]
+ %scevgep403 = getelementptr %struct.btBvhSubtreeInfo* %320, i32 %i.0224, i32 0, i32 1 ; [#uses=1]
+ %321 = load i16* %scevgep403, align 2 ; [#uses=1]
+ %322 = tail call i16 @llvm.bswap.i16(i16 %321) nounwind ; [#uses=1]
+ %scevgep404 = getelementptr %struct.btBvhSubtreeInfo* %319, i32 %i.0224, i32 0, i32 1 ; [#uses=1]
+ store i16 %322, i16* %scevgep404, align 2
+ %323 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %324 = load %struct.btBvhSubtreeInfo** %314, align 4 ; [#uses=1]
+ %scevgep405 = getelementptr %struct.btBvhSubtreeInfo* %324, i32 %i.0224, i32 0, i32 2 ; [#uses=1]
+ %325 = load i16* %scevgep405, align 2 ; [#uses=1]
+ %326 = tail call i16 @llvm.bswap.i16(i16 %325) nounwind ; [#uses=1]
+ %scevgep406 = getelementptr %struct.btBvhSubtreeInfo* %323, i32 %i.0224, i32 0, i32 2 ; [#uses=1]
+ store i16 %326, i16* %scevgep406, align 2
+ %327 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %328 = load %struct.btBvhSubtreeInfo** %314, align 4 ; [#uses=1]
+ %scevgep407 = getelementptr %struct.btBvhSubtreeInfo* %328, i32 %i.0224, i32 1, i32 0 ; [#uses=1]
+ %329 = load i16* %scevgep407, align 2 ; [#uses=1]
+ %330 = tail call i16 @llvm.bswap.i16(i16 %329) nounwind ; [#uses=1]
+ %scevgep408 = getelementptr %struct.btBvhSubtreeInfo* %327, i32 %i.0224, i32 1, i32 0 ; [#uses=1]
+ store i16 %330, i16* %scevgep408, align 2
+ %331 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %332 = load %struct.btBvhSubtreeInfo** %314, align 4 ; [#uses=1]
+ %scevgep409 = getelementptr %struct.btBvhSubtreeInfo* %332, i32 %i.0224, i32 1, i32 1 ; [#uses=1]
+ %333 = load i16* %scevgep409, align 2 ; [#uses=1]
+ %334 = tail call i16 @llvm.bswap.i16(i16 %333) nounwind ; [#uses=1]
+ %scevgep410 = getelementptr %struct.btBvhSubtreeInfo* %331, i32 %i.0224, i32 1, i32 1 ; [#uses=1]
+ store i16 %334, i16* %scevgep410, align 2
+ %335 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %336 = load %struct.btBvhSubtreeInfo** %314, align 4 ; [#uses=1]
+ %scevgep411 = getelementptr %struct.btBvhSubtreeInfo* %336, i32 %i.0224, i32 1, i32 2 ; [#uses=1]
+ %337 = load i16* %scevgep411, align 2 ; [#uses=1]
+ %338 = tail call i16 @llvm.bswap.i16(i16 %337) nounwind ; [#uses=1]
+ %scevgep412 = getelementptr %struct.btBvhSubtreeInfo* %335, i32 %i.0224, i32 1, i32 2 ; [#uses=1]
+ store i16 %338, i16* %scevgep412, align 2
+ %339 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %340 = load %struct.btBvhSubtreeInfo** %314, align 4 ; [#uses=1]
+ %scevgep413 = getelementptr %struct.btBvhSubtreeInfo* %340, i32 %i.0224, i32 2 ; [#uses=1]
+ %341 = load i32* %scevgep413, align 4 ; [#uses=1]
+ %342 = tail call i32 @llvm.bswap.i32(i32 %341) nounwind ; [#uses=1]
+ %scevgep414 = getelementptr %struct.btBvhSubtreeInfo* %339, i32 %i.0224, i32 2 ; [#uses=1]
+ store i32 %342, i32* %scevgep414, align 4
+ %343 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %344 = load %struct.btBvhSubtreeInfo** %314, align 4 ; [#uses=1]
+ %scevgep415 = getelementptr %struct.btBvhSubtreeInfo* %344, i32 %i.0224, i32 3 ; [#uses=1]
+ %345 = load i32* %scevgep415, align 4 ; [#uses=1]
+ %346 = tail call i32 @llvm.bswap.i32(i32 %345) nounwind ; [#uses=1]
+ %scevgep416 = getelementptr %struct.btBvhSubtreeInfo* %343, i32 %i.0224, i32 3 ; [#uses=1]
+ store i32 %346, i32* %scevgep416, align 4
+ %347 = add nsw i32 %i.0224, 1 ; [#uses=2]
+ %348 = load i32* %2, align 4 ; [#uses=1]
+ %349 = icmp sgt i32 %348, %347 ; [#uses=1]
+ br i1 %349, label %bb30.bb30_crit_edge, label %bb36
+
+bb30.bb30_crit_edge: ; preds = %bb30
+ %.pre465 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ br label %bb30
+
+bb.nph228: ; preds = %bb35.preheader
+ %350 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=8]
+ br label %bb34
+
+bb34: ; preds = %bb34.bb34_crit_edge, %bb.nph228
+ %351 = phi %struct.btBvhSubtreeInfo* [ %311, %bb.nph228 ], [ %.pre466, %bb34.bb34_crit_edge ] ; [#uses=1]
+ %i33.0227 = phi i32 [ 0, %bb.nph228 ], [ %378, %bb34.bb34_crit_edge ] ; [#uses=20]
+ %352 = load %struct.btBvhSubtreeInfo** %350, align 4 ; [#uses=1]
+ %scevgep417418 = getelementptr inbounds %struct.btBvhSubtreeInfo* %352, i32 %i33.0227, i32 0, i32 0 ; [#uses=1]
+ %353 = load i16* %scevgep417418, align 2 ; [#uses=1]
+ %scevgep419420 = getelementptr inbounds %struct.btBvhSubtreeInfo* %351, i32 %i33.0227, i32 0, i32 0 ; [#uses=1]
+ store i16 %353, i16* %scevgep419420, align 2
+ %354 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %355 = load %struct.btBvhSubtreeInfo** %350, align 4 ; [#uses=1]
+ %scevgep421 = getelementptr %struct.btBvhSubtreeInfo* %355, i32 %i33.0227, i32 0, i32 1 ; [#uses=1]
+ %356 = load i16* %scevgep421, align 2 ; [#uses=1]
+ %scevgep422 = getelementptr %struct.btBvhSubtreeInfo* %354, i32 %i33.0227, i32 0, i32 1 ; [#uses=1]
+ store i16 %356, i16* %scevgep422, align 2
+ %357 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %358 = load %struct.btBvhSubtreeInfo** %350, align 4 ; [#uses=1]
+ %scevgep423 = getelementptr %struct.btBvhSubtreeInfo* %358, i32 %i33.0227, i32 0, i32 2 ; [#uses=1]
+ %359 = load i16* %scevgep423, align 2 ; [#uses=1]
+ %scevgep424 = getelementptr %struct.btBvhSubtreeInfo* %357, i32 %i33.0227, i32 0, i32 2 ; [#uses=1]
+ store i16 %359, i16* %scevgep424, align 2
+ %360 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %361 = load %struct.btBvhSubtreeInfo** %350, align 4 ; [#uses=1]
+ %scevgep425 = getelementptr %struct.btBvhSubtreeInfo* %361, i32 %i33.0227, i32 1, i32 0 ; [#uses=1]
+ %362 = load i16* %scevgep425, align 2 ; [#uses=1]
+ %scevgep426 = getelementptr %struct.btBvhSubtreeInfo* %360, i32 %i33.0227, i32 1, i32 0 ; [#uses=1]
+ store i16 %362, i16* %scevgep426, align 2
+ %363 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %364 = load %struct.btBvhSubtreeInfo** %350, align 4 ; [#uses=1]
+ %scevgep427 = getelementptr %struct.btBvhSubtreeInfo* %364, i32 %i33.0227, i32 1, i32 1 ; [#uses=1]
+ %365 = load i16* %scevgep427, align 2 ; [#uses=1]
+ %scevgep428 = getelementptr %struct.btBvhSubtreeInfo* %363, i32 %i33.0227, i32 1, i32 1 ; [#uses=1]
+ store i16 %365, i16* %scevgep428, align 2
+ %366 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %367 = load %struct.btBvhSubtreeInfo** %350, align 4 ; [#uses=1]
+ %scevgep429 = getelementptr %struct.btBvhSubtreeInfo* %367, i32 %i33.0227, i32 1, i32 2 ; [#uses=1]
+ %368 = load i16* %scevgep429, align 2 ; [#uses=1]
+ %scevgep430 = getelementptr %struct.btBvhSubtreeInfo* %366, i32 %i33.0227, i32 1, i32 2 ; [#uses=1]
+ store i16 %368, i16* %scevgep430, align 2
+ %369 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %370 = load %struct.btBvhSubtreeInfo** %350, align 4 ; [#uses=1]
+ %scevgep431 = getelementptr %struct.btBvhSubtreeInfo* %370, i32 %i33.0227, i32 2 ; [#uses=1]
+ %371 = load i32* %scevgep431, align 4 ; [#uses=1]
+ %scevgep432 = getelementptr %struct.btBvhSubtreeInfo* %369, i32 %i33.0227, i32 2 ; [#uses=1]
+ store i32 %371, i32* %scevgep432, align 4
+ %372 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %373 = load %struct.btBvhSubtreeInfo** %350, align 4 ; [#uses=1]
+ %scevgep433 = getelementptr %struct.btBvhSubtreeInfo* %373, i32 %i33.0227, i32 3 ; [#uses=1]
+ %374 = load i32* %scevgep433, align 4 ; [#uses=1]
+ %scevgep434 = getelementptr %struct.btBvhSubtreeInfo* %372, i32 %i33.0227, i32 3 ; [#uses=1]
+ store i32 %374, i32* %scevgep434, align 4
+ %375 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %scevgep435 = getelementptr %struct.btBvhSubtreeInfo* %375, i32 %i33.0227, i32 4, i32 0 ; [#uses=1]
+ store i32 0, i32* %scevgep435, align 4
+ %376 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %scevgep436 = getelementptr %struct.btBvhSubtreeInfo* %376, i32 %i33.0227, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %scevgep436, align 4
+ %377 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ %scevgep437 = getelementptr %struct.btBvhSubtreeInfo* %377, i32 %i33.0227, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %scevgep437, align 4
+ %378 = add nsw i32 %i33.0227, 1 ; [#uses=2]
+ %379 = load i32* %2, align 4 ; [#uses=1]
+ %380 = icmp sgt i32 %379, %378 ; [#uses=1]
+ br i1 %380, label %bb34.bb34_crit_edge, label %bb36
+
+bb34.bb34_crit_edge: ; preds = %bb34
+ %.pre466 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=1]
+ br label %bb34
+
+bb36: ; preds = %bb34, %bb30, %bb31.preheader, %bb35.preheader
+ %381 = load %struct.btBvhSubtreeInfo** %39, align 4 ; [#uses=2]
+ %382 = icmp eq %struct.btBvhSubtreeInfo* %381, null ; [#uses=1]
+ br i1 %382, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb36
+ %383 = load i8* %37, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %383, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %384 = bitcast %struct.btBvhSubtreeInfo* %381 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %384)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %39, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit: ; preds = %bb2.i.i.i, %bb36
+ store i8 0, i8* %37, align 4
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %39, align 4
+ store i32 0, i32* %41, align 4
+ store i32 0, i32* %43, align 4
+ %385 = bitcast i8* %o_alignedDataBuffer to i8** ; [#uses=1]
+ store i8* null, i8** %385, align 4
+ ret i8 1
+}
+
+; [#uses=0]
+define void @_ZN14btQuantizedBvhC1ERS_b(%struct.btQuantizedBvh* %this, %struct.btQuantizedBvh* nocapture %self, i8 zeroext %unnamed_arg) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV14btQuantizedBvh, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %1, align 4
+ %4 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuantizedBvh* %self, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 277, i32* %37, align 4
+ %38 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ store i8 1, i8* %38, align 4
+ %39 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=1]
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %39, align 4
+ %40 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 1 ; [#uses=1]
+ store i32 0, i32* %40, align 4
+ %41 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 2 ; [#uses=1]
+ store i32 0, i32* %41, align 4
+ %42 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %42, align 4
+ %43 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %43, align 4
+ %44 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %44, align 4
+ %45 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %45, align 4
+ %46 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %46, align 4
+ %47 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=1]
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %47, align 4
+ %48 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %48, align 4
+ %49 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %49, align 4
+ %50 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %50, align 4
+ %51 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %51, align 4
+ %52 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %52, align 4
+ %53 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %53, align 4
+ %54 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ store i8 1, i8* %54, align 4
+ %55 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %55, align 4
+ %56 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=1]
+ store i32 0, i32* %56, align 4
+ %57 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 2 ; [#uses=1]
+ store i32 0, i32* %57, align 4
+ ret void
+}
+
+; [#uses=1]
+define %struct.btQuantizedBvh* @_ZN14btQuantizedBvh18deSerializeInPlaceEPvjb(i8* %i_alignedDataBuffer, i32 %i_dataBufferSize, i8 zeroext %i_swapEndian) align 2 {
+entry:
+ %0 = icmp eq i8* %i_alignedDataBuffer, null ; [#uses=1]
+ br i1 %0, label %bb28, label %bb1
+
+bb1: ; preds = %entry
+ %1 = bitcast i8* %i_alignedDataBuffer to %struct.btQuantizedBvh* ; [#uses=3]
+ %toBool = icmp eq i8 %i_swapEndian, 0 ; [#uses=4]
+ br i1 %toBool, label %bb1.bb3_crit_edge, label %bb2
+
+bb1.bb3_crit_edge: ; preds = %bb1
+ %.phi.trans.insert = getelementptr inbounds i8* %i_alignedDataBuffer, i32 168 ; [#uses=1]
+ %.phi.trans.insert802 = bitcast i8* %.phi.trans.insert to i32* ; [#uses=1]
+ %.pre = load i32* %.phi.trans.insert802, align 4 ; [#uses=1]
+ %.phi.trans.insert803 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 56 ; [#uses=1]
+ %.phi.trans.insert804 = bitcast i8* %.phi.trans.insert803 to i32* ; [#uses=1]
+ %.pre805 = load i32* %.phi.trans.insert804, align 4 ; [#uses=1]
+ br label %bb3
+
+bb2: ; preds = %bb1
+ %2 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 56 ; [#uses=1]
+ %3 = bitcast i8* %2 to i32* ; [#uses=2]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %5 = tail call i32 @llvm.bswap.i32(i32 %4) nounwind ; [#uses=2]
+ store i32 %5, i32* %3, align 4
+ %6 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 4 ; [#uses=2]
+ %uglygep17.i = getelementptr i8* %i_alignedDataBuffer, i32 5 ; [#uses=1]
+ %uglygep20.i = getelementptr i8* %i_alignedDataBuffer, i32 6 ; [#uses=1]
+ %uglygep23.i = getelementptr i8* %i_alignedDataBuffer, i32 7 ; [#uses=1]
+ %7 = load i8* %uglygep23.i, align 1 ; [#uses=1]
+ %tmp290 = zext i8 %7 to i128 ; [#uses=1]
+ %8 = load i8* %uglygep20.i, align 1 ; [#uses=1]
+ %tmp294 = zext i8 %8 to i128 ; [#uses=1]
+ %tmp295 = shl i128 %tmp294, 8 ; [#uses=1]
+ %9 = load i8* %uglygep17.i, align 1 ; [#uses=1]
+ %tmp299 = zext i8 %9 to i128 ; [#uses=1]
+ %tmp300 = shl i128 %tmp299, 16 ; [#uses=1]
+ %10 = load i8* %6, align 1 ; [#uses=1]
+ %tmp304 = zext i8 %10 to i128 ; [#uses=1]
+ %tmp305 = shl i128 %tmp304, 24 ; [#uses=1]
+ %ins297 = or i128 %tmp295, %tmp290 ; [#uses=1]
+ %ins302 = or i128 %ins297, %tmp300 ; [#uses=1]
+ %ins307 = or i128 %ins302, %tmp305 ; [#uses=2]
+ %scevgep13.1.i = getelementptr i8* %i_alignedDataBuffer, i32 8 ; [#uses=2]
+ %uglygep17.1.i = getelementptr i8* %i_alignedDataBuffer, i32 9 ; [#uses=1]
+ %uglygep20.1.i = getelementptr i8* %i_alignedDataBuffer, i32 10 ; [#uses=1]
+ %uglygep23.1.i = getelementptr i8* %i_alignedDataBuffer, i32 11 ; [#uses=1]
+ %11 = load i8* %uglygep23.1.i, align 1 ; [#uses=1]
+ %tmp270 = zext i8 %11 to i128 ; [#uses=1]
+ %tmp271 = shl i128 %tmp270, 32 ; [#uses=1]
+ %12 = load i8* %uglygep20.1.i, align 1 ; [#uses=1]
+ %tmp275 = zext i8 %12 to i128 ; [#uses=1]
+ %tmp276 = shl i128 %tmp275, 40 ; [#uses=1]
+ %13 = load i8* %uglygep17.1.i, align 1 ; [#uses=1]
+ %tmp280 = zext i8 %13 to i128 ; [#uses=1]
+ %tmp281 = shl i128 %tmp280, 48 ; [#uses=1]
+ %14 = load i8* %scevgep13.1.i, align 1 ; [#uses=1]
+ %tmp285 = zext i8 %14 to i128 ; [#uses=1]
+ %tmp286 = shl i128 %tmp285, 56 ; [#uses=1]
+ %scevgep13.2.i = getelementptr i8* %i_alignedDataBuffer, i32 12 ; [#uses=2]
+ %uglygep17.2.i = getelementptr i8* %i_alignedDataBuffer, i32 13 ; [#uses=1]
+ %uglygep20.2.i = getelementptr i8* %i_alignedDataBuffer, i32 14 ; [#uses=1]
+ %uglygep23.2.i = getelementptr i8* %i_alignedDataBuffer, i32 15 ; [#uses=1]
+ %15 = load i8* %uglygep23.2.i, align 1 ; [#uses=1]
+ %tmp246 = zext i8 %15 to i128 ; [#uses=1]
+ %tmp247 = shl i128 %tmp246, 64 ; [#uses=1]
+ %16 = load i8* %uglygep20.2.i, align 1 ; [#uses=1]
+ %tmp251 = zext i8 %16 to i128 ; [#uses=1]
+ %tmp252 = shl i128 %tmp251, 72 ; [#uses=1]
+ %17 = load i8* %uglygep17.2.i, align 1 ; [#uses=1]
+ %tmp256 = zext i8 %17 to i128 ; [#uses=1]
+ %tmp257 = shl i128 %tmp256, 80 ; [#uses=1]
+ %18 = load i8* %scevgep13.2.i, align 1 ; [#uses=1]
+ %tmp261 = zext i8 %18 to i128 ; [#uses=1]
+ %tmp262 = shl i128 %tmp261, 88 ; [#uses=1]
+ %scevgep13.3.i = getelementptr i8* %i_alignedDataBuffer, i32 16 ; [#uses=2]
+ %uglygep17.3.i = getelementptr i8* %i_alignedDataBuffer, i32 17 ; [#uses=1]
+ %uglygep20.3.i = getelementptr i8* %i_alignedDataBuffer, i32 18 ; [#uses=1]
+ %uglygep23.3.i = getelementptr i8* %i_alignedDataBuffer, i32 19 ; [#uses=1]
+ %19 = load i8* %uglygep23.3.i, align 1 ; [#uses=1]
+ %tmp224 = zext i8 %19 to i128 ; [#uses=1]
+ %tmp225 = shl i128 %tmp224, 96 ; [#uses=1]
+ %20 = load i8* %uglygep20.3.i, align 1 ; [#uses=1]
+ %tmp227 = zext i8 %20 to i128 ; [#uses=1]
+ %tmp228 = shl i128 %tmp227, 104 ; [#uses=1]
+ %21 = load i8* %uglygep17.3.i, align 1 ; [#uses=1]
+ %tmp232 = zext i8 %21 to i128 ; [#uses=1]
+ %tmp233 = shl i128 %tmp232, 112 ; [#uses=1]
+ %22 = load i8* %scevgep13.3.i, align 1 ; [#uses=1]
+ %tmp237 = zext i8 %22 to i128 ; [#uses=1]
+ %tmp238 = shl i128 %tmp237, 120 ; [#uses=1]
+ %mask277 = or i128 %ins307, %tmp271 ; [#uses=1]
+ %mask282.masked.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask277, %tmp276 ; [#uses=1]
+ %mask287.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask282.masked.masked.masked.masked.masked.masked.masked.masked.masked, %tmp281 ; [#uses=1]
+ %mask248.masked.masked.masked.masked.masked.masked.masked = or i128 %mask287.masked.masked.masked.masked.masked.masked.masked.masked, %tmp286 ; [#uses=2]
+ %mask253.masked.masked.masked.masked.masked.masked = or i128 %mask248.masked.masked.masked.masked.masked.masked.masked, %tmp247 ; [#uses=1]
+ %mask258.masked.masked.masked.masked.masked = or i128 %mask253.masked.masked.masked.masked.masked.masked, %tmp252 ; [#uses=1]
+ %mask263.masked.masked.masked.masked = or i128 %mask258.masked.masked.masked.masked.masked, %tmp257 ; [#uses=1]
+ %mask.masked.masked.masked = or i128 %mask263.masked.masked.masked.masked, %tmp262 ; [#uses=2]
+ %mask229.masked.masked = or i128 %mask.masked.masked.masked, %tmp225 ; [#uses=1]
+ %mask234.masked = or i128 %mask229.masked.masked, %tmp228 ; [#uses=1]
+ %mask239 = or i128 %mask234.masked, %tmp233 ; [#uses=1]
+ %ins240 = or i128 %mask239, %tmp238 ; [#uses=1]
+ %tmp218 = trunc i128 %ins307 to i32 ; [#uses=1]
+ %tmp219 = bitcast i32 %tmp218 to float ; [#uses=1]
+ %tmp266 = lshr i128 %mask248.masked.masked.masked.masked.masked.masked.masked, 32 ; [#uses=1]
+ %tmp267 = trunc i128 %tmp266 to i32 ; [#uses=1]
+ %tmp268 = bitcast i32 %tmp267 to float ; [#uses=1]
+ %tmp242 = lshr i128 %mask.masked.masked.masked, 64 ; [#uses=1]
+ %tmp243 = trunc i128 %tmp242 to i32 ; [#uses=1]
+ %tmp244 = bitcast i32 %tmp243 to float ; [#uses=1]
+ %tmp221 = lshr i128 %ins240, 96 ; [#uses=1]
+ %tmp222 = trunc i128 %tmp221 to i32 ; [#uses=1]
+ %tmp223 = bitcast i32 %tmp222 to float ; [#uses=1]
+ %23 = bitcast i8* %6 to float* ; [#uses=1]
+ store float %tmp219, float* %23, align 4
+ %24 = bitcast i8* %scevgep13.1.i to float* ; [#uses=1]
+ store float %tmp268, float* %24, align 4
+ %25 = bitcast i8* %scevgep13.2.i to float* ; [#uses=1]
+ store float %tmp244, float* %25, align 4
+ %26 = bitcast i8* %scevgep13.3.i to float* ; [#uses=1]
+ store float %tmp223, float* %26, align 4
+ %27 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 20 ; [#uses=2]
+ %uglygep17.i40 = getelementptr i8* %i_alignedDataBuffer, i32 21 ; [#uses=1]
+ %uglygep20.i41 = getelementptr i8* %i_alignedDataBuffer, i32 22 ; [#uses=1]
+ %uglygep23.i42 = getelementptr i8* %i_alignedDataBuffer, i32 23 ; [#uses=1]
+ %28 = load i8* %uglygep23.i42, align 1 ; [#uses=1]
+ %tmp384 = zext i8 %28 to i128 ; [#uses=1]
+ %29 = load i8* %uglygep20.i41, align 1 ; [#uses=1]
+ %tmp388 = zext i8 %29 to i128 ; [#uses=1]
+ %tmp389 = shl i128 %tmp388, 8 ; [#uses=1]
+ %30 = load i8* %uglygep17.i40, align 1 ; [#uses=1]
+ %tmp393 = zext i8 %30 to i128 ; [#uses=1]
+ %tmp394 = shl i128 %tmp393, 16 ; [#uses=1]
+ %31 = load i8* %27, align 1 ; [#uses=1]
+ %tmp398 = zext i8 %31 to i128 ; [#uses=1]
+ %tmp399 = shl i128 %tmp398, 24 ; [#uses=1]
+ %ins391 = or i128 %tmp389, %tmp384 ; [#uses=1]
+ %ins396 = or i128 %ins391, %tmp394 ; [#uses=1]
+ %ins401 = or i128 %ins396, %tmp399 ; [#uses=2]
+ %scevgep13.1.i48 = getelementptr i8* %i_alignedDataBuffer, i32 24 ; [#uses=2]
+ %uglygep17.1.i50 = getelementptr i8* %i_alignedDataBuffer, i32 25 ; [#uses=1]
+ %uglygep20.1.i51 = getelementptr i8* %i_alignedDataBuffer, i32 26 ; [#uses=1]
+ %uglygep23.1.i52 = getelementptr i8* %i_alignedDataBuffer, i32 27 ; [#uses=1]
+ %32 = load i8* %uglygep23.1.i52, align 1 ; [#uses=1]
+ %tmp364 = zext i8 %32 to i128 ; [#uses=1]
+ %tmp365 = shl i128 %tmp364, 32 ; [#uses=1]
+ %33 = load i8* %uglygep20.1.i51, align 1 ; [#uses=1]
+ %tmp369 = zext i8 %33 to i128 ; [#uses=1]
+ %tmp370 = shl i128 %tmp369, 40 ; [#uses=1]
+ %34 = load i8* %uglygep17.1.i50, align 1 ; [#uses=1]
+ %tmp374 = zext i8 %34 to i128 ; [#uses=1]
+ %tmp375 = shl i128 %tmp374, 48 ; [#uses=1]
+ %35 = load i8* %scevgep13.1.i48, align 1 ; [#uses=1]
+ %tmp379 = zext i8 %35 to i128 ; [#uses=1]
+ %tmp380 = shl i128 %tmp379, 56 ; [#uses=1]
+ %scevgep13.2.i58 = getelementptr i8* %i_alignedDataBuffer, i32 28 ; [#uses=2]
+ %uglygep17.2.i60 = getelementptr i8* %i_alignedDataBuffer, i32 29 ; [#uses=1]
+ %uglygep20.2.i61 = getelementptr i8* %i_alignedDataBuffer, i32 30 ; [#uses=1]
+ %uglygep23.2.i62 = getelementptr i8* %i_alignedDataBuffer, i32 31 ; [#uses=1]
+ %36 = load i8* %uglygep23.2.i62, align 1 ; [#uses=1]
+ %tmp340 = zext i8 %36 to i128 ; [#uses=1]
+ %tmp341 = shl i128 %tmp340, 64 ; [#uses=1]
+ %37 = load i8* %uglygep20.2.i61, align 1 ; [#uses=1]
+ %tmp345 = zext i8 %37 to i128 ; [#uses=1]
+ %tmp346 = shl i128 %tmp345, 72 ; [#uses=1]
+ %38 = load i8* %uglygep17.2.i60, align 1 ; [#uses=1]
+ %tmp350 = zext i8 %38 to i128 ; [#uses=1]
+ %tmp351 = shl i128 %tmp350, 80 ; [#uses=1]
+ %39 = load i8* %scevgep13.2.i58, align 1 ; [#uses=1]
+ %tmp355 = zext i8 %39 to i128 ; [#uses=1]
+ %tmp356 = shl i128 %tmp355, 88 ; [#uses=1]
+ %scevgep13.3.i68 = getelementptr i8* %i_alignedDataBuffer, i32 32 ; [#uses=2]
+ %uglygep17.3.i70 = getelementptr i8* %i_alignedDataBuffer, i32 33 ; [#uses=1]
+ %uglygep20.3.i71 = getelementptr i8* %i_alignedDataBuffer, i32 34 ; [#uses=1]
+ %uglygep23.3.i72 = getelementptr i8* %i_alignedDataBuffer, i32 35 ; [#uses=1]
+ %40 = load i8* %uglygep23.3.i72, align 1 ; [#uses=1]
+ %tmp316 = zext i8 %40 to i128 ; [#uses=1]
+ %tmp317 = shl i128 %tmp316, 96 ; [#uses=1]
+ %41 = load i8* %uglygep20.3.i71, align 1 ; [#uses=1]
+ %tmp321 = zext i8 %41 to i128 ; [#uses=1]
+ %tmp322 = shl i128 %tmp321, 104 ; [#uses=1]
+ %42 = load i8* %uglygep17.3.i70, align 1 ; [#uses=1]
+ %tmp326 = zext i8 %42 to i128 ; [#uses=1]
+ %tmp327 = shl i128 %tmp326, 112 ; [#uses=1]
+ %43 = load i8* %scevgep13.3.i68, align 1 ; [#uses=1]
+ %tmp331 = zext i8 %43 to i128 ; [#uses=1]
+ %tmp332 = shl i128 %tmp331, 120 ; [#uses=1]
+ %mask371 = or i128 %ins401, %tmp365 ; [#uses=1]
+ %mask376.masked.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask371, %tmp370 ; [#uses=1]
+ %mask381.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask376.masked.masked.masked.masked.masked.masked.masked.masked.masked, %tmp375 ; [#uses=1]
+ %mask342.masked.masked.masked.masked.masked.masked.masked = or i128 %mask381.masked.masked.masked.masked.masked.masked.masked.masked, %tmp380 ; [#uses=2]
+ %mask347.masked.masked.masked.masked.masked.masked = or i128 %mask342.masked.masked.masked.masked.masked.masked.masked, %tmp341 ; [#uses=1]
+ %mask352.masked.masked.masked.masked.masked = or i128 %mask347.masked.masked.masked.masked.masked.masked, %tmp346 ; [#uses=1]
+ %mask357.masked.masked.masked.masked = or i128 %mask352.masked.masked.masked.masked.masked, %tmp351 ; [#uses=1]
+ %mask318.masked.masked.masked = or i128 %mask357.masked.masked.masked.masked, %tmp356 ; [#uses=2]
+ %mask323.masked.masked = or i128 %mask318.masked.masked.masked, %tmp317 ; [#uses=1]
+ %mask328.masked = or i128 %mask323.masked.masked, %tmp322 ; [#uses=1]
+ %mask333 = or i128 %mask328.masked, %tmp327 ; [#uses=1]
+ %ins334 = or i128 %mask333, %tmp332 ; [#uses=1]
+ %tmp309 = trunc i128 %ins401 to i32 ; [#uses=1]
+ %tmp310 = bitcast i32 %tmp309 to float ; [#uses=1]
+ %tmp360 = lshr i128 %mask342.masked.masked.masked.masked.masked.masked.masked, 32 ; [#uses=1]
+ %tmp361 = trunc i128 %tmp360 to i32 ; [#uses=1]
+ %tmp362 = bitcast i32 %tmp361 to float ; [#uses=1]
+ %tmp336 = lshr i128 %mask318.masked.masked.masked, 64 ; [#uses=1]
+ %tmp337 = trunc i128 %tmp336 to i32 ; [#uses=1]
+ %tmp338 = bitcast i32 %tmp337 to float ; [#uses=1]
+ %tmp312 = lshr i128 %ins334, 96 ; [#uses=1]
+ %tmp313 = trunc i128 %tmp312 to i32 ; [#uses=1]
+ %tmp314 = bitcast i32 %tmp313 to float ; [#uses=1]
+ %44 = bitcast i8* %27 to float* ; [#uses=1]
+ store float %tmp310, float* %44, align 4
+ %45 = bitcast i8* %scevgep13.1.i48 to float* ; [#uses=1]
+ store float %tmp362, float* %45, align 4
+ %46 = bitcast i8* %scevgep13.2.i58 to float* ; [#uses=1]
+ store float %tmp338, float* %46, align 4
+ %47 = bitcast i8* %scevgep13.3.i68 to float* ; [#uses=1]
+ store float %tmp314, float* %47, align 4
+ %48 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 36 ; [#uses=2]
+ %uglygep17.i84 = getelementptr i8* %i_alignedDataBuffer, i32 37 ; [#uses=1]
+ %uglygep20.i85 = getelementptr i8* %i_alignedDataBuffer, i32 38 ; [#uses=1]
+ %uglygep23.i86 = getelementptr i8* %i_alignedDataBuffer, i32 39 ; [#uses=1]
+ %49 = load i8* %uglygep23.i86, align 1 ; [#uses=1]
+ %tmp478 = zext i8 %49 to i128 ; [#uses=1]
+ %50 = load i8* %uglygep20.i85, align 1 ; [#uses=1]
+ %tmp482 = zext i8 %50 to i128 ; [#uses=1]
+ %tmp483 = shl i128 %tmp482, 8 ; [#uses=1]
+ %51 = load i8* %uglygep17.i84, align 1 ; [#uses=1]
+ %tmp487 = zext i8 %51 to i128 ; [#uses=1]
+ %tmp488 = shl i128 %tmp487, 16 ; [#uses=1]
+ %52 = load i8* %48, align 1 ; [#uses=1]
+ %tmp492 = zext i8 %52 to i128 ; [#uses=1]
+ %tmp493 = shl i128 %tmp492, 24 ; [#uses=1]
+ %ins485 = or i128 %tmp483, %tmp478 ; [#uses=1]
+ %ins490 = or i128 %ins485, %tmp488 ; [#uses=1]
+ %ins495 = or i128 %ins490, %tmp493 ; [#uses=2]
+ %scevgep13.1.i92 = getelementptr i8* %i_alignedDataBuffer, i32 40 ; [#uses=2]
+ %uglygep17.1.i94 = getelementptr i8* %i_alignedDataBuffer, i32 41 ; [#uses=1]
+ %uglygep20.1.i95 = getelementptr i8* %i_alignedDataBuffer, i32 42 ; [#uses=1]
+ %uglygep23.1.i96 = getelementptr i8* %i_alignedDataBuffer, i32 43 ; [#uses=1]
+ %53 = load i8* %uglygep23.1.i96, align 1 ; [#uses=1]
+ %tmp458 = zext i8 %53 to i128 ; [#uses=1]
+ %tmp459 = shl i128 %tmp458, 32 ; [#uses=1]
+ %54 = load i8* %uglygep20.1.i95, align 1 ; [#uses=1]
+ %tmp463 = zext i8 %54 to i128 ; [#uses=1]
+ %tmp464 = shl i128 %tmp463, 40 ; [#uses=1]
+ %55 = load i8* %uglygep17.1.i94, align 1 ; [#uses=1]
+ %tmp468 = zext i8 %55 to i128 ; [#uses=1]
+ %tmp469 = shl i128 %tmp468, 48 ; [#uses=1]
+ %56 = load i8* %scevgep13.1.i92, align 1 ; [#uses=1]
+ %tmp473 = zext i8 %56 to i128 ; [#uses=1]
+ %tmp474 = shl i128 %tmp473, 56 ; [#uses=1]
+ %scevgep13.2.i102 = getelementptr i8* %i_alignedDataBuffer, i32 44 ; [#uses=2]
+ %uglygep17.2.i104 = getelementptr i8* %i_alignedDataBuffer, i32 45 ; [#uses=1]
+ %uglygep20.2.i105 = getelementptr i8* %i_alignedDataBuffer, i32 46 ; [#uses=1]
+ %uglygep23.2.i106 = getelementptr i8* %i_alignedDataBuffer, i32 47 ; [#uses=1]
+ %57 = load i8* %uglygep23.2.i106, align 1 ; [#uses=1]
+ %tmp434 = zext i8 %57 to i128 ; [#uses=1]
+ %tmp435 = shl i128 %tmp434, 64 ; [#uses=1]
+ %58 = load i8* %uglygep20.2.i105, align 1 ; [#uses=1]
+ %tmp439 = zext i8 %58 to i128 ; [#uses=1]
+ %tmp440 = shl i128 %tmp439, 72 ; [#uses=1]
+ %59 = load i8* %uglygep17.2.i104, align 1 ; [#uses=1]
+ %tmp444 = zext i8 %59 to i128 ; [#uses=1]
+ %tmp445 = shl i128 %tmp444, 80 ; [#uses=1]
+ %60 = load i8* %scevgep13.2.i102, align 1 ; [#uses=1]
+ %tmp449 = zext i8 %60 to i128 ; [#uses=1]
+ %tmp450 = shl i128 %tmp449, 88 ; [#uses=1]
+ %scevgep13.3.i112 = getelementptr i8* %i_alignedDataBuffer, i32 48 ; [#uses=2]
+ %uglygep17.3.i114 = getelementptr i8* %i_alignedDataBuffer, i32 49 ; [#uses=1]
+ %uglygep20.3.i115 = getelementptr i8* %i_alignedDataBuffer, i32 50 ; [#uses=1]
+ %uglygep23.3.i116 = getelementptr i8* %i_alignedDataBuffer, i32 51 ; [#uses=1]
+ %61 = load i8* %uglygep23.3.i116, align 1 ; [#uses=1]
+ %tmp410 = zext i8 %61 to i128 ; [#uses=1]
+ %tmp411 = shl i128 %tmp410, 96 ; [#uses=1]
+ %62 = load i8* %uglygep20.3.i115, align 1 ; [#uses=1]
+ %tmp415 = zext i8 %62 to i128 ; [#uses=1]
+ %tmp416 = shl i128 %tmp415, 104 ; [#uses=1]
+ %63 = load i8* %uglygep17.3.i114, align 1 ; [#uses=1]
+ %tmp420 = zext i8 %63 to i128 ; [#uses=1]
+ %tmp421 = shl i128 %tmp420, 112 ; [#uses=1]
+ %64 = load i8* %scevgep13.3.i112, align 1 ; [#uses=1]
+ %tmp425 = zext i8 %64 to i128 ; [#uses=1]
+ %tmp426 = shl i128 %tmp425, 120 ; [#uses=1]
+ %mask465 = or i128 %ins495, %tmp459 ; [#uses=1]
+ %mask470.masked.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask465, %tmp464 ; [#uses=1]
+ %mask475.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask470.masked.masked.masked.masked.masked.masked.masked.masked.masked, %tmp469 ; [#uses=1]
+ %mask436.masked.masked.masked.masked.masked.masked.masked = or i128 %mask475.masked.masked.masked.masked.masked.masked.masked.masked, %tmp474 ; [#uses=2]
+ %mask441.masked.masked.masked.masked.masked.masked = or i128 %mask436.masked.masked.masked.masked.masked.masked.masked, %tmp435 ; [#uses=1]
+ %mask446.masked.masked.masked.masked.masked = or i128 %mask441.masked.masked.masked.masked.masked.masked, %tmp440 ; [#uses=1]
+ %mask451.masked.masked.masked.masked = or i128 %mask446.masked.masked.masked.masked.masked, %tmp445 ; [#uses=1]
+ %mask412.masked.masked.masked = or i128 %mask451.masked.masked.masked.masked, %tmp450 ; [#uses=2]
+ %mask417.masked.masked = or i128 %mask412.masked.masked.masked, %tmp411 ; [#uses=1]
+ %mask422.masked = or i128 %mask417.masked.masked, %tmp416 ; [#uses=1]
+ %mask427 = or i128 %mask422.masked, %tmp421 ; [#uses=1]
+ %ins428 = or i128 %mask427, %tmp426 ; [#uses=1]
+ %tmp403 = trunc i128 %ins495 to i32 ; [#uses=1]
+ %tmp404 = bitcast i32 %tmp403 to float ; [#uses=1]
+ %tmp454 = lshr i128 %mask436.masked.masked.masked.masked.masked.masked.masked, 32 ; [#uses=1]
+ %tmp455 = trunc i128 %tmp454 to i32 ; [#uses=1]
+ %tmp456 = bitcast i32 %tmp455 to float ; [#uses=1]
+ %tmp430 = lshr i128 %mask412.masked.masked.masked, 64 ; [#uses=1]
+ %tmp431 = trunc i128 %tmp430 to i32 ; [#uses=1]
+ %tmp432 = bitcast i32 %tmp431 to float ; [#uses=1]
+ %tmp406 = lshr i128 %ins428, 96 ; [#uses=1]
+ %tmp407 = trunc i128 %tmp406 to i32 ; [#uses=1]
+ %tmp408 = bitcast i32 %tmp407 to float ; [#uses=1]
+ %65 = bitcast i8* %48 to float* ; [#uses=1]
+ store float %tmp404, float* %65, align 4
+ %66 = bitcast i8* %scevgep13.1.i92 to float* ; [#uses=1]
+ store float %tmp456, float* %66, align 4
+ %67 = bitcast i8* %scevgep13.2.i102 to float* ; [#uses=1]
+ store float %tmp432, float* %67, align 4
+ %68 = bitcast i8* %scevgep13.3.i112 to float* ; [#uses=1]
+ store float %tmp408, float* %68, align 4
+ %69 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 144 ; [#uses=1]
+ %70 = bitcast i8* %69 to i32* ; [#uses=2]
+ %71 = load i32* %70, align 4 ; [#uses=1]
+ %72 = tail call i32 @llvm.bswap.i32(i32 %71) nounwind ; [#uses=1]
+ store i32 %72, i32* %70, align 4
+ %73 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 168 ; [#uses=1]
+ %74 = bitcast i8* %73 to i32* ; [#uses=2]
+ %75 = load i32* %74, align 4 ; [#uses=1]
+ %76 = tail call i32 @llvm.bswap.i32(i32 %75) nounwind ; [#uses=2]
+ store i32 %76, i32* %74, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1.bb3_crit_edge
+ %77 = phi i32 [ %.pre805, %bb1.bb3_crit_edge ], [ %5, %bb2 ] ; [#uses=11]
+ %78 = phi i32 [ %.pre, %bb1.bb3_crit_edge ], [ %76, %bb2 ] ; [#uses=1]
+ %79 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 168 ; [#uses=1]
+ %80 = bitcast i8* %79 to i32* ; [#uses=3]
+ %81 = shl i32 %78, 5 ; [#uses=1]
+ %82 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 60 ; [#uses=1]
+ %83 = load i8* %82, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %83, 0 ; [#uses=2]
+ %.pn.v.i = select i1 %toBool.i, i32 6, i32 4 ; [#uses=1]
+ %.pn.i = shl i32 %77, %.pn.v.i ; [#uses=1]
+ %84 = add i32 %81, 172 ; [#uses=1]
+ %.0.i = add i32 %84, %.pn.i ; [#uses=1]
+ %85 = icmp ugt i32 %.0.i, %i_dataBufferSize ; [#uses=1]
+ br i1 %85, label %bb28, label %bb7
+
+bb7: ; preds = %bb3
+ %86 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 172 ; [#uses=2]
+ %87 = bitcast i8* %i_alignedDataBuffer to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV14btQuantizedBvh, i32 0, i32 2), i32 (...)*** %87, align 4
+ %88 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 52 ; [#uses=1]
+ %89 = bitcast i8* %88 to i32* ; [#uses=1]
+ store i32 277, i32* %89, align 4
+ %90 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 80 ; [#uses=1]
+ store i8 1, i8* %90, align 4
+ %91 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 76 ; [#uses=1]
+ %92 = bitcast i8* %91 to %struct.btOptimizedBvhNode** ; [#uses=1]
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %92, align 4
+ %93 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 68 ; [#uses=1]
+ %94 = bitcast i8* %93 to i32* ; [#uses=1]
+ store i32 0, i32* %94, align 4
+ %95 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 72 ; [#uses=1]
+ %96 = bitcast i8* %95 to i32* ; [#uses=1]
+ store i32 0, i32* %96, align 4
+ %97 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 100 ; [#uses=2]
+ store i8 1, i8* %97, align 4
+ %98 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 96 ; [#uses=1]
+ %99 = bitcast i8* %98 to %struct.btOptimizedBvhNode** ; [#uses=7]
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %99, align 4
+ %100 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 88 ; [#uses=1]
+ %101 = bitcast i8* %100 to i32* ; [#uses=2]
+ store i32 0, i32* %101, align 4
+ %102 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 92 ; [#uses=1]
+ %103 = bitcast i8* %102 to i32* ; [#uses=2]
+ store i32 0, i32* %103, align 4
+ %104 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 120 ; [#uses=1]
+ store i8 1, i8* %104, align 4
+ %105 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 116 ; [#uses=1]
+ %106 = bitcast i8* %105 to %struct.BT_QUANTIZED_BVH_NODE** ; [#uses=1]
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %106, align 4
+ %107 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 108 ; [#uses=1]
+ %108 = bitcast i8* %107 to i32* ; [#uses=1]
+ store i32 0, i32* %108, align 4
+ %109 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 112 ; [#uses=1]
+ %110 = bitcast i8* %109 to i32* ; [#uses=1]
+ store i32 0, i32* %110, align 4
+ %111 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 140 ; [#uses=2]
+ store i8 1, i8* %111, align 4
+ %112 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 136 ; [#uses=1]
+ %113 = bitcast i8* %112 to %struct.BT_QUANTIZED_BVH_NODE** ; [#uses=9]
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %113, align 4
+ %114 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 128 ; [#uses=1]
+ %115 = bitcast i8* %114 to i32* ; [#uses=2]
+ store i32 0, i32* %115, align 4
+ %116 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 132 ; [#uses=1]
+ %117 = bitcast i8* %116 to i32* ; [#uses=2]
+ store i32 0, i32* %117, align 4
+ %118 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 164 ; [#uses=3]
+ store i8 1, i8* %118, align 4
+ %119 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 160 ; [#uses=1]
+ %120 = bitcast i8* %119 to %struct.btBvhSubtreeInfo** ; [#uses=12]
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %120, align 4
+ %121 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 152 ; [#uses=1]
+ %122 = bitcast i8* %121 to i32* ; [#uses=2]
+ store i32 0, i32* %122, align 4
+ %123 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 156 ; [#uses=1]
+ %124 = bitcast i8* %123 to i32* ; [#uses=2]
+ store i32 0, i32* %124, align 4
+ br i1 %toBool.i, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit: ; preds = %bb7
+ store i8 0, i8* %111, align 4
+ %125 = bitcast i8* %86 to %struct.BT_QUANTIZED_BVH_NODE* ; [#uses=2]
+ store %struct.BT_QUANTIZED_BVH_NODE* %125, %struct.BT_QUANTIZED_BVH_NODE** %113, align 4
+ store i32 %77, i32* %115, align 4
+ store i32 %77, i32* %117, align 4
+ %toBool.not = xor i1 %toBool, true ; [#uses=1]
+ %126 = icmp sgt i32 %77, 0 ; [#uses=1]
+ %or.cond = and i1 %toBool.not, %126 ; [#uses=1]
+ br i1 %or.cond, label %bb12, label %bb14
+
+bb12: ; preds = %bb12.bb12_crit_edge, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit
+ %127 = phi %struct.BT_QUANTIZED_BVH_NODE* [ %.pre808, %bb12.bb12_crit_edge ], [ %125, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit ] ; [#uses=1]
+ %nodeIndex.0684 = phi i32 [ %148, %bb12.bb12_crit_edge ], [ 0, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit ] ; [#uses=8]
+ %scevgep689 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %127, i32 %nodeIndex.0684, i32 0, i32 0 ; [#uses=2]
+ %128 = load i16* %scevgep689, align 2 ; [#uses=1]
+ %129 = tail call i16 @llvm.bswap.i16(i16 %128) nounwind ; [#uses=1]
+ store i16 %129, i16* %scevgep689, align 2
+ %130 = load %struct.BT_QUANTIZED_BVH_NODE** %113, align 4 ; [#uses=1]
+ %scevgep692 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %130, i32 %nodeIndex.0684, i32 0, i32 1 ; [#uses=2]
+ %131 = load i16* %scevgep692, align 2 ; [#uses=1]
+ %132 = tail call i16 @llvm.bswap.i16(i16 %131) nounwind ; [#uses=1]
+ store i16 %132, i16* %scevgep692, align 2
+ %133 = load %struct.BT_QUANTIZED_BVH_NODE** %113, align 4 ; [#uses=1]
+ %scevgep694 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %133, i32 %nodeIndex.0684, i32 0, i32 2 ; [#uses=2]
+ %134 = load i16* %scevgep694, align 2 ; [#uses=1]
+ %135 = tail call i16 @llvm.bswap.i16(i16 %134) nounwind ; [#uses=1]
+ store i16 %135, i16* %scevgep694, align 2
+ %136 = load %struct.BT_QUANTIZED_BVH_NODE** %113, align 4 ; [#uses=1]
+ %scevgep696 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %136, i32 %nodeIndex.0684, i32 1, i32 0 ; [#uses=2]
+ %137 = load i16* %scevgep696, align 2 ; [#uses=1]
+ %138 = tail call i16 @llvm.bswap.i16(i16 %137) nounwind ; [#uses=1]
+ store i16 %138, i16* %scevgep696, align 2
+ %139 = load %struct.BT_QUANTIZED_BVH_NODE** %113, align 4 ; [#uses=1]
+ %scevgep698 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %139, i32 %nodeIndex.0684, i32 1, i32 1 ; [#uses=2]
+ %140 = load i16* %scevgep698, align 2 ; [#uses=1]
+ %141 = tail call i16 @llvm.bswap.i16(i16 %140) nounwind ; [#uses=1]
+ store i16 %141, i16* %scevgep698, align 2
+ %142 = load %struct.BT_QUANTIZED_BVH_NODE** %113, align 4 ; [#uses=1]
+ %scevgep700 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %142, i32 %nodeIndex.0684, i32 1, i32 2 ; [#uses=2]
+ %143 = load i16* %scevgep700, align 2 ; [#uses=1]
+ %144 = tail call i16 @llvm.bswap.i16(i16 %143) nounwind ; [#uses=1]
+ store i16 %144, i16* %scevgep700, align 2
+ %145 = load %struct.BT_QUANTIZED_BVH_NODE** %113, align 4 ; [#uses=1]
+ %scevgep702 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %145, i32 %nodeIndex.0684, i32 2 ; [#uses=2]
+ %146 = load i32* %scevgep702, align 4 ; [#uses=1]
+ %147 = tail call i32 @llvm.bswap.i32(i32 %146) nounwind ; [#uses=1]
+ store i32 %147, i32* %scevgep702, align 4
+ %148 = add nsw i32 %nodeIndex.0684, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %148, %77 ; [#uses=1]
+ br i1 %exitcond, label %bb14, label %bb12.bb12_crit_edge
+
+bb12.bb12_crit_edge: ; preds = %bb12
+ %.pre808 = load %struct.BT_QUANTIZED_BVH_NODE** %113, align 4 ; [#uses=1]
+ br label %bb12
+
+bb14: ; preds = %bb12, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE20initializeFromBufferEPvii.exit
+ %149 = shl i32 %77, 4 ; [#uses=1]
+ br label %bb22
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit: ; preds = %bb7
+ store i8 0, i8* %97, align 4
+ %150 = bitcast i8* %86 to %struct.btOptimizedBvhNode* ; [#uses=2]
+ store %struct.btOptimizedBvhNode* %150, %struct.btOptimizedBvhNode** %99, align 4
+ store i32 %77, i32* %101, align 4
+ store i32 %77, i32* %103, align 4
+ %toBool.not809 = xor i1 %toBool, true ; [#uses=1]
+ %151 = icmp sgt i32 %77, 0 ; [#uses=1]
+ %or.cond810 = and i1 %toBool.not809, %151 ; [#uses=1]
+ br i1 %or.cond810, label %bb19, label %bb21
+
+bb19: ; preds = %bb19.bb19_crit_edge, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit
+ %152 = phi %struct.btOptimizedBvhNode* [ %.pre806, %bb19.bb19_crit_edge ], [ %150, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit ] ; [#uses=5]
+ %nodeIndex18.0685 = phi i32 [ %195, %bb19.bb19_crit_edge ], [ 0, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit ] ; [#uses=13]
+ %scevgep707 = getelementptr %struct.btOptimizedBvhNode* %152, i32 %nodeIndex18.0685, i32 0, i32 0, i32 0 ; [#uses=2]
+ %scevgep707708 = bitcast float* %scevgep707 to i8* ; [#uses=3]
+ %uglygep23.i178 = getelementptr i8* %scevgep707708, i32 3 ; [#uses=1]
+ %153 = load i8* %uglygep23.i178, align 1 ; [#uses=1]
+ %tmp666 = zext i8 %153 to i128 ; [#uses=1]
+ %uglygep20.i177 = getelementptr i8* %scevgep707708, i32 2 ; [#uses=1]
+ %154 = load i8* %uglygep20.i177, align 1 ; [#uses=1]
+ %tmp670 = zext i8 %154 to i128 ; [#uses=1]
+ %tmp671 = shl i128 %tmp670, 8 ; [#uses=1]
+ %uglygep17.i176 = getelementptr i8* %scevgep707708, i32 1 ; [#uses=1]
+ %155 = load i8* %uglygep17.i176, align 1 ; [#uses=1]
+ %tmp675 = zext i8 %155 to i128 ; [#uses=1]
+ %tmp676 = shl i128 %tmp675, 16 ; [#uses=1]
+ %scevgep705 = getelementptr %struct.btOptimizedBvhNode* %152, i32 %nodeIndex18.0685 ; [#uses=1]
+ %scevgep1314.i175 = bitcast %struct.btOptimizedBvhNode* %scevgep705 to i8* ; [#uses=1]
+ %156 = load i8* %scevgep1314.i175, align 1 ; [#uses=1]
+ %tmp680 = zext i8 %156 to i128 ; [#uses=1]
+ %tmp681 = shl i128 %tmp680, 24 ; [#uses=1]
+ %scevgep715 = getelementptr %struct.btOptimizedBvhNode* %152, i32 %nodeIndex18.0685, i32 0, i32 0, i32 1 ; [#uses=2]
+ %scevgep715716 = bitcast float* %scevgep715 to i8* ; [#uses=4]
+ %uglygep23.1.i188 = getelementptr i8* %scevgep715716, i32 3 ; [#uses=1]
+ %157 = load i8* %uglygep23.1.i188, align 1 ; [#uses=1]
+ %tmp646 = zext i8 %157 to i128 ; [#uses=1]
+ %tmp647 = shl i128 %tmp646, 32 ; [#uses=1]
+ %uglygep20.1.i187 = getelementptr i8* %scevgep715716, i32 2 ; [#uses=1]
+ %158 = load i8* %uglygep20.1.i187, align 1 ; [#uses=1]
+ %tmp651 = zext i8 %158 to i128 ; [#uses=1]
+ %tmp652 = shl i128 %tmp651, 40 ; [#uses=1]
+ %uglygep17.1.i186 = getelementptr i8* %scevgep715716, i32 1 ; [#uses=1]
+ %159 = load i8* %uglygep17.1.i186, align 1 ; [#uses=1]
+ %tmp656 = zext i8 %159 to i128 ; [#uses=1]
+ %tmp657 = shl i128 %tmp656, 48 ; [#uses=1]
+ %160 = load i8* %scevgep715716, align 1 ; [#uses=1]
+ %tmp661 = zext i8 %160 to i128 ; [#uses=1]
+ %tmp662 = shl i128 %tmp661, 56 ; [#uses=1]
+ %scevgep723 = getelementptr %struct.btOptimizedBvhNode* %152, i32 %nodeIndex18.0685, i32 0, i32 0, i32 2 ; [#uses=2]
+ %scevgep723724 = bitcast float* %scevgep723 to i8* ; [#uses=4]
+ %uglygep23.2.i198 = getelementptr i8* %scevgep723724, i32 3 ; [#uses=1]
+ %161 = load i8* %uglygep23.2.i198, align 1 ; [#uses=1]
+ %tmp622 = zext i8 %161 to i128 ; [#uses=1]
+ %tmp623 = shl i128 %tmp622, 64 ; [#uses=1]
+ %uglygep20.2.i197 = getelementptr i8* %scevgep723724, i32 2 ; [#uses=1]
+ %162 = load i8* %uglygep20.2.i197, align 1 ; [#uses=1]
+ %tmp627 = zext i8 %162 to i128 ; [#uses=1]
+ %tmp628 = shl i128 %tmp627, 72 ; [#uses=1]
+ %uglygep17.2.i196 = getelementptr i8* %scevgep723724, i32 1 ; [#uses=1]
+ %163 = load i8* %uglygep17.2.i196, align 1 ; [#uses=1]
+ %tmp632 = zext i8 %163 to i128 ; [#uses=1]
+ %tmp633 = shl i128 %tmp632, 80 ; [#uses=1]
+ %164 = load i8* %scevgep723724, align 1 ; [#uses=1]
+ %tmp637 = zext i8 %164 to i128 ; [#uses=1]
+ %tmp638 = shl i128 %tmp637, 88 ; [#uses=1]
+ %scevgep731 = getelementptr %struct.btOptimizedBvhNode* %152, i32 %nodeIndex18.0685, i32 0, i32 0, i32 3 ; [#uses=2]
+ %scevgep731732 = bitcast float* %scevgep731 to i8* ; [#uses=4]
+ %uglygep23.3.i208 = getelementptr i8* %scevgep731732, i32 3 ; [#uses=1]
+ %165 = load i8* %uglygep23.3.i208, align 1 ; [#uses=1]
+ %tmp598 = zext i8 %165 to i128 ; [#uses=1]
+ %tmp599 = shl i128 %tmp598, 96 ; [#uses=1]
+ %uglygep20.3.i207 = getelementptr i8* %scevgep731732, i32 2 ; [#uses=1]
+ %166 = load i8* %uglygep20.3.i207, align 1 ; [#uses=1]
+ %tmp603 = zext i8 %166 to i128 ; [#uses=1]
+ %tmp604 = shl i128 %tmp603, 104 ; [#uses=1]
+ %uglygep17.3.i206 = getelementptr i8* %scevgep731732, i32 1 ; [#uses=1]
+ %167 = load i8* %uglygep17.3.i206, align 1 ; [#uses=1]
+ %tmp608 = zext i8 %167 to i128 ; [#uses=1]
+ %tmp609 = shl i128 %tmp608, 112 ; [#uses=1]
+ %mask677 = or i128 %tmp671, %tmp666 ; [#uses=1]
+ %mask682 = or i128 %mask677, %tmp676 ; [#uses=1]
+ %mask648.masked.masked.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask682, %tmp681 ; [#uses=2]
+ %168 = load i8* %scevgep731732, align 1 ; [#uses=1]
+ %tmp613 = zext i8 %168 to i128 ; [#uses=1]
+ %tmp614 = shl i128 %tmp613, 120 ; [#uses=1]
+ %mask653.masked.masked.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask648.masked.masked.masked.masked.masked.masked.masked.masked.masked.masked, %tmp647 ; [#uses=1]
+ %mask658.masked.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask653.masked.masked.masked.masked.masked.masked.masked.masked.masked.masked, %tmp652 ; [#uses=1]
+ %mask663.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask658.masked.masked.masked.masked.masked.masked.masked.masked.masked, %tmp657 ; [#uses=1]
+ %mask624.masked.masked.masked.masked.masked.masked.masked = or i128 %mask663.masked.masked.masked.masked.masked.masked.masked.masked, %tmp662 ; [#uses=2]
+ %mask629.masked.masked.masked.masked.masked.masked = or i128 %mask624.masked.masked.masked.masked.masked.masked.masked, %tmp623 ; [#uses=1]
+ %mask634.masked.masked.masked.masked.masked = or i128 %mask629.masked.masked.masked.masked.masked.masked, %tmp628 ; [#uses=1]
+ %mask639.masked.masked.masked.masked = or i128 %mask634.masked.masked.masked.masked.masked, %tmp633 ; [#uses=1]
+ %mask600.masked.masked.masked = or i128 %mask639.masked.masked.masked.masked, %tmp638 ; [#uses=2]
+ %mask605.masked.masked = or i128 %mask600.masked.masked.masked, %tmp599 ; [#uses=1]
+ %mask610.masked = or i128 %mask605.masked.masked, %tmp604 ; [#uses=1]
+ %mask615 = or i128 %mask610.masked, %tmp609 ; [#uses=1]
+ %ins616 = or i128 %mask615, %tmp614 ; [#uses=1]
+ %tmp591 = trunc i128 %mask648.masked.masked.masked.masked.masked.masked.masked.masked.masked.masked to i32 ; [#uses=1]
+ %tmp592 = bitcast i32 %tmp591 to float ; [#uses=1]
+ %tmp642 = lshr i128 %mask624.masked.masked.masked.masked.masked.masked.masked, 32 ; [#uses=1]
+ %tmp643 = trunc i128 %tmp642 to i32 ; [#uses=1]
+ %tmp644 = bitcast i32 %tmp643 to float ; [#uses=1]
+ %tmp618 = lshr i128 %mask600.masked.masked.masked, 64 ; [#uses=1]
+ %tmp619 = trunc i128 %tmp618 to i32 ; [#uses=1]
+ %tmp620 = bitcast i32 %tmp619 to float ; [#uses=1]
+ %tmp594 = lshr i128 %ins616, 96 ; [#uses=1]
+ %tmp595 = trunc i128 %tmp594 to i32 ; [#uses=1]
+ %tmp596 = bitcast i32 %tmp595 to float ; [#uses=1]
+ store float %tmp592, float* %scevgep707, align 4
+ store float %tmp644, float* %scevgep715, align 4
+ store float %tmp620, float* %scevgep723, align 4
+ store float %tmp596, float* %scevgep731, align 4
+ %169 = load %struct.btOptimizedBvhNode** %99, align 4 ; [#uses=4]
+ %scevgep744 = getelementptr %struct.btOptimizedBvhNode* %169, i32 %nodeIndex18.0685, i32 1, i32 0, i32 0 ; [#uses=2]
+ %scevgep744745 = bitcast float* %scevgep744 to i8* ; [#uses=4]
+ %uglygep23.i134 = getelementptr i8* %scevgep744745, i32 3 ; [#uses=1]
+ %170 = load i8* %uglygep23.i134, align 1 ; [#uses=1]
+ %tmp572 = zext i8 %170 to i128 ; [#uses=1]
+ %uglygep20.i133 = getelementptr i8* %scevgep744745, i32 2 ; [#uses=1]
+ %171 = load i8* %uglygep20.i133, align 1 ; [#uses=1]
+ %tmp576 = zext i8 %171 to i128 ; [#uses=1]
+ %tmp577 = shl i128 %tmp576, 8 ; [#uses=1]
+ %uglygep17.i132 = getelementptr i8* %scevgep744745, i32 1 ; [#uses=1]
+ %172 = load i8* %uglygep17.i132, align 1 ; [#uses=1]
+ %tmp581 = zext i8 %172 to i128 ; [#uses=1]
+ %tmp582 = shl i128 %tmp581, 16 ; [#uses=1]
+ %173 = load i8* %scevgep744745, align 1 ; [#uses=1]
+ %tmp586 = zext i8 %173 to i128 ; [#uses=1]
+ %tmp587 = shl i128 %tmp586, 24 ; [#uses=1]
+ %scevgep752 = getelementptr %struct.btOptimizedBvhNode* %169, i32 %nodeIndex18.0685, i32 1, i32 0, i32 1 ; [#uses=2]
+ %scevgep752753 = bitcast float* %scevgep752 to i8* ; [#uses=4]
+ %uglygep23.1.i144 = getelementptr i8* %scevgep752753, i32 3 ; [#uses=1]
+ %174 = load i8* %uglygep23.1.i144, align 1 ; [#uses=1]
+ %tmp552 = zext i8 %174 to i128 ; [#uses=1]
+ %tmp553 = shl i128 %tmp552, 32 ; [#uses=1]
+ %uglygep20.1.i143 = getelementptr i8* %scevgep752753, i32 2 ; [#uses=1]
+ %175 = load i8* %uglygep20.1.i143, align 1 ; [#uses=1]
+ %tmp557 = zext i8 %175 to i128 ; [#uses=1]
+ %tmp558 = shl i128 %tmp557, 40 ; [#uses=1]
+ %uglygep17.1.i142 = getelementptr i8* %scevgep752753, i32 1 ; [#uses=1]
+ %176 = load i8* %uglygep17.1.i142, align 1 ; [#uses=1]
+ %tmp562 = zext i8 %176 to i128 ; [#uses=1]
+ %tmp563 = shl i128 %tmp562, 48 ; [#uses=1]
+ %177 = load i8* %scevgep752753, align 1 ; [#uses=1]
+ %tmp567 = zext i8 %177 to i128 ; [#uses=1]
+ %tmp568 = shl i128 %tmp567, 56 ; [#uses=1]
+ %scevgep760 = getelementptr %struct.btOptimizedBvhNode* %169, i32 %nodeIndex18.0685, i32 1, i32 0, i32 2 ; [#uses=2]
+ %scevgep760761 = bitcast float* %scevgep760 to i8* ; [#uses=4]
+ %uglygep23.2.i154 = getelementptr i8* %scevgep760761, i32 3 ; [#uses=1]
+ %178 = load i8* %uglygep23.2.i154, align 1 ; [#uses=1]
+ %tmp528 = zext i8 %178 to i128 ; [#uses=1]
+ %tmp529 = shl i128 %tmp528, 64 ; [#uses=1]
+ %uglygep20.2.i153 = getelementptr i8* %scevgep760761, i32 2 ; [#uses=1]
+ %179 = load i8* %uglygep20.2.i153, align 1 ; [#uses=1]
+ %tmp533 = zext i8 %179 to i128 ; [#uses=1]
+ %tmp534 = shl i128 %tmp533, 72 ; [#uses=1]
+ %uglygep17.2.i152 = getelementptr i8* %scevgep760761, i32 1 ; [#uses=1]
+ %180 = load i8* %uglygep17.2.i152, align 1 ; [#uses=1]
+ %tmp538 = zext i8 %180 to i128 ; [#uses=1]
+ %tmp539 = shl i128 %tmp538, 80 ; [#uses=1]
+ %181 = load i8* %scevgep760761, align 1 ; [#uses=1]
+ %tmp543 = zext i8 %181 to i128 ; [#uses=1]
+ %tmp544 = shl i128 %tmp543, 88 ; [#uses=1]
+ %scevgep768 = getelementptr %struct.btOptimizedBvhNode* %169, i32 %nodeIndex18.0685, i32 1, i32 0, i32 3 ; [#uses=2]
+ %scevgep768769 = bitcast float* %scevgep768 to i8* ; [#uses=4]
+ %uglygep23.3.i164 = getelementptr i8* %scevgep768769, i32 3 ; [#uses=1]
+ %182 = load i8* %uglygep23.3.i164, align 1 ; [#uses=1]
+ %tmp504 = zext i8 %182 to i128 ; [#uses=1]
+ %tmp505 = shl i128 %tmp504, 96 ; [#uses=1]
+ %uglygep20.3.i163 = getelementptr i8* %scevgep768769, i32 2 ; [#uses=1]
+ %183 = load i8* %uglygep20.3.i163, align 1 ; [#uses=1]
+ %tmp509 = zext i8 %183 to i128 ; [#uses=1]
+ %tmp510 = shl i128 %tmp509, 104 ; [#uses=1]
+ %uglygep17.3.i162 = getelementptr i8* %scevgep768769, i32 1 ; [#uses=1]
+ %184 = load i8* %uglygep17.3.i162, align 1 ; [#uses=1]
+ %tmp514 = zext i8 %184 to i128 ; [#uses=1]
+ %tmp515 = shl i128 %tmp514, 112 ; [#uses=1]
+ %mask583 = or i128 %tmp577, %tmp572 ; [#uses=1]
+ %mask588 = or i128 %mask583, %tmp582 ; [#uses=1]
+ %mask554.masked.masked.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask588, %tmp587 ; [#uses=2]
+ %185 = load i8* %scevgep768769, align 1 ; [#uses=1]
+ %tmp519 = zext i8 %185 to i128 ; [#uses=1]
+ %tmp520 = shl i128 %tmp519, 120 ; [#uses=1]
+ %mask559.masked.masked.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask554.masked.masked.masked.masked.masked.masked.masked.masked.masked.masked, %tmp553 ; [#uses=1]
+ %mask564.masked.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask559.masked.masked.masked.masked.masked.masked.masked.masked.masked.masked, %tmp558 ; [#uses=1]
+ %mask569.masked.masked.masked.masked.masked.masked.masked.masked = or i128 %mask564.masked.masked.masked.masked.masked.masked.masked.masked.masked, %tmp563 ; [#uses=1]
+ %mask530.masked.masked.masked.masked.masked.masked.masked = or i128 %mask569.masked.masked.masked.masked.masked.masked.masked.masked, %tmp568 ; [#uses=2]
+ %mask535.masked.masked.masked.masked.masked.masked = or i128 %mask530.masked.masked.masked.masked.masked.masked.masked, %tmp529 ; [#uses=1]
+ %mask540.masked.masked.masked.masked.masked = or i128 %mask535.masked.masked.masked.masked.masked.masked, %tmp534 ; [#uses=1]
+ %mask545.masked.masked.masked.masked = or i128 %mask540.masked.masked.masked.masked.masked, %tmp539 ; [#uses=1]
+ %mask506.masked.masked.masked = or i128 %mask545.masked.masked.masked.masked, %tmp544 ; [#uses=2]
+ %mask511.masked.masked = or i128 %mask506.masked.masked.masked, %tmp505 ; [#uses=1]
+ %mask516.masked = or i128 %mask511.masked.masked, %tmp510 ; [#uses=1]
+ %mask521 = or i128 %mask516.masked, %tmp515 ; [#uses=1]
+ %ins522 = or i128 %mask521, %tmp520 ; [#uses=1]
+ %tmp497 = trunc i128 %mask554.masked.masked.masked.masked.masked.masked.masked.masked.masked.masked to i32 ; [#uses=1]
+ %tmp498 = bitcast i32 %tmp497 to float ; [#uses=1]
+ %tmp548 = lshr i128 %mask530.masked.masked.masked.masked.masked.masked.masked, 32 ; [#uses=1]
+ %tmp549 = trunc i128 %tmp548 to i32 ; [#uses=1]
+ %tmp550 = bitcast i32 %tmp549 to float ; [#uses=1]
+ %tmp524 = lshr i128 %mask506.masked.masked.masked, 64 ; [#uses=1]
+ %tmp525 = trunc i128 %tmp524 to i32 ; [#uses=1]
+ %tmp526 = bitcast i32 %tmp525 to float ; [#uses=1]
+ %tmp500 = lshr i128 %ins522, 96 ; [#uses=1]
+ %tmp501 = trunc i128 %tmp500 to i32 ; [#uses=1]
+ %tmp502 = bitcast i32 %tmp501 to float ; [#uses=1]
+ store float %tmp498, float* %scevgep744, align 4
+ store float %tmp550, float* %scevgep752, align 4
+ store float %tmp526, float* %scevgep760, align 4
+ store float %tmp502, float* %scevgep768, align 4
+ %186 = load %struct.btOptimizedBvhNode** %99, align 4 ; [#uses=1]
+ %scevgep778 = getelementptr %struct.btOptimizedBvhNode* %186, i32 %nodeIndex18.0685, i32 2 ; [#uses=2]
+ %187 = load i32* %scevgep778, align 4 ; [#uses=1]
+ %188 = tail call i32 @llvm.bswap.i32(i32 %187) nounwind ; [#uses=1]
+ store i32 %188, i32* %scevgep778, align 4
+ %189 = load %struct.btOptimizedBvhNode** %99, align 4 ; [#uses=1]
+ %scevgep780 = getelementptr %struct.btOptimizedBvhNode* %189, i32 %nodeIndex18.0685, i32 3 ; [#uses=2]
+ %190 = load i32* %scevgep780, align 4 ; [#uses=1]
+ %191 = tail call i32 @llvm.bswap.i32(i32 %190) nounwind ; [#uses=1]
+ store i32 %191, i32* %scevgep780, align 4
+ %192 = load %struct.btOptimizedBvhNode** %99, align 4 ; [#uses=1]
+ %scevgep782 = getelementptr %struct.btOptimizedBvhNode* %192, i32 %nodeIndex18.0685, i32 4 ; [#uses=2]
+ %193 = load i32* %scevgep782, align 4 ; [#uses=1]
+ %194 = tail call i32 @llvm.bswap.i32(i32 %193) nounwind ; [#uses=1]
+ store i32 %194, i32* %scevgep782, align 4
+ %195 = add nsw i32 %nodeIndex18.0685, 1 ; [#uses=2]
+ %exitcond704 = icmp eq i32 %195, %77 ; [#uses=1]
+ br i1 %exitcond704, label %bb21, label %bb19.bb19_crit_edge
+
+bb19.bb19_crit_edge: ; preds = %bb19
+ %.pre806 = load %struct.btOptimizedBvhNode** %99, align 4 ; [#uses=1]
+ br label %bb19
+
+bb21: ; preds = %bb19, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE20initializeFromBufferEPvii.exit
+ %196 = shl i32 %77, 6 ; [#uses=1]
+ br label %bb22
+
+bb22: ; preds = %bb21, %bb14
+ %.sum33.pn.in = phi i32 [ %149, %bb14 ], [ %196, %bb21 ] ; [#uses=1]
+ %.sum33.pn = add i32 %.sum33.pn.in, 172 ; [#uses=1]
+ %nodeData.0 = getelementptr inbounds i8* %i_alignedDataBuffer, i32 %.sum33.pn ; [#uses=1]
+ %197 = load i32* %80, align 4 ; [#uses=2]
+ %198 = load %struct.btBvhSubtreeInfo** %120, align 4 ; [#uses=2]
+ %199 = icmp eq %struct.btBvhSubtreeInfo* %198, null ; [#uses=1]
+ br i1 %199, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit, label %bb.i.i.i123
+
+bb.i.i.i123: ; preds = %bb22
+ %200 = load i8* %118, align 4 ; [#uses=1]
+ %toBool.i.i.i122 = icmp eq i8 %200, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i122, label %bb2.i.i.i125, label %bb1.i.i.i124
+
+bb1.i.i.i124: ; preds = %bb.i.i.i123
+ %201 = bitcast %struct.btBvhSubtreeInfo* %198 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %201)
+ br label %bb2.i.i.i125
+
+bb2.i.i.i125: ; preds = %bb1.i.i.i124, %bb.i.i.i123
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %120, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit: ; preds = %bb2.i.i.i125, %bb22
+ store i8 0, i8* %118, align 4
+ %202 = bitcast i8* %nodeData.0 to %struct.btBvhSubtreeInfo* ; [#uses=2]
+ store %struct.btBvhSubtreeInfo* %202, %struct.btBvhSubtreeInfo** %120, align 4
+ store i32 %197, i32* %122, align 4
+ store i32 %197, i32* %124, align 4
+ br i1 %toBool, label %bb28, label %bb26.preheader
+
+bb26.preheader: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit
+ %203 = load i32* %80, align 4 ; [#uses=1]
+ %204 = icmp sgt i32 %203, 0 ; [#uses=1]
+ br i1 %204, label %bb25, label %bb28
+
+bb25: ; preds = %bb25.bb25_crit_edge, %bb26.preheader
+ %205 = phi %struct.btBvhSubtreeInfo* [ %.pre807, %bb25.bb25_crit_edge ], [ %202, %bb26.preheader ] ; [#uses=1]
+ %i.0687 = phi i32 [ %229, %bb25.bb25_crit_edge ], [ 0, %bb26.preheader ] ; [#uses=9]
+ %scevgep784785 = getelementptr inbounds %struct.btBvhSubtreeInfo* %205, i32 %i.0687, i32 0, i32 0 ; [#uses=2]
+ %206 = load i16* %scevgep784785, align 2 ; [#uses=1]
+ %207 = tail call i16 @llvm.bswap.i16(i16 %206) nounwind ; [#uses=1]
+ store i16 %207, i16* %scevgep784785, align 2
+ %208 = load %struct.btBvhSubtreeInfo** %120, align 4 ; [#uses=1]
+ %scevgep788 = getelementptr %struct.btBvhSubtreeInfo* %208, i32 %i.0687, i32 0, i32 1 ; [#uses=2]
+ %209 = load i16* %scevgep788, align 2 ; [#uses=1]
+ %210 = tail call i16 @llvm.bswap.i16(i16 %209) nounwind ; [#uses=1]
+ store i16 %210, i16* %scevgep788, align 2
+ %211 = load %struct.btBvhSubtreeInfo** %120, align 4 ; [#uses=1]
+ %scevgep790 = getelementptr %struct.btBvhSubtreeInfo* %211, i32 %i.0687, i32 0, i32 2 ; [#uses=2]
+ %212 = load i16* %scevgep790, align 2 ; [#uses=1]
+ %213 = tail call i16 @llvm.bswap.i16(i16 %212) nounwind ; [#uses=1]
+ store i16 %213, i16* %scevgep790, align 2
+ %214 = load %struct.btBvhSubtreeInfo** %120, align 4 ; [#uses=1]
+ %scevgep792 = getelementptr %struct.btBvhSubtreeInfo* %214, i32 %i.0687, i32 1, i32 0 ; [#uses=2]
+ %215 = load i16* %scevgep792, align 2 ; [#uses=1]
+ %216 = tail call i16 @llvm.bswap.i16(i16 %215) nounwind ; [#uses=1]
+ store i16 %216, i16* %scevgep792, align 2
+ %217 = load %struct.btBvhSubtreeInfo** %120, align 4 ; [#uses=1]
+ %scevgep794 = getelementptr %struct.btBvhSubtreeInfo* %217, i32 %i.0687, i32 1, i32 1 ; [#uses=2]
+ %218 = load i16* %scevgep794, align 2 ; [#uses=1]
+ %219 = tail call i16 @llvm.bswap.i16(i16 %218) nounwind ; [#uses=1]
+ store i16 %219, i16* %scevgep794, align 2
+ %220 = load %struct.btBvhSubtreeInfo** %120, align 4 ; [#uses=1]
+ %scevgep796 = getelementptr %struct.btBvhSubtreeInfo* %220, i32 %i.0687, i32 1, i32 2 ; [#uses=2]
+ %221 = load i16* %scevgep796, align 2 ; [#uses=1]
+ %222 = tail call i16 @llvm.bswap.i16(i16 %221) nounwind ; [#uses=1]
+ store i16 %222, i16* %scevgep796, align 2
+ %223 = load %struct.btBvhSubtreeInfo** %120, align 4 ; [#uses=1]
+ %scevgep798 = getelementptr %struct.btBvhSubtreeInfo* %223, i32 %i.0687, i32 2 ; [#uses=2]
+ %224 = load i32* %scevgep798, align 4 ; [#uses=1]
+ %225 = tail call i32 @llvm.bswap.i32(i32 %224) nounwind ; [#uses=1]
+ store i32 %225, i32* %scevgep798, align 4
+ %226 = load %struct.btBvhSubtreeInfo** %120, align 4 ; [#uses=1]
+ %scevgep800 = getelementptr %struct.btBvhSubtreeInfo* %226, i32 %i.0687, i32 3 ; [#uses=2]
+ %227 = load i32* %scevgep800, align 4 ; [#uses=1]
+ %228 = tail call i32 @llvm.bswap.i32(i32 %227) nounwind ; [#uses=1]
+ store i32 %228, i32* %scevgep800, align 4
+ %229 = add nsw i32 %i.0687, 1 ; [#uses=2]
+ %230 = load i32* %80, align 4 ; [#uses=1]
+ %231 = icmp sgt i32 %230, %229 ; [#uses=1]
+ br i1 %231, label %bb25.bb25_crit_edge, label %bb28
+
+bb25.bb25_crit_edge: ; preds = %bb25
+ %.pre807 = load %struct.btBvhSubtreeInfo** %120, align 4 ; [#uses=1]
+ br label %bb25
+
+bb28: ; preds = %bb25, %bb26.preheader, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit, %bb3, %entry
+ %.0 = phi %struct.btQuantizedBvh* [ null, %entry ], [ null, %bb3 ], [ %1, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE20initializeFromBufferEPvii.exit ], [ %1, %bb25 ], [ %1, %bb26.preheader ] ; [#uses=1]
+ ret %struct.btQuantizedBvh* %.0
+}
+
+; [#uses=4]
+define void @_ZN14btQuantizedBvhD2Ev(%struct.btQuantizedBvh* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV14btQuantizedBvh, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=3]
+ %2 = load %struct.btBvhSubtreeInfo** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btBvhSubtreeInfo* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btBvhSubtreeInfo* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad44
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %1, align 4
+ %8 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ %11 = load %struct.BT_QUANTIZED_BVH_NODE** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i73
+
+bb.i.i.i73: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i72 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i72, label %bb2.i.i.i75, label %bb1.i.i.i74
+
+bb1.i.i.i74: ; preds = %bb.i.i.i73
+ %15 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i75 unwind label %lpad40
+
+bb2.i.i.i75: ; preds = %bb1.i.i.i74, %bb.i.i.i73
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %10, align 4
+ br label %bb10
+
+bb10: ; preds = %bb2.i.i.i75, %bb3
+ %16 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %10, align 4
+ %17 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=3]
+ %20 = load %struct.BT_QUANTIZED_BVH_NODE** %19, align 4 ; [#uses=2]
+ %21 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %20, null ; [#uses=1]
+ br i1 %21, label %bb19, label %bb.i.i.i78
+
+bb.i.i.i78: ; preds = %bb10
+ %22 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i.i77 = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i77, label %bb2.i.i.i80, label %bb1.i.i.i79
+
+bb1.i.i.i79: ; preds = %bb.i.i.i78
+ %24 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %20 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %24)
+ to label %bb2.i.i.i80 unwind label %lpad36
+
+bb2.i.i.i80: ; preds = %bb1.i.i.i79, %bb.i.i.i78
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %19, align 4
+ br label %bb19
+
+bb19: ; preds = %bb2.i.i.i80, %bb10
+ %25 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %19, align 4
+ %26 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %29 = load %struct.btOptimizedBvhNode** %28, align 4 ; [#uses=2]
+ %30 = icmp eq %struct.btOptimizedBvhNode* %29, null ; [#uses=1]
+ br i1 %30, label %bb28, label %bb.i.i.i84
+
+bb.i.i.i84: ; preds = %bb19
+ %31 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %32 = load i8* %31, align 4 ; [#uses=1]
+ %toBool.i.i.i83 = icmp eq i8 %32, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i83, label %bb2.i.i.i86, label %bb1.i.i.i85
+
+bb1.i.i.i85: ; preds = %bb.i.i.i84
+ %33 = bitcast %struct.btOptimizedBvhNode* %29 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %33)
+ to label %bb2.i.i.i86 unwind label %lpad
+
+bb2.i.i.i86: ; preds = %bb1.i.i.i85, %bb.i.i.i84
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %28, align 4
+ br label %bb28
+
+invcont26: ; preds = %bb2.i.i.i102, %ppad
+ %34 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ store i8 1, i8* %34, align 4
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %58, align 4
+ %35 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 1 ; [#uses=1]
+ store i32 0, i32* %35, align 4
+ %36 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 2 ; [#uses=1]
+ store i32 0, i32* %36, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.2)
+ unreachable
+
+bb28: ; preds = %bb2.i.i.i86, %bb19
+ %37 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %37, align 4
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %28, align 4
+ %38 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ %39 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %39, align 4
+ %40 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=3]
+ %41 = load %struct.btOptimizedBvhNode** %40, align 4 ; [#uses=2]
+ %42 = icmp eq %struct.btOptimizedBvhNode* %41, null ; [#uses=1]
+ br i1 %42, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit92, label %bb.i.i.i89
+
+bb.i.i.i89: ; preds = %bb28
+ %43 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ %44 = load i8* %43, align 4 ; [#uses=1]
+ %toBool.i.i.i88 = icmp eq i8 %44, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i88, label %bb2.i.i.i91, label %bb1.i.i.i90
+
+bb1.i.i.i90: ; preds = %bb.i.i.i89
+ %45 = bitcast %struct.btOptimizedBvhNode* %41 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %45)
+ br label %bb2.i.i.i91
+
+bb2.i.i.i91: ; preds = %bb1.i.i.i90, %bb.i.i.i89
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %40, align 4
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit92
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit92: ; preds = %bb2.i.i.i91, %bb28
+ %46 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ store i8 1, i8* %46, align 4
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %40, align 4
+ %47 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 1 ; [#uses=1]
+ store i32 0, i32* %47, align 4
+ %48 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 2 ; [#uses=1]
+ store i32 0, i32* %48, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i85
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select35 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad36: ; preds = %bb1.i.i.i79
+ %eh_ptr37 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select39 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr37, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad64
+
+lpad40: ; preds = %bb1.i.i.i74
+ %eh_ptr41 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select43 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr41, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad65
+
+lpad44: ; preds = %bb1.i.i.i
+ %eh_ptr45 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select47 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr45, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %49 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ %50 = load %struct.BT_QUANTIZED_BVH_NODE** %49, align 4 ; [#uses=2]
+ %51 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %50, null ; [#uses=1]
+ br i1 %51, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit98, label %bb.i.i.i94
+
+bb.i.i.i94: ; preds = %lpad44
+ %52 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ %53 = load i8* %52, align 4 ; [#uses=1]
+ %toBool.i.i.i93 = icmp eq i8 %53, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i93, label %bb2.i.i.i96, label %bb1.i.i.i95
+
+bb1.i.i.i95: ; preds = %bb.i.i.i94
+ %54 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %50 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %54)
+ to label %bb2.i.i.i96 unwind label %lpad48
+
+bb2.i.i.i96: ; preds = %bb1.i.i.i95, %bb.i.i.i94
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %49, align 4
+ br label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit98
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit98: ; preds = %bb2.i.i.i96, %lpad44
+ %55 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %55, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %49, align 4
+ %56 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %56, align 4
+ %57 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %57, align 4
+ br label %ppad65
+
+lpad48: ; preds = %bb1.i.i.i95
+ %eh_ptr49 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select51 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr49, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad52: ; preds = %bb1.i.i.i113
+ %eh_ptr53 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select55 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr53, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad56: ; preds = %bb1.i.i.i107
+ %eh_ptr57 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select59 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr57, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad60: ; preds = %bb1.i.i.i101
+ %eh_ptr61 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select63 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr61, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit110, %lpad
+ %eh_exception.2 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.1, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit110 ] ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=3]
+ %59 = load %struct.btOptimizedBvhNode** %58, align 4 ; [#uses=2]
+ %60 = icmp eq %struct.btOptimizedBvhNode* %59, null ; [#uses=1]
+ br i1 %60, label %invcont26, label %bb.i.i.i100
+
+bb.i.i.i100: ; preds = %ppad
+ %61 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ %62 = load i8* %61, align 4 ; [#uses=1]
+ %toBool.i.i.i99 = icmp eq i8 %62, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i99, label %bb2.i.i.i102, label %bb1.i.i.i101
+
+bb1.i.i.i101: ; preds = %bb.i.i.i100
+ %63 = bitcast %struct.btOptimizedBvhNode* %59 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %63)
+ to label %bb2.i.i.i102 unwind label %lpad60
+
+bb2.i.i.i102: ; preds = %bb1.i.i.i101, %bb.i.i.i100
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %58, align 4
+ br label %invcont26
+
+ppad64: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit116, %lpad36
+ %eh_exception.1 = phi i8* [ %eh_ptr37, %lpad36 ], [ %eh_exception.0, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit116 ] ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %65 = load %struct.btOptimizedBvhNode** %64, align 4 ; [#uses=2]
+ %66 = icmp eq %struct.btOptimizedBvhNode* %65, null ; [#uses=1]
+ br i1 %66, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit110, label %bb.i.i.i106
+
+bb.i.i.i106: ; preds = %ppad64
+ %67 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %68 = load i8* %67, align 4 ; [#uses=1]
+ %toBool.i.i.i105 = icmp eq i8 %68, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i105, label %bb2.i.i.i108, label %bb1.i.i.i107
+
+bb1.i.i.i107: ; preds = %bb.i.i.i106
+ %69 = bitcast %struct.btOptimizedBvhNode* %65 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %69)
+ to label %bb2.i.i.i108 unwind label %lpad56
+
+bb2.i.i.i108: ; preds = %bb1.i.i.i107, %bb.i.i.i106
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %64, align 4
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit110
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeED1Ev.exit110: ; preds = %bb2.i.i.i108, %ppad64
+ %70 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %70, align 4
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %64, align 4
+ %71 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %71, align 4
+ %72 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %72, align 4
+ br label %ppad
+
+ppad65: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit98, %lpad40
+ %eh_exception.0 = phi i8* [ %eh_ptr41, %lpad40 ], [ %eh_ptr45, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit98 ] ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=3]
+ %74 = load %struct.BT_QUANTIZED_BVH_NODE** %73, align 4 ; [#uses=2]
+ %75 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %74, null ; [#uses=1]
+ br i1 %75, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit116, label %bb.i.i.i112
+
+bb.i.i.i112: ; preds = %ppad65
+ %76 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ %77 = load i8* %76, align 4 ; [#uses=1]
+ %toBool.i.i.i111 = icmp eq i8 %77, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i111, label %bb2.i.i.i114, label %bb1.i.i.i113
+
+bb1.i.i.i113: ; preds = %bb.i.i.i112
+ %78 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %74 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %78)
+ to label %bb2.i.i.i114 unwind label %lpad52
+
+bb2.i.i.i114: ; preds = %bb1.i.i.i113, %bb.i.i.i112
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %73, align 4
+ br label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit116
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeED1Ev.exit116: ; preds = %bb2.i.i.i114, %ppad65
+ %79 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %79, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %73, align 4
+ %80 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %80, align 4
+ %81 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %81, align 4
+ br label %ppad64
+}
+
+; [#uses=1]
+define void @_ZN14btQuantizedBvhC1Ev(%struct.btQuantizedBvh* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV14btQuantizedBvh, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 277, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 4 ; [#uses=1]
+ store i8 1, i8* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 3 ; [#uses=1]
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %4, align 4
+ %5 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 1 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 7, i32 2 ; [#uses=1]
+ store i32 0, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %8, align 4
+ %9 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %11, align 4
+ %12 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 3 ; [#uses=1]
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %12, align 4
+ %13 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %15, align 4
+ %16 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %16, align 4
+ %17 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 11 ; [#uses=1]
+ store i32 0, i32* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 4 ; [#uses=1]
+ store i8 1, i8* %20, align 4
+ %21 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 3 ; [#uses=1]
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %21, align 4
+ %22 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 1 ; [#uses=1]
+ store i32 0, i32* %22, align 4
+ %23 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 12, i32 2 ; [#uses=1]
+ store i32 0, i32* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 13 ; [#uses=1]
+ store i32 0, i32* %24, align 4
+ %25 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %32, align 4
+ ret void
+}
+
+; [#uses=263]
+declare float @sqrtf(float) nounwind readonly
+
+; [#uses=2]
+define void @_ZNK14btQuantizedBvh36walkStacklessQuantizedTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(%struct.btQuantizedBvh* %this, %struct.btActionInterface* %nodeCallback, %struct.btQuadWord* nocapture %raySource, %struct.btQuadWord* nocapture %rayTarget, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, i32 %startNodeIndex, i32 %endNodeIndex) align 2 {
+entry:
+ %bounds = alloca [2 x %struct.btQuadWord], align 8 ; [#uses=14]
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %1 = load %struct.BT_QUANTIZED_BVH_NODE** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %1, i32 %startNodeIndex ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %rayTarget, i32 0, i32 0, i32 2 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btQuadWord* %raySource, i32 0, i32 0, i32 2 ; [#uses=2]
+ %6 = load float* %5, align 4 ; [#uses=5]
+ %7 = fsub float %4, %6 ; [#uses=4]
+ %8 = getelementptr inbounds %struct.btQuadWord* %rayTarget, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=5]
+ %10 = getelementptr inbounds %struct.btQuadWord* %raySource, i32 0, i32 0, i32 1 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=5]
+ %12 = fsub float %9, %11 ; [#uses=4]
+ %13 = getelementptr inbounds %struct.btQuadWord* %rayTarget, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=5]
+ %15 = getelementptr inbounds %struct.btQuadWord* %raySource, i32 0, i32 0, i32 0 ; [#uses=2]
+ %16 = load float* %15, align 4 ; [#uses=5]
+ %17 = fsub float %14, %16 ; [#uses=4]
+ %18 = fmul float %17, %17 ; [#uses=1]
+ %19 = fmul float %12, %12 ; [#uses=1]
+ %20 = fadd float %18, %19 ; [#uses=1]
+ %21 = fmul float %7, %7 ; [#uses=1]
+ %22 = fadd float %20, %21 ; [#uses=1]
+ %23 = call float @sqrtf(float %22) nounwind readonly ; [#uses=1]
+ %24 = fdiv float 1.000000e+00, %23 ; [#uses=3]
+ %25 = fmul float %17, %24 ; [#uses=3]
+ %26 = fmul float %12, %24 ; [#uses=3]
+ %27 = fmul float %7, %24 ; [#uses=3]
+ %28 = fmul float %25, %17 ; [#uses=1]
+ %29 = fmul float %26, %12 ; [#uses=1]
+ %30 = fadd float %28, %29 ; [#uses=1]
+ %31 = fmul float %27, %7 ; [#uses=1]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = fcmp une float %25, 0.000000e+00 ; [#uses=1]
+ br i1 %33, label %bb, label %bb2
+
+bb: ; preds = %entry
+ %34 = fdiv float 1.000000e+00, %25 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb, %entry
+ %iftmp.234.0 = phi float [ %34, %bb ], [ 0x43ABC16D60000000, %entry ] ; [#uses=3]
+ %35 = fcmp une float %26, 0.000000e+00 ; [#uses=1]
+ br i1 %35, label %bb3, label %bb5
+
+bb3: ; preds = %bb2
+ %36 = fdiv float 1.000000e+00, %26 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb3, %bb2
+ %iftmp.235.0 = phi float [ %36, %bb3 ], [ 0x43ABC16D60000000, %bb2 ] ; [#uses=3]
+ %37 = fcmp une float %27, 0.000000e+00 ; [#uses=1]
+ br i1 %37, label %bb6, label %bb8
+
+bb6: ; preds = %bb5
+ %38 = fdiv float 1.000000e+00, %27 ; [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb5
+ %iftmp.236.0 = phi float [ %38, %bb6 ], [ 0x43ABC16D60000000, %bb5 ] ; [#uses=3]
+ %39 = fcmp olt float %14, %16 ; [#uses=1]
+ %rayAabbMin.0.0.0 = select i1 %39, float %14, float %16 ; [#uses=1]
+ %40 = fcmp olt float %9, %11 ; [#uses=1]
+ %rayAabbMin.0.1.0 = select i1 %40, float %9, float %11 ; [#uses=1]
+ %41 = fcmp olt float %4, %6 ; [#uses=1]
+ %rayAabbMin.0.2.0 = select i1 %41, float %4, float %6 ; [#uses=1]
+ %42 = fcmp olt float %16, %14 ; [#uses=1]
+ %rayAabbMax.0.0.0 = select i1 %42, float %14, float %16 ; [#uses=1]
+ %43 = fcmp olt float %11, %9 ; [#uses=1]
+ %rayAabbMax.0.1.0 = select i1 %43, float %9, float %11 ; [#uses=1]
+ %44 = fcmp olt float %6, %4 ; [#uses=1]
+ %rayAabbMax.0.2.0 = select i1 %44, float %4, float %6 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=2]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fadd float %rayAabbMin.0.0.0, %46 ; [#uses=2]
+ %48 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=2]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fadd float %rayAabbMin.0.1.0, %49 ; [#uses=2]
+ %51 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=2]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = fadd float %rayAabbMin.0.2.0, %52 ; [#uses=2]
+ %54 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=2]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fadd float %rayAabbMax.0.0.0, %55 ; [#uses=2]
+ %57 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=2]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = fadd float %rayAabbMax.0.1.0, %58 ; [#uses=2]
+ %60 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=2]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fadd float %rayAabbMax.0.2.0, %61 ; [#uses=2]
+ %63 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %64 = load float* %63, align 4 ; [#uses=6]
+ %65 = fcmp olt float %47, %64 ; [#uses=1]
+ %clampedPoint.0.0.0.i29 = select i1 %65, float %64, float %47 ; [#uses=2]
+ %66 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %67 = load float* %66, align 4 ; [#uses=6]
+ %68 = fcmp olt float %50, %67 ; [#uses=1]
+ %clampedPoint.0.1.0.i30 = select i1 %68, float %67, float %50 ; [#uses=2]
+ %69 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %70 = load float* %69, align 4 ; [#uses=6]
+ %71 = fcmp olt float %53, %70 ; [#uses=1]
+ %clampedPoint.0.2.0.i31 = select i1 %71, float %70, float %53 ; [#uses=2]
+ %72 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=4]
+ %74 = fcmp olt float %73, %clampedPoint.0.0.0.i29 ; [#uses=1]
+ %clampedPoint.0.0.1.i32 = select i1 %74, float %73, float %clampedPoint.0.0.0.i29 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=4]
+ %77 = fcmp olt float %76, %clampedPoint.0.1.0.i30 ; [#uses=1]
+ %clampedPoint.0.1.1.i33 = select i1 %77, float %76, float %clampedPoint.0.1.0.i30 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=4]
+ %80 = fcmp olt float %79, %clampedPoint.0.2.0.i31 ; [#uses=1]
+ %clampedPoint.0.2.1.i34 = select i1 %80, float %79, float %clampedPoint.0.2.0.i31 ; [#uses=1]
+ %81 = fsub float %clampedPoint.0.2.1.i34, %70 ; [#uses=1]
+ %82 = fsub float %clampedPoint.0.1.1.i33, %67 ; [#uses=1]
+ %83 = fsub float %clampedPoint.0.0.1.i32, %64 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %85 = load float* %84, align 4 ; [#uses=2]
+ %86 = fmul float %81, %85 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %88 = load float* %87, align 4 ; [#uses=2]
+ %89 = fmul float %82, %88 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %91 = load float* %90, align 4 ; [#uses=2]
+ %92 = fmul float %83, %91 ; [#uses=1]
+ %93 = fptoui float %92 to i16 ; [#uses=1]
+ %94 = and i16 %93, -2 ; [#uses=1]
+ %95 = fptoui float %89 to i16 ; [#uses=1]
+ %96 = and i16 %95, -2 ; [#uses=1]
+ %97 = fptoui float %86 to i16 ; [#uses=1]
+ %98 = and i16 %97, -2 ; [#uses=1]
+ %99 = fcmp olt float %56, %64 ; [#uses=1]
+ %clampedPoint.0.0.0.i = select i1 %99, float %64, float %56 ; [#uses=2]
+ %100 = fcmp olt float %59, %67 ; [#uses=1]
+ %clampedPoint.0.1.0.i = select i1 %100, float %67, float %59 ; [#uses=2]
+ %101 = fcmp olt float %62, %70 ; [#uses=1]
+ %clampedPoint.0.2.0.i = select i1 %101, float %70, float %62 ; [#uses=2]
+ %102 = fcmp olt float %73, %clampedPoint.0.0.0.i ; [#uses=1]
+ %clampedPoint.0.0.1.i = select i1 %102, float %73, float %clampedPoint.0.0.0.i ; [#uses=1]
+ %103 = fcmp olt float %76, %clampedPoint.0.1.0.i ; [#uses=1]
+ %clampedPoint.0.1.1.i = select i1 %103, float %76, float %clampedPoint.0.1.0.i ; [#uses=1]
+ %104 = fcmp olt float %79, %clampedPoint.0.2.0.i ; [#uses=1]
+ %clampedPoint.0.2.1.i = select i1 %104, float %79, float %clampedPoint.0.2.0.i ; [#uses=1]
+ %105 = fsub float %clampedPoint.0.2.1.i, %70 ; [#uses=1]
+ %106 = fsub float %clampedPoint.0.1.1.i, %67 ; [#uses=1]
+ %107 = fsub float %clampedPoint.0.0.1.i, %64 ; [#uses=1]
+ %108 = fmul float %105, %85 ; [#uses=1]
+ %109 = fmul float %106, %88 ; [#uses=1]
+ %110 = fmul float %107, %91 ; [#uses=1]
+ %111 = fadd float %110, 1.000000e+00 ; [#uses=1]
+ %112 = fptoui float %111 to i16 ; [#uses=1]
+ %113 = or i16 %112, 1 ; [#uses=1]
+ %114 = fadd float %109, 1.000000e+00 ; [#uses=1]
+ %115 = fptoui float %114 to i16 ; [#uses=1]
+ %116 = or i16 %115, 1 ; [#uses=1]
+ %117 = fadd float %108, 1.000000e+00 ; [#uses=1]
+ %118 = fptoui float %117 to i16 ; [#uses=1]
+ %119 = or i16 %118, 1 ; [#uses=1]
+ %120 = icmp slt i32 %startNodeIndex, %endNodeIndex ; [#uses=1]
+ br i1 %120, label %bb.nph78, label %bb24
+
+bb.nph78: ; preds = %bb8
+ %121 = fcmp olt float %iftmp.236.0, 0.000000e+00 ; [#uses=1]
+ %122 = fcmp olt float %iftmp.235.0, 0.000000e+00 ; [#uses=1]
+ %123 = fcmp olt float %iftmp.234.0, 0.000000e+00 ; [#uses=1]
+ %124 = zext i1 %121 to i32 ; [#uses=2]
+ %125 = zext i1 %122 to i32 ; [#uses=2]
+ %126 = zext i1 %123 to i32 ; [#uses=2]
+ %127 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %128 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %129 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %130 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %131 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %132 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %133 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %134 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %135 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %126, i32 0, i32 0 ; [#uses=1]
+ %136 = xor i32 %126, 1 ; [#uses=1]
+ %137 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %136, i32 0, i32 0 ; [#uses=1]
+ %138 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %125, i32 0, i32 1 ; [#uses=1]
+ %139 = xor i32 %125, 1 ; [#uses=1]
+ %140 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %139, i32 0, i32 1 ; [#uses=1]
+ %141 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %124, i32 0, i32 2 ; [#uses=1]
+ %142 = xor i32 %124, 1 ; [#uses=1]
+ %143 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %142, i32 0, i32 2 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btActionInterface* %nodeCallback, i32 0, i32 0 ; [#uses=1]
+ br label %bb9
+
+bb9: ; preds = %bb23.backedge, %bb.nph78
+ %rootNode.076 = phi %struct.BT_QUANTIZED_BVH_NODE* [ %2, %bb.nph78 ], [ %rootNode.0.be, %bb23.backedge ] ; [#uses=9]
+ %walkIterations.075 = phi i32 [ 0, %bb.nph78 ], [ %tmp, %bb23.backedge ] ; [#uses=1]
+ %curIndex.074 = phi i32 [ %startNodeIndex, %bb.nph78 ], [ %curIndex.0.be, %bb23.backedge ] ; [#uses=2]
+ %tmp = add i32 %walkIterations.075, 1 ; [#uses=2]
+ %145 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.076, i32 0, i32 1, i32 0 ; [#uses=2]
+ %146 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.076, i32 0, i32 0, i32 0 ; [#uses=1]
+ %147 = load i16* %145, align 2 ; [#uses=1]
+ %148 = icmp ule i16 %94, %147 ; [#uses=1]
+ %149 = load i16* %146, align 2 ; [#uses=2]
+ %150 = icmp uge i16 %113, %149 ; [#uses=1]
+ %151 = and i1 %148, %150 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.076, i32 0, i32 1, i32 2 ; [#uses=2]
+ %153 = load i16* %152, align 2 ; [#uses=1]
+ %154 = icmp ule i16 %98, %153 ; [#uses=1]
+ %155 = and i1 %151, %154 ; [#uses=1]
+ %156 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.076, i32 0, i32 0, i32 2 ; [#uses=1]
+ %157 = load i16* %156, align 2 ; [#uses=2]
+ %158 = icmp uge i16 %119, %157 ; [#uses=1]
+ %159 = and i1 %155, %158 ; [#uses=1]
+ %160 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.076, i32 0, i32 1, i32 1 ; [#uses=2]
+ %161 = load i16* %160, align 2 ; [#uses=1]
+ %162 = icmp ule i16 %96, %161 ; [#uses=1]
+ %163 = and i1 %159, %162 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.076, i32 0, i32 0, i32 1 ; [#uses=1]
+ %165 = load i16* %164, align 2 ; [#uses=2]
+ %166 = icmp uge i16 %116, %165 ; [#uses=1]
+ %167 = and i1 %163, %166 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.076, i32 0, i32 2 ; [#uses=3]
+ %169 = load i32* %168, align 4 ; [#uses=1]
+ %.lobit.i = lshr i32 %169, 31 ; [#uses=1]
+ %tmp.i = trunc i32 %.lobit.i to i8 ; [#uses=2]
+ br i1 %167, label %bb13, label %bb18
+
+bb13: ; preds = %bb9
+ %170 = uitofp i16 %157 to float ; [#uses=1]
+ %171 = load float* %84, align 4 ; [#uses=2]
+ %172 = fdiv float %170, %171 ; [#uses=1]
+ %173 = uitofp i16 %165 to float ; [#uses=1]
+ %174 = load float* %87, align 4 ; [#uses=2]
+ %175 = fdiv float %173, %174 ; [#uses=1]
+ %176 = uitofp i16 %149 to float ; [#uses=1]
+ %177 = load float* %90, align 4 ; [#uses=2]
+ %178 = fdiv float %176, %177 ; [#uses=1]
+ %179 = load float* %63, align 4 ; [#uses=2]
+ %180 = fadd float %178, %179 ; [#uses=2]
+ %181 = load float* %66, align 4 ; [#uses=2]
+ %182 = fadd float %175, %181 ; [#uses=2]
+ %183 = load float* %69, align 4 ; [#uses=2]
+ %184 = fadd float %172, %183 ; [#uses=2]
+ store float %180, float* %127, align 8
+ store float %182, float* %128, align 4
+ store float %184, float* %129, align 8
+ store float 0.000000e+00, float* %130, align 4
+ %185 = load i16* %152, align 2 ; [#uses=1]
+ %186 = uitofp i16 %185 to float ; [#uses=1]
+ %187 = fdiv float %186, %171 ; [#uses=1]
+ %188 = load i16* %160, align 2 ; [#uses=1]
+ %189 = uitofp i16 %188 to float ; [#uses=1]
+ %190 = fdiv float %189, %174 ; [#uses=1]
+ %191 = load i16* %145, align 2 ; [#uses=1]
+ %192 = uitofp i16 %191 to float ; [#uses=1]
+ %193 = fdiv float %192, %177 ; [#uses=1]
+ %194 = fadd float %193, %179 ; [#uses=1]
+ %195 = fadd float %190, %181 ; [#uses=1]
+ %196 = fadd float %187, %183 ; [#uses=1]
+ store float 0.000000e+00, float* %134, align 4
+ %197 = load float* %54, align 4 ; [#uses=1]
+ %198 = fsub float %180, %197 ; [#uses=1]
+ store float %198, float* %127, align 8
+ %199 = load float* %57, align 4 ; [#uses=1]
+ %200 = fsub float %182, %199 ; [#uses=1]
+ store float %200, float* %128, align 4
+ %201 = load float* %60, align 4 ; [#uses=1]
+ %202 = fsub float %184, %201 ; [#uses=1]
+ store float %202, float* %129, align 8
+ %203 = load float* %45, align 4 ; [#uses=1]
+ %204 = fsub float %194, %203 ; [#uses=1]
+ store float %204, float* %131, align 8
+ %205 = load float* %48, align 4 ; [#uses=1]
+ %206 = fsub float %195, %205 ; [#uses=1]
+ store float %206, float* %132, align 4
+ %207 = load float* %51, align 4 ; [#uses=1]
+ %208 = fsub float %196, %207 ; [#uses=1]
+ store float %208, float* %133, align 8
+ %209 = load float* %135, align 8 ; [#uses=1]
+ %210 = load float* %15, align 4 ; [#uses=2]
+ %211 = fsub float %209, %210 ; [#uses=1]
+ %212 = fmul float %211, %iftmp.234.0 ; [#uses=3]
+ %213 = load float* %137, align 8 ; [#uses=1]
+ %214 = fsub float %213, %210 ; [#uses=1]
+ %215 = fmul float %214, %iftmp.234.0 ; [#uses=3]
+ %216 = load float* %138, align 4 ; [#uses=1]
+ %217 = load float* %10, align 4 ; [#uses=2]
+ %218 = fsub float %216, %217 ; [#uses=1]
+ %219 = fmul float %218, %iftmp.235.0 ; [#uses=3]
+ %220 = load float* %140, align 4 ; [#uses=1]
+ %221 = fsub float %220, %217 ; [#uses=1]
+ %222 = fmul float %221, %iftmp.235.0 ; [#uses=3]
+ %223 = fcmp ogt float %212, %222 ; [#uses=1]
+ %224 = fcmp ogt float %219, %215 ; [#uses=1]
+ %or.cond.i = or i1 %223, %224 ; [#uses=1]
+ br i1 %or.cond.i, label %bb18, label %bb2.i
+
+bb2.i: ; preds = %bb13
+ %225 = fcmp olt float %212, %219 ; [#uses=1]
+ %226 = select i1 %225, float %219, float %212 ; [#uses=3]
+ %227 = fcmp olt float %222, %215 ; [#uses=1]
+ %tmax.0.i = select i1 %227, float %222, float %215 ; [#uses=3]
+ %228 = load float* %141, align 8 ; [#uses=1]
+ %229 = load float* %5, align 4 ; [#uses=2]
+ %230 = fsub float %228, %229 ; [#uses=1]
+ %231 = fmul float %230, %iftmp.236.0 ; [#uses=3]
+ %232 = load float* %143, align 8 ; [#uses=1]
+ %233 = fsub float %232, %229 ; [#uses=1]
+ %234 = fmul float %233, %iftmp.236.0 ; [#uses=3]
+ %235 = fcmp ogt float %226, %234 ; [#uses=1]
+ %236 = fcmp ogt float %231, %tmax.0.i ; [#uses=1]
+ %or.cond21.i = or i1 %235, %236 ; [#uses=1]
+ br i1 %or.cond21.i, label %bb18, label %bb9.i
+
+bb9.i: ; preds = %bb2.i
+ %237 = fcmp olt float %226, %231 ; [#uses=1]
+ %238 = select i1 %237, float %231, float %226 ; [#uses=1]
+ %239 = fcmp olt float %234, %tmax.0.i ; [#uses=1]
+ %tmax.1.i = select i1 %239, float %234, float %tmax.0.i ; [#uses=1]
+ %240 = fcmp uge float %238, %32 ; [#uses=1]
+ %241 = fcmp ule float %tmax.1.i, 0.000000e+00 ; [#uses=1]
+ %or.cond22.i = or i1 %240, %241 ; [#uses=2]
+ %242 = zext i1 %or.cond22.i to i32 ; [#uses=1]
+ %iftmp.131.0.i = xor i32 %242, 1 ; [#uses=2]
+ %toBool = icmp eq i8 %tmp.i, 1 ; [#uses=1]
+ %or.cond = or i1 %toBool, %or.cond22.i ; [#uses=1]
+ br i1 %or.cond, label %bb18, label %bb17
+
+bb17: ; preds = %bb9.i
+ %243 = load i32 (...)*** %144, align 4 ; [#uses=1]
+ %244 = getelementptr inbounds i32 (...)** %243, i32 2 ; [#uses=1]
+ %245 = load i32 (...)** %244, align 4 ; [#uses=1]
+ %246 = load i32* %168, align 4 ; [#uses=2]
+ %247 = and i32 %246, 2097151 ; [#uses=1]
+ %248 = ashr i32 %246, 21 ; [#uses=1]
+ %249 = bitcast i32 (...)* %245 to void (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ call void %249(%struct.btActionInterface* %nodeCallback, i32 %248, i32 %247)
+ br label %bb18
+
+bb18: ; preds = %bb17, %bb9.i, %bb2.i, %bb13, %bb9
+ %rayBoxOverlap.072 = phi i32 [ %iftmp.131.0.i, %bb9.i ], [ %iftmp.131.0.i, %bb17 ], [ 0, %bb9 ], [ 0, %bb2.i ], [ 0, %bb13 ] ; [#uses=1]
+ %250 = icmp eq i32 %rayBoxOverlap.072, 0 ; [#uses=1]
+ %toBool20 = icmp eq i8 %tmp.i, 1 ; [#uses=1]
+ %or.cond28 = and i1 %250, %toBool20 ; [#uses=1]
+ br i1 %or.cond28, label %bb22, label %bb21
+
+bb21: ; preds = %bb18
+ %251 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.076, i32 1 ; [#uses=1]
+ %252 = add nsw i32 %curIndex.074, 1 ; [#uses=1]
+ br label %bb23.backedge
+
+bb23.backedge: ; preds = %bb22, %bb21
+ %curIndex.0.be = phi i32 [ %252, %bb21 ], [ %257, %bb22 ] ; [#uses=2]
+ %rootNode.0.be = phi %struct.BT_QUANTIZED_BVH_NODE* [ %251, %bb21 ], [ %256, %bb22 ] ; [#uses=1]
+ %253 = icmp slt i32 %curIndex.0.be, %endNodeIndex ; [#uses=1]
+ br i1 %253, label %bb9, label %bb24
+
+bb22: ; preds = %bb18
+ %254 = load i32* %168, align 4 ; [#uses=2]
+ %255 = sub nsw i32 0, %254 ; [#uses=1]
+ %256 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %rootNode.076, i32 %255 ; [#uses=1]
+ %257 = sub i32 %curIndex.074, %254 ; [#uses=1]
+ br label %bb23.backedge
+
+bb24: ; preds = %bb23.backedge, %bb8
+ %walkIterations.0.lcssa = phi i32 [ 0, %bb8 ], [ %tmp, %bb23.backedge ] ; [#uses=2]
+ %258 = load i32* @maxIterations, align 4 ; [#uses=1]
+ %259 = icmp slt i32 %258, %walkIterations.0.lcssa ; [#uses=1]
+ br i1 %259, label %bb25, label %return
+
+bb25: ; preds = %bb24
+ store i32 %walkIterations.0.lcssa, i32* @maxIterations, align 4
+ ret void
+
+return: ; preds = %bb24
+ ret void
+}
+
+; [#uses=2]
+define void @_ZNK14btQuantizedBvh27walkStacklessTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(%struct.btQuantizedBvh* nocapture %this, %struct.btActionInterface* %nodeCallback, %struct.btQuadWord* nocapture %raySource, %struct.btQuadWord* nocapture %rayTarget, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, i32 %startNodeIndex, i32 %endNodeIndex) align 2 {
+entry:
+ %bounds = alloca [2 x %struct.btQuadWord], align 8 ; [#uses=14]
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ %1 = load %struct.btOptimizedBvhNode** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %raySource, i32 0, i32 0, i32 0 ; [#uses=2]
+ %3 = load float* %2, align 4 ; [#uses=5]
+ %4 = getelementptr inbounds %struct.btQuadWord* %raySource, i32 0, i32 0, i32 1 ; [#uses=2]
+ %5 = load float* %4, align 4 ; [#uses=5]
+ %6 = getelementptr inbounds %struct.btQuadWord* %raySource, i32 0, i32 0, i32 2 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=5]
+ %8 = getelementptr inbounds %struct.btQuadWord* %rayTarget, i32 0, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=5]
+ %10 = fcmp olt float %9, %3 ; [#uses=1]
+ %rayAabbMin.0.0.0 = select i1 %10, float %9, float %3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %rayTarget, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=5]
+ %13 = fcmp olt float %12, %5 ; [#uses=1]
+ %rayAabbMin.0.1.0 = select i1 %13, float %12, float %5 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %rayTarget, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=5]
+ %16 = fcmp olt float %15, %7 ; [#uses=1]
+ %rayAabbMin.0.2.0 = select i1 %16, float %15, float %7 ; [#uses=1]
+ %17 = fcmp olt float %3, %9 ; [#uses=1]
+ %rayAabbMax.0.0.0 = select i1 %17, float %9, float %3 ; [#uses=1]
+ %18 = fcmp olt float %5, %12 ; [#uses=1]
+ %rayAabbMax.0.1.0 = select i1 %18, float %12, float %5 ; [#uses=1]
+ %19 = fcmp olt float %7, %15 ; [#uses=1]
+ %rayAabbMax.0.2.0 = select i1 %19, float %15, float %7 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fadd float %rayAabbMin.0.0.0, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fadd float %rayAabbMin.0.1.0, %24 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=2]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fadd float %rayAabbMin.0.2.0, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=2]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fadd float %rayAabbMax.0.0.0, %30 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=2]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fadd float %rayAabbMax.0.1.0, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=2]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = fadd float %rayAabbMax.0.2.0, %36 ; [#uses=1]
+ %38 = fsub float %15, %7 ; [#uses=4]
+ %39 = fsub float %12, %5 ; [#uses=4]
+ %40 = fsub float %9, %3 ; [#uses=4]
+ %41 = fmul float %40, %40 ; [#uses=1]
+ %42 = fmul float %39, %39 ; [#uses=1]
+ %43 = fadd float %41, %42 ; [#uses=1]
+ %44 = fmul float %38, %38 ; [#uses=1]
+ %45 = fadd float %43, %44 ; [#uses=1]
+ %46 = call float @sqrtf(float %45) nounwind readonly ; [#uses=1]
+ %47 = fdiv float 1.000000e+00, %46 ; [#uses=3]
+ %48 = fmul float %40, %47 ; [#uses=3]
+ %49 = fmul float %39, %47 ; [#uses=3]
+ %50 = fmul float %38, %47 ; [#uses=3]
+ %51 = fmul float %48, %40 ; [#uses=1]
+ %52 = fmul float %49, %39 ; [#uses=1]
+ %53 = fadd float %51, %52 ; [#uses=1]
+ %54 = fmul float %50, %38 ; [#uses=1]
+ %55 = fadd float %53, %54 ; [#uses=1]
+ %56 = fcmp une float %48, 0.000000e+00 ; [#uses=1]
+ br i1 %56, label %bb, label %bb2
+
+bb: ; preds = %entry
+ %57 = fdiv float 1.000000e+00, %48 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb, %entry
+ %iftmp.228.0 = phi float [ %57, %bb ], [ 0x43ABC16D60000000, %entry ] ; [#uses=3]
+ %58 = fcmp une float %49, 0.000000e+00 ; [#uses=1]
+ br i1 %58, label %bb3, label %bb5
+
+bb3: ; preds = %bb2
+ %59 = fdiv float 1.000000e+00, %49 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb3, %bb2
+ %iftmp.229.0 = phi float [ %59, %bb3 ], [ 0x43ABC16D60000000, %bb2 ] ; [#uses=3]
+ %60 = fcmp une float %50, 0.000000e+00 ; [#uses=1]
+ br i1 %60, label %bb6, label %bb23.preheader
+
+bb6: ; preds = %bb5
+ %61 = fdiv float 1.000000e+00, %50 ; [#uses=1]
+ br label %bb23.preheader
+
+bb23.preheader: ; preds = %bb6, %bb5
+ %iftmp.230.0 = phi float [ %61, %bb6 ], [ 0x43ABC16D60000000, %bb5 ] ; [#uses=3]
+ %62 = fcmp olt float %iftmp.228.0, 0.000000e+00 ; [#uses=1]
+ %63 = zext i1 %62 to i32 ; [#uses=2]
+ %64 = fcmp olt float %iftmp.229.0, 0.000000e+00 ; [#uses=1]
+ %65 = zext i1 %64 to i32 ; [#uses=2]
+ %66 = fcmp olt float %iftmp.230.0, 0.000000e+00 ; [#uses=1]
+ %67 = zext i1 %66 to i32 ; [#uses=2]
+ %68 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 5 ; [#uses=2]
+ %69 = load i32* %68, align 4 ; [#uses=1]
+ %70 = icmp sgt i32 %69, 0 ; [#uses=1]
+ br i1 %70, label %bb.nph, label %bb24
+
+bb.nph: ; preds = %bb23.preheader
+ %71 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %72 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %73 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %74 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %75 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %76 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %77 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %78 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %79 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %63, i32 0, i32 0 ; [#uses=1]
+ %80 = xor i32 %63, 1 ; [#uses=1]
+ %81 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %80, i32 0, i32 0 ; [#uses=1]
+ %82 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %65, i32 0, i32 1 ; [#uses=1]
+ %83 = xor i32 %65, 1 ; [#uses=1]
+ %84 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %83, i32 0, i32 1 ; [#uses=1]
+ %85 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %67, i32 0, i32 2 ; [#uses=1]
+ %86 = xor i32 %67, 1 ; [#uses=1]
+ %87 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %86, i32 0, i32 2 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btActionInterface* %nodeCallback, i32 0, i32 0 ; [#uses=1]
+ br label %bb12
+
+bb12: ; preds = %bb23.backedge, %bb.nph
+ %walkIterations.072 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb23.backedge ] ; [#uses=1]
+ %curIndex.071 = phi i32 [ 0, %bb.nph ], [ %curIndex.0.be, %bb23.backedge ] ; [#uses=2]
+ %rootNode.069 = phi %struct.btOptimizedBvhNode* [ %1, %bb.nph ], [ %rootNode.0.be, %bb23.backedge ] ; [#uses=15]
+ %tmp = add i32 %walkIterations.072, 1 ; [#uses=2]
+ %89 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %90 = load float* %89, align 4 ; [#uses=2]
+ store float %90, float* %71, align 8
+ %91 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %92 = load float* %91, align 4 ; [#uses=2]
+ store float %92, float* %72, align 4
+ %93 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %94 = load float* %93, align 4 ; [#uses=2]
+ store float %94, float* %73, align 8
+ %95 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %74, align 4
+ %97 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %98 = load float* %97, align 4 ; [#uses=2]
+ store float %98, float* %75, align 8
+ %99 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %100 = load float* %99, align 4 ; [#uses=2]
+ store float %100, float* %76, align 4
+ %101 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %102 = load float* %101, align 4 ; [#uses=2]
+ store float %102, float* %77, align 8
+ %103 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %104 = load float* %103, align 4 ; [#uses=1]
+ store float %104, float* %78, align 4
+ %105 = load float* %29, align 4 ; [#uses=1]
+ %106 = fsub float %90, %105 ; [#uses=1]
+ store float %106, float* %71, align 8
+ %107 = load float* %32, align 4 ; [#uses=1]
+ %108 = fsub float %92, %107 ; [#uses=1]
+ store float %108, float* %72, align 4
+ %109 = load float* %35, align 4 ; [#uses=1]
+ %110 = fsub float %94, %109 ; [#uses=1]
+ store float %110, float* %73, align 8
+ %111 = load float* %20, align 4 ; [#uses=1]
+ %112 = fsub float %98, %111 ; [#uses=1]
+ store float %112, float* %75, align 8
+ %113 = load float* %23, align 4 ; [#uses=1]
+ %114 = fsub float %100, %113 ; [#uses=1]
+ store float %114, float* %76, align 4
+ %115 = load float* %26, align 4 ; [#uses=1]
+ %116 = fsub float %102, %115 ; [#uses=1]
+ store float %116, float* %77, align 8
+ %117 = load float* %97, align 4 ; [#uses=1]
+ %118 = fcmp ogt float %22, %117 ; [#uses=1]
+ br i1 %118, label %bb2.i29, label %bb.i
+
+bb.i: ; preds = %bb12
+ %119 = load float* %89, align 4 ; [#uses=1]
+ %120 = fcmp olt float %31, %119 ; [#uses=1]
+ br i1 %120, label %bb2.i29, label %bb3.i30
+
+bb2.i29: ; preds = %bb.i, %bb12
+ br label %bb3.i30
+
+bb3.i30: ; preds = %bb2.i29, %bb.i
+ %iftmp.116.0.i = phi i8 [ 0, %bb2.i29 ], [ 1, %bb.i ] ; [#uses=1]
+ %121 = load float* %101, align 4 ; [#uses=1]
+ %122 = fcmp ogt float %28, %121 ; [#uses=1]
+ br i1 %122, label %bb6.i, label %bb4.i31
+
+bb4.i31: ; preds = %bb3.i30
+ %123 = load float* %93, align 4 ; [#uses=1]
+ %124 = fcmp olt float %37, %123 ; [#uses=1]
+ br i1 %124, label %bb6.i, label %bb7.i
+
+bb6.i: ; preds = %bb4.i31, %bb3.i30
+ br label %bb7.i
+
+bb7.i: ; preds = %bb6.i, %bb4.i31
+ %iftmp.117.0.i = phi i8 [ 0, %bb6.i ], [ %iftmp.116.0.i, %bb4.i31 ] ; [#uses=1]
+ %125 = load float* %99, align 4 ; [#uses=1]
+ %126 = fcmp ogt float %25, %125 ; [#uses=1]
+ br i1 %126, label %bb15.thread, label %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+
+_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit: ; preds = %bb7.i
+ %127 = load float* %91, align 4 ; [#uses=1]
+ %128 = fcmp olt float %34, %127 ; [#uses=1]
+ %phitmp64 = icmp eq i8 %iftmp.117.0.i, 0 ; [#uses=1]
+ %phitmp = or i1 %128, %phitmp64 ; [#uses=1]
+ br i1 %phitmp, label %bb15.thread, label %bb13
+
+bb13: ; preds = %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+ %129 = load float* %79, align 8 ; [#uses=1]
+ %130 = load float* %2, align 4 ; [#uses=2]
+ %131 = fsub float %129, %130 ; [#uses=1]
+ %132 = fmul float %131, %iftmp.228.0 ; [#uses=3]
+ %133 = load float* %81, align 8 ; [#uses=1]
+ %134 = fsub float %133, %130 ; [#uses=1]
+ %135 = fmul float %134, %iftmp.228.0 ; [#uses=3]
+ %136 = load float* %82, align 4 ; [#uses=1]
+ %137 = load float* %4, align 4 ; [#uses=2]
+ %138 = fsub float %136, %137 ; [#uses=1]
+ %139 = fmul float %138, %iftmp.229.0 ; [#uses=3]
+ %140 = load float* %84, align 4 ; [#uses=1]
+ %141 = fsub float %140, %137 ; [#uses=1]
+ %142 = fmul float %141, %iftmp.229.0 ; [#uses=3]
+ %143 = fcmp ogt float %132, %142 ; [#uses=1]
+ %144 = fcmp ogt float %139, %135 ; [#uses=1]
+ %or.cond.i = or i1 %143, %144 ; [#uses=1]
+ br i1 %or.cond.i, label %bb15.thread, label %bb2.i
+
+bb2.i: ; preds = %bb13
+ %145 = fcmp olt float %132, %139 ; [#uses=1]
+ %146 = select i1 %145, float %139, float %132 ; [#uses=3]
+ %147 = fcmp olt float %142, %135 ; [#uses=1]
+ %tmax.0.i = select i1 %147, float %142, float %135 ; [#uses=3]
+ %148 = load float* %85, align 8 ; [#uses=1]
+ %149 = load float* %6, align 4 ; [#uses=2]
+ %150 = fsub float %148, %149 ; [#uses=1]
+ %151 = fmul float %150, %iftmp.230.0 ; [#uses=3]
+ %152 = load float* %87, align 8 ; [#uses=1]
+ %153 = fsub float %152, %149 ; [#uses=1]
+ %154 = fmul float %153, %iftmp.230.0 ; [#uses=3]
+ %155 = fcmp ogt float %146, %154 ; [#uses=1]
+ %156 = fcmp ogt float %151, %tmax.0.i ; [#uses=1]
+ %or.cond21.i = or i1 %155, %156 ; [#uses=1]
+ br i1 %or.cond21.i, label %bb15.thread, label %bb9.i
+
+bb9.i: ; preds = %bb2.i
+ %157 = fcmp olt float %146, %151 ; [#uses=1]
+ %158 = select i1 %157, float %151, float %146 ; [#uses=1]
+ %159 = fcmp olt float %154, %tmax.0.i ; [#uses=1]
+ %tmax.1.i = select i1 %159, float %154, float %tmax.0.i ; [#uses=1]
+ %160 = fcmp uge float %158, %55 ; [#uses=1]
+ %161 = fcmp ule float %tmax.1.i, 0.000000e+00 ; [#uses=1]
+ %or.cond22.i = or i1 %160, %161 ; [#uses=2]
+ %162 = zext i1 %or.cond22.i to i32 ; [#uses=1]
+ %iftmp.131.0.i = xor i32 %162, 1 ; [#uses=2]
+ %163 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 0, i32 2 ; [#uses=1]
+ %164 = load i32* %163, align 4 ; [#uses=1]
+ %165 = icmp eq i32 %164, -1 ; [#uses=3]
+ %.not = xor i1 %165, true ; [#uses=1]
+ %or.cond = or i1 %or.cond22.i, %.not ; [#uses=1]
+ br i1 %or.cond, label %bb18, label %bb17
+
+bb15.thread: ; preds = %bb2.i, %bb13, %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit, %bb7.i
+ %166 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 0, i32 2 ; [#uses=1]
+ %167 = load i32* %166, align 4 ; [#uses=1]
+ %168 = icmp eq i32 %167, -1 ; [#uses=1]
+ br label %bb18
+
+bb17: ; preds = %bb9.i
+ %169 = load i32 (...)*** %88, align 4 ; [#uses=1]
+ %170 = getelementptr inbounds i32 (...)** %169, i32 2 ; [#uses=1]
+ %171 = load i32 (...)** %170, align 4 ; [#uses=1]
+ %172 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 0, i32 4 ; [#uses=1]
+ %173 = load i32* %172, align 4 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 0, i32 3 ; [#uses=1]
+ %175 = load i32* %174, align 4 ; [#uses=1]
+ %176 = bitcast i32 (...)* %171 to void (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ call void %176(%struct.btActionInterface* %nodeCallback, i32 %175, i32 %173)
+ br label %bb18
+
+bb18: ; preds = %bb17, %bb15.thread, %bb9.i
+ %177 = phi i1 [ %168, %bb15.thread ], [ %165, %bb9.i ], [ %165, %bb17 ] ; [#uses=1]
+ %iftmp.232.068 = phi i32 [ 0, %bb15.thread ], [ %iftmp.131.0.i, %bb9.i ], [ %iftmp.131.0.i, %bb17 ] ; [#uses=1]
+ %.not28 = icmp ne i32 %iftmp.232.068, 0 ; [#uses=1]
+ %brmerge = or i1 %.not28, %177 ; [#uses=1]
+ br i1 %brmerge, label %bb21, label %bb22
+
+bb21: ; preds = %bb18
+ %178 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 1 ; [#uses=1]
+ %179 = add nsw i32 %curIndex.071, 1 ; [#uses=1]
+ br label %bb23.backedge
+
+bb23.backedge: ; preds = %bb22, %bb21
+ %rootNode.0.be = phi %struct.btOptimizedBvhNode* [ %178, %bb21 ], [ %184, %bb22 ] ; [#uses=1]
+ %curIndex.0.be = phi i32 [ %179, %bb21 ], [ %185, %bb22 ] ; [#uses=2]
+ %180 = load i32* %68, align 4 ; [#uses=1]
+ %181 = icmp sgt i32 %180, %curIndex.0.be ; [#uses=1]
+ br i1 %181, label %bb12, label %bb24
+
+bb22: ; preds = %bb18
+ %182 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 0, i32 2 ; [#uses=1]
+ %183 = load i32* %182, align 4 ; [#uses=2]
+ %184 = getelementptr inbounds %struct.btOptimizedBvhNode* %rootNode.069, i32 %183 ; [#uses=1]
+ %185 = add nsw i32 %183, %curIndex.071 ; [#uses=1]
+ br label %bb23.backedge
+
+bb24: ; preds = %bb23.backedge, %bb23.preheader
+ %walkIterations.0.lcssa = phi i32 [ 0, %bb23.preheader ], [ %tmp, %bb23.backedge ] ; [#uses=2]
+ %186 = load i32* @maxIterations, align 4 ; [#uses=1]
+ %187 = icmp slt i32 %186, %walkIterations.0.lcssa ; [#uses=1]
+ br i1 %187, label %bb25, label %return
+
+bb25: ; preds = %bb24
+ store i32 %walkIterations.0.lcssa, i32* @maxIterations, align 4
+ ret void
+
+return: ; preds = %bb24
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK14btQuantizedBvh29reportBoxCastOverlappingNodexEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_(%struct.btQuantizedBvh* %this, %struct.btActionInterface* %nodeCallback, %struct.btQuadWord* nocapture %raySource, %struct.btQuadWord* nocapture %rayTarget, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 5 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ tail call void @_ZNK14btQuantizedBvh36walkStacklessQuantizedTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(%struct.btQuantizedBvh* %this, %struct.btActionInterface* %nodeCallback, %struct.btQuadWord* %raySource, %struct.btQuadWord* %rayTarget, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, i32 0, i32 %3)
+ ret void
+
+bb1: ; preds = %entry
+ tail call void @_ZNK14btQuantizedBvh27walkStacklessTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(%struct.btQuantizedBvh* %this, %struct.btActionInterface* %nodeCallback, %struct.btQuadWord* %raySource, %struct.btQuadWord* %rayTarget, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, i32 0, i32 %3)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK14btQuantizedBvh25reportRayOverlappingNodexEP21btNodeOverlapCallbackRK9btVector3S4_(%struct.btQuantizedBvh* %this, %struct.btActionInterface* %nodeCallback, %struct.btQuadWord* nocapture %raySource, %struct.btQuadWord* nocapture %rayTarget) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %2 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 8
+ %3 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 8
+ %5 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 8
+ %7 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 8
+ %9 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 6 ; [#uses=1]
+ %11 = load i8* %10, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %11, 0 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuantizedBvh* %this, i32 0, i32 5 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=2]
+ br i1 %toBool.i, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %entry
+ call void @_ZNK14btQuantizedBvh36walkStacklessQuantizedTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(%struct.btQuantizedBvh* %this, %struct.btActionInterface* %nodeCallback, %struct.btQuadWord* %raySource, %struct.btQuadWord* %rayTarget, %struct.btQuadWord* %0, %struct.btQuadWord* %1, i32 0, i32 %13)
+ ret void
+
+bb1.i: ; preds = %entry
+ call void @_ZNK14btQuantizedBvh27walkStacklessTreeAgainstRayEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_ii(%struct.btQuantizedBvh* %this, %struct.btActionInterface* %nodeCallback, %struct.btQuadWord* %raySource, %struct.btQuadWord* %rayTarget, %struct.btQuadWord* %0, %struct.btQuadWord* %1, i32 0, i32 %13)
+ ret void
+}
+
+; [#uses=31]
+declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
+
+; [#uses=0]
+define void @_ZN18btSimpleBroadphase8validateEv(%struct.btSimpleBroadphase* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=0]
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct..0btMultiSapOverlapFilterCallback* @_ZN18btSimpleBroadphase23getOverlappingPairCacheEv(%struct.btSimpleBroadphase* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 7 ; [#uses=1]
+ %1 = load %struct..0btMultiSapOverlapFilterCallback** %0, align 4 ; [#uses=1]
+ ret %struct..0btMultiSapOverlapFilterCallback* %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct..0btMultiSapOverlapFilterCallback* @_ZNK18btSimpleBroadphase23getOverlappingPairCacheEv(%struct.btSimpleBroadphase* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 7 ; [#uses=1]
+ %1 = load %struct..0btMultiSapOverlapFilterCallback** %0, align 4 ; [#uses=1]
+ ret %struct..0btMultiSapOverlapFilterCallback* %1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK18btSimpleBroadphase17getBroadphaseAabbER9btVector3S1_(%struct.btSimpleBroadphase* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btSimpleBroadphase10printStatsEv(%struct.btSimpleBroadphase* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define %struct.btBroadphaseProxy* @_ZN18btSimpleBroadphase11createProxyERK9btVector3S2_iPvssP12btDispatcherS3_(%struct.btSimpleBroadphase* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, i32 %shapeType, i8* %userPtr, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask, %struct.btActionInterface* nocapture %unnamed_arg, i8* %multiSapProxy) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 2 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = icmp slt i32 %1, %3 ; [#uses=1]
+ br i1 %4, label %bb1, label %bb2
+
+bb1: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 6 ; [#uses=2]
+ %6 = load i32* %5, align 4 ; [#uses=16]
+ %7 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 4 ; [#uses=1]
+ %8 = load %struct.btSimpleBroadphaseProxy** %7, align 4 ; [#uses=14]
+ %9 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 1 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ store i32 %10, i32* %5, align 4
+ %11 = add nsw i32 %1, 1 ; [#uses=1]
+ store i32 %11, i32* %0, align 4
+ %12 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 3 ; [#uses=2]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = icmp slt i32 %13, %6 ; [#uses=1]
+ br i1 %14, label %bb.i, label %_ZN18btSimpleBroadphase11allocHandleEv.exit
+
+bb.i: ; preds = %bb1
+ store i32 %6, i32* %12, align 4
+ br label %_ZN18btSimpleBroadphase11allocHandleEv.exit
+
+_ZN18btSimpleBroadphase11allocHandleEv.exit: ; preds = %bb.i, %bb1
+ %15 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 0, i32 0 ; [#uses=1]
+ store i8* %userPtr, i8** %15, align 4
+ %16 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 0, i32 1 ; [#uses=1]
+ store i16 %collisionFilterGroup, i16* %16, align 4
+ %17 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 0, i32 2 ; [#uses=1]
+ store i16 %collisionFilterMask, i16* %17, align 2
+ %18 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ store float %41, float* %39, align 4
+ %42 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 0, i32 3 ; [#uses=1]
+ store i8* %multiSapProxy, i8** %42, align 4
+ %43 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %8, i32 %6, i32 0 ; [#uses=1]
+ ret %struct.btBroadphaseProxy* %43
+
+bb2: ; preds = %entry
+ ret %struct.btBroadphaseProxy* null
+}
+
+; [#uses=1]
+define void @_ZN18btSimpleBroadphase12destroyProxyEP17btBroadphaseProxyP12btDispatcher(%struct.btSimpleBroadphase* nocapture %this, %struct.btBroadphaseProxy* %proxyOrg, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = ptrtoint %struct.btBroadphaseProxy* %proxyOrg to i32 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 4 ; [#uses=1]
+ %2 = load %struct.btSimpleBroadphaseProxy** %1, align 4 ; [#uses=1]
+ %3 = ptrtoint %struct.btSimpleBroadphaseProxy* %2 to i32 ; [#uses=1]
+ %4 = sub nsw i32 %0, %3 ; [#uses=1]
+ %5 = sdiv exact i32 %4, 52 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 3 ; [#uses=2]
+ %7 = load i32* %6, align 4 ; [#uses=2]
+ %8 = icmp eq i32 %7, %5 ; [#uses=1]
+ br i1 %8, label %bb.i, label %_ZN18btSimpleBroadphase10freeHandleEP23btSimpleBroadphaseProxy.exit
+
+bb.i: ; preds = %entry
+ %9 = add nsw i32 %7, -1 ; [#uses=1]
+ store i32 %9, i32* %6, align 4
+ br label %_ZN18btSimpleBroadphase10freeHandleEP23btSimpleBroadphaseProxy.exit
+
+_ZN18btSimpleBroadphase10freeHandleEP23btSimpleBroadphaseProxy.exit: ; preds = %bb.i, %entry
+ %10 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 6 ; [#uses=2]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btBroadphaseProxy* %proxyOrg, i32 1, i32 0 ; [#uses=1]
+ %.c = inttoptr i32 %11 to i8* ; [#uses=1]
+ store i8* %.c, i8** %12, align 4
+ store i32 %5, i32* %10, align 4
+ %13 = getelementptr inbounds %struct.btBroadphaseProxy* %proxyOrg, i32 0, i32 0 ; [#uses=1]
+ store i8* null, i8** %13, align 4
+ %14 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 1 ; [#uses=2]
+ %15 = load i32* %14, align 4 ; [#uses=1]
+ %16 = add nsw i32 %15, -1 ; [#uses=1]
+ store i32 %16, i32* %14, align 4
+ %17 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 7 ; [#uses=1]
+ %18 = load %struct..0btMultiSapOverlapFilterCallback** %17, align 4 ; [#uses=2]
+ %19 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %18, i32 0, i32 0, i32 0 ; [#uses=1]
+ %20 = load i32 (...)*** %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds i32 (...)** %20, i32 4 ; [#uses=1]
+ %22 = load i32 (...)** %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %18, i32 0, i32 0 ; [#uses=1]
+ %24 = bitcast i32 (...)* %22 to void (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %24(%struct.btActionInterface* %23, %struct.btBroadphaseProxy* %proxyOrg, %struct.btActionInterface* %dispatcher)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK18btSimpleBroadphase7getAabbEP17btBroadphaseProxyR9btVector3S3_(%struct.btSimpleBroadphase* nocapture %this, %struct.btBroadphaseProxy* nocapture %proxy, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSimpleBroadphase7setAabbEP17btBroadphaseProxyRK9btVector3S4_P12btDispatcher(%struct.btSimpleBroadphase* nocapture %this, %struct.btBroadphaseProxy* nocapture %proxy, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, %struct.btActionInterface* nocapture %unnamed_arg) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSimpleBroadphase7rayTestERK9btVector3S2_R23btBroadphaseRayCallbackS2_S2_(%struct.btSimpleBroadphase* nocapture %this, %struct.btQuadWord* nocapture %rayFrom, %struct.btQuadWord* nocapture %rayTo, %struct.btBroadphaseRayCallback* %rayCallback, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 3 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp slt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %return, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBroadphaseRayCallback* %rayCallback, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btBroadphaseRayCallback* %rayCallback, i32 0, i32 0 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb2, %bb.nph
+ %i.05 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb2 ] ; [#uses=3]
+ %tmp = add i32 %i.05, 1 ; [#uses=2]
+ %6 = load %struct.btSimpleBroadphaseProxy** %3, align 4 ; [#uses=2]
+ %scevgep6 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %6, i32 %i.05, i32 0, i32 0 ; [#uses=1]
+ %7 = load i8** %scevgep6, align 4 ; [#uses=1]
+ %8 = icmp eq i8* %7, null ; [#uses=1]
+ br i1 %8, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %9 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 2 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to i8 (%struct.btActionInterface*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %scevgep78 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %6, i32 %i.05, i32 0 ; [#uses=1]
+ %13 = tail call zeroext i8 %12(%struct.btActionInterface* %5, %struct.btBroadphaseProxy* %scevgep78) ; [#uses=0]
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %14 = load i32* %0, align 4 ; [#uses=1]
+ %15 = icmp slt i32 %14, %tmp ; [#uses=1]
+ br i1 %15, label %return, label %bb
+
+return: ; preds = %bb2, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSimpleBroadphase8aabbTestERK9btVector3S2_R24btBroadphaseAabbCallback(%struct.btSimpleBroadphase* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, %struct.btActionInterface* %callback) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 3 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp slt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %return, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btActionInterface* %callback, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb3, %bb.nph
+ %i.07 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb3 ] ; [#uses=9]
+ %tmp = add i32 %i.07, 1 ; [#uses=2]
+ %11 = load %struct.btSimpleBroadphaseProxy** %3, align 4 ; [#uses=8]
+ %scevgep8 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %11, i32 %i.07, i32 0, i32 0 ; [#uses=1]
+ %12 = load i8** %scevgep8, align 4 ; [#uses=1]
+ %13 = icmp eq i8* %12, null ; [#uses=1]
+ br i1 %13, label %bb3, label %bb1
+
+bb1: ; preds = %bb
+ %14 = load float* %4, align 4 ; [#uses=1]
+ %scevgep11 = getelementptr %struct.btSimpleBroadphaseProxy* %11, i32 %i.07, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %scevgep11, align 4 ; [#uses=1]
+ %16 = fcmp ogt float %14, %15 ; [#uses=1]
+ br i1 %16, label %bb2.i, label %bb.i
+
+bb.i: ; preds = %bb1
+ %17 = load float* %10, align 4 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btSimpleBroadphaseProxy* %11, i32 %i.07, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %scevgep12, align 4 ; [#uses=1]
+ %19 = fcmp olt float %17, %18 ; [#uses=1]
+ br i1 %19, label %bb2.i, label %bb3.i
+
+bb2.i: ; preds = %bb.i, %bb1
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb.i
+ %iftmp.123.0.i = phi i8 [ 0, %bb2.i ], [ 1, %bb.i ] ; [#uses=1]
+ %20 = load float* %5, align 4 ; [#uses=1]
+ %scevgep13 = getelementptr %struct.btSimpleBroadphaseProxy* %11, i32 %i.07, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %scevgep13, align 4 ; [#uses=1]
+ %22 = fcmp ogt float %20, %21 ; [#uses=1]
+ br i1 %22, label %bb6.i, label %bb4.i
+
+bb4.i: ; preds = %bb3.i
+ %23 = load float* %9, align 4 ; [#uses=1]
+ %scevgep14 = getelementptr %struct.btSimpleBroadphaseProxy* %11, i32 %i.07, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %scevgep14, align 4 ; [#uses=1]
+ %25 = fcmp olt float %23, %24 ; [#uses=1]
+ br i1 %25, label %bb6.i, label %bb7.i
+
+bb6.i: ; preds = %bb4.i, %bb3.i
+ br label %bb7.i
+
+bb7.i: ; preds = %bb6.i, %bb4.i
+ %iftmp.124.0.i = phi i8 [ 0, %bb6.i ], [ %iftmp.123.0.i, %bb4.i ] ; [#uses=1]
+ %26 = load float* %6, align 4 ; [#uses=1]
+ %scevgep15 = getelementptr %struct.btSimpleBroadphaseProxy* %11, i32 %i.07, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %27 = load float* %scevgep15, align 4 ; [#uses=1]
+ %28 = fcmp ogt float %26, %27 ; [#uses=1]
+ br i1 %28, label %bb3, label %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+
+_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit: ; preds = %bb7.i
+ %29 = load float* %7, align 4 ; [#uses=1]
+ %scevgep16 = getelementptr %struct.btSimpleBroadphaseProxy* %11, i32 %i.07, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %scevgep16, align 4 ; [#uses=1]
+ %31 = fcmp olt float %29, %30 ; [#uses=1]
+ %phitmp6 = icmp eq i8 %iftmp.124.0.i, 0 ; [#uses=1]
+ %phitmp = or i1 %31, %phitmp6 ; [#uses=1]
+ br i1 %phitmp, label %bb3, label %bb2
+
+bb2: ; preds = %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+ %32 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32 (...)** %32, i32 2 ; [#uses=1]
+ %34 = load i32 (...)** %33, align 4 ; [#uses=1]
+ %35 = bitcast i32 (...)* %34 to i8 (%struct.btActionInterface*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %scevgep910 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %11, i32 %i.07, i32 0 ; [#uses=1]
+ %36 = tail call zeroext i8 %35(%struct.btActionInterface* %callback, %struct.btBroadphaseProxy* %scevgep910) ; [#uses=0]
+ br label %bb3
+
+bb3: ; preds = %bb2, %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit, %bb7.i, %bb
+ %37 = load i32* %0, align 4 ; [#uses=1]
+ %38 = icmp slt i32 %37, %tmp ; [#uses=1]
+ br i1 %38, label %return, label %bb
+
+return: ; preds = %bb3, %entry
+ ret void
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_(%struct.btSimpleBroadphaseProxy* nocapture %proxy0, %struct.btSimpleBroadphaseProxy* nocapture %proxy1) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %proxy0, i32 0, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %proxy1, i32 0, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fcmp ugt float %1, %3 ; [#uses=1]
+ br i1 %4, label %bb6, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %proxy1, i32 0, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %proxy0, i32 0, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fcmp ugt float %6, %8 ; [#uses=1]
+ br i1 %9, label %bb6, label %bb1
+
+bb1: ; preds = %bb
+ %10 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %proxy0, i32 0, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %proxy1, i32 0, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fcmp ugt float %11, %13 ; [#uses=1]
+ br i1 %14, label %bb6, label %bb2
+
+bb2: ; preds = %bb1
+ %15 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %proxy1, i32 0, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %proxy0, i32 0, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fcmp ugt float %16, %18 ; [#uses=1]
+ br i1 %19, label %bb6, label %bb3
+
+bb3: ; preds = %bb2
+ %20 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %proxy0, i32 0, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %proxy1, i32 0, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fcmp ugt float %21, %23 ; [#uses=1]
+ br i1 %24, label %bb6, label %bb4
+
+bb4: ; preds = %bb3
+ %25 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %proxy1, i32 0, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %proxy0, i32 0, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %not. = fcmp ole float %26, %28 ; [#uses=1]
+ %retval = zext i1 %not. to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb6: ; preds = %bb3, %bb2, %bb1, %bb, %entry
+ ret i8 0
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN18btSimpleBroadphase15testAabbOverlapEP17btBroadphaseProxyS1_(%struct.btSimpleBroadphase* nocapture %this, %struct.btBroadphaseProxy* nocapture %proxy0, %struct.btBroadphaseProxy* nocapture %proxy1) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fcmp ugt float %1, %3 ; [#uses=1]
+ br i1 %4, label %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit, label %bb.i
+
+bb.i: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fcmp ugt float %6, %8 ; [#uses=1]
+ br i1 %9, label %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %10 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fcmp ugt float %11, %13 ; [#uses=1]
+ br i1 %14, label %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %15 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fcmp ugt float %16, %18 ; [#uses=1]
+ br i1 %19, label %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %20 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fcmp ugt float %21, %23 ; [#uses=1]
+ br i1 %24, label %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit, label %bb4.i
+
+bb4.i: ; preds = %bb3.i
+ %25 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy1, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %not..i = fcmp ole float %26, %28 ; [#uses=1]
+ %retval.i = zext i1 %not..i to i8 ; [#uses=1]
+ ret i8 %retval.i
+
+_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit: ; preds = %bb3.i, %bb2.i, %bb1.i, %bb.i, %entry
+ ret i8 0
+}
+
+; [#uses=1]
+define void @_ZN18btSimpleBroadphase9resetPoolEP12btDispatcher(%struct.btSimpleBroadphase* nocapture %this, %struct.btActionInterface* nocapture %dispatcher) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSimpleBroadphase25calculateOverlappingPairsEP12btDispatcher(%struct.btSimpleBroadphase* %this, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %1 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %2 = alloca %struct.btBroadphasePair, align 8 ; [#uses=5]
+ %3 = alloca %struct.btBroadphasePair, align 8 ; [#uses=5]
+ %4 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 1 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp sgt i32 %5, -1 ; [#uses=1]
+ br i1 %6, label %bb18.preheader, label %bb30
+
+bb18.preheader: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 3 ; [#uses=3]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = icmp slt i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb19, label %bb.nph82
+
+bb.nph82: ; preds = %bb18.preheader
+ %10 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 4 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 7 ; [#uses=5]
+ br label %bb1
+
+bb1: ; preds = %bb17, %bb.nph82
+ %12 = phi i32 [ %8, %bb.nph82 ], [ %81, %bb17 ] ; [#uses=3]
+ %new_largest_index.181 = phi i32 [ -1, %bb.nph82 ], [ %new_largest_index.0, %bb17 ] ; [#uses=1]
+ %13 = phi i32 [ 0, %bb.nph82 ], [ %j.076, %bb17 ] ; [#uses=12]
+ %j.076 = add i32 %13, 1 ; [#uses=4]
+ %tmp135 = add i32 %13, 2 ; [#uses=1]
+ %14 = load %struct.btSimpleBroadphaseProxy** %10, align 4 ; [#uses=8]
+ %scevgep137138 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %14, i32 %13, i32 0, i32 0 ; [#uses=1]
+ %15 = load i8** %scevgep137138, align 4 ; [#uses=1]
+ %16 = icmp eq i8* %15, null ; [#uses=1]
+ br i1 %16, label %bb17, label %bb16.preheader
+
+bb16.preheader: ; preds = %bb1
+ %17 = icmp slt i32 %12, %j.076 ; [#uses=1]
+ br i1 %17, label %bb17, label %bb.nph78
+
+bb.nph78: ; preds = %bb16.preheader
+ %scevgep139140 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %14, i32 %13, i32 0 ; [#uses=4]
+ %scevgep141 = getelementptr %struct.btSimpleBroadphaseProxy* %14, i32 %13, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %scevgep142 = getelementptr %struct.btSimpleBroadphaseProxy* %14, i32 %13, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %scevgep143 = getelementptr %struct.btSimpleBroadphaseProxy* %14, i32 %13, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %scevgep144 = getelementptr %struct.btSimpleBroadphaseProxy* %14, i32 %13, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %scevgep145 = getelementptr %struct.btSimpleBroadphaseProxy* %14, i32 %13, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %scevgep146 = getelementptr %struct.btSimpleBroadphaseProxy* %14, i32 %13, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb16.backedge, %bb.nph78
+ %indvar = phi i32 [ 0, %bb.nph78 ], [ %indvar.next, %bb16.backedge ] ; [#uses=3]
+ %tmp118 = add i32 %j.076, %indvar ; [#uses=9]
+ %j.0 = add i32 %tmp135, %indvar ; [#uses=1]
+ %18 = load %struct.btSimpleBroadphaseProxy** %10, align 4 ; [#uses=9]
+ %scevgep101102 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %18, i32 %tmp118, i32 0, i32 0 ; [#uses=1]
+ %19 = load i8** %scevgep101102, align 4 ; [#uses=1]
+ %20 = icmp eq i8* %19, null ; [#uses=1]
+ br i1 %20, label %bb16.backedge, label %bb4
+
+bb4: ; preds = %bb3
+ %21 = load float* %scevgep141, align 4 ; [#uses=1]
+ %scevgep111 = getelementptr %struct.btSimpleBroadphaseProxy* %18, i32 %tmp118, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %scevgep111, align 4 ; [#uses=1]
+ %23 = fcmp ugt float %21, %22 ; [#uses=1]
+ br i1 %23, label %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit.thread, label %bb.i54
+
+bb.i54: ; preds = %bb4
+ %scevgep112 = getelementptr %struct.btSimpleBroadphaseProxy* %18, i32 %tmp118, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %scevgep112, align 4 ; [#uses=1]
+ %25 = load float* %scevgep142, align 4 ; [#uses=1]
+ %26 = fcmp ugt float %24, %25 ; [#uses=1]
+ br i1 %26, label %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit.thread, label %bb1.i
+
+bb1.i: ; preds = %bb.i54
+ %27 = load float* %scevgep143, align 4 ; [#uses=1]
+ %scevgep113 = getelementptr %struct.btSimpleBroadphaseProxy* %18, i32 %tmp118, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %scevgep113, align 4 ; [#uses=1]
+ %29 = fcmp ugt float %27, %28 ; [#uses=1]
+ br i1 %29, label %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit.thread, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %scevgep114 = getelementptr %struct.btSimpleBroadphaseProxy* %18, i32 %tmp118, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %scevgep114, align 4 ; [#uses=1]
+ %31 = load float* %scevgep144, align 4 ; [#uses=1]
+ %32 = fcmp ugt float %30, %31 ; [#uses=1]
+ br i1 %32, label %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit.thread, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %33 = load float* %scevgep145, align 4 ; [#uses=1]
+ %scevgep115 = getelementptr %struct.btSimpleBroadphaseProxy* %18, i32 %tmp118, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %scevgep115, align 4 ; [#uses=1]
+ %35 = fcmp ugt float %33, %34 ; [#uses=1]
+ br i1 %35, label %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit.thread, label %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit
+
+_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit.thread: ; preds = %bb3.i, %bb2.i, %bb1.i, %bb.i54, %bb4
+ %36 = load %struct..0btMultiSapOverlapFilterCallback** %11, align 4 ; [#uses=2]
+ %37 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %36, i32 0, i32 0, i32 0 ; [#uses=1]
+ %38 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ br label %bb8
+
+_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit: ; preds = %bb3.i
+ %scevgep116 = getelementptr %struct.btSimpleBroadphaseProxy* %18, i32 %tmp118, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %scevgep116, align 4 ; [#uses=1]
+ %40 = load float* %scevgep146, align 4 ; [#uses=1]
+ %phitmp = fcmp ugt float %39, %40 ; [#uses=1]
+ %41 = load %struct..0btMultiSapOverlapFilterCallback** %11, align 4 ; [#uses=3]
+ %42 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %41, i32 0, i32 0, i32 0 ; [#uses=1]
+ %43 = load i32 (...)*** %42, align 4 ; [#uses=2]
+ br i1 %phitmp, label %bb8, label %bb5
+
+bb5: ; preds = %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit
+ %44 = getelementptr inbounds i32 (...)** %43, i32 13 ; [#uses=1]
+ %45 = load i32 (...)** %44, align 4 ; [#uses=1]
+ %46 = bitcast i32 (...)* %45 to %struct.btBroadphasePair* (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %scevgep107108 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %18, i32 %tmp118, i32 0 ; [#uses=2]
+ %47 = call %struct.btBroadphasePair* %46(%struct..0btMultiSapOverlapFilterCallback* %41, %struct.btBroadphaseProxy* %scevgep139140, %struct.btBroadphaseProxy* %scevgep107108) ; [#uses=1]
+ %48 = icmp eq %struct.btBroadphasePair* %47, null ; [#uses=1]
+ br i1 %48, label %bb7, label %bb16.backedge
+
+bb7: ; preds = %bb5
+ %49 = load %struct..0btMultiSapOverlapFilterCallback** %11, align 4 ; [#uses=2]
+ %50 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %49, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = load i32 (...)*** %50, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds i32 (...)** %51, i32 2 ; [#uses=1]
+ %53 = load i32 (...)** %52, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %49, i32 0, i32 0 ; [#uses=1]
+ %55 = bitcast i32 (...)* %53 to %struct.btBroadphasePair* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %56 = call %struct.btBroadphasePair* %55(%struct.btActionInterface* %54, %struct.btBroadphaseProxy* %scevgep139140, %struct.btBroadphaseProxy* %scevgep107108) ; [#uses=0]
+ br label %bb16.backedge
+
+bb8: ; preds = %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit, %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit.thread
+ %57 = phi %struct..0btMultiSapOverlapFilterCallback* [ %36, %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit.thread ], [ %41, %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit ] ; [#uses=1]
+ %58 = phi i32 (...)** [ %38, %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit.thread ], [ %43, %_ZN18btSimpleBroadphase11aabbOverlapEP23btSimpleBroadphaseProxyS1_.exit ] ; [#uses=1]
+ %59 = getelementptr inbounds i32 (...)** %58, i32 14 ; [#uses=1]
+ %60 = load i32 (...)** %59, align 4 ; [#uses=1]
+ %61 = bitcast i32 (...)* %60 to i8 (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %62 = call zeroext i8 %61(%struct..0btMultiSapOverlapFilterCallback* %57) ; [#uses=1]
+ %toBool9not = icmp eq i8 %62, 0 ; [#uses=1]
+ br i1 %toBool9not, label %bb12, label %bb16.backedge
+
+bb12: ; preds = %bb8
+ %63 = load %struct..0btMultiSapOverlapFilterCallback** %11, align 4 ; [#uses=2]
+ %64 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %63, i32 0, i32 0, i32 0 ; [#uses=1]
+ %65 = load i32 (...)*** %64, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds i32 (...)** %65, i32 13 ; [#uses=1]
+ %67 = load i32 (...)** %66, align 4 ; [#uses=1]
+ %68 = bitcast i32 (...)* %67 to %struct.btBroadphasePair* (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %scevgep103104 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %18, i32 %tmp118, i32 0 ; [#uses=2]
+ %69 = call %struct.btBroadphasePair* %68(%struct..0btMultiSapOverlapFilterCallback* %63, %struct.btBroadphaseProxy* %scevgep139140, %struct.btBroadphaseProxy* %scevgep103104) ; [#uses=1]
+ %70 = icmp eq %struct.btBroadphasePair* %69, null ; [#uses=1]
+ br i1 %70, label %bb16.backedge, label %bb14
+
+bb16.backedge: ; preds = %bb14, %bb12, %bb8, %bb7, %bb5, %bb3
+ %71 = load i32* %7, align 4 ; [#uses=2]
+ %72 = icmp slt i32 %71, %j.0 ; [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br i1 %72, label %bb17, label %bb3
+
+bb14: ; preds = %bb12
+ %73 = load %struct..0btMultiSapOverlapFilterCallback** %11, align 4 ; [#uses=2]
+ %74 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %73, i32 0, i32 0, i32 0 ; [#uses=1]
+ %75 = load i32 (...)*** %74, align 4 ; [#uses=1]
+ %76 = getelementptr inbounds i32 (...)** %75, i32 3 ; [#uses=1]
+ %77 = load i32 (...)** %76, align 4 ; [#uses=1]
+ %78 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %73, i32 0, i32 0 ; [#uses=1]
+ %79 = bitcast i32 (...)* %77 to i8* (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %80 = call i8* %79(%struct.btActionInterface* %78, %struct.btBroadphaseProxy* %scevgep139140, %struct.btBroadphaseProxy* %scevgep103104, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ br label %bb16.backedge
+
+bb17: ; preds = %bb16.backedge, %bb16.preheader, %bb1
+ %81 = phi i32 [ %12, %bb1 ], [ %12, %bb16.preheader ], [ %71, %bb16.backedge ] ; [#uses=2]
+ %new_largest_index.0 = phi i32 [ %new_largest_index.181, %bb1 ], [ %13, %bb16.backedge ], [ %13, %bb16.preheader ] ; [#uses=2]
+ %82 = icmp slt i32 %81, %j.076 ; [#uses=1]
+ br i1 %82, label %bb19, label %bb1
+
+bb19: ; preds = %bb17, %bb18.preheader
+ %new_largest_index.1.lcssa = phi i32 [ -1, %bb18.preheader ], [ %new_largest_index.0, %bb17 ] ; [#uses=1]
+ store i32 %new_largest_index.1.lcssa, i32* %7, align 4
+ %83 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 8 ; [#uses=1]
+ %84 = load i8* %83, align 4 ; [#uses=1]
+ %toBool20not = icmp eq i8 %84, 0 ; [#uses=1]
+ br i1 %toBool20not, label %bb30, label %bb24
+
+bb24: ; preds = %bb19
+ %85 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 7 ; [#uses=3]
+ %86 = load %struct..0btMultiSapOverlapFilterCallback** %85, align 4 ; [#uses=2]
+ %87 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %86, i32 0, i32 0, i32 0 ; [#uses=1]
+ %88 = load i32 (...)*** %87, align 4 ; [#uses=1]
+ %89 = getelementptr inbounds i32 (...)** %88, i32 14 ; [#uses=1]
+ %90 = load i32 (...)** %89, align 4 ; [#uses=1]
+ %91 = bitcast i32 (...)* %90 to i8 (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %92 = call zeroext i8 %91(%struct..0btMultiSapOverlapFilterCallback* %86) ; [#uses=1]
+ %toBool25not = icmp eq i8 %92, 0 ; [#uses=1]
+ br i1 %toBool25not, label %bb30, label %bb33
+
+bb30: ; preds = %bb24, %bb19, %entry
+ ret void
+
+bb33: ; preds = %bb24
+ %93 = load %struct..0btMultiSapOverlapFilterCallback** %85, align 4 ; [#uses=2]
+ %94 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %93, i32 0, i32 0, i32 0 ; [#uses=1]
+ %95 = load i32 (...)*** %94, align 4 ; [#uses=1]
+ %96 = getelementptr inbounds i32 (...)** %95, i32 7 ; [#uses=1]
+ %97 = load i32 (...)** %96, align 4 ; [#uses=1]
+ %98 = bitcast i32 (...)* %97 to %"struct.btAlignedObjectArray<btBroadphasePair>"* (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %99 = call %"struct.btAlignedObjectArray<btBroadphasePair>"* %98(%struct..0btMultiSapOverlapFilterCallback* %93) ; [#uses=6]
+ %100 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %99, i32 0, i32 1 ; [#uses=5]
+ %101 = load i32* %100, align 4 ; [#uses=3]
+ %102 = icmp sgt i32 %101, 1 ; [#uses=1]
+ br i1 %102, label %bb.i58, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit60
+
+bb.i58: ; preds = %bb33
+ %103 = add nsw i32 %101, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %99, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 0, i32 %103) nounwind
+ %.pre = load i32* %100, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit60
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit60: ; preds = %bb.i58, %bb33
+ %104 = phi i32 [ %101, %bb33 ], [ %.pre, %bb.i58 ] ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %105, align 8
+ %106 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %106, align 4
+ %107 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %107, align 8
+ %108 = getelementptr inbounds %struct.btBroadphasePair* %3, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i8* null, i8** %108, align 4
+ %109 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 9 ; [#uses=6]
+ %110 = load i32* %109, align 4 ; [#uses=1]
+ %111 = sub nsw i32 %104, %110 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(%"struct.btAlignedObjectArray<btBroadphasePair>"* %99, i32 %111, %struct.btBroadphasePair* %3) inlinehint
+ store i32 0, i32* %109, align 4
+ %112 = load i32* %100, align 4 ; [#uses=2]
+ %113 = icmp sgt i32 %112, 0 ; [#uses=1]
+ br i1 %113, label %bb.nph, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit
+
+bb.nph: ; preds = %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit60
+ %114 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %99, i32 0, i32 3 ; [#uses=1]
+ br label %bb34
+
+bb34: ; preds = %bb47, %bb.nph
+ %i.175 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb47 ] ; [#uses=5]
+ %previousPair.1.074 = phi %struct.btBroadphaseProxy* [ null, %bb.nph ], [ %159, %bb47 ] ; [#uses=1]
+ %previousPair.0.073 = phi %struct.btBroadphaseProxy* [ null, %bb.nph ], [ %116, %bb47 ] ; [#uses=1]
+ %tmp = add i32 %i.175, 1 ; [#uses=2]
+ %115 = load %struct.btBroadphasePair** %114, align 4 ; [#uses=4]
+ %scevgep8384 = getelementptr inbounds %struct.btBroadphasePair* %115, i32 %i.175, i32 0 ; [#uses=2]
+ %116 = load %struct.btBroadphaseProxy** %scevgep8384, align 4 ; [#uses=8]
+ %117 = icmp eq %struct.btBroadphaseProxy* %116, %previousPair.0.073 ; [#uses=1]
+ %scevgep93 = getelementptr %struct.btBroadphasePair* %115, i32 %i.175, i32 1 ; [#uses=1]
+ %118 = load %struct.btBroadphaseProxy** %scevgep93, align 4 ; [#uses=15]
+ %phitmp71 = icmp eq %struct.btBroadphaseProxy* %118, %previousPair.1.074 ; [#uses=1]
+ %or.cond = and i1 %117, %phitmp71 ; [#uses=1]
+ br i1 %or.cond, label %bb46, label %bb39
+
+bb39: ; preds = %bb34
+ %119 = getelementptr inbounds %struct.btBroadphaseProxy* %116, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %120 = load float* %119, align 4 ; [#uses=1]
+ %121 = getelementptr inbounds %struct.btBroadphaseProxy* %118, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %122 = load float* %121, align 4 ; [#uses=1]
+ %123 = fcmp ugt float %120, %122 ; [#uses=1]
+ br i1 %123, label %bb46, label %bb.i.i
+
+bb.i.i: ; preds = %bb39
+ %124 = getelementptr inbounds %struct.btBroadphaseProxy* %118, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %125 = load float* %124, align 4 ; [#uses=1]
+ %126 = getelementptr inbounds %struct.btBroadphaseProxy* %116, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %127 = load float* %126, align 4 ; [#uses=1]
+ %128 = fcmp ugt float %125, %127 ; [#uses=1]
+ br i1 %128, label %bb46, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %129 = getelementptr inbounds %struct.btBroadphaseProxy* %116, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=1]
+ %131 = getelementptr inbounds %struct.btBroadphaseProxy* %118, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %132 = load float* %131, align 4 ; [#uses=1]
+ %133 = fcmp ugt float %130, %132 ; [#uses=1]
+ br i1 %133, label %bb46, label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i
+ %134 = getelementptr inbounds %struct.btBroadphaseProxy* %118, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btBroadphaseProxy* %116, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %137 = load float* %136, align 4 ; [#uses=1]
+ %138 = fcmp ugt float %135, %137 ; [#uses=1]
+ br i1 %138, label %bb46, label %bb3.i.i
+
+bb3.i.i: ; preds = %bb2.i.i
+ %139 = getelementptr inbounds %struct.btBroadphaseProxy* %116, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %140 = load float* %139, align 4 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btBroadphaseProxy* %118, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %142 = load float* %141, align 4 ; [#uses=1]
+ %143 = fcmp ugt float %140, %142 ; [#uses=1]
+ br i1 %143, label %bb46, label %_ZN18btSimpleBroadphase15testAabbOverlapEP17btBroadphaseProxyS1_.exit
+
+_ZN18btSimpleBroadphase15testAabbOverlapEP17btBroadphaseProxyS1_.exit: ; preds = %bb3.i.i
+ %144 = getelementptr inbounds %struct.btBroadphaseProxy* %118, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btBroadphaseProxy* %116, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %147 = load float* %146, align 4 ; [#uses=1]
+ %phitmp72 = fcmp ugt float %145, %147 ; [#uses=1]
+ br i1 %phitmp72, label %bb46, label %bb47
+
+bb46: ; preds = %_ZN18btSimpleBroadphase15testAabbOverlapEP17btBroadphaseProxyS1_.exit, %bb3.i.i, %bb2.i.i, %bb1.i.i, %bb.i.i, %bb39, %bb34
+ %148 = phi %struct.btBroadphaseProxy* [ %118, %_ZN18btSimpleBroadphase15testAabbOverlapEP17btBroadphaseProxyS1_.exit ], [ %118, %bb3.i.i ], [ %118, %bb2.i.i ], [ %118, %bb1.i.i ], [ %118, %bb.i.i ], [ %118, %bb39 ], [ %118, %bb34 ] ; [#uses=1]
+ %149 = load %struct..0btMultiSapOverlapFilterCallback** %85, align 4 ; [#uses=2]
+ %150 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %149, i32 0, i32 0, i32 0 ; [#uses=1]
+ %151 = load i32 (...)*** %150, align 4 ; [#uses=1]
+ %152 = getelementptr inbounds i32 (...)** %151, i32 8 ; [#uses=1]
+ %153 = load i32 (...)** %152, align 4 ; [#uses=1]
+ %154 = bitcast i32 (...)* %153 to void (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphasePair*, %struct.btActionInterface*)* ; [#uses=1]
+ %scevgep = getelementptr %struct.btBroadphasePair* %115, i32 %i.175 ; [#uses=1]
+ call void %154(%struct..0btMultiSapOverlapFilterCallback* %149, %struct.btBroadphasePair* %scevgep, %struct.btActionInterface* %dispatcher)
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %scevgep8384, align 4
+ %scevgep89 = getelementptr %struct.btBroadphasePair* %115, i32 %i.175, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %scevgep89, align 4
+ %155 = load i32* %109, align 4 ; [#uses=1]
+ %156 = add nsw i32 %155, 1 ; [#uses=1]
+ store i32 %156, i32* %109, align 4
+ %157 = load i32* @gOverlappingPairs, align 4 ; [#uses=1]
+ %158 = add nsw i32 %157, -1 ; [#uses=1]
+ store i32 %158, i32* @gOverlappingPairs, align 4
+ br label %bb47
+
+bb47: ; preds = %bb46, %_ZN18btSimpleBroadphase15testAabbOverlapEP17btBroadphaseProxyS1_.exit
+ %159 = phi %struct.btBroadphaseProxy* [ %118, %_ZN18btSimpleBroadphase15testAabbOverlapEP17btBroadphaseProxyS1_.exit ], [ %148, %bb46 ] ; [#uses=1]
+ %160 = load i32* %100, align 4 ; [#uses=4]
+ %161 = icmp sgt i32 %160, %tmp ; [#uses=1]
+ br i1 %161, label %bb34, label %bb50
+
+bb50: ; preds = %bb47
+ %162 = icmp sgt i32 %160, 1 ; [#uses=1]
+ br i1 %162, label %bb.i, label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit
+
+bb.i: ; preds = %bb50
+ %163 = add nsw i32 %160, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE17quickSortInternalI29btBroadphasePairSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btBroadphasePair>"* %99, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %1, i32 0, i32 %163) nounwind
+ %.pre147 = load i32* %100, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit
+
+_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit: ; preds = %bb.i, %bb50, %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit60
+ %164 = phi i32 [ %.pre147, %bb.i ], [ %160, %bb50 ], [ %112, %_ZN20btAlignedObjectArrayI16btBroadphasePairE9quickSortI29btBroadphasePairSortPredicateEEvT_.exit60 ] ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 0 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %165, align 8
+ %166 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %166, align 4
+ %167 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %167, align 8
+ %168 = getelementptr inbounds %struct.btBroadphasePair* %2, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i8* null, i8** %168, align 4
+ %169 = load i32* %109, align 4 ; [#uses=1]
+ %170 = sub nsw i32 %164, %169 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI16btBroadphasePairE6resizeEiRKS0_(%"struct.btAlignedObjectArray<btBroadphasePair>"* %99, i32 %170, %struct.btBroadphasePair* %2) inlinehint
+ store i32 0, i32* %109, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSimpleBroadphaseD0Ev(%struct.btSimpleBroadphase* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV18btSimpleBroadphase, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 5 ; [#uses=1]
+ %2 = load i8** %1, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ %3 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 8 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool, label %bb3, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 7 ; [#uses=2]
+ %6 = load %struct..0btMultiSapOverlapFilterCallback** %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %6, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ tail call void %10(%struct..0btMultiSapOverlapFilterCallback* %6)
+ %11 = load %struct..0btMultiSapOverlapFilterCallback** %5, align 4 ; [#uses=1]
+ %12 = bitcast %struct..0btMultiSapOverlapFilterCallback* %11 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %12)
+ br label %bb3
+
+bb3: ; preds = %bb, %entry
+ %13 = bitcast %struct.btSimpleBroadphase* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %13) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSimpleBroadphaseD1Ev(%struct.btSimpleBroadphase* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV18btSimpleBroadphase, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 5 ; [#uses=1]
+ %2 = load i8** %1, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ %3 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 8 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 7 ; [#uses=2]
+ %6 = load %struct..0btMultiSapOverlapFilterCallback** %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %6, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ tail call void %10(%struct..0btMultiSapOverlapFilterCallback* %6)
+ %11 = load %struct..0btMultiSapOverlapFilterCallback** %5, align 4 ; [#uses=1]
+ %12 = bitcast %struct..0btMultiSapOverlapFilterCallback* %11 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %12)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN18btSimpleBroadphaseD2Ev(%struct.btSimpleBroadphase* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV18btSimpleBroadphase, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 5 ; [#uses=1]
+ %2 = load i8** %1, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ %3 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 8 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 7 ; [#uses=2]
+ %6 = load %struct..0btMultiSapOverlapFilterCallback** %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %6, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to void (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ tail call void %10(%struct..0btMultiSapOverlapFilterCallback* %6)
+ %11 = load %struct..0btMultiSapOverlapFilterCallback** %5, align 4 ; [#uses=1]
+ %12 = bitcast %struct..0btMultiSapOverlapFilterCallback* %11 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %12)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSimpleBroadphaseC2EiP22btOverlappingPairCache(%struct.btSimpleBroadphase* nocapture %this, i32 %maxProxies, %struct..0btMultiSapOverlapFilterCallback* %overlappingPairCache) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV18btSimpleBroadphase, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 7 ; [#uses=2]
+ store %struct..0btMultiSapOverlapFilterCallback* %overlappingPairCache, %struct..0btMultiSapOverlapFilterCallback** %1, align 4
+ %2 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 8 ; [#uses=2]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 9 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = icmp eq %struct..0btMultiSapOverlapFilterCallback* %overlappingPairCache, null ; [#uses=1]
+ br i1 %4, label %bb, label %bb7
+
+bb: ; preds = %entry
+ %5 = invoke i8* @_Z22btAlignedAllocInternalji(i32 76, i32 16)
+ to label %invcont unwind label %lpad ; [#uses=3]
+
+invcont: ; preds = %bb
+ %6 = icmp eq i8* %5, null ; [#uses=1]
+ br i1 %6, label %bb6, label %bb1
+
+bb1: ; preds = %invcont
+ %7 = bitcast i8* %5 to %struct.btHashedOverlappingPairCache* ; [#uses=1]
+ invoke void @_ZN28btHashedOverlappingPairCacheC1Ev(%struct.btHashedOverlappingPairCache* %7)
+ to label %bb6 unwind label %lpad20
+
+bb6: ; preds = %bb1, %invcont
+ %8 = bitcast i8* %5 to %struct..0btMultiSapOverlapFilterCallback* ; [#uses=1]
+ store %struct..0btMultiSapOverlapFilterCallback* %8, %struct..0btMultiSapOverlapFilterCallback** %1, align 4
+ store i8 1, i8* %2, align 4
+ br label %bb7
+
+bb7: ; preds = %bb6, %entry
+ %9 = mul i32 %maxProxies, 52 ; [#uses=1]
+ %10 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16)
+ to label %invcont8 unwind label %lpad ; [#uses=4]
+
+invcont8: ; preds = %bb7
+ %11 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 5 ; [#uses=1]
+ store i8* %10, i8** %11, align 4
+ %12 = icmp eq i32 %maxProxies, 0 ; [#uses=1]
+ br i1 %12, label %bb11, label %bb9
+
+bb9: ; preds = %bb9, %invcont8
+ %indvar38 = phi i32 [ %indvar.next39, %bb9 ], [ 0, %invcont8 ] ; [#uses=2]
+ %tmp41 = mul i32 %indvar38, 52 ; [#uses=2]
+ %scevgep42 = getelementptr i8* %10, i32 %tmp41 ; [#uses=1]
+ %scevgep4243 = bitcast i8* %scevgep42 to i8** ; [#uses=1]
+ %tmp44 = add i32 %tmp41, 8 ; [#uses=1]
+ %scevgep45 = getelementptr i8* %10, i32 %tmp44 ; [#uses=1]
+ %scevgep4546 = bitcast i8* %scevgep45 to i8** ; [#uses=1]
+ store i8* null, i8** %scevgep4243, align 4
+ store i8* null, i8** %scevgep4546, align 4
+ %indvar.next39 = add i32 %indvar38, 1 ; [#uses=2]
+ %exitcond40 = icmp eq i32 %indvar.next39, %maxProxies ; [#uses=1]
+ br i1 %exitcond40, label %bb11, label %bb9
+
+bb11: ; preds = %bb9, %invcont8
+ %13 = bitcast i8* %10 to %struct.btSimpleBroadphaseProxy* ; [#uses=3]
+ %14 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 4 ; [#uses=3]
+ store %struct.btSimpleBroadphaseProxy* %13, %struct.btSimpleBroadphaseProxy** %14, align 4
+ %15 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 2 ; [#uses=1]
+ store i32 %maxProxies, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btSimpleBroadphase* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 -1, i32* %18, align 4
+ %19 = icmp sgt i32 %maxProxies, 0 ; [#uses=1]
+ br i1 %19, label %bb12, label %bb14
+
+bb12: ; preds = %bb12, %bb11
+ %20 = phi %struct.btSimpleBroadphaseProxy* [ %13, %bb11 ], [ %.pre, %bb12 ] ; [#uses=1]
+ %indvar = phi i32 [ 0, %bb11 ], [ %indvar.next, %bb12 ] ; [#uses=5]
+ %tmp35 = add i32 %indvar, 1 ; [#uses=1]
+ %tmp37 = add i32 %indvar, 2 ; [#uses=1]
+ %scevgep33 = getelementptr %struct.btSimpleBroadphaseProxy* %20, i32 %indvar, i32 1 ; [#uses=1]
+ store i32 %tmp35, i32* %scevgep33, align 4
+ %21 = load %struct.btSimpleBroadphaseProxy** %14, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btSimpleBroadphaseProxy* %21, i32 %indvar, i32 0, i32 4 ; [#uses=1]
+ store i32 %tmp37, i32* %scevgep, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %maxProxies ; [#uses=1]
+ %.pre = load %struct.btSimpleBroadphaseProxy** %14, align 4 ; [#uses=2]
+ br i1 %exitcond, label %bb14, label %bb12
+
+bb14: ; preds = %bb12, %bb11
+ %22 = phi %struct.btSimpleBroadphaseProxy* [ %13, %bb11 ], [ %.pre, %bb12 ] ; [#uses=1]
+ %23 = add nsw i32 %maxProxies, -1 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btSimpleBroadphaseProxy* %22, i32 %23, i32 1 ; [#uses=1]
+ store i32 0, i32* %24, align 4
+ ret void
+
+lpad: ; preds = %bb7, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select19 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad20: ; preds = %bb1
+ %eh_ptr21 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select23 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr21, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+ppad: ; preds = %lpad20, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr21, %lpad20 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV21btBroadphaseInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN18btSimpleBroadphaseC1EiP22btOverlappingPairCache(%struct.btSimpleBroadphase* nocapture %this, i32 %maxProxies, %struct..0btMultiSapOverlapFilterCallback* %overlappingPairCache) align 2 {
+entry:
+ tail call void @_ZN18btSimpleBroadphaseC2EiP22btOverlappingPairCache(%struct.btSimpleBroadphase* %this, i32 %maxProxies, %struct..0btMultiSapOverlapFilterCallback* %overlappingPairCache)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfo(%struct.btActivatingCollisionAlgorithm* %this, %struct.btCollisionAlgorithmConstructionInfo* %ci) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfo(%struct.btCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci)
+ %1 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV30btActivatingCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN30btActivatingCollisionAlgorithmD0Ev(%struct.btActivatingCollisionAlgorithm* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV30btActivatingCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActivatingCollisionAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN30btActivatingCollisionAlgorithmD1Ev(%struct.btActivatingCollisionAlgorithm* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV30btActivatingCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=73]
+define void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV30btActivatingCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN30btActivatingCollisionAlgorithmC1ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* nocapture %colObj0, %struct.btCollisionObject* nocapture %colObj1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfo(%struct.btCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci)
+ %1 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV30btActivatingCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=22]
+define void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* nocapture %colObj0, %struct.btCollisionObject* nocapture %colObj1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfo(%struct.btCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci)
+ %1 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV30btActivatingCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN30btActivatingCollisionAlgorithmC1ERK36btCollisionAlgorithmConstructionInfo(%struct.btActivatingCollisionAlgorithm* %this, %struct.btCollisionAlgorithmConstructionInfo* %ci) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfo(%struct.btCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci)
+ %1 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV30btActivatingCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN26btBoxBoxCollisionAlgorithmC2EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_(%struct.btBox2dBox2dCollisionAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %obj0, %struct.btCollisionObject* %obj1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %obj0, %struct.btCollisionObject* %obj1)
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV26btBoxBoxCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=2]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %3, align 4
+ %4 = icmp eq %struct.btPersistentManifold* %mf, null ; [#uses=1]
+ br i1 %4, label %bb, label %bb5
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %6 = load %struct.btActionInterface** %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btActionInterface* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 6 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = bitcast i32 (...)* %10 to i8 (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*)* ; [#uses=1]
+ %12 = invoke zeroext i8 %11(%struct.btActionInterface* %6, %struct.btCollisionObject* %obj0, %struct.btCollisionObject* %obj1)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb
+ %toBoolnot = icmp eq i8 %12, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb5, label %bb8
+
+bb5: ; preds = %invcont, %entry
+ ret void
+
+bb8: ; preds = %invcont
+ %13 = load %struct.btActionInterface** %5, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btActionInterface* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32 (...)** %15, i32 3 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = bitcast i32 (...)* %17 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %19 = bitcast %struct.btCollisionObject* %obj0 to i8* ; [#uses=1]
+ %20 = bitcast %struct.btCollisionObject* %obj1 to i8* ; [#uses=1]
+ %21 = invoke %struct.btPersistentManifold* %18(%struct.btActionInterface* %13, i8* %19, i8* %20)
+ to label %invcont9 unwind label %lpad ; [#uses=1]
+
+invcont9: ; preds = %bb8
+ store %struct.btPersistentManifold* %21, %struct.btPersistentManifold** %3, align 4
+ store i8 1, i8* %2, align 4
+ ret void
+
+invcont11: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %bb8, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %0)
+ to label %invcont11 unwind label %lpad16
+
+lpad16: ; preds = %lpad
+ %eh_ptr17 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select19 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr17, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define float @_ZN26btBoxBoxCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btBox2dBox2dCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %unnamed_arg, %struct.btCollisionObject* nocapture %unnamed_arg2, %struct.btDispatcherInfo* nocapture %unnamed_arg4, %struct.btManifoldResult* nocapture %unnamed_arg6) nounwind readnone align 2 {
+entry:
+ ret float 1.000000e+00
+}
+
+; [#uses=11]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_(%"struct.btAlignedObjectArray<btPersistentManifold*>"* nocapture %this, %struct.btPersistentManifold** nocapture %_Val) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %this, i32 0, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.196.0.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.196.0.i ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb1
+
+bb.i: ; preds = %bb
+ %8 = icmp eq i32 %iftmp.196.0.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %9 = shl i32 %iftmp.196.0.i, 2 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %10 to %struct.btPersistentManifold** ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %11 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %12 = phi %struct.btPersistentManifold** [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=2]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i
+ %14 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=3]
+ %scevgep.i.i = getelementptr %struct.btPersistentManifold** %12, i32 %indvar.i.i ; [#uses=2]
+ %15 = icmp eq %struct.btPersistentManifold** %scevgep.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %16 = load %struct.btPersistentManifold*** %14, align 4 ; [#uses=1]
+ %scevgep8.i.i = getelementptr %struct.btPersistentManifold** %16, i32 %indvar.i.i ; [#uses=1]
+ %17 = load %struct.btPersistentManifold** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btPersistentManifold* %17, %struct.btPersistentManifold** %scevgep.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i
+ %18 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %this, i32 0, i32 3 ; [#uses=3]
+ %19 = load %struct.btPersistentManifold*** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.btPersistentManifold** %19, null ; [#uses=1]
+ br i1 %20, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %this, i32 0, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %23 = bitcast %struct.btPersistentManifold** %19 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %18, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store %struct.btPersistentManifold** %12, %struct.btPersistentManifold*** %18, align 4
+ store i32 %iftmp.196.0.i, i32* %2, align 4
+ %.pre5 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i, %bb, %entry
+ %25 = phi i32 [ %.pre5, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i ], [ %1, %entry ], [ %1, %bb ] ; [#uses=2]
+ %26 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %this, i32 0, i32 3 ; [#uses=1]
+ %27 = load %struct.btPersistentManifold*** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btPersistentManifold** %27, i32 %25 ; [#uses=2]
+ %29 = icmp eq %struct.btPersistentManifold** %28, null ; [#uses=1]
+ br i1 %29, label %bb4, label %bb2
+
+bb2: ; preds = %bb1
+ %30 = load %struct.btPersistentManifold** %_Val, align 4 ; [#uses=1]
+ store %struct.btPersistentManifold* %30, %struct.btPersistentManifold** %28, align 4
+ %.pre6 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb2, %bb1
+ %31 = phi i32 [ %25, %bb1 ], [ %.pre6, %bb2 ] ; [#uses=1]
+ %32 = add nsw i32 %31, 1 ; [#uses=1]
+ store i32 %32, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN26btBoxBoxCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(%struct.btBox2dBox2dCollisionAlgorithm* nocapture %this, %"struct.btAlignedObjectArray<btPersistentManifold*>"* nocapture %manifoldArray) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb1
+
+bb1: ; preds = %bb
+ tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, %struct.btPersistentManifold** %0) inlinehint
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN26btBoxBoxCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btBox2dBox2dCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %body0, %struct.btCollisionObject* nocapture %body1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %input = alloca %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput", align 8 ; [#uses=35]
+ %detector = alloca %struct.btBoxBoxDetector, align 8 ; [#uses=2]
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 9 ; [#uses=1]
+ %4 = load %struct.btCollisionShape** %3, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btCollisionShape* %4 to %struct.btBoxShape* ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 9 ; [#uses=1]
+ %7 = load %struct.btCollisionShape** %6, align 4 ; [#uses=1]
+ %8 = bitcast %struct.btCollisionShape* %7 to %struct.btBoxShape* ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 1 ; [#uses=2]
+ store %struct.btPersistentManifold* %1, %struct.btPersistentManifold** %9, align 4
+ %10 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 3 ; [#uses=1]
+ store %struct.btStackAlloc* null, %struct.btStackAlloc** %11, align 4
+ store float 0x43ABC16D60000000, float* %10, align 8
+ %12 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 8
+ %15 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 8
+ %21 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 8
+ %27 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 8
+ %33 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 8
+ %39 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ store float %41, float* %39, align 4
+ %42 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ store float %44, float* %42, align 8
+ %45 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ store float %47, float* %45, align 4
+ %48 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ store float %50, float* %48, align 8
+ %51 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ store float %53, float* %51, align 4
+ %54 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ store float %56, float* %54, align 8
+ %57 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ store float %59, float* %57, align 4
+ %60 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ store float %62, float* %60, align 8
+ %63 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ store float %65, float* %63, align 4
+ %66 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ store float %68, float* %66, align 8
+ %69 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ store float %71, float* %69, align 4
+ %72 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ store float %74, float* %72, align 8
+ %75 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ store float %77, float* %75, align 4
+ %78 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ store float %80, float* %78, align 8
+ %81 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ store float %83, float* %81, align 4
+ %84 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ store float %86, float* %84, align 8
+ %87 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ store float %89, float* %87, align 4
+ %90 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=1]
+ store float %92, float* %90, align 8
+ %93 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ store float %95, float* %93, align 4
+ %96 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ store float %98, float* %96, align 8
+ %99 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ store float %101, float* %99, align 4
+ %102 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %104 = load float* %103, align 4 ; [#uses=1]
+ store float %104, float* %102, align 8
+ %105 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %107 = load float* %106, align 4 ; [#uses=1]
+ store float %107, float* %105, align 4
+ call void @_ZN16btBoxBoxDetectorC1EP10btBoxShapeS1_(%struct.btBoxBoxDetector* %detector, %struct.btBoxShape* %5, %struct.btBoxShape* %8)
+ %108 = getelementptr inbounds %struct.btDispatcherInfo* %dispatchInfo, i32 0, i32 5 ; [#uses=1]
+ %109 = load %struct.btActionInterface** %108, align 4 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN16btBoxBoxDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.btBoxBoxDetector* %detector, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, %struct.btActionInterface* %110, %struct.btActionInterface* %109, i8 zeroext 0)
+ %111 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %112 = load i8* %111, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %112, 0 ; [#uses=1]
+ br i1 %toBool, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb1
+
+bb1: ; preds = %bb
+ %113 = load %struct.btPersistentManifold** %9, align 4 ; [#uses=4]
+ %114 = getelementptr inbounds %struct.btPersistentManifold* %113, i32 0, i32 4 ; [#uses=1]
+ %115 = load i32* %114, align 4 ; [#uses=1]
+ %116 = icmp eq i32 %115, 0 ; [#uses=1]
+ br i1 %116, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb.i
+
+bb.i: ; preds = %bb1
+ %117 = getelementptr inbounds %struct.btPersistentManifold* %113, i32 0, i32 2 ; [#uses=1]
+ %118 = load i8** %117, align 4 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 4 ; [#uses=1]
+ %120 = load %struct.btCollisionObject** %119, align 4 ; [#uses=1]
+ %121 = bitcast %struct.btCollisionObject* %120 to i8* ; [#uses=1]
+ %122 = icmp eq i8* %118, %121 ; [#uses=1]
+ br i1 %122, label %bb3.i, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %123 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ %124 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %113, %struct.btTransform* %124, %struct.btTransform* %123)
+ ret void
+
+bb3.i: ; preds = %bb.i
+ %125 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ %126 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %113, %struct.btTransform* %126, %struct.btTransform* %125)
+ ret void
+
+_ZN16btManifoldResult20refreshContactPointsEv.exit: ; preds = %bb1, %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN26btBoxBoxCollisionAlgorithmD0Ev(%struct.btBox2dBox2dCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV26btBoxBoxCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ %14 = bitcast %struct.btBox2dBox2dCollisionAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %14) nounwind
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %15 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %15)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN26btBoxBoxCollisionAlgorithmD1Ev(%struct.btBox2dBox2dCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV26btBoxBoxCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN26btBoxBoxCollisionAlgorithmD2Ev(%struct.btBox2dBox2dCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV26btBoxBoxCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN26btBoxBoxCollisionAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_(%struct.btBox2dBox2dCollisionAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %obj0, %struct.btCollisionObject* %obj1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %obj0, %struct.btCollisionObject* %obj1)
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV26btBoxBoxCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=2]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %3, align 4
+ %4 = icmp eq %struct.btPersistentManifold* %mf, null ; [#uses=1]
+ br i1 %4, label %bb, label %bb5
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %6 = load %struct.btActionInterface** %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btActionInterface* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 6 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = bitcast i32 (...)* %10 to i8 (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*)* ; [#uses=1]
+ %12 = invoke zeroext i8 %11(%struct.btActionInterface* %6, %struct.btCollisionObject* %obj0, %struct.btCollisionObject* %obj1)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb
+ %toBoolnot = icmp eq i8 %12, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb5, label %bb8
+
+bb5: ; preds = %invcont, %entry
+ ret void
+
+bb8: ; preds = %invcont
+ %13 = load %struct.btActionInterface** %5, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btActionInterface* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32 (...)** %15, i32 3 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = bitcast i32 (...)* %17 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %19 = bitcast %struct.btCollisionObject* %obj0 to i8* ; [#uses=1]
+ %20 = bitcast %struct.btCollisionObject* %obj1 to i8* ; [#uses=1]
+ %21 = invoke %struct.btPersistentManifold* %18(%struct.btActionInterface* %13, i8* %19, i8* %20)
+ to label %invcont9 unwind label %lpad ; [#uses=1]
+
+invcont9: ; preds = %bb8
+ store %struct.btPersistentManifold* %21, %struct.btPersistentManifold** %3, align 4
+ store i8 1, i8* %2, align 4
+ ret void
+
+invcont11: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %bb8, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %0)
+ to label %invcont11 unwind label %lpad16
+
+lpad16: ; preds = %lpad
+ %eh_ptr17 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select19 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr17, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN30btBox2dBox2dCollisionAlgorithmC2EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_(%struct.btBox2dBox2dCollisionAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %obj0, %struct.btCollisionObject* %obj1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %obj0, %struct.btCollisionObject* %obj1)
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV30btBox2dBox2dCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=2]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %3, align 4
+ %4 = icmp eq %struct.btPersistentManifold* %mf, null ; [#uses=1]
+ br i1 %4, label %bb, label %bb5
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %6 = load %struct.btActionInterface** %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btActionInterface* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 6 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = bitcast i32 (...)* %10 to i8 (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*)* ; [#uses=1]
+ %12 = invoke zeroext i8 %11(%struct.btActionInterface* %6, %struct.btCollisionObject* %obj0, %struct.btCollisionObject* %obj1)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb
+ %toBoolnot = icmp eq i8 %12, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb5, label %bb8
+
+bb5: ; preds = %invcont, %entry
+ ret void
+
+bb8: ; preds = %invcont
+ %13 = load %struct.btActionInterface** %5, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btActionInterface* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32 (...)** %15, i32 3 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = bitcast i32 (...)* %17 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %19 = bitcast %struct.btCollisionObject* %obj0 to i8* ; [#uses=1]
+ %20 = bitcast %struct.btCollisionObject* %obj1 to i8* ; [#uses=1]
+ %21 = invoke %struct.btPersistentManifold* %18(%struct.btActionInterface* %13, i8* %19, i8* %20)
+ to label %invcont9 unwind label %lpad ; [#uses=1]
+
+invcont9: ; preds = %bb8
+ store %struct.btPersistentManifold* %21, %struct.btPersistentManifold** %3, align 4
+ store i8 1, i8* %2, align 4
+ ret void
+
+invcont11: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %bb8, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %0)
+ to label %invcont11 unwind label %lpad16
+
+lpad16: ; preds = %lpad
+ %eh_ptr17 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select19 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr17, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define float @_ZN30btBox2dBox2dCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btBox2dBox2dCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %unnamed_arg, %struct.btCollisionObject* nocapture %unnamed_arg2, %struct.btDispatcherInfo* nocapture %unnamed_arg4, %struct.btManifoldResult* nocapture %unnamed_arg6) nounwind readnone align 2 {
+entry:
+ ret float 1.000000e+00
+}
+
+; [#uses=2]
+define internal fastcc i32 @_ZL17ClipSegmentToLineP10ClipVertexS0_RK9btVector3f(%struct.ClipVertex* nocapture %vOut, %struct.ClipVertex* nocapture %vIn, float %normal.0.0.0.val, float %normal.0.0.1.val, float %normal.0.0.2.val, float %offset) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.ClipVertex* %vIn, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = fmul float %1, %normal.0.0.0.val ; [#uses=1]
+ %3 = getelementptr inbounds %struct.ClipVertex* %vIn, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = fmul float %4, %normal.0.0.1.val ; [#uses=1]
+ %6 = fadd float %2, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.ClipVertex* %vIn, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %8, %normal.0.0.2.val ; [#uses=1]
+ %10 = fadd float %6, %9 ; [#uses=1]
+ %11 = fsub float %10, %offset ; [#uses=5]
+ %12 = getelementptr inbounds %struct.ClipVertex* %vIn, i32 1, i32 0, i32 0, i32 0 ; [#uses=3]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fmul float %13, %normal.0.0.0.val ; [#uses=1]
+ %15 = getelementptr inbounds %struct.ClipVertex* %vIn, i32 1, i32 0, i32 0, i32 1 ; [#uses=3]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fmul float %16, %normal.0.0.1.val ; [#uses=1]
+ %18 = fadd float %14, %17 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.ClipVertex* %vIn, i32 1, i32 0, i32 0, i32 2 ; [#uses=3]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fmul float %20, %normal.0.0.2.val ; [#uses=1]
+ %22 = fadd float %18, %21 ; [#uses=1]
+ %23 = fsub float %22, %offset ; [#uses=3]
+ %24 = fcmp ugt float %11, 0.000000e+00 ; [#uses=1]
+ br i1 %24, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %25 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1, float* %25, align 4
+ %26 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %27 = load float* %3, align 4 ; [#uses=1]
+ store float %27, float* %26, align 4
+ %28 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %7, align 4 ; [#uses=1]
+ store float %29, float* %28, align 4
+ %30 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.ClipVertex* %vIn, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 0, i32 1 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.ClipVertex* %vIn, i32 0, i32 1 ; [#uses=1]
+ %35 = load i32* %34, align 4 ; [#uses=1]
+ store i32 %35, i32* %33, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %numOut.0 = phi i32 [ 1, %bb ], [ 0, %entry ] ; [#uses=7]
+ %36 = fcmp ugt float %23, 0.000000e+00 ; [#uses=1]
+ br i1 %36, label %bb3, label %bb2
+
+bb2: ; preds = %bb1
+ %37 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 %numOut.0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %12, align 4 ; [#uses=1]
+ store float %38, float* %37, align 4
+ %39 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 %numOut.0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %40 = load float* %15, align 4 ; [#uses=1]
+ store float %40, float* %39, align 4
+ %41 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 %numOut.0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %42 = load float* %19, align 4 ; [#uses=1]
+ store float %42, float* %41, align 4
+ %43 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 %numOut.0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.ClipVertex* %vIn, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 %numOut.0, i32 1 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.ClipVertex* %vIn, i32 1, i32 1 ; [#uses=1]
+ %48 = load i32* %47, align 4 ; [#uses=1]
+ store i32 %48, i32* %46, align 4
+ %49 = add nsw i32 %numOut.0, 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1
+ %numOut.1 = phi i32 [ %49, %bb2 ], [ %numOut.0, %bb1 ] ; [#uses=8]
+ %50 = fmul float %11, %23 ; [#uses=1]
+ %51 = fcmp olt float %50, 0.000000e+00 ; [#uses=1]
+ br i1 %51, label %bb4, label %bb8
+
+bb4: ; preds = %bb3
+ %52 = fsub float %11, %23 ; [#uses=1]
+ %53 = fdiv float %11, %52 ; [#uses=3]
+ %54 = load float* %19, align 4 ; [#uses=1]
+ %55 = load float* %7, align 4 ; [#uses=2]
+ %56 = fsub float %54, %55 ; [#uses=1]
+ %57 = load float* %15, align 4 ; [#uses=1]
+ %58 = load float* %3, align 4 ; [#uses=2]
+ %59 = fsub float %57, %58 ; [#uses=1]
+ %60 = load float* %12, align 4 ; [#uses=1]
+ %61 = load float* %0, align 4 ; [#uses=2]
+ %62 = fsub float %60, %61 ; [#uses=1]
+ %63 = fmul float %56, %53 ; [#uses=1]
+ %64 = fmul float %59, %53 ; [#uses=1]
+ %65 = fmul float %62, %53 ; [#uses=1]
+ %66 = fadd float %55, %63 ; [#uses=1]
+ %67 = fadd float %58, %64 ; [#uses=1]
+ %68 = fadd float %61, %65 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 %numOut.1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %68, float* %69, align 4
+ %70 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 %numOut.1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %67, float* %70, align 4
+ %71 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 %numOut.1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %66, float* %71, align 4
+ %72 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 %numOut.1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %72, align 4
+ %73 = fcmp ogt float %11, 0.000000e+00 ; [#uses=1]
+ br i1 %73, label %bb5, label %bb6
+
+bb5: ; preds = %bb4
+ %74 = getelementptr inbounds %struct.ClipVertex* %vIn, i32 0, i32 1 ; [#uses=1]
+ %75 = load i32* %74, align 4 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 %numOut.1, i32 1 ; [#uses=1]
+ store i32 %75, i32* %76, align 4
+ br label %bb7
+
+bb6: ; preds = %bb4
+ %77 = getelementptr inbounds %struct.ClipVertex* %vIn, i32 1, i32 1 ; [#uses=1]
+ %78 = load i32* %77, align 4 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.ClipVertex* %vOut, i32 %numOut.1, i32 1 ; [#uses=1]
+ store i32 %78, i32* %79, align 4
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5
+ %80 = add nsw i32 %numOut.1, 1 ; [#uses=1]
+ ret i32 %80
+
+bb8: ; preds = %bb3
+ ret i32 %numOut.1
+}
+
+; [#uses=5]
+define internal fastcc float @_ZL14EdgeSeparationPK12btBox2dShapeRK11btTransformiS1_S4_(%struct.btBox2dShape* nocapture %poly1, %struct.btTransform* nocapture %xf1, i32 %edge1, %struct.btBox2dShape* nocapture %poly2, %struct.btTransform* nocapture %xf2) nounwind readonly {
+bb4:
+ %0 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 %edge1, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 %edge1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 %edge1, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=3]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=4]
+ %17 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ %19 = fmul float %18, %3 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=2]
+ %22 = fmul float %21, %8 ; [#uses=1]
+ %23 = fadd float %19, %22 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=2]
+ %26 = fmul float %25, %14 ; [#uses=1]
+ %27 = fadd float %23, %26 ; [#uses=4]
+ %28 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=2]
+ %30 = fmul float %29, %3 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=2]
+ %33 = fmul float %32, %8 ; [#uses=1]
+ %34 = fadd float %30, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = fmul float %36, %14 ; [#uses=1]
+ %38 = fadd float %34, %37 ; [#uses=4]
+ %39 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=2]
+ %49 = load float* %46, align 4 ; [#uses=2]
+ %50 = load float* %45, align 4 ; [#uses=2]
+ %51 = load float* %44, align 4 ; [#uses=2]
+ %52 = load float* %43, align 4 ; [#uses=2]
+ %53 = load float* %42, align 4 ; [#uses=2]
+ %54 = load float* %41, align 4 ; [#uses=2]
+ %55 = load float* %40, align 4 ; [#uses=2]
+ %56 = load float* %39, align 4 ; [#uses=2]
+ %57 = fmul float %54, %38 ; [#uses=1]
+ %58 = fmul float %55, %27 ; [#uses=1]
+ %59 = fadd float %57, %58 ; [#uses=1]
+ %60 = fmul float %56, %16 ; [#uses=1]
+ %61 = fadd float %59, %60 ; [#uses=4]
+ %62 = fmul float %51, %38 ; [#uses=1]
+ %63 = fmul float %52, %27 ; [#uses=1]
+ %64 = fadd float %62, %63 ; [#uses=1]
+ %65 = fmul float %53, %16 ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=4]
+ %67 = fmul float %48, %38 ; [#uses=1]
+ %68 = fmul float %49, %27 ; [#uses=1]
+ %69 = fadd float %67, %68 ; [#uses=1]
+ %70 = fmul float %50, %16 ; [#uses=1]
+ %71 = fadd float %69, %70 ; [#uses=4]
+ %scevgep22 = getelementptr %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep23 = getelementptr %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep24 = getelementptr %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %scevgep22, align 4 ; [#uses=1]
+ %73 = fmul float %72, %71 ; [#uses=1]
+ %74 = load float* %scevgep23, align 4 ; [#uses=1]
+ %75 = fmul float %74, %66 ; [#uses=1]
+ %76 = fadd float %73, %75 ; [#uses=1]
+ %77 = load float* %scevgep24, align 4 ; [#uses=1]
+ %78 = fmul float %77, %61 ; [#uses=1]
+ %79 = fadd float %76, %78 ; [#uses=2]
+ %80 = fcmp olt float %79, 0x43ABC16D60000000 ; [#uses=1]
+ %minDot.0 = select i1 %80, float %79, float 0x43ABC16D60000000 ; [#uses=2]
+ %scevgep22.1 = getelementptr %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep23.1 = getelementptr %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep24.1 = getelementptr %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %81 = load float* %scevgep22.1, align 4 ; [#uses=1]
+ %82 = fmul float %81, %71 ; [#uses=1]
+ %83 = load float* %scevgep23.1, align 4 ; [#uses=1]
+ %84 = fmul float %83, %66 ; [#uses=1]
+ %85 = fadd float %82, %84 ; [#uses=1]
+ %86 = load float* %scevgep24.1, align 4 ; [#uses=1]
+ %87 = fmul float %86, %61 ; [#uses=1]
+ %88 = fadd float %85, %87 ; [#uses=2]
+ %89 = fcmp olt float %88, %minDot.0 ; [#uses=2]
+ %minDot.0.1 = select i1 %89, float %88, float %minDot.0 ; [#uses=2]
+ %scevgep22.2 = getelementptr %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep23.2 = getelementptr %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep24.2 = getelementptr %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 2, i32 0, i32 2 ; [#uses=1]
+ %90 = load float* %scevgep22.2, align 4 ; [#uses=1]
+ %91 = fmul float %90, %71 ; [#uses=1]
+ %92 = load float* %scevgep23.2, align 4 ; [#uses=1]
+ %93 = fmul float %92, %66 ; [#uses=1]
+ %94 = fadd float %91, %93 ; [#uses=1]
+ %95 = load float* %scevgep24.2, align 4 ; [#uses=1]
+ %96 = fmul float %95, %61 ; [#uses=1]
+ %97 = fadd float %94, %96 ; [#uses=2]
+ %98 = fcmp olt float %97, %minDot.0.1 ; [#uses=2]
+ %scevgep23.3 = getelementptr %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 3, i32 0, i32 1 ; [#uses=1]
+ %scevgep22.3 = getelementptr %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 3, i32 0, i32 0 ; [#uses=1]
+ %99 = load float* %scevgep23.3, align 4 ; [#uses=1]
+ %100 = load float* %scevgep22.3, align 4 ; [#uses=1]
+ %scevgep24.3 = getelementptr %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 3, i32 0, i32 2 ; [#uses=1]
+ %101 = load float* %scevgep24.3, align 4 ; [#uses=1]
+ %102 = fmul float %99, %66 ; [#uses=1]
+ %103 = fmul float %100, %71 ; [#uses=1]
+ %104 = fmul float %101, %61 ; [#uses=1]
+ %105 = fadd float %103, %102 ; [#uses=1]
+ %106 = fadd float %105, %104 ; [#uses=1]
+ %minDot.0.2 = select i1 %98, float %97, float %minDot.0.1 ; [#uses=1]
+ %index.0.1 = zext i1 %89 to i32 ; [#uses=1]
+ %107 = fcmp olt float %106, %minDot.0.2 ; [#uses=1]
+ %index.0.2 = select i1 %98, i32 2, i32 %index.0.1 ; [#uses=1]
+ %index.0.3 = select i1 %107, i32 3, i32 %index.0.2 ; [#uses=3]
+ %108 = getelementptr inbounds %struct.btBox2dShape* %poly1, i32 0, i32 2, i32 %edge1, i32 0, i32 0 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=3]
+ %110 = fmul float %1, %109 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btBox2dShape* %poly1, i32 0, i32 2, i32 %edge1, i32 0, i32 1 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=3]
+ %113 = fmul float %6, %112 ; [#uses=1]
+ %114 = fadd float %110, %113 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btBox2dShape* %poly1, i32 0, i32 2, i32 %edge1, i32 0, i32 2 ; [#uses=1]
+ %116 = load float* %115, align 4 ; [#uses=3]
+ %117 = fmul float %12, %116 ; [#uses=1]
+ %118 = fadd float %114, %117 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %120 = load float* %119, align 4 ; [#uses=1]
+ %121 = fadd float %118, %120 ; [#uses=1]
+ %122 = fmul float %18, %109 ; [#uses=1]
+ %123 = fmul float %21, %112 ; [#uses=1]
+ %124 = fadd float %122, %123 ; [#uses=1]
+ %125 = fmul float %25, %116 ; [#uses=1]
+ %126 = fadd float %124, %125 ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %128 = load float* %127, align 4 ; [#uses=1]
+ %129 = fadd float %126, %128 ; [#uses=1]
+ %130 = fmul float %29, %109 ; [#uses=1]
+ %131 = fmul float %32, %112 ; [#uses=1]
+ %132 = fadd float %130, %131 ; [#uses=1]
+ %133 = fmul float %36, %116 ; [#uses=1]
+ %134 = fadd float %132, %133 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %136 = load float* %135, align 4 ; [#uses=1]
+ %137 = fadd float %134, %136 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 %index.0.3, i32 0, i32 0 ; [#uses=1]
+ %139 = load float* %138, align 4 ; [#uses=3]
+ %140 = fmul float %50, %139 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 %index.0.3, i32 0, i32 1 ; [#uses=1]
+ %142 = load float* %141, align 4 ; [#uses=3]
+ %143 = fmul float %53, %142 ; [#uses=1]
+ %144 = fadd float %140, %143 ; [#uses=1]
+ %145 = getelementptr inbounds %struct.btBox2dShape* %poly2, i32 0, i32 2, i32 %index.0.3, i32 0, i32 2 ; [#uses=1]
+ %146 = load float* %145, align 4 ; [#uses=3]
+ %147 = fmul float %56, %146 ; [#uses=1]
+ %148 = fadd float %144, %147 ; [#uses=1]
+ %149 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %150 = load float* %149, align 4 ; [#uses=1]
+ %151 = fadd float %148, %150 ; [#uses=1]
+ %152 = fmul float %49, %139 ; [#uses=1]
+ %153 = fmul float %52, %142 ; [#uses=1]
+ %154 = fadd float %152, %153 ; [#uses=1]
+ %155 = fmul float %55, %146 ; [#uses=1]
+ %156 = fadd float %154, %155 ; [#uses=1]
+ %157 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %158 = load float* %157, align 4 ; [#uses=1]
+ %159 = fadd float %156, %158 ; [#uses=1]
+ %160 = fmul float %48, %139 ; [#uses=1]
+ %161 = fmul float %51, %142 ; [#uses=1]
+ %162 = fadd float %160, %161 ; [#uses=1]
+ %163 = fmul float %54, %146 ; [#uses=1]
+ %164 = fadd float %162, %163 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %166 = load float* %165, align 4 ; [#uses=1]
+ %167 = fadd float %164, %166 ; [#uses=1]
+ %168 = fsub float %151, %121 ; [#uses=1]
+ %169 = fsub float %159, %129 ; [#uses=1]
+ %170 = fsub float %167, %137 ; [#uses=1]
+ %171 = fmul float %170, %38 ; [#uses=1]
+ %172 = fmul float %169, %27 ; [#uses=1]
+ %173 = fadd float %171, %172 ; [#uses=1]
+ %174 = fmul float %168, %16 ; [#uses=1]
+ %175 = fadd float %173, %174 ; [#uses=1]
+ ret float %175
+}
+
+; [#uses=2]
+define internal fastcc float @_ZL17FindMaxSeparationPiPK12btBox2dShapeRK11btTransformS2_S5_(i32* nocapture %edgeIndex, %struct.btBox2dShape* nocapture %poly1, %struct.btTransform* nocapture %xf1, %struct.btBox2dShape* nocapture %poly2, %struct.btTransform* nocapture %xf2) nounwind {
+bb4:
+ %0 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btBox2dShape* %poly1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btBox2dShape* %poly1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btBox2dShape* %poly1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=3]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fadd float %16, %18 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=2]
+ %22 = fmul float %21, %3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=2]
+ %25 = fmul float %24, %8 ; [#uses=1]
+ %26 = fadd float %22, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=2]
+ %29 = fmul float %28, %14 ; [#uses=1]
+ %30 = fadd float %26, %29 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fadd float %30, %32 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=2]
+ %36 = fmul float %35, %3 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=2]
+ %39 = fmul float %38, %8 ; [#uses=1]
+ %40 = fadd float %36, %39 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=2]
+ %43 = fmul float %42, %14 ; [#uses=1]
+ %44 = fadd float %40, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %xf1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fadd float %44, %46 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btBox2dShape* %poly2, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=3]
+ %52 = fmul float %49, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btBox2dShape* %poly2, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=3]
+ %57 = fmul float %54, %56 ; [#uses=1]
+ %58 = fadd float %52, %57 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btBox2dShape* %poly2, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=3]
+ %63 = fmul float %60, %62 ; [#uses=1]
+ %64 = fadd float %58, %63 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ %67 = fadd float %64, %66 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = fmul float %69, %51 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fmul float %72, %56 ; [#uses=1]
+ %74 = fadd float %70, %73 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ %77 = fmul float %76, %62 ; [#uses=1]
+ %78 = fadd float %74, %77 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fadd float %78, %80 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = fmul float %83, %51 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ %87 = fmul float %86, %56 ; [#uses=1]
+ %88 = fadd float %84, %87 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ %91 = fmul float %90, %62 ; [#uses=1]
+ %92 = fadd float %88, %91 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btTransform* %xf2, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = fadd float %92, %94 ; [#uses=1]
+ %96 = fsub float %67, %19 ; [#uses=3]
+ %97 = fsub float %81, %33 ; [#uses=3]
+ %98 = fsub float %95, %47 ; [#uses=3]
+ %99 = fmul float %42, %98 ; [#uses=1]
+ %100 = fmul float %28, %97 ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=1]
+ %102 = fmul float %12, %96 ; [#uses=1]
+ %103 = fadd float %101, %102 ; [#uses=4]
+ %104 = fmul float %38, %98 ; [#uses=1]
+ %105 = fmul float %24, %97 ; [#uses=1]
+ %106 = fadd float %104, %105 ; [#uses=1]
+ %107 = fmul float %6, %96 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=4]
+ %109 = fmul float %35, %98 ; [#uses=1]
+ %110 = fmul float %21, %97 ; [#uses=1]
+ %111 = fadd float %109, %110 ; [#uses=1]
+ %112 = fmul float %1, %96 ; [#uses=1]
+ %113 = fadd float %111, %112 ; [#uses=4]
+ %scevgep66 = getelementptr %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep67 = getelementptr %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep68 = getelementptr %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %114 = load float* %scevgep66, align 4 ; [#uses=1]
+ %115 = fmul float %114, %113 ; [#uses=1]
+ %116 = load float* %scevgep67, align 4 ; [#uses=1]
+ %117 = fmul float %116, %108 ; [#uses=1]
+ %118 = fadd float %115, %117 ; [#uses=1]
+ %119 = load float* %scevgep68, align 4 ; [#uses=1]
+ %120 = fmul float %119, %103 ; [#uses=1]
+ %121 = fadd float %118, %120 ; [#uses=2]
+ %122 = fcmp ogt float %121, 0xC3ABC16D60000000 ; [#uses=1]
+ %maxDot.0 = select i1 %122, float %121, float 0xC3ABC16D60000000 ; [#uses=2]
+ %scevgep66.1 = getelementptr %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep67.1 = getelementptr %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep68.1 = getelementptr %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %123 = load float* %scevgep66.1, align 4 ; [#uses=1]
+ %124 = fmul float %123, %113 ; [#uses=1]
+ %125 = load float* %scevgep67.1, align 4 ; [#uses=1]
+ %126 = fmul float %125, %108 ; [#uses=1]
+ %127 = fadd float %124, %126 ; [#uses=1]
+ %128 = load float* %scevgep68.1, align 4 ; [#uses=1]
+ %129 = fmul float %128, %103 ; [#uses=1]
+ %130 = fadd float %127, %129 ; [#uses=2]
+ %131 = fcmp ogt float %130, %maxDot.0 ; [#uses=2]
+ %maxDot.0.1 = select i1 %131, float %130, float %maxDot.0 ; [#uses=2]
+ %scevgep66.2 = getelementptr %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep67.2 = getelementptr %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep68.2 = getelementptr %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 2, i32 0, i32 2 ; [#uses=1]
+ %132 = load float* %scevgep66.2, align 4 ; [#uses=1]
+ %133 = fmul float %132, %113 ; [#uses=1]
+ %134 = load float* %scevgep67.2, align 4 ; [#uses=1]
+ %135 = fmul float %134, %108 ; [#uses=1]
+ %136 = fadd float %133, %135 ; [#uses=1]
+ %137 = load float* %scevgep68.2, align 4 ; [#uses=1]
+ %138 = fmul float %137, %103 ; [#uses=1]
+ %139 = fadd float %136, %138 ; [#uses=2]
+ %140 = fcmp ogt float %139, %maxDot.0.1 ; [#uses=2]
+ %scevgep67.3 = getelementptr %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 3, i32 0, i32 1 ; [#uses=1]
+ %scevgep66.3 = getelementptr %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 3, i32 0, i32 0 ; [#uses=1]
+ %141 = load float* %scevgep67.3, align 4 ; [#uses=1]
+ %142 = load float* %scevgep66.3, align 4 ; [#uses=1]
+ %scevgep68.3 = getelementptr %struct.btBox2dShape* %poly1, i32 0, i32 3, i32 3, i32 0, i32 2 ; [#uses=1]
+ %143 = load float* %scevgep68.3, align 4 ; [#uses=1]
+ %144 = fmul float %141, %108 ; [#uses=1]
+ %145 = fmul float %142, %113 ; [#uses=1]
+ %146 = fmul float %143, %103 ; [#uses=1]
+ %147 = fadd float %145, %144 ; [#uses=1]
+ %148 = fadd float %147, %146 ; [#uses=1]
+ %maxDot.0.2 = select i1 %140, float %139, float %maxDot.0.1 ; [#uses=1]
+ %edge.0.1 = zext i1 %131 to i32 ; [#uses=1]
+ %149 = fcmp ogt float %148, %maxDot.0.2 ; [#uses=1]
+ %edge.0.2 = select i1 %140, i32 2, i32 %edge.0.1 ; [#uses=1]
+ %edge.0.3 = select i1 %149, i32 3, i32 %edge.0.2 ; [#uses=5]
+ %150 = tail call fastcc float @_ZL14EdgeSeparationPK12btBox2dShapeRK11btTransformiS1_S4_(%struct.btBox2dShape* %poly1, %struct.btTransform* %xf1, i32 %edge.0.3, %struct.btBox2dShape* %poly2, %struct.btTransform* %xf2) ; [#uses=5]
+ %151 = fcmp ogt float %150, 0.000000e+00 ; [#uses=1]
+ br i1 %151, label %bb36, label %bb6
+
+bb6: ; preds = %bb4
+ %152 = icmp sgt i32 %edge.0.3, 0 ; [#uses=1]
+ %edge.1.op = add i32 %edge.0.3, -1 ; [#uses=1]
+ %iftmp.197.0 = select i1 %152, i32 %edge.1.op, i32 3 ; [#uses=2]
+ %153 = tail call fastcc float @_ZL14EdgeSeparationPK12btBox2dShapeRK11btTransformiS1_S4_(%struct.btBox2dShape* %poly1, %struct.btTransform* %xf1, i32 %iftmp.197.0, %struct.btBox2dShape* %poly2, %struct.btTransform* %xf2) ; [#uses=5]
+ %154 = fcmp ogt float %153, 0.000000e+00 ; [#uses=1]
+ br i1 %154, label %bb36, label %bb11
+
+bb11: ; preds = %bb6
+ %155 = add nsw i32 %edge.0.3, 1 ; [#uses=2]
+ %156 = icmp slt i32 %155, 4 ; [#uses=1]
+ %iftmp.198.0 = select i1 %156, i32 %155, i32 0 ; [#uses=2]
+ %157 = tail call fastcc float @_ZL14EdgeSeparationPK12btBox2dShapeRK11btTransformiS1_S4_(%struct.btBox2dShape* %poly1, %struct.btTransform* %xf1, i32 %iftmp.198.0, %struct.btBox2dShape* %poly2, %struct.btTransform* %xf2) ; [#uses=5]
+ %158 = fcmp ogt float %157, 0.000000e+00 ; [#uses=1]
+ br i1 %158, label %bb36, label %bb16
+
+bb16: ; preds = %bb11
+ %159 = fcmp ule float %153, %150 ; [#uses=1]
+ %160 = fcmp ule float %153, %157 ; [#uses=1]
+ %or.cond = or i1 %159, %160 ; [#uses=1]
+ br i1 %or.cond, label %bb19, label %bb31.us
+
+bb19: ; preds = %bb16
+ %161 = fcmp ogt float %157, %150 ; [#uses=1]
+ br i1 %161, label %bb31, label %bb21
+
+bb33.us: ; preds = %bb31.us
+ %162 = fcmp ogt float %164, %bestSeparation.0.us ; [#uses=1]
+ br i1 %162, label %bb31.us, label %bb35
+
+bb31.us: ; preds = %bb33.us, %bb16
+ %bestSeparation.0.us = phi float [ %164, %bb33.us ], [ %153, %bb16 ] ; [#uses=2]
+ %bestEdge.0.us = phi i32 [ %iftmp.199.0.us, %bb33.us ], [ %iftmp.197.0, %bb16 ] ; [#uses=3]
+ %163 = icmp sgt i32 %bestEdge.0.us, 0 ; [#uses=1]
+ %bestEdge.0.op.us = add i32 %bestEdge.0.us, -1 ; [#uses=1]
+ %iftmp.199.0.us = select i1 %163, i32 %bestEdge.0.op.us, i32 3 ; [#uses=2]
+ %164 = tail call fastcc float @_ZL14EdgeSeparationPK12btBox2dShapeRK11btTransformiS1_S4_(%struct.btBox2dShape* %poly1, %struct.btTransform* %xf1, i32 %iftmp.199.0.us, %struct.btBox2dShape* %poly2, %struct.btTransform* %xf2) ; [#uses=4]
+ %165 = fcmp ogt float %164, 0.000000e+00 ; [#uses=1]
+ br i1 %165, label %bb36, label %bb33.us
+
+bb21: ; preds = %bb19
+ store i32 %edge.0.3, i32* %edgeIndex, align 4
+ ret float %150
+
+bb31: ; preds = %bb33, %bb19
+ %bestSeparation.0 = phi float [ %168, %bb33 ], [ %157, %bb19 ] ; [#uses=2]
+ %bestEdge.0 = phi i32 [ %iftmp.200.0, %bb33 ], [ %iftmp.198.0, %bb19 ] ; [#uses=2]
+ %166 = add nsw i32 %bestEdge.0, 1 ; [#uses=2]
+ %167 = icmp slt i32 %166, 4 ; [#uses=1]
+ %iftmp.200.0 = select i1 %167, i32 %166, i32 0 ; [#uses=2]
+ %168 = tail call fastcc float @_ZL14EdgeSeparationPK12btBox2dShapeRK11btTransformiS1_S4_(%struct.btBox2dShape* %poly1, %struct.btTransform* %xf1, i32 %iftmp.200.0, %struct.btBox2dShape* %poly2, %struct.btTransform* %xf2) ; [#uses=4]
+ %169 = fcmp ogt float %168, 0.000000e+00 ; [#uses=1]
+ br i1 %169, label %bb36, label %bb33
+
+bb33: ; preds = %bb31
+ %170 = fcmp ogt float %168, %bestSeparation.0 ; [#uses=1]
+ br i1 %170, label %bb31, label %bb35
+
+bb35: ; preds = %bb33, %bb33.us
+ %bestSeparation.0.lcssa = phi float [ %bestSeparation.0.us, %bb33.us ], [ %bestSeparation.0, %bb33 ] ; [#uses=1]
+ %bestEdge.0.lcssa = phi i32 [ %bestEdge.0.us, %bb33.us ], [ %bestEdge.0, %bb33 ] ; [#uses=1]
+ store i32 %bestEdge.0.lcssa, i32* %edgeIndex, align 4
+ ret float %bestSeparation.0.lcssa
+
+bb36: ; preds = %bb31, %bb31.us, %bb11, %bb6, %bb4
+ %.0 = phi float [ %150, %bb4 ], [ %153, %bb6 ], [ %157, %bb11 ], [ %164, %bb31.us ], [ %168, %bb31 ] ; [#uses=1]
+ ret float %.0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN30btBox2dBox2dCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(%struct.btBox2dBox2dCollisionAlgorithm* nocapture %this, %"struct.btAlignedObjectArray<btPersistentManifold*>"* nocapture %manifoldArray) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb1
+
+bb1: ; preds = %bb
+ tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, %struct.btPersistentManifold** %0) inlinehint
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_Z17b2CollidePolygonsP16btManifoldResultPK12btBox2dShapeRK11btTransformS3_S6_(%struct.btManifoldResult* %manifold, %struct.btBox2dShape* nocapture %polyA, %struct.btTransform* %xfA, %struct.btBox2dShape* nocapture %polyB, %struct.btTransform* %xfB) {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %edgeA = alloca i32, align 4 ; [#uses=3]
+ %edgeB = alloca i32, align 4 ; [#uses=3]
+ %incidentEdge = alloca [2 x %struct.ClipVertex], align 8 ; [#uses=9]
+ %clipPoints1 = alloca [2 x %struct.ClipVertex], align 8 ; [#uses=9]
+ %clipPoints2 = alloca [2 x %struct.ClipVertex], align 8 ; [#uses=13]
+ store i32 0, i32* %edgeA, align 4
+ %1 = call fastcc float @_ZL17FindMaxSeparationPiPK12btBox2dShapeRK11btTransformS2_S5_(i32* %edgeA, %struct.btBox2dShape* %polyA, %struct.btTransform* %xfA, %struct.btBox2dShape* %polyB, %struct.btTransform* %xfB) ; [#uses=2]
+ %2 = fcmp ogt float %1, 0.000000e+00 ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ store i32 0, i32* %edgeB, align 4
+ %3 = call fastcc float @_ZL17FindMaxSeparationPiPK12btBox2dShapeRK11btTransformS2_S5_(i32* %edgeB, %struct.btBox2dShape* %polyB, %struct.btTransform* %xfB, %struct.btBox2dShape* %polyA, %struct.btTransform* %xfA) ; [#uses=2]
+ %4 = fcmp ogt float %3, 0.000000e+00 ; [#uses=1]
+ br i1 %4, label %return, label %bb1
+
+bb1: ; preds = %bb
+ %5 = fmul float %1, 0x3FEF5C2900000000 ; [#uses=1]
+ %6 = fadd float %5, 0x3F50624DE0000000 ; [#uses=1]
+ %7 = fcmp olt float %6, %3 ; [#uses=1]
+ br i1 %7, label %bb7, label %bb3
+
+bb3: ; preds = %bb1
+ br label %bb7
+
+bb7: ; preds = %bb3, %bb1
+ %xfA.pn = phi %struct.btTransform* [ %xfB, %bb3 ], [ %xfA, %bb1 ] ; [#uses=12]
+ %xfB.pn = phi %struct.btTransform* [ %xfA, %bb3 ], [ %xfB, %bb1 ] ; [#uses=12]
+ %poly1.0 = phi %struct.btBox2dShape* [ %polyA, %bb3 ], [ %polyB, %bb1 ] ; [#uses=8]
+ %poly2.0 = phi %struct.btBox2dShape* [ %polyB, %bb3 ], [ %polyA, %bb1 ] ; [#uses=18]
+ %edge1.0.in = phi i32* [ %edgeA, %bb3 ], [ %edgeB, %bb1 ] ; [#uses=1]
+ %flip.0 = phi i8 [ 0, %bb3 ], [ 1, %bb1 ] ; [#uses=1]
+ %xf1.0.0.0.0.0.0.in = getelementptr inbounds %struct.btTransform* %xfB.pn, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %xf1.0.0.0.0.1.0.in = getelementptr inbounds %struct.btTransform* %xfB.pn, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %xf1.0.0.0.0.2.0.in = getelementptr inbounds %struct.btTransform* %xfB.pn, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %xf1.0.0.1.0.0.0.in = getelementptr inbounds %struct.btTransform* %xfB.pn, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %xf1.0.0.1.0.1.0.in = getelementptr inbounds %struct.btTransform* %xfB.pn, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %xf1.0.0.1.0.2.0.in = getelementptr inbounds %struct.btTransform* %xfB.pn, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %xf1.0.0.2.0.0.0.in = getelementptr inbounds %struct.btTransform* %xfB.pn, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %xf1.0.0.2.0.1.0.in = getelementptr inbounds %struct.btTransform* %xfB.pn, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %xf1.0.0.2.0.2.0.in = getelementptr inbounds %struct.btTransform* %xfB.pn, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %xf1.1.0.0.0.in = getelementptr inbounds %struct.btTransform* %xfB.pn, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %xf1.1.0.1.0.in = getelementptr inbounds %struct.btTransform* %xfB.pn, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %xf1.1.0.2.0.in = getelementptr inbounds %struct.btTransform* %xfB.pn, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %xf2.0.0.0.0.0.0.in = getelementptr inbounds %struct.btTransform* %xfA.pn, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %xf2.0.0.0.0.1.0.in = getelementptr inbounds %struct.btTransform* %xfA.pn, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %xf2.0.0.0.0.2.0.in = getelementptr inbounds %struct.btTransform* %xfA.pn, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %xf2.0.0.1.0.0.0.in = getelementptr inbounds %struct.btTransform* %xfA.pn, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %xf2.0.0.1.0.1.0.in = getelementptr inbounds %struct.btTransform* %xfA.pn, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %xf2.0.0.1.0.2.0.in = getelementptr inbounds %struct.btTransform* %xfA.pn, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %xf2.0.0.2.0.0.0.in = getelementptr inbounds %struct.btTransform* %xfA.pn, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %xf2.0.0.2.0.1.0.in = getelementptr inbounds %struct.btTransform* %xfA.pn, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %xf2.0.0.2.0.2.0.in = getelementptr inbounds %struct.btTransform* %xfA.pn, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %xf2.1.0.0.0.in = getelementptr inbounds %struct.btTransform* %xfA.pn, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %xf2.1.0.1.0.in = getelementptr inbounds %struct.btTransform* %xfA.pn, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %xf2.1.0.2.0.in = getelementptr inbounds %struct.btTransform* %xfA.pn, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %xf1.0.0.0.0.0.0 = load float* %xf1.0.0.0.0.0.0.in, align 4 ; [#uses=4]
+ %xf1.0.0.0.0.1.0 = load float* %xf1.0.0.0.0.1.0.in, align 4 ; [#uses=4]
+ %xf1.0.0.0.0.2.0 = load float* %xf1.0.0.0.0.2.0.in, align 4 ; [#uses=4]
+ %xf1.0.0.1.0.0.0 = load float* %xf1.0.0.1.0.0.0.in, align 4 ; [#uses=4]
+ %xf1.0.0.1.0.1.0 = load float* %xf1.0.0.1.0.1.0.in, align 4 ; [#uses=4]
+ %xf1.0.0.1.0.2.0 = load float* %xf1.0.0.1.0.2.0.in, align 4 ; [#uses=4]
+ %xf1.0.0.2.0.0.0 = load float* %xf1.0.0.2.0.0.0.in, align 4 ; [#uses=4]
+ %xf1.0.0.2.0.1.0 = load float* %xf1.0.0.2.0.1.0.in, align 4 ; [#uses=4]
+ %xf1.0.0.2.0.2.0 = load float* %xf1.0.0.2.0.2.0.in, align 4 ; [#uses=4]
+ %xf1.1.0.0.0 = load float* %xf1.1.0.0.0.in, align 4 ; [#uses=2]
+ %xf1.1.0.1.0 = load float* %xf1.1.0.1.0.in, align 4 ; [#uses=2]
+ %xf1.1.0.2.0 = load float* %xf1.1.0.2.0.in, align 4 ; [#uses=2]
+ %xf2.0.0.0.0.0.0 = load float* %xf2.0.0.0.0.0.0.in, align 4 ; [#uses=3]
+ %xf2.0.0.0.0.1.0 = load float* %xf2.0.0.0.0.1.0.in, align 4 ; [#uses=3]
+ %xf2.0.0.0.0.2.0 = load float* %xf2.0.0.0.0.2.0.in, align 4 ; [#uses=3]
+ %xf2.0.0.1.0.0.0 = load float* %xf2.0.0.1.0.0.0.in, align 4 ; [#uses=3]
+ %xf2.0.0.1.0.1.0 = load float* %xf2.0.0.1.0.1.0.in, align 4 ; [#uses=3]
+ %xf2.0.0.1.0.2.0 = load float* %xf2.0.0.1.0.2.0.in, align 4 ; [#uses=3]
+ %xf2.0.0.2.0.0.0 = load float* %xf2.0.0.2.0.0.0.in, align 4 ; [#uses=3]
+ %xf2.0.0.2.0.1.0 = load float* %xf2.0.0.2.0.1.0.in, align 4 ; [#uses=3]
+ %xf2.0.0.2.0.2.0 = load float* %xf2.0.0.2.0.2.0.in, align 4 ; [#uses=3]
+ %xf2.1.0.0.0 = load float* %xf2.1.0.0.0.in, align 4 ; [#uses=2]
+ %xf2.1.0.1.0 = load float* %xf2.1.0.1.0.in, align 4 ; [#uses=2]
+ %xf2.1.0.2.0 = load float* %xf2.1.0.2.0.in, align 4 ; [#uses=2]
+ %edge1.0 = load i32* %edge1.0.in, align 4 ; [#uses=7]
+ %8 = getelementptr inbounds %struct.btBox2dShape* %poly1.0, i32 0, i32 3, i32 %edge1.0, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=3]
+ %10 = fmul float %xf1.0.0.2.0.0.0, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btBox2dShape* %poly1.0, i32 0, i32 3, i32 %edge1.0, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=3]
+ %13 = fmul float %xf1.0.0.2.0.1.0, %12 ; [#uses=1]
+ %14 = fadd float %10, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btBox2dShape* %poly1.0, i32 0, i32 3, i32 %edge1.0, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=3]
+ %17 = fmul float %xf1.0.0.2.0.2.0, %16 ; [#uses=1]
+ %18 = fadd float %14, %17 ; [#uses=3]
+ %19 = fmul float %xf1.0.0.1.0.0.0, %9 ; [#uses=1]
+ %20 = fmul float %xf1.0.0.1.0.1.0, %12 ; [#uses=1]
+ %21 = fadd float %19, %20 ; [#uses=1]
+ %22 = fmul float %xf1.0.0.1.0.2.0, %16 ; [#uses=1]
+ %23 = fadd float %21, %22 ; [#uses=3]
+ %24 = fmul float %xf1.0.0.0.0.0.0, %9 ; [#uses=1]
+ %25 = fmul float %xf1.0.0.0.0.1.0, %12 ; [#uses=1]
+ %26 = fadd float %24, %25 ; [#uses=1]
+ %27 = fmul float %xf1.0.0.0.0.2.0, %16 ; [#uses=1]
+ %28 = fadd float %26, %27 ; [#uses=3]
+ %29 = fmul float %xf2.0.0.0.0.2.0, %28 ; [#uses=1]
+ %30 = fmul float %xf2.0.0.1.0.2.0, %23 ; [#uses=1]
+ %31 = fadd float %29, %30 ; [#uses=1]
+ %32 = fmul float %xf2.0.0.2.0.2.0, %18 ; [#uses=1]
+ %33 = fadd float %31, %32 ; [#uses=4]
+ %34 = fmul float %xf2.0.0.0.0.1.0, %28 ; [#uses=1]
+ %35 = fmul float %xf2.0.0.1.0.1.0, %23 ; [#uses=1]
+ %36 = fadd float %34, %35 ; [#uses=1]
+ %37 = fmul float %xf2.0.0.2.0.1.0, %18 ; [#uses=1]
+ %38 = fadd float %36, %37 ; [#uses=4]
+ %39 = fmul float %xf2.0.0.0.0.0.0, %28 ; [#uses=1]
+ %40 = fmul float %xf2.0.0.1.0.0.0, %23 ; [#uses=1]
+ %41 = fadd float %39, %40 ; [#uses=1]
+ %42 = fmul float %xf2.0.0.2.0.0.0, %18 ; [#uses=1]
+ %43 = fadd float %41, %42 ; [#uses=4]
+ %scevgep25.i = getelementptr %struct.btBox2dShape* %poly2.0, i32 0, i32 3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep26.i = getelementptr %struct.btBox2dShape* %poly2.0, i32 0, i32 3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep27.i = getelementptr %struct.btBox2dShape* %poly2.0, i32 0, i32 3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %44 = load float* %scevgep25.i, align 4 ; [#uses=1]
+ %45 = fmul float %43, %44 ; [#uses=1]
+ %46 = load float* %scevgep26.i, align 4 ; [#uses=1]
+ %47 = fmul float %38, %46 ; [#uses=1]
+ %48 = fadd float %45, %47 ; [#uses=1]
+ %49 = load float* %scevgep27.i, align 4 ; [#uses=1]
+ %50 = fmul float %33, %49 ; [#uses=1]
+ %51 = fadd float %48, %50 ; [#uses=2]
+ %52 = fcmp olt float %51, 0x43ABC16D60000000 ; [#uses=1]
+ %minDot.0.i = select i1 %52, float %51, float 0x43ABC16D60000000 ; [#uses=2]
+ %scevgep25.1.i = getelementptr %struct.btBox2dShape* %poly2.0, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep26.1.i = getelementptr %struct.btBox2dShape* %poly2.0, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep27.1.i = getelementptr %struct.btBox2dShape* %poly2.0, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %scevgep25.1.i, align 4 ; [#uses=1]
+ %54 = fmul float %43, %53 ; [#uses=1]
+ %55 = load float* %scevgep26.1.i, align 4 ; [#uses=1]
+ %56 = fmul float %38, %55 ; [#uses=1]
+ %57 = fadd float %54, %56 ; [#uses=1]
+ %58 = load float* %scevgep27.1.i, align 4 ; [#uses=1]
+ %59 = fmul float %33, %58 ; [#uses=1]
+ %60 = fadd float %57, %59 ; [#uses=2]
+ %61 = fcmp olt float %60, %minDot.0.i ; [#uses=2]
+ %minDot.0.1.i = select i1 %61, float %60, float %minDot.0.i ; [#uses=2]
+ %scevgep25.2.i = getelementptr %struct.btBox2dShape* %poly2.0, i32 0, i32 3, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep26.2.i = getelementptr %struct.btBox2dShape* %poly2.0, i32 0, i32 3, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep27.2.i = getelementptr %struct.btBox2dShape* %poly2.0, i32 0, i32 3, i32 2, i32 0, i32 2 ; [#uses=1]
+ %62 = load float* %scevgep25.2.i, align 4 ; [#uses=1]
+ %63 = fmul float %43, %62 ; [#uses=1]
+ %64 = load float* %scevgep26.2.i, align 4 ; [#uses=1]
+ %65 = fmul float %38, %64 ; [#uses=1]
+ %66 = fadd float %63, %65 ; [#uses=1]
+ %67 = load float* %scevgep27.2.i, align 4 ; [#uses=1]
+ %68 = fmul float %33, %67 ; [#uses=1]
+ %69 = fadd float %66, %68 ; [#uses=2]
+ %70 = fcmp olt float %69, %minDot.0.1.i ; [#uses=2]
+ %scevgep26.3.i = getelementptr %struct.btBox2dShape* %poly2.0, i32 0, i32 3, i32 3, i32 0, i32 1 ; [#uses=1]
+ %scevgep25.3.i = getelementptr %struct.btBox2dShape* %poly2.0, i32 0, i32 3, i32 3, i32 0, i32 0 ; [#uses=1]
+ %71 = load float* %scevgep26.3.i, align 4 ; [#uses=1]
+ %72 = load float* %scevgep25.3.i, align 4 ; [#uses=1]
+ %scevgep27.3.i = getelementptr %struct.btBox2dShape* %poly2.0, i32 0, i32 3, i32 3, i32 0, i32 2 ; [#uses=1]
+ %73 = load float* %scevgep27.3.i, align 4 ; [#uses=1]
+ %74 = fmul float %38, %71 ; [#uses=1]
+ %75 = fmul float %43, %72 ; [#uses=1]
+ %76 = fmul float %33, %73 ; [#uses=1]
+ %77 = fadd float %75, %74 ; [#uses=1]
+ %78 = fadd float %77, %76 ; [#uses=1]
+ %minDot.0.2.i = select i1 %70, float %69, float %minDot.0.1.i ; [#uses=1]
+ %index.0.1.i = zext i1 %61 to i32 ; [#uses=1]
+ %79 = fcmp olt float %78, %minDot.0.2.i ; [#uses=1]
+ %index.0.2.i = select i1 %70, i32 2, i32 %index.0.1.i ; [#uses=1]
+ %index.0.3.i = select i1 %79, i32 3, i32 %index.0.2.i ; [#uses=4]
+ %80 = add nsw i32 %index.0.3.i, 1 ; [#uses=2]
+ %81 = icmp ult i32 %80, 4 ; [#uses=1]
+ %iftmp.201.0.i = select i1 %81, i32 %80, i32 0 ; [#uses=3]
+ %82 = getelementptr inbounds %struct.btBox2dShape* %poly2.0, i32 0, i32 2, i32 %index.0.3.i, i32 0, i32 0 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=3]
+ %84 = fmul float %xf2.0.0.2.0.0.0, %83 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btBox2dShape* %poly2.0, i32 0, i32 2, i32 %index.0.3.i, i32 0, i32 1 ; [#uses=1]
+ %86 = load float* %85, align 4 ; [#uses=3]
+ %87 = fmul float %xf2.0.0.2.0.1.0, %86 ; [#uses=1]
+ %88 = fadd float %84, %87 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btBox2dShape* %poly2.0, i32 0, i32 2, i32 %index.0.3.i, i32 0, i32 2 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=3]
+ %91 = fmul float %xf2.0.0.2.0.2.0, %90 ; [#uses=1]
+ %92 = fadd float %88, %91 ; [#uses=1]
+ %93 = fadd float %92, %xf2.1.0.2.0 ; [#uses=1]
+ %94 = fmul float %xf2.0.0.1.0.0.0, %83 ; [#uses=1]
+ %95 = fmul float %xf2.0.0.1.0.1.0, %86 ; [#uses=1]
+ %96 = fadd float %94, %95 ; [#uses=1]
+ %97 = fmul float %xf2.0.0.1.0.2.0, %90 ; [#uses=1]
+ %98 = fadd float %96, %97 ; [#uses=1]
+ %99 = fadd float %98, %xf2.1.0.1.0 ; [#uses=1]
+ %100 = fmul float %xf2.0.0.0.0.0.0, %83 ; [#uses=1]
+ %101 = fmul float %xf2.0.0.0.0.1.0, %86 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fmul float %xf2.0.0.0.0.2.0, %90 ; [#uses=1]
+ %104 = fadd float %102, %103 ; [#uses=1]
+ %105 = fadd float %104, %xf2.1.0.0.0 ; [#uses=1]
+ %106 = getelementptr inbounds [2 x %struct.ClipVertex]* %incidentEdge, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %105, float* %106, align 8
+ %107 = getelementptr inbounds [2 x %struct.ClipVertex]* %incidentEdge, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %99, float* %107, align 4
+ %108 = getelementptr inbounds [2 x %struct.ClipVertex]* %incidentEdge, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %93, float* %108, align 8
+ %109 = getelementptr inbounds [2 x %struct.ClipVertex]* %incidentEdge, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %109, align 4
+ %110 = getelementptr inbounds %struct.btBox2dShape* %poly2.0, i32 0, i32 2, i32 %iftmp.201.0.i, i32 0, i32 0 ; [#uses=1]
+ %111 = load float* %110, align 4 ; [#uses=3]
+ %112 = fmul float %xf2.0.0.2.0.0.0, %111 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btBox2dShape* %poly2.0, i32 0, i32 2, i32 %iftmp.201.0.i, i32 0, i32 1 ; [#uses=1]
+ %114 = load float* %113, align 4 ; [#uses=3]
+ %115 = fmul float %xf2.0.0.2.0.1.0, %114 ; [#uses=1]
+ %116 = fadd float %112, %115 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btBox2dShape* %poly2.0, i32 0, i32 2, i32 %iftmp.201.0.i, i32 0, i32 2 ; [#uses=1]
+ %118 = load float* %117, align 4 ; [#uses=3]
+ %119 = fmul float %xf2.0.0.2.0.2.0, %118 ; [#uses=1]
+ %120 = fadd float %116, %119 ; [#uses=1]
+ %121 = fadd float %120, %xf2.1.0.2.0 ; [#uses=1]
+ %122 = fmul float %xf2.0.0.1.0.0.0, %111 ; [#uses=1]
+ %123 = fmul float %xf2.0.0.1.0.1.0, %114 ; [#uses=1]
+ %124 = fadd float %122, %123 ; [#uses=1]
+ %125 = fmul float %xf2.0.0.1.0.2.0, %118 ; [#uses=1]
+ %126 = fadd float %124, %125 ; [#uses=1]
+ %127 = fadd float %126, %xf2.1.0.1.0 ; [#uses=1]
+ %128 = fmul float %xf2.0.0.0.0.0.0, %111 ; [#uses=1]
+ %129 = fmul float %xf2.0.0.0.0.1.0, %114 ; [#uses=1]
+ %130 = fadd float %128, %129 ; [#uses=1]
+ %131 = fmul float %xf2.0.0.0.0.2.0, %118 ; [#uses=1]
+ %132 = fadd float %130, %131 ; [#uses=1]
+ %133 = fadd float %132, %xf2.1.0.0.0 ; [#uses=1]
+ %134 = getelementptr inbounds [2 x %struct.ClipVertex]* %incidentEdge, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %133, float* %134, align 4
+ %135 = getelementptr inbounds [2 x %struct.ClipVertex]* %incidentEdge, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %127, float* %135, align 4
+ %136 = getelementptr inbounds [2 x %struct.ClipVertex]* %incidentEdge, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %121, float* %136, align 4
+ %137 = getelementptr inbounds [2 x %struct.ClipVertex]* %incidentEdge, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %137, align 4
+ %138 = getelementptr inbounds %struct.btBox2dShape* %poly1.0, i32 0, i32 2, i32 0 ; [#uses=1]
+ %139 = getelementptr inbounds %struct.btBox2dShape* %poly1.0, i32 0, i32 2, i32 %edge1.0, i32 0, i32 0 ; [#uses=1]
+ %140 = load float* %139, align 4 ; [#uses=4]
+ %141 = getelementptr inbounds %struct.btBox2dShape* %poly1.0, i32 0, i32 2, i32 %edge1.0, i32 0, i32 1 ; [#uses=1]
+ %142 = load float* %141, align 4 ; [#uses=4]
+ %143 = getelementptr inbounds %struct.btBox2dShape* %poly1.0, i32 0, i32 2, i32 %edge1.0, i32 0, i32 2 ; [#uses=1]
+ %144 = load float* %143, align 4 ; [#uses=4]
+ %145 = add nsw i32 %edge1.0, 1 ; [#uses=2]
+ %146 = icmp slt i32 %145, 4 ; [#uses=1]
+ br i1 %146, label %bb8, label %bb17
+
+bb8: ; preds = %bb7
+ %147 = getelementptr inbounds %struct.btBox2dShape* %poly1.0, i32 0, i32 2, i32 %145 ; [#uses=1]
+ br label %bb17
+
+bb17: ; preds = %bb8, %bb7
+ %iftmp.203.0 = phi %struct.btQuadWord* [ %147, %bb8 ], [ %138, %bb7 ] ; [#uses=3]
+ %148 = getelementptr inbounds %struct.btQuadWord* %iftmp.203.0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %149 = load float* %148, align 4 ; [#uses=4]
+ %150 = getelementptr inbounds %struct.btQuadWord* %iftmp.203.0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %151 = load float* %150, align 4 ; [#uses=4]
+ %152 = getelementptr inbounds %struct.btQuadWord* %iftmp.203.0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %153 = load float* %152, align 4 ; [#uses=4]
+ %154 = fsub float %153, %144 ; [#uses=3]
+ %155 = fsub float %151, %142 ; [#uses=3]
+ %156 = fsub float %149, %140 ; [#uses=3]
+ %157 = fmul float %xf1.0.0.2.0.0.0, %156 ; [#uses=1]
+ %158 = fmul float %xf1.0.0.2.0.1.0, %155 ; [#uses=1]
+ %159 = fadd float %157, %158 ; [#uses=1]
+ %160 = fmul float %xf1.0.0.2.0.2.0, %154 ; [#uses=1]
+ %161 = fadd float %159, %160 ; [#uses=3]
+ %162 = fmul float %xf1.0.0.1.0.0.0, %156 ; [#uses=1]
+ %163 = fmul float %xf1.0.0.1.0.1.0, %155 ; [#uses=1]
+ %164 = fadd float %162, %163 ; [#uses=1]
+ %165 = fmul float %xf1.0.0.1.0.2.0, %154 ; [#uses=1]
+ %166 = fadd float %164, %165 ; [#uses=3]
+ %167 = fmul float %xf1.0.0.0.0.0.0, %156 ; [#uses=1]
+ %168 = fmul float %xf1.0.0.0.0.1.0, %155 ; [#uses=1]
+ %169 = fadd float %167, %168 ; [#uses=1]
+ %170 = fmul float %xf1.0.0.0.0.2.0, %154 ; [#uses=1]
+ %171 = fadd float %169, %170 ; [#uses=3]
+ %172 = fmul float %171, %171 ; [#uses=1]
+ %173 = fmul float %166, %166 ; [#uses=1]
+ %174 = fadd float %172, %173 ; [#uses=1]
+ %175 = fmul float %161, %161 ; [#uses=1]
+ %176 = fadd float %174, %175 ; [#uses=1]
+ %177 = call float @sqrtf(float %176) nounwind readonly ; [#uses=1]
+ %178 = fdiv float 1.000000e+00, %177 ; [#uses=3]
+ %179 = fmul float %171, %178 ; [#uses=5]
+ %180 = fmul float %166, %178 ; [#uses=7]
+ %181 = fmul float %161, %178 ; [#uses=4]
+ %182 = fsub float -0.000000e+00, %179 ; [#uses=4]
+ %183 = fmul float %xf1.0.0.2.0.0.0, %140 ; [#uses=1]
+ %184 = fmul float %xf1.0.0.2.0.1.0, %142 ; [#uses=1]
+ %185 = fadd float %183, %184 ; [#uses=1]
+ %186 = fmul float %xf1.0.0.2.0.2.0, %144 ; [#uses=1]
+ %187 = fadd float %185, %186 ; [#uses=1]
+ %188 = fadd float %187, %xf1.1.0.2.0 ; [#uses=2]
+ %189 = fmul float %xf1.0.0.1.0.0.0, %140 ; [#uses=1]
+ %190 = fmul float %xf1.0.0.1.0.1.0, %142 ; [#uses=1]
+ %191 = fadd float %189, %190 ; [#uses=1]
+ %192 = fmul float %xf1.0.0.1.0.2.0, %144 ; [#uses=1]
+ %193 = fadd float %191, %192 ; [#uses=1]
+ %194 = fadd float %193, %xf1.1.0.1.0 ; [#uses=2]
+ %195 = fmul float %xf1.0.0.0.0.0.0, %140 ; [#uses=1]
+ %196 = fmul float %xf1.0.0.0.0.1.0, %142 ; [#uses=1]
+ %197 = fadd float %195, %196 ; [#uses=1]
+ %198 = fmul float %xf1.0.0.0.0.2.0, %144 ; [#uses=1]
+ %199 = fadd float %197, %198 ; [#uses=1]
+ %200 = fadd float %199, %xf1.1.0.0.0 ; [#uses=2]
+ %201 = fmul float %xf1.0.0.2.0.0.0, %149 ; [#uses=1]
+ %202 = fmul float %xf1.0.0.2.0.1.0, %151 ; [#uses=1]
+ %203 = fadd float %201, %202 ; [#uses=1]
+ %204 = fmul float %xf1.0.0.2.0.2.0, %153 ; [#uses=1]
+ %205 = fadd float %203, %204 ; [#uses=1]
+ %206 = fadd float %205, %xf1.1.0.2.0 ; [#uses=1]
+ %207 = fmul float %xf1.0.0.1.0.0.0, %149 ; [#uses=1]
+ %208 = fmul float %xf1.0.0.1.0.1.0, %151 ; [#uses=1]
+ %209 = fadd float %207, %208 ; [#uses=1]
+ %210 = fmul float %xf1.0.0.1.0.2.0, %153 ; [#uses=1]
+ %211 = fadd float %209, %210 ; [#uses=1]
+ %212 = fadd float %211, %xf1.1.0.1.0 ; [#uses=1]
+ %213 = fmul float %xf1.0.0.0.0.0.0, %149 ; [#uses=1]
+ %214 = fmul float %xf1.0.0.0.0.1.0, %151 ; [#uses=1]
+ %215 = fadd float %213, %214 ; [#uses=1]
+ %216 = fmul float %xf1.0.0.0.0.2.0, %153 ; [#uses=1]
+ %217 = fadd float %215, %216 ; [#uses=1]
+ %218 = fadd float %217, %xf1.1.0.0.0 ; [#uses=1]
+ %219 = fmul float %180, %200 ; [#uses=1]
+ %220 = fmul float %194, %182 ; [#uses=1]
+ %221 = fadd float %219, %220 ; [#uses=1]
+ %222 = fmul float %188, 0.000000e+00 ; [#uses=1]
+ %223 = fadd float %221, %222 ; [#uses=1]
+ %224 = fmul float %179, %200 ; [#uses=1]
+ %225 = fmul float %180, %194 ; [#uses=1]
+ %226 = fadd float %224, %225 ; [#uses=1]
+ %227 = fmul float %181, %188 ; [#uses=1]
+ %228 = fadd float %226, %227 ; [#uses=1]
+ %229 = fsub float -0.000000e+00, %228 ; [#uses=1]
+ %230 = fmul float %179, %218 ; [#uses=1]
+ %231 = fmul float %180, %212 ; [#uses=1]
+ %232 = fadd float %230, %231 ; [#uses=1]
+ %233 = fmul float %181, %206 ; [#uses=1]
+ %234 = fadd float %232, %233 ; [#uses=1]
+ %235 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %235, align 8
+ %236 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %236, align 4
+ %237 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %237, align 8
+ %238 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %238, align 4
+ %239 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints1, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %239, align 4
+ %240 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints1, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %240, align 4
+ %241 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints1, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %241, align 4
+ %242 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints1, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %242, align 4
+ %243 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %243, align 8
+ %244 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %244, align 4
+ %245 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %245, align 8
+ %246 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %246, align 4
+ %247 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints2, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %247, align 4
+ %248 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints2, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %248, align 4
+ %249 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints2, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %249, align 4
+ %250 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints2, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %250, align 4
+ %251 = fsub float -0.000000e+00, %181 ; [#uses=1]
+ %252 = fsub float -0.000000e+00, %180 ; [#uses=2]
+ %253 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints1, i32 0, i32 0 ; [#uses=2]
+ %254 = getelementptr inbounds [2 x %struct.ClipVertex]* %incidentEdge, i32 0, i32 0 ; [#uses=1]
+ %255 = call fastcc i32 @_ZL17ClipSegmentToLineP10ClipVertexS0_RK9btVector3f(%struct.ClipVertex* %253, %struct.ClipVertex* %254, float %182, float %252, float %251, float %229) nounwind ; [#uses=1]
+ %256 = icmp slt i32 %255, 2 ; [#uses=1]
+ br i1 %256, label %return, label %bb18
+
+bb18: ; preds = %bb17
+ %257 = getelementptr inbounds [2 x %struct.ClipVertex]* %clipPoints2, i32 0, i32 0 ; [#uses=1]
+ %258 = call fastcc i32 @_ZL17ClipSegmentToLineP10ClipVertexS0_RK9btVector3f(%struct.ClipVertex* %257, %struct.ClipVertex* %253, float %179, float %180, float %181, float %234) nounwind ; [#uses=1]
+ %259 = icmp slt i32 %258, 2 ; [#uses=1]
+ br i1 %259, label %return, label %bb19
+
+bb19: ; preds = %bb18
+ %260 = icmp eq i8 %flip.0, 0 ; [#uses=3]
+ %manifoldNormal.0.0.0.ph = select i1 %260, float %180, float %252 ; [#uses=1]
+ %manifoldNormal.0.1.0.ph = select i1 %260, float %182, float %179 ; [#uses=1]
+ %manifoldNormal.0.2.0.ph = select i1 %260, float 0.000000e+00, float -0.000000e+00 ; [#uses=1]
+ %261 = load i32* @b2_maxManifoldPoints, align 4 ; [#uses=1]
+ %262 = icmp sgt i32 %261, 0 ; [#uses=1]
+ br i1 %262, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb19
+ %263 = getelementptr inbounds %struct.btManifoldResult* %manifold, i32 0, i32 0, i32 0 ; [#uses=1]
+ %264 = fsub float -0.000000e+00, %manifoldNormal.0.2.0.ph ; [#uses=1]
+ %265 = fsub float -0.000000e+00, %manifoldNormal.0.1.0.ph ; [#uses=1]
+ %266 = fsub float -0.000000e+00, %manifoldNormal.0.0.0.ph ; [#uses=1]
+ %267 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %268 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %269 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb24
+
+bb24: ; preds = %bb27, %bb.nph
+ %i.0117 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb27 ] ; [#uses=5]
+ %scevgep125 = getelementptr [2 x %struct.ClipVertex]* %clipPoints2, i32 0, i32 %i.0117, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep126 = getelementptr [2 x %struct.ClipVertex]* %clipPoints2, i32 0, i32 %i.0117, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep127 = getelementptr [2 x %struct.ClipVertex]* %clipPoints2, i32 0, i32 %i.0117, i32 0, i32 0, i32 2 ; [#uses=1]
+ %tmp = add i32 %i.0117, 1 ; [#uses=2]
+ %271 = load float* %scevgep125, align 4 ; [#uses=1]
+ %272 = fmul float %180, %271 ; [#uses=1]
+ %273 = load float* %scevgep126, align 4 ; [#uses=1]
+ %274 = fmul float %273, %182 ; [#uses=1]
+ %275 = fadd float %272, %274 ; [#uses=1]
+ %276 = load float* %scevgep127, align 4 ; [#uses=1]
+ %277 = fmul float %276, 0.000000e+00 ; [#uses=1]
+ %278 = fadd float %275, %277 ; [#uses=1]
+ %279 = fsub float %278, %223 ; [#uses=2]
+ %280 = fcmp ugt float %279, 0.000000e+00 ; [#uses=1]
+ br i1 %280, label %bb27, label %bb26
+
+bb26: ; preds = %bb24
+ %scevgep124 = getelementptr [2 x %struct.ClipVertex]* %clipPoints2, i32 0, i32 %i.0117, i32 0 ; [#uses=1]
+ %281 = load i32 (...)*** %263, align 4 ; [#uses=1]
+ %282 = getelementptr inbounds i32 (...)** %281, i32 4 ; [#uses=1]
+ %283 = load i32 (...)** %282, align 4 ; [#uses=1]
+ store float %266, float* %267, align 8
+ store float %265, float* %268, align 4
+ store float %264, float* %269, align 8
+ store float 0.000000e+00, float* %270, align 4
+ %284 = bitcast i32 (...)* %283 to void (%struct.btManifoldResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %284(%struct.btManifoldResult* %manifold, %struct.btQuadWord* %0, %struct.btQuadWord* %scevgep124, float %279)
+ br label %bb27
+
+bb27: ; preds = %bb26, %bb24
+ %285 = load i32* @b2_maxManifoldPoints, align 4 ; [#uses=1]
+ %286 = icmp slt i32 %tmp, %285 ; [#uses=1]
+ br i1 %286, label %bb24, label %return
+
+return: ; preds = %bb27, %bb19, %bb18, %bb17, %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN30btBox2dBox2dCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btBox2dBox2dCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 9 ; [#uses=1]
+ %4 = load %struct.btCollisionShape** %3, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btCollisionShape* %4 to %struct.btBox2dShape* ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 9 ; [#uses=1]
+ %7 = load %struct.btCollisionShape** %6, align 4 ; [#uses=1]
+ %8 = bitcast %struct.btCollisionShape* %7 to %struct.btBox2dShape* ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 1 ; [#uses=2]
+ store %struct.btPersistentManifold* %1, %struct.btPersistentManifold** %9, align 4
+ %10 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_Z17b2CollidePolygonsP16btManifoldResultPK12btBox2dShapeRK11btTransformS3_S6_(%struct.btManifoldResult* %resultOut, %struct.btBox2dShape* %5, %struct.btTransform* %11, %struct.btBox2dShape* %8, %struct.btTransform* %10)
+ %12 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %13 = load i8* %12, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb1
+
+bb1: ; preds = %bb
+ %14 = load %struct.btPersistentManifold** %9, align 4 ; [#uses=4]
+ %15 = getelementptr inbounds %struct.btPersistentManifold* %14, i32 0, i32 4 ; [#uses=1]
+ %16 = load i32* %15, align 4 ; [#uses=1]
+ %17 = icmp eq i32 %16, 0 ; [#uses=1]
+ br i1 %17, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb.i
+
+bb.i: ; preds = %bb1
+ %18 = getelementptr inbounds %struct.btPersistentManifold* %14, i32 0, i32 2 ; [#uses=1]
+ %19 = load i8** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 4 ; [#uses=1]
+ %21 = load %struct.btCollisionObject** %20, align 4 ; [#uses=1]
+ %22 = bitcast %struct.btCollisionObject* %21 to i8* ; [#uses=1]
+ %23 = icmp eq i8* %19, %22 ; [#uses=1]
+ br i1 %23, label %bb3.i, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %24 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ tail call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %14, %struct.btTransform* %25, %struct.btTransform* %24)
+ ret void
+
+bb3.i: ; preds = %bb.i
+ %26 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ tail call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %14, %struct.btTransform* %27, %struct.btTransform* %26)
+ ret void
+
+_ZN16btManifoldResult20refreshContactPointsEv.exit: ; preds = %bb1, %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN30btBox2dBox2dCollisionAlgorithmD0Ev(%struct.btBox2dBox2dCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV30btBox2dBox2dCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ %14 = bitcast %struct.btBox2dBox2dCollisionAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %14) nounwind
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %15 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %15)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN30btBox2dBox2dCollisionAlgorithmD1Ev(%struct.btBox2dBox2dCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV30btBox2dBox2dCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN30btBox2dBox2dCollisionAlgorithmD2Ev(%struct.btBox2dBox2dCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV30btBox2dBox2dCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN30btBox2dBox2dCollisionAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_(%struct.btBox2dBox2dCollisionAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %obj0, %struct.btCollisionObject* %obj1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %obj0, %struct.btCollisionObject* %obj1)
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV30btBox2dBox2dCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=2]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %3, align 4
+ %4 = icmp eq %struct.btPersistentManifold* %mf, null ; [#uses=1]
+ br i1 %4, label %bb, label %bb5
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %6 = load %struct.btActionInterface** %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btActionInterface* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 6 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = bitcast i32 (...)* %10 to i8 (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*)* ; [#uses=1]
+ %12 = invoke zeroext i8 %11(%struct.btActionInterface* %6, %struct.btCollisionObject* %obj0, %struct.btCollisionObject* %obj1)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb
+ %toBoolnot = icmp eq i8 %12, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb5, label %bb8
+
+bb5: ; preds = %invcont, %entry
+ ret void
+
+bb8: ; preds = %invcont
+ %13 = load %struct.btActionInterface** %5, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btActionInterface* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32 (...)** %15, i32 3 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = bitcast i32 (...)* %17 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %19 = bitcast %struct.btCollisionObject* %obj0 to i8* ; [#uses=1]
+ %20 = bitcast %struct.btCollisionObject* %obj1 to i8* ; [#uses=1]
+ %21 = invoke %struct.btPersistentManifold* %18(%struct.btActionInterface* %13, i8* %19, i8* %20)
+ to label %invcont9 unwind label %lpad ; [#uses=1]
+
+invcont9: ; preds = %bb8
+ store %struct.btPersistentManifold* %21, %struct.btPersistentManifold** %3, align 4
+ store i8 1, i8* %2, align 4
+ ret void
+
+invcont11: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %bb8, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %0)
+ to label %invcont11 unwind label %lpad16
+
+lpad16: ; preds = %lpad
+ %eh_ptr17 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select19 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr17, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN16btBoxBoxDetectorC2EP10btBoxShapeS1_(%struct.btBoxBoxDetector* nocapture %this, %struct.btBoxShape* %box1, %struct.btBoxShape* %box2) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxBoxDetector* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV16btBoxBoxDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBoxBoxDetector* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBoxShape* %box1, %struct.btBoxShape** %1, align 4
+ %2 = getelementptr inbounds %struct.btBoxBoxDetector* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btBoxShape* %box2, %struct.btBoxShape** %2, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN36btDiscreteCollisionDetectorInterfaceD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV36btDiscreteCollisionDetectorInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN36btDiscreteCollisionDetectorInterfaceD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV36btDiscreteCollisionDetectorInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btBoxBoxDetectorD1Ev(%struct.btBoxBoxDetector* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxBoxDetector* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV16btBoxBoxDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btBoxBoxDetectorD0Ev(%struct.btBoxBoxDetector* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxBoxDetector* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV16btBoxBoxDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btBoxBoxDetector* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN16btBoxBoxDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.btBoxBoxDetector* nocapture %this, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* nocapture %input, %struct.btActionInterface* %output, %struct.btActionInterface* nocapture %unnamed_arg, i8 zeroext %unnamed_arg2) align 2 {
+bb4:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %R1 = alloca [12 x float], align 4 ; [#uses=10]
+ %R2 = alloca [12 x float], align 4 ; [#uses=10]
+ %normal = alloca %struct.btQuadWord, align 8 ; [#uses=1]
+ %depth = alloca float, align 4 ; [#uses=1]
+ %return_code = alloca i32, align 4 ; [#uses=1]
+ %scevgep = getelementptr [12 x float]* %R1, i32 0, i32 0 ; [#uses=1]
+ %scevgep14 = getelementptr [12 x float]* %R2, i32 0, i32 0 ; [#uses=1]
+ %scevgep16 = getelementptr [12 x float]* %R1, i32 0, i32 1 ; [#uses=1]
+ %scevgep17 = getelementptr [12 x float]* %R2, i32 0, i32 1 ; [#uses=1]
+ %scevgep19 = getelementptr [12 x float]* %R1, i32 0, i32 2 ; [#uses=1]
+ %scevgep20 = getelementptr [12 x float]* %R2, i32 0, i32 2 ; [#uses=1]
+ %scevgep2122 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep2324 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep25 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep26 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep27 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep28 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %2 = load float* %scevgep2122, align 4 ; [#uses=1]
+ store float %2, float* %scevgep, align 4
+ %3 = load float* %scevgep2324, align 4 ; [#uses=1]
+ store float %3, float* %scevgep14, align 4
+ %4 = load float* %scevgep25, align 4 ; [#uses=1]
+ store float %4, float* %scevgep16, align 4
+ %5 = load float* %scevgep26, align 4 ; [#uses=1]
+ store float %5, float* %scevgep17, align 4
+ %6 = load float* %scevgep27, align 4 ; [#uses=1]
+ store float %6, float* %scevgep19, align 4
+ %7 = load float* %scevgep28, align 4 ; [#uses=1]
+ store float %7, float* %scevgep20, align 4
+ %scevgep.1 = getelementptr [12 x float]* %R1, i32 0, i32 4 ; [#uses=1]
+ %scevgep14.1 = getelementptr [12 x float]* %R2, i32 0, i32 4 ; [#uses=1]
+ %scevgep16.1 = getelementptr [12 x float]* %R1, i32 0, i32 5 ; [#uses=1]
+ %scevgep17.1 = getelementptr [12 x float]* %R2, i32 0, i32 5 ; [#uses=1]
+ %scevgep19.1 = getelementptr [12 x float]* %R1, i32 0, i32 6 ; [#uses=1]
+ %scevgep20.1 = getelementptr [12 x float]* %R2, i32 0, i32 6 ; [#uses=1]
+ %scevgep2122.1 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep2324.1 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep25.1 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep26.1 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep27.1 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep28.1 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %scevgep2122.1, align 4 ; [#uses=1]
+ store float %8, float* %scevgep.1, align 4
+ %9 = load float* %scevgep2324.1, align 4 ; [#uses=1]
+ store float %9, float* %scevgep14.1, align 4
+ %10 = load float* %scevgep25.1, align 4 ; [#uses=1]
+ store float %10, float* %scevgep16.1, align 4
+ %11 = load float* %scevgep26.1, align 4 ; [#uses=1]
+ store float %11, float* %scevgep17.1, align 4
+ %12 = load float* %scevgep27.1, align 4 ; [#uses=1]
+ store float %12, float* %scevgep19.1, align 4
+ %13 = load float* %scevgep28.1, align 4 ; [#uses=1]
+ store float %13, float* %scevgep20.1, align 4
+ %scevgep.2 = getelementptr [12 x float]* %R1, i32 0, i32 8 ; [#uses=1]
+ %scevgep14.2 = getelementptr [12 x float]* %R2, i32 0, i32 8 ; [#uses=1]
+ %scevgep16.2 = getelementptr [12 x float]* %R1, i32 0, i32 9 ; [#uses=1]
+ %scevgep17.2 = getelementptr [12 x float]* %R2, i32 0, i32 9 ; [#uses=1]
+ %scevgep19.2 = getelementptr [12 x float]* %R1, i32 0, i32 10 ; [#uses=1]
+ %scevgep20.2 = getelementptr [12 x float]* %R2, i32 0, i32 10 ; [#uses=1]
+ %scevgep2122.2 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep2324.2 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep25.2 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep26.2 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep27.2 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep28.2 = getelementptr %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %scevgep2122.2, align 4 ; [#uses=1]
+ store float %14, float* %scevgep.2, align 4
+ %15 = load float* %scevgep2324.2, align 4 ; [#uses=1]
+ store float %15, float* %scevgep14.2, align 4
+ %16 = load float* %scevgep25.2, align 4 ; [#uses=1]
+ store float %16, float* %scevgep16.2, align 4
+ %17 = load float* %scevgep26.2, align 4 ; [#uses=1]
+ store float %17, float* %scevgep17.2, align 4
+ %18 = load float* %scevgep27.2, align 4 ; [#uses=1]
+ store float %18, float* %scevgep19.2, align 4
+ %19 = load float* %scevgep28.2, align 4 ; [#uses=1]
+ store float %19, float* %scevgep20.2, align 4
+ %20 = getelementptr inbounds %struct.btBoxBoxDetector* %this, i32 0, i32 2 ; [#uses=1]
+ %21 = load %struct.btBoxShape** %20, align 4 ; [#uses=5]
+ %22 = getelementptr inbounds %struct.btBoxShape* %21, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btBoxShape* %21, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btBoxShape* %21, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btBoxShape* %21, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %29 = load i32 (...)*** %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds i32 (...)** %29, i32 11 ; [#uses=1]
+ %31 = load i32 (...)** %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btBoxShape* %21, i32 0, i32 0, i32 0 ; [#uses=3]
+ %33 = bitcast i32 (...)* %31 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %34 = call float %33(%struct.btConvexInternalShape* %32) ; [#uses=1]
+ %35 = load i32 (...)*** %28, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds i32 (...)** %35, i32 11 ; [#uses=1]
+ %37 = load i32 (...)** %36, align 4 ; [#uses=1]
+ %38 = bitcast i32 (...)* %37 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %39 = call float %38(%struct.btConvexInternalShape* %32) ; [#uses=1]
+ %40 = load i32 (...)*** %28, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds i32 (...)** %40, i32 11 ; [#uses=1]
+ %42 = load i32 (...)** %41, align 4 ; [#uses=1]
+ %43 = bitcast i32 (...)* %42 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %44 = call float %43(%struct.btConvexInternalShape* %32) ; [#uses=1]
+ %45 = fadd float %23, %44 ; [#uses=1]
+ %46 = fadd float %25, %39 ; [#uses=1]
+ %47 = fadd float %27, %34 ; [#uses=1]
+ %48 = fmul float %47, 2.000000e+00 ; [#uses=1]
+ %49 = fmul float %46, 2.000000e+00 ; [#uses=1]
+ %50 = fmul float %45, 2.000000e+00 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %50, float* %51, align 8
+ %52 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %49, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %48, float* %53, align 8
+ %54 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %54, align 4
+ %55 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btBoxBoxDetector* %this, i32 0, i32 1 ; [#uses=1]
+ %57 = load %struct.btBoxShape** %56, align 4 ; [#uses=5]
+ %58 = getelementptr inbounds %struct.btBoxShape* %57, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btBoxShape* %57, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btBoxShape* %57, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btBoxShape* %57, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %65 = load i32 (...)*** %64, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds i32 (...)** %65, i32 11 ; [#uses=1]
+ %67 = load i32 (...)** %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btBoxShape* %57, i32 0, i32 0, i32 0 ; [#uses=3]
+ %69 = bitcast i32 (...)* %67 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %70 = call float %69(%struct.btConvexInternalShape* %68) ; [#uses=1]
+ %71 = load i32 (...)*** %64, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds i32 (...)** %71, i32 11 ; [#uses=1]
+ %73 = load i32 (...)** %72, align 4 ; [#uses=1]
+ %74 = bitcast i32 (...)* %73 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %75 = call float %74(%struct.btConvexInternalShape* %68) ; [#uses=1]
+ %76 = load i32 (...)*** %64, align 4 ; [#uses=1]
+ %77 = getelementptr inbounds i32 (...)** %76, i32 11 ; [#uses=1]
+ %78 = load i32 (...)** %77, align 4 ; [#uses=1]
+ %79 = bitcast i32 (...)* %78 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %80 = call float %79(%struct.btConvexInternalShape* %68) ; [#uses=1]
+ %81 = fadd float %59, %80 ; [#uses=1]
+ %82 = fadd float %61, %75 ; [#uses=1]
+ %83 = fadd float %63, %70 ; [#uses=1]
+ %84 = fmul float %83, 2.000000e+00 ; [#uses=1]
+ %85 = fmul float %82, 2.000000e+00 ; [#uses=1]
+ %86 = fmul float %81, 2.000000e+00 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %86, float* %87, align 8
+ %88 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %85, float* %88, align 4
+ %89 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %84, float* %89, align 8
+ %90 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %90, align 4
+ %91 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1 ; [#uses=1]
+ %92 = getelementptr inbounds [12 x float]* %R1, i32 0, i32 0 ; [#uses=1]
+ %93 = getelementptr inbounds [12 x float]* %R2, i32 0, i32 0 ; [#uses=1]
+ %94 = call i32 @_Z8dBoxBox2RK9btVector3PKfS1_S1_S3_S1_RS_PfPiiP12dContactGeomiRN36btDiscreteCollisionDetectorInterface6ResultE(%struct.btQuadWord* %91, float* %92, %struct.btQuadWord* %0, %struct.btQuadWord* %55, float* %93, %struct.btQuadWord* %1, %struct.btQuadWord* %normal, float* %depth, i32* %return_code, i32 4, %struct.dContactGeom* null, i32 0, %struct.btActionInterface* %output) ; [#uses=0]
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btBoxBoxDetectorC1EP10btBoxShapeS1_(%struct.btBoxBoxDetector* nocapture %this, %struct.btBoxShape* %box1, %struct.btBoxShape* %box2) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxBoxDetector* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV16btBoxBoxDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBoxBoxDetector* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btBoxShape* %box1, %struct.btBoxShape** %1, align 4
+ %2 = getelementptr inbounds %struct.btBoxBoxDetector* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btBoxShape* %box2, %struct.btBoxShape** %2, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_Z20dLineClosestApproachRK9btVector3S1_S1_S1_PfS2_(%struct.btQuadWord* nocapture %pa, %struct.btQuadWord* nocapture %ua, %struct.btQuadWord* nocapture %pb, %struct.btQuadWord* nocapture %ub, float* nocapture %alpha, float* nocapture %beta) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fsub float %1, %3 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fsub float %6, %8 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fsub float %11, %13 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btQuadWord* %ub, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %ua, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.val13 = load float* %16, align 4 ; [#uses=2]
+ %.idx14 = getelementptr %struct.btQuadWord* %ua, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.idx14.val = load float* %.idx14, align 4 ; [#uses=2]
+ %.idx15 = getelementptr %struct.btQuadWord* %ua, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.idx15.val = load float* %.idx15, align 4 ; [#uses=2]
+ %.val16 = load float* %15, align 4 ; [#uses=2]
+ %.idx17 = getelementptr %struct.btQuadWord* %ub, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.idx17.val = load float* %.idx17, align 4 ; [#uses=2]
+ %.idx18 = getelementptr %struct.btQuadWord* %ub, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.idx18.val = load float* %.idx18, align 4 ; [#uses=2]
+ %17 = fmul float %.val13, %.val16 ; [#uses=1]
+ %18 = fmul float %.idx14.val, %.idx17.val ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=1]
+ %20 = fmul float %.idx15.val, %.idx18.val ; [#uses=1]
+ %21 = fadd float %19, %20 ; [#uses=4]
+ %22 = fmul float %.val13, %4 ; [#uses=1]
+ %23 = fmul float %.idx14.val, %9 ; [#uses=1]
+ %24 = fadd float %22, %23 ; [#uses=1]
+ %25 = fmul float %.idx15.val, %14 ; [#uses=1]
+ %26 = fadd float %24, %25 ; [#uses=2]
+ %27 = fmul float %.val16, %4 ; [#uses=1]
+ %28 = fmul float %.idx17.val, %9 ; [#uses=1]
+ %29 = fadd float %27, %28 ; [#uses=1]
+ %30 = fmul float %.idx18.val, %14 ; [#uses=1]
+ %31 = fadd float %29, %30 ; [#uses=2]
+ %32 = fmul float %21, %21 ; [#uses=1]
+ %33 = fsub float 1.000000e+00, %32 ; [#uses=2]
+ %34 = fcmp ugt float %33, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %34, label %bb1, label %bb
+
+bb: ; preds = %entry
+ store float 0.000000e+00, float* %alpha, align 4
+ store float 0.000000e+00, float* %beta, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %35 = fsub float -0.000000e+00, %31 ; [#uses=1]
+ %36 = fdiv float 1.000000e+00, %33 ; [#uses=2]
+ %37 = fmul float %21, %35 ; [#uses=1]
+ %38 = fadd float %37, %26 ; [#uses=1]
+ %39 = fmul float %38, %36 ; [#uses=1]
+ store float %39, float* %alpha, align 4
+ %40 = fmul float %21, %26 ; [#uses=1]
+ %41 = fsub float %40, %31 ; [#uses=1]
+ %42 = fmul float %41, %36 ; [#uses=1]
+ store float %42, float* %beta, align 4
+ ret void
+}
+
+; [#uses=11]
+declare float @atan2f(float, float) nounwind readonly
+
+; [#uses=1]
+define void @_Z11cullPoints2iPfiiPi(i32 %n, float* %p, i32 %m, i32 %i0, i32* nocapture %iret) nounwind {
+entry:
+ %A = alloca [8 x float], align 4 ; [#uses=3]
+ %avail = alloca [8 x i32], align 4 ; [#uses=4]
+ switch i32 %n, label %bb5.preheader [
+ i32 1, label %bb
+ i32 2, label %bb2
+ ]
+
+bb5.preheader: ; preds = %entry
+ %0 = add nsw i32 %n, -1 ; [#uses=2]
+ %1 = icmp sgt i32 %0, 0 ; [#uses=1]
+ br i1 %1, label %bb4, label %bb6
+
+bb: ; preds = %entry
+ %2 = load float* %p, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds float* %p, i32 1 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ br label %bb.nph39
+
+bb2: ; preds = %entry
+ %5 = load float* %p, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds float* %p, i32 2 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = fadd float %5, %7 ; [#uses=1]
+ %9 = fmul float %8, 5.000000e-01 ; [#uses=1]
+ %10 = getelementptr inbounds float* %p, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds float* %p, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fadd float %11, %13 ; [#uses=1]
+ %15 = fmul float %14, 5.000000e-01 ; [#uses=1]
+ br label %bb.nph39
+
+bb4: ; preds = %bb4, %bb5.preheader
+ %cy.143 = phi float [ %29, %bb4 ], [ 0.000000e+00, %bb5.preheader ] ; [#uses=1]
+ %cx.142 = phi float [ %26, %bb4 ], [ 0.000000e+00, %bb5.preheader ] ; [#uses=1]
+ %i.041 = phi i32 [ %30, %bb4 ], [ 0, %bb5.preheader ] ; [#uses=2]
+ %a.040 = phi float [ %23, %bb4 ], [ 0.000000e+00, %bb5.preheader ] ; [#uses=1]
+ %tmp62 = shl i32 %i.041, 1 ; [#uses=4]
+ %tmp63 = add i32 %tmp62, 3 ; [#uses=1]
+ %scevgep64 = getelementptr float* %p, i32 %tmp63 ; [#uses=1]
+ %tmp65 = add i32 %tmp62, 2 ; [#uses=1]
+ %scevgep66 = getelementptr float* %p, i32 %tmp65 ; [#uses=1]
+ %scevgep67 = getelementptr float* %p, i32 %tmp62 ; [#uses=1]
+ %tmp6871 = or i32 %tmp62, 1 ; [#uses=1]
+ %scevgep69 = getelementptr float* %p, i32 %tmp6871 ; [#uses=1]
+ %16 = load float* %scevgep67, align 4 ; [#uses=2]
+ %17 = load float* %scevgep64, align 4 ; [#uses=2]
+ %18 = fmul float %16, %17 ; [#uses=1]
+ %19 = load float* %scevgep66, align 4 ; [#uses=2]
+ %20 = load float* %scevgep69, align 4 ; [#uses=2]
+ %21 = fmul float %19, %20 ; [#uses=1]
+ %22 = fsub float %18, %21 ; [#uses=3]
+ %23 = fadd float %a.040, %22 ; [#uses=2]
+ %24 = fadd float %16, %19 ; [#uses=1]
+ %25 = fmul float %24, %22 ; [#uses=1]
+ %26 = fadd float %25, %cx.142 ; [#uses=2]
+ %27 = fadd float %20, %17 ; [#uses=1]
+ %28 = fmul float %27, %22 ; [#uses=1]
+ %29 = fadd float %28, %cy.143 ; [#uses=2]
+ %30 = add nsw i32 %i.041, 1 ; [#uses=2]
+ %exitcond61 = icmp eq i32 %30, %0 ; [#uses=1]
+ br i1 %exitcond61, label %bb6, label %bb4
+
+bb6: ; preds = %bb4, %bb5.preheader
+ %cy.1.lcssa = phi float [ 0.000000e+00, %bb5.preheader ], [ %29, %bb4 ] ; [#uses=1]
+ %cx.1.lcssa = phi float [ 0.000000e+00, %bb5.preheader ], [ %26, %bb4 ] ; [#uses=1]
+ %a.0.lcssa = phi float [ 0.000000e+00, %bb5.preheader ], [ %23, %bb4 ] ; [#uses=1]
+ %31 = shl i32 %n, 1 ; [#uses=2]
+ %32 = add nsw i32 %31, -2 ; [#uses=1]
+ %33 = getelementptr inbounds float* %p, i32 %32 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ %35 = getelementptr inbounds float* %p, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = fmul float %34, %36 ; [#uses=1]
+ %38 = load float* %p, align 4 ; [#uses=2]
+ %39 = add nsw i32 %31, -1 ; [#uses=1]
+ %40 = getelementptr inbounds float* %p, i32 %39 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=2]
+ %42 = fmul float %38, %41 ; [#uses=1]
+ %43 = fsub float %37, %42 ; [#uses=3]
+ %44 = fadd float %a.0.lcssa, %43 ; [#uses=2]
+ %45 = call float @fabsf(float %44) nounwind readnone ; [#uses=1]
+ %46 = fcmp ogt float %45, 0x3E80000000000000 ; [#uses=1]
+ br i1 %46, label %bb7, label %bb10
+
+bb7: ; preds = %bb6
+ %47 = fmul float %44, 3.000000e+00 ; [#uses=1]
+ %48 = fdiv float 1.000000e+00, %47 ; [#uses=1]
+ br label %bb10
+
+bb10: ; preds = %bb7, %bb6
+ %a.1 = phi float [ %48, %bb7 ], [ 0x43ABC16D60000000, %bb6 ] ; [#uses=2]
+ %49 = fadd float %34, %38 ; [#uses=1]
+ %50 = fmul float %49, %43 ; [#uses=1]
+ %51 = fadd float %50, %cx.1.lcssa ; [#uses=1]
+ %52 = fmul float %51, %a.1 ; [#uses=1]
+ %53 = fadd float %41, %36 ; [#uses=1]
+ %54 = fmul float %53, %43 ; [#uses=1]
+ %55 = fadd float %54, %cy.1.lcssa ; [#uses=1]
+ %56 = fmul float %55, %a.1 ; [#uses=1]
+ %57 = icmp sgt i32 %n, 0 ; [#uses=1]
+ br i1 %57, label %bb.nph39, label %bb16
+
+bb.nph39: ; preds = %bb10, %bb2, %bb
+ %cy.073 = phi float [ %56, %bb10 ], [ %15, %bb2 ], [ %4, %bb ] ; [#uses=1]
+ %cx.072 = phi float [ %52, %bb10 ], [ %9, %bb2 ], [ %2, %bb ] ; [#uses=1]
+ br label %bb11
+
+bb11: ; preds = %bb11, %bb.nph39
+ %i.138 = phi i32 [ 0, %bb.nph39 ], [ %63, %bb11 ] ; [#uses=3]
+ %scevgep54 = getelementptr [8 x float]* %A, i32 0, i32 %i.138 ; [#uses=1]
+ %tmp55 = shl i32 %i.138, 1 ; [#uses=2]
+ %scevgep56 = getelementptr float* %p, i32 %tmp55 ; [#uses=1]
+ %tmp5770 = or i32 %tmp55, 1 ; [#uses=1]
+ %scevgep58 = getelementptr float* %p, i32 %tmp5770 ; [#uses=1]
+ %58 = load float* %scevgep56, align 4 ; [#uses=1]
+ %59 = fsub float %58, %cx.072 ; [#uses=1]
+ %60 = load float* %scevgep58, align 4 ; [#uses=1]
+ %61 = fsub float %60, %cy.073 ; [#uses=1]
+ %62 = call float @atan2f(float %61, float %59) nounwind readonly ; [#uses=1]
+ store float %62, float* %scevgep54, align 4
+ %63 = add nsw i32 %i.138, 1 ; [#uses=2]
+ %exitcond53 = icmp eq i32 %63, %n ; [#uses=1]
+ br i1 %exitcond53, label %bb14, label %bb11
+
+bb14: ; preds = %bb14, %bb11
+ %i.236 = phi i32 [ %64, %bb14 ], [ 0, %bb11 ] ; [#uses=2]
+ %scevgep52 = getelementptr [8 x i32]* %avail, i32 0, i32 %i.236 ; [#uses=1]
+ store i32 1, i32* %scevgep52, align 4
+ %64 = add nsw i32 %i.236, 1 ; [#uses=2]
+ %exitcond51 = icmp eq i32 %64, %n ; [#uses=1]
+ br i1 %exitcond51, label %bb16, label %bb14
+
+bb16: ; preds = %bb14, %bb10
+ %65 = phi i1 [ true, %bb14 ], [ false, %bb10 ] ; [#uses=1]
+ %66 = getelementptr inbounds [8 x i32]* %avail, i32 0, i32 %i0 ; [#uses=1]
+ store i32 0, i32* %66, align 4
+ store i32 %i0, i32* %iret, align 4
+ %67 = icmp sgt i32 %m, 1 ; [#uses=1]
+ br i1 %67, label %bb.nph35, label %return
+
+bb.nph35: ; preds = %bb16
+ %68 = sitofp i32 %m to float ; [#uses=1]
+ %69 = fdiv float 0x401921FB60000000, %68 ; [#uses=1]
+ %70 = getelementptr inbounds [8 x float]* %A, i32 0, i32 %i0 ; [#uses=1]
+ %tmp = add i32 %m, -1 ; [#uses=1]
+ br label %bb17
+
+bb17: ; preds = %bb27, %bb.nph35
+ %indvar = phi i32 [ 0, %bb.nph35 ], [ %j.033, %bb27 ] ; [#uses=1]
+ %j.033 = add i32 %indvar, 1 ; [#uses=4]
+ %iret_addr.034 = getelementptr i32* %iret, i32 %j.033 ; [#uses=2]
+ %71 = sitofp i32 %j.033 to float ; [#uses=1]
+ %72 = fmul float %71, %69 ; [#uses=1]
+ %73 = load float* %70, align 4 ; [#uses=1]
+ %74 = fadd float %72, %73 ; [#uses=3]
+ %75 = fcmp ogt float %74, 0x400921FB60000000 ; [#uses=1]
+ br i1 %75, label %bb18, label %bb19
+
+bb18: ; preds = %bb17
+ %76 = fadd float %74, 0xC01921FB60000000 ; [#uses=1]
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb17
+ %a.2 = phi float [ %76, %bb18 ], [ %74, %bb17 ] ; [#uses=1]
+ store i32 %i0, i32* %iret_addr.034, align 4
+ br i1 %65, label %bb20, label %bb27
+
+bb20: ; preds = %bb25, %bb19
+ %77 = phi i32 [ %87, %bb25 ], [ %i0, %bb19 ] ; [#uses=2]
+ %maxdiff.131 = phi float [ %maxdiff.0, %bb25 ], [ 1.000000e+09, %bb19 ] ; [#uses=3]
+ %78 = phi i32 [ %88, %bb25 ], [ 0, %bb19 ] ; [#uses=5]
+ %scevgep = getelementptr [8 x i32]* %avail, i32 0, i32 %78 ; [#uses=1]
+ %79 = load i32* %scevgep, align 4 ; [#uses=1]
+ %80 = icmp eq i32 %79, 0 ; [#uses=1]
+ br i1 %80, label %bb25, label %bb21
+
+bb21: ; preds = %bb20
+ %scevgep47 = getelementptr [8 x float]* %A, i32 0, i32 %78 ; [#uses=1]
+ %81 = load float* %scevgep47, align 4 ; [#uses=1]
+ %82 = fsub float %81, %a.2 ; [#uses=1]
+ %83 = call float @fabsf(float %82) nounwind readnone ; [#uses=3]
+ %84 = fcmp ogt float %83, 0x400921FB60000000 ; [#uses=1]
+ br i1 %84, label %bb22, label %bb23
+
+bb22: ; preds = %bb21
+ %85 = fsub float 0x401921FB60000000, %83 ; [#uses=1]
+ br label %bb23
+
+bb23: ; preds = %bb22, %bb21
+ %diff.0 = phi float [ %85, %bb22 ], [ %83, %bb21 ] ; [#uses=2]
+ %86 = fcmp olt float %diff.0, %maxdiff.131 ; [#uses=1]
+ br i1 %86, label %bb24, label %bb25
+
+bb24: ; preds = %bb23
+ store i32 %78, i32* %iret_addr.034, align 4
+ br label %bb25
+
+bb25: ; preds = %bb24, %bb23, %bb20
+ %87 = phi i32 [ %78, %bb24 ], [ %77, %bb23 ], [ %77, %bb20 ] ; [#uses=2]
+ %maxdiff.0 = phi float [ %diff.0, %bb24 ], [ %maxdiff.131, %bb23 ], [ %maxdiff.131, %bb20 ] ; [#uses=1]
+ %88 = add nsw i32 %78, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %88, %n ; [#uses=1]
+ br i1 %exitcond, label %bb27, label %bb20
+
+bb27: ; preds = %bb25, %bb19
+ %89 = phi i32 [ %i0, %bb19 ], [ %87, %bb25 ] ; [#uses=1]
+ %90 = getelementptr inbounds [8 x i32]* %avail, i32 0, i32 %89 ; [#uses=1]
+ store i32 0, i32* %90, align 4
+ %exitcond48 = icmp eq i32 %j.033, %tmp ; [#uses=1]
+ br i1 %exitcond48, label %return, label %bb17
+
+return: ; preds = %bb27, %bb16
+ ret void
+}
+
+; [#uses=1]
+define i32 @_Z8dBoxBox2RK9btVector3PKfS1_S1_S3_S1_RS_PfPiiP12dContactGeomiRN36btDiscreteCollisionDetectorInterface6ResultE(%struct.btQuadWord* nocapture %p1, float* %R1, %struct.btQuadWord* nocapture %side1, %struct.btQuadWord* nocapture %p2, float* %R2, %struct.btQuadWord* nocapture %side2, %struct.btQuadWord* %normal, float* nocapture %depth, i32* nocapture %return_code, i32 %maxc, %struct.dContactGeom* nocapture %unnamed_arg, i32 %unnamed_arg2, %struct.btActionInterface* %output) {
+entry:
+ %buffer.i = alloca [16 x float], align 4 ; [#uses=1]
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %3 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %4 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %5 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %A = alloca [3 x float], align 4 ; [#uses=3]
+ %B = alloca [3 x float], align 4 ; [#uses=3]
+ %nr = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %center = alloca %struct.btQuadWord, align 8 ; [#uses=8]
+ %quad = alloca [8 x float], align 4 ; [#uses=8]
+ %rect = alloca [2 x float], align 4 ; [#uses=3]
+ %ret = alloca [16 x float], align 4 ; [#uses=6]
+ %point = alloca [24 x float], align 4 ; [#uses=15]
+ %dep = alloca [8 x float], align 4 ; [#uses=6]
+ %pa80 = alloca %struct.btQuadWord, align 8 ; [#uses=3]
+ %pb83 = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %ua = alloca %struct.btQuadWord, align 8 ; [#uses=3]
+ %ub = alloca %struct.btQuadWord, align 8 ; [#uses=3]
+ %pointInWorld185 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %pointInWorld193 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %iret = alloca [8 x i32], align 4 ; [#uses=2]
+ %posInWorld = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %6 = getelementptr inbounds %struct.btQuadWord* %p2, i32 0, i32 0, i32 2 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %p1, i32 0, i32 0, i32 2 ; [#uses=2]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = fsub float %7, %9 ; [#uses=6]
+ %11 = getelementptr inbounds %struct.btQuadWord* %p2, i32 0, i32 0, i32 1 ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %p1, i32 0, i32 0, i32 1 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fsub float %12, %14 ; [#uses=6]
+ %16 = getelementptr inbounds %struct.btQuadWord* %p2, i32 0, i32 0, i32 0 ; [#uses=2]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %p1, i32 0, i32 0, i32 0 ; [#uses=2]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fsub float %17, %19 ; [#uses=6]
+ %R1.val = load float* %R1, align 4 ; [#uses=5]
+ %R1.idx = getelementptr float* %R1, i32 4 ; [#uses=3]
+ %R1.idx.val = load float* %R1.idx, align 4 ; [#uses=4]
+ %R1.idx280 = getelementptr float* %R1, i32 8 ; [#uses=3]
+ %R1.idx280.val = load float* %R1.idx280, align 4 ; [#uses=4]
+ %21 = fmul float %R1.val, %20 ; [#uses=1]
+ %22 = fmul float %R1.idx.val, %15 ; [#uses=1]
+ %23 = fadd float %21, %22 ; [#uses=1]
+ %24 = fmul float %R1.idx280.val, %10 ; [#uses=1]
+ %25 = fadd float %23, %24 ; [#uses=8]
+ %26 = getelementptr inbounds float* %R1, i32 1 ; [#uses=3]
+ %.val274 = load float* %26, align 4 ; [#uses=5]
+ %.idx275 = getelementptr float* %R1, i32 5 ; [#uses=3]
+ %.idx275.val = load float* %.idx275, align 4 ; [#uses=4]
+ %.idx276 = getelementptr float* %R1, i32 9 ; [#uses=3]
+ %.idx276.val = load float* %.idx276, align 4 ; [#uses=4]
+ %27 = fmul float %.val274, %20 ; [#uses=1]
+ %28 = fmul float %.idx275.val, %15 ; [#uses=1]
+ %29 = fadd float %27, %28 ; [#uses=1]
+ %30 = fmul float %.idx276.val, %10 ; [#uses=1]
+ %31 = fadd float %29, %30 ; [#uses=8]
+ %32 = getelementptr inbounds float* %R1, i32 2 ; [#uses=3]
+ %.val268 = load float* %32, align 4 ; [#uses=5]
+ %.idx269 = getelementptr float* %R1, i32 6 ; [#uses=3]
+ %.idx269.val = load float* %.idx269, align 4 ; [#uses=4]
+ %.idx270 = getelementptr float* %R1, i32 10 ; [#uses=3]
+ %.idx270.val = load float* %.idx270, align 4 ; [#uses=4]
+ %33 = fmul float %.val268, %20 ; [#uses=1]
+ %34 = fmul float %.idx269.val, %15 ; [#uses=1]
+ %35 = fadd float %33, %34 ; [#uses=1]
+ %36 = fmul float %.idx270.val, %10 ; [#uses=1]
+ %37 = fadd float %35, %36 ; [#uses=8]
+ %38 = getelementptr inbounds %struct.btQuadWord* %side1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fmul float %39, 5.000000e-01 ; [#uses=12]
+ %41 = getelementptr inbounds [3 x float]* %A, i32 0, i32 0 ; [#uses=3]
+ store float %40, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btQuadWord* %side1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fmul float %43, 5.000000e-01 ; [#uses=12]
+ %45 = getelementptr inbounds [3 x float]* %A, i32 0, i32 1 ; [#uses=1]
+ store float %44, float* %45, align 4
+ %46 = getelementptr inbounds %struct.btQuadWord* %side1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = fmul float %47, 5.000000e-01 ; [#uses=12]
+ %49 = getelementptr inbounds [3 x float]* %A, i32 0, i32 2 ; [#uses=1]
+ store float %48, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btQuadWord* %side2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fmul float %51, 5.000000e-01 ; [#uses=12]
+ %53 = getelementptr inbounds [3 x float]* %B, i32 0, i32 0 ; [#uses=3]
+ store float %52, float* %53, align 4
+ %54 = getelementptr inbounds %struct.btQuadWord* %side2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fmul float %55, 5.000000e-01 ; [#uses=12]
+ %57 = getelementptr inbounds [3 x float]* %B, i32 0, i32 1 ; [#uses=1]
+ store float %56, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btQuadWord* %side2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = fmul float %59, 5.000000e-01 ; [#uses=12]
+ %61 = getelementptr inbounds [3 x float]* %B, i32 0, i32 2 ; [#uses=1]
+ store float %60, float* %61, align 4
+ %R2.val359 = load float* %R2, align 4 ; [#uses=4]
+ %R2.idx360 = getelementptr float* %R2, i32 4 ; [#uses=2]
+ %R2.idx360.val = load float* %R2.idx360, align 4 ; [#uses=4]
+ %R2.idx361 = getelementptr float* %R2, i32 8 ; [#uses=2]
+ %R2.idx361.val = load float* %R2.idx361, align 4 ; [#uses=4]
+ %62 = fmul float %R1.val, %R2.val359 ; [#uses=1]
+ %63 = fmul float %R1.idx.val, %R2.idx360.val ; [#uses=1]
+ %64 = fadd float %62, %63 ; [#uses=1]
+ %65 = fmul float %R1.idx280.val, %R2.idx361.val ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=7]
+ %67 = getelementptr inbounds float* %R2, i32 1 ; [#uses=3]
+ %.val353 = load float* %67, align 4 ; [#uses=4]
+ %.idx354 = getelementptr float* %R2, i32 5 ; [#uses=2]
+ %.idx354.val = load float* %.idx354, align 4 ; [#uses=4]
+ %.idx355 = getelementptr float* %R2, i32 9 ; [#uses=2]
+ %.idx355.val = load float* %.idx355, align 4 ; [#uses=4]
+ %68 = fmul float %R1.val, %.val353 ; [#uses=1]
+ %69 = fmul float %R1.idx.val, %.idx354.val ; [#uses=1]
+ %70 = fadd float %68, %69 ; [#uses=1]
+ %71 = fmul float %R1.idx280.val, %.idx355.val ; [#uses=1]
+ %72 = fadd float %70, %71 ; [#uses=7]
+ %73 = getelementptr inbounds float* %R2, i32 2 ; [#uses=3]
+ %.val347 = load float* %73, align 4 ; [#uses=4]
+ %.idx348 = getelementptr float* %R2, i32 6 ; [#uses=2]
+ %.idx348.val = load float* %.idx348, align 4 ; [#uses=4]
+ %.idx349 = getelementptr float* %R2, i32 10 ; [#uses=2]
+ %.idx349.val = load float* %.idx349, align 4 ; [#uses=4]
+ %74 = fmul float %R1.val, %.val347 ; [#uses=1]
+ %75 = fmul float %R1.idx.val, %.idx348.val ; [#uses=1]
+ %76 = fadd float %74, %75 ; [#uses=1]
+ %77 = fmul float %R1.idx280.val, %.idx349.val ; [#uses=1]
+ %78 = fadd float %76, %77 ; [#uses=7]
+ %79 = fmul float %.val274, %R2.val359 ; [#uses=1]
+ %80 = fmul float %.idx275.val, %R2.idx360.val ; [#uses=1]
+ %81 = fadd float %79, %80 ; [#uses=1]
+ %82 = fmul float %.idx276.val, %R2.idx361.val ; [#uses=1]
+ %83 = fadd float %81, %82 ; [#uses=7]
+ %84 = fmul float %.val274, %.val353 ; [#uses=1]
+ %85 = fmul float %.idx275.val, %.idx354.val ; [#uses=1]
+ %86 = fadd float %84, %85 ; [#uses=1]
+ %87 = fmul float %.idx276.val, %.idx355.val ; [#uses=1]
+ %88 = fadd float %86, %87 ; [#uses=7]
+ %89 = fmul float %.val274, %.val347 ; [#uses=1]
+ %90 = fmul float %.idx275.val, %.idx348.val ; [#uses=1]
+ %91 = fadd float %89, %90 ; [#uses=1]
+ %92 = fmul float %.idx276.val, %.idx349.val ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=7]
+ %94 = fmul float %.val268, %R2.val359 ; [#uses=1]
+ %95 = fmul float %.idx269.val, %R2.idx360.val ; [#uses=1]
+ %96 = fadd float %94, %95 ; [#uses=1]
+ %97 = fmul float %.idx270.val, %R2.idx361.val ; [#uses=1]
+ %98 = fadd float %96, %97 ; [#uses=7]
+ %99 = fmul float %.val268, %.val353 ; [#uses=1]
+ %100 = fmul float %.idx269.val, %.idx354.val ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=1]
+ %102 = fmul float %.idx270.val, %.idx355.val ; [#uses=1]
+ %103 = fadd float %101, %102 ; [#uses=7]
+ %104 = fmul float %.val268, %.val347 ; [#uses=1]
+ %105 = fmul float %.idx269.val, %.idx348.val ; [#uses=1]
+ %106 = fadd float %104, %105 ; [#uses=1]
+ %107 = fmul float %.idx270.val, %.idx349.val ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=7]
+ %109 = call float @fabsf(float %66) nounwind readnone ; [#uses=3]
+ %110 = call float @fabsf(float %72) nounwind readnone ; [#uses=3]
+ %111 = call float @fabsf(float %78) nounwind readnone ; [#uses=3]
+ %112 = call float @fabsf(float %83) nounwind readnone ; [#uses=3]
+ %113 = call float @fabsf(float %88) nounwind readnone ; [#uses=3]
+ %114 = call float @fabsf(float %93) nounwind readnone ; [#uses=3]
+ %115 = call float @fabsf(float %98) nounwind readnone ; [#uses=3]
+ %116 = call float @fabsf(float %103) nounwind readnone ; [#uses=3]
+ %117 = call float @fabsf(float %108) nounwind readnone ; [#uses=3]
+ %118 = call float @fabsf(float %25) nounwind readnone ; [#uses=1]
+ %119 = fmul float %52, %109 ; [#uses=1]
+ %120 = fadd float %40, %119 ; [#uses=1]
+ %121 = fmul float %56, %110 ; [#uses=1]
+ %122 = fadd float %120, %121 ; [#uses=1]
+ %123 = fmul float %60, %111 ; [#uses=1]
+ %124 = fadd float %122, %123 ; [#uses=1]
+ %125 = fsub float %118, %124 ; [#uses=3]
+ %126 = fcmp ogt float %125, 0.000000e+00 ; [#uses=1]
+ br i1 %126, label %bb218, label %bb3
+
+bb3: ; preds = %entry
+ %127 = fcmp ogt float %125, 0xC7EFFFFFE0000000 ; [#uses=1]
+ br i1 %127, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ %128 = fcmp olt float %25, 0.000000e+00 ; [#uses=1]
+ %129 = zext i1 %128 to i32 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ %s.0 = phi float [ %125, %bb4 ], [ 0xC7EFFFFFE0000000, %bb3 ] ; [#uses=2]
+ %invert_normal.0 = phi i32 [ %129, %bb4 ], [ 0, %bb3 ] ; [#uses=1]
+ %code.0 = phi i32 [ 1, %bb4 ], [ 0, %bb3 ] ; [#uses=1]
+ %normalR.0 = phi float* [ %R1, %bb4 ], [ null, %bb3 ] ; [#uses=1]
+ %130 = call float @fabsf(float %31) nounwind readnone ; [#uses=1]
+ %131 = fmul float %52, %112 ; [#uses=1]
+ %132 = fadd float %44, %131 ; [#uses=1]
+ %133 = fmul float %56, %113 ; [#uses=1]
+ %134 = fadd float %132, %133 ; [#uses=1]
+ %135 = fmul float %60, %114 ; [#uses=1]
+ %136 = fadd float %134, %135 ; [#uses=1]
+ %137 = fsub float %130, %136 ; [#uses=3]
+ %138 = fcmp ogt float %137, 0.000000e+00 ; [#uses=1]
+ br i1 %138, label %bb218, label %bb7
+
+bb7: ; preds = %bb5
+ %139 = fcmp ogt float %137, %s.0 ; [#uses=1]
+ br i1 %139, label %bb8, label %bb9
+
+bb8: ; preds = %bb7
+ %140 = fcmp olt float %31, 0.000000e+00 ; [#uses=1]
+ %141 = zext i1 %140 to i32 ; [#uses=1]
+ br label %bb9
+
+bb9: ; preds = %bb8, %bb7
+ %s.1 = phi float [ %137, %bb8 ], [ %s.0, %bb7 ] ; [#uses=2]
+ %invert_normal.1 = phi i32 [ %141, %bb8 ], [ %invert_normal.0, %bb7 ] ; [#uses=1]
+ %code.1 = phi i32 [ 2, %bb8 ], [ %code.0, %bb7 ] ; [#uses=1]
+ %normalR.1 = phi float* [ %26, %bb8 ], [ %normalR.0, %bb7 ] ; [#uses=1]
+ %142 = call float @fabsf(float %37) nounwind readnone ; [#uses=1]
+ %143 = fmul float %52, %115 ; [#uses=1]
+ %144 = fadd float %48, %143 ; [#uses=1]
+ %145 = fmul float %56, %116 ; [#uses=1]
+ %146 = fadd float %144, %145 ; [#uses=1]
+ %147 = fmul float %60, %117 ; [#uses=1]
+ %148 = fadd float %146, %147 ; [#uses=1]
+ %149 = fsub float %142, %148 ; [#uses=3]
+ %150 = fcmp ogt float %149, 0.000000e+00 ; [#uses=1]
+ br i1 %150, label %bb218, label %bb11
+
+bb11: ; preds = %bb9
+ %151 = fcmp ogt float %149, %s.1 ; [#uses=1]
+ br i1 %151, label %bb12, label %bb13
+
+bb12: ; preds = %bb11
+ %152 = fcmp olt float %37, 0.000000e+00 ; [#uses=1]
+ %153 = zext i1 %152 to i32 ; [#uses=1]
+ br label %bb13
+
+bb13: ; preds = %bb12, %bb11
+ %s.2 = phi float [ %149, %bb12 ], [ %s.1, %bb11 ] ; [#uses=2]
+ %invert_normal.2 = phi i32 [ %153, %bb12 ], [ %invert_normal.1, %bb11 ] ; [#uses=1]
+ %code.2 = phi i32 [ 3, %bb12 ], [ %code.1, %bb11 ] ; [#uses=1]
+ %normalR.2 = phi float* [ %32, %bb12 ], [ %normalR.1, %bb11 ] ; [#uses=1]
+ %154 = fmul float %R2.val359, %20 ; [#uses=1]
+ %155 = fmul float %R2.idx360.val, %15 ; [#uses=1]
+ %156 = fadd float %154, %155 ; [#uses=1]
+ %157 = fmul float %R2.idx361.val, %10 ; [#uses=1]
+ %158 = fadd float %156, %157 ; [#uses=2]
+ %159 = call float @fabsf(float %158) nounwind readnone ; [#uses=1]
+ %160 = fmul float %40, %109 ; [#uses=1]
+ %161 = fmul float %44, %112 ; [#uses=1]
+ %162 = fadd float %160, %161 ; [#uses=1]
+ %163 = fmul float %48, %115 ; [#uses=1]
+ %164 = fadd float %162, %163 ; [#uses=1]
+ %165 = fadd float %164, %52 ; [#uses=1]
+ %166 = fsub float %159, %165 ; [#uses=3]
+ %167 = fcmp ogt float %166, 0.000000e+00 ; [#uses=1]
+ br i1 %167, label %bb218, label %bb15
+
+bb15: ; preds = %bb13
+ %168 = fcmp ogt float %166, %s.2 ; [#uses=1]
+ br i1 %168, label %bb16, label %bb17
+
+bb16: ; preds = %bb15
+ %169 = fcmp olt float %158, 0.000000e+00 ; [#uses=1]
+ %170 = zext i1 %169 to i32 ; [#uses=1]
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb15
+ %s.3 = phi float [ %166, %bb16 ], [ %s.2, %bb15 ] ; [#uses=2]
+ %invert_normal.3 = phi i32 [ %170, %bb16 ], [ %invert_normal.2, %bb15 ] ; [#uses=1]
+ %code.3 = phi i32 [ 4, %bb16 ], [ %code.2, %bb15 ] ; [#uses=1]
+ %normalR.3 = phi float* [ %R2, %bb16 ], [ %normalR.2, %bb15 ] ; [#uses=1]
+ %171 = fmul float %.val353, %20 ; [#uses=1]
+ %172 = fmul float %.idx354.val, %15 ; [#uses=1]
+ %173 = fadd float %171, %172 ; [#uses=1]
+ %174 = fmul float %.idx355.val, %10 ; [#uses=1]
+ %175 = fadd float %173, %174 ; [#uses=2]
+ %176 = call float @fabsf(float %175) nounwind readnone ; [#uses=1]
+ %177 = fmul float %40, %110 ; [#uses=1]
+ %178 = fmul float %44, %113 ; [#uses=1]
+ %179 = fadd float %177, %178 ; [#uses=1]
+ %180 = fmul float %48, %116 ; [#uses=1]
+ %181 = fadd float %179, %180 ; [#uses=1]
+ %182 = fadd float %181, %56 ; [#uses=1]
+ %183 = fsub float %176, %182 ; [#uses=3]
+ %184 = fcmp ogt float %183, 0.000000e+00 ; [#uses=1]
+ br i1 %184, label %bb218, label %bb19
+
+bb19: ; preds = %bb17
+ %185 = fcmp ogt float %183, %s.3 ; [#uses=1]
+ br i1 %185, label %bb20, label %bb21
+
+bb20: ; preds = %bb19
+ %186 = fcmp olt float %175, 0.000000e+00 ; [#uses=1]
+ %187 = zext i1 %186 to i32 ; [#uses=1]
+ br label %bb21
+
+bb21: ; preds = %bb20, %bb19
+ %s.4 = phi float [ %183, %bb20 ], [ %s.3, %bb19 ] ; [#uses=2]
+ %invert_normal.4 = phi i32 [ %187, %bb20 ], [ %invert_normal.3, %bb19 ] ; [#uses=1]
+ %code.4 = phi i32 [ 5, %bb20 ], [ %code.3, %bb19 ] ; [#uses=1]
+ %normalR.4 = phi float* [ %67, %bb20 ], [ %normalR.3, %bb19 ] ; [#uses=1]
+ %188 = fmul float %.val347, %20 ; [#uses=1]
+ %189 = fmul float %.idx348.val, %15 ; [#uses=1]
+ %190 = fadd float %188, %189 ; [#uses=1]
+ %191 = fmul float %.idx349.val, %10 ; [#uses=1]
+ %192 = fadd float %190, %191 ; [#uses=2]
+ %193 = call float @fabsf(float %192) nounwind readnone ; [#uses=1]
+ %194 = fmul float %40, %111 ; [#uses=1]
+ %195 = fmul float %44, %114 ; [#uses=1]
+ %196 = fadd float %194, %195 ; [#uses=1]
+ %197 = fmul float %48, %117 ; [#uses=1]
+ %198 = fadd float %196, %197 ; [#uses=1]
+ %199 = fadd float %198, %60 ; [#uses=1]
+ %200 = fsub float %193, %199 ; [#uses=3]
+ %201 = fcmp ogt float %200, 0.000000e+00 ; [#uses=1]
+ br i1 %201, label %bb218, label %bb23
+
+bb23: ; preds = %bb21
+ %202 = fcmp ogt float %200, %s.4 ; [#uses=1]
+ br i1 %202, label %bb24, label %bb25
+
+bb24: ; preds = %bb23
+ %203 = fcmp olt float %192, 0.000000e+00 ; [#uses=1]
+ %204 = zext i1 %203 to i32 ; [#uses=1]
+ br label %bb25
+
+bb25: ; preds = %bb24, %bb23
+ %s.5 = phi float [ %200, %bb24 ], [ %s.4, %bb23 ] ; [#uses=3]
+ %invert_normal.5 = phi i32 [ %204, %bb24 ], [ %invert_normal.4, %bb23 ] ; [#uses=2]
+ %code.5 = phi i32 [ 6, %bb24 ], [ %code.4, %bb23 ] ; [#uses=2]
+ %normalR.5 = phi float* [ %73, %bb24 ], [ %normalR.4, %bb23 ] ; [#uses=2]
+ %205 = fadd float %109, 0x3EE4F8B580000000 ; [#uses=4]
+ %206 = fadd float %110, 0x3EE4F8B580000000 ; [#uses=4]
+ %207 = fadd float %111, 0x3EE4F8B580000000 ; [#uses=4]
+ %208 = fadd float %112, 0x3EE4F8B580000000 ; [#uses=4]
+ %209 = fadd float %113, 0x3EE4F8B580000000 ; [#uses=4]
+ %210 = fadd float %114, 0x3EE4F8B580000000 ; [#uses=4]
+ %211 = fadd float %115, 0x3EE4F8B580000000 ; [#uses=4]
+ %212 = fadd float %116, 0x3EE4F8B580000000 ; [#uses=4]
+ %213 = fadd float %117, 0x3EE4F8B580000000 ; [#uses=4]
+ %214 = fmul float %37, %83 ; [#uses=1]
+ %215 = fmul float %31, %98 ; [#uses=1]
+ %216 = fsub float %214, %215 ; [#uses=2]
+ %217 = call float @fabsf(float %216) nounwind readnone ; [#uses=1]
+ %218 = fmul float %44, %211 ; [#uses=1]
+ %219 = fmul float %48, %208 ; [#uses=1]
+ %220 = fadd float %218, %219 ; [#uses=1]
+ %221 = fmul float %56, %207 ; [#uses=1]
+ %222 = fadd float %220, %221 ; [#uses=1]
+ %223 = fmul float %60, %206 ; [#uses=1]
+ %224 = fadd float %222, %223 ; [#uses=1]
+ %225 = fsub float %217, %224 ; [#uses=2]
+ %226 = fcmp ogt float %225, 0x3E80000000000000 ; [#uses=1]
+ br i1 %226, label %bb218, label %bb27
+
+bb27: ; preds = %bb25
+ %227 = fmul float %98, %98 ; [#uses=1]
+ %228 = fadd float %227, 0.000000e+00 ; [#uses=2]
+ %229 = fmul float %83, %83 ; [#uses=2]
+ %230 = fadd float %228, %229 ; [#uses=1]
+ %231 = call float @sqrtf(float %230) nounwind readonly ; [#uses=5]
+ %232 = fcmp ogt float %231, 0x3E80000000000000 ; [#uses=1]
+ br i1 %232, label %bb28, label %bb30
+
+bb28: ; preds = %bb27
+ %233 = fdiv float %225, %231 ; [#uses=2]
+ %234 = fmul float %233, 0x3FF0CCCCC0000000 ; [#uses=1]
+ %235 = fcmp ogt float %234, %s.5 ; [#uses=1]
+ br i1 %235, label %bb29, label %bb30
+
+bb29: ; preds = %bb28
+ %236 = fdiv float 0.000000e+00, %231 ; [#uses=1]
+ %237 = fsub float -0.000000e+00, %98 ; [#uses=1]
+ %238 = fdiv float %237, %231 ; [#uses=1]
+ %239 = fdiv float %83, %231 ; [#uses=1]
+ %240 = fcmp olt float %216, 0.000000e+00 ; [#uses=1]
+ %241 = zext i1 %240 to i32 ; [#uses=1]
+ br label %bb30
+
+bb30: ; preds = %bb29, %bb28, %bb27
+ %normalC.0.0.8 = phi float [ %236, %bb29 ], [ 0.000000e+00, %bb28 ], [ 0.000000e+00, %bb27 ] ; [#uses=2]
+ %normalC.0.1.8 = phi float [ %238, %bb29 ], [ 0.000000e+00, %bb28 ], [ 0.000000e+00, %bb27 ] ; [#uses=2]
+ %normalC.0.2.8 = phi float [ %239, %bb29 ], [ 0.000000e+00, %bb28 ], [ 0.000000e+00, %bb27 ] ; [#uses=2]
+ %s.6 = phi float [ %233, %bb29 ], [ %s.5, %bb28 ], [ %s.5, %bb27 ] ; [#uses=3]
+ %invert_normal.6 = phi i32 [ %241, %bb29 ], [ %invert_normal.5, %bb28 ], [ %invert_normal.5, %bb27 ] ; [#uses=2]
+ %code.6 = phi i32 [ 7, %bb29 ], [ %code.5, %bb28 ], [ %code.5, %bb27 ] ; [#uses=2]
+ %normalR.6 = phi float* [ null, %bb29 ], [ %normalR.5, %bb28 ], [ %normalR.5, %bb27 ] ; [#uses=2]
+ %242 = fmul float %37, %88 ; [#uses=1]
+ %243 = fmul float %31, %103 ; [#uses=1]
+ %244 = fsub float %242, %243 ; [#uses=2]
+ %245 = call float @fabsf(float %244) nounwind readnone ; [#uses=1]
+ %246 = fmul float %44, %212 ; [#uses=1]
+ %247 = fmul float %48, %209 ; [#uses=1]
+ %248 = fadd float %246, %247 ; [#uses=1]
+ %249 = fmul float %52, %207 ; [#uses=1]
+ %250 = fadd float %248, %249 ; [#uses=1]
+ %251 = fmul float %60, %205 ; [#uses=1]
+ %252 = fadd float %250, %251 ; [#uses=1]
+ %253 = fsub float %245, %252 ; [#uses=2]
+ %254 = fcmp ogt float %253, 0x3E80000000000000 ; [#uses=1]
+ br i1 %254, label %bb218, label %bb32
+
+bb32: ; preds = %bb30
+ %255 = fmul float %103, %103 ; [#uses=1]
+ %256 = fadd float %255, 0.000000e+00 ; [#uses=2]
+ %257 = fmul float %88, %88 ; [#uses=2]
+ %258 = fadd float %256, %257 ; [#uses=1]
+ %259 = call float @sqrtf(float %258) nounwind readonly ; [#uses=5]
+ %260 = fcmp ogt float %259, 0x3E80000000000000 ; [#uses=1]
+ br i1 %260, label %bb33, label %bb35
+
+bb33: ; preds = %bb32
+ %261 = fdiv float %253, %259 ; [#uses=2]
+ %262 = fmul float %261, 0x3FF0CCCCC0000000 ; [#uses=1]
+ %263 = fcmp ogt float %262, %s.6 ; [#uses=1]
+ br i1 %263, label %bb34, label %bb35
+
+bb34: ; preds = %bb33
+ %264 = fdiv float 0.000000e+00, %259 ; [#uses=1]
+ %265 = fsub float -0.000000e+00, %103 ; [#uses=1]
+ %266 = fdiv float %265, %259 ; [#uses=1]
+ %267 = fdiv float %88, %259 ; [#uses=1]
+ %268 = fcmp olt float %244, 0.000000e+00 ; [#uses=1]
+ %269 = zext i1 %268 to i32 ; [#uses=1]
+ br label %bb35
+
+bb35: ; preds = %bb34, %bb33, %bb32
+ %normalC.0.0.7 = phi float [ %264, %bb34 ], [ %normalC.0.0.8, %bb33 ], [ %normalC.0.0.8, %bb32 ] ; [#uses=2]
+ %normalC.0.1.7 = phi float [ %266, %bb34 ], [ %normalC.0.1.8, %bb33 ], [ %normalC.0.1.8, %bb32 ] ; [#uses=2]
+ %normalC.0.2.7 = phi float [ %267, %bb34 ], [ %normalC.0.2.8, %bb33 ], [ %normalC.0.2.8, %bb32 ] ; [#uses=2]
+ %s.7 = phi float [ %261, %bb34 ], [ %s.6, %bb33 ], [ %s.6, %bb32 ] ; [#uses=3]
+ %invert_normal.7 = phi i32 [ %269, %bb34 ], [ %invert_normal.6, %bb33 ], [ %invert_normal.6, %bb32 ] ; [#uses=2]
+ %code.7 = phi i32 [ 8, %bb34 ], [ %code.6, %bb33 ], [ %code.6, %bb32 ] ; [#uses=2]
+ %normalR.7 = phi float* [ null, %bb34 ], [ %normalR.6, %bb33 ], [ %normalR.6, %bb32 ] ; [#uses=2]
+ %270 = fmul float %37, %93 ; [#uses=1]
+ %271 = fmul float %31, %108 ; [#uses=1]
+ %272 = fsub float %270, %271 ; [#uses=2]
+ %273 = call float @fabsf(float %272) nounwind readnone ; [#uses=1]
+ %274 = fmul float %44, %213 ; [#uses=1]
+ %275 = fmul float %48, %210 ; [#uses=1]
+ %276 = fadd float %274, %275 ; [#uses=1]
+ %277 = fmul float %52, %206 ; [#uses=1]
+ %278 = fadd float %276, %277 ; [#uses=1]
+ %279 = fmul float %56, %205 ; [#uses=1]
+ %280 = fadd float %278, %279 ; [#uses=1]
+ %281 = fsub float %273, %280 ; [#uses=2]
+ %282 = fcmp ogt float %281, 0x3E80000000000000 ; [#uses=1]
+ br i1 %282, label %bb218, label %bb37
+
+bb37: ; preds = %bb35
+ %283 = fmul float %108, %108 ; [#uses=1]
+ %284 = fadd float %283, 0.000000e+00 ; [#uses=2]
+ %285 = fmul float %93, %93 ; [#uses=2]
+ %286 = fadd float %284, %285 ; [#uses=1]
+ %287 = call float @sqrtf(float %286) nounwind readonly ; [#uses=5]
+ %288 = fcmp ogt float %287, 0x3E80000000000000 ; [#uses=1]
+ br i1 %288, label %bb38, label %bb40
+
+bb38: ; preds = %bb37
+ %289 = fdiv float %281, %287 ; [#uses=2]
+ %290 = fmul float %289, 0x3FF0CCCCC0000000 ; [#uses=1]
+ %291 = fcmp ogt float %290, %s.7 ; [#uses=1]
+ br i1 %291, label %bb39, label %bb40
+
+bb39: ; preds = %bb38
+ %292 = fdiv float 0.000000e+00, %287 ; [#uses=1]
+ %293 = fsub float -0.000000e+00, %108 ; [#uses=1]
+ %294 = fdiv float %293, %287 ; [#uses=1]
+ %295 = fdiv float %93, %287 ; [#uses=1]
+ %296 = fcmp olt float %272, 0.000000e+00 ; [#uses=1]
+ %297 = zext i1 %296 to i32 ; [#uses=1]
+ br label %bb40
+
+bb40: ; preds = %bb39, %bb38, %bb37
+ %normalC.0.0.6 = phi float [ %292, %bb39 ], [ %normalC.0.0.7, %bb38 ], [ %normalC.0.0.7, %bb37 ] ; [#uses=2]
+ %normalC.0.1.6 = phi float [ %294, %bb39 ], [ %normalC.0.1.7, %bb38 ], [ %normalC.0.1.7, %bb37 ] ; [#uses=2]
+ %normalC.0.2.6 = phi float [ %295, %bb39 ], [ %normalC.0.2.7, %bb38 ], [ %normalC.0.2.7, %bb37 ] ; [#uses=2]
+ %s.8 = phi float [ %289, %bb39 ], [ %s.7, %bb38 ], [ %s.7, %bb37 ] ; [#uses=3]
+ %invert_normal.8 = phi i32 [ %297, %bb39 ], [ %invert_normal.7, %bb38 ], [ %invert_normal.7, %bb37 ] ; [#uses=2]
+ %code.8 = phi i32 [ 9, %bb39 ], [ %code.7, %bb38 ], [ %code.7, %bb37 ] ; [#uses=2]
+ %normalR.8 = phi float* [ null, %bb39 ], [ %normalR.7, %bb38 ], [ %normalR.7, %bb37 ] ; [#uses=2]
+ %298 = fmul float %25, %98 ; [#uses=1]
+ %299 = fmul float %37, %66 ; [#uses=1]
+ %300 = fsub float %298, %299 ; [#uses=2]
+ %301 = call float @fabsf(float %300) nounwind readnone ; [#uses=1]
+ %302 = fmul float %40, %211 ; [#uses=1]
+ %303 = fmul float %48, %205 ; [#uses=1]
+ %304 = fadd float %302, %303 ; [#uses=1]
+ %305 = fmul float %56, %210 ; [#uses=1]
+ %306 = fadd float %304, %305 ; [#uses=1]
+ %307 = fmul float %60, %209 ; [#uses=1]
+ %308 = fadd float %306, %307 ; [#uses=1]
+ %309 = fsub float %301, %308 ; [#uses=2]
+ %310 = fcmp ogt float %309, 0x3E80000000000000 ; [#uses=1]
+ br i1 %310, label %bb218, label %bb42
+
+bb42: ; preds = %bb40
+ %311 = fmul float %66, %66 ; [#uses=2]
+ %312 = fadd float %228, %311 ; [#uses=1]
+ %313 = call float @sqrtf(float %312) nounwind readonly ; [#uses=5]
+ %314 = fcmp ogt float %313, 0x3E80000000000000 ; [#uses=1]
+ br i1 %314, label %bb43, label %bb45
+
+bb43: ; preds = %bb42
+ %315 = fdiv float %309, %313 ; [#uses=2]
+ %316 = fmul float %315, 0x3FF0CCCCC0000000 ; [#uses=1]
+ %317 = fcmp ogt float %316, %s.8 ; [#uses=1]
+ br i1 %317, label %bb44, label %bb45
+
+bb44: ; preds = %bb43
+ %318 = fdiv float %98, %313 ; [#uses=1]
+ %319 = fdiv float 0.000000e+00, %313 ; [#uses=1]
+ %320 = fsub float -0.000000e+00, %66 ; [#uses=1]
+ %321 = fdiv float %320, %313 ; [#uses=1]
+ %322 = fcmp olt float %300, 0.000000e+00 ; [#uses=1]
+ %323 = zext i1 %322 to i32 ; [#uses=1]
+ br label %bb45
+
+bb45: ; preds = %bb44, %bb43, %bb42
+ %normalC.0.0.5 = phi float [ %318, %bb44 ], [ %normalC.0.0.6, %bb43 ], [ %normalC.0.0.6, %bb42 ] ; [#uses=2]
+ %normalC.0.1.5 = phi float [ %319, %bb44 ], [ %normalC.0.1.6, %bb43 ], [ %normalC.0.1.6, %bb42 ] ; [#uses=2]
+ %normalC.0.2.5 = phi float [ %321, %bb44 ], [ %normalC.0.2.6, %bb43 ], [ %normalC.0.2.6, %bb42 ] ; [#uses=2]
+ %s.9 = phi float [ %315, %bb44 ], [ %s.8, %bb43 ], [ %s.8, %bb42 ] ; [#uses=3]
+ %invert_normal.9 = phi i32 [ %323, %bb44 ], [ %invert_normal.8, %bb43 ], [ %invert_normal.8, %bb42 ] ; [#uses=2]
+ %code.9 = phi i32 [ 10, %bb44 ], [ %code.8, %bb43 ], [ %code.8, %bb42 ] ; [#uses=2]
+ %normalR.9 = phi float* [ null, %bb44 ], [ %normalR.8, %bb43 ], [ %normalR.8, %bb42 ] ; [#uses=2]
+ %324 = fmul float %25, %103 ; [#uses=1]
+ %325 = fmul float %37, %72 ; [#uses=1]
+ %326 = fsub float %324, %325 ; [#uses=2]
+ %327 = call float @fabsf(float %326) nounwind readnone ; [#uses=1]
+ %328 = fmul float %40, %212 ; [#uses=1]
+ %329 = fmul float %48, %206 ; [#uses=1]
+ %330 = fadd float %328, %329 ; [#uses=1]
+ %331 = fmul float %52, %210 ; [#uses=1]
+ %332 = fadd float %330, %331 ; [#uses=1]
+ %333 = fmul float %60, %208 ; [#uses=1]
+ %334 = fadd float %332, %333 ; [#uses=1]
+ %335 = fsub float %327, %334 ; [#uses=2]
+ %336 = fcmp ogt float %335, 0x3E80000000000000 ; [#uses=1]
+ br i1 %336, label %bb218, label %bb47
+
+bb47: ; preds = %bb45
+ %337 = fmul float %72, %72 ; [#uses=2]
+ %338 = fadd float %256, %337 ; [#uses=1]
+ %339 = call float @sqrtf(float %338) nounwind readonly ; [#uses=5]
+ %340 = fcmp ogt float %339, 0x3E80000000000000 ; [#uses=1]
+ br i1 %340, label %bb48, label %bb50
+
+bb48: ; preds = %bb47
+ %341 = fdiv float %335, %339 ; [#uses=2]
+ %342 = fmul float %341, 0x3FF0CCCCC0000000 ; [#uses=1]
+ %343 = fcmp ogt float %342, %s.9 ; [#uses=1]
+ br i1 %343, label %bb49, label %bb50
+
+bb49: ; preds = %bb48
+ %344 = fdiv float %103, %339 ; [#uses=1]
+ %345 = fdiv float 0.000000e+00, %339 ; [#uses=1]
+ %346 = fsub float -0.000000e+00, %72 ; [#uses=1]
+ %347 = fdiv float %346, %339 ; [#uses=1]
+ %348 = fcmp olt float %326, 0.000000e+00 ; [#uses=1]
+ %349 = zext i1 %348 to i32 ; [#uses=1]
+ br label %bb50
+
+bb50: ; preds = %bb49, %bb48, %bb47
+ %normalC.0.0.4 = phi float [ %344, %bb49 ], [ %normalC.0.0.5, %bb48 ], [ %normalC.0.0.5, %bb47 ] ; [#uses=2]
+ %normalC.0.1.4 = phi float [ %345, %bb49 ], [ %normalC.0.1.5, %bb48 ], [ %normalC.0.1.5, %bb47 ] ; [#uses=2]
+ %normalC.0.2.4 = phi float [ %347, %bb49 ], [ %normalC.0.2.5, %bb48 ], [ %normalC.0.2.5, %bb47 ] ; [#uses=2]
+ %s.10 = phi float [ %341, %bb49 ], [ %s.9, %bb48 ], [ %s.9, %bb47 ] ; [#uses=3]
+ %invert_normal.10 = phi i32 [ %349, %bb49 ], [ %invert_normal.9, %bb48 ], [ %invert_normal.9, %bb47 ] ; [#uses=2]
+ %code.10 = phi i32 [ 11, %bb49 ], [ %code.9, %bb48 ], [ %code.9, %bb47 ] ; [#uses=2]
+ %normalR.10 = phi float* [ null, %bb49 ], [ %normalR.9, %bb48 ], [ %normalR.9, %bb47 ] ; [#uses=2]
+ %350 = fmul float %25, %108 ; [#uses=1]
+ %351 = fmul float %37, %78 ; [#uses=1]
+ %352 = fsub float %350, %351 ; [#uses=2]
+ %353 = call float @fabsf(float %352) nounwind readnone ; [#uses=1]
+ %354 = fmul float %40, %213 ; [#uses=1]
+ %355 = fmul float %48, %207 ; [#uses=1]
+ %356 = fadd float %354, %355 ; [#uses=1]
+ %357 = fmul float %52, %209 ; [#uses=1]
+ %358 = fadd float %356, %357 ; [#uses=1]
+ %359 = fmul float %56, %208 ; [#uses=1]
+ %360 = fadd float %358, %359 ; [#uses=1]
+ %361 = fsub float %353, %360 ; [#uses=2]
+ %362 = fcmp ogt float %361, 0x3E80000000000000 ; [#uses=1]
+ br i1 %362, label %bb218, label %bb52
+
+bb52: ; preds = %bb50
+ %363 = fmul float %78, %78 ; [#uses=2]
+ %364 = fadd float %284, %363 ; [#uses=1]
+ %365 = call float @sqrtf(float %364) nounwind readonly ; [#uses=5]
+ %366 = fcmp ogt float %365, 0x3E80000000000000 ; [#uses=1]
+ br i1 %366, label %bb53, label %bb55
+
+bb53: ; preds = %bb52
+ %367 = fdiv float %361, %365 ; [#uses=2]
+ %368 = fmul float %367, 0x3FF0CCCCC0000000 ; [#uses=1]
+ %369 = fcmp ogt float %368, %s.10 ; [#uses=1]
+ br i1 %369, label %bb54, label %bb55
+
+bb54: ; preds = %bb53
+ %370 = fdiv float %108, %365 ; [#uses=1]
+ %371 = fdiv float 0.000000e+00, %365 ; [#uses=1]
+ %372 = fsub float -0.000000e+00, %78 ; [#uses=1]
+ %373 = fdiv float %372, %365 ; [#uses=1]
+ %374 = fcmp olt float %352, 0.000000e+00 ; [#uses=1]
+ %375 = zext i1 %374 to i32 ; [#uses=1]
+ br label %bb55
+
+bb55: ; preds = %bb54, %bb53, %bb52
+ %normalC.0.0.3 = phi float [ %370, %bb54 ], [ %normalC.0.0.4, %bb53 ], [ %normalC.0.0.4, %bb52 ] ; [#uses=2]
+ %normalC.0.1.3 = phi float [ %371, %bb54 ], [ %normalC.0.1.4, %bb53 ], [ %normalC.0.1.4, %bb52 ] ; [#uses=2]
+ %normalC.0.2.3 = phi float [ %373, %bb54 ], [ %normalC.0.2.4, %bb53 ], [ %normalC.0.2.4, %bb52 ] ; [#uses=2]
+ %s.11 = phi float [ %367, %bb54 ], [ %s.10, %bb53 ], [ %s.10, %bb52 ] ; [#uses=3]
+ %invert_normal.11 = phi i32 [ %375, %bb54 ], [ %invert_normal.10, %bb53 ], [ %invert_normal.10, %bb52 ] ; [#uses=2]
+ %code.11 = phi i32 [ 12, %bb54 ], [ %code.10, %bb53 ], [ %code.10, %bb52 ] ; [#uses=2]
+ %normalR.11 = phi float* [ null, %bb54 ], [ %normalR.10, %bb53 ], [ %normalR.10, %bb52 ] ; [#uses=2]
+ %376 = fmul float %31, %66 ; [#uses=1]
+ %377 = fmul float %25, %83 ; [#uses=1]
+ %378 = fsub float %376, %377 ; [#uses=2]
+ %379 = call float @fabsf(float %378) nounwind readnone ; [#uses=1]
+ %380 = fmul float %40, %208 ; [#uses=1]
+ %381 = fmul float %44, %205 ; [#uses=1]
+ %382 = fadd float %380, %381 ; [#uses=1]
+ %383 = fmul float %56, %213 ; [#uses=1]
+ %384 = fadd float %382, %383 ; [#uses=1]
+ %385 = fmul float %60, %212 ; [#uses=1]
+ %386 = fadd float %384, %385 ; [#uses=1]
+ %387 = fsub float %379, %386 ; [#uses=2]
+ %388 = fcmp ogt float %387, 0x3E80000000000000 ; [#uses=1]
+ br i1 %388, label %bb218, label %bb57
+
+bb57: ; preds = %bb55
+ %389 = fadd float %229, %311 ; [#uses=1]
+ %390 = fadd float %389, 0.000000e+00 ; [#uses=1]
+ %391 = call float @sqrtf(float %390) nounwind readonly ; [#uses=5]
+ %392 = fcmp ogt float %391, 0x3E80000000000000 ; [#uses=1]
+ br i1 %392, label %bb58, label %bb60
+
+bb58: ; preds = %bb57
+ %393 = fdiv float %387, %391 ; [#uses=2]
+ %394 = fmul float %393, 0x3FF0CCCCC0000000 ; [#uses=1]
+ %395 = fcmp ogt float %394, %s.11 ; [#uses=1]
+ br i1 %395, label %bb59, label %bb60
+
+bb59: ; preds = %bb58
+ %396 = fsub float -0.000000e+00, %83 ; [#uses=1]
+ %397 = fdiv float %396, %391 ; [#uses=1]
+ %398 = fdiv float %66, %391 ; [#uses=1]
+ %399 = fdiv float 0.000000e+00, %391 ; [#uses=1]
+ %400 = fcmp olt float %378, 0.000000e+00 ; [#uses=1]
+ %401 = zext i1 %400 to i32 ; [#uses=1]
+ br label %bb60
+
+bb60: ; preds = %bb59, %bb58, %bb57
+ %normalC.0.0.2 = phi float [ %397, %bb59 ], [ %normalC.0.0.3, %bb58 ], [ %normalC.0.0.3, %bb57 ] ; [#uses=2]
+ %normalC.0.1.2 = phi float [ %398, %bb59 ], [ %normalC.0.1.3, %bb58 ], [ %normalC.0.1.3, %bb57 ] ; [#uses=2]
+ %normalC.0.2.2 = phi float [ %399, %bb59 ], [ %normalC.0.2.3, %bb58 ], [ %normalC.0.2.3, %bb57 ] ; [#uses=2]
+ %s.12 = phi float [ %393, %bb59 ], [ %s.11, %bb58 ], [ %s.11, %bb57 ] ; [#uses=3]
+ %invert_normal.12 = phi i32 [ %401, %bb59 ], [ %invert_normal.11, %bb58 ], [ %invert_normal.11, %bb57 ] ; [#uses=2]
+ %code.12 = phi i32 [ 13, %bb59 ], [ %code.11, %bb58 ], [ %code.11, %bb57 ] ; [#uses=2]
+ %normalR.12 = phi float* [ null, %bb59 ], [ %normalR.11, %bb58 ], [ %normalR.11, %bb57 ] ; [#uses=2]
+ %402 = fmul float %31, %72 ; [#uses=1]
+ %403 = fmul float %25, %88 ; [#uses=1]
+ %404 = fsub float %402, %403 ; [#uses=2]
+ %405 = call float @fabsf(float %404) nounwind readnone ; [#uses=1]
+ %406 = fmul float %40, %209 ; [#uses=1]
+ %407 = fmul float %44, %206 ; [#uses=1]
+ %408 = fadd float %406, %407 ; [#uses=1]
+ %409 = fmul float %52, %213 ; [#uses=1]
+ %410 = fadd float %408, %409 ; [#uses=1]
+ %411 = fmul float %60, %211 ; [#uses=1]
+ %412 = fadd float %410, %411 ; [#uses=1]
+ %413 = fsub float %405, %412 ; [#uses=2]
+ %414 = fcmp ogt float %413, 0x3E80000000000000 ; [#uses=1]
+ br i1 %414, label %bb218, label %bb62
+
+bb62: ; preds = %bb60
+ %415 = fadd float %257, %337 ; [#uses=1]
+ %416 = fadd float %415, 0.000000e+00 ; [#uses=1]
+ %417 = call float @sqrtf(float %416) nounwind readonly ; [#uses=5]
+ %418 = fcmp ogt float %417, 0x3E80000000000000 ; [#uses=1]
+ br i1 %418, label %bb63, label %bb65
+
+bb63: ; preds = %bb62
+ %419 = fdiv float %413, %417 ; [#uses=2]
+ %420 = fmul float %419, 0x3FF0CCCCC0000000 ; [#uses=1]
+ %421 = fcmp ogt float %420, %s.12 ; [#uses=1]
+ br i1 %421, label %bb64, label %bb65
+
+bb64: ; preds = %bb63
+ %422 = fsub float -0.000000e+00, %88 ; [#uses=1]
+ %423 = fdiv float %422, %417 ; [#uses=1]
+ %424 = fdiv float %72, %417 ; [#uses=1]
+ %425 = fdiv float 0.000000e+00, %417 ; [#uses=1]
+ %426 = fcmp olt float %404, 0.000000e+00 ; [#uses=1]
+ %427 = zext i1 %426 to i32 ; [#uses=1]
+ br label %bb65
+
+bb65: ; preds = %bb64, %bb63, %bb62
+ %normalC.0.0.1 = phi float [ %423, %bb64 ], [ %normalC.0.0.2, %bb63 ], [ %normalC.0.0.2, %bb62 ] ; [#uses=1]
+ %normalC.0.1.1 = phi float [ %424, %bb64 ], [ %normalC.0.1.2, %bb63 ], [ %normalC.0.1.2, %bb62 ] ; [#uses=1]
+ %normalC.0.2.1 = phi float [ %425, %bb64 ], [ %normalC.0.2.2, %bb63 ], [ %normalC.0.2.2, %bb62 ] ; [#uses=1]
+ %s.13 = phi float [ %419, %bb64 ], [ %s.12, %bb63 ], [ %s.12, %bb62 ] ; [#uses=3]
+ %invert_normal.13 = phi i32 [ %427, %bb64 ], [ %invert_normal.12, %bb63 ], [ %invert_normal.12, %bb62 ] ; [#uses=2]
+ %code.13 = phi i32 [ 14, %bb64 ], [ %code.12, %bb63 ], [ %code.12, %bb62 ] ; [#uses=3]
+ %normalR.13 = phi float* [ null, %bb64 ], [ %normalR.12, %bb63 ], [ %normalR.12, %bb62 ] ; [#uses=4]
+ %428 = fmul float %31, %78 ; [#uses=1]
+ %429 = fmul float %25, %93 ; [#uses=1]
+ %430 = fsub float %428, %429 ; [#uses=2]
+ %431 = call float @fabsf(float %430) nounwind readnone ; [#uses=1]
+ %432 = fmul float %40, %210 ; [#uses=1]
+ %433 = fmul float %44, %207 ; [#uses=1]
+ %434 = fadd float %432, %433 ; [#uses=1]
+ %435 = fmul float %52, %212 ; [#uses=1]
+ %436 = fadd float %434, %435 ; [#uses=1]
+ %437 = fmul float %56, %211 ; [#uses=1]
+ %438 = fadd float %436, %437 ; [#uses=1]
+ %439 = fsub float %431, %438 ; [#uses=2]
+ %440 = fcmp ogt float %439, 0x3E80000000000000 ; [#uses=1]
+ br i1 %440, label %bb218, label %bb67
+
+bb67: ; preds = %bb65
+ %441 = fadd float %285, %363 ; [#uses=1]
+ %442 = fadd float %441, 0.000000e+00 ; [#uses=1]
+ %443 = call float @sqrtf(float %442) nounwind readonly ; [#uses=5]
+ %444 = fcmp ogt float %443, 0x3E80000000000000 ; [#uses=1]
+ br i1 %444, label %bb68, label %bb70
+
+bb68: ; preds = %bb67
+ %445 = fdiv float %439, %443 ; [#uses=2]
+ %446 = fmul float %445, 0x3FF0CCCCC0000000 ; [#uses=1]
+ %447 = fcmp ogt float %446, %s.13 ; [#uses=1]
+ br i1 %447, label %bb72.thread, label %bb70
+
+bb72.thread: ; preds = %bb68
+ %448 = fsub float -0.000000e+00, %93 ; [#uses=1]
+ %449 = fdiv float %448, %443 ; [#uses=1]
+ %450 = fdiv float %78, %443 ; [#uses=1]
+ %451 = fdiv float 0.000000e+00, %443 ; [#uses=1]
+ %452 = fcmp olt float %430, 0.000000e+00 ; [#uses=1]
+ %453 = zext i1 %452 to i32 ; [#uses=1]
+ %454 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb74
+
+bb70: ; preds = %bb68, %bb67
+ %455 = icmp eq i32 %code.13, 0 ; [#uses=1]
+ br i1 %455, label %bb218, label %bb72
+
+bb72: ; preds = %bb70
+ %456 = icmp eq float* %normalR.13, null ; [#uses=1]
+ %457 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=2]
+ br i1 %456, label %bb74, label %bb73
+
+bb73: ; preds = %bb72
+ %458 = load float* %normalR.13, align 4 ; [#uses=2]
+ store float %458, float* %457, align 4
+ %459 = getelementptr inbounds float* %normalR.13, i32 4 ; [#uses=1]
+ %460 = load float* %459, align 4 ; [#uses=2]
+ %461 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %460, float* %461, align 4
+ %462 = getelementptr inbounds float* %normalR.13, i32 8 ; [#uses=1]
+ %463 = load float* %462, align 4 ; [#uses=2]
+ %464 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %463, float* %464, align 4
+ br label %bb75
+
+bb74: ; preds = %bb72, %bb72.thread
+ %465 = phi float* [ %454, %bb72.thread ], [ %457, %bb72 ] ; [#uses=1]
+ %normalC.0.0.0542557 = phi float [ %449, %bb72.thread ], [ %normalC.0.0.1, %bb72 ] ; [#uses=3]
+ %normalC.0.1.0543556 = phi float [ %450, %bb72.thread ], [ %normalC.0.1.1, %bb72 ] ; [#uses=3]
+ %normalC.0.2.0544555 = phi float [ %451, %bb72.thread ], [ %normalC.0.2.1, %bb72 ] ; [#uses=3]
+ %s.14545554 = phi float [ %445, %bb72.thread ], [ %s.13, %bb72 ] ; [#uses=1]
+ %invert_normal.14546552 = phi i32 [ %453, %bb72.thread ], [ %invert_normal.13, %bb72 ] ; [#uses=1]
+ %code.14547550 = phi i32 [ 15, %bb72.thread ], [ %code.13, %bb72 ] ; [#uses=1]
+ %466 = fmul float %R1.val, %normalC.0.0.0542557 ; [#uses=1]
+ %467 = fmul float %.val274, %normalC.0.1.0543556 ; [#uses=1]
+ %468 = fadd float %466, %467 ; [#uses=1]
+ %469 = fmul float %.val268, %normalC.0.2.0544555 ; [#uses=1]
+ %470 = fadd float %468, %469 ; [#uses=2]
+ store float %470, float* %465, align 4
+ %.val374 = load float* %R1.idx, align 4 ; [#uses=1]
+ %.idx375.val = load float* %.idx275, align 4 ; [#uses=1]
+ %.idx376.val = load float* %.idx269, align 4 ; [#uses=1]
+ %471 = fmul float %.val374, %normalC.0.0.0542557 ; [#uses=1]
+ %472 = fmul float %.idx375.val, %normalC.0.1.0543556 ; [#uses=1]
+ %473 = fadd float %471, %472 ; [#uses=1]
+ %474 = fmul float %.idx376.val, %normalC.0.2.0544555 ; [#uses=1]
+ %475 = fadd float %473, %474 ; [#uses=2]
+ %476 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %475, float* %476, align 4
+ %.val368 = load float* %R1.idx280, align 4 ; [#uses=1]
+ %.idx369.val = load float* %.idx276, align 4 ; [#uses=1]
+ %.idx370.val = load float* %.idx270, align 4 ; [#uses=1]
+ %477 = fmul float %.val368, %normalC.0.0.0542557 ; [#uses=1]
+ %478 = fmul float %.idx369.val, %normalC.0.1.0543556 ; [#uses=1]
+ %479 = fadd float %477, %478 ; [#uses=1]
+ %480 = fmul float %.idx370.val, %normalC.0.2.0544555 ; [#uses=1]
+ %481 = fadd float %479, %480 ; [#uses=2]
+ %482 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %481, float* %482, align 4
+ br label %bb75
+
+bb75: ; preds = %bb74, %bb73
+ %483 = phi float [ %481, %bb74 ], [ %463, %bb73 ] ; [#uses=1]
+ %484 = phi float [ %475, %bb74 ], [ %460, %bb73 ] ; [#uses=1]
+ %485 = phi float [ %470, %bb74 ], [ %458, %bb73 ] ; [#uses=1]
+ %s.14545553 = phi float [ %s.14545554, %bb74 ], [ %s.13, %bb73 ] ; [#uses=2]
+ %invert_normal.14546551 = phi i32 [ %invert_normal.14546552, %bb74 ], [ %invert_normal.13, %bb73 ] ; [#uses=1]
+ %code.14547549 = phi i32 [ %code.14547550, %bb74 ], [ %code.13, %bb73 ] ; [#uses=7]
+ %486 = icmp eq i32 %invert_normal.14546551, 0 ; [#uses=1]
+ br i1 %486, label %bb77, label %bb76
+
+bb76: ; preds = %bb75
+ %487 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %488 = fsub float -0.000000e+00, %485 ; [#uses=1]
+ store float %488, float* %487, align 4
+ %489 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %490 = fsub float -0.000000e+00, %484 ; [#uses=1]
+ store float %490, float* %489, align 4
+ %491 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %492 = fsub float -0.000000e+00, %483 ; [#uses=1]
+ store float %492, float* %491, align 4
+ br label %bb77
+
+bb77: ; preds = %bb76, %bb75
+ %493 = fsub float -0.000000e+00, %s.14545553 ; [#uses=1]
+ store float %493, float* %depth, align 4
+ %494 = icmp sgt i32 %code.14547549, 6 ; [#uses=1]
+ br i1 %494, label %bb117, label %bb125
+
+bb117: ; preds = %bb77
+ %495 = load float* %18, align 4 ; [#uses=1]
+ %496 = load float* %13, align 4 ; [#uses=1]
+ %497 = load float* %8, align 4 ; [#uses=1]
+ %498 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.val404 = load float* %498, align 4 ; [#uses=3]
+ %.idx405 = getelementptr %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.idx405.val = load float* %.idx405, align 4 ; [#uses=3]
+ %.idx406 = getelementptr %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.idx406.val = load float* %.idx406, align 4 ; [#uses=3]
+ %.idx408.val = load float* %R1.idx, align 4 ; [#uses=2]
+ %.val407 = load float* %R1, align 4 ; [#uses=2]
+ %499 = fmul float %.idx405.val, %.idx408.val ; [#uses=1]
+ %500 = fmul float %.val404, %.val407 ; [#uses=1]
+ %.idx409.val = load float* %R1.idx280, align 4 ; [#uses=2]
+ %501 = fmul float %.idx406.val, %.idx409.val ; [#uses=1]
+ %502 = fadd float %500, %499 ; [#uses=1]
+ %503 = fadd float %502, %501 ; [#uses=1]
+ %504 = fcmp ogt float %503, 0.000000e+00 ; [#uses=1]
+ %iftmp.146.0 = select i1 %504, float 1.000000e+00, float -1.000000e+00 ; [#uses=1]
+ %505 = fmul float %40, %iftmp.146.0 ; [#uses=3]
+ %506 = fmul float %505, %.val407 ; [#uses=1]
+ %507 = fadd float %495, %506 ; [#uses=1]
+ %508 = fmul float %505, %.idx408.val ; [#uses=1]
+ %509 = fadd float %496, %508 ; [#uses=1]
+ %510 = fmul float %505, %.idx409.val ; [#uses=1]
+ %511 = fadd float %497, %510 ; [#uses=1]
+ %.idx408.val.1 = load float* %.idx275, align 4 ; [#uses=2]
+ %.val407.1 = load float* %26, align 4 ; [#uses=2]
+ %512 = fmul float %.idx405.val, %.idx408.val.1 ; [#uses=1]
+ %513 = fmul float %.val404, %.val407.1 ; [#uses=1]
+ %.idx409.val.1 = load float* %.idx276, align 4 ; [#uses=2]
+ %514 = fmul float %.idx406.val, %.idx409.val.1 ; [#uses=1]
+ %515 = fadd float %513, %512 ; [#uses=1]
+ %516 = fadd float %515, %514 ; [#uses=1]
+ %517 = fcmp ogt float %516, 0.000000e+00 ; [#uses=1]
+ %iftmp.146.0.1 = select i1 %517, float 1.000000e+00, float -1.000000e+00 ; [#uses=1]
+ %518 = fmul float %44, %iftmp.146.0.1 ; [#uses=3]
+ %519 = fmul float %518, %.val407.1 ; [#uses=1]
+ %520 = fadd float %507, %519 ; [#uses=1]
+ %521 = fmul float %518, %.idx408.val.1 ; [#uses=1]
+ %522 = fadd float %509, %521 ; [#uses=1]
+ %523 = fmul float %518, %.idx409.val.1 ; [#uses=1]
+ %524 = fadd float %511, %523 ; [#uses=1]
+ %.idx408.val.2 = load float* %.idx269, align 4 ; [#uses=2]
+ %.val407.2 = load float* %32, align 4 ; [#uses=2]
+ %525 = fmul float %.idx405.val, %.idx408.val.2 ; [#uses=1]
+ %526 = fmul float %.val404, %.val407.2 ; [#uses=1]
+ %.idx409.val.2 = load float* %.idx270, align 4 ; [#uses=2]
+ %527 = fmul float %.idx406.val, %.idx409.val.2 ; [#uses=1]
+ %528 = fadd float %526, %525 ; [#uses=1]
+ %529 = fadd float %528, %527 ; [#uses=1]
+ %530 = fcmp ogt float %529, 0.000000e+00 ; [#uses=1]
+ %iftmp.146.0.2 = select i1 %530, float 1.000000e+00, float -1.000000e+00 ; [#uses=1]
+ %531 = fmul float %48, %iftmp.146.0.2 ; [#uses=3]
+ %scevgep760.2771 = getelementptr %struct.btQuadWord* %pa80, i32 0, i32 0, i32 0 ; [#uses=1]
+ %532 = fmul float %531, %.val407.2 ; [#uses=1]
+ %533 = fadd float %520, %532 ; [#uses=2]
+ store float %533, float* %scevgep760.2771, align 8
+ %scevgep760.1.2 = getelementptr %struct.btQuadWord* %pa80, i32 0, i32 0, i32 1 ; [#uses=1]
+ %534 = fmul float %531, %.idx408.val.2 ; [#uses=1]
+ %535 = fadd float %522, %534 ; [#uses=2]
+ store float %535, float* %scevgep760.1.2, align 4
+ %scevgep760.2.2 = getelementptr %struct.btQuadWord* %pa80, i32 0, i32 0, i32 2 ; [#uses=1]
+ %536 = fmul float %531, %.idx409.val.2 ; [#uses=1]
+ %537 = fadd float %524, %536 ; [#uses=2]
+ store float %537, float* %scevgep760.2.2, align 8
+ %538 = load float* %16, align 4 ; [#uses=1]
+ %539 = load float* %11, align 4 ; [#uses=1]
+ %540 = load float* %6, align 4 ; [#uses=1]
+ %541 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.val398 = load float* %541, align 4 ; [#uses=3]
+ %.idx399 = getelementptr %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.idx399.val = load float* %.idx399, align 4 ; [#uses=3]
+ %.idx400 = getelementptr %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.idx400.val = load float* %.idx400, align 4 ; [#uses=3]
+ %.idx402.val = load float* %R2.idx360, align 4 ; [#uses=2]
+ %.val401 = load float* %R2, align 4 ; [#uses=2]
+ %542 = fmul float %.idx399.val, %.idx402.val ; [#uses=1]
+ %543 = fmul float %.val398, %.val401 ; [#uses=1]
+ %.idx403.val = load float* %R2.idx361, align 4 ; [#uses=2]
+ %544 = fmul float %.idx400.val, %.idx403.val ; [#uses=1]
+ %545 = fadd float %543, %542 ; [#uses=1]
+ %546 = fadd float %545, %544 ; [#uses=1]
+ %547 = fcmp ogt float %546, 0.000000e+00 ; [#uses=1]
+ %iftmp.148.0 = select i1 %547, float -1.000000e+00, float 1.000000e+00 ; [#uses=1]
+ %548 = fmul float %52, %iftmp.148.0 ; [#uses=3]
+ %549 = fmul float %548, %.val401 ; [#uses=1]
+ %550 = fadd float %538, %549 ; [#uses=1]
+ %551 = fmul float %548, %.idx402.val ; [#uses=1]
+ %552 = fadd float %539, %551 ; [#uses=1]
+ %553 = fmul float %548, %.idx403.val ; [#uses=1]
+ %554 = fadd float %540, %553 ; [#uses=1]
+ %.idx402.val.1 = load float* %.idx354, align 4 ; [#uses=2]
+ %.val401.1 = load float* %67, align 4 ; [#uses=2]
+ %555 = fmul float %.idx399.val, %.idx402.val.1 ; [#uses=1]
+ %556 = fmul float %.val398, %.val401.1 ; [#uses=1]
+ %.idx403.val.1 = load float* %.idx355, align 4 ; [#uses=2]
+ %557 = fmul float %.idx400.val, %.idx403.val.1 ; [#uses=1]
+ %558 = fadd float %556, %555 ; [#uses=1]
+ %559 = fadd float %558, %557 ; [#uses=1]
+ %560 = fcmp ogt float %559, 0.000000e+00 ; [#uses=1]
+ %iftmp.148.0.1 = select i1 %560, float -1.000000e+00, float 1.000000e+00 ; [#uses=1]
+ %561 = fmul float %56, %iftmp.148.0.1 ; [#uses=3]
+ %562 = fmul float %561, %.val401.1 ; [#uses=1]
+ %563 = fadd float %550, %562 ; [#uses=1]
+ %564 = fmul float %561, %.idx402.val.1 ; [#uses=1]
+ %565 = fadd float %552, %564 ; [#uses=1]
+ %566 = fmul float %561, %.idx403.val.1 ; [#uses=1]
+ %567 = fadd float %554, %566 ; [#uses=1]
+ %.idx402.val.2 = load float* %.idx348, align 4 ; [#uses=2]
+ %.val401.2 = load float* %73, align 4 ; [#uses=2]
+ %568 = fmul float %.idx399.val, %.idx402.val.2 ; [#uses=1]
+ %569 = fmul float %.val398, %.val401.2 ; [#uses=1]
+ %.idx403.val.2 = load float* %.idx349, align 4 ; [#uses=2]
+ %570 = fmul float %.idx400.val, %.idx403.val.2 ; [#uses=1]
+ %571 = fadd float %569, %568 ; [#uses=1]
+ %572 = fadd float %571, %570 ; [#uses=1]
+ %573 = fcmp ogt float %572, 0.000000e+00 ; [#uses=1]
+ %iftmp.148.0.2 = select i1 %573, float -1.000000e+00, float 1.000000e+00 ; [#uses=1]
+ %574 = fmul float %60, %iftmp.148.0.2 ; [#uses=3]
+ %scevgep741.2752 = getelementptr %struct.btQuadWord* %pb83, i32 0, i32 0, i32 0 ; [#uses=1]
+ %575 = fmul float %574, %.val401.2 ; [#uses=1]
+ %576 = fadd float %563, %575 ; [#uses=3]
+ store float %576, float* %scevgep741.2752, align 8
+ %scevgep741.1.2 = getelementptr %struct.btQuadWord* %pb83, i32 0, i32 0, i32 1 ; [#uses=1]
+ %577 = fmul float %574, %.idx402.val.2 ; [#uses=1]
+ %578 = fadd float %565, %577 ; [#uses=3]
+ store float %578, float* %scevgep741.1.2, align 4
+ %scevgep741.2.2 = getelementptr %struct.btQuadWord* %pb83, i32 0, i32 0, i32 2 ; [#uses=1]
+ %579 = fmul float %574, %.idx403.val.2 ; [#uses=1]
+ %580 = fadd float %567, %579 ; [#uses=3]
+ store float %580, float* %scevgep741.2.2, align 8
+ %581 = add nsw i32 %code.14547549, -7 ; [#uses=1]
+ %582 = sdiv i32 %581, 3 ; [#uses=3]
+ %scevgep735 = getelementptr float* %R1, i32 %582 ; [#uses=1]
+ %scevgep736 = getelementptr %struct.btQuadWord* %ua, i32 0, i32 0, i32 0 ; [#uses=1]
+ %583 = load float* %scevgep735, align 4 ; [#uses=3]
+ store float %583, float* %scevgep736, align 8
+ %tmp734.1 = add i32 %582, 4 ; [#uses=1]
+ %scevgep735.1 = getelementptr float* %R1, i32 %tmp734.1 ; [#uses=1]
+ %scevgep736.1 = getelementptr %struct.btQuadWord* %ua, i32 0, i32 0, i32 1 ; [#uses=1]
+ %584 = load float* %scevgep735.1, align 4 ; [#uses=3]
+ store float %584, float* %scevgep736.1, align 4
+ %tmp734.2 = add i32 %582, 8 ; [#uses=1]
+ %scevgep735.2 = getelementptr float* %R1, i32 %tmp734.2 ; [#uses=1]
+ %scevgep736.2 = getelementptr %struct.btQuadWord* %ua, i32 0, i32 0, i32 2 ; [#uses=1]
+ %585 = load float* %scevgep735.2, align 4 ; [#uses=3]
+ store float %585, float* %scevgep736.2, align 8
+ %586 = add nsw i32 %code.14547549, -7 ; [#uses=1]
+ %587 = srem i32 %586, 3 ; [#uses=3]
+ %scevgep730 = getelementptr float* %R2, i32 %587 ; [#uses=1]
+ %scevgep731 = getelementptr %struct.btQuadWord* %ub, i32 0, i32 0, i32 0 ; [#uses=1]
+ %588 = load float* %scevgep730, align 4 ; [#uses=4]
+ store float %588, float* %scevgep731, align 8
+ %tmp729.1 = add i32 %587, 4 ; [#uses=1]
+ %scevgep730.1 = getelementptr float* %R2, i32 %tmp729.1 ; [#uses=1]
+ %scevgep731.1 = getelementptr %struct.btQuadWord* %ub, i32 0, i32 0, i32 1 ; [#uses=1]
+ %589 = load float* %scevgep730.1, align 4 ; [#uses=4]
+ store float %589, float* %scevgep731.1, align 4
+ %tmp729.2 = add i32 %587, 8 ; [#uses=1]
+ %scevgep730.2 = getelementptr float* %R2, i32 %tmp729.2 ; [#uses=1]
+ %scevgep731.2 = getelementptr %struct.btQuadWord* %ub, i32 0, i32 0, i32 2 ; [#uses=1]
+ %590 = load float* %scevgep730.2, align 4 ; [#uses=4]
+ store float %590, float* %scevgep731.2, align 8
+ %591 = getelementptr inbounds %struct.btQuadWord* %pb83, i32 0, i32 0, i32 0 ; [#uses=1]
+ %592 = fsub float %576, %533 ; [#uses=2]
+ %593 = getelementptr inbounds %struct.btQuadWord* %pb83, i32 0, i32 0, i32 1 ; [#uses=1]
+ %594 = fsub float %578, %535 ; [#uses=2]
+ %595 = getelementptr inbounds %struct.btQuadWord* %pb83, i32 0, i32 0, i32 2 ; [#uses=1]
+ %596 = fsub float %580, %537 ; [#uses=2]
+ %597 = fmul float %583, %588 ; [#uses=1]
+ %598 = fmul float %584, %589 ; [#uses=1]
+ %599 = fadd float %597, %598 ; [#uses=1]
+ %600 = fmul float %585, %590 ; [#uses=1]
+ %601 = fadd float %599, %600 ; [#uses=3]
+ %602 = fmul float %583, %592 ; [#uses=1]
+ %603 = fmul float %584, %594 ; [#uses=1]
+ %604 = fadd float %602, %603 ; [#uses=1]
+ %605 = fmul float %585, %596 ; [#uses=1]
+ %606 = fadd float %604, %605 ; [#uses=1]
+ %607 = fmul float %588, %592 ; [#uses=1]
+ %608 = fmul float %589, %594 ; [#uses=1]
+ %609 = fadd float %607, %608 ; [#uses=1]
+ %610 = fmul float %590, %596 ; [#uses=1]
+ %611 = fadd float %609, %610 ; [#uses=1]
+ %612 = fmul float %601, %601 ; [#uses=1]
+ %613 = fsub float 1.000000e+00, %612 ; [#uses=2]
+ %614 = fcmp ugt float %613, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %614, label %bb1.i, label %bb123
+
+bb1.i: ; preds = %bb117
+ %615 = fdiv float 1.000000e+00, %613 ; [#uses=1]
+ %616 = fmul float %601, %606 ; [#uses=1]
+ %617 = fsub float %616, %611 ; [#uses=1]
+ %618 = fmul float %617, %615 ; [#uses=1]
+ br label %bb123
+
+bb123: ; preds = %bb1.i, %bb117
+ %beta.0 = phi float [ %618, %bb1.i ], [ 0.000000e+00, %bb117 ] ; [#uses=3]
+ %619 = fmul float %588, %beta.0 ; [#uses=1]
+ %620 = fadd float %576, %619 ; [#uses=1]
+ store float %620, float* %591, align 8
+ %621 = fmul float %589, %beta.0 ; [#uses=1]
+ %622 = fadd float %578, %621 ; [#uses=1]
+ store float %622, float* %593, align 4
+ %623 = fmul float %590, %beta.0 ; [#uses=1]
+ %624 = fadd float %580, %623 ; [#uses=1]
+ store float %624, float* %595, align 8
+ %625 = getelementptr inbounds %struct.btActionInterface* %output, i32 0, i32 0 ; [#uses=1]
+ %626 = load i32 (...)*** %625, align 4 ; [#uses=1]
+ %627 = getelementptr inbounds i32 (...)** %626, i32 4 ; [#uses=1]
+ %628 = load i32 (...)** %627, align 4 ; [#uses=1]
+ %629 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %630 = load float* %629, align 4 ; [#uses=1]
+ %631 = fsub float -0.000000e+00, %630 ; [#uses=1]
+ %632 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %633 = load float* %632, align 4 ; [#uses=1]
+ %634 = fsub float -0.000000e+00, %633 ; [#uses=1]
+ %635 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %636 = load float* %635, align 4 ; [#uses=1]
+ %637 = fsub float -0.000000e+00, %636 ; [#uses=1]
+ %638 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %637, float* %638, align 8
+ %639 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %634, float* %639, align 4
+ %640 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %631, float* %640, align 8
+ %641 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %641, align 4
+ %642 = bitcast i32 (...)* %628 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %642(%struct.btActionInterface* %output, %struct.btQuadWord* %5, %struct.btQuadWord* %pb83, float %s.14545553)
+ store i32 %code.14547549, i32* %return_code, align 4
+ ret i32 1
+
+bb125: ; preds = %bb77
+ %643 = icmp slt i32 %code.14547549, 4 ; [#uses=4]
+ %644 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %645 = load float* %644, align 4 ; [#uses=2]
+ br i1 %643, label %bb129, label %bb130
+
+bb129: ; preds = %bb125
+ %646 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %647 = load float* %646, align 4 ; [#uses=1]
+ %648 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %649 = load float* %648, align 4 ; [#uses=1]
+ br label %bb131
+
+bb130: ; preds = %bb125
+ %650 = fsub float -0.000000e+00, %645 ; [#uses=1]
+ %651 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %652 = load float* %651, align 4 ; [#uses=1]
+ %653 = fsub float -0.000000e+00, %652 ; [#uses=1]
+ %654 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %655 = load float* %654, align 4 ; [#uses=1]
+ %656 = fsub float -0.000000e+00, %655 ; [#uses=1]
+ br label %bb131
+
+bb131: ; preds = %bb130, %bb129
+ %Sb.0569 = phi float* [ %53, %bb129 ], [ %41, %bb130 ] ; [#uses=3]
+ %Sa.0567 = phi float* [ %41, %bb129 ], [ %53, %bb130 ] ; [#uses=3]
+ %p2.pn565 = phi %struct.btQuadWord* [ %p2, %bb129 ], [ %p1, %bb130 ] ; [#uses=5]
+ %p1.pn563 = phi %struct.btQuadWord* [ %p1, %bb129 ], [ %p2, %bb130 ] ; [#uses=14]
+ %Rb.0560 = phi float* [ %R2, %bb129 ], [ %R1, %bb130 ] ; [#uses=20]
+ %Ra.0558 = phi float* [ %R1, %bb129 ], [ %R2, %bb130 ] ; [#uses=6]
+ %normal2.0.0.0 = phi float [ %645, %bb129 ], [ %650, %bb130 ] ; [#uses=4]
+ %normal2.0.1.0 = phi float [ %647, %bb129 ], [ %653, %bb130 ] ; [#uses=4]
+ %normal2.0.2.0 = phi float [ %649, %bb129 ], [ %656, %bb130 ] ; [#uses=4]
+ %657 = getelementptr inbounds %struct.btQuadWord* %nr, i32 0, i32 0, i32 0 ; [#uses=1]
+ %Rb.0.val = load float* %Rb.0560, align 4 ; [#uses=1]
+ %Rb.0.idx = getelementptr float* %Rb.0560, i32 4 ; [#uses=1]
+ %Rb.0.idx.val = load float* %Rb.0.idx, align 4 ; [#uses=1]
+ %Rb.0.idx230 = getelementptr float* %Rb.0560, i32 8 ; [#uses=1]
+ %Rb.0.idx230.val = load float* %Rb.0.idx230, align 4 ; [#uses=1]
+ %658 = fmul float %Rb.0.val, %normal2.0.0.0 ; [#uses=1]
+ %659 = fmul float %Rb.0.idx.val, %normal2.0.1.0 ; [#uses=1]
+ %660 = fadd float %658, %659 ; [#uses=1]
+ %661 = fmul float %Rb.0.idx230.val, %normal2.0.2.0 ; [#uses=1]
+ %662 = fadd float %660, %661 ; [#uses=2]
+ store float %662, float* %657, align 8
+ %663 = getelementptr inbounds float* %Rb.0560, i32 1 ; [#uses=1]
+ %.val224 = load float* %663, align 4 ; [#uses=1]
+ %.idx225 = getelementptr float* %Rb.0560, i32 5 ; [#uses=1]
+ %.idx225.val = load float* %.idx225, align 4 ; [#uses=1]
+ %.idx226 = getelementptr float* %Rb.0560, i32 9 ; [#uses=1]
+ %.idx226.val = load float* %.idx226, align 4 ; [#uses=1]
+ %664 = fmul float %.val224, %normal2.0.0.0 ; [#uses=1]
+ %665 = fmul float %.idx225.val, %normal2.0.1.0 ; [#uses=1]
+ %666 = fadd float %664, %665 ; [#uses=1]
+ %667 = fmul float %.idx226.val, %normal2.0.2.0 ; [#uses=1]
+ %668 = fadd float %666, %667 ; [#uses=2]
+ %669 = getelementptr inbounds %struct.btQuadWord* %nr, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %668, float* %669, align 4
+ %670 = getelementptr inbounds float* %Rb.0560, i32 2 ; [#uses=1]
+ %.val = load float* %670, align 4 ; [#uses=1]
+ %.idx = getelementptr float* %Rb.0560, i32 6 ; [#uses=1]
+ %.idx.val = load float* %.idx, align 4 ; [#uses=1]
+ %.idx220 = getelementptr float* %Rb.0560, i32 10 ; [#uses=1]
+ %.idx220.val = load float* %.idx220, align 4 ; [#uses=1]
+ %671 = fmul float %.val, %normal2.0.0.0 ; [#uses=1]
+ %672 = fmul float %.idx.val, %normal2.0.1.0 ; [#uses=1]
+ %673 = fadd float %671, %672 ; [#uses=1]
+ %674 = fmul float %.idx220.val, %normal2.0.2.0 ; [#uses=1]
+ %675 = fadd float %673, %674 ; [#uses=2]
+ %676 = getelementptr inbounds %struct.btQuadWord* %nr, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %675, float* %676, align 8
+ %677 = call float @fabsf(float %662) nounwind readnone ; [#uses=2]
+ %678 = call float @fabsf(float %668) nounwind readnone ; [#uses=2]
+ %679 = call float @fabsf(float %675) nounwind readnone ; [#uses=2]
+ %680 = fcmp ogt float %678, %677 ; [#uses=1]
+ br i1 %680, label %bb132, label %bb136
+
+bb132: ; preds = %bb131
+ %681 = fcmp ogt float %678, %679 ; [#uses=1]
+ br i1 %681, label %bb140, label %bb135
+
+bb135: ; preds = %bb132
+ br label %bb140
+
+bb136: ; preds = %bb131
+ %682 = fcmp ogt float %677, %679 ; [#uses=1]
+ br i1 %682, label %bb140, label %bb139
+
+bb139: ; preds = %bb136
+ br label %bb140
+
+bb140: ; preds = %bb139, %bb136, %bb135, %bb132
+ %lanr.0 = phi i32 [ 2, %bb135 ], [ 2, %bb139 ], [ 0, %bb136 ], [ 1, %bb132 ] ; [#uses=7]
+ %a1.0 = phi i32 [ 0, %bb135 ], [ 0, %bb139 ], [ 1, %bb136 ], [ 0, %bb132 ] ; [#uses=4]
+ %a2.0 = phi i32 [ 1, %bb135 ], [ 1, %bb139 ], [ 2, %bb136 ], [ 2, %bb132 ] ; [#uses=4]
+ %683 = getelementptr inbounds %struct.btQuadWord* %nr, i32 0, i32 0, i32 %lanr.0 ; [#uses=1]
+ %684 = load float* %683, align 4 ; [#uses=1]
+ %685 = fcmp olt float %684, 0.000000e+00 ; [#uses=1]
+ %686 = getelementptr inbounds float* %Sb.0569, i32 %lanr.0 ; [#uses=1]
+ %687 = load float* %686, align 4 ; [#uses=5]
+ %scevgep718 = getelementptr %struct.btQuadWord* %p2.pn565, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep719 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep720 = getelementptr %struct.btQuadWord* %center, i32 0, i32 0, i32 0 ; [#uses=2]
+ %688 = load float* %scevgep718, align 4 ; [#uses=1]
+ %689 = load float* %scevgep719, align 4 ; [#uses=1]
+ %690 = fsub float %688, %689 ; [#uses=2]
+ %691 = getelementptr inbounds float* %Rb.0560, i32 %lanr.0 ; [#uses=1]
+ %692 = load float* %691, align 4 ; [#uses=1]
+ %693 = fmul float %687, %692 ; [#uses=2]
+ br i1 %685, label %bb148.loopexit605, label %bb148.loopexit
+
+bb148.loopexit: ; preds = %bb140
+ %694 = fsub float %690, %693 ; [#uses=2]
+ store float %694, float* %scevgep720, align 8
+ %scevgep.1 = getelementptr %struct.btQuadWord* %p2.pn565, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep628.1 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep629.1 = getelementptr %struct.btQuadWord* %center, i32 0, i32 0, i32 1 ; [#uses=1]
+ %695 = load float* %scevgep.1, align 4 ; [#uses=1]
+ %696 = load float* %scevgep628.1, align 4 ; [#uses=1]
+ %697 = fsub float %695, %696 ; [#uses=1]
+ %698 = or i32 %lanr.0, 4 ; [#uses=1]
+ %699 = getelementptr inbounds float* %Rb.0560, i32 %698 ; [#uses=1]
+ %700 = load float* %699, align 4 ; [#uses=1]
+ %701 = fmul float %687, %700 ; [#uses=1]
+ %702 = fsub float %697, %701 ; [#uses=2]
+ store float %702, float* %scevgep629.1, align 4
+ %scevgep.2 = getelementptr %struct.btQuadWord* %p2.pn565, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep628.2 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep629.2 = getelementptr %struct.btQuadWord* %center, i32 0, i32 0, i32 2 ; [#uses=1]
+ %703 = load float* %scevgep.2, align 4 ; [#uses=1]
+ %704 = load float* %scevgep628.2, align 4 ; [#uses=1]
+ %705 = fsub float %703, %704 ; [#uses=1]
+ %706 = or i32 %lanr.0, 8 ; [#uses=1]
+ %707 = getelementptr inbounds float* %Rb.0560, i32 %706 ; [#uses=1]
+ %708 = load float* %707, align 4 ; [#uses=1]
+ %709 = fmul float %687, %708 ; [#uses=1]
+ %710 = fsub float %705, %709 ; [#uses=2]
+ store float %710, float* %scevgep629.2, align 8
+ br label %bb148
+
+bb148.loopexit605: ; preds = %bb140
+ %711 = fadd float %690, %693 ; [#uses=2]
+ store float %711, float* %scevgep720, align 8
+ %scevgep718.1 = getelementptr %struct.btQuadWord* %p2.pn565, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep719.1 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep720.1 = getelementptr %struct.btQuadWord* %center, i32 0, i32 0, i32 1 ; [#uses=1]
+ %712 = load float* %scevgep718.1, align 4 ; [#uses=1]
+ %713 = load float* %scevgep719.1, align 4 ; [#uses=1]
+ %714 = fsub float %712, %713 ; [#uses=1]
+ %715 = or i32 %lanr.0, 4 ; [#uses=1]
+ %716 = getelementptr inbounds float* %Rb.0560, i32 %715 ; [#uses=1]
+ %717 = load float* %716, align 4 ; [#uses=1]
+ %718 = fmul float %687, %717 ; [#uses=1]
+ %719 = fadd float %714, %718 ; [#uses=2]
+ store float %719, float* %scevgep720.1, align 4
+ %scevgep718.2 = getelementptr %struct.btQuadWord* %p2.pn565, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep719.2 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep720.2 = getelementptr %struct.btQuadWord* %center, i32 0, i32 0, i32 2 ; [#uses=1]
+ %720 = load float* %scevgep718.2, align 4 ; [#uses=1]
+ %721 = load float* %scevgep719.2, align 4 ; [#uses=1]
+ %722 = fsub float %720, %721 ; [#uses=1]
+ %723 = or i32 %lanr.0, 8 ; [#uses=1]
+ %724 = getelementptr inbounds float* %Rb.0560, i32 %723 ; [#uses=1]
+ %725 = load float* %724, align 4 ; [#uses=1]
+ %726 = fmul float %687, %725 ; [#uses=1]
+ %727 = fadd float %722, %726 ; [#uses=2]
+ store float %727, float* %scevgep720.2, align 8
+ br label %bb148
+
+bb148: ; preds = %bb148.loopexit605, %bb148.loopexit
+ %.idx388.val = phi float [ %727, %bb148.loopexit605 ], [ %710, %bb148.loopexit ] ; [#uses=2]
+ %.idx387.val = phi float [ %719, %bb148.loopexit605 ], [ %702, %bb148.loopexit ] ; [#uses=2]
+ %.val386 = phi float [ %711, %bb148.loopexit605 ], [ %694, %bb148.loopexit ] ; [#uses=2]
+ %codeN.0.v = select i1 %643, i32 -1, i32 -4 ; [#uses=1]
+ %codeN.0 = add i32 %codeN.0.v, %code.14547549 ; [#uses=2]
+ switch i32 %codeN.0, label %bb155 [
+ i32 0, label %bb156
+ i32 1, label %bb154
+ ]
+
+bb154: ; preds = %bb148
+ br label %bb156
+
+bb155: ; preds = %bb148
+ br label %bb156
+
+bb156: ; preds = %bb155, %bb154, %bb148
+ %code1.0 = phi i32 [ 0, %bb154 ], [ 0, %bb155 ], [ 1, %bb148 ] ; [#uses=4]
+ %code2.0 = phi i32 [ 2, %bb154 ], [ 1, %bb155 ], [ 2, %bb148 ] ; [#uses=4]
+ %728 = getelementptr inbounds float* %Ra.0558, i32 %code1.0 ; [#uses=1]
+ %729 = getelementptr inbounds %struct.btQuadWord* %center, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.idx393 = getelementptr %struct.btQuadWord* %center, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.idx394 = getelementptr %struct.btQuadWord* %center, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.val395 = load float* %728, align 4 ; [#uses=3]
+ %.sum517 = or i32 %code1.0, 4 ; [#uses=1]
+ %.idx396 = getelementptr float* %Ra.0558, i32 %.sum517 ; [#uses=1]
+ %.idx396.val = load float* %.idx396, align 4 ; [#uses=3]
+ %.sum518 = or i32 %code1.0, 8 ; [#uses=1]
+ %.idx397 = getelementptr float* %Ra.0558, i32 %.sum518 ; [#uses=1]
+ %.idx397.val = load float* %.idx397, align 4 ; [#uses=3]
+ %730 = fmul float %.val386, %.val395 ; [#uses=1]
+ %731 = fmul float %.idx387.val, %.idx396.val ; [#uses=1]
+ %732 = fadd float %730, %731 ; [#uses=1]
+ %733 = fmul float %.idx388.val, %.idx397.val ; [#uses=1]
+ %734 = fadd float %732, %733 ; [#uses=3]
+ %735 = getelementptr inbounds float* %Ra.0558, i32 %code2.0 ; [#uses=1]
+ %.val389 = load float* %735, align 4 ; [#uses=3]
+ %.sum519 = or i32 %code2.0, 4 ; [#uses=1]
+ %.idx390 = getelementptr float* %Ra.0558, i32 %.sum519 ; [#uses=1]
+ %.idx390.val = load float* %.idx390, align 4 ; [#uses=3]
+ %.sum520 = or i32 %code2.0, 8 ; [#uses=1]
+ %.idx391 = getelementptr float* %Ra.0558, i32 %.sum520 ; [#uses=1]
+ %.idx391.val = load float* %.idx391, align 4 ; [#uses=3]
+ %736 = fmul float %.val386, %.val389 ; [#uses=1]
+ %737 = fmul float %.idx387.val, %.idx390.val ; [#uses=1]
+ %738 = fadd float %736, %737 ; [#uses=1]
+ %739 = fmul float %.idx388.val, %.idx391.val ; [#uses=1]
+ %740 = fadd float %738, %739 ; [#uses=3]
+ %741 = getelementptr inbounds float* %Rb.0560, i32 %a1.0 ; [#uses=2]
+ %.val305 = load float* %741, align 4 ; [#uses=2]
+ %.sum523 = or i32 %a1.0, 4 ; [#uses=1]
+ %.idx306 = getelementptr float* %Rb.0560, i32 %.sum523 ; [#uses=2]
+ %.idx306.val = load float* %.idx306, align 4 ; [#uses=2]
+ %.sum524 = or i32 %a1.0, 8 ; [#uses=1]
+ %.idx307 = getelementptr float* %Rb.0560, i32 %.sum524 ; [#uses=2]
+ %.idx307.val = load float* %.idx307, align 4 ; [#uses=2]
+ %742 = fmul float %.val395, %.val305 ; [#uses=1]
+ %743 = fmul float %.idx396.val, %.idx306.val ; [#uses=1]
+ %744 = fadd float %742, %743 ; [#uses=1]
+ %745 = fmul float %.idx397.val, %.idx307.val ; [#uses=1]
+ %746 = fadd float %744, %745 ; [#uses=3]
+ %747 = getelementptr inbounds float* %Rb.0560, i32 %a2.0 ; [#uses=2]
+ %.val299 = load float* %747, align 4 ; [#uses=2]
+ %.sum527 = or i32 %a2.0, 4 ; [#uses=1]
+ %.idx300 = getelementptr float* %Rb.0560, i32 %.sum527 ; [#uses=2]
+ %.idx300.val = load float* %.idx300, align 4 ; [#uses=2]
+ %.sum528 = or i32 %a2.0, 8 ; [#uses=1]
+ %.idx301 = getelementptr float* %Rb.0560, i32 %.sum528 ; [#uses=2]
+ %.idx301.val = load float* %.idx301, align 4 ; [#uses=2]
+ %748 = fmul float %.val395, %.val299 ; [#uses=1]
+ %749 = fmul float %.idx396.val, %.idx300.val ; [#uses=1]
+ %750 = fadd float %748, %749 ; [#uses=1]
+ %751 = fmul float %.idx397.val, %.idx301.val ; [#uses=1]
+ %752 = fadd float %750, %751 ; [#uses=3]
+ %753 = fmul float %.val389, %.val305 ; [#uses=1]
+ %754 = fmul float %.idx390.val, %.idx306.val ; [#uses=1]
+ %755 = fadd float %753, %754 ; [#uses=1]
+ %756 = fmul float %.idx391.val, %.idx307.val ; [#uses=1]
+ %757 = fadd float %755, %756 ; [#uses=3]
+ %758 = fmul float %.val389, %.val299 ; [#uses=1]
+ %759 = fmul float %.idx390.val, %.idx300.val ; [#uses=1]
+ %760 = fadd float %758, %759 ; [#uses=1]
+ %761 = fmul float %.idx391.val, %.idx301.val ; [#uses=1]
+ %762 = fadd float %760, %761 ; [#uses=3]
+ %763 = getelementptr inbounds float* %Sb.0569, i32 %a1.0 ; [#uses=1]
+ %764 = load float* %763, align 4 ; [#uses=2]
+ %765 = fmul float %764, %746 ; [#uses=2]
+ %766 = fmul float %764, %757 ; [#uses=2]
+ %767 = getelementptr inbounds float* %Sb.0569, i32 %a2.0 ; [#uses=1]
+ %768 = load float* %767, align 4 ; [#uses=2]
+ %769 = fmul float %768, %752 ; [#uses=4]
+ %770 = fmul float %768, %762 ; [#uses=4]
+ %771 = fsub float %734, %765 ; [#uses=2]
+ %772 = fsub float %771, %769 ; [#uses=1]
+ %773 = getelementptr inbounds [8 x float]* %quad, i32 0, i32 0 ; [#uses=2]
+ store float %772, float* %773, align 4
+ %774 = fsub float %740, %766 ; [#uses=2]
+ %775 = fsub float %774, %770 ; [#uses=1]
+ %776 = getelementptr inbounds [8 x float]* %quad, i32 0, i32 1 ; [#uses=1]
+ store float %775, float* %776, align 4
+ %777 = fadd float %771, %769 ; [#uses=1]
+ %778 = getelementptr inbounds [8 x float]* %quad, i32 0, i32 2 ; [#uses=1]
+ store float %777, float* %778, align 4
+ %779 = fadd float %774, %770 ; [#uses=1]
+ %780 = getelementptr inbounds [8 x float]* %quad, i32 0, i32 3 ; [#uses=1]
+ store float %779, float* %780, align 4
+ %781 = fadd float %734, %765 ; [#uses=2]
+ %782 = fadd float %781, %769 ; [#uses=1]
+ %783 = getelementptr inbounds [8 x float]* %quad, i32 0, i32 4 ; [#uses=1]
+ store float %782, float* %783, align 4
+ %784 = fadd float %740, %766 ; [#uses=2]
+ %785 = fadd float %784, %770 ; [#uses=1]
+ %786 = getelementptr inbounds [8 x float]* %quad, i32 0, i32 5 ; [#uses=1]
+ store float %785, float* %786, align 4
+ %787 = fsub float %781, %769 ; [#uses=1]
+ %788 = getelementptr inbounds [8 x float]* %quad, i32 0, i32 6 ; [#uses=1]
+ store float %787, float* %788, align 4
+ %789 = fsub float %784, %770 ; [#uses=1]
+ %790 = getelementptr inbounds [8 x float]* %quad, i32 0, i32 7 ; [#uses=1]
+ store float %789, float* %790, align 4
+ %791 = getelementptr inbounds float* %Sa.0567, i32 %code1.0 ; [#uses=1]
+ %792 = load float* %791, align 4 ; [#uses=1]
+ %793 = getelementptr inbounds [2 x float]* %rect, i32 0, i32 0 ; [#uses=1]
+ store float %792, float* %793, align 4
+ %794 = getelementptr inbounds float* %Sa.0567, i32 %code2.0 ; [#uses=1]
+ %795 = load float* %794, align 4 ; [#uses=1]
+ %796 = getelementptr inbounds [2 x float]* %rect, i32 0, i32 1 ; [#uses=1]
+ store float %795, float* %796, align 4
+ %797 = getelementptr inbounds [16 x float]* %ret, i32 0, i32 0 ; [#uses=5]
+ %798 = getelementptr inbounds [16 x float]* %buffer.i, i32 0, i32 0 ; [#uses=1]
+ br label %bb21.i
+
+bb2.i: ; preds = %bb14.i
+ %799 = load float* %scevgep.i, align 4 ; [#uses=2]
+ %800 = fmul float %837, %799 ; [#uses=1]
+ %801 = load float* %scevgep63.i, align 4 ; [#uses=2]
+ %802 = fcmp olt float %800, %801 ; [#uses=1]
+ br i1 %802, label %bb3.i, label %bb5.i
+
+bb3.i: ; preds = %bb2.i
+ %803 = load float* %pq.0.i, align 4 ; [#uses=1]
+ store float %803, float* %pr.1.i, align 4
+ %804 = load float* %scevgep42.i, align 4 ; [#uses=1]
+ %805 = getelementptr inbounds float* %pr.1.i, i32 1 ; [#uses=1]
+ store float %804, float* %805, align 4
+ %806 = add nsw i32 %nr.4.i, 1 ; [#uses=3]
+ %807 = and i32 %806, 8 ; [#uses=1]
+ %808 = icmp eq i32 %807, 0 ; [#uses=1]
+ br i1 %808, label %bb3.i.bb5.i_crit_edge, label %done.i
+
+bb3.i.bb5.i_crit_edge: ; preds = %bb3.i
+ %809 = getelementptr inbounds float* %pr.1.i, i32 2 ; [#uses=1]
+ %.pre = load float* %scevgep.i, align 4 ; [#uses=1]
+ %.pre792 = load float* %scevgep63.i, align 4 ; [#uses=1]
+ br label %bb5.i
+
+bb5.i: ; preds = %bb3.i.bb5.i_crit_edge, %bb2.i
+ %810 = phi float [ %.pre792, %bb3.i.bb5.i_crit_edge ], [ %801, %bb2.i ] ; [#uses=3]
+ %811 = phi float [ %.pre, %bb3.i.bb5.i_crit_edge ], [ %799, %bb2.i ] ; [#uses=3]
+ %nr.3.i = phi i32 [ %806, %bb3.i.bb5.i_crit_edge ], [ %nr.4.i, %bb2.i ] ; [#uses=2]
+ %pr.0.i = phi float* [ %809, %bb3.i.bb5.i_crit_edge ], [ %pr.1.i, %bb2.i ] ; [#uses=4]
+ %812 = icmp sgt i32 %i.0.i, 1 ; [#uses=1]
+ %iftmp.137.0.i = select i1 %812, float* %scevgep40.i, float* %q.1.i ; [#uses=2]
+ %813 = fmul float %837, %811 ; [#uses=1]
+ %814 = fcmp olt float %813, %810 ; [#uses=1]
+ %scevgep67.i = getelementptr float* %iftmp.137.0.i, i32 %839 ; [#uses=1]
+ %815 = load float* %scevgep67.i, align 4 ; [#uses=2]
+ %816 = fmul float %837, %815 ; [#uses=1]
+ %817 = fcmp olt float %816, %810 ; [#uses=1]
+ %818 = xor i1 %814, %817 ; [#uses=1]
+ br i1 %818, label %bb11.i, label %bb13.i
+
+bb11.i: ; preds = %bb5.i
+ %819 = load float* %scevgep38.i, align 4 ; [#uses=2]
+ %scevgep65.i = getelementptr float* %iftmp.137.0.i, i32 %tmp706 ; [#uses=1]
+ %820 = load float* %scevgep65.i, align 4 ; [#uses=1]
+ %821 = fsub float %820, %819 ; [#uses=1]
+ %822 = fsub float %815, %811 ; [#uses=1]
+ %823 = fdiv float %821, %822 ; [#uses=1]
+ %824 = fmul float %837, %810 ; [#uses=1]
+ %825 = fsub float %824, %811 ; [#uses=1]
+ %826 = fmul float %823, %825 ; [#uses=1]
+ %827 = fadd float %819, %826 ; [#uses=1]
+ %scevgep66.i = getelementptr float* %pr.0.i, i32 %tmp706 ; [#uses=1]
+ store float %827, float* %scevgep66.i, align 4
+ %828 = load float* %scevgep63.i, align 4 ; [#uses=1]
+ %829 = fmul float %837, %828 ; [#uses=1]
+ %scevgep62.i = getelementptr float* %pr.0.i, i32 %839 ; [#uses=1]
+ store float %829, float* %scevgep62.i, align 4
+ %830 = getelementptr inbounds float* %pr.0.i, i32 2 ; [#uses=1]
+ %831 = add nsw i32 %nr.3.i, 1 ; [#uses=3]
+ %832 = and i32 %831, 8 ; [#uses=1]
+ %833 = icmp eq i32 %832, 0 ; [#uses=1]
+ br i1 %833, label %bb13.i, label %done.i
+
+bb13.i: ; preds = %bb11.i, %bb5.i
+ %nr.5.i = phi i32 [ %831, %bb11.i ], [ %nr.3.i, %bb5.i ] ; [#uses=1]
+ %pr.2.i = phi float* [ %830, %bb11.i ], [ %pr.0.i, %bb5.i ] ; [#uses=1]
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=1]
+ br label %bb14.i
+
+bb14.i: ; preds = %bb14.preheader.i, %bb13.i
+ %indvar.i = phi i32 [ 0, %bb14.preheader.i ], [ %indvar.next.i, %bb13.i ] ; [#uses=3]
+ %nr.4.i = phi i32 [ 0, %bb14.preheader.i ], [ %nr.5.i, %bb13.i ] ; [#uses=4]
+ %pr.1.i = phi float* [ %r.0.i, %bb14.preheader.i ], [ %pr.2.i, %bb13.i ] ; [#uses=4]
+ %tmp704 = shl i32 %indvar.i, 1 ; [#uses=5]
+ %tmp707 = add i32 %tmp706, %tmp704 ; [#uses=1]
+ %scevgep38.i = getelementptr float* %q.1.i, i32 %tmp707 ; [#uses=1]
+ %tmp709 = add i32 %839, %tmp704 ; [#uses=1]
+ %scevgep.i = getelementptr float* %q.1.i, i32 %tmp709 ; [#uses=2]
+ %i.0.i = sub i32 %nq.0.i, %indvar.i ; [#uses=2]
+ %tmp685776 = or i32 %tmp704, 1 ; [#uses=1]
+ %scevgep42.i = getelementptr float* %q.1.i, i32 %tmp685776 ; [#uses=1]
+ %tmp687 = add i32 %tmp704, 2 ; [#uses=1]
+ %scevgep40.i = getelementptr float* %q.1.i, i32 %tmp687 ; [#uses=1]
+ %pq.0.i = getelementptr float* %q.1.i, i32 %tmp704 ; [#uses=1]
+ %834 = icmp sgt i32 %i.0.i, 0 ; [#uses=1]
+ br i1 %834, label %bb2.i, label %bb15.i
+
+bb15.i: ; preds = %bb14.i
+ %835 = icmp eq float* %r.0.i, %797 ; [#uses=1]
+ %iftmp.138.0.i = select i1 %835, float* %798, float* %797 ; [#uses=1]
+ %indvar.next50.i = add i32 %indvar49.i, 1 ; [#uses=1]
+ br label %bb19.i
+
+bb19.i: ; preds = %bb21.i, %bb15.i
+ %indvar49.i = phi i32 [ %indvar.next50.i, %bb15.i ], [ 0, %bb21.i ] ; [#uses=2]
+ %r.0.i = phi float* [ %iftmp.138.0.i, %bb15.i ], [ %r.1.i, %bb21.i ] ; [#uses=6]
+ %q.1.i = phi float* [ %r.0.i, %bb15.i ], [ %q.2.i, %bb21.i ] ; [#uses=7]
+ %nr.0.i = phi i32 [ %nr.4.i, %bb15.i ], [ %nr.2.i, %bb21.i ] ; [#uses=1]
+ %nq.0.i = phi i32 [ %nr.4.i, %bb15.i ], [ %nq.1.i, %bb21.i ] ; [#uses=2]
+ %tmp700 = shl i32 %indvar49.i, 1 ; [#uses=1]
+ %sign.0.i = add i32 %tmp700, -1 ; [#uses=2]
+ %836 = icmp slt i32 %sign.0.i, 2 ; [#uses=1]
+ br i1 %836, label %bb14.preheader.i, label %bb20.i
+
+bb14.preheader.i: ; preds = %bb19.i
+ %837 = sitofp i32 %sign.0.i to float ; [#uses=5]
+ br label %bb14.i
+
+bb20.i: ; preds = %bb19.i
+ %838 = add nsw i32 %839, 1 ; [#uses=1]
+ br label %bb21.i
+
+bb21.i: ; preds = %bb20.i, %bb156
+ %r.1.i = phi float* [ %797, %bb156 ], [ %r.0.i, %bb20.i ] ; [#uses=1]
+ %q.2.i = phi float* [ %773, %bb156 ], [ %q.1.i, %bb20.i ] ; [#uses=2]
+ %nr.2.i = phi i32 [ 0, %bb156 ], [ %nr.0.i, %bb20.i ] ; [#uses=2]
+ %nq.1.i = phi i32 [ 4, %bb156 ], [ %nq.0.i, %bb20.i ] ; [#uses=1]
+ %839 = phi i32 [ 0, %bb156 ], [ %838, %bb20.i ] ; [#uses=7]
+ %tmp706 = sub i32 1, %839 ; [#uses=3]
+ %scevgep63.i = getelementptr [2 x float]* %rect, i32 0, i32 %839 ; [#uses=3]
+ %840 = icmp slt i32 %839, 2 ; [#uses=1]
+ br i1 %840, label %bb19.i, label %done.i
+
+done.i: ; preds = %bb21.i, %bb11.i, %bb3.i
+ %q.0.i = phi float* [ %r.0.i, %bb3.i ], [ %r.0.i, %bb11.i ], [ %q.2.i, %bb21.i ] ; [#uses=2]
+ %nr.1.i = phi i32 [ %831, %bb11.i ], [ %806, %bb3.i ], [ %nr.2.i, %bb21.i ] ; [#uses=3]
+ %841 = icmp eq float* %q.0.i, %797 ; [#uses=1]
+ br i1 %841, label %_ZL18intersectRectQuad2PfS_S_.exit, label %bb22.i
+
+bb22.i: ; preds = %done.i
+ %842 = shl i32 %nr.1.i, 3 ; [#uses=1]
+ %843 = bitcast [16 x float]* %ret to i8* ; [#uses=1]
+ %844 = bitcast float* %q.0.i to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %843, i8* %844, i32 %842, i32 4, i1 false) nounwind
+ br label %_ZL18intersectRectQuad2PfS_S_.exit
+
+_ZL18intersectRectQuad2PfS_S_.exit: ; preds = %bb22.i, %done.i
+ %845 = icmp slt i32 %nr.1.i, 1 ; [#uses=1]
+ br i1 %845, label %bb218, label %bb.nph595
+
+bb.nph595: ; preds = %_ZL18intersectRectQuad2PfS_S_.exit
+ %846 = fmul float %746, %762 ; [#uses=1]
+ %847 = fmul float %752, %757 ; [#uses=1]
+ %848 = fsub float %846, %847 ; [#uses=1]
+ %849 = fdiv float 1.000000e+00, %848 ; [#uses=4]
+ %850 = fmul float %746, %849 ; [#uses=1]
+ %851 = fmul float %752, %849 ; [#uses=1]
+ %852 = fmul float %762, %849 ; [#uses=1]
+ %853 = fmul float %757, %849 ; [#uses=1]
+ %854 = fsub float -0.000000e+00, %853 ; [#uses=1]
+ %855 = getelementptr inbounds float* %Sa.0567, i32 %codeN.0 ; [#uses=1]
+ %856 = load float* %855, align 4 ; [#uses=1]
+ br label %bb170
+
+bb170: ; preds = %bb172, %bb.nph595
+ %cnum.1594 = phi i32 [ 0, %bb.nph595 ], [ %cnum.0, %bb172 ] ; [#uses=6]
+ %j.2593 = phi i32 [ 0, %bb.nph595 ], [ %904, %bb172 ] ; [#uses=2]
+ %tmp677 = shl i32 %j.2593, 1 ; [#uses=2]
+ %scevgep678 = getelementptr [16 x float]* %ret, i32 0, i32 %tmp677 ; [#uses=1]
+ %tmp679775 = or i32 %tmp677, 1 ; [#uses=1]
+ %scevgep680 = getelementptr [16 x float]* %ret, i32 0, i32 %tmp679775 ; [#uses=1]
+ %857 = load float* %scevgep678, align 4 ; [#uses=2]
+ %858 = fsub float %857, %734 ; [#uses=2]
+ %859 = fmul float %858, %852 ; [#uses=1]
+ %860 = load float* %scevgep680, align 4 ; [#uses=2]
+ %861 = fsub float %860, %740 ; [#uses=2]
+ %862 = fmul float %861, %851 ; [#uses=1]
+ %863 = fsub float %859, %862 ; [#uses=3]
+ %864 = fmul float %858, %854 ; [#uses=1]
+ %865 = fmul float %861, %850 ; [#uses=1]
+ %866 = fadd float %864, %865 ; [#uses=3]
+ %867 = mul nsw i32 %cnum.1594, 3 ; [#uses=3]
+ %scevgep675 = getelementptr [24 x float]* %point, i32 0, i32 %867 ; [#uses=1]
+ %868 = load float* %729, align 8 ; [#uses=1]
+ %869 = load float* %741, align 4 ; [#uses=1]
+ %870 = fmul float %869, %863 ; [#uses=1]
+ %871 = fadd float %868, %870 ; [#uses=1]
+ %872 = load float* %747, align 4 ; [#uses=1]
+ %873 = fmul float %872, %866 ; [#uses=1]
+ %874 = fadd float %871, %873 ; [#uses=1]
+ store float %874, float* %scevgep675, align 4
+ %tmp674.1 = add i32 %867, 1 ; [#uses=1]
+ %scevgep675.1 = getelementptr [24 x float]* %point, i32 0, i32 %tmp674.1 ; [#uses=1]
+ %875 = load float* %.idx393, align 4 ; [#uses=1]
+ %876 = load float* %.idx306, align 4 ; [#uses=1]
+ %877 = fmul float %876, %863 ; [#uses=1]
+ %878 = fadd float %875, %877 ; [#uses=1]
+ %879 = load float* %.idx300, align 4 ; [#uses=1]
+ %880 = fmul float %879, %866 ; [#uses=1]
+ %881 = fadd float %878, %880 ; [#uses=1]
+ store float %881, float* %scevgep675.1, align 4
+ %tmp674.2 = add i32 %867, 2 ; [#uses=1]
+ %scevgep675.2 = getelementptr [24 x float]* %point, i32 0, i32 %tmp674.2 ; [#uses=1]
+ %882 = load float* %.idx394, align 8 ; [#uses=1]
+ %883 = load float* %.idx307, align 4 ; [#uses=1]
+ %884 = fmul float %883, %863 ; [#uses=1]
+ %885 = fadd float %882, %884 ; [#uses=1]
+ %886 = load float* %.idx301, align 4 ; [#uses=1]
+ %887 = fmul float %886, %866 ; [#uses=1]
+ %888 = fadd float %885, %887 ; [#uses=1]
+ store float %888, float* %scevgep675.2, align 4
+ %889 = mul nsw i32 %cnum.1594, 3 ; [#uses=3]
+ %890 = getelementptr inbounds [24 x float]* %point, i32 0, i32 %889 ; [#uses=1]
+ %.val365 = load float* %890, align 4 ; [#uses=1]
+ %.sum = add i32 %889, 1 ; [#uses=1]
+ %.idx366 = getelementptr [24 x float]* %point, i32 0, i32 %.sum ; [#uses=1]
+ %.idx366.val = load float* %.idx366, align 4 ; [#uses=1]
+ %.sum537 = add i32 %889, 2 ; [#uses=1]
+ %.idx367 = getelementptr [24 x float]* %point, i32 0, i32 %.sum537 ; [#uses=1]
+ %.idx367.val = load float* %.idx367, align 4 ; [#uses=1]
+ %891 = fmul float %normal2.0.0.0, %.val365 ; [#uses=1]
+ %892 = fmul float %normal2.0.1.0, %.idx366.val ; [#uses=1]
+ %893 = fadd float %891, %892 ; [#uses=1]
+ %894 = fmul float %normal2.0.2.0, %.idx367.val ; [#uses=1]
+ %895 = fadd float %893, %894 ; [#uses=1]
+ %896 = fsub float %856, %895 ; [#uses=2]
+ %897 = getelementptr inbounds [8 x float]* %dep, i32 0, i32 %cnum.1594 ; [#uses=1]
+ store float %896, float* %897, align 4
+ %898 = fcmp ult float %896, 0.000000e+00 ; [#uses=1]
+ br i1 %898, label %bb172, label %bb171
+
+bb171: ; preds = %bb170
+ %899 = shl i32 %cnum.1594, 1 ; [#uses=2]
+ %900 = getelementptr inbounds [16 x float]* %ret, i32 0, i32 %899 ; [#uses=1]
+ store float %857, float* %900, align 4
+ %901 = or i32 %899, 1 ; [#uses=1]
+ %902 = getelementptr inbounds [16 x float]* %ret, i32 0, i32 %901 ; [#uses=1]
+ store float %860, float* %902, align 4
+ %903 = add nsw i32 %cnum.1594, 1 ; [#uses=1]
+ br label %bb172
+
+bb172: ; preds = %bb171, %bb170
+ %cnum.0 = phi i32 [ %903, %bb171 ], [ %cnum.1594, %bb170 ] ; [#uses=13]
+ %904 = add nsw i32 %j.2593, 1 ; [#uses=2]
+ %exitcond676 = icmp eq i32 %904, %nr.1.i ; [#uses=1]
+ br i1 %exitcond676, label %bb174, label %bb170
+
+bb174: ; preds = %bb172
+ %905 = icmp slt i32 %cnum.0, 1 ; [#uses=1]
+ br i1 %905, label %bb218, label %bb176
+
+bb176: ; preds = %bb174
+ %906 = icmp slt i32 %cnum.0, %maxc ; [#uses=1]
+ %maxc_addr.0 = select i1 %906, i32 %cnum.0, i32 %maxc ; [#uses=2]
+ %907 = icmp slt i32 %maxc_addr.0, 1 ; [#uses=1]
+ %maxc_addr.1 = select i1 %907, i32 1, i32 %maxc_addr.0 ; [#uses=5]
+ %908 = icmp sgt i32 %cnum.0, %maxc_addr.1 ; [#uses=1]
+ br i1 %908, label %bb198, label %bb181
+
+bb181: ; preds = %bb176
+ %909 = getelementptr inbounds %struct.btActionInterface* %output, i32 0, i32 0 ; [#uses=2]
+ %910 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=2]
+ %911 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=2]
+ %912 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=2]
+ br i1 %643, label %bb.nph581, label %bb.nph576
+
+bb188: ; preds = %bb.nph581, %bb188
+ %j.3580 = phi i32 [ 0, %bb.nph581 ], [ %934, %bb188 ] ; [#uses=3]
+ %tmp648 = mul i32 %j.3580, 3 ; [#uses=3]
+ %scevgep654 = getelementptr [8 x float]* %dep, i32 0, i32 %j.3580 ; [#uses=1]
+ %tmp651 = add i32 %tmp648, 1 ; [#uses=1]
+ %tmp649 = add i32 %tmp648, 2 ; [#uses=1]
+ %scevgep646 = getelementptr [24 x float]* %point, i32 0, i32 %tmp648 ; [#uses=1]
+ %scevgep646.1 = getelementptr [24 x float]* %point, i32 0, i32 %tmp651 ; [#uses=1]
+ %scevgep646.2 = getelementptr [24 x float]* %point, i32 0, i32 %tmp649 ; [#uses=1]
+ %scevgep643 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep644 = getelementptr %struct.btQuadWord* %pointInWorld185, i32 0, i32 0, i32 0 ; [#uses=1]
+ %913 = load float* %scevgep646, align 4 ; [#uses=1]
+ %914 = load float* %scevgep643, align 4 ; [#uses=1]
+ %915 = fadd float %913, %914 ; [#uses=1]
+ store float %915, float* %scevgep644, align 8
+ %scevgep643.1 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep644.1 = getelementptr %struct.btQuadWord* %pointInWorld185, i32 0, i32 0, i32 1 ; [#uses=1]
+ %916 = load float* %scevgep646.1, align 4 ; [#uses=1]
+ %917 = load float* %scevgep643.1, align 4 ; [#uses=1]
+ %918 = fadd float %916, %917 ; [#uses=1]
+ store float %918, float* %scevgep644.1, align 4
+ %scevgep643.2 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep644.2 = getelementptr %struct.btQuadWord* %pointInWorld185, i32 0, i32 0, i32 2 ; [#uses=1]
+ %919 = load float* %scevgep646.2, align 4 ; [#uses=1]
+ %920 = load float* %scevgep643.2, align 4 ; [#uses=1]
+ %921 = fadd float %919, %920 ; [#uses=1]
+ store float %921, float* %scevgep644.2, align 8
+ %922 = load i32 (...)*** %909, align 4 ; [#uses=1]
+ %923 = getelementptr inbounds i32 (...)** %922, i32 4 ; [#uses=1]
+ %924 = load i32 (...)** %923, align 4 ; [#uses=1]
+ %925 = load float* %scevgep654, align 4 ; [#uses=1]
+ %926 = fsub float -0.000000e+00, %925 ; [#uses=1]
+ %927 = load float* %910, align 4 ; [#uses=1]
+ %928 = fsub float -0.000000e+00, %927 ; [#uses=1]
+ %929 = load float* %911, align 4 ; [#uses=1]
+ %930 = fsub float -0.000000e+00, %929 ; [#uses=1]
+ %931 = load float* %912, align 4 ; [#uses=1]
+ %932 = fsub float -0.000000e+00, %931 ; [#uses=1]
+ store float %932, float* %935, align 8
+ store float %930, float* %936, align 4
+ store float %928, float* %937, align 8
+ store float 0.000000e+00, float* %938, align 4
+ %933 = bitcast i32 (...)* %924 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %933(%struct.btActionInterface* %output, %struct.btQuadWord* %4, %struct.btQuadWord* %pointInWorld185, float %926)
+ %934 = add nsw i32 %j.3580, 1 ; [#uses=2]
+ %exitcond647 = icmp eq i32 %934, %cnum.0 ; [#uses=1]
+ br i1 %exitcond647, label %bb217, label %bb188
+
+bb.nph581: ; preds = %bb181
+ %935 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %936 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ %937 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 2 ; [#uses=1]
+ %938 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb188
+
+bb196: ; preds = %bb.nph576, %bb196
+ %j.4575 = phi i32 [ 0, %bb.nph576 ], [ %966, %bb196 ] ; [#uses=3]
+ %tmp635 = mul i32 %j.4575, 3 ; [#uses=3]
+ %tmp638 = add i32 %tmp635, 1 ; [#uses=1]
+ %tmp636 = add i32 %tmp635, 2 ; [#uses=1]
+ %scevgep641 = getelementptr [8 x float]* %dep, i32 0, i32 %j.4575 ; [#uses=1]
+ %scevgep634 = getelementptr [24 x float]* %point, i32 0, i32 %tmp635 ; [#uses=1]
+ %scevgep634.1 = getelementptr [24 x float]* %point, i32 0, i32 %tmp638 ; [#uses=1]
+ %scevgep634.2 = getelementptr [24 x float]* %point, i32 0, i32 %tmp636 ; [#uses=1]
+ %939 = load float* %scevgep641, align 4 ; [#uses=4]
+ %scevgep630 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep632 = getelementptr %struct.btQuadWord* %pointInWorld193, i32 0, i32 0, i32 0 ; [#uses=1]
+ %940 = load float* %scevgep634, align 4 ; [#uses=1]
+ %941 = load float* %scevgep630, align 4 ; [#uses=1]
+ %942 = fadd float %940, %941 ; [#uses=1]
+ %943 = load float* %912, align 4 ; [#uses=2]
+ %944 = fmul float %943, %939 ; [#uses=1]
+ %945 = fsub float %942, %944 ; [#uses=1]
+ store float %945, float* %scevgep632, align 8
+ %scevgep630.1 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep632.1 = getelementptr %struct.btQuadWord* %pointInWorld193, i32 0, i32 0, i32 1 ; [#uses=1]
+ %946 = load float* %scevgep634.1, align 4 ; [#uses=1]
+ %947 = load float* %scevgep630.1, align 4 ; [#uses=1]
+ %948 = fadd float %946, %947 ; [#uses=1]
+ %949 = load float* %911, align 4 ; [#uses=2]
+ %950 = fmul float %949, %939 ; [#uses=1]
+ %951 = fsub float %948, %950 ; [#uses=1]
+ store float %951, float* %scevgep632.1, align 4
+ %scevgep630.2 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep632.2 = getelementptr %struct.btQuadWord* %pointInWorld193, i32 0, i32 0, i32 2 ; [#uses=1]
+ %952 = load float* %scevgep634.2, align 4 ; [#uses=1]
+ %953 = load float* %scevgep630.2, align 4 ; [#uses=1]
+ %954 = fadd float %952, %953 ; [#uses=1]
+ %955 = load float* %910, align 4 ; [#uses=2]
+ %956 = fmul float %955, %939 ; [#uses=1]
+ %957 = fsub float %954, %956 ; [#uses=1]
+ store float %957, float* %scevgep632.2, align 8
+ %958 = load i32 (...)*** %909, align 4 ; [#uses=1]
+ %959 = getelementptr inbounds i32 (...)** %958, i32 4 ; [#uses=1]
+ %960 = load i32 (...)** %959, align 4 ; [#uses=1]
+ %961 = fsub float -0.000000e+00, %939 ; [#uses=1]
+ %962 = fsub float -0.000000e+00, %955 ; [#uses=1]
+ %963 = fsub float -0.000000e+00, %949 ; [#uses=1]
+ %964 = fsub float -0.000000e+00, %943 ; [#uses=1]
+ store float %964, float* %967, align 8
+ store float %963, float* %968, align 4
+ store float %962, float* %969, align 8
+ store float 0.000000e+00, float* %970, align 4
+ %965 = bitcast i32 (...)* %960 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %965(%struct.btActionInterface* %output, %struct.btQuadWord* %3, %struct.btQuadWord* %pointInWorld193, float %961)
+ %966 = add nsw i32 %j.4575, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %966, %cnum.0 ; [#uses=1]
+ br i1 %exitcond, label %bb217, label %bb196
+
+bb.nph576: ; preds = %bb181
+ %967 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %968 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %969 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %970 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb196
+
+bb198: ; preds = %bb176
+ %971 = icmp sgt i32 %cnum.0, 1 ; [#uses=1]
+ br i1 %971, label %bb.nph590, label %bb206
+
+bb.nph590: ; preds = %bb198
+ %972 = getelementptr inbounds [8 x float]* %dep, i32 0, i32 0 ; [#uses=1]
+ %973 = load float* %972, align 4 ; [#uses=1]
+ %tmp667 = add i32 %cnum.0, -1 ; [#uses=1]
+ br label %bb202
+
+bb202: ; preds = %bb202, %bb.nph590
+ %indvar = phi i32 [ 0, %bb.nph590 ], [ %i.13587, %bb202 ] ; [#uses=1]
+ %maxdepth.1589 = phi float [ %973, %bb.nph590 ], [ %maxdepth.0, %bb202 ] ; [#uses=2]
+ %i1.1588 = phi i32 [ 0, %bb.nph590 ], [ %i1.0, %bb202 ] ; [#uses=1]
+ %i.13587 = add i32 %indvar, 1 ; [#uses=4]
+ %scevgep670 = getelementptr [8 x float]* %dep, i32 0, i32 %i.13587 ; [#uses=1]
+ %974 = load float* %scevgep670, align 4 ; [#uses=2]
+ %975 = fcmp ogt float %974, %maxdepth.1589 ; [#uses=2]
+ %i1.0 = select i1 %975, i32 %i.13587, i32 %i1.1588 ; [#uses=2]
+ %maxdepth.0 = select i1 %975, float %974, float %maxdepth.1589 ; [#uses=1]
+ %exitcond668 = icmp eq i32 %i.13587, %tmp667 ; [#uses=1]
+ br i1 %exitcond668, label %bb206, label %bb202
+
+bb206: ; preds = %bb202, %bb198
+ %i1.1.lcssa = phi i32 [ 0, %bb198 ], [ %i1.0, %bb202 ] ; [#uses=1]
+ %976 = getelementptr inbounds [8 x i32]* %iret, i32 0, i32 0 ; [#uses=1]
+ call void @_Z11cullPoints2iPfiiPi(i32 %cnum.0, float* %797, i32 %maxc_addr.1, i32 %i1.1.lcssa, i32* %976) nounwind
+ %977 = icmp sgt i32 %maxc_addr.1, 0 ; [#uses=1]
+ br i1 %977, label %bb.nph586, label %bb217
+
+bb211: ; preds = %bb.nph586, %bb214
+ %j.5585 = phi i32 [ 0, %bb.nph586 ], [ %1017, %bb214 ] ; [#uses=2]
+ %scevgep666 = getelementptr [8 x i32]* %iret, i32 0, i32 %j.5585 ; [#uses=1]
+ %978 = load i32* %scevgep666, align 4 ; [#uses=2]
+ %979 = mul nsw i32 %978, 3 ; [#uses=3]
+ %scevgep656 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep658 = getelementptr [24 x float]* %point, i32 0, i32 %979 ; [#uses=1]
+ %980 = load float* %scevgep658, align 4 ; [#uses=1]
+ %981 = load float* %scevgep656, align 4 ; [#uses=1]
+ %982 = fadd float %980, %981 ; [#uses=1]
+ store float %982, float* %1028, align 8
+ %scevgep656.1 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 1 ; [#uses=1]
+ %tmp.1 = add i32 %979, 1 ; [#uses=1]
+ %scevgep658.1 = getelementptr [24 x float]* %point, i32 0, i32 %tmp.1 ; [#uses=1]
+ %983 = load float* %scevgep658.1, align 4 ; [#uses=1]
+ %984 = load float* %scevgep656.1, align 4 ; [#uses=1]
+ %985 = fadd float %983, %984 ; [#uses=1]
+ store float %985, float* %1027, align 4
+ %scevgep656.2 = getelementptr %struct.btQuadWord* %p1.pn563, i32 0, i32 0, i32 2 ; [#uses=1]
+ %tmp.2 = add i32 %979, 2 ; [#uses=1]
+ %scevgep658.2 = getelementptr [24 x float]* %point, i32 0, i32 %tmp.2 ; [#uses=1]
+ %986 = load float* %scevgep658.2, align 4 ; [#uses=1]
+ %987 = load float* %scevgep656.2, align 4 ; [#uses=1]
+ %988 = fadd float %986, %987 ; [#uses=1]
+ store float %988, float* %1026, align 8
+ %989 = load i32 (...)*** %1018, align 4 ; [#uses=1]
+ %990 = getelementptr inbounds i32 (...)** %989, i32 4 ; [#uses=1]
+ %991 = load i32 (...)** %990, align 4 ; [#uses=2]
+ %992 = getelementptr inbounds [8 x float]* %dep, i32 0, i32 %978 ; [#uses=1]
+ %993 = load float* %992, align 4 ; [#uses=4]
+ %994 = fsub float -0.000000e+00, %993 ; [#uses=2]
+ %995 = load float* %1019, align 4 ; [#uses=3]
+ br i1 %643, label %bb212, label %bb213
+
+bb212: ; preds = %bb211
+ %996 = fsub float -0.000000e+00, %995 ; [#uses=1]
+ %997 = load float* %1020, align 4 ; [#uses=1]
+ %998 = fsub float -0.000000e+00, %997 ; [#uses=1]
+ %999 = load float* %1021, align 4 ; [#uses=1]
+ %1000 = fsub float -0.000000e+00, %999 ; [#uses=1]
+ store float %1000, float* %1022, align 8
+ store float %998, float* %1023, align 4
+ store float %996, float* %1024, align 8
+ store float 0.000000e+00, float* %1025, align 4
+ %1001 = bitcast i32 (...)* %991 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %1001(%struct.btActionInterface* %output, %struct.btQuadWord* %2, %struct.btQuadWord* %posInWorld, float %994)
+ br label %bb214
+
+bb213: ; preds = %bb211
+ %1002 = fmul float %995, %993 ; [#uses=1]
+ %1003 = load float* %1020, align 4 ; [#uses=2]
+ %1004 = fmul float %1003, %993 ; [#uses=1]
+ %1005 = load float* %1021, align 4 ; [#uses=2]
+ %1006 = fmul float %1005, %993 ; [#uses=1]
+ %1007 = load float* %1026, align 8 ; [#uses=1]
+ %1008 = fsub float %1007, %1002 ; [#uses=1]
+ %1009 = load float* %1027, align 4 ; [#uses=1]
+ %1010 = fsub float %1009, %1004 ; [#uses=1]
+ %1011 = load float* %1028, align 8 ; [#uses=1]
+ %1012 = fsub float %1011, %1006 ; [#uses=1]
+ store float %1012, float* %1029, align 8
+ store float %1010, float* %1030, align 4
+ store float %1008, float* %1031, align 8
+ store float 0.000000e+00, float* %1032, align 4
+ %1013 = fsub float -0.000000e+00, %995 ; [#uses=1]
+ %1014 = fsub float -0.000000e+00, %1003 ; [#uses=1]
+ %1015 = fsub float -0.000000e+00, %1005 ; [#uses=1]
+ store float %1015, float* %1033, align 8
+ store float %1014, float* %1034, align 4
+ store float %1013, float* %1035, align 8
+ store float 0.000000e+00, float* %1036, align 4
+ %1016 = bitcast i32 (...)* %991 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %1016(%struct.btActionInterface* %output, %struct.btQuadWord* %0, %struct.btQuadWord* %1, float %994)
+ br label %bb214
+
+bb214: ; preds = %bb213, %bb212
+ %1017 = add nsw i32 %j.5585, 1 ; [#uses=2]
+ %exitcond665 = icmp eq i32 %1017, %smax664 ; [#uses=1]
+ br i1 %exitcond665, label %bb217, label %bb211
+
+bb.nph586: ; preds = %bb206
+ %1018 = getelementptr inbounds %struct.btActionInterface* %output, i32 0, i32 0 ; [#uses=1]
+ %1019 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1020 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=2]
+ %1021 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1022 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1023 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1024 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1025 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1026 = getelementptr inbounds %struct.btQuadWord* %posInWorld, i32 0, i32 0, i32 2 ; [#uses=2]
+ %1027 = getelementptr inbounds %struct.btQuadWord* %posInWorld, i32 0, i32 0, i32 1 ; [#uses=2]
+ %1028 = getelementptr inbounds %struct.btQuadWord* %posInWorld, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1029 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1030 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1031 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1032 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1033 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1034 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1035 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1036 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %tmp659 = xor i32 %cnum.0, -1 ; [#uses=2]
+ %tmp660 = xor i32 %maxc, -1 ; [#uses=2]
+ %tmp661 = icmp sgt i32 %tmp659, %tmp660 ; [#uses=1]
+ %smax = select i1 %tmp661, i32 %tmp659, i32 %tmp660 ; [#uses=1]
+ %tmp662 = xor i32 %smax, -1 ; [#uses=2]
+ %tmp663 = icmp sgt i32 %tmp662, 1 ; [#uses=1]
+ %smax664 = select i1 %tmp663, i32 %tmp662, i32 1 ; [#uses=1]
+ br label %bb211
+
+bb217: ; preds = %bb214, %bb206, %bb196, %bb188
+ %cnum.2 = phi i32 [ %cnum.0, %bb196 ], [ %cnum.0, %bb188 ], [ %maxc_addr.1, %bb214 ], [ %maxc_addr.1, %bb206 ] ; [#uses=1]
+ store i32 %code.14547549, i32* %return_code, align 4
+ ret i32 %cnum.2
+
+bb218: ; preds = %bb174, %_ZL18intersectRectQuad2PfS_S_.exit, %bb70, %bb65, %bb60, %bb55, %bb50, %bb45, %bb40, %bb35, %bb30, %bb25, %bb21, %bb17, %bb13, %bb9, %bb5, %entry
+ ret i32 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN36btDiscreteCollisionDetectorInterface6ResultD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTVN36btDiscreteCollisionDetectorInterface6ResultE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN36btDiscreteCollisionDetectorInterface6ResultD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTVN36btDiscreteCollisionDetectorInterface6ResultE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN21btCollisionDispatcher27registerCollisionCreateFuncEiiP30btCollisionAlgorithmCreateFunc(%struct.btCollisionDispatcher* nocapture %this, i32 %proxyType0, i32 %proxyType1, %struct.btCollisionAlgorithmCreateFunc* %createFunc) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 7, i32 %proxyType0, i32 %proxyType1 ; [#uses=1]
+ store %struct.btCollisionAlgorithmCreateFunc* %createFunc, %struct.btCollisionAlgorithmCreateFunc** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define %struct.btCollisionAlgorithm* @_ZN21btCollisionDispatcher13findAlgorithmEP17btCollisionObjectS1_P20btPersistentManifold(%struct.btCollisionDispatcher* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btPersistentManifold* %sharedManifold) align 2 {
+entry:
+ %ci = alloca %struct.btCollisionAlgorithmConstructionInfo, align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 1 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 0 ; [#uses=1]
+ store %struct.btActionInterface* %2, %struct.btActionInterface** %0, align 8
+ store %struct.btPersistentManifold* %sharedManifold, %struct.btPersistentManifold** %1, align 4
+ %3 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 9 ; [#uses=1]
+ %4 = load %struct.btCollisionShape** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btCollisionShape* %4, i32 0, i32 1 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 9 ; [#uses=1]
+ %8 = load %struct.btCollisionShape** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btCollisionShape* %8, i32 0, i32 1 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 7, i32 %6, i32 %10 ; [#uses=1]
+ %12 = load %struct.btCollisionAlgorithmCreateFunc** %11, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %12, i32 0, i32 0 ; [#uses=1]
+ %14 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds i32 (...)** %14, i32 2 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to %struct.btCollisionAlgorithm* (%struct.btCollisionAlgorithmCreateFunc*, %struct.btCollisionAlgorithmConstructionInfo*, %struct.btCollisionObject*, %struct.btCollisionObject*)* ; [#uses=1]
+ %18 = call %struct.btCollisionAlgorithm* %17(%struct.btCollisionAlgorithmCreateFunc* %12, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) ; [#uses=1]
+ ret %struct.btCollisionAlgorithm* %18
+}
+
+; [#uses=1]
+define zeroext i8 @_ZN21btCollisionDispatcher13needsResponseEP17btCollisionObjectS1_(%struct.btCollisionDispatcher* nocapture %this, %struct.btCollisionObject* nocapture %body0, %struct.btCollisionObject* nocapture %body1) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 12 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %.lobit.i = and i32 %1, 4 ; [#uses=1]
+ %toBoolnot = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb, label %bb26
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 12 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %.lobit.i32 = and i32 %3, 4 ; [#uses=1]
+ %toBool4not = icmp eq i32 %.lobit.i32, 0 ; [#uses=1]
+ br i1 %toBool4not, label %bb15, label %bb26
+
+bb15: ; preds = %bb
+ %4 = and i32 %1, 3 ; [#uses=1]
+ %5 = icmp eq i32 %4, 0 ; [#uses=1]
+ br i1 %5, label %bb27, label %bb20
+
+bb20: ; preds = %bb15
+ %6 = and i32 %3, 3 ; [#uses=1]
+ %toBool21not = icmp eq i32 %6, 0 ; [#uses=1]
+ %retval = zext i1 %toBool21not to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb26: ; preds = %bb, %entry
+ ret i8 0
+
+bb27: ; preds = %bb15
+ ret i8 1
+}
+
+; [#uses=1]
+define zeroext i8 @_ZN21btCollisionDispatcher14needsCollisionEP17btCollisionObjectS1_(%struct.btCollisionDispatcher* nocapture %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 15 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ switch i32 %1, label %bb15 [
+ i32 2, label %bb
+ i32 5, label %bb
+ ]
+
+bb: ; preds = %entry, %entry
+ %2 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 15 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ switch i32 %3, label %bb15 [
+ i32 2, label %bb24
+ i32 5, label %bb24
+ ]
+
+bb15: ; preds = %bb, %entry
+ %4 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 24 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp eq i32 %5, 0 ; [#uses=1]
+ br i1 %6, label %_ZN17btCollisionObject16checkCollideWithEPS_.exit, label %bb.i27
+
+bb.i27: ; preds = %bb15
+ %7 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to i8 (%struct.btCollisionObject*, %struct.btCollisionObject*)* ; [#uses=1]
+ %11 = tail call zeroext i8 %10(%struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) ; [#uses=1]
+ %phitmp34 = icmp eq i8 %11, 0 ; [#uses=1]
+ br label %_ZN17btCollisionObject16checkCollideWithEPS_.exit
+
+_ZN17btCollisionObject16checkCollideWithEPS_.exit: ; preds = %bb.i27, %bb15
+ %12 = phi i1 [ %phitmp34, %bb.i27 ], [ false, %bb15 ] ; [#uses=1]
+ %13 = zext i1 %12 to i8 ; [#uses=1]
+ %retval = xor i8 %13, 1 ; [#uses=1]
+ ret i8 %retval
+
+bb24: ; preds = %bb, %bb
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btCollisionPairCallbackD1Ev(%struct.btCollisionPairCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionPairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btCollisionPairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btCollisionPairCallbackD0Ev(%struct.btCollisionPairCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionPairCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btCollisionPairCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btCollisionPairCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZN23btCollisionPairCallback14processOverlapER16btBroadphasePair(%struct.btCollisionPairCallback* nocapture %this, %struct.btBroadphasePair* %pair) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionPairCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %1 = load %struct.btCollisionDispatcher** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btCollisionDispatcher* %1, i32 0, i32 4 ; [#uses=1]
+ %3 = load void (%struct.btBroadphasePair*, %struct.btCollisionDispatcher*, %struct.btDispatcherInfo*)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btCollisionPairCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %5 = load %struct.btDispatcherInfo** %4, align 4 ; [#uses=1]
+ tail call void %3(%struct.btBroadphasePair* %pair, %struct.btCollisionDispatcher* %1, %struct.btDispatcherInfo* %5)
+ ret i8 0
+}
+
+; [#uses=1]
+define void @_ZN21btCollisionDispatcher25dispatchAllCollisionPairsEP22btOverlappingPairCacheRK16btDispatcherInfoP12btDispatcher(%struct.btCollisionDispatcher* %this, %struct..0btMultiSapOverlapFilterCallback* %pairCache, %struct.btDispatcherInfo* %dispatchInfo, %struct.btActionInterface* %dispatcher) align 2 {
+entry:
+ %collisionCallback = alloca %struct.btCollisionPairCallback, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btCollisionPairCallback* %collisionCallback, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btCollisionPairCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ %1 = getelementptr inbounds %struct.btCollisionPairCallback* %collisionCallback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btDispatcherInfo* %dispatchInfo, %struct.btDispatcherInfo** %1, align 4
+ %2 = getelementptr inbounds %struct.btCollisionPairCallback* %collisionCallback, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionDispatcher* %this, %struct.btCollisionDispatcher** %2, align 8
+ %3 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %pairCache, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32 (...)** %4, i32 12 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = bitcast i32 (...)* %6 to void (%struct..0btMultiSapOverlapFilterCallback*, %struct.btActionInterface*, %struct.btActionInterface*)* ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btCollisionPairCallback* %collisionCallback, i32 0, i32 0 ; [#uses=1]
+ call void %7(%struct..0btMultiSapOverlapFilterCallback* %pairCache, %struct.btActionInterface* %8, %struct.btActionInterface* %dispatcher)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK21btCollisionDispatcher15getNumManifoldsEv(%struct.btCollisionDispatcher* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btPersistentManifold** @_ZN21btCollisionDispatcher26getInternalManifoldPointerEv(%struct.btCollisionDispatcher* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %1 = load %struct.btPersistentManifold*** %0, align 4 ; [#uses=1]
+ ret %struct.btPersistentManifold** %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btPersistentManifold* @_ZN21btCollisionDispatcher26getManifoldByIndexInternalEi(%struct.btCollisionDispatcher* nocapture %this, i32 %index) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %1 = load %struct.btPersistentManifold*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btPersistentManifold** %1, i32 %index ; [#uses=1]
+ %3 = load %struct.btPersistentManifold** %2, align 4 ; [#uses=1]
+ ret %struct.btPersistentManifold* %3
+}
+
+; [#uses=1]
+define void @_ZN21btCollisionDispatcher22freeCollisionAlgorithmEPv(%struct.btCollisionDispatcher* nocapture %this, i8* %ptr) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 5 ; [#uses=1]
+ %1 = load %struct.btPoolAllocator** %0, align 4 ; [#uses=5]
+ %2 = icmp eq i8* %ptr, null ; [#uses=1]
+ br i1 %2, label %bb1, label %bb.i
+
+bb.i: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btPoolAllocator* %1, i32 0, i32 4 ; [#uses=1]
+ %4 = load i8** %3, align 4 ; [#uses=2]
+ %5 = icmp ugt i8* %4, %ptr ; [#uses=1]
+ br i1 %5, label %bb1, label %_ZN15btPoolAllocator8validPtrEPv.exit
+
+_ZN15btPoolAllocator8validPtrEPv.exit: ; preds = %bb.i
+ %6 = getelementptr inbounds %struct.btPoolAllocator* %1, i32 0, i32 1 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btPoolAllocator* %1, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %10 = mul nsw i32 %9, %7 ; [#uses=1]
+ %11 = getelementptr inbounds i8* %4, i32 %10 ; [#uses=1]
+ %phitmp = icmp ugt i8* %11, %ptr ; [#uses=1]
+ br i1 %phitmp, label %_ZN15btPoolAllocator10freeMemoryEPv.exit, label %bb1
+
+_ZN15btPoolAllocator10freeMemoryEPv.exit: ; preds = %_ZN15btPoolAllocator8validPtrEPv.exit
+ %12 = bitcast i8* %ptr to i8** ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btPoolAllocator* %1, i32 0, i32 3 ; [#uses=2]
+ %14 = load i8** %13, align 4 ; [#uses=1]
+ store i8* %14, i8** %12, align 4
+ store i8* %ptr, i8** %13, align 4
+ %15 = getelementptr inbounds %struct.btPoolAllocator* %1, i32 0, i32 2 ; [#uses=2]
+ %16 = load i32* %15, align 4 ; [#uses=1]
+ %17 = add nsw i32 %16, 1 ; [#uses=1]
+ store i32 %17, i32* %15, align 4
+ ret void
+
+bb1: ; preds = %_ZN15btPoolAllocator8validPtrEPv.exit, %bb.i, %entry
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %ptr)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btCollisionDispatcher15releaseManifoldEP20btPersistentManifold(%struct.btCollisionDispatcher* %this, %struct.btPersistentManifold* %manifold) align 2 {
+entry:
+ %0 = load i32* @gNumManifold, align 4 ; [#uses=1]
+ %1 = add nsw i32 %0, -1 ; [#uses=1]
+ store i32 %1, i32* @gNumManifold, align 4
+ %2 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 5 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btCollisionDispatcher*, %struct.btPersistentManifold*)* ; [#uses=1]
+ tail call void %6(%struct.btCollisionDispatcher* %this, %struct.btPersistentManifold* %manifold)
+ %7 = getelementptr inbounds %struct.btPersistentManifold* %manifold, i32 0, i32 9 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=3]
+ %9 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 1 ; [#uses=3]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = add nsw i32 %10, -1 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %13 = load %struct.btPersistentManifold*** %12, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btPersistentManifold** %13, i32 %8 ; [#uses=2]
+ %15 = load %struct.btPersistentManifold** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btPersistentManifold** %13, i32 %11 ; [#uses=1]
+ %17 = load %struct.btPersistentManifold** %16, align 4 ; [#uses=1]
+ store %struct.btPersistentManifold* %17, %struct.btPersistentManifold** %14, align 4
+ %18 = load %struct.btPersistentManifold*** %12, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btPersistentManifold** %18, i32 %11 ; [#uses=1]
+ store %struct.btPersistentManifold* %15, %struct.btPersistentManifold** %19, align 4
+ %20 = load %struct.btPersistentManifold*** %12, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btPersistentManifold** %20, i32 %8 ; [#uses=1]
+ %22 = load %struct.btPersistentManifold** %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btPersistentManifold* %22, i32 0, i32 9 ; [#uses=1]
+ store i32 %8, i32* %23, align 4
+ %24 = load i32* %9, align 4 ; [#uses=1]
+ %25 = add nsw i32 %24, -1 ; [#uses=1]
+ store i32 %25, i32* %9, align 4
+ %26 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 6 ; [#uses=1]
+ %27 = load %struct.btPoolAllocator** %26, align 4 ; [#uses=5]
+ %28 = bitcast %struct.btPersistentManifold* %manifold to i8* ; [#uses=4]
+ %29 = icmp eq %struct.btPersistentManifold* %manifold, null ; [#uses=1]
+ br i1 %29, label %bb1, label %bb.i3
+
+bb.i3: ; preds = %entry
+ %30 = getelementptr inbounds %struct.btPoolAllocator* %27, i32 0, i32 4 ; [#uses=1]
+ %31 = load i8** %30, align 4 ; [#uses=2]
+ %32 = icmp ugt i8* %31, %28 ; [#uses=1]
+ br i1 %32, label %bb1, label %_ZN15btPoolAllocator8validPtrEPv.exit
+
+_ZN15btPoolAllocator8validPtrEPv.exit: ; preds = %bb.i3
+ %33 = getelementptr inbounds %struct.btPoolAllocator* %27, i32 0, i32 1 ; [#uses=1]
+ %34 = load i32* %33, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btPoolAllocator* %27, i32 0, i32 0 ; [#uses=1]
+ %36 = load i32* %35, align 4 ; [#uses=1]
+ %37 = mul nsw i32 %36, %34 ; [#uses=1]
+ %38 = getelementptr inbounds i8* %31, i32 %37 ; [#uses=1]
+ %phitmp = icmp ugt i8* %38, %28 ; [#uses=1]
+ br i1 %phitmp, label %_ZN15btPoolAllocator10freeMemoryEPv.exit, label %bb1
+
+_ZN15btPoolAllocator10freeMemoryEPv.exit: ; preds = %_ZN15btPoolAllocator8validPtrEPv.exit
+ %39 = getelementptr inbounds %struct.btPoolAllocator* %27, i32 0, i32 3 ; [#uses=2]
+ %40 = load i8** %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btPersistentManifold* %manifold, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.c = ptrtoint i8* %40 to i32 ; [#uses=1]
+ store i32 %.c, i32* %41, align 4
+ store i8* %28, i8** %39, align 4
+ %42 = getelementptr inbounds %struct.btPoolAllocator* %27, i32 0, i32 2 ; [#uses=2]
+ %43 = load i32* %42, align 4 ; [#uses=1]
+ %44 = add nsw i32 %43, 1 ; [#uses=1]
+ store i32 %44, i32* %42, align 4
+ ret void
+
+bb1: ; preds = %_ZN15btPoolAllocator8validPtrEPv.exit, %bb.i3, %entry
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %28)
+ ret void
+}
+
+; [#uses=1]
+define i8* @_ZN21btCollisionDispatcher26allocateCollisionAlgorithmEi(%struct.btCollisionDispatcher* nocapture %this, i32 %size) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 5 ; [#uses=1]
+ %1 = load %struct.btPoolAllocator** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btPoolAllocator* %1, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, 0 ; [#uses=1]
+ br i1 %4, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btPoolAllocator* %1, i32 0, i32 3 ; [#uses=2]
+ %6 = load i8** %5, align 4 ; [#uses=2]
+ %7 = bitcast i8* %6 to i8** ; [#uses=1]
+ %8 = load i8** %7, align 4 ; [#uses=1]
+ store i8* %8, i8** %5, align 4
+ %9 = add nsw i32 %3, -1 ; [#uses=1]
+ store i32 %9, i32* %2, align 4
+ ret i8* %6
+
+bb1: ; preds = %entry
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %size, i32 16) ; [#uses=1]
+ ret i8* %10
+}
+
+; [#uses=1]
+define %struct.btPersistentManifold* @_ZN21btCollisionDispatcher14getNewManifoldEPvS0_(%struct.btCollisionDispatcher* nocapture %this, i8* %b0, i8* %b1) align 2 {
+entry:
+ %0 = alloca float, align 4 ; [#uses=2]
+ %1 = alloca float, align 4 ; [#uses=2]
+ %2 = load i32* @gNumManifold, align 4 ; [#uses=1]
+ %3 = add nsw i32 %2, 1 ; [#uses=1]
+ store i32 %3, i32* @gNumManifold, align 4
+ %4 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 1 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = and i32 %5, 2 ; [#uses=1]
+ %7 = icmp eq i32 %6, 0 ; [#uses=1]
+ br i1 %7, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %8 = getelementptr inbounds i8* %b1, i32 192 ; [#uses=1]
+ %9 = bitcast i8* %8 to %struct.btCollisionShape** ; [#uses=1]
+ %10 = load %struct.btCollisionShape** %9, align 4 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btCollisionShape* %10, i32 0, i32 0 ; [#uses=1]
+ %12 = load i32 (...)*** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 5 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = load float* @gContactBreakingThreshold, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %14 to float (%struct.btCollisionShape*, float)* ; [#uses=1]
+ %17 = call float %16(%struct.btCollisionShape* %10, float %15) ; [#uses=2]
+ store float %17, float* %1, align 4
+ %18 = getelementptr inbounds i8* %b0, i32 192 ; [#uses=1]
+ %19 = bitcast i8* %18 to %struct.btCollisionShape** ; [#uses=1]
+ %20 = load %struct.btCollisionShape** %19, align 4 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btCollisionShape* %20, i32 0, i32 0 ; [#uses=1]
+ %22 = load i32 (...)*** %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds i32 (...)** %22, i32 5 ; [#uses=1]
+ %24 = load i32 (...)** %23, align 4 ; [#uses=1]
+ %25 = load float* @gContactBreakingThreshold, align 4 ; [#uses=1]
+ %26 = bitcast i32 (...)* %24 to float (%struct.btCollisionShape*, float)* ; [#uses=1]
+ %27 = call float %26(%struct.btCollisionShape* %20, float %25) ; [#uses=2]
+ store float %27, float* %0, align 4
+ %28 = fcmp olt float %27, %17 ; [#uses=1]
+ %iftmp.197.0.i = select i1 %28, float* %0, float* %1 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb, %entry
+ %iftmp.179.0.in = phi float* [ %iftmp.197.0.i, %bb ], [ @gContactBreakingThreshold, %entry ] ; [#uses=1]
+ %iftmp.179.0 = load float* %iftmp.179.0.in, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds i8* %b1, i32 184 ; [#uses=1]
+ %30 = bitcast i8* %29 to float* ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=2]
+ %32 = getelementptr inbounds i8* %b0, i32 184 ; [#uses=1]
+ %33 = bitcast i8* %32 to float* ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ %35 = fcmp olt float %34, %31 ; [#uses=1]
+ %36 = select i1 %35, float %34, float %31 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 6 ; [#uses=1]
+ %38 = load %struct.btPoolAllocator** %37, align 4 ; [#uses=2]
+ %39 = getelementptr inbounds %struct.btPoolAllocator* %38, i32 0, i32 2 ; [#uses=2]
+ %40 = load i32* %39, align 4 ; [#uses=2]
+ %41 = icmp eq i32 %40, 0 ; [#uses=1]
+ br i1 %41, label %bb4, label %bb3
+
+bb3: ; preds = %bb2
+ %42 = getelementptr inbounds %struct.btPoolAllocator* %38, i32 0, i32 3 ; [#uses=2]
+ %43 = load i8** %42, align 4 ; [#uses=2]
+ %44 = bitcast i8* %43 to i8** ; [#uses=1]
+ %45 = load i8** %44, align 4 ; [#uses=1]
+ store i8* %45, i8** %42, align 4
+ %46 = add nsw i32 %40, -1 ; [#uses=1]
+ store i32 %46, i32* %39, align 4
+ br label %bb5
+
+bb4: ; preds = %bb2
+ %47 = call i8* @_Z22btAlignedAllocInternalji(i32 1140, i32 16) ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ %mem.0 = phi i8* [ %43, %bb3 ], [ %47, %bb4 ] ; [#uses=48]
+ %48 = bitcast i8* %mem.0 to %struct.btPersistentManifold* ; [#uses=2]
+ %49 = bitcast i8* %mem.0 to i32* ; [#uses=1]
+ store i32 1, i32* %49, align 4
+ %scevgep.i = getelementptr i8* %mem.0, i32 112 ; [#uses=1]
+ %50 = bitcast i8* %scevgep.i to i8** ; [#uses=1]
+ %scevgep6.i = getelementptr i8* %mem.0, i32 116 ; [#uses=1]
+ %51 = bitcast i8* %scevgep6.i to float* ; [#uses=1]
+ %52 = getelementptr i8* %mem.0, i32 120 ; [#uses=1]
+ %scevgep8.i = getelementptr i8* %mem.0, i32 124 ; [#uses=1]
+ %53 = bitcast i8* %scevgep8.i to float* ; [#uses=1]
+ %scevgep9.i = getelementptr i8* %mem.0, i32 128 ; [#uses=1]
+ %54 = bitcast i8* %scevgep9.i to float* ; [#uses=1]
+ %scevgep10.i = getelementptr i8* %mem.0, i32 132 ; [#uses=1]
+ %55 = bitcast i8* %scevgep10.i to float* ; [#uses=1]
+ %scevgep11.i = getelementptr i8* %mem.0, i32 136 ; [#uses=1]
+ %56 = bitcast i8* %scevgep11.i to float* ; [#uses=1]
+ %scevgep12.i = getelementptr i8* %mem.0, i32 140 ; [#uses=1]
+ %57 = bitcast i8* %scevgep12.i to float* ; [#uses=1]
+ %scevgep13.i = getelementptr i8* %mem.0, i32 144 ; [#uses=1]
+ %58 = bitcast i8* %scevgep13.i to float* ; [#uses=1]
+ %scevgep14.i = getelementptr i8* %mem.0, i32 148 ; [#uses=1]
+ %59 = bitcast i8* %scevgep14.i to i32* ; [#uses=1]
+ store i8* null, i8** %50, align 4
+ store float 0.000000e+00, float* %51, align 4
+ store i8 0, i8* %52, align 4
+ store float 0.000000e+00, float* %53, align 4
+ store float 0.000000e+00, float* %54, align 4
+ store float 0.000000e+00, float* %55, align 4
+ store float 0.000000e+00, float* %56, align 4
+ store float 0.000000e+00, float* %57, align 4
+ store float 0.000000e+00, float* %58, align 4
+ store i32 0, i32* %59, align 4
+ %scevgep.1.i = getelementptr i8* %mem.0, i32 388 ; [#uses=1]
+ %60 = bitcast i8* %scevgep.1.i to i8** ; [#uses=1]
+ %scevgep6.1.i = getelementptr i8* %mem.0, i32 392 ; [#uses=1]
+ %61 = bitcast i8* %scevgep6.1.i to float* ; [#uses=1]
+ %62 = getelementptr i8* %mem.0, i32 396 ; [#uses=1]
+ %scevgep8.1.i = getelementptr i8* %mem.0, i32 400 ; [#uses=1]
+ %63 = bitcast i8* %scevgep8.1.i to float* ; [#uses=1]
+ %scevgep9.1.i = getelementptr i8* %mem.0, i32 404 ; [#uses=1]
+ %64 = bitcast i8* %scevgep9.1.i to float* ; [#uses=1]
+ %scevgep10.1.i = getelementptr i8* %mem.0, i32 408 ; [#uses=1]
+ %65 = bitcast i8* %scevgep10.1.i to float* ; [#uses=1]
+ %scevgep11.1.i = getelementptr i8* %mem.0, i32 412 ; [#uses=1]
+ %66 = bitcast i8* %scevgep11.1.i to float* ; [#uses=1]
+ %scevgep12.1.i = getelementptr i8* %mem.0, i32 416 ; [#uses=1]
+ %67 = bitcast i8* %scevgep12.1.i to float* ; [#uses=1]
+ %scevgep13.1.i = getelementptr i8* %mem.0, i32 420 ; [#uses=1]
+ %68 = bitcast i8* %scevgep13.1.i to float* ; [#uses=1]
+ %scevgep14.1.i = getelementptr i8* %mem.0, i32 424 ; [#uses=1]
+ %69 = bitcast i8* %scevgep14.1.i to i32* ; [#uses=1]
+ store i8* null, i8** %60, align 4
+ store float 0.000000e+00, float* %61, align 4
+ store i8 0, i8* %62, align 4
+ store float 0.000000e+00, float* %63, align 4
+ store float 0.000000e+00, float* %64, align 4
+ store float 0.000000e+00, float* %65, align 4
+ store float 0.000000e+00, float* %66, align 4
+ store float 0.000000e+00, float* %67, align 4
+ store float 0.000000e+00, float* %68, align 4
+ store i32 0, i32* %69, align 4
+ %scevgep.2.i = getelementptr i8* %mem.0, i32 664 ; [#uses=1]
+ %70 = bitcast i8* %scevgep.2.i to i8** ; [#uses=1]
+ %scevgep6.2.i = getelementptr i8* %mem.0, i32 668 ; [#uses=1]
+ %71 = bitcast i8* %scevgep6.2.i to float* ; [#uses=1]
+ %72 = getelementptr i8* %mem.0, i32 672 ; [#uses=1]
+ %scevgep8.2.i = getelementptr i8* %mem.0, i32 676 ; [#uses=1]
+ %73 = bitcast i8* %scevgep8.2.i to float* ; [#uses=1]
+ %scevgep9.2.i = getelementptr i8* %mem.0, i32 680 ; [#uses=1]
+ %74 = bitcast i8* %scevgep9.2.i to float* ; [#uses=1]
+ %scevgep10.2.i = getelementptr i8* %mem.0, i32 684 ; [#uses=1]
+ %75 = bitcast i8* %scevgep10.2.i to float* ; [#uses=1]
+ %scevgep11.2.i = getelementptr i8* %mem.0, i32 688 ; [#uses=1]
+ %76 = bitcast i8* %scevgep11.2.i to float* ; [#uses=1]
+ %scevgep12.2.i = getelementptr i8* %mem.0, i32 692 ; [#uses=1]
+ %77 = bitcast i8* %scevgep12.2.i to float* ; [#uses=1]
+ %scevgep13.2.i = getelementptr i8* %mem.0, i32 696 ; [#uses=1]
+ %78 = bitcast i8* %scevgep13.2.i to float* ; [#uses=1]
+ %scevgep14.2.i = getelementptr i8* %mem.0, i32 700 ; [#uses=1]
+ %79 = bitcast i8* %scevgep14.2.i to i32* ; [#uses=1]
+ store i8* null, i8** %70, align 4
+ store float 0.000000e+00, float* %71, align 4
+ store i8 0, i8* %72, align 4
+ store float 0.000000e+00, float* %73, align 4
+ store float 0.000000e+00, float* %74, align 4
+ store float 0.000000e+00, float* %75, align 4
+ store float 0.000000e+00, float* %76, align 4
+ store float 0.000000e+00, float* %77, align 4
+ store float 0.000000e+00, float* %78, align 4
+ store i32 0, i32* %79, align 4
+ %scevgep.3.i = getelementptr i8* %mem.0, i32 940 ; [#uses=1]
+ %80 = bitcast i8* %scevgep.3.i to i8** ; [#uses=1]
+ %scevgep6.3.i = getelementptr i8* %mem.0, i32 944 ; [#uses=1]
+ %81 = bitcast i8* %scevgep6.3.i to float* ; [#uses=1]
+ %82 = getelementptr i8* %mem.0, i32 948 ; [#uses=1]
+ %scevgep8.3.i = getelementptr i8* %mem.0, i32 952 ; [#uses=1]
+ %83 = bitcast i8* %scevgep8.3.i to float* ; [#uses=1]
+ %scevgep9.3.i = getelementptr i8* %mem.0, i32 956 ; [#uses=1]
+ %84 = bitcast i8* %scevgep9.3.i to float* ; [#uses=1]
+ %scevgep10.3.i = getelementptr i8* %mem.0, i32 960 ; [#uses=1]
+ %85 = bitcast i8* %scevgep10.3.i to float* ; [#uses=1]
+ %scevgep11.3.i = getelementptr i8* %mem.0, i32 964 ; [#uses=1]
+ %86 = bitcast i8* %scevgep11.3.i to float* ; [#uses=1]
+ %scevgep12.3.i = getelementptr i8* %mem.0, i32 968 ; [#uses=1]
+ %87 = bitcast i8* %scevgep12.3.i to float* ; [#uses=1]
+ %scevgep13.3.i = getelementptr i8* %mem.0, i32 972 ; [#uses=1]
+ %88 = bitcast i8* %scevgep13.3.i to float* ; [#uses=1]
+ %scevgep14.3.i = getelementptr i8* %mem.0, i32 976 ; [#uses=1]
+ %89 = bitcast i8* %scevgep14.3.i to i32* ; [#uses=1]
+ store i8* null, i8** %80, align 4
+ store float 0.000000e+00, float* %81, align 4
+ store i8 0, i8* %82, align 4
+ store float 0.000000e+00, float* %83, align 4
+ store float 0.000000e+00, float* %84, align 4
+ store float 0.000000e+00, float* %85, align 4
+ store float 0.000000e+00, float* %86, align 4
+ store float 0.000000e+00, float* %87, align 4
+ store float 0.000000e+00, float* %88, align 4
+ store i32 0, i32* %89, align 4
+ %90 = getelementptr inbounds i8* %mem.0, i32 1108 ; [#uses=1]
+ %91 = bitcast i8* %90 to i8** ; [#uses=1]
+ store i8* %b0, i8** %91, align 4
+ %92 = getelementptr inbounds i8* %mem.0, i32 1112 ; [#uses=1]
+ %93 = bitcast i8* %92 to i8** ; [#uses=1]
+ store i8* %b1, i8** %93, align 4
+ %94 = getelementptr inbounds i8* %mem.0, i32 1116 ; [#uses=1]
+ %95 = bitcast i8* %94 to i32* ; [#uses=1]
+ store i32 0, i32* %95, align 4
+ %96 = getelementptr inbounds i8* %mem.0, i32 1120 ; [#uses=1]
+ %97 = bitcast i8* %96 to float* ; [#uses=1]
+ store float %iftmp.179.0, float* %97, align 4
+ %98 = getelementptr inbounds i8* %mem.0, i32 1124 ; [#uses=1]
+ %99 = bitcast i8* %98 to float* ; [#uses=1]
+ store float %36, float* %99, align 4
+ %100 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 1 ; [#uses=6]
+ %101 = load i32* %100, align 4 ; [#uses=1]
+ %102 = getelementptr inbounds i8* %mem.0, i32 1136 ; [#uses=1]
+ %103 = bitcast i8* %102 to i32* ; [#uses=1]
+ store i32 %101, i32* %103, align 4
+ %104 = load i32* %100, align 4 ; [#uses=6]
+ %105 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 2 ; [#uses=2]
+ %106 = load i32* %105, align 4 ; [#uses=2]
+ %107 = icmp eq i32 %106, %104 ; [#uses=1]
+ br i1 %107, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb5
+ %108 = icmp eq i32 %104, 0 ; [#uses=1]
+ %109 = shl i32 %104, 1 ; [#uses=1]
+ %iftmp.201.0.i.i = select i1 %108, i32 1, i32 %109 ; [#uses=4]
+ %110 = icmp slt i32 %106, %iftmp.201.0.i.i ; [#uses=1]
+ br i1 %110, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %111 = icmp eq i32 %iftmp.201.0.i.i, 0 ; [#uses=1]
+ br i1 %111, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %112 = shl i32 %iftmp.201.0.i.i, 2 ; [#uses=1]
+ %113 = call i8* @_Z22btAlignedAllocInternalji(i32 %112, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %113 to %struct.btPersistentManifold** ; [#uses=1]
+ %.pre.i = load i32* %100, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %114 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %104, %bb.i.i ] ; [#uses=2]
+ %115 = phi %struct.btPersistentManifold** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %116 = icmp sgt i32 %114, 0 ; [#uses=1]
+ br i1 %116, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i
+ %117 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btPersistentManifold** %115, i32 %indvar.i.i.i ; [#uses=2]
+ %118 = icmp eq %struct.btPersistentManifold** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %118, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %119 = load %struct.btPersistentManifold*** %117, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btPersistentManifold** %119, i32 %indvar.i.i.i ; [#uses=1]
+ %120 = load %struct.btPersistentManifold** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btPersistentManifold* %120, %struct.btPersistentManifold** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %114 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i
+ %121 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %122 = load %struct.btPersistentManifold*** %121, align 4 ; [#uses=2]
+ %123 = icmp eq %struct.btPersistentManifold** %122, null ; [#uses=1]
+ br i1 %123, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i
+ %124 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %125 = load i8* %124, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %125, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %126 = bitcast %struct.btPersistentManifold** %122 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %126)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %121, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i
+ %127 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %127, align 4
+ store %struct.btPersistentManifold** %115, %struct.btPersistentManifold*** %121, align 4
+ store i32 %iftmp.201.0.i.i, i32* %105, align 4
+ %.pre5.i = load i32* %100, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i.i, %bb.i, %bb5
+ %128 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i.i ], [ %104, %bb5 ], [ %104, %bb.i ] ; [#uses=2]
+ %129 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %130 = load %struct.btPersistentManifold*** %129, align 4 ; [#uses=1]
+ %131 = getelementptr inbounds %struct.btPersistentManifold** %130, i32 %128 ; [#uses=2]
+ %132 = icmp eq %struct.btPersistentManifold** %131, null ; [#uses=1]
+ br i1 %132, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %struct.btPersistentManifold* %48, %struct.btPersistentManifold** %131, align 4
+ %.pre6.i = load i32* %100, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_.exit: ; preds = %bb2.i, %bb1.i
+ %133 = phi i32 [ %128, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %134 = add nsw i32 %133, 1 ; [#uses=1]
+ store i32 %134, i32* %100, align 4
+ ret %struct.btPersistentManifold* %48
+}
+
+; [#uses=1]
+define void @_ZN21btCollisionDispatcher19defaultNearCallbackER16btBroadphasePairRS_RK16btDispatcherInfo(%struct.btBroadphasePair* nocapture %collisionPair, %struct.btCollisionDispatcher* %dispatcher, %struct.btDispatcherInfo* %dispatchInfo) align 2 {
+entry:
+ %contactPointResult = alloca %struct.btManifoldResult, align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.btBroadphasePair* %collisionPair, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btBroadphaseProxy** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btBroadphaseProxy* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i8** %2, align 4 ; [#uses=1]
+ %4 = bitcast i8* %3 to %struct.btCollisionObject* ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btBroadphasePair* %collisionPair, i32 0, i32 1 ; [#uses=1]
+ %6 = load %struct.btBroadphaseProxy** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = load i8** %7, align 4 ; [#uses=1]
+ %9 = bitcast i8* %8 to %struct.btCollisionObject* ; [#uses=5]
+ %10 = getelementptr inbounds %struct.btCollisionDispatcher* %dispatcher, i32 0, i32 0, i32 0 ; [#uses=2]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 6 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to i8 (%struct.btCollisionDispatcher*, %struct.btCollisionObject*, %struct.btCollisionObject*)* ; [#uses=1]
+ %15 = call zeroext i8 %14(%struct.btCollisionDispatcher* %dispatcher, %struct.btCollisionObject* %4, %struct.btCollisionObject* %9) ; [#uses=1]
+ %toBool = icmp eq i8 %15, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %16 = getelementptr inbounds %struct.btBroadphasePair* %collisionPair, i32 0, i32 2 ; [#uses=3]
+ %17 = load %struct.btCollisionAlgorithm** %16, align 4 ; [#uses=1]
+ %18 = icmp eq %struct.btCollisionAlgorithm* %17, null ; [#uses=1]
+ br i1 %18, label %bb2, label %bb3
+
+bb2: ; preds = %bb
+ %19 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i32 (...)** %19, i32 2 ; [#uses=1]
+ %21 = load i32 (...)** %20, align 4 ; [#uses=1]
+ %22 = bitcast i32 (...)* %21 to %struct.btCollisionAlgorithm* (%struct.btCollisionDispatcher*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btPersistentManifold*)* ; [#uses=1]
+ %23 = call %struct.btCollisionAlgorithm* %22(%struct.btCollisionDispatcher* %dispatcher, %struct.btCollisionObject* %4, %struct.btCollisionObject* %9, %struct.btPersistentManifold* null) ; [#uses=2]
+ store %struct.btCollisionAlgorithm* %23, %struct.btCollisionAlgorithm** %16, align 4
+ %24 = icmp eq %struct.btCollisionAlgorithm* %23, null ; [#uses=1]
+ br i1 %24, label %return, label %bb3
+
+bb3: ; preds = %bb2, %bb
+ call void @_ZN16btManifoldResultC1EP17btCollisionObjectS1_(%struct.btManifoldResult* %contactPointResult, %struct.btCollisionObject* %4, %struct.btCollisionObject* %9)
+ %25 = getelementptr inbounds %struct.btDispatcherInfo* %dispatchInfo, i32 0, i32 2 ; [#uses=1]
+ %26 = load i32* %25, align 4 ; [#uses=1]
+ %27 = icmp eq i32 %26, 1 ; [#uses=1]
+ %28 = load %struct.btCollisionAlgorithm** %16, align 4 ; [#uses=3]
+ %29 = getelementptr inbounds %struct.btCollisionAlgorithm* %28, i32 0, i32 0 ; [#uses=1]
+ %30 = load i32 (...)*** %29, align 4 ; [#uses=2]
+ br i1 %27, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ %31 = getelementptr inbounds i32 (...)** %30, i32 2 ; [#uses=1]
+ %32 = load i32 (...)** %31, align 4 ; [#uses=1]
+ %33 = bitcast i32 (...)* %32 to void (%struct.btCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* ; [#uses=1]
+ call void %33(%struct.btCollisionAlgorithm* %28, %struct.btCollisionObject* %4, %struct.btCollisionObject* %9, %struct.btDispatcherInfo* %dispatchInfo, %struct.btManifoldResult* %contactPointResult)
+ ret void
+
+bb5: ; preds = %bb3
+ %34 = getelementptr inbounds i32 (...)** %30, i32 3 ; [#uses=1]
+ %35 = load i32 (...)** %34, align 4 ; [#uses=1]
+ %36 = bitcast i32 (...)* %35 to float (%struct.btCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* ; [#uses=1]
+ %37 = call float %36(%struct.btCollisionAlgorithm* %28, %struct.btCollisionObject* %4, %struct.btCollisionObject* %9, %struct.btDispatcherInfo* %dispatchInfo, %struct.btManifoldResult* %contactPointResult) ; [#uses=2]
+ %38 = getelementptr inbounds %struct.btDispatcherInfo* %dispatchInfo, i32 0, i32 3 ; [#uses=2]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fcmp ogt float %39, %37 ; [#uses=1]
+ br i1 %40, label %bb6, label %return
+
+bb6: ; preds = %bb5
+ store float %37, float* %38, align 4
+ ret void
+
+return: ; preds = %bb5, %bb2, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btCollisionDispatcher13clearManifoldEP20btPersistentManifold(%struct.btCollisionDispatcher* nocapture %this, %struct.btPersistentManifold* %manifold) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPersistentManifold* %manifold, i32 0, i32 4 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.i, label %_ZN20btPersistentManifold13clearManifoldEv.exit
+
+bb.i: ; preds = %bb.i, %entry
+ %i.03.i = phi i32 [ %tmp, %bb.i ], [ 0, %entry ] ; [#uses=2]
+ %tmp = add i32 %i.03.i, 1 ; [#uses=2]
+ %scevgep.i = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %i.03.i ; [#uses=1]
+ tail call void @_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint(%struct.btPersistentManifold* %manifold, %struct.btManifoldPoint* %scevgep.i)
+ %3 = load i32* %0, align 4 ; [#uses=1]
+ %4 = icmp sgt i32 %3, %tmp ; [#uses=1]
+ br i1 %4, label %bb.i, label %_ZN20btPersistentManifold13clearManifoldEv.exit
+
+_ZN20btPersistentManifold13clearManifoldEv.exit: ; preds = %bb.i, %entry
+ store i32 0, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btCollisionDispatcherD0Ev(%struct.btCollisionDispatcher* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV21btCollisionDispatcher, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btManifoldResult, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %3 = load %struct.btPersistentManifold*** %2, align 4 ; [#uses=2]
+ %4 = icmp eq %struct.btPersistentManifold** %3, null ; [#uses=1]
+ br i1 %4, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %6 = load i8* %5, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %6, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %7 = bitcast %struct.btPersistentManifold** %3 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %7)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %2, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %8 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %8, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %2, align 4
+ %9 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN12btDispatcherD2Ev(%struct.btActionInterface* %11)
+ %12 = bitcast %struct.btCollisionDispatcher* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %12) nounwind
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %13 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btDispatcherD2Ev(%struct.btActionInterface* %13)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN21btCollisionDispatcherD1Ev(%struct.btCollisionDispatcher* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV21btCollisionDispatcher, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btManifoldResult, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %3 = load %struct.btPersistentManifold*** %2, align 4 ; [#uses=2]
+ %4 = icmp eq %struct.btPersistentManifold** %3, null ; [#uses=1]
+ br i1 %4, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %6 = load i8* %5, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %6, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %7 = bitcast %struct.btPersistentManifold** %3 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %7)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %2, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %8 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %8, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %2, align 4
+ %9 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN12btDispatcherD2Ev(%struct.btActionInterface* %11)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %12 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btDispatcherD2Ev(%struct.btActionInterface* %12)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN21btCollisionDispatcherD2Ev(%struct.btCollisionDispatcher* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV21btCollisionDispatcher, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btManifoldResult, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %3 = load %struct.btPersistentManifold*** %2, align 4 ; [#uses=2]
+ %4 = icmp eq %struct.btPersistentManifold** %3, null ; [#uses=1]
+ br i1 %4, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %6 = load i8* %5, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %6, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %7 = bitcast %struct.btPersistentManifold** %3 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %7)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %2, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %8 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %8, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %2, align 4
+ %9 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN12btDispatcherD2Ev(%struct.btActionInterface* %11)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %12 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btDispatcherD2Ev(%struct.btActionInterface* %12)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN21btCollisionDispatcherC2EP24btCollisionConfiguration(%struct.btCollisionDispatcher* %this, %struct.btActionInterface* %collisionConfiguration) align 2 {
+invcont:
+ %0 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([16 x i32 (...)*]* @_ZTV21btCollisionDispatcher, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 1 ; [#uses=1]
+ store i32 2, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 4 ; [#uses=3]
+ store i8 1, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 3 ; [#uses=4]
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %3, align 4
+ %4 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 1 ; [#uses=2]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 2, i32 2 ; [#uses=2]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btManifoldResult, i32 0, i32 2), i32 (...)*** %6, align 4
+ %7 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 8 ; [#uses=2]
+ store %struct.btActionInterface* %collisionConfiguration, %struct.btActionInterface** %7, align 4
+ %8 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 4 ; [#uses=1]
+ store void (%struct.btBroadphasePair*, %struct.btCollisionDispatcher*, %struct.btDispatcherInfo*)* @_ZN21btCollisionDispatcher19defaultNearCallbackER16btBroadphasePairRS_RK16btDispatcherInfo, void (%struct.btBroadphasePair*, %struct.btCollisionDispatcher*, %struct.btDispatcherInfo*)** %8, align 4
+ %9 = getelementptr inbounds %struct.btActionInterface* %collisionConfiguration, i32 0, i32 0 ; [#uses=2]
+ %10 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i32 (...)** %10, i32 3 ; [#uses=1]
+ %12 = load i32 (...)** %11, align 4 ; [#uses=1]
+ %13 = bitcast i32 (...)* %12 to %struct.btPoolAllocator* (%struct.btActionInterface*)* ; [#uses=1]
+ %14 = invoke %struct.btPoolAllocator* %13(%struct.btActionInterface* %collisionConfiguration)
+ to label %invcont1 unwind label %lpad22 ; [#uses=1]
+
+invcont1: ; preds = %invcont
+ %15 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btPoolAllocator* %14, %struct.btPoolAllocator** %15, align 4
+ %16 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds i32 (...)** %16, i32 2 ; [#uses=1]
+ %18 = load i32 (...)** %17, align 4 ; [#uses=1]
+ %19 = bitcast i32 (...)* %18 to %struct.btPoolAllocator* (%struct.btActionInterface*)* ; [#uses=1]
+ %20 = invoke %struct.btPoolAllocator* %19(%struct.btActionInterface* %collisionConfiguration)
+ to label %invcont2 unwind label %lpad22 ; [#uses=1]
+
+invcont2: ; preds = %invcont1
+ %21 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.btPoolAllocator* %20, %struct.btPoolAllocator** %21, align 4
+ br label %bb7
+
+bb3: ; preds = %bb5
+ %22 = load %struct.btActionInterface** %7, align 4 ; [#uses=2]
+ %23 = getelementptr inbounds %struct.btActionInterface* %22, i32 0, i32 0 ; [#uses=1]
+ %24 = load i32 (...)*** %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i32 (...)** %24, i32 5 ; [#uses=1]
+ %26 = load i32 (...)** %25, align 4 ; [#uses=1]
+ %27 = bitcast i32 (...)* %26 to %struct.btCollisionAlgorithmCreateFunc* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %28 = invoke %struct.btCollisionAlgorithmCreateFunc* %27(%struct.btActionInterface* %22, i32 %33, i32 %30)
+ to label %invcont4 unwind label %lpad22 ; [#uses=1]
+
+invcont4: ; preds = %bb3
+ store %struct.btCollisionAlgorithmCreateFunc* %28, %struct.btCollisionAlgorithmCreateFunc** %scevgep, align 4
+ %29 = add nsw i32 %30, 1 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb7, %invcont4
+ %30 = phi i32 [ %29, %invcont4 ], [ 0, %bb7 ] ; [#uses=4]
+ %scevgep = getelementptr %struct.btCollisionDispatcher* %this, i32 0, i32 7, i32 %33, i32 %30 ; [#uses=1]
+ %31 = icmp slt i32 %30, 36 ; [#uses=1]
+ br i1 %31, label %bb3, label %bb6
+
+bb6: ; preds = %bb5
+ %32 = add nsw i32 %33, 1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %invcont2
+ %33 = phi i32 [ 0, %invcont2 ], [ %32, %bb6 ] ; [#uses=4]
+ %34 = icmp slt i32 %33, 36 ; [#uses=1]
+ br i1 %34, label %bb5, label %return
+
+invcont17: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr23)
+ unreachable
+
+return: ; preds = %bb7
+ ret void
+
+lpad22: ; preds = %bb3, %invcont1, %invcont
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btManifoldResult, i32 0, i32 2), i32 (...)*** %6, align 4
+ %35 = load %struct.btPersistentManifold*** %3, align 4 ; [#uses=2]
+ %36 = icmp eq %struct.btPersistentManifold** %35, null ; [#uses=1]
+ br i1 %36, label %ppad, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad22
+ %37 = load i8* %2, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %37, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %38 = bitcast %struct.btPersistentManifold** %35 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %38)
+ to label %bb2.i.i.i unwind label %lpad26
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %3, align 4
+ br label %ppad
+
+lpad26: ; preds = %bb1.i.i.i
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad30: ; preds = %ppad
+ %eh_ptr31 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select33 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr31, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i, %lpad22
+ store i8 1, i8* %2, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %3, align 4
+ store i32 0, i32* %4, align 4
+ store i32 0, i32* %5, align 4
+ %39 = getelementptr inbounds %struct.btCollisionDispatcher* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btDispatcherD2Ev(%struct.btActionInterface* %39)
+ to label %invcont17 unwind label %lpad30
+}
+
+; [#uses=2]
+define void @_ZN21btCollisionDispatcherC1EP24btCollisionConfiguration(%struct.btCollisionDispatcher* %this, %struct.btActionInterface* %collisionConfiguration) align 2 {
+entry:
+ tail call void @_ZN21btCollisionDispatcherC2EP24btCollisionConfiguration(%struct.btCollisionDispatcher* %this, %struct.btActionInterface* %collisionConfiguration)
+ ret void
+}
+
+; [#uses=5]
+define void @_ZN17btCollisionObjectC2Ev(%struct.btCollisionObject* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV17btCollisionObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 8 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %7, align 4
+ %8 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 9 ; [#uses=1]
+ store %struct.btCollisionShape* null, %struct.btCollisionShape** %8, align 4
+ %9 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 10 ; [#uses=1]
+ store i8* null, i8** %9, align 4
+ %10 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 11 ; [#uses=1]
+ store %struct.btCollisionShape* null, %struct.btCollisionShape** %10, align 4
+ %11 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 12 ; [#uses=1]
+ store i32 1, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 13 ; [#uses=1]
+ store i32 -1, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 14 ; [#uses=1]
+ store i32 -1, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 1, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 17 ; [#uses=1]
+ store float 5.000000e-01, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 18 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 19 ; [#uses=1]
+ store i32 1, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 20 ; [#uses=1]
+ store i8* null, i8** %19, align 4
+ %20 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 21 ; [#uses=1]
+ store float 1.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 22 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 23 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 24 ; [#uses=1]
+ store i32 0, i32* %23, align 4
+ %24 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 4
+ %37 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 4
+ %38 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %38, align 4
+ %39 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %39, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZN17btCollisionObject24checkCollideWithOverrideEPS_(%struct.btCollisionObject* nocapture %this, %struct.btCollisionObject* nocapture %unnamed_arg) nounwind readnone align 2 {
+entry:
+ ret i8 1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btCollisionObject17setCollisionShapeEP16btCollisionShape(%struct.btCollisionObject* nocapture %this, %struct.btCollisionShape* %collisionShape) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 9 ; [#uses=1]
+ store %struct.btCollisionShape* %collisionShape, %struct.btCollisionShape** %0, align 4
+ %1 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 11 ; [#uses=1]
+ store %struct.btCollisionShape* %collisionShape, %struct.btCollisionShape** %1, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK17btCollisionObject28calculateSerializeBufferSizeEv(%struct.btCollisionObject* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 248
+}
+
+; [#uses=1]
+define void @_ZN17btCollisionObjectD1Ev(%struct.btCollisionObject* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV17btCollisionObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btCollisionObjectD0Ev(%struct.btCollisionObject* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV17btCollisionObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btCollisionObject* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %1)
+ ret void
+}
+
+; [#uses=2]
+define i8* @_ZNK17btCollisionObject9serializeEPvP12btSerializer(%struct.btCollisionObject* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds i8* %dataBuffer, i32 16 ; [#uses=1]
+ %scevgep.i.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i.i = bitcast i8* %0 to float* ; [#uses=1]
+ %scevgep.1.i.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i.i = getelementptr i8* %dataBuffer, i32 20 ; [#uses=1]
+ %1 = bitcast i8* %scevgep4.1.i.i.i to float* ; [#uses=1]
+ %scevgep.2.i.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i.i = getelementptr i8* %dataBuffer, i32 24 ; [#uses=1]
+ %2 = bitcast i8* %scevgep4.2.i.i.i to float* ; [#uses=1]
+ %scevgep.3.i.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i.i = getelementptr i8* %dataBuffer, i32 28 ; [#uses=1]
+ %3 = bitcast i8* %scevgep4.3.i.i.i to float* ; [#uses=1]
+ %4 = load float* %scevgep.i.i.i, align 4 ; [#uses=1]
+ store float %4, float* %scevgep4.i.i.i, align 4
+ %5 = load float* %scevgep.1.i.i.i, align 4 ; [#uses=1]
+ store float %5, float* %1, align 4
+ %6 = load float* %scevgep.2.i.i.i, align 4 ; [#uses=1]
+ store float %6, float* %2, align 4
+ %7 = load float* %scevgep.3.i.i.i, align 4 ; [#uses=1]
+ store float %7, float* %3, align 4
+ %scevgep.i.1.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.1.i.i = getelementptr i8* %dataBuffer, i32 32 ; [#uses=1]
+ %8 = bitcast i8* %scevgep4.i.1.i.i to float* ; [#uses=1]
+ %scevgep.1.i.1.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.1.i.i = getelementptr i8* %dataBuffer, i32 36 ; [#uses=1]
+ %9 = bitcast i8* %scevgep4.1.i.1.i.i to float* ; [#uses=1]
+ %scevgep.2.i.1.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.1.i.i = getelementptr i8* %dataBuffer, i32 40 ; [#uses=1]
+ %10 = bitcast i8* %scevgep4.2.i.1.i.i to float* ; [#uses=1]
+ %scevgep.3.i.1.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.1.i.i = getelementptr i8* %dataBuffer, i32 44 ; [#uses=1]
+ %11 = bitcast i8* %scevgep4.3.i.1.i.i to float* ; [#uses=1]
+ %12 = load float* %scevgep.i.1.i.i, align 4 ; [#uses=1]
+ store float %12, float* %8, align 4
+ %13 = load float* %scevgep.1.i.1.i.i, align 4 ; [#uses=1]
+ store float %13, float* %9, align 4
+ %14 = load float* %scevgep.2.i.1.i.i, align 4 ; [#uses=1]
+ store float %14, float* %10, align 4
+ %15 = load float* %scevgep.3.i.1.i.i, align 4 ; [#uses=1]
+ store float %15, float* %11, align 4
+ %scevgep.i.2.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.2.i.i = getelementptr i8* %dataBuffer, i32 48 ; [#uses=1]
+ %16 = bitcast i8* %scevgep4.i.2.i.i to float* ; [#uses=1]
+ %scevgep.1.i.2.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.2.i.i = getelementptr i8* %dataBuffer, i32 52 ; [#uses=1]
+ %17 = bitcast i8* %scevgep4.1.i.2.i.i to float* ; [#uses=1]
+ %scevgep.2.i.2.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.2.i.i = getelementptr i8* %dataBuffer, i32 56 ; [#uses=1]
+ %18 = bitcast i8* %scevgep4.2.i.2.i.i to float* ; [#uses=1]
+ %scevgep.3.i.2.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.2.i.i = getelementptr i8* %dataBuffer, i32 60 ; [#uses=1]
+ %19 = bitcast i8* %scevgep4.3.i.2.i.i to float* ; [#uses=1]
+ %20 = load float* %scevgep.i.2.i.i, align 4 ; [#uses=1]
+ store float %20, float* %16, align 4
+ %21 = load float* %scevgep.1.i.2.i.i, align 4 ; [#uses=1]
+ store float %21, float* %17, align 4
+ %22 = load float* %scevgep.2.i.2.i.i, align 4 ; [#uses=1]
+ store float %22, float* %18, align 4
+ %23 = load float* %scevgep.3.i.2.i.i, align 4 ; [#uses=1]
+ store float %23, float* %19, align 4
+ %scevgep.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i = getelementptr i8* %dataBuffer, i32 64 ; [#uses=1]
+ %24 = bitcast i8* %scevgep4.i.i to float* ; [#uses=1]
+ %25 = load float* %scevgep.i.i, align 4 ; [#uses=1]
+ store float %25, float* %24, align 4
+ %scevgep.1.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i = getelementptr i8* %dataBuffer, i32 68 ; [#uses=1]
+ %26 = bitcast i8* %scevgep4.1.i.i to float* ; [#uses=1]
+ %27 = load float* %scevgep.1.i.i, align 4 ; [#uses=1]
+ store float %27, float* %26, align 4
+ %scevgep.2.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i = getelementptr i8* %dataBuffer, i32 72 ; [#uses=1]
+ %28 = bitcast i8* %scevgep4.2.i.i to float* ; [#uses=1]
+ %29 = load float* %scevgep.2.i.i, align 4 ; [#uses=1]
+ store float %29, float* %28, align 4
+ %scevgep.3.i.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i = getelementptr i8* %dataBuffer, i32 76 ; [#uses=1]
+ %30 = bitcast i8* %scevgep4.3.i.i to float* ; [#uses=1]
+ %31 = load float* %scevgep.3.i.i, align 4 ; [#uses=1]
+ store float %31, float* %30, align 4
+ %32 = getelementptr inbounds i8* %dataBuffer, i32 80 ; [#uses=1]
+ %scevgep.i.i.i3 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i.i4 = bitcast i8* %32 to float* ; [#uses=1]
+ %scevgep.1.i.i.i5 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i.i6 = getelementptr i8* %dataBuffer, i32 84 ; [#uses=1]
+ %33 = bitcast i8* %scevgep4.1.i.i.i6 to float* ; [#uses=1]
+ %scevgep.2.i.i.i7 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i.i8 = getelementptr i8* %dataBuffer, i32 88 ; [#uses=1]
+ %34 = bitcast i8* %scevgep4.2.i.i.i8 to float* ; [#uses=1]
+ %scevgep.3.i.i.i9 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i.i10 = getelementptr i8* %dataBuffer, i32 92 ; [#uses=1]
+ %35 = bitcast i8* %scevgep4.3.i.i.i10 to float* ; [#uses=1]
+ %36 = load float* %scevgep.i.i.i3, align 4 ; [#uses=1]
+ store float %36, float* %scevgep4.i.i.i4, align 4
+ %37 = load float* %scevgep.1.i.i.i5, align 4 ; [#uses=1]
+ store float %37, float* %33, align 4
+ %38 = load float* %scevgep.2.i.i.i7, align 4 ; [#uses=1]
+ store float %38, float* %34, align 4
+ %39 = load float* %scevgep.3.i.i.i9, align 4 ; [#uses=1]
+ store float %39, float* %35, align 4
+ %scevgep.i.1.i.i11 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.1.i.i12 = getelementptr i8* %dataBuffer, i32 96 ; [#uses=1]
+ %40 = bitcast i8* %scevgep4.i.1.i.i12 to float* ; [#uses=1]
+ %scevgep.1.i.1.i.i13 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.1.i.i14 = getelementptr i8* %dataBuffer, i32 100 ; [#uses=1]
+ %41 = bitcast i8* %scevgep4.1.i.1.i.i14 to float* ; [#uses=1]
+ %scevgep.2.i.1.i.i15 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.1.i.i16 = getelementptr i8* %dataBuffer, i32 104 ; [#uses=1]
+ %42 = bitcast i8* %scevgep4.2.i.1.i.i16 to float* ; [#uses=1]
+ %scevgep.3.i.1.i.i17 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.1.i.i18 = getelementptr i8* %dataBuffer, i32 108 ; [#uses=1]
+ %43 = bitcast i8* %scevgep4.3.i.1.i.i18 to float* ; [#uses=1]
+ %44 = load float* %scevgep.i.1.i.i11, align 4 ; [#uses=1]
+ store float %44, float* %40, align 4
+ %45 = load float* %scevgep.1.i.1.i.i13, align 4 ; [#uses=1]
+ store float %45, float* %41, align 4
+ %46 = load float* %scevgep.2.i.1.i.i15, align 4 ; [#uses=1]
+ store float %46, float* %42, align 4
+ %47 = load float* %scevgep.3.i.1.i.i17, align 4 ; [#uses=1]
+ store float %47, float* %43, align 4
+ %scevgep.i.2.i.i19 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.2.i.i20 = getelementptr i8* %dataBuffer, i32 112 ; [#uses=1]
+ %48 = bitcast i8* %scevgep4.i.2.i.i20 to float* ; [#uses=1]
+ %scevgep.1.i.2.i.i21 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.2.i.i22 = getelementptr i8* %dataBuffer, i32 116 ; [#uses=1]
+ %49 = bitcast i8* %scevgep4.1.i.2.i.i22 to float* ; [#uses=1]
+ %scevgep.2.i.2.i.i23 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.2.i.i24 = getelementptr i8* %dataBuffer, i32 120 ; [#uses=1]
+ %50 = bitcast i8* %scevgep4.2.i.2.i.i24 to float* ; [#uses=1]
+ %scevgep.3.i.2.i.i25 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.2.i.i26 = getelementptr i8* %dataBuffer, i32 124 ; [#uses=1]
+ %51 = bitcast i8* %scevgep4.3.i.2.i.i26 to float* ; [#uses=1]
+ %52 = load float* %scevgep.i.2.i.i19, align 4 ; [#uses=1]
+ store float %52, float* %48, align 4
+ %53 = load float* %scevgep.1.i.2.i.i21, align 4 ; [#uses=1]
+ store float %53, float* %49, align 4
+ %54 = load float* %scevgep.2.i.2.i.i23, align 4 ; [#uses=1]
+ store float %54, float* %50, align 4
+ %55 = load float* %scevgep.3.i.2.i.i25, align 4 ; [#uses=1]
+ store float %55, float* %51, align 4
+ %scevgep.i.i27 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i28 = getelementptr i8* %dataBuffer, i32 128 ; [#uses=1]
+ %56 = bitcast i8* %scevgep4.i.i28 to float* ; [#uses=1]
+ %57 = load float* %scevgep.i.i27, align 4 ; [#uses=1]
+ store float %57, float* %56, align 4
+ %scevgep.1.i.i29 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i30 = getelementptr i8* %dataBuffer, i32 132 ; [#uses=1]
+ %58 = bitcast i8* %scevgep4.1.i.i30 to float* ; [#uses=1]
+ %59 = load float* %scevgep.1.i.i29, align 4 ; [#uses=1]
+ store float %59, float* %58, align 4
+ %scevgep.2.i.i31 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i32 = getelementptr i8* %dataBuffer, i32 136 ; [#uses=1]
+ %60 = bitcast i8* %scevgep4.2.i.i32 to float* ; [#uses=1]
+ %61 = load float* %scevgep.2.i.i31, align 4 ; [#uses=1]
+ store float %61, float* %60, align 4
+ %scevgep.3.i.i33 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i34 = getelementptr i8* %dataBuffer, i32 140 ; [#uses=1]
+ %62 = bitcast i8* %scevgep4.3.i.i34 to float* ; [#uses=1]
+ %63 = load float* %scevgep.3.i.i33, align 4 ; [#uses=1]
+ store float %63, float* %62, align 4
+ %64 = getelementptr inbounds i8* %dataBuffer, i32 144 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i = bitcast i8* %64 to float* ; [#uses=1]
+ %65 = load float* %scevgep.i, align 4 ; [#uses=1]
+ store float %65, float* %scevgep4.i, align 4
+ %scevgep.1.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i = getelementptr i8* %dataBuffer, i32 148 ; [#uses=1]
+ %66 = bitcast i8* %scevgep4.1.i to float* ; [#uses=1]
+ %67 = load float* %scevgep.1.i, align 4 ; [#uses=1]
+ store float %67, float* %66, align 4
+ %scevgep.2.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i = getelementptr i8* %dataBuffer, i32 152 ; [#uses=1]
+ %68 = bitcast i8* %scevgep4.2.i to float* ; [#uses=1]
+ %69 = load float* %scevgep.2.i, align 4 ; [#uses=1]
+ store float %69, float* %68, align 4
+ %scevgep.3.i = getelementptr %struct.btCollisionObject* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i = getelementptr i8* %dataBuffer, i32 156 ; [#uses=1]
+ %70 = bitcast i8* %scevgep4.3.i to float* ; [#uses=1]
+ %71 = load float* %scevgep.3.i, align 4 ; [#uses=1]
+ store float %71, float* %70, align 4
+ %72 = getelementptr inbounds i8* %dataBuffer, i32 160 ; [#uses=1]
+ %scevgep.i35 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i36 = bitcast i8* %72 to float* ; [#uses=1]
+ %73 = load float* %scevgep.i35, align 4 ; [#uses=1]
+ store float %73, float* %scevgep4.i36, align 4
+ %scevgep.1.i37 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i38 = getelementptr i8* %dataBuffer, i32 164 ; [#uses=1]
+ %74 = bitcast i8* %scevgep4.1.i38 to float* ; [#uses=1]
+ %75 = load float* %scevgep.1.i37, align 4 ; [#uses=1]
+ store float %75, float* %74, align 4
+ %scevgep.2.i39 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i40 = getelementptr i8* %dataBuffer, i32 168 ; [#uses=1]
+ %76 = bitcast i8* %scevgep4.2.i40 to float* ; [#uses=1]
+ %77 = load float* %scevgep.2.i39, align 4 ; [#uses=1]
+ store float %77, float* %76, align 4
+ %scevgep.3.i41 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i42 = getelementptr i8* %dataBuffer, i32 172 ; [#uses=1]
+ %78 = bitcast i8* %scevgep4.3.i42 to float* ; [#uses=1]
+ %79 = load float* %scevgep.3.i41, align 4 ; [#uses=1]
+ store float %79, float* %78, align 4
+ %80 = getelementptr inbounds i8* %dataBuffer, i32 176 ; [#uses=1]
+ %scevgep.i43 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i44 = bitcast i8* %80 to float* ; [#uses=1]
+ %81 = load float* %scevgep.i43, align 4 ; [#uses=1]
+ store float %81, float* %scevgep4.i44, align 4
+ %scevgep.1.i45 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i46 = getelementptr i8* %dataBuffer, i32 180 ; [#uses=1]
+ %82 = bitcast i8* %scevgep4.1.i46 to float* ; [#uses=1]
+ %83 = load float* %scevgep.1.i45, align 4 ; [#uses=1]
+ store float %83, float* %82, align 4
+ %scevgep.2.i47 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i48 = getelementptr i8* %dataBuffer, i32 184 ; [#uses=1]
+ %84 = bitcast i8* %scevgep4.2.i48 to float* ; [#uses=1]
+ %85 = load float* %scevgep.2.i47, align 4 ; [#uses=1]
+ store float %85, float* %84, align 4
+ %scevgep.3.i49 = getelementptr %struct.btCollisionObject* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i50 = getelementptr i8* %dataBuffer, i32 188 ; [#uses=1]
+ %86 = bitcast i8* %scevgep4.3.i50 to float* ; [#uses=1]
+ %87 = load float* %scevgep.3.i49, align 4 ; [#uses=1]
+ store float %87, float* %86, align 4
+ %88 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 6 ; [#uses=1]
+ %89 = load i32* %88, align 4 ; [#uses=1]
+ %90 = getelementptr inbounds i8* %dataBuffer, i32 220 ; [#uses=1]
+ %91 = bitcast i8* %90 to i32* ; [#uses=1]
+ store i32 %89, i32* %91, align 4
+ %92 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 7 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ %94 = getelementptr inbounds i8* %dataBuffer, i32 192 ; [#uses=1]
+ %95 = bitcast i8* %94 to float* ; [#uses=1]
+ store float %93, float* %95, align 4
+ %96 = bitcast i8* %dataBuffer to i8** ; [#uses=1]
+ store i8* null, i8** %96, align 4
+ %97 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=4]
+ %98 = load i32 (...)*** %97, align 4 ; [#uses=1]
+ %99 = getelementptr inbounds i32 (...)** %98, i32 7 ; [#uses=1]
+ %100 = load i32 (...)** %99, align 4 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 9 ; [#uses=1]
+ %102 = load %struct.btCollisionShape** %101, align 4 ; [#uses=1]
+ %103 = bitcast i32 (...)* %100 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %104 = bitcast %struct.btCollisionShape* %102 to i8* ; [#uses=1]
+ %105 = tail call i8* %103(%struct.btActionInterface* %serializer, i8* %104) ; [#uses=1]
+ %106 = getelementptr inbounds i8* %dataBuffer, i32 4 ; [#uses=1]
+ %107 = bitcast i8* %106 to i8** ; [#uses=1]
+ store i8* %105, i8** %107, align 4
+ %108 = getelementptr inbounds i8* %dataBuffer, i32 8 ; [#uses=1]
+ %109 = bitcast i8* %108 to %struct.btCollisionShapeData** ; [#uses=1]
+ store %struct.btCollisionShapeData* null, %struct.btCollisionShapeData** %109, align 4
+ %110 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 12 ; [#uses=1]
+ %111 = load i32* %110, align 4 ; [#uses=1]
+ %112 = getelementptr inbounds i8* %dataBuffer, i32 224 ; [#uses=1]
+ %113 = bitcast i8* %112 to i32* ; [#uses=1]
+ store i32 %111, i32* %113, align 4
+ %114 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 13 ; [#uses=1]
+ %115 = load i32* %114, align 4 ; [#uses=1]
+ %116 = getelementptr inbounds i8* %dataBuffer, i32 228 ; [#uses=1]
+ %117 = bitcast i8* %116 to i32* ; [#uses=1]
+ store i32 %115, i32* %117, align 4
+ %118 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 14 ; [#uses=1]
+ %119 = load i32* %118, align 4 ; [#uses=1]
+ %120 = getelementptr inbounds i8* %dataBuffer, i32 232 ; [#uses=1]
+ %121 = bitcast i8* %120 to i32* ; [#uses=1]
+ store i32 %119, i32* %121, align 4
+ %122 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 15 ; [#uses=2]
+ %123 = load i32* %122, align 4 ; [#uses=1]
+ %124 = getelementptr inbounds i8* %dataBuffer, i32 236 ; [#uses=1]
+ %125 = bitcast i8* %124 to i32* ; [#uses=2]
+ store i32 %123, i32* %125, align 4
+ %126 = load i32* %122, align 4 ; [#uses=1]
+ store i32 %126, i32* %125, align 4
+ %127 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 16 ; [#uses=1]
+ %128 = load float* %127, align 4 ; [#uses=1]
+ %129 = getelementptr inbounds i8* %dataBuffer, i32 196 ; [#uses=1]
+ %130 = bitcast i8* %129 to float* ; [#uses=1]
+ store float %128, float* %130, align 4
+ %131 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 17 ; [#uses=1]
+ %132 = load float* %131, align 4 ; [#uses=1]
+ %133 = getelementptr inbounds i8* %dataBuffer, i32 200 ; [#uses=1]
+ %134 = bitcast i8* %133 to float* ; [#uses=1]
+ store float %132, float* %134, align 4
+ %135 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 18 ; [#uses=1]
+ %136 = load float* %135, align 4 ; [#uses=1]
+ %137 = getelementptr inbounds i8* %dataBuffer, i32 204 ; [#uses=1]
+ %138 = bitcast i8* %137 to float* ; [#uses=1]
+ store float %136, float* %138, align 4
+ %139 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 19 ; [#uses=1]
+ %140 = load i32* %139, align 4 ; [#uses=1]
+ %141 = getelementptr inbounds i8* %dataBuffer, i32 240 ; [#uses=1]
+ %142 = bitcast i8* %141 to i32* ; [#uses=1]
+ store i32 %140, i32* %142, align 4
+ %143 = load i32 (...)*** %97, align 4 ; [#uses=1]
+ %144 = getelementptr inbounds i32 (...)** %143, i32 10 ; [#uses=1]
+ %145 = load i32 (...)** %144, align 4 ; [#uses=1]
+ %146 = bitcast i32 (...)* %145 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %147 = bitcast %struct.btCollisionObject* %this to i8* ; [#uses=1]
+ %148 = tail call i8* %146(%struct.btActionInterface* %serializer, i8* %147) ; [#uses=2]
+ %149 = load i32 (...)*** %97, align 4 ; [#uses=1]
+ %150 = getelementptr inbounds i32 (...)** %149, i32 7 ; [#uses=1]
+ %151 = load i32 (...)** %150, align 4 ; [#uses=1]
+ %152 = bitcast i32 (...)* %151 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %153 = tail call i8* %152(%struct.btActionInterface* %serializer, i8* %148) ; [#uses=2]
+ %154 = getelementptr inbounds i8* %dataBuffer, i32 12 ; [#uses=1]
+ %155 = bitcast i8* %154 to i8** ; [#uses=1]
+ store i8* %153, i8** %155, align 4
+ %156 = icmp eq i8* %153, null ; [#uses=1]
+ br i1 %156, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %157 = load i32 (...)*** %97, align 4 ; [#uses=1]
+ %158 = getelementptr inbounds i32 (...)** %157, i32 12 ; [#uses=1]
+ %159 = load i32 (...)** %158, align 4 ; [#uses=1]
+ %160 = bitcast i32 (...)* %159 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ tail call void %160(%struct.btActionInterface* %serializer, i8* %148)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %161 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 21 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ %163 = getelementptr inbounds i8* %dataBuffer, i32 208 ; [#uses=1]
+ %164 = bitcast i8* %163 to float* ; [#uses=1]
+ store float %162, float* %164, align 4
+ %165 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 22 ; [#uses=1]
+ %166 = load float* %165, align 4 ; [#uses=1]
+ %167 = getelementptr inbounds i8* %dataBuffer, i32 212 ; [#uses=1]
+ %168 = bitcast i8* %167 to float* ; [#uses=1]
+ store float %166, float* %168, align 4
+ %169 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 23 ; [#uses=2]
+ %170 = load float* %169, align 4 ; [#uses=1]
+ %171 = getelementptr inbounds i8* %dataBuffer, i32 216 ; [#uses=1]
+ %172 = bitcast i8* %171 to float* ; [#uses=2]
+ store float %170, float* %172, align 4
+ %173 = load float* %169, align 4 ; [#uses=1]
+ store float %173, float* %172, align 4
+ %174 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 24 ; [#uses=1]
+ %175 = load i32* %174, align 4 ; [#uses=1]
+ %176 = getelementptr inbounds i8* %dataBuffer, i32 244 ; [#uses=1]
+ %177 = bitcast i8* %176 to i32* ; [#uses=1]
+ store i32 %175, i32* %177, align 4
+ ret i8* getelementptr inbounds ([27 x i8]* @.str11, i32 0, i32 0)
+}
+
+; [#uses=1]
+define void @_ZNK17btCollisionObject21serializeSingleObjectEP12btSerializer(%struct.btCollisionObject* %this, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 4 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to i32 (%struct.btCollisionObject*)* ; [#uses=1]
+ %5 = tail call i32 %4(%struct.btCollisionObject* %this) ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=2]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 4 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %11 = tail call %struct.btChunk* %10(%struct.btActionInterface* %serializer, i32 %5, i32 1) ; [#uses=2]
+ %12 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 5 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btChunk* %11, i32 0, i32 2 ; [#uses=1]
+ %16 = load i8** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %14 to i8* (%struct.btCollisionObject*, i8*, %struct.btActionInterface*)* ; [#uses=1]
+ %18 = tail call i8* %17(%struct.btCollisionObject* %this, i8* %16, %struct.btActionInterface* %serializer) ; [#uses=1]
+ %19 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i32 (...)** %19, i32 5 ; [#uses=1]
+ %21 = load i32 (...)** %20, align 4 ; [#uses=1]
+ %22 = bitcast %struct.btCollisionObject* %this to i8* ; [#uses=1]
+ %23 = bitcast i32 (...)* %21 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ tail call void %23(%struct.btActionInterface* %serializer, %struct.btChunk* %11, i8* %18, i32 1245859651, i8* %22)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17btCollisionObjectC1Ev(%struct.btCollisionObject* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV17btCollisionObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 8 ; [#uses=1]
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %7, align 4
+ %8 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 9 ; [#uses=1]
+ store %struct.btCollisionShape* null, %struct.btCollisionShape** %8, align 4
+ %9 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 10 ; [#uses=1]
+ store i8* null, i8** %9, align 4
+ %10 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 11 ; [#uses=1]
+ store %struct.btCollisionShape* null, %struct.btCollisionShape** %10, align 4
+ %11 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 12 ; [#uses=1]
+ store i32 1, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 13 ; [#uses=1]
+ store i32 -1, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 14 ; [#uses=1]
+ store i32 -1, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 1, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 17 ; [#uses=1]
+ store float 5.000000e-01, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 18 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 19 ; [#uses=1]
+ store i32 1, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 20 ; [#uses=1]
+ store i8* null, i8** %19, align 4
+ %20 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 21 ; [#uses=1]
+ store float 1.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 22 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 23 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 24 ; [#uses=1]
+ store i32 0, i32* %23, align 4
+ %24 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 4
+ %37 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 4
+ %38 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %38, align 4
+ %39 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %39, align 4
+ ret void
+}
+
+; [#uses=9]
+define void @_ZN17btCollisionObject18setActivationStateEi(%struct.btCollisionObject* nocapture %this, i32 %newState) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 15 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = add i32 %1, -4 ; [#uses=1]
+ %3 = icmp ugt i32 %2, 1 ; [#uses=1]
+ br i1 %3, label %bb, label %return
+
+bb: ; preds = %entry
+ store i32 %newState, i32* %0, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17btCollisionObject20forceActivationStateEi(%struct.btCollisionObject* nocapture %this, i32 %newState) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 %newState, i32* %0, align 4
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN17btCollisionObject8activateEb(%struct.btCollisionObject* nocapture %this, i8 zeroext %forceActivation) nounwind align 2 {
+entry:
+ %toBool = icmp eq i8 %forceActivation, 0 ; [#uses=1]
+ br i1 %toBool, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %0 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 12 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = and i32 %1, 3 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb1, label %return
+
+bb1: ; preds = %bb, %entry
+ %4 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 15 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = add i32 %5, -4 ; [#uses=1]
+ %7 = icmp ugt i32 %6, 1 ; [#uses=1]
+ br i1 %7, label %bb.i, label %_ZN17btCollisionObject18setActivationStateEi.exit
+
+bb.i: ; preds = %bb1
+ store i32 1, i32* %4, align 4
+ br label %_ZN17btCollisionObject18setActivationStateEi.exit
+
+_ZN17btCollisionObject18setActivationStateEi.exit: ; preds = %bb.i, %bb1
+ %8 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ ret void
+
+return: ; preds = %bb
+ ret void
+}
+
+; [#uses=32]
+define void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV17btCollisionObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN16btCollisionWorldC2EP12btDispatcherP21btBroadphaseInterfaceP24btCollisionConfiguration(%struct.btCollisionWorld* nocapture %this, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %collisionConfiguration) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV16btCollisionWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 4 ; [#uses=3]
+ store i8 1, i8* %1, align 4
+ %2 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 3 ; [#uses=4]
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ %3 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %dispatcher, %struct.btActionInterface** %5, align 4
+ %6 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 1, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ store float 1.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 0, i8* %10, align 4
+ %11 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 5 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %11, align 4
+ %12 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 6 ; [#uses=1]
+ store i8 0, i8* %12, align 4
+ %13 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 7 ; [#uses=1]
+ store i8 1, i8* %13, align 1
+ %14 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 8 ; [#uses=1]
+ store i8 1, i8* %14, align 2
+ %15 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 9 ; [#uses=1]
+ store float 0x3FA47AE140000000, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 10 ; [#uses=1]
+ store i8 0, i8* %16, align 4
+ %17 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 11 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 12 ; [#uses=1]
+ store i8 0, i8* %18, align 4
+ %19 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 13 ; [#uses=2]
+ store %struct.btStackAlloc* null, %struct.btStackAlloc** %19, align 4
+ %20 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btActionInterface* %pairCache, %struct.btActionInterface** %20, align 4
+ %21 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %21, align 4
+ %22 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 7 ; [#uses=1]
+ store i8 1, i8* %22, align 4
+ %23 = getelementptr inbounds %struct.btActionInterface* %collisionConfiguration, i32 0, i32 0 ; [#uses=1]
+ %24 = load i32 (...)*** %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i32 (...)** %24, i32 4 ; [#uses=1]
+ %26 = load i32 (...)** %25, align 4 ; [#uses=1]
+ %27 = bitcast i32 (...)* %26 to %struct.btStackAlloc* (%struct.btActionInterface*)* ; [#uses=1]
+ %28 = invoke %struct.btStackAlloc* %27(%struct.btActionInterface* %collisionConfiguration)
+ to label %invcont unwind label %lpad ; [#uses=2]
+
+invcont: ; preds = %entry
+ %29 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btStackAlloc* %28, %struct.btStackAlloc** %29, align 4
+ store %struct.btStackAlloc* %28, %struct.btStackAlloc** %19, align 4
+ ret void
+
+invcont1: ; preds = %bb2.i.i.i, %lpad
+ store i8 1, i8* %1, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ store i32 0, i32* %3, align 4
+ store i32 0, i32* %4, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select4 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %30 = load %struct.btCollisionObject*** %2, align 4 ; [#uses=2]
+ %31 = icmp eq %struct.btCollisionObject** %30, null ; [#uses=1]
+ br i1 %31, label %invcont1, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad
+ %32 = load i8* %1, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %32, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %33 = bitcast %struct.btCollisionObject** %30 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %33)
+ to label %bb2.i.i.i unwind label %lpad5
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ br label %invcont1
+
+lpad5: ; preds = %bb1.i.i.i
+ %eh_ptr6 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr6, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btManifoldResult20setShapeIdentifiersAEii(%struct.btManifoldResult* nocapture %this, i32 %partId0, i32 %index0) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 %partId0, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 8 ; [#uses=1]
+ store i32 %index0, i32* %1, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btManifoldResult20setShapeIdentifiersBEii(%struct.btManifoldResult* nocapture %this, i32 %partId1, i32 %index1) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 %partId1, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 9 ; [#uses=1]
+ store i32 %index1, i32* %1, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCollisionWorld14setDebugDrawerEP12btIDebugDraw(%struct.btCollisionWorld* nocapture %this, %struct.btActionInterface* %debugDrawer) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* %debugDrawer, %struct.btActionInterface** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btActionInterface* @_ZN16btCollisionWorld14getDebugDrawerEv(%struct.btCollisionWorld* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=1]
+ ret %struct.btActionInterface* %1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCollisionWorld17RayResultCallbackD1Ev(%"struct.btCollisionWorld::RayResultCallback"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld17RayResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCollisionWorld17RayResultCallbackD0Ev(%"struct.btCollisionWorld::RayResultCallback"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld17RayResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btCollisionWorld::RayResultCallback"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK16btCollisionWorld17RayResultCallback14needsCollisionEP17btBroadphaseProxy(%"struct.btCollisionWorld::RayResultCallback"* nocapture %this, %struct.btBroadphaseProxy* nocapture %proxy0) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 1 ; [#uses=1]
+ %1 = load i16* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %this, i32 0, i32 4 ; [#uses=1]
+ %3 = load i16* %2, align 2 ; [#uses=1]
+ %4 = and i16 %3, %1 ; [#uses=1]
+ %toBoolnot = icmp eq i16 %4, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %this, i32 0, i32 3 ; [#uses=1]
+ %6 = load i16* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 2 ; [#uses=1]
+ %8 = load i16* %7, align 2 ; [#uses=1]
+ %9 = and i16 %8, %6 ; [#uses=1]
+ %not. = icmp ne i16 %9, 0 ; [#uses=1]
+ %retval = zext i1 %not. to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb5: ; preds = %entry
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCollisionWorld20ConvexResultCallbackD1Ev(%"struct.btCollisionWorld::ConvexResultCallback"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld20ConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCollisionWorld20ConvexResultCallbackD0Ev(%"struct.btCollisionWorld::ConvexResultCallback"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld20ConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btCollisionWorld::ConvexResultCallback"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy(%"struct.btCollisionWorld::ConvexResultCallback"* nocapture %this, %struct.btBroadphaseProxy* nocapture %proxy0) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 1 ; [#uses=1]
+ %1 = load i16* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %this, i32 0, i32 3 ; [#uses=1]
+ %3 = load i16* %2, align 2 ; [#uses=1]
+ %4 = and i16 %3, %1 ; [#uses=1]
+ %toBoolnot = icmp eq i16 %4, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %this, i32 0, i32 2 ; [#uses=1]
+ %6 = load i16* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 2 ; [#uses=1]
+ %8 = load i16* %7, align 2 ; [#uses=1]
+ %9 = and i16 %8, %6 ; [#uses=1]
+ %not. = icmp ne i16 %9, 0 ; [#uses=1]
+ %retval = zext i1 %not. to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb5: ; preds = %entry
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN30btConvexPenetrationDepthSolverD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btConvexPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN30btConvexPenetrationDepthSolverD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btConvexPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btConvexCast10CastResult9DebugDrawEf(%"struct.btConvexCast::CastResult"* nocapture %this, float %fraction) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btConvexCast10CastResult15drawCoordSystemERK11btTransform(%"struct.btConvexCast::CastResult"* nocapture %this, %struct.btTransform* nocapture %trans) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btConvexCast10CastResultD1Ev(%"struct.btConvexCast::CastResult"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN12btConvexCast10CastResultE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btConvexCast10CastResultD0Ev(%"struct.btConvexCast::CastResult"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN12btConvexCast10CastResultE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btConvexCast::CastResult"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal float @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitERK9btVector3fii(%struct..0BridgeTriangleRaycastCallback* nocapture %this, %struct.btQuadWord* nocapture %hitNormalLocal, float %hitFraction, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %shapeInfo = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %rayResult = alloca %"struct.btCollisionWorld::LocalRayResult", align 8 ; [#uses=8]
+ %0 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %shapeInfo, i32 0, i32 0 ; [#uses=1]
+ store i32 %partId, i32* %0, align 8
+ %1 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %shapeInfo, i32 0, i32 1 ; [#uses=1]
+ store i32 %triangleIndex, i32* %1, align 4
+ %2 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = fmul float %3, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=3]
+ %11 = fmul float %8, %10 ; [#uses=1]
+ %12 = fadd float %6, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=3]
+ %17 = fmul float %14, %16 ; [#uses=1]
+ %18 = fadd float %12, %17 ; [#uses=1]
+ %19 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fmul float %20, %5 ; [#uses=1]
+ %22 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fmul float %23, %10 ; [#uses=1]
+ %25 = fadd float %21, %24 ; [#uses=1]
+ %26 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fmul float %27, %16 ; [#uses=1]
+ %29 = fadd float %25, %28 ; [#uses=1]
+ %30 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = fmul float %31, %5 ; [#uses=1]
+ %33 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fmul float %34, %10 ; [#uses=1]
+ %36 = fadd float %32, %35 ; [#uses=1]
+ %37 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fmul float %38, %16 ; [#uses=1]
+ %40 = fadd float %36, %39 ; [#uses=1]
+ %41 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %42 = load %struct.btCollisionObject** %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 0 ; [#uses=1]
+ store %struct.btCollisionObject* %42, %struct.btCollisionObject** %43, align 8
+ %44 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 1 ; [#uses=1]
+ store %struct.CONTACT_KEY_TOKEN* %shapeInfo, %struct.CONTACT_KEY_TOKEN** %44, align 4
+ %45 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %40, float* %45, align 8
+ %46 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %29, float* %46, align 4
+ %47 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %18, float* %47, align 8
+ %48 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %48, align 4
+ %49 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 3 ; [#uses=1]
+ store float %hitFraction, float* %49, align 8
+ %50 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %51 = load %"struct.btCollisionWorld::RayResultCallback"** %50, align 4 ; [#uses=2]
+ %52 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %51, i32 0, i32 0 ; [#uses=1]
+ %53 = load i32 (...)*** %52, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds i32 (...)** %53, i32 3 ; [#uses=1]
+ %55 = load i32 (...)** %54, align 4 ; [#uses=1]
+ %56 = bitcast i32 (...)* %55 to float (%"struct.btCollisionWorld::RayResultCallback"*, %"struct.btCollisionWorld::LocalRayResult"*, i8)* ; [#uses=1]
+ %57 = call float %56(%"struct.btCollisionWorld::RayResultCallback"* %51, %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i8 zeroext 1) ; [#uses=1]
+ ret float %57
+}
+
+; [#uses=1]
+define internal float @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallback9reportHitE_0RK9btVector3fii(%struct..1BridgeTriangleRaycastCallback* nocapture %this, %struct.btQuadWord* nocapture %hitNormalLocal, float %hitFraction, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %shapeInfo = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %rayResult = alloca %"struct.btCollisionWorld::LocalRayResult", align 8 ; [#uses=8]
+ %0 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %shapeInfo, i32 0, i32 0 ; [#uses=1]
+ store i32 %partId, i32* %0, align 8
+ %1 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %shapeInfo, i32 0, i32 1 ; [#uses=1]
+ store i32 %triangleIndex, i32* %1, align 4
+ %2 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = fmul float %3, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=3]
+ %11 = fmul float %8, %10 ; [#uses=1]
+ %12 = fadd float %6, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=3]
+ %17 = fmul float %14, %16 ; [#uses=1]
+ %18 = fadd float %12, %17 ; [#uses=1]
+ %19 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fmul float %20, %5 ; [#uses=1]
+ %22 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fmul float %23, %10 ; [#uses=1]
+ %25 = fadd float %21, %24 ; [#uses=1]
+ %26 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fmul float %27, %16 ; [#uses=1]
+ %29 = fadd float %25, %28 ; [#uses=1]
+ %30 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = fmul float %31, %5 ; [#uses=1]
+ %33 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fmul float %34, %10 ; [#uses=1]
+ %36 = fadd float %32, %35 ; [#uses=1]
+ %37 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fmul float %38, %16 ; [#uses=1]
+ %40 = fadd float %36, %39 ; [#uses=1]
+ %41 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %42 = load %struct.btCollisionObject** %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 0 ; [#uses=1]
+ store %struct.btCollisionObject* %42, %struct.btCollisionObject** %43, align 8
+ %44 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 1 ; [#uses=1]
+ store %struct.CONTACT_KEY_TOKEN* %shapeInfo, %struct.CONTACT_KEY_TOKEN** %44, align 4
+ %45 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %40, float* %45, align 8
+ %46 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %29, float* %46, align 4
+ %47 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %18, float* %47, align 8
+ %48 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %48, align 4
+ %49 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 3 ; [#uses=1]
+ store float %hitFraction, float* %49, align 8
+ %50 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %51 = load %"struct.btCollisionWorld::RayResultCallback"** %50, align 4 ; [#uses=2]
+ %52 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %51, i32 0, i32 0 ; [#uses=1]
+ %53 = load i32 (...)*** %52, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds i32 (...)** %53, i32 3 ; [#uses=1]
+ %55 = load i32 (...)** %54, align 4 ; [#uses=1]
+ %56 = bitcast i32 (...)* %55 to float (%"struct.btCollisionWorld::RayResultCallback"*, %"struct.btCollisionWorld::LocalRayResult"*, i8)* ; [#uses=1]
+ %57 = call float %56(%"struct.btCollisionWorld::RayResultCallback"* %51, %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i8 zeroext 1) ; [#uses=1]
+ ret float %57
+}
+
+; [#uses=1]
+define void @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D1Ev(%struct..2LocalInfoAdder2* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..2LocalInfoAdder2* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D0Ev(%struct..2LocalInfoAdder2* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..2LocalInfoAdder2* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..2LocalInfoAdder2* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal float @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder215addSingleResultERNS_14LocalRayResultEb(%struct..2LocalInfoAdder2* nocapture %this, %"struct.btCollisionWorld::LocalRayResult"* %r, i8 zeroext %b) align 2 {
+entry:
+ %shapeInfo = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %shapeInfo, i32 0, i32 0 ; [#uses=1]
+ store i32 -1, i32* %0, align 8
+ %1 = getelementptr inbounds %struct..2LocalInfoAdder2* %this, i32 0, i32 2 ; [#uses=1]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %shapeInfo, i32 0, i32 1 ; [#uses=1]
+ store i32 %2, i32* %3, align 4
+ %4 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %r, i32 0, i32 1 ; [#uses=2]
+ %5 = load %struct.CONTACT_KEY_TOKEN** %4, align 4 ; [#uses=1]
+ %6 = icmp eq %struct.CONTACT_KEY_TOKEN* %5, null ; [#uses=1]
+ br i1 %6, label %bb, label %bb1
+
+bb: ; preds = %entry
+ store %struct.CONTACT_KEY_TOKEN* %shapeInfo, %struct.CONTACT_KEY_TOKEN** %4, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %7 = getelementptr inbounds %struct..2LocalInfoAdder2* %this, i32 0, i32 1 ; [#uses=2]
+ %8 = load %"struct.btCollisionWorld::RayResultCallback"** %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %8, i32 0, i32 0 ; [#uses=1]
+ %10 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i32 (...)** %10, i32 3 ; [#uses=1]
+ %12 = load i32 (...)** %11, align 4 ; [#uses=1]
+ %13 = bitcast i32 (...)* %12 to float (%"struct.btCollisionWorld::RayResultCallback"*, %"struct.btCollisionWorld::LocalRayResult"*, i8)* ; [#uses=1]
+ %14 = call float %13(%"struct.btCollisionWorld::RayResultCallback"* %8, %"struct.btCollisionWorld::LocalRayResult"* %r, i8 zeroext %b) ; [#uses=1]
+ %15 = load %"struct.btCollisionWorld::RayResultCallback"** %7, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %15, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct..2LocalInfoAdder2* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %17, float* %18, align 4
+ ret float %14
+}
+
+; [#uses=1]
+define internal float @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitERK9btVector3SG_fii(%struct..3BridgeTriangleConvexcastCallback* nocapture %this, %struct.btQuadWord* nocapture %hitNormalLocal, %struct.btQuadWord* nocapture %hitPointLocal, float %hitFraction, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %shapeInfo = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %convexResult = alloca %"struct.btCollisionWorld::LocalConvexResult", align 8 ; [#uses=12]
+ %0 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %shapeInfo, i32 0, i32 0 ; [#uses=1]
+ store i32 %partId, i32* %0, align 8
+ %1 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %shapeInfo, i32 0, i32 1 ; [#uses=1]
+ store i32 %triangleIndex, i32* %1, align 4
+ %2 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load %"struct.btCollisionWorld::ConvexResultCallback"** %2, align 4 ; [#uses=3]
+ %4 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %3, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fcmp ult float %5, %hitFraction ; [#uses=1]
+ br i1 %6, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %7 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %8 = load %struct.btCollisionObject** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 0 ; [#uses=1]
+ store %struct.btCollisionObject* %8, %struct.btCollisionObject** %9, align 8
+ %10 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 1 ; [#uses=1]
+ store %struct.CONTACT_KEY_TOKEN* %shapeInfo, %struct.CONTACT_KEY_TOKEN** %10, align 4
+ %11 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 8
+ %14 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 8
+ %20 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %hitPointLocal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 8
+ %26 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %hitPointLocal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %hitPointLocal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 8
+ %32 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %hitPointLocal, i32 0, i32 0, i32 3 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 4 ; [#uses=1]
+ store float %hitFraction, float* %35, align 8
+ %36 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %3, i32 0, i32 0 ; [#uses=1]
+ %37 = load i32 (...)*** %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32 (...)** %37, i32 3 ; [#uses=1]
+ %39 = load i32 (...)** %38, align 4 ; [#uses=1]
+ %40 = bitcast i32 (...)* %39 to float (%"struct.btCollisionWorld::ConvexResultCallback"*, %"struct.btCollisionWorld::LocalConvexResult"*, i8)* ; [#uses=1]
+ %41 = call float %40(%"struct.btCollisionWorld::ConvexResultCallback"* %3, %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i8 zeroext 1) ; [#uses=1]
+ ret float %41
+
+bb2: ; preds = %entry
+ ret float %hitFraction
+}
+
+; [#uses=1]
+define internal float @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallback9reportHitE_0RK9btVector3SG_fii(%struct..4BridgeTriangleConvexcastCallback* nocapture %this, %struct.btQuadWord* nocapture %hitNormalLocal, %struct.btQuadWord* nocapture %hitPointLocal, float %hitFraction, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %shapeInfo = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %convexResult = alloca %"struct.btCollisionWorld::LocalConvexResult", align 8 ; [#uses=12]
+ %0 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %shapeInfo, i32 0, i32 0 ; [#uses=1]
+ store i32 %partId, i32* %0, align 8
+ %1 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %shapeInfo, i32 0, i32 1 ; [#uses=1]
+ store i32 %triangleIndex, i32* %1, align 4
+ %2 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load %"struct.btCollisionWorld::ConvexResultCallback"** %2, align 4 ; [#uses=3]
+ %4 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %3, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fcmp ult float %5, %hitFraction ; [#uses=1]
+ br i1 %6, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %7 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %8 = load %struct.btCollisionObject** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 0 ; [#uses=1]
+ store %struct.btCollisionObject* %8, %struct.btCollisionObject** %9, align 8
+ %10 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 1 ; [#uses=1]
+ store %struct.CONTACT_KEY_TOKEN* %shapeInfo, %struct.CONTACT_KEY_TOKEN** %10, align 4
+ %11 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 8
+ %14 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 8
+ %20 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %hitNormalLocal, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %hitPointLocal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 8
+ %26 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %hitPointLocal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %hitPointLocal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 8
+ %32 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %hitPointLocal, i32 0, i32 0, i32 3 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 4 ; [#uses=1]
+ store float %hitFraction, float* %35, align 8
+ %36 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %3, i32 0, i32 0 ; [#uses=1]
+ %37 = load i32 (...)*** %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32 (...)** %37, i32 3 ; [#uses=1]
+ %39 = load i32 (...)** %38, align 4 ; [#uses=1]
+ %40 = bitcast i32 (...)* %39 to float (%"struct.btCollisionWorld::ConvexResultCallback"*, %"struct.btCollisionWorld::LocalConvexResult"*, i8)* ; [#uses=1]
+ %41 = call float %40(%"struct.btCollisionWorld::ConvexResultCallback"* %3, %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i8 zeroext 0) ; [#uses=1]
+ ret float %41
+
+bb2: ; preds = %entry
+ ret float %hitFraction
+}
+
+; [#uses=1]
+define void @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD1Ev(%struct..5LocalInfoAdder* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..5LocalInfoAdder* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD0Ev(%struct..5LocalInfoAdder* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..5LocalInfoAdder* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..5LocalInfoAdder* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal float @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdder15addSingleResultERNS_17LocalConvexResultEb(%struct..5LocalInfoAdder* nocapture %this, %"struct.btCollisionWorld::LocalConvexResult"* %r, i8 zeroext %b) align 2 {
+entry:
+ %shapeInfo = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %shapeInfo, i32 0, i32 0 ; [#uses=1]
+ store i32 -1, i32* %0, align 8
+ %1 = getelementptr inbounds %struct..5LocalInfoAdder* %this, i32 0, i32 2 ; [#uses=1]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %shapeInfo, i32 0, i32 1 ; [#uses=1]
+ store i32 %2, i32* %3, align 4
+ %4 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %r, i32 0, i32 1 ; [#uses=2]
+ %5 = load %struct.CONTACT_KEY_TOKEN** %4, align 4 ; [#uses=1]
+ %6 = icmp eq %struct.CONTACT_KEY_TOKEN* %5, null ; [#uses=1]
+ br i1 %6, label %bb, label %bb1
+
+bb: ; preds = %entry
+ store %struct.CONTACT_KEY_TOKEN* %shapeInfo, %struct.CONTACT_KEY_TOKEN** %4, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %7 = getelementptr inbounds %struct..5LocalInfoAdder* %this, i32 0, i32 1 ; [#uses=2]
+ %8 = load %"struct.btCollisionWorld::ConvexResultCallback"** %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %8, i32 0, i32 0 ; [#uses=1]
+ %10 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i32 (...)** %10, i32 3 ; [#uses=1]
+ %12 = load i32 (...)** %11, align 4 ; [#uses=1]
+ %13 = bitcast i32 (...)* %12 to float (%"struct.btCollisionWorld::ConvexResultCallback"*, %"struct.btCollisionWorld::LocalConvexResult"*, i8)* ; [#uses=1]
+ %14 = call float %13(%"struct.btCollisionWorld::ConvexResultCallback"* %8, %"struct.btCollisionWorld::LocalConvexResult"* %r, i8 zeroext %b) ; [#uses=1]
+ %15 = load %"struct.btCollisionWorld::ConvexResultCallback"** %7, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %15, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct..5LocalInfoAdder* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %17, float* %18, align 4
+ ret float %14
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN24btBroadphaseAabbCallbackD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btBroadphaseAabbCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN24btBroadphaseAabbCallbackD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btBroadphaseAabbCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btBroadphaseRayCallbackD1Ev(%struct.btBroadphaseRayCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseRayCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btBroadphaseRayCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btBroadphaseRayCallbackD0Ev(%struct.btBroadphaseRayCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseRayCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btBroadphaseRayCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btBroadphaseRayCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btBridgedManifoldResult15addContactPointERK9btVector3S2_f(%struct.btBridgedManifoldResult* nocapture %this, %struct.btQuadWord* nocapture %normalOnBInWorld, %struct.btQuadWord* nocapture %pointInWorld, float %depth) align 2 {
+entry:
+ %newPt = alloca %struct.btManifoldPoint, align 8 ; [#uses=45]
+ %0 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btPersistentManifold* %1, i32 0, i32 2 ; [#uses=1]
+ %3 = load i8** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 4 ; [#uses=2]
+ %5 = load %struct.btCollisionObject** %4, align 4 ; [#uses=2]
+ %6 = bitcast %struct.btCollisionObject* %5 to i8* ; [#uses=1]
+ %7 = icmp ne i8* %3, %6 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=2]
+ %10 = fmul float %9, %depth ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=2]
+ %13 = fmul float %12, %depth ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=2]
+ %16 = fmul float %15, %depth ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=4]
+ %19 = fadd float %18, %10 ; [#uses=3]
+ %20 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=4]
+ %22 = fadd float %21, %13 ; [#uses=3]
+ %23 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=4]
+ %25 = fadd float %24, %16 ; [#uses=3]
+ br i1 %7, label %bb, label %bb2
+
+bb: ; preds = %entry
+ %26 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fsub float %19, %27 ; [#uses=3]
+ %29 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fsub float %22, %30 ; [#uses=3]
+ %32 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fsub float %25, %33 ; [#uses=3]
+ %35 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = load float* %42, align 4 ; [#uses=1]
+ %46 = load float* %41, align 4 ; [#uses=1]
+ %47 = load float* %40, align 4 ; [#uses=1]
+ %48 = load float* %39, align 4 ; [#uses=1]
+ %49 = load float* %38, align 4 ; [#uses=1]
+ %50 = load float* %37, align 4 ; [#uses=1]
+ %51 = load float* %36, align 4 ; [#uses=1]
+ %52 = load float* %35, align 4 ; [#uses=1]
+ %53 = fmul float %50, %34 ; [#uses=1]
+ %54 = fmul float %51, %31 ; [#uses=1]
+ %55 = fadd float %53, %54 ; [#uses=1]
+ %56 = fmul float %52, %28 ; [#uses=1]
+ %57 = fadd float %55, %56 ; [#uses=1]
+ %58 = fmul float %47, %34 ; [#uses=1]
+ %59 = fmul float %48, %31 ; [#uses=1]
+ %60 = fadd float %58, %59 ; [#uses=1]
+ %61 = fmul float %49, %28 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=1]
+ %63 = fmul float %44, %34 ; [#uses=1]
+ %64 = fmul float %45, %31 ; [#uses=1]
+ %65 = fadd float %63, %64 ; [#uses=1]
+ %66 = fmul float %46, %28 ; [#uses=1]
+ %67 = fadd float %65, %66 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = fsub float %18, %69 ; [#uses=3]
+ %71 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fsub float %21, %72 ; [#uses=3]
+ %74 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = fsub float %24, %75 ; [#uses=3]
+ %77 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ %87 = load float* %84, align 4 ; [#uses=1]
+ %88 = load float* %83, align 4 ; [#uses=1]
+ %89 = load float* %82, align 4 ; [#uses=1]
+ %90 = load float* %81, align 4 ; [#uses=1]
+ %91 = load float* %80, align 4 ; [#uses=1]
+ %92 = load float* %79, align 4 ; [#uses=1]
+ %93 = load float* %78, align 4 ; [#uses=1]
+ %94 = load float* %77, align 4 ; [#uses=1]
+ %95 = fmul float %92, %76 ; [#uses=1]
+ %96 = fmul float %93, %73 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %94, %70 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=1]
+ %100 = fmul float %89, %76 ; [#uses=1]
+ %101 = fmul float %90, %73 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fmul float %91, %70 ; [#uses=1]
+ %104 = fadd float %102, %103 ; [#uses=1]
+ %105 = fmul float %86, %76 ; [#uses=1]
+ %106 = fmul float %87, %73 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = fmul float %88, %70 ; [#uses=1]
+ %109 = fadd float %107, %108 ; [#uses=1]
+ br label %bb5
+
+bb2: ; preds = %entry
+ %110 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %111 = load float* %110, align 4 ; [#uses=1]
+ %112 = fsub float %19, %111 ; [#uses=3]
+ %113 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %114 = load float* %113, align 4 ; [#uses=1]
+ %115 = fsub float %22, %114 ; [#uses=3]
+ %116 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %117 = load float* %116, align 4 ; [#uses=1]
+ %118 = fsub float %25, %117 ; [#uses=3]
+ %119 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %121 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %124 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %126 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %128 = load float* %127, align 4 ; [#uses=1]
+ %129 = load float* %126, align 4 ; [#uses=1]
+ %130 = load float* %125, align 4 ; [#uses=1]
+ %131 = load float* %124, align 4 ; [#uses=1]
+ %132 = load float* %123, align 4 ; [#uses=1]
+ %133 = load float* %122, align 4 ; [#uses=1]
+ %134 = load float* %121, align 4 ; [#uses=1]
+ %135 = load float* %120, align 4 ; [#uses=1]
+ %136 = load float* %119, align 4 ; [#uses=1]
+ %137 = fmul float %134, %118 ; [#uses=1]
+ %138 = fmul float %135, %115 ; [#uses=1]
+ %139 = fadd float %137, %138 ; [#uses=1]
+ %140 = fmul float %136, %112 ; [#uses=1]
+ %141 = fadd float %139, %140 ; [#uses=1]
+ %142 = fmul float %131, %118 ; [#uses=1]
+ %143 = fmul float %132, %115 ; [#uses=1]
+ %144 = fadd float %142, %143 ; [#uses=1]
+ %145 = fmul float %133, %112 ; [#uses=1]
+ %146 = fadd float %144, %145 ; [#uses=1]
+ %147 = fmul float %128, %118 ; [#uses=1]
+ %148 = fmul float %129, %115 ; [#uses=1]
+ %149 = fadd float %147, %148 ; [#uses=1]
+ %150 = fmul float %130, %112 ; [#uses=1]
+ %151 = fadd float %149, %150 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %153 = load float* %152, align 4 ; [#uses=1]
+ %154 = fsub float %18, %153 ; [#uses=3]
+ %155 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %156 = load float* %155, align 4 ; [#uses=1]
+ %157 = fsub float %21, %156 ; [#uses=3]
+ %158 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %159 = load float* %158, align 4 ; [#uses=1]
+ %160 = fsub float %24, %159 ; [#uses=3]
+ %161 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %163 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %169 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %170 = load float* %169, align 4 ; [#uses=1]
+ %171 = load float* %168, align 4 ; [#uses=1]
+ %172 = load float* %167, align 4 ; [#uses=1]
+ %173 = load float* %166, align 4 ; [#uses=1]
+ %174 = load float* %165, align 4 ; [#uses=1]
+ %175 = load float* %164, align 4 ; [#uses=1]
+ %176 = load float* %163, align 4 ; [#uses=1]
+ %177 = load float* %162, align 4 ; [#uses=1]
+ %178 = load float* %161, align 4 ; [#uses=1]
+ %179 = fmul float %176, %160 ; [#uses=1]
+ %180 = fmul float %177, %157 ; [#uses=1]
+ %181 = fadd float %179, %180 ; [#uses=1]
+ %182 = fmul float %178, %154 ; [#uses=1]
+ %183 = fadd float %181, %182 ; [#uses=1]
+ %184 = fmul float %173, %160 ; [#uses=1]
+ %185 = fmul float %174, %157 ; [#uses=1]
+ %186 = fadd float %184, %185 ; [#uses=1]
+ %187 = fmul float %175, %154 ; [#uses=1]
+ %188 = fadd float %186, %187 ; [#uses=1]
+ %189 = fmul float %170, %160 ; [#uses=1]
+ %190 = fmul float %171, %157 ; [#uses=1]
+ %191 = fadd float %189, %190 ; [#uses=1]
+ %192 = fmul float %172, %154 ; [#uses=1]
+ %193 = fadd float %191, %192 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb2, %bb
+ %localA.0.0.0 = phi float [ %67, %bb ], [ %151, %bb2 ] ; [#uses=1]
+ %localA.0.1.0 = phi float [ %62, %bb ], [ %146, %bb2 ] ; [#uses=1]
+ %localA.0.2.0 = phi float [ %57, %bb ], [ %141, %bb2 ] ; [#uses=1]
+ %localB.0.0.0 = phi float [ %109, %bb ], [ %193, %bb2 ] ; [#uses=1]
+ %localB.0.1.0 = phi float [ %104, %bb ], [ %188, %bb2 ] ; [#uses=1]
+ %localB.0.2.0 = phi float [ %99, %bb ], [ %183, %bb2 ] ; [#uses=1]
+ %194 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %localA.0.0.0, float* %194, align 8
+ %195 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %localA.0.1.0, float* %195, align 4
+ %196 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %localA.0.2.0, float* %196, align 8
+ %197 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %197, align 4
+ %198 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %localB.0.0.0, float* %198, align 8
+ %199 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %localB.0.1.0, float* %199, align 4
+ %200 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %localB.0.2.0, float* %200, align 8
+ %201 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %201, align 4
+ %202 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %15, float* %202, align 8
+ %203 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %12, float* %203, align 4
+ %204 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %9, float* %204, align 8
+ %205 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %206 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %207 = load float* %206, align 4 ; [#uses=1]
+ store float %207, float* %205, align 4
+ %208 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 5 ; [#uses=1]
+ store float %depth, float* %208, align 8
+ %209 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 6 ; [#uses=1]
+ store float 0.000000e+00, float* %209, align 4
+ %210 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %210, align 8
+ %211 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 12 ; [#uses=1]
+ store i8* null, i8** %211, align 4
+ %212 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %212, align 8
+ %213 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 14 ; [#uses=1]
+ store i8 0, i8* %213, align 4
+ %214 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 15 ; [#uses=1]
+ store float 0.000000e+00, float* %214, align 8
+ %215 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %215, align 4
+ %216 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 17 ; [#uses=1]
+ store float 0.000000e+00, float* %216, align 8
+ %217 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 18 ; [#uses=1]
+ store float 0.000000e+00, float* %217, align 4
+ %218 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 19 ; [#uses=1]
+ store float 0.000000e+00, float* %218, align 8
+ %219 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 20 ; [#uses=1]
+ store float 0.000000e+00, float* %219, align 4
+ %220 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 21 ; [#uses=1]
+ store i32 0, i32* %220, align 8
+ %221 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 24, i32 0, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %221, align 4
+ %222 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 24, i32 1, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %222, align 4
+ %223 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 24, i32 2, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %223, align 4
+ %224 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %25, float* %224, align 8
+ %225 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %22, float* %225, align 4
+ %226 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %19, float* %226, align 8
+ %227 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %227, align 4
+ %228 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %24, float* %228, align 8
+ %229 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %21, float* %229, align 4
+ %230 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %18, float* %230, align 8
+ %231 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %232 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %233 = load float* %232, align 4 ; [#uses=1]
+ store float %233, float* %231, align 4
+ br i1 %7, label %bb9.thread, label %bb9
+
+bb9.thread: ; preds = %bb5
+ %234 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 7 ; [#uses=1]
+ %235 = load i32* %234, align 4 ; [#uses=2]
+ %236 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 8 ; [#uses=1]
+ store i32 %235, i32* %236, align 4
+ %237 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %238 = load i32* %237, align 4 ; [#uses=2]
+ %239 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 9 ; [#uses=1]
+ store i32 %238, i32* %239, align 8
+ %240 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 9 ; [#uses=1]
+ %241 = load i32* %240, align 4 ; [#uses=2]
+ %242 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 10 ; [#uses=1]
+ store i32 %241, i32* %242, align 4
+ %243 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 8 ; [#uses=1]
+ %244 = load i32* %243, align 4 ; [#uses=2]
+ %245 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 11 ; [#uses=1]
+ store i32 %244, i32* %245, align 8
+ %246 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %iftmp.373.039.pre = load %struct.btCollisionObject** %246, align 4 ; [#uses=1]
+ br label %bb17
+
+bb9: ; preds = %bb5
+ %247 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %248 = load i32* %247, align 4 ; [#uses=2]
+ %249 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 8 ; [#uses=1]
+ store i32 %248, i32* %249, align 4
+ %250 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 7 ; [#uses=1]
+ %251 = load i32* %250, align 4 ; [#uses=2]
+ %252 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 9 ; [#uses=1]
+ store i32 %251, i32* %252, align 8
+ %253 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 8 ; [#uses=1]
+ %254 = load i32* %253, align 4 ; [#uses=2]
+ %255 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 10 ; [#uses=1]
+ store i32 %254, i32* %255, align 4
+ %256 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 9 ; [#uses=1]
+ %257 = load i32* %256, align 4 ; [#uses=2]
+ %258 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 11 ; [#uses=1]
+ store i32 %257, i32* %258, align 8
+ %259 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ br label %bb17
+
+bb17: ; preds = %bb9, %bb9.thread
+ %260 = phi i32 [ %235, %bb9.thread ], [ %248, %bb9 ] ; [#uses=1]
+ %261 = phi i32 [ %241, %bb9.thread ], [ %254, %bb9 ] ; [#uses=1]
+ %262 = phi i32 [ %238, %bb9.thread ], [ %251, %bb9 ] ; [#uses=1]
+ %263 = phi i32 [ %244, %bb9.thread ], [ %257, %bb9 ] ; [#uses=1]
+ %iftmp.373.039 = phi %struct.btCollisionObject* [ %iftmp.373.039.pre, %bb9.thread ], [ %5, %bb9 ] ; [#uses=1]
+ %iftmp.374.0.in = phi %struct.btCollisionObject** [ %4, %bb9.thread ], [ %259, %bb9 ] ; [#uses=1]
+ %iftmp.374.0 = load %struct.btCollisionObject** %iftmp.374.0.in, align 4 ; [#uses=1]
+ %264 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 1 ; [#uses=1]
+ %265 = load %"struct.btCollisionWorld::ContactResultCallback"** %264, align 4 ; [#uses=2]
+ %266 = getelementptr inbounds %"struct.btCollisionWorld::ContactResultCallback"* %265, i32 0, i32 0 ; [#uses=1]
+ %267 = load i32 (...)*** %266, align 4 ; [#uses=1]
+ %268 = getelementptr inbounds i32 (...)** %267, i32 3 ; [#uses=1]
+ %269 = load i32 (...)** %268, align 4 ; [#uses=1]
+ %270 = bitcast i32 (...)* %269 to float (%"struct.btCollisionWorld::ContactResultCallback"*, %struct.btManifoldPoint*, %struct.btCollisionObject*, i32, i32, %struct.btCollisionObject*, i32, i32)* ; [#uses=1]
+ %271 = call float %270(%"struct.btCollisionWorld::ContactResultCallback"* %265, %struct.btManifoldPoint* %newPt, %struct.btCollisionObject* %iftmp.373.039, i32 %260, i32 %261, %struct.btCollisionObject* %iftmp.374.0, i32 %262, i32 %263) ; [#uses=0]
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btSingleContactCallbackD1Ev(%struct.btSingleContactCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSingleContactCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btSingleContactCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btSingleContactCallbackD0Ev(%struct.btSingleContactCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSingleContactCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btSingleContactCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btSingleContactCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZN23btSingleContactCallback7processEPK17btBroadphaseProxy(%struct.btSingleContactCallback* nocapture %this, %struct.btBroadphaseProxy* nocapture %proxy) align 2 {
+entry:
+ %contactPointResult = alloca %struct.btBridgedManifoldResult, align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 0 ; [#uses=1]
+ %1 = load i8** %0, align 4 ; [#uses=2]
+ %2 = bitcast i8* %1 to %struct.btCollisionObject* ; [#uses=4]
+ %3 = getelementptr inbounds %struct.btSingleContactCallback* %this, i32 0, i32 1 ; [#uses=4]
+ %4 = load %struct.btCollisionObject** %3, align 4 ; [#uses=1]
+ %5 = icmp eq %struct.btCollisionObject* %4, %2 ; [#uses=1]
+ br i1 %5, label %bb7, label %bb1
+
+bb1: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btSingleContactCallback* %this, i32 0, i32 3 ; [#uses=2]
+ %7 = load %"struct.btCollisionWorld::ContactResultCallback"** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %"struct.btCollisionWorld::ContactResultCallback"* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 2 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i8* %1, i32 188 ; [#uses=1]
+ %13 = bitcast i8* %12 to %struct.btBroadphaseProxy** ; [#uses=1]
+ %14 = load %struct.btBroadphaseProxy** %13, align 4 ; [#uses=1]
+ %15 = bitcast i32 (...)* %11 to i8 (%"struct.btCollisionWorld::ContactResultCallback"*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %16 = call zeroext i8 %15(%"struct.btCollisionWorld::ContactResultCallback"* %7, %struct.btBroadphaseProxy* %14) ; [#uses=1]
+ %toBool = icmp eq i8 %16, 0 ; [#uses=1]
+ br i1 %toBool, label %bb7, label %bb2
+
+bb2: ; preds = %bb1
+ %17 = getelementptr inbounds %struct.btSingleContactCallback* %this, i32 0, i32 2 ; [#uses=3]
+ %18 = load %struct.btCollisionWorld** %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btCollisionWorld* %18, i32 0, i32 2 ; [#uses=1]
+ %20 = load %struct.btActionInterface** %19, align 4 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btActionInterface* %20, i32 0, i32 0 ; [#uses=1]
+ %22 = load i32 (...)*** %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds i32 (...)** %22, i32 2 ; [#uses=1]
+ %24 = load i32 (...)** %23, align 4 ; [#uses=1]
+ %25 = load %struct.btCollisionObject** %3, align 4 ; [#uses=1]
+ %26 = bitcast i32 (...)* %24 to %struct.btCollisionAlgorithm* (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btPersistentManifold*)* ; [#uses=1]
+ %27 = call %struct.btCollisionAlgorithm* %26(%struct.btActionInterface* %20, %struct.btCollisionObject* %25, %struct.btCollisionObject* %2, %struct.btPersistentManifold* null) ; [#uses=5]
+ %28 = icmp eq %struct.btCollisionAlgorithm* %27, null ; [#uses=1]
+ br i1 %28, label %bb7, label %bb3
+
+bb3: ; preds = %bb2
+ %29 = load %"struct.btCollisionWorld::ContactResultCallback"** %6, align 4 ; [#uses=1]
+ %30 = load %struct.btCollisionObject** %3, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btBridgedManifoldResult* %contactPointResult, i32 0, i32 0 ; [#uses=2]
+ call void @_ZN16btManifoldResultC2EP17btCollisionObjectS1_(%struct.btManifoldResult* %31, %struct.btCollisionObject* %30, %struct.btCollisionObject* %2)
+ %32 = getelementptr inbounds %struct.btBridgedManifoldResult* %contactPointResult, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV23btBridgedManifoldResult, i32 0, i32 2), i32 (...)*** %32, align 8
+ %33 = getelementptr inbounds %struct.btBridgedManifoldResult* %contactPointResult, i32 0, i32 1 ; [#uses=1]
+ store %"struct.btCollisionWorld::ContactResultCallback"* %29, %"struct.btCollisionWorld::ContactResultCallback"** %33, align 8
+ %34 = getelementptr inbounds %struct.btCollisionAlgorithm* %27, i32 0, i32 0 ; [#uses=2]
+ %35 = load i32 (...)*** %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds i32 (...)** %35, i32 2 ; [#uses=1]
+ %37 = load i32 (...)** %36, align 4 ; [#uses=1]
+ %38 = load %struct.btCollisionWorld** %17, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btCollisionWorld* %38, i32 0, i32 3 ; [#uses=1]
+ %40 = load %struct.btCollisionObject** %3, align 4 ; [#uses=1]
+ %41 = bitcast i32 (...)* %37 to void (%struct.btCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* ; [#uses=1]
+ invoke void %41(%struct.btCollisionAlgorithm* %27, %struct.btCollisionObject* %40, %struct.btCollisionObject* %2, %struct.btDispatcherInfo* %39, %struct.btManifoldResult* %31)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb3
+ %42 = load i32 (...)*** %34, align 4 ; [#uses=1]
+ %43 = load i32 (...)** %42, align 4 ; [#uses=1]
+ %44 = bitcast i32 (...)* %43 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ invoke void %44(%struct.btCollisionAlgorithm* %27)
+ to label %invcont4 unwind label %lpad
+
+invcont4: ; preds = %invcont
+ %45 = load %struct.btCollisionWorld** %17, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btCollisionWorld* %45, i32 0, i32 2 ; [#uses=1]
+ %47 = load %struct.btActionInterface** %46, align 4 ; [#uses=2]
+ %48 = getelementptr inbounds %struct.btActionInterface* %47, i32 0, i32 0 ; [#uses=1]
+ %49 = load i32 (...)*** %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds i32 (...)** %49, i32 13 ; [#uses=1]
+ %51 = load i32 (...)** %50, align 4 ; [#uses=1]
+ %52 = bitcast i32 (...)* %51 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %53 = bitcast %struct.btCollisionAlgorithm* %27 to i8* ; [#uses=1]
+ invoke void %52(%struct.btActionInterface* %47, i8* %53)
+ to label %bb7 unwind label %lpad
+
+bb7: ; preds = %invcont4, %bb2, %bb1, %entry
+ ret i8 1
+
+lpad: ; preds = %invcont4, %invcont, %bb3
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select13 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV23btBridgedManifoldResult, i32 0, i32 2), i32 (...)*** %32, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17DebugDrawcallbackD1Ev(%struct.DebugDrawcallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 8), i32 (...)*** %1, align 4
+ %2 = ptrtoint %struct.DebugDrawcallback* %this to i32 ; [#uses=1]
+ %3 = add i32 %2, 4 ; [#uses=1]
+ %4 = inttoptr i32 %3 to %struct.DebugDrawcallback* ; [#uses=1]
+ %5 = getelementptr inbounds %struct.DebugDrawcallback* %4, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %5)
+ to label %bb3 unwind label %lpad
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %entry
+ %6 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %6)
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %7 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %7)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17DebugDrawcallbackD0Ev(%struct.DebugDrawcallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 8), i32 (...)*** %1, align 4
+ %2 = ptrtoint %struct.DebugDrawcallback* %this to i32 ; [#uses=1]
+ %3 = add i32 %2, 4 ; [#uses=1]
+ %4 = inttoptr i32 %3 to %struct.DebugDrawcallback* ; [#uses=1]
+ %5 = getelementptr inbounds %struct.DebugDrawcallback* %4, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %5)
+ to label %bb3 unwind label %lpad
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %entry
+ %6 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %6)
+ %7 = bitcast %struct.DebugDrawcallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %7) nounwind
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %8 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %8)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17DebugDrawcallback15processTriangleEP9btVector3ii(%struct.DebugDrawcallback* %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %wv0 = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %wv1 = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %wv2 = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %center = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %normalColor = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=3]
+ %3 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=3]
+ %5 = fmul float %2, %4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=3]
+ %10 = fmul float %7, %9 ; [#uses=1]
+ %11 = fadd float %5, %10 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=3]
+ %16 = fmul float %13, %15 ; [#uses=1]
+ %17 = fadd float %11, %16 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=3]
+ %20 = fadd float %17, %19 ; [#uses=4]
+ %21 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=3]
+ %23 = fmul float %22, %4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=3]
+ %26 = fmul float %25, %9 ; [#uses=1]
+ %27 = fadd float %23, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=3]
+ %30 = fmul float %29, %15 ; [#uses=1]
+ %31 = fadd float %27, %30 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=3]
+ %34 = fadd float %31, %33 ; [#uses=4]
+ %35 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=3]
+ %37 = fmul float %36, %4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=3]
+ %40 = fmul float %39, %9 ; [#uses=1]
+ %41 = fadd float %37, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=3]
+ %44 = fmul float %43, %15 ; [#uses=1]
+ %45 = fadd float %41, %44 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=3]
+ %48 = fadd float %45, %47 ; [#uses=4]
+ %49 = getelementptr inbounds %struct.btQuadWord* %wv0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %48, float* %49, align 8
+ %50 = getelementptr inbounds %struct.btQuadWord* %wv0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %34, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btQuadWord* %wv0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %20, float* %51, align 8
+ %52 = getelementptr inbounds %struct.btQuadWord* %wv0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=3]
+ %55 = fmul float %2, %54 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=3]
+ %58 = fmul float %7, %57 ; [#uses=1]
+ %59 = fadd float %55, %58 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=3]
+ %62 = fmul float %13, %61 ; [#uses=1]
+ %63 = fadd float %59, %62 ; [#uses=1]
+ %64 = fadd float %63, %19 ; [#uses=3]
+ %65 = fmul float %22, %54 ; [#uses=1]
+ %66 = fmul float %25, %57 ; [#uses=1]
+ %67 = fadd float %65, %66 ; [#uses=1]
+ %68 = fmul float %29, %61 ; [#uses=1]
+ %69 = fadd float %67, %68 ; [#uses=1]
+ %70 = fadd float %69, %33 ; [#uses=3]
+ %71 = fmul float %36, %54 ; [#uses=1]
+ %72 = fmul float %39, %57 ; [#uses=1]
+ %73 = fadd float %71, %72 ; [#uses=1]
+ %74 = fmul float %43, %61 ; [#uses=1]
+ %75 = fadd float %73, %74 ; [#uses=1]
+ %76 = fadd float %75, %47 ; [#uses=3]
+ %77 = getelementptr inbounds %struct.btQuadWord* %wv1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %76, float* %77, align 8
+ %78 = getelementptr inbounds %struct.btQuadWord* %wv1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %70, float* %78, align 4
+ %79 = getelementptr inbounds %struct.btQuadWord* %wv1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %64, float* %79, align 8
+ %80 = getelementptr inbounds %struct.btQuadWord* %wv1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %80, align 4
+ %81 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=3]
+ %83 = fmul float %2, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=3]
+ %86 = fmul float %7, %85 ; [#uses=1]
+ %87 = fadd float %83, %86 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=3]
+ %90 = fmul float %13, %89 ; [#uses=1]
+ %91 = fadd float %87, %90 ; [#uses=1]
+ %92 = fadd float %91, %19 ; [#uses=3]
+ %93 = fmul float %22, %82 ; [#uses=1]
+ %94 = fmul float %25, %85 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %29, %89 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fadd float %97, %33 ; [#uses=3]
+ %99 = fmul float %36, %82 ; [#uses=1]
+ %100 = fmul float %39, %85 ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=1]
+ %102 = fmul float %43, %89 ; [#uses=1]
+ %103 = fadd float %101, %102 ; [#uses=1]
+ %104 = fadd float %103, %47 ; [#uses=3]
+ %105 = getelementptr inbounds %struct.btQuadWord* %wv2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %104, float* %105, align 8
+ %106 = getelementptr inbounds %struct.btQuadWord* %wv2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %98, float* %106, align 4
+ %107 = getelementptr inbounds %struct.btQuadWord* %wv2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %92, float* %107, align 8
+ %108 = getelementptr inbounds %struct.btQuadWord* %wv2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %108, align 4
+ %109 = fadd float %20, %64 ; [#uses=1]
+ %110 = fadd float %34, %70 ; [#uses=1]
+ %111 = fadd float %48, %76 ; [#uses=1]
+ %112 = fadd float %109, %92 ; [#uses=1]
+ %113 = fadd float %110, %98 ; [#uses=1]
+ %114 = fadd float %111, %104 ; [#uses=1]
+ %115 = fmul float %112, 0x3FD5555560000000 ; [#uses=2]
+ %116 = fmul float %113, 0x3FD5555560000000 ; [#uses=2]
+ %117 = fmul float %114, 0x3FD5555560000000 ; [#uses=2]
+ %118 = getelementptr inbounds %struct.btQuadWord* %center, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %117, float* %118, align 8
+ %119 = getelementptr inbounds %struct.btQuadWord* %center, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %116, float* %119, align 4
+ %120 = getelementptr inbounds %struct.btQuadWord* %center, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %115, float* %120, align 8
+ %121 = getelementptr inbounds %struct.btQuadWord* %center, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %121, align 4
+ %122 = fsub float %92, %20 ; [#uses=2]
+ %123 = fsub float %98, %34 ; [#uses=2]
+ %124 = fsub float %104, %48 ; [#uses=2]
+ %125 = fsub float %64, %20 ; [#uses=2]
+ %126 = fsub float %70, %34 ; [#uses=2]
+ %127 = fsub float %76, %48 ; [#uses=2]
+ %128 = fmul float %127, %123 ; [#uses=1]
+ %129 = fmul float %126, %124 ; [#uses=1]
+ %130 = fsub float %128, %129 ; [#uses=3]
+ %131 = fmul float %125, %124 ; [#uses=1]
+ %132 = fmul float %127, %122 ; [#uses=1]
+ %133 = fsub float %131, %132 ; [#uses=3]
+ %134 = fmul float %126, %122 ; [#uses=1]
+ %135 = fmul float %125, %123 ; [#uses=1]
+ %136 = fsub float %134, %135 ; [#uses=3]
+ %137 = fmul float %136, %136 ; [#uses=1]
+ %138 = fmul float %133, %133 ; [#uses=1]
+ %139 = fadd float %137, %138 ; [#uses=1]
+ %140 = fmul float %130, %130 ; [#uses=1]
+ %141 = fadd float %139, %140 ; [#uses=1]
+ %142 = call float @sqrtf(float %141) nounwind readonly ; [#uses=1]
+ %143 = fdiv float 1.000000e+00, %142 ; [#uses=3]
+ %144 = fmul float %136, %143 ; [#uses=1]
+ %145 = fmul float %133, %143 ; [#uses=1]
+ %146 = fmul float %130, %143 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btQuadWord* %normalColor, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %147, align 8
+ %148 = getelementptr inbounds %struct.btQuadWord* %normalColor, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %148, align 4
+ %149 = getelementptr inbounds %struct.btQuadWord* %normalColor, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %149, align 8
+ %150 = getelementptr inbounds %struct.btQuadWord* %normalColor, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %150, align 4
+ %151 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 2 ; [#uses=4]
+ %152 = load %struct.btActionInterface** %151, align 4 ; [#uses=2]
+ %153 = getelementptr inbounds %struct.btActionInterface* %152, i32 0, i32 0 ; [#uses=1]
+ %154 = load i32 (...)*** %153, align 4 ; [#uses=1]
+ %155 = getelementptr inbounds i32 (...)** %154, i32 2 ; [#uses=1]
+ %156 = load i32 (...)** %155, align 4 ; [#uses=1]
+ %157 = fadd float %115, %146 ; [#uses=1]
+ %158 = fadd float %116, %145 ; [#uses=1]
+ %159 = fadd float %117, %144 ; [#uses=1]
+ %160 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %159, float* %160, align 8
+ %161 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %158, float* %161, align 4
+ %162 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %157, float* %162, align 8
+ %163 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %163, align 4
+ %164 = bitcast i32 (...)* %156 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %164(%struct.btActionInterface* %152, %struct.btQuadWord* %center, %struct.btQuadWord* %0, %struct.btQuadWord* %normalColor)
+ %165 = load %struct.btActionInterface** %151, align 4 ; [#uses=2]
+ %166 = getelementptr inbounds %struct.btActionInterface* %165, i32 0, i32 0 ; [#uses=1]
+ %167 = load i32 (...)*** %166, align 4 ; [#uses=1]
+ %168 = getelementptr inbounds i32 (...)** %167, i32 2 ; [#uses=1]
+ %169 = load i32 (...)** %168, align 4 ; [#uses=1]
+ %170 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 3 ; [#uses=3]
+ %171 = bitcast i32 (...)* %169 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %171(%struct.btActionInterface* %165, %struct.btQuadWord* %wv0, %struct.btQuadWord* %wv1, %struct.btQuadWord* %170)
+ %172 = load %struct.btActionInterface** %151, align 4 ; [#uses=2]
+ %173 = getelementptr inbounds %struct.btActionInterface* %172, i32 0, i32 0 ; [#uses=1]
+ %174 = load i32 (...)*** %173, align 4 ; [#uses=1]
+ %175 = getelementptr inbounds i32 (...)** %174, i32 2 ; [#uses=1]
+ %176 = load i32 (...)** %175, align 4 ; [#uses=1]
+ %177 = bitcast i32 (...)* %176 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %177(%struct.btActionInterface* %172, %struct.btQuadWord* %wv1, %struct.btQuadWord* %wv2, %struct.btQuadWord* %170)
+ %178 = load %struct.btActionInterface** %151, align 4 ; [#uses=2]
+ %179 = getelementptr inbounds %struct.btActionInterface* %178, i32 0, i32 0 ; [#uses=1]
+ %180 = load i32 (...)*** %179, align 4 ; [#uses=1]
+ %181 = getelementptr inbounds i32 (...)** %180, i32 2 ; [#uses=1]
+ %182 = load i32 (...)** %181, align 4 ; [#uses=1]
+ %183 = bitcast i32 (...)* %182 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %183(%struct.btActionInterface* %178, %struct.btQuadWord* %wv2, %struct.btQuadWord* %wv0, %struct.btQuadWord* %170)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii(%struct.DebugDrawcallback* %this, %struct.btQuadWord* %triangle, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 2 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.DebugDrawcallback*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ tail call void %4(%struct.DebugDrawcallback* %this, %struct.btQuadWord* %triangle, i32 %partId, i32 %triangleIndex)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZThn4_N17DebugDrawcallbackD1Ev(%struct.DebugDrawcallback* %this) {
+entry:
+ %0 = ptrtoint %struct.DebugDrawcallback* %this to i32 ; [#uses=1]
+ %1 = add i32 %0, -4 ; [#uses=1]
+ %2 = inttoptr i32 %1 to %struct.DebugDrawcallback* ; [#uses=4]
+ %3 = getelementptr inbounds %struct.DebugDrawcallback* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 2), i32 (...)*** %3, align 4
+ %4 = getelementptr inbounds %struct.DebugDrawcallback* %2, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 8), i32 (...)*** %4, align 4
+ %5 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %5)
+ to label %_ZN17DebugDrawcallbackD1Ev.exit unwind label %lpad.i
+
+invcont1.i: ; preds = %lpad.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ unreachable
+
+lpad.i: ; preds = %entry
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %6 = getelementptr inbounds %struct.DebugDrawcallback* %2, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %6)
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN17DebugDrawcallbackD1Ev.exit: ; preds = %entry
+ %7 = getelementptr inbounds %struct.DebugDrawcallback* %2, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %7)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZThn4_N17DebugDrawcallbackD0Ev(%struct.DebugDrawcallback* %this) {
+entry:
+ %0 = ptrtoint %struct.DebugDrawcallback* %this to i32 ; [#uses=1]
+ %1 = add i32 %0, -4 ; [#uses=2]
+ %2 = inttoptr i32 %1 to %struct.DebugDrawcallback* ; [#uses=4]
+ %3 = getelementptr inbounds %struct.DebugDrawcallback* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 2), i32 (...)*** %3, align 4
+ %4 = getelementptr inbounds %struct.DebugDrawcallback* %2, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 8), i32 (...)*** %4, align 4
+ %5 = getelementptr inbounds %struct.DebugDrawcallback* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %5)
+ to label %_ZN17DebugDrawcallbackD0Ev.exit unwind label %lpad.i
+
+invcont1.i: ; preds = %lpad.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ unreachable
+
+lpad.i: ; preds = %entry
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %6 = getelementptr inbounds %struct.DebugDrawcallback* %2, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %6)
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN17DebugDrawcallbackD0Ev.exit: ; preds = %entry
+ %7 = getelementptr inbounds %struct.DebugDrawcallback* %2, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %7)
+ %8 = inttoptr i32 %1 to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %8) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZThn4_N17DebugDrawcallback28internalProcessTriangleIndexEP9btVector3ii(%struct.DebugDrawcallback* %this, %struct.btQuadWord* %triangle, i32 %partId, i32 %triangleIndex) {
+entry:
+ %0 = ptrtoint %struct.DebugDrawcallback* %this to i32 ; [#uses=1]
+ %1 = add i32 %0, -4 ; [#uses=1]
+ %2 = inttoptr i32 %1 to %struct.DebugDrawcallback* ; [#uses=2]
+ %3 = getelementptr inbounds %struct.DebugDrawcallback* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32 (...)** %4, i32 2 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = bitcast i32 (...)* %6 to void (%struct.DebugDrawcallback*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ tail call void %7(%struct.DebugDrawcallback* %2, %struct.btQuadWord* %triangle, i32 %partId, i32 %triangleIndex)
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN16btCollisionWorld14debugDrawWorldEv(%struct.btCollisionWorld* %this) align 2 {
+entry:
+ %color = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %color31 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %minAabb = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %maxAabb = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %colorvec = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 0 ; [#uses=8]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 4 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %5 = call %struct.btActionInterface* %4(%struct.btCollisionWorld* %this) ; [#uses=1]
+ %6 = icmp eq %struct.btActionInterface* %5, null ; [#uses=1]
+ br i1 %6, label %bb10, label %bb
+
+bb: ; preds = %entry
+ %7 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 4 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %11 = call %struct.btActionInterface* %10(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btActionInterface* %11, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 12 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %17 = call i32 %16(%struct.btActionInterface* %11) ; [#uses=1]
+ %18 = and i32 %17, 8 ; [#uses=1]
+ %19 = icmp eq i32 %18, 0 ; [#uses=1]
+ br i1 %19, label %bb10, label %bb4
+
+bb4: ; preds = %bb
+ %20 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 2 ; [#uses=2]
+ %21 = load %struct.btActionInterface** %20, align 4 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btActionInterface* %21, i32 0, i32 0 ; [#uses=1]
+ %23 = load i32 (...)*** %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds i32 (...)** %23, i32 9 ; [#uses=1]
+ %25 = load i32 (...)** %24, align 4 ; [#uses=1]
+ %26 = bitcast i32 (...)* %25 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %27 = call i32 %26(%struct.btActionInterface* %21) ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 8
+ %29 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 8
+ %31 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = icmp sgt i32 %27, 0 ; [#uses=1]
+ br i1 %32, label %bb5, label %bb10
+
+bb5: ; preds = %bb8, %bb4
+ %33 = phi i32 [ %57, %bb8 ], [ 0, %bb4 ] ; [#uses=2]
+ %34 = load %struct.btActionInterface** %20, align 4 ; [#uses=2]
+ %35 = getelementptr inbounds %struct.btActionInterface* %34, i32 0, i32 0 ; [#uses=1]
+ %36 = load i32 (...)*** %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds i32 (...)** %36, i32 10 ; [#uses=1]
+ %38 = load i32 (...)** %37, align 4 ; [#uses=1]
+ %39 = bitcast i32 (...)* %38 to %struct.btPersistentManifold* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %40 = call %struct.btPersistentManifold* %39(%struct.btActionInterface* %34, i32 %33) ; [#uses=5]
+ %41 = getelementptr inbounds %struct.btPersistentManifold* %40, i32 0, i32 4 ; [#uses=1]
+ %42 = load i32* %41, align 4 ; [#uses=2]
+ %43 = icmp sgt i32 %42, 0 ; [#uses=1]
+ br i1 %43, label %bb6, label %bb8
+
+bb6: ; preds = %bb6, %bb5
+ %j.082 = phi i32 [ %56, %bb6 ], [ 0, %bb5 ] ; [#uses=5]
+ %scevgep = getelementptr %struct.btPersistentManifold* %40, i32 0, i32 1, i32 %j.082, i32 21 ; [#uses=1]
+ %scevgep87 = getelementptr %struct.btPersistentManifold* %40, i32 0, i32 1, i32 %j.082, i32 5 ; [#uses=1]
+ %scevgep88 = getelementptr %struct.btPersistentManifold* %40, i32 0, i32 1, i32 %j.082, i32 4, i32 0, i32 0 ; [#uses=1]
+ %scevgep8889 = bitcast float* %scevgep88 to %struct.btQuadWord* ; [#uses=1]
+ %scevgep90 = getelementptr %struct.btPersistentManifold* %40, i32 0, i32 1, i32 %j.082, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep9091 = bitcast float* %scevgep90 to %struct.btQuadWord* ; [#uses=1]
+ %44 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds i32 (...)** %44, i32 4 ; [#uses=1]
+ %46 = load i32 (...)** %45, align 4 ; [#uses=1]
+ %47 = bitcast i32 (...)* %46 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %48 = call %struct.btActionInterface* %47(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %49 = getelementptr inbounds %struct.btActionInterface* %48, i32 0, i32 0 ; [#uses=1]
+ %50 = load i32 (...)*** %49, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds i32 (...)** %50, i32 8 ; [#uses=1]
+ %52 = load i32 (...)** %51, align 4 ; [#uses=1]
+ %53 = load i32* %scevgep, align 4 ; [#uses=1]
+ %54 = load float* %scevgep87, align 4 ; [#uses=1]
+ %55 = bitcast i32 (...)* %52 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, float, i32, %struct.btQuadWord*)* ; [#uses=1]
+ call void %55(%struct.btActionInterface* %48, %struct.btQuadWord* %scevgep9091, %struct.btQuadWord* %scevgep8889, float %54, i32 %53, %struct.btQuadWord* %color)
+ %56 = add nsw i32 %j.082, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %56, %42 ; [#uses=1]
+ br i1 %exitcond, label %bb8, label %bb6
+
+bb8: ; preds = %bb6, %bb5
+ %57 = add nsw i32 %33, 1 ; [#uses=2]
+ %exitcond92 = icmp eq i32 %57, %27 ; [#uses=1]
+ br i1 %exitcond92, label %bb10, label %bb5
+
+bb10: ; preds = %bb8, %bb4, %bb, %entry
+ %58 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds i32 (...)** %58, i32 4 ; [#uses=1]
+ %60 = load i32 (...)** %59, align 4 ; [#uses=1]
+ %61 = bitcast i32 (...)* %60 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %62 = call %struct.btActionInterface* %61(%struct.btCollisionWorld* %this) ; [#uses=1]
+ %63 = icmp eq %struct.btActionInterface* %62, null ; [#uses=1]
+ br i1 %63, label %bb13, label %bb11
+
+bb11: ; preds = %bb10
+ %64 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %65 = getelementptr inbounds i32 (...)** %64, i32 4 ; [#uses=1]
+ %66 = load i32 (...)** %65, align 4 ; [#uses=1]
+ %67 = bitcast i32 (...)* %66 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %68 = call %struct.btActionInterface* %67(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %69 = getelementptr inbounds %struct.btActionInterface* %68, i32 0, i32 0 ; [#uses=1]
+ %70 = load i32 (...)*** %69, align 4 ; [#uses=1]
+ %71 = getelementptr inbounds i32 (...)** %70, i32 12 ; [#uses=1]
+ %72 = load i32 (...)** %71, align 4 ; [#uses=1]
+ %73 = bitcast i32 (...)* %72 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %74 = call i32 %73(%struct.btActionInterface* %68) ; [#uses=1]
+ %75 = and i32 %74, 3 ; [#uses=1]
+ %76 = icmp eq i32 %75, 0 ; [#uses=1]
+ br i1 %76, label %bb13, label %bb47.preheader
+
+bb47.preheader: ; preds = %bb11
+ %77 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ %78 = load i32* %77, align 4 ; [#uses=1]
+ %79 = icmp sgt i32 %78, 0 ; [#uses=1]
+ br i1 %79, label %bb.nph86, label %bb13
+
+bb13: ; preds = %bb46, %bb47.preheader, %bb11, %bb10
+ ret void
+
+bb.nph86: ; preds = %bb47.preheader
+ %80 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 6 ; [#uses=2]
+ %82 = getelementptr inbounds %struct.btQuadWord* %colorvec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btQuadWord* %colorvec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btQuadWord* %colorvec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btQuadWord* %colorvec, i32 0, i32 0, i32 3 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btQuadWord* %color31, i32 0, i32 0, i32 0 ; [#uses=7]
+ %87 = getelementptr inbounds %struct.btQuadWord* %color31, i32 0, i32 0, i32 1 ; [#uses=7]
+ %88 = getelementptr inbounds %struct.btQuadWord* %color31, i32 0, i32 0, i32 2 ; [#uses=7]
+ %89 = getelementptr inbounds %struct.btQuadWord* %color31, i32 0, i32 0, i32 3 ; [#uses=7]
+ br label %bb18
+
+bb18: ; preds = %bb46, %bb.nph86
+ %i17.085 = phi i32 [ 0, %bb.nph86 ], [ %tmp, %bb46 ] ; [#uses=2]
+ %tmp = add i32 %i17.085, 1 ; [#uses=2]
+ %90 = load %struct.btCollisionObject*** %80, align 4 ; [#uses=1]
+ %scevgep93 = getelementptr %struct.btCollisionObject** %90, i32 %i17.085 ; [#uses=1]
+ %91 = load %struct.btCollisionObject** %scevgep93, align 4 ; [#uses=6]
+ %92 = getelementptr inbounds %struct.btCollisionObject* %91, i32 0, i32 12 ; [#uses=1]
+ %93 = load i32* %92, align 4 ; [#uses=1]
+ %.lobit = and i32 %93, 32 ; [#uses=1]
+ %toBool19 = icmp eq i32 %.lobit, 0 ; [#uses=1]
+ br i1 %toBool19, label %bb20, label %bb46
+
+bb20: ; preds = %bb18
+ %94 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %95 = getelementptr inbounds i32 (...)** %94, i32 4 ; [#uses=1]
+ %96 = load i32 (...)** %95, align 4 ; [#uses=1]
+ %97 = bitcast i32 (...)* %96 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %98 = call %struct.btActionInterface* %97(%struct.btCollisionWorld* %this) ; [#uses=1]
+ %99 = icmp eq %struct.btActionInterface* %98, null ; [#uses=1]
+ br i1 %99, label %bb39, label %bb21
+
+bb21: ; preds = %bb20
+ %100 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %101 = getelementptr inbounds i32 (...)** %100, i32 4 ; [#uses=1]
+ %102 = load i32 (...)** %101, align 4 ; [#uses=1]
+ %103 = bitcast i32 (...)* %102 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %104 = call %struct.btActionInterface* %103(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %105 = getelementptr inbounds %struct.btActionInterface* %104, i32 0, i32 0 ; [#uses=1]
+ %106 = load i32 (...)*** %105, align 4 ; [#uses=1]
+ %107 = getelementptr inbounds i32 (...)** %106, i32 12 ; [#uses=1]
+ %108 = load i32 (...)** %107, align 4 ; [#uses=1]
+ %109 = bitcast i32 (...)* %108 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %110 = call i32 %109(%struct.btActionInterface* %104) ; [#uses=1]
+ %111 = and i32 %110, 1 ; [#uses=1]
+ %toBool25 = icmp eq i32 %111, 0 ; [#uses=1]
+ br i1 %toBool25, label %bb39, label %bb30
+
+bb30: ; preds = %bb21
+ store float 1.000000e+00, float* %86, align 8
+ store float 1.000000e+00, float* %87, align 4
+ store float 1.000000e+00, float* %88, align 8
+ store float 0.000000e+00, float* %89, align 4
+ %112 = getelementptr inbounds %struct.btCollisionObject* %91, i32 0, i32 15 ; [#uses=1]
+ %113 = load i32* %112, align 4 ; [#uses=1]
+ switch i32 %113, label %bb37 [
+ i32 1, label %bb32
+ i32 2, label %bb33
+ i32 3, label %bb34
+ i32 4, label %bb35
+ i32 5, label %bb36
+ ]
+
+bb32: ; preds = %bb30
+ store float 1.000000e+00, float* %86, align 8
+ store float 1.000000e+00, float* %87, align 4
+ store float 1.000000e+00, float* %88, align 8
+ store float 0.000000e+00, float* %89, align 4
+ br label %bb38
+
+bb33: ; preds = %bb30
+ store float 0.000000e+00, float* %86, align 8
+ store float 1.000000e+00, float* %87, align 4
+ store float 0.000000e+00, float* %88, align 8
+ store float 0.000000e+00, float* %89, align 4
+ br label %bb38
+
+bb34: ; preds = %bb30
+ store float 0.000000e+00, float* %86, align 8
+ store float 1.000000e+00, float* %87, align 4
+ store float 1.000000e+00, float* %88, align 8
+ store float 0.000000e+00, float* %89, align 4
+ br label %bb38
+
+bb35: ; preds = %bb30
+ store float 1.000000e+00, float* %86, align 8
+ store float 0.000000e+00, float* %87, align 4
+ store float 0.000000e+00, float* %88, align 8
+ store float 0.000000e+00, float* %89, align 4
+ br label %bb38
+
+bb36: ; preds = %bb30
+ store float 1.000000e+00, float* %86, align 8
+ store float 1.000000e+00, float* %87, align 4
+ store float 0.000000e+00, float* %88, align 8
+ store float 0.000000e+00, float* %89, align 4
+ br label %bb38
+
+bb37: ; preds = %bb30
+ store float 1.000000e+00, float* %86, align 8
+ store float 0.000000e+00, float* %87, align 4
+ store float 0.000000e+00, float* %88, align 8
+ store float 0.000000e+00, float* %89, align 4
+ br label %bb38
+
+bb38: ; preds = %bb37, %bb36, %bb35, %bb34, %bb33, %bb32
+ %114 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %115 = getelementptr inbounds i32 (...)** %114, i32 6 ; [#uses=1]
+ %116 = load i32 (...)** %115, align 4 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btCollisionObject* %91, i32 0, i32 9 ; [#uses=1]
+ %118 = load %struct.btCollisionShape** %117, align 4 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btCollisionObject* %91, i32 0, i32 1 ; [#uses=1]
+ %120 = bitcast i32 (...)* %116 to void (%struct.btCollisionWorld*, %struct.btTransform*, %struct.btCollisionShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %120(%struct.btCollisionWorld* %this, %struct.btTransform* %119, %struct.btCollisionShape* %118, %struct.btQuadWord* %color31)
+ br label %bb39
+
+bb39: ; preds = %bb38, %bb21, %bb20
+ %121 = load %struct.btActionInterface** %81, align 4 ; [#uses=3]
+ %122 = icmp eq %struct.btActionInterface* %121, null ; [#uses=1]
+ br i1 %122, label %bb46, label %bb40
+
+bb40: ; preds = %bb39
+ %123 = getelementptr inbounds %struct.btActionInterface* %121, i32 0, i32 0 ; [#uses=1]
+ %124 = load i32 (...)*** %123, align 4 ; [#uses=1]
+ %125 = getelementptr inbounds i32 (...)** %124, i32 12 ; [#uses=1]
+ %126 = load i32 (...)** %125, align 4 ; [#uses=1]
+ %127 = bitcast i32 (...)* %126 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %128 = call i32 %127(%struct.btActionInterface* %121) ; [#uses=1]
+ %129 = and i32 %128, 2 ; [#uses=1]
+ %130 = icmp eq i32 %129, 0 ; [#uses=1]
+ br i1 %130, label %bb46, label %bb45
+
+bb45: ; preds = %bb40
+ store float 1.000000e+00, float* %82, align 8
+ store float 0.000000e+00, float* %83, align 4
+ store float 0.000000e+00, float* %84, align 8
+ store float 0.000000e+00, float* %85, align 4
+ %131 = getelementptr inbounds %struct.btCollisionObject* %91, i32 0, i32 9 ; [#uses=1]
+ %132 = load %struct.btCollisionShape** %131, align 4 ; [#uses=2]
+ %133 = getelementptr inbounds %struct.btCollisionShape* %132, i32 0, i32 0 ; [#uses=1]
+ %134 = load i32 (...)*** %133, align 4 ; [#uses=1]
+ %135 = getelementptr inbounds i32 (...)** %134, i32 2 ; [#uses=1]
+ %136 = load i32 (...)** %135, align 4 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btCollisionObject* %91, i32 0, i32 1 ; [#uses=1]
+ %138 = bitcast i32 (...)* %136 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %138(%struct.btCollisionShape* %132, %struct.btTransform* %137, %struct.btQuadWord* %minAabb, %struct.btQuadWord* %maxAabb)
+ %139 = load %struct.btActionInterface** %81, align 4 ; [#uses=2]
+ %140 = getelementptr inbounds %struct.btActionInterface* %139, i32 0, i32 0 ; [#uses=1]
+ %141 = load i32 (...)*** %140, align 4 ; [#uses=1]
+ %142 = getelementptr inbounds i32 (...)** %141, i32 13 ; [#uses=1]
+ %143 = load i32 (...)** %142, align 4 ; [#uses=1]
+ %144 = bitcast i32 (...)* %143 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %144(%struct.btActionInterface* %139, %struct.btQuadWord* %minAabb, %struct.btQuadWord* %maxAabb, %struct.btQuadWord* %colorvec)
+ br label %bb46
+
+bb46: ; preds = %bb45, %bb40, %bb39, %bb18
+ %145 = load i32* %77, align 4 ; [#uses=1]
+ %146 = icmp sgt i32 %145, %tmp ; [#uses=1]
+ br i1 %146, label %bb18, label %bb13
+}
+
+; [#uses=5]
+define void @_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject(%struct.btCollisionWorld* nocapture %this, %struct.btCollisionObject* %collisionObject) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 8 ; [#uses=2]
+ %1 = load %struct.btBroadphaseProxy** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.btBroadphaseProxy* %1, null ; [#uses=1]
+ br i1 %2, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 5 ; [#uses=2]
+ %4 = load %struct.btActionInterface** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btActionInterface* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 9 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to %struct..0btMultiSapOverlapFilterCallback* (%struct.btActionInterface*)* ; [#uses=1]
+ %10 = tail call %struct..0btMultiSapOverlapFilterCallback* %9(%struct.btActionInterface* %4) ; [#uses=2]
+ %11 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %10, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = load i32 (...)*** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 10 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 2 ; [#uses=2]
+ %16 = load %struct.btActionInterface** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %14 to void (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %17(%struct..0btMultiSapOverlapFilterCallback* %10, %struct.btBroadphaseProxy* %1, %struct.btActionInterface* %16)
+ %18 = load %struct.btActionInterface** %3, align 4 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btActionInterface* %18, i32 0, i32 0 ; [#uses=1]
+ %20 = load i32 (...)*** %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds i32 (...)** %20, i32 3 ; [#uses=1]
+ %22 = load i32 (...)** %21, align 4 ; [#uses=1]
+ %23 = load %struct.btActionInterface** %15, align 4 ; [#uses=1]
+ %24 = bitcast i32 (...)* %22 to void (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %24(%struct.btActionInterface* %18, %struct.btBroadphaseProxy* %1, %struct.btActionInterface* %23)
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %0, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %25 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ %26 = load i32* %25, align 4 ; [#uses=4]
+ %27 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ br label %bb3.i.i
+
+bb.i.i: ; preds = %bb3.i.i
+ %28 = load %struct.btCollisionObject*** %27, align 4 ; [#uses=1]
+ %scevgep.i.i = getelementptr %struct.btCollisionObject** %28, i32 %32 ; [#uses=1]
+ %29 = load %struct.btCollisionObject** %scevgep.i.i, align 4 ; [#uses=1]
+ %30 = icmp eq %struct.btCollisionObject* %29, %collisionObject ; [#uses=1]
+ br i1 %30, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit.i, label %bb2.i.i
+
+bb2.i.i: ; preds = %bb.i.i
+ %31 = add nsw i32 %32, 1 ; [#uses=1]
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb2.i.i, %bb1
+ %32 = phi i32 [ 0, %bb1 ], [ %31, %bb2.i.i ] ; [#uses=4]
+ %33 = icmp sgt i32 %26, %32 ; [#uses=1]
+ br i1 %33, label %bb.i.i, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit.i
+
+_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit.i: ; preds = %bb3.i.i, %bb.i.i
+ %index.0.i.i = phi i32 [ %26, %bb3.i.i ], [ %32, %bb.i.i ] ; [#uses=2]
+ %34 = icmp sgt i32 %26, %index.0.i.i ; [#uses=1]
+ br i1 %34, label %bb.i, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE6removeERKS1_.exit
+
+bb.i: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit.i
+ %35 = add nsw i32 %26, -1 ; [#uses=2]
+ %36 = load %struct.btCollisionObject*** %27, align 4 ; [#uses=2]
+ %37 = getelementptr inbounds %struct.btCollisionObject** %36, i32 %index.0.i.i ; [#uses=2]
+ %38 = load %struct.btCollisionObject** %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btCollisionObject** %36, i32 %35 ; [#uses=1]
+ %40 = load %struct.btCollisionObject** %39, align 4 ; [#uses=1]
+ store %struct.btCollisionObject* %40, %struct.btCollisionObject** %37, align 4
+ %41 = load %struct.btCollisionObject*** %27, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btCollisionObject** %41, i32 %35 ; [#uses=1]
+ store %struct.btCollisionObject* %38, %struct.btCollisionObject** %42, align 4
+ %43 = load i32* %25, align 4 ; [#uses=1]
+ %44 = add nsw i32 %43, -1 ; [#uses=1]
+ store i32 %44, i32* %25, align 4
+ ret void
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE6removeERKS1_.exit: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit.i
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btBridgedManifoldResultD0Ev(%struct.btBridgedManifoldResult* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV23btBridgedManifoldResult, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btBridgedManifoldResult* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btBridgedManifoldResultD1Ev(%struct.btBridgedManifoldResult* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBridgedManifoldResult* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV23btBridgedManifoldResult, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btCollisionWorld11contactTestEP17btCollisionObjectRNS_21ContactResultCallbackE(%struct.btCollisionWorld* %this, %struct.btCollisionObject* %colObj, %"struct.btCollisionWorld::ContactResultCallback"* %resultCallback) align 2 {
+entry:
+ %aabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %aabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %contactCB = alloca %struct.btSingleContactCallback, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 9 ; [#uses=1]
+ %1 = load %struct.btCollisionShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btCollisionShape* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 2 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 1 ; [#uses=1]
+ %7 = bitcast i32 (...)* %5 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %7(%struct.btCollisionShape* %1, %struct.btTransform* %6, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ %8 = getelementptr inbounds %struct.btSingleContactCallback* %contactCB, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btSingleContactCallback, i32 0, i32 2), i32 (...)*** %8, align 8
+ %9 = getelementptr inbounds %struct.btSingleContactCallback* %contactCB, i32 0, i32 1 ; [#uses=1]
+ store %struct.btCollisionObject* %colObj, %struct.btCollisionObject** %9, align 4
+ %10 = getelementptr inbounds %struct.btSingleContactCallback* %contactCB, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionWorld* %this, %struct.btCollisionWorld** %10, align 8
+ %11 = getelementptr inbounds %struct.btSingleContactCallback* %contactCB, i32 0, i32 3 ; [#uses=1]
+ store %"struct.btCollisionWorld::ContactResultCallback"* %resultCallback, %"struct.btCollisionWorld::ContactResultCallback"** %11, align 4
+ %12 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 5 ; [#uses=1]
+ %13 = load %struct.btActionInterface** %12, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btActionInterface* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32 (...)** %15, i32 7 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = bitcast i32 (...)* %17 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btSingleContactCallback* %contactCB, i32 0, i32 0 ; [#uses=1]
+ invoke void %18(%struct.btActionInterface* %13, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, %struct.btActionInterface* %19)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select3 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btSingleContactCallback, i32 0, i32 2), i32 (...)*** %8, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btSingleSweepCallbackD0Ev(%struct.btSingleSweepCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV21btSingleSweepCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btSingleSweepCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btSingleSweepCallbackD1Ev(%struct.btSingleSweepCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV21btSingleSweepCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZN21btSingleSweepCallback7processEPK17btBroadphaseProxy(%struct.btSingleSweepCallback* %this, %struct.btBroadphaseProxy* nocapture %proxy) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 5 ; [#uses=2]
+ %1 = load %"struct.btCollisionWorld::ConvexResultCallback"** %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %1, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fcmp oeq float %3, 0.000000e+00 ; [#uses=1]
+ br i1 %4, label %bb4, label %bb1
+
+bb1: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 0 ; [#uses=1]
+ %6 = load i8** %5, align 4 ; [#uses=4]
+ %7 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %1, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 2 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i8* %6, i32 188 ; [#uses=1]
+ %12 = bitcast i8* %11 to %struct.btBroadphaseProxy** ; [#uses=1]
+ %13 = load %struct.btBroadphaseProxy** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %10 to i8 (%"struct.btCollisionWorld::ConvexResultCallback"*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %15 = tail call zeroext i8 %14(%"struct.btCollisionWorld::ConvexResultCallback"* %1, %struct.btBroadphaseProxy* %13) ; [#uses=1]
+ %toBool = icmp eq i8 %15, 0 ; [#uses=1]
+ br i1 %toBool, label %bb4, label %bb2
+
+bb2: ; preds = %bb1
+ %16 = bitcast i8* %6 to %struct.btCollisionObject* ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 6 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = load %"struct.btCollisionWorld::ConvexResultCallback"** %0, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i8* %6, i32 4 ; [#uses=1]
+ %21 = bitcast i8* %20 to %struct.btTransform* ; [#uses=1]
+ %22 = getelementptr inbounds i8* %6, i32 192 ; [#uses=1]
+ %23 = bitcast i8* %22 to %struct.btCollisionShape** ; [#uses=1]
+ %24 = load %struct.btCollisionShape** %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 7 ; [#uses=1]
+ %28 = load %struct.btConvexShape** %27, align 4 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEf(%struct.btConvexShape* %28, %struct.btTransform* %26, %struct.btTransform* %25, %struct.btCollisionObject* %16, %struct.btCollisionShape* %24, %struct.btTransform* %21, %"struct.btCollisionWorld::ConvexResultCallback"* %19, float %18)
+ ret i8 1
+
+bb4: ; preds = %bb1, %entry
+ %.0 = phi i8 [ 0, %entry ], [ 1, %bb1 ] ; [#uses=1]
+ ret i8 %.0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN19btSingleRayCallbackD0Ev(%struct.btSingleRayCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSingleRayCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV19btSingleRayCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btSingleRayCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN19btSingleRayCallbackD1Ev(%struct.btSingleRayCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSingleRayCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV19btSingleRayCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZN19btSingleRayCallback7processEPK17btBroadphaseProxy(%struct.btSingleRayCallback* %this, %struct.btBroadphaseProxy* nocapture %proxy) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSingleRayCallback* %this, i32 0, i32 7 ; [#uses=2]
+ %1 = load %"struct.btCollisionWorld::RayResultCallback"** %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %1, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fcmp oeq float %3, 0.000000e+00 ; [#uses=1]
+ br i1 %4, label %bb4, label %bb1
+
+bb1: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy, i32 0, i32 0 ; [#uses=1]
+ %6 = load i8** %5, align 4 ; [#uses=4]
+ %7 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %1, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 2 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i8* %6, i32 188 ; [#uses=1]
+ %12 = bitcast i8* %11 to %struct.btBroadphaseProxy** ; [#uses=1]
+ %13 = load %struct.btBroadphaseProxy** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %10 to i8 (%"struct.btCollisionWorld::RayResultCallback"*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %15 = tail call zeroext i8 %14(%"struct.btCollisionWorld::RayResultCallback"* %1, %struct.btBroadphaseProxy* %13) ; [#uses=1]
+ %toBool = icmp eq i8 %15, 0 ; [#uses=1]
+ br i1 %toBool, label %bb4, label %bb2
+
+bb2: ; preds = %bb1
+ %16 = bitcast i8* %6 to %struct.btCollisionObject* ; [#uses=1]
+ %17 = load %"struct.btCollisionWorld::RayResultCallback"** %0, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i8* %6, i32 4 ; [#uses=1]
+ %19 = bitcast i8* %18 to %struct.btTransform* ; [#uses=1]
+ %20 = getelementptr inbounds i8* %6, i32 192 ; [#uses=1]
+ %21 = bitcast i8* %20 to %struct.btCollisionShape** ; [#uses=1]
+ %22 = load %struct.btCollisionShape** %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btSingleRayCallback* %this, i32 0, i32 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btSingleRayCallback* %this, i32 0, i32 3 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackE(%struct.btTransform* %24, %struct.btTransform* %23, %struct.btCollisionObject* %16, %struct.btCollisionShape* %22, %struct.btTransform* %19, %"struct.btCollisionWorld::RayResultCallback"* %17)
+ ret i8 1
+
+bb4: ; preds = %bb1, %entry
+ %.0 = phi i8 [ 0, %entry ], [ 1, %bb1 ] ; [#uses=1]
+ ret i8 %.0
+}
+
+; [#uses=0]
+define void @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN14LocalInfoAdderD2Ev(%struct..5LocalInfoAdder* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..5LocalInfoAdder* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN15LocalInfoAdder2D2Ev(%struct..2LocalInfoAdder2* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..2LocalInfoAdder2* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN9btHashMapI9btHashPtrP16btCollisionShapeED1Ev(%"struct.btHashMap<btHashPtr,btCollisionShape*>"* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %1 = load %struct.btHashPtr** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btHashPtr* %1, null ; [#uses=1]
+ br i1 %2, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %5 = bitcast %struct.btHashPtr* %1 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %bb2.i.i.i unwind label %lpad29
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btHashPtr* null, %struct.btHashPtr** %0, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %6 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %6, align 4
+ store %struct.btHashPtr* null, %struct.btHashPtr** %0, align 4
+ %7 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %10 = load %struct.btCollisionShape*** %9, align 4 ; [#uses=2]
+ %11 = icmp eq %struct.btCollisionShape** %10, null ; [#uses=1]
+ br i1 %11, label %bb10, label %bb.i.i.i52
+
+bb.i.i.i52: ; preds = %bb3
+ %12 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %13 = load i8* %12, align 4 ; [#uses=1]
+ %toBool.i.i.i51 = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i51, label %bb2.i.i.i54, label %bb1.i.i.i53
+
+bb1.i.i.i53: ; preds = %bb.i.i.i52
+ %14 = bitcast %struct.btCollisionShape** %10 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %14)
+ to label %bb2.i.i.i54 unwind label %lpad25
+
+bb2.i.i.i54: ; preds = %bb1.i.i.i53, %bb.i.i.i52
+ store %struct.btCollisionShape** null, %struct.btCollisionShape*** %9, align 4
+ br label %bb10
+
+bb10: ; preds = %bb2.i.i.i54, %bb3
+ %15 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %15, align 4
+ store %struct.btCollisionShape** null, %struct.btCollisionShape*** %9, align 4
+ %16 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %19 = load i32** %18, align 4 ; [#uses=2]
+ %20 = icmp eq i32* %19, null ; [#uses=1]
+ br i1 %20, label %bb19, label %bb.i.i.i57
+
+bb.i.i.i57: ; preds = %bb10
+ %21 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i.i56 = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i56, label %bb2.i.i.i59, label %bb1.i.i.i58
+
+bb1.i.i.i58: ; preds = %bb.i.i.i57
+ %23 = bitcast i32* %19 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %23)
+ to label %bb2.i.i.i59 unwind label %lpad
+
+bb2.i.i.i59: ; preds = %bb1.i.i.i58, %bb.i.i.i57
+ store i32* null, i32** %18, align 4
+ br label %bb19
+
+invcont17: ; preds = %bb2.i.i.i75, %ppad
+ %24 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store i32* null, i32** %48, align 4
+ %25 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %25, align 4
+ %26 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %26, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.1)
+ unreachable
+
+bb19: ; preds = %bb2.i.i.i59, %bb10
+ %27 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %27, align 4
+ store i32* null, i32** %18, align 4
+ %28 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 3 ; [#uses=3]
+ %31 = load i32** %30, align 4 ; [#uses=2]
+ %32 = icmp eq i32* %31, null ; [#uses=1]
+ br i1 %32, label %_ZN20btAlignedObjectArrayIiED1Ev.exit65, label %bb.i.i.i62
+
+bb.i.i.i62: ; preds = %bb19
+ %33 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %34 = load i8* %33, align 4 ; [#uses=1]
+ %toBool.i.i.i61 = icmp eq i8 %34, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i61, label %bb2.i.i.i64, label %bb1.i.i.i63
+
+bb1.i.i.i63: ; preds = %bb.i.i.i62
+ %35 = bitcast i32* %31 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %35)
+ br label %bb2.i.i.i64
+
+bb2.i.i.i64: ; preds = %bb1.i.i.i63, %bb.i.i.i62
+ store i32* null, i32** %30, align 4
+ br label %_ZN20btAlignedObjectArrayIiED1Ev.exit65
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit65: ; preds = %bb2.i.i.i64, %bb19
+ %36 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %36, align 4
+ store i32* null, i32** %30, align 4
+ %37 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %37, align 4
+ %38 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i58
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select24 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad25: ; preds = %bb1.i.i.i53
+ %eh_ptr26 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select28 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr26, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad45
+
+lpad29: ; preds = %bb1.i.i.i
+ %eh_ptr30 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select32 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr30, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %39 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %40 = load %struct.btCollisionShape*** %39, align 4 ; [#uses=2]
+ %41 = icmp eq %struct.btCollisionShape** %40, null ; [#uses=1]
+ br i1 %41, label %_ZN20btAlignedObjectArrayIP16btCollisionShapeED1Ev.exit71, label %bb.i.i.i67
+
+bb.i.i.i67: ; preds = %lpad29
+ %42 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %43 = load i8* %42, align 4 ; [#uses=1]
+ %toBool.i.i.i66 = icmp eq i8 %43, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i66, label %bb2.i.i.i69, label %bb1.i.i.i68
+
+bb1.i.i.i68: ; preds = %bb.i.i.i67
+ %44 = bitcast %struct.btCollisionShape** %40 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %44)
+ to label %bb2.i.i.i69 unwind label %lpad33
+
+bb2.i.i.i69: ; preds = %bb1.i.i.i68, %bb.i.i.i67
+ store %struct.btCollisionShape** null, %struct.btCollisionShape*** %39, align 4
+ br label %_ZN20btAlignedObjectArrayIP16btCollisionShapeED1Ev.exit71
+
+_ZN20btAlignedObjectArrayIP16btCollisionShapeED1Ev.exit71: ; preds = %bb2.i.i.i69, %lpad29
+ %45 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %45, align 4
+ store %struct.btCollisionShape** null, %struct.btCollisionShape*** %39, align 4
+ %46 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %46, align 4
+ %47 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %47, align 4
+ br label %ppad45
+
+lpad33: ; preds = %bb1.i.i.i68
+ %eh_ptr34 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select36 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr34, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad37: ; preds = %bb1.i.i.i80
+ %eh_ptr38 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select40 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr38, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad41: ; preds = %bb1.i.i.i74
+ %eh_ptr42 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select44 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr42, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIiED1Ev.exit83, %lpad
+ %eh_exception.1 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.0, %_ZN20btAlignedObjectArrayIiED1Ev.exit83 ] ; [#uses=1]
+ %48 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 3 ; [#uses=3]
+ %49 = load i32** %48, align 4 ; [#uses=2]
+ %50 = icmp eq i32* %49, null ; [#uses=1]
+ br i1 %50, label %invcont17, label %bb.i.i.i73
+
+bb.i.i.i73: ; preds = %ppad
+ %51 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %52 = load i8* %51, align 4 ; [#uses=1]
+ %toBool.i.i.i72 = icmp eq i8 %52, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i72, label %bb2.i.i.i75, label %bb1.i.i.i74
+
+bb1.i.i.i74: ; preds = %bb.i.i.i73
+ %53 = bitcast i32* %49 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %53)
+ to label %bb2.i.i.i75 unwind label %lpad41
+
+bb2.i.i.i75: ; preds = %bb1.i.i.i74, %bb.i.i.i73
+ store i32* null, i32** %48, align 4
+ br label %invcont17
+
+ppad45: ; preds = %_ZN20btAlignedObjectArrayIP16btCollisionShapeED1Ev.exit71, %lpad25
+ %eh_exception.0 = phi i8* [ %eh_ptr26, %lpad25 ], [ %eh_ptr30, %_ZN20btAlignedObjectArrayIP16btCollisionShapeED1Ev.exit71 ] ; [#uses=1]
+ %54 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %55 = load i32** %54, align 4 ; [#uses=2]
+ %56 = icmp eq i32* %55, null ; [#uses=1]
+ br i1 %56, label %_ZN20btAlignedObjectArrayIiED1Ev.exit83, label %bb.i.i.i79
+
+bb.i.i.i79: ; preds = %ppad45
+ %57 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %58 = load i8* %57, align 4 ; [#uses=1]
+ %toBool.i.i.i78 = icmp eq i8 %58, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i78, label %bb2.i.i.i81, label %bb1.i.i.i80
+
+bb1.i.i.i80: ; preds = %bb.i.i.i79
+ %59 = bitcast i32* %55 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %59)
+ to label %bb2.i.i.i81 unwind label %lpad37
+
+bb2.i.i.i81: ; preds = %bb1.i.i.i80, %bb.i.i.i79
+ store i32* null, i32** %54, align 4
+ br label %_ZN20btAlignedObjectArrayIiED1Ev.exit83
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit83: ; preds = %bb2.i.i.i81, %ppad45
+ %60 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %60, align 4
+ store i32* null, i32** %54, align 4
+ %61 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %61, align 4
+ %62 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %62, align 4
+ br label %ppad
+}
+
+; [#uses=1]
+define void @_ZN16btCollisionWorldD0Ev(%struct.btCollisionWorld* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV16btCollisionWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 3 ; [#uses=6]
+ %3 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 5 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 2 ; [#uses=2]
+ br label %bb5
+
+bb: ; preds = %bb5
+ %scevgep = getelementptr %struct.btCollisionObject** %33, i32 %30 ; [#uses=1]
+ %5 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 8 ; [#uses=2]
+ %7 = load %struct.btBroadphaseProxy** %6, align 4 ; [#uses=3]
+ %8 = icmp eq %struct.btBroadphaseProxy* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb1
+
+bb1: ; preds = %bb
+ %9 = load %struct.btActionInterface** %3, align 4 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btActionInterface* %9, i32 0, i32 0 ; [#uses=1]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 9 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to %struct..0btMultiSapOverlapFilterCallback* (%struct.btActionInterface*)* ; [#uses=1]
+ %15 = invoke %struct..0btMultiSapOverlapFilterCallback* %14(%struct.btActionInterface* %9)
+ to label %invcont unwind label %lpad ; [#uses=2]
+
+invcont: ; preds = %bb1
+ %16 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %15, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 10 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = load %struct.btActionInterface** %4, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %19 to void (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ invoke void %21(%struct..0btMultiSapOverlapFilterCallback* %15, %struct.btBroadphaseProxy* %7, %struct.btActionInterface* %20)
+ to label %invcont2 unwind label %lpad
+
+invcont2: ; preds = %invcont
+ %22 = load %struct.btActionInterface** %3, align 4 ; [#uses=2]
+ %23 = getelementptr inbounds %struct.btActionInterface* %22, i32 0, i32 0 ; [#uses=1]
+ %24 = load i32 (...)*** %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i32 (...)** %24, i32 3 ; [#uses=1]
+ %26 = load i32 (...)** %25, align 4 ; [#uses=1]
+ %27 = load %struct.btActionInterface** %4, align 4 ; [#uses=1]
+ %28 = bitcast i32 (...)* %26 to void (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ invoke void %28(%struct.btActionInterface* %22, %struct.btBroadphaseProxy* %7, %struct.btActionInterface* %27)
+ to label %invcont3 unwind label %lpad
+
+invcont3: ; preds = %invcont2
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %6, align 4
+ br label %bb4
+
+bb4: ; preds = %invcont3, %bb
+ %29 = add nsw i32 %30, 1 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb4, %entry
+ %30 = phi i32 [ 0, %entry ], [ %29, %bb4 ] ; [#uses=3]
+ %31 = load i32* %1, align 4 ; [#uses=1]
+ %32 = icmp sgt i32 %31, %30 ; [#uses=1]
+ %33 = load %struct.btCollisionObject*** %2, align 4 ; [#uses=3]
+ br i1 %32, label %bb, label %bb9
+
+invcont7: ; preds = %bb2.i.i.i, %lpad
+ %34 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %34, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ store i32 0, i32* %1, align 4
+ %35 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %35, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb9: ; preds = %bb5
+ %36 = icmp eq %struct.btCollisionObject** %33, null ; [#uses=1]
+ br i1 %36, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit26, label %bb.i.i.i23
+
+bb.i.i.i23: ; preds = %bb9
+ %37 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %38 = load i8* %37, align 4 ; [#uses=1]
+ %toBool.i.i.i22 = icmp eq i8 %38, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i22, label %bb2.i.i.i25, label %bb1.i.i.i24
+
+bb1.i.i.i24: ; preds = %bb.i.i.i23
+ %39 = bitcast %struct.btCollisionObject** %33 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %39)
+ br label %bb2.i.i.i25
+
+bb2.i.i.i25: ; preds = %bb1.i.i.i24, %bb.i.i.i23
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit26
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit26: ; preds = %bb2.i.i.i25, %bb9
+ %40 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %40, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ store i32 0, i32* %1, align 4
+ %41 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %41, align 4
+ %42 = bitcast %struct.btCollisionWorld* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %42) nounwind
+ ret void
+
+lpad: ; preds = %invcont2, %invcont, %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %43 = load %struct.btCollisionObject*** %2, align 4 ; [#uses=2]
+ %44 = icmp eq %struct.btCollisionObject** %43, null ; [#uses=1]
+ br i1 %44, label %invcont7, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad
+ %45 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %46 = load i8* %45, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %46, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %47 = bitcast %struct.btCollisionObject** %43 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %47)
+ to label %bb2.i.i.i unwind label %lpad16
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ br label %invcont7
+
+lpad16: ; preds = %bb1.i.i.i
+ %eh_ptr17 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select19 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr17, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN16btCollisionWorldD1Ev(%struct.btCollisionWorld* nocapture %this) align 2 {
+entry:
+ tail call void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %this)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btCollisionWorld11updateAabbsEv(%struct.btCollisionWorld* nocapture %this) align 2 {
+entry:
+ tail call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([12 x i8]* @.str1217, i32 0, i32 0))
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 7 ; [#uses=1]
+ br label %bb9
+
+bb: ; preds = %bb9
+ %3 = load %struct.btCollisionObject*** %1, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %3, i32 %9 ; [#uses=1]
+ %4 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=2]
+ %5 = load i8* %2, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb7
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 15 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ switch i32 %7, label %bb7 [
+ i32 2, label %bb8
+ i32 5, label %bb8
+ ]
+
+bb7: ; preds = %bb1, %bb
+ invoke void @_ZN16btCollisionWorld16updateSingleAabbEP17btCollisionObject(%struct.btCollisionWorld* %this, %struct.btCollisionObject* %4)
+ to label %bb8 unwind label %lpad
+
+bb8: ; preds = %bb7, %bb1, %bb1
+ %8 = add nsw i32 %9, 1 ; [#uses=1]
+ br label %bb9
+
+bb9: ; preds = %bb8, %entry
+ %9 = phi i32 [ 0, %entry ], [ %8, %bb8 ] ; [#uses=3]
+ %10 = load i32* %0, align 4 ; [#uses=1]
+ %11 = icmp sgt i32 %10, %9 ; [#uses=1]
+ br i1 %11, label %bb, label %bb14
+
+invcont12: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb14: ; preds = %bb9
+ tail call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %bb7
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select16 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont12 unwind label %lpad17
+
+lpad17: ; preds = %lpad
+ %eh_ptr18 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select20 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr18, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN16btCollisionWorld15debugDrawObjectERK11btTransformPK16btCollisionShapeRK9btVector3(%struct.btCollisionWorld* %this, %struct.btTransform* %worldTransform, %struct.btCollisionShape* %shape, %struct.btQuadWord* %color) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %3 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %4 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %5 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %6 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %7 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %8 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %9 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %10 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %11 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %12 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %13 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %14 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %15 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %16 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %17 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %18 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %19 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %20 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %21 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %22 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %23 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %24 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %25 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %26 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %27 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %28 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %29 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %30 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %31 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %32 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %33 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %34 = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %35 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %36 = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %halfExtents = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %capStart = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %capEnd = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %childTransform12 = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %childTransform14 = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %offsetHeight = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %offsetRadius = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %offset2Radius = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %yaxis = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %xaxis = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %offsetHeight41 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %offsetRadius43 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %yaxis45 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %xaxis47 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %aabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %aabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %drawCallback = alloca %struct.DebugDrawcallback, align 8 ; [#uses=26]
+ %aabbMax78 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %aabbMin80 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %drawCallback82 = alloca %struct.DebugDrawcallback, align 8 ; [#uses=30]
+ %a = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %b = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %wa = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %wb = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %37 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 0 ; [#uses=25]
+ %38 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds i32 (...)** %38, i32 4 ; [#uses=1]
+ %40 = load i32 (...)** %39, align 4 ; [#uses=1]
+ %41 = bitcast i32 (...)* %40 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %42 = call %struct.btActionInterface* %41(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %43 = getelementptr inbounds %struct.btActionInterface* %42, i32 0, i32 0 ; [#uses=1]
+ %44 = load i32 (...)*** %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds i32 (...)** %44, i32 14 ; [#uses=1]
+ %46 = load i32 (...)** %45, align 4 ; [#uses=1]
+ %47 = bitcast i32 (...)* %46 to void (%struct.btActionInterface*, %struct.btTransform*, float)* ; [#uses=1]
+ call void %47(%struct.btActionInterface* %42, %struct.btTransform* %worldTransform, float 1.000000e+00)
+ %48 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 0, i32 1 ; [#uses=3]
+ %49 = load i32* %48, align 4 ; [#uses=3]
+ switch i32 %49, label %bb60 [
+ i32 31, label %bb
+ i32 0, label %bb4
+ i32 8, label %bb5
+ i32 9, label %bb6
+ i32 10, label %bb10
+ i32 11, label %bb16
+ i32 13, label %bb30
+ i32 28, label %bb48
+ ]
+
+bb: ; preds = %entry
+ %50 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 1, i32 1 ; [#uses=1]
+ %51 = load i32* %50, align 4 ; [#uses=3]
+ %i.0461 = add i32 %51, -1 ; [#uses=2]
+ %52 = icmp sgt i32 %i.0461, -1 ; [#uses=1]
+ br i1 %52, label %bb.nph463, label %return
+
+bb.nph463: ; preds = %bb
+ %53 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 2 ; [#uses=1]
+ %54 = bitcast %struct.btCollisionShape* %53 to %struct.btCompoundShapeChild** ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btTransform* %36, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb1, %bb.nph463
+ %indvar472 = phi i32 [ 0, %bb.nph463 ], [ %indvar.next473, %bb1 ] ; [#uses=3]
+ %tmp476 = sub i32 %51, %indvar472 ; [#uses=12]
+ %tmp480 = sub i32 %i.0461, %indvar472 ; [#uses=1]
+ %83 = load %struct.btCompoundShapeChild** %54, align 4 ; [#uses=13]
+ %scevgep481482 = getelementptr inbounds %struct.btCompoundShapeChild* %83, i32 %tmp480, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %84 = load float* %scevgep481482, align 4 ; [#uses=3]
+ %scevgep483 = getelementptr %struct.btCompoundShapeChild* %83, i32 %tmp476, i32 0, i32 0, i32 0, i32 -4, i32 0, i32 -3 ; [#uses=1]
+ %85 = load float* %scevgep483, align 4 ; [#uses=3]
+ %scevgep484 = getelementptr %struct.btCompoundShapeChild* %83, i32 %tmp476, i32 0, i32 0, i32 0, i32 -4, i32 0, i32 -2 ; [#uses=1]
+ %86 = load float* %scevgep484, align 4 ; [#uses=3]
+ %scevgep485486 = getelementptr %struct.btCompoundShapeChild* %83, i32 %tmp476, i32 0, i32 0, i32 0, i32 -4, i32 0, i32 0 ; [#uses=1]
+ %87 = load float* %scevgep485486, align 4 ; [#uses=3]
+ %scevgep487 = getelementptr %struct.btCompoundShapeChild* %83, i32 %tmp476, i32 0, i32 0, i32 0, i32 -3, i32 0, i32 -3 ; [#uses=1]
+ %88 = load float* %scevgep487, align 4 ; [#uses=3]
+ %scevgep488 = getelementptr %struct.btCompoundShapeChild* %83, i32 %tmp476, i32 0, i32 0, i32 0, i32 -3, i32 0, i32 -2 ; [#uses=1]
+ %89 = load float* %scevgep488, align 4 ; [#uses=3]
+ %scevgep489490 = getelementptr %struct.btCompoundShapeChild* %83, i32 %tmp476, i32 0, i32 0, i32 0, i32 -3, i32 0, i32 0 ; [#uses=1]
+ %90 = load float* %scevgep489490, align 4 ; [#uses=3]
+ %scevgep491 = getelementptr %struct.btCompoundShapeChild* %83, i32 %tmp476, i32 0, i32 0, i32 0, i32 -2, i32 0, i32 -3 ; [#uses=1]
+ %91 = load float* %scevgep491, align 4 ; [#uses=3]
+ %scevgep492 = getelementptr %struct.btCompoundShapeChild* %83, i32 %tmp476, i32 0, i32 0, i32 0, i32 -2, i32 0, i32 -2 ; [#uses=1]
+ %92 = load float* %scevgep492, align 4 ; [#uses=3]
+ %scevgep493494 = getelementptr %struct.btCompoundShapeChild* %83, i32 %tmp476, i32 0, i32 0, i32 0, i32 -2, i32 0, i32 0 ; [#uses=1]
+ %93 = load float* %scevgep493494, align 4 ; [#uses=3]
+ %scevgep495 = getelementptr %struct.btCompoundShapeChild* %83, i32 %tmp476, i32 0, i32 0, i32 0, i32 -1, i32 0, i32 -3 ; [#uses=1]
+ %94 = load float* %scevgep495, align 4 ; [#uses=3]
+ %scevgep496 = getelementptr %struct.btCompoundShapeChild* %83, i32 %tmp476, i32 0, i32 0, i32 0, i32 -1, i32 0, i32 -2 ; [#uses=1]
+ %95 = load float* %scevgep496, align 4 ; [#uses=3]
+ %scevgep477 = getelementptr %struct.btCompoundShapeChild* %83, i32 %tmp476, i32 0, i32 0, i32 0, i32 -1 ; [#uses=1]
+ %scevgep477478 = bitcast %struct.btQuadWord* %scevgep477 to %struct.btCollisionShape** ; [#uses=1]
+ %96 = load %struct.btCollisionShape** %scevgep477478, align 4 ; [#uses=1]
+ %97 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %98 = getelementptr inbounds i32 (...)** %97, i32 6 ; [#uses=1]
+ %99 = load i32 (...)** %98, align 4 ; [#uses=1]
+ %100 = load float* %55, align 4 ; [#uses=4]
+ %101 = fmul float %100, %93 ; [#uses=1]
+ %102 = load float* %56, align 4 ; [#uses=4]
+ %103 = fmul float %102, %94 ; [#uses=1]
+ %104 = fadd float %101, %103 ; [#uses=1]
+ %105 = load float* %57, align 4 ; [#uses=4]
+ %106 = fmul float %105, %95 ; [#uses=1]
+ %107 = fadd float %104, %106 ; [#uses=1]
+ %108 = load float* %58, align 4 ; [#uses=1]
+ %109 = fadd float %107, %108 ; [#uses=1]
+ %110 = load float* %59, align 4 ; [#uses=4]
+ %111 = fmul float %110, %93 ; [#uses=1]
+ %112 = load float* %60, align 4 ; [#uses=4]
+ %113 = fmul float %112, %94 ; [#uses=1]
+ %114 = fadd float %111, %113 ; [#uses=1]
+ %115 = load float* %61, align 4 ; [#uses=4]
+ %116 = fmul float %115, %95 ; [#uses=1]
+ %117 = fadd float %114, %116 ; [#uses=1]
+ %118 = load float* %62, align 4 ; [#uses=1]
+ %119 = fadd float %117, %118 ; [#uses=1]
+ %120 = load float* %63, align 4 ; [#uses=4]
+ %121 = fmul float %120, %93 ; [#uses=1]
+ %122 = load float* %64, align 4 ; [#uses=4]
+ %123 = fmul float %122, %94 ; [#uses=1]
+ %124 = fadd float %121, %123 ; [#uses=1]
+ %125 = load float* %65, align 4 ; [#uses=4]
+ %126 = fmul float %125, %95 ; [#uses=1]
+ %127 = fadd float %124, %126 ; [#uses=1]
+ %128 = load float* %66, align 4 ; [#uses=1]
+ %129 = fadd float %127, %128 ; [#uses=1]
+ %130 = fmul float %86, %100 ; [#uses=1]
+ %131 = fmul float %89, %102 ; [#uses=1]
+ %132 = fadd float %130, %131 ; [#uses=1]
+ %133 = fmul float %92, %105 ; [#uses=1]
+ %134 = fadd float %132, %133 ; [#uses=1]
+ %135 = fmul float %85, %100 ; [#uses=1]
+ %136 = fmul float %88, %102 ; [#uses=1]
+ %137 = fadd float %135, %136 ; [#uses=1]
+ %138 = fmul float %91, %105 ; [#uses=1]
+ %139 = fadd float %137, %138 ; [#uses=1]
+ %140 = fmul float %84, %100 ; [#uses=1]
+ %141 = fmul float %87, %102 ; [#uses=1]
+ %142 = fadd float %140, %141 ; [#uses=1]
+ %143 = fmul float %90, %105 ; [#uses=1]
+ %144 = fadd float %142, %143 ; [#uses=1]
+ %145 = fmul float %86, %110 ; [#uses=1]
+ %146 = fmul float %89, %112 ; [#uses=1]
+ %147 = fadd float %145, %146 ; [#uses=1]
+ %148 = fmul float %92, %115 ; [#uses=1]
+ %149 = fadd float %147, %148 ; [#uses=1]
+ %150 = fmul float %85, %110 ; [#uses=1]
+ %151 = fmul float %88, %112 ; [#uses=1]
+ %152 = fadd float %150, %151 ; [#uses=1]
+ %153 = fmul float %91, %115 ; [#uses=1]
+ %154 = fadd float %152, %153 ; [#uses=1]
+ %155 = fmul float %84, %110 ; [#uses=1]
+ %156 = fmul float %87, %112 ; [#uses=1]
+ %157 = fadd float %155, %156 ; [#uses=1]
+ %158 = fmul float %90, %115 ; [#uses=1]
+ %159 = fadd float %157, %158 ; [#uses=1]
+ %160 = fmul float %86, %120 ; [#uses=1]
+ %161 = fmul float %89, %122 ; [#uses=1]
+ %162 = fadd float %160, %161 ; [#uses=1]
+ %163 = fmul float %92, %125 ; [#uses=1]
+ %164 = fadd float %162, %163 ; [#uses=1]
+ %165 = fmul float %85, %120 ; [#uses=1]
+ %166 = fmul float %88, %122 ; [#uses=1]
+ %167 = fadd float %165, %166 ; [#uses=1]
+ %168 = fmul float %91, %125 ; [#uses=1]
+ %169 = fadd float %167, %168 ; [#uses=1]
+ %170 = fmul float %84, %120 ; [#uses=1]
+ %171 = fmul float %87, %122 ; [#uses=1]
+ %172 = fadd float %170, %171 ; [#uses=1]
+ %173 = fmul float %90, %125 ; [#uses=1]
+ %174 = fadd float %172, %173 ; [#uses=1]
+ store float %174, float* %67, align 8
+ store float %169, float* %68, align 4
+ store float %164, float* %69, align 8
+ store float 0.000000e+00, float* %70, align 4
+ store float %159, float* %71, align 8
+ store float %154, float* %72, align 4
+ store float %149, float* %73, align 8
+ store float 0.000000e+00, float* %74, align 4
+ store float %144, float* %75, align 8
+ store float %139, float* %76, align 4
+ store float %134, float* %77, align 8
+ store float 0.000000e+00, float* %78, align 4
+ store float %129, float* %79, align 8
+ store float %119, float* %80, align 4
+ store float %109, float* %81, align 8
+ store float 0.000000e+00, float* %82, align 4
+ %175 = bitcast i32 (...)* %99 to void (%struct.btCollisionWorld*, %struct.btTransform*, %struct.btCollisionShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %175(%struct.btCollisionWorld* %this, %struct.btTransform* %36, %struct.btCollisionShape* %96, %struct.btQuadWord* %color)
+ %indvar.next473 = add i32 %indvar472, 1 ; [#uses=2]
+ %exitcond474 = icmp eq i32 %indvar.next473, %51 ; [#uses=1]
+ br i1 %exitcond474, label %return, label %bb1
+
+bb4: ; preds = %entry
+ %176 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 0 ; [#uses=2]
+ %177 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 2, i32 1 ; [#uses=1]
+ %178 = bitcast i32* %177 to float* ; [#uses=1]
+ %179 = load float* %178, align 4 ; [#uses=1]
+ %180 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 1 ; [#uses=2]
+ %181 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 2, i32 2 ; [#uses=1]
+ %182 = bitcast i8** %181 to float* ; [#uses=1]
+ %183 = load float* %182, align 4 ; [#uses=1]
+ %184 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 2 ; [#uses=2]
+ %185 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 3 ; [#uses=1]
+ %186 = bitcast %struct.btCollisionShape* %185 to float* ; [#uses=1]
+ %187 = load float* %186, align 4 ; [#uses=1]
+ %188 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 3 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 3, i32 1 ; [#uses=1]
+ %190 = bitcast i32* %189 to float* ; [#uses=1]
+ %191 = load float* %190, align 4 ; [#uses=1]
+ store float %191, float* %188, align 4
+ %192 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 0, i32 0 ; [#uses=3]
+ %193 = load i32 (...)*** %192, align 4 ; [#uses=1]
+ %194 = getelementptr inbounds i32 (...)** %193, i32 11 ; [#uses=1]
+ %195 = load i32 (...)** %194, align 4 ; [#uses=1]
+ %196 = bitcast %struct.btCollisionShape* %shape to %struct.btConvexInternalShape* ; [#uses=3]
+ %197 = bitcast i32 (...)* %195 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %198 = call float %197(%struct.btConvexInternalShape* %196) ; [#uses=1]
+ %199 = load i32 (...)*** %192, align 4 ; [#uses=1]
+ %200 = getelementptr inbounds i32 (...)** %199, i32 11 ; [#uses=1]
+ %201 = load i32 (...)** %200, align 4 ; [#uses=1]
+ %202 = bitcast i32 (...)* %201 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %203 = call float %202(%struct.btConvexInternalShape* %196) ; [#uses=1]
+ %204 = load i32 (...)*** %192, align 4 ; [#uses=1]
+ %205 = getelementptr inbounds i32 (...)** %204, i32 11 ; [#uses=1]
+ %206 = load i32 (...)** %205, align 4 ; [#uses=1]
+ %207 = bitcast i32 (...)* %206 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %208 = call float %207(%struct.btConvexInternalShape* %196) ; [#uses=1]
+ %209 = fadd float %179, %208 ; [#uses=1]
+ store float %209, float* %176, align 8
+ %210 = fadd float %183, %203 ; [#uses=1]
+ store float %210, float* %180, align 4
+ %211 = fadd float %187, %198 ; [#uses=1]
+ store float %211, float* %184, align 8
+ %212 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %213 = getelementptr inbounds i32 (...)** %212, i32 4 ; [#uses=1]
+ %214 = load i32 (...)** %213, align 4 ; [#uses=1]
+ %215 = bitcast i32 (...)* %214 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %216 = call %struct.btActionInterface* %215(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %217 = getelementptr inbounds %struct.btActionInterface* %216, i32 0, i32 0 ; [#uses=1]
+ %218 = load i32 (...)*** %217, align 4 ; [#uses=1]
+ %219 = getelementptr inbounds i32 (...)** %218, i32 18 ; [#uses=1]
+ %220 = load i32 (...)** %219, align 4 ; [#uses=1]
+ %221 = load float* %184, align 8 ; [#uses=1]
+ %222 = fsub float -0.000000e+00, %221 ; [#uses=1]
+ %223 = load float* %180, align 4 ; [#uses=1]
+ %224 = fsub float -0.000000e+00, %223 ; [#uses=1]
+ %225 = load float* %176, align 8 ; [#uses=1]
+ %226 = fsub float -0.000000e+00, %225 ; [#uses=1]
+ %227 = getelementptr inbounds %struct.btQuadWord* %35, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %226, float* %227, align 8
+ %228 = getelementptr inbounds %struct.btQuadWord* %35, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %224, float* %228, align 4
+ %229 = getelementptr inbounds %struct.btQuadWord* %35, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %222, float* %229, align 8
+ %230 = getelementptr inbounds %struct.btQuadWord* %35, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %230, align 4
+ %231 = bitcast i32 (...)* %220 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btTransform*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %231(%struct.btActionInterface* %216, %struct.btQuadWord* %35, %struct.btQuadWord* %halfExtents, %struct.btTransform* %worldTransform, %struct.btQuadWord* %color)
+ ret void
+
+bb5: ; preds = %entry
+ %232 = bitcast %struct.btCollisionShape* %shape to %struct.btPolyhedralConvexShape* ; [#uses=1]
+ %233 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 0, i32 0 ; [#uses=1]
+ %234 = load i32 (...)*** %233, align 4 ; [#uses=1]
+ %235 = getelementptr inbounds i32 (...)** %234, i32 11 ; [#uses=1]
+ %236 = load i32 (...)** %235, align 4 ; [#uses=1]
+ %237 = bitcast i32 (...)* %236 to float (%struct.btPolyhedralConvexShape*)* ; [#uses=1]
+ %238 = call float %237(%struct.btPolyhedralConvexShape* %232) ; [#uses=1]
+ %239 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %240 = getelementptr inbounds i32 (...)** %239, i32 4 ; [#uses=1]
+ %241 = load i32 (...)** %240, align 4 ; [#uses=1]
+ %242 = bitcast i32 (...)* %241 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %243 = call %struct.btActionInterface* %242(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %244 = getelementptr inbounds %struct.btActionInterface* %243, i32 0, i32 0 ; [#uses=1]
+ %245 = load i32 (...)*** %244, align 4 ; [#uses=1]
+ %246 = getelementptr inbounds i32 (...)** %245, i32 4 ; [#uses=1]
+ %247 = load i32 (...)** %246, align 4 ; [#uses=1]
+ %248 = bitcast i32 (...)* %247 to void (%struct.btActionInterface*, float, %struct.btTransform*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %248(%struct.btActionInterface* %243, float %238, %struct.btTransform* %worldTransform, %struct.btQuadWord* %color)
+ ret void
+
+bb6: ; preds = %entry
+ %249 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 7, i32 2 ; [#uses=1]
+ %250 = bitcast i8** %249 to i32* ; [#uses=1]
+ %251 = load i32* %250, align 4 ; [#uses=3]
+ %i7.0455 = add i32 %251, -1 ; [#uses=2]
+ %252 = icmp sgt i32 %i7.0455, -1 ; [#uses=1]
+ br i1 %252, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb6
+ %253 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 8, i32 1 ; [#uses=1]
+ %254 = bitcast i32* %253 to %struct.btQuadWord** ; [#uses=1]
+ %255 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %256 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %257 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %258 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %259 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %260 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %261 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %262 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %263 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %264 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %265 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %266 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %267 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %268 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %269 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %271 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %272 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %273 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %274 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %275 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %276 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %277 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %278 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %279 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %280 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %281 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %282 = getelementptr inbounds %struct.btTransform* %34, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %283 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 10 ; [#uses=1]
+ %284 = bitcast %struct.btCollisionShape* %283 to float** ; [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb8, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb8 ] ; [#uses=3]
+ %tmp465 = sub i32 %i7.0455, %indvar ; [#uses=2]
+ %tmp468 = sub i32 %251, %indvar ; [#uses=2]
+ %285 = load %struct.btQuadWord** %254, align 4 ; [#uses=3]
+ %scevgep466467 = getelementptr inbounds %struct.btQuadWord* %285, i32 %tmp465, i32 0, i32 0 ; [#uses=1]
+ %286 = load float* %scevgep466467, align 4 ; [#uses=3]
+ %scevgep469 = getelementptr %struct.btQuadWord* %285, i32 %tmp468, i32 0, i32 -3 ; [#uses=1]
+ %287 = load float* %scevgep469, align 4 ; [#uses=3]
+ %scevgep470 = getelementptr %struct.btQuadWord* %285, i32 %tmp468, i32 0, i32 -2 ; [#uses=1]
+ %288 = load float* %scevgep470, align 4 ; [#uses=3]
+ %289 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %290 = getelementptr inbounds i32 (...)** %289, i32 4 ; [#uses=1]
+ %291 = load i32 (...)** %290, align 4 ; [#uses=1]
+ %292 = bitcast i32 (...)* %291 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %293 = call %struct.btActionInterface* %292(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %294 = getelementptr inbounds %struct.btActionInterface* %293, i32 0, i32 0 ; [#uses=1]
+ %295 = load i32 (...)*** %294, align 4 ; [#uses=1]
+ %296 = getelementptr inbounds i32 (...)** %295, i32 4 ; [#uses=1]
+ %297 = load i32 (...)** %296, align 4 ; [#uses=1]
+ %298 = load float* %255, align 4 ; [#uses=3]
+ %299 = fmul float %298, %286 ; [#uses=1]
+ %300 = load float* %256, align 4 ; [#uses=3]
+ %301 = fmul float %300, %287 ; [#uses=1]
+ %302 = fadd float %299, %301 ; [#uses=1]
+ %303 = load float* %257, align 4 ; [#uses=3]
+ %304 = fmul float %303, %288 ; [#uses=1]
+ %305 = fadd float %302, %304 ; [#uses=1]
+ %306 = load float* %258, align 4 ; [#uses=1]
+ %307 = fadd float %305, %306 ; [#uses=1]
+ %308 = load float* %259, align 4 ; [#uses=3]
+ %309 = fmul float %308, %286 ; [#uses=1]
+ %310 = load float* %260, align 4 ; [#uses=3]
+ %311 = fmul float %310, %287 ; [#uses=1]
+ %312 = fadd float %309, %311 ; [#uses=1]
+ %313 = load float* %261, align 4 ; [#uses=3]
+ %314 = fmul float %313, %288 ; [#uses=1]
+ %315 = fadd float %312, %314 ; [#uses=1]
+ %316 = load float* %262, align 4 ; [#uses=1]
+ %317 = fadd float %315, %316 ; [#uses=1]
+ %318 = load float* %263, align 4 ; [#uses=3]
+ %319 = fmul float %318, %286 ; [#uses=1]
+ %320 = load float* %264, align 4 ; [#uses=3]
+ %321 = fmul float %320, %287 ; [#uses=1]
+ %322 = fadd float %319, %321 ; [#uses=1]
+ %323 = load float* %265, align 4 ; [#uses=3]
+ %324 = fmul float %323, %288 ; [#uses=1]
+ %325 = fadd float %322, %324 ; [#uses=1]
+ %326 = load float* %266, align 4 ; [#uses=1]
+ %327 = fadd float %325, %326 ; [#uses=1]
+ %328 = fmul float %298, 0.000000e+00 ; [#uses=2]
+ %329 = fmul float %300, 0.000000e+00 ; [#uses=2]
+ %330 = fadd float %328, %329 ; [#uses=1]
+ %331 = fadd float %330, %303 ; [#uses=1]
+ %332 = fadd float %328, %300 ; [#uses=1]
+ %333 = fmul float %303, 0.000000e+00 ; [#uses=2]
+ %334 = fadd float %332, %333 ; [#uses=1]
+ %335 = fadd float %298, %329 ; [#uses=1]
+ %336 = fadd float %335, %333 ; [#uses=1]
+ %337 = fmul float %308, 0.000000e+00 ; [#uses=2]
+ %338 = fmul float %310, 0.000000e+00 ; [#uses=2]
+ %339 = fadd float %337, %338 ; [#uses=1]
+ %340 = fadd float %339, %313 ; [#uses=1]
+ %341 = fadd float %337, %310 ; [#uses=1]
+ %342 = fmul float %313, 0.000000e+00 ; [#uses=2]
+ %343 = fadd float %341, %342 ; [#uses=1]
+ %344 = fadd float %308, %338 ; [#uses=1]
+ %345 = fadd float %344, %342 ; [#uses=1]
+ %346 = fmul float %318, 0.000000e+00 ; [#uses=2]
+ %347 = fmul float %320, 0.000000e+00 ; [#uses=2]
+ %348 = fadd float %346, %347 ; [#uses=1]
+ %349 = fadd float %348, %323 ; [#uses=1]
+ %350 = fadd float %346, %320 ; [#uses=1]
+ %351 = fmul float %323, 0.000000e+00 ; [#uses=2]
+ %352 = fadd float %350, %351 ; [#uses=1]
+ %353 = fadd float %318, %347 ; [#uses=1]
+ %354 = fadd float %353, %351 ; [#uses=1]
+ store float %354, float* %267, align 8
+ store float %352, float* %268, align 4
+ store float %349, float* %269, align 8
+ store float 0.000000e+00, float* %270, align 4
+ store float %345, float* %271, align 8
+ store float %343, float* %272, align 4
+ store float %340, float* %273, align 8
+ store float 0.000000e+00, float* %274, align 4
+ store float %336, float* %275, align 8
+ store float %334, float* %276, align 4
+ store float %331, float* %277, align 8
+ store float 0.000000e+00, float* %278, align 4
+ store float %327, float* %279, align 8
+ store float %317, float* %280, align 4
+ store float %307, float* %281, align 8
+ store float 0.000000e+00, float* %282, align 4
+ %355 = load float** %284, align 4 ; [#uses=1]
+ %scevgep = getelementptr float* %355, i32 %tmp465 ; [#uses=1]
+ %356 = load float* %scevgep, align 4 ; [#uses=1]
+ %357 = bitcast i32 (...)* %297 to void (%struct.btActionInterface*, float, %struct.btTransform*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %357(%struct.btActionInterface* %293, float %356, %struct.btTransform* %34, %struct.btQuadWord* %color)
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %251 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb8
+
+bb10: ; preds = %entry
+ %358 = bitcast %struct.btCollisionShape* %shape to %struct.btCapsuleShape* ; [#uses=2]
+ %359 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 4, i32 1 ; [#uses=1]
+ %360 = load i32* %359, align 4 ; [#uses=5]
+ %361 = add nsw i32 %360, 2 ; [#uses=1]
+ %362 = srem i32 %361, 3 ; [#uses=3]
+ %363 = getelementptr inbounds %struct.btCapsuleShape* %358, i32 0, i32 0, i32 2, i32 0, i32 %362 ; [#uses=1]
+ %364 = load float* %363, align 4 ; [#uses=7]
+ %365 = getelementptr inbounds %struct.btCapsuleShape* %358, i32 0, i32 0, i32 2, i32 0, i32 %360 ; [#uses=1]
+ %366 = load float* %365, align 4 ; [#uses=2]
+ %367 = getelementptr inbounds %struct.btQuadWord* %capStart, i32 0, i32 0, i32 0 ; [#uses=6]
+ store float 0.000000e+00, float* %367, align 8
+ %368 = getelementptr inbounds %struct.btQuadWord* %capStart, i32 0, i32 0, i32 1 ; [#uses=6]
+ store float 0.000000e+00, float* %368, align 4
+ %369 = getelementptr inbounds %struct.btQuadWord* %capStart, i32 0, i32 0, i32 2 ; [#uses=6]
+ store float 0.000000e+00, float* %369, align 8
+ %370 = getelementptr inbounds %struct.btQuadWord* %capStart, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %370, align 4
+ %371 = fsub float -0.000000e+00, %366 ; [#uses=1]
+ %372 = getelementptr inbounds %struct.btQuadWord* %capStart, i32 0, i32 0, i32 %360 ; [#uses=1]
+ store float %371, float* %372, align 4
+ %373 = getelementptr inbounds %struct.btQuadWord* %capEnd, i32 0, i32 0, i32 0 ; [#uses=6]
+ store float 0.000000e+00, float* %373, align 8
+ %374 = getelementptr inbounds %struct.btQuadWord* %capEnd, i32 0, i32 0, i32 1 ; [#uses=6]
+ store float 0.000000e+00, float* %374, align 4
+ %375 = getelementptr inbounds %struct.btQuadWord* %capEnd, i32 0, i32 0, i32 2 ; [#uses=6]
+ store float 0.000000e+00, float* %375, align 8
+ %376 = getelementptr inbounds %struct.btQuadWord* %capEnd, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %376, align 4
+ %377 = getelementptr inbounds %struct.btQuadWord* %capEnd, i32 0, i32 0, i32 %360 ; [#uses=1]
+ store float %366, float* %377, align 4
+ %378 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %379 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=6]
+ %380 = load float* %379, align 4 ; [#uses=2]
+ store float %380, float* %378, align 8
+ %381 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %382 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=6]
+ %383 = load float* %382, align 4 ; [#uses=2]
+ store float %383, float* %381, align 4
+ %384 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %385 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=6]
+ %386 = load float* %385, align 4 ; [#uses=2]
+ store float %386, float* %384, align 8
+ %387 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %388 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %389 = load float* %388, align 4 ; [#uses=1]
+ store float %389, float* %387, align 4
+ %390 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %391 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=6]
+ %392 = load float* %391, align 4 ; [#uses=2]
+ store float %392, float* %390, align 8
+ %393 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %394 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=6]
+ %395 = load float* %394, align 4 ; [#uses=2]
+ store float %395, float* %393, align 4
+ %396 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %397 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=6]
+ %398 = load float* %397, align 4 ; [#uses=2]
+ store float %398, float* %396, align 8
+ %399 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %400 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %401 = load float* %400, align 4 ; [#uses=1]
+ store float %401, float* %399, align 4
+ %402 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %403 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=6]
+ %404 = load float* %403, align 4 ; [#uses=2]
+ store float %404, float* %402, align 8
+ %405 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %406 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=6]
+ %407 = load float* %406, align 4 ; [#uses=2]
+ store float %407, float* %405, align 4
+ %408 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %409 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=6]
+ %410 = load float* %409, align 4 ; [#uses=2]
+ store float %410, float* %408, align 8
+ %411 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %412 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %413 = load float* %412, align 4 ; [#uses=1]
+ store float %413, float* %411, align 4
+ %414 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %415 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %416 = load float* %415, align 4 ; [#uses=1]
+ %417 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %418 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %419 = load float* %418, align 4 ; [#uses=1]
+ %420 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %421 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %422 = load float* %421, align 4 ; [#uses=1]
+ %423 = getelementptr inbounds %struct.btTransform* %childTransform12, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %424 = load float* %367, align 8 ; [#uses=3]
+ %425 = fmul float %404, %424 ; [#uses=1]
+ %426 = load float* %368, align 4 ; [#uses=3]
+ %427 = fmul float %407, %426 ; [#uses=1]
+ %428 = fadd float %425, %427 ; [#uses=1]
+ %429 = load float* %369, align 8 ; [#uses=3]
+ %430 = fmul float %410, %429 ; [#uses=1]
+ %431 = fadd float %428, %430 ; [#uses=1]
+ %432 = fadd float %431, %422 ; [#uses=1]
+ %433 = fmul float %392, %424 ; [#uses=1]
+ %434 = fmul float %395, %426 ; [#uses=1]
+ %435 = fadd float %433, %434 ; [#uses=1]
+ %436 = fmul float %398, %429 ; [#uses=1]
+ %437 = fadd float %435, %436 ; [#uses=1]
+ %438 = fadd float %437, %419 ; [#uses=1]
+ %439 = fmul float %380, %424 ; [#uses=1]
+ %440 = fmul float %383, %426 ; [#uses=1]
+ %441 = fadd float %439, %440 ; [#uses=1]
+ %442 = fmul float %386, %429 ; [#uses=1]
+ %443 = fadd float %441, %442 ; [#uses=1]
+ %444 = fadd float %443, %416 ; [#uses=1]
+ store float %444, float* %414, align 8
+ store float %438, float* %417, align 4
+ store float %432, float* %420, align 8
+ store float 0.000000e+00, float* %423, align 4
+ %445 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %446 = getelementptr inbounds i32 (...)** %445, i32 4 ; [#uses=1]
+ %447 = load i32 (...)** %446, align 4 ; [#uses=1]
+ %448 = bitcast i32 (...)* %447 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %449 = call %struct.btActionInterface* %448(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %450 = getelementptr inbounds %struct.btActionInterface* %449, i32 0, i32 0 ; [#uses=1]
+ %451 = load i32 (...)*** %450, align 4 ; [#uses=1]
+ %452 = getelementptr inbounds i32 (...)** %451, i32 4 ; [#uses=1]
+ %453 = load i32 (...)** %452, align 4 ; [#uses=1]
+ %454 = bitcast i32 (...)* %453 to void (%struct.btActionInterface*, float, %struct.btTransform*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %454(%struct.btActionInterface* %449, float %364, %struct.btTransform* %childTransform12, %struct.btQuadWord* %color)
+ %455 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %456 = load float* %379, align 4 ; [#uses=2]
+ store float %456, float* %455, align 8
+ %457 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %458 = load float* %382, align 4 ; [#uses=2]
+ store float %458, float* %457, align 4
+ %459 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %460 = load float* %385, align 4 ; [#uses=2]
+ store float %460, float* %459, align 8
+ %461 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %462 = load float* %388, align 4 ; [#uses=1]
+ store float %462, float* %461, align 4
+ %463 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %464 = load float* %391, align 4 ; [#uses=2]
+ store float %464, float* %463, align 8
+ %465 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %466 = load float* %394, align 4 ; [#uses=2]
+ store float %466, float* %465, align 4
+ %467 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %468 = load float* %397, align 4 ; [#uses=2]
+ store float %468, float* %467, align 8
+ %469 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %470 = load float* %400, align 4 ; [#uses=1]
+ store float %470, float* %469, align 4
+ %471 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %472 = load float* %403, align 4 ; [#uses=2]
+ store float %472, float* %471, align 8
+ %473 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %474 = load float* %406, align 4 ; [#uses=2]
+ store float %474, float* %473, align 4
+ %475 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %476 = load float* %409, align 4 ; [#uses=2]
+ store float %476, float* %475, align 8
+ %477 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %478 = load float* %412, align 4 ; [#uses=1]
+ store float %478, float* %477, align 4
+ %479 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %480 = load float* %415, align 4 ; [#uses=1]
+ %481 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %482 = load float* %418, align 4 ; [#uses=1]
+ %483 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %484 = load float* %421, align 4 ; [#uses=1]
+ %485 = getelementptr inbounds %struct.btTransform* %childTransform14, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %486 = load float* %373, align 8 ; [#uses=3]
+ %487 = fmul float %472, %486 ; [#uses=1]
+ %488 = load float* %374, align 4 ; [#uses=3]
+ %489 = fmul float %474, %488 ; [#uses=1]
+ %490 = fadd float %487, %489 ; [#uses=1]
+ %491 = load float* %375, align 8 ; [#uses=3]
+ %492 = fmul float %476, %491 ; [#uses=1]
+ %493 = fadd float %490, %492 ; [#uses=1]
+ %494 = fadd float %493, %484 ; [#uses=1]
+ %495 = fmul float %464, %486 ; [#uses=1]
+ %496 = fmul float %466, %488 ; [#uses=1]
+ %497 = fadd float %495, %496 ; [#uses=1]
+ %498 = fmul float %468, %491 ; [#uses=1]
+ %499 = fadd float %497, %498 ; [#uses=1]
+ %500 = fadd float %499, %482 ; [#uses=1]
+ %501 = fmul float %456, %486 ; [#uses=1]
+ %502 = fmul float %458, %488 ; [#uses=1]
+ %503 = fadd float %501, %502 ; [#uses=1]
+ %504 = fmul float %460, %491 ; [#uses=1]
+ %505 = fadd float %503, %504 ; [#uses=1]
+ %506 = fadd float %505, %480 ; [#uses=1]
+ store float %506, float* %479, align 8
+ store float %500, float* %481, align 4
+ store float %494, float* %483, align 8
+ store float 0.000000e+00, float* %485, align 4
+ %507 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %508 = getelementptr inbounds i32 (...)** %507, i32 4 ; [#uses=1]
+ %509 = load i32 (...)** %508, align 4 ; [#uses=1]
+ %510 = bitcast i32 (...)* %509 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %511 = call %struct.btActionInterface* %510(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %512 = getelementptr inbounds %struct.btActionInterface* %511, i32 0, i32 0 ; [#uses=1]
+ %513 = load i32 (...)*** %512, align 4 ; [#uses=1]
+ %514 = getelementptr inbounds i32 (...)** %513, i32 4 ; [#uses=1]
+ %515 = load i32 (...)** %514, align 4 ; [#uses=1]
+ %516 = bitcast i32 (...)* %515 to void (%struct.btActionInterface*, float, %struct.btTransform*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %516(%struct.btActionInterface* %511, float %364, %struct.btTransform* %childTransform14, %struct.btQuadWord* %color)
+ %517 = load float* %415, align 4 ; [#uses=8]
+ %518 = load float* %418, align 4 ; [#uses=8]
+ %519 = load float* %421, align 4 ; [#uses=8]
+ %520 = add nsw i32 %360, 1 ; [#uses=1]
+ %521 = srem i32 %520, 3 ; [#uses=2]
+ %522 = getelementptr inbounds %struct.btQuadWord* %capStart, i32 0, i32 0, i32 %521 ; [#uses=3]
+ store float %364, float* %522, align 4
+ %523 = getelementptr inbounds %struct.btQuadWord* %capEnd, i32 0, i32 0, i32 %521 ; [#uses=3]
+ store float %364, float* %523, align 4
+ %524 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %525 = getelementptr inbounds i32 (...)** %524, i32 4 ; [#uses=1]
+ %526 = load i32 (...)** %525, align 4 ; [#uses=1]
+ %527 = bitcast i32 (...)* %526 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %528 = call %struct.btActionInterface* %527(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %529 = getelementptr inbounds %struct.btActionInterface* %528, i32 0, i32 0 ; [#uses=1]
+ %530 = load i32 (...)*** %529, align 4 ; [#uses=1]
+ %531 = getelementptr inbounds i32 (...)** %530, i32 2 ; [#uses=1]
+ %532 = load i32 (...)** %531, align 4 ; [#uses=1]
+ %533 = load float* %403, align 4 ; [#uses=2]
+ %534 = load float* %373, align 8 ; [#uses=3]
+ %535 = fmul float %533, %534 ; [#uses=1]
+ %536 = load float* %406, align 4 ; [#uses=2]
+ %537 = load float* %374, align 4 ; [#uses=3]
+ %538 = fmul float %536, %537 ; [#uses=1]
+ %539 = fadd float %535, %538 ; [#uses=1]
+ %540 = load float* %409, align 4 ; [#uses=2]
+ %541 = load float* %375, align 8 ; [#uses=3]
+ %542 = fmul float %540, %541 ; [#uses=1]
+ %543 = fadd float %539, %542 ; [#uses=1]
+ %544 = load float* %391, align 4 ; [#uses=2]
+ %545 = fmul float %544, %534 ; [#uses=1]
+ %546 = load float* %394, align 4 ; [#uses=2]
+ %547 = fmul float %546, %537 ; [#uses=1]
+ %548 = fadd float %545, %547 ; [#uses=1]
+ %549 = load float* %397, align 4 ; [#uses=2]
+ %550 = fmul float %549, %541 ; [#uses=1]
+ %551 = fadd float %548, %550 ; [#uses=1]
+ %552 = load float* %379, align 4 ; [#uses=2]
+ %553 = fmul float %552, %534 ; [#uses=1]
+ %554 = load float* %382, align 4 ; [#uses=2]
+ %555 = fmul float %554, %537 ; [#uses=1]
+ %556 = fadd float %553, %555 ; [#uses=1]
+ %557 = load float* %385, align 4 ; [#uses=2]
+ %558 = fmul float %557, %541 ; [#uses=1]
+ %559 = fadd float %556, %558 ; [#uses=1]
+ %560 = fadd float %519, %543 ; [#uses=1]
+ %561 = fadd float %518, %551 ; [#uses=1]
+ %562 = fadd float %517, %559 ; [#uses=1]
+ %563 = getelementptr inbounds %struct.btQuadWord* %33, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %562, float* %563, align 8
+ %564 = getelementptr inbounds %struct.btQuadWord* %33, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %561, float* %564, align 4
+ %565 = getelementptr inbounds %struct.btQuadWord* %33, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %560, float* %565, align 8
+ %566 = getelementptr inbounds %struct.btQuadWord* %33, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %566, align 4
+ %567 = load float* %367, align 8 ; [#uses=3]
+ %568 = fmul float %533, %567 ; [#uses=1]
+ %569 = load float* %368, align 4 ; [#uses=3]
+ %570 = fmul float %536, %569 ; [#uses=1]
+ %571 = fadd float %568, %570 ; [#uses=1]
+ %572 = load float* %369, align 8 ; [#uses=3]
+ %573 = fmul float %540, %572 ; [#uses=1]
+ %574 = fadd float %571, %573 ; [#uses=1]
+ %575 = fmul float %544, %567 ; [#uses=1]
+ %576 = fmul float %546, %569 ; [#uses=1]
+ %577 = fadd float %575, %576 ; [#uses=1]
+ %578 = fmul float %549, %572 ; [#uses=1]
+ %579 = fadd float %577, %578 ; [#uses=1]
+ %580 = fmul float %552, %567 ; [#uses=1]
+ %581 = fmul float %554, %569 ; [#uses=1]
+ %582 = fadd float %580, %581 ; [#uses=1]
+ %583 = fmul float %557, %572 ; [#uses=1]
+ %584 = fadd float %582, %583 ; [#uses=1]
+ %585 = fadd float %519, %574 ; [#uses=1]
+ %586 = fadd float %518, %579 ; [#uses=1]
+ %587 = fadd float %517, %584 ; [#uses=1]
+ %588 = getelementptr inbounds %struct.btQuadWord* %32, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %587, float* %588, align 8
+ %589 = getelementptr inbounds %struct.btQuadWord* %32, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %586, float* %589, align 4
+ %590 = getelementptr inbounds %struct.btQuadWord* %32, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %585, float* %590, align 8
+ %591 = getelementptr inbounds %struct.btQuadWord* %32, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %591, align 4
+ %592 = bitcast i32 (...)* %532 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %592(%struct.btActionInterface* %528, %struct.btQuadWord* %32, %struct.btQuadWord* %33, %struct.btQuadWord* %color)
+ %593 = fsub float -0.000000e+00, %364 ; [#uses=4]
+ store float %593, float* %522, align 4
+ store float %593, float* %523, align 4
+ %594 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %595 = getelementptr inbounds i32 (...)** %594, i32 4 ; [#uses=1]
+ %596 = load i32 (...)** %595, align 4 ; [#uses=1]
+ %597 = bitcast i32 (...)* %596 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %598 = call %struct.btActionInterface* %597(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %599 = getelementptr inbounds %struct.btActionInterface* %598, i32 0, i32 0 ; [#uses=1]
+ %600 = load i32 (...)*** %599, align 4 ; [#uses=1]
+ %601 = getelementptr inbounds i32 (...)** %600, i32 2 ; [#uses=1]
+ %602 = load i32 (...)** %601, align 4 ; [#uses=1]
+ %603 = load float* %403, align 4 ; [#uses=2]
+ %604 = load float* %373, align 8 ; [#uses=3]
+ %605 = fmul float %603, %604 ; [#uses=1]
+ %606 = load float* %406, align 4 ; [#uses=2]
+ %607 = load float* %374, align 4 ; [#uses=3]
+ %608 = fmul float %606, %607 ; [#uses=1]
+ %609 = fadd float %605, %608 ; [#uses=1]
+ %610 = load float* %409, align 4 ; [#uses=2]
+ %611 = load float* %375, align 8 ; [#uses=3]
+ %612 = fmul float %610, %611 ; [#uses=1]
+ %613 = fadd float %609, %612 ; [#uses=1]
+ %614 = load float* %391, align 4 ; [#uses=2]
+ %615 = fmul float %614, %604 ; [#uses=1]
+ %616 = load float* %394, align 4 ; [#uses=2]
+ %617 = fmul float %616, %607 ; [#uses=1]
+ %618 = fadd float %615, %617 ; [#uses=1]
+ %619 = load float* %397, align 4 ; [#uses=2]
+ %620 = fmul float %619, %611 ; [#uses=1]
+ %621 = fadd float %618, %620 ; [#uses=1]
+ %622 = load float* %379, align 4 ; [#uses=2]
+ %623 = fmul float %622, %604 ; [#uses=1]
+ %624 = load float* %382, align 4 ; [#uses=2]
+ %625 = fmul float %624, %607 ; [#uses=1]
+ %626 = fadd float %623, %625 ; [#uses=1]
+ %627 = load float* %385, align 4 ; [#uses=2]
+ %628 = fmul float %627, %611 ; [#uses=1]
+ %629 = fadd float %626, %628 ; [#uses=1]
+ %630 = fadd float %519, %613 ; [#uses=1]
+ %631 = fadd float %518, %621 ; [#uses=1]
+ %632 = fadd float %517, %629 ; [#uses=1]
+ %633 = getelementptr inbounds %struct.btQuadWord* %31, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %632, float* %633, align 8
+ %634 = getelementptr inbounds %struct.btQuadWord* %31, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %631, float* %634, align 4
+ %635 = getelementptr inbounds %struct.btQuadWord* %31, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %630, float* %635, align 8
+ %636 = getelementptr inbounds %struct.btQuadWord* %31, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %636, align 4
+ %637 = load float* %367, align 8 ; [#uses=3]
+ %638 = fmul float %603, %637 ; [#uses=1]
+ %639 = load float* %368, align 4 ; [#uses=3]
+ %640 = fmul float %606, %639 ; [#uses=1]
+ %641 = fadd float %638, %640 ; [#uses=1]
+ %642 = load float* %369, align 8 ; [#uses=3]
+ %643 = fmul float %610, %642 ; [#uses=1]
+ %644 = fadd float %641, %643 ; [#uses=1]
+ %645 = fmul float %614, %637 ; [#uses=1]
+ %646 = fmul float %616, %639 ; [#uses=1]
+ %647 = fadd float %645, %646 ; [#uses=1]
+ %648 = fmul float %619, %642 ; [#uses=1]
+ %649 = fadd float %647, %648 ; [#uses=1]
+ %650 = fmul float %622, %637 ; [#uses=1]
+ %651 = fmul float %624, %639 ; [#uses=1]
+ %652 = fadd float %650, %651 ; [#uses=1]
+ %653 = fmul float %627, %642 ; [#uses=1]
+ %654 = fadd float %652, %653 ; [#uses=1]
+ %655 = fadd float %519, %644 ; [#uses=1]
+ %656 = fadd float %518, %649 ; [#uses=1]
+ %657 = fadd float %517, %654 ; [#uses=1]
+ %658 = getelementptr inbounds %struct.btQuadWord* %30, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %657, float* %658, align 8
+ %659 = getelementptr inbounds %struct.btQuadWord* %30, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %656, float* %659, align 4
+ %660 = getelementptr inbounds %struct.btQuadWord* %30, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %655, float* %660, align 8
+ %661 = getelementptr inbounds %struct.btQuadWord* %30, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %661, align 4
+ %662 = bitcast i32 (...)* %602 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %662(%struct.btActionInterface* %598, %struct.btQuadWord* %30, %struct.btQuadWord* %31, %struct.btQuadWord* %color)
+ store float 0.000000e+00, float* %522, align 4
+ store float 0.000000e+00, float* %523, align 4
+ %663 = getelementptr inbounds %struct.btQuadWord* %capStart, i32 0, i32 0, i32 %362 ; [#uses=2]
+ store float %364, float* %663, align 4
+ %664 = getelementptr inbounds %struct.btQuadWord* %capEnd, i32 0, i32 0, i32 %362 ; [#uses=2]
+ store float %364, float* %664, align 4
+ %665 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %666 = getelementptr inbounds i32 (...)** %665, i32 4 ; [#uses=1]
+ %667 = load i32 (...)** %666, align 4 ; [#uses=1]
+ %668 = bitcast i32 (...)* %667 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %669 = call %struct.btActionInterface* %668(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %670 = getelementptr inbounds %struct.btActionInterface* %669, i32 0, i32 0 ; [#uses=1]
+ %671 = load i32 (...)*** %670, align 4 ; [#uses=1]
+ %672 = getelementptr inbounds i32 (...)** %671, i32 2 ; [#uses=1]
+ %673 = load i32 (...)** %672, align 4 ; [#uses=1]
+ %674 = load float* %403, align 4 ; [#uses=2]
+ %675 = load float* %373, align 8 ; [#uses=3]
+ %676 = fmul float %674, %675 ; [#uses=1]
+ %677 = load float* %406, align 4 ; [#uses=2]
+ %678 = load float* %374, align 4 ; [#uses=3]
+ %679 = fmul float %677, %678 ; [#uses=1]
+ %680 = fadd float %676, %679 ; [#uses=1]
+ %681 = load float* %409, align 4 ; [#uses=2]
+ %682 = load float* %375, align 8 ; [#uses=3]
+ %683 = fmul float %681, %682 ; [#uses=1]
+ %684 = fadd float %680, %683 ; [#uses=1]
+ %685 = load float* %391, align 4 ; [#uses=2]
+ %686 = fmul float %685, %675 ; [#uses=1]
+ %687 = load float* %394, align 4 ; [#uses=2]
+ %688 = fmul float %687, %678 ; [#uses=1]
+ %689 = fadd float %686, %688 ; [#uses=1]
+ %690 = load float* %397, align 4 ; [#uses=2]
+ %691 = fmul float %690, %682 ; [#uses=1]
+ %692 = fadd float %689, %691 ; [#uses=1]
+ %693 = load float* %379, align 4 ; [#uses=2]
+ %694 = fmul float %693, %675 ; [#uses=1]
+ %695 = load float* %382, align 4 ; [#uses=2]
+ %696 = fmul float %695, %678 ; [#uses=1]
+ %697 = fadd float %694, %696 ; [#uses=1]
+ %698 = load float* %385, align 4 ; [#uses=2]
+ %699 = fmul float %698, %682 ; [#uses=1]
+ %700 = fadd float %697, %699 ; [#uses=1]
+ %701 = fadd float %519, %684 ; [#uses=1]
+ %702 = fadd float %518, %692 ; [#uses=1]
+ %703 = fadd float %517, %700 ; [#uses=1]
+ %704 = getelementptr inbounds %struct.btQuadWord* %29, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %703, float* %704, align 8
+ %705 = getelementptr inbounds %struct.btQuadWord* %29, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %702, float* %705, align 4
+ %706 = getelementptr inbounds %struct.btQuadWord* %29, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %701, float* %706, align 8
+ %707 = getelementptr inbounds %struct.btQuadWord* %29, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %707, align 4
+ %708 = load float* %367, align 8 ; [#uses=3]
+ %709 = fmul float %674, %708 ; [#uses=1]
+ %710 = load float* %368, align 4 ; [#uses=3]
+ %711 = fmul float %677, %710 ; [#uses=1]
+ %712 = fadd float %709, %711 ; [#uses=1]
+ %713 = load float* %369, align 8 ; [#uses=3]
+ %714 = fmul float %681, %713 ; [#uses=1]
+ %715 = fadd float %712, %714 ; [#uses=1]
+ %716 = fmul float %685, %708 ; [#uses=1]
+ %717 = fmul float %687, %710 ; [#uses=1]
+ %718 = fadd float %716, %717 ; [#uses=1]
+ %719 = fmul float %690, %713 ; [#uses=1]
+ %720 = fadd float %718, %719 ; [#uses=1]
+ %721 = fmul float %693, %708 ; [#uses=1]
+ %722 = fmul float %695, %710 ; [#uses=1]
+ %723 = fadd float %721, %722 ; [#uses=1]
+ %724 = fmul float %698, %713 ; [#uses=1]
+ %725 = fadd float %723, %724 ; [#uses=1]
+ %726 = fadd float %519, %715 ; [#uses=1]
+ %727 = fadd float %518, %720 ; [#uses=1]
+ %728 = fadd float %517, %725 ; [#uses=1]
+ %729 = getelementptr inbounds %struct.btQuadWord* %28, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %728, float* %729, align 8
+ %730 = getelementptr inbounds %struct.btQuadWord* %28, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %727, float* %730, align 4
+ %731 = getelementptr inbounds %struct.btQuadWord* %28, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %726, float* %731, align 8
+ %732 = getelementptr inbounds %struct.btQuadWord* %28, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %732, align 4
+ %733 = bitcast i32 (...)* %673 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %733(%struct.btActionInterface* %669, %struct.btQuadWord* %28, %struct.btQuadWord* %29, %struct.btQuadWord* %color)
+ store float %593, float* %663, align 4
+ store float %593, float* %664, align 4
+ %734 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %735 = getelementptr inbounds i32 (...)** %734, i32 4 ; [#uses=1]
+ %736 = load i32 (...)** %735, align 4 ; [#uses=1]
+ %737 = bitcast i32 (...)* %736 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %738 = call %struct.btActionInterface* %737(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %739 = getelementptr inbounds %struct.btActionInterface* %738, i32 0, i32 0 ; [#uses=1]
+ %740 = load i32 (...)*** %739, align 4 ; [#uses=1]
+ %741 = getelementptr inbounds i32 (...)** %740, i32 2 ; [#uses=1]
+ %742 = load i32 (...)** %741, align 4 ; [#uses=1]
+ %743 = load float* %403, align 4 ; [#uses=2]
+ %744 = load float* %373, align 8 ; [#uses=3]
+ %745 = fmul float %743, %744 ; [#uses=1]
+ %746 = load float* %406, align 4 ; [#uses=2]
+ %747 = load float* %374, align 4 ; [#uses=3]
+ %748 = fmul float %746, %747 ; [#uses=1]
+ %749 = fadd float %745, %748 ; [#uses=1]
+ %750 = load float* %409, align 4 ; [#uses=2]
+ %751 = load float* %375, align 8 ; [#uses=3]
+ %752 = fmul float %750, %751 ; [#uses=1]
+ %753 = fadd float %749, %752 ; [#uses=1]
+ %754 = load float* %391, align 4 ; [#uses=2]
+ %755 = fmul float %754, %744 ; [#uses=1]
+ %756 = load float* %394, align 4 ; [#uses=2]
+ %757 = fmul float %756, %747 ; [#uses=1]
+ %758 = fadd float %755, %757 ; [#uses=1]
+ %759 = load float* %397, align 4 ; [#uses=2]
+ %760 = fmul float %759, %751 ; [#uses=1]
+ %761 = fadd float %758, %760 ; [#uses=1]
+ %762 = load float* %379, align 4 ; [#uses=2]
+ %763 = fmul float %762, %744 ; [#uses=1]
+ %764 = load float* %382, align 4 ; [#uses=2]
+ %765 = fmul float %764, %747 ; [#uses=1]
+ %766 = fadd float %763, %765 ; [#uses=1]
+ %767 = load float* %385, align 4 ; [#uses=2]
+ %768 = fmul float %767, %751 ; [#uses=1]
+ %769 = fadd float %766, %768 ; [#uses=1]
+ %770 = fadd float %519, %753 ; [#uses=1]
+ %771 = fadd float %518, %761 ; [#uses=1]
+ %772 = fadd float %517, %769 ; [#uses=1]
+ %773 = getelementptr inbounds %struct.btQuadWord* %27, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %772, float* %773, align 8
+ %774 = getelementptr inbounds %struct.btQuadWord* %27, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %771, float* %774, align 4
+ %775 = getelementptr inbounds %struct.btQuadWord* %27, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %770, float* %775, align 8
+ %776 = getelementptr inbounds %struct.btQuadWord* %27, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %776, align 4
+ %777 = load float* %367, align 8 ; [#uses=3]
+ %778 = fmul float %743, %777 ; [#uses=1]
+ %779 = load float* %368, align 4 ; [#uses=3]
+ %780 = fmul float %746, %779 ; [#uses=1]
+ %781 = fadd float %778, %780 ; [#uses=1]
+ %782 = load float* %369, align 8 ; [#uses=3]
+ %783 = fmul float %750, %782 ; [#uses=1]
+ %784 = fadd float %781, %783 ; [#uses=1]
+ %785 = fmul float %754, %777 ; [#uses=1]
+ %786 = fmul float %756, %779 ; [#uses=1]
+ %787 = fadd float %785, %786 ; [#uses=1]
+ %788 = fmul float %759, %782 ; [#uses=1]
+ %789 = fadd float %787, %788 ; [#uses=1]
+ %790 = fmul float %762, %777 ; [#uses=1]
+ %791 = fmul float %764, %779 ; [#uses=1]
+ %792 = fadd float %790, %791 ; [#uses=1]
+ %793 = fmul float %767, %782 ; [#uses=1]
+ %794 = fadd float %792, %793 ; [#uses=1]
+ %795 = fadd float %519, %784 ; [#uses=1]
+ %796 = fadd float %518, %789 ; [#uses=1]
+ %797 = fadd float %517, %794 ; [#uses=1]
+ %798 = getelementptr inbounds %struct.btQuadWord* %26, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %797, float* %798, align 8
+ %799 = getelementptr inbounds %struct.btQuadWord* %26, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %796, float* %799, align 4
+ %800 = getelementptr inbounds %struct.btQuadWord* %26, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %795, float* %800, align 8
+ %801 = getelementptr inbounds %struct.btQuadWord* %26, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %801, align 4
+ %802 = bitcast i32 (...)* %742 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %802(%struct.btActionInterface* %738, %struct.btQuadWord* %26, %struct.btQuadWord* %27, %struct.btQuadWord* %color)
+ ret void
+
+bb16: ; preds = %entry
+ %803 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 4, i32 2 ; [#uses=1]
+ %804 = bitcast i8** %803 to float* ; [#uses=1]
+ %805 = load float* %804, align 4 ; [#uses=4]
+ %806 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 5 ; [#uses=1]
+ %807 = bitcast %struct.btCollisionShape* %806 to float* ; [#uses=1]
+ %808 = load float* %807, align 4 ; [#uses=1]
+ %809 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %810 = load float* %809, align 4 ; [#uses=9]
+ %811 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %812 = load float* %811, align 4 ; [#uses=9]
+ %813 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %814 = load float* %813, align 4 ; [#uses=9]
+ %815 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 5, i32 2 ; [#uses=1]
+ %816 = bitcast i8** %815 to i32* ; [#uses=1]
+ %817 = load i32* %816, align 4 ; [#uses=4]
+ %818 = getelementptr inbounds %struct.btQuadWord* %offsetHeight, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float 0.000000e+00, float* %818, align 8
+ %819 = getelementptr inbounds %struct.btQuadWord* %offsetHeight, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float 0.000000e+00, float* %819, align 4
+ %820 = getelementptr inbounds %struct.btQuadWord* %offsetHeight, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float 0.000000e+00, float* %820, align 8
+ %821 = getelementptr inbounds %struct.btQuadWord* %offsetHeight, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %821, align 4
+ %822 = fmul float %808, 5.000000e-01 ; [#uses=1]
+ %823 = getelementptr inbounds %struct.btQuadWord* %offsetHeight, i32 0, i32 0, i32 %817 ; [#uses=1]
+ store float %822, float* %823, align 4
+ %824 = getelementptr inbounds %struct.btQuadWord* %offsetRadius, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %824, align 8
+ %825 = getelementptr inbounds %struct.btQuadWord* %offsetRadius, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %825, align 4
+ %826 = getelementptr inbounds %struct.btQuadWord* %offsetRadius, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %826, align 8
+ %827 = getelementptr inbounds %struct.btQuadWord* %offsetRadius, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %827, align 4
+ %828 = add nsw i32 %817, 1 ; [#uses=1]
+ %829 = srem i32 %828, 3 ; [#uses=2]
+ %830 = getelementptr inbounds %struct.btQuadWord* %offsetRadius, i32 0, i32 0, i32 %829 ; [#uses=1]
+ store float %805, float* %830, align 4
+ %831 = getelementptr inbounds %struct.btQuadWord* %offset2Radius, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %831, align 8
+ %832 = getelementptr inbounds %struct.btQuadWord* %offset2Radius, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %832, align 4
+ %833 = getelementptr inbounds %struct.btQuadWord* %offset2Radius, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %833, align 8
+ %834 = getelementptr inbounds %struct.btQuadWord* %offset2Radius, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %834, align 4
+ %835 = add nsw i32 %817, 2 ; [#uses=1]
+ %836 = srem i32 %835, 3 ; [#uses=1]
+ %837 = getelementptr inbounds %struct.btQuadWord* %offset2Radius, i32 0, i32 0, i32 %836 ; [#uses=1]
+ store float %805, float* %837, align 4
+ %838 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %839 = getelementptr inbounds i32 (...)** %838, i32 4 ; [#uses=1]
+ %840 = load i32 (...)** %839, align 4 ; [#uses=1]
+ %841 = bitcast i32 (...)* %840 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %842 = call %struct.btActionInterface* %841(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %843 = getelementptr inbounds %struct.btActionInterface* %842, i32 0, i32 0 ; [#uses=1]
+ %844 = load i32 (...)*** %843, align 4 ; [#uses=1]
+ %845 = getelementptr inbounds i32 (...)** %844, i32 2 ; [#uses=1]
+ %846 = load i32 (...)** %845, align 4 ; [#uses=1]
+ %847 = load float* %820, align 8 ; [#uses=4]
+ %848 = load float* %819, align 4 ; [#uses=4]
+ %849 = load float* %818, align 8 ; [#uses=4]
+ %850 = load float* %826, align 8 ; [#uses=2]
+ %851 = fsub float %850, %847 ; [#uses=3]
+ %852 = load float* %825, align 4 ; [#uses=2]
+ %853 = fsub float %852, %848 ; [#uses=3]
+ %854 = load float* %824, align 8 ; [#uses=2]
+ %855 = fsub float %854, %849 ; [#uses=3]
+ %856 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=5]
+ %857 = load float* %856, align 4 ; [#uses=2]
+ %858 = fmul float %857, %855 ; [#uses=1]
+ %859 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=5]
+ %860 = load float* %859, align 4 ; [#uses=2]
+ %861 = fmul float %860, %853 ; [#uses=1]
+ %862 = fadd float %858, %861 ; [#uses=1]
+ %863 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=5]
+ %864 = load float* %863, align 4 ; [#uses=2]
+ %865 = fmul float %864, %851 ; [#uses=1]
+ %866 = fadd float %862, %865 ; [#uses=1]
+ %867 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=5]
+ %868 = load float* %867, align 4 ; [#uses=2]
+ %869 = fmul float %868, %855 ; [#uses=1]
+ %870 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=5]
+ %871 = load float* %870, align 4 ; [#uses=2]
+ %872 = fmul float %871, %853 ; [#uses=1]
+ %873 = fadd float %869, %872 ; [#uses=1]
+ %874 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=5]
+ %875 = load float* %874, align 4 ; [#uses=2]
+ %876 = fmul float %875, %851 ; [#uses=1]
+ %877 = fadd float %873, %876 ; [#uses=1]
+ %878 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=5]
+ %879 = load float* %878, align 4 ; [#uses=2]
+ %880 = fmul float %879, %855 ; [#uses=1]
+ %881 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=5]
+ %882 = load float* %881, align 4 ; [#uses=2]
+ %883 = fmul float %882, %853 ; [#uses=1]
+ %884 = fadd float %880, %883 ; [#uses=1]
+ %885 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=5]
+ %886 = load float* %885, align 4 ; [#uses=2]
+ %887 = fmul float %886, %851 ; [#uses=1]
+ %888 = fadd float %884, %887 ; [#uses=1]
+ %889 = fadd float %814, %866 ; [#uses=1]
+ %890 = fadd float %812, %877 ; [#uses=1]
+ %891 = fadd float %810, %888 ; [#uses=1]
+ %892 = getelementptr inbounds %struct.btQuadWord* %25, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %891, float* %892, align 8
+ %893 = getelementptr inbounds %struct.btQuadWord* %25, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %890, float* %893, align 4
+ %894 = getelementptr inbounds %struct.btQuadWord* %25, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %889, float* %894, align 8
+ %895 = getelementptr inbounds %struct.btQuadWord* %25, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %895, align 4
+ %896 = fmul float %857, %849 ; [#uses=1]
+ %897 = fmul float %860, %848 ; [#uses=1]
+ %898 = fadd float %896, %897 ; [#uses=1]
+ %899 = fmul float %864, %847 ; [#uses=1]
+ %900 = fadd float %898, %899 ; [#uses=1]
+ %901 = fmul float %868, %849 ; [#uses=1]
+ %902 = fmul float %871, %848 ; [#uses=1]
+ %903 = fadd float %901, %902 ; [#uses=1]
+ %904 = fmul float %875, %847 ; [#uses=1]
+ %905 = fadd float %903, %904 ; [#uses=1]
+ %906 = fmul float %879, %849 ; [#uses=1]
+ %907 = fmul float %882, %848 ; [#uses=1]
+ %908 = fadd float %906, %907 ; [#uses=1]
+ %909 = fmul float %886, %847 ; [#uses=1]
+ %910 = fadd float %908, %909 ; [#uses=1]
+ %911 = fadd float %814, %900 ; [#uses=1]
+ %912 = fadd float %812, %905 ; [#uses=1]
+ %913 = fadd float %810, %910 ; [#uses=1]
+ %914 = getelementptr inbounds %struct.btQuadWord* %24, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %913, float* %914, align 8
+ %915 = getelementptr inbounds %struct.btQuadWord* %24, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %912, float* %915, align 4
+ %916 = getelementptr inbounds %struct.btQuadWord* %24, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %911, float* %916, align 8
+ %917 = getelementptr inbounds %struct.btQuadWord* %24, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %917, align 4
+ %918 = bitcast i32 (...)* %846 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %918(%struct.btActionInterface* %842, %struct.btQuadWord* %24, %struct.btQuadWord* %25, %struct.btQuadWord* %color)
+ %919 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %920 = getelementptr inbounds i32 (...)** %919, i32 4 ; [#uses=1]
+ %921 = load i32 (...)** %920, align 4 ; [#uses=1]
+ %922 = bitcast i32 (...)* %921 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %923 = call %struct.btActionInterface* %922(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %924 = getelementptr inbounds %struct.btActionInterface* %923, i32 0, i32 0 ; [#uses=1]
+ %925 = load i32 (...)*** %924, align 4 ; [#uses=1]
+ %926 = getelementptr inbounds i32 (...)** %925, i32 2 ; [#uses=1]
+ %927 = load i32 (...)** %926, align 4 ; [#uses=1]
+ %928 = load float* %820, align 8 ; [#uses=14]
+ %929 = fsub float -0.000000e+00, %928 ; [#uses=2]
+ %930 = load float* %819, align 4 ; [#uses=14]
+ %931 = fsub float -0.000000e+00, %930 ; [#uses=2]
+ %932 = load float* %818, align 8 ; [#uses=14]
+ %933 = fsub float -0.000000e+00, %932 ; [#uses=2]
+ %934 = fsub float %929, %850 ; [#uses=3]
+ %935 = fsub float %931, %852 ; [#uses=3]
+ %936 = fsub float %933, %854 ; [#uses=3]
+ %937 = load float* %856, align 4 ; [#uses=2]
+ %938 = fmul float %937, %936 ; [#uses=1]
+ %939 = load float* %859, align 4 ; [#uses=2]
+ %940 = fmul float %939, %935 ; [#uses=1]
+ %941 = fadd float %938, %940 ; [#uses=1]
+ %942 = load float* %863, align 4 ; [#uses=2]
+ %943 = fmul float %942, %934 ; [#uses=1]
+ %944 = fadd float %941, %943 ; [#uses=1]
+ %945 = load float* %867, align 4 ; [#uses=2]
+ %946 = fmul float %945, %936 ; [#uses=1]
+ %947 = load float* %870, align 4 ; [#uses=2]
+ %948 = fmul float %947, %935 ; [#uses=1]
+ %949 = fadd float %946, %948 ; [#uses=1]
+ %950 = load float* %874, align 4 ; [#uses=2]
+ %951 = fmul float %950, %934 ; [#uses=1]
+ %952 = fadd float %949, %951 ; [#uses=1]
+ %953 = load float* %878, align 4 ; [#uses=2]
+ %954 = fmul float %953, %936 ; [#uses=1]
+ %955 = load float* %881, align 4 ; [#uses=2]
+ %956 = fmul float %955, %935 ; [#uses=1]
+ %957 = fadd float %954, %956 ; [#uses=1]
+ %958 = load float* %885, align 4 ; [#uses=2]
+ %959 = fmul float %958, %934 ; [#uses=1]
+ %960 = fadd float %957, %959 ; [#uses=1]
+ %961 = fadd float %814, %944 ; [#uses=1]
+ %962 = fadd float %812, %952 ; [#uses=1]
+ %963 = fadd float %810, %960 ; [#uses=1]
+ %964 = getelementptr inbounds %struct.btQuadWord* %23, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %963, float* %964, align 8
+ %965 = getelementptr inbounds %struct.btQuadWord* %23, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %962, float* %965, align 4
+ %966 = getelementptr inbounds %struct.btQuadWord* %23, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %961, float* %966, align 8
+ %967 = getelementptr inbounds %struct.btQuadWord* %23, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %967, align 4
+ %968 = fmul float %937, %932 ; [#uses=1]
+ %969 = fmul float %939, %930 ; [#uses=1]
+ %970 = fadd float %968, %969 ; [#uses=1]
+ %971 = fmul float %942, %928 ; [#uses=1]
+ %972 = fadd float %970, %971 ; [#uses=1]
+ %973 = fmul float %945, %932 ; [#uses=1]
+ %974 = fmul float %947, %930 ; [#uses=1]
+ %975 = fadd float %973, %974 ; [#uses=1]
+ %976 = fmul float %950, %928 ; [#uses=1]
+ %977 = fadd float %975, %976 ; [#uses=1]
+ %978 = fmul float %953, %932 ; [#uses=1]
+ %979 = fmul float %955, %930 ; [#uses=1]
+ %980 = fadd float %978, %979 ; [#uses=1]
+ %981 = fmul float %958, %928 ; [#uses=1]
+ %982 = fadd float %980, %981 ; [#uses=1]
+ %983 = fadd float %814, %972 ; [#uses=1]
+ %984 = fadd float %812, %977 ; [#uses=1]
+ %985 = fadd float %810, %982 ; [#uses=1]
+ %986 = getelementptr inbounds %struct.btQuadWord* %22, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %985, float* %986, align 8
+ %987 = getelementptr inbounds %struct.btQuadWord* %22, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %984, float* %987, align 4
+ %988 = getelementptr inbounds %struct.btQuadWord* %22, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %983, float* %988, align 8
+ %989 = getelementptr inbounds %struct.btQuadWord* %22, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %989, align 4
+ %990 = bitcast i32 (...)* %927 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %990(%struct.btActionInterface* %923, %struct.btQuadWord* %22, %struct.btQuadWord* %23, %struct.btQuadWord* %color)
+ %991 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %992 = getelementptr inbounds i32 (...)** %991, i32 4 ; [#uses=1]
+ %993 = load i32 (...)** %992, align 4 ; [#uses=1]
+ %994 = bitcast i32 (...)* %993 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %995 = call %struct.btActionInterface* %994(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %996 = getelementptr inbounds %struct.btActionInterface* %995, i32 0, i32 0 ; [#uses=1]
+ %997 = load i32 (...)*** %996, align 4 ; [#uses=1]
+ %998 = getelementptr inbounds i32 (...)** %997, i32 2 ; [#uses=1]
+ %999 = load i32 (...)** %998, align 4 ; [#uses=1]
+ %1000 = load float* %833, align 8 ; [#uses=2]
+ %1001 = fsub float %1000, %928 ; [#uses=3]
+ %1002 = load float* %832, align 4 ; [#uses=2]
+ %1003 = fsub float %1002, %930 ; [#uses=3]
+ %1004 = load float* %831, align 8 ; [#uses=2]
+ %1005 = fsub float %1004, %932 ; [#uses=3]
+ %1006 = load float* %856, align 4 ; [#uses=2]
+ %1007 = fmul float %1006, %1005 ; [#uses=1]
+ %1008 = load float* %859, align 4 ; [#uses=2]
+ %1009 = fmul float %1008, %1003 ; [#uses=1]
+ %1010 = fadd float %1007, %1009 ; [#uses=1]
+ %1011 = load float* %863, align 4 ; [#uses=2]
+ %1012 = fmul float %1011, %1001 ; [#uses=1]
+ %1013 = fadd float %1010, %1012 ; [#uses=1]
+ %1014 = load float* %867, align 4 ; [#uses=2]
+ %1015 = fmul float %1014, %1005 ; [#uses=1]
+ %1016 = load float* %870, align 4 ; [#uses=2]
+ %1017 = fmul float %1016, %1003 ; [#uses=1]
+ %1018 = fadd float %1015, %1017 ; [#uses=1]
+ %1019 = load float* %874, align 4 ; [#uses=2]
+ %1020 = fmul float %1019, %1001 ; [#uses=1]
+ %1021 = fadd float %1018, %1020 ; [#uses=1]
+ %1022 = load float* %878, align 4 ; [#uses=2]
+ %1023 = fmul float %1022, %1005 ; [#uses=1]
+ %1024 = load float* %881, align 4 ; [#uses=2]
+ %1025 = fmul float %1024, %1003 ; [#uses=1]
+ %1026 = fadd float %1023, %1025 ; [#uses=1]
+ %1027 = load float* %885, align 4 ; [#uses=2]
+ %1028 = fmul float %1027, %1001 ; [#uses=1]
+ %1029 = fadd float %1026, %1028 ; [#uses=1]
+ %1030 = fadd float %814, %1013 ; [#uses=1]
+ %1031 = fadd float %812, %1021 ; [#uses=1]
+ %1032 = fadd float %810, %1029 ; [#uses=1]
+ %1033 = getelementptr inbounds %struct.btQuadWord* %21, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1032, float* %1033, align 8
+ %1034 = getelementptr inbounds %struct.btQuadWord* %21, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1031, float* %1034, align 4
+ %1035 = getelementptr inbounds %struct.btQuadWord* %21, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1030, float* %1035, align 8
+ %1036 = getelementptr inbounds %struct.btQuadWord* %21, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1036, align 4
+ %1037 = fmul float %1006, %932 ; [#uses=1]
+ %1038 = fmul float %1008, %930 ; [#uses=1]
+ %1039 = fadd float %1037, %1038 ; [#uses=1]
+ %1040 = fmul float %1011, %928 ; [#uses=1]
+ %1041 = fadd float %1039, %1040 ; [#uses=1]
+ %1042 = fmul float %1014, %932 ; [#uses=1]
+ %1043 = fmul float %1016, %930 ; [#uses=1]
+ %1044 = fadd float %1042, %1043 ; [#uses=1]
+ %1045 = fmul float %1019, %928 ; [#uses=1]
+ %1046 = fadd float %1044, %1045 ; [#uses=1]
+ %1047 = fmul float %1022, %932 ; [#uses=1]
+ %1048 = fmul float %1024, %930 ; [#uses=1]
+ %1049 = fadd float %1047, %1048 ; [#uses=1]
+ %1050 = fmul float %1027, %928 ; [#uses=1]
+ %1051 = fadd float %1049, %1050 ; [#uses=1]
+ %1052 = fadd float %814, %1041 ; [#uses=1]
+ %1053 = fadd float %812, %1046 ; [#uses=1]
+ %1054 = fadd float %810, %1051 ; [#uses=1]
+ %1055 = getelementptr inbounds %struct.btQuadWord* %20, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1054, float* %1055, align 8
+ %1056 = getelementptr inbounds %struct.btQuadWord* %20, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1053, float* %1056, align 4
+ %1057 = getelementptr inbounds %struct.btQuadWord* %20, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1052, float* %1057, align 8
+ %1058 = getelementptr inbounds %struct.btQuadWord* %20, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1058, align 4
+ %1059 = bitcast i32 (...)* %999 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %1059(%struct.btActionInterface* %995, %struct.btQuadWord* %20, %struct.btQuadWord* %21, %struct.btQuadWord* %color)
+ %1060 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %1061 = getelementptr inbounds i32 (...)** %1060, i32 4 ; [#uses=1]
+ %1062 = load i32 (...)** %1061, align 4 ; [#uses=1]
+ %1063 = bitcast i32 (...)* %1062 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1064 = call %struct.btActionInterface* %1063(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %1065 = getelementptr inbounds %struct.btActionInterface* %1064, i32 0, i32 0 ; [#uses=1]
+ %1066 = load i32 (...)*** %1065, align 4 ; [#uses=1]
+ %1067 = getelementptr inbounds i32 (...)** %1066, i32 2 ; [#uses=1]
+ %1068 = load i32 (...)** %1067, align 4 ; [#uses=1]
+ %1069 = fsub float %929, %1000 ; [#uses=3]
+ %1070 = fsub float %931, %1002 ; [#uses=3]
+ %1071 = fsub float %933, %1004 ; [#uses=3]
+ %1072 = load float* %856, align 4 ; [#uses=2]
+ %1073 = fmul float %1072, %1071 ; [#uses=1]
+ %1074 = load float* %859, align 4 ; [#uses=2]
+ %1075 = fmul float %1074, %1070 ; [#uses=1]
+ %1076 = fadd float %1073, %1075 ; [#uses=1]
+ %1077 = load float* %863, align 4 ; [#uses=2]
+ %1078 = fmul float %1077, %1069 ; [#uses=1]
+ %1079 = fadd float %1076, %1078 ; [#uses=1]
+ %1080 = load float* %867, align 4 ; [#uses=2]
+ %1081 = fmul float %1080, %1071 ; [#uses=1]
+ %1082 = load float* %870, align 4 ; [#uses=2]
+ %1083 = fmul float %1082, %1070 ; [#uses=1]
+ %1084 = fadd float %1081, %1083 ; [#uses=1]
+ %1085 = load float* %874, align 4 ; [#uses=2]
+ %1086 = fmul float %1085, %1069 ; [#uses=1]
+ %1087 = fadd float %1084, %1086 ; [#uses=1]
+ %1088 = load float* %878, align 4 ; [#uses=2]
+ %1089 = fmul float %1088, %1071 ; [#uses=1]
+ %1090 = load float* %881, align 4 ; [#uses=2]
+ %1091 = fmul float %1090, %1070 ; [#uses=1]
+ %1092 = fadd float %1089, %1091 ; [#uses=1]
+ %1093 = load float* %885, align 4 ; [#uses=2]
+ %1094 = fmul float %1093, %1069 ; [#uses=1]
+ %1095 = fadd float %1092, %1094 ; [#uses=1]
+ %1096 = fadd float %814, %1079 ; [#uses=1]
+ %1097 = fadd float %812, %1087 ; [#uses=1]
+ %1098 = fadd float %810, %1095 ; [#uses=1]
+ %1099 = getelementptr inbounds %struct.btQuadWord* %19, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1098, float* %1099, align 8
+ %1100 = getelementptr inbounds %struct.btQuadWord* %19, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1097, float* %1100, align 4
+ %1101 = getelementptr inbounds %struct.btQuadWord* %19, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1096, float* %1101, align 8
+ %1102 = getelementptr inbounds %struct.btQuadWord* %19, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1102, align 4
+ %1103 = fmul float %1072, %932 ; [#uses=1]
+ %1104 = fmul float %1074, %930 ; [#uses=1]
+ %1105 = fadd float %1103, %1104 ; [#uses=1]
+ %1106 = fmul float %1077, %928 ; [#uses=1]
+ %1107 = fadd float %1105, %1106 ; [#uses=1]
+ %1108 = fmul float %1080, %932 ; [#uses=1]
+ %1109 = fmul float %1082, %930 ; [#uses=1]
+ %1110 = fadd float %1108, %1109 ; [#uses=1]
+ %1111 = fmul float %1085, %928 ; [#uses=1]
+ %1112 = fadd float %1110, %1111 ; [#uses=1]
+ %1113 = fmul float %1088, %932 ; [#uses=1]
+ %1114 = fmul float %1090, %930 ; [#uses=1]
+ %1115 = fadd float %1113, %1114 ; [#uses=1]
+ %1116 = fmul float %1093, %928 ; [#uses=1]
+ %1117 = fadd float %1115, %1116 ; [#uses=1]
+ %1118 = fadd float %814, %1107 ; [#uses=1]
+ %1119 = fadd float %812, %1112 ; [#uses=1]
+ %1120 = fadd float %810, %1117 ; [#uses=1]
+ %1121 = getelementptr inbounds %struct.btQuadWord* %18, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1120, float* %1121, align 8
+ %1122 = getelementptr inbounds %struct.btQuadWord* %18, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1119, float* %1122, align 4
+ %1123 = getelementptr inbounds %struct.btQuadWord* %18, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1118, float* %1123, align 8
+ %1124 = getelementptr inbounds %struct.btQuadWord* %18, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1124, align 4
+ %1125 = bitcast i32 (...)* %1068 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %1125(%struct.btActionInterface* %1064, %struct.btQuadWord* %18, %struct.btQuadWord* %19, %struct.btQuadWord* %color)
+ %1126 = getelementptr inbounds %struct.btQuadWord* %yaxis, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %1126, align 8
+ %1127 = getelementptr inbounds %struct.btQuadWord* %yaxis, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %1127, align 4
+ %1128 = getelementptr inbounds %struct.btQuadWord* %yaxis, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %1128, align 8
+ %1129 = getelementptr inbounds %struct.btQuadWord* %yaxis, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1129, align 4
+ %1130 = getelementptr inbounds %struct.btQuadWord* %yaxis, i32 0, i32 0, i32 %817 ; [#uses=1]
+ store float 1.000000e+00, float* %1130, align 4
+ %1131 = getelementptr inbounds %struct.btQuadWord* %xaxis, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %1131, align 8
+ %1132 = getelementptr inbounds %struct.btQuadWord* %xaxis, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %1132, align 4
+ %1133 = getelementptr inbounds %struct.btQuadWord* %xaxis, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %1133, align 8
+ %1134 = getelementptr inbounds %struct.btQuadWord* %xaxis, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1134, align 4
+ %1135 = getelementptr inbounds %struct.btQuadWord* %xaxis, i32 0, i32 0, i32 %829 ; [#uses=1]
+ store float 1.000000e+00, float* %1135, align 4
+ %1136 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %1137 = getelementptr inbounds i32 (...)** %1136, i32 4 ; [#uses=1]
+ %1138 = load i32 (...)** %1137, align 4 ; [#uses=1]
+ %1139 = bitcast i32 (...)* %1138 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1140 = call %struct.btActionInterface* %1139(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %1141 = getelementptr inbounds %struct.btActionInterface* %1140, i32 0, i32 0 ; [#uses=1]
+ %1142 = load i32 (...)*** %1141, align 4 ; [#uses=1]
+ %1143 = getelementptr inbounds i32 (...)** %1142, i32 15 ; [#uses=1]
+ %1144 = load i32 (...)** %1143, align 4 ; [#uses=1]
+ %1145 = load float* %856, align 4 ; [#uses=3]
+ %1146 = load float* %1131, align 8 ; [#uses=3]
+ %1147 = fmul float %1145, %1146 ; [#uses=1]
+ %1148 = load float* %859, align 4 ; [#uses=3]
+ %1149 = load float* %1132, align 4 ; [#uses=3]
+ %1150 = fmul float %1148, %1149 ; [#uses=1]
+ %1151 = fadd float %1147, %1150 ; [#uses=1]
+ %1152 = load float* %863, align 4 ; [#uses=3]
+ %1153 = load float* %1133, align 8 ; [#uses=3]
+ %1154 = fmul float %1152, %1153 ; [#uses=1]
+ %1155 = fadd float %1151, %1154 ; [#uses=1]
+ %1156 = load float* %867, align 4 ; [#uses=3]
+ %1157 = fmul float %1156, %1146 ; [#uses=1]
+ %1158 = load float* %870, align 4 ; [#uses=3]
+ %1159 = fmul float %1158, %1149 ; [#uses=1]
+ %1160 = fadd float %1157, %1159 ; [#uses=1]
+ %1161 = load float* %874, align 4 ; [#uses=3]
+ %1162 = fmul float %1161, %1153 ; [#uses=1]
+ %1163 = fadd float %1160, %1162 ; [#uses=1]
+ %1164 = load float* %878, align 4 ; [#uses=3]
+ %1165 = fmul float %1164, %1146 ; [#uses=1]
+ %1166 = load float* %881, align 4 ; [#uses=3]
+ %1167 = fmul float %1166, %1149 ; [#uses=1]
+ %1168 = fadd float %1165, %1167 ; [#uses=1]
+ %1169 = load float* %885, align 4 ; [#uses=3]
+ %1170 = fmul float %1169, %1153 ; [#uses=1]
+ %1171 = fadd float %1168, %1170 ; [#uses=1]
+ %1172 = getelementptr inbounds %struct.btQuadWord* %17, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1171, float* %1172, align 8
+ %1173 = getelementptr inbounds %struct.btQuadWord* %17, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1163, float* %1173, align 4
+ %1174 = getelementptr inbounds %struct.btQuadWord* %17, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1155, float* %1174, align 8
+ %1175 = getelementptr inbounds %struct.btQuadWord* %17, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1175, align 4
+ %1176 = load float* %1126, align 8 ; [#uses=3]
+ %1177 = fmul float %1145, %1176 ; [#uses=1]
+ %1178 = load float* %1127, align 4 ; [#uses=3]
+ %1179 = fmul float %1148, %1178 ; [#uses=1]
+ %1180 = fadd float %1177, %1179 ; [#uses=1]
+ %1181 = load float* %1128, align 8 ; [#uses=3]
+ %1182 = fmul float %1152, %1181 ; [#uses=1]
+ %1183 = fadd float %1180, %1182 ; [#uses=1]
+ %1184 = fmul float %1156, %1176 ; [#uses=1]
+ %1185 = fmul float %1158, %1178 ; [#uses=1]
+ %1186 = fadd float %1184, %1185 ; [#uses=1]
+ %1187 = fmul float %1161, %1181 ; [#uses=1]
+ %1188 = fadd float %1186, %1187 ; [#uses=1]
+ %1189 = fmul float %1164, %1176 ; [#uses=1]
+ %1190 = fmul float %1166, %1178 ; [#uses=1]
+ %1191 = fadd float %1189, %1190 ; [#uses=1]
+ %1192 = fmul float %1169, %1181 ; [#uses=1]
+ %1193 = fadd float %1191, %1192 ; [#uses=1]
+ %1194 = getelementptr inbounds %struct.btQuadWord* %16, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1193, float* %1194, align 8
+ %1195 = getelementptr inbounds %struct.btQuadWord* %16, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1188, float* %1195, align 4
+ %1196 = getelementptr inbounds %struct.btQuadWord* %16, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1183, float* %1196, align 8
+ %1197 = getelementptr inbounds %struct.btQuadWord* %16, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1197, align 4
+ %1198 = fmul float %1145, %932 ; [#uses=1]
+ %1199 = fmul float %1148, %930 ; [#uses=1]
+ %1200 = fadd float %1198, %1199 ; [#uses=1]
+ %1201 = fmul float %1152, %928 ; [#uses=1]
+ %1202 = fadd float %1200, %1201 ; [#uses=1]
+ %1203 = fmul float %1156, %932 ; [#uses=1]
+ %1204 = fmul float %1158, %930 ; [#uses=1]
+ %1205 = fadd float %1203, %1204 ; [#uses=1]
+ %1206 = fmul float %1161, %928 ; [#uses=1]
+ %1207 = fadd float %1205, %1206 ; [#uses=1]
+ %1208 = fmul float %1164, %932 ; [#uses=1]
+ %1209 = fmul float %1166, %930 ; [#uses=1]
+ %1210 = fadd float %1208, %1209 ; [#uses=1]
+ %1211 = fmul float %1169, %928 ; [#uses=1]
+ %1212 = fadd float %1210, %1211 ; [#uses=1]
+ %1213 = fsub float %814, %1202 ; [#uses=1]
+ %1214 = fsub float %812, %1207 ; [#uses=1]
+ %1215 = fsub float %810, %1212 ; [#uses=1]
+ %1216 = getelementptr inbounds %struct.btQuadWord* %15, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1215, float* %1216, align 8
+ %1217 = getelementptr inbounds %struct.btQuadWord* %15, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1214, float* %1217, align 4
+ %1218 = getelementptr inbounds %struct.btQuadWord* %15, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1213, float* %1218, align 8
+ %1219 = getelementptr inbounds %struct.btQuadWord* %15, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1219, align 4
+ %1220 = bitcast i32 (...)* %1144 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*, float, float, float, float, %struct.btQuadWord*, i8, float)* ; [#uses=1]
+ call void %1220(%struct.btActionInterface* %1140, %struct.btQuadWord* %15, %struct.btQuadWord* %16, %struct.btQuadWord* %17, float %805, float %805, float 0.000000e+00, float 0x401921FB60000000, %struct.btQuadWord* %color, i8 zeroext 0, float 1.000000e+01)
+ ret void
+
+bb30: ; preds = %entry
+ %1221 = bitcast %struct.btCollisionShape* %shape to %struct.btCapsuleShape* ; [#uses=1]
+ %1222 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 4, i32 1 ; [#uses=1]
+ %1223 = load i32* %1222, align 4 ; [#uses=4]
+ %1224 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 0, i32 0 ; [#uses=4]
+ %1225 = load i32 (...)*** %1224, align 4 ; [#uses=1]
+ %1226 = getelementptr inbounds i32 (...)** %1225, i32 21 ; [#uses=1]
+ %1227 = load i32 (...)** %1226, align 4 ; [#uses=1]
+ %1228 = bitcast i32 (...)* %1227 to float (%struct.btCapsuleShape*)* ; [#uses=1]
+ %1229 = call float %1228(%struct.btCapsuleShape* %1221) ; [#uses=5]
+ %1230 = getelementptr inbounds %struct.btQuadWord* %14, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1231 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 2, i32 1 ; [#uses=1]
+ %1232 = bitcast i32* %1231 to float* ; [#uses=1]
+ %1233 = load float* %1232, align 4 ; [#uses=1]
+ %1234 = getelementptr inbounds %struct.btQuadWord* %14, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1235 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 2, i32 2 ; [#uses=1]
+ %1236 = bitcast i8** %1235 to float* ; [#uses=1]
+ %1237 = load float* %1236, align 4 ; [#uses=1]
+ %1238 = getelementptr inbounds %struct.btQuadWord* %14, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1239 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 3 ; [#uses=1]
+ %1240 = bitcast %struct.btCollisionShape* %1239 to float* ; [#uses=1]
+ %1241 = load float* %1240, align 4 ; [#uses=1]
+ %1242 = getelementptr inbounds %struct.btQuadWord* %14, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1243 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 3, i32 1 ; [#uses=1]
+ %1244 = bitcast i32* %1243 to float* ; [#uses=1]
+ %1245 = load float* %1244, align 4 ; [#uses=1]
+ store float %1245, float* %1242, align 4
+ %1246 = load i32 (...)*** %1224, align 4 ; [#uses=1]
+ %1247 = getelementptr inbounds i32 (...)** %1246, i32 11 ; [#uses=1]
+ %1248 = load i32 (...)** %1247, align 4 ; [#uses=1]
+ %1249 = bitcast %struct.btCollisionShape* %shape to %struct.btConvexInternalShape* ; [#uses=3]
+ %1250 = bitcast i32 (...)* %1248 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %1251 = call float %1250(%struct.btConvexInternalShape* %1249) ; [#uses=1]
+ %1252 = load i32 (...)*** %1224, align 4 ; [#uses=1]
+ %1253 = getelementptr inbounds i32 (...)** %1252, i32 11 ; [#uses=1]
+ %1254 = load i32 (...)** %1253, align 4 ; [#uses=1]
+ %1255 = bitcast i32 (...)* %1254 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %1256 = call float %1255(%struct.btConvexInternalShape* %1249) ; [#uses=1]
+ %1257 = load i32 (...)*** %1224, align 4 ; [#uses=1]
+ %1258 = getelementptr inbounds i32 (...)** %1257, i32 11 ; [#uses=1]
+ %1259 = load i32 (...)** %1258, align 4 ; [#uses=1]
+ %1260 = bitcast i32 (...)* %1259 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %1261 = call float %1260(%struct.btConvexInternalShape* %1249) ; [#uses=1]
+ %1262 = fadd float %1233, %1261 ; [#uses=1]
+ store float %1262, float* %1230, align 8
+ %1263 = fadd float %1237, %1256 ; [#uses=1]
+ store float %1263, float* %1234, align 4
+ %1264 = fadd float %1241, %1251 ; [#uses=1]
+ store float %1264, float* %1238, align 8
+ %1265 = getelementptr inbounds %struct.btQuadWord* %14, i32 0, i32 0, i32 %1223 ; [#uses=1]
+ %1266 = load float* %1265, align 4 ; [#uses=1]
+ %1267 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1268 = load float* %1267, align 4 ; [#uses=6]
+ %1269 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1270 = load float* %1269, align 4 ; [#uses=6]
+ %1271 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1272 = load float* %1271, align 4 ; [#uses=6]
+ %1273 = getelementptr inbounds %struct.btQuadWord* %offsetHeight41, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %1273, align 8
+ %1274 = getelementptr inbounds %struct.btQuadWord* %offsetHeight41, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %1274, align 4
+ %1275 = getelementptr inbounds %struct.btQuadWord* %offsetHeight41, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %1275, align 8
+ %1276 = getelementptr inbounds %struct.btQuadWord* %offsetHeight41, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1276, align 4
+ %1277 = getelementptr inbounds %struct.btQuadWord* %offsetHeight41, i32 0, i32 0, i32 %1223 ; [#uses=1]
+ store float %1266, float* %1277, align 4
+ %1278 = getelementptr inbounds %struct.btQuadWord* %offsetRadius43, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %1278, align 8
+ %1279 = getelementptr inbounds %struct.btQuadWord* %offsetRadius43, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %1279, align 4
+ %1280 = getelementptr inbounds %struct.btQuadWord* %offsetRadius43, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %1280, align 8
+ %1281 = getelementptr inbounds %struct.btQuadWord* %offsetRadius43, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1281, align 4
+ %1282 = add nsw i32 %1223, 1 ; [#uses=1]
+ %1283 = srem i32 %1282, 3 ; [#uses=2]
+ %1284 = getelementptr inbounds %struct.btQuadWord* %offsetRadius43, i32 0, i32 0, i32 %1283 ; [#uses=1]
+ store float %1229, float* %1284, align 4
+ %1285 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %1286 = getelementptr inbounds i32 (...)** %1285, i32 4 ; [#uses=1]
+ %1287 = load i32 (...)** %1286, align 4 ; [#uses=1]
+ %1288 = bitcast i32 (...)* %1287 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1289 = call %struct.btActionInterface* %1288(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %1290 = getelementptr inbounds %struct.btActionInterface* %1289, i32 0, i32 0 ; [#uses=1]
+ %1291 = load i32 (...)*** %1290, align 4 ; [#uses=1]
+ %1292 = getelementptr inbounds i32 (...)** %1291, i32 2 ; [#uses=1]
+ %1293 = load i32 (...)** %1292, align 4 ; [#uses=1]
+ %1294 = load float* %1275, align 8 ; [#uses=10]
+ %1295 = load float* %1274, align 4 ; [#uses=10]
+ %1296 = load float* %1273, align 8 ; [#uses=10]
+ %1297 = load float* %1280, align 8 ; [#uses=4]
+ %1298 = fsub float %1297, %1294 ; [#uses=3]
+ %1299 = load float* %1279, align 4 ; [#uses=4]
+ %1300 = fsub float %1299, %1295 ; [#uses=3]
+ %1301 = load float* %1278, align 8 ; [#uses=4]
+ %1302 = fsub float %1301, %1296 ; [#uses=3]
+ %1303 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=4]
+ %1304 = load float* %1303, align 4 ; [#uses=2]
+ %1305 = fmul float %1304, %1302 ; [#uses=1]
+ %1306 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=4]
+ %1307 = load float* %1306, align 4 ; [#uses=2]
+ %1308 = fmul float %1307, %1300 ; [#uses=1]
+ %1309 = fadd float %1305, %1308 ; [#uses=1]
+ %1310 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=4]
+ %1311 = load float* %1310, align 4 ; [#uses=2]
+ %1312 = fmul float %1311, %1298 ; [#uses=1]
+ %1313 = fadd float %1309, %1312 ; [#uses=1]
+ %1314 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=4]
+ %1315 = load float* %1314, align 4 ; [#uses=2]
+ %1316 = fmul float %1315, %1302 ; [#uses=1]
+ %1317 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=4]
+ %1318 = load float* %1317, align 4 ; [#uses=2]
+ %1319 = fmul float %1318, %1300 ; [#uses=1]
+ %1320 = fadd float %1316, %1319 ; [#uses=1]
+ %1321 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=4]
+ %1322 = load float* %1321, align 4 ; [#uses=2]
+ %1323 = fmul float %1322, %1298 ; [#uses=1]
+ %1324 = fadd float %1320, %1323 ; [#uses=1]
+ %1325 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %1326 = load float* %1325, align 4 ; [#uses=2]
+ %1327 = fmul float %1326, %1302 ; [#uses=1]
+ %1328 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=4]
+ %1329 = load float* %1328, align 4 ; [#uses=2]
+ %1330 = fmul float %1329, %1300 ; [#uses=1]
+ %1331 = fadd float %1327, %1330 ; [#uses=1]
+ %1332 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=4]
+ %1333 = load float* %1332, align 4 ; [#uses=2]
+ %1334 = fmul float %1333, %1298 ; [#uses=1]
+ %1335 = fadd float %1331, %1334 ; [#uses=1]
+ %1336 = fadd float %1272, %1313 ; [#uses=1]
+ %1337 = fadd float %1270, %1324 ; [#uses=1]
+ %1338 = fadd float %1268, %1335 ; [#uses=1]
+ %1339 = getelementptr inbounds %struct.btQuadWord* %13, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1338, float* %1339, align 8
+ %1340 = getelementptr inbounds %struct.btQuadWord* %13, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1337, float* %1340, align 4
+ %1341 = getelementptr inbounds %struct.btQuadWord* %13, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1336, float* %1341, align 8
+ %1342 = getelementptr inbounds %struct.btQuadWord* %13, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1342, align 4
+ %1343 = fadd float %1294, %1297 ; [#uses=3]
+ %1344 = fadd float %1295, %1299 ; [#uses=3]
+ %1345 = fadd float %1296, %1301 ; [#uses=3]
+ %1346 = fmul float %1304, %1345 ; [#uses=1]
+ %1347 = fmul float %1307, %1344 ; [#uses=1]
+ %1348 = fadd float %1346, %1347 ; [#uses=1]
+ %1349 = fmul float %1311, %1343 ; [#uses=1]
+ %1350 = fadd float %1348, %1349 ; [#uses=1]
+ %1351 = fmul float %1315, %1345 ; [#uses=1]
+ %1352 = fmul float %1318, %1344 ; [#uses=1]
+ %1353 = fadd float %1351, %1352 ; [#uses=1]
+ %1354 = fmul float %1322, %1343 ; [#uses=1]
+ %1355 = fadd float %1353, %1354 ; [#uses=1]
+ %1356 = fmul float %1326, %1345 ; [#uses=1]
+ %1357 = fmul float %1329, %1344 ; [#uses=1]
+ %1358 = fadd float %1356, %1357 ; [#uses=1]
+ %1359 = fmul float %1333, %1343 ; [#uses=1]
+ %1360 = fadd float %1358, %1359 ; [#uses=1]
+ %1361 = fadd float %1272, %1350 ; [#uses=1]
+ %1362 = fadd float %1270, %1355 ; [#uses=1]
+ %1363 = fadd float %1268, %1360 ; [#uses=1]
+ %1364 = getelementptr inbounds %struct.btQuadWord* %12, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1363, float* %1364, align 8
+ %1365 = getelementptr inbounds %struct.btQuadWord* %12, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1362, float* %1365, align 4
+ %1366 = getelementptr inbounds %struct.btQuadWord* %12, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1361, float* %1366, align 8
+ %1367 = getelementptr inbounds %struct.btQuadWord* %12, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1367, align 4
+ %1368 = bitcast i32 (...)* %1293 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %1368(%struct.btActionInterface* %1289, %struct.btQuadWord* %12, %struct.btQuadWord* %13, %struct.btQuadWord* %color)
+ %1369 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %1370 = getelementptr inbounds i32 (...)** %1369, i32 4 ; [#uses=1]
+ %1371 = load i32 (...)** %1370, align 4 ; [#uses=1]
+ %1372 = bitcast i32 (...)* %1371 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1373 = call %struct.btActionInterface* %1372(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %1374 = getelementptr inbounds %struct.btActionInterface* %1373, i32 0, i32 0 ; [#uses=1]
+ %1375 = load i32 (...)*** %1374, align 4 ; [#uses=1]
+ %1376 = getelementptr inbounds i32 (...)** %1375, i32 2 ; [#uses=1]
+ %1377 = load i32 (...)** %1376, align 4 ; [#uses=1]
+ %1378 = fsub float -0.000000e+00, %1294 ; [#uses=1]
+ %1379 = fsub float -0.000000e+00, %1295 ; [#uses=1]
+ %1380 = fsub float -0.000000e+00, %1296 ; [#uses=1]
+ %1381 = fsub float %1378, %1297 ; [#uses=3]
+ %1382 = fsub float %1379, %1299 ; [#uses=3]
+ %1383 = fsub float %1380, %1301 ; [#uses=3]
+ %1384 = load float* %1303, align 4 ; [#uses=2]
+ %1385 = fmul float %1384, %1383 ; [#uses=1]
+ %1386 = load float* %1306, align 4 ; [#uses=2]
+ %1387 = fmul float %1386, %1382 ; [#uses=1]
+ %1388 = fadd float %1385, %1387 ; [#uses=1]
+ %1389 = load float* %1310, align 4 ; [#uses=2]
+ %1390 = fmul float %1389, %1381 ; [#uses=1]
+ %1391 = fadd float %1388, %1390 ; [#uses=1]
+ %1392 = load float* %1314, align 4 ; [#uses=2]
+ %1393 = fmul float %1392, %1383 ; [#uses=1]
+ %1394 = load float* %1317, align 4 ; [#uses=2]
+ %1395 = fmul float %1394, %1382 ; [#uses=1]
+ %1396 = fadd float %1393, %1395 ; [#uses=1]
+ %1397 = load float* %1321, align 4 ; [#uses=2]
+ %1398 = fmul float %1397, %1381 ; [#uses=1]
+ %1399 = fadd float %1396, %1398 ; [#uses=1]
+ %1400 = load float* %1325, align 4 ; [#uses=2]
+ %1401 = fmul float %1400, %1383 ; [#uses=1]
+ %1402 = load float* %1328, align 4 ; [#uses=2]
+ %1403 = fmul float %1402, %1382 ; [#uses=1]
+ %1404 = fadd float %1401, %1403 ; [#uses=1]
+ %1405 = load float* %1332, align 4 ; [#uses=2]
+ %1406 = fmul float %1405, %1381 ; [#uses=1]
+ %1407 = fadd float %1404, %1406 ; [#uses=1]
+ %1408 = fadd float %1272, %1391 ; [#uses=1]
+ %1409 = fadd float %1270, %1399 ; [#uses=1]
+ %1410 = fadd float %1268, %1407 ; [#uses=1]
+ %1411 = getelementptr inbounds %struct.btQuadWord* %11, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1410, float* %1411, align 8
+ %1412 = getelementptr inbounds %struct.btQuadWord* %11, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1409, float* %1412, align 4
+ %1413 = getelementptr inbounds %struct.btQuadWord* %11, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1408, float* %1413, align 8
+ %1414 = getelementptr inbounds %struct.btQuadWord* %11, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1414, align 4
+ %1415 = fsub float %1294, %1297 ; [#uses=3]
+ %1416 = fsub float %1295, %1299 ; [#uses=3]
+ %1417 = fsub float %1296, %1301 ; [#uses=3]
+ %1418 = fmul float %1384, %1417 ; [#uses=1]
+ %1419 = fmul float %1386, %1416 ; [#uses=1]
+ %1420 = fadd float %1418, %1419 ; [#uses=1]
+ %1421 = fmul float %1389, %1415 ; [#uses=1]
+ %1422 = fadd float %1420, %1421 ; [#uses=1]
+ %1423 = fmul float %1392, %1417 ; [#uses=1]
+ %1424 = fmul float %1394, %1416 ; [#uses=1]
+ %1425 = fadd float %1423, %1424 ; [#uses=1]
+ %1426 = fmul float %1397, %1415 ; [#uses=1]
+ %1427 = fadd float %1425, %1426 ; [#uses=1]
+ %1428 = fmul float %1400, %1417 ; [#uses=1]
+ %1429 = fmul float %1402, %1416 ; [#uses=1]
+ %1430 = fadd float %1428, %1429 ; [#uses=1]
+ %1431 = fmul float %1405, %1415 ; [#uses=1]
+ %1432 = fadd float %1430, %1431 ; [#uses=1]
+ %1433 = fadd float %1272, %1422 ; [#uses=1]
+ %1434 = fadd float %1270, %1427 ; [#uses=1]
+ %1435 = fadd float %1268, %1432 ; [#uses=1]
+ %1436 = getelementptr inbounds %struct.btQuadWord* %10, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1435, float* %1436, align 8
+ %1437 = getelementptr inbounds %struct.btQuadWord* %10, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1434, float* %1437, align 4
+ %1438 = getelementptr inbounds %struct.btQuadWord* %10, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1433, float* %1438, align 8
+ %1439 = getelementptr inbounds %struct.btQuadWord* %10, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1439, align 4
+ %1440 = bitcast i32 (...)* %1377 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %1440(%struct.btActionInterface* %1373, %struct.btQuadWord* %10, %struct.btQuadWord* %11, %struct.btQuadWord* %color)
+ %1441 = getelementptr inbounds %struct.btQuadWord* %yaxis45, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %1441, align 8
+ %1442 = getelementptr inbounds %struct.btQuadWord* %yaxis45, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %1442, align 4
+ %1443 = getelementptr inbounds %struct.btQuadWord* %yaxis45, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %1443, align 8
+ %1444 = getelementptr inbounds %struct.btQuadWord* %yaxis45, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1444, align 4
+ %1445 = getelementptr inbounds %struct.btQuadWord* %yaxis45, i32 0, i32 0, i32 %1223 ; [#uses=1]
+ store float 1.000000e+00, float* %1445, align 4
+ %1446 = getelementptr inbounds %struct.btQuadWord* %xaxis47, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %1446, align 8
+ %1447 = getelementptr inbounds %struct.btQuadWord* %xaxis47, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %1447, align 4
+ %1448 = getelementptr inbounds %struct.btQuadWord* %xaxis47, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %1448, align 8
+ %1449 = getelementptr inbounds %struct.btQuadWord* %xaxis47, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1449, align 4
+ %1450 = getelementptr inbounds %struct.btQuadWord* %xaxis47, i32 0, i32 0, i32 %1283 ; [#uses=1]
+ store float 1.000000e+00, float* %1450, align 4
+ %1451 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %1452 = getelementptr inbounds i32 (...)** %1451, i32 4 ; [#uses=1]
+ %1453 = load i32 (...)** %1452, align 4 ; [#uses=1]
+ %1454 = bitcast i32 (...)* %1453 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1455 = call %struct.btActionInterface* %1454(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %1456 = getelementptr inbounds %struct.btActionInterface* %1455, i32 0, i32 0 ; [#uses=1]
+ %1457 = load i32 (...)*** %1456, align 4 ; [#uses=1]
+ %1458 = getelementptr inbounds i32 (...)** %1457, i32 15 ; [#uses=1]
+ %1459 = load i32 (...)** %1458, align 4 ; [#uses=1]
+ %1460 = load float* %1303, align 4 ; [#uses=3]
+ %1461 = load float* %1446, align 8 ; [#uses=6]
+ %1462 = fmul float %1460, %1461 ; [#uses=1]
+ %1463 = load float* %1306, align 4 ; [#uses=3]
+ %1464 = load float* %1447, align 4 ; [#uses=6]
+ %1465 = fmul float %1463, %1464 ; [#uses=1]
+ %1466 = fadd float %1462, %1465 ; [#uses=1]
+ %1467 = load float* %1310, align 4 ; [#uses=3]
+ %1468 = load float* %1448, align 8 ; [#uses=6]
+ %1469 = fmul float %1467, %1468 ; [#uses=1]
+ %1470 = fadd float %1466, %1469 ; [#uses=1]
+ %1471 = load float* %1314, align 4 ; [#uses=3]
+ %1472 = fmul float %1471, %1461 ; [#uses=1]
+ %1473 = load float* %1317, align 4 ; [#uses=3]
+ %1474 = fmul float %1473, %1464 ; [#uses=1]
+ %1475 = fadd float %1472, %1474 ; [#uses=1]
+ %1476 = load float* %1321, align 4 ; [#uses=3]
+ %1477 = fmul float %1476, %1468 ; [#uses=1]
+ %1478 = fadd float %1475, %1477 ; [#uses=1]
+ %1479 = load float* %1325, align 4 ; [#uses=3]
+ %1480 = fmul float %1479, %1461 ; [#uses=1]
+ %1481 = load float* %1328, align 4 ; [#uses=3]
+ %1482 = fmul float %1481, %1464 ; [#uses=1]
+ %1483 = fadd float %1480, %1482 ; [#uses=1]
+ %1484 = load float* %1332, align 4 ; [#uses=3]
+ %1485 = fmul float %1484, %1468 ; [#uses=1]
+ %1486 = fadd float %1483, %1485 ; [#uses=1]
+ %1487 = getelementptr inbounds %struct.btQuadWord* %9, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1486, float* %1487, align 8
+ %1488 = getelementptr inbounds %struct.btQuadWord* %9, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1478, float* %1488, align 4
+ %1489 = getelementptr inbounds %struct.btQuadWord* %9, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1470, float* %1489, align 8
+ %1490 = getelementptr inbounds %struct.btQuadWord* %9, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1490, align 4
+ %1491 = load float* %1441, align 8 ; [#uses=6]
+ %1492 = fmul float %1460, %1491 ; [#uses=1]
+ %1493 = load float* %1442, align 4 ; [#uses=6]
+ %1494 = fmul float %1463, %1493 ; [#uses=1]
+ %1495 = fadd float %1492, %1494 ; [#uses=1]
+ %1496 = load float* %1443, align 8 ; [#uses=6]
+ %1497 = fmul float %1467, %1496 ; [#uses=1]
+ %1498 = fadd float %1495, %1497 ; [#uses=1]
+ %1499 = fmul float %1471, %1491 ; [#uses=1]
+ %1500 = fmul float %1473, %1493 ; [#uses=1]
+ %1501 = fadd float %1499, %1500 ; [#uses=1]
+ %1502 = fmul float %1476, %1496 ; [#uses=1]
+ %1503 = fadd float %1501, %1502 ; [#uses=1]
+ %1504 = fmul float %1479, %1491 ; [#uses=1]
+ %1505 = fmul float %1481, %1493 ; [#uses=1]
+ %1506 = fadd float %1504, %1505 ; [#uses=1]
+ %1507 = fmul float %1484, %1496 ; [#uses=1]
+ %1508 = fadd float %1506, %1507 ; [#uses=1]
+ %1509 = getelementptr inbounds %struct.btQuadWord* %8, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1508, float* %1509, align 8
+ %1510 = getelementptr inbounds %struct.btQuadWord* %8, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1503, float* %1510, align 4
+ %1511 = getelementptr inbounds %struct.btQuadWord* %8, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1498, float* %1511, align 8
+ %1512 = getelementptr inbounds %struct.btQuadWord* %8, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1512, align 4
+ %1513 = fmul float %1460, %1296 ; [#uses=1]
+ %1514 = fmul float %1463, %1295 ; [#uses=1]
+ %1515 = fadd float %1513, %1514 ; [#uses=1]
+ %1516 = fmul float %1467, %1294 ; [#uses=1]
+ %1517 = fadd float %1515, %1516 ; [#uses=1]
+ %1518 = fmul float %1471, %1296 ; [#uses=1]
+ %1519 = fmul float %1473, %1295 ; [#uses=1]
+ %1520 = fadd float %1518, %1519 ; [#uses=1]
+ %1521 = fmul float %1476, %1294 ; [#uses=1]
+ %1522 = fadd float %1520, %1521 ; [#uses=1]
+ %1523 = fmul float %1479, %1296 ; [#uses=1]
+ %1524 = fmul float %1481, %1295 ; [#uses=1]
+ %1525 = fadd float %1523, %1524 ; [#uses=1]
+ %1526 = fmul float %1484, %1294 ; [#uses=1]
+ %1527 = fadd float %1525, %1526 ; [#uses=1]
+ %1528 = fsub float %1272, %1517 ; [#uses=1]
+ %1529 = fsub float %1270, %1522 ; [#uses=1]
+ %1530 = fsub float %1268, %1527 ; [#uses=1]
+ %1531 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1530, float* %1531, align 8
+ %1532 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1529, float* %1532, align 4
+ %1533 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1528, float* %1533, align 8
+ %1534 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1534, align 4
+ %1535 = bitcast i32 (...)* %1459 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*, float, float, float, float, %struct.btQuadWord*, i8, float)* ; [#uses=1]
+ call void %1535(%struct.btActionInterface* %1455, %struct.btQuadWord* %7, %struct.btQuadWord* %8, %struct.btQuadWord* %9, float %1229, float %1229, float 0.000000e+00, float 0x401921FB60000000, %struct.btQuadWord* %color, i8 zeroext 0, float 1.000000e+01)
+ %1536 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %1537 = getelementptr inbounds i32 (...)** %1536, i32 4 ; [#uses=1]
+ %1538 = load i32 (...)** %1537, align 4 ; [#uses=1]
+ %1539 = bitcast i32 (...)* %1538 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1540 = call %struct.btActionInterface* %1539(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %1541 = getelementptr inbounds %struct.btActionInterface* %1540, i32 0, i32 0 ; [#uses=1]
+ %1542 = load i32 (...)*** %1541, align 4 ; [#uses=1]
+ %1543 = getelementptr inbounds i32 (...)** %1542, i32 15 ; [#uses=1]
+ %1544 = load i32 (...)** %1543, align 4 ; [#uses=1]
+ %1545 = load float* %1303, align 4 ; [#uses=3]
+ %1546 = fmul float %1545, %1461 ; [#uses=1]
+ %1547 = load float* %1306, align 4 ; [#uses=3]
+ %1548 = fmul float %1547, %1464 ; [#uses=1]
+ %1549 = fadd float %1546, %1548 ; [#uses=1]
+ %1550 = load float* %1310, align 4 ; [#uses=3]
+ %1551 = fmul float %1550, %1468 ; [#uses=1]
+ %1552 = fadd float %1549, %1551 ; [#uses=1]
+ %1553 = load float* %1314, align 4 ; [#uses=3]
+ %1554 = fmul float %1553, %1461 ; [#uses=1]
+ %1555 = load float* %1317, align 4 ; [#uses=3]
+ %1556 = fmul float %1555, %1464 ; [#uses=1]
+ %1557 = fadd float %1554, %1556 ; [#uses=1]
+ %1558 = load float* %1321, align 4 ; [#uses=3]
+ %1559 = fmul float %1558, %1468 ; [#uses=1]
+ %1560 = fadd float %1557, %1559 ; [#uses=1]
+ %1561 = load float* %1325, align 4 ; [#uses=3]
+ %1562 = fmul float %1561, %1461 ; [#uses=1]
+ %1563 = load float* %1328, align 4 ; [#uses=3]
+ %1564 = fmul float %1563, %1464 ; [#uses=1]
+ %1565 = fadd float %1562, %1564 ; [#uses=1]
+ %1566 = load float* %1332, align 4 ; [#uses=3]
+ %1567 = fmul float %1566, %1468 ; [#uses=1]
+ %1568 = fadd float %1565, %1567 ; [#uses=1]
+ %1569 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1568, float* %1569, align 8
+ %1570 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1560, float* %1570, align 4
+ %1571 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1552, float* %1571, align 8
+ %1572 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1572, align 4
+ %1573 = fmul float %1545, %1491 ; [#uses=1]
+ %1574 = fmul float %1547, %1493 ; [#uses=1]
+ %1575 = fadd float %1573, %1574 ; [#uses=1]
+ %1576 = fmul float %1550, %1496 ; [#uses=1]
+ %1577 = fadd float %1575, %1576 ; [#uses=1]
+ %1578 = fmul float %1553, %1491 ; [#uses=1]
+ %1579 = fmul float %1555, %1493 ; [#uses=1]
+ %1580 = fadd float %1578, %1579 ; [#uses=1]
+ %1581 = fmul float %1558, %1496 ; [#uses=1]
+ %1582 = fadd float %1580, %1581 ; [#uses=1]
+ %1583 = fmul float %1561, %1491 ; [#uses=1]
+ %1584 = fmul float %1563, %1493 ; [#uses=1]
+ %1585 = fadd float %1583, %1584 ; [#uses=1]
+ %1586 = fmul float %1566, %1496 ; [#uses=1]
+ %1587 = fadd float %1585, %1586 ; [#uses=1]
+ %1588 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1587, float* %1588, align 8
+ %1589 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1582, float* %1589, align 4
+ %1590 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1577, float* %1590, align 8
+ %1591 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1591, align 4
+ %1592 = fmul float %1545, %1296 ; [#uses=1]
+ %1593 = fmul float %1547, %1295 ; [#uses=1]
+ %1594 = fadd float %1592, %1593 ; [#uses=1]
+ %1595 = fmul float %1550, %1294 ; [#uses=1]
+ %1596 = fadd float %1594, %1595 ; [#uses=1]
+ %1597 = fmul float %1553, %1296 ; [#uses=1]
+ %1598 = fmul float %1555, %1295 ; [#uses=1]
+ %1599 = fadd float %1597, %1598 ; [#uses=1]
+ %1600 = fmul float %1558, %1294 ; [#uses=1]
+ %1601 = fadd float %1599, %1600 ; [#uses=1]
+ %1602 = fmul float %1561, %1296 ; [#uses=1]
+ %1603 = fmul float %1563, %1295 ; [#uses=1]
+ %1604 = fadd float %1602, %1603 ; [#uses=1]
+ %1605 = fmul float %1566, %1294 ; [#uses=1]
+ %1606 = fadd float %1604, %1605 ; [#uses=1]
+ %1607 = fadd float %1272, %1596 ; [#uses=1]
+ %1608 = fadd float %1270, %1601 ; [#uses=1]
+ %1609 = fadd float %1268, %1606 ; [#uses=1]
+ %1610 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1609, float* %1610, align 8
+ %1611 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1608, float* %1611, align 4
+ %1612 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1607, float* %1612, align 8
+ %1613 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1613, align 4
+ %1614 = bitcast i32 (...)* %1544 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*, float, float, float, float, %struct.btQuadWord*, i8, float)* ; [#uses=1]
+ call void %1614(%struct.btActionInterface* %1540, %struct.btQuadWord* %4, %struct.btQuadWord* %5, %struct.btQuadWord* %6, float %1229, float %1229, float 0.000000e+00, float 0x401921FB60000000, %struct.btQuadWord* %color, i8 zeroext 0, float 1.000000e+01)
+ ret void
+
+bb48: ; preds = %entry
+ %1615 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 5, i32 1 ; [#uses=1]
+ %1616 = bitcast i32* %1615 to float* ; [#uses=1]
+ %1617 = load float* %1616, align 4 ; [#uses=3]
+ %1618 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 4 ; [#uses=1]
+ %1619 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 4, i32 2 ; [#uses=1]
+ %1620 = bitcast i8** %1619 to float* ; [#uses=1]
+ %1621 = load float* %1620, align 4 ; [#uses=7]
+ %1622 = fmul float %1621, %1617 ; [#uses=4]
+ %1623 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 4, i32 1 ; [#uses=1]
+ %1624 = bitcast i32* %1623 to float* ; [#uses=1]
+ %1625 = load float* %1624, align 4 ; [#uses=7]
+ %1626 = fmul float %1625, %1617 ; [#uses=4]
+ %1627 = bitcast %struct.btCollisionShape* %1618 to float* ; [#uses=1]
+ %1628 = load float* %1627, align 4 ; [#uses=6]
+ %1629 = fmul float %1628, %1617 ; [#uses=4]
+ %1630 = call float @fabsf(float %1621) nounwind readnone ; [#uses=1]
+ %1631 = fcmp ogt float %1630, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %1631, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb48
+ %1632 = fmul float %1625, %1625 ; [#uses=1]
+ %1633 = fmul float %1621, %1621 ; [#uses=1]
+ %1634 = fadd float %1632, %1633 ; [#uses=2]
+ %1635 = call float @sqrtf(float %1634) nounwind readonly ; [#uses=1]
+ %1636 = fdiv float 1.000000e+00, %1635 ; [#uses=3]
+ %1637 = fsub float -0.000000e+00, %1621 ; [#uses=1]
+ %1638 = fmul float %1636, %1637 ; [#uses=2]
+ %1639 = fmul float %1625, %1636 ; [#uses=2]
+ %1640 = fmul float %1634, %1636 ; [#uses=1]
+ %1641 = fsub float -0.000000e+00, %1628 ; [#uses=1]
+ %1642 = fmul float %1639, %1641 ; [#uses=1]
+ %1643 = fmul float %1628, %1638 ; [#uses=1]
+ %phitmp = fmul float %1639, 1.000000e+02 ; [#uses=1]
+ br label %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+
+bb1.i: ; preds = %bb48
+ %1644 = fmul float %1628, %1628 ; [#uses=1]
+ %1645 = fmul float %1625, %1625 ; [#uses=1]
+ %1646 = fadd float %1644, %1645 ; [#uses=2]
+ %1647 = call float @sqrtf(float %1646) nounwind readonly ; [#uses=1]
+ %1648 = fdiv float 1.000000e+00, %1647 ; [#uses=3]
+ %1649 = fsub float -0.000000e+00, %1625 ; [#uses=1]
+ %1650 = fmul float %1648, %1649 ; [#uses=2]
+ %1651 = fmul float %1628, %1648 ; [#uses=2]
+ %1652 = fsub float -0.000000e+00, %1621 ; [#uses=1]
+ %1653 = fmul float %1651, %1652 ; [#uses=1]
+ %1654 = fmul float %1621, %1650 ; [#uses=1]
+ %1655 = fmul float %1646, %1648 ; [#uses=1]
+ %phitmp498 = fmul float %1650, 1.000000e+02 ; [#uses=1]
+ br label %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+
+_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit: ; preds = %bb1.i, %bb.i
+ %vec0.0.0.0 = phi float [ 0.000000e+00, %bb.i ], [ %phitmp498, %bb1.i ] ; [#uses=2]
+ %vec0.0.1.0 = phi float [ %1638, %bb.i ], [ %1651, %bb1.i ] ; [#uses=1]
+ %vec0.0.2.0 = phi float [ %phitmp, %bb.i ], [ 0.000000e+00, %bb1.i ] ; [#uses=2]
+ %vec1.0.0.0 = phi float [ %1640, %bb.i ], [ %1653, %bb1.i ] ; [#uses=1]
+ %vec1.0.1.0 = phi float [ %1642, %bb.i ], [ %1654, %bb1.i ] ; [#uses=1]
+ %vec1.0.2.0 = phi float [ %1643, %bb.i ], [ %1655, %bb1.i ] ; [#uses=1]
+ %1656 = fmul float %vec0.0.1.0, 1.000000e+02 ; [#uses=2]
+ %1657 = fadd float %1622, %vec0.0.2.0 ; [#uses=3]
+ %1658 = fadd float %1626, %1656 ; [#uses=3]
+ %1659 = fadd float %1629, %vec0.0.0.0 ; [#uses=3]
+ %1660 = fsub float %1622, %vec0.0.2.0 ; [#uses=3]
+ %1661 = fsub float %1626, %1656 ; [#uses=3]
+ %1662 = fsub float %1629, %vec0.0.0.0 ; [#uses=3]
+ %1663 = fmul float %vec1.0.2.0, 1.000000e+02 ; [#uses=2]
+ %1664 = fmul float %vec1.0.1.0, 1.000000e+02 ; [#uses=2]
+ %1665 = fmul float %vec1.0.0.0, 1.000000e+02 ; [#uses=2]
+ %1666 = fadd float %1622, %1663 ; [#uses=3]
+ %1667 = fadd float %1626, %1664 ; [#uses=3]
+ %1668 = fadd float %1629, %1665 ; [#uses=3]
+ %1669 = fsub float %1622, %1663 ; [#uses=3]
+ %1670 = fsub float %1626, %1664 ; [#uses=3]
+ %1671 = fsub float %1629, %1665 ; [#uses=3]
+ %1672 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %1673 = getelementptr inbounds i32 (...)** %1672, i32 4 ; [#uses=1]
+ %1674 = load i32 (...)** %1673, align 4 ; [#uses=1]
+ %1675 = bitcast i32 (...)* %1674 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1676 = call %struct.btActionInterface* %1675(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %1677 = getelementptr inbounds %struct.btActionInterface* %1676, i32 0, i32 0 ; [#uses=1]
+ %1678 = load i32 (...)*** %1677, align 4 ; [#uses=1]
+ %1679 = getelementptr inbounds i32 (...)** %1678, i32 2 ; [#uses=1]
+ %1680 = load i32 (...)** %1679, align 4 ; [#uses=1]
+ %1681 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %1682 = load float* %1681, align 4 ; [#uses=2]
+ %1683 = fmul float %1682, %1662 ; [#uses=1]
+ %1684 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %1685 = load float* %1684, align 4 ; [#uses=2]
+ %1686 = fmul float %1685, %1661 ; [#uses=1]
+ %1687 = fadd float %1683, %1686 ; [#uses=1]
+ %1688 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %1689 = load float* %1688, align 4 ; [#uses=2]
+ %1690 = fmul float %1689, %1660 ; [#uses=1]
+ %1691 = fadd float %1687, %1690 ; [#uses=1]
+ %1692 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %1693 = load float* %1692, align 4 ; [#uses=2]
+ %1694 = fadd float %1691, %1693 ; [#uses=1]
+ %1695 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %1696 = load float* %1695, align 4 ; [#uses=2]
+ %1697 = fmul float %1696, %1662 ; [#uses=1]
+ %1698 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %1699 = load float* %1698, align 4 ; [#uses=2]
+ %1700 = fmul float %1699, %1661 ; [#uses=1]
+ %1701 = fadd float %1697, %1700 ; [#uses=1]
+ %1702 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %1703 = load float* %1702, align 4 ; [#uses=2]
+ %1704 = fmul float %1703, %1660 ; [#uses=1]
+ %1705 = fadd float %1701, %1704 ; [#uses=1]
+ %1706 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %1707 = load float* %1706, align 4 ; [#uses=2]
+ %1708 = fadd float %1705, %1707 ; [#uses=1]
+ %1709 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1710 = load float* %1709, align 4 ; [#uses=2]
+ %1711 = fmul float %1710, %1662 ; [#uses=1]
+ %1712 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %1713 = load float* %1712, align 4 ; [#uses=2]
+ %1714 = fmul float %1713, %1661 ; [#uses=1]
+ %1715 = fadd float %1711, %1714 ; [#uses=1]
+ %1716 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %1717 = load float* %1716, align 4 ; [#uses=2]
+ %1718 = fmul float %1717, %1660 ; [#uses=1]
+ %1719 = fadd float %1715, %1718 ; [#uses=1]
+ %1720 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %1721 = load float* %1720, align 4 ; [#uses=2]
+ %1722 = fadd float %1719, %1721 ; [#uses=1]
+ %1723 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1722, float* %1723, align 8
+ %1724 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1708, float* %1724, align 4
+ %1725 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1694, float* %1725, align 8
+ %1726 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1726, align 4
+ %1727 = fmul float %1682, %1659 ; [#uses=1]
+ %1728 = fmul float %1685, %1658 ; [#uses=1]
+ %1729 = fadd float %1727, %1728 ; [#uses=1]
+ %1730 = fmul float %1689, %1657 ; [#uses=1]
+ %1731 = fadd float %1729, %1730 ; [#uses=1]
+ %1732 = fadd float %1731, %1693 ; [#uses=1]
+ %1733 = fmul float %1696, %1659 ; [#uses=1]
+ %1734 = fmul float %1699, %1658 ; [#uses=1]
+ %1735 = fadd float %1733, %1734 ; [#uses=1]
+ %1736 = fmul float %1703, %1657 ; [#uses=1]
+ %1737 = fadd float %1735, %1736 ; [#uses=1]
+ %1738 = fadd float %1737, %1707 ; [#uses=1]
+ %1739 = fmul float %1710, %1659 ; [#uses=1]
+ %1740 = fmul float %1713, %1658 ; [#uses=1]
+ %1741 = fadd float %1739, %1740 ; [#uses=1]
+ %1742 = fmul float %1717, %1657 ; [#uses=1]
+ %1743 = fadd float %1741, %1742 ; [#uses=1]
+ %1744 = fadd float %1743, %1721 ; [#uses=1]
+ %1745 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1744, float* %1745, align 8
+ %1746 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1738, float* %1746, align 4
+ %1747 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1732, float* %1747, align 8
+ %1748 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1748, align 4
+ %1749 = bitcast i32 (...)* %1680 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %1749(%struct.btActionInterface* %1676, %struct.btQuadWord* %2, %struct.btQuadWord* %3, %struct.btQuadWord* %color)
+ %1750 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %1751 = getelementptr inbounds i32 (...)** %1750, i32 4 ; [#uses=1]
+ %1752 = load i32 (...)** %1751, align 4 ; [#uses=1]
+ %1753 = bitcast i32 (...)* %1752 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1754 = call %struct.btActionInterface* %1753(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %1755 = getelementptr inbounds %struct.btActionInterface* %1754, i32 0, i32 0 ; [#uses=1]
+ %1756 = load i32 (...)*** %1755, align 4 ; [#uses=1]
+ %1757 = getelementptr inbounds i32 (...)** %1756, i32 2 ; [#uses=1]
+ %1758 = load i32 (...)** %1757, align 4 ; [#uses=1]
+ %1759 = load float* %1681, align 4 ; [#uses=2]
+ %1760 = fmul float %1759, %1671 ; [#uses=1]
+ %1761 = load float* %1684, align 4 ; [#uses=2]
+ %1762 = fmul float %1761, %1670 ; [#uses=1]
+ %1763 = fadd float %1760, %1762 ; [#uses=1]
+ %1764 = load float* %1688, align 4 ; [#uses=2]
+ %1765 = fmul float %1764, %1669 ; [#uses=1]
+ %1766 = fadd float %1763, %1765 ; [#uses=1]
+ %1767 = load float* %1692, align 4 ; [#uses=2]
+ %1768 = fadd float %1766, %1767 ; [#uses=1]
+ %1769 = load float* %1695, align 4 ; [#uses=2]
+ %1770 = fmul float %1769, %1671 ; [#uses=1]
+ %1771 = load float* %1698, align 4 ; [#uses=2]
+ %1772 = fmul float %1771, %1670 ; [#uses=1]
+ %1773 = fadd float %1770, %1772 ; [#uses=1]
+ %1774 = load float* %1702, align 4 ; [#uses=2]
+ %1775 = fmul float %1774, %1669 ; [#uses=1]
+ %1776 = fadd float %1773, %1775 ; [#uses=1]
+ %1777 = load float* %1706, align 4 ; [#uses=2]
+ %1778 = fadd float %1776, %1777 ; [#uses=1]
+ %1779 = load float* %1709, align 4 ; [#uses=2]
+ %1780 = fmul float %1779, %1671 ; [#uses=1]
+ %1781 = load float* %1712, align 4 ; [#uses=2]
+ %1782 = fmul float %1781, %1670 ; [#uses=1]
+ %1783 = fadd float %1780, %1782 ; [#uses=1]
+ %1784 = load float* %1716, align 4 ; [#uses=2]
+ %1785 = fmul float %1784, %1669 ; [#uses=1]
+ %1786 = fadd float %1783, %1785 ; [#uses=1]
+ %1787 = load float* %1720, align 4 ; [#uses=2]
+ %1788 = fadd float %1786, %1787 ; [#uses=1]
+ %1789 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1788, float* %1789, align 8
+ %1790 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1778, float* %1790, align 4
+ %1791 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1768, float* %1791, align 8
+ %1792 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1792, align 4
+ %1793 = fmul float %1759, %1668 ; [#uses=1]
+ %1794 = fmul float %1761, %1667 ; [#uses=1]
+ %1795 = fadd float %1793, %1794 ; [#uses=1]
+ %1796 = fmul float %1764, %1666 ; [#uses=1]
+ %1797 = fadd float %1795, %1796 ; [#uses=1]
+ %1798 = fadd float %1797, %1767 ; [#uses=1]
+ %1799 = fmul float %1769, %1668 ; [#uses=1]
+ %1800 = fmul float %1771, %1667 ; [#uses=1]
+ %1801 = fadd float %1799, %1800 ; [#uses=1]
+ %1802 = fmul float %1774, %1666 ; [#uses=1]
+ %1803 = fadd float %1801, %1802 ; [#uses=1]
+ %1804 = fadd float %1803, %1777 ; [#uses=1]
+ %1805 = fmul float %1779, %1668 ; [#uses=1]
+ %1806 = fmul float %1781, %1667 ; [#uses=1]
+ %1807 = fadd float %1805, %1806 ; [#uses=1]
+ %1808 = fmul float %1784, %1666 ; [#uses=1]
+ %1809 = fadd float %1807, %1808 ; [#uses=1]
+ %1810 = fadd float %1809, %1787 ; [#uses=1]
+ %1811 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1810, float* %1811, align 8
+ %1812 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1804, float* %1812, align 4
+ %1813 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1798, float* %1813, align 8
+ %1814 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1814, align 4
+ %1815 = bitcast i32 (...)* %1758 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %1815(%struct.btActionInterface* %1754, %struct.btQuadWord* %0, %struct.btQuadWord* %1, %struct.btQuadWord* %color)
+ ret void
+
+bb60: ; preds = %entry
+ %1816 = add i32 %49, -21 ; [#uses=1]
+ %1817 = icmp ult i32 %1816, 9 ; [#uses=1]
+ br i1 %1817, label %bb62, label %bb73
+
+bb62: ; preds = %bb60
+ %1818 = bitcast %struct.btCollisionShape* %shape to %struct.btConcaveShape* ; [#uses=1]
+ %1819 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %1819, align 8
+ %1820 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %1820, align 4
+ %1821 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %1821, align 8
+ %1822 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1822, align 4
+ %1823 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %1823, align 8
+ %1824 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %1824, align 4
+ %1825 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %1825, align 8
+ %1826 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1826, align 4
+ %1827 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %1828 = getelementptr inbounds i32 (...)** %1827, i32 4 ; [#uses=1]
+ %1829 = load i32 (...)** %1828, align 4 ; [#uses=1]
+ %1830 = bitcast i32 (...)* %1829 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1831 = call %struct.btActionInterface* %1830(%struct.btCollisionWorld* %this) ; [#uses=1]
+ %1832 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1833 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 1, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 2), i32 (...)*** %1832, align 8
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 8), i32 (...)*** %1833, align 4
+ %1834 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %1831, %struct.btActionInterface** %1834, align 8
+ %1835 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %1836 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1837 = load float* %1836, align 4 ; [#uses=1]
+ store float %1837, float* %1835, align 4
+ %1838 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %1839 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1840 = load float* %1839, align 4 ; [#uses=1]
+ store float %1840, float* %1838, align 4
+ %1841 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %1842 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1843 = load float* %1842, align 4 ; [#uses=1]
+ store float %1843, float* %1841, align 4
+ %1844 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %1845 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1846 = load float* %1845, align 4 ; [#uses=1]
+ store float %1846, float* %1844, align 4
+ %1847 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1848 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1849 = load float* %1848, align 4 ; [#uses=1]
+ store float %1849, float* %1847, align 4
+ %1850 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1851 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1852 = load float* %1851, align 4 ; [#uses=1]
+ store float %1852, float* %1850, align 4
+ %1853 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1854 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1855 = load float* %1854, align 4 ; [#uses=1]
+ store float %1855, float* %1853, align 4
+ %1856 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1857 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1858 = load float* %1857, align 4 ; [#uses=1]
+ store float %1858, float* %1856, align 4
+ %1859 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1860 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1861 = load float* %1860, align 4 ; [#uses=1]
+ store float %1861, float* %1859, align 4
+ %1862 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1863 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1864 = load float* %1863, align 4 ; [#uses=1]
+ store float %1864, float* %1862, align 4
+ %1865 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1866 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1867 = load float* %1866, align 4 ; [#uses=1]
+ store float %1867, float* %1865, align 4
+ %1868 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %1869 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %1870 = load float* %1869, align 4 ; [#uses=1]
+ store float %1870, float* %1868, align 4
+ %1871 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1872 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1873 = load float* %1872, align 4 ; [#uses=1]
+ store float %1873, float* %1871, align 4
+ %1874 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1875 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1876 = load float* %1875, align 4 ; [#uses=1]
+ store float %1876, float* %1874, align 4
+ %1877 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1878 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1879 = load float* %1878, align 4 ; [#uses=1]
+ store float %1879, float* %1877, align 4
+ %1880 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %1881 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %1882 = load float* %1881, align 4 ; [#uses=1]
+ store float %1882, float* %1880, align 4
+ %1883 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1884 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1885 = load float* %1884, align 4 ; [#uses=1]
+ store float %1885, float* %1883, align 4
+ %1886 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1887 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1888 = load float* %1887, align 4 ; [#uses=1]
+ store float %1888, float* %1886, align 4
+ %1889 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1890 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1891 = load float* %1890, align 4 ; [#uses=1]
+ store float %1891, float* %1889, align 4
+ %1892 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ %1893 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %1894 = load float* %1893, align 4 ; [#uses=1]
+ store float %1894, float* %1892, align 4
+ %1895 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 0, i32 0 ; [#uses=1]
+ %1896 = load i32 (...)*** %1895, align 4 ; [#uses=1]
+ %1897 = getelementptr inbounds i32 (...)** %1896, i32 15 ; [#uses=1]
+ %1898 = load i32 (...)** %1897, align 4 ; [#uses=1]
+ %1899 = bitcast i32 (...)* %1898 to void (%struct.btConcaveShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %1900 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback, i32 0, i32 0 ; [#uses=5]
+ invoke void %1899(%struct.btConcaveShape* %1818, %struct.btActionInterface* %1900, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ to label %bb72 unwind label %lpad
+
+bb72: ; preds = %bb62
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 2), i32 (...)*** %1832, align 8
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 8), i32 (...)*** %1833, align 4
+ %1901 = ptrtoint %struct.DebugDrawcallback* %drawCallback to i32 ; [#uses=1]
+ %1902 = or i32 %1901, 4 ; [#uses=1]
+ %1903 = inttoptr i32 %1902 to %struct.DebugDrawcallback* ; [#uses=1]
+ %1904 = getelementptr inbounds %struct.DebugDrawcallback* %1903, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1904)
+ to label %_ZN17DebugDrawcallbackD1Ev.exit151 unwind label %lpad.i147
+
+invcont1.i143: ; preds = %lpad.i147
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i145)
+ unreachable
+
+lpad.i147: ; preds = %bb72
+ %eh_ptr.i145 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i146 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i145, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1900)
+ to label %invcont1.i143 unwind label %lpad9.i150
+
+lpad9.i150: ; preds = %lpad.i147
+ %eh_ptr10.i148 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i149 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i148, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN17DebugDrawcallbackD1Ev.exit151: ; preds = %bb72
+ call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1900)
+ %.pre = load i32* %48, align 4 ; [#uses=1]
+ br label %bb73
+
+bb73: ; preds = %_ZN17DebugDrawcallbackD1Ev.exit151, %bb60
+ %1905 = phi i32 [ %49, %bb60 ], [ %.pre, %_ZN17DebugDrawcallbackD1Ev.exit151 ] ; [#uses=2]
+ %1906 = icmp eq i32 %1905, 3 ; [#uses=1]
+ br i1 %1906, label %bb75, label %bb90
+
+bb75: ; preds = %bb73
+ %1907 = getelementptr inbounds %struct.btQuadWord* %aabbMax78, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %1907, align 8
+ %1908 = getelementptr inbounds %struct.btQuadWord* %aabbMax78, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %1908, align 4
+ %1909 = getelementptr inbounds %struct.btQuadWord* %aabbMax78, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %1909, align 8
+ %1910 = getelementptr inbounds %struct.btQuadWord* %aabbMax78, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1910, align 4
+ %1911 = getelementptr inbounds %struct.btQuadWord* %aabbMin80, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %1911, align 8
+ %1912 = getelementptr inbounds %struct.btQuadWord* %aabbMin80, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %1912, align 4
+ %1913 = getelementptr inbounds %struct.btQuadWord* %aabbMin80, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %1913, align 8
+ %1914 = getelementptr inbounds %struct.btQuadWord* %aabbMin80, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1914, align 4
+ %1915 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %1916 = getelementptr inbounds i32 (...)** %1915, i32 4 ; [#uses=1]
+ %1917 = load i32 (...)** %1916, align 4 ; [#uses=1]
+ %1918 = bitcast i32 (...)* %1917 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1919 = call %struct.btActionInterface* %1918(%struct.btCollisionWorld* %this) ; [#uses=1]
+ %1920 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1921 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 1, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 2), i32 (...)*** %1920, align 8
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 8), i32 (...)*** %1921, align 4
+ %1922 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %1919, %struct.btActionInterface** %1922, align 8
+ %1923 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %1924 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1925 = load float* %1924, align 4 ; [#uses=1]
+ store float %1925, float* %1923, align 4
+ %1926 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %1927 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1928 = load float* %1927, align 4 ; [#uses=1]
+ store float %1928, float* %1926, align 4
+ %1929 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %1930 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1931 = load float* %1930, align 4 ; [#uses=1]
+ store float %1931, float* %1929, align 4
+ %1932 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %1933 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1934 = load float* %1933, align 4 ; [#uses=1]
+ store float %1934, float* %1932, align 4
+ %1935 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1936 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1937 = load float* %1936, align 4 ; [#uses=1]
+ store float %1937, float* %1935, align 4
+ %1938 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1939 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1940 = load float* %1939, align 4 ; [#uses=1]
+ store float %1940, float* %1938, align 4
+ %1941 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1942 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1943 = load float* %1942, align 4 ; [#uses=1]
+ store float %1943, float* %1941, align 4
+ %1944 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1945 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1946 = load float* %1945, align 4 ; [#uses=1]
+ store float %1946, float* %1944, align 4
+ %1947 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1948 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1949 = load float* %1948, align 4 ; [#uses=1]
+ store float %1949, float* %1947, align 4
+ %1950 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1951 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1952 = load float* %1951, align 4 ; [#uses=1]
+ store float %1952, float* %1950, align 4
+ %1953 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1954 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1955 = load float* %1954, align 4 ; [#uses=1]
+ store float %1955, float* %1953, align 4
+ %1956 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %1957 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %1958 = load float* %1957, align 4 ; [#uses=1]
+ store float %1958, float* %1956, align 4
+ %1959 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1960 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1961 = load float* %1960, align 4 ; [#uses=1]
+ store float %1961, float* %1959, align 4
+ %1962 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1963 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1964 = load float* %1963, align 4 ; [#uses=1]
+ store float %1964, float* %1962, align 4
+ %1965 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1966 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1967 = load float* %1966, align 4 ; [#uses=1]
+ store float %1967, float* %1965, align 4
+ %1968 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %1969 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %1970 = load float* %1969, align 4 ; [#uses=1]
+ store float %1970, float* %1968, align 4
+ %1971 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1972 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1973 = load float* %1972, align 4 ; [#uses=1]
+ store float %1973, float* %1971, align 4
+ %1974 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1975 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1976 = load float* %1975, align 4 ; [#uses=1]
+ store float %1976, float* %1974, align 4
+ %1977 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1978 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1979 = load float* %1978, align 4 ; [#uses=1]
+ store float %1979, float* %1977, align 4
+ %1980 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ %1981 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %1982 = load float* %1981, align 4 ; [#uses=1]
+ store float %1982, float* %1980, align 4
+ %1983 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 7, i32 1 ; [#uses=1]
+ %1984 = bitcast i32* %1983 to %struct.btStridingMeshInterface** ; [#uses=1]
+ %1985 = load %struct.btStridingMeshInterface** %1984, align 4 ; [#uses=2]
+ %1986 = getelementptr inbounds %struct.btStridingMeshInterface* %1985, i32 0, i32 0 ; [#uses=1]
+ %1987 = load i32 (...)*** %1986, align 4 ; [#uses=1]
+ %1988 = getelementptr inbounds i32 (...)** %1987, i32 2 ; [#uses=1]
+ %1989 = load i32 (...)** %1988, align 4 ; [#uses=1]
+ %1990 = bitcast i32 (...)* %1989 to void (%struct.btStridingMeshInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %1991 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 1 ; [#uses=1]
+ invoke void %1990(%struct.btStridingMeshInterface* %1985, %struct.btActionInterface* %1991, %struct.btQuadWord* %aabbMin80, %struct.btQuadWord* %aabbMax78)
+ to label %bb89 unwind label %lpad110
+
+bb89: ; preds = %bb75
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 2), i32 (...)*** %1920, align 8
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 8), i32 (...)*** %1921, align 4
+ %1992 = ptrtoint %struct.DebugDrawcallback* %drawCallback82 to i32 ; [#uses=1]
+ %1993 = or i32 %1992, 4 ; [#uses=1]
+ %1994 = inttoptr i32 %1993 to %struct.DebugDrawcallback* ; [#uses=1]
+ %1995 = getelementptr inbounds %struct.DebugDrawcallback* %1994, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1995)
+ to label %_ZN17DebugDrawcallbackD1Ev.exit142 unwind label %lpad.i138
+
+invcont1.i134: ; preds = %lpad.i138
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i136)
+ unreachable
+
+lpad.i138: ; preds = %bb89
+ %eh_ptr.i136 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i137 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i136, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %1996 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1996)
+ to label %invcont1.i134 unwind label %lpad9.i141
+
+lpad9.i141: ; preds = %lpad.i138
+ %eh_ptr10.i139 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i140 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i139, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN17DebugDrawcallbackD1Ev.exit142: ; preds = %bb89
+ %1997 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1997)
+ %.pre497 = load i32* %48, align 4 ; [#uses=1]
+ br label %bb90
+
+bb90: ; preds = %_ZN17DebugDrawcallbackD1Ev.exit142, %bb73
+ %1998 = phi i32 [ %.pre497, %_ZN17DebugDrawcallbackD1Ev.exit142 ], [ %1905, %bb73 ] ; [#uses=1]
+ %1999 = icmp slt i32 %1998, 7 ; [#uses=1]
+ br i1 %1999, label %bb92, label %return
+
+bb92: ; preds = %bb90
+ %2000 = bitcast %struct.btCollisionShape* %shape to %struct.btPolyhedralConvexShape* ; [#uses=3]
+ %2001 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 0, i32 0 ; [#uses=3]
+ %2002 = load i32 (...)*** %2001, align 4 ; [#uses=1]
+ %2003 = getelementptr inbounds i32 (...)** %2002, i32 22 ; [#uses=1]
+ %2004 = load i32 (...)** %2003, align 4 ; [#uses=1]
+ %2005 = bitcast i32 (...)* %2004 to i32 (%struct.btPolyhedralConvexShape*)* ; [#uses=1]
+ %2006 = call i32 %2005(%struct.btPolyhedralConvexShape* %2000) ; [#uses=1]
+ %2007 = icmp sgt i32 %2006, 0 ; [#uses=1]
+ br i1 %2007, label %bb.nph459, label %return
+
+bb.nph459: ; preds = %bb92
+ %2008 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %2009 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2010 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %2011 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 1 ; [#uses=1]
+ %2012 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %2013 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 2 ; [#uses=1]
+ %2014 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %2015 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %2016 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %2017 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %2018 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %2019 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2020 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %2021 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %2022 = getelementptr inbounds %struct.btTransform* %worldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %2023 = getelementptr inbounds %struct.btQuadWord* %wa, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2024 = getelementptr inbounds %struct.btQuadWord* %wa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %2025 = getelementptr inbounds %struct.btQuadWord* %wa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %2026 = getelementptr inbounds %struct.btQuadWord* %wa, i32 0, i32 0, i32 3 ; [#uses=1]
+ %2027 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2028 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 1 ; [#uses=1]
+ %2029 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 2 ; [#uses=1]
+ %2030 = getelementptr inbounds %struct.btQuadWord* %wb, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2031 = getelementptr inbounds %struct.btQuadWord* %wb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %2032 = getelementptr inbounds %struct.btQuadWord* %wb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %2033 = getelementptr inbounds %struct.btQuadWord* %wb, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb96
+
+bb96: ; preds = %bb96, %bb.nph459
+ %2034 = phi i32 [ 0, %bb.nph459 ], [ %2103, %bb96 ] ; [#uses=2]
+ %2035 = load i32 (...)*** %2001, align 4 ; [#uses=1]
+ %2036 = getelementptr inbounds i32 (...)** %2035, i32 23 ; [#uses=1]
+ %2037 = load i32 (...)** %2036, align 4 ; [#uses=1]
+ %2038 = bitcast i32 (...)* %2037 to void (%struct.btPolyhedralConvexShape*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %2038(%struct.btPolyhedralConvexShape* %2000, i32 %2034, %struct.btQuadWord* %a, %struct.btQuadWord* %b)
+ %2039 = load float* %2008, align 4 ; [#uses=2]
+ %2040 = load float* %2009, align 8 ; [#uses=3]
+ %2041 = fmul float %2039, %2040 ; [#uses=1]
+ %2042 = load float* %2010, align 4 ; [#uses=2]
+ %2043 = load float* %2011, align 4 ; [#uses=3]
+ %2044 = fmul float %2042, %2043 ; [#uses=1]
+ %2045 = fadd float %2041, %2044 ; [#uses=1]
+ %2046 = load float* %2012, align 4 ; [#uses=2]
+ %2047 = load float* %2013, align 8 ; [#uses=3]
+ %2048 = fmul float %2046, %2047 ; [#uses=1]
+ %2049 = fadd float %2045, %2048 ; [#uses=1]
+ %2050 = load float* %2014, align 4 ; [#uses=2]
+ %2051 = fadd float %2049, %2050 ; [#uses=1]
+ %2052 = load float* %2015, align 4 ; [#uses=2]
+ %2053 = fmul float %2052, %2040 ; [#uses=1]
+ %2054 = load float* %2016, align 4 ; [#uses=2]
+ %2055 = fmul float %2054, %2043 ; [#uses=1]
+ %2056 = fadd float %2053, %2055 ; [#uses=1]
+ %2057 = load float* %2017, align 4 ; [#uses=2]
+ %2058 = fmul float %2057, %2047 ; [#uses=1]
+ %2059 = fadd float %2056, %2058 ; [#uses=1]
+ %2060 = load float* %2018, align 4 ; [#uses=2]
+ %2061 = fadd float %2059, %2060 ; [#uses=1]
+ %2062 = load float* %2019, align 4 ; [#uses=2]
+ %2063 = fmul float %2062, %2040 ; [#uses=1]
+ %2064 = load float* %2020, align 4 ; [#uses=2]
+ %2065 = fmul float %2064, %2043 ; [#uses=1]
+ %2066 = fadd float %2063, %2065 ; [#uses=1]
+ %2067 = load float* %2021, align 4 ; [#uses=2]
+ %2068 = fmul float %2067, %2047 ; [#uses=1]
+ %2069 = fadd float %2066, %2068 ; [#uses=1]
+ %2070 = load float* %2022, align 4 ; [#uses=2]
+ %2071 = fadd float %2069, %2070 ; [#uses=1]
+ store float %2071, float* %2023, align 8
+ store float %2061, float* %2024, align 4
+ store float %2051, float* %2025, align 8
+ store float 0.000000e+00, float* %2026, align 4
+ %2072 = load float* %2027, align 8 ; [#uses=3]
+ %2073 = fmul float %2039, %2072 ; [#uses=1]
+ %2074 = load float* %2028, align 4 ; [#uses=3]
+ %2075 = fmul float %2042, %2074 ; [#uses=1]
+ %2076 = fadd float %2073, %2075 ; [#uses=1]
+ %2077 = load float* %2029, align 8 ; [#uses=3]
+ %2078 = fmul float %2046, %2077 ; [#uses=1]
+ %2079 = fadd float %2076, %2078 ; [#uses=1]
+ %2080 = fadd float %2079, %2050 ; [#uses=1]
+ %2081 = fmul float %2052, %2072 ; [#uses=1]
+ %2082 = fmul float %2054, %2074 ; [#uses=1]
+ %2083 = fadd float %2081, %2082 ; [#uses=1]
+ %2084 = fmul float %2057, %2077 ; [#uses=1]
+ %2085 = fadd float %2083, %2084 ; [#uses=1]
+ %2086 = fadd float %2085, %2060 ; [#uses=1]
+ %2087 = fmul float %2062, %2072 ; [#uses=1]
+ %2088 = fmul float %2064, %2074 ; [#uses=1]
+ %2089 = fadd float %2087, %2088 ; [#uses=1]
+ %2090 = fmul float %2067, %2077 ; [#uses=1]
+ %2091 = fadd float %2089, %2090 ; [#uses=1]
+ %2092 = fadd float %2091, %2070 ; [#uses=1]
+ store float %2092, float* %2030, align 8
+ store float %2086, float* %2031, align 4
+ store float %2080, float* %2032, align 8
+ store float 0.000000e+00, float* %2033, align 4
+ %2093 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %2094 = getelementptr inbounds i32 (...)** %2093, i32 4 ; [#uses=1]
+ %2095 = load i32 (...)** %2094, align 4 ; [#uses=1]
+ %2096 = bitcast i32 (...)* %2095 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %2097 = call %struct.btActionInterface* %2096(%struct.btCollisionWorld* %this) ; [#uses=2]
+ %2098 = getelementptr inbounds %struct.btActionInterface* %2097, i32 0, i32 0 ; [#uses=1]
+ %2099 = load i32 (...)*** %2098, align 4 ; [#uses=1]
+ %2100 = getelementptr inbounds i32 (...)** %2099, i32 2 ; [#uses=1]
+ %2101 = load i32 (...)** %2100, align 4 ; [#uses=1]
+ %2102 = bitcast i32 (...)* %2101 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %2102(%struct.btActionInterface* %2097, %struct.btQuadWord* %wa, %struct.btQuadWord* %wb, %struct.btQuadWord* %color)
+ %2103 = add nsw i32 %2034, 1 ; [#uses=2]
+ %2104 = load i32 (...)*** %2001, align 4 ; [#uses=1]
+ %2105 = getelementptr inbounds i32 (...)** %2104, i32 22 ; [#uses=1]
+ %2106 = load i32 (...)** %2105, align 4 ; [#uses=1]
+ %2107 = bitcast i32 (...)* %2106 to i32 (%struct.btPolyhedralConvexShape*)* ; [#uses=1]
+ %2108 = call i32 %2107(%struct.btPolyhedralConvexShape* %2000) ; [#uses=1]
+ %2109 = icmp sgt i32 %2108, %2103 ; [#uses=1]
+ br i1 %2109, label %bb96, label %return
+
+return: ; preds = %bb96, %bb92, %bb90, %bb8, %bb6, %bb1, %bb
+ ret void
+
+lpad: ; preds = %bb62
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select105 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 2), i32 (...)*** %1832, align 8
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 8), i32 (...)*** %1833, align 4
+ %2110 = ptrtoint %struct.DebugDrawcallback* %drawCallback to i32 ; [#uses=1]
+ %2111 = or i32 %2110, 4 ; [#uses=1]
+ %2112 = inttoptr i32 %2111 to %struct.DebugDrawcallback* ; [#uses=1]
+ %2113 = getelementptr inbounds %struct.DebugDrawcallback* %2112, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %2113)
+ to label %bb3.i124 unwind label %lpad.i127
+
+invcont1.i123: ; preds = %lpad.i127
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i125)
+ to label %.noexc131 unwind label %lpad106
+
+.noexc131: ; preds = %invcont1.i123
+ unreachable
+
+bb3.i124: ; preds = %lpad
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1900)
+ to label %Unwind unwind label %lpad106
+
+lpad.i127: ; preds = %lpad
+ %eh_ptr.i125 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i126 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i125, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1900)
+ to label %invcont1.i123 unwind label %lpad9.i130
+
+lpad9.i130: ; preds = %lpad.i127
+ %eh_ptr10.i128 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i129 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i128, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad106: ; preds = %bb3.i124, %invcont1.i123
+ %eh_ptr107 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select109 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr107, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad110: ; preds = %bb75
+ %eh_ptr111 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select113 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr111, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 2), i32 (...)*** %1920, align 8
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV17DebugDrawcallback, i32 0, i32 8), i32 (...)*** %1921, align 4
+ %2114 = ptrtoint %struct.DebugDrawcallback* %drawCallback82 to i32 ; [#uses=1]
+ %2115 = or i32 %2114, 4 ; [#uses=1]
+ %2116 = inttoptr i32 %2115 to %struct.DebugDrawcallback* ; [#uses=1]
+ %2117 = getelementptr inbounds %struct.DebugDrawcallback* %2116, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %2117)
+ to label %bb3.i unwind label %lpad.i
+
+invcont1.i: ; preds = %lpad.i
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ to label %.noexc unwind label %lpad114
+
+.noexc: ; preds = %invcont1.i
+ unreachable
+
+bb3.i: ; preds = %lpad110
+ %2118 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %2118)
+ to label %Unwind unwind label %lpad114
+
+lpad.i: ; preds = %lpad110
+ %eh_ptr.i = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %2119 = getelementptr inbounds %struct.DebugDrawcallback* %drawCallback82, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %2119)
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad114: ; preds = %bb3.i, %invcont1.i
+ %eh_ptr115 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select117 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr115, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+Unwind: ; preds = %bb3.i, %bb3.i124
+ %eh_exception.0 = phi i8* [ %eh_ptr, %bb3.i124 ], [ %eh_ptr111, %bb3.i ] ; [#uses=1]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZNK16btCollisionWorld7rayTestERK9btVector3S2_RNS_17RayResultCallbackE(%struct.btCollisionWorld* %this, %struct.btQuadWord* %rayFromWorld, %struct.btQuadWord* %rayToWorld, %"struct.btCollisionWorld::RayResultCallback"* %resultCallback) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %rayCB = alloca %struct.btSingleRayCallback, align 8 ; [#uses=51]
+ %2 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV19btSingleRayCallback, i32 0, i32 2), i32 (...)*** %2, align 8
+ %3 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %rayFromWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %rayFromWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %rayFromWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=3]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %rayFromWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %rayToWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=3]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %rayToWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %rayToWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=3]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %rayToWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=2]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 6 ; [#uses=1]
+ store %struct.btCollisionWorld* %this, %struct.btCollisionWorld** %27, align 4
+ %28 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 7 ; [#uses=1]
+ store %"struct.btCollisionWorld::RayResultCallback"* %resultCallback, %"struct.btCollisionWorld::RayResultCallback"** %28, align 8
+ %29 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 4
+ %37 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 4
+ %38 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %38, align 4
+ %39 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %39, align 4
+ %40 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %5, float* %41, align 4
+ store float %8, float* %42, align 4
+ store float %11, float* %43, align 4
+ store float %14, float* %44, align 4
+ %45 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %45, align 4
+ %46 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %46, align 4
+ %47 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %47, align 4
+ %48 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %48, align 4
+ %49 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %51, align 4
+ %52 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %53, align 4
+ %54 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %54, align 4
+ %55 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %55, align 4
+ %56 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %56, align 4
+ %57 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %17, float* %57, align 4
+ store float %20, float* %58, align 4
+ store float %23, float* %59, align 4
+ store float %26, float* %60, align 4
+ %61 = fsub float %23, %11 ; [#uses=4]
+ %62 = fsub float %20, %8 ; [#uses=4]
+ %63 = fsub float %17, %5 ; [#uses=4]
+ %64 = fmul float %63, %63 ; [#uses=1]
+ %65 = fmul float %62, %62 ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=1]
+ %67 = fmul float %61, %61 ; [#uses=1]
+ %68 = fadd float %66, %67 ; [#uses=1]
+ %69 = call float @sqrtf(float %68) nounwind readonly ; [#uses=1]
+ %70 = fdiv float 1.000000e+00, %69 ; [#uses=3]
+ %71 = fmul float %63, %70 ; [#uses=3]
+ %72 = fmul float %62, %70 ; [#uses=3]
+ %73 = fmul float %61, %70 ; [#uses=3]
+ %74 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %75 = fcmp une float %71, 0.000000e+00 ; [#uses=1]
+ br i1 %75, label %bb.i, label %bb2.i
+
+bb.i: ; preds = %entry
+ %76 = fdiv float 1.000000e+00, %71 ; [#uses=1]
+ br label %bb2.i
+
+bb2.i: ; preds = %bb.i, %entry
+ %77 = phi float [ %76, %bb.i ], [ 0x43ABC16D60000000, %entry ] ; [#uses=2]
+ store float %77, float* %74, align 4
+ %78 = fcmp une float %72, 0.000000e+00 ; [#uses=1]
+ br i1 %78, label %bb3.i, label %bb5.i
+
+bb3.i: ; preds = %bb2.i
+ %79 = fdiv float 1.000000e+00, %72 ; [#uses=1]
+ br label %bb5.i
+
+bb5.i: ; preds = %bb3.i, %bb2.i
+ %80 = phi float [ %79, %bb3.i ], [ 0x43ABC16D60000000, %bb2.i ] ; [#uses=2]
+ %81 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %80, float* %81, align 4
+ %82 = fcmp une float %73, 0.000000e+00 ; [#uses=1]
+ br i1 %82, label %bb6.i, label %_ZN19btSingleRayCallbackC2ERK9btVector3S2_PK16btCollisionWorldRNS3_17RayResultCallbackE.exit
+
+bb6.i: ; preds = %bb5.i
+ %83 = fdiv float 1.000000e+00, %73 ; [#uses=1]
+ br label %_ZN19btSingleRayCallbackC2ERK9btVector3S2_PK16btCollisionWorldRNS3_17RayResultCallbackE.exit
+
+_ZN19btSingleRayCallbackC2ERK9btVector3S2_PK16btCollisionWorldRNS3_17RayResultCallbackE.exit: ; preds = %bb6.i, %bb5.i
+ %iftmp.363.0.i = phi float [ %83, %bb6.i ], [ 0x43ABC16D60000000, %bb5.i ] ; [#uses=2]
+ %84 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %iftmp.363.0.i, float* %84, align 4
+ %85 = fcmp olt float %77, 0.000000e+00 ; [#uses=1]
+ %86 = zext i1 %85 to i32 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 0, i32 2, i32 0 ; [#uses=1]
+ store i32 %86, i32* %87, align 4
+ %88 = fcmp olt float %80, 0.000000e+00 ; [#uses=1]
+ %89 = zext i1 %88 to i32 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 %89, i32* %90, align 4
+ %91 = fcmp olt float %iftmp.363.0.i, 0.000000e+00 ; [#uses=1]
+ %92 = zext i1 %91 to i32 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 %92, i32* %93, align 4
+ %94 = fmul float %71, %63 ; [#uses=1]
+ %95 = fmul float %72, %62 ; [#uses=1]
+ %96 = fadd float %94, %95 ; [#uses=1]
+ %97 = fmul float %73, %61 ; [#uses=1]
+ %98 = fadd float %96, %97 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %98, float* %99, align 8
+ %100 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 5 ; [#uses=1]
+ %101 = load %struct.btActionInterface** %100, align 4 ; [#uses=2]
+ %102 = getelementptr inbounds %struct.btActionInterface* %101, i32 0, i32 0 ; [#uses=1]
+ %103 = load i32 (...)*** %102, align 4 ; [#uses=1]
+ %104 = getelementptr inbounds i32 (...)** %103, i32 6 ; [#uses=1]
+ %105 = load i32 (...)** %104, align 4 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %106, align 8
+ %107 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %107, align 4
+ %108 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %108, align 8
+ %109 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %109, align 4
+ %110 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %110, align 8
+ %111 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %111, align 4
+ %112 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %112, align 8
+ %113 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %113, align 4
+ %114 = bitcast i32 (...)* %105 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btBroadphaseRayCallback*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btSingleRayCallback* %rayCB, i32 0, i32 0 ; [#uses=1]
+ invoke void %114(%struct.btActionInterface* %101, %struct.btQuadWord* %rayFromWorld, %struct.btQuadWord* %rayToWorld, %struct.btBroadphaseRayCallback* %115, %struct.btQuadWord* %0, %struct.btQuadWord* %1)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %_ZN19btSingleRayCallbackC2ERK9btVector3S2_PK16btCollisionWorldRNS3_17RayResultCallbackE.exit
+ ret void
+
+lpad: ; preds = %_ZN19btSingleRayCallbackC2ERK9btVector3S2_PK16btCollisionWorldRNS3_17RayResultCallbackE.exit
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select3 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV19btSingleRayCallback, i32 0, i32 2), i32 (...)*** %2, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=2]
+define void @_ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss(%struct.btCollisionWorld* nocapture %this, %struct.btCollisionObject* %collisionObject, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask) align 2 {
+entry:
+ %trans = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %minAabb = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %maxAabb = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.430.0.i.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.430.0.i.i ; [#uses=1]
+ br i1 %7, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %8 = icmp eq i32 %iftmp.430.0.i.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %9 = shl i32 %iftmp.430.0.i.i, 2 ; [#uses=1]
+ %10 = call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %10 to %struct.btCollisionObject** ; [#uses=1]
+ %.pre.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %11 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %1, %bb.i.i ] ; [#uses=2]
+ %12 = phi %struct.btCollisionObject** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i
+ %14 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btCollisionObject** %12, i32 %indvar.i.i.i ; [#uses=2]
+ %15 = icmp eq %struct.btCollisionObject** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %16 = load %struct.btCollisionObject*** %14, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btCollisionObject** %16, i32 %indvar.i.i.i ; [#uses=1]
+ %17 = load %struct.btCollisionObject** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btCollisionObject* %17, %struct.btCollisionObject** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i
+ %18 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %19 = load %struct.btCollisionObject*** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.btCollisionObject** %19, null ; [#uses=1]
+ br i1 %20, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i
+ %21 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %23 = bitcast %struct.btCollisionObject** %19 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %18, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i
+ %24 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store %struct.btCollisionObject** %12, %struct.btCollisionObject*** %18, align 4
+ store i32 %iftmp.430.0.i.i, i32* %2, align 4
+ %.pre5.i = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i, %bb.i, %entry
+ %25 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i ], [ %1, %entry ], [ %1, %bb.i ] ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %27 = load %struct.btCollisionObject*** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btCollisionObject** %27, i32 %25 ; [#uses=2]
+ %29 = icmp eq %struct.btCollisionObject** %28, null ; [#uses=1]
+ br i1 %29, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE9push_backERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %struct.btCollisionObject* %collisionObject, %struct.btCollisionObject** %28, align 4
+ %.pre6.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE9push_backERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE9push_backERKS1_.exit: ; preds = %bb2.i, %bb1.i
+ %30 = phi i32 [ %25, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %31 = add nsw i32 %30, 1 ; [#uses=1]
+ store i32 %31, i32* %0, align 4
+ %32 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 8
+ %35 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 8
+ %41 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 8
+ %47 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 8
+ %53 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ %56 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ store float %58, float* %56, align 8
+ %59 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %59, align 4
+ %62 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ store float %64, float* %62, align 8
+ %65 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ store float %67, float* %65, align 4
+ %68 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ store float %70, float* %68, align 8
+ %71 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %71, align 4
+ %74 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ store float %76, float* %74, align 8
+ %77 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ store float %79, float* %77, align 4
+ %80 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 9 ; [#uses=2]
+ %81 = load %struct.btCollisionShape** %80, align 4 ; [#uses=2]
+ %82 = getelementptr inbounds %struct.btCollisionShape* %81, i32 0, i32 0 ; [#uses=1]
+ %83 = load i32 (...)*** %82, align 4 ; [#uses=1]
+ %84 = getelementptr inbounds i32 (...)** %83, i32 2 ; [#uses=1]
+ %85 = load i32 (...)** %84, align 4 ; [#uses=1]
+ %86 = bitcast i32 (...)* %85 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %86(%struct.btCollisionShape* %81, %struct.btTransform* %trans, %struct.btQuadWord* %minAabb, %struct.btQuadWord* %maxAabb)
+ %87 = load %struct.btCollisionShape** %80, align 4 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btCollisionShape* %87, i32 0, i32 1 ; [#uses=1]
+ %89 = load i32* %88, align 4 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 5 ; [#uses=1]
+ %91 = load %struct.btActionInterface** %90, align 4 ; [#uses=2]
+ %92 = getelementptr inbounds %struct.btActionInterface* %91, i32 0, i32 0 ; [#uses=1]
+ %93 = load i32 (...)*** %92, align 4 ; [#uses=1]
+ %94 = getelementptr inbounds i32 (...)** %93, i32 2 ; [#uses=1]
+ %95 = load i32 (...)** %94, align 4 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 2 ; [#uses=1]
+ %97 = load %struct.btActionInterface** %96, align 4 ; [#uses=1]
+ %98 = bitcast i32 (...)* %95 to %struct.btBroadphaseProxy* (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, i32, i8*, i16, i16, %struct.btActionInterface*, i8*)* ; [#uses=1]
+ %99 = bitcast %struct.btCollisionObject* %collisionObject to i8* ; [#uses=1]
+ %100 = call %struct.btBroadphaseProxy* %98(%struct.btActionInterface* %91, %struct.btQuadWord* %minAabb, %struct.btQuadWord* %maxAabb, i32 %89, i8* %99, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask, %struct.btActionInterface* %97, i8* null) ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 8 ; [#uses=1]
+ store %struct.btBroadphaseProxy* %100, %struct.btBroadphaseProxy** %101, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btCollisionWorld33performDiscreteCollisionDetectionEv(%struct.btCollisionWorld* %this) align 2 {
+entry:
+ tail call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([34 x i8]* @.str48, i32 0, i32 0))
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 0 ; [#uses=1]
+ %2 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds i32 (...)** %2, i32 2 ; [#uses=1]
+ %4 = load i32 (...)** %3, align 4 ; [#uses=1]
+ %5 = bitcast i32 (...)* %4 to void (%struct.btCollisionWorld*)* ; [#uses=1]
+ invoke void %5(%struct.btCollisionWorld* %this)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ invoke void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([26 x i8]* @.str5, i32 0, i32 0))
+ to label %invcont2 unwind label %lpad
+
+invcont2: ; preds = %invcont
+ %6 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 5 ; [#uses=2]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 8 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 2 ; [#uses=3]
+ %13 = load %struct.btActionInterface** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btActionInterface*)* ; [#uses=1]
+ invoke void %14(%struct.btActionInterface* %7, %struct.btActionInterface* %13)
+ to label %bb6 unwind label %lpad28
+
+bb6: ; preds = %invcont2
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont7 unwind label %lpad
+
+invcont7: ; preds = %bb6
+ %15 = load %struct.btActionInterface** %12, align 4 ; [#uses=3]
+ invoke void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([26 x i8]* @.str6, i32 0, i32 0))
+ to label %invcont9 unwind label %lpad
+
+invcont9: ; preds = %invcont7
+ %16 = icmp eq %struct.btActionInterface* %15, null ; [#uses=1]
+ br i1 %16, label %bb18, label %bb10
+
+bb10: ; preds = %invcont9
+ %17 = getelementptr inbounds %struct.btActionInterface* %15, i32 0, i32 0 ; [#uses=1]
+ %18 = load i32 (...)*** %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i32 (...)** %18, i32 8 ; [#uses=1]
+ %20 = load i32 (...)** %19, align 4 ; [#uses=1]
+ %21 = load %struct.btActionInterface** %12, align 4 ; [#uses=1]
+ %22 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %23 = getelementptr inbounds %struct.btActionInterface* %22, i32 0, i32 0 ; [#uses=1]
+ %24 = load i32 (...)*** %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i32 (...)** %24, i32 9 ; [#uses=1]
+ %26 = load i32 (...)** %25, align 4 ; [#uses=1]
+ %27 = bitcast i32 (...)* %26 to %struct..0btMultiSapOverlapFilterCallback* (%struct.btActionInterface*)* ; [#uses=1]
+ %28 = invoke %struct..0btMultiSapOverlapFilterCallback* %27(%struct.btActionInterface* %22)
+ to label %invcont11 unwind label %lpad36 ; [#uses=1]
+
+invcont11: ; preds = %bb10
+ %29 = bitcast i32 (...)* %20 to void (%struct.btActionInterface*, %struct..0btMultiSapOverlapFilterCallback*, %struct.btDispatcherInfo*, %struct.btActionInterface*)* ; [#uses=1]
+ invoke void %29(%struct.btActionInterface* %15, %struct..0btMultiSapOverlapFilterCallback* %28, %struct.btDispatcherInfo* %0, %struct.btActionInterface* %21)
+ to label %bb18 unwind label %lpad36
+
+bb18: ; preds = %invcont11, %invcont9
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %bb25 unwind label %lpad
+
+invcont23: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb25: ; preds = %bb18
+ tail call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %bb18, %invcont7, %bb6, %invcont, %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select27 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad28: ; preds = %invcont2
+ %eh_ptr29 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select31 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr29, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %ppad unwind label %lpad32
+
+lpad32: ; preds = %lpad28
+ %eh_ptr33 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select35 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr33, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad36: ; preds = %invcont11, %bb10
+ %eh_ptr37 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select39 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr37, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %ppad unwind label %lpad40
+
+lpad40: ; preds = %lpad36
+ %eh_ptr41 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select43 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr41, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad44: ; preds = %ppad
+ %eh_ptr45 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select47 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr45, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %lpad36, %lpad28, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr29, %lpad28 ], [ %eh_ptr37, %lpad36 ] ; [#uses=1]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont23 unwind label %lpad44
+}
+
+; [#uses=1]
+define void @_ZN16btCollisionWorld9serializeEP12btSerializer(%struct.btCollisionWorld* nocapture %this, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 8 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btActionInterface*)* ; [#uses=1]
+ tail call void %4(%struct.btActionInterface* %serializer)
+ tail call void @_ZN16btCollisionWorld25serializeCollisionObjectsEP12btSerializer(%struct.btCollisionWorld* %this, %struct.btActionInterface* %serializer)
+ %5 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 9 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct.btActionInterface*)* ; [#uses=1]
+ tail call void %8(%struct.btActionInterface* %serializer)
+ ret void
+}
+
+; [#uses=14]
+define void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV16btCollisionWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 3 ; [#uses=6]
+ %3 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 5 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 2 ; [#uses=2]
+ br label %bb5
+
+bb: ; preds = %bb5
+ %scevgep = getelementptr %struct.btCollisionObject** %33, i32 %30 ; [#uses=1]
+ %5 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 8 ; [#uses=2]
+ %7 = load %struct.btBroadphaseProxy** %6, align 4 ; [#uses=3]
+ %8 = icmp eq %struct.btBroadphaseProxy* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb1
+
+bb1: ; preds = %bb
+ %9 = load %struct.btActionInterface** %3, align 4 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btActionInterface* %9, i32 0, i32 0 ; [#uses=1]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 9 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to %struct..0btMultiSapOverlapFilterCallback* (%struct.btActionInterface*)* ; [#uses=1]
+ %15 = invoke %struct..0btMultiSapOverlapFilterCallback* %14(%struct.btActionInterface* %9)
+ to label %invcont unwind label %lpad ; [#uses=2]
+
+invcont: ; preds = %bb1
+ %16 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %15, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 10 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = load %struct.btActionInterface** %4, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %19 to void (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ invoke void %21(%struct..0btMultiSapOverlapFilterCallback* %15, %struct.btBroadphaseProxy* %7, %struct.btActionInterface* %20)
+ to label %invcont2 unwind label %lpad
+
+invcont2: ; preds = %invcont
+ %22 = load %struct.btActionInterface** %3, align 4 ; [#uses=2]
+ %23 = getelementptr inbounds %struct.btActionInterface* %22, i32 0, i32 0 ; [#uses=1]
+ %24 = load i32 (...)*** %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i32 (...)** %24, i32 3 ; [#uses=1]
+ %26 = load i32 (...)** %25, align 4 ; [#uses=1]
+ %27 = load %struct.btActionInterface** %4, align 4 ; [#uses=1]
+ %28 = bitcast i32 (...)* %26 to void (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ invoke void %28(%struct.btActionInterface* %22, %struct.btBroadphaseProxy* %7, %struct.btActionInterface* %27)
+ to label %invcont3 unwind label %lpad
+
+invcont3: ; preds = %invcont2
+ store %struct.btBroadphaseProxy* null, %struct.btBroadphaseProxy** %6, align 4
+ br label %bb4
+
+bb4: ; preds = %invcont3, %bb
+ %29 = add nsw i32 %30, 1 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb4, %entry
+ %30 = phi i32 [ 0, %entry ], [ %29, %bb4 ] ; [#uses=3]
+ %31 = load i32* %1, align 4 ; [#uses=1]
+ %32 = icmp sgt i32 %31, %30 ; [#uses=1]
+ %33 = load %struct.btCollisionObject*** %2, align 4 ; [#uses=3]
+ br i1 %32, label %bb, label %bb9
+
+invcont7: ; preds = %bb2.i.i.i, %lpad
+ %34 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %34, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ store i32 0, i32* %1, align 4
+ %35 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %35, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb9: ; preds = %bb5
+ %36 = icmp eq %struct.btCollisionObject** %33, null ; [#uses=1]
+ br i1 %36, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit26, label %bb.i.i.i23
+
+bb.i.i.i23: ; preds = %bb9
+ %37 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %38 = load i8* %37, align 4 ; [#uses=1]
+ %toBool.i.i.i22 = icmp eq i8 %38, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i22, label %bb2.i.i.i25, label %bb1.i.i.i24
+
+bb1.i.i.i24: ; preds = %bb.i.i.i23
+ %39 = bitcast %struct.btCollisionObject** %33 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %39)
+ br label %bb2.i.i.i25
+
+bb2.i.i.i25: ; preds = %bb1.i.i.i24, %bb.i.i.i23
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit26
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit26: ; preds = %bb2.i.i.i25, %bb9
+ %40 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %40, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ store i32 0, i32* %1, align 4
+ %41 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %41, align 4
+ ret void
+
+lpad: ; preds = %invcont2, %invcont, %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %42 = load %struct.btCollisionObject*** %2, align 4 ; [#uses=2]
+ %43 = icmp eq %struct.btCollisionObject** %42, null ; [#uses=1]
+ br i1 %43, label %invcont7, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad
+ %44 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %45 = load i8* %44, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %45, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %46 = bitcast %struct.btCollisionObject** %42 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %46)
+ to label %bb2.i.i.i unwind label %lpad16
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ br label %invcont7
+
+lpad16: ; preds = %bb1.i.i.i
+ %eh_ptr17 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select19 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr17, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN16btCollisionWorldC1EP12btDispatcherP21btBroadphaseInterfaceP24btCollisionConfiguration(%struct.btCollisionWorld* nocapture %this, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %collisionConfiguration) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV16btCollisionWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 4 ; [#uses=3]
+ store i8 1, i8* %1, align 4
+ %2 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 3 ; [#uses=4]
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ %3 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %dispatcher, %struct.btActionInterface** %5, align 4
+ %6 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 1, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ store float 1.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 0, i8* %10, align 4
+ %11 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 5 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %11, align 4
+ %12 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 6 ; [#uses=1]
+ store i8 0, i8* %12, align 4
+ %13 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 7 ; [#uses=1]
+ store i8 1, i8* %13, align 1
+ %14 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 8 ; [#uses=1]
+ store i8 1, i8* %14, align 2
+ %15 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 9 ; [#uses=1]
+ store float 0x3FA47AE140000000, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 10 ; [#uses=1]
+ store i8 0, i8* %16, align 4
+ %17 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 11 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 12 ; [#uses=1]
+ store i8 0, i8* %18, align 4
+ %19 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3, i32 13 ; [#uses=2]
+ store %struct.btStackAlloc* null, %struct.btStackAlloc** %19, align 4
+ %20 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btActionInterface* %pairCache, %struct.btActionInterface** %20, align 4
+ %21 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %21, align 4
+ %22 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 7 ; [#uses=1]
+ store i8 1, i8* %22, align 4
+ %23 = getelementptr inbounds %struct.btActionInterface* %collisionConfiguration, i32 0, i32 0 ; [#uses=1]
+ %24 = load i32 (...)*** %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i32 (...)** %24, i32 4 ; [#uses=1]
+ %26 = load i32 (...)** %25, align 4 ; [#uses=1]
+ %27 = bitcast i32 (...)* %26 to %struct.btStackAlloc* (%struct.btActionInterface*)* ; [#uses=1]
+ %28 = invoke %struct.btStackAlloc* %27(%struct.btActionInterface* %collisionConfiguration)
+ to label %invcont unwind label %lpad ; [#uses=2]
+
+invcont: ; preds = %entry
+ %29 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btStackAlloc* %28, %struct.btStackAlloc** %29, align 4
+ store %struct.btStackAlloc* %28, %struct.btStackAlloc** %19, align 4
+ ret void
+
+invcont1: ; preds = %bb2.i.i.i, %lpad
+ store i8 1, i8* %1, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ store i32 0, i32* %3, align 4
+ store i32 0, i32* %4, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select4 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %30 = load %struct.btCollisionObject*** %2, align 4 ; [#uses=2]
+ %31 = icmp eq %struct.btCollisionObject** %30, null ; [#uses=1]
+ br i1 %31, label %invcont1, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad
+ %32 = load i8* %1, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %32, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %33 = bitcast %struct.btCollisionObject** %30 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %33)
+ to label %bb2.i.i.i unwind label %lpad5
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %2, align 4
+ br label %invcont1
+
+lpad5: ; preds = %bb1.i.i.i
+ %eh_ptr6 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr6, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI9btHashPtrE9push_backERKS0_(%"struct.btAlignedObjectArray<btHashPtr>"* nocapture %this, %struct.btHashPtr* nocapture %_Val) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashPtr>"* %this, i32 0, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashPtr>"* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.506.0.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.506.0.i ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb1
+
+bb.i: ; preds = %bb
+ %8 = icmp eq i32 %iftmp.506.0.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayI9btHashPtrE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %9 = shl i32 %iftmp.506.0.i, 3 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %10 to %struct.btHashPtr* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI9btHashPtrE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayI9btHashPtrE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %11 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %12 = phi %struct.btHashPtr* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=4]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayI9btHashPtrE4copyEiiPS0_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayI9btHashPtrE8allocateEi.exit.i
+ %14 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashPtr>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=6]
+ %scevgep.i.i = getelementptr %struct.btHashPtr* %12, i32 %indvar.i.i ; [#uses=1]
+ %15 = icmp eq %struct.btHashPtr* %scevgep.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %scevgep12.i.i = getelementptr %struct.btHashPtr* %12, i32 %indvar.i.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep11.i.i = getelementptr inbounds %struct.btHashPtr* %12, i32 %indvar.i.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load %struct.btHashPtr** %14, align 4 ; [#uses=2]
+ %scevgep89.i.i = getelementptr inbounds %struct.btHashPtr* %16, i32 %indvar.i.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = load i32* %scevgep89.i.i, align 4 ; [#uses=1]
+ %scevgep10.i.i = getelementptr %struct.btHashPtr* %16, i32 %indvar.i.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load i32* %scevgep10.i.i, align 4 ; [#uses=1]
+ store i32 %17, i32* %scevgep11.i.i, align 4
+ store i32 %18, i32* %scevgep12.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI9btHashPtrE4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI9btHashPtrE4copyEiiPS0_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayI9btHashPtrE8allocateEi.exit.i
+ %19 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashPtr>"* %this, i32 0, i32 3 ; [#uses=3]
+ %20 = load %struct.btHashPtr** %19, align 4 ; [#uses=2]
+ %21 = icmp eq %struct.btHashPtr* %20, null ; [#uses=1]
+ br i1 %21, label %_ZN20btAlignedObjectArrayI9btHashPtrE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI9btHashPtrE4copyEiiPS0_.exit.i
+ %22 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashPtr>"* %this, i32 0, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %24 = bitcast %struct.btHashPtr* %20 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %24)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btHashPtr* null, %struct.btHashPtr** %19, align 4
+ br label %_ZN20btAlignedObjectArrayI9btHashPtrE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayI9btHashPtrE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI9btHashPtrE4copyEiiPS0_.exit.i
+ %25 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashPtr>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ store %struct.btHashPtr* %12, %struct.btHashPtr** %19, align 4
+ store i32 %iftmp.506.0.i, i32* %2, align 4
+ %.pre9 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayI9btHashPtrE10deallocateEv.exit.i, %bb, %entry
+ %26 = phi i32 [ %.pre9, %_ZN20btAlignedObjectArrayI9btHashPtrE10deallocateEv.exit.i ], [ %1, %entry ], [ %1, %bb ] ; [#uses=4]
+ %27 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashPtr>"* %this, i32 0, i32 3 ; [#uses=1]
+ %28 = load %struct.btHashPtr** %27, align 4 ; [#uses=3]
+ %29 = getelementptr inbounds %struct.btHashPtr* %28, i32 %26 ; [#uses=1]
+ %30 = icmp eq %struct.btHashPtr* %29, null ; [#uses=1]
+ br i1 %30, label %bb4, label %bb2
+
+bb2: ; preds = %bb1
+ %31 = getelementptr inbounds %struct.btHashPtr* %_Val, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %32 = load i32* %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btHashPtr* %_Val, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %34 = load i32* %33, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btHashPtr* %28, i32 %26, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 %32, i32* %35, align 4
+ %36 = getelementptr inbounds %struct.btHashPtr* %28, i32 %26, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 %34, i32* %36, align 4
+ %.pre10 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb2, %bb1
+ %37 = phi i32 [ %26, %bb1 ], [ %.pre10, %bb2 ] ; [#uses=1]
+ %38 = add nsw i32 %37, 1 ; [#uses=1]
+ store i32 %38, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN9btHashMapI9btHashPtrP16btCollisionShapeE10growTablesERKS0_(%"struct.btHashMap<btHashPtr,btCollisionShape*>"* nocapture %this, %struct.btHashPtr* nocapture %unnamed_arg) align 2 {
+entry:
+ %0 = alloca i32, align 4 ; [#uses=2]
+ %1 = alloca i32, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=6]
+ %4 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=3]
+ %6 = icmp slt i32 %5, %3 ; [#uses=1]
+ br i1 %6, label %bb, label %return
+
+bb: ; preds = %entry
+ store i32 0, i32* %1, align 4
+ %7 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIiE6resizeEiRKi(%"struct.btAlignedObjectArray<int>"* %7, i32 %3, i32* %1) inlinehint
+ store i32 0, i32* %0, align 4
+ %8 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIiE6resizeEiRKi(%"struct.btAlignedObjectArray<int>"* %8, i32 %3, i32* %0) inlinehint
+ %9 = icmp sgt i32 %3, 0 ; [#uses=2]
+ br i1 %9, label %bb.nph14, label %bb8.preheader
+
+bb.nph14: ; preds = %bb
+ %10 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb1, %bb.nph14
+ %i.013 = phi i32 [ 0, %bb.nph14 ], [ %12, %bb1 ] ; [#uses=2]
+ %11 = load i32** %10, align 4 ; [#uses=1]
+ %scevgep20 = getelementptr i32* %11, i32 %i.013 ; [#uses=1]
+ store i32 -1, i32* %scevgep20, align 4
+ %12 = add nsw i32 %i.013, 1 ; [#uses=2]
+ %exitcond19 = icmp eq i32 %12, %3 ; [#uses=1]
+ br i1 %exitcond19, label %bb5.preheader, label %bb1
+
+bb5.preheader: ; preds = %bb1
+ br i1 %9, label %bb.nph12, label %bb8.preheader
+
+bb.nph12: ; preds = %bb5.preheader
+ %13 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb4, %bb.nph12
+ %i.111 = phi i32 [ 0, %bb.nph12 ], [ %15, %bb4 ] ; [#uses=2]
+ %14 = load i32** %13, align 4 ; [#uses=1]
+ %scevgep18 = getelementptr i32* %14, i32 %i.111 ; [#uses=1]
+ store i32 -1, i32* %scevgep18, align 4
+ %15 = add nsw i32 %i.111, 1 ; [#uses=2]
+ %exitcond17 = icmp eq i32 %15, %3 ; [#uses=1]
+ br i1 %exitcond17, label %bb8.preheader, label %bb4
+
+bb8.preheader: ; preds = %bb4, %bb5.preheader, %bb
+ %16 = icmp sgt i32 %5, 0 ; [#uses=1]
+ br i1 %16, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb8.preheader
+ %17 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %18 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %19 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 3 ; [#uses=2]
+ br label %bb7
+
+bb7: ; preds = %bb7, %bb.nph
+ %20 = phi i32 [ 0, %bb.nph ], [ %43, %bb7 ] ; [#uses=4]
+ %21 = load %struct.btHashPtr** %17, align 4 ; [#uses=1]
+ %scevgep1516 = getelementptr inbounds %struct.btHashPtr* %21, i32 %20, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = load i32* %scevgep1516, align 4 ; [#uses=2]
+ %23 = shl i32 %22, 15 ; [#uses=1]
+ %not.i = xor i32 %23, -1 ; [#uses=1]
+ %24 = add nsw i32 %22, %not.i ; [#uses=2]
+ %25 = ashr i32 %24, 10 ; [#uses=1]
+ %26 = xor i32 %25, %24 ; [#uses=1]
+ %27 = mul i32 %26, 9 ; [#uses=2]
+ %28 = ashr i32 %27, 6 ; [#uses=1]
+ %29 = xor i32 %28, %27 ; [#uses=2]
+ %30 = shl i32 %29, 11 ; [#uses=1]
+ %not2.i = xor i32 %30, -1 ; [#uses=1]
+ %31 = add nsw i32 %29, %not2.i ; [#uses=2]
+ %32 = ashr i32 %31, 16 ; [#uses=1]
+ %33 = xor i32 %32, %31 ; [#uses=1]
+ %34 = load i32* %2, align 4 ; [#uses=1]
+ %35 = add nsw i32 %34, -1 ; [#uses=1]
+ %36 = and i32 %33, %35 ; [#uses=2]
+ %37 = load i32** %18, align 4 ; [#uses=1]
+ %38 = load i32** %19, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds i32* %38, i32 %36 ; [#uses=1]
+ %40 = load i32* %39, align 4 ; [#uses=1]
+ %scevgep = getelementptr i32* %37, i32 %20 ; [#uses=1]
+ store i32 %40, i32* %scevgep, align 4
+ %41 = load i32** %19, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds i32* %41, i32 %36 ; [#uses=1]
+ store i32 %20, i32* %42, align 4
+ %43 = add nsw i32 %20, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %43, %5 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb7
+
+return: ; preds = %bb7, %bb8.preheader, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN9btHashMapI9btHashPtrP16btCollisionShapeE6insertERKS0_RKS2_(%"struct.btHashMap<btHashPtr,btCollisionShape*>"* nocapture %this, %struct.btHashPtr* nocapture %key, %struct.btCollisionShape** nocapture %value) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHashPtr* %key, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=3]
+ %2 = shl i32 %1, 15 ; [#uses=1]
+ %not.i = xor i32 %2, -1 ; [#uses=1]
+ %3 = add nsw i32 %1, %not.i ; [#uses=2]
+ %4 = ashr i32 %3, 10 ; [#uses=1]
+ %5 = xor i32 %4, %3 ; [#uses=1]
+ %6 = mul i32 %5, 9 ; [#uses=2]
+ %7 = ashr i32 %6, 6 ; [#uses=1]
+ %8 = xor i32 %7, %6 ; [#uses=2]
+ %9 = shl i32 %8, 11 ; [#uses=1]
+ %not2.i = xor i32 %9, -1 ; [#uses=1]
+ %10 = add nsw i32 %8, %not2.i ; [#uses=2]
+ %11 = ashr i32 %10, 16 ; [#uses=1]
+ %12 = xor i32 %11, %10 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 2 ; [#uses=3]
+ %14 = load i32* %13, align 4 ; [#uses=2]
+ %15 = add nsw i32 %14, -1 ; [#uses=1]
+ %16 = and i32 %12, %15 ; [#uses=3]
+ %17 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load i32* %17, align 4 ; [#uses=1]
+ %19 = icmp ugt i32 %18, %16 ; [#uses=1]
+ %20 = inttoptr i32 %1 to i8* ; [#uses=1]
+ br i1 %19, label %bb1.i, label %bb1
+
+bb1.i: ; preds = %entry
+ %21 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = load i32** %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds i32* %22, i32 %16 ; [#uses=1]
+ %24 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb3.i
+
+bb2.i: ; preds = %bb4.i
+ %26 = load i32** %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds i32* %26, i32 %index.0.i ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb1.i
+ %index.0.in.i = phi i32* [ %23, %bb1.i ], [ %27, %bb2.i ] ; [#uses=1]
+ %index.0.i = load i32* %index.0.in.i, align 4 ; [#uses=4]
+ %28 = icmp eq i32 %index.0.i, -1 ; [#uses=1]
+ br i1 %28, label %bb1, label %bb4.i
+
+bb4.i: ; preds = %bb3.i
+ %29 = load %struct.btHashPtr** %24, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btHashPtr* %29, i32 %index.0.i ; [#uses=1]
+ %31 = bitcast %struct.btHashPtr* %30 to i8** ; [#uses=1]
+ %32 = load i8** %31, align 4 ; [#uses=1]
+ %33 = icmp eq i8* %20, %32 ; [#uses=1]
+ br i1 %33, label %bb, label %bb2.i
+
+bb: ; preds = %bb4.i
+ %34 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %35 = load %struct.btCollisionShape*** %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btCollisionShape** %35, i32 %index.0.i ; [#uses=1]
+ %37 = load %struct.btCollisionShape** %value, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %37, %struct.btCollisionShape** %36, align 4
+ ret void
+
+bb1: ; preds = %bb3.i, %entry
+ %38 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %39 = load i32* %38, align 4 ; [#uses=2]
+ %40 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 2 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayIP16btCollisionShapeE9push_backERKS1_(%"struct.btAlignedObjectArray<btCollisionShape*>"* %40, %struct.btCollisionShape** %value) inlinehint
+ %41 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 3 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI9btHashPtrE9push_backERKS0_(%"struct.btAlignedObjectArray<btHashPtr>"* %41, %struct.btHashPtr* %key) inlinehint
+ %42 = load i32* %13, align 4 ; [#uses=1]
+ %43 = icmp slt i32 %14, %42 ; [#uses=1]
+ br i1 %43, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ tail call void @_ZN9btHashMapI9btHashPtrP16btCollisionShapeE10growTablesERKS0_(%"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, %struct.btHashPtr* %key)
+ %44 = load i32* %0, align 4 ; [#uses=2]
+ %45 = shl i32 %44, 15 ; [#uses=1]
+ %not.i5 = xor i32 %45, -1 ; [#uses=1]
+ %46 = add nsw i32 %44, %not.i5 ; [#uses=2]
+ %47 = ashr i32 %46, 10 ; [#uses=1]
+ %48 = xor i32 %47, %46 ; [#uses=1]
+ %49 = mul i32 %48, 9 ; [#uses=2]
+ %50 = ashr i32 %49, 6 ; [#uses=1]
+ %51 = xor i32 %50, %49 ; [#uses=2]
+ %52 = shl i32 %51, 11 ; [#uses=1]
+ %not2.i6 = xor i32 %52, -1 ; [#uses=1]
+ %53 = add nsw i32 %51, %not2.i6 ; [#uses=2]
+ %54 = ashr i32 %53, 16 ; [#uses=1]
+ %55 = xor i32 %54, %53 ; [#uses=1]
+ %56 = load i32* %13, align 4 ; [#uses=1]
+ %57 = add nsw i32 %56, -1 ; [#uses=1]
+ %58 = and i32 %55, %57 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1
+ %hash.0 = phi i32 [ %58, %bb2 ], [ %16, %bb1 ] ; [#uses=2]
+ %59 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %60 = load i32** %59, align 4 ; [#uses=1]
+ %61 = getelementptr inbounds i32* %60, i32 %39 ; [#uses=1]
+ %62 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %this, i32 0, i32 0, i32 3 ; [#uses=2]
+ %63 = load i32** %62, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds i32* %63, i32 %hash.0 ; [#uses=1]
+ %65 = load i32* %64, align 4 ; [#uses=1]
+ store i32 %65, i32* %61, align 4
+ %66 = load i32** %62, align 4 ; [#uses=1]
+ %67 = getelementptr inbounds i32* %66, i32 %hash.0 ; [#uses=1]
+ store i32 %39, i32* %67, align 4
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN16btCollisionWorld25serializeCollisionObjectsEP12btSerializer(%struct.btCollisionWorld* nocapture %this, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = alloca %struct.btHashPtr, align 8 ; [#uses=2]
+ %serializedShapes = alloca %"struct.btHashMap<btHashPtr,btCollisionShape*>", align 8 ; [#uses=19]
+ %shape = alloca %struct.btCollisionShape*, align 4 ; [#uses=3]
+ %1 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = icmp sgt i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb.nph, label %bb5
+
+bb.nph: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb2, %bb.nph
+ %i.031 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb2 ] ; [#uses=2]
+ %tmp = add i32 %i.031, 1 ; [#uses=2]
+ %5 = load %struct.btCollisionObject*** %4, align 4 ; [#uses=1]
+ %scevgep33 = getelementptr %struct.btCollisionObject** %5, i32 %i.031 ; [#uses=1]
+ %6 = load %struct.btCollisionObject** %scevgep33, align 4 ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 19 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=1]
+ %9 = icmp eq i32 %8, 1 ; [#uses=1]
+ br i1 %9, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %10 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 0 ; [#uses=1]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 6 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to void (%struct.btCollisionObject*, %struct.btActionInterface*)* ; [#uses=1]
+ call void %14(%struct.btCollisionObject* %6, %struct.btActionInterface* %serializer)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %15 = load i32* %1, align 4 ; [#uses=1]
+ %16 = icmp sgt i32 %15, %tmp ; [#uses=1]
+ br i1 %16, label %bb, label %bb5
+
+bb5: ; preds = %bb2, %entry
+ %17 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %17, align 8
+ %18 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 0, i32 3 ; [#uses=2]
+ store i32* null, i32** %18, align 4
+ %19 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 0, i32 1 ; [#uses=2]
+ store i32 0, i32* %19, align 4
+ %20 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %20, align 8
+ %21 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %21, align 4
+ %22 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 1, i32 3 ; [#uses=2]
+ store i32* null, i32** %22, align 4
+ %23 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %23, align 4
+ %24 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %24, align 4
+ %25 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 8
+ %26 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 2, i32 3 ; [#uses=2]
+ store %struct.btCollisionShape** null, %struct.btCollisionShape*** %26, align 4
+ %27 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 2, i32 2 ; [#uses=2]
+ store i32 0, i32* %28, align 8
+ %29 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %29, align 4
+ %30 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 3, i32 3 ; [#uses=2]
+ store %struct.btHashPtr* null, %struct.btHashPtr** %30, align 4
+ %31 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %31, align 4
+ %32 = getelementptr inbounds %"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %32, align 4
+ %33 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btHashPtr* %0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb13
+
+bb6: ; preds = %bb13
+ %35 = load %struct.btCollisionObject*** %33, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %35, i32 %76 ; [#uses=1]
+ %36 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btCollisionObject* %36, i32 0, i32 9 ; [#uses=1]
+ %38 = load %struct.btCollisionShape** %37, align 4 ; [#uses=3]
+ store %struct.btCollisionShape* %38, %struct.btCollisionShape** %shape, align 4
+ %ptr.c.i27 = ptrtoint %struct.btCollisionShape* %38 to i32 ; [#uses=3]
+ %39 = shl i32 %ptr.c.i27, 15 ; [#uses=1]
+ %not.i.i.i = xor i32 %39, -1 ; [#uses=1]
+ %40 = add nsw i32 %ptr.c.i27, %not.i.i.i ; [#uses=2]
+ %41 = ashr i32 %40, 10 ; [#uses=1]
+ %42 = xor i32 %41, %40 ; [#uses=1]
+ %43 = mul i32 %42, 9 ; [#uses=2]
+ %44 = ashr i32 %43, 6 ; [#uses=1]
+ %45 = xor i32 %44, %43 ; [#uses=2]
+ %46 = shl i32 %45, 11 ; [#uses=1]
+ %not2.i.i.i = xor i32 %46, -1 ; [#uses=1]
+ %47 = add nsw i32 %45, %not2.i.i.i ; [#uses=2]
+ %48 = ashr i32 %47, 16 ; [#uses=1]
+ %49 = xor i32 %48, %47 ; [#uses=1]
+ %50 = load i32* %28, align 8 ; [#uses=1]
+ %51 = add nsw i32 %50, -1 ; [#uses=1]
+ %52 = and i32 %49, %51 ; [#uses=2]
+ %53 = load i32* %19, align 4 ; [#uses=1]
+ %54 = icmp ugt i32 %53, %52 ; [#uses=1]
+ %55 = bitcast %struct.btCollisionShape* %38 to i8* ; [#uses=1]
+ br i1 %54, label %bb1.i.i, label %bb9
+
+bb1.i.i: ; preds = %bb6
+ %56 = load i32** %18, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds i32* %56, i32 %52 ; [#uses=1]
+ br label %bb3.i.i
+
+bb2.i.i: ; preds = %bb4.i.i
+ %58 = load i32** %22, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds i32* %58, i32 %index.0.i.i ; [#uses=1]
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb2.i.i, %bb1.i.i
+ %index.0.in.i.i = phi i32* [ %57, %bb1.i.i ], [ %59, %bb2.i.i ] ; [#uses=1]
+ %index.0.i.i = load i32* %index.0.in.i.i, align 4 ; [#uses=4]
+ %60 = icmp eq i32 %index.0.i.i, -1 ; [#uses=1]
+ br i1 %60, label %bb9, label %bb4.i.i
+
+bb4.i.i: ; preds = %bb3.i.i
+ %61 = load %struct.btHashPtr** %30, align 4 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btHashPtr* %61, i32 %index.0.i.i ; [#uses=1]
+ %63 = bitcast %struct.btHashPtr* %62 to i8** ; [#uses=1]
+ %64 = load i8** %63, align 4 ; [#uses=1]
+ %65 = icmp eq i8* %55, %64 ; [#uses=1]
+ br i1 %65, label %invcont, label %bb2.i.i
+
+invcont: ; preds = %bb4.i.i
+ %66 = load %struct.btCollisionShape*** %26, align 4 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btCollisionShape** %66, i32 %index.0.i.i ; [#uses=1]
+ %68 = icmp eq %struct.btCollisionShape** %67, null ; [#uses=1]
+ br i1 %68, label %bb9, label %bb12
+
+bb9: ; preds = %invcont, %bb3.i.i, %bb6
+ store i32 %ptr.c.i27, i32* %34, align 8
+ invoke void @_ZN9btHashMapI9btHashPtrP16btCollisionShapeE6insertERKS0_RKS2_(%"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes, %struct.btHashPtr* %0, %struct.btCollisionShape** %shape)
+ to label %invcont10 unwind label %lpad
+
+invcont10: ; preds = %bb9
+ %69 = load %struct.btCollisionShape** %shape, align 4 ; [#uses=2]
+ %70 = getelementptr inbounds %struct.btCollisionShape* %69, i32 0, i32 0 ; [#uses=1]
+ %71 = load i32 (...)*** %70, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds i32 (...)** %71, i32 14 ; [#uses=1]
+ %73 = load i32 (...)** %72, align 4 ; [#uses=1]
+ %74 = bitcast i32 (...)* %73 to void (%struct.btCollisionShape*, %struct.btActionInterface*)* ; [#uses=1]
+ invoke void %74(%struct.btCollisionShape* %69, %struct.btActionInterface* %serializer)
+ to label %bb12 unwind label %lpad
+
+bb12: ; preds = %invcont10, %invcont
+ %75 = add nsw i32 %76, 1 ; [#uses=1]
+ br label %bb13
+
+bb13: ; preds = %bb12, %bb5
+ %76 = phi i32 [ 0, %bb5 ], [ %75, %bb12 ] ; [#uses=3]
+ %77 = load i32* %1, align 4 ; [#uses=1]
+ %78 = icmp sgt i32 %77, %76 ; [#uses=1]
+ br i1 %78, label %bb6, label %bb18
+
+invcont16: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb18: ; preds = %bb13
+ call void @_ZN9btHashMapI9btHashPtrP16btCollisionShapeED1Ev(%"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes)
+ ret void
+
+lpad: ; preds = %invcont10, %bb9
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select20 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN9btHashMapI9btHashPtrP16btCollisionShapeED1Ev(%"struct.btHashMap<btHashPtr,btCollisionShape*>"* %serializedShapes)
+ to label %invcont16 unwind label %lpad21
+
+lpad21: ; preds = %lpad
+ %eh_ptr22 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select24 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr22, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btSingleSweepCallbackC2EPK13btConvexShapeRK11btTransformS5_PK16btCollisionWorldRNS6_20ConvexResultCallbackEf(%struct.btSingleSweepCallback* %this, %struct.btConvexShape* %castShape, %struct.btTransform* nocapture %convexFromTrans, %struct.btTransform* nocapture %convexToTrans, %struct.btCollisionWorld* %world, %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, float %allowedPenetration) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV21btSingleSweepCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %1, align 4
+ %4 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=2]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=2]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=2]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 4
+ %52 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ %55 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ store float %57, float* %55, align 4
+ %58 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ store float %60, float* %58, align 4
+ %61 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ store float %63, float* %61, align 4
+ %64 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %64, align 4
+ %67 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ store float %69, float* %67, align 4
+ %70 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %70, align 4
+ %73 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ store float %75, float* %73, align 4
+ %76 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ store float %78, float* %76, align 4
+ %79 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ store float %81, float* %79, align 4
+ %82 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %82, align 4
+ %85 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=2]
+ store float %87, float* %85, align 4
+ %88 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=2]
+ store float %90, float* %88, align 4
+ %91 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=2]
+ store float %93, float* %91, align 4
+ %94 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %94, align 4
+ %97 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btCollisionWorld* %world, %struct.btCollisionWorld** %97, align 4
+ %98 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 5 ; [#uses=1]
+ store %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, %"struct.btCollisionWorld::ConvexResultCallback"** %98, align 4
+ %99 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 6 ; [#uses=1]
+ store float %allowedPenetration, float* %99, align 4
+ %100 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 7 ; [#uses=1]
+ store %struct.btConvexShape* %castShape, %struct.btConvexShape** %100, align 4
+ %101 = fsub float %93, %45 ; [#uses=4]
+ %102 = fsub float %90, %42 ; [#uses=4]
+ %103 = fsub float %87, %39 ; [#uses=4]
+ %104 = fmul float %103, %103 ; [#uses=1]
+ %105 = fmul float %102, %102 ; [#uses=1]
+ %106 = fadd float %104, %105 ; [#uses=1]
+ %107 = fmul float %101, %101 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = tail call float @sqrtf(float %108) nounwind readonly ; [#uses=1]
+ %110 = fdiv float 1.000000e+00, %109 ; [#uses=3]
+ %111 = fmul float %101, %110 ; [#uses=3]
+ %112 = fmul float %102, %110 ; [#uses=3]
+ %113 = fmul float %103, %110 ; [#uses=3]
+ %114 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %115 = fcmp une float %113, 0.000000e+00 ; [#uses=1]
+ br i1 %115, label %bb, label %bb2
+
+bb: ; preds = %entry
+ %116 = fdiv float 1.000000e+00, %113 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb, %entry
+ %117 = phi float [ %116, %bb ], [ 0x43ABC16D60000000, %entry ] ; [#uses=2]
+ store float %117, float* %114, align 4
+ %118 = fcmp une float %112, 0.000000e+00 ; [#uses=1]
+ br i1 %118, label %bb3, label %bb5
+
+bb3: ; preds = %bb2
+ %119 = fdiv float 1.000000e+00, %112 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb3, %bb2
+ %120 = phi float [ %119, %bb3 ], [ 0x43ABC16D60000000, %bb2 ] ; [#uses=2]
+ %121 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %120, float* %121, align 4
+ %122 = fcmp une float %111, 0.000000e+00 ; [#uses=1]
+ br i1 %122, label %bb6, label %bb8
+
+bb6: ; preds = %bb5
+ %123 = fdiv float 1.000000e+00, %111 ; [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb5
+ %iftmp.368.0 = phi float [ %123, %bb6 ], [ 0x43ABC16D60000000, %bb5 ] ; [#uses=2]
+ %124 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %iftmp.368.0, float* %124, align 4
+ %125 = fcmp olt float %117, 0.000000e+00 ; [#uses=1]
+ %126 = zext i1 %125 to i32 ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 0, i32 2, i32 0 ; [#uses=1]
+ store i32 %126, i32* %127, align 4
+ %128 = fcmp olt float %120, 0.000000e+00 ; [#uses=1]
+ %129 = zext i1 %128 to i32 ; [#uses=1]
+ %130 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 %129, i32* %130, align 4
+ %131 = fcmp olt float %iftmp.368.0, 0.000000e+00 ; [#uses=1]
+ %132 = zext i1 %131 to i32 ; [#uses=1]
+ %133 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 %132, i32* %133, align 4
+ %134 = fmul float %113, %103 ; [#uses=1]
+ %135 = fmul float %112, %102 ; [#uses=1]
+ %136 = fadd float %134, %135 ; [#uses=1]
+ %137 = fmul float %111, %101 ; [#uses=1]
+ %138 = fadd float %136, %137 ; [#uses=1]
+ %139 = getelementptr inbounds %struct.btSingleSweepCallback* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %138, float* %139, align 4
+ ret void
+}
+
+; [#uses=17]
+define linkonce_odr void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %this, %struct.btQuaternion* nocapture %q) nounwind align 2 {
+entry:
+ %temp = alloca [4 x float], align 4 ; [#uses=11]
+ %0 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fadd float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=3]
+ %7 = fadd float %4, %6 ; [#uses=2]
+ %8 = fcmp ogt float %7, 0.000000e+00 ; [#uses=1]
+ br i1 %8, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %9 = fadd float %7, 1.000000e+00 ; [#uses=1]
+ %10 = call float @sqrtf(float %9) nounwind readonly ; [#uses=2]
+ %11 = fmul float %10, 5.000000e-01 ; [#uses=2]
+ %12 = getelementptr inbounds [4 x float]* %temp, i32 0, i32 3 ; [#uses=1]
+ store float %11, float* %12, align 4
+ %13 = fdiv float 5.000000e-01, %10 ; [#uses=3]
+ %14 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fsub float %15, %17 ; [#uses=1]
+ %19 = fmul float %18, %13 ; [#uses=2]
+ %20 = getelementptr inbounds [4 x float]* %temp, i32 0, i32 0 ; [#uses=1]
+ store float %19, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fsub float %22, %24 ; [#uses=1]
+ %26 = fmul float %25, %13 ; [#uses=2]
+ %27 = getelementptr inbounds [4 x float]* %temp, i32 0, i32 1 ; [#uses=1]
+ store float %26, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = fsub float %29, %31 ; [#uses=1]
+ %33 = fmul float %32, %13 ; [#uses=2]
+ %34 = getelementptr inbounds [4 x float]* %temp, i32 0, i32 2 ; [#uses=1]
+ store float %33, float* %34, align 4
+ br label %bb12
+
+bb1: ; preds = %entry
+ %35 = fcmp olt float %1, %3 ; [#uses=1]
+ br i1 %35, label %bb3, label %bb7
+
+bb3: ; preds = %bb1
+ %36 = fcmp olt float %3, %6 ; [#uses=1]
+ %iftmp.50.0 = select i1 %36, i32 2, i32 1 ; [#uses=1]
+ br label %bb11
+
+bb7: ; preds = %bb1
+ %37 = fcmp olt float %1, %6 ; [#uses=1]
+ %iftmp.51.0 = select i1 %37, i32 2, i32 0 ; [#uses=1]
+ br label %bb11
+
+bb11: ; preds = %bb7, %bb3
+ %iftmp.49.0 = phi i32 [ %iftmp.50.0, %bb3 ], [ %iftmp.51.0, %bb7 ] ; [#uses=9]
+ %38 = add nsw i32 %iftmp.49.0, 1 ; [#uses=1]
+ %39 = srem i32 %38, 3 ; [#uses=7]
+ %40 = add nsw i32 %iftmp.49.0, 2 ; [#uses=1]
+ %41 = srem i32 %40, 3 ; [#uses=7]
+ %42 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %iftmp.49.0, i32 0, i32 %iftmp.49.0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %39, i32 0, i32 %39 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fsub float %43, %45 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %41, i32 0, i32 %41 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = fsub float %46, %48 ; [#uses=1]
+ %50 = fadd float %49, 1.000000e+00 ; [#uses=1]
+ %51 = call float @sqrtf(float %50) nounwind readonly ; [#uses=2]
+ %52 = fmul float %51, 5.000000e-01 ; [#uses=1]
+ %53 = getelementptr inbounds [4 x float]* %temp, i32 0, i32 %iftmp.49.0 ; [#uses=1]
+ store float %52, float* %53, align 4
+ %54 = fdiv float 5.000000e-01, %51 ; [#uses=3]
+ %55 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %41, i32 0, i32 %39 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %39, i32 0, i32 %41 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = fsub float %56, %58 ; [#uses=1]
+ %60 = fmul float %59, %54 ; [#uses=1]
+ %61 = getelementptr inbounds [4 x float]* %temp, i32 0, i32 3 ; [#uses=2]
+ store float %60, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %39, i32 0, i32 %iftmp.49.0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %iftmp.49.0, i32 0, i32 %39 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ %66 = fadd float %63, %65 ; [#uses=1]
+ %67 = fmul float %66, %54 ; [#uses=1]
+ %68 = getelementptr inbounds [4 x float]* %temp, i32 0, i32 %39 ; [#uses=1]
+ store float %67, float* %68, align 4
+ %69 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %41, i32 0, i32 %iftmp.49.0 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %iftmp.49.0, i32 0, i32 %41 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fadd float %70, %72 ; [#uses=1]
+ %74 = fmul float %73, %54 ; [#uses=1]
+ %75 = getelementptr inbounds [4 x float]* %temp, i32 0, i32 %41 ; [#uses=1]
+ store float %74, float* %75, align 4
+ %.phi.trans.insert = getelementptr inbounds [4 x float]* %temp, i32 0, i32 0 ; [#uses=1]
+ %.pre = load float* %.phi.trans.insert, align 4 ; [#uses=1]
+ %.phi.trans.insert13 = getelementptr inbounds [4 x float]* %temp, i32 0, i32 1 ; [#uses=1]
+ %.pre14 = load float* %.phi.trans.insert13, align 4 ; [#uses=1]
+ %.phi.trans.insert15 = getelementptr inbounds [4 x float]* %temp, i32 0, i32 2 ; [#uses=1]
+ %.pre16 = load float* %.phi.trans.insert15, align 4 ; [#uses=1]
+ %.pre18 = load float* %61, align 4 ; [#uses=1]
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb
+ %76 = phi float [ %.pre18, %bb11 ], [ %11, %bb ] ; [#uses=1]
+ %77 = phi float [ %.pre16, %bb11 ], [ %33, %bb ] ; [#uses=1]
+ %78 = phi float [ %.pre14, %bb11 ], [ %26, %bb ] ; [#uses=1]
+ %79 = phi float [ %.pre, %bb11 ], [ %19, %bb ] ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btQuaternion* %q, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %79, float* %80, align 4
+ %81 = getelementptr inbounds %struct.btQuaternion* %q, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %78, float* %81, align 4
+ %82 = getelementptr inbounds %struct.btQuaternion* %q, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %77, float* %82, align 4
+ %83 = getelementptr inbounds %struct.btQuaternion* %q, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %76, float* %83, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0E_0v(%struct..4BridgeTriangleConvexcastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV28btTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct..4BridgeTriangleConvexcastCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1E_0v(%struct..4BridgeTriangleConvexcastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV28btTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD2E_0v(%struct..4BridgeTriangleConvexcastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV28btTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD0Ev(%struct..3BridgeTriangleConvexcastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV28btTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct..3BridgeTriangleConvexcastCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD1Ev(%struct..3BridgeTriangleConvexcastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV28btTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfEN32BridgeTriangleConvexcastCallbackD2Ev(%struct..3BridgeTriangleConvexcastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV28btTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0E_0v(%struct..1BridgeTriangleRaycastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct..1BridgeTriangleRaycastCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1E_0v(%struct..1BridgeTriangleRaycastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD2E_0v(%struct..1BridgeTriangleRaycastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD0Ev(%struct..0BridgeTriangleRaycastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct..0BridgeTriangleRaycastCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD1Ev(%struct..0BridgeTriangleRaycastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEEN29BridgeTriangleRaycastCallbackD2Ev(%struct..0BridgeTriangleRaycastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btCollisionWorld15contactPairTestEP17btCollisionObjectS1_RNS_21ContactResultCallbackE(%struct.btCollisionWorld* %this, %struct.btCollisionObject* %colObjA, %struct.btCollisionObject* %colObjB, %"struct.btCollisionWorld::ContactResultCallback"* %resultCallback) align 2 {
+entry:
+ %contactPointResult = alloca %struct.btBridgedManifoldResult, align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 2 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to %struct.btCollisionAlgorithm* (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btPersistentManifold*)* ; [#uses=1]
+ %7 = call %struct.btCollisionAlgorithm* %6(%struct.btActionInterface* %1, %struct.btCollisionObject* %colObjA, %struct.btCollisionObject* %colObjB, %struct.btPersistentManifold* null) ; [#uses=5]
+ %8 = icmp eq %struct.btCollisionAlgorithm* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btBridgedManifoldResult* %contactPointResult, i32 0, i32 0 ; [#uses=2]
+ call void @_ZN16btManifoldResultC2EP17btCollisionObjectS1_(%struct.btManifoldResult* %9, %struct.btCollisionObject* %colObjA, %struct.btCollisionObject* %colObjB)
+ %10 = getelementptr inbounds %struct.btBridgedManifoldResult* %contactPointResult, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV23btBridgedManifoldResult, i32 0, i32 2), i32 (...)*** %10, align 8
+ %11 = getelementptr inbounds %struct.btBridgedManifoldResult* %contactPointResult, i32 0, i32 1 ; [#uses=1]
+ store %"struct.btCollisionWorld::ContactResultCallback"* %resultCallback, %"struct.btCollisionWorld::ContactResultCallback"** %11, align 8
+ %12 = getelementptr inbounds %struct.btCollisionAlgorithm* %7, i32 0, i32 0 ; [#uses=2]
+ %13 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 2 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 3 ; [#uses=1]
+ %17 = bitcast i32 (...)* %15 to void (%struct.btCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* ; [#uses=1]
+ invoke void %17(%struct.btCollisionAlgorithm* %7, %struct.btCollisionObject* %colObjA, %struct.btCollisionObject* %colObjB, %struct.btDispatcherInfo* %16, %struct.btManifoldResult* %9)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %18 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = bitcast i32 (...)* %19 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ invoke void %20(%struct.btCollisionAlgorithm* %7)
+ to label %invcont1 unwind label %lpad
+
+invcont1: ; preds = %invcont
+ %21 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btActionInterface* %21, i32 0, i32 0 ; [#uses=1]
+ %23 = load i32 (...)*** %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds i32 (...)** %23, i32 13 ; [#uses=1]
+ %25 = load i32 (...)** %24, align 4 ; [#uses=1]
+ %26 = bitcast i32 (...)* %25 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %27 = bitcast %struct.btCollisionAlgorithm* %7 to i8* ; [#uses=1]
+ invoke void %26(%struct.btActionInterface* %21, i8* %27)
+ to label %bb4 unwind label %lpad
+
+bb4: ; preds = %invcont1, %entry
+ ret void
+
+lpad: ; preds = %invcont1, %invcont, %bb
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV23btBridgedManifoldResult, i32 0, i32 2), i32 (...)*** %10, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=13]
+declare float @acosf(float) nounwind readonly
+
+; [#uses=7]
+define linkonce_odr void @_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(%struct.btTransform* nocapture %transform0, %struct.btTransform* nocapture %transform1, %struct.btQuadWord* nocapture %axis, float* nocapture %angle) nounwind {
+entry:
+ %dmat = alloca %struct.btMatrix3x3, align 8 ; [#uses=13]
+ %dorn = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btTransform* %transform0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=4]
+ %2 = getelementptr inbounds %struct.btTransform* %transform0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %transform0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=4]
+ %7 = getelementptr inbounds %struct.btTransform* %transform0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=4]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fsub float %4, %9 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btTransform* %transform0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=4]
+ %13 = fmul float %12, %8 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %transform0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=4]
+ %16 = fmul float %1, %15 ; [#uses=1]
+ %17 = fsub float %13, %16 ; [#uses=2]
+ %18 = fmul float %6, %15 ; [#uses=1]
+ %19 = fmul float %12, %3 ; [#uses=1]
+ %20 = fsub float %18, %19 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btTransform* %transform0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=5]
+ %23 = fmul float %22, %20 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %transform0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=5]
+ %26 = fmul float %25, %17 ; [#uses=1]
+ %27 = fadd float %23, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btTransform* %transform0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=5]
+ %30 = fmul float %29, %10 ; [#uses=1]
+ %31 = fadd float %27, %30 ; [#uses=1]
+ %32 = fdiv float 1.000000e+00, %31 ; [#uses=9]
+ %33 = fmul float %22, %6 ; [#uses=1]
+ %34 = fmul float %25, %1 ; [#uses=1]
+ %35 = fsub float %33, %34 ; [#uses=1]
+ %36 = fmul float %35, %32 ; [#uses=3]
+ %37 = fmul float %25, %8 ; [#uses=1]
+ %38 = fmul float %22, %3 ; [#uses=1]
+ %39 = fsub float %37, %38 ; [#uses=1]
+ %40 = fmul float %39, %32 ; [#uses=3]
+ %41 = fmul float %10, %32 ; [#uses=3]
+ %42 = fmul float %29, %1 ; [#uses=1]
+ %43 = fmul float %22, %12 ; [#uses=1]
+ %44 = fsub float %42, %43 ; [#uses=1]
+ %45 = fmul float %44, %32 ; [#uses=3]
+ %46 = fmul float %22, %15 ; [#uses=1]
+ %47 = fmul float %29, %8 ; [#uses=1]
+ %48 = fsub float %46, %47 ; [#uses=1]
+ %49 = fmul float %48, %32 ; [#uses=3]
+ %50 = fmul float %17, %32 ; [#uses=3]
+ %51 = fmul float %25, %12 ; [#uses=1]
+ %52 = fmul float %29, %6 ; [#uses=1]
+ %53 = fsub float %51, %52 ; [#uses=1]
+ %54 = fmul float %53, %32 ; [#uses=3]
+ %55 = fmul float %29, %3 ; [#uses=1]
+ %56 = fmul float %25, %15 ; [#uses=1]
+ %57 = fsub float %55, %56 ; [#uses=1]
+ %58 = fmul float %57, %32 ; [#uses=3]
+ %59 = fmul float %20, %32 ; [#uses=3]
+ %60 = getelementptr inbounds %struct.btTransform* %transform1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=3]
+ %62 = fmul float %54, %61 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btTransform* %transform1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=3]
+ %65 = fmul float %45, %64 ; [#uses=1]
+ %66 = fadd float %62, %65 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btTransform* %transform1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=3]
+ %69 = fmul float %36, %68 ; [#uses=1]
+ %70 = fadd float %66, %69 ; [#uses=1]
+ %71 = fmul float %58, %61 ; [#uses=1]
+ %72 = fmul float %49, %64 ; [#uses=1]
+ %73 = fadd float %71, %72 ; [#uses=1]
+ %74 = fmul float %40, %68 ; [#uses=1]
+ %75 = fadd float %73, %74 ; [#uses=1]
+ %76 = fmul float %59, %61 ; [#uses=1]
+ %77 = fmul float %50, %64 ; [#uses=1]
+ %78 = fadd float %76, %77 ; [#uses=1]
+ %79 = fmul float %41, %68 ; [#uses=1]
+ %80 = fadd float %78, %79 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btTransform* %transform1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=3]
+ %83 = fmul float %54, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btTransform* %transform1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=3]
+ %86 = fmul float %45, %85 ; [#uses=1]
+ %87 = fadd float %83, %86 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btTransform* %transform1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=3]
+ %90 = fmul float %36, %89 ; [#uses=1]
+ %91 = fadd float %87, %90 ; [#uses=1]
+ %92 = fmul float %58, %82 ; [#uses=1]
+ %93 = fmul float %49, %85 ; [#uses=1]
+ %94 = fadd float %92, %93 ; [#uses=1]
+ %95 = fmul float %40, %89 ; [#uses=1]
+ %96 = fadd float %94, %95 ; [#uses=1]
+ %97 = fmul float %59, %82 ; [#uses=1]
+ %98 = fmul float %50, %85 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=1]
+ %100 = fmul float %41, %89 ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btTransform* %transform1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %103 = load float* %102, align 4 ; [#uses=3]
+ %104 = fmul float %54, %103 ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btTransform* %transform1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %106 = load float* %105, align 4 ; [#uses=3]
+ %107 = fmul float %45, %106 ; [#uses=1]
+ %108 = fadd float %104, %107 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btTransform* %transform1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %110 = load float* %109, align 4 ; [#uses=3]
+ %111 = fmul float %36, %110 ; [#uses=1]
+ %112 = fadd float %108, %111 ; [#uses=1]
+ %113 = fmul float %58, %103 ; [#uses=1]
+ %114 = fmul float %49, %106 ; [#uses=1]
+ %115 = fadd float %113, %114 ; [#uses=1]
+ %116 = fmul float %40, %110 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=1]
+ %118 = fmul float %59, %103 ; [#uses=1]
+ %119 = fmul float %50, %106 ; [#uses=1]
+ %120 = fadd float %118, %119 ; [#uses=1]
+ %121 = fmul float %41, %110 ; [#uses=1]
+ %122 = fadd float %120, %121 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btMatrix3x3* %dmat, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %122, float* %123, align 8
+ %124 = getelementptr inbounds %struct.btMatrix3x3* %dmat, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %117, float* %124, align 4
+ %125 = getelementptr inbounds %struct.btMatrix3x3* %dmat, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %112, float* %125, align 8
+ %126 = getelementptr inbounds %struct.btMatrix3x3* %dmat, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btMatrix3x3* %dmat, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %101, float* %127, align 8
+ %128 = getelementptr inbounds %struct.btMatrix3x3* %dmat, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %96, float* %128, align 4
+ %129 = getelementptr inbounds %struct.btMatrix3x3* %dmat, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %91, float* %129, align 8
+ %130 = getelementptr inbounds %struct.btMatrix3x3* %dmat, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %130, align 4
+ %131 = getelementptr inbounds %struct.btMatrix3x3* %dmat, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %80, float* %131, align 8
+ %132 = getelementptr inbounds %struct.btMatrix3x3* %dmat, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %75, float* %132, align 4
+ %133 = getelementptr inbounds %struct.btMatrix3x3* %dmat, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %70, float* %133, align 8
+ %134 = getelementptr inbounds %struct.btMatrix3x3* %dmat, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %134, align 4
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %dmat, %struct.btQuaternion* %dorn) nounwind
+ %135 = getelementptr inbounds %struct.btQuaternion* %dorn, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %136 = load float* %135, align 8 ; [#uses=3]
+ %137 = fmul float %136, %136 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btQuaternion* %dorn, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %139 = load float* %138, align 4 ; [#uses=3]
+ %140 = fmul float %139, %139 ; [#uses=1]
+ %141 = fadd float %137, %140 ; [#uses=1]
+ %142 = getelementptr inbounds %struct.btQuaternion* %dorn, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %143 = load float* %142, align 8 ; [#uses=3]
+ %144 = fmul float %143, %143 ; [#uses=1]
+ %145 = fadd float %141, %144 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btQuaternion* %dorn, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %147 = load float* %146, align 4 ; [#uses=3]
+ %148 = fmul float %147, %147 ; [#uses=1]
+ %149 = fadd float %145, %148 ; [#uses=1]
+ %150 = call float @sqrtf(float %149) nounwind readonly ; [#uses=1]
+ %151 = fdiv float 1.000000e+00, %150 ; [#uses=4]
+ %152 = fmul float %136, %151 ; [#uses=5]
+ store float %152, float* %135, align 8
+ %153 = fmul float %139, %151 ; [#uses=5]
+ store float %153, float* %138, align 4
+ %154 = fmul float %143, %151 ; [#uses=5]
+ store float %154, float* %142, align 8
+ %155 = fmul float %147, %151 ; [#uses=3]
+ store float %155, float* %146, align 4
+ %156 = fcmp olt float %155, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i.i = select i1 %156, float -1.000000e+00, float %155 ; [#uses=2]
+ %157 = fcmp ogt float %x_addr.0.i.i, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i.i = select i1 %157, float 1.000000e+00, float %x_addr.0.i.i ; [#uses=1]
+ %158 = call float @acosf(float %x_addr.1.i.i) nounwind readonly ; [#uses=1]
+ %159 = fmul float %158, 2.000000e+00 ; [#uses=1]
+ store float %159, float* %angle, align 4
+ %160 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %152, float* %160, align 4
+ %161 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %153, float* %161, align 4
+ %162 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %154, float* %162, align 4
+ %163 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %163, align 4
+ %164 = fmul float %152, %152 ; [#uses=1]
+ %165 = fmul float %153, %153 ; [#uses=1]
+ %166 = fadd float %164, %165 ; [#uses=1]
+ %167 = fmul float %154, %154 ; [#uses=1]
+ %168 = fadd float %166, %167 ; [#uses=2]
+ %169 = fcmp olt float %168, 0x3D10000000000000 ; [#uses=1]
+ br i1 %169, label %bb, label %bb1
+
+bb: ; preds = %entry
+ store float 1.000000e+00, float* %160, align 4
+ store float 0.000000e+00, float* %161, align 4
+ store float 0.000000e+00, float* %162, align 4
+ store float 0.000000e+00, float* %163, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %170 = call float @sqrtf(float %168) nounwind readonly ; [#uses=1]
+ %171 = fdiv float 1.000000e+00, %170 ; [#uses=3]
+ %172 = fmul float %152, %171 ; [#uses=1]
+ store float %172, float* %160, align 4
+ %173 = fmul float %153, %171 ; [#uses=1]
+ store float %173, float* %161, align 4
+ %174 = fmul float %154, %171 ; [#uses=1]
+ store float %174, float* %162, align 4
+ ret void
+}
+
+; [#uses=4]
+define void @_ZNK16btCollisionWorld15convexSweepTestEPK13btConvexShapeRK11btTransformS5_RNS_20ConvexResultCallbackEf(%struct.btCollisionWorld* %this, %struct.btConvexShape* %castShape, %struct.btTransform* nocapture %convexFromWorld, %struct.btTransform* nocapture %convexToWorld, %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, float %allowedCcdPenetration) align 2 {
+invcont:
+ %axis.i = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %angle.i = alloca float, align 4 ; [#uses=2]
+ %0 = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %convexFromTrans = alloca %struct.btTransform, align 8 ; [#uses=19]
+ %convexToTrans = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %castShapeAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %castShapeAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %convexCB = alloca %struct.btSingleSweepCallback, align 8 ; [#uses=4]
+ %angVel = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %zeroLinVel = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %R = alloca %struct.btTransform, align 8 ; [#uses=17]
+ call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([16 x i8]* @.str315, i32 0, i32 0))
+ %1 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %1, align 8
+ %4 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 8
+ %10 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 8
+ %16 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 8
+ %22 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 8
+ %28 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 8
+ %34 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 8
+ %40 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %43, align 8
+ %46 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 8
+ %52 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ %55 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ store float %57, float* %55, align 8
+ %58 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ store float %60, float* %58, align 4
+ %61 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ store float %63, float* %61, align 8
+ %64 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %64, align 4
+ %67 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ store float %69, float* %67, align 8
+ %70 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %70, align 4
+ %73 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ store float %75, float* %73, align 8
+ %76 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ store float %78, float* %76, align 4
+ %79 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ store float %81, float* %79, align 8
+ %82 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %82, align 4
+ %85 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ store float %87, float* %85, align 8
+ %88 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ store float %90, float* %88, align 4
+ %91 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ store float %93, float* %91, align 8
+ %94 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %94, align 4
+ call void @_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(%struct.btTransform* %convexFromTrans, %struct.btTransform* %convexToTrans, %struct.btQuadWord* %axis.i, float* %angle.i) nounwind
+ %97 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %98 = load float* %97, align 8 ; [#uses=1]
+ %99 = load float* %angle.i, align 4 ; [#uses=3]
+ %100 = fmul float %98, %99 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fmul float %102, %99 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %105 = load float* %104, align 8 ; [#uses=1]
+ %106 = fmul float %105, %99 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btQuadWord* %angVel, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %106, float* %107, align 8
+ %108 = getelementptr inbounds %struct.btQuadWord* %angVel, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %103, float* %108, align 4
+ %109 = getelementptr inbounds %struct.btQuadWord* %angVel, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %100, float* %109, align 8
+ %110 = getelementptr inbounds %struct.btQuadWord* %angVel, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %110, align 4
+ %111 = getelementptr inbounds %struct.btQuadWord* %zeroLinVel, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %111, align 8
+ %112 = getelementptr inbounds %struct.btQuadWord* %zeroLinVel, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btQuadWord* %zeroLinVel, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %113, align 8
+ %114 = getelementptr inbounds %struct.btQuadWord* %zeroLinVel, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %114, align 4
+ %115 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 1.000000e+00, float* %115, align 8
+ %116 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %116, align 4
+ %117 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %117, align 8
+ %118 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %118, align 4
+ %119 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %119, align 8
+ %120 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 1.000000e+00, float* %120, align 4
+ %121 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %121, align 8
+ %122 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %122, align 4
+ %123 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %123, align 8
+ %124 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %124, align 4
+ %125 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ store float 1.000000e+00, float* %125, align 8
+ %126 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %127, align 8
+ %128 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %128, align 4
+ %129 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %129, align 8
+ %130 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %130, align 4
+ %131 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %131, %struct.btQuaternion* %0) nounwind
+ %132 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %133 = load float* %132, align 8 ; [#uses=6]
+ %134 = fmul float %133, %133 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %136 = load float* %135, align 4 ; [#uses=5]
+ %137 = fmul float %136, %136 ; [#uses=1]
+ %138 = fadd float %134, %137 ; [#uses=1]
+ %139 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %140 = load float* %139, align 8 ; [#uses=4]
+ %141 = fmul float %140, %140 ; [#uses=1]
+ %142 = fadd float %138, %141 ; [#uses=1]
+ %143 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %144 = load float* %143, align 4 ; [#uses=5]
+ %145 = fmul float %144, %144 ; [#uses=1]
+ %146 = fadd float %142, %145 ; [#uses=1]
+ %147 = fdiv float 2.000000e+00, %146 ; [#uses=3]
+ %148 = fmul float %133, %147 ; [#uses=2]
+ %149 = fmul float %136, %147 ; [#uses=3]
+ %150 = fmul float %140, %147 ; [#uses=4]
+ %151 = fmul float %144, %148 ; [#uses=2]
+ %152 = fmul float %144, %149 ; [#uses=2]
+ %153 = fmul float %144, %150 ; [#uses=2]
+ %154 = fmul float %133, %148 ; [#uses=2]
+ %155 = fmul float %133, %149 ; [#uses=2]
+ %156 = fmul float %133, %150 ; [#uses=2]
+ %157 = fmul float %136, %149 ; [#uses=2]
+ %158 = fmul float %136, %150 ; [#uses=2]
+ %159 = fmul float %140, %150 ; [#uses=2]
+ %160 = fadd float %154, %157 ; [#uses=1]
+ %161 = fsub float 1.000000e+00, %160 ; [#uses=1]
+ %162 = fadd float %158, %151 ; [#uses=1]
+ %163 = fsub float %156, %152 ; [#uses=1]
+ %164 = fsub float %158, %151 ; [#uses=1]
+ %165 = fadd float %154, %159 ; [#uses=1]
+ %166 = fsub float 1.000000e+00, %165 ; [#uses=1]
+ %167 = fadd float %155, %153 ; [#uses=1]
+ %168 = fadd float %156, %152 ; [#uses=1]
+ %169 = fsub float %155, %153 ; [#uses=1]
+ %170 = fadd float %157, %159 ; [#uses=1]
+ %171 = fsub float 1.000000e+00, %170 ; [#uses=1]
+ store float %171, float* %115, align 8
+ store float %169, float* %116, align 4
+ store float %168, float* %117, align 8
+ store float 0.000000e+00, float* %118, align 4
+ store float %167, float* %119, align 8
+ store float %166, float* %120, align 4
+ store float %164, float* %121, align 8
+ store float 0.000000e+00, float* %122, align 4
+ store float %163, float* %123, align 8
+ store float %162, float* %124, align 4
+ store float %161, float* %125, align 8
+ store float 0.000000e+00, float* %126, align 4
+ %172 = getelementptr inbounds %struct.btConvexShape* %castShape, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZNK16btCollisionShape21calculateTemporalAabbERK11btTransformRK9btVector3S5_fRS3_S6_(%struct.btCollisionShape* %172, %struct.btTransform* %R, %struct.btQuadWord* %zeroLinVel, %struct.btQuadWord* %angVel, float 1.000000e+00, %struct.btQuadWord* %castShapeAabbMin, %struct.btQuadWord* %castShapeAabbMax)
+ to label %invcont1 unwind label %lpad
+
+invcont1: ; preds = %invcont
+ call void @_ZN21btSingleSweepCallbackC2EPK13btConvexShapeRK11btTransformS5_PK16btCollisionWorldRNS6_20ConvexResultCallbackEf(%struct.btSingleSweepCallback* %convexCB, %struct.btConvexShape* %castShape, %struct.btTransform* %convexFromWorld, %struct.btTransform* %convexToWorld, %struct.btCollisionWorld* %this, %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, float %allowedCcdPenetration) nounwind
+ %173 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 5 ; [#uses=1]
+ %174 = load %struct.btActionInterface** %173, align 4 ; [#uses=2]
+ %175 = getelementptr inbounds %struct.btActionInterface* %174, i32 0, i32 0 ; [#uses=1]
+ %176 = load i32 (...)*** %175, align 4 ; [#uses=1]
+ %177 = getelementptr inbounds i32 (...)** %176, i32 6 ; [#uses=1]
+ %178 = load i32 (...)** %177, align 4 ; [#uses=1]
+ %179 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1 ; [#uses=1]
+ %180 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1 ; [#uses=1]
+ %181 = bitcast i32 (...)* %178 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btBroadphaseRayCallback*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %182 = getelementptr inbounds %struct.btSingleSweepCallback* %convexCB, i32 0, i32 0 ; [#uses=1]
+ invoke void %181(%struct.btActionInterface* %174, %struct.btQuadWord* %180, %struct.btQuadWord* %179, %struct.btBroadphaseRayCallback* %182, %struct.btQuadWord* %castShapeAabbMin, %struct.btQuadWord* %castShapeAabbMax)
+ to label %bb3 unwind label %lpad11
+
+bb3: ; preds = %invcont1
+ %183 = getelementptr inbounds %struct.btSingleSweepCallback* %convexCB, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV21btSingleSweepCallback, i32 0, i32 2), i32 (...)*** %183, align 8
+ call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+invcont7: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+lpad: ; preds = %invcont
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select10 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad11: ; preds = %invcont1
+ %eh_ptr12 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select14 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr12, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %184 = getelementptr inbounds %struct.btSingleSweepCallback* %convexCB, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV21btSingleSweepCallback, i32 0, i32 2), i32 (...)*** %184, align 8
+ br label %ppad
+
+lpad15: ; preds = %ppad
+ %eh_ptr16 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select18 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr16, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %lpad11, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr12, %lpad11 ], [ %eh_ptr, %lpad ] ; [#uses=1]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont7 unwind label %lpad15
+}
+
+; [#uses=3]
+define void @_ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEf(%struct.btConvexShape* %castShape, %struct.btTransform* %convexFromTrans, %struct.btTransform* %convexToTrans, %struct.btCollisionObject* %collisionObject, %struct.btCollisionShape* %collisionShape, %struct.btTransform* %colObjWorldTransform, %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, float %allowedPenetration) align 2 {
+entry:
+ %castResult = alloca %"struct.btConvexCast::CastResult", align 8 ; [#uses=13]
+ %simplexSolver = alloca %struct.btVoronoiSimplexSolver, align 8 ; [#uses=3]
+ %gjkEpaPenetrationSolver = alloca %struct..0btMultiSapOverlapFilterCallback, align 8 ; [#uses=2]
+ %convexCaster1 = alloca %struct.btContinuousConvexCollision, align 8 ; [#uses=3]
+ %localConvexResult = alloca %"struct.btCollisionWorld::LocalConvexResult", align 8 ; [#uses=12]
+ %convexFromLocal = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %convexToLocal = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %rotationXform = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %tccb = alloca %struct..3BridgeTriangleConvexcastCallback, align 8 ; [#uses=8]
+ %boxMinLocal = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %boxMaxLocal = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %rotationXform34 = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %tccb35 = alloca %struct..4BridgeTriangleConvexcastCallback, align 8 ; [#uses=8]
+ %boxMinLocal36 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %boxMaxLocal37 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %rayAabbMinLocal = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %rayAabbMaxLocal = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %childWorldTrans = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %my_cb = alloca %struct..5LocalInfoAdder, align 8 ; [#uses=7]
+ %0 = getelementptr inbounds %struct.btCollisionShape* %collisionShape, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=4]
+ %2 = icmp slt i32 %1, 20 ; [#uses=1]
+ br i1 %2, label %bb, label %bb17
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN12btConvexCast10CastResultE, i32 0, i32 2), i32 (...)*** %3, align 8
+ %4 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 5 ; [#uses=2]
+ %5 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %5, align 8
+ %6 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 7 ; [#uses=1]
+ store float %allowedPenetration, float* %6, align 4
+ %7 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, i32 0, i32 1 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %4, align 4
+ %9 = bitcast %struct.btCollisionShape* %collisionShape to %struct.btConvexShape* ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %simplexSolver, i32 0, i32 8 ; [#uses=1]
+ store float 0x3F1A36E2E0000000, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %simplexSolver, i32 0, i32 10, i32 1, i32 0 ; [#uses=1]
+ store i8 0, i8* %11, align 4
+ %12 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %gjkEpaPenetrationSolver, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btGjkEpaPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** %12, align 8
+ %13 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %gjkEpaPenetrationSolver, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN27btContinuousConvexCollisionC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btContinuousConvexCollision* %convexCaster1, %struct.btConvexShape* %castShape, %struct.btConvexShape* %9, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %13)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %14 = getelementptr inbounds %struct.btContinuousConvexCollision* %convexCaster1, i32 0, i32 0 ; [#uses=3]
+ %15 = getelementptr inbounds %struct.btContinuousConvexCollision* %convexCaster1, i32 0, i32 0, i32 0 ; [#uses=3]
+ %16 = load i32 (...)*** %15, align 8 ; [#uses=1]
+ %17 = getelementptr inbounds i32 (...)** %16, i32 2 ; [#uses=1]
+ %18 = load i32 (...)** %17, align 4 ; [#uses=1]
+ %19 = bitcast i32 (...)* %18 to i8 (%struct.btActionInterface*, %struct.btTransform*, %struct.btTransform*, %struct.btTransform*, %struct.btTransform*, %"struct.btConvexCast::CastResult"*)* ; [#uses=1]
+ %20 = invoke zeroext i8 %19(%struct.btActionInterface* %14, %struct.btTransform* %convexFromTrans, %struct.btTransform* %convexToTrans, %struct.btTransform* %colObjWorldTransform, %struct.btTransform* %colObjWorldTransform, %"struct.btConvexCast::CastResult"* %castResult)
+ to label %invcont1 unwind label %lpad71 ; [#uses=1]
+
+invcont1: ; preds = %invcont
+ %toBool2 = icmp eq i8 %20, 0 ; [#uses=1]
+ br i1 %toBool2, label %bb11, label %bb3
+
+bb3: ; preds = %invcont1
+ %21 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %22 = load float* %21, align 4 ; [#uses=3]
+ %23 = fmul float %22, %22 ; [#uses=1]
+ %24 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %25 = load float* %24, align 4 ; [#uses=3]
+ %26 = fmul float %25, %25 ; [#uses=1]
+ %27 = fadd float %23, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %29 = load float* %28, align 4 ; [#uses=3]
+ %30 = fmul float %29, %29 ; [#uses=1]
+ %31 = fadd float %27, %30 ; [#uses=2]
+ %32 = fcmp ogt float %31, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %32, label %bb5, label %bb11
+
+bb5: ; preds = %bb3
+ %33 = load float* %4, align 4 ; [#uses=2]
+ %34 = load float* %7, align 4 ; [#uses=1]
+ %35 = fcmp olt float %33, %34 ; [#uses=1]
+ br i1 %35, label %bb6, label %bb11
+
+bb6: ; preds = %bb5
+ %36 = call float @sqrtf(float %31) nounwind readonly ; [#uses=1]
+ %37 = fdiv float 1.000000e+00, %36 ; [#uses=3]
+ %38 = fmul float %22, %37 ; [#uses=2]
+ store float %38, float* %21, align 4
+ %39 = fmul float %25, %37 ; [#uses=2]
+ store float %39, float* %24, align 4
+ %40 = fmul float %29, %37 ; [#uses=2]
+ store float %40, float* %28, align 4
+ %41 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %localConvexResult, i32 0, i32 0 ; [#uses=1]
+ store %struct.btCollisionObject* %collisionObject, %struct.btCollisionObject** %41, align 8
+ %42 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %localConvexResult, i32 0, i32 1 ; [#uses=1]
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %42, align 4
+ %43 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %localConvexResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %38, float* %43, align 8
+ %44 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %localConvexResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %39, float* %44, align 4
+ %45 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %localConvexResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %40, float* %45, align 8
+ %46 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %localConvexResult, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %47 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %localConvexResult, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %50 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 8
+ %52 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %localConvexResult, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %53 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ %55 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %localConvexResult, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %56 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ store float %57, float* %55, align 8
+ %58 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %localConvexResult, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %59 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ store float %60, float* %58, align 4
+ %61 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %localConvexResult, i32 0, i32 4 ; [#uses=1]
+ store float %33, float* %61, align 8
+ %62 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, i32 0, i32 0 ; [#uses=1]
+ %63 = load i32 (...)*** %62, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds i32 (...)** %63, i32 3 ; [#uses=1]
+ %65 = load i32 (...)** %64, align 4 ; [#uses=1]
+ %66 = bitcast i32 (...)* %65 to float (%"struct.btCollisionWorld::ConvexResultCallback"*, %"struct.btCollisionWorld::LocalConvexResult"*, i8)* ; [#uses=1]
+ %67 = invoke float %66(%"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, %"struct.btCollisionWorld::LocalConvexResult"* %localConvexResult, i8 zeroext 1)
+ to label %bb11 unwind label %lpad71 ; [#uses=0]
+
+bb11: ; preds = %bb6, %bb5, %bb3, %invcont1
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV27btContinuousConvexCollision, i32 0, i32 2), i32 (...)*** %15, align 8
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %14)
+ to label %bb16 unwind label %lpad
+
+bb16: ; preds = %bb48, %bb11
+ ret void
+
+bb17: ; preds = %entry
+ %68 = add i32 %1, -21 ; [#uses=1]
+ %69 = icmp ult i32 %68, 9 ; [#uses=1]
+ br i1 %69, label %bb19, label %bb48
+
+bb19: ; preds = %bb17
+ %70 = icmp eq i32 %1, 21 ; [#uses=1]
+ br i1 %70, label %bb21, label %bb30
+
+bb21: ; preds = %bb19
+ %71 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=6]
+ %81 = load float* %78, align 4 ; [#uses=6]
+ %82 = load float* %77, align 4 ; [#uses=6]
+ %83 = load float* %76, align 4 ; [#uses=6]
+ %84 = load float* %75, align 4 ; [#uses=6]
+ %85 = load float* %74, align 4 ; [#uses=6]
+ %86 = load float* %73, align 4 ; [#uses=6]
+ %87 = load float* %72, align 4 ; [#uses=6]
+ %88 = load float* %71, align 4 ; [#uses=6]
+ %89 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ %91 = fsub float -0.000000e+00, %90 ; [#uses=3]
+ %92 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ %94 = fsub float -0.000000e+00, %93 ; [#uses=3]
+ %95 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ %97 = fsub float -0.000000e+00, %96 ; [#uses=3]
+ %98 = fmul float %86, %97 ; [#uses=1]
+ %99 = fmul float %87, %94 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %88, %91 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=2]
+ %103 = fmul float %83, %97 ; [#uses=1]
+ %104 = fmul float %84, %94 ; [#uses=1]
+ %105 = fadd float %103, %104 ; [#uses=1]
+ %106 = fmul float %85, %91 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=2]
+ %108 = fmul float %80, %97 ; [#uses=1]
+ %109 = fmul float %81, %94 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = fmul float %82, %91 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=2]
+ %113 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %114 = load float* %113, align 4 ; [#uses=3]
+ %115 = fmul float %86, %114 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %117 = load float* %116, align 4 ; [#uses=3]
+ %118 = fmul float %87, %117 ; [#uses=1]
+ %119 = fadd float %115, %118 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %121 = load float* %120, align 4 ; [#uses=3]
+ %122 = fmul float %88, %121 ; [#uses=1]
+ %123 = fadd float %119, %122 ; [#uses=1]
+ %124 = fadd float %123, %102 ; [#uses=1]
+ %125 = fmul float %83, %114 ; [#uses=1]
+ %126 = fmul float %84, %117 ; [#uses=1]
+ %127 = fadd float %125, %126 ; [#uses=1]
+ %128 = fmul float %85, %121 ; [#uses=1]
+ %129 = fadd float %127, %128 ; [#uses=1]
+ %130 = fadd float %129, %107 ; [#uses=1]
+ %131 = fmul float %80, %114 ; [#uses=1]
+ %132 = fmul float %81, %117 ; [#uses=1]
+ %133 = fadd float %131, %132 ; [#uses=1]
+ %134 = fmul float %82, %121 ; [#uses=1]
+ %135 = fadd float %133, %134 ; [#uses=1]
+ %136 = fadd float %135, %112 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btQuadWord* %convexFromLocal, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %136, float* %137, align 8
+ %138 = getelementptr inbounds %struct.btQuadWord* %convexFromLocal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %130, float* %138, align 4
+ %139 = getelementptr inbounds %struct.btQuadWord* %convexFromLocal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %124, float* %139, align 8
+ %140 = getelementptr inbounds %struct.btQuadWord* %convexFromLocal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %140, align 4
+ %141 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %142 = load float* %141, align 4 ; [#uses=3]
+ %143 = fmul float %86, %142 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=3]
+ %146 = fmul float %87, %145 ; [#uses=1]
+ %147 = fadd float %143, %146 ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %149 = load float* %148, align 4 ; [#uses=3]
+ %150 = fmul float %88, %149 ; [#uses=1]
+ %151 = fadd float %147, %150 ; [#uses=1]
+ %152 = fadd float %151, %102 ; [#uses=1]
+ %153 = fmul float %83, %142 ; [#uses=1]
+ %154 = fmul float %84, %145 ; [#uses=1]
+ %155 = fadd float %153, %154 ; [#uses=1]
+ %156 = fmul float %85, %149 ; [#uses=1]
+ %157 = fadd float %155, %156 ; [#uses=1]
+ %158 = fadd float %157, %107 ; [#uses=1]
+ %159 = fmul float %80, %142 ; [#uses=1]
+ %160 = fmul float %81, %145 ; [#uses=1]
+ %161 = fadd float %159, %160 ; [#uses=1]
+ %162 = fmul float %82, %149 ; [#uses=1]
+ %163 = fadd float %161, %162 ; [#uses=1]
+ %164 = fadd float %163, %112 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btQuadWord* %convexToLocal, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %164, float* %165, align 8
+ %166 = getelementptr inbounds %struct.btQuadWord* %convexToLocal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %158, float* %166, align 4
+ %167 = getelementptr inbounds %struct.btQuadWord* %convexToLocal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %152, float* %167, align 8
+ %168 = getelementptr inbounds %struct.btQuadWord* %convexToLocal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %168, align 4
+ %169 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %170 = load float* %169, align 4 ; [#uses=3]
+ %171 = fmul float %170, %86 ; [#uses=1]
+ %172 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %173 = load float* %172, align 4 ; [#uses=3]
+ %174 = fmul float %173, %87 ; [#uses=1]
+ %175 = fadd float %171, %174 ; [#uses=1]
+ %176 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %177 = load float* %176, align 4 ; [#uses=3]
+ %178 = fmul float %177, %88 ; [#uses=1]
+ %179 = fadd float %175, %178 ; [#uses=1]
+ %180 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %181 = load float* %180, align 4 ; [#uses=3]
+ %182 = fmul float %181, %86 ; [#uses=1]
+ %183 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %184 = load float* %183, align 4 ; [#uses=3]
+ %185 = fmul float %184, %87 ; [#uses=1]
+ %186 = fadd float %182, %185 ; [#uses=1]
+ %187 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %188 = load float* %187, align 4 ; [#uses=3]
+ %189 = fmul float %188, %88 ; [#uses=1]
+ %190 = fadd float %186, %189 ; [#uses=1]
+ %191 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %192 = load float* %191, align 4 ; [#uses=3]
+ %193 = fmul float %192, %86 ; [#uses=1]
+ %194 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %195 = load float* %194, align 4 ; [#uses=3]
+ %196 = fmul float %195, %87 ; [#uses=1]
+ %197 = fadd float %193, %196 ; [#uses=1]
+ %198 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %199 = load float* %198, align 4 ; [#uses=3]
+ %200 = fmul float %199, %88 ; [#uses=1]
+ %201 = fadd float %197, %200 ; [#uses=1]
+ %202 = fmul float %170, %83 ; [#uses=1]
+ %203 = fmul float %173, %84 ; [#uses=1]
+ %204 = fadd float %202, %203 ; [#uses=1]
+ %205 = fmul float %177, %85 ; [#uses=1]
+ %206 = fadd float %204, %205 ; [#uses=1]
+ %207 = fmul float %181, %83 ; [#uses=1]
+ %208 = fmul float %184, %84 ; [#uses=1]
+ %209 = fadd float %207, %208 ; [#uses=1]
+ %210 = fmul float %188, %85 ; [#uses=1]
+ %211 = fadd float %209, %210 ; [#uses=1]
+ %212 = fmul float %192, %83 ; [#uses=1]
+ %213 = fmul float %195, %84 ; [#uses=1]
+ %214 = fadd float %212, %213 ; [#uses=1]
+ %215 = fmul float %199, %85 ; [#uses=1]
+ %216 = fadd float %214, %215 ; [#uses=1]
+ %217 = fmul float %170, %80 ; [#uses=1]
+ %218 = fmul float %173, %81 ; [#uses=1]
+ %219 = fadd float %217, %218 ; [#uses=1]
+ %220 = fmul float %177, %82 ; [#uses=1]
+ %221 = fadd float %219, %220 ; [#uses=1]
+ %222 = fmul float %181, %80 ; [#uses=1]
+ %223 = fmul float %184, %81 ; [#uses=1]
+ %224 = fadd float %222, %223 ; [#uses=1]
+ %225 = fmul float %188, %82 ; [#uses=1]
+ %226 = fadd float %224, %225 ; [#uses=1]
+ %227 = fmul float %192, %80 ; [#uses=1]
+ %228 = fmul float %195, %81 ; [#uses=1]
+ %229 = fadd float %227, %228 ; [#uses=1]
+ %230 = fmul float %199, %82 ; [#uses=1]
+ %231 = fadd float %229, %230 ; [#uses=1]
+ %232 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %231, float* %232, align 8
+ %233 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %226, float* %233, align 4
+ %234 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %221, float* %234, align 8
+ %235 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %235, align 4
+ %236 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %216, float* %236, align 8
+ %237 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %211, float* %237, align 4
+ %238 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %206, float* %238, align 8
+ %239 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %239, align 4
+ %240 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %201, float* %240, align 8
+ %241 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %190, float* %241, align 4
+ %242 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %179, float* %242, align 8
+ %243 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %243, align 4
+ %244 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %244, align 8
+ %245 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %245, align 4
+ %246 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %246, align 8
+ %247 = getelementptr inbounds %struct.btTransform* %rotationXform, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %247, align 4
+ %248 = bitcast %struct.btCollisionShape* %collisionShape to %struct.btTriangleMeshShape* ; [#uses=1]
+ %249 = getelementptr inbounds %struct.btCollisionShape* %collisionShape, i32 0, i32 0 ; [#uses=1]
+ %250 = load i32 (...)*** %249, align 4 ; [#uses=1]
+ %251 = getelementptr inbounds i32 (...)** %250, i32 11 ; [#uses=1]
+ %252 = load i32 (...)** %251, align 4 ; [#uses=1]
+ %253 = bitcast %struct.btCollisionShape* %collisionShape to %struct.btConcaveShape* ; [#uses=1]
+ %254 = bitcast i32 (...)* %252 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %255 = call float %254(%struct.btConcaveShape* %253) ; [#uses=1]
+ %256 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %tccb, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN28btTriangleConvexcastCallbackC2EPK13btConvexShapeRK11btTransformS5_S5_f(%struct.btTriangleConvexcastCallback* %256, %struct.btConvexShape* %castShape, %struct.btTransform* %convexFromTrans, %struct.btTransform* %convexToTrans, %struct.btTransform* %colObjWorldTransform, float %255)
+ %257 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %tccb, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %257, align 8
+ %258 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %tccb, i32 0, i32 1 ; [#uses=1]
+ store %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, %"struct.btCollisionWorld::ConvexResultCallback"** %258, align 8
+ %259 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %tccb, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionObject* %collisionObject, %struct.btCollisionObject** %259, align 4
+ %260 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %tccb, i32 0, i32 3 ; [#uses=1]
+ store %struct.btTriangleMeshShape* %248, %struct.btTriangleMeshShape** %260, align 8
+ %261 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, i32 0, i32 1 ; [#uses=1]
+ %262 = load float* %261, align 4 ; [#uses=1]
+ %263 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %tccb, i32 0, i32 0, i32 5 ; [#uses=1]
+ store float %262, float* %263, align 8
+ %264 = getelementptr inbounds %struct.btConvexShape* %castShape, i32 0, i32 0, i32 0 ; [#uses=1]
+ %265 = load i32 (...)*** %264, align 4 ; [#uses=1]
+ %266 = getelementptr inbounds i32 (...)** %265, i32 2 ; [#uses=1]
+ %267 = load i32 (...)** %266, align 4 ; [#uses=1]
+ %268 = bitcast i32 (...)* %267 to void (%struct.btConvexShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %268(%struct.btConvexShape* %castShape, %struct.btTransform* %rotationXform, %struct.btQuadWord* %boxMinLocal, %struct.btQuadWord* %boxMaxLocal)
+ to label %invcont22 unwind label %lpad79
+
+invcont22: ; preds = %bb21
+ %269 = bitcast %struct.btCollisionShape* %collisionShape to %struct.btBvhTriangleMeshShape* ; [#uses=1]
+ %270 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %tccb, i32 0, i32 0, i32 0 ; [#uses=2]
+ invoke void @_ZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_(%struct.btBvhTriangleMeshShape* %269, %struct.btActionInterface* %270, %struct.btQuadWord* %convexFromLocal, %struct.btQuadWord* %convexToLocal, %struct.btQuadWord* %boxMinLocal, %struct.btQuadWord* %boxMaxLocal)
+ to label %bb29 unwind label %lpad79
+
+bb29: ; preds = %invcont22
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV28btTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %257, align 8
+ call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %270)
+ ret void
+
+bb30: ; preds = %bb19
+ %271 = bitcast %struct.btCollisionShape* %collisionShape to %struct.btConcaveShape* ; [#uses=3]
+ %272 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %273 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %274 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %275 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %276 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %277 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %278 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %279 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %280 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %281 = load float* %280, align 4 ; [#uses=6]
+ %282 = load float* %279, align 4 ; [#uses=6]
+ %283 = load float* %278, align 4 ; [#uses=6]
+ %284 = load float* %277, align 4 ; [#uses=6]
+ %285 = load float* %276, align 4 ; [#uses=6]
+ %286 = load float* %275, align 4 ; [#uses=6]
+ %287 = load float* %274, align 4 ; [#uses=6]
+ %288 = load float* %273, align 4 ; [#uses=6]
+ %289 = load float* %272, align 4 ; [#uses=6]
+ %290 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %291 = load float* %290, align 4 ; [#uses=1]
+ %292 = fsub float -0.000000e+00, %291 ; [#uses=3]
+ %293 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %294 = load float* %293, align 4 ; [#uses=1]
+ %295 = fsub float -0.000000e+00, %294 ; [#uses=3]
+ %296 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %297 = load float* %296, align 4 ; [#uses=1]
+ %298 = fsub float -0.000000e+00, %297 ; [#uses=3]
+ %299 = fmul float %287, %298 ; [#uses=1]
+ %300 = fmul float %288, %295 ; [#uses=1]
+ %301 = fadd float %299, %300 ; [#uses=1]
+ %302 = fmul float %289, %292 ; [#uses=1]
+ %303 = fadd float %301, %302 ; [#uses=2]
+ %304 = fmul float %284, %298 ; [#uses=1]
+ %305 = fmul float %285, %295 ; [#uses=1]
+ %306 = fadd float %304, %305 ; [#uses=1]
+ %307 = fmul float %286, %292 ; [#uses=1]
+ %308 = fadd float %306, %307 ; [#uses=2]
+ %309 = fmul float %281, %298 ; [#uses=1]
+ %310 = fmul float %282, %295 ; [#uses=1]
+ %311 = fadd float %309, %310 ; [#uses=1]
+ %312 = fmul float %283, %292 ; [#uses=1]
+ %313 = fadd float %311, %312 ; [#uses=2]
+ %314 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %315 = load float* %314, align 4 ; [#uses=3]
+ %316 = fmul float %287, %315 ; [#uses=1]
+ %317 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %318 = load float* %317, align 4 ; [#uses=3]
+ %319 = fmul float %288, %318 ; [#uses=1]
+ %320 = fadd float %316, %319 ; [#uses=1]
+ %321 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %322 = load float* %321, align 4 ; [#uses=3]
+ %323 = fmul float %289, %322 ; [#uses=1]
+ %324 = fadd float %320, %323 ; [#uses=1]
+ %325 = fadd float %324, %303 ; [#uses=6]
+ %326 = fmul float %284, %315 ; [#uses=1]
+ %327 = fmul float %285, %318 ; [#uses=1]
+ %328 = fadd float %326, %327 ; [#uses=1]
+ %329 = fmul float %286, %322 ; [#uses=1]
+ %330 = fadd float %328, %329 ; [#uses=1]
+ %331 = fadd float %330, %308 ; [#uses=6]
+ %332 = fmul float %281, %315 ; [#uses=1]
+ %333 = fmul float %282, %318 ; [#uses=1]
+ %334 = fadd float %332, %333 ; [#uses=1]
+ %335 = fmul float %283, %322 ; [#uses=1]
+ %336 = fadd float %334, %335 ; [#uses=1]
+ %337 = fadd float %336, %313 ; [#uses=6]
+ %338 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %339 = load float* %338, align 4 ; [#uses=3]
+ %340 = fmul float %287, %339 ; [#uses=1]
+ %341 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %342 = load float* %341, align 4 ; [#uses=3]
+ %343 = fmul float %288, %342 ; [#uses=1]
+ %344 = fadd float %340, %343 ; [#uses=1]
+ %345 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %346 = load float* %345, align 4 ; [#uses=3]
+ %347 = fmul float %289, %346 ; [#uses=1]
+ %348 = fadd float %344, %347 ; [#uses=1]
+ %349 = fadd float %348, %303 ; [#uses=6]
+ %350 = fmul float %284, %339 ; [#uses=1]
+ %351 = fmul float %285, %342 ; [#uses=1]
+ %352 = fadd float %350, %351 ; [#uses=1]
+ %353 = fmul float %286, %346 ; [#uses=1]
+ %354 = fadd float %352, %353 ; [#uses=1]
+ %355 = fadd float %354, %308 ; [#uses=6]
+ %356 = fmul float %281, %339 ; [#uses=1]
+ %357 = fmul float %282, %342 ; [#uses=1]
+ %358 = fadd float %356, %357 ; [#uses=1]
+ %359 = fmul float %283, %346 ; [#uses=1]
+ %360 = fadd float %358, %359 ; [#uses=1]
+ %361 = fadd float %360, %313 ; [#uses=6]
+ %362 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %363 = load float* %362, align 4 ; [#uses=3]
+ %364 = fmul float %363, %287 ; [#uses=1]
+ %365 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %366 = load float* %365, align 4 ; [#uses=3]
+ %367 = fmul float %366, %288 ; [#uses=1]
+ %368 = fadd float %364, %367 ; [#uses=1]
+ %369 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %370 = load float* %369, align 4 ; [#uses=3]
+ %371 = fmul float %370, %289 ; [#uses=1]
+ %372 = fadd float %368, %371 ; [#uses=1]
+ %373 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %374 = load float* %373, align 4 ; [#uses=3]
+ %375 = fmul float %374, %287 ; [#uses=1]
+ %376 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %377 = load float* %376, align 4 ; [#uses=3]
+ %378 = fmul float %377, %288 ; [#uses=1]
+ %379 = fadd float %375, %378 ; [#uses=1]
+ %380 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %381 = load float* %380, align 4 ; [#uses=3]
+ %382 = fmul float %381, %289 ; [#uses=1]
+ %383 = fadd float %379, %382 ; [#uses=1]
+ %384 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %385 = load float* %384, align 4 ; [#uses=3]
+ %386 = fmul float %385, %287 ; [#uses=1]
+ %387 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %388 = load float* %387, align 4 ; [#uses=3]
+ %389 = fmul float %388, %288 ; [#uses=1]
+ %390 = fadd float %386, %389 ; [#uses=1]
+ %391 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %392 = load float* %391, align 4 ; [#uses=3]
+ %393 = fmul float %392, %289 ; [#uses=1]
+ %394 = fadd float %390, %393 ; [#uses=1]
+ %395 = fmul float %363, %284 ; [#uses=1]
+ %396 = fmul float %366, %285 ; [#uses=1]
+ %397 = fadd float %395, %396 ; [#uses=1]
+ %398 = fmul float %370, %286 ; [#uses=1]
+ %399 = fadd float %397, %398 ; [#uses=1]
+ %400 = fmul float %374, %284 ; [#uses=1]
+ %401 = fmul float %377, %285 ; [#uses=1]
+ %402 = fadd float %400, %401 ; [#uses=1]
+ %403 = fmul float %381, %286 ; [#uses=1]
+ %404 = fadd float %402, %403 ; [#uses=1]
+ %405 = fmul float %385, %284 ; [#uses=1]
+ %406 = fmul float %388, %285 ; [#uses=1]
+ %407 = fadd float %405, %406 ; [#uses=1]
+ %408 = fmul float %392, %286 ; [#uses=1]
+ %409 = fadd float %407, %408 ; [#uses=1]
+ %410 = fmul float %363, %281 ; [#uses=1]
+ %411 = fmul float %366, %282 ; [#uses=1]
+ %412 = fadd float %410, %411 ; [#uses=1]
+ %413 = fmul float %370, %283 ; [#uses=1]
+ %414 = fadd float %412, %413 ; [#uses=1]
+ %415 = fmul float %374, %281 ; [#uses=1]
+ %416 = fmul float %377, %282 ; [#uses=1]
+ %417 = fadd float %415, %416 ; [#uses=1]
+ %418 = fmul float %381, %283 ; [#uses=1]
+ %419 = fadd float %417, %418 ; [#uses=1]
+ %420 = fmul float %385, %281 ; [#uses=1]
+ %421 = fmul float %388, %282 ; [#uses=1]
+ %422 = fadd float %420, %421 ; [#uses=1]
+ %423 = fmul float %392, %283 ; [#uses=1]
+ %424 = fadd float %422, %423 ; [#uses=1]
+ %425 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %424, float* %425, align 8
+ %426 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %419, float* %426, align 4
+ %427 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %414, float* %427, align 8
+ %428 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %428, align 4
+ %429 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %409, float* %429, align 8
+ %430 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %404, float* %430, align 4
+ %431 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %399, float* %431, align 8
+ %432 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %432, align 4
+ %433 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %394, float* %433, align 8
+ %434 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %383, float* %434, align 4
+ %435 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %372, float* %435, align 8
+ %436 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %436, align 4
+ %437 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %437, align 8
+ %438 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %438, align 4
+ %439 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %439, align 8
+ %440 = getelementptr inbounds %struct.btTransform* %rotationXform34, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %440, align 4
+ %441 = getelementptr inbounds %struct.btCollisionShape* %collisionShape, i32 0, i32 0 ; [#uses=2]
+ %442 = load i32 (...)*** %441, align 4 ; [#uses=1]
+ %443 = getelementptr inbounds i32 (...)** %442, i32 11 ; [#uses=1]
+ %444 = load i32 (...)** %443, align 4 ; [#uses=1]
+ %445 = bitcast i32 (...)* %444 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %446 = call float %445(%struct.btConcaveShape* %271) ; [#uses=1]
+ %447 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %tccb35, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN28btTriangleConvexcastCallbackC2EPK13btConvexShapeRK11btTransformS5_S5_f(%struct.btTriangleConvexcastCallback* %447, %struct.btConvexShape* %castShape, %struct.btTransform* %convexFromTrans, %struct.btTransform* %convexToTrans, %struct.btTransform* %colObjWorldTransform, float %446)
+ %448 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %tccb35, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE32BridgeTriangleConvexcastCallback_0, i32 0, i32 2), i32 (...)*** %448, align 8
+ %449 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %tccb35, i32 0, i32 1 ; [#uses=1]
+ store %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, %"struct.btCollisionWorld::ConvexResultCallback"** %449, align 8
+ %450 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %tccb35, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionObject* %collisionObject, %struct.btCollisionObject** %450, align 4
+ %451 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %tccb35, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConcaveShape* %271, %struct.btConcaveShape** %451, align 8
+ %452 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, i32 0, i32 1 ; [#uses=1]
+ %453 = load float* %452, align 4 ; [#uses=1]
+ %454 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %tccb35, i32 0, i32 0, i32 5 ; [#uses=1]
+ store float %453, float* %454, align 8
+ %455 = getelementptr inbounds %struct.btConvexShape* %castShape, i32 0, i32 0, i32 0 ; [#uses=1]
+ %456 = load i32 (...)*** %455, align 4 ; [#uses=1]
+ %457 = getelementptr inbounds i32 (...)** %456, i32 2 ; [#uses=1]
+ %458 = load i32 (...)** %457, align 4 ; [#uses=1]
+ %459 = bitcast i32 (...)* %458 to void (%struct.btConvexShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %459(%struct.btConvexShape* %castShape, %struct.btTransform* %rotationXform34, %struct.btQuadWord* %boxMinLocal36, %struct.btQuadWord* %boxMaxLocal37)
+ to label %invcont38 unwind label %lpad87
+
+invcont38: ; preds = %bb30
+ %460 = getelementptr inbounds %struct.btQuadWord* %rayAabbMinLocal, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %337, float* %460, align 8
+ %461 = getelementptr inbounds %struct.btQuadWord* %rayAabbMinLocal, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %331, float* %461, align 4
+ %462 = getelementptr inbounds %struct.btQuadWord* %rayAabbMinLocal, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %325, float* %462, align 8
+ %463 = getelementptr inbounds %struct.btQuadWord* %rayAabbMinLocal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %463, align 4
+ %464 = fcmp olt float %361, %337 ; [#uses=1]
+ br i1 %464, label %bb.i.i120, label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+bb.i.i120: ; preds = %invcont38
+ store float %361, float* %460, align 8
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i120, %invcont38
+ %465 = phi float [ %361, %bb.i.i120 ], [ %337, %invcont38 ] ; [#uses=1]
+ %466 = fcmp olt float %355, %331 ; [#uses=1]
+ br i1 %466, label %bb.i7.i121, label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+bb.i7.i121: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ store float %355, float* %461, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i121, %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ %467 = phi float [ %355, %bb.i7.i121 ], [ %331, %_Z8btSetMinIfEvRT_RKS0_.exit.i ] ; [#uses=1]
+ %468 = fcmp olt float %349, %325 ; [#uses=1]
+ br i1 %468, label %bb.i4.i122, label %invcont39
+
+bb.i4.i122: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ store float %349, float* %462, align 8
+ br label %invcont39
+
+invcont39: ; preds = %bb.i4.i122, %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ %469 = phi float [ %349, %bb.i4.i122 ], [ %325, %_Z8btSetMinIfEvRT_RKS0_.exit9.i ] ; [#uses=1]
+ %470 = getelementptr inbounds %struct.btQuadWord* %rayAabbMaxLocal, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %337, float* %470, align 8
+ %471 = getelementptr inbounds %struct.btQuadWord* %rayAabbMaxLocal, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %331, float* %471, align 4
+ %472 = getelementptr inbounds %struct.btQuadWord* %rayAabbMaxLocal, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %325, float* %472, align 8
+ %473 = getelementptr inbounds %struct.btQuadWord* %rayAabbMaxLocal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %473, align 4
+ %474 = fcmp olt float %337, %361 ; [#uses=1]
+ br i1 %474, label %bb.i.i, label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+bb.i.i: ; preds = %invcont39
+ store float %361, float* %470, align 8
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i, %invcont39
+ %475 = phi float [ %361, %bb.i.i ], [ %337, %invcont39 ] ; [#uses=1]
+ %476 = fcmp olt float %331, %355 ; [#uses=1]
+ br i1 %476, label %bb.i7.i, label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+bb.i7.i: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ store float %355, float* %471, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i, %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ %477 = phi float [ %355, %bb.i7.i ], [ %331, %_Z8btSetMaxIfEvRT_RKS0_.exit.i ] ; [#uses=1]
+ %478 = fcmp olt float %325, %349 ; [#uses=1]
+ br i1 %478, label %bb.i4.i, label %invcont40
+
+bb.i4.i: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ store float %349, float* %472, align 8
+ br label %invcont40
+
+invcont40: ; preds = %bb.i4.i, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ %479 = phi float [ %349, %bb.i4.i ], [ %325, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i ] ; [#uses=1]
+ %480 = getelementptr inbounds %struct.btQuadWord* %boxMinLocal36, i32 0, i32 0, i32 0 ; [#uses=1]
+ %481 = load float* %480, align 8 ; [#uses=1]
+ %482 = fadd float %465, %481 ; [#uses=1]
+ store float %482, float* %460, align 8
+ %483 = getelementptr inbounds %struct.btQuadWord* %boxMinLocal36, i32 0, i32 0, i32 1 ; [#uses=1]
+ %484 = load float* %483, align 4 ; [#uses=1]
+ %485 = fadd float %467, %484 ; [#uses=1]
+ store float %485, float* %461, align 4
+ %486 = getelementptr inbounds %struct.btQuadWord* %boxMinLocal36, i32 0, i32 0, i32 2 ; [#uses=1]
+ %487 = load float* %486, align 8 ; [#uses=1]
+ %488 = fadd float %469, %487 ; [#uses=1]
+ store float %488, float* %462, align 8
+ %489 = getelementptr inbounds %struct.btQuadWord* %boxMaxLocal37, i32 0, i32 0, i32 0 ; [#uses=1]
+ %490 = load float* %489, align 8 ; [#uses=1]
+ %491 = fadd float %475, %490 ; [#uses=1]
+ store float %491, float* %470, align 8
+ %492 = getelementptr inbounds %struct.btQuadWord* %boxMaxLocal37, i32 0, i32 0, i32 1 ; [#uses=1]
+ %493 = load float* %492, align 4 ; [#uses=1]
+ %494 = fadd float %477, %493 ; [#uses=1]
+ store float %494, float* %471, align 4
+ %495 = getelementptr inbounds %struct.btQuadWord* %boxMaxLocal37, i32 0, i32 0, i32 2 ; [#uses=1]
+ %496 = load float* %495, align 8 ; [#uses=1]
+ %497 = fadd float %479, %496 ; [#uses=1]
+ store float %497, float* %472, align 8
+ %498 = load i32 (...)*** %441, align 4 ; [#uses=1]
+ %499 = getelementptr inbounds i32 (...)** %498, i32 15 ; [#uses=1]
+ %500 = load i32 (...)** %499, align 4 ; [#uses=1]
+ %501 = bitcast i32 (...)* %500 to void (%struct.btConcaveShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %502 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %tccb35, i32 0, i32 0, i32 0 ; [#uses=2]
+ invoke void %501(%struct.btConcaveShape* %271, %struct.btActionInterface* %502, %struct.btQuadWord* %rayAabbMinLocal, %struct.btQuadWord* %rayAabbMaxLocal)
+ to label %bb47 unwind label %lpad87
+
+bb47: ; preds = %invcont40
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV28btTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %448, align 8
+ call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %502)
+ ret void
+
+bb48: ; preds = %bb17
+ %503 = icmp eq i32 %1, 31 ; [#uses=1]
+ br i1 %503, label %bb50, label %bb16
+
+bb50: ; preds = %bb48
+ call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([20 x i8]* @.str7, i32 0, i32 0))
+ %504 = getelementptr inbounds %struct.btCollisionShape* %collisionShape, i32 1, i32 1 ; [#uses=1]
+ %505 = getelementptr inbounds %struct.btCollisionShape* %collisionShape, i32 2 ; [#uses=1]
+ %506 = bitcast %struct.btCollisionShape* %505 to %struct.btCompoundShapeChild** ; [#uses=1]
+ %507 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %508 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %509 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %510 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %511 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %512 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %513 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %514 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %515 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %516 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %517 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %518 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %519 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %520 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %521 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %522 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %523 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %524 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %525 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %526 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %527 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %528 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %529 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %530 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %531 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %532 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %533 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %534 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %535 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 9 ; [#uses=3]
+ %536 = getelementptr inbounds %struct..5LocalInfoAdder* %my_cb, i32 0, i32 0, i32 0 ; [#uses=3]
+ %537 = getelementptr inbounds %struct..5LocalInfoAdder* %my_cb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %538 = getelementptr inbounds %struct..5LocalInfoAdder* %my_cb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %539 = getelementptr inbounds %struct..5LocalInfoAdder* %my_cb, i32 0, i32 0, i32 3 ; [#uses=1]
+ %540 = getelementptr inbounds %struct..5LocalInfoAdder* %my_cb, i32 0, i32 1 ; [#uses=1]
+ %541 = getelementptr inbounds %struct..5LocalInfoAdder* %my_cb, i32 0, i32 2 ; [#uses=1]
+ %542 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, i32 0, i32 1 ; [#uses=1]
+ %543 = getelementptr inbounds %struct..5LocalInfoAdder* %my_cb, i32 0, i32 0 ; [#uses=1]
+ br label %invcont60
+
+invcont54: ; preds = %invcont60
+ %544 = load %struct.btCompoundShapeChild** %506, align 4 ; [#uses=13]
+ %scevgep178179 = getelementptr inbounds %struct.btCompoundShapeChild* %544, i32 %636, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %545 = load float* %scevgep178179, align 4 ; [#uses=3]
+ %scevgep177 = getelementptr %struct.btCompoundShapeChild* %544, i32 %636, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %546 = load float* %scevgep177, align 4 ; [#uses=3]
+ %scevgep176 = getelementptr %struct.btCompoundShapeChild* %544, i32 %636, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %547 = load float* %scevgep176, align 4 ; [#uses=3]
+ %scevgep174175 = getelementptr %struct.btCompoundShapeChild* %544, i32 %636, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %548 = load float* %scevgep174175, align 4 ; [#uses=3]
+ %scevgep173 = getelementptr %struct.btCompoundShapeChild* %544, i32 %636, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %549 = load float* %scevgep173, align 4 ; [#uses=3]
+ %scevgep172 = getelementptr %struct.btCompoundShapeChild* %544, i32 %636, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %550 = load float* %scevgep172, align 4 ; [#uses=3]
+ %scevgep170171 = getelementptr %struct.btCompoundShapeChild* %544, i32 %636, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %551 = load float* %scevgep170171, align 4 ; [#uses=3]
+ %scevgep169 = getelementptr %struct.btCompoundShapeChild* %544, i32 %636, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %552 = load float* %scevgep169, align 4 ; [#uses=3]
+ %scevgep168 = getelementptr %struct.btCompoundShapeChild* %544, i32 %636, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %553 = load float* %scevgep168, align 4 ; [#uses=3]
+ %scevgep167 = getelementptr %struct.btCompoundShapeChild* %544, i32 %636, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %554 = load float* %scevgep167, align 4 ; [#uses=3]
+ %scevgep166 = getelementptr %struct.btCompoundShapeChild* %544, i32 %636, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %555 = load float* %scevgep166, align 4 ; [#uses=3]
+ %scevgep = getelementptr %struct.btCompoundShapeChild* %544, i32 %636, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %556 = load float* %scevgep, align 4 ; [#uses=3]
+ %scevgep180 = getelementptr %struct.btCompoundShapeChild* %544, i32 %636, i32 1 ; [#uses=1]
+ %557 = load %struct.btCollisionShape** %scevgep180, align 4 ; [#uses=2]
+ %558 = load float* %507, align 4 ; [#uses=4]
+ %559 = fmul float %558, %554 ; [#uses=1]
+ %560 = load float* %508, align 4 ; [#uses=4]
+ %561 = fmul float %560, %555 ; [#uses=1]
+ %562 = fadd float %559, %561 ; [#uses=1]
+ %563 = load float* %509, align 4 ; [#uses=4]
+ %564 = fmul float %563, %556 ; [#uses=1]
+ %565 = fadd float %562, %564 ; [#uses=1]
+ %566 = load float* %510, align 4 ; [#uses=1]
+ %567 = fadd float %565, %566 ; [#uses=1]
+ %568 = load float* %511, align 4 ; [#uses=4]
+ %569 = fmul float %568, %554 ; [#uses=1]
+ %570 = load float* %512, align 4 ; [#uses=4]
+ %571 = fmul float %570, %555 ; [#uses=1]
+ %572 = fadd float %569, %571 ; [#uses=1]
+ %573 = load float* %513, align 4 ; [#uses=4]
+ %574 = fmul float %573, %556 ; [#uses=1]
+ %575 = fadd float %572, %574 ; [#uses=1]
+ %576 = load float* %514, align 4 ; [#uses=1]
+ %577 = fadd float %575, %576 ; [#uses=1]
+ %578 = load float* %515, align 4 ; [#uses=4]
+ %579 = fmul float %578, %554 ; [#uses=1]
+ %580 = load float* %516, align 4 ; [#uses=4]
+ %581 = fmul float %580, %555 ; [#uses=1]
+ %582 = fadd float %579, %581 ; [#uses=1]
+ %583 = load float* %517, align 4 ; [#uses=4]
+ %584 = fmul float %583, %556 ; [#uses=1]
+ %585 = fadd float %582, %584 ; [#uses=1]
+ %586 = load float* %518, align 4 ; [#uses=1]
+ %587 = fadd float %585, %586 ; [#uses=1]
+ %588 = fmul float %547, %558 ; [#uses=1]
+ %589 = fmul float %550, %560 ; [#uses=1]
+ %590 = fadd float %588, %589 ; [#uses=1]
+ %591 = fmul float %553, %563 ; [#uses=1]
+ %592 = fadd float %590, %591 ; [#uses=1]
+ %593 = fmul float %546, %558 ; [#uses=1]
+ %594 = fmul float %549, %560 ; [#uses=1]
+ %595 = fadd float %593, %594 ; [#uses=1]
+ %596 = fmul float %552, %563 ; [#uses=1]
+ %597 = fadd float %595, %596 ; [#uses=1]
+ %598 = fmul float %545, %558 ; [#uses=1]
+ %599 = fmul float %548, %560 ; [#uses=1]
+ %600 = fadd float %598, %599 ; [#uses=1]
+ %601 = fmul float %551, %563 ; [#uses=1]
+ %602 = fadd float %600, %601 ; [#uses=1]
+ %603 = fmul float %547, %568 ; [#uses=1]
+ %604 = fmul float %550, %570 ; [#uses=1]
+ %605 = fadd float %603, %604 ; [#uses=1]
+ %606 = fmul float %553, %573 ; [#uses=1]
+ %607 = fadd float %605, %606 ; [#uses=1]
+ %608 = fmul float %546, %568 ; [#uses=1]
+ %609 = fmul float %549, %570 ; [#uses=1]
+ %610 = fadd float %608, %609 ; [#uses=1]
+ %611 = fmul float %552, %573 ; [#uses=1]
+ %612 = fadd float %610, %611 ; [#uses=1]
+ %613 = fmul float %545, %568 ; [#uses=1]
+ %614 = fmul float %548, %570 ; [#uses=1]
+ %615 = fadd float %613, %614 ; [#uses=1]
+ %616 = fmul float %551, %573 ; [#uses=1]
+ %617 = fadd float %615, %616 ; [#uses=1]
+ %618 = fmul float %547, %578 ; [#uses=1]
+ %619 = fmul float %550, %580 ; [#uses=1]
+ %620 = fadd float %618, %619 ; [#uses=1]
+ %621 = fmul float %553, %583 ; [#uses=1]
+ %622 = fadd float %620, %621 ; [#uses=1]
+ %623 = fmul float %546, %578 ; [#uses=1]
+ %624 = fmul float %549, %580 ; [#uses=1]
+ %625 = fadd float %623, %624 ; [#uses=1]
+ %626 = fmul float %552, %583 ; [#uses=1]
+ %627 = fadd float %625, %626 ; [#uses=1]
+ %628 = fmul float %545, %578 ; [#uses=1]
+ %629 = fmul float %548, %580 ; [#uses=1]
+ %630 = fadd float %628, %629 ; [#uses=1]
+ %631 = fmul float %551, %583 ; [#uses=1]
+ %632 = fadd float %630, %631 ; [#uses=1]
+ store float %632, float* %519, align 8
+ store float %627, float* %520, align 4
+ store float %622, float* %521, align 8
+ store float 0.000000e+00, float* %522, align 4
+ store float %617, float* %523, align 8
+ store float %612, float* %524, align 4
+ store float %607, float* %525, align 8
+ store float 0.000000e+00, float* %526, align 4
+ store float %602, float* %527, align 8
+ store float %597, float* %528, align 4
+ store float %592, float* %529, align 8
+ store float 0.000000e+00, float* %530, align 4
+ store float %587, float* %531, align 8
+ store float %577, float* %532, align 4
+ store float %567, float* %533, align 8
+ store float 0.000000e+00, float* %534, align 4
+ %633 = load %struct.btCollisionShape** %535, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %557, %struct.btCollisionShape** %535, align 4
+ store i16 1, i16* %538, align 8
+ store i16 -1, i16* %539, align 2
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder, i32 0, i32 2), i32 (...)*** %536, align 8
+ store %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, %"struct.btCollisionWorld::ConvexResultCallback"** %540, align 4
+ store i32 %636, i32* %541, align 8
+ %634 = load float* %542, align 4 ; [#uses=1]
+ store float %634, float* %537, align 4
+ invoke void @_ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEf(%struct.btConvexShape* %castShape, %struct.btTransform* %convexFromTrans, %struct.btTransform* %convexToTrans, %struct.btCollisionObject* %collisionObject, %struct.btCollisionShape* %557, %struct.btTransform* %childWorldTrans, %"struct.btCollisionWorld::ConvexResultCallback"* %543, float %allowedPenetration)
+ to label %invcont55 unwind label %ppad113
+
+invcont55: ; preds = %invcont54
+ store %struct.btCollisionShape* %633, %struct.btCollisionShape** %535, align 4
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder, i32 0, i32 2), i32 (...)*** %536, align 8
+ %635 = add nsw i32 %636, 1 ; [#uses=1]
+ br label %invcont60
+
+invcont60: ; preds = %invcont55, %bb50
+ %636 = phi i32 [ 0, %bb50 ], [ %635, %invcont55 ] ; [#uses=16]
+ %637 = load i32* %504, align 4 ; [#uses=1]
+ %638 = icmp sgt i32 %637, %636 ; [#uses=1]
+ br i1 %638, label %invcont54, label %bb67
+
+bb67: ; preds = %invcont60
+ call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %bb11, %bb
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select70 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad71: ; preds = %bb6, %invcont
+ %eh_ptr72 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select74 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr72, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV27btContinuousConvexCollision, i32 0, i32 2), i32 (...)*** %15, align 8
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %14)
+ to label %ppad unwind label %lpad75
+
+lpad75: ; preds = %lpad71
+ %eh_ptr76 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select78 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr76, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad79: ; preds = %invcont22, %bb21
+ %eh_ptr80 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select82 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr80, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV28btTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %257, align 8
+ %639 = getelementptr inbounds %struct..3BridgeTriangleConvexcastCallback* %tccb, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %639)
+ to label %Unwind unwind label %lpad83
+
+lpad83: ; preds = %lpad79
+ %eh_ptr84 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select86 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr84, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad87: ; preds = %invcont40, %bb30
+ %eh_ptr88 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select90 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr88, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV28btTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %448, align 8
+ %640 = getelementptr inbounds %struct..4BridgeTriangleConvexcastCallback* %tccb35, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %640)
+ to label %Unwind unwind label %lpad91
+
+lpad91: ; preds = %lpad87
+ %eh_ptr92 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select94 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr92, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad103: ; preds = %ppad113
+ %eh_ptr104 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select106 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr104, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %lpad71, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr72, %lpad71 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btGjkEpaPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** %12, align 8
+ br label %Unwind
+
+ppad113: ; preds = %invcont54
+ %eh_ptr100 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select102 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr100, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEfE14LocalInfoAdder, i32 0, i32 2), i32 (...)*** %536, align 8
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %Unwind unwind label %lpad103
+
+Unwind: ; preds = %ppad113, %ppad, %lpad87, %lpad79
+ %eh_exception.1 = phi i8* [ %eh_exception.0, %ppad ], [ %eh_ptr80, %lpad79 ], [ %eh_ptr88, %lpad87 ], [ %eh_ptr100, %ppad113 ] ; [#uses=1]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.1)
+ unreachable
+}
+
+; [#uses=3]
+define void @_ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackE(%struct.btTransform* %rayFromTrans, %struct.btTransform* %rayToTrans, %struct.btCollisionObject* %collisionObject, %struct.btCollisionShape* %collisionShape, %struct.btTransform* %colObjWorldTransform, %"struct.btCollisionWorld::RayResultCallback"* %resultCallback) align 2 {
+invcont:
+ %pointShape = alloca %struct.btPolyhedralConvexShape, align 8 ; [#uses=8]
+ %castResult = alloca %"struct.btConvexCast::CastResult", align 8 ; [#uses=9]
+ %simplexSolver = alloca %struct.btVoronoiSimplexSolver, align 8 ; [#uses=3]
+ %convexCaster = alloca %struct.btGjkConvexCast, align 8 ; [#uses=6]
+ %localRayResult = alloca %"struct.btCollisionWorld::LocalRayResult", align 8 ; [#uses=8]
+ %rayFromLocal = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %rayToLocal = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %rcb = alloca %struct..0BridgeTriangleRaycastCallback, align 8 ; [#uses=23]
+ %rayFromLocal43 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %rayToLocal45 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %rcb47 = alloca %struct..1BridgeTriangleRaycastCallback, align 8 ; [#uses=23]
+ %rayAabbMinLocal = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %rayAabbMaxLocal = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %childWorldTrans = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %my_cb = alloca %struct..2LocalInfoAdder2, align 8 ; [#uses=9]
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btSphereShape, i32 0, i32 2), i32 (...)*** %1, align 8
+ %2 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 8, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btCollisionShape* %collisionShape, i32 0, i32 1 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=4]
+ %7 = icmp slt i32 %6, 20 ; [#uses=1]
+ br i1 %7, label %invcont1, label %invcont18
+
+invcont1: ; preds = %invcont
+ %8 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN12btConvexCast10CastResultE, i32 0, i32 2), i32 (...)*** %9, align 8
+ %10 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 5 ; [#uses=2]
+ %11 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %11, align 8
+ %12 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %resultCallback, i32 0, i32 1 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %10, align 4
+ %15 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %simplexSolver, i32 0, i32 8 ; [#uses=1]
+ store float 0x3F1A36E2E0000000, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %simplexSolver, i32 0, i32 10, i32 1, i32 0 ; [#uses=2]
+ %17 = load i8* %16, align 4 ; [#uses=1]
+ %18 = and i8 %17, -16 ; [#uses=1]
+ store i8 %18, i8* %16, align 4
+ %19 = bitcast %struct.btCollisionShape* %collisionShape to %struct.btConvexShape* ; [#uses=1]
+ invoke void @_ZN22btSubsimplexConvexCastC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolver(%struct.btGjkConvexCast* %convexCaster, %struct.btConvexShape* %8, %struct.btConvexShape* %19, %struct.btVoronoiSimplexSolver* %simplexSolver)
+ to label %invcont2 unwind label %lpad
+
+invcont2: ; preds = %invcont1
+ %20 = invoke zeroext i8 @_ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(%struct.btGjkConvexCast* %convexCaster, %struct.btTransform* %rayFromTrans, %struct.btTransform* %rayToTrans, %struct.btTransform* %colObjWorldTransform, %struct.btTransform* %colObjWorldTransform, %"struct.btConvexCast::CastResult"* %castResult)
+ to label %invcont3 unwind label %lpad92 ; [#uses=1]
+
+invcont3: ; preds = %invcont2
+ %toBool4 = icmp eq i8 %20, 0 ; [#uses=1]
+ br i1 %toBool4, label %bb15, label %bb5
+
+bb5: ; preds = %invcont3
+ %21 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 3, i32 0, i32 0 ; [#uses=3]
+ %22 = load float* %21, align 4 ; [#uses=5]
+ %23 = fmul float %22, %22 ; [#uses=1]
+ %24 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 3, i32 0, i32 1 ; [#uses=3]
+ %25 = load float* %24, align 4 ; [#uses=5]
+ %26 = fmul float %25, %25 ; [#uses=1]
+ %27 = fadd float %23, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 3, i32 0, i32 2 ; [#uses=3]
+ %29 = load float* %28, align 4 ; [#uses=5]
+ %30 = fmul float %29, %29 ; [#uses=1]
+ %31 = fadd float %27, %30 ; [#uses=1]
+ %32 = fcmp ogt float %31, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %32, label %bb7, label %bb15
+
+bb7: ; preds = %bb5
+ %33 = load float* %10, align 4 ; [#uses=2]
+ %34 = load float* %13, align 4 ; [#uses=1]
+ %35 = fcmp olt float %33, %34 ; [#uses=1]
+ br i1 %35, label %bb8, label %bb15
+
+bb8: ; preds = %bb7
+ %36 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fmul float %37, %22 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fmul float %40, %25 ; [#uses=1]
+ %42 = fadd float %38, %41 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = fmul float %44, %29 ; [#uses=1]
+ %46 = fadd float %42, %45 ; [#uses=4]
+ %47 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = fmul float %48, %22 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fmul float %51, %25 ; [#uses=1]
+ %53 = fadd float %49, %52 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fmul float %55, %29 ; [#uses=1]
+ %57 = fadd float %53, %56 ; [#uses=4]
+ %58 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = fmul float %59, %22 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ %63 = fmul float %62, %25 ; [#uses=1]
+ %64 = fadd float %60, %63 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ %67 = fmul float %66, %29 ; [#uses=1]
+ %68 = fadd float %64, %67 ; [#uses=4]
+ store float %68, float* %21, align 4
+ store float %57, float* %24, align 4
+ store float %46, float* %28, align 4
+ %69 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %69, align 4
+ %70 = fmul float %68, %68 ; [#uses=1]
+ %71 = fmul float %57, %57 ; [#uses=1]
+ %72 = fadd float %70, %71 ; [#uses=1]
+ %73 = fmul float %46, %46 ; [#uses=1]
+ %74 = fadd float %72, %73 ; [#uses=1]
+ %75 = call float @sqrtf(float %74) nounwind readonly ; [#uses=1]
+ %76 = fdiv float 1.000000e+00, %75 ; [#uses=3]
+ %77 = fmul float %68, %76 ; [#uses=2]
+ store float %77, float* %21, align 4
+ %78 = fmul float %57, %76 ; [#uses=2]
+ store float %78, float* %24, align 4
+ %79 = fmul float %46, %76 ; [#uses=2]
+ store float %79, float* %28, align 4
+ %80 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %localRayResult, i32 0, i32 0 ; [#uses=1]
+ store %struct.btCollisionObject* %collisionObject, %struct.btCollisionObject** %80, align 8
+ %81 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %localRayResult, i32 0, i32 1 ; [#uses=1]
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %81, align 4
+ %82 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %localRayResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %77, float* %82, align 8
+ %83 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %localRayResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %78, float* %83, align 4
+ %84 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %localRayResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %79, float* %84, align 8
+ %85 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %localRayResult, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %85, align 4
+ %86 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %localRayResult, i32 0, i32 3 ; [#uses=1]
+ store float %33, float* %86, align 8
+ %87 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %resultCallback, i32 0, i32 0 ; [#uses=1]
+ %88 = load i32 (...)*** %87, align 4 ; [#uses=1]
+ %89 = getelementptr inbounds i32 (...)** %88, i32 3 ; [#uses=1]
+ %90 = load i32 (...)** %89, align 4 ; [#uses=1]
+ %91 = bitcast i32 (...)* %90 to float (%"struct.btCollisionWorld::RayResultCallback"*, %"struct.btCollisionWorld::LocalRayResult"*, i8)* ; [#uses=1]
+ %92 = invoke float %91(%"struct.btCollisionWorld::RayResultCallback"* %resultCallback, %"struct.btCollisionWorld::LocalRayResult"* %localRayResult, i8 zeroext 1)
+ to label %bb15 unwind label %lpad92 ; [#uses=0]
+
+bb15: ; preds = %bb8, %bb7, %bb5, %invcont3
+ %93 = getelementptr inbounds %struct.btGjkConvexCast* %convexCaster, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV22btSubsimplexConvexCast, i32 0, i32 2), i32 (...)*** %93, align 8
+ %94 = getelementptr inbounds %struct.btGjkConvexCast* %convexCaster, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %94)
+ to label %bb89 unwind label %lpad
+
+invcont18: ; preds = %invcont
+ %95 = add i32 %6, -21 ; [#uses=1]
+ %96 = icmp ult i32 %95, 9 ; [#uses=1]
+ br i1 %96, label %bb20, label %invcont63
+
+bb20: ; preds = %invcont18
+ %97 = icmp eq i32 %6, 21 ; [#uses=1]
+ br i1 %97, label %invcont28, label %invcont50
+
+invcont28: ; preds = %bb20
+ %98 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %99 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %100 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %101 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %102 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %103 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %104 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %105 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %106 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %107 = load float* %106, align 4 ; [#uses=3]
+ %108 = load float* %105, align 4 ; [#uses=3]
+ %109 = load float* %104, align 4 ; [#uses=3]
+ %110 = load float* %103, align 4 ; [#uses=3]
+ %111 = load float* %102, align 4 ; [#uses=3]
+ %112 = load float* %101, align 4 ; [#uses=3]
+ %113 = load float* %100, align 4 ; [#uses=3]
+ %114 = load float* %99, align 4 ; [#uses=3]
+ %115 = load float* %98, align 4 ; [#uses=3]
+ %116 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %117 = load float* %116, align 4 ; [#uses=1]
+ %118 = fsub float -0.000000e+00, %117 ; [#uses=3]
+ %119 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %120 = load float* %119, align 4 ; [#uses=1]
+ %121 = fsub float -0.000000e+00, %120 ; [#uses=3]
+ %122 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %123 = load float* %122, align 4 ; [#uses=1]
+ %124 = fsub float -0.000000e+00, %123 ; [#uses=3]
+ %125 = fmul float %113, %124 ; [#uses=1]
+ %126 = fmul float %114, %121 ; [#uses=1]
+ %127 = fadd float %125, %126 ; [#uses=1]
+ %128 = fmul float %115, %118 ; [#uses=1]
+ %129 = fadd float %127, %128 ; [#uses=2]
+ %130 = fmul float %110, %124 ; [#uses=1]
+ %131 = fmul float %111, %121 ; [#uses=1]
+ %132 = fadd float %130, %131 ; [#uses=1]
+ %133 = fmul float %112, %118 ; [#uses=1]
+ %134 = fadd float %132, %133 ; [#uses=2]
+ %135 = fmul float %107, %124 ; [#uses=1]
+ %136 = fmul float %108, %121 ; [#uses=1]
+ %137 = fadd float %135, %136 ; [#uses=1]
+ %138 = fmul float %109, %118 ; [#uses=1]
+ %139 = fadd float %137, %138 ; [#uses=2]
+ %140 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=3]
+ %142 = fmul float %113, %141 ; [#uses=1]
+ %143 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %144 = load float* %143, align 4 ; [#uses=3]
+ %145 = fmul float %114, %144 ; [#uses=1]
+ %146 = fadd float %142, %145 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %148 = load float* %147, align 4 ; [#uses=3]
+ %149 = fmul float %115, %148 ; [#uses=1]
+ %150 = fadd float %146, %149 ; [#uses=1]
+ %151 = fadd float %150, %129 ; [#uses=1]
+ %152 = fmul float %110, %141 ; [#uses=1]
+ %153 = fmul float %111, %144 ; [#uses=1]
+ %154 = fadd float %152, %153 ; [#uses=1]
+ %155 = fmul float %112, %148 ; [#uses=1]
+ %156 = fadd float %154, %155 ; [#uses=1]
+ %157 = fadd float %156, %134 ; [#uses=1]
+ %158 = fmul float %107, %141 ; [#uses=1]
+ %159 = fmul float %108, %144 ; [#uses=1]
+ %160 = fadd float %158, %159 ; [#uses=1]
+ %161 = fmul float %109, %148 ; [#uses=1]
+ %162 = fadd float %160, %161 ; [#uses=1]
+ %163 = fadd float %162, %139 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btQuadWord* %rayFromLocal, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %163, float* %164, align 8
+ %165 = getelementptr inbounds %struct.btQuadWord* %rayFromLocal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %157, float* %165, align 4
+ %166 = getelementptr inbounds %struct.btQuadWord* %rayFromLocal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %151, float* %166, align 8
+ %167 = getelementptr inbounds %struct.btQuadWord* %rayFromLocal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %167, align 4
+ %168 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=3]
+ %170 = fmul float %113, %169 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %172 = load float* %171, align 4 ; [#uses=3]
+ %173 = fmul float %114, %172 ; [#uses=1]
+ %174 = fadd float %170, %173 ; [#uses=1]
+ %175 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %176 = load float* %175, align 4 ; [#uses=3]
+ %177 = fmul float %115, %176 ; [#uses=1]
+ %178 = fadd float %174, %177 ; [#uses=1]
+ %179 = fadd float %178, %129 ; [#uses=1]
+ %180 = fmul float %110, %169 ; [#uses=1]
+ %181 = fmul float %111, %172 ; [#uses=1]
+ %182 = fadd float %180, %181 ; [#uses=1]
+ %183 = fmul float %112, %176 ; [#uses=1]
+ %184 = fadd float %182, %183 ; [#uses=1]
+ %185 = fadd float %184, %134 ; [#uses=1]
+ %186 = fmul float %107, %169 ; [#uses=1]
+ %187 = fmul float %108, %172 ; [#uses=1]
+ %188 = fadd float %186, %187 ; [#uses=1]
+ %189 = fmul float %109, %176 ; [#uses=1]
+ %190 = fadd float %188, %189 ; [#uses=1]
+ %191 = fadd float %190, %139 ; [#uses=1]
+ %192 = getelementptr inbounds %struct.btQuadWord* %rayToLocal, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %191, float* %192, align 8
+ %193 = getelementptr inbounds %struct.btQuadWord* %rayToLocal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %185, float* %193, align 4
+ %194 = getelementptr inbounds %struct.btQuadWord* %rayToLocal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %179, float* %194, align 8
+ %195 = getelementptr inbounds %struct.btQuadWord* %rayToLocal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %195, align 4
+ %196 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %resultCallback, i32 0, i32 5 ; [#uses=1]
+ %197 = load i32* %196, align 4 ; [#uses=1]
+ %198 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN25btTriangleRaycastCallbackC2ERK9btVector3S2_j(%struct.btTriangleRaycastCallback* %198, %struct.btQuadWord* %rayFromLocal, %struct.btQuadWord* %rayToLocal, i32 %197)
+ to label %invcont29 unwind label %lpad
+
+invcont29: ; preds = %invcont28
+ %199 = bitcast %struct.btCollisionShape* %collisionShape to %struct.btBvhTriangleMeshShape* ; [#uses=1]
+ %200 = bitcast %struct.btCollisionShape* %collisionShape to %struct.btTriangleMeshShape* ; [#uses=1]
+ %201 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %201, align 8
+ %202 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 1 ; [#uses=1]
+ store %"struct.btCollisionWorld::RayResultCallback"* %resultCallback, %"struct.btCollisionWorld::RayResultCallback"** %202, align 4
+ %203 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionObject* %collisionObject, %struct.btCollisionObject** %203, align 8
+ %204 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 3 ; [#uses=1]
+ store %struct.btTriangleMeshShape* %200, %struct.btTriangleMeshShape** %204, align 4
+ %205 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %206 = load float* %106, align 4 ; [#uses=1]
+ store float %206, float* %205, align 8
+ %207 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %208 = load float* %103, align 4 ; [#uses=1]
+ store float %208, float* %207, align 4
+ %209 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %210 = load float* %100, align 4 ; [#uses=1]
+ store float %210, float* %209, align 8
+ %211 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %212 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %213 = load float* %212, align 4 ; [#uses=1]
+ store float %213, float* %211, align 4
+ %214 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %215 = load float* %105, align 4 ; [#uses=1]
+ store float %215, float* %214, align 8
+ %216 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %217 = load float* %102, align 4 ; [#uses=1]
+ store float %217, float* %216, align 4
+ %218 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %219 = load float* %99, align 4 ; [#uses=1]
+ store float %219, float* %218, align 8
+ %220 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %221 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %222 = load float* %221, align 4 ; [#uses=1]
+ store float %222, float* %220, align 4
+ %223 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %224 = load float* %104, align 4 ; [#uses=1]
+ store float %224, float* %223, align 8
+ %225 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %226 = load float* %101, align 4 ; [#uses=1]
+ store float %226, float* %225, align 4
+ %227 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %228 = load float* %98, align 4 ; [#uses=1]
+ store float %228, float* %227, align 8
+ %229 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %230 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %231 = load float* %230, align 4 ; [#uses=1]
+ store float %231, float* %229, align 4
+ %232 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %233 = load float* %122, align 4 ; [#uses=1]
+ store float %233, float* %232, align 8
+ %234 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %235 = load float* %119, align 4 ; [#uses=1]
+ store float %235, float* %234, align 4
+ %236 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %237 = load float* %116, align 4 ; [#uses=1]
+ store float %237, float* %236, align 8
+ %238 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ %239 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %240 = load float* %239, align 4 ; [#uses=1]
+ store float %240, float* %238, align 4
+ %241 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %resultCallback, i32 0, i32 1 ; [#uses=1]
+ %242 = load float* %241, align 4 ; [#uses=1]
+ %243 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 0, i32 4 ; [#uses=1]
+ store float %242, float* %243, align 8
+ %244 = getelementptr inbounds %struct..0BridgeTriangleRaycastCallback* %rcb, i32 0, i32 0, i32 0 ; [#uses=3]
+ invoke void @_ZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_(%struct.btBvhTriangleMeshShape* %199, %struct.btActionInterface* %244, %struct.btQuadWord* %rayFromLocal, %struct.btQuadWord* %rayToLocal)
+ to label %bb36 unwind label %lpad100
+
+bb36: ; preds = %invcont29
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %201, align 8
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %244)
+ to label %bb89 unwind label %lpad
+
+invcont50: ; preds = %bb20
+ %245 = bitcast %struct.btCollisionShape* %collisionShape to %struct.btConcaveShape* ; [#uses=2]
+ %246 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %247 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %248 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %249 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %250 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %251 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %252 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %253 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %254 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %255 = load float* %254, align 4 ; [#uses=3]
+ %256 = load float* %253, align 4 ; [#uses=3]
+ %257 = load float* %252, align 4 ; [#uses=3]
+ %258 = load float* %251, align 4 ; [#uses=3]
+ %259 = load float* %250, align 4 ; [#uses=3]
+ %260 = load float* %249, align 4 ; [#uses=3]
+ %261 = load float* %248, align 4 ; [#uses=3]
+ %262 = load float* %247, align 4 ; [#uses=3]
+ %263 = load float* %246, align 4 ; [#uses=3]
+ %264 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %265 = load float* %264, align 4 ; [#uses=1]
+ %266 = fsub float -0.000000e+00, %265 ; [#uses=3]
+ %267 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %268 = load float* %267, align 4 ; [#uses=1]
+ %269 = fsub float -0.000000e+00, %268 ; [#uses=3]
+ %270 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %271 = load float* %270, align 4 ; [#uses=1]
+ %272 = fsub float -0.000000e+00, %271 ; [#uses=3]
+ %273 = fmul float %261, %272 ; [#uses=1]
+ %274 = fmul float %262, %269 ; [#uses=1]
+ %275 = fadd float %273, %274 ; [#uses=1]
+ %276 = fmul float %263, %266 ; [#uses=1]
+ %277 = fadd float %275, %276 ; [#uses=2]
+ %278 = fmul float %258, %272 ; [#uses=1]
+ %279 = fmul float %259, %269 ; [#uses=1]
+ %280 = fadd float %278, %279 ; [#uses=1]
+ %281 = fmul float %260, %266 ; [#uses=1]
+ %282 = fadd float %280, %281 ; [#uses=2]
+ %283 = fmul float %255, %272 ; [#uses=1]
+ %284 = fmul float %256, %269 ; [#uses=1]
+ %285 = fadd float %283, %284 ; [#uses=1]
+ %286 = fmul float %257, %266 ; [#uses=1]
+ %287 = fadd float %285, %286 ; [#uses=2]
+ %288 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %289 = load float* %288, align 4 ; [#uses=3]
+ %290 = fmul float %261, %289 ; [#uses=1]
+ %291 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %292 = load float* %291, align 4 ; [#uses=3]
+ %293 = fmul float %262, %292 ; [#uses=1]
+ %294 = fadd float %290, %293 ; [#uses=1]
+ %295 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %296 = load float* %295, align 4 ; [#uses=3]
+ %297 = fmul float %263, %296 ; [#uses=1]
+ %298 = fadd float %294, %297 ; [#uses=1]
+ %299 = fadd float %298, %277 ; [#uses=1]
+ %300 = fmul float %258, %289 ; [#uses=1]
+ %301 = fmul float %259, %292 ; [#uses=1]
+ %302 = fadd float %300, %301 ; [#uses=1]
+ %303 = fmul float %260, %296 ; [#uses=1]
+ %304 = fadd float %302, %303 ; [#uses=1]
+ %305 = fadd float %304, %282 ; [#uses=1]
+ %306 = fmul float %255, %289 ; [#uses=1]
+ %307 = fmul float %256, %292 ; [#uses=1]
+ %308 = fadd float %306, %307 ; [#uses=1]
+ %309 = fmul float %257, %296 ; [#uses=1]
+ %310 = fadd float %308, %309 ; [#uses=1]
+ %311 = fadd float %310, %287 ; [#uses=1]
+ %312 = getelementptr inbounds %struct.btQuadWord* %rayFromLocal43, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %311, float* %312, align 8
+ %313 = getelementptr inbounds %struct.btQuadWord* %rayFromLocal43, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %305, float* %313, align 4
+ %314 = getelementptr inbounds %struct.btQuadWord* %rayFromLocal43, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %299, float* %314, align 8
+ %315 = getelementptr inbounds %struct.btQuadWord* %rayFromLocal43, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %315, align 4
+ %316 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %317 = load float* %316, align 4 ; [#uses=3]
+ %318 = fmul float %261, %317 ; [#uses=1]
+ %319 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %320 = load float* %319, align 4 ; [#uses=3]
+ %321 = fmul float %262, %320 ; [#uses=1]
+ %322 = fadd float %318, %321 ; [#uses=1]
+ %323 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %324 = load float* %323, align 4 ; [#uses=3]
+ %325 = fmul float %263, %324 ; [#uses=1]
+ %326 = fadd float %322, %325 ; [#uses=1]
+ %327 = fadd float %326, %277 ; [#uses=1]
+ %328 = fmul float %258, %317 ; [#uses=1]
+ %329 = fmul float %259, %320 ; [#uses=1]
+ %330 = fadd float %328, %329 ; [#uses=1]
+ %331 = fmul float %260, %324 ; [#uses=1]
+ %332 = fadd float %330, %331 ; [#uses=1]
+ %333 = fadd float %332, %282 ; [#uses=1]
+ %334 = fmul float %255, %317 ; [#uses=1]
+ %335 = fmul float %256, %320 ; [#uses=1]
+ %336 = fadd float %334, %335 ; [#uses=1]
+ %337 = fmul float %257, %324 ; [#uses=1]
+ %338 = fadd float %336, %337 ; [#uses=1]
+ %339 = fadd float %338, %287 ; [#uses=1]
+ %340 = getelementptr inbounds %struct.btQuadWord* %rayToLocal45, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %339, float* %340, align 8
+ %341 = getelementptr inbounds %struct.btQuadWord* %rayToLocal45, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %333, float* %341, align 4
+ %342 = getelementptr inbounds %struct.btQuadWord* %rayToLocal45, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %327, float* %342, align 8
+ %343 = getelementptr inbounds %struct.btQuadWord* %rayToLocal45, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %343, align 4
+ %344 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %resultCallback, i32 0, i32 5 ; [#uses=1]
+ %345 = load i32* %344, align 4 ; [#uses=1]
+ %346 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN25btTriangleRaycastCallbackC2ERK9btVector3S2_j(%struct.btTriangleRaycastCallback* %346, %struct.btQuadWord* %rayFromLocal43, %struct.btQuadWord* %rayToLocal45, i32 %345)
+ to label %invcont51 unwind label %lpad
+
+invcont51: ; preds = %invcont50
+ %347 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE29BridgeTriangleRaycastCallback_0, i32 0, i32 2), i32 (...)*** %347, align 8
+ %348 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 1 ; [#uses=1]
+ store %"struct.btCollisionWorld::RayResultCallback"* %resultCallback, %"struct.btCollisionWorld::RayResultCallback"** %348, align 4
+ %349 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionObject* %collisionObject, %struct.btCollisionObject** %349, align 8
+ %350 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConcaveShape* %245, %struct.btConcaveShape** %350, align 4
+ %351 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %352 = load float* %254, align 4 ; [#uses=1]
+ store float %352, float* %351, align 8
+ %353 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %354 = load float* %251, align 4 ; [#uses=1]
+ store float %354, float* %353, align 4
+ %355 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %356 = load float* %248, align 4 ; [#uses=1]
+ store float %356, float* %355, align 8
+ %357 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %358 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %359 = load float* %358, align 4 ; [#uses=1]
+ store float %359, float* %357, align 4
+ %360 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %361 = load float* %253, align 4 ; [#uses=1]
+ store float %361, float* %360, align 8
+ %362 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %363 = load float* %250, align 4 ; [#uses=1]
+ store float %363, float* %362, align 4
+ %364 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %365 = load float* %247, align 4 ; [#uses=1]
+ store float %365, float* %364, align 8
+ %366 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %367 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %368 = load float* %367, align 4 ; [#uses=1]
+ store float %368, float* %366, align 4
+ %369 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %370 = load float* %252, align 4 ; [#uses=1]
+ store float %370, float* %369, align 8
+ %371 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %372 = load float* %249, align 4 ; [#uses=1]
+ store float %372, float* %371, align 4
+ %373 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %374 = load float* %246, align 4 ; [#uses=1]
+ store float %374, float* %373, align 8
+ %375 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %376 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %377 = load float* %376, align 4 ; [#uses=1]
+ store float %377, float* %375, align 4
+ %378 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %379 = load float* %270, align 4 ; [#uses=1]
+ store float %379, float* %378, align 8
+ %380 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %381 = load float* %267, align 4 ; [#uses=1]
+ store float %381, float* %380, align 4
+ %382 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %383 = load float* %264, align 4 ; [#uses=1]
+ store float %383, float* %382, align 8
+ %384 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ %385 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %386 = load float* %385, align 4 ; [#uses=1]
+ store float %386, float* %384, align 4
+ %387 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %resultCallback, i32 0, i32 1 ; [#uses=1]
+ %388 = load float* %387, align 4 ; [#uses=1]
+ %389 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 0, i32 4 ; [#uses=1]
+ store float %388, float* %389, align 8
+ %390 = getelementptr inbounds %struct.btQuadWord* %rayAabbMinLocal, i32 0, i32 0, i32 0 ; [#uses=2]
+ %391 = load float* %312, align 8 ; [#uses=4]
+ store float %391, float* %390, align 8
+ %392 = getelementptr inbounds %struct.btQuadWord* %rayAabbMinLocal, i32 0, i32 0, i32 1 ; [#uses=2]
+ %393 = load float* %313, align 4 ; [#uses=4]
+ store float %393, float* %392, align 4
+ %394 = getelementptr inbounds %struct.btQuadWord* %rayAabbMinLocal, i32 0, i32 0, i32 2 ; [#uses=2]
+ %395 = load float* %314, align 8 ; [#uses=4]
+ store float %395, float* %394, align 8
+ %396 = getelementptr inbounds %struct.btQuadWord* %rayAabbMinLocal, i32 0, i32 0, i32 3 ; [#uses=2]
+ %397 = load float* %315, align 4 ; [#uses=4]
+ store float %397, float* %396, align 4
+ %398 = load float* %340, align 8 ; [#uses=4]
+ %399 = fcmp olt float %398, %391 ; [#uses=1]
+ br i1 %399, label %bb.i.i137, label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+bb.i.i137: ; preds = %invcont51
+ store float %398, float* %390, align 8
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i137, %invcont51
+ %400 = load float* %341, align 4 ; [#uses=4]
+ %401 = fcmp olt float %400, %393 ; [#uses=1]
+ br i1 %401, label %bb.i7.i138, label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+bb.i7.i138: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ store float %400, float* %392, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i138, %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ %402 = load float* %342, align 8 ; [#uses=4]
+ %403 = fcmp olt float %402, %395 ; [#uses=1]
+ br i1 %403, label %bb.i4.i139, label %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+
+bb.i4.i139: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ store float %402, float* %394, align 8
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit6.i: ; preds = %bb.i4.i139, %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ %404 = load float* %343, align 4 ; [#uses=4]
+ %405 = fcmp olt float %404, %397 ; [#uses=1]
+ br i1 %405, label %bb.i1.i140, label %invcont52
+
+bb.i1.i140: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+ store float %404, float* %396, align 4
+ br label %invcont52
+
+invcont52: ; preds = %bb.i1.i140, %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+ %406 = getelementptr inbounds %struct.btQuadWord* %rayAabbMaxLocal, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %391, float* %406, align 8
+ %407 = getelementptr inbounds %struct.btQuadWord* %rayAabbMaxLocal, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %393, float* %407, align 4
+ %408 = getelementptr inbounds %struct.btQuadWord* %rayAabbMaxLocal, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %395, float* %408, align 8
+ %409 = getelementptr inbounds %struct.btQuadWord* %rayAabbMaxLocal, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float %397, float* %409, align 4
+ %410 = fcmp olt float %391, %398 ; [#uses=1]
+ br i1 %410, label %bb.i.i, label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+bb.i.i: ; preds = %invcont52
+ store float %398, float* %406, align 8
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i, %invcont52
+ %411 = fcmp olt float %393, %400 ; [#uses=1]
+ br i1 %411, label %bb.i7.i, label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+bb.i7.i: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ store float %400, float* %407, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i, %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ %412 = fcmp olt float %395, %402 ; [#uses=1]
+ br i1 %412, label %bb.i4.i, label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+
+bb.i4.i: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ store float %402, float* %408, align 8
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit6.i: ; preds = %bb.i4.i, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ %413 = fcmp olt float %397, %404 ; [#uses=1]
+ br i1 %413, label %bb.i1.i, label %invcont53
+
+bb.i1.i: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+ store float %404, float* %409, align 4
+ br label %invcont53
+
+invcont53: ; preds = %bb.i1.i, %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+ %414 = getelementptr inbounds %struct.btCollisionShape* %collisionShape, i32 0, i32 0 ; [#uses=1]
+ %415 = load i32 (...)*** %414, align 4 ; [#uses=1]
+ %416 = getelementptr inbounds i32 (...)** %415, i32 15 ; [#uses=1]
+ %417 = load i32 (...)** %416, align 4 ; [#uses=1]
+ %418 = bitcast i32 (...)* %417 to void (%struct.btConcaveShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %419 = getelementptr inbounds %struct..1BridgeTriangleRaycastCallback* %rcb47, i32 0, i32 0, i32 0 ; [#uses=3]
+ invoke void %418(%struct.btConcaveShape* %245, %struct.btActionInterface* %419, %struct.btQuadWord* %rayAabbMinLocal, %struct.btQuadWord* %rayAabbMaxLocal)
+ to label %bb60 unwind label %lpad108
+
+bb60: ; preds = %invcont53
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %347, align 8
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %419)
+ to label %bb89 unwind label %lpad
+
+invcont63: ; preds = %invcont18
+ %420 = icmp eq i32 %6, 31 ; [#uses=1]
+ br i1 %420, label %invcont82.preheader, label %bb89
+
+invcont82.preheader: ; preds = %invcont63
+ %421 = getelementptr inbounds %struct.btCollisionShape* %collisionShape, i32 1, i32 1 ; [#uses=1]
+ %422 = getelementptr inbounds %struct.btCollisionShape* %collisionShape, i32 2 ; [#uses=1]
+ %423 = bitcast %struct.btCollisionShape* %422 to %struct.btCompoundShapeChild** ; [#uses=1]
+ %424 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %425 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %426 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %427 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %428 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %429 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %430 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %431 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %432 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %433 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %434 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %435 = getelementptr inbounds %struct.btTransform* %colObjWorldTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %436 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %437 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %438 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %439 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %440 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %441 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %442 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %443 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %444 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %445 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %446 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %447 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %448 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %449 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %450 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %451 = getelementptr inbounds %struct.btTransform* %childWorldTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %452 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 9 ; [#uses=3]
+ %453 = getelementptr inbounds %struct..2LocalInfoAdder2* %my_cb, i32 0, i32 0, i32 0 ; [#uses=3]
+ %454 = getelementptr inbounds %struct..2LocalInfoAdder2* %my_cb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %455 = getelementptr inbounds %struct..2LocalInfoAdder2* %my_cb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %456 = getelementptr inbounds %struct..2LocalInfoAdder2* %my_cb, i32 0, i32 0, i32 3 ; [#uses=1]
+ %457 = getelementptr inbounds %struct..2LocalInfoAdder2* %my_cb, i32 0, i32 0, i32 4 ; [#uses=1]
+ %458 = getelementptr inbounds %struct..2LocalInfoAdder2* %my_cb, i32 0, i32 0, i32 5 ; [#uses=1]
+ %459 = getelementptr inbounds %struct..2LocalInfoAdder2* %my_cb, i32 0, i32 1 ; [#uses=1]
+ %460 = getelementptr inbounds %struct..2LocalInfoAdder2* %my_cb, i32 0, i32 2 ; [#uses=1]
+ %461 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %resultCallback, i32 0, i32 1 ; [#uses=1]
+ %462 = getelementptr inbounds %struct..2LocalInfoAdder2* %my_cb, i32 0, i32 0 ; [#uses=1]
+ br label %invcont82
+
+invcont76: ; preds = %invcont82
+ %463 = load %struct.btCompoundShapeChild** %423, align 4 ; [#uses=13]
+ %scevgep172173 = getelementptr inbounds %struct.btCompoundShapeChild* %463, i32 %555, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %464 = load float* %scevgep172173, align 4 ; [#uses=3]
+ %scevgep171 = getelementptr %struct.btCompoundShapeChild* %463, i32 %555, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %465 = load float* %scevgep171, align 4 ; [#uses=3]
+ %scevgep170 = getelementptr %struct.btCompoundShapeChild* %463, i32 %555, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %466 = load float* %scevgep170, align 4 ; [#uses=3]
+ %scevgep168169 = getelementptr %struct.btCompoundShapeChild* %463, i32 %555, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %467 = load float* %scevgep168169, align 4 ; [#uses=3]
+ %scevgep167 = getelementptr %struct.btCompoundShapeChild* %463, i32 %555, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %468 = load float* %scevgep167, align 4 ; [#uses=3]
+ %scevgep166 = getelementptr %struct.btCompoundShapeChild* %463, i32 %555, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %469 = load float* %scevgep166, align 4 ; [#uses=3]
+ %scevgep164165 = getelementptr %struct.btCompoundShapeChild* %463, i32 %555, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %470 = load float* %scevgep164165, align 4 ; [#uses=3]
+ %scevgep163 = getelementptr %struct.btCompoundShapeChild* %463, i32 %555, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %471 = load float* %scevgep163, align 4 ; [#uses=3]
+ %scevgep162 = getelementptr %struct.btCompoundShapeChild* %463, i32 %555, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %472 = load float* %scevgep162, align 4 ; [#uses=3]
+ %scevgep161 = getelementptr %struct.btCompoundShapeChild* %463, i32 %555, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %473 = load float* %scevgep161, align 4 ; [#uses=3]
+ %scevgep160 = getelementptr %struct.btCompoundShapeChild* %463, i32 %555, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %474 = load float* %scevgep160, align 4 ; [#uses=3]
+ %scevgep = getelementptr %struct.btCompoundShapeChild* %463, i32 %555, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %475 = load float* %scevgep, align 4 ; [#uses=3]
+ %scevgep174 = getelementptr %struct.btCompoundShapeChild* %463, i32 %555, i32 1 ; [#uses=1]
+ %476 = load %struct.btCollisionShape** %scevgep174, align 4 ; [#uses=2]
+ %477 = load float* %424, align 4 ; [#uses=4]
+ %478 = fmul float %477, %473 ; [#uses=1]
+ %479 = load float* %425, align 4 ; [#uses=4]
+ %480 = fmul float %479, %474 ; [#uses=1]
+ %481 = fadd float %478, %480 ; [#uses=1]
+ %482 = load float* %426, align 4 ; [#uses=4]
+ %483 = fmul float %482, %475 ; [#uses=1]
+ %484 = fadd float %481, %483 ; [#uses=1]
+ %485 = load float* %427, align 4 ; [#uses=1]
+ %486 = fadd float %484, %485 ; [#uses=1]
+ %487 = load float* %428, align 4 ; [#uses=4]
+ %488 = fmul float %487, %473 ; [#uses=1]
+ %489 = load float* %429, align 4 ; [#uses=4]
+ %490 = fmul float %489, %474 ; [#uses=1]
+ %491 = fadd float %488, %490 ; [#uses=1]
+ %492 = load float* %430, align 4 ; [#uses=4]
+ %493 = fmul float %492, %475 ; [#uses=1]
+ %494 = fadd float %491, %493 ; [#uses=1]
+ %495 = load float* %431, align 4 ; [#uses=1]
+ %496 = fadd float %494, %495 ; [#uses=1]
+ %497 = load float* %432, align 4 ; [#uses=4]
+ %498 = fmul float %497, %473 ; [#uses=1]
+ %499 = load float* %433, align 4 ; [#uses=4]
+ %500 = fmul float %499, %474 ; [#uses=1]
+ %501 = fadd float %498, %500 ; [#uses=1]
+ %502 = load float* %434, align 4 ; [#uses=4]
+ %503 = fmul float %502, %475 ; [#uses=1]
+ %504 = fadd float %501, %503 ; [#uses=1]
+ %505 = load float* %435, align 4 ; [#uses=1]
+ %506 = fadd float %504, %505 ; [#uses=1]
+ %507 = fmul float %466, %477 ; [#uses=1]
+ %508 = fmul float %469, %479 ; [#uses=1]
+ %509 = fadd float %507, %508 ; [#uses=1]
+ %510 = fmul float %472, %482 ; [#uses=1]
+ %511 = fadd float %509, %510 ; [#uses=1]
+ %512 = fmul float %465, %477 ; [#uses=1]
+ %513 = fmul float %468, %479 ; [#uses=1]
+ %514 = fadd float %512, %513 ; [#uses=1]
+ %515 = fmul float %471, %482 ; [#uses=1]
+ %516 = fadd float %514, %515 ; [#uses=1]
+ %517 = fmul float %464, %477 ; [#uses=1]
+ %518 = fmul float %467, %479 ; [#uses=1]
+ %519 = fadd float %517, %518 ; [#uses=1]
+ %520 = fmul float %470, %482 ; [#uses=1]
+ %521 = fadd float %519, %520 ; [#uses=1]
+ %522 = fmul float %466, %487 ; [#uses=1]
+ %523 = fmul float %469, %489 ; [#uses=1]
+ %524 = fadd float %522, %523 ; [#uses=1]
+ %525 = fmul float %472, %492 ; [#uses=1]
+ %526 = fadd float %524, %525 ; [#uses=1]
+ %527 = fmul float %465, %487 ; [#uses=1]
+ %528 = fmul float %468, %489 ; [#uses=1]
+ %529 = fadd float %527, %528 ; [#uses=1]
+ %530 = fmul float %471, %492 ; [#uses=1]
+ %531 = fadd float %529, %530 ; [#uses=1]
+ %532 = fmul float %464, %487 ; [#uses=1]
+ %533 = fmul float %467, %489 ; [#uses=1]
+ %534 = fadd float %532, %533 ; [#uses=1]
+ %535 = fmul float %470, %492 ; [#uses=1]
+ %536 = fadd float %534, %535 ; [#uses=1]
+ %537 = fmul float %466, %497 ; [#uses=1]
+ %538 = fmul float %469, %499 ; [#uses=1]
+ %539 = fadd float %537, %538 ; [#uses=1]
+ %540 = fmul float %472, %502 ; [#uses=1]
+ %541 = fadd float %539, %540 ; [#uses=1]
+ %542 = fmul float %465, %497 ; [#uses=1]
+ %543 = fmul float %468, %499 ; [#uses=1]
+ %544 = fadd float %542, %543 ; [#uses=1]
+ %545 = fmul float %471, %502 ; [#uses=1]
+ %546 = fadd float %544, %545 ; [#uses=1]
+ %547 = fmul float %464, %497 ; [#uses=1]
+ %548 = fmul float %467, %499 ; [#uses=1]
+ %549 = fadd float %547, %548 ; [#uses=1]
+ %550 = fmul float %470, %502 ; [#uses=1]
+ %551 = fadd float %549, %550 ; [#uses=1]
+ store float %551, float* %436, align 8
+ store float %546, float* %437, align 4
+ store float %541, float* %438, align 8
+ store float 0.000000e+00, float* %439, align 4
+ store float %536, float* %440, align 8
+ store float %531, float* %441, align 4
+ store float %526, float* %442, align 8
+ store float 0.000000e+00, float* %443, align 4
+ store float %521, float* %444, align 8
+ store float %516, float* %445, align 4
+ store float %511, float* %446, align 8
+ store float 0.000000e+00, float* %447, align 4
+ store float %506, float* %448, align 8
+ store float %496, float* %449, align 4
+ store float %486, float* %450, align 8
+ store float 0.000000e+00, float* %451, align 4
+ %552 = load %struct.btCollisionShape** %452, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %476, %struct.btCollisionShape** %452, align 4
+ store %struct.btCollisionObject* null, %struct.btCollisionObject** %455, align 8
+ store i16 1, i16* %456, align 4
+ store i16 -1, i16* %457, align 2
+ store i32 0, i32* %458, align 8
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2, i32 0, i32 2), i32 (...)*** %453, align 8
+ store %"struct.btCollisionWorld::RayResultCallback"* %resultCallback, %"struct.btCollisionWorld::RayResultCallback"** %459, align 4
+ store i32 %555, i32* %460, align 8
+ %553 = load float* %461, align 4 ; [#uses=1]
+ store float %553, float* %454, align 4
+ invoke void @_ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackE(%struct.btTransform* %rayFromTrans, %struct.btTransform* %rayToTrans, %struct.btCollisionObject* %collisionObject, %struct.btCollisionShape* %476, %struct.btTransform* %childWorldTrans, %"struct.btCollisionWorld::RayResultCallback"* %462)
+ to label %invcont77 unwind label %lpad116
+
+invcont77: ; preds = %invcont76
+ store %struct.btCollisionShape* %552, %struct.btCollisionShape** %452, align 4
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2, i32 0, i32 2), i32 (...)*** %453, align 8
+ %554 = add nsw i32 %555, 1 ; [#uses=1]
+ br label %invcont82
+
+invcont82: ; preds = %invcont77, %invcont82.preheader
+ %555 = phi i32 [ %554, %invcont77 ], [ 0, %invcont82.preheader ] ; [#uses=16]
+ %556 = load i32* %421, align 4 ; [#uses=1]
+ %557 = icmp sgt i32 %556, %555 ; [#uses=1]
+ br i1 %557, label %invcont76, label %bb89
+
+invcont87: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb89: ; preds = %invcont82, %invcont63, %bb60, %bb36, %bb15
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 8
+ %558 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %558)
+ ret void
+
+lpad: ; preds = %bb60, %invcont50, %bb36, %invcont28, %bb15, %invcont1
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select91 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad92: ; preds = %bb8, %invcont2
+ %eh_ptr93 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select95 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr93, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %559 = getelementptr inbounds %struct.btGjkConvexCast* %convexCaster, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV22btSubsimplexConvexCast, i32 0, i32 2), i32 (...)*** %559, align 8
+ %560 = getelementptr inbounds %struct.btGjkConvexCast* %convexCaster, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %560)
+ to label %ppad unwind label %lpad96
+
+lpad96: ; preds = %lpad92
+ %eh_ptr97 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select99 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr97, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad100: ; preds = %invcont29
+ %eh_ptr101 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select103 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr101, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %201, align 8
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %244)
+ to label %ppad unwind label %lpad104
+
+lpad104: ; preds = %lpad100
+ %eh_ptr105 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select107 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr105, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad108: ; preds = %invcont53
+ %eh_ptr109 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select111 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr109, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %347, align 8
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %419)
+ to label %ppad unwind label %lpad112
+
+lpad112: ; preds = %lpad108
+ %eh_ptr113 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select115 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr113, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad116: ; preds = %invcont76
+ %eh_ptr117 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select119 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr117, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackEE15LocalInfoAdder2, i32 0, i32 2), i32 (...)*** %453, align 8
+ br label %ppad
+
+lpad120: ; preds = %ppad
+ %eh_ptr121 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select123 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr121, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %lpad116, %lpad108, %lpad100, %lpad92, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr117, %lpad116 ], [ %eh_ptr93, %lpad92 ], [ %eh_ptr101, %lpad100 ], [ %eh_ptr109, %lpad108 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 8
+ %561 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %561)
+ to label %invcont87 unwind label %lpad120
+}
+
+; [#uses=1]
+define void @_ZN16btCollisionWorld16updateSingleAabbEP17btCollisionObject(%struct.btCollisionWorld* nocapture %this, %struct.btCollisionObject* %colObj) align 2 {
+entry:
+ %minAabb = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %maxAabb = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 9 ; [#uses=1]
+ %1 = load %struct.btCollisionShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btCollisionShape* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 2 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 1 ; [#uses=1]
+ %7 = bitcast i32 (...)* %5 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %7(%struct.btCollisionShape* %1, %struct.btTransform* %6, %struct.btQuadWord* %minAabb, %struct.btQuadWord* %maxAabb)
+ %8 = load float* @gContactBreakingThreshold, align 4 ; [#uses=6]
+ %9 = getelementptr inbounds %struct.btQuadWord* %minAabb, i32 0, i32 0, i32 0 ; [#uses=2]
+ %10 = load float* %9, align 8 ; [#uses=1]
+ %11 = fsub float %10, %8 ; [#uses=2]
+ store float %11, float* %9, align 8
+ %12 = getelementptr inbounds %struct.btQuadWord* %minAabb, i32 0, i32 0, i32 1 ; [#uses=2]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fsub float %13, %8 ; [#uses=2]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %minAabb, i32 0, i32 0, i32 2 ; [#uses=2]
+ %16 = load float* %15, align 8 ; [#uses=1]
+ %17 = fsub float %16, %8 ; [#uses=2]
+ store float %17, float* %15, align 8
+ %18 = getelementptr inbounds %struct.btQuadWord* %maxAabb, i32 0, i32 0, i32 0 ; [#uses=2]
+ %19 = load float* %18, align 8 ; [#uses=1]
+ %20 = fadd float %19, %8 ; [#uses=2]
+ store float %20, float* %18, align 8
+ %21 = getelementptr inbounds %struct.btQuadWord* %maxAabb, i32 0, i32 0, i32 1 ; [#uses=2]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fadd float %22, %8 ; [#uses=2]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %maxAabb, i32 0, i32 0, i32 2 ; [#uses=2]
+ %25 = load float* %24, align 8 ; [#uses=1]
+ %26 = fadd float %25, %8 ; [#uses=2]
+ store float %26, float* %24, align 8
+ %27 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 5 ; [#uses=1]
+ %28 = load %struct.btActionInterface** %27, align 4 ; [#uses=2]
+ %29 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 12 ; [#uses=1]
+ %30 = load i32* %29, align 4 ; [#uses=1]
+ %31 = and i32 %30, 1 ; [#uses=1]
+ %toBool = icmp eq i32 %31, 0 ; [#uses=1]
+ br i1 %toBool, label %bb, label %bb5
+
+bb: ; preds = %entry
+ %32 = fsub float %26, %17 ; [#uses=2]
+ %33 = fsub float %23, %14 ; [#uses=2]
+ %34 = fsub float %20, %11 ; [#uses=2]
+ %35 = fmul float %34, %34 ; [#uses=1]
+ %36 = fmul float %33, %33 ; [#uses=1]
+ %37 = fadd float %35, %36 ; [#uses=1]
+ %38 = fmul float %32, %32 ; [#uses=1]
+ %39 = fadd float %37, %38 ; [#uses=1]
+ %40 = fcmp olt float %39, 0x426D1A94A0000000 ; [#uses=1]
+ br i1 %40, label %bb5, label %bb2
+
+bb2: ; preds = %bb
+ call void @_ZN17btCollisionObject18setActivationStateEi(%struct.btCollisionObject* %colObj, i32 5)
+ %.b = load i1* @_ZZN16btCollisionWorld16updateSingleAabbEP17btCollisionObjectE8reportMe.b, align 1 ; [#uses=1]
+ br i1 %.b, label %return, label %bb8
+
+bb5: ; preds = %bb, %entry
+ %41 = getelementptr inbounds %struct.btActionInterface* %28, i32 0, i32 0 ; [#uses=1]
+ %42 = load i32 (...)*** %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds i32 (...)** %42, i32 4 ; [#uses=1]
+ %44 = load i32 (...)** %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 2 ; [#uses=1]
+ %46 = load %struct.btActionInterface** %45, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 8 ; [#uses=1]
+ %48 = load %struct.btBroadphaseProxy** %47, align 4 ; [#uses=1]
+ %49 = bitcast i32 (...)* %44 to void (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* ; [#uses=1]
+ call void %49(%struct.btActionInterface* %28, %struct.btBroadphaseProxy* %48, %struct.btQuadWord* %minAabb, %struct.btQuadWord* %maxAabb, %struct.btActionInterface* %46)
+ ret void
+
+bb8: ; preds = %bb2
+ %50 = getelementptr inbounds %struct.btCollisionWorld* %this, i32 0, i32 6 ; [#uses=4]
+ %51 = load %struct.btActionInterface** %50, align 4 ; [#uses=3]
+ %52 = icmp eq %struct.btActionInterface* %51, null ; [#uses=1]
+ br i1 %52, label %return, label %bb9
+
+bb9: ; preds = %bb8
+ store i1 true, i1* @_ZZN16btCollisionWorld16updateSingleAabbEP17btCollisionObjectE8reportMe.b, align 1
+ %53 = getelementptr inbounds %struct.btActionInterface* %51, i32 0, i32 0 ; [#uses=1]
+ %54 = load i32 (...)*** %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds i32 (...)** %54, i32 9 ; [#uses=1]
+ %56 = load i32 (...)** %55, align 4 ; [#uses=1]
+ %57 = bitcast i32 (...)* %56 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ call void %57(%struct.btActionInterface* %51, i8* getelementptr inbounds ([49 x i8]* @.str8, i32 0, i32 0))
+ %58 = load %struct.btActionInterface** %50, align 4 ; [#uses=2]
+ %59 = getelementptr inbounds %struct.btActionInterface* %58, i32 0, i32 0 ; [#uses=1]
+ %60 = load i32 (...)*** %59, align 4 ; [#uses=1]
+ %61 = getelementptr inbounds i32 (...)** %60, i32 9 ; [#uses=1]
+ %62 = load i32 (...)** %61, align 4 ; [#uses=1]
+ %63 = bitcast i32 (...)* %62 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ call void %63(%struct.btActionInterface* %58, i8* getelementptr inbounds ([68 x i8]* @.str9, i32 0, i32 0))
+ %64 = load %struct.btActionInterface** %50, align 4 ; [#uses=2]
+ %65 = getelementptr inbounds %struct.btActionInterface* %64, i32 0, i32 0 ; [#uses=1]
+ %66 = load i32 (...)*** %65, align 4 ; [#uses=1]
+ %67 = getelementptr inbounds i32 (...)** %66, i32 9 ; [#uses=1]
+ %68 = load i32 (...)** %67, align 4 ; [#uses=1]
+ %69 = bitcast i32 (...)* %68 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ call void %69(%struct.btActionInterface* %64, i8* getelementptr inbounds ([65 x i8]* @.str10, i32 0, i32 0))
+ %70 = load %struct.btActionInterface** %50, align 4 ; [#uses=2]
+ %71 = getelementptr inbounds %struct.btActionInterface* %70, i32 0, i32 0 ; [#uses=1]
+ %72 = load i32 (...)*** %71, align 4 ; [#uses=1]
+ %73 = getelementptr inbounds i32 (...)** %72, i32 9 ; [#uses=1]
+ %74 = load i32 (...)** %73, align 4 ; [#uses=1]
+ %75 = bitcast i32 (...)* %74 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ call void %75(%struct.btActionInterface* %70, i8* getelementptr inbounds ([9 x i8]* @.str1116, i32 0, i32 0))
+ ret void
+
+return: ; preds = %bb8, %bb2
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN28btCompoundCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_b(%struct.btCompoundCollisionAlgorithm* %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext %isSwapped) align 2 {
+invcont:
+ %0 = alloca %struct.btCollisionAlgorithm*, align 4 ; [#uses=2]
+ %1 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=2]
+ call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %1, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ %2 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV28btCompoundCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %2, align 4
+ %3 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 4 ; [#uses=3]
+ store i8 1, i8* %3, align 4
+ %4 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=6]
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %4, align 4
+ %5 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ store i32 0, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ store i8 %isSwapped, i8* %7, align 4
+ %8 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 1 ; [#uses=1]
+ %9 = load %struct.btPersistentManifold** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=2]
+ store %struct.btPersistentManifold* %9, %struct.btPersistentManifold** %10, align 4
+ %11 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 0, i8* %11, align 4
+ %toBool = icmp eq i8 %isSwapped, 0 ; [#uses=2]
+ %iftmp.282.0 = select i1 %toBool, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btCollisionObject* %iftmp.282.0, i32 0, i32 9 ; [#uses=5]
+ %13 = load %struct.btCollisionShape** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btCollisionShape* %13, i32 5, i32 2 ; [#uses=1]
+ %15 = bitcast i8** %14 to i32* ; [#uses=1]
+ %16 = load i32* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 %16, i32* %17, align 4
+ %iftmp.285.0.i = select i1 %toBool, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=1]
+ %18 = load %struct.btCollisionShape** %12, align 4 ; [#uses=3]
+ %19 = getelementptr inbounds %struct.btCollisionShape* %18, i32 1, i32 1 ; [#uses=1]
+ %20 = load i32* %19, align 4 ; [#uses=3]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %0, align 4
+ %21 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmE6resizeEiRKS1_(%"struct.btAlignedObjectArray<btCollisionAlgorithm*>"* %21, i32 %20, %struct.btCollisionAlgorithm** %0) inlinehint
+ to label %.noexc31 unwind label %lpad15
+
+.noexc31: ; preds = %invcont
+ %22 = icmp sgt i32 %20, 0 ; [#uses=1]
+ br i1 %22, label %bb.nph.i, label %return
+
+bb.nph.i: ; preds = %.noexc31
+ %23 = getelementptr inbounds %struct.btCollisionShape* %18, i32 5, i32 1 ; [#uses=1]
+ %24 = bitcast i32* %23 to %struct.btDbvt** ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btCollisionShape* %18, i32 2 ; [#uses=1]
+ %26 = bitcast %struct.btCollisionShape* %25 to %struct.btCompoundShapeChild** ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb11.i, %bb.nph.i
+ %i.014.i = phi i32 [ 0, %bb.nph.i ], [ %tmp, %bb11.i ] ; [#uses=4]
+ %tmp = add i32 %i.014.i, 1 ; [#uses=2]
+ %28 = load %struct.btDbvt** %24, align 4 ; [#uses=1]
+ %29 = icmp eq %struct.btDbvt* %28, null ; [#uses=1]
+ br i1 %29, label %bb10.i, label %bb9.i
+
+bb9.i: ; preds = %bb7.i
+ %30 = load %struct.btCollisionAlgorithm*** %4, align 4 ; [#uses=1]
+ %scevgep16.i = getelementptr %struct.btCollisionAlgorithm** %30, i32 %i.014.i ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %scevgep16.i, align 4
+ br label %bb11.i
+
+bb10.i: ; preds = %bb7.i
+ %31 = load %struct.btCollisionShape** %12, align 4 ; [#uses=1]
+ %32 = load %struct.btCompoundShapeChild** %26, align 4 ; [#uses=1]
+ %scevgep15.i = getelementptr %struct.btCompoundShapeChild* %32, i32 %i.014.i, i32 1 ; [#uses=1]
+ %33 = load %struct.btCollisionShape** %scevgep15.i, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %33, %struct.btCollisionShape** %12, align 4
+ %34 = load %struct.btCollisionAlgorithm*** %4, align 4 ; [#uses=1]
+ %35 = load %struct.btActionInterface** %27, align 4 ; [#uses=2]
+ %36 = getelementptr inbounds %struct.btActionInterface* %35, i32 0, i32 0 ; [#uses=1]
+ %37 = load i32 (...)*** %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32 (...)** %37, i32 2 ; [#uses=1]
+ %39 = load i32 (...)** %38, align 4 ; [#uses=1]
+ %40 = load %struct.btPersistentManifold** %10, align 4 ; [#uses=1]
+ %41 = bitcast i32 (...)* %39 to %struct.btCollisionAlgorithm* (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btPersistentManifold*)* ; [#uses=1]
+ %42 = invoke %struct.btCollisionAlgorithm* %41(%struct.btActionInterface* %35, %struct.btCollisionObject* %iftmp.282.0, %struct.btCollisionObject* %iftmp.285.0.i, %struct.btPersistentManifold* %40)
+ to label %.noexc32 unwind label %lpad15 ; [#uses=1]
+
+.noexc32: ; preds = %bb10.i
+ %scevgep.i = getelementptr %struct.btCollisionAlgorithm** %34, i32 %i.014.i ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %42, %struct.btCollisionAlgorithm** %scevgep.i, align 4
+ store %struct.btCollisionShape* %31, %struct.btCollisionShape** %12, align 4
+ br label %bb11.i
+
+bb11.i: ; preds = %.noexc32, %bb9.i
+ %exitcond.i = icmp eq i32 %tmp, %20 ; [#uses=1]
+ br i1 %exitcond.i, label %return, label %bb7.i
+
+invcont10: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr16)
+ unreachable
+
+return: ; preds = %bb11.i, %.noexc31
+ ret void
+
+lpad15: ; preds = %bb10.i, %invcont
+ %eh_ptr16 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select18 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr16, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %43 = load %struct.btCollisionAlgorithm*** %4, align 4 ; [#uses=2]
+ %44 = icmp eq %struct.btCollisionAlgorithm** %43, null ; [#uses=1]
+ br i1 %44, label %ppad, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad15
+ %45 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %45, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %46 = bitcast %struct.btCollisionAlgorithm** %43 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %46)
+ to label %bb2.i.i.i unwind label %lpad19
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %4, align 4
+ br label %ppad
+
+lpad19: ; preds = %bb1.i.i.i
+ %eh_ptr20 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select22 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr20, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad23: ; preds = %ppad
+ %eh_ptr24 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select26 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr24, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i, %lpad15
+ store i8 1, i8* %3, align 4
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %4, align 4
+ store i32 0, i32* %5, align 4
+ store i32 0, i32* %6, align 4
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %1)
+ to label %invcont10 unwind label %lpad23
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btCompoundLeafCallbackD1Ev(%struct.btCompoundLeafCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundLeafCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV22btCompoundLeafCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btCompoundLeafCallbackD0Ev(%struct.btCompoundLeafCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundLeafCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV22btCompoundLeafCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btCompoundLeafCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btCompoundLeafCallback7ProcessEPK10btDbvtNode(%struct.btCompoundLeafCallback* %this, %struct.btDbvtNode* nocapture %leaf) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %worldAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %worldAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 2, i32 0 ; [#uses=1]
+ %2 = bitcast [2 x %struct.btDbvtNode*]* %1 to i32* ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btCompoundLeafCallback* %this, i32 0, i32 1 ; [#uses=2]
+ %5 = load %struct.btCollisionObject** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 9 ; [#uses=1]
+ %7 = load %struct.btCollisionShape** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btCollisionShape* %7, i32 2 ; [#uses=1]
+ %9 = bitcast %struct.btCollisionShape* %8 to %struct.btCompoundShapeChild** ; [#uses=1]
+ %10 = load %struct.btCompoundShapeChild** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCompoundShapeChild* %10, i32 %3, i32 1 ; [#uses=1]
+ %12 = load %struct.btCollisionShape** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btCompoundLeafCallback* %this, i32 0, i32 4 ; [#uses=2]
+ %14 = load %struct.btDispatcherInfo** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btDispatcherInfo* %14, i32 0, i32 5 ; [#uses=1]
+ %16 = load %struct.btActionInterface** %15, align 4 ; [#uses=3]
+ %17 = icmp eq %struct.btActionInterface* %16, null ; [#uses=1]
+ br i1 %17, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %18 = getelementptr inbounds %struct.btActionInterface* %16, i32 0, i32 0 ; [#uses=1]
+ %19 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i32 (...)** %19, i32 12 ; [#uses=1]
+ %21 = load i32 (...)** %20, align 4 ; [#uses=1]
+ %22 = bitcast i32 (...)* %21 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %23 = call i32 %22(%struct.btActionInterface* %16) ; [#uses=1]
+ %24 = and i32 %23, 2 ; [#uses=1]
+ %25 = icmp eq i32 %24, 0 ; [#uses=1]
+ br i1 %25, label %bb5, label %bb4
+
+bb4: ; preds = %bb
+ %26 = load %struct.btCollisionObject** %4, align 4 ; [#uses=12]
+ %27 = getelementptr inbounds %struct.btCollisionObject* %26, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=2]
+ %29 = getelementptr inbounds %struct.btCollisionObject* %26, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=2]
+ %31 = getelementptr inbounds %struct.btCollisionObject* %26, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=2]
+ %33 = getelementptr inbounds %struct.btCollisionObject* %26, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ %35 = getelementptr inbounds %struct.btCollisionObject* %26, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = getelementptr inbounds %struct.btCollisionObject* %26, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=2]
+ %39 = getelementptr inbounds %struct.btCollisionObject* %26, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=2]
+ %41 = getelementptr inbounds %struct.btCollisionObject* %26, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=2]
+ %43 = getelementptr inbounds %struct.btCollisionObject* %26, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=2]
+ %45 = getelementptr inbounds %struct.btCollisionObject* %26, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btCollisionObject* %26, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btCollisionObject* %26, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=2]
+ %53 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=2]
+ %55 = fsub float %52, %54 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=2]
+ %58 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=2]
+ %60 = fsub float %57, %59 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=2]
+ %63 = getelementptr inbounds %struct.btDbvtNode* %leaf, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=2]
+ %65 = fsub float %62, %64 ; [#uses=1]
+ %66 = fmul float %55, 5.000000e-01 ; [#uses=1]
+ %67 = fmul float %60, 5.000000e-01 ; [#uses=1]
+ %68 = fmul float %65, 5.000000e-01 ; [#uses=1]
+ %69 = fadd float %68, 0.000000e+00 ; [#uses=3]
+ %70 = fadd float %67, 0.000000e+00 ; [#uses=3]
+ %71 = fadd float %66, 0.000000e+00 ; [#uses=3]
+ %72 = fadd float %52, %54 ; [#uses=1]
+ %73 = fadd float %57, %59 ; [#uses=1]
+ %74 = fadd float %62, %64 ; [#uses=1]
+ %75 = fmul float %72, 5.000000e-01 ; [#uses=3]
+ %76 = fmul float %73, 5.000000e-01 ; [#uses=3]
+ %77 = fmul float %74, 5.000000e-01 ; [#uses=3]
+ %78 = call float @fabsf(float %44) nounwind readnone ; [#uses=1]
+ %79 = call float @fabsf(float %42) nounwind readnone ; [#uses=1]
+ %80 = call float @fabsf(float %40) nounwind readnone ; [#uses=1]
+ %81 = call float @fabsf(float %38) nounwind readnone ; [#uses=1]
+ %82 = call float @fabsf(float %36) nounwind readnone ; [#uses=1]
+ %83 = call float @fabsf(float %34) nounwind readnone ; [#uses=1]
+ %84 = call float @fabsf(float %32) nounwind readnone ; [#uses=1]
+ %85 = call float @fabsf(float %30) nounwind readnone ; [#uses=1]
+ %86 = call float @fabsf(float %28) nounwind readnone ; [#uses=1]
+ %87 = fmul float %40, %77 ; [#uses=1]
+ %88 = fmul float %42, %76 ; [#uses=1]
+ %89 = fadd float %87, %88 ; [#uses=1]
+ %90 = fmul float %44, %75 ; [#uses=1]
+ %91 = fadd float %89, %90 ; [#uses=1]
+ %92 = fadd float %91, %50 ; [#uses=2]
+ %93 = fmul float %34, %77 ; [#uses=1]
+ %94 = fmul float %36, %76 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %38, %75 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fadd float %97, %48 ; [#uses=2]
+ %99 = fmul float %28, %77 ; [#uses=1]
+ %100 = fmul float %30, %76 ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=1]
+ %102 = fmul float %32, %75 ; [#uses=1]
+ %103 = fadd float %101, %102 ; [#uses=1]
+ %104 = fadd float %103, %46 ; [#uses=2]
+ %105 = fmul float %80, %69 ; [#uses=1]
+ %106 = fmul float %79, %70 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = fmul float %78, %71 ; [#uses=1]
+ %109 = fadd float %107, %108 ; [#uses=2]
+ %110 = fmul float %83, %69 ; [#uses=1]
+ %111 = fmul float %82, %70 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=1]
+ %113 = fmul float %81, %71 ; [#uses=1]
+ %114 = fadd float %112, %113 ; [#uses=2]
+ %115 = fmul float %86, %69 ; [#uses=1]
+ %116 = fmul float %85, %70 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=1]
+ %118 = fmul float %84, %71 ; [#uses=1]
+ %119 = fadd float %117, %118 ; [#uses=2]
+ %120 = fsub float %92, %109 ; [#uses=1]
+ %121 = fsub float %98, %114 ; [#uses=1]
+ %122 = fsub float %104, %119 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %122, float* %123, align 8
+ %124 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %121, float* %124, align 4
+ %125 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %120, float* %125, align 8
+ %126 = getelementptr inbounds %struct.btQuadWord* %worldAabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %126, align 4
+ %127 = fadd float %92, %109 ; [#uses=1]
+ %128 = fadd float %98, %114 ; [#uses=1]
+ %129 = fadd float %104, %119 ; [#uses=1]
+ %130 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %129, float* %130, align 8
+ %131 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %128, float* %131, align 4
+ %132 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %127, float* %132, align 8
+ %133 = getelementptr inbounds %struct.btQuadWord* %worldAabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %133, align 4
+ %134 = load %struct.btDispatcherInfo** %13, align 4 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btDispatcherInfo* %134, i32 0, i32 5 ; [#uses=2]
+ %136 = load %struct.btActionInterface** %135, align 4 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btActionInterface* %136, i32 0, i32 0 ; [#uses=1]
+ %138 = load i32 (...)*** %137, align 4 ; [#uses=1]
+ %139 = getelementptr inbounds i32 (...)** %138, i32 13 ; [#uses=1]
+ %140 = load i32 (...)** %139, align 4 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %141, align 8
+ %142 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %142, align 4
+ %143 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %143, align 8
+ %144 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %144, align 4
+ %145 = load %struct.btActionInterface** %135, align 4 ; [#uses=1]
+ %146 = bitcast i32 (...)* %140 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %146(%struct.btActionInterface* %145, %struct.btQuadWord* %worldAabbMin, %struct.btQuadWord* %worldAabbMax, %struct.btQuadWord* %0)
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb, %entry
+ call void @_ZN22btCompoundLeafCallback17ProcessChildShapeEP16btCollisionShapei(%struct.btCompoundLeafCallback* %this, %struct.btCollisionShape* %12, i32 %3)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN28btCompoundCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(%struct.btCompoundCollisionAlgorithm* nocapture %this, %"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb2, %bb.nph
+ %i.06 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb2 ] ; [#uses=2]
+ %tmp = add i32 %i.06, 1 ; [#uses=2]
+ %4 = load %struct.btCollisionAlgorithm*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionAlgorithm** %4, i32 %i.06 ; [#uses=1]
+ %5 = load %struct.btCollisionAlgorithm** %scevgep, align 4 ; [#uses=3]
+ %6 = icmp eq %struct.btCollisionAlgorithm* %5, null ; [#uses=1]
+ br i1 %6, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %7 = getelementptr inbounds %struct.btCollisionAlgorithm* %5, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 4 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = bitcast i32 (...)* %10 to void (%struct.btCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* ; [#uses=1]
+ tail call void %11(%struct.btCollisionAlgorithm* %5, %"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %12 = load i32* %0, align 4 ; [#uses=1]
+ %13 = icmp sgt i32 %12, %tmp ; [#uses=1]
+ br i1 %13, label %bb, label %return
+
+return: ; preds = %bb2, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN28btCompoundCollisionAlgorithm21removeChildAlgorithmsEv(%struct.btCompoundCollisionAlgorithm* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb2, %bb.nph
+ %i.05 = phi i32 [ 0, %bb.nph ], [ %21, %bb2 ] ; [#uses=3]
+ %5 = load %struct.btCollisionAlgorithm*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionAlgorithm** %5, i32 %i.05 ; [#uses=1]
+ %6 = load %struct.btCollisionAlgorithm** %scevgep, align 4 ; [#uses=3]
+ %7 = icmp eq %struct.btCollisionAlgorithm* %6, null ; [#uses=1]
+ br i1 %7, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %8 = getelementptr inbounds %struct.btCollisionAlgorithm* %6, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = bitcast i32 (...)* %10 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ tail call void %11(%struct.btCollisionAlgorithm* %6)
+ %12 = load %struct.btActionInterface** %4, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btActionInterface* %12, i32 0, i32 0 ; [#uses=1]
+ %14 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds i32 (...)** %14, i32 13 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = load %struct.btCollisionAlgorithm*** %3, align 4 ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btCollisionAlgorithm** %17, i32 %i.05 ; [#uses=1]
+ %18 = load %struct.btCollisionAlgorithm** %scevgep6, align 4 ; [#uses=1]
+ %19 = bitcast i32 (...)* %16 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %20 = bitcast %struct.btCollisionAlgorithm* %18 to i8* ; [#uses=1]
+ tail call void %19(%struct.btActionInterface* %12, i8* %20)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %21 = add nsw i32 %i.05, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %21, %1 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb2, %entry
+ ret void
+}
+
+; [#uses=1]
+define float @_ZN28btCompoundCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btCompoundCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btDispatcherInfo* %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=2]
+ %iftmp.305.0 = select i1 %toBool, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=18]
+ %iftmp.306.0 = select i1 %toBool, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 9 ; [#uses=3]
+ %3 = load %struct.btCollisionShape** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=2]
+ %6 = icmp sgt i32 %5, 0 ; [#uses=1]
+ br i1 %6, label %bb.nph, label %bb11
+
+bb.nph: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btCollisionShape* %3, i32 2 ; [#uses=1]
+ %8 = bitcast %struct.btCollisionShape* %7 to %struct.btCompoundShapeChild** ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %11 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %12 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=3]
+ %13 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %14 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %15 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %16 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %17 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %18 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %19 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=3]
+ %21 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=3]
+ %22 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=3]
+ %23 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=3]
+ %24 = getelementptr inbounds %struct.btCollisionObject* %iftmp.305.0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=3]
+ %25 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb7, %bb.nph
+ %i.024 = phi i32 [ 0, %bb.nph ], [ %128, %bb7 ] ; [#uses=15]
+ %hitFraction.123 = phi float [ 1.000000e+00, %bb.nph ], [ %hitFraction.0, %bb7 ] ; [#uses=2]
+ %26 = load %struct.btCompoundShapeChild** %8, align 4 ; [#uses=13]
+ %scevgep25 = getelementptr %struct.btCompoundShapeChild* %26, i32 %i.024, i32 1 ; [#uses=1]
+ %27 = load %struct.btCollisionShape** %scevgep25, align 4 ; [#uses=1]
+ %28 = load float* %9, align 4 ; [#uses=5]
+ %29 = load float* %10, align 4 ; [#uses=5]
+ %30 = load float* %11, align 4 ; [#uses=5]
+ %31 = load float* %12, align 4 ; [#uses=1]
+ %32 = load float* %13, align 4 ; [#uses=5]
+ %33 = load float* %14, align 4 ; [#uses=5]
+ %34 = load float* %15, align 4 ; [#uses=5]
+ %35 = load float* %16, align 4 ; [#uses=1]
+ %36 = load float* %17, align 4 ; [#uses=5]
+ %37 = load float* %18, align 4 ; [#uses=5]
+ %38 = load float* %19, align 4 ; [#uses=5]
+ %39 = load float* %20, align 4 ; [#uses=1]
+ %40 = load float* %21, align 4 ; [#uses=2]
+ %41 = load float* %22, align 4 ; [#uses=2]
+ %42 = load float* %23, align 4 ; [#uses=2]
+ %43 = load float* %24, align 4 ; [#uses=1]
+ %scevgep26 = getelementptr %struct.btCompoundShapeChild* %26, i32 %i.024, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %scevgep26, align 4 ; [#uses=3]
+ %45 = fmul float %36, %44 ; [#uses=1]
+ %scevgep27 = getelementptr %struct.btCompoundShapeChild* %26, i32 %i.024, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %scevgep27, align 4 ; [#uses=3]
+ %47 = fmul float %37, %46 ; [#uses=1]
+ %48 = fadd float %45, %47 ; [#uses=1]
+ %scevgep28 = getelementptr %struct.btCompoundShapeChild* %26, i32 %i.024, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %scevgep28, align 4 ; [#uses=3]
+ %50 = fmul float %38, %49 ; [#uses=1]
+ %51 = fadd float %48, %50 ; [#uses=1]
+ %52 = fadd float %51, %42 ; [#uses=1]
+ %53 = fmul float %32, %44 ; [#uses=1]
+ %54 = fmul float %33, %46 ; [#uses=1]
+ %55 = fadd float %53, %54 ; [#uses=1]
+ %56 = fmul float %34, %49 ; [#uses=1]
+ %57 = fadd float %55, %56 ; [#uses=1]
+ %58 = fadd float %57, %41 ; [#uses=1]
+ %59 = fmul float %28, %44 ; [#uses=1]
+ %60 = fmul float %29, %46 ; [#uses=1]
+ %61 = fadd float %59, %60 ; [#uses=1]
+ %62 = fmul float %30, %49 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=1]
+ %64 = fadd float %63, %40 ; [#uses=1]
+ %scevgep29 = getelementptr %struct.btCompoundShapeChild* %26, i32 %i.024, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %65 = load float* %scevgep29, align 4 ; [#uses=3]
+ %66 = fmul float %65, %36 ; [#uses=1]
+ %scevgep30 = getelementptr %struct.btCompoundShapeChild* %26, i32 %i.024, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %67 = load float* %scevgep30, align 4 ; [#uses=3]
+ %68 = fmul float %67, %37 ; [#uses=1]
+ %69 = fadd float %66, %68 ; [#uses=1]
+ %scevgep31 = getelementptr %struct.btCompoundShapeChild* %26, i32 %i.024, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %scevgep31, align 4 ; [#uses=3]
+ %71 = fmul float %70, %38 ; [#uses=1]
+ %72 = fadd float %69, %71 ; [#uses=1]
+ %scevgep32 = getelementptr %struct.btCompoundShapeChild* %26, i32 %i.024, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %73 = load float* %scevgep32, align 4 ; [#uses=3]
+ %74 = fmul float %73, %36 ; [#uses=1]
+ %scevgep33 = getelementptr %struct.btCompoundShapeChild* %26, i32 %i.024, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %scevgep33, align 4 ; [#uses=3]
+ %76 = fmul float %75, %37 ; [#uses=1]
+ %77 = fadd float %74, %76 ; [#uses=1]
+ %scevgep34 = getelementptr %struct.btCompoundShapeChild* %26, i32 %i.024, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %78 = load float* %scevgep34, align 4 ; [#uses=3]
+ %79 = fmul float %78, %38 ; [#uses=1]
+ %80 = fadd float %77, %79 ; [#uses=1]
+ %scevgep3536 = getelementptr inbounds %struct.btCompoundShapeChild* %26, i32 %i.024, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %81 = load float* %scevgep3536, align 4 ; [#uses=3]
+ %82 = fmul float %81, %36 ; [#uses=1]
+ %scevgep3738 = getelementptr %struct.btCompoundShapeChild* %26, i32 %i.024, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %83 = load float* %scevgep3738, align 4 ; [#uses=3]
+ %84 = fmul float %83, %37 ; [#uses=1]
+ %85 = fadd float %82, %84 ; [#uses=1]
+ %scevgep3940 = getelementptr %struct.btCompoundShapeChild* %26, i32 %i.024, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %86 = load float* %scevgep3940, align 4 ; [#uses=3]
+ %87 = fmul float %86, %38 ; [#uses=1]
+ %88 = fadd float %85, %87 ; [#uses=1]
+ %89 = fmul float %65, %32 ; [#uses=1]
+ %90 = fmul float %67, %33 ; [#uses=1]
+ %91 = fadd float %89, %90 ; [#uses=1]
+ %92 = fmul float %70, %34 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = fmul float %73, %32 ; [#uses=1]
+ %95 = fmul float %75, %33 ; [#uses=1]
+ %96 = fadd float %94, %95 ; [#uses=1]
+ %97 = fmul float %78, %34 ; [#uses=1]
+ %98 = fadd float %96, %97 ; [#uses=1]
+ %99 = fmul float %81, %32 ; [#uses=1]
+ %100 = fmul float %83, %33 ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=1]
+ %102 = fmul float %86, %34 ; [#uses=1]
+ %103 = fadd float %101, %102 ; [#uses=1]
+ %104 = fmul float %65, %28 ; [#uses=1]
+ %105 = fmul float %67, %29 ; [#uses=1]
+ %106 = fadd float %104, %105 ; [#uses=1]
+ %107 = fmul float %70, %30 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fmul float %73, %28 ; [#uses=1]
+ %110 = fmul float %75, %29 ; [#uses=1]
+ %111 = fadd float %109, %110 ; [#uses=1]
+ %112 = fmul float %78, %30 ; [#uses=1]
+ %113 = fadd float %111, %112 ; [#uses=1]
+ %114 = fmul float %81, %28 ; [#uses=1]
+ %115 = fmul float %83, %29 ; [#uses=1]
+ %116 = fadd float %114, %115 ; [#uses=1]
+ %117 = fmul float %86, %30 ; [#uses=1]
+ %118 = fadd float %116, %117 ; [#uses=1]
+ store float %118, float* %9, align 4
+ store float %113, float* %10, align 4
+ store float %108, float* %11, align 4
+ store float 0.000000e+00, float* %12, align 4
+ store float %103, float* %13, align 4
+ store float %98, float* %14, align 4
+ store float %93, float* %15, align 4
+ store float 0.000000e+00, float* %16, align 4
+ store float %88, float* %17, align 4
+ store float %80, float* %18, align 4
+ store float %72, float* %19, align 4
+ store float 0.000000e+00, float* %20, align 4
+ store float %64, float* %21, align 4
+ store float %58, float* %22, align 4
+ store float %52, float* %23, align 4
+ store float 0.000000e+00, float* %24, align 4
+ store %struct.btCollisionShape* %27, %struct.btCollisionShape** %2, align 4
+ %119 = load %struct.btCollisionAlgorithm*** %25, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionAlgorithm** %119, i32 %i.024 ; [#uses=1]
+ %120 = load %struct.btCollisionAlgorithm** %scevgep, align 4 ; [#uses=2]
+ %121 = getelementptr inbounds %struct.btCollisionAlgorithm* %120, i32 0, i32 0 ; [#uses=1]
+ %122 = load i32 (...)*** %121, align 4 ; [#uses=1]
+ %123 = getelementptr inbounds i32 (...)** %122, i32 3 ; [#uses=1]
+ %124 = load i32 (...)** %123, align 4 ; [#uses=1]
+ %125 = bitcast i32 (...)* %124 to float (%struct.btCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* ; [#uses=1]
+ %126 = tail call float %125(%struct.btCollisionAlgorithm* %120, %struct.btCollisionObject* %iftmp.305.0, %struct.btCollisionObject* %iftmp.306.0, %struct.btDispatcherInfo* %dispatchInfo, %struct.btManifoldResult* %resultOut) ; [#uses=2]
+ %127 = fcmp olt float %126, %hitFraction.123 ; [#uses=1]
+ %hitFraction.0 = select i1 %127, float %126, float %hitFraction.123 ; [#uses=2]
+ store %struct.btCollisionShape* %3, %struct.btCollisionShape** %2, align 4
+ store float %28, float* %9, align 4
+ store float %29, float* %10, align 4
+ store float %30, float* %11, align 4
+ store float %31, float* %12, align 4
+ store float %32, float* %13, align 4
+ store float %33, float* %14, align 4
+ store float %34, float* %15, align 4
+ store float %35, float* %16, align 4
+ store float %36, float* %17, align 4
+ store float %37, float* %18, align 4
+ store float %38, float* %19, align 4
+ store float %39, float* %20, align 4
+ store float %40, float* %21, align 4
+ store float %41, float* %22, align 4
+ store float %42, float* %23, align 4
+ store float %43, float* %24, align 4
+ %128 = add nsw i32 %i.024, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %128, %5 ; [#uses=1]
+ br i1 %exitcond, label %bb11, label %bb7
+
+bb11: ; preds = %bb7, %entry
+ %hitFraction.1.lcssa = phi float [ 1.000000e+00, %entry ], [ %hitFraction.0, %bb7 ] ; [#uses=1]
+ ret float %hitFraction.1.lcssa
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN22btCompoundLeafCallback17ProcessChildShapeEP16btCollisionShapei(%struct.btCompoundLeafCallback* %this, %struct.btCollisionShape* %childShape, i32 %index) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %newChildWorldTrans = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %aabbMin0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %aabbMax0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %aabbMin1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %aabbMax1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = getelementptr inbounds %struct.btCompoundLeafCallback* %this, i32 0, i32 1 ; [#uses=10]
+ %3 = load %struct.btCollisionObject** %2, align 4 ; [#uses=33]
+ %4 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 9 ; [#uses=1]
+ %5 = load %struct.btCollisionShape** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=5]
+ %8 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=5]
+ %10 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=5]
+ %12 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=5]
+ %16 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=5]
+ %18 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=5]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=5]
+ %24 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=5]
+ %26 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=5]
+ %28 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=2]
+ %32 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=2]
+ %34 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=2]
+ %36 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btCollisionObject* %3, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btCollisionShape* %5, i32 2 ; [#uses=1]
+ %71 = bitcast %struct.btCollisionShape* %70 to %struct.btCompoundShapeChild** ; [#uses=1]
+ %72 = load %struct.btCompoundShapeChild** %71, align 4 ; [#uses=12]
+ %73 = getelementptr inbounds %struct.btCompoundShapeChild* %72, i32 %index, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=3]
+ %75 = fmul float %23, %74 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btCompoundShapeChild* %72, i32 %index, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=3]
+ %78 = fmul float %25, %77 ; [#uses=1]
+ %79 = fadd float %75, %78 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btCompoundShapeChild* %72, i32 %index, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=3]
+ %82 = fmul float %27, %81 ; [#uses=1]
+ %83 = fadd float %79, %82 ; [#uses=1]
+ %84 = fadd float %83, %35 ; [#uses=1]
+ %85 = fmul float %15, %74 ; [#uses=1]
+ %86 = fmul float %17, %77 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=1]
+ %88 = fmul float %19, %81 ; [#uses=1]
+ %89 = fadd float %87, %88 ; [#uses=1]
+ %90 = fadd float %89, %33 ; [#uses=1]
+ %91 = fmul float %7, %74 ; [#uses=1]
+ %92 = fmul float %9, %77 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = fmul float %11, %81 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fadd float %95, %31 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btCompoundShapeChild* %72, i32 %index, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=3]
+ %99 = fmul float %98, %23 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btCompoundShapeChild* %72, i32 %index, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=3]
+ %102 = fmul float %101, %25 ; [#uses=1]
+ %103 = fadd float %99, %102 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btCompoundShapeChild* %72, i32 %index, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=3]
+ %106 = fmul float %105, %27 ; [#uses=1]
+ %107 = fadd float %103, %106 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btCompoundShapeChild* %72, i32 %index, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=3]
+ %110 = fmul float %109, %23 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btCompoundShapeChild* %72, i32 %index, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=3]
+ %113 = fmul float %112, %25 ; [#uses=1]
+ %114 = fadd float %110, %113 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btCompoundShapeChild* %72, i32 %index, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %116 = load float* %115, align 4 ; [#uses=3]
+ %117 = fmul float %116, %27 ; [#uses=1]
+ %118 = fadd float %114, %117 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btCompoundShapeChild* %72, i32 %index, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %120 = load float* %119, align 4 ; [#uses=3]
+ %121 = fmul float %120, %23 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btCompoundShapeChild* %72, i32 %index, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=3]
+ %124 = fmul float %123, %25 ; [#uses=1]
+ %125 = fadd float %121, %124 ; [#uses=1]
+ %126 = getelementptr inbounds %struct.btCompoundShapeChild* %72, i32 %index, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %127 = load float* %126, align 4 ; [#uses=3]
+ %128 = fmul float %127, %27 ; [#uses=1]
+ %129 = fadd float %125, %128 ; [#uses=1]
+ %130 = fmul float %98, %15 ; [#uses=1]
+ %131 = fmul float %101, %17 ; [#uses=1]
+ %132 = fadd float %130, %131 ; [#uses=1]
+ %133 = fmul float %105, %19 ; [#uses=1]
+ %134 = fadd float %132, %133 ; [#uses=1]
+ %135 = fmul float %109, %15 ; [#uses=1]
+ %136 = fmul float %112, %17 ; [#uses=1]
+ %137 = fadd float %135, %136 ; [#uses=1]
+ %138 = fmul float %116, %19 ; [#uses=1]
+ %139 = fadd float %137, %138 ; [#uses=1]
+ %140 = fmul float %120, %15 ; [#uses=1]
+ %141 = fmul float %123, %17 ; [#uses=1]
+ %142 = fadd float %140, %141 ; [#uses=1]
+ %143 = fmul float %127, %19 ; [#uses=1]
+ %144 = fadd float %142, %143 ; [#uses=1]
+ %145 = fmul float %98, %7 ; [#uses=1]
+ %146 = fmul float %101, %9 ; [#uses=1]
+ %147 = fadd float %145, %146 ; [#uses=1]
+ %148 = fmul float %105, %11 ; [#uses=1]
+ %149 = fadd float %147, %148 ; [#uses=1]
+ %150 = fmul float %109, %7 ; [#uses=1]
+ %151 = fmul float %112, %9 ; [#uses=1]
+ %152 = fadd float %150, %151 ; [#uses=1]
+ %153 = fmul float %116, %11 ; [#uses=1]
+ %154 = fadd float %152, %153 ; [#uses=1]
+ %155 = fmul float %120, %7 ; [#uses=1]
+ %156 = fmul float %123, %9 ; [#uses=1]
+ %157 = fadd float %155, %156 ; [#uses=1]
+ %158 = fmul float %127, %11 ; [#uses=1]
+ %159 = fadd float %157, %158 ; [#uses=1]
+ %160 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %159, float* %160, align 8
+ %161 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %154, float* %161, align 4
+ %162 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %149, float* %162, align 8
+ %163 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %163, align 4
+ %164 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ store float %144, float* %164, align 8
+ %165 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ store float %139, float* %165, align 4
+ %166 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ store float %134, float* %166, align 8
+ %167 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %167, align 4
+ %168 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ store float %129, float* %168, align 8
+ %169 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ store float %118, float* %169, align 4
+ %170 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ store float %107, float* %170, align 8
+ %171 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %171, align 4
+ %172 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ store float %96, float* %172, align 8
+ %173 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ store float %90, float* %173, align 4
+ %174 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ store float %84, float* %174, align 8
+ %175 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %175, align 4
+ %176 = getelementptr inbounds %struct.btCollisionShape* %childShape, i32 0, i32 0 ; [#uses=1]
+ %177 = load i32 (...)*** %176, align 4 ; [#uses=1]
+ %178 = getelementptr inbounds i32 (...)** %177, i32 2 ; [#uses=1]
+ %179 = load i32 (...)** %178, align 4 ; [#uses=1]
+ %180 = bitcast i32 (...)* %179 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %180(%struct.btCollisionShape* %childShape, %struct.btTransform* %newChildWorldTrans, %struct.btQuadWord* %aabbMin0, %struct.btQuadWord* %aabbMax0)
+ %181 = getelementptr inbounds %struct.btCompoundLeafCallback* %this, i32 0, i32 2 ; [#uses=3]
+ %182 = load %struct.btCollisionObject** %181, align 4 ; [#uses=2]
+ %183 = getelementptr inbounds %struct.btCollisionObject* %182, i32 0, i32 9 ; [#uses=1]
+ %184 = load %struct.btCollisionShape** %183, align 4 ; [#uses=2]
+ %185 = getelementptr inbounds %struct.btCollisionShape* %184, i32 0, i32 0 ; [#uses=1]
+ %186 = load i32 (...)*** %185, align 4 ; [#uses=1]
+ %187 = getelementptr inbounds i32 (...)** %186, i32 2 ; [#uses=1]
+ %188 = load i32 (...)** %187, align 4 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btCollisionObject* %182, i32 0, i32 1 ; [#uses=1]
+ %190 = bitcast i32 (...)* %188 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %190(%struct.btCollisionShape* %184, %struct.btTransform* %189, %struct.btQuadWord* %aabbMin1, %struct.btQuadWord* %aabbMax1)
+ %191 = getelementptr inbounds %struct.btQuadWord* %aabbMin0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %192 = load float* %191, align 8 ; [#uses=1]
+ %193 = getelementptr inbounds %struct.btQuadWord* %aabbMax1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %194 = load float* %193, align 8 ; [#uses=1]
+ %195 = fcmp ogt float %192, %194 ; [#uses=1]
+ br i1 %195, label %bb2.i, label %bb.i
+
+bb.i: ; preds = %entry
+ %196 = getelementptr inbounds %struct.btQuadWord* %aabbMax0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %197 = load float* %196, align 8 ; [#uses=1]
+ %198 = getelementptr inbounds %struct.btQuadWord* %aabbMin1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %199 = load float* %198, align 8 ; [#uses=1]
+ %200 = fcmp olt float %197, %199 ; [#uses=1]
+ br i1 %200, label %bb2.i, label %bb3.i
+
+bb2.i: ; preds = %bb.i, %entry
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb.i
+ %iftmp.164.0.i = phi i8 [ 0, %bb2.i ], [ 1, %bb.i ] ; [#uses=1]
+ %201 = getelementptr inbounds %struct.btQuadWord* %aabbMin0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %202 = load float* %201, align 8 ; [#uses=1]
+ %203 = getelementptr inbounds %struct.btQuadWord* %aabbMax1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %204 = load float* %203, align 8 ; [#uses=1]
+ %205 = fcmp ogt float %202, %204 ; [#uses=1]
+ br i1 %205, label %bb6.i, label %bb4.i
+
+bb4.i: ; preds = %bb3.i
+ %206 = getelementptr inbounds %struct.btQuadWord* %aabbMax0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %207 = load float* %206, align 8 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btQuadWord* %aabbMin1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %209 = load float* %208, align 8 ; [#uses=1]
+ %210 = fcmp olt float %207, %209 ; [#uses=1]
+ br i1 %210, label %bb6.i, label %bb7.i
+
+bb6.i: ; preds = %bb4.i, %bb3.i
+ br label %bb7.i
+
+bb7.i: ; preds = %bb6.i, %bb4.i
+ %iftmp.165.0.i = phi i8 [ 0, %bb6.i ], [ %iftmp.164.0.i, %bb4.i ] ; [#uses=1]
+ %211 = getelementptr inbounds %struct.btQuadWord* %aabbMin0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %212 = load float* %211, align 4 ; [#uses=1]
+ %213 = getelementptr inbounds %struct.btQuadWord* %aabbMax1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %214 = load float* %213, align 4 ; [#uses=1]
+ %215 = fcmp ogt float %212, %214 ; [#uses=1]
+ br i1 %215, label %return, label %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+
+_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit: ; preds = %bb7.i
+ %216 = getelementptr inbounds %struct.btQuadWord* %aabbMax0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %217 = load float* %216, align 4 ; [#uses=1]
+ %218 = getelementptr inbounds %struct.btQuadWord* %aabbMin1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %219 = load float* %218, align 4 ; [#uses=1]
+ %220 = fcmp olt float %217, %219 ; [#uses=1]
+ %phitmp25 = icmp eq i8 %iftmp.165.0.i, 0 ; [#uses=1]
+ %phitmp = or i1 %220, %phitmp25 ; [#uses=1]
+ br i1 %phitmp, label %return, label %bb
+
+bb: ; preds = %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+ %221 = load %struct.btCollisionObject** %2, align 4 ; [#uses=16]
+ %222 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %223 = load float* %160, align 8 ; [#uses=1]
+ store float %223, float* %222, align 4
+ %224 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %225 = load float* %161, align 4 ; [#uses=1]
+ store float %225, float* %224, align 4
+ %226 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %227 = load float* %162, align 8 ; [#uses=1]
+ store float %227, float* %226, align 4
+ %228 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %229 = load float* %163, align 4 ; [#uses=1]
+ store float %229, float* %228, align 4
+ %230 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %231 = load float* %164, align 8 ; [#uses=1]
+ store float %231, float* %230, align 4
+ %232 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %233 = load float* %165, align 4 ; [#uses=1]
+ store float %233, float* %232, align 4
+ %234 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %235 = load float* %166, align 8 ; [#uses=1]
+ store float %235, float* %234, align 4
+ %236 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %237 = load float* %167, align 4 ; [#uses=1]
+ store float %237, float* %236, align 4
+ %238 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %239 = load float* %168, align 8 ; [#uses=1]
+ store float %239, float* %238, align 4
+ %240 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %241 = load float* %169, align 4 ; [#uses=1]
+ store float %241, float* %240, align 4
+ %242 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %243 = load float* %170, align 8 ; [#uses=1]
+ store float %243, float* %242, align 4
+ %244 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %245 = load float* %171, align 4 ; [#uses=1]
+ store float %245, float* %244, align 4
+ %246 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %247 = load float* %172, align 8 ; [#uses=1]
+ store float %247, float* %246, align 4
+ %248 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %249 = load float* %173, align 4 ; [#uses=1]
+ store float %249, float* %248, align 4
+ %250 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %251 = load float* %174, align 8 ; [#uses=1]
+ store float %251, float* %250, align 4
+ %252 = getelementptr inbounds %struct.btCollisionObject* %221, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %253 = load float* %175, align 4 ; [#uses=1]
+ store float %253, float* %252, align 4
+ %254 = load %struct.btCollisionObject** %2, align 4 ; [#uses=16]
+ %255 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %256 = load float* %160, align 8 ; [#uses=1]
+ store float %256, float* %255, align 4
+ %257 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %258 = load float* %161, align 4 ; [#uses=1]
+ store float %258, float* %257, align 4
+ %259 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %260 = load float* %162, align 8 ; [#uses=1]
+ store float %260, float* %259, align 4
+ %261 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %262 = load float* %163, align 4 ; [#uses=1]
+ store float %262, float* %261, align 4
+ %263 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %264 = load float* %164, align 8 ; [#uses=1]
+ store float %264, float* %263, align 4
+ %265 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %266 = load float* %165, align 4 ; [#uses=1]
+ store float %266, float* %265, align 4
+ %267 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %268 = load float* %166, align 8 ; [#uses=1]
+ store float %268, float* %267, align 4
+ %269 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %270 = load float* %167, align 4 ; [#uses=1]
+ store float %270, float* %269, align 4
+ %271 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %272 = load float* %168, align 8 ; [#uses=1]
+ store float %272, float* %271, align 4
+ %273 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %274 = load float* %169, align 4 ; [#uses=1]
+ store float %274, float* %273, align 4
+ %275 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %276 = load float* %170, align 8 ; [#uses=1]
+ store float %276, float* %275, align 4
+ %277 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %278 = load float* %171, align 4 ; [#uses=1]
+ store float %278, float* %277, align 4
+ %279 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %280 = load float* %172, align 8 ; [#uses=1]
+ store float %280, float* %279, align 4
+ %281 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %282 = load float* %173, align 4 ; [#uses=1]
+ store float %282, float* %281, align 4
+ %283 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %284 = load float* %174, align 8 ; [#uses=1]
+ store float %284, float* %283, align 4
+ %285 = getelementptr inbounds %struct.btCollisionObject* %254, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %286 = load float* %175, align 4 ; [#uses=1]
+ store float %286, float* %285, align 4
+ %287 = load %struct.btCollisionObject** %2, align 4 ; [#uses=1]
+ %288 = getelementptr inbounds %struct.btCollisionObject* %287, i32 0, i32 9 ; [#uses=2]
+ %289 = load %struct.btCollisionShape** %288, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %childShape, %struct.btCollisionShape** %288, align 4
+ %290 = getelementptr inbounds %struct.btCompoundLeafCallback* %this, i32 0, i32 6 ; [#uses=2]
+ %291 = load %struct.btCollisionAlgorithm*** %290, align 4 ; [#uses=1]
+ %292 = getelementptr inbounds %struct.btCollisionAlgorithm** %291, i32 %index ; [#uses=2]
+ %293 = load %struct.btCollisionAlgorithm** %292, align 4 ; [#uses=1]
+ %294 = icmp eq %struct.btCollisionAlgorithm* %293, null ; [#uses=1]
+ br i1 %294, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %295 = getelementptr inbounds %struct.btCompoundLeafCallback* %this, i32 0, i32 3 ; [#uses=1]
+ %296 = load %struct.btActionInterface** %295, align 4 ; [#uses=2]
+ %297 = getelementptr inbounds %struct.btActionInterface* %296, i32 0, i32 0 ; [#uses=1]
+ %298 = load i32 (...)*** %297, align 4 ; [#uses=1]
+ %299 = getelementptr inbounds i32 (...)** %298, i32 2 ; [#uses=1]
+ %300 = load i32 (...)** %299, align 4 ; [#uses=1]
+ %301 = getelementptr inbounds %struct.btCompoundLeafCallback* %this, i32 0, i32 7 ; [#uses=1]
+ %302 = load %struct.btPersistentManifold** %301, align 4 ; [#uses=1]
+ %303 = load %struct.btCollisionObject** %181, align 4 ; [#uses=1]
+ %304 = load %struct.btCollisionObject** %2, align 4 ; [#uses=1]
+ %305 = bitcast i32 (...)* %300 to %struct.btCollisionAlgorithm* (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btPersistentManifold*)* ; [#uses=1]
+ %306 = call %struct.btCollisionAlgorithm* %305(%struct.btActionInterface* %296, %struct.btCollisionObject* %304, %struct.btCollisionObject* %303, %struct.btPersistentManifold* %302) ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %306, %struct.btCollisionAlgorithm** %292, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %307 = getelementptr inbounds %struct.btCompoundLeafCallback* %this, i32 0, i32 5 ; [#uses=2]
+ %308 = load %struct.btManifoldResult** %307, align 4 ; [#uses=4]
+ %309 = getelementptr inbounds %struct.btManifoldResult* %308, i32 0, i32 4 ; [#uses=1]
+ %310 = load %struct.btCollisionObject** %309, align 4 ; [#uses=1]
+ %311 = load %struct.btCollisionObject** %2, align 4 ; [#uses=1]
+ %312 = icmp eq %struct.btCollisionObject* %310, %311 ; [#uses=1]
+ %313 = getelementptr inbounds %struct.btManifoldResult* %308, i32 0, i32 0, i32 0 ; [#uses=1]
+ %314 = load i32 (...)*** %313, align 4 ; [#uses=2]
+ br i1 %312, label %bb4, label %bb5
+
+bb4: ; preds = %bb2
+ %315 = getelementptr inbounds i32 (...)** %314, i32 2 ; [#uses=1]
+ %316 = load i32 (...)** %315, align 4 ; [#uses=1]
+ %317 = bitcast i32 (...)* %316 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ call void %317(%struct.btManifoldResult* %308, i32 -1, i32 %index)
+ br label %bb6
+
+bb5: ; preds = %bb2
+ %318 = getelementptr inbounds i32 (...)** %314, i32 3 ; [#uses=1]
+ %319 = load i32 (...)** %318, align 4 ; [#uses=1]
+ %320 = bitcast i32 (...)* %319 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ call void %320(%struct.btManifoldResult* %308, i32 -1, i32 %index)
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %321 = load %struct.btCollisionAlgorithm*** %290, align 4 ; [#uses=1]
+ %322 = getelementptr inbounds %struct.btCollisionAlgorithm** %321, i32 %index ; [#uses=1]
+ %323 = load %struct.btCollisionAlgorithm** %322, align 4 ; [#uses=2]
+ %324 = getelementptr inbounds %struct.btCollisionAlgorithm* %323, i32 0, i32 0 ; [#uses=1]
+ %325 = load i32 (...)*** %324, align 4 ; [#uses=1]
+ %326 = getelementptr inbounds i32 (...)** %325, i32 2 ; [#uses=1]
+ %327 = load i32 (...)** %326, align 4 ; [#uses=1]
+ %328 = load %struct.btManifoldResult** %307, align 4 ; [#uses=1]
+ %329 = getelementptr inbounds %struct.btCompoundLeafCallback* %this, i32 0, i32 4 ; [#uses=4]
+ %330 = load %struct.btDispatcherInfo** %329, align 4 ; [#uses=1]
+ %331 = load %struct.btCollisionObject** %181, align 4 ; [#uses=1]
+ %332 = load %struct.btCollisionObject** %2, align 4 ; [#uses=1]
+ %333 = bitcast i32 (...)* %327 to void (%struct.btCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* ; [#uses=1]
+ call void %333(%struct.btCollisionAlgorithm* %323, %struct.btCollisionObject* %332, %struct.btCollisionObject* %331, %struct.btDispatcherInfo* %330, %struct.btManifoldResult* %328)
+ %334 = load %struct.btDispatcherInfo** %329, align 4 ; [#uses=1]
+ %335 = getelementptr inbounds %struct.btDispatcherInfo* %334, i32 0, i32 5 ; [#uses=1]
+ %336 = load %struct.btActionInterface** %335, align 4 ; [#uses=3]
+ %337 = icmp eq %struct.btActionInterface* %336, null ; [#uses=1]
+ br i1 %337, label %bb13, label %bb7
+
+bb7: ; preds = %bb6
+ %338 = getelementptr inbounds %struct.btActionInterface* %336, i32 0, i32 0 ; [#uses=1]
+ %339 = load i32 (...)*** %338, align 4 ; [#uses=1]
+ %340 = getelementptr inbounds i32 (...)** %339, i32 12 ; [#uses=1]
+ %341 = load i32 (...)** %340, align 4 ; [#uses=1]
+ %342 = bitcast i32 (...)* %341 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %343 = call i32 %342(%struct.btActionInterface* %336) ; [#uses=1]
+ %344 = and i32 %343, 2 ; [#uses=1]
+ %345 = icmp eq i32 %344, 0 ; [#uses=1]
+ br i1 %345, label %bb13, label %bb12
+
+bb12: ; preds = %bb7
+ %346 = load %struct.btDispatcherInfo** %329, align 4 ; [#uses=1]
+ %347 = getelementptr inbounds %struct.btDispatcherInfo* %346, i32 0, i32 5 ; [#uses=2]
+ %348 = load %struct.btActionInterface** %347, align 4 ; [#uses=1]
+ %349 = getelementptr inbounds %struct.btActionInterface* %348, i32 0, i32 0 ; [#uses=1]
+ %350 = load i32 (...)*** %349, align 4 ; [#uses=1]
+ %351 = getelementptr inbounds i32 (...)** %350, i32 13 ; [#uses=1]
+ %352 = load i32 (...)** %351, align 4 ; [#uses=1]
+ %353 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %353, align 8
+ %354 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %354, align 4
+ %355 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %355, align 8
+ %356 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %356, align 4
+ %357 = load %struct.btActionInterface** %347, align 4 ; [#uses=1]
+ %358 = bitcast i32 (...)* %352 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %358(%struct.btActionInterface* %357, %struct.btQuadWord* %aabbMin0, %struct.btQuadWord* %aabbMax0, %struct.btQuadWord* %1)
+ %359 = load %struct.btDispatcherInfo** %329, align 4 ; [#uses=1]
+ %360 = getelementptr inbounds %struct.btDispatcherInfo* %359, i32 0, i32 5 ; [#uses=2]
+ %361 = load %struct.btActionInterface** %360, align 4 ; [#uses=1]
+ %362 = getelementptr inbounds %struct.btActionInterface* %361, i32 0, i32 0 ; [#uses=1]
+ %363 = load i32 (...)*** %362, align 4 ; [#uses=1]
+ %364 = getelementptr inbounds i32 (...)** %363, i32 13 ; [#uses=1]
+ %365 = load i32 (...)** %364, align 4 ; [#uses=1]
+ %366 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %366, align 8
+ %367 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %367, align 4
+ %368 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %368, align 8
+ %369 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %369, align 4
+ %370 = load %struct.btActionInterface** %360, align 4 ; [#uses=1]
+ %371 = bitcast i32 (...)* %365 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %371(%struct.btActionInterface* %370, %struct.btQuadWord* %aabbMin1, %struct.btQuadWord* %aabbMax1, %struct.btQuadWord* %0)
+ br label %bb13
+
+bb13: ; preds = %bb12, %bb7, %bb6
+ %372 = load %struct.btCollisionObject** %2, align 4 ; [#uses=1]
+ %373 = getelementptr inbounds %struct.btCollisionObject* %372, i32 0, i32 9 ; [#uses=1]
+ store %struct.btCollisionShape* %289, %struct.btCollisionShape** %373, align 4
+ %374 = load %struct.btCollisionObject** %2, align 4 ; [#uses=16]
+ %375 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %7, float* %375, align 4
+ %376 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %9, float* %376, align 4
+ %377 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %11, float* %377, align 4
+ %378 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %13, float* %378, align 4
+ %379 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %15, float* %379, align 4
+ %380 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %17, float* %380, align 4
+ %381 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %19, float* %381, align 4
+ %382 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %21, float* %382, align 4
+ %383 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %23, float* %383, align 4
+ %384 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %25, float* %384, align 4
+ %385 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %27, float* %385, align 4
+ %386 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %29, float* %386, align 4
+ %387 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %31, float* %387, align 4
+ %388 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %33, float* %388, align 4
+ %389 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %35, float* %389, align 4
+ %390 = getelementptr inbounds %struct.btCollisionObject* %374, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %37, float* %390, align 4
+ %391 = load %struct.btCollisionObject** %2, align 4 ; [#uses=16]
+ %392 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %39, float* %392, align 4
+ %393 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %41, float* %393, align 4
+ %394 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %43, float* %394, align 4
+ %395 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %45, float* %395, align 4
+ %396 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %47, float* %396, align 4
+ %397 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %49, float* %397, align 4
+ %398 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %51, float* %398, align 4
+ %399 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %53, float* %399, align 4
+ %400 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %55, float* %400, align 4
+ %401 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %57, float* %401, align 4
+ %402 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %59, float* %402, align 4
+ %403 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %61, float* %403, align 4
+ %404 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %63, float* %404, align 4
+ %405 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %65, float* %405, align 4
+ %406 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %67, float* %406, align 4
+ %407 = getelementptr inbounds %struct.btCollisionObject* %391, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %69, float* %407, align 4
+ ret void
+
+return: ; preds = %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit, %bb7.i
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmE6resizeEiRKS1_(%"struct.btAlignedObjectArray<btCollisionAlgorithm*>"* nocapture %this, i32 %newsize, %struct.btCollisionAlgorithm** nocapture %fillData) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionAlgorithm*>"* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = icmp sgt i32 %1, %newsize ; [#uses=1]
+ br i1 %2, label %bb12, label %bb3
+
+bb3: ; preds = %entry
+ %3 = icmp slt i32 %1, %newsize ; [#uses=2]
+ br i1 %3, label %bb4, label %bb12
+
+bb4: ; preds = %bb3
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionAlgorithm*>"* %this, i32 0, i32 2 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp slt i32 %5, %newsize ; [#uses=1]
+ br i1 %6, label %bb.i, label %bb.nph
+
+bb.i: ; preds = %bb4
+ %7 = icmp eq i32 %newsize, 0 ; [#uses=1]
+ br i1 %7, label %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %8 = shl i32 %newsize, 2 ; [#uses=1]
+ %9 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %8, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %9 to %struct.btCollisionAlgorithm** ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %10 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %11 = phi %struct.btCollisionAlgorithm** [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=2]
+ %12 = icmp sgt i32 %10, 0 ; [#uses=1]
+ br i1 %12, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayIP20btCollisionAlgorithmE4copyEiiPS1_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmE8allocateEi.exit.i
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionAlgorithm*>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=3]
+ %scevgep.i.i = getelementptr %struct.btCollisionAlgorithm** %11, i32 %indvar.i.i ; [#uses=2]
+ %14 = icmp eq %struct.btCollisionAlgorithm** %scevgep.i.i, null ; [#uses=1]
+ br i1 %14, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %15 = load %struct.btCollisionAlgorithm*** %13, align 4 ; [#uses=1]
+ %scevgep8.i.i = getelementptr %struct.btCollisionAlgorithm** %15, i32 %indvar.i.i ; [#uses=1]
+ %16 = load %struct.btCollisionAlgorithm** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %16, %struct.btCollisionAlgorithm** %scevgep.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond19 = icmp eq i32 %indvar.next.i.i, %10 ; [#uses=1]
+ br i1 %exitcond19, label %_ZNK20btAlignedObjectArrayIP20btCollisionAlgorithmE4copyEiiPS1_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIP20btCollisionAlgorithmE4copyEiiPS1_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmE8allocateEi.exit.i
+ %17 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionAlgorithm*>"* %this, i32 0, i32 3 ; [#uses=3]
+ %18 = load %struct.btCollisionAlgorithm*** %17, align 4 ; [#uses=2]
+ %19 = icmp eq %struct.btCollisionAlgorithm** %18, null ; [#uses=1]
+ br i1 %19, label %bb11.preheader, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP20btCollisionAlgorithmE4copyEiiPS1_.exit.i
+ %20 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionAlgorithm*>"* %this, i32 0, i32 4 ; [#uses=1]
+ %21 = load i8* %20, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %21, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %22 = bitcast %struct.btCollisionAlgorithm** %18 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %22)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %17, align 4
+ br label %bb11.preheader
+
+bb11.preheader: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIP20btCollisionAlgorithmE4copyEiiPS1_.exit.i
+ %23 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionAlgorithm*>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %23, align 4
+ store %struct.btCollisionAlgorithm** %11, %struct.btCollisionAlgorithm*** %17, align 4
+ store i32 %newsize, i32* %4, align 4
+ br i1 %3, label %bb.nph, label %bb12
+
+bb.nph: ; preds = %bb11.preheader, %bb4
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionAlgorithm*>"* %this, i32 0, i32 3 ; [#uses=1]
+ %tmp = sub i32 %newsize, %1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb10, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb10 ] ; [#uses=2]
+ %tmp17 = add i32 %1, %indvar ; [#uses=1]
+ %25 = load %struct.btCollisionAlgorithm*** %24, align 4 ; [#uses=1]
+ %scevgep18 = getelementptr %struct.btCollisionAlgorithm** %25, i32 %tmp17 ; [#uses=2]
+ %26 = icmp eq %struct.btCollisionAlgorithm** %scevgep18, null ; [#uses=1]
+ br i1 %26, label %bb10, label %bb8
+
+bb8: ; preds = %bb7
+ %27 = load %struct.btCollisionAlgorithm** %fillData, align 4 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %27, %struct.btCollisionAlgorithm** %scevgep18, align 4
+ br label %bb10
+
+bb10: ; preds = %bb8, %bb7
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; [#uses=1]
+ br i1 %exitcond, label %bb12, label %bb7
+
+bb12: ; preds = %bb10, %bb11.preheader, %bb3, %entry
+ store i32 %newsize, i32* %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN28btCompoundCollisionAlgorithm26preallocateChildAlgorithmsEP17btCollisionObjectS1_(%struct.btCompoundCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = alloca %struct.btCollisionAlgorithm*, align 4 ; [#uses=2]
+ %1 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=2]
+ %iftmp.284.0 = select i1 %toBool, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=2]
+ %iftmp.285.0 = select i1 %toBool, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btCollisionObject* %iftmp.284.0, i32 0, i32 9 ; [#uses=4]
+ %4 = load %struct.btCollisionShape** %3, align 4 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btCollisionShape* %4, i32 1, i32 1 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=3]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %0, align 4
+ %7 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmE6resizeEiRKS1_(%"struct.btAlignedObjectArray<btCollisionAlgorithm*>"* %7, i32 %6, %struct.btCollisionAlgorithm** %0) inlinehint
+ %8 = icmp sgt i32 %6, 0 ; [#uses=1]
+ br i1 %8, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btCollisionShape* %4, i32 5, i32 1 ; [#uses=1]
+ %10 = bitcast i32* %9 to %struct.btDbvt** ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCollisionShape* %4, i32 2 ; [#uses=1]
+ %12 = bitcast %struct.btCollisionShape* %11 to %struct.btCompoundShapeChild** ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb11, %bb.nph
+ %i.014 = phi i32 [ 0, %bb.nph ], [ %31, %bb11 ] ; [#uses=4]
+ %16 = load %struct.btDbvt** %10, align 4 ; [#uses=1]
+ %17 = icmp eq %struct.btDbvt* %16, null ; [#uses=1]
+ br i1 %17, label %bb10, label %bb9
+
+bb9: ; preds = %bb7
+ %18 = load %struct.btCollisionAlgorithm*** %13, align 4 ; [#uses=1]
+ %scevgep16 = getelementptr %struct.btCollisionAlgorithm** %18, i32 %i.014 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %scevgep16, align 4
+ br label %bb11
+
+bb10: ; preds = %bb7
+ %19 = load %struct.btCollisionShape** %3, align 4 ; [#uses=1]
+ %20 = load %struct.btCompoundShapeChild** %12, align 4 ; [#uses=1]
+ %scevgep15 = getelementptr %struct.btCompoundShapeChild* %20, i32 %i.014, i32 1 ; [#uses=1]
+ %21 = load %struct.btCollisionShape** %scevgep15, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %21, %struct.btCollisionShape** %3, align 4
+ %22 = load %struct.btCollisionAlgorithm*** %13, align 4 ; [#uses=1]
+ %23 = load %struct.btActionInterface** %14, align 4 ; [#uses=2]
+ %24 = getelementptr inbounds %struct.btActionInterface* %23, i32 0, i32 0 ; [#uses=1]
+ %25 = load i32 (...)*** %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds i32 (...)** %25, i32 2 ; [#uses=1]
+ %27 = load i32 (...)** %26, align 4 ; [#uses=1]
+ %28 = load %struct.btPersistentManifold** %15, align 4 ; [#uses=1]
+ %29 = bitcast i32 (...)* %27 to %struct.btCollisionAlgorithm* (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btPersistentManifold*)* ; [#uses=1]
+ %30 = call %struct.btCollisionAlgorithm* %29(%struct.btActionInterface* %23, %struct.btCollisionObject* %iftmp.284.0, %struct.btCollisionObject* %iftmp.285.0, %struct.btPersistentManifold* %28) ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionAlgorithm** %22, i32 %i.014 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %30, %struct.btCollisionAlgorithm** %scevgep, align 4
+ store %struct.btCollisionShape* %19, %struct.btCollisionShape** %3, align 4
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb9
+ %31 = add nsw i32 %i.014, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %31, %6 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb7
+
+return: ; preds = %bb11, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN28btCompoundCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btCompoundCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btDispatcherInfo* %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %0 = alloca %struct.btCollisionAlgorithm*, align 4 ; [#uses=2]
+ %callback = alloca %struct.btCompoundLeafCallback, align 8 ; [#uses=10]
+ %manifoldArray = alloca %"struct.btAlignedObjectArray<btPersistentManifold*>", align 8 ; [#uses=5]
+ %localAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %localAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %otherInCompoundSpace = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %bounds = alloca %struct.GIM_AABB, align 8 ; [#uses=9]
+ %newChildWorldTrans = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %aabbMin0 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %aabbMax0 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %aabbMin1 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %aabbMax1 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %1 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %2 = load i8* %1, align 4 ; [#uses=2]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=2]
+ %iftmp.296.0 = select i1 %toBool, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=26]
+ %iftmp.297.0 = select i1 %toBool, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=16]
+ %3 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 9 ; [#uses=1]
+ %4 = load %struct.btCollisionShape** %3, align 4 ; [#uses=4]
+ %5 = getelementptr inbounds %struct.btCollisionShape* %4, i32 5, i32 2 ; [#uses=1]
+ %6 = bitcast i8** %5 to i32* ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %10 = icmp eq i32 %7, %9 ; [#uses=1]
+ br i1 %10, label %bb9, label %bb8
+
+bb8: ; preds = %entry
+ %11 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=2]
+ %13 = icmp sgt i32 %12, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i, label %_ZN28btCompoundCollisionAlgorithm21removeChildAlgorithmsEv.exit
+
+bb.nph.i: ; preds = %bb8
+ %14 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %bb2.i, %bb.nph.i
+ %i.05.i = phi i32 [ 0, %bb.nph.i ], [ %32, %bb2.i ] ; [#uses=3]
+ %16 = load %struct.btCollisionAlgorithm*** %14, align 4 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btCollisionAlgorithm** %16, i32 %i.05.i ; [#uses=1]
+ %17 = load %struct.btCollisionAlgorithm** %scevgep.i, align 4 ; [#uses=3]
+ %18 = icmp eq %struct.btCollisionAlgorithm* %17, null ; [#uses=1]
+ br i1 %18, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %19 = getelementptr inbounds %struct.btCollisionAlgorithm* %17, i32 0, i32 0 ; [#uses=1]
+ %20 = load i32 (...)*** %19, align 4 ; [#uses=1]
+ %21 = load i32 (...)** %20, align 4 ; [#uses=1]
+ %22 = bitcast i32 (...)* %21 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ call void %22(%struct.btCollisionAlgorithm* %17)
+ %23 = load %struct.btActionInterface** %15, align 4 ; [#uses=2]
+ %24 = getelementptr inbounds %struct.btActionInterface* %23, i32 0, i32 0 ; [#uses=1]
+ %25 = load i32 (...)*** %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds i32 (...)** %25, i32 13 ; [#uses=1]
+ %27 = load i32 (...)** %26, align 4 ; [#uses=1]
+ %28 = load %struct.btCollisionAlgorithm*** %14, align 4 ; [#uses=1]
+ %scevgep6.i = getelementptr %struct.btCollisionAlgorithm** %28, i32 %i.05.i ; [#uses=1]
+ %29 = load %struct.btCollisionAlgorithm** %scevgep6.i, align 4 ; [#uses=1]
+ %30 = bitcast i32 (...)* %27 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %31 = bitcast %struct.btCollisionAlgorithm* %29 to i8* ; [#uses=1]
+ call void %30(%struct.btActionInterface* %23, i8* %31)
+ br label %bb2.i
+
+bb2.i: ; preds = %bb1.i, %bb.i
+ %32 = add nsw i32 %i.05.i, 1 ; [#uses=2]
+ %exitcond183 = icmp eq i32 %32, %12 ; [#uses=1]
+ br i1 %exitcond183, label %_ZN28btCompoundCollisionAlgorithm21removeChildAlgorithmsEv.exit.loopexit, label %bb.i
+
+_ZN28btCompoundCollisionAlgorithm21removeChildAlgorithmsEv.exit.loopexit: ; preds = %bb2.i
+ %.pre = load i8* %1, align 4 ; [#uses=1]
+ br label %_ZN28btCompoundCollisionAlgorithm21removeChildAlgorithmsEv.exit
+
+_ZN28btCompoundCollisionAlgorithm21removeChildAlgorithmsEv.exit: ; preds = %_ZN28btCompoundCollisionAlgorithm21removeChildAlgorithmsEv.exit.loopexit, %bb8
+ %33 = phi i8 [ %.pre, %_ZN28btCompoundCollisionAlgorithm21removeChildAlgorithmsEv.exit.loopexit ], [ %2, %bb8 ] ; [#uses=1]
+ %toBool.i = icmp eq i8 %33, 0 ; [#uses=2]
+ %iftmp.284.0.i = select i1 %toBool.i, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=2]
+ %iftmp.285.0.i = select i1 %toBool.i, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btCollisionObject* %iftmp.284.0.i, i32 0, i32 9 ; [#uses=4]
+ %35 = load %struct.btCollisionShape** %34, align 4 ; [#uses=3]
+ %36 = getelementptr inbounds %struct.btCollisionShape* %35, i32 1, i32 1 ; [#uses=1]
+ %37 = load i32* %36, align 4 ; [#uses=3]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %0, align 4
+ %38 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmE6resizeEiRKS1_(%"struct.btAlignedObjectArray<btCollisionAlgorithm*>"* %38, i32 %37, %struct.btCollisionAlgorithm** %0) inlinehint
+ %39 = icmp sgt i32 %37, 0 ; [#uses=1]
+ br i1 %39, label %bb.nph.i103, label %bb9
+
+bb.nph.i103: ; preds = %_ZN28btCompoundCollisionAlgorithm21removeChildAlgorithmsEv.exit
+ %40 = getelementptr inbounds %struct.btCollisionShape* %35, i32 5, i32 1 ; [#uses=1]
+ %41 = bitcast i32* %40 to %struct.btDbvt** ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btCollisionShape* %35, i32 2 ; [#uses=1]
+ %43 = bitcast %struct.btCollisionShape* %42 to %struct.btCompoundShapeChild** ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=2]
+ %45 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb11.i, %bb.nph.i103
+ %i.014.i = phi i32 [ 0, %bb.nph.i103 ], [ %62, %bb11.i ] ; [#uses=4]
+ %47 = load %struct.btDbvt** %41, align 4 ; [#uses=1]
+ %48 = icmp eq %struct.btDbvt* %47, null ; [#uses=1]
+ br i1 %48, label %bb10.i, label %bb9.i
+
+bb9.i: ; preds = %bb7.i
+ %49 = load %struct.btCollisionAlgorithm*** %44, align 4 ; [#uses=1]
+ %scevgep16.i = getelementptr %struct.btCollisionAlgorithm** %49, i32 %i.014.i ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %scevgep16.i, align 4
+ br label %bb11.i
+
+bb10.i: ; preds = %bb7.i
+ %50 = load %struct.btCollisionShape** %34, align 4 ; [#uses=1]
+ %51 = load %struct.btCompoundShapeChild** %43, align 4 ; [#uses=1]
+ %scevgep15.i = getelementptr %struct.btCompoundShapeChild* %51, i32 %i.014.i, i32 1 ; [#uses=1]
+ %52 = load %struct.btCollisionShape** %scevgep15.i, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %52, %struct.btCollisionShape** %34, align 4
+ %53 = load %struct.btCollisionAlgorithm*** %44, align 4 ; [#uses=1]
+ %54 = load %struct.btActionInterface** %45, align 4 ; [#uses=2]
+ %55 = getelementptr inbounds %struct.btActionInterface* %54, i32 0, i32 0 ; [#uses=1]
+ %56 = load i32 (...)*** %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds i32 (...)** %56, i32 2 ; [#uses=1]
+ %58 = load i32 (...)** %57, align 4 ; [#uses=1]
+ %59 = load %struct.btPersistentManifold** %46, align 4 ; [#uses=1]
+ %60 = bitcast i32 (...)* %58 to %struct.btCollisionAlgorithm* (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btPersistentManifold*)* ; [#uses=1]
+ %61 = call %struct.btCollisionAlgorithm* %60(%struct.btActionInterface* %54, %struct.btCollisionObject* %iftmp.284.0.i, %struct.btCollisionObject* %iftmp.285.0.i, %struct.btPersistentManifold* %59) ; [#uses=1]
+ %scevgep.i104 = getelementptr %struct.btCollisionAlgorithm** %53, i32 %i.014.i ; [#uses=1]
+ store %struct.btCollisionAlgorithm* %61, %struct.btCollisionAlgorithm** %scevgep.i104, align 4
+ store %struct.btCollisionShape* %50, %struct.btCollisionShape** %34, align 4
+ br label %bb11.i
+
+bb11.i: ; preds = %bb10.i, %bb9.i
+ %62 = add nsw i32 %i.014.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %62, %37 ; [#uses=1]
+ br i1 %exitcond, label %bb9, label %bb7.i
+
+bb9: ; preds = %bb11.i, %_ZN28btCompoundCollisionAlgorithm21removeChildAlgorithmsEv.exit, %entry
+ %63 = getelementptr inbounds %struct.btCollisionShape* %4, i32 5, i32 1 ; [#uses=1]
+ %64 = bitcast i32* %63 to %struct.btDbvt** ; [#uses=1]
+ %65 = load %struct.btDbvt** %64, align 4 ; [#uses=3]
+ %66 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %67 = load %struct.btPersistentManifold** %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=6]
+ %69 = load %struct.btCollisionAlgorithm*** %68, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %71 = load %struct.btActionInterface** %70, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btCompoundLeafCallback* %callback, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV22btCompoundLeafCallback, i32 0, i32 2), i32 (...)*** %72, align 8
+ %73 = getelementptr inbounds %struct.btCompoundLeafCallback* %callback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btCollisionObject* %iftmp.296.0, %struct.btCollisionObject** %73, align 4
+ %74 = getelementptr inbounds %struct.btCompoundLeafCallback* %callback, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionObject* %iftmp.297.0, %struct.btCollisionObject** %74, align 8
+ %75 = getelementptr inbounds %struct.btCompoundLeafCallback* %callback, i32 0, i32 3 ; [#uses=1]
+ store %struct.btActionInterface* %71, %struct.btActionInterface** %75, align 4
+ %76 = getelementptr inbounds %struct.btCompoundLeafCallback* %callback, i32 0, i32 4 ; [#uses=1]
+ store %struct.btDispatcherInfo* %dispatchInfo, %struct.btDispatcherInfo** %76, align 8
+ %77 = getelementptr inbounds %struct.btCompoundLeafCallback* %callback, i32 0, i32 5 ; [#uses=1]
+ store %struct.btManifoldResult* %resultOut, %struct.btManifoldResult** %77, align 4
+ %78 = getelementptr inbounds %struct.btCompoundLeafCallback* %callback, i32 0, i32 6 ; [#uses=1]
+ store %struct.btCollisionAlgorithm** %69, %struct.btCollisionAlgorithm*** %78, align 8
+ %79 = getelementptr inbounds %struct.btCompoundLeafCallback* %callback, i32 0, i32 7 ; [#uses=1]
+ store %struct.btPersistentManifold* %67, %struct.btPersistentManifold** %79, align 4
+ %80 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, i32 0, i32 4 ; [#uses=6]
+ store i8 1, i8* %80, align 8
+ %81 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, i32 0, i32 3 ; [#uses=8]
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %81, align 4
+ %82 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, i32 0, i32 1 ; [#uses=5]
+ store i32 0, i32* %82, align 4
+ %83 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, i32 0, i32 2 ; [#uses=4]
+ store i32 0, i32* %83, align 8
+ %84 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ %85 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 1 ; [#uses=2]
+ %86 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 4 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=2]
+ %88 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=2]
+ br label %bb24
+
+bb10: ; preds = %bb24
+ %89 = load %struct.btCollisionAlgorithm*** %68, align 4 ; [#uses=1]
+ %scevgep208 = getelementptr %struct.btCollisionAlgorithm** %89, i32 %117 ; [#uses=1]
+ %90 = load %struct.btCollisionAlgorithm** %scevgep208, align 4 ; [#uses=3]
+ %91 = icmp eq %struct.btCollisionAlgorithm* %90, null ; [#uses=1]
+ br i1 %91, label %bb23, label %bb12
+
+bb12: ; preds = %bb10
+ %92 = getelementptr inbounds %struct.btCollisionAlgorithm* %90, i32 0, i32 0 ; [#uses=1]
+ %93 = load i32 (...)*** %92, align 4 ; [#uses=1]
+ %94 = getelementptr inbounds i32 (...)** %93, i32 4 ; [#uses=1]
+ %95 = load i32 (...)** %94, align 4 ; [#uses=1]
+ %96 = bitcast i32 (...)* %95 to void (%struct.btCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* ; [#uses=1]
+ invoke void %96(%struct.btCollisionAlgorithm* %90, %"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray)
+ to label %bb19 unwind label %lpad76
+
+bb14: ; preds = %bb19
+ %scevgep206 = getelementptr %struct.btPersistentManifold** %112, i32 %109 ; [#uses=1]
+ %97 = load %struct.btPersistentManifold** %scevgep206, align 4 ; [#uses=5]
+ %98 = getelementptr inbounds %struct.btPersistentManifold* %97, i32 0, i32 4 ; [#uses=2]
+ %99 = load i32* %98, align 4 ; [#uses=1]
+ %100 = icmp eq i32 %99, 0 ; [#uses=1]
+ br i1 %100, label %bb18, label %bb16
+
+bb16: ; preds = %bb14
+ store %struct.btPersistentManifold* %97, %struct.btPersistentManifold** %85, align 4
+ %101 = load i32* %98, align 4 ; [#uses=1]
+ %102 = icmp eq i32 %101, 0 ; [#uses=1]
+ br i1 %102, label %invcont17, label %bb.i116
+
+bb.i116: ; preds = %bb16
+ %103 = getelementptr inbounds %struct.btPersistentManifold* %97, i32 0, i32 2 ; [#uses=1]
+ %104 = load i8** %103, align 4 ; [#uses=1]
+ %105 = load %struct.btCollisionObject** %86, align 4 ; [#uses=1]
+ %106 = bitcast %struct.btCollisionObject* %105 to i8* ; [#uses=1]
+ %107 = icmp eq i8* %104, %106 ; [#uses=1]
+ br i1 %107, label %bb3.i118, label %bb2.i117
+
+bb2.i117: ; preds = %bb.i116
+ invoke void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %97, %struct.btTransform* %87, %struct.btTransform* %88)
+ to label %invcont17 unwind label %lpad76
+
+bb3.i118: ; preds = %bb.i116
+ invoke void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %97, %struct.btTransform* %88, %struct.btTransform* %87)
+ to label %invcont17 unwind label %lpad76
+
+invcont17: ; preds = %bb3.i118, %bb2.i117, %bb16
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %85, align 4
+ br label %bb18
+
+bb18: ; preds = %invcont17, %bb14
+ %108 = add nsw i32 %109, 1 ; [#uses=1]
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb12
+ %109 = phi i32 [ %108, %bb18 ], [ 0, %bb12 ] ; [#uses=3]
+ %110 = load i32* %82, align 4 ; [#uses=1]
+ %111 = icmp sgt i32 %110, %109 ; [#uses=1]
+ %112 = load %struct.btPersistentManifold*** %81, align 4 ; [#uses=3]
+ br i1 %111, label %bb14, label %bb21
+
+bb21: ; preds = %bb19
+ %113 = icmp eq %struct.btPersistentManifold** %112, null ; [#uses=1]
+ br i1 %113, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE5clearEv.exit, label %bb.i.i
+
+bb.i.i: ; preds = %bb21
+ %114 = load i8* %80, align 8 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %114, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %115 = bitcast %struct.btPersistentManifold** %112 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %115)
+ to label %bb2.i.i unwind label %lpad76
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %81, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE5clearEv.exit
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE5clearEv.exit: ; preds = %bb2.i.i, %bb21
+ store i8 1, i8* %80, align 8
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %81, align 4
+ store i32 0, i32* %82, align 4
+ store i32 0, i32* %83, align 8
+ br label %bb23
+
+bb23: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE5clearEv.exit, %bb10
+ %116 = add nsw i32 %117, 1 ; [#uses=1]
+ br label %bb24
+
+bb24: ; preds = %bb23, %bb9
+ %117 = phi i32 [ %116, %bb23 ], [ 0, %bb9 ] ; [#uses=3]
+ %118 = load i32* %84, align 4 ; [#uses=1]
+ %119 = icmp sgt i32 %118, %117 ; [#uses=1]
+ br i1 %119, label %bb10, label %invcont30
+
+invcont30: ; preds = %bb24
+ store i8 1, i8* %80, align 8
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %81, align 4
+ store i32 0, i32* %82, align 4
+ store i32 0, i32* %83, align 8
+ %120 = icmp eq %struct.btDbvt* %65, null ; [#uses=1]
+ br i1 %120, label %bb36, label %invcont33
+
+invcont33: ; preds = %invcont30
+ %121 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %124 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %126 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %128 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=5]
+ %131 = load float* %128, align 4 ; [#uses=5]
+ %132 = load float* %127, align 4 ; [#uses=5]
+ %133 = load float* %126, align 4 ; [#uses=5]
+ %134 = load float* %125, align 4 ; [#uses=5]
+ %135 = load float* %124, align 4 ; [#uses=5]
+ %136 = load float* %123, align 4 ; [#uses=5]
+ %137 = load float* %122, align 4 ; [#uses=5]
+ %138 = load float* %121, align 4 ; [#uses=5]
+ %139 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %140 = load float* %139, align 4 ; [#uses=1]
+ %141 = fsub float -0.000000e+00, %140 ; [#uses=3]
+ %142 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %143 = load float* %142, align 4 ; [#uses=1]
+ %144 = fsub float -0.000000e+00, %143 ; [#uses=3]
+ %145 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %146 = load float* %145, align 4 ; [#uses=1]
+ %147 = fsub float -0.000000e+00, %146 ; [#uses=3]
+ %148 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %149 = load float* %148, align 4 ; [#uses=3]
+ %150 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %151 = load float* %150, align 4 ; [#uses=3]
+ %152 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %153 = load float* %152, align 4 ; [#uses=3]
+ %154 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %155 = load float* %154, align 4 ; [#uses=3]
+ %156 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %157 = load float* %156, align 4 ; [#uses=3]
+ %158 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %159 = load float* %158, align 4 ; [#uses=3]
+ %160 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %161 = load float* %160, align 4 ; [#uses=3]
+ %162 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %163 = load float* %162, align 4 ; [#uses=3]
+ %164 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %165 = load float* %164, align 4 ; [#uses=3]
+ %166 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %167 = load float* %166, align 4 ; [#uses=3]
+ %168 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=3]
+ %170 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %171 = load float* %170, align 4 ; [#uses=3]
+ %172 = fmul float %131, %151 ; [#uses=1]
+ %173 = fmul float %130, %149 ; [#uses=1]
+ %174 = fmul float %134, %151 ; [#uses=1]
+ %175 = fmul float %133, %149 ; [#uses=1]
+ %176 = fmul float %137, %151 ; [#uses=1]
+ %177 = fmul float %136, %149 ; [#uses=1]
+ %178 = fmul float %136, %147 ; [#uses=1]
+ %179 = fmul float %137, %144 ; [#uses=1]
+ %180 = fmul float %133, %147 ; [#uses=1]
+ %181 = fmul float %134, %144 ; [#uses=1]
+ %182 = fmul float %130, %147 ; [#uses=1]
+ %183 = fmul float %131, %144 ; [#uses=1]
+ %184 = fmul float %169, %131 ; [#uses=1]
+ %185 = fmul float %167, %130 ; [#uses=1]
+ %186 = fmul float %163, %131 ; [#uses=1]
+ %187 = fmul float %161, %130 ; [#uses=1]
+ %188 = fmul float %157, %131 ; [#uses=1]
+ %189 = fmul float %155, %130 ; [#uses=1]
+ %190 = fmul float %169, %134 ; [#uses=1]
+ %191 = fmul float %167, %133 ; [#uses=1]
+ %192 = fmul float %163, %134 ; [#uses=1]
+ %193 = fmul float %161, %133 ; [#uses=1]
+ %194 = fmul float %157, %134 ; [#uses=1]
+ %195 = fmul float %155, %133 ; [#uses=1]
+ %196 = fmul float %169, %137 ; [#uses=1]
+ %197 = fmul float %167, %136 ; [#uses=1]
+ %198 = fmul float %163, %137 ; [#uses=1]
+ %199 = fmul float %161, %136 ; [#uses=1]
+ %200 = fmul float %157, %137 ; [#uses=1]
+ %201 = fmul float %155, %136 ; [#uses=1]
+ %202 = fmul float %132, %153 ; [#uses=1]
+ %203 = fadd float %173, %172 ; [#uses=1]
+ %204 = fmul float %135, %153 ; [#uses=1]
+ %205 = fadd float %175, %174 ; [#uses=1]
+ %206 = fmul float %138, %153 ; [#uses=1]
+ %207 = fadd float %177, %176 ; [#uses=1]
+ %208 = fadd float %178, %179 ; [#uses=1]
+ %209 = fmul float %138, %141 ; [#uses=1]
+ %210 = fadd float %180, %181 ; [#uses=1]
+ %211 = fmul float %135, %141 ; [#uses=1]
+ %212 = fadd float %182, %183 ; [#uses=1]
+ %213 = fmul float %132, %141 ; [#uses=1]
+ %214 = fmul float %171, %132 ; [#uses=1]
+ %215 = fadd float %185, %184 ; [#uses=1]
+ %216 = fmul float %165, %132 ; [#uses=1]
+ %217 = fadd float %187, %186 ; [#uses=1]
+ %218 = fmul float %159, %132 ; [#uses=1]
+ %219 = fadd float %189, %188 ; [#uses=1]
+ %220 = fmul float %171, %135 ; [#uses=1]
+ %221 = fadd float %191, %190 ; [#uses=1]
+ %222 = fmul float %165, %135 ; [#uses=1]
+ %223 = fadd float %193, %192 ; [#uses=1]
+ %224 = fmul float %159, %135 ; [#uses=1]
+ %225 = fadd float %195, %194 ; [#uses=1]
+ %226 = fmul float %171, %138 ; [#uses=1]
+ %227 = fadd float %197, %196 ; [#uses=1]
+ %228 = fmul float %165, %138 ; [#uses=1]
+ %229 = fadd float %199, %198 ; [#uses=1]
+ %230 = fmul float %159, %138 ; [#uses=1]
+ %231 = fadd float %201, %200 ; [#uses=1]
+ %232 = fadd float %203, %202 ; [#uses=1]
+ %233 = fadd float %205, %204 ; [#uses=1]
+ %234 = fadd float %207, %206 ; [#uses=1]
+ %235 = fadd float %208, %209 ; [#uses=1]
+ %236 = fadd float %210, %211 ; [#uses=1]
+ %237 = fadd float %212, %213 ; [#uses=1]
+ %238 = fadd float %215, %214 ; [#uses=1]
+ %239 = fadd float %217, %216 ; [#uses=1]
+ %240 = fadd float %219, %218 ; [#uses=1]
+ %241 = fadd float %221, %220 ; [#uses=1]
+ %242 = fadd float %223, %222 ; [#uses=1]
+ %243 = fadd float %225, %224 ; [#uses=1]
+ %244 = fadd float %227, %226 ; [#uses=1]
+ %245 = fadd float %229, %228 ; [#uses=1]
+ %246 = fadd float %231, %230 ; [#uses=1]
+ %247 = fadd float %232, %237 ; [#uses=1]
+ %248 = fadd float %233, %236 ; [#uses=1]
+ %249 = fadd float %234, %235 ; [#uses=1]
+ %250 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %238, float* %250, align 8
+ %251 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %239, float* %251, align 4
+ %252 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %240, float* %252, align 8
+ %253 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %253, align 4
+ %254 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %241, float* %254, align 8
+ %255 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %242, float* %255, align 4
+ %256 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %243, float* %256, align 8
+ %257 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %257, align 4
+ %258 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %244, float* %258, align 8
+ %259 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %245, float* %259, align 4
+ %260 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %246, float* %260, align 8
+ %261 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %261, align 4
+ %262 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %247, float* %262, align 8
+ %263 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %248, float* %263, align 4
+ %264 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %249, float* %264, align 8
+ %265 = getelementptr inbounds %struct.btTransform* %otherInCompoundSpace, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %265, align 4
+ %266 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 9 ; [#uses=1]
+ %267 = load %struct.btCollisionShape** %266, align 4 ; [#uses=2]
+ %268 = getelementptr inbounds %struct.btCollisionShape* %267, i32 0, i32 0 ; [#uses=1]
+ %269 = load i32 (...)*** %268, align 4 ; [#uses=1]
+ %270 = getelementptr inbounds i32 (...)** %269, i32 2 ; [#uses=1]
+ %271 = load i32 (...)** %270, align 4 ; [#uses=1]
+ %272 = bitcast i32 (...)* %271 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %272(%struct.btCollisionShape* %267, %struct.btTransform* %otherInCompoundSpace, %struct.btQuadWord* %localAabbMin, %struct.btQuadWord* %localAabbMax)
+ to label %invcont34 unwind label %lpad
+
+invcont34: ; preds = %invcont33
+ %273 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %274 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %275 = load float* %274, align 8 ; [#uses=1]
+ store float %275, float* %273, align 8
+ %276 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %277 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %278 = load float* %277, align 4 ; [#uses=1]
+ store float %278, float* %276, align 4
+ %279 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %280 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %281 = load float* %280, align 8 ; [#uses=1]
+ store float %281, float* %279, align 8
+ %282 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %283 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %284 = load float* %283, align 4 ; [#uses=1]
+ store float %284, float* %282, align 4
+ %285 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %286 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %287 = load float* %286, align 8 ; [#uses=1]
+ store float %287, float* %285, align 8
+ %288 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %289 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %290 = load float* %289, align 4 ; [#uses=1]
+ store float %290, float* %288, align 4
+ %291 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %292 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %293 = load float* %292, align 8 ; [#uses=1]
+ store float %293, float* %291, align 8
+ %294 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %295 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %296 = load float* %295, align 4 ; [#uses=1]
+ store float %296, float* %294, align 4
+ %297 = getelementptr inbounds %struct.btDbvt* %65, i32 0, i32 0 ; [#uses=1]
+ %298 = load %struct.btDbvtNode** %297, align 4 ; [#uses=1]
+ %299 = getelementptr inbounds %struct.btCompoundLeafCallback* %callback, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN6btDbvt9collideTVEPK10btDbvtNodeRK12btDbvtAabbMmRNS_8ICollideE(%struct.btDbvt* %65, %struct.btDbvtNode* %298, %struct.GIM_AABB* %bounds, %struct.btActionInterface* %299) inlinehint
+ to label %invcont46 unwind label %lpad
+
+bb36: ; preds = %invcont30
+ %300 = load i32* %84, align 4 ; [#uses=1]
+ %301 = getelementptr inbounds %struct.btCollisionShape* %4, i32 2 ; [#uses=1]
+ %302 = bitcast %struct.btCollisionShape* %301 to %struct.btCompoundShapeChild** ; [#uses=1]
+ br label %bb41
+
+invcont39: ; preds = %bb41
+ %303 = load %struct.btCompoundShapeChild** %302, align 4 ; [#uses=1]
+ %scevgep203 = getelementptr %struct.btCompoundShapeChild* %303, i32 %306, i32 1 ; [#uses=1]
+ %304 = load %struct.btCollisionShape** %scevgep203, align 4 ; [#uses=1]
+ invoke void @_ZN22btCompoundLeafCallback17ProcessChildShapeEP16btCollisionShapei(%struct.btCompoundLeafCallback* %callback, %struct.btCollisionShape* %304, i32 %306)
+ to label %invcont40 unwind label %lpad
+
+invcont40: ; preds = %invcont39
+ %305 = add nsw i32 %306, 1 ; [#uses=1]
+ br label %bb41
+
+bb41: ; preds = %invcont40, %bb36
+ %306 = phi i32 [ 0, %bb36 ], [ %305, %invcont40 ] ; [#uses=4]
+ %307 = icmp slt i32 %306, %300 ; [#uses=1]
+ br i1 %307, label %invcont39, label %invcont46
+
+invcont46: ; preds = %bb41, %invcont34
+ %308 = load i32* %84, align 4 ; [#uses=1]
+ %309 = getelementptr inbounds %struct.btCollisionShape* %4, i32 2 ; [#uses=1]
+ %310 = bitcast %struct.btCollisionShape* %309 to %struct.btCompoundShapeChild** ; [#uses=1]
+ %311 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %312 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %313 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %314 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %315 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %316 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %317 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %318 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %319 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %320 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %321 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %322 = getelementptr inbounds %struct.btCollisionObject* %iftmp.296.0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %323 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %324 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %325 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %326 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %327 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %328 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %329 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %330 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %331 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %332 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %333 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %334 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %335 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %336 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %337 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %338 = getelementptr inbounds %struct.btTransform* %newChildWorldTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %339 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 9 ; [#uses=1]
+ %340 = getelementptr inbounds %struct.btCollisionObject* %iftmp.297.0, i32 0, i32 1 ; [#uses=1]
+ %341 = getelementptr inbounds %struct.btQuadWord* %aabbMin0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %342 = getelementptr inbounds %struct.btQuadWord* %aabbMax1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %343 = getelementptr inbounds %struct.btQuadWord* %aabbMin0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %344 = getelementptr inbounds %struct.btQuadWord* %aabbMax1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %345 = getelementptr inbounds %struct.btQuadWord* %aabbMin0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %346 = getelementptr inbounds %struct.btQuadWord* %aabbMax1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %347 = getelementptr inbounds %struct.btQuadWord* %aabbMax0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %348 = getelementptr inbounds %struct.btQuadWord* %aabbMin1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %349 = getelementptr inbounds %struct.btQuadWord* %aabbMax0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %350 = getelementptr inbounds %struct.btQuadWord* %aabbMin1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %351 = getelementptr inbounds %struct.btQuadWord* %aabbMax0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %352 = getelementptr inbounds %struct.btQuadWord* %aabbMin1, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb62
+
+bb47: ; preds = %bb62
+ %353 = load %struct.btCollisionAlgorithm*** %68, align 4 ; [#uses=1]
+ %scevgep198 = getelementptr %struct.btCollisionAlgorithm** %353, i32 %491 ; [#uses=1]
+ %354 = load %struct.btCollisionAlgorithm** %scevgep198, align 4 ; [#uses=1]
+ %355 = icmp eq %struct.btCollisionAlgorithm* %354, null ; [#uses=1]
+ br i1 %355, label %bb61, label %invcont52
+
+invcont52: ; preds = %bb47
+ %356 = load %struct.btCompoundShapeChild** %310, align 4 ; [#uses=13]
+ %scevgep199 = getelementptr %struct.btCompoundShapeChild* %356, i32 %491, i32 1 ; [#uses=1]
+ %357 = load %struct.btCollisionShape** %scevgep199, align 4 ; [#uses=2]
+ %358 = load float* %311, align 4 ; [#uses=4]
+ %359 = load float* %312, align 4 ; [#uses=4]
+ %360 = load float* %313, align 4 ; [#uses=4]
+ %361 = load float* %314, align 4 ; [#uses=4]
+ %362 = load float* %315, align 4 ; [#uses=4]
+ %363 = load float* %316, align 4 ; [#uses=4]
+ %364 = load float* %317, align 4 ; [#uses=4]
+ %365 = load float* %318, align 4 ; [#uses=4]
+ %366 = load float* %319, align 4 ; [#uses=4]
+ %scevgep197 = getelementptr %struct.btCompoundShapeChild* %356, i32 %491, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %367 = load float* %scevgep197, align 4 ; [#uses=3]
+ %scevgep196 = getelementptr %struct.btCompoundShapeChild* %356, i32 %491, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %368 = load float* %scevgep196, align 4 ; [#uses=3]
+ %scevgep195 = getelementptr %struct.btCompoundShapeChild* %356, i32 %491, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %369 = load float* %scevgep195, align 4 ; [#uses=3]
+ %scevgep194 = getelementptr %struct.btCompoundShapeChild* %356, i32 %491, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %370 = load float* %scevgep194, align 4 ; [#uses=3]
+ %scevgep193 = getelementptr %struct.btCompoundShapeChild* %356, i32 %491, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %371 = load float* %scevgep193, align 4 ; [#uses=3]
+ %scevgep192 = getelementptr %struct.btCompoundShapeChild* %356, i32 %491, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %372 = load float* %scevgep192, align 4 ; [#uses=3]
+ %scevgep191 = getelementptr %struct.btCompoundShapeChild* %356, i32 %491, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %373 = load float* %scevgep191, align 4 ; [#uses=3]
+ %scevgep190 = getelementptr %struct.btCompoundShapeChild* %356, i32 %491, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %374 = load float* %scevgep190, align 4 ; [#uses=3]
+ %scevgep189 = getelementptr %struct.btCompoundShapeChild* %356, i32 %491, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %375 = load float* %scevgep189, align 4 ; [#uses=3]
+ %scevgep187188 = getelementptr inbounds %struct.btCompoundShapeChild* %356, i32 %491, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %376 = load float* %scevgep187188, align 4 ; [#uses=3]
+ %scevgep185186 = getelementptr %struct.btCompoundShapeChild* %356, i32 %491, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %377 = load float* %scevgep185186, align 4 ; [#uses=3]
+ %scevgep184 = getelementptr %struct.btCompoundShapeChild* %356, i32 %491, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %378 = load float* %scevgep184, align 4 ; [#uses=3]
+ %379 = fmul float %359, %368 ; [#uses=1]
+ %380 = fmul float %358, %367 ; [#uses=1]
+ %381 = fmul float %362, %368 ; [#uses=1]
+ %382 = fmul float %361, %367 ; [#uses=1]
+ %383 = fmul float %365, %368 ; [#uses=1]
+ %384 = fmul float %364, %367 ; [#uses=1]
+ %385 = fmul float %377, %359 ; [#uses=1]
+ %386 = fmul float %376, %358 ; [#uses=1]
+ %387 = fmul float %374, %359 ; [#uses=1]
+ %388 = fmul float %373, %358 ; [#uses=1]
+ %389 = fmul float %371, %359 ; [#uses=1]
+ %390 = fmul float %370, %358 ; [#uses=1]
+ %391 = fmul float %377, %362 ; [#uses=1]
+ %392 = fmul float %376, %361 ; [#uses=1]
+ %393 = fmul float %374, %362 ; [#uses=1]
+ %394 = fmul float %373, %361 ; [#uses=1]
+ %395 = fmul float %371, %362 ; [#uses=1]
+ %396 = fmul float %370, %361 ; [#uses=1]
+ %397 = fmul float %377, %365 ; [#uses=1]
+ %398 = fmul float %376, %364 ; [#uses=1]
+ %399 = fmul float %374, %365 ; [#uses=1]
+ %400 = fmul float %373, %364 ; [#uses=1]
+ %401 = fmul float %371, %365 ; [#uses=1]
+ %402 = fmul float %370, %364 ; [#uses=1]
+ %403 = fmul float %360, %369 ; [#uses=1]
+ %404 = fadd float %380, %379 ; [#uses=1]
+ %405 = fmul float %363, %369 ; [#uses=1]
+ %406 = fadd float %382, %381 ; [#uses=1]
+ %407 = fmul float %366, %369 ; [#uses=1]
+ %408 = fadd float %384, %383 ; [#uses=1]
+ %409 = fmul float %378, %360 ; [#uses=1]
+ %410 = fadd float %386, %385 ; [#uses=1]
+ %411 = fmul float %375, %360 ; [#uses=1]
+ %412 = fadd float %388, %387 ; [#uses=1]
+ %413 = fmul float %372, %360 ; [#uses=1]
+ %414 = fadd float %390, %389 ; [#uses=1]
+ %415 = fmul float %378, %363 ; [#uses=1]
+ %416 = fadd float %392, %391 ; [#uses=1]
+ %417 = fmul float %375, %363 ; [#uses=1]
+ %418 = fadd float %394, %393 ; [#uses=1]
+ %419 = fmul float %372, %363 ; [#uses=1]
+ %420 = fadd float %396, %395 ; [#uses=1]
+ %421 = fmul float %378, %366 ; [#uses=1]
+ %422 = fadd float %398, %397 ; [#uses=1]
+ %423 = fmul float %375, %366 ; [#uses=1]
+ %424 = fadd float %400, %399 ; [#uses=1]
+ %425 = fmul float %372, %366 ; [#uses=1]
+ %426 = fadd float %402, %401 ; [#uses=1]
+ %427 = fadd float %404, %403 ; [#uses=1]
+ %428 = fadd float %406, %405 ; [#uses=1]
+ %429 = fadd float %408, %407 ; [#uses=1]
+ %430 = load float* %320, align 4 ; [#uses=1]
+ %431 = load float* %321, align 4 ; [#uses=1]
+ %432 = load float* %322, align 4 ; [#uses=1]
+ %433 = fadd float %410, %409 ; [#uses=1]
+ %434 = fadd float %412, %411 ; [#uses=1]
+ %435 = fadd float %414, %413 ; [#uses=1]
+ %436 = fadd float %416, %415 ; [#uses=1]
+ %437 = fadd float %418, %417 ; [#uses=1]
+ %438 = fadd float %420, %419 ; [#uses=1]
+ %439 = fadd float %422, %421 ; [#uses=1]
+ %440 = fadd float %424, %423 ; [#uses=1]
+ %441 = fadd float %426, %425 ; [#uses=1]
+ %442 = fadd float %427, %430 ; [#uses=1]
+ %443 = fadd float %428, %431 ; [#uses=1]
+ %444 = fadd float %429, %432 ; [#uses=1]
+ store float %433, float* %323, align 8
+ store float %434, float* %324, align 4
+ store float %435, float* %325, align 8
+ store float 0.000000e+00, float* %326, align 4
+ store float %436, float* %327, align 8
+ store float %437, float* %328, align 4
+ store float %438, float* %329, align 8
+ store float 0.000000e+00, float* %330, align 4
+ store float %439, float* %331, align 8
+ store float %440, float* %332, align 4
+ store float %441, float* %333, align 8
+ store float 0.000000e+00, float* %334, align 4
+ store float %442, float* %335, align 8
+ store float %443, float* %336, align 4
+ store float %444, float* %337, align 8
+ store float 0.000000e+00, float* %338, align 4
+ %445 = getelementptr inbounds %struct.btCollisionShape* %357, i32 0, i32 0 ; [#uses=1]
+ %446 = load i32 (...)*** %445, align 4 ; [#uses=1]
+ %447 = getelementptr inbounds i32 (...)** %446, i32 2 ; [#uses=1]
+ %448 = load i32 (...)** %447, align 4 ; [#uses=1]
+ %449 = bitcast i32 (...)* %448 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %449(%struct.btCollisionShape* %357, %struct.btTransform* %newChildWorldTrans, %struct.btQuadWord* %aabbMin0, %struct.btQuadWord* %aabbMax0)
+ to label %invcont53 unwind label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit
+
+invcont53: ; preds = %invcont52
+ %450 = load %struct.btCollisionShape** %339, align 4 ; [#uses=2]
+ %451 = getelementptr inbounds %struct.btCollisionShape* %450, i32 0, i32 0 ; [#uses=1]
+ %452 = load i32 (...)*** %451, align 4 ; [#uses=1]
+ %453 = getelementptr inbounds i32 (...)** %452, i32 2 ; [#uses=1]
+ %454 = load i32 (...)** %453, align 4 ; [#uses=1]
+ %455 = bitcast i32 (...)* %454 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %455(%struct.btCollisionShape* %450, %struct.btTransform* %340, %struct.btQuadWord* %aabbMin1, %struct.btQuadWord* %aabbMax1)
+ to label %invcont54 unwind label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit
+
+invcont54: ; preds = %invcont53
+ %456 = load float* %341, align 8 ; [#uses=1]
+ %457 = load float* %342, align 8 ; [#uses=1]
+ %458 = fcmp ogt float %456, %457 ; [#uses=1]
+ br i1 %458, label %bb2.i113, label %bb.i112
+
+bb.i112: ; preds = %invcont54
+ %459 = load float* %351, align 8 ; [#uses=1]
+ %460 = load float* %352, align 8 ; [#uses=1]
+ %461 = fcmp olt float %459, %460 ; [#uses=1]
+ br i1 %461, label %bb2.i113, label %bb3.i
+
+bb2.i113: ; preds = %bb.i112, %invcont54
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i113, %bb.i112
+ %iftmp.164.0.i = phi i8 [ 0, %bb2.i113 ], [ 1, %bb.i112 ] ; [#uses=1]
+ %462 = load float* %343, align 8 ; [#uses=1]
+ %463 = load float* %344, align 8 ; [#uses=1]
+ %464 = fcmp ogt float %462, %463 ; [#uses=1]
+ br i1 %464, label %bb6.i, label %bb4.i
+
+bb4.i: ; preds = %bb3.i
+ %465 = load float* %349, align 8 ; [#uses=1]
+ %466 = load float* %350, align 8 ; [#uses=1]
+ %467 = fcmp olt float %465, %466 ; [#uses=1]
+ br i1 %467, label %bb6.i, label %bb7.i114
+
+bb6.i: ; preds = %bb4.i, %bb3.i
+ br label %bb7.i114
+
+bb7.i114: ; preds = %bb6.i, %bb4.i
+ %iftmp.165.0.i = phi i8 [ 0, %bb6.i ], [ %iftmp.164.0.i, %bb4.i ] ; [#uses=1]
+ %468 = load float* %345, align 4 ; [#uses=1]
+ %469 = load float* %346, align 4 ; [#uses=1]
+ %470 = fcmp ogt float %468, %469 ; [#uses=1]
+ br i1 %470, label %bb58, label %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit
+
+_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit: ; preds = %bb7.i114
+ %471 = load float* %347, align 4 ; [#uses=1]
+ %472 = load float* %348, align 4 ; [#uses=1]
+ %473 = fcmp olt float %471, %472 ; [#uses=1]
+ %phitmp178 = icmp eq i8 %iftmp.165.0.i, 0 ; [#uses=1]
+ %phitmp = or i1 %473, %phitmp178 ; [#uses=1]
+ br i1 %phitmp, label %bb58, label %bb61
+
+bb58: ; preds = %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit, %bb7.i114
+ %474 = load %struct.btCollisionAlgorithm*** %68, align 4 ; [#uses=1]
+ %scevgep200 = getelementptr %struct.btCollisionAlgorithm** %474, i32 %491 ; [#uses=1]
+ %475 = load %struct.btCollisionAlgorithm** %scevgep200, align 4 ; [#uses=2]
+ %476 = getelementptr inbounds %struct.btCollisionAlgorithm* %475, i32 0, i32 0 ; [#uses=1]
+ %477 = load i32 (...)*** %476, align 4 ; [#uses=1]
+ %478 = load i32 (...)** %477, align 4 ; [#uses=1]
+ %479 = bitcast i32 (...)* %478 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ invoke void %479(%struct.btCollisionAlgorithm* %475)
+ to label %invcont59 unwind label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit
+
+invcont59: ; preds = %bb58
+ %480 = load %struct.btActionInterface** %70, align 4 ; [#uses=2]
+ %481 = getelementptr inbounds %struct.btActionInterface* %480, i32 0, i32 0 ; [#uses=1]
+ %482 = load i32 (...)*** %481, align 4 ; [#uses=1]
+ %483 = getelementptr inbounds i32 (...)** %482, i32 13 ; [#uses=1]
+ %484 = load i32 (...)** %483, align 4 ; [#uses=1]
+ %485 = load %struct.btCollisionAlgorithm*** %68, align 4 ; [#uses=1]
+ %scevgep201 = getelementptr %struct.btCollisionAlgorithm** %485, i32 %491 ; [#uses=1]
+ %486 = load %struct.btCollisionAlgorithm** %scevgep201, align 4 ; [#uses=1]
+ %487 = bitcast i32 (...)* %484 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %488 = bitcast %struct.btCollisionAlgorithm* %486 to i8* ; [#uses=1]
+ invoke void %487(%struct.btActionInterface* %480, i8* %488)
+ to label %invcont60 unwind label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit
+
+invcont60: ; preds = %invcont59
+ %489 = load %struct.btCollisionAlgorithm*** %68, align 4 ; [#uses=1]
+ %scevgep202 = getelementptr %struct.btCollisionAlgorithm** %489, i32 %491 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %scevgep202, align 4
+ br label %bb61
+
+bb61: ; preds = %invcont60, %_Z20TestAabbAgainstAabb2RK9btVector3S1_S1_S1_.exit, %bb47
+ %490 = add nsw i32 %491, 1 ; [#uses=1]
+ br label %bb62
+
+bb62: ; preds = %bb61, %invcont46
+ %491 = phi i32 [ 0, %invcont46 ], [ %490, %bb61 ] ; [#uses=19]
+ %492 = icmp slt i32 %491, %308 ; [#uses=1]
+ br i1 %492, label %bb47, label %bb73
+
+bb73: ; preds = %bb62
+ ret void
+
+lpad: ; preds = %invcont39, %invcont34, %invcont33
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select75 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad76: ; preds = %bb1.i.i, %bb3.i118, %bb2.i117, %bb12
+ %eh_ptr77 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select79 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr77, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %493 = load %struct.btPersistentManifold*** %81, align 4 ; [#uses=2]
+ %494 = icmp eq %struct.btPersistentManifold** %493, null ; [#uses=1]
+ br i1 %494, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit102, label %bb.i.i.i98
+
+bb.i.i.i98: ; preds = %lpad76
+ %495 = load i8* %80, align 8 ; [#uses=1]
+ %toBool.i.i.i97 = icmp eq i8 %495, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i97, label %bb2.i.i.i100, label %bb1.i.i.i99
+
+bb1.i.i.i99: ; preds = %bb.i.i.i98
+ %496 = bitcast %struct.btPersistentManifold** %493 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %496)
+ to label %bb2.i.i.i100 unwind label %lpad80
+
+bb2.i.i.i100: ; preds = %bb1.i.i.i99, %bb.i.i.i98
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %81, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit102
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit102: ; preds = %bb2.i.i.i100, %lpad76
+ store i8 1, i8* %80, align 8
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %81, align 4
+ store i32 0, i32* %82, align 4
+ store i32 0, i32* %83, align 8
+ br label %ppad
+
+lpad80: ; preds = %bb1.i.i.i99
+ %eh_ptr81 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select83 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr81, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit: ; preds = %invcont59, %bb58, %invcont53, %invcont52
+ %eh_ptr85 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select87 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr85, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit102, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr77, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit102 ], [ %eh_ptr85, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV22btCompoundLeafCallback, i32 0, i32 2), i32 (...)*** %72, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN28btCompoundCollisionAlgorithmD0Ev(%struct.btCompoundCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV28btCompoundCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ %2 = load i32* %1, align 4 ; [#uses=2]
+ %3 = icmp sgt i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb.nph.i, label %bb3
+
+bb.nph.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %bb2.i, %bb.nph.i
+ %i.05.i = phi i32 [ 0, %bb.nph.i ], [ %tmp, %bb2.i ] ; [#uses=3]
+ %tmp = add i32 %i.05.i, 1 ; [#uses=2]
+ %6 = load %struct.btCollisionAlgorithm*** %4, align 4 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btCollisionAlgorithm** %6, i32 %i.05.i ; [#uses=1]
+ %7 = load %struct.btCollisionAlgorithm** %scevgep.i, align 4 ; [#uses=3]
+ %8 = icmp eq %struct.btCollisionAlgorithm* %7, null ; [#uses=1]
+ br i1 %8, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %9 = getelementptr inbounds %struct.btCollisionAlgorithm* %7, i32 0, i32 0 ; [#uses=1]
+ %10 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ invoke void %12(%struct.btCollisionAlgorithm* %7)
+ to label %.noexc unwind label %lpad18
+
+.noexc: ; preds = %bb1.i
+ %13 = load %struct.btActionInterface** %5, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btActionInterface* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32 (...)** %15, i32 13 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = load %struct.btCollisionAlgorithm*** %4, align 4 ; [#uses=1]
+ %scevgep6.i = getelementptr %struct.btCollisionAlgorithm** %18, i32 %i.05.i ; [#uses=1]
+ %19 = load %struct.btCollisionAlgorithm** %scevgep6.i, align 4 ; [#uses=1]
+ %20 = bitcast i32 (...)* %17 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %21 = bitcast %struct.btCollisionAlgorithm* %19 to i8* ; [#uses=1]
+ invoke void %20(%struct.btActionInterface* %13, i8* %21)
+ to label %bb2.i unwind label %lpad18
+
+bb2.i: ; preds = %.noexc, %bb.i
+ %exitcond.i = icmp eq i32 %tmp, %2 ; [#uses=1]
+ br i1 %exitcond.i, label %bb3, label %bb.i
+
+bb3: ; preds = %bb2.i, %entry
+ %22 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %23 = load %struct.btCollisionAlgorithm*** %22, align 4 ; [#uses=2]
+ %24 = icmp eq %struct.btCollisionAlgorithm** %23, null ; [#uses=1]
+ br i1 %24, label %bb10, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb3
+ %25 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %26 = load i8* %25, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %27 = bitcast %struct.btCollisionAlgorithm** %23 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %27)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %22, align 4
+ br label %bb10
+
+invcont8: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i, %bb3
+ %28 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %28, align 4
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %22, align 4
+ store i32 0, i32* %1, align 4
+ %29 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %30)
+ %31 = bitcast %struct.btCompoundCollisionAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %31) nounwind
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %.noexc, %bb1.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %32 = load %struct.btCollisionAlgorithm*** %4, align 4 ; [#uses=2]
+ %33 = icmp eq %struct.btCollisionAlgorithm** %32, null ; [#uses=1]
+ br i1 %33, label %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41, label %bb.i.i.i37
+
+bb.i.i.i37: ; preds = %lpad18
+ %34 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %35 = load i8* %34, align 4 ; [#uses=1]
+ %toBool.i.i.i36 = icmp eq i8 %35, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i36, label %bb2.i.i.i39, label %bb1.i.i.i38
+
+bb1.i.i.i38: ; preds = %bb.i.i.i37
+ %36 = bitcast %struct.btCollisionAlgorithm** %32 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %36)
+ to label %bb2.i.i.i39 unwind label %lpad22
+
+bb2.i.i.i39: ; preds = %bb1.i.i.i38, %bb.i.i.i37
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %4, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41
+
+_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41: ; preds = %bb2.i.i.i39, %lpad18
+ %37 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %37, align 4
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %4, align 4
+ store i32 0, i32* %1, align 4
+ %38 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i38
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %ppad
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41 ] ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %39)
+ to label %invcont8 unwind label %lpad26
+}
+
+; [#uses=1]
+define void @_ZN28btCompoundCollisionAlgorithmD1Ev(%struct.btCompoundCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV28btCompoundCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ %2 = load i32* %1, align 4 ; [#uses=2]
+ %3 = icmp sgt i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb.nph.i, label %bb3
+
+bb.nph.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %bb2.i, %bb.nph.i
+ %i.05.i = phi i32 [ 0, %bb.nph.i ], [ %tmp, %bb2.i ] ; [#uses=3]
+ %tmp = add i32 %i.05.i, 1 ; [#uses=2]
+ %6 = load %struct.btCollisionAlgorithm*** %4, align 4 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btCollisionAlgorithm** %6, i32 %i.05.i ; [#uses=1]
+ %7 = load %struct.btCollisionAlgorithm** %scevgep.i, align 4 ; [#uses=3]
+ %8 = icmp eq %struct.btCollisionAlgorithm* %7, null ; [#uses=1]
+ br i1 %8, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %9 = getelementptr inbounds %struct.btCollisionAlgorithm* %7, i32 0, i32 0 ; [#uses=1]
+ %10 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ invoke void %12(%struct.btCollisionAlgorithm* %7)
+ to label %.noexc unwind label %lpad18
+
+.noexc: ; preds = %bb1.i
+ %13 = load %struct.btActionInterface** %5, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btActionInterface* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32 (...)** %15, i32 13 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = load %struct.btCollisionAlgorithm*** %4, align 4 ; [#uses=1]
+ %scevgep6.i = getelementptr %struct.btCollisionAlgorithm** %18, i32 %i.05.i ; [#uses=1]
+ %19 = load %struct.btCollisionAlgorithm** %scevgep6.i, align 4 ; [#uses=1]
+ %20 = bitcast i32 (...)* %17 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %21 = bitcast %struct.btCollisionAlgorithm* %19 to i8* ; [#uses=1]
+ invoke void %20(%struct.btActionInterface* %13, i8* %21)
+ to label %bb2.i unwind label %lpad18
+
+bb2.i: ; preds = %.noexc, %bb.i
+ %exitcond.i = icmp eq i32 %tmp, %2 ; [#uses=1]
+ br i1 %exitcond.i, label %bb3, label %bb.i
+
+bb3: ; preds = %bb2.i, %entry
+ %22 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %23 = load %struct.btCollisionAlgorithm*** %22, align 4 ; [#uses=2]
+ %24 = icmp eq %struct.btCollisionAlgorithm** %23, null ; [#uses=1]
+ br i1 %24, label %bb10, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb3
+ %25 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %26 = load i8* %25, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %27 = bitcast %struct.btCollisionAlgorithm** %23 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %27)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %22, align 4
+ br label %bb10
+
+invcont8: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i, %bb3
+ %28 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %28, align 4
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %22, align 4
+ store i32 0, i32* %1, align 4
+ %29 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %30)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %.noexc, %bb1.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %31 = load %struct.btCollisionAlgorithm*** %4, align 4 ; [#uses=2]
+ %32 = icmp eq %struct.btCollisionAlgorithm** %31, null ; [#uses=1]
+ br i1 %32, label %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41, label %bb.i.i.i37
+
+bb.i.i.i37: ; preds = %lpad18
+ %33 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %34 = load i8* %33, align 4 ; [#uses=1]
+ %toBool.i.i.i36 = icmp eq i8 %34, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i36, label %bb2.i.i.i39, label %bb1.i.i.i38
+
+bb1.i.i.i38: ; preds = %bb.i.i.i37
+ %35 = bitcast %struct.btCollisionAlgorithm** %31 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %35)
+ to label %bb2.i.i.i39 unwind label %lpad22
+
+bb2.i.i.i39: ; preds = %bb1.i.i.i38, %bb.i.i.i37
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %4, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41
+
+_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41: ; preds = %bb2.i.i.i39, %lpad18
+ %36 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %36, align 4
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %4, align 4
+ store i32 0, i32* %1, align 4
+ %37 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %37, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i38
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %ppad
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41 ] ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %38)
+ to label %invcont8 unwind label %lpad26
+}
+
+; [#uses=0]
+define void @_ZN28btCompoundCollisionAlgorithmD2Ev(%struct.btCompoundCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV28btCompoundCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ %2 = load i32* %1, align 4 ; [#uses=2]
+ %3 = icmp sgt i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb.nph.i, label %bb3
+
+bb.nph.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %bb2.i, %bb.nph.i
+ %i.05.i = phi i32 [ 0, %bb.nph.i ], [ %tmp, %bb2.i ] ; [#uses=3]
+ %tmp = add i32 %i.05.i, 1 ; [#uses=2]
+ %6 = load %struct.btCollisionAlgorithm*** %4, align 4 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btCollisionAlgorithm** %6, i32 %i.05.i ; [#uses=1]
+ %7 = load %struct.btCollisionAlgorithm** %scevgep.i, align 4 ; [#uses=3]
+ %8 = icmp eq %struct.btCollisionAlgorithm* %7, null ; [#uses=1]
+ br i1 %8, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %9 = getelementptr inbounds %struct.btCollisionAlgorithm* %7, i32 0, i32 0 ; [#uses=1]
+ %10 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ invoke void %12(%struct.btCollisionAlgorithm* %7)
+ to label %.noexc unwind label %lpad18
+
+.noexc: ; preds = %bb1.i
+ %13 = load %struct.btActionInterface** %5, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btActionInterface* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32 (...)** %15, i32 13 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = load %struct.btCollisionAlgorithm*** %4, align 4 ; [#uses=1]
+ %scevgep6.i = getelementptr %struct.btCollisionAlgorithm** %18, i32 %i.05.i ; [#uses=1]
+ %19 = load %struct.btCollisionAlgorithm** %scevgep6.i, align 4 ; [#uses=1]
+ %20 = bitcast i32 (...)* %17 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %21 = bitcast %struct.btCollisionAlgorithm* %19 to i8* ; [#uses=1]
+ invoke void %20(%struct.btActionInterface* %13, i8* %21)
+ to label %bb2.i unwind label %lpad18
+
+bb2.i: ; preds = %.noexc, %bb.i
+ %exitcond.i = icmp eq i32 %tmp, %2 ; [#uses=1]
+ br i1 %exitcond.i, label %bb3, label %bb.i
+
+bb3: ; preds = %bb2.i, %entry
+ %22 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %23 = load %struct.btCollisionAlgorithm*** %22, align 4 ; [#uses=2]
+ %24 = icmp eq %struct.btCollisionAlgorithm** %23, null ; [#uses=1]
+ br i1 %24, label %bb10, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb3
+ %25 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %26 = load i8* %25, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %27 = bitcast %struct.btCollisionAlgorithm** %23 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %27)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %22, align 4
+ br label %bb10
+
+invcont8: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i, %bb3
+ %28 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %28, align 4
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %22, align 4
+ store i32 0, i32* %1, align 4
+ %29 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %30)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %.noexc, %bb1.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %31 = load %struct.btCollisionAlgorithm*** %4, align 4 ; [#uses=2]
+ %32 = icmp eq %struct.btCollisionAlgorithm** %31, null ; [#uses=1]
+ br i1 %32, label %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41, label %bb.i.i.i37
+
+bb.i.i.i37: ; preds = %lpad18
+ %33 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %34 = load i8* %33, align 4 ; [#uses=1]
+ %toBool.i.i.i36 = icmp eq i8 %34, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i36, label %bb2.i.i.i39, label %bb1.i.i.i38
+
+bb1.i.i.i38: ; preds = %bb.i.i.i37
+ %35 = bitcast %struct.btCollisionAlgorithm** %31 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %35)
+ to label %bb2.i.i.i39 unwind label %lpad22
+
+bb2.i.i.i39: ; preds = %bb1.i.i.i38, %bb.i.i.i37
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %4, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41
+
+_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41: ; preds = %bb2.i.i.i39, %lpad18
+ %36 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %36, align 4
+ store %struct.btCollisionAlgorithm** null, %struct.btCollisionAlgorithm*** %4, align 4
+ store i32 0, i32* %1, align 4
+ %37 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %37, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i38
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %ppad
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayIP20btCollisionAlgorithmED1Ev.exit41 ] ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btCompoundCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %38)
+ to label %invcont8 unwind label %lpad26
+}
+
+; [#uses=2]
+define void @_ZN28btCompoundCollisionAlgorithmC1ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_b(%struct.btCompoundCollisionAlgorithm* %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext %isSwapped) align 2 {
+entry:
+ tail call void @_ZN28btCompoundCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_b(%struct.btCompoundCollisionAlgorithm* %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext %isSwapped)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN33btConvexConcaveCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_b(%struct.btConvexConcaveCollisionAlgorithm* %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext %isSwapped) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ %1 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV33btConvexConcaveCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ store i8 %isSwapped, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.btActionInterface** %3, align 4 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btConvexTriangleCallback, i32 0, i32 2), i32 (...)*** %5, align 4
+ %6 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 6 ; [#uses=2]
+ store %struct.btActionInterface* %4, %struct.btActionInterface** %6, align 4
+ %7 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 7 ; [#uses=1]
+ store %struct.btDispatcherInfo* null, %struct.btDispatcherInfo** %7, align 4
+ %toBool.i.i = icmp eq i8 %isSwapped, 0 ; [#uses=2]
+ %iftmp.204.0.i.i = select i1 %toBool.i.i, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store %struct.btCollisionObject* %iftmp.204.0.i.i, %struct.btCollisionObject** %8, align 4
+ %iftmp.205.0.i.i = select i1 %toBool.i.i, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store %struct.btCollisionObject* %iftmp.205.0.i.i, %struct.btCollisionObject** %9, align 4
+ %10 = getelementptr inbounds %struct.btActionInterface* %4, i32 0, i32 0 ; [#uses=1]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 3 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %15 = bitcast %struct.btCollisionObject* %iftmp.204.0.i.i to i8* ; [#uses=1]
+ %16 = bitcast %struct.btCollisionObject* %iftmp.205.0.i.i to i8* ; [#uses=1]
+ %17 = invoke %struct.btPersistentManifold* %14(%struct.btActionInterface* %4, i8* %15, i8* %16)
+ to label %invcont.i.i unwind label %lpad.i.i ; [#uses=2]
+
+invcont.i.i: ; preds = %entry
+ %18 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 10 ; [#uses=1]
+ store %struct.btPersistentManifold* %17, %struct.btPersistentManifold** %18, align 4
+ %19 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btActionInterface* %19, i32 0, i32 0 ; [#uses=1]
+ %21 = load i32 (...)*** %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds i32 (...)** %21, i32 5 ; [#uses=1]
+ %23 = load i32 (...)** %22, align 4 ; [#uses=1]
+ %24 = bitcast i32 (...)* %23 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %24(%struct.btActionInterface* %19, %struct.btPersistentManifold* %17)
+ to label %return unwind label %lpad.i.i
+
+invcont9.i.i: ; preds = %lpad.i.i
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i.i)
+ to label %.noexc unwind label %lpad
+
+.noexc: ; preds = %invcont9.i.i
+ unreachable
+
+lpad.i.i: ; preds = %invcont.i.i, %entry
+ %eh_ptr.i.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select13.i.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %25 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %25)
+ to label %invcont9.i.i unwind label %lpad14.i.i
+
+lpad14.i.i: ; preds = %lpad.i.i
+ %eh_ptr15.i.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select17.i.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr15.i.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %invcont.i.i
+ ret void
+
+lpad: ; preds = %invcont9.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select5 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %0)
+ to label %invcont1 unwind label %lpad6
+
+lpad6: ; preds = %lpad
+ %eh_ptr7 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select9 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr7, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btQuadWord* @_ZNK21btConvexInternalShape15getLocalScalingEv(%struct.btConvexInternalShape* %this) nounwind readnone align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 1 ; [#uses=1]
+ ret %struct.btQuadWord* %0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btConvexInternalShape9setMarginEf(%struct.btConvexInternalShape* nocapture %this, float %margin) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 3 ; [#uses=1]
+ store float %margin, float* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK21btConvexInternalShape28calculateSerializeBufferSizeEv(%struct.btConvexInternalShape* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 52
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK15btTriangleShape14getNumVerticesEv(%struct.btTriangleShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 3
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK15btTriangleShape9getVertexEiR9btVector3(%struct.btTriangleShape* nocapture %this, i32 %index, %struct.btQuadWord* nocapture %vert) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %vert, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 %index, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %vert, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 %index, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %vert, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 %index, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %vert, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 %index, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK15btTriangleShape11getNumEdgesEv(%struct.btTriangleShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 3
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK15btTriangleShape7getEdgeEiR9btVector3S1_(%struct.btTriangleShape* %this, i32 %i, %struct.btQuadWord* %pa, %struct.btQuadWord* %pb) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 24 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btTriangleShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %4(%struct.btTriangleShape* %this, i32 %i, %struct.btQuadWord* %pa)
+ %5 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 24 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = add nsw i32 %i, 1 ; [#uses=1]
+ %9 = srem i32 %8, 3 ; [#uses=1]
+ %10 = bitcast i32 (...)* %7 to void (%struct.btTriangleShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %10(%struct.btTriangleShape* %this, i32 %9, %struct.btQuadWord* %pb)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK15btTriangleShape7getAabbERK11btTransformR9btVector3S4_(%struct.btTriangleShape* %this, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 18 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = bitcast i32 (...)* %3 to void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %5(%struct.btConvexInternalShape* %4, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK15btTriangleShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btTriangleShape* nocapture %this, %struct.btQuadWord* nocapture %dir) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %dir, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %dir, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %dir, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=3]
+ %13 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fmul float %1, %18 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fmul float %6, %21 ; [#uses=1]
+ %23 = fadd float %19, %22 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fmul float %12, %25 ; [#uses=1]
+ %27 = fadd float %23, %26 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = fmul float %1, %29 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fmul float %6, %32 ; [#uses=1]
+ %34 = fadd float %30, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = fmul float %12, %36 ; [#uses=1]
+ %38 = fadd float %34, %37 ; [#uses=2]
+ %39 = fcmp olt float %38, %27 ; [#uses=1]
+ br i1 %39, label %bb.i, label %bb4.i
+
+bb.i: ; preds = %entry
+ %40 = fcmp olt float %27, %16 ; [#uses=1]
+ %iftmp.20.0.i = select i1 %40, i32 2, i32 1 ; [#uses=1]
+ br label %_ZNK9btVector37maxAxisEv.exit
+
+bb4.i: ; preds = %entry
+ %41 = fcmp olt float %38, %16 ; [#uses=1]
+ %iftmp.21.0.i = select i1 %41, i32 2, i32 0 ; [#uses=1]
+ br label %_ZNK9btVector37maxAxisEv.exit
+
+_ZNK9btVector37maxAxisEv.exit: ; preds = %bb4.i, %bb.i
+ %42 = phi i32 [ %iftmp.21.0.i, %bb4.i ], [ %iftmp.20.0.i, %bb.i ] ; [#uses=4]
+ %43 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 %42, i32 0, i32 0 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 %42, i32 0, i32 1 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 %42, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 4
+ %52 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 %42, i32 0, i32 3 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK15btTriangleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btTriangleShape* nocapture %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) nounwind align 2 {
+entry:
+ %0 = icmp sgt i32 %numVectors, 0 ; [#uses=1]
+ br i1 %0, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %_ZNK9btVector37maxAxisEv.exit, %bb.nph
+ %i.05 = phi i32 [ 0, %bb.nph ], [ %49, %_ZNK9btVector37maxAxisEv.exit ] ; [#uses=8]
+ %scevgep6 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 0 ; [#uses=1]
+ %scevgep7 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 1 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 2 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 3 ; [#uses=1]
+ %scevgep1011 = getelementptr inbounds %struct.btQuadWord* %vectors, i32 %i.05, i32 0, i32 0 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btQuadWord* %vectors, i32 %i.05, i32 0, i32 1 ; [#uses=1]
+ %scevgep13 = getelementptr %struct.btQuadWord* %vectors, i32 %i.05, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %scevgep1011, align 4 ; [#uses=3]
+ %11 = load float* %1, align 4 ; [#uses=1]
+ %12 = fmul float %10, %11 ; [#uses=1]
+ %13 = load float* %scevgep12, align 4 ; [#uses=3]
+ %14 = load float* %2, align 4 ; [#uses=1]
+ %15 = fmul float %13, %14 ; [#uses=1]
+ %16 = fadd float %12, %15 ; [#uses=1]
+ %17 = load float* %scevgep13, align 4 ; [#uses=3]
+ %18 = load float* %3, align 4 ; [#uses=1]
+ %19 = fmul float %17, %18 ; [#uses=1]
+ %20 = fadd float %16, %19 ; [#uses=2]
+ %21 = load float* %4, align 4 ; [#uses=1]
+ %22 = fmul float %10, %21 ; [#uses=1]
+ %23 = load float* %5, align 4 ; [#uses=1]
+ %24 = fmul float %13, %23 ; [#uses=1]
+ %25 = fadd float %22, %24 ; [#uses=1]
+ %26 = load float* %6, align 4 ; [#uses=1]
+ %27 = fmul float %17, %26 ; [#uses=1]
+ %28 = fadd float %25, %27 ; [#uses=2]
+ %29 = load float* %7, align 4 ; [#uses=1]
+ %30 = fmul float %10, %29 ; [#uses=1]
+ %31 = load float* %8, align 4 ; [#uses=1]
+ %32 = fmul float %13, %31 ; [#uses=1]
+ %33 = fadd float %30, %32 ; [#uses=1]
+ %34 = load float* %9, align 4 ; [#uses=1]
+ %35 = fmul float %17, %34 ; [#uses=1]
+ %36 = fadd float %33, %35 ; [#uses=2]
+ %37 = fcmp olt float %36, %28 ; [#uses=1]
+ br i1 %37, label %bb.i, label %bb4.i
+
+bb.i: ; preds = %bb
+ %38 = fcmp olt float %28, %20 ; [#uses=1]
+ %iftmp.20.0.i = select i1 %38, i32 2, i32 1 ; [#uses=1]
+ br label %_ZNK9btVector37maxAxisEv.exit
+
+bb4.i: ; preds = %bb
+ %39 = fcmp olt float %36, %20 ; [#uses=1]
+ %iftmp.21.0.i = select i1 %39, i32 2, i32 0 ; [#uses=1]
+ br label %_ZNK9btVector37maxAxisEv.exit
+
+_ZNK9btVector37maxAxisEv.exit: ; preds = %bb4.i, %bb.i
+ %40 = phi i32 [ %iftmp.21.0.i, %bb4.i ], [ %iftmp.20.0.i, %bb.i ] ; [#uses=4]
+ %41 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 %40, i32 0, i32 0 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %scevgep6, align 4
+ %43 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 %40, i32 0, i32 1 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ store float %44, float* %scevgep7, align 4
+ %45 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 %40, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %scevgep8, align 4
+ %47 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 %40, i32 0, i32 3 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %scevgep9, align 4
+ %49 = add nsw i32 %i.05, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %49, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %_ZNK9btVector37maxAxisEv.exit, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK15btTriangleShape8getPlaneER9btVector3S1_i(%struct.btTriangleShape* %this, %struct.btQuadWord* %planeNormal, %struct.btQuadWord* %planeSupport, i32 %i) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 28 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btTriangleShape*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %4(%struct.btTriangleShape* %this, i32 %i, %struct.btQuadWord* %planeNormal, %struct.btQuadWord* %planeSupport)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK15btTriangleShape12getNumPlanesEv(%struct.btTriangleShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK15btTriangleShape21calculateLocalInertiaEfR9btVector3(%struct.btTriangleShape* nocapture %this, float %mass, %struct.btQuadWord* nocapture %inertia) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK15btTriangleShape7getNameEv(%struct.btTriangleShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([9 x i8]* @.str18, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK15btTriangleShape36getNumPreferredPenetrationDirectionsEv(%struct.btTriangleShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 2
+}
+
+; [#uses=0]
+define void @_ZN24btConvexTriangleCallback10clearCacheEv(%struct.btConvexTriangleCallback* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 5 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 10 ; [#uses=1]
+ %7 = load %struct.btPersistentManifold** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %5 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ tail call void %8(%struct.btActionInterface* %1, %struct.btPersistentManifold* %7)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN24btConvexTriangleCallback22setTimeStepAndCountersEfRK16btDispatcherInfoP16btManifoldResult(%struct.btConvexTriangleCallback* %this, float %collisionMarginTriangle, %struct.btDispatcherInfo* %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %convexInTriangleSpace = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %0 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 7 ; [#uses=1]
+ store %struct.btDispatcherInfo* %dispatchInfo, %struct.btDispatcherInfo** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 8 ; [#uses=1]
+ store float %collisionMarginTriangle, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btManifoldResult* %resultOut, %struct.btManifoldResult** %2, align 4
+ %3 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %4 = load %struct.btCollisionObject** %3, align 4 ; [#uses=13]
+ %5 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %6 = load %struct.btCollisionObject** %5, align 4 ; [#uses=12]
+ %7 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=5]
+ %17 = load float* %14, align 4 ; [#uses=5]
+ %18 = load float* %13, align 4 ; [#uses=5]
+ %19 = load float* %12, align 4 ; [#uses=5]
+ %20 = load float* %11, align 4 ; [#uses=5]
+ %21 = load float* %10, align 4 ; [#uses=5]
+ %22 = load float* %9, align 4 ; [#uses=5]
+ %23 = load float* %8, align 4 ; [#uses=5]
+ %24 = load float* %7, align 4 ; [#uses=5]
+ %25 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = fsub float -0.000000e+00, %26 ; [#uses=3]
+ %28 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = fsub float -0.000000e+00, %29 ; [#uses=3]
+ %31 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fsub float -0.000000e+00, %32 ; [#uses=3]
+ %34 = fmul float %22, %33 ; [#uses=1]
+ %35 = fmul float %23, %30 ; [#uses=1]
+ %36 = fadd float %34, %35 ; [#uses=1]
+ %37 = fmul float %24, %27 ; [#uses=1]
+ %38 = fadd float %36, %37 ; [#uses=1]
+ %39 = fmul float %19, %33 ; [#uses=1]
+ %40 = fmul float %20, %30 ; [#uses=1]
+ %41 = fadd float %39, %40 ; [#uses=1]
+ %42 = fmul float %21, %27 ; [#uses=1]
+ %43 = fadd float %41, %42 ; [#uses=1]
+ %44 = fmul float %16, %33 ; [#uses=1]
+ %45 = fmul float %17, %30 ; [#uses=1]
+ %46 = fadd float %44, %45 ; [#uses=1]
+ %47 = fmul float %18, %27 ; [#uses=1]
+ %48 = fadd float %46, %47 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=3]
+ %51 = fmul float %22, %50 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=3]
+ %54 = fmul float %23, %53 ; [#uses=1]
+ %55 = fadd float %51, %54 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=3]
+ %58 = fmul float %24, %57 ; [#uses=1]
+ %59 = fadd float %55, %58 ; [#uses=1]
+ %60 = fadd float %59, %38 ; [#uses=1]
+ %61 = fmul float %19, %50 ; [#uses=1]
+ %62 = fmul float %20, %53 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=1]
+ %64 = fmul float %21, %57 ; [#uses=1]
+ %65 = fadd float %63, %64 ; [#uses=1]
+ %66 = fadd float %65, %43 ; [#uses=1]
+ %67 = fmul float %16, %50 ; [#uses=1]
+ %68 = fmul float %17, %53 ; [#uses=1]
+ %69 = fadd float %67, %68 ; [#uses=1]
+ %70 = fmul float %18, %57 ; [#uses=1]
+ %71 = fadd float %69, %70 ; [#uses=1]
+ %72 = fadd float %71, %48 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=3]
+ %75 = fmul float %74, %22 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=3]
+ %78 = fmul float %77, %23 ; [#uses=1]
+ %79 = fadd float %75, %78 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=3]
+ %82 = fmul float %81, %24 ; [#uses=1]
+ %83 = fadd float %79, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=3]
+ %86 = fmul float %85, %22 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=3]
+ %89 = fmul float %88, %23 ; [#uses=1]
+ %90 = fadd float %86, %89 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=3]
+ %93 = fmul float %92, %24 ; [#uses=1]
+ %94 = fadd float %90, %93 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=3]
+ %97 = fmul float %96, %22 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=3]
+ %100 = fmul float %99, %23 ; [#uses=1]
+ %101 = fadd float %97, %100 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %103 = load float* %102, align 4 ; [#uses=3]
+ %104 = fmul float %103, %24 ; [#uses=1]
+ %105 = fadd float %101, %104 ; [#uses=1]
+ %106 = fmul float %74, %19 ; [#uses=1]
+ %107 = fmul float %77, %20 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fmul float %81, %21 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = fmul float %85, %19 ; [#uses=1]
+ %112 = fmul float %88, %20 ; [#uses=1]
+ %113 = fadd float %111, %112 ; [#uses=1]
+ %114 = fmul float %92, %21 ; [#uses=1]
+ %115 = fadd float %113, %114 ; [#uses=1]
+ %116 = fmul float %96, %19 ; [#uses=1]
+ %117 = fmul float %99, %20 ; [#uses=1]
+ %118 = fadd float %116, %117 ; [#uses=1]
+ %119 = fmul float %103, %21 ; [#uses=1]
+ %120 = fadd float %118, %119 ; [#uses=1]
+ %121 = fmul float %74, %16 ; [#uses=1]
+ %122 = fmul float %77, %17 ; [#uses=1]
+ %123 = fadd float %121, %122 ; [#uses=1]
+ %124 = fmul float %81, %18 ; [#uses=1]
+ %125 = fadd float %123, %124 ; [#uses=1]
+ %126 = fmul float %85, %16 ; [#uses=1]
+ %127 = fmul float %88, %17 ; [#uses=1]
+ %128 = fadd float %126, %127 ; [#uses=1]
+ %129 = fmul float %92, %18 ; [#uses=1]
+ %130 = fadd float %128, %129 ; [#uses=1]
+ %131 = fmul float %96, %16 ; [#uses=1]
+ %132 = fmul float %99, %17 ; [#uses=1]
+ %133 = fadd float %131, %132 ; [#uses=1]
+ %134 = fmul float %103, %18 ; [#uses=1]
+ %135 = fadd float %133, %134 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %135, float* %136, align 8
+ %137 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %130, float* %137, align 4
+ %138 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %125, float* %138, align 8
+ %139 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %139, align 4
+ %140 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %120, float* %140, align 8
+ %141 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %115, float* %141, align 4
+ %142 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %110, float* %142, align 8
+ %143 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %143, align 4
+ %144 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %105, float* %144, align 8
+ %145 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %94, float* %145, align 4
+ %146 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %83, float* %146, align 8
+ %147 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %147, align 4
+ %148 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %72, float* %148, align 8
+ %149 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %66, float* %149, align 4
+ %150 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %60, float* %150, align 8
+ %151 = getelementptr inbounds %struct.btTransform* %convexInTriangleSpace, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %151, align 4
+ %152 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 9 ; [#uses=1]
+ %153 = load %struct.btCollisionShape** %152, align 4 ; [#uses=2]
+ %154 = getelementptr inbounds %struct.btCollisionShape* %153, i32 0, i32 0 ; [#uses=1]
+ %155 = load i32 (...)*** %154, align 4 ; [#uses=1]
+ %156 = getelementptr inbounds i32 (...)** %155, i32 2 ; [#uses=1]
+ %157 = load i32 (...)** %156, align 4 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 4 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 3 ; [#uses=1]
+ %160 = bitcast i32 (...)* %157 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %160(%struct.btCollisionShape* %153, %struct.btTransform* %convexInTriangleSpace, %struct.btQuadWord* %159, %struct.btQuadWord* %158)
+ %161 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=2]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ %163 = fadd float %162, %collisionMarginTriangle ; [#uses=1]
+ store float %163, float* %161, align 4
+ %164 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=2]
+ %165 = load float* %164, align 4 ; [#uses=1]
+ %166 = fadd float %165, %collisionMarginTriangle ; [#uses=1]
+ store float %166, float* %164, align 4
+ %167 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=2]
+ %168 = load float* %167, align 4 ; [#uses=1]
+ %169 = fadd float %168, %collisionMarginTriangle ; [#uses=1]
+ store float %169, float* %167, align 4
+ %170 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %171 = load float* %170, align 4 ; [#uses=1]
+ %172 = fsub float %171, %collisionMarginTriangle ; [#uses=1]
+ store float %172, float* %170, align 4
+ %173 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %174 = load float* %173, align 4 ; [#uses=1]
+ %175 = fsub float %174, %collisionMarginTriangle ; [#uses=1]
+ store float %175, float* %173, align 4
+ %176 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %177 = load float* %176, align 4 ; [#uses=1]
+ %178 = fsub float %177, %collisionMarginTriangle ; [#uses=1]
+ store float %178, float* %176, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN33btConvexConcaveCollisionAlgorithm10clearCacheEv(%struct.btConvexConcaveCollisionAlgorithm* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 6 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 5 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 10 ; [#uses=1]
+ %7 = load %struct.btPersistentManifold** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %5 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ tail call void %8(%struct.btActionInterface* %1, %struct.btPersistentManifold* %7)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD1Ev(%struct..0LocalTriangleSphereCastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD0Ev(%struct..0LocalTriangleSphereCastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct..0LocalTriangleSphereCastCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallback15processTriangleEP9btVector3ii(%struct..0LocalTriangleSphereCastCallback* %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %ident = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %castResult = alloca %"struct.btConvexCast::CastResult", align 8 ; [#uses=5]
+ %pointShape = alloca %struct.btPolyhedralConvexShape, align 8 ; [#uses=7]
+ %triShape = alloca %struct.btTriangleShape, align 8 ; [#uses=16]
+ %simplexSolver = alloca %struct.btVoronoiSimplexSolver, align 8 ; [#uses=3]
+ %convexCaster = alloca %struct.btGjkConvexCast, align 8 ; [#uses=6]
+ %0 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %0, align 8
+ %1 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 8
+ %3 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 8
+ %5 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 8
+ %7 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 8
+ %9 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %10, align 8
+ %11 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 8
+ %13 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 8
+ %15 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 4
+ %16 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN12btConvexCast10CastResultE, i32 0, i32 2), i32 (...)*** %16, align 8
+ %17 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 5 ; [#uses=2]
+ %18 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %18, align 8
+ %19 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ %20 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %this, i32 0, i32 5 ; [#uses=3]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %17, align 4
+ %22 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %this, i32 0, i32 4 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=2]
+ %24 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %24)
+ %25 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btSphereShape, i32 0, i32 2), i32 (...)*** %25, align 8
+ %26 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 8, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %23, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %23, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %29)
+ to label %invcont1 unwind label %lpad
+
+invcont1: ; preds = %entry
+ %30 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV15btTriangleShape, i32 0, i32 2), i32 (...)*** %30, align 8
+ %31 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %31, align 4
+ %32 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 3 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 3 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ %56 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ store float %58, float* %56, align 4
+ %59 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %59, align 4
+ %62 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ store float %64, float* %62, align 4
+ %65 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 1, i32 2, i32 0, i32 3 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 3 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ store float %67, float* %65, align 4
+ %68 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %simplexSolver, i32 0, i32 8 ; [#uses=1]
+ store float 0x3F1A36E2E0000000, float* %68, align 4
+ %69 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %simplexSolver, i32 0, i32 10, i32 1, i32 0 ; [#uses=2]
+ %70 = load i8* %69, align 4 ; [#uses=1]
+ %71 = and i8 %70, -16 ; [#uses=1]
+ store i8 %71, i8* %69, align 4
+ %72 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0, i32 0 ; [#uses=2]
+ %73 = getelementptr inbounds %struct.btTriangleShape* %triShape, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ invoke void @_ZN22btSubsimplexConvexCastC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolver(%struct.btGjkConvexCast* %convexCaster, %struct.btConvexShape* %72, %struct.btConvexShape* %73, %struct.btVoronoiSimplexSolver* %simplexSolver)
+ to label %invcont2 unwind label %lpad25
+
+invcont2: ; preds = %invcont1
+ %74 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %75 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %76 = invoke zeroext i8 @_ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(%struct.btGjkConvexCast* %convexCaster, %struct.btTransform* %75, %struct.btTransform* %74, %struct.btTransform* %ident, %struct.btTransform* %ident, %"struct.btConvexCast::CastResult"* %castResult)
+ to label %invcont3 unwind label %lpad29 ; [#uses=1]
+
+invcont3: ; preds = %invcont2
+ %toBool = icmp eq i8 %76, 0 ; [#uses=1]
+ br i1 %toBool, label %bb8, label %bb
+
+bb: ; preds = %invcont3
+ %77 = load float* %20, align 4 ; [#uses=1]
+ %78 = load float* %17, align 4 ; [#uses=2]
+ %79 = fcmp ogt float %77, %78 ; [#uses=1]
+ br i1 %79, label %bb4, label %bb8
+
+bb4: ; preds = %bb
+ store float %78, float* %20, align 4
+ br label %bb8
+
+bb8: ; preds = %bb4, %bb, %invcont3
+ %80 = getelementptr inbounds %struct.btGjkConvexCast* %convexCaster, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV22btSubsimplexConvexCast, i32 0, i32 2), i32 (...)*** %80, align 8
+ %81 = getelementptr inbounds %struct.btGjkConvexCast* %convexCaster, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %81)
+ to label %bb15 unwind label %lpad25
+
+bb15: ; preds = %bb8
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %30, align 8
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %73)
+ to label %bb22 unwind label %lpad
+
+invcont20: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.1)
+ unreachable
+
+bb22: ; preds = %bb15
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %25, align 8
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %72)
+ ret void
+
+lpad: ; preds = %bb15, %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select24 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad25: ; preds = %bb8, %invcont1
+ %eh_ptr26 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select28 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr26, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad45
+
+lpad29: ; preds = %invcont2
+ %eh_ptr30 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select32 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr30, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %82 = getelementptr inbounds %struct.btGjkConvexCast* %convexCaster, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV22btSubsimplexConvexCast, i32 0, i32 2), i32 (...)*** %82, align 8
+ %83 = getelementptr inbounds %struct.btGjkConvexCast* %convexCaster, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %83)
+ to label %ppad45 unwind label %lpad33
+
+lpad33: ; preds = %lpad29
+ %eh_ptr34 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select36 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr34, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad37: ; preds = %ppad45
+ %eh_ptr38 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select40 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr38, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad41: ; preds = %ppad
+ %eh_ptr42 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select44 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr42, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %ppad45, %lpad
+ %eh_exception.1 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.0, %ppad45 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %25, align 8
+ %84 = getelementptr inbounds %struct.btPolyhedralConvexShape* %pointShape, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %84)
+ to label %invcont20 unwind label %lpad41
+
+ppad45: ; preds = %lpad29, %lpad25
+ %eh_exception.0 = phi i8* [ %eh_ptr26, %lpad25 ], [ %eh_ptr30, %lpad29 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %30, align 8
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %73)
+ to label %ppad unwind label %lpad37
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btTriangleShapeD1Ev(%struct.btTriangleShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btTriangleShapeD0Ev(%struct.btTriangleShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btTriangleShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK21btConvexInternalShape9serializeEPvP12btSerializer(%struct.btConvexInternalShape* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK16btCollisionShape9serializeEPvP12btSerializer(%struct.btCollisionShape* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds i8* %dataBuffer, i32 28 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btConvexInternalShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i = bitcast i8* %2 to float* ; [#uses=1]
+ %3 = load float* %scevgep.i, align 4 ; [#uses=1]
+ store float %3, float* %scevgep4.i, align 4
+ %scevgep.1.i = getelementptr %struct.btConvexInternalShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i = getelementptr i8* %dataBuffer, i32 32 ; [#uses=1]
+ %4 = bitcast i8* %scevgep4.1.i to float* ; [#uses=1]
+ %5 = load float* %scevgep.1.i, align 4 ; [#uses=1]
+ store float %5, float* %4, align 4
+ %scevgep.2.i = getelementptr %struct.btConvexInternalShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i = getelementptr i8* %dataBuffer, i32 36 ; [#uses=1]
+ %6 = bitcast i8* %scevgep4.2.i to float* ; [#uses=1]
+ %7 = load float* %scevgep.2.i, align 4 ; [#uses=1]
+ store float %7, float* %6, align 4
+ %scevgep.3.i = getelementptr %struct.btConvexInternalShape* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i = getelementptr i8* %dataBuffer, i32 40 ; [#uses=1]
+ %8 = bitcast i8* %scevgep4.3.i to float* ; [#uses=1]
+ %9 = load float* %scevgep.3.i, align 4 ; [#uses=1]
+ store float %9, float* %8, align 4
+ %10 = getelementptr inbounds i8* %dataBuffer, i32 12 ; [#uses=1]
+ %scevgep.i2 = getelementptr %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i3 = bitcast i8* %10 to float* ; [#uses=1]
+ %11 = load float* %scevgep.i2, align 4 ; [#uses=1]
+ store float %11, float* %scevgep4.i3, align 4
+ %scevgep.1.i4 = getelementptr %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i5 = getelementptr i8* %dataBuffer, i32 16 ; [#uses=1]
+ %12 = bitcast i8* %scevgep4.1.i5 to float* ; [#uses=1]
+ %13 = load float* %scevgep.1.i4, align 4 ; [#uses=1]
+ store float %13, float* %12, align 4
+ %scevgep.2.i6 = getelementptr %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i7 = getelementptr i8* %dataBuffer, i32 20 ; [#uses=1]
+ %14 = bitcast i8* %scevgep4.2.i7 to float* ; [#uses=1]
+ %15 = load float* %scevgep.2.i6, align 4 ; [#uses=1]
+ store float %15, float* %14, align 4
+ %scevgep.3.i8 = getelementptr %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i9 = getelementptr i8* %dataBuffer, i32 24 ; [#uses=1]
+ %16 = bitcast i8* %scevgep4.3.i9 to float* ; [#uses=1]
+ %17 = load float* %scevgep.3.i8, align 4 ; [#uses=1]
+ store float %17, float* %16, align 4
+ %18 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 3 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %21 = bitcast i8* %20 to float* ; [#uses=1]
+ store float %19, float* %21, align 4
+ ret i8* getelementptr inbounds ([26 x i8]* @.str119, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK15btTriangleShape32getPreferredPenetrationDirectionEiR9btVector3(%struct.btTriangleShape* nocapture %this, i32 %index, %struct.btQuadWord* nocapture %penetrationVector) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fsub float %1, %3 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fsub float %6, %8 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fsub float %11, %13 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fsub float %16, %3 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fsub float %19, %8 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fsub float %22, %13 ; [#uses=2]
+ %24 = fmul float %23, %9 ; [#uses=1]
+ %25 = fmul float %20, %14 ; [#uses=1]
+ %26 = fsub float %24, %25 ; [#uses=4]
+ %27 = fmul float %17, %14 ; [#uses=1]
+ %28 = fmul float %23, %4 ; [#uses=1]
+ %29 = fsub float %27, %28 ; [#uses=4]
+ %30 = fmul float %20, %4 ; [#uses=1]
+ %31 = fmul float %17, %9 ; [#uses=1]
+ %32 = fsub float %30, %31 ; [#uses=4]
+ %33 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %32, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %29, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %26, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 4
+ %37 = fmul float %32, %32 ; [#uses=1]
+ %38 = fmul float %29, %29 ; [#uses=1]
+ %39 = fadd float %37, %38 ; [#uses=1]
+ %40 = fmul float %26, %26 ; [#uses=1]
+ %41 = fadd float %39, %40 ; [#uses=1]
+ %42 = tail call float @sqrtf(float %41) nounwind readonly ; [#uses=1]
+ %43 = fdiv float 1.000000e+00, %42 ; [#uses=3]
+ %44 = fmul float %32, %43 ; [#uses=2]
+ store float %44, float* %33, align 4
+ %45 = fmul float %29, %43 ; [#uses=2]
+ store float %45, float* %34, align 4
+ %46 = fmul float %26, %43 ; [#uses=2]
+ store float %46, float* %35, align 4
+ %47 = icmp eq i32 %index, 0 ; [#uses=1]
+ br i1 %47, label %return, label %bb
+
+bb: ; preds = %entry
+ %48 = fmul float %44, -1.000000e+00 ; [#uses=1]
+ store float %48, float* %33, align 4
+ %49 = fmul float %45, -1.000000e+00 ; [#uses=1]
+ store float %49, float* %34, align 4
+ %50 = fmul float %46, -1.000000e+00 ; [#uses=1]
+ store float %50, float* %35, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK15btTriangleShape8isInsideERK9btVector3f(%struct.btTriangleShape* %this, %struct.btQuadWord* nocapture %pt, float %tolerance) align 2 {
+entry:
+ %pa = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %pb = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fsub float %1, %3 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fsub float %6, %8 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = fsub float %11, %13 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fsub float %16, %3 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fsub float %19, %8 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fsub float %22, %13 ; [#uses=2]
+ %24 = fmul float %23, %9 ; [#uses=1]
+ %25 = fmul float %20, %14 ; [#uses=1]
+ %26 = fsub float %24, %25 ; [#uses=3]
+ %27 = fmul float %17, %14 ; [#uses=1]
+ %28 = fmul float %23, %4 ; [#uses=1]
+ %29 = fsub float %27, %28 ; [#uses=3]
+ %30 = fmul float %20, %4 ; [#uses=1]
+ %31 = fmul float %17, %9 ; [#uses=1]
+ %32 = fsub float %30, %31 ; [#uses=3]
+ %33 = fmul float %32, %32 ; [#uses=1]
+ %34 = fmul float %29, %29 ; [#uses=1]
+ %35 = fadd float %33, %34 ; [#uses=1]
+ %36 = fmul float %26, %26 ; [#uses=1]
+ %37 = fadd float %35, %36 ; [#uses=1]
+ %38 = call float @sqrtf(float %37) nounwind readonly ; [#uses=1]
+ %39 = fdiv float 1.000000e+00, %38 ; [#uses=3]
+ %40 = fmul float %32, %39 ; [#uses=4]
+ %41 = fmul float %29, %39 ; [#uses=4]
+ %42 = fmul float %26, %39 ; [#uses=4]
+ %43 = getelementptr inbounds %struct.btQuadWord* %pt, i32 0, i32 0, i32 0 ; [#uses=2]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = fmul float %44, %40 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btQuadWord* %pt, i32 0, i32 0, i32 1 ; [#uses=2]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = fmul float %47, %41 ; [#uses=1]
+ %49 = fadd float %45, %48 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btQuadWord* %pt, i32 0, i32 0, i32 2 ; [#uses=2]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fmul float %51, %42 ; [#uses=1]
+ %53 = fadd float %49, %52 ; [#uses=1]
+ %54 = fmul float %13, %40 ; [#uses=1]
+ %55 = fmul float %8, %41 ; [#uses=1]
+ %56 = fadd float %54, %55 ; [#uses=1]
+ %57 = fmul float %3, %42 ; [#uses=1]
+ %58 = fadd float %56, %57 ; [#uses=1]
+ %59 = fsub float %53, %58 ; [#uses=2]
+ %60 = fsub float -0.000000e+00, %tolerance ; [#uses=2]
+ %61 = fcmp ult float %59, %60 ; [#uses=1]
+ %62 = fcmp ugt float %59, %tolerance ; [#uses=1]
+ %or.cond = or i1 %61, %62 ; [#uses=1]
+ br i1 %or.cond, label %bb9, label %bb6.preheader
+
+bb6.preheader: ; preds = %entry
+ %63 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb6
+
+bb2: ; preds = %bb6
+ %70 = load i32 (...)*** %63, align 4 ; [#uses=1]
+ %71 = getelementptr inbounds i32 (...)** %70, i32 23 ; [#uses=1]
+ %72 = load i32 (...)** %71, align 4 ; [#uses=1]
+ %73 = bitcast i32 (...)* %72 to void (%struct.btTriangleShape*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %73(%struct.btTriangleShape* %this, i32 %118, %struct.btQuadWord* %pa, %struct.btQuadWord* %pb)
+ %74 = load float* %64, align 8 ; [#uses=1]
+ %75 = load float* %65, align 8 ; [#uses=2]
+ %76 = fsub float %74, %75 ; [#uses=2]
+ %77 = load float* %66, align 4 ; [#uses=1]
+ %78 = load float* %67, align 4 ; [#uses=2]
+ %79 = fsub float %77, %78 ; [#uses=2]
+ %80 = load float* %68, align 8 ; [#uses=1]
+ %81 = load float* %69, align 8 ; [#uses=2]
+ %82 = fsub float %80, %81 ; [#uses=2]
+ %83 = fmul float %82, %41 ; [#uses=1]
+ %84 = fmul float %79, %40 ; [#uses=1]
+ %85 = fsub float %83, %84 ; [#uses=3]
+ %86 = fmul float %76, %40 ; [#uses=1]
+ %87 = fmul float %82, %42 ; [#uses=1]
+ %88 = fsub float %86, %87 ; [#uses=3]
+ %89 = fmul float %79, %42 ; [#uses=1]
+ %90 = fmul float %76, %41 ; [#uses=1]
+ %91 = fsub float %89, %90 ; [#uses=3]
+ %92 = fmul float %91, %91 ; [#uses=1]
+ %93 = fmul float %88, %88 ; [#uses=1]
+ %94 = fadd float %92, %93 ; [#uses=1]
+ %95 = fmul float %85, %85 ; [#uses=1]
+ %96 = fadd float %94, %95 ; [#uses=1]
+ %97 = call float @sqrtf(float %96) nounwind readonly ; [#uses=1]
+ %98 = fdiv float 1.000000e+00, %97 ; [#uses=3]
+ %99 = fmul float %91, %98 ; [#uses=2]
+ %100 = fmul float %88, %98 ; [#uses=2]
+ %101 = fmul float %85, %98 ; [#uses=2]
+ %102 = load float* %43, align 4 ; [#uses=1]
+ %103 = fmul float %102, %99 ; [#uses=1]
+ %104 = load float* %46, align 4 ; [#uses=1]
+ %105 = fmul float %104, %100 ; [#uses=1]
+ %106 = fadd float %103, %105 ; [#uses=1]
+ %107 = load float* %50, align 4 ; [#uses=1]
+ %108 = fmul float %107, %101 ; [#uses=1]
+ %109 = fadd float %106, %108 ; [#uses=1]
+ %110 = fmul float %81, %99 ; [#uses=1]
+ %111 = fmul float %78, %100 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=1]
+ %113 = fmul float %75, %101 ; [#uses=1]
+ %114 = fadd float %112, %113 ; [#uses=1]
+ %115 = fsub float %109, %114 ; [#uses=1]
+ %116 = fcmp olt float %115, %60 ; [#uses=1]
+ br i1 %116, label %bb9, label %bb5
+
+bb5: ; preds = %bb2
+ %117 = add nsw i32 %118, 1 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb6.preheader
+ %118 = phi i32 [ %117, %bb5 ], [ 0, %bb6.preheader ] ; [#uses=3]
+ %119 = icmp slt i32 %118, 3 ; [#uses=1]
+ br i1 %119, label %bb2, label %bb9
+
+bb9: ; preds = %bb6, %bb2, %entry
+ %.0 = phi i8 [ 0, %entry ], [ 1, %bb6 ], [ 0, %bb2 ] ; [#uses=1]
+ ret i8 %.0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK15btTriangleShape16getPlaneEquationEiR9btVector3S1_(%struct.btTriangleShape* nocapture %this, i32 %i, %struct.btQuadWord* nocapture %planeNormal, %struct.btQuadWord* nocapture %planeSupport) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=2]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fsub float %1, %3 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fsub float %6, %8 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=2]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fsub float %11, %13 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fsub float %16, %3 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fsub float %19, %8 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fsub float %22, %13 ; [#uses=2]
+ %24 = fmul float %23, %9 ; [#uses=1]
+ %25 = fmul float %20, %14 ; [#uses=1]
+ %26 = fsub float %24, %25 ; [#uses=4]
+ %27 = fmul float %17, %14 ; [#uses=1]
+ %28 = fmul float %23, %4 ; [#uses=1]
+ %29 = fsub float %27, %28 ; [#uses=4]
+ %30 = fmul float %20, %4 ; [#uses=1]
+ %31 = fmul float %17, %9 ; [#uses=1]
+ %32 = fsub float %30, %31 ; [#uses=4]
+ %33 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %32, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %29, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %26, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 4
+ %37 = fmul float %32, %32 ; [#uses=1]
+ %38 = fmul float %29, %29 ; [#uses=1]
+ %39 = fadd float %37, %38 ; [#uses=1]
+ %40 = fmul float %26, %26 ; [#uses=1]
+ %41 = fadd float %39, %40 ; [#uses=1]
+ %42 = tail call float @sqrtf(float %41) nounwind readonly ; [#uses=1]
+ %43 = fdiv float 1.000000e+00, %42 ; [#uses=3]
+ %44 = fmul float %32, %43 ; [#uses=1]
+ store float %44, float* %33, align 4
+ %45 = fmul float %29, %43 ; [#uses=1]
+ store float %45, float* %34, align 4
+ %46 = fmul float %26, %43 ; [#uses=1]
+ store float %46, float* %35, align 4
+ %47 = getelementptr inbounds %struct.btQuadWord* %planeSupport, i32 0, i32 0, i32 0 ; [#uses=1]
+ %48 = load float* %12, align 4 ; [#uses=1]
+ store float %48, float* %47, align 4
+ %49 = getelementptr inbounds %struct.btQuadWord* %planeSupport, i32 0, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %7, align 4 ; [#uses=1]
+ store float %50, float* %49, align 4
+ %51 = getelementptr inbounds %struct.btQuadWord* %planeSupport, i32 0, i32 0, i32 2 ; [#uses=1]
+ %52 = load float* %2, align 4 ; [#uses=1]
+ store float %52, float* %51, align 4
+ %53 = getelementptr inbounds %struct.btQuadWord* %planeSupport, i32 0, i32 0, i32 3 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btTriangleShape* %this, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN24btConvexTriangleCallback15processTriangleEP9btVector3ii(%struct.btConvexTriangleCallback* %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %3 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %4 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %5 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %color = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %tm = alloca %struct.btTriangleShape, align 8 ; [#uses=19]
+ %6 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 6 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=3]
+ %8 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 2 ; [#uses=4]
+ %9 = load %struct.btCollisionObject** %8, align 4 ; [#uses=13]
+ %10 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 7 ; [#uses=5]
+ %11 = load %struct.btDispatcherInfo** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btDispatcherInfo* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb
+
+bb: ; preds = %entry
+ %13 = getelementptr inbounds %struct.btDispatcherInfo* %11, i32 0, i32 5 ; [#uses=1]
+ %14 = load %struct.btActionInterface** %13, align 4 ; [#uses=3]
+ %15 = icmp eq %struct.btActionInterface* %14, null ; [#uses=1]
+ br i1 %15, label %bb10, label %bb1
+
+bb1: ; preds = %bb
+ %16 = getelementptr inbounds %struct.btActionInterface* %14, i32 0, i32 0 ; [#uses=1]
+ %17 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 12 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = bitcast i32 (...)* %19 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %21 = call i32 %20(%struct.btActionInterface* %14) ; [#uses=1]
+ %22 = and i32 %21, 1 ; [#uses=1]
+ %toBool4 = icmp eq i32 %22, 0 ; [#uses=1]
+ br i1 %toBool4, label %bb10, label %bb9
+
+bb9: ; preds = %bb1
+ %23 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %23, align 8
+ %24 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 8
+ %26 = getelementptr inbounds %struct.btQuadWord* %color, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = load %struct.btDispatcherInfo** %10, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btDispatcherInfo* %27, i32 0, i32 5 ; [#uses=2]
+ %29 = load %struct.btActionInterface** %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btActionInterface* %29, i32 0, i32 0 ; [#uses=1]
+ %31 = load i32 (...)*** %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds i32 (...)** %31, i32 2 ; [#uses=1]
+ %33 = load i32 (...)** %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=6]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=2]
+ %37 = load float* %36, align 4 ; [#uses=3]
+ %38 = fmul float %35, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=6]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=2]
+ %42 = load float* %41, align 4 ; [#uses=3]
+ %43 = fmul float %40, %42 ; [#uses=1]
+ %44 = fadd float %38, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=6]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=2]
+ %48 = load float* %47, align 4 ; [#uses=3]
+ %49 = fmul float %46, %48 ; [#uses=1]
+ %50 = fadd float %44, %49 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=6]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = fadd float %50, %52 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=6]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fmul float %55, %37 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=6]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = fmul float %58, %42 ; [#uses=1]
+ %60 = fadd float %56, %59 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=6]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ %63 = fmul float %62, %48 ; [#uses=1]
+ %64 = fadd float %60, %63 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=6]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ %67 = fadd float %64, %66 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=6]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = fmul float %69, %37 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=6]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fmul float %72, %42 ; [#uses=1]
+ %74 = fadd float %70, %73 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=6]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ %77 = fmul float %76, %48 ; [#uses=1]
+ %78 = fadd float %74, %77 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=6]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fadd float %78, %80 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %81, float* %82, align 8
+ %83 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %67, float* %83, align 4
+ %84 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %53, float* %84, align 8
+ %85 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %85, align 4
+ %86 = load float* %34, align 4 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=2]
+ %88 = load float* %87, align 4 ; [#uses=3]
+ %89 = fmul float %86, %88 ; [#uses=1]
+ %90 = load float* %39, align 4 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=2]
+ %92 = load float* %91, align 4 ; [#uses=3]
+ %93 = fmul float %90, %92 ; [#uses=1]
+ %94 = fadd float %89, %93 ; [#uses=1]
+ %95 = load float* %45, align 4 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=2]
+ %97 = load float* %96, align 4 ; [#uses=3]
+ %98 = fmul float %95, %97 ; [#uses=1]
+ %99 = fadd float %94, %98 ; [#uses=1]
+ %100 = load float* %51, align 4 ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=1]
+ %102 = load float* %54, align 4 ; [#uses=1]
+ %103 = fmul float %102, %88 ; [#uses=1]
+ %104 = load float* %57, align 4 ; [#uses=1]
+ %105 = fmul float %104, %92 ; [#uses=1]
+ %106 = fadd float %103, %105 ; [#uses=1]
+ %107 = load float* %61, align 4 ; [#uses=1]
+ %108 = fmul float %107, %97 ; [#uses=1]
+ %109 = fadd float %106, %108 ; [#uses=1]
+ %110 = load float* %65, align 4 ; [#uses=1]
+ %111 = fadd float %109, %110 ; [#uses=1]
+ %112 = load float* %68, align 4 ; [#uses=1]
+ %113 = fmul float %112, %88 ; [#uses=1]
+ %114 = load float* %71, align 4 ; [#uses=1]
+ %115 = fmul float %114, %92 ; [#uses=1]
+ %116 = fadd float %113, %115 ; [#uses=1]
+ %117 = load float* %75, align 4 ; [#uses=1]
+ %118 = fmul float %117, %97 ; [#uses=1]
+ %119 = fadd float %116, %118 ; [#uses=1]
+ %120 = load float* %79, align 4 ; [#uses=1]
+ %121 = fadd float %119, %120 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %121, float* %122, align 8
+ %123 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %111, float* %123, align 4
+ %124 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %101, float* %124, align 8
+ %125 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %125, align 4
+ %126 = load %struct.btActionInterface** %28, align 4 ; [#uses=1]
+ %127 = bitcast i32 (...)* %33 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %127(%struct.btActionInterface* %126, %struct.btQuadWord* %4, %struct.btQuadWord* %5, %struct.btQuadWord* %color)
+ %128 = load %struct.btDispatcherInfo** %10, align 4 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btDispatcherInfo* %128, i32 0, i32 5 ; [#uses=2]
+ %130 = load %struct.btActionInterface** %129, align 4 ; [#uses=1]
+ %131 = getelementptr inbounds %struct.btActionInterface* %130, i32 0, i32 0 ; [#uses=1]
+ %132 = load i32 (...)*** %131, align 4 ; [#uses=1]
+ %133 = getelementptr inbounds i32 (...)** %132, i32 2 ; [#uses=1]
+ %134 = load i32 (...)** %133, align 4 ; [#uses=1]
+ %135 = load float* %34, align 4 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=2]
+ %137 = load float* %136, align 4 ; [#uses=3]
+ %138 = fmul float %135, %137 ; [#uses=1]
+ %139 = load float* %39, align 4 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=2]
+ %141 = load float* %140, align 4 ; [#uses=3]
+ %142 = fmul float %139, %141 ; [#uses=1]
+ %143 = fadd float %138, %142 ; [#uses=1]
+ %144 = load float* %45, align 4 ; [#uses=1]
+ %145 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=2]
+ %146 = load float* %145, align 4 ; [#uses=3]
+ %147 = fmul float %144, %146 ; [#uses=1]
+ %148 = fadd float %143, %147 ; [#uses=1]
+ %149 = load float* %51, align 4 ; [#uses=1]
+ %150 = fadd float %148, %149 ; [#uses=1]
+ %151 = load float* %54, align 4 ; [#uses=1]
+ %152 = fmul float %151, %137 ; [#uses=1]
+ %153 = load float* %57, align 4 ; [#uses=1]
+ %154 = fmul float %153, %141 ; [#uses=1]
+ %155 = fadd float %152, %154 ; [#uses=1]
+ %156 = load float* %61, align 4 ; [#uses=1]
+ %157 = fmul float %156, %146 ; [#uses=1]
+ %158 = fadd float %155, %157 ; [#uses=1]
+ %159 = load float* %65, align 4 ; [#uses=1]
+ %160 = fadd float %158, %159 ; [#uses=1]
+ %161 = load float* %68, align 4 ; [#uses=1]
+ %162 = fmul float %161, %137 ; [#uses=1]
+ %163 = load float* %71, align 4 ; [#uses=1]
+ %164 = fmul float %163, %141 ; [#uses=1]
+ %165 = fadd float %162, %164 ; [#uses=1]
+ %166 = load float* %75, align 4 ; [#uses=1]
+ %167 = fmul float %166, %146 ; [#uses=1]
+ %168 = fadd float %165, %167 ; [#uses=1]
+ %169 = load float* %79, align 4 ; [#uses=1]
+ %170 = fadd float %168, %169 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %170, float* %171, align 8
+ %172 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %160, float* %172, align 4
+ %173 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %150, float* %173, align 8
+ %174 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %174, align 4
+ %175 = load float* %34, align 4 ; [#uses=1]
+ %176 = load float* %36, align 4 ; [#uses=3]
+ %177 = fmul float %175, %176 ; [#uses=1]
+ %178 = load float* %39, align 4 ; [#uses=1]
+ %179 = load float* %41, align 4 ; [#uses=3]
+ %180 = fmul float %178, %179 ; [#uses=1]
+ %181 = fadd float %177, %180 ; [#uses=1]
+ %182 = load float* %45, align 4 ; [#uses=1]
+ %183 = load float* %47, align 4 ; [#uses=3]
+ %184 = fmul float %182, %183 ; [#uses=1]
+ %185 = fadd float %181, %184 ; [#uses=1]
+ %186 = load float* %51, align 4 ; [#uses=1]
+ %187 = fadd float %185, %186 ; [#uses=1]
+ %188 = load float* %54, align 4 ; [#uses=1]
+ %189 = fmul float %188, %176 ; [#uses=1]
+ %190 = load float* %57, align 4 ; [#uses=1]
+ %191 = fmul float %190, %179 ; [#uses=1]
+ %192 = fadd float %189, %191 ; [#uses=1]
+ %193 = load float* %61, align 4 ; [#uses=1]
+ %194 = fmul float %193, %183 ; [#uses=1]
+ %195 = fadd float %192, %194 ; [#uses=1]
+ %196 = load float* %65, align 4 ; [#uses=1]
+ %197 = fadd float %195, %196 ; [#uses=1]
+ %198 = load float* %68, align 4 ; [#uses=1]
+ %199 = fmul float %198, %176 ; [#uses=1]
+ %200 = load float* %71, align 4 ; [#uses=1]
+ %201 = fmul float %200, %179 ; [#uses=1]
+ %202 = fadd float %199, %201 ; [#uses=1]
+ %203 = load float* %75, align 4 ; [#uses=1]
+ %204 = fmul float %203, %183 ; [#uses=1]
+ %205 = fadd float %202, %204 ; [#uses=1]
+ %206 = load float* %79, align 4 ; [#uses=1]
+ %207 = fadd float %205, %206 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %207, float* %208, align 8
+ %209 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %197, float* %209, align 4
+ %210 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %187, float* %210, align 8
+ %211 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %211, align 4
+ %212 = load %struct.btActionInterface** %129, align 4 ; [#uses=1]
+ %213 = bitcast i32 (...)* %134 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %213(%struct.btActionInterface* %212, %struct.btQuadWord* %2, %struct.btQuadWord* %3, %struct.btQuadWord* %color)
+ %214 = load %struct.btDispatcherInfo** %10, align 4 ; [#uses=1]
+ %215 = getelementptr inbounds %struct.btDispatcherInfo* %214, i32 0, i32 5 ; [#uses=2]
+ %216 = load %struct.btActionInterface** %215, align 4 ; [#uses=1]
+ %217 = getelementptr inbounds %struct.btActionInterface* %216, i32 0, i32 0 ; [#uses=1]
+ %218 = load i32 (...)*** %217, align 4 ; [#uses=1]
+ %219 = getelementptr inbounds i32 (...)** %218, i32 2 ; [#uses=1]
+ %220 = load i32 (...)** %219, align 4 ; [#uses=1]
+ %221 = load float* %34, align 4 ; [#uses=1]
+ %222 = load float* %87, align 4 ; [#uses=3]
+ %223 = fmul float %221, %222 ; [#uses=1]
+ %224 = load float* %39, align 4 ; [#uses=1]
+ %225 = load float* %91, align 4 ; [#uses=3]
+ %226 = fmul float %224, %225 ; [#uses=1]
+ %227 = fadd float %223, %226 ; [#uses=1]
+ %228 = load float* %45, align 4 ; [#uses=1]
+ %229 = load float* %96, align 4 ; [#uses=3]
+ %230 = fmul float %228, %229 ; [#uses=1]
+ %231 = fadd float %227, %230 ; [#uses=1]
+ %232 = load float* %51, align 4 ; [#uses=1]
+ %233 = fadd float %231, %232 ; [#uses=1]
+ %234 = load float* %54, align 4 ; [#uses=1]
+ %235 = fmul float %234, %222 ; [#uses=1]
+ %236 = load float* %57, align 4 ; [#uses=1]
+ %237 = fmul float %236, %225 ; [#uses=1]
+ %238 = fadd float %235, %237 ; [#uses=1]
+ %239 = load float* %61, align 4 ; [#uses=1]
+ %240 = fmul float %239, %229 ; [#uses=1]
+ %241 = fadd float %238, %240 ; [#uses=1]
+ %242 = load float* %65, align 4 ; [#uses=1]
+ %243 = fadd float %241, %242 ; [#uses=1]
+ %244 = load float* %68, align 4 ; [#uses=1]
+ %245 = fmul float %244, %222 ; [#uses=1]
+ %246 = load float* %71, align 4 ; [#uses=1]
+ %247 = fmul float %246, %225 ; [#uses=1]
+ %248 = fadd float %245, %247 ; [#uses=1]
+ %249 = load float* %75, align 4 ; [#uses=1]
+ %250 = fmul float %249, %229 ; [#uses=1]
+ %251 = fadd float %248, %250 ; [#uses=1]
+ %252 = load float* %79, align 4 ; [#uses=1]
+ %253 = fadd float %251, %252 ; [#uses=1]
+ %254 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %253, float* %254, align 8
+ %255 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %243, float* %255, align 4
+ %256 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %233, float* %256, align 8
+ %257 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %257, align 4
+ %258 = load float* %34, align 4 ; [#uses=1]
+ %259 = load float* %136, align 4 ; [#uses=3]
+ %260 = fmul float %258, %259 ; [#uses=1]
+ %261 = load float* %39, align 4 ; [#uses=1]
+ %262 = load float* %140, align 4 ; [#uses=3]
+ %263 = fmul float %261, %262 ; [#uses=1]
+ %264 = fadd float %260, %263 ; [#uses=1]
+ %265 = load float* %45, align 4 ; [#uses=1]
+ %266 = load float* %145, align 4 ; [#uses=3]
+ %267 = fmul float %265, %266 ; [#uses=1]
+ %268 = fadd float %264, %267 ; [#uses=1]
+ %269 = load float* %51, align 4 ; [#uses=1]
+ %270 = fadd float %268, %269 ; [#uses=1]
+ %271 = load float* %54, align 4 ; [#uses=1]
+ %272 = fmul float %271, %259 ; [#uses=1]
+ %273 = load float* %57, align 4 ; [#uses=1]
+ %274 = fmul float %273, %262 ; [#uses=1]
+ %275 = fadd float %272, %274 ; [#uses=1]
+ %276 = load float* %61, align 4 ; [#uses=1]
+ %277 = fmul float %276, %266 ; [#uses=1]
+ %278 = fadd float %275, %277 ; [#uses=1]
+ %279 = load float* %65, align 4 ; [#uses=1]
+ %280 = fadd float %278, %279 ; [#uses=1]
+ %281 = load float* %68, align 4 ; [#uses=1]
+ %282 = fmul float %281, %259 ; [#uses=1]
+ %283 = load float* %71, align 4 ; [#uses=1]
+ %284 = fmul float %283, %262 ; [#uses=1]
+ %285 = fadd float %282, %284 ; [#uses=1]
+ %286 = load float* %75, align 4 ; [#uses=1]
+ %287 = fmul float %286, %266 ; [#uses=1]
+ %288 = fadd float %285, %287 ; [#uses=1]
+ %289 = load float* %79, align 4 ; [#uses=1]
+ %290 = fadd float %288, %289 ; [#uses=1]
+ %291 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %290, float* %291, align 8
+ %292 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %280, float* %292, align 4
+ %293 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %270, float* %293, align 8
+ %294 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %294, align 4
+ %295 = load %struct.btActionInterface** %215, align 4 ; [#uses=1]
+ %296 = bitcast i32 (...)* %220 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %296(%struct.btActionInterface* %295, %struct.btQuadWord* %0, %struct.btQuadWord* %1, %struct.btQuadWord* %color)
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb1, %bb, %entry
+ %297 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 1 ; [#uses=3]
+ %298 = load %struct.btCollisionObject** %297, align 4 ; [#uses=1]
+ %299 = getelementptr inbounds %struct.btCollisionObject* %298, i32 0, i32 9 ; [#uses=1]
+ %300 = load %struct.btCollisionShape** %299, align 4 ; [#uses=1]
+ %301 = getelementptr inbounds %struct.btCollisionShape* %300, i32 0, i32 1 ; [#uses=1]
+ %302 = load i32* %301, align 4 ; [#uses=1]
+ %303 = icmp slt i32 %302, 20 ; [#uses=1]
+ br i1 %303, label %bb12, label %return
+
+bb12: ; preds = %bb10
+ %304 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %304)
+ %305 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV15btTriangleShape, i32 0, i32 2), i32 (...)*** %305, align 8
+ %306 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %306, align 4
+ %307 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %308 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %309 = load float* %308, align 4 ; [#uses=1]
+ store float %309, float* %307, align 4
+ %310 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %311 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %312 = load float* %311, align 4 ; [#uses=1]
+ store float %312, float* %310, align 4
+ %313 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %314 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %315 = load float* %314, align 4 ; [#uses=1]
+ store float %315, float* %313, align 4
+ %316 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %317 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 3 ; [#uses=1]
+ %318 = load float* %317, align 4 ; [#uses=1]
+ store float %318, float* %316, align 4
+ %319 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %320 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %321 = load float* %320, align 4 ; [#uses=1]
+ store float %321, float* %319, align 4
+ %322 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %323 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %324 = load float* %323, align 4 ; [#uses=1]
+ store float %324, float* %322, align 4
+ %325 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %326 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %327 = load float* %326, align 4 ; [#uses=1]
+ store float %327, float* %325, align 4
+ %328 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %329 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 3 ; [#uses=1]
+ %330 = load float* %329, align 4 ; [#uses=1]
+ store float %330, float* %328, align 4
+ %331 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %332 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %333 = load float* %332, align 4 ; [#uses=1]
+ store float %333, float* %331, align 4
+ %334 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %335 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %336 = load float* %335, align 4 ; [#uses=1]
+ store float %336, float* %334, align 4
+ %337 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %338 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %339 = load float* %338, align 4 ; [#uses=1]
+ store float %339, float* %337, align 4
+ %340 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 1, i32 2, i32 0, i32 3 ; [#uses=1]
+ %341 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 3 ; [#uses=1]
+ %342 = load float* %341, align 4 ; [#uses=1]
+ store float %342, float* %340, align 4
+ %343 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 8 ; [#uses=1]
+ %344 = load float* %343, align 4 ; [#uses=1]
+ %345 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %344, float* %345, align 4
+ %346 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 9 ; [#uses=3]
+ %347 = load %struct.btCollisionShape** %346, align 4 ; [#uses=1]
+ %348 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store %struct.btCollisionShape* %348, %struct.btCollisionShape** %346, align 4
+ %349 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=2]
+ %350 = load i32 (...)*** %349, align 4 ; [#uses=1]
+ %351 = getelementptr inbounds i32 (...)** %350, i32 2 ; [#uses=1]
+ %352 = load i32 (...)** %351, align 4 ; [#uses=1]
+ %353 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 10 ; [#uses=1]
+ %354 = load %struct.btPersistentManifold** %353, align 4 ; [#uses=1]
+ %355 = load %struct.btCollisionObject** %8, align 4 ; [#uses=1]
+ %356 = load %struct.btCollisionObject** %297, align 4 ; [#uses=1]
+ %357 = bitcast i32 (...)* %352 to %struct.btCollisionAlgorithm* (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btPersistentManifold*)* ; [#uses=1]
+ %358 = invoke %struct.btCollisionAlgorithm* %357(%struct.btActionInterface* %7, %struct.btCollisionObject* %356, %struct.btCollisionObject* %355, %struct.btPersistentManifold* %354)
+ to label %invcont unwind label %lpad ; [#uses=4]
+
+invcont: ; preds = %bb12
+ %359 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 5 ; [#uses=2]
+ %360 = load %struct.btManifoldResult** %359, align 4 ; [#uses=4]
+ %361 = getelementptr inbounds %struct.btManifoldResult* %360, i32 0, i32 4 ; [#uses=1]
+ %362 = load %struct.btCollisionObject** %361, align 4 ; [#uses=1]
+ %363 = load %struct.btCollisionObject** %8, align 4 ; [#uses=1]
+ %364 = icmp eq %struct.btCollisionObject* %362, %363 ; [#uses=1]
+ %365 = getelementptr inbounds %struct.btManifoldResult* %360, i32 0, i32 0, i32 0 ; [#uses=1]
+ %366 = load i32 (...)*** %365, align 4 ; [#uses=2]
+ br i1 %364, label %bb14, label %bb16
+
+bb14: ; preds = %invcont
+ %367 = getelementptr inbounds i32 (...)** %366, i32 2 ; [#uses=1]
+ %368 = load i32 (...)** %367, align 4 ; [#uses=1]
+ %369 = bitcast i32 (...)* %368 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ invoke void %369(%struct.btManifoldResult* %360, i32 %partId, i32 %triangleIndex)
+ to label %bb18 unwind label %lpad
+
+bb16: ; preds = %invcont
+ %370 = getelementptr inbounds i32 (...)** %366, i32 3 ; [#uses=1]
+ %371 = load i32 (...)** %370, align 4 ; [#uses=1]
+ %372 = bitcast i32 (...)* %371 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ invoke void %372(%struct.btManifoldResult* %360, i32 %partId, i32 %triangleIndex)
+ to label %bb18 unwind label %lpad
+
+bb18: ; preds = %bb16, %bb14
+ %373 = getelementptr inbounds %struct.btCollisionAlgorithm* %358, i32 0, i32 0 ; [#uses=2]
+ %374 = load i32 (...)*** %373, align 4 ; [#uses=1]
+ %375 = getelementptr inbounds i32 (...)** %374, i32 2 ; [#uses=1]
+ %376 = load i32 (...)** %375, align 4 ; [#uses=1]
+ %377 = load %struct.btManifoldResult** %359, align 4 ; [#uses=1]
+ %378 = load %struct.btDispatcherInfo** %10, align 4 ; [#uses=1]
+ %379 = load %struct.btCollisionObject** %8, align 4 ; [#uses=1]
+ %380 = load %struct.btCollisionObject** %297, align 4 ; [#uses=1]
+ %381 = bitcast i32 (...)* %376 to void (%struct.btCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* ; [#uses=1]
+ invoke void %381(%struct.btCollisionAlgorithm* %358, %struct.btCollisionObject* %380, %struct.btCollisionObject* %379, %struct.btDispatcherInfo* %378, %struct.btManifoldResult* %377)
+ to label %invcont19 unwind label %lpad
+
+invcont19: ; preds = %bb18
+ %382 = load i32 (...)*** %373, align 4 ; [#uses=1]
+ %383 = load i32 (...)** %382, align 4 ; [#uses=1]
+ %384 = bitcast i32 (...)* %383 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ invoke void %384(%struct.btCollisionAlgorithm* %358)
+ to label %invcont20 unwind label %lpad
+
+invcont20: ; preds = %invcont19
+ %385 = load i32 (...)*** %349, align 4 ; [#uses=1]
+ %386 = getelementptr inbounds i32 (...)** %385, i32 13 ; [#uses=1]
+ %387 = load i32 (...)** %386, align 4 ; [#uses=1]
+ %388 = bitcast i32 (...)* %387 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %389 = bitcast %struct.btCollisionAlgorithm* %358 to i8* ; [#uses=1]
+ invoke void %388(%struct.btActionInterface* %7, i8* %389)
+ to label %invcont21 unwind label %lpad
+
+invcont21: ; preds = %invcont20
+ store %struct.btCollisionShape* %347, %struct.btCollisionShape** %346, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %305, align 8
+ %390 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %390)
+ ret void
+
+invcont23: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %bb10
+ ret void
+
+lpad: ; preds = %invcont20, %invcont19, %bb18, %bb16, %bb14, %bb12
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select27 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %305, align 8
+ %391 = getelementptr inbounds %struct.btTriangleShape* %tm, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %391)
+ to label %invcont23 unwind label %lpad28
+
+lpad28: ; preds = %lpad
+ %eh_ptr29 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select31 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr29, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define float @_ZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btConvexConcaveCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %body0, %struct.btCollisionObject* nocapture %body1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* nocapture %resultOut) align 2 {
+entry:
+ %rayAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %rayAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %raycastCallback = alloca %struct..0LocalTriangleSphereCastCallback, align 8 ; [#uses=37]
+ %0 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=2]
+ %iftmp.222.0 = select i1 %toBool, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=27]
+ %iftmp.223.0 = select i1 %toBool, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=13]
+ %2 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=4]
+ %6 = fsub float %3, %5 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=4]
+ %9 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=4]
+ %11 = fsub float %8, %10 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=4]
+ %14 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=4]
+ %16 = fsub float %13, %15 ; [#uses=2]
+ %17 = fmul float %16, %16 ; [#uses=1]
+ %18 = fmul float %11, %11 ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=1]
+ %20 = fmul float %6, %6 ; [#uses=1]
+ %21 = fadd float %19, %20 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 23 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=2]
+ %24 = fmul float %23, %23 ; [#uses=1]
+ %25 = fcmp ogt float %24, %21 ; [#uses=1]
+ br i1 %25, label %bb21, label %bb9
+
+bb9: ; preds = %entry
+ %26 = getelementptr inbounds %struct.btCollisionObject* %iftmp.223.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btCollisionObject* %iftmp.223.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btCollisionObject* %iftmp.223.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btCollisionObject* %iftmp.223.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btCollisionObject* %iftmp.223.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btCollisionObject* %iftmp.223.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btCollisionObject* %iftmp.223.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btCollisionObject* %iftmp.223.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btCollisionObject* %iftmp.223.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=9]
+ %36 = load float* %33, align 4 ; [#uses=9]
+ %37 = load float* %32, align 4 ; [#uses=9]
+ %38 = load float* %31, align 4 ; [#uses=9]
+ %39 = load float* %30, align 4 ; [#uses=9]
+ %40 = load float* %29, align 4 ; [#uses=9]
+ %41 = load float* %28, align 4 ; [#uses=9]
+ %42 = load float* %27, align 4 ; [#uses=9]
+ %43 = load float* %26, align 4 ; [#uses=9]
+ %44 = getelementptr inbounds %struct.btCollisionObject* %iftmp.223.0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fsub float -0.000000e+00, %45 ; [#uses=3]
+ %47 = getelementptr inbounds %struct.btCollisionObject* %iftmp.223.0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = fsub float -0.000000e+00, %48 ; [#uses=3]
+ %50 = getelementptr inbounds %struct.btCollisionObject* %iftmp.223.0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fsub float -0.000000e+00, %51 ; [#uses=3]
+ %53 = fmul float %41, %52 ; [#uses=1]
+ %54 = fmul float %42, %49 ; [#uses=1]
+ %55 = fadd float %53, %54 ; [#uses=1]
+ %56 = fmul float %43, %46 ; [#uses=1]
+ %57 = fadd float %55, %56 ; [#uses=2]
+ %58 = fmul float %38, %52 ; [#uses=1]
+ %59 = fmul float %39, %49 ; [#uses=1]
+ %60 = fadd float %58, %59 ; [#uses=1]
+ %61 = fmul float %40, %46 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=2]
+ %63 = fmul float %35, %52 ; [#uses=1]
+ %64 = fmul float %36, %49 ; [#uses=1]
+ %65 = fadd float %63, %64 ; [#uses=1]
+ %66 = fmul float %37, %46 ; [#uses=1]
+ %67 = fadd float %65, %66 ; [#uses=2]
+ %68 = fmul float %41, %15 ; [#uses=1]
+ %69 = fmul float %42, %10 ; [#uses=1]
+ %70 = fadd float %68, %69 ; [#uses=1]
+ %71 = fmul float %43, %5 ; [#uses=1]
+ %72 = fadd float %70, %71 ; [#uses=1]
+ %73 = fadd float %72, %57 ; [#uses=7]
+ %74 = fmul float %38, %15 ; [#uses=1]
+ %75 = fmul float %39, %10 ; [#uses=1]
+ %76 = fadd float %74, %75 ; [#uses=1]
+ %77 = fmul float %40, %5 ; [#uses=1]
+ %78 = fadd float %76, %77 ; [#uses=1]
+ %79 = fadd float %78, %62 ; [#uses=7]
+ %80 = fmul float %35, %15 ; [#uses=1]
+ %81 = fmul float %36, %10 ; [#uses=1]
+ %82 = fadd float %80, %81 ; [#uses=1]
+ %83 = fmul float %37, %5 ; [#uses=1]
+ %84 = fadd float %82, %83 ; [#uses=1]
+ %85 = fadd float %84, %67 ; [#uses=7]
+ %86 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=3]
+ %88 = fmul float %87, %41 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=3]
+ %91 = fmul float %90, %42 ; [#uses=1]
+ %92 = fadd float %88, %91 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=3]
+ %95 = fmul float %94, %43 ; [#uses=1]
+ %96 = fadd float %92, %95 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=3]
+ %99 = fmul float %98, %41 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=3]
+ %102 = fmul float %101, %42 ; [#uses=1]
+ %103 = fadd float %99, %102 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=3]
+ %106 = fmul float %105, %43 ; [#uses=1]
+ %107 = fadd float %103, %106 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=3]
+ %110 = fmul float %109, %41 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=3]
+ %113 = fmul float %112, %42 ; [#uses=1]
+ %114 = fadd float %110, %113 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %116 = load float* %115, align 4 ; [#uses=3]
+ %117 = fmul float %116, %43 ; [#uses=1]
+ %118 = fadd float %114, %117 ; [#uses=1]
+ %119 = fmul float %87, %38 ; [#uses=1]
+ %120 = fmul float %90, %39 ; [#uses=1]
+ %121 = fadd float %119, %120 ; [#uses=1]
+ %122 = fmul float %94, %40 ; [#uses=1]
+ %123 = fadd float %121, %122 ; [#uses=1]
+ %124 = fmul float %98, %38 ; [#uses=1]
+ %125 = fmul float %101, %39 ; [#uses=1]
+ %126 = fadd float %124, %125 ; [#uses=1]
+ %127 = fmul float %105, %40 ; [#uses=1]
+ %128 = fadd float %126, %127 ; [#uses=1]
+ %129 = fmul float %109, %38 ; [#uses=1]
+ %130 = fmul float %112, %39 ; [#uses=1]
+ %131 = fadd float %129, %130 ; [#uses=1]
+ %132 = fmul float %116, %40 ; [#uses=1]
+ %133 = fadd float %131, %132 ; [#uses=1]
+ %134 = fmul float %87, %35 ; [#uses=1]
+ %135 = fmul float %90, %36 ; [#uses=1]
+ %136 = fadd float %134, %135 ; [#uses=1]
+ %137 = fmul float %94, %37 ; [#uses=1]
+ %138 = fadd float %136, %137 ; [#uses=1]
+ %139 = fmul float %98, %35 ; [#uses=1]
+ %140 = fmul float %101, %36 ; [#uses=1]
+ %141 = fadd float %139, %140 ; [#uses=1]
+ %142 = fmul float %105, %37 ; [#uses=1]
+ %143 = fadd float %141, %142 ; [#uses=1]
+ %144 = fmul float %109, %35 ; [#uses=1]
+ %145 = fmul float %112, %36 ; [#uses=1]
+ %146 = fadd float %144, %145 ; [#uses=1]
+ %147 = fmul float %116, %37 ; [#uses=1]
+ %148 = fadd float %146, %147 ; [#uses=1]
+ %149 = fmul float %41, %13 ; [#uses=1]
+ %150 = fmul float %42, %8 ; [#uses=1]
+ %151 = fadd float %149, %150 ; [#uses=1]
+ %152 = fmul float %43, %3 ; [#uses=1]
+ %153 = fadd float %151, %152 ; [#uses=1]
+ %154 = fadd float %153, %57 ; [#uses=7]
+ %155 = fmul float %38, %13 ; [#uses=1]
+ %156 = fmul float %39, %8 ; [#uses=1]
+ %157 = fadd float %155, %156 ; [#uses=1]
+ %158 = fmul float %40, %3 ; [#uses=1]
+ %159 = fadd float %157, %158 ; [#uses=1]
+ %160 = fadd float %159, %62 ; [#uses=7]
+ %161 = fmul float %35, %13 ; [#uses=1]
+ %162 = fmul float %36, %8 ; [#uses=1]
+ %163 = fadd float %161, %162 ; [#uses=1]
+ %164 = fmul float %37, %3 ; [#uses=1]
+ %165 = fadd float %163, %164 ; [#uses=1]
+ %166 = fadd float %165, %67 ; [#uses=7]
+ %167 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %168 = load float* %167, align 4 ; [#uses=3]
+ %169 = fmul float %168, %41 ; [#uses=1]
+ %170 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %171 = load float* %170, align 4 ; [#uses=3]
+ %172 = fmul float %171, %42 ; [#uses=1]
+ %173 = fadd float %169, %172 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %175 = load float* %174, align 4 ; [#uses=3]
+ %176 = fmul float %175, %43 ; [#uses=1]
+ %177 = fadd float %173, %176 ; [#uses=1]
+ %178 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %179 = load float* %178, align 4 ; [#uses=3]
+ %180 = fmul float %179, %41 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %182 = load float* %181, align 4 ; [#uses=3]
+ %183 = fmul float %182, %42 ; [#uses=1]
+ %184 = fadd float %180, %183 ; [#uses=1]
+ %185 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %186 = load float* %185, align 4 ; [#uses=3]
+ %187 = fmul float %186, %43 ; [#uses=1]
+ %188 = fadd float %184, %187 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %190 = load float* %189, align 4 ; [#uses=3]
+ %191 = fmul float %190, %41 ; [#uses=1]
+ %192 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %193 = load float* %192, align 4 ; [#uses=3]
+ %194 = fmul float %193, %42 ; [#uses=1]
+ %195 = fadd float %191, %194 ; [#uses=1]
+ %196 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %197 = load float* %196, align 4 ; [#uses=3]
+ %198 = fmul float %197, %43 ; [#uses=1]
+ %199 = fadd float %195, %198 ; [#uses=1]
+ %200 = fmul float %168, %38 ; [#uses=1]
+ %201 = fmul float %171, %39 ; [#uses=1]
+ %202 = fadd float %200, %201 ; [#uses=1]
+ %203 = fmul float %175, %40 ; [#uses=1]
+ %204 = fadd float %202, %203 ; [#uses=1]
+ %205 = fmul float %179, %38 ; [#uses=1]
+ %206 = fmul float %182, %39 ; [#uses=1]
+ %207 = fadd float %205, %206 ; [#uses=1]
+ %208 = fmul float %186, %40 ; [#uses=1]
+ %209 = fadd float %207, %208 ; [#uses=1]
+ %210 = fmul float %190, %38 ; [#uses=1]
+ %211 = fmul float %193, %39 ; [#uses=1]
+ %212 = fadd float %210, %211 ; [#uses=1]
+ %213 = fmul float %197, %40 ; [#uses=1]
+ %214 = fadd float %212, %213 ; [#uses=1]
+ %215 = fmul float %168, %35 ; [#uses=1]
+ %216 = fmul float %171, %36 ; [#uses=1]
+ %217 = fadd float %215, %216 ; [#uses=1]
+ %218 = fmul float %175, %37 ; [#uses=1]
+ %219 = fadd float %217, %218 ; [#uses=1]
+ %220 = fmul float %179, %35 ; [#uses=1]
+ %221 = fmul float %182, %36 ; [#uses=1]
+ %222 = fadd float %220, %221 ; [#uses=1]
+ %223 = fmul float %186, %37 ; [#uses=1]
+ %224 = fadd float %222, %223 ; [#uses=1]
+ %225 = fmul float %190, %35 ; [#uses=1]
+ %226 = fmul float %193, %36 ; [#uses=1]
+ %227 = fadd float %225, %226 ; [#uses=1]
+ %228 = fmul float %197, %37 ; [#uses=1]
+ %229 = fadd float %227, %228 ; [#uses=1]
+ %230 = getelementptr inbounds %struct.btCollisionObject* %iftmp.223.0, i32 0, i32 9 ; [#uses=1]
+ %231 = load %struct.btCollisionShape** %230, align 4 ; [#uses=4]
+ %232 = getelementptr inbounds %struct.btCollisionShape* %231, i32 0, i32 1 ; [#uses=1]
+ %233 = load i32* %232, align 4 ; [#uses=1]
+ %234 = add i32 %233, -21 ; [#uses=1]
+ %235 = icmp ult i32 %234, 9 ; [#uses=1]
+ br i1 %235, label %bb11, label %bb21
+
+bb11: ; preds = %bb9
+ %236 = getelementptr inbounds %struct.btQuadWord* %rayAabbMin, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %85, float* %236, align 8
+ %237 = getelementptr inbounds %struct.btQuadWord* %rayAabbMin, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %79, float* %237, align 4
+ %238 = getelementptr inbounds %struct.btQuadWord* %rayAabbMin, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %73, float* %238, align 8
+ %239 = getelementptr inbounds %struct.btQuadWord* %rayAabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %239, align 4
+ %240 = fcmp olt float %166, %85 ; [#uses=1]
+ br i1 %240, label %bb.i.i32, label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+bb.i.i32: ; preds = %bb11
+ store float %166, float* %236, align 8
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i32, %bb11
+ %241 = phi float [ %166, %bb.i.i32 ], [ %85, %bb11 ] ; [#uses=1]
+ %242 = fcmp olt float %160, %79 ; [#uses=1]
+ br i1 %242, label %bb.i7.i33, label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+bb.i7.i33: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ store float %160, float* %237, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i33, %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ %243 = phi float [ %160, %bb.i7.i33 ], [ %79, %_Z8btSetMinIfEvRT_RKS0_.exit.i ] ; [#uses=1]
+ %244 = fcmp olt float %154, %73 ; [#uses=1]
+ br i1 %244, label %bb.i4.i34, label %_ZN9btVector36setMinERKS_.exit
+
+bb.i4.i34: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ store float %154, float* %238, align 8
+ br label %_ZN9btVector36setMinERKS_.exit
+
+_ZN9btVector36setMinERKS_.exit: ; preds = %bb.i4.i34, %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ %245 = phi float [ %154, %bb.i4.i34 ], [ %73, %_Z8btSetMinIfEvRT_RKS0_.exit9.i ] ; [#uses=1]
+ %246 = getelementptr inbounds %struct.btQuadWord* %rayAabbMax, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %85, float* %246, align 8
+ %247 = getelementptr inbounds %struct.btQuadWord* %rayAabbMax, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %79, float* %247, align 4
+ %248 = getelementptr inbounds %struct.btQuadWord* %rayAabbMax, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %73, float* %248, align 8
+ %249 = getelementptr inbounds %struct.btQuadWord* %rayAabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %249, align 4
+ %250 = fcmp olt float %85, %166 ; [#uses=1]
+ br i1 %250, label %bb.i.i, label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+bb.i.i: ; preds = %_ZN9btVector36setMinERKS_.exit
+ store float %166, float* %246, align 8
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i, %_ZN9btVector36setMinERKS_.exit
+ %251 = phi float [ %166, %bb.i.i ], [ %85, %_ZN9btVector36setMinERKS_.exit ] ; [#uses=1]
+ %252 = fcmp olt float %79, %160 ; [#uses=1]
+ br i1 %252, label %bb.i7.i, label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+bb.i7.i: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ store float %160, float* %247, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i, %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ %253 = phi float [ %160, %bb.i7.i ], [ %79, %_Z8btSetMaxIfEvRT_RKS0_.exit.i ] ; [#uses=1]
+ %254 = fcmp olt float %73, %154 ; [#uses=1]
+ br i1 %254, label %bb.i4.i, label %_ZN9btVector36setMaxERKS_.exit
+
+bb.i4.i: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ store float %154, float* %248, align 8
+ br label %_ZN9btVector36setMaxERKS_.exit
+
+_ZN9btVector36setMaxERKS_.exit: ; preds = %bb.i4.i, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ %255 = phi float [ %154, %bb.i4.i ], [ %73, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i ] ; [#uses=1]
+ %256 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 22 ; [#uses=1]
+ %257 = load float* %256, align 4 ; [#uses=7]
+ %258 = fsub float %241, %257 ; [#uses=1]
+ store float %258, float* %236, align 8
+ %259 = fsub float %243, %257 ; [#uses=1]
+ store float %259, float* %237, align 4
+ %260 = fsub float %245, %257 ; [#uses=1]
+ store float %260, float* %238, align 8
+ %261 = fadd float %251, %257 ; [#uses=1]
+ store float %261, float* %246, align 8
+ %262 = fadd float %253, %257 ; [#uses=1]
+ store float %262, float* %247, align 4
+ %263 = fadd float %255, %257 ; [#uses=1]
+ store float %263, float* %248, align 8
+ %264 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback, i32 0, i32 2), i32 (...)*** %264, align 8
+ %265 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %148, float* %265, align 4
+ %266 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %143, float* %266, align 4
+ %267 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %138, float* %267, align 4
+ %268 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %268, align 4
+ %269 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %133, float* %269, align 4
+ %270 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %128, float* %270, align 4
+ %271 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %123, float* %271, align 4
+ %272 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %272, align 4
+ %273 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %118, float* %273, align 4
+ %274 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %107, float* %274, align 4
+ %275 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %96, float* %275, align 4
+ %276 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %276, align 4
+ %277 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %85, float* %277, align 4
+ %278 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %79, float* %278, align 4
+ %279 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %73, float* %279, align 4
+ %280 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %280, align 4
+ %281 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %229, float* %281, align 4
+ %282 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %224, float* %282, align 4
+ %283 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %219, float* %283, align 4
+ %284 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %284, align 4
+ %285 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %214, float* %285, align 4
+ %286 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %209, float* %286, align 4
+ %287 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %204, float* %287, align 4
+ %288 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %288, align 4
+ %289 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %199, float* %289, align 4
+ %290 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %188, float* %290, align 4
+ %291 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %177, float* %291, align 4
+ %292 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %292, align 4
+ %293 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %166, float* %293, align 4
+ %294 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %160, float* %294, align 4
+ %295 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %154, float* %295, align 4
+ %296 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %296, align 4
+ %297 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 4 ; [#uses=1]
+ store float %257, float* %297, align 4
+ %298 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 5 ; [#uses=2]
+ %299 = getelementptr inbounds %struct.btCollisionObject* %iftmp.222.0, i32 0, i32 21 ; [#uses=3]
+ %300 = load float* %299, align 4 ; [#uses=1]
+ store float %300, float* %298, align 8
+ %301 = icmp eq %struct.btCollisionShape* %231, null ; [#uses=1]
+ br i1 %301, label %bb20, label %bb12
+
+bb12: ; preds = %_ZN9btVector36setMaxERKS_.exit
+ %302 = bitcast %struct.btCollisionShape* %231 to %struct.btConcaveShape* ; [#uses=1]
+ %303 = getelementptr inbounds %struct.btCollisionShape* %231, i32 0, i32 0 ; [#uses=1]
+ %304 = load i32 (...)*** %303, align 4 ; [#uses=1]
+ %305 = getelementptr inbounds i32 (...)** %304, i32 15 ; [#uses=1]
+ %306 = load i32 (...)** %305, align 4 ; [#uses=1]
+ %307 = bitcast i32 (...)* %306 to void (%struct.btConcaveShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %308 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 0 ; [#uses=2]
+ invoke void %307(%struct.btConcaveShape* %302, %struct.btActionInterface* %308, %struct.btQuadWord* %rayAabbMin, %struct.btQuadWord* %rayAabbMax)
+ to label %bb13 unwind label %lpad
+
+bb13: ; preds = %bb12
+ %.pre = load float* %298, align 8 ; [#uses=3]
+ %.pre68 = load float* %299, align 4 ; [#uses=1]
+ %309 = fcmp olt float %.pre, %.pre68 ; [#uses=1]
+ br i1 %309, label %bb15, label %bb20
+
+bb15: ; preds = %bb13
+ store float %.pre, float* %299, align 4
+ br label %bb20
+
+invcont18: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb20: ; preds = %bb15, %bb13, %_ZN9btVector36setMaxERKS_.exit
+ %finally_tmp.238.0 = phi float [ %.pre, %bb15 ], [ 1.000000e+00, %bb13 ], [ 1.000000e+00, %_ZN9btVector36setMaxERKS_.exit ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback, i32 0, i32 2), i32 (...)*** %264, align 8
+ %310 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %raycastCallback, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %310)
+ ret float %finally_tmp.238.0
+
+bb21: ; preds = %bb9, %entry
+ ret float 1.000000e+00
+
+lpad: ; preds = %bb12
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select25 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback, i32 0, i32 2), i32 (...)*** %264, align 8
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %308)
+ to label %invcont18 unwind label %lpad26
+
+lpad26: ; preds = %lpad
+ %eh_ptr27 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultEN31LocalTriangleSphereCastCallbackD2Ev(%struct..0LocalTriangleSphereCastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN33btConvexConcaveCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResultE31LocalTriangleSphereCastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0LocalTriangleSphereCastCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN24btConvexTriangleCallbackD0Ev(%struct.btConvexTriangleCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btConvexTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 6 ; [#uses=2]
+ %2 = load %struct.btActionInterface** %1, align 4 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btActionInterface* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32 (...)** %4, i32 5 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 10 ; [#uses=2]
+ %8 = load %struct.btPersistentManifold** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %6 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %9(%struct.btActionInterface* %2, %struct.btPersistentManifold* %8)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %10 = load %struct.btActionInterface** %1, align 4 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btActionInterface* %10, i32 0, i32 0 ; [#uses=1]
+ %12 = load i32 (...)*** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 4 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = load %struct.btPersistentManifold** %7, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %14 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %16(%struct.btActionInterface* %10, %struct.btPersistentManifold* %15)
+ to label %bb4 unwind label %lpad
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb4: ; preds = %invcont
+ %17 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %17)
+ %18 = bitcast %struct.btConvexTriangleCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %18) nounwind
+ ret void
+
+lpad: ; preds = %invcont, %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select9 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %19 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %19)
+ to label %invcont2 unwind label %lpad10
+
+lpad10: ; preds = %lpad
+ %eh_ptr11 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select13 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=4]
+define void @_ZN24btConvexTriangleCallbackD1Ev(%struct.btConvexTriangleCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btConvexTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 6 ; [#uses=2]
+ %2 = load %struct.btActionInterface** %1, align 4 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btActionInterface* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32 (...)** %4, i32 5 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 10 ; [#uses=2]
+ %8 = load %struct.btPersistentManifold** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %6 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %9(%struct.btActionInterface* %2, %struct.btPersistentManifold* %8)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %10 = load %struct.btActionInterface** %1, align 4 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btActionInterface* %10, i32 0, i32 0 ; [#uses=1]
+ %12 = load i32 (...)*** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 4 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = load %struct.btPersistentManifold** %7, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %14 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %16(%struct.btActionInterface* %10, %struct.btPersistentManifold* %15)
+ to label %bb4 unwind label %lpad
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb4: ; preds = %invcont
+ %17 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %17)
+ ret void
+
+lpad: ; preds = %invcont, %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select9 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %18 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %18)
+ to label %invcont2 unwind label %lpad10
+
+lpad10: ; preds = %lpad
+ %eh_ptr11 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select13 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN24btConvexTriangleCallbackD2Ev(%struct.btConvexTriangleCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btConvexTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 6 ; [#uses=2]
+ %2 = load %struct.btActionInterface** %1, align 4 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btActionInterface* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32 (...)** %4, i32 5 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 10 ; [#uses=2]
+ %8 = load %struct.btPersistentManifold** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %6 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %9(%struct.btActionInterface* %2, %struct.btPersistentManifold* %8)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %10 = load %struct.btActionInterface** %1, align 4 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btActionInterface* %10, i32 0, i32 0 ; [#uses=1]
+ %12 = load i32 (...)*** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 4 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = load %struct.btPersistentManifold** %7, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %14 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %16(%struct.btActionInterface* %10, %struct.btPersistentManifold* %15)
+ to label %bb4 unwind label %lpad
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb4: ; preds = %invcont
+ %17 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %17)
+ ret void
+
+lpad: ; preds = %invcont, %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select9 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %18 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %18)
+ to label %invcont2 unwind label %lpad10
+
+lpad10: ; preds = %lpad
+ %eh_ptr11 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select13 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN24btConvexTriangleCallbackC2EP12btDispatcherP17btCollisionObjectS3_b(%struct.btConvexTriangleCallback* %this, %struct.btActionInterface* %dispatcher, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext %isSwapped) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btConvexTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 6 ; [#uses=2]
+ store %struct.btActionInterface* %dispatcher, %struct.btActionInterface** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 7 ; [#uses=1]
+ store %struct.btDispatcherInfo* null, %struct.btDispatcherInfo** %2, align 4
+ %toBool = icmp eq i8 %isSwapped, 0 ; [#uses=2]
+ %iftmp.204.0 = select i1 %toBool, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btCollisionObject* %iftmp.204.0, %struct.btCollisionObject** %3, align 4
+ %iftmp.205.0 = select i1 %toBool, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionObject* %iftmp.205.0, %struct.btCollisionObject** %4, align 4
+ %5 = getelementptr inbounds %struct.btActionInterface* %dispatcher, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 3 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %10 = bitcast %struct.btCollisionObject* %iftmp.204.0 to i8* ; [#uses=1]
+ %11 = bitcast %struct.btCollisionObject* %iftmp.205.0 to i8* ; [#uses=1]
+ %12 = invoke %struct.btPersistentManifold* %9(%struct.btActionInterface* %dispatcher, i8* %10, i8* %11)
+ to label %invcont unwind label %lpad ; [#uses=2]
+
+invcont: ; preds = %entry
+ %13 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 10 ; [#uses=1]
+ store %struct.btPersistentManifold* %12, %struct.btPersistentManifold** %13, align 4
+ %14 = load %struct.btActionInterface** %1, align 4 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btActionInterface* %14, i32 0, i32 0 ; [#uses=1]
+ %16 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds i32 (...)** %16, i32 5 ; [#uses=1]
+ %18 = load i32 (...)** %17, align 4 ; [#uses=1]
+ %19 = bitcast i32 (...)* %18 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %19(%struct.btActionInterface* %14, %struct.btPersistentManifold* %12)
+ to label %return unwind label %lpad
+
+invcont9: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %invcont
+ ret void
+
+lpad: ; preds = %invcont, %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select13 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %20 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %20)
+ to label %invcont9 unwind label %lpad14
+
+lpad14: ; preds = %lpad
+ %eh_ptr15 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr15, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN24btConvexTriangleCallbackC1EP12btDispatcherP17btCollisionObjectS3_b(%struct.btConvexTriangleCallback* %this, %struct.btActionInterface* %dispatcher, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext %isSwapped) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btConvexTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 6 ; [#uses=2]
+ store %struct.btActionInterface* %dispatcher, %struct.btActionInterface** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 7 ; [#uses=1]
+ store %struct.btDispatcherInfo* null, %struct.btDispatcherInfo** %2, align 4
+ %toBool.i = icmp eq i8 %isSwapped, 0 ; [#uses=2]
+ %iftmp.204.0.i = select i1 %toBool.i, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btCollisionObject* %iftmp.204.0.i, %struct.btCollisionObject** %3, align 4
+ %iftmp.205.0.i = select i1 %toBool.i, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionObject* %iftmp.205.0.i, %struct.btCollisionObject** %4, align 4
+ %5 = getelementptr inbounds %struct.btActionInterface* %dispatcher, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 3 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %10 = bitcast %struct.btCollisionObject* %iftmp.204.0.i to i8* ; [#uses=1]
+ %11 = bitcast %struct.btCollisionObject* %iftmp.205.0.i to i8* ; [#uses=1]
+ %12 = invoke %struct.btPersistentManifold* %9(%struct.btActionInterface* %dispatcher, i8* %10, i8* %11)
+ to label %invcont.i unwind label %lpad.i ; [#uses=2]
+
+invcont.i: ; preds = %entry
+ %13 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 10 ; [#uses=1]
+ store %struct.btPersistentManifold* %12, %struct.btPersistentManifold** %13, align 4
+ %14 = load %struct.btActionInterface** %1, align 4 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btActionInterface* %14, i32 0, i32 0 ; [#uses=1]
+ %16 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds i32 (...)** %16, i32 5 ; [#uses=1]
+ %18 = load i32 (...)** %17, align 4 ; [#uses=1]
+ %19 = bitcast i32 (...)* %18 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %19(%struct.btActionInterface* %14, %struct.btPersistentManifold* %12)
+ to label %_ZN24btConvexTriangleCallbackC2EP12btDispatcherP17btCollisionObjectS3_b.exit unwind label %lpad.i
+
+invcont9.i: ; preds = %lpad.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ unreachable
+
+lpad.i: ; preds = %invcont.i, %entry
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select13.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %20 = getelementptr inbounds %struct.btConvexTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %20)
+ to label %invcont9.i unwind label %lpad14.i
+
+lpad14.i: ; preds = %lpad.i
+ %eh_ptr15.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select17.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr15.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN24btConvexTriangleCallbackC2EP12btDispatcherP17btCollisionObjectS3_b.exit: ; preds = %invcont.i
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN33btConvexConcaveCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btConvexConcaveCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btDispatcherInfo* %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=2]
+ %iftmp.213.0 = select i1 %toBool, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=2]
+ %iftmp.214.0 = select i1 %toBool, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btCollisionObject* %iftmp.214.0, i32 0, i32 9 ; [#uses=1]
+ %3 = load %struct.btCollisionShape** %2, align 4 ; [#uses=3]
+ %4 = getelementptr inbounds %struct.btCollisionShape* %3, i32 0, i32 1 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = add i32 %5, -21 ; [#uses=1]
+ %7 = icmp ult i32 %6, 9 ; [#uses=1]
+ br i1 %7, label %bb8, label %_ZN16btManifoldResult20refreshContactPointsEv.exit
+
+bb8: ; preds = %entry
+ %8 = bitcast %struct.btCollisionShape* %3 to %struct.btConcaveShape* ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btCollisionObject* %iftmp.213.0, i32 0, i32 9 ; [#uses=1]
+ %10 = load %struct.btCollisionShape** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCollisionShape* %10, i32 0, i32 1 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %13 = icmp slt i32 %12, 20 ; [#uses=1]
+ br i1 %13, label %bb10, label %_ZN16btManifoldResult20refreshContactPointsEv.exit
+
+bb10: ; preds = %bb8
+ %14 = getelementptr inbounds %struct.btCollisionShape* %3, i32 0, i32 0 ; [#uses=2]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32 (...)** %15, i32 11 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = bitcast i32 (...)* %17 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %19 = tail call float %18(%struct.btConcaveShape* %8) ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 10 ; [#uses=2]
+ %21 = load %struct.btPersistentManifold** %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 1 ; [#uses=2]
+ store %struct.btPersistentManifold* %21, %struct.btPersistentManifold** %22, align 4
+ %23 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ tail call void @_ZN24btConvexTriangleCallback22setTimeStepAndCountersEfRK16btDispatcherInfoP16btManifoldResult(%struct.btConvexTriangleCallback* %23, float %19, %struct.btDispatcherInfo* %dispatchInfo, %struct.btManifoldResult* %resultOut)
+ %24 = load %struct.btPersistentManifold** %20, align 4 ; [#uses=2]
+ %25 = bitcast %struct.btCollisionObject* %iftmp.213.0 to i8* ; [#uses=1]
+ %26 = bitcast %struct.btCollisionObject* %iftmp.214.0 to i8* ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btPersistentManifold* %24, i32 0, i32 2 ; [#uses=1]
+ store i8* %25, i8** %27, align 4
+ %28 = getelementptr inbounds %struct.btPersistentManifold* %24, i32 0, i32 3 ; [#uses=1]
+ store i8* %26, i8** %28, align 4
+ %29 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds i32 (...)** %29, i32 15 ; [#uses=1]
+ %31 = load i32 (...)** %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ %35 = bitcast i32 (...)* %31 to void (%struct.btConcaveShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %35(%struct.btConcaveShape* %8, %struct.btActionInterface* %34, %struct.btQuadWord* %33, %struct.btQuadWord* %32)
+ %36 = load %struct.btPersistentManifold** %22, align 4 ; [#uses=4]
+ %37 = getelementptr inbounds %struct.btPersistentManifold* %36, i32 0, i32 4 ; [#uses=1]
+ %38 = load i32* %37, align 4 ; [#uses=1]
+ %39 = icmp eq i32 %38, 0 ; [#uses=1]
+ br i1 %39, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb.i
+
+bb.i: ; preds = %bb10
+ %40 = getelementptr inbounds %struct.btPersistentManifold* %36, i32 0, i32 2 ; [#uses=1]
+ %41 = load i8** %40, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 4 ; [#uses=1]
+ %43 = load %struct.btCollisionObject** %42, align 4 ; [#uses=1]
+ %44 = bitcast %struct.btCollisionObject* %43 to i8* ; [#uses=1]
+ %45 = icmp eq i8* %41, %44 ; [#uses=1]
+ br i1 %45, label %bb3.i, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %46 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ tail call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %36, %struct.btTransform* %47, %struct.btTransform* %46)
+ ret void
+
+bb3.i: ; preds = %bb.i
+ %48 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ tail call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %36, %struct.btTransform* %49, %struct.btTransform* %48)
+ ret void
+
+_ZN16btManifoldResult20refreshContactPointsEv.exit: ; preds = %bb10, %bb8, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN33btConvexConcaveCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(%struct.btConvexConcaveCollisionAlgorithm* nocapture %this, %"struct.btAlignedObjectArray<btPersistentManifold*>"* nocapture %manifoldArray) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 10 ; [#uses=2]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, %struct.btPersistentManifold** %0) inlinehint
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN33btConvexConcaveCollisionAlgorithmD0Ev(%struct.btConvexConcaveCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV33btConvexConcaveCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ invoke void @_ZN24btConvexTriangleCallbackD1Ev(%struct.btConvexTriangleCallback* %1)
+ to label %bb3 unwind label %lpad
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %2)
+ %3 = bitcast %struct.btConvexConcaveCollisionAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %3) nounwind
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %4 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %4)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN33btConvexConcaveCollisionAlgorithmD1Ev(%struct.btConvexConcaveCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV33btConvexConcaveCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ invoke void @_ZN24btConvexTriangleCallbackD1Ev(%struct.btConvexTriangleCallback* %1)
+ to label %bb3 unwind label %lpad
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %2)
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %3 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %3)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN33btConvexConcaveCollisionAlgorithmD2Ev(%struct.btConvexConcaveCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV33btConvexConcaveCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ invoke void @_ZN24btConvexTriangleCallbackD1Ev(%struct.btConvexTriangleCallback* %1)
+ to label %bb3 unwind label %lpad
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %2)
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %3 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %3)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=2]
+define void @_ZN33btConvexConcaveCollisionAlgorithmC1ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_b(%struct.btConvexConcaveCollisionAlgorithm* %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext %isSwapped) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ %1 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV33btConvexConcaveCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ store i8 %isSwapped, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.btActionInterface** %3, align 4 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btConvexTriangleCallback, i32 0, i32 2), i32 (...)*** %5, align 4
+ %6 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 6 ; [#uses=2]
+ store %struct.btActionInterface* %4, %struct.btActionInterface** %6, align 4
+ %7 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 7 ; [#uses=1]
+ store %struct.btDispatcherInfo* null, %struct.btDispatcherInfo** %7, align 4
+ %toBool.i.i = icmp eq i8 %isSwapped, 0 ; [#uses=2]
+ %iftmp.204.0.i.i = select i1 %toBool.i.i, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store %struct.btCollisionObject* %iftmp.204.0.i.i, %struct.btCollisionObject** %8, align 4
+ %iftmp.205.0.i.i = select i1 %toBool.i.i, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store %struct.btCollisionObject* %iftmp.205.0.i.i, %struct.btCollisionObject** %9, align 4
+ %10 = getelementptr inbounds %struct.btActionInterface* %4, i32 0, i32 0 ; [#uses=1]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 3 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %15 = bitcast %struct.btCollisionObject* %iftmp.204.0.i.i to i8* ; [#uses=1]
+ %16 = bitcast %struct.btCollisionObject* %iftmp.205.0.i.i to i8* ; [#uses=1]
+ %17 = invoke %struct.btPersistentManifold* %14(%struct.btActionInterface* %4, i8* %15, i8* %16)
+ to label %invcont.i.i unwind label %lpad.i.i ; [#uses=2]
+
+invcont.i.i: ; preds = %entry
+ %18 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 10 ; [#uses=1]
+ store %struct.btPersistentManifold* %17, %struct.btPersistentManifold** %18, align 4
+ %19 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btActionInterface* %19, i32 0, i32 0 ; [#uses=1]
+ %21 = load i32 (...)*** %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds i32 (...)** %21, i32 5 ; [#uses=1]
+ %23 = load i32 (...)** %22, align 4 ; [#uses=1]
+ %24 = bitcast i32 (...)* %23 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %24(%struct.btActionInterface* %19, %struct.btPersistentManifold* %17)
+ to label %return unwind label %lpad.i.i
+
+invcont9.i.i: ; preds = %lpad.i.i
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i.i)
+ to label %.noexc unwind label %lpad
+
+.noexc: ; preds = %invcont9.i.i
+ unreachable
+
+lpad.i.i: ; preds = %invcont.i.i, %entry
+ %eh_ptr.i.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select13.i.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %25 = getelementptr inbounds %struct.btConvexConcaveCollisionAlgorithm* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %25)
+ to label %invcont9.i.i unwind label %lpad14.i.i
+
+lpad14.i.i: ; preds = %lpad.i.i
+ %eh_ptr15.i.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select17.i.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr15.i.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %invcont.i.i
+ ret void
+
+lpad: ; preds = %invcont9.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select5 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %0)
+ to label %invcont1 unwind label %lpad6
+
+lpad6: ; preds = %lpad
+ %eh_ptr7 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select9 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr7, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN23btConvexConvexAlgorithm10CreateFuncC2EP22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* nocapture %this, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %pdSolver) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i8 0, i8* %1, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN23btConvexConvexAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %2 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 3, i32* %3, align 4
+ %4 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %4, align 4
+ %5 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %pdSolver, %struct.btActionInterface** %5, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN30btCollisionAlgorithmCreateFuncD1Ev(%struct.btCollisionAlgorithmCreateFunc* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btCollisionAlgorithmCreateFunc, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN30btCollisionAlgorithmCreateFuncD0Ev(%struct.btCollisionAlgorithmCreateFunc* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btCollisionAlgorithmCreateFunc, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btCollisionAlgorithmCreateFunc* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr noalias %struct.btCollisionAlgorithm* @_ZN30btCollisionAlgorithmCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS3_(%struct.btCollisionAlgorithmCreateFunc* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* nocapture %unnamed_arg, %struct.btCollisionObject* nocapture %body0, %struct.btCollisionObject* nocapture %body1) nounwind readnone align 2 {
+entry:
+ ret %struct.btCollisionAlgorithm* null
+}
+
+; [#uses=1]
+define void @_ZN23btConvexConvexAlgorithm10CreateFuncD1Ev(%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN23btConvexConvexAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btConvexConvexAlgorithm10CreateFuncD0Ev(%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN23btConvexConvexAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionAlgorithm* @_ZN23btConvexConvexAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i8* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %7 = tail call i8* %6(%struct.btActionInterface* %1, i32 36) ; [#uses=11]
+ %8 = icmp eq i8* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %9 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 4 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 3 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 1 ; [#uses=1]
+ %14 = load %struct.btActionInterface** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 2 ; [#uses=1]
+ %16 = load %struct.btVoronoiSimplexSolver** %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 1 ; [#uses=1]
+ %18 = load %struct.btPersistentManifold** %17, align 4 ; [#uses=1]
+ %19 = bitcast i8* %7 to %struct.btActivatingCollisionAlgorithm* ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %19, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ to label %_ZN23btConvexConvexAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolverii.exit unwind label %lpad
+
+_ZN23btConvexConvexAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolverii.exit: ; preds = %bb
+ %20 = bitcast i8* %7 to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV23btConvexConvexAlgorithm, i32 0, i32 2), i32 (...)*** %20, align 4
+ %21 = getelementptr inbounds i8* %7, i32 8 ; [#uses=1]
+ %22 = bitcast i8* %21 to %struct.btVoronoiSimplexSolver** ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %16, %struct.btVoronoiSimplexSolver** %22, align 4
+ %23 = getelementptr inbounds i8* %7, i32 12 ; [#uses=1]
+ %24 = bitcast i8* %23 to %struct.btActionInterface** ; [#uses=1]
+ store %struct.btActionInterface* %14, %struct.btActionInterface** %24, align 4
+ %25 = getelementptr inbounds i8* %7, i32 16 ; [#uses=1]
+ store i8 0, i8* %25, align 4
+ %26 = getelementptr inbounds i8* %7, i32 20 ; [#uses=1]
+ %27 = bitcast i8* %26 to %struct.btPersistentManifold** ; [#uses=1]
+ store %struct.btPersistentManifold* %18, %struct.btPersistentManifold** %27, align 4
+ %28 = getelementptr inbounds i8* %7, i32 24 ; [#uses=1]
+ store i8 0, i8* %28, align 4
+ %29 = getelementptr inbounds i8* %7, i32 28 ; [#uses=1]
+ %30 = bitcast i8* %29 to i32* ; [#uses=1]
+ store i32 %12, i32* %30, align 4
+ %31 = getelementptr inbounds i8* %7, i32 32 ; [#uses=1]
+ %32 = bitcast i8* %31 to i32* ; [#uses=1]
+ store i32 %10, i32* %32, align 4
+ br label %bb4
+
+bb4: ; preds = %_ZN23btConvexConvexAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolverii.exit, %entry
+ %iftmp.161.0 = bitcast i8* %7 to %struct.btCollisionAlgorithm* ; [#uses=1]
+ ret %struct.btCollisionAlgorithm* %iftmp.161.0
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN23btConvexConvexAlgorithm10CreateFuncC1EP22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* nocapture %this, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %pdSolver) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i8 0, i8* %1, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN23btConvexConvexAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %2 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 3, i32* %3, align 4
+ %4 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %4, align 4
+ %5 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %pdSolver, %struct.btActionInterface** %5, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btConvexConvexAlgorithm19setLowLevelOfDetailEb(%struct.btConvex2dConvex2dAlgorithm* nocapture %this, i8 zeroext %useLowLevel) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ store i8 %useLowLevel, i8* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN24btPerturbedContactResultD1Ev(%struct.btPerturbedContactResult* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV24btPerturbedContactResult, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN24btPerturbedContactResultD0Ev(%struct.btPerturbedContactResult* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV24btPerturbedContactResult, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btPerturbedContactResult* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN24btPerturbedContactResult15addContactPointERK9btVector3S2_f(%struct.btPerturbedContactResult* nocapture %this, %struct.btQuadWord* %normalOnBInWorld, %struct.btQuadWord* nocapture %pointInWorld, float %orgDepth) align 2 {
+entry:
+ %startPt = alloca %struct.btQuadWord, align 8 ; [#uses=9]
+ %0 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 5 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ %4 = fmul float %3, %orgDepth ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=4]
+ %7 = fmul float %6, %orgDepth ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=4]
+ %10 = fmul float %9, %orgDepth ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=5]
+ %13 = fadd float %12, %4 ; [#uses=4]
+ %14 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=5]
+ %16 = fadd float %15, %7 ; [#uses=4]
+ %17 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=5]
+ %19 = fadd float %18, %10 ; [#uses=4]
+ br i1 %toBool, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %20 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=4]
+ %30 = load float* %27, align 4 ; [#uses=4]
+ %31 = load float* %26, align 4 ; [#uses=4]
+ %32 = load float* %25, align 4 ; [#uses=4]
+ %33 = load float* %24, align 4 ; [#uses=4]
+ %34 = load float* %23, align 4 ; [#uses=4]
+ %35 = load float* %22, align 4 ; [#uses=4]
+ %36 = load float* %21, align 4 ; [#uses=4]
+ %37 = load float* %20, align 4 ; [#uses=4]
+ %38 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fsub float -0.000000e+00, %39 ; [#uses=3]
+ %41 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = fsub float -0.000000e+00, %42 ; [#uses=3]
+ %44 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fsub float -0.000000e+00, %45 ; [#uses=3]
+ %47 = fmul float %35, %46 ; [#uses=1]
+ %48 = fmul float %36, %43 ; [#uses=1]
+ %49 = fadd float %47, %48 ; [#uses=1]
+ %50 = fmul float %37, %40 ; [#uses=1]
+ %51 = fadd float %49, %50 ; [#uses=3]
+ %52 = fmul float %32, %46 ; [#uses=1]
+ %53 = fmul float %33, %43 ; [#uses=1]
+ %54 = fadd float %52, %53 ; [#uses=1]
+ %55 = fmul float %34, %40 ; [#uses=1]
+ %56 = fadd float %54, %55 ; [#uses=3]
+ %57 = fmul float %29, %46 ; [#uses=1]
+ %58 = fmul float %30, %43 ; [#uses=1]
+ %59 = fadd float %57, %58 ; [#uses=1]
+ %60 = fmul float %31, %40 ; [#uses=1]
+ %61 = fadd float %59, %60 ; [#uses=3]
+ %62 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=4]
+ %64 = fmul float %63, %61 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=4]
+ %67 = fmul float %66, %56 ; [#uses=1]
+ %68 = fadd float %64, %67 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=4]
+ %71 = fmul float %70, %51 ; [#uses=1]
+ %72 = fadd float %68, %71 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = fadd float %72, %74 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=4]
+ %78 = fmul float %77, %61 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=4]
+ %81 = fmul float %80, %56 ; [#uses=1]
+ %82 = fadd float %78, %81 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=4]
+ %85 = fmul float %84, %51 ; [#uses=1]
+ %86 = fadd float %82, %85 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = fadd float %86, %88 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=4]
+ %92 = fmul float %91, %61 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=4]
+ %95 = fmul float %94, %56 ; [#uses=1]
+ %96 = fadd float %92, %95 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=4]
+ %99 = fmul float %98, %51 ; [#uses=1]
+ %100 = fadd float %96, %99 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fadd float %100, %102 ; [#uses=1]
+ %104 = fmul float %31, %63 ; [#uses=1]
+ %105 = fmul float %34, %66 ; [#uses=1]
+ %106 = fadd float %104, %105 ; [#uses=1]
+ %107 = fmul float %37, %70 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fmul float %30, %63 ; [#uses=1]
+ %110 = fmul float %33, %66 ; [#uses=1]
+ %111 = fadd float %109, %110 ; [#uses=1]
+ %112 = fmul float %36, %70 ; [#uses=1]
+ %113 = fadd float %111, %112 ; [#uses=1]
+ %114 = fmul float %29, %63 ; [#uses=1]
+ %115 = fmul float %32, %66 ; [#uses=1]
+ %116 = fadd float %114, %115 ; [#uses=1]
+ %117 = fmul float %35, %70 ; [#uses=1]
+ %118 = fadd float %116, %117 ; [#uses=1]
+ %119 = fmul float %31, %77 ; [#uses=1]
+ %120 = fmul float %34, %80 ; [#uses=1]
+ %121 = fadd float %119, %120 ; [#uses=1]
+ %122 = fmul float %37, %84 ; [#uses=1]
+ %123 = fadd float %121, %122 ; [#uses=1]
+ %124 = fmul float %30, %77 ; [#uses=1]
+ %125 = fmul float %33, %80 ; [#uses=1]
+ %126 = fadd float %124, %125 ; [#uses=1]
+ %127 = fmul float %36, %84 ; [#uses=1]
+ %128 = fadd float %126, %127 ; [#uses=1]
+ %129 = fmul float %29, %77 ; [#uses=1]
+ %130 = fmul float %32, %80 ; [#uses=1]
+ %131 = fadd float %129, %130 ; [#uses=1]
+ %132 = fmul float %35, %84 ; [#uses=1]
+ %133 = fadd float %131, %132 ; [#uses=1]
+ %134 = fmul float %31, %91 ; [#uses=1]
+ %135 = fmul float %34, %94 ; [#uses=1]
+ %136 = fadd float %134, %135 ; [#uses=1]
+ %137 = fmul float %37, %98 ; [#uses=1]
+ %138 = fadd float %136, %137 ; [#uses=1]
+ %139 = fmul float %30, %91 ; [#uses=1]
+ %140 = fmul float %33, %94 ; [#uses=1]
+ %141 = fadd float %139, %140 ; [#uses=1]
+ %142 = fmul float %36, %98 ; [#uses=1]
+ %143 = fadd float %141, %142 ; [#uses=1]
+ %144 = fmul float %29, %91 ; [#uses=1]
+ %145 = fmul float %32, %94 ; [#uses=1]
+ %146 = fadd float %144, %145 ; [#uses=1]
+ %147 = fmul float %35, %98 ; [#uses=1]
+ %148 = fadd float %146, %147 ; [#uses=1]
+ %149 = fmul float %118, %19 ; [#uses=1]
+ %150 = fmul float %113, %16 ; [#uses=1]
+ %151 = fadd float %149, %150 ; [#uses=1]
+ %152 = fmul float %108, %13 ; [#uses=1]
+ %153 = fadd float %151, %152 ; [#uses=1]
+ %154 = fadd float %153, %75 ; [#uses=2]
+ %155 = fmul float %133, %19 ; [#uses=1]
+ %156 = fmul float %128, %16 ; [#uses=1]
+ %157 = fadd float %155, %156 ; [#uses=1]
+ %158 = fmul float %123, %13 ; [#uses=1]
+ %159 = fadd float %157, %158 ; [#uses=1]
+ %160 = fadd float %159, %89 ; [#uses=2]
+ %161 = fmul float %148, %19 ; [#uses=1]
+ %162 = fmul float %143, %16 ; [#uses=1]
+ %163 = fadd float %161, %162 ; [#uses=1]
+ %164 = fmul float %138, %13 ; [#uses=1]
+ %165 = fadd float %163, %164 ; [#uses=1]
+ %166 = fadd float %165, %103 ; [#uses=2]
+ %167 = fsub float %154, %12 ; [#uses=1]
+ %168 = fsub float %160, %15 ; [#uses=1]
+ %169 = fsub float %166, %18 ; [#uses=1]
+ %170 = fmul float %169, %9 ; [#uses=1]
+ %171 = fmul float %168, %6 ; [#uses=1]
+ %172 = fadd float %170, %171 ; [#uses=1]
+ %173 = fmul float %167, %3 ; [#uses=1]
+ %174 = fadd float %172, %173 ; [#uses=4]
+ %175 = fmul float %3, %174 ; [#uses=1]
+ %176 = fmul float %6, %174 ; [#uses=1]
+ %177 = fmul float %9, %174 ; [#uses=1]
+ %178 = fadd float %154, %175 ; [#uses=1]
+ %179 = fadd float %160, %176 ; [#uses=1]
+ %180 = fadd float %166, %177 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.btQuadWord* %startPt, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %180, float* %181, align 8
+ %182 = getelementptr inbounds %struct.btQuadWord* %startPt, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %179, float* %182, align 4
+ %183 = getelementptr inbounds %struct.btQuadWord* %startPt, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %178, float* %183, align 8
+ %184 = getelementptr inbounds %struct.btQuadWord* %startPt, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %184, align 4
+ br label %bb5
+
+bb2: ; preds = %entry
+ %185 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %187 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %188 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %191 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %192 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %193 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %194 = load float* %193, align 4 ; [#uses=4]
+ %195 = load float* %192, align 4 ; [#uses=4]
+ %196 = load float* %191, align 4 ; [#uses=4]
+ %197 = load float* %190, align 4 ; [#uses=4]
+ %198 = load float* %189, align 4 ; [#uses=4]
+ %199 = load float* %188, align 4 ; [#uses=4]
+ %200 = load float* %187, align 4 ; [#uses=4]
+ %201 = load float* %186, align 4 ; [#uses=4]
+ %202 = load float* %185, align 4 ; [#uses=4]
+ %203 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %204 = load float* %203, align 4 ; [#uses=1]
+ %205 = fsub float -0.000000e+00, %204 ; [#uses=3]
+ %206 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %207 = load float* %206, align 4 ; [#uses=1]
+ %208 = fsub float -0.000000e+00, %207 ; [#uses=3]
+ %209 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %210 = load float* %209, align 4 ; [#uses=1]
+ %211 = fsub float -0.000000e+00, %210 ; [#uses=3]
+ %212 = fmul float %200, %211 ; [#uses=1]
+ %213 = fmul float %201, %208 ; [#uses=1]
+ %214 = fadd float %212, %213 ; [#uses=1]
+ %215 = fmul float %202, %205 ; [#uses=1]
+ %216 = fadd float %214, %215 ; [#uses=3]
+ %217 = fmul float %197, %211 ; [#uses=1]
+ %218 = fmul float %198, %208 ; [#uses=1]
+ %219 = fadd float %217, %218 ; [#uses=1]
+ %220 = fmul float %199, %205 ; [#uses=1]
+ %221 = fadd float %219, %220 ; [#uses=3]
+ %222 = fmul float %194, %211 ; [#uses=1]
+ %223 = fmul float %195, %208 ; [#uses=1]
+ %224 = fadd float %222, %223 ; [#uses=1]
+ %225 = fmul float %196, %205 ; [#uses=1]
+ %226 = fadd float %224, %225 ; [#uses=3]
+ %227 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %228 = load float* %227, align 4 ; [#uses=4]
+ %229 = fmul float %228, %226 ; [#uses=1]
+ %230 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %231 = load float* %230, align 4 ; [#uses=4]
+ %232 = fmul float %231, %221 ; [#uses=1]
+ %233 = fadd float %229, %232 ; [#uses=1]
+ %234 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %235 = load float* %234, align 4 ; [#uses=4]
+ %236 = fmul float %235, %216 ; [#uses=1]
+ %237 = fadd float %233, %236 ; [#uses=1]
+ %238 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %239 = load float* %238, align 4 ; [#uses=1]
+ %240 = fadd float %237, %239 ; [#uses=1]
+ %241 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %242 = load float* %241, align 4 ; [#uses=4]
+ %243 = fmul float %242, %226 ; [#uses=1]
+ %244 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %245 = load float* %244, align 4 ; [#uses=4]
+ %246 = fmul float %245, %221 ; [#uses=1]
+ %247 = fadd float %243, %246 ; [#uses=1]
+ %248 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %249 = load float* %248, align 4 ; [#uses=4]
+ %250 = fmul float %249, %216 ; [#uses=1]
+ %251 = fadd float %247, %250 ; [#uses=1]
+ %252 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %253 = load float* %252, align 4 ; [#uses=1]
+ %254 = fadd float %251, %253 ; [#uses=1]
+ %255 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %256 = load float* %255, align 4 ; [#uses=4]
+ %257 = fmul float %256, %226 ; [#uses=1]
+ %258 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %259 = load float* %258, align 4 ; [#uses=4]
+ %260 = fmul float %259, %221 ; [#uses=1]
+ %261 = fadd float %257, %260 ; [#uses=1]
+ %262 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %263 = load float* %262, align 4 ; [#uses=4]
+ %264 = fmul float %263, %216 ; [#uses=1]
+ %265 = fadd float %261, %264 ; [#uses=1]
+ %266 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %267 = load float* %266, align 4 ; [#uses=1]
+ %268 = fadd float %265, %267 ; [#uses=1]
+ %269 = fmul float %196, %228 ; [#uses=1]
+ %270 = fmul float %199, %231 ; [#uses=1]
+ %271 = fadd float %269, %270 ; [#uses=1]
+ %272 = fmul float %202, %235 ; [#uses=1]
+ %273 = fadd float %271, %272 ; [#uses=1]
+ %274 = fmul float %195, %228 ; [#uses=1]
+ %275 = fmul float %198, %231 ; [#uses=1]
+ %276 = fadd float %274, %275 ; [#uses=1]
+ %277 = fmul float %201, %235 ; [#uses=1]
+ %278 = fadd float %276, %277 ; [#uses=1]
+ %279 = fmul float %194, %228 ; [#uses=1]
+ %280 = fmul float %197, %231 ; [#uses=1]
+ %281 = fadd float %279, %280 ; [#uses=1]
+ %282 = fmul float %200, %235 ; [#uses=1]
+ %283 = fadd float %281, %282 ; [#uses=1]
+ %284 = fmul float %196, %242 ; [#uses=1]
+ %285 = fmul float %199, %245 ; [#uses=1]
+ %286 = fadd float %284, %285 ; [#uses=1]
+ %287 = fmul float %202, %249 ; [#uses=1]
+ %288 = fadd float %286, %287 ; [#uses=1]
+ %289 = fmul float %195, %242 ; [#uses=1]
+ %290 = fmul float %198, %245 ; [#uses=1]
+ %291 = fadd float %289, %290 ; [#uses=1]
+ %292 = fmul float %201, %249 ; [#uses=1]
+ %293 = fadd float %291, %292 ; [#uses=1]
+ %294 = fmul float %194, %242 ; [#uses=1]
+ %295 = fmul float %197, %245 ; [#uses=1]
+ %296 = fadd float %294, %295 ; [#uses=1]
+ %297 = fmul float %200, %249 ; [#uses=1]
+ %298 = fadd float %296, %297 ; [#uses=1]
+ %299 = fmul float %196, %256 ; [#uses=1]
+ %300 = fmul float %199, %259 ; [#uses=1]
+ %301 = fadd float %299, %300 ; [#uses=1]
+ %302 = fmul float %202, %263 ; [#uses=1]
+ %303 = fadd float %301, %302 ; [#uses=1]
+ %304 = fmul float %195, %256 ; [#uses=1]
+ %305 = fmul float %198, %259 ; [#uses=1]
+ %306 = fadd float %304, %305 ; [#uses=1]
+ %307 = fmul float %201, %263 ; [#uses=1]
+ %308 = fadd float %306, %307 ; [#uses=1]
+ %309 = fmul float %194, %256 ; [#uses=1]
+ %310 = fmul float %197, %259 ; [#uses=1]
+ %311 = fadd float %309, %310 ; [#uses=1]
+ %312 = fmul float %200, %263 ; [#uses=1]
+ %313 = fadd float %311, %312 ; [#uses=1]
+ %314 = fmul float %283, %18 ; [#uses=1]
+ %315 = fmul float %278, %15 ; [#uses=1]
+ %316 = fadd float %314, %315 ; [#uses=1]
+ %317 = fmul float %273, %12 ; [#uses=1]
+ %318 = fadd float %316, %317 ; [#uses=1]
+ %319 = fadd float %318, %240 ; [#uses=2]
+ %320 = fmul float %298, %18 ; [#uses=1]
+ %321 = fmul float %293, %15 ; [#uses=1]
+ %322 = fadd float %320, %321 ; [#uses=1]
+ %323 = fmul float %288, %12 ; [#uses=1]
+ %324 = fadd float %322, %323 ; [#uses=1]
+ %325 = fadd float %324, %254 ; [#uses=2]
+ %326 = fmul float %313, %18 ; [#uses=1]
+ %327 = fmul float %308, %15 ; [#uses=1]
+ %328 = fadd float %326, %327 ; [#uses=1]
+ %329 = fmul float %303, %12 ; [#uses=1]
+ %330 = fadd float %328, %329 ; [#uses=1]
+ %331 = fadd float %330, %268 ; [#uses=2]
+ %332 = getelementptr inbounds %struct.btQuadWord* %startPt, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %331, float* %332, align 8
+ %333 = getelementptr inbounds %struct.btQuadWord* %startPt, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %325, float* %333, align 4
+ %334 = getelementptr inbounds %struct.btQuadWord* %startPt, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %319, float* %334, align 8
+ %335 = getelementptr inbounds %struct.btQuadWord* %startPt, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %335, align 4
+ %336 = fsub float %13, %319 ; [#uses=1]
+ %337 = fsub float %16, %325 ; [#uses=1]
+ %338 = fsub float %19, %331 ; [#uses=1]
+ %339 = fmul float %338, %9 ; [#uses=1]
+ %340 = fmul float %337, %6 ; [#uses=1]
+ %341 = fadd float %339, %340 ; [#uses=1]
+ %342 = fmul float %336, %3 ; [#uses=1]
+ %343 = fadd float %341, %342 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb2, %bb
+ %newDepth.0 = phi float [ %343, %bb2 ], [ %174, %bb ] ; [#uses=1]
+ %344 = getelementptr inbounds %struct.btPerturbedContactResult* %this, i32 0, i32 1 ; [#uses=1]
+ %345 = load %struct.btManifoldResult** %344, align 4 ; [#uses=2]
+ %346 = getelementptr inbounds %struct.btManifoldResult* %345, i32 0, i32 0, i32 0 ; [#uses=1]
+ %347 = load i32 (...)*** %346, align 4 ; [#uses=1]
+ %348 = getelementptr inbounds i32 (...)** %347, i32 4 ; [#uses=1]
+ %349 = load i32 (...)** %348, align 4 ; [#uses=1]
+ %350 = bitcast i32 (...)* %349 to void (%struct.btManifoldResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %350(%struct.btManifoldResult* %345, %struct.btQuadWord* %normalOnBInWorld, %struct.btQuadWord* %startPt, float %newDepth.0)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btConvexConvexAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(%struct.btConvex2dConvex2dAlgorithm* nocapture %this, %"struct.btAlignedObjectArray<btPersistentManifold*>"* nocapture %manifoldArray) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=2]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb1
+
+bb1: ; preds = %bb
+ tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, %struct.btPersistentManifold** %0) inlinehint
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btConvexConvexAlgorithm10CreateFuncD2Ev(%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN23btConvexConvexAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define float @_ZN23btConvexConvexAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btConvex2dConvex2dAlgorithm* nocapture %this, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* nocapture %resultOut) align 2 {
+entry:
+ %sphere1 = alloca %struct.btPolyhedralConvexShape, align 8 ; [#uses=6]
+ %result = alloca %"struct.btConvexCast::CastResult", align 8 ; [#uses=5]
+ %voronoiSimplex = alloca %struct.btVoronoiSimplexSolver, align 8 ; [#uses=3]
+ %ccd1 = alloca %struct.btGjkConvexCast, align 8 ; [#uses=6]
+ %sphere0 = alloca %struct.btPolyhedralConvexShape, align 8 ; [#uses=6]
+ %result31 = alloca %"struct.btConvexCast::CastResult", align 8 ; [#uses=5]
+ %voronoiSimplex32 = alloca %struct.btVoronoiSimplexSolver, align 8 ; [#uses=3]
+ %ccd133 = alloca %struct.btGjkConvexCast, align 8 ; [#uses=6]
+ %0 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fsub float %1, %3 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fsub float %6, %8 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fsub float %11, %13 ; [#uses=2]
+ %15 = fmul float %14, %14 ; [#uses=1]
+ %16 = fmul float %9, %9 ; [#uses=1]
+ %17 = fadd float %15, %16 ; [#uses=1]
+ %18 = fmul float %4, %4 ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fsub float %21, %23 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fsub float %26, %28 ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fsub float %31, %33 ; [#uses=2]
+ %35 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 23 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = fmul float %36, %36 ; [#uses=1]
+ %38 = fcmp ule float %37, %19 ; [#uses=1]
+ br i1 %38, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %39 = fmul float %29, %29 ; [#uses=1]
+ %40 = fmul float %34, %34 ; [#uses=1]
+ %41 = fmul float %24, %24 ; [#uses=1]
+ %42 = fadd float %40, %39 ; [#uses=1]
+ %43 = fadd float %42, %41 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 23 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=2]
+ %46 = fmul float %45, %45 ; [#uses=1]
+ %47 = fcmp ule float %46, %43 ; [#uses=1]
+ %48 = load i8* @disableCcd, align 1 ; [#uses=1]
+ %toBool6 = icmp eq i8 %48, 0 ; [#uses=1]
+ %or.cond = and i1 %47, %toBool6 ; [#uses=1]
+ br i1 %or.cond, label %invcont, label %bb59
+
+bb2: ; preds = %entry
+ %.old = load i8* @disableCcd, align 1 ; [#uses=1]
+ %toBool6.old = icmp eq i8 %.old, 0 ; [#uses=1]
+ br i1 %toBool6.old, label %invcont, label %bb59
+
+invcont: ; preds = %bb2, %bb
+ %49 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 9 ; [#uses=1]
+ %50 = load %struct.btCollisionShape** %49, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 22 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=2]
+ %53 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere1, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %53)
+ %54 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btSphereShape, i32 0, i32 2), i32 (...)*** %54, align 8
+ %55 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 8, i32* %55, align 4
+ %56 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %52, float* %56, align 4
+ %57 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %52, float* %57, align 4
+ %58 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN12btConvexCast10CastResultE, i32 0, i32 2), i32 (...)*** %58, align 8
+ %59 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 5 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %59, align 4
+ %60 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %60, align 8
+ %61 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %voronoiSimplex, i32 0, i32 8 ; [#uses=1]
+ store float 0x3F1A36E2E0000000, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %voronoiSimplex, i32 0, i32 10, i32 1, i32 0 ; [#uses=2]
+ %64 = load i8* %63, align 4 ; [#uses=1]
+ %65 = and i8 %64, -16 ; [#uses=1]
+ store i8 %65, i8* %63, align 4
+ %66 = bitcast %struct.btCollisionShape* %50 to %struct.btConvexShape* ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere1, i32 0, i32 0, i32 0 ; [#uses=3]
+ invoke void @_ZN15btGjkConvexCastC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolver(%struct.btGjkConvexCast* %ccd1, %struct.btConvexShape* %66, %struct.btConvexShape* %67, %struct.btVoronoiSimplexSolver* %voronoiSimplex)
+ to label %invcont9 unwind label %lpad
+
+invcont9: ; preds = %invcont
+ %68 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 2 ; [#uses=2]
+ %69 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 1 ; [#uses=2]
+ %70 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 2 ; [#uses=2]
+ %71 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 1 ; [#uses=2]
+ %72 = invoke zeroext i8 @_ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(%struct.btGjkConvexCast* %ccd1, %struct.btTransform* %71, %struct.btTransform* %70, %struct.btTransform* %69, %struct.btTransform* %68, %"struct.btConvexCast::CastResult"* %result)
+ to label %invcont10 unwind label %lpad63 ; [#uses=1]
+
+invcont10: ; preds = %invcont9
+ %toBool11 = icmp eq i8 %72, 0 ; [#uses=1]
+ br i1 %toBool11, label %bb23, label %bb12
+
+bb12: ; preds = %invcont10
+ %73 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 21 ; [#uses=2]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = load float* %59, align 4 ; [#uses=6]
+ %76 = fcmp ogt float %74, %75 ; [#uses=1]
+ br i1 %76, label %bb14, label %bb15
+
+bb14: ; preds = %bb12
+ store float %75, float* %73, align 4
+ br label %bb15
+
+bb15: ; preds = %bb14, %bb12
+ %77 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 21 ; [#uses=2]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ %79 = fcmp ogt float %78, %75 ; [#uses=1]
+ br i1 %79, label %bb17, label %bb18
+
+bb17: ; preds = %bb15
+ store float %75, float* %77, align 4
+ br label %bb18
+
+bb18: ; preds = %bb17, %bb15
+ %80 = fcmp olt float %75, 1.000000e+00 ; [#uses=1]
+ br i1 %80, label %bb19, label %bb23
+
+bb19: ; preds = %bb18
+ br label %bb23
+
+bb23: ; preds = %bb19, %bb18, %invcont10
+ %resultFraction.0 = phi float [ %75, %bb19 ], [ 1.000000e+00, %bb18 ], [ 1.000000e+00, %invcont10 ] ; [#uses=3]
+ %81 = getelementptr inbounds %struct.btGjkConvexCast* %ccd1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV15btGjkConvexCast, i32 0, i32 2), i32 (...)*** %81, align 8
+ %82 = getelementptr inbounds %struct.btGjkConvexCast* %ccd1, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %82)
+ to label %invcont34 unwind label %lpad
+
+invcont34: ; preds = %bb23
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %54, align 8
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %67)
+ %83 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 9 ; [#uses=1]
+ %84 = load %struct.btCollisionShape** %83, align 4 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 22 ; [#uses=1]
+ %86 = load float* %85, align 4 ; [#uses=2]
+ %87 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %87)
+ %88 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btSphereShape, i32 0, i32 2), i32 (...)*** %88, align 8
+ %89 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 8, i32* %89, align 4
+ %90 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %86, float* %90, align 4
+ %91 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %86, float* %91, align 4
+ %92 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result31, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN12btConvexCast10CastResultE, i32 0, i32 2), i32 (...)*** %92, align 8
+ %93 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result31, i32 0, i32 5 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %93, align 4
+ %94 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result31, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %94, align 8
+ %95 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result31, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %95, align 4
+ %96 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %voronoiSimplex32, i32 0, i32 8 ; [#uses=1]
+ store float 0x3F1A36E2E0000000, float* %96, align 4
+ %97 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %voronoiSimplex32, i32 0, i32 10, i32 1, i32 0 ; [#uses=2]
+ %98 = load i8* %97, align 4 ; [#uses=1]
+ %99 = and i8 %98, -16 ; [#uses=1]
+ store i8 %99, i8* %97, align 4
+ %100 = bitcast %struct.btCollisionShape* %84 to %struct.btConvexShape* ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere0, i32 0, i32 0, i32 0 ; [#uses=3]
+ invoke void @_ZN15btGjkConvexCastC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolver(%struct.btGjkConvexCast* %ccd133, %struct.btConvexShape* %101, %struct.btConvexShape* %100, %struct.btVoronoiSimplexSolver* %voronoiSimplex32)
+ to label %invcont35 unwind label %lpad75
+
+invcont35: ; preds = %invcont34
+ %102 = invoke zeroext i8 @_ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(%struct.btGjkConvexCast* %ccd133, %struct.btTransform* %71, %struct.btTransform* %70, %struct.btTransform* %69, %struct.btTransform* %68, %"struct.btConvexCast::CastResult"* %result31)
+ to label %invcont36 unwind label %lpad79 ; [#uses=1]
+
+invcont36: ; preds = %invcont35
+ %toBool37 = icmp eq i8 %102, 0 ; [#uses=1]
+ br i1 %toBool37, label %bb51, label %bb38
+
+bb38: ; preds = %invcont36
+ %103 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 21 ; [#uses=2]
+ %104 = load float* %103, align 4 ; [#uses=1]
+ %105 = load float* %93, align 4 ; [#uses=6]
+ %106 = fcmp ogt float %104, %105 ; [#uses=1]
+ br i1 %106, label %bb40, label %bb41
+
+bb40: ; preds = %bb38
+ store float %105, float* %103, align 4
+ br label %bb41
+
+bb41: ; preds = %bb40, %bb38
+ %107 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 21 ; [#uses=2]
+ %108 = load float* %107, align 4 ; [#uses=1]
+ %109 = fcmp ogt float %108, %105 ; [#uses=1]
+ br i1 %109, label %bb43, label %bb44
+
+bb43: ; preds = %bb41
+ store float %105, float* %107, align 4
+ br label %bb44
+
+bb44: ; preds = %bb43, %bb41
+ %110 = fcmp olt float %105, %resultFraction.0 ; [#uses=1]
+ br i1 %110, label %bb45, label %bb51
+
+bb45: ; preds = %bb44
+ br label %bb51
+
+bb51: ; preds = %bb45, %bb44, %invcont36
+ %resultFraction.1 = phi float [ %105, %bb45 ], [ %resultFraction.0, %bb44 ], [ %resultFraction.0, %invcont36 ] ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btGjkConvexCast* %ccd133, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV15btGjkConvexCast, i32 0, i32 2), i32 (...)*** %111, align 8
+ %112 = getelementptr inbounds %struct.btGjkConvexCast* %ccd133, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %112)
+ to label %bb58 unwind label %lpad75
+
+bb58: ; preds = %bb51
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %88, align 8
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %101)
+ ret float %resultFraction.1
+
+bb59: ; preds = %bb2, %bb
+ ret float 1.000000e+00
+
+lpad: ; preds = %bb23, %invcont
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select62 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad63: ; preds = %invcont9
+ %eh_ptr64 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select66 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr64, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %113 = getelementptr inbounds %struct.btGjkConvexCast* %ccd1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV15btGjkConvexCast, i32 0, i32 2), i32 (...)*** %113, align 8
+ %114 = getelementptr inbounds %struct.btGjkConvexCast* %ccd1, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %114)
+ to label %ppad unwind label %lpad67
+
+lpad67: ; preds = %lpad63
+ %eh_ptr68 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select70 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr68, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad71: ; preds = %ppad
+ %eh_ptr72 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select74 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr72, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad75: ; preds = %bb51, %invcont34
+ %eh_ptr76 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select78 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr76, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad94
+
+lpad79: ; preds = %invcont35
+ %eh_ptr80 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select82 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr80, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %115 = getelementptr inbounds %struct.btGjkConvexCast* %ccd133, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV15btGjkConvexCast, i32 0, i32 2), i32 (...)*** %115, align 8
+ %116 = getelementptr inbounds %struct.btGjkConvexCast* %ccd133, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %116)
+ to label %ppad94 unwind label %lpad83
+
+lpad83: ; preds = %lpad79
+ %eh_ptr84 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select86 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr84, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad87: ; preds = %ppad94
+ %eh_ptr88 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select90 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr88, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %lpad63, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr64, %lpad63 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %54, align 8
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %67)
+ to label %Unwind unwind label %lpad71
+
+ppad94: ; preds = %lpad79, %lpad75
+ %eh_exception.2 = phi i8* [ %eh_ptr76, %lpad75 ], [ %eh_ptr80, %lpad79 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %88, align 8
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %101)
+ to label %Unwind unwind label %lpad87
+
+Unwind: ; preds = %ppad94, %ppad
+ %eh_exception.1 = phi i8* [ %eh_exception.0, %ppad ], [ %eh_exception.2, %ppad94 ] ; [#uses=1]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.1)
+ unreachable
+}
+
+; [#uses=30]
+declare float @sinf(float) nounwind readonly
+
+; [#uses=31]
+declare float @cosf(float) nounwind readonly
+
+; [#uses=1]
+define void @_ZN23btConvexConvexAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btConvex2dConvex2dAlgorithm* nocapture %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %normalOnB = alloca %struct.btQuadWord, align 8 ; [#uses=11]
+ %pointOnBWorld = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %input = alloca %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput", align 8 ; [#uses=36]
+ %gjkPairDetector = alloca %struct.btGjkPairDetector, align 8 ; [#uses=8]
+ %perturbedResultOut = alloca %struct.btPerturbedContactResult, align 8 ; [#uses=53]
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=4]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load %struct.btActionInterface** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btActionInterface* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 3 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %10 = bitcast %struct.btCollisionObject* %body0 to i8* ; [#uses=1]
+ %11 = bitcast %struct.btCollisionObject* %body1 to i8* ; [#uses=1]
+ %12 = call %struct.btPersistentManifold* %9(%struct.btActionInterface* %4, i8* %10, i8* %11) ; [#uses=2]
+ store %struct.btPersistentManifold* %12, %struct.btPersistentManifold** %0, align 4
+ %13 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 1, i8* %13, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %14 = phi %struct.btPersistentManifold* [ %12, %bb ], [ %1, %entry ] ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 1 ; [#uses=4]
+ store %struct.btPersistentManifold* %14, %struct.btPersistentManifold** %15, align 4
+ %16 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 9 ; [#uses=1]
+ %17 = load %struct.btCollisionShape** %16, align 4 ; [#uses=8]
+ %18 = bitcast %struct.btCollisionShape* %17 to %struct.btConvexShape* ; [#uses=3]
+ %19 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 9 ; [#uses=1]
+ %20 = load %struct.btCollisionShape** %19, align 4 ; [#uses=8]
+ %21 = bitcast %struct.btCollisionShape* %20 to %struct.btConvexShape* ; [#uses=3]
+ %22 = getelementptr inbounds %struct.btCollisionShape* %17, i32 0, i32 1 ; [#uses=1]
+ %23 = load i32* %22, align 4 ; [#uses=1]
+ %24 = icmp eq i32 %23, 10 ; [#uses=1]
+ br i1 %24, label %bb2, label %bb4
+
+bb2: ; preds = %bb1
+ %25 = getelementptr inbounds %struct.btCollisionShape* %20, i32 0, i32 1 ; [#uses=1]
+ %26 = load i32* %25, align 4 ; [#uses=1]
+ %27 = icmp eq i32 %26, 10 ; [#uses=1]
+ br i1 %27, label %bb6, label %bb4
+
+bb4: ; preds = %bb2, %bb1
+ %28 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 2 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %28, align 8
+ %29 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 3 ; [#uses=2]
+ store %struct.btStackAlloc* null, %struct.btStackAlloc** %29, align 4
+ %30 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %31 = load %struct.btActionInterface** %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %33 = load %struct.btVoronoiSimplexSolver** %32, align 4 ; [#uses=1]
+ call void @_ZN17btGjkPairDetectorC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btGjkPairDetector* %gjkPairDetector, %struct.btConvexShape* %18, %struct.btConvexShape* %21, %struct.btVoronoiSimplexSolver* %33, %struct.btActionInterface* %31)
+ %34 = getelementptr inbounds %struct.btGjkPairDetector* %gjkPairDetector, i32 0, i32 4 ; [#uses=1]
+ store %struct.btConvexShape* %18, %struct.btConvexShape** %34, align 4
+ %35 = getelementptr inbounds %struct.btGjkPairDetector* %gjkPairDetector, i32 0, i32 5 ; [#uses=1]
+ store %struct.btConvexShape* %21, %struct.btConvexShape** %35, align 8
+ %36 = getelementptr inbounds %struct.btDispatcherInfo* %dispatchInfo, i32 0, i32 12 ; [#uses=1]
+ %37 = load i8* %36, align 4 ; [#uses=1]
+ %toBool10 = icmp eq i8 %37, 0 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btCollisionShape* %17, i32 0, i32 0 ; [#uses=2]
+ %39 = load i32 (...)*** %38, align 4 ; [#uses=1]
+ %40 = getelementptr inbounds i32 (...)** %39, i32 11 ; [#uses=1]
+ %41 = load i32 (...)** %40, align 4 ; [#uses=1]
+ %42 = bitcast i32 (...)* %41 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %43 = call float %42(%struct.btConvexShape* %18) ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btCollisionShape* %20, i32 0, i32 0 ; [#uses=2]
+ %45 = load i32 (...)*** %44, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds i32 (...)** %45, i32 11 ; [#uses=1]
+ %47 = load i32 (...)** %46, align 4 ; [#uses=1]
+ %48 = bitcast i32 (...)* %47 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %49 = call float %48(%struct.btConvexShape* %21) ; [#uses=1]
+ %50 = fadd float %43, %49 ; [#uses=1]
+ %51 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=2]
+ br i1 %toBool10, label %bb12, label %bb11
+
+bb6: ; preds = %bb2
+ %52 = bitcast %struct.btCollisionShape* %17 to %struct.btCapsuleShape* ; [#uses=2]
+ %53 = bitcast %struct.btCollisionShape* %20 to %struct.btCapsuleShape* ; [#uses=2]
+ %54 = getelementptr inbounds %struct.btCollisionShape* %17, i32 0, i32 0 ; [#uses=1]
+ %55 = load i32 (...)*** %54, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds i32 (...)** %55, i32 7 ; [#uses=1]
+ %57 = load i32 (...)** %56, align 4 ; [#uses=1]
+ %58 = bitcast %struct.btCollisionShape* %17 to %struct.btConvexInternalShape* ; [#uses=1]
+ %59 = bitcast i32 (...)* %57 to %struct.btQuadWord* (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %60 = call %struct.btQuadWord* %59(%struct.btConvexInternalShape* %58) ; [#uses=0]
+ %61 = getelementptr inbounds %struct.btCollisionShape* %20, i32 0, i32 0 ; [#uses=1]
+ %62 = load i32 (...)*** %61, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds i32 (...)** %62, i32 7 ; [#uses=1]
+ %64 = load i32 (...)** %63, align 4 ; [#uses=1]
+ %65 = bitcast %struct.btCollisionShape* %20 to %struct.btConvexInternalShape* ; [#uses=1]
+ %66 = bitcast i32 (...)* %64 to %struct.btQuadWord* (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %67 = call %struct.btQuadWord* %66(%struct.btConvexInternalShape* %65) ; [#uses=0]
+ %68 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %69 = call float @_ZNK20btPersistentManifold27getContactBreakingThresholdEv(%struct.btPersistentManifold* %68) ; [#uses=2]
+ %70 = getelementptr inbounds %struct.btCollisionShape* %20, i32 4, i32 1 ; [#uses=1]
+ %71 = load i32* %70, align 4 ; [#uses=5]
+ %72 = getelementptr inbounds %struct.btCollisionShape* %17, i32 4, i32 1 ; [#uses=1]
+ %73 = load i32* %72, align 4 ; [#uses=5]
+ %74 = add nsw i32 %71, 2 ; [#uses=1]
+ %75 = srem i32 %74, 3 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btCapsuleShape* %53, i32 0, i32 0, i32 2, i32 0, i32 %75 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=4]
+ %78 = getelementptr inbounds %struct.btCapsuleShape* %53, i32 0, i32 0, i32 2, i32 0, i32 %71 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=6]
+ %80 = add nsw i32 %73, 2 ; [#uses=1]
+ %81 = srem i32 %80, 3 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btCapsuleShape* %52, i32 0, i32 0, i32 2, i32 0, i32 %81 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btCapsuleShape* %52, i32 0, i32 0, i32 2, i32 0, i32 %73 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=9]
+ %86 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 %73 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 %73 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 %73 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=6]
+ %90 = load float* %87, align 4 ; [#uses=9]
+ %91 = load float* %86, align 4 ; [#uses=7]
+ %92 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 %71 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 %71 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 %71 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=3]
+ %102 = load float* %99, align 4 ; [#uses=3]
+ %103 = load float* %98, align 4 ; [#uses=3]
+ %104 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=2]
+ %106 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %107 = load float* %106, align 4 ; [#uses=2]
+ %108 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=2]
+ %110 = fsub float %109, %97 ; [#uses=3]
+ %111 = fsub float %107, %95 ; [#uses=3]
+ %112 = fsub float %105, %93 ; [#uses=3]
+ %113 = fmul float %89, %101 ; [#uses=1]
+ %114 = fmul float %90, %102 ; [#uses=1]
+ %115 = fadd float %113, %114 ; [#uses=1]
+ %116 = fmul float %91, %103 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=6]
+ %118 = fmul float %89, %112 ; [#uses=1]
+ %119 = fmul float %90, %111 ; [#uses=1]
+ %120 = fadd float %118, %119 ; [#uses=1]
+ %121 = fmul float %91, %110 ; [#uses=1]
+ %122 = fadd float %120, %121 ; [#uses=3]
+ %123 = fmul float %101, %112 ; [#uses=1]
+ %124 = fmul float %102, %111 ; [#uses=1]
+ %125 = fadd float %123, %124 ; [#uses=1]
+ %126 = fmul float %103, %110 ; [#uses=1]
+ %127 = fadd float %125, %126 ; [#uses=2]
+ %128 = fmul float %117, %117 ; [#uses=1]
+ %129 = fsub float 1.000000e+00, %128 ; [#uses=2]
+ %130 = fcmp oeq float %129, 0.000000e+00 ; [#uses=1]
+ br i1 %130, label %bb5.i.i, label %bb1.i9.i
+
+bb1.i9.i: ; preds = %bb6
+ %131 = fmul float %127, %117 ; [#uses=1]
+ %132 = fsub float %122, %131 ; [#uses=1]
+ %133 = fdiv float %132, %129 ; [#uses=3]
+ %134 = fsub float -0.000000e+00, %85 ; [#uses=2]
+ %135 = fcmp olt float %133, %134 ; [#uses=1]
+ br i1 %135, label %bb5.i.i, label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i9.i
+ %136 = fcmp ogt float %133, %85 ; [#uses=1]
+ br i1 %136, label %bb4.i.i, label %bb5.i.i
+
+bb4.i.i: ; preds = %bb3.i.i
+ br label %bb5.i.i
+
+bb5.i.i: ; preds = %bb4.i.i, %bb3.i.i, %bb1.i9.i, %bb6
+ %tA.0.i = phi float [ %85, %bb4.i.i ], [ %133, %bb3.i.i ], [ 0.000000e+00, %bb6 ], [ %134, %bb1.i9.i ] ; [#uses=2]
+ %137 = fmul float %tA.0.i, %117 ; [#uses=1]
+ %138 = fsub float %137, %127 ; [#uses=3]
+ %139 = fsub float -0.000000e+00, %79 ; [#uses=5]
+ %140 = fcmp olt float %138, %139 ; [#uses=1]
+ br i1 %140, label %bb6.i.i, label %bb10.i.i
+
+bb6.i.i: ; preds = %bb5.i.i
+ %141 = fmul float %117, %139 ; [#uses=1]
+ %142 = fadd float %141, %122 ; [#uses=3]
+ %143 = fsub float -0.000000e+00, %85 ; [#uses=2]
+ %144 = fcmp olt float %142, %143 ; [#uses=1]
+ br i1 %144, label %_ZL21segmentsClosestPointsR9btVector3S0_S0_RfS1_RKS_S3_fS3_f.exit.i, label %bb8.i.i
+
+bb8.i.i: ; preds = %bb6.i.i
+ %145 = fcmp ogt float %142, %85 ; [#uses=1]
+ br i1 %145, label %bb9.i.i, label %_ZL21segmentsClosestPointsR9btVector3S0_S0_RfS1_RKS_S3_fS3_f.exit.i
+
+bb9.i.i: ; preds = %bb8.i.i
+ br label %_ZL21segmentsClosestPointsR9btVector3S0_S0_RfS1_RKS_S3_fS3_f.exit.i
+
+bb10.i.i: ; preds = %bb5.i.i
+ %146 = fcmp ogt float %138, %79 ; [#uses=1]
+ br i1 %146, label %bb11.i.i, label %_ZL21segmentsClosestPointsR9btVector3S0_S0_RfS1_RKS_S3_fS3_f.exit.i
+
+bb11.i.i: ; preds = %bb10.i.i
+ %147 = fmul float %117, %79 ; [#uses=1]
+ %148 = fadd float %147, %122 ; [#uses=3]
+ %149 = fsub float -0.000000e+00, %85 ; [#uses=2]
+ %150 = fcmp olt float %148, %149 ; [#uses=1]
+ br i1 %150, label %_ZL21segmentsClosestPointsR9btVector3S0_S0_RfS1_RKS_S3_fS3_f.exit.i, label %bb13.i.i
+
+bb13.i.i: ; preds = %bb11.i.i
+ %151 = fcmp ogt float %148, %85 ; [#uses=1]
+ br i1 %151, label %bb14.i.i, label %_ZL21segmentsClosestPointsR9btVector3S0_S0_RfS1_RKS_S3_fS3_f.exit.i
+
+bb14.i.i: ; preds = %bb13.i.i
+ br label %_ZL21segmentsClosestPointsR9btVector3S0_S0_RfS1_RKS_S3_fS3_f.exit.i
+
+_ZL21segmentsClosestPointsR9btVector3S0_S0_RfS1_RKS_S3_fS3_f.exit.i: ; preds = %bb14.i.i, %bb13.i.i, %bb11.i.i, %bb10.i.i, %bb9.i.i, %bb8.i.i, %bb6.i.i
+ %tB.0.i = phi float [ %139, %bb9.i.i ], [ %139, %bb8.i.i ], [ %79, %bb14.i.i ], [ %79, %bb13.i.i ], [ %139, %bb6.i.i ], [ %138, %bb10.i.i ], [ %79, %bb11.i.i ] ; [#uses=3]
+ %152 = phi float [ %85, %bb9.i.i ], [ %142, %bb8.i.i ], [ %85, %bb14.i.i ], [ %148, %bb13.i.i ], [ %143, %bb6.i.i ], [ %tA.0.i, %bb10.i.i ], [ %149, %bb11.i.i ] ; [#uses=3]
+ %153 = fmul float %91, %152 ; [#uses=1]
+ %154 = fmul float %90, %152 ; [#uses=1]
+ %155 = fmul float %89, %152 ; [#uses=1]
+ %156 = fmul float %103, %tB.0.i ; [#uses=2]
+ %157 = fmul float %102, %tB.0.i ; [#uses=2]
+ %158 = fmul float %101, %tB.0.i ; [#uses=2]
+ %159 = fsub float %110, %153 ; [#uses=1]
+ %160 = fsub float %111, %154 ; [#uses=1]
+ %161 = fsub float %112, %155 ; [#uses=1]
+ %162 = fadd float %159, %156 ; [#uses=3]
+ %163 = fadd float %160, %157 ; [#uses=3]
+ %164 = fadd float %161, %158 ; [#uses=3]
+ %165 = fmul float %164, %164 ; [#uses=1]
+ %166 = fmul float %163, %163 ; [#uses=1]
+ %167 = fadd float %165, %166 ; [#uses=1]
+ %168 = fmul float %162, %162 ; [#uses=1]
+ %169 = fadd float %167, %168 ; [#uses=2]
+ %170 = call float @sqrtf(float %169) nounwind readonly ; [#uses=2]
+ %171 = fsub float %170, %83 ; [#uses=1]
+ %172 = fsub float %171, %77 ; [#uses=3]
+ %173 = fcmp ogt float %172, %69 ; [#uses=1]
+ br i1 %173, label %_ZL22capsuleCapsuleDistanceR9btVector3S0_ffffiiRK11btTransformS3_f.exit, label %bb1.i55
+
+bb1.i55: ; preds = %_ZL21segmentsClosestPointsR9btVector3S0_S0_RfS1_RKS_S3_fS3_f.exit.i
+ %174 = fcmp ugt float %169, 0x3D10000000000000 ; [#uses=1]
+ br i1 %174, label %bb3.i57, label %bb2.i56
+
+bb2.i56: ; preds = %bb1.i55
+ %175 = call float @fabsf(float %91) nounwind readnone ; [#uses=1]
+ %176 = fcmp ogt float %175, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %176, label %bb.i.i, label %bb1.i.i
+
+bb.i.i: ; preds = %bb2.i56
+ %177 = fmul float %90, %90 ; [#uses=1]
+ %178 = fmul float %91, %91 ; [#uses=1]
+ %179 = fadd float %177, %178 ; [#uses=1]
+ %180 = call float @sqrtf(float %179) nounwind readonly ; [#uses=1]
+ %181 = fdiv float 1.000000e+00, %180 ; [#uses=2]
+ %182 = getelementptr inbounds %struct.btQuadWord* %normalOnB, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %182, align 8
+ %183 = fsub float -0.000000e+00, %91 ; [#uses=1]
+ %184 = fmul float %181, %183 ; [#uses=2]
+ %185 = getelementptr inbounds %struct.btQuadWord* %normalOnB, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %184, float* %185, align 4
+ %186 = fmul float %90, %181 ; [#uses=2]
+ %187 = getelementptr inbounds %struct.btQuadWord* %normalOnB, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %186, float* %187, align 8
+ br label %bb4.i
+
+bb1.i.i: ; preds = %bb2.i56
+ %188 = fmul float %89, %89 ; [#uses=1]
+ %189 = fmul float %90, %90 ; [#uses=1]
+ %190 = fadd float %188, %189 ; [#uses=1]
+ %191 = call float @sqrtf(float %190) nounwind readonly ; [#uses=1]
+ %192 = fdiv float 1.000000e+00, %191 ; [#uses=2]
+ %193 = getelementptr inbounds %struct.btQuadWord* %normalOnB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %194 = fsub float -0.000000e+00, %90 ; [#uses=1]
+ %195 = fmul float %192, %194 ; [#uses=2]
+ store float %195, float* %193, align 8
+ %196 = fmul float %89, %192 ; [#uses=2]
+ %197 = getelementptr inbounds %struct.btQuadWord* %normalOnB, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %196, float* %197, align 4
+ %198 = getelementptr inbounds %struct.btQuadWord* %normalOnB, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %198, align 8
+ br label %bb4.i
+
+bb3.i57: ; preds = %bb1.i55
+ %199 = fdiv float -1.000000e+00, %170 ; [#uses=3]
+ %200 = fmul float %162, %199 ; [#uses=2]
+ %201 = fmul float %163, %199 ; [#uses=2]
+ %202 = fmul float %164, %199 ; [#uses=2]
+ %203 = getelementptr inbounds %struct.btQuadWord* %normalOnB, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %202, float* %203, align 8
+ %204 = getelementptr inbounds %struct.btQuadWord* %normalOnB, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %201, float* %204, align 4
+ %205 = getelementptr inbounds %struct.btQuadWord* %normalOnB, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %200, float* %205, align 8
+ %206 = getelementptr inbounds %struct.btQuadWord* %normalOnB, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %206, align 4
+ br label %bb4.i
+
+bb4.i: ; preds = %bb3.i57, %bb1.i.i, %bb.i.i
+ %207 = phi float [ %195, %bb1.i.i ], [ 0.000000e+00, %bb.i.i ], [ %202, %bb3.i57 ] ; [#uses=1]
+ %208 = phi float [ %196, %bb1.i.i ], [ %184, %bb.i.i ], [ %201, %bb3.i57 ] ; [#uses=1]
+ %209 = phi float [ 0.000000e+00, %bb1.i.i ], [ %186, %bb.i.i ], [ %200, %bb3.i57 ] ; [#uses=1]
+ %210 = fmul float %209, %77 ; [#uses=1]
+ %211 = fmul float %208, %77 ; [#uses=1]
+ %212 = fmul float %207, %77 ; [#uses=1]
+ %213 = fadd float %109, %156 ; [#uses=1]
+ %214 = fadd float %107, %157 ; [#uses=1]
+ %215 = fadd float %105, %158 ; [#uses=1]
+ %216 = fadd float %213, %210 ; [#uses=1]
+ %217 = fadd float %214, %211 ; [#uses=1]
+ %218 = fadd float %215, %212 ; [#uses=1]
+ %219 = getelementptr inbounds %struct.btQuadWord* %pointOnBWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %218, float* %219, align 8
+ %220 = getelementptr inbounds %struct.btQuadWord* %pointOnBWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %217, float* %220, align 4
+ %221 = getelementptr inbounds %struct.btQuadWord* %pointOnBWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %216, float* %221, align 8
+ %222 = getelementptr inbounds %struct.btQuadWord* %pointOnBWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %222, align 4
+ br label %_ZL22capsuleCapsuleDistanceR9btVector3S0_ffffiiRK11btTransformS3_f.exit
+
+_ZL22capsuleCapsuleDistanceR9btVector3S0_ffffiiRK11btTransformS3_f.exit: ; preds = %bb4.i, %_ZL21segmentsClosestPointsR9btVector3S0_S0_RfS1_RKS_S3_fS3_f.exit.i
+ %223 = fcmp olt float %172, %69 ; [#uses=1]
+ br i1 %223, label %bb7, label %bb8
+
+bb7: ; preds = %_ZL22capsuleCapsuleDistanceR9btVector3S0_ffffiiRK11btTransformS3_f.exit
+ %224 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 0, i32 0 ; [#uses=1]
+ %225 = load i32 (...)*** %224, align 4 ; [#uses=1]
+ %226 = getelementptr inbounds i32 (...)** %225, i32 4 ; [#uses=1]
+ %227 = load i32 (...)** %226, align 4 ; [#uses=1]
+ %228 = bitcast i32 (...)* %227 to void (%struct.btManifoldResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %228(%struct.btManifoldResult* %resultOut, %struct.btQuadWord* %normalOnB, %struct.btQuadWord* %pointOnBWorld, float %172)
+ br label %bb8
+
+bb8: ; preds = %bb7, %_ZL22capsuleCapsuleDistanceR9btVector3S0_ffffiiRK11btTransformS3_f.exit
+ %229 = load %struct.btPersistentManifold** %15, align 4 ; [#uses=4]
+ %230 = getelementptr inbounds %struct.btPersistentManifold* %229, i32 0, i32 4 ; [#uses=1]
+ %231 = load i32* %230, align 4 ; [#uses=1]
+ %232 = icmp eq i32 %231, 0 ; [#uses=1]
+ br i1 %232, label %_ZN16btManifoldResult20refreshContactPointsEv.exit54, label %bb.i50
+
+bb.i50: ; preds = %bb8
+ %233 = getelementptr inbounds %struct.btPersistentManifold* %229, i32 0, i32 2 ; [#uses=1]
+ %234 = load i8** %233, align 4 ; [#uses=1]
+ %235 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 4 ; [#uses=1]
+ %236 = load %struct.btCollisionObject** %235, align 4 ; [#uses=1]
+ %237 = bitcast %struct.btCollisionObject* %236 to i8* ; [#uses=1]
+ %238 = icmp eq i8* %234, %237 ; [#uses=1]
+ br i1 %238, label %bb3.i52, label %bb2.i51
+
+bb2.i51: ; preds = %bb.i50
+ %239 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ %240 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %229, %struct.btTransform* %240, %struct.btTransform* %239)
+ ret void
+
+bb3.i52: ; preds = %bb.i50
+ %241 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ %242 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %229, %struct.btTransform* %242, %struct.btTransform* %241)
+ ret void
+
+_ZN16btManifoldResult20refreshContactPointsEv.exit54: ; preds = %bb44, %bb42, %bb8
+ ret void
+
+bb11: ; preds = %bb4
+ %243 = getelementptr inbounds %struct.btPersistentManifold* %51, i32 0, i32 6 ; [#uses=1]
+ %244 = load float* %243, align 4 ; [#uses=1]
+ br label %bb13
+
+bb12: ; preds = %bb4
+ %245 = call float @_ZNK20btPersistentManifold27getContactBreakingThresholdEv(%struct.btPersistentManifold* %51) ; [#uses=1]
+ br label %bb13
+
+bb13: ; preds = %bb12, %bb11
+ %.pn163 = phi float [ %244, %bb11 ], [ %245, %bb12 ] ; [#uses=1]
+ %246 = fadd float %50, %.pn163 ; [#uses=2]
+ %247 = fmul float %246, %246 ; [#uses=1]
+ store float %247, float* %28, align 8
+ %248 = getelementptr inbounds %struct.btDispatcherInfo* %dispatchInfo, i32 0, i32 13 ; [#uses=1]
+ %249 = load %struct.btStackAlloc** %248, align 4 ; [#uses=1]
+ store %struct.btStackAlloc* %249, %struct.btStackAlloc** %29, align 4
+ %250 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %251 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %252 = load float* %251, align 4 ; [#uses=1]
+ store float %252, float* %250, align 8
+ %253 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=4]
+ %254 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %255 = load float* %254, align 4 ; [#uses=1]
+ store float %255, float* %253, align 4
+ %256 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=4]
+ %257 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %258 = load float* %257, align 4 ; [#uses=1]
+ store float %258, float* %256, align 8
+ %259 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=4]
+ %260 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %261 = load float* %260, align 4 ; [#uses=1]
+ store float %261, float* %259, align 4
+ %262 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=4]
+ %263 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %264 = load float* %263, align 4 ; [#uses=1]
+ store float %264, float* %262, align 8
+ %265 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=4]
+ %266 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %267 = load float* %266, align 4 ; [#uses=1]
+ store float %267, float* %265, align 4
+ %268 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=4]
+ %269 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %270 = load float* %269, align 4 ; [#uses=1]
+ store float %270, float* %268, align 8
+ %271 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=4]
+ %272 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %273 = load float* %272, align 4 ; [#uses=1]
+ store float %273, float* %271, align 4
+ %274 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=4]
+ %275 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %276 = load float* %275, align 4 ; [#uses=1]
+ store float %276, float* %274, align 8
+ %277 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=4]
+ %278 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %279 = load float* %278, align 4 ; [#uses=1]
+ store float %279, float* %277, align 4
+ %280 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=4]
+ %281 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %282 = load float* %281, align 4 ; [#uses=1]
+ store float %282, float* %280, align 8
+ %283 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=4]
+ %284 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %285 = load float* %284, align 4 ; [#uses=1]
+ store float %285, float* %283, align 4
+ %286 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=4]
+ %287 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=2]
+ %288 = load float* %287, align 4 ; [#uses=1]
+ store float %288, float* %286, align 8
+ %289 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=4]
+ %290 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=2]
+ %291 = load float* %290, align 4 ; [#uses=1]
+ store float %291, float* %289, align 4
+ %292 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=4]
+ %293 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=2]
+ %294 = load float* %293, align 4 ; [#uses=1]
+ store float %294, float* %292, align 8
+ %295 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=4]
+ %296 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=2]
+ %297 = load float* %296, align 4 ; [#uses=1]
+ store float %297, float* %295, align 4
+ %298 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %299 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %300 = load float* %299, align 4 ; [#uses=1]
+ store float %300, float* %298, align 8
+ %301 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=4]
+ %302 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %303 = load float* %302, align 4 ; [#uses=1]
+ store float %303, float* %301, align 4
+ %304 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=4]
+ %305 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %306 = load float* %305, align 4 ; [#uses=1]
+ store float %306, float* %304, align 8
+ %307 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=4]
+ %308 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %309 = load float* %308, align 4 ; [#uses=1]
+ store float %309, float* %307, align 4
+ %310 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=4]
+ %311 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %312 = load float* %311, align 4 ; [#uses=1]
+ store float %312, float* %310, align 8
+ %313 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=4]
+ %314 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %315 = load float* %314, align 4 ; [#uses=1]
+ store float %315, float* %313, align 4
+ %316 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=4]
+ %317 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %318 = load float* %317, align 4 ; [#uses=1]
+ store float %318, float* %316, align 8
+ %319 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=4]
+ %320 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %321 = load float* %320, align 4 ; [#uses=1]
+ store float %321, float* %319, align 4
+ %322 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=4]
+ %323 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %324 = load float* %323, align 4 ; [#uses=1]
+ store float %324, float* %322, align 8
+ %325 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=4]
+ %326 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %327 = load float* %326, align 4 ; [#uses=1]
+ store float %327, float* %325, align 4
+ %328 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=4]
+ %329 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %330 = load float* %329, align 4 ; [#uses=1]
+ store float %330, float* %328, align 8
+ %331 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=4]
+ %332 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %333 = load float* %332, align 4 ; [#uses=1]
+ store float %333, float* %331, align 4
+ %334 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=4]
+ %335 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=2]
+ %336 = load float* %335, align 4 ; [#uses=1]
+ store float %336, float* %334, align 8
+ %337 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=4]
+ %338 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=2]
+ %339 = load float* %338, align 4 ; [#uses=1]
+ store float %339, float* %337, align 4
+ %340 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=4]
+ %341 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=2]
+ %342 = load float* %341, align 4 ; [#uses=1]
+ store float %342, float* %340, align 8
+ %343 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=4]
+ %344 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=2]
+ %345 = load float* %344, align 4 ; [#uses=1]
+ store float %345, float* %343, align 4
+ %346 = getelementptr inbounds %struct.btDispatcherInfo* %dispatchInfo, i32 0, i32 5 ; [#uses=2]
+ %347 = load %struct.btActionInterface** %346, align 4 ; [#uses=1]
+ %348 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.btGjkPairDetector* %gjkPairDetector, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, %struct.btActionInterface* %348, %struct.btActionInterface* %347, i8 zeroext 0)
+ %349 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 6 ; [#uses=3]
+ %350 = load i32* %349, align 4 ; [#uses=1]
+ %351 = icmp eq i32 %350, 0 ; [#uses=1]
+ br i1 %351, label %bb42, label %bb14
+
+bb14: ; preds = %bb13
+ %352 = load %struct.btPersistentManifold** %15, align 4 ; [#uses=1]
+ %353 = getelementptr inbounds %struct.btPersistentManifold* %352, i32 0, i32 4 ; [#uses=1]
+ %354 = load i32* %353, align 4 ; [#uses=1]
+ %355 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 7 ; [#uses=1]
+ %356 = load i32* %355, align 4 ; [#uses=1]
+ %357 = icmp slt i32 %354, %356 ; [#uses=1]
+ br i1 %357, label %bb19, label %bb42
+
+bb19: ; preds = %bb14
+ %358 = getelementptr inbounds %struct.btGjkPairDetector* %gjkPairDetector, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %359 = load float* %358, align 4 ; [#uses=3]
+ %360 = fmul float %359, %359 ; [#uses=1]
+ %361 = getelementptr inbounds %struct.btGjkPairDetector* %gjkPairDetector, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %362 = load float* %361, align 4 ; [#uses=3]
+ %363 = fmul float %362, %362 ; [#uses=1]
+ %364 = fadd float %360, %363 ; [#uses=1]
+ %365 = getelementptr inbounds %struct.btGjkPairDetector* %gjkPairDetector, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %366 = load float* %365, align 4 ; [#uses=3]
+ %367 = fmul float %366, %366 ; [#uses=1]
+ %368 = fadd float %364, %367 ; [#uses=1]
+ %369 = call float @sqrtf(float %368) nounwind readonly ; [#uses=1]
+ %370 = fdiv float 1.000000e+00, %369 ; [#uses=3]
+ %371 = fmul float %366, %370 ; [#uses=7]
+ %372 = fmul float %362, %370 ; [#uses=9]
+ %373 = fmul float %359, %370 ; [#uses=6]
+ %374 = call float @fabsf(float %371) nounwind readnone ; [#uses=1]
+ %375 = fcmp ogt float %374, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %375, label %bb.i49, label %bb1.i
+
+bb.i49: ; preds = %bb19
+ %376 = fmul float %372, %372 ; [#uses=1]
+ %377 = fmul float %371, %371 ; [#uses=1]
+ %378 = fadd float %376, %377 ; [#uses=1]
+ %379 = call float @sqrtf(float %378) nounwind readonly ; [#uses=1]
+ %380 = fdiv float 1.000000e+00, %379 ; [#uses=2]
+ %381 = fsub float -0.000000e+00, %371 ; [#uses=1]
+ %382 = fmul float %380, %381 ; [#uses=1]
+ %383 = fmul float %372, %380 ; [#uses=1]
+ br label %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+
+bb1.i: ; preds = %bb19
+ %384 = fmul float %373, %373 ; [#uses=1]
+ %385 = fmul float %372, %372 ; [#uses=1]
+ %386 = fadd float %384, %385 ; [#uses=1]
+ %387 = call float @sqrtf(float %386) nounwind readonly ; [#uses=1]
+ %388 = fdiv float 1.000000e+00, %387 ; [#uses=2]
+ %389 = fsub float -0.000000e+00, %372 ; [#uses=1]
+ %390 = fmul float %388, %389 ; [#uses=1]
+ %391 = fmul float %373, %388 ; [#uses=1]
+ br label %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+
+_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit: ; preds = %bb1.i, %bb.i49
+ %v0.0.0.0 = phi float [ 0.000000e+00, %bb.i49 ], [ %390, %bb1.i ] ; [#uses=3]
+ %v0.0.1.0 = phi float [ %382, %bb.i49 ], [ %391, %bb1.i ] ; [#uses=3]
+ %v0.0.2.0 = phi float [ %383, %bb.i49 ], [ 0.000000e+00, %bb1.i ] ; [#uses=3]
+ %392 = load i32 (...)*** %38, align 4 ; [#uses=1]
+ %393 = getelementptr inbounds i32 (...)** %392, i32 4 ; [#uses=1]
+ %394 = load i32 (...)** %393, align 4 ; [#uses=1]
+ %395 = bitcast i32 (...)* %394 to float (%struct.btCollisionShape*)* ; [#uses=1]
+ %396 = call float %395(%struct.btCollisionShape* %17) ; [#uses=2]
+ %397 = load i32 (...)*** %44, align 4 ; [#uses=1]
+ %398 = getelementptr inbounds i32 (...)** %397, i32 4 ; [#uses=1]
+ %399 = load i32 (...)** %398, align 4 ; [#uses=1]
+ %400 = bitcast i32 (...)* %399 to float (%struct.btCollisionShape*)* ; [#uses=1]
+ %401 = call float %400(%struct.btCollisionShape* %20) ; [#uses=2]
+ %402 = fcmp olt float %396, %401 ; [#uses=4]
+ %403 = load float* @gContactBreakingThreshold, align 4 ; [#uses=1]
+ %.pn = select i1 %402, float %396, float %401 ; [#uses=1]
+ %perturbeA.0 = zext i1 %402 to i8 ; [#uses=1]
+ %storemerge = fdiv float %403, %.pn ; [#uses=2]
+ %404 = fcmp ogt float %storemerge, 0x3FD921FB60000000 ; [#uses=1]
+ br i1 %402, label %bb26, label %bb27
+
+bb26: ; preds = %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+ %405 = load float* %250, align 8 ; [#uses=1]
+ %406 = load float* %253, align 4 ; [#uses=1]
+ %407 = load float* %256, align 8 ; [#uses=1]
+ %408 = load float* %259, align 4 ; [#uses=1]
+ %409 = load float* %262, align 8 ; [#uses=1]
+ %410 = load float* %265, align 4 ; [#uses=1]
+ %411 = load float* %268, align 8 ; [#uses=1]
+ %412 = load float* %271, align 4 ; [#uses=1]
+ %413 = load float* %274, align 8 ; [#uses=1]
+ %414 = load float* %277, align 4 ; [#uses=1]
+ %415 = load float* %280, align 8 ; [#uses=1]
+ %416 = load float* %283, align 4 ; [#uses=1]
+ %417 = load float* %286, align 8 ; [#uses=1]
+ %418 = load float* %289, align 4 ; [#uses=1]
+ %419 = load float* %292, align 8 ; [#uses=1]
+ %420 = load float* %295, align 4 ; [#uses=1]
+ br label %bb41.preheader
+
+bb27: ; preds = %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+ %421 = load float* %298, align 8 ; [#uses=1]
+ %422 = load float* %301, align 4 ; [#uses=1]
+ %423 = load float* %304, align 8 ; [#uses=1]
+ %424 = load float* %307, align 4 ; [#uses=1]
+ %425 = load float* %310, align 8 ; [#uses=1]
+ %426 = load float* %313, align 4 ; [#uses=1]
+ %427 = load float* %316, align 8 ; [#uses=1]
+ %428 = load float* %319, align 4 ; [#uses=1]
+ %429 = load float* %322, align 8 ; [#uses=1]
+ %430 = load float* %325, align 4 ; [#uses=1]
+ %431 = load float* %328, align 8 ; [#uses=1]
+ %432 = load float* %331, align 4 ; [#uses=1]
+ %433 = load float* %334, align 8 ; [#uses=1]
+ %434 = load float* %337, align 4 ; [#uses=1]
+ %435 = load float* %340, align 8 ; [#uses=1]
+ %436 = load float* %343, align 4 ; [#uses=1]
+ br label %bb41.preheader
+
+bb41.preheader: ; preds = %bb27, %bb26
+ %unPerturbedTransform.0.0.0.0.0.0.ph = phi float [ %405, %bb26 ], [ %421, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.0.0.0.0.1.0.ph = phi float [ %406, %bb26 ], [ %422, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.0.0.0.0.2.0.ph = phi float [ %407, %bb26 ], [ %423, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.0.0.0.0.3.0.ph = phi float [ %408, %bb26 ], [ %424, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.0.0.1.0.0.0.ph = phi float [ %409, %bb26 ], [ %425, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.0.0.1.0.1.0.ph = phi float [ %410, %bb26 ], [ %426, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.0.0.1.0.2.0.ph = phi float [ %411, %bb26 ], [ %427, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.0.0.1.0.3.0.ph = phi float [ %412, %bb26 ], [ %428, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.0.0.2.0.0.0.ph = phi float [ %413, %bb26 ], [ %429, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.0.0.2.0.1.0.ph = phi float [ %414, %bb26 ], [ %430, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.0.0.2.0.2.0.ph = phi float [ %415, %bb26 ], [ %431, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.0.0.2.0.3.0.ph = phi float [ %416, %bb26 ], [ %432, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.1.0.0.0.ph = phi float [ %417, %bb26 ], [ %433, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.1.0.1.0.ph = phi float [ %418, %bb26 ], [ %434, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.1.0.2.0.ph = phi float [ %419, %bb26 ], [ %435, %bb27 ] ; [#uses=1]
+ %unPerturbedTransform.1.0.3.0.ph = phi float [ %420, %bb26 ], [ %436, %bb27 ] ; [#uses=1]
+ %437 = load i32* %349, align 4 ; [#uses=2]
+ %438 = icmp sgt i32 %437, 0 ; [#uses=1]
+ br i1 %438, label %bb.nph, label %bb42
+
+bb.nph: ; preds = %bb41.preheader
+ %439 = fmul float %v0.0.0.0, %v0.0.0.0 ; [#uses=1]
+ %440 = fmul float %v0.0.1.0, %v0.0.1.0 ; [#uses=1]
+ %441 = fadd float %439, %440 ; [#uses=1]
+ %442 = fmul float %v0.0.2.0, %v0.0.2.0 ; [#uses=1]
+ %443 = fadd float %441, %442 ; [#uses=2]
+ %444 = fcmp ogt float %443, 0x3E80000000000000 ; [#uses=1]
+ %storemerge.op = fmul float %storemerge, 5.000000e-01 ; [#uses=1]
+ %445 = select i1 %404, float 0x3FC921FB60000000, float %storemerge.op ; [#uses=2]
+ %446 = fmul float %373, %373 ; [#uses=1]
+ %447 = fmul float %372, %372 ; [#uses=1]
+ %448 = fadd float %446, %447 ; [#uses=1]
+ %449 = fmul float %371, %371 ; [#uses=1]
+ %450 = fadd float %448, %449 ; [#uses=1]
+ %451 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %452 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 1 ; [#uses=1]
+ %453 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %454 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %455 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %456 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %457 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %458 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %459 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %460 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %461 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %462 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %463 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %464 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %465 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %466 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %467 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %468 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %469 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %470 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %471 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %472 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %473 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %474 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %475 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %476 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %477 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %478 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %479 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %480 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %481 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %482 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %483 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %484 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %485 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %486 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %487 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %488 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %489 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %490 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %491 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %492 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %493 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %494 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %495 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %496 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %497 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %498 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %499 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %500 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ %501 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 5 ; [#uses=1]
+ %502 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 6 ; [#uses=1]
+ %503 = getelementptr inbounds %struct.btPerturbedContactResult* %perturbedResultOut, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb29
+
+bb29: ; preds = %bb40, %bb.nph
+ %504 = phi i32 [ %437, %bb.nph ], [ %880, %bb40 ] ; [#uses=1]
+ %505 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb40 ] ; [#uses=2]
+ %tmp = add i32 %505, 1 ; [#uses=2]
+ br i1 %444, label %bb31, label %bb40
+
+bb31: ; preds = %bb29
+ %506 = call float @sqrtf(float %443) nounwind readonly ; [#uses=1]
+ %507 = call float @sinf(float %445) nounwind readonly ; [#uses=1]
+ %508 = fdiv float %507, %506 ; [#uses=3]
+ %509 = call float @cosf(float %445) nounwind readonly ; [#uses=8]
+ %510 = fmul float %v0.0.2.0, %508 ; [#uses=8]
+ %511 = fmul float %v0.0.1.0, %508 ; [#uses=8]
+ %512 = fmul float %v0.0.0.0, %508 ; [#uses=8]
+ %513 = sitofp i32 %505 to float ; [#uses=1]
+ %514 = sitofp i32 %504 to float ; [#uses=1]
+ %515 = fdiv float 0x401921FB60000000, %514 ; [#uses=1]
+ %516 = fmul float %513, %515 ; [#uses=1]
+ %517 = call float @sqrtf(float %450) nounwind readonly ; [#uses=1]
+ %518 = fmul float %516, 5.000000e-01 ; [#uses=2]
+ %519 = call float @sinf(float %518) nounwind readonly ; [#uses=1]
+ %520 = fdiv float %519, %517 ; [#uses=3]
+ %521 = call float @cosf(float %518) nounwind readonly ; [#uses=16]
+ %522 = fmul float %371, %520 ; [#uses=10]
+ %523 = fmul float %372, %520 ; [#uses=10]
+ %524 = fmul float %373, %520 ; [#uses=10]
+ br i1 %402, label %bb37, label %bb38
+
+bb37: ; preds = %bb31
+ %525 = fsub float -0.000000e+00, %522 ; [#uses=4]
+ %526 = fsub float -0.000000e+00, %523 ; [#uses=4]
+ %527 = fsub float -0.000000e+00, %524 ; [#uses=4]
+ %528 = fmul float %521, %509 ; [#uses=1]
+ %529 = fmul float %512, %527 ; [#uses=1]
+ %530 = fsub float %528, %529 ; [#uses=1]
+ %531 = fmul float %511, %526 ; [#uses=1]
+ %532 = fsub float %530, %531 ; [#uses=1]
+ %533 = fmul float %510, %525 ; [#uses=1]
+ %534 = fsub float %532, %533 ; [#uses=4]
+ %535 = fmul float %521, %510 ; [#uses=1]
+ %536 = fmul float %509, %525 ; [#uses=1]
+ %537 = fadd float %535, %536 ; [#uses=1]
+ %538 = fmul float %511, %527 ; [#uses=1]
+ %539 = fadd float %537, %538 ; [#uses=1]
+ %540 = fmul float %512, %526 ; [#uses=1]
+ %541 = fsub float %539, %540 ; [#uses=4]
+ %542 = fmul float %521, %511 ; [#uses=1]
+ %543 = fmul float %509, %526 ; [#uses=1]
+ %544 = fadd float %542, %543 ; [#uses=1]
+ %545 = fmul float %512, %525 ; [#uses=1]
+ %546 = fadd float %544, %545 ; [#uses=1]
+ %547 = fmul float %510, %527 ; [#uses=1]
+ %548 = fsub float %546, %547 ; [#uses=4]
+ %549 = fmul float %521, %512 ; [#uses=1]
+ %550 = fmul float %509, %527 ; [#uses=1]
+ %551 = fadd float %549, %550 ; [#uses=1]
+ %552 = fmul float %510, %526 ; [#uses=1]
+ %553 = fadd float %551, %552 ; [#uses=1]
+ %554 = fmul float %511, %525 ; [#uses=1]
+ %555 = fsub float %553, %554 ; [#uses=4]
+ %556 = fmul float %534, %521 ; [#uses=1]
+ %557 = fmul float %555, %524 ; [#uses=1]
+ %558 = fsub float %556, %557 ; [#uses=1]
+ %559 = fmul float %548, %523 ; [#uses=1]
+ %560 = fsub float %558, %559 ; [#uses=1]
+ %561 = fmul float %541, %522 ; [#uses=1]
+ %562 = fsub float %560, %561 ; [#uses=5]
+ %563 = fmul float %534, %522 ; [#uses=1]
+ %564 = fmul float %541, %521 ; [#uses=1]
+ %565 = fadd float %563, %564 ; [#uses=1]
+ %566 = fmul float %555, %523 ; [#uses=1]
+ %567 = fadd float %565, %566 ; [#uses=1]
+ %568 = fmul float %548, %524 ; [#uses=1]
+ %569 = fsub float %567, %568 ; [#uses=4]
+ %570 = fmul float %534, %523 ; [#uses=1]
+ %571 = fmul float %548, %521 ; [#uses=1]
+ %572 = fadd float %570, %571 ; [#uses=1]
+ %573 = fmul float %541, %524 ; [#uses=1]
+ %574 = fadd float %572, %573 ; [#uses=1]
+ %575 = fmul float %555, %522 ; [#uses=1]
+ %576 = fsub float %574, %575 ; [#uses=5]
+ %577 = fmul float %534, %524 ; [#uses=1]
+ %578 = fmul float %555, %521 ; [#uses=1]
+ %579 = fadd float %577, %578 ; [#uses=1]
+ %580 = fmul float %548, %522 ; [#uses=1]
+ %581 = fadd float %579, %580 ; [#uses=1]
+ %582 = fmul float %541, %523 ; [#uses=1]
+ %583 = fsub float %581, %582 ; [#uses=6]
+ %584 = fmul float %583, %583 ; [#uses=1]
+ %585 = fmul float %576, %576 ; [#uses=1]
+ %586 = fadd float %584, %585 ; [#uses=1]
+ %587 = fmul float %569, %569 ; [#uses=1]
+ %588 = fadd float %586, %587 ; [#uses=1]
+ %589 = fmul float %562, %562 ; [#uses=1]
+ %590 = fadd float %588, %589 ; [#uses=1]
+ %591 = fdiv float 2.000000e+00, %590 ; [#uses=3]
+ %592 = fmul float %583, %591 ; [#uses=2]
+ %593 = fmul float %576, %591 ; [#uses=3]
+ %594 = fmul float %569, %591 ; [#uses=4]
+ %595 = fmul float %562, %592 ; [#uses=2]
+ %596 = fmul float %562, %593 ; [#uses=2]
+ %597 = fmul float %562, %594 ; [#uses=2]
+ %598 = fmul float %583, %592 ; [#uses=2]
+ %599 = fmul float %583, %593 ; [#uses=2]
+ %600 = fmul float %583, %594 ; [#uses=2]
+ %601 = fmul float %576, %593 ; [#uses=2]
+ %602 = fmul float %576, %594 ; [#uses=2]
+ %603 = fmul float %569, %594 ; [#uses=2]
+ %604 = fadd float %598, %601 ; [#uses=1]
+ %605 = fsub float 1.000000e+00, %604 ; [#uses=3]
+ %606 = fadd float %602, %595 ; [#uses=3]
+ %607 = fsub float %600, %596 ; [#uses=3]
+ %608 = fsub float %602, %595 ; [#uses=3]
+ %609 = fadd float %598, %603 ; [#uses=1]
+ %610 = fsub float 1.000000e+00, %609 ; [#uses=3]
+ %611 = fadd float %599, %597 ; [#uses=3]
+ %612 = fadd float %600, %596 ; [#uses=3]
+ %613 = fsub float %599, %597 ; [#uses=3]
+ %614 = fadd float %601, %603 ; [#uses=1]
+ %615 = fsub float 1.000000e+00, %614 ; [#uses=3]
+ %616 = load float* %257, align 4 ; [#uses=3]
+ %617 = fmul float %616, %607 ; [#uses=1]
+ %618 = load float* %269, align 4 ; [#uses=3]
+ %619 = fmul float %618, %606 ; [#uses=1]
+ %620 = fadd float %617, %619 ; [#uses=1]
+ %621 = load float* %281, align 4 ; [#uses=3]
+ %622 = fmul float %621, %605 ; [#uses=1]
+ %623 = fadd float %620, %622 ; [#uses=2]
+ %624 = load float* %254, align 4 ; [#uses=3]
+ %625 = fmul float %624, %607 ; [#uses=1]
+ %626 = load float* %266, align 4 ; [#uses=3]
+ %627 = fmul float %626, %606 ; [#uses=1]
+ %628 = fadd float %625, %627 ; [#uses=1]
+ %629 = load float* %278, align 4 ; [#uses=3]
+ %630 = fmul float %629, %605 ; [#uses=1]
+ %631 = fadd float %628, %630 ; [#uses=2]
+ %632 = load float* %251, align 4 ; [#uses=3]
+ %633 = fmul float %632, %607 ; [#uses=1]
+ %634 = load float* %263, align 4 ; [#uses=3]
+ %635 = fmul float %634, %606 ; [#uses=1]
+ %636 = fadd float %633, %635 ; [#uses=1]
+ %637 = load float* %275, align 4 ; [#uses=3]
+ %638 = fmul float %637, %605 ; [#uses=1]
+ %639 = fadd float %636, %638 ; [#uses=2]
+ %640 = fmul float %616, %611 ; [#uses=1]
+ %641 = fmul float %618, %610 ; [#uses=1]
+ %642 = fadd float %640, %641 ; [#uses=1]
+ %643 = fmul float %621, %608 ; [#uses=1]
+ %644 = fadd float %642, %643 ; [#uses=2]
+ %645 = fmul float %624, %611 ; [#uses=1]
+ %646 = fmul float %626, %610 ; [#uses=1]
+ %647 = fadd float %645, %646 ; [#uses=1]
+ %648 = fmul float %629, %608 ; [#uses=1]
+ %649 = fadd float %647, %648 ; [#uses=2]
+ %650 = fmul float %632, %611 ; [#uses=1]
+ %651 = fmul float %634, %610 ; [#uses=1]
+ %652 = fadd float %650, %651 ; [#uses=1]
+ %653 = fmul float %637, %608 ; [#uses=1]
+ %654 = fadd float %652, %653 ; [#uses=2]
+ %655 = fmul float %616, %615 ; [#uses=1]
+ %656 = fmul float %618, %613 ; [#uses=1]
+ %657 = fadd float %655, %656 ; [#uses=1]
+ %658 = fmul float %621, %612 ; [#uses=1]
+ %659 = fadd float %657, %658 ; [#uses=2]
+ %660 = fmul float %624, %615 ; [#uses=1]
+ %661 = fmul float %626, %613 ; [#uses=1]
+ %662 = fadd float %660, %661 ; [#uses=1]
+ %663 = fmul float %629, %612 ; [#uses=1]
+ %664 = fadd float %662, %663 ; [#uses=2]
+ %665 = fmul float %632, %615 ; [#uses=1]
+ %666 = fmul float %634, %613 ; [#uses=1]
+ %667 = fadd float %665, %666 ; [#uses=1]
+ %668 = fmul float %637, %612 ; [#uses=1]
+ %669 = fadd float %667, %668 ; [#uses=2]
+ store float %669, float* %250, align 8
+ store float %664, float* %253, align 4
+ store float %659, float* %256, align 8
+ store float 0.000000e+00, float* %259, align 4
+ store float %654, float* %262, align 8
+ store float %649, float* %265, align 4
+ store float %644, float* %268, align 8
+ store float 0.000000e+00, float* %271, align 4
+ store float %639, float* %274, align 8
+ store float %631, float* %277, align 4
+ store float %623, float* %280, align 8
+ store float 0.000000e+00, float* %283, align 4
+ %670 = load float* %299, align 4 ; [#uses=2]
+ store float %670, float* %298, align 8
+ %671 = load float* %302, align 4 ; [#uses=2]
+ store float %671, float* %301, align 4
+ %672 = load float* %305, align 4 ; [#uses=2]
+ store float %672, float* %304, align 8
+ %673 = load float* %308, align 4 ; [#uses=2]
+ store float %673, float* %307, align 4
+ %674 = load float* %311, align 4 ; [#uses=2]
+ store float %674, float* %310, align 8
+ %675 = load float* %314, align 4 ; [#uses=2]
+ store float %675, float* %313, align 4
+ %676 = load float* %317, align 4 ; [#uses=2]
+ store float %676, float* %316, align 8
+ %677 = load float* %320, align 4 ; [#uses=2]
+ store float %677, float* %319, align 4
+ %678 = load float* %323, align 4 ; [#uses=2]
+ store float %678, float* %322, align 8
+ %679 = load float* %326, align 4 ; [#uses=2]
+ store float %679, float* %325, align 4
+ %680 = load float* %329, align 4 ; [#uses=2]
+ store float %680, float* %328, align 8
+ %681 = load float* %332, align 4 ; [#uses=2]
+ store float %681, float* %331, align 4
+ %682 = load float* %335, align 4 ; [#uses=2]
+ store float %682, float* %334, align 8
+ %683 = load float* %338, align 4 ; [#uses=2]
+ store float %683, float* %337, align 4
+ %684 = load float* %341, align 4 ; [#uses=2]
+ store float %684, float* %340, align 8
+ %685 = load float* %344, align 4 ; [#uses=2]
+ store float %685, float* %343, align 4
+ %.pre = load float* %286, align 8 ; [#uses=1]
+ %.pre155 = load float* %289, align 4 ; [#uses=1]
+ %.pre156 = load float* %292, align 8 ; [#uses=1]
+ %.pre157 = load float* %295, align 4 ; [#uses=1]
+ br label %bb39
+
+bb38: ; preds = %bb31
+ %686 = load float* %251, align 4 ; [#uses=2]
+ store float %686, float* %250, align 8
+ %687 = load float* %254, align 4 ; [#uses=2]
+ store float %687, float* %253, align 4
+ %688 = load float* %257, align 4 ; [#uses=2]
+ store float %688, float* %256, align 8
+ %689 = load float* %260, align 4 ; [#uses=2]
+ store float %689, float* %259, align 4
+ %690 = load float* %263, align 4 ; [#uses=2]
+ store float %690, float* %262, align 8
+ %691 = load float* %266, align 4 ; [#uses=2]
+ store float %691, float* %265, align 4
+ %692 = load float* %269, align 4 ; [#uses=2]
+ store float %692, float* %268, align 8
+ %693 = load float* %272, align 4 ; [#uses=2]
+ store float %693, float* %271, align 4
+ %694 = load float* %275, align 4 ; [#uses=2]
+ store float %694, float* %274, align 8
+ %695 = load float* %278, align 4 ; [#uses=2]
+ store float %695, float* %277, align 4
+ %696 = load float* %281, align 4 ; [#uses=2]
+ store float %696, float* %280, align 8
+ %697 = load float* %284, align 4 ; [#uses=2]
+ store float %697, float* %283, align 4
+ %698 = load float* %287, align 4 ; [#uses=2]
+ store float %698, float* %286, align 8
+ %699 = load float* %290, align 4 ; [#uses=2]
+ store float %699, float* %289, align 4
+ %700 = load float* %293, align 4 ; [#uses=2]
+ store float %700, float* %292, align 8
+ %701 = load float* %296, align 4 ; [#uses=2]
+ store float %701, float* %295, align 4
+ %702 = fsub float -0.000000e+00, %522 ; [#uses=4]
+ %703 = fsub float -0.000000e+00, %523 ; [#uses=4]
+ %704 = fsub float -0.000000e+00, %524 ; [#uses=4]
+ %705 = fmul float %521, %509 ; [#uses=1]
+ %706 = fmul float %512, %704 ; [#uses=1]
+ %707 = fsub float %705, %706 ; [#uses=1]
+ %708 = fmul float %511, %703 ; [#uses=1]
+ %709 = fsub float %707, %708 ; [#uses=1]
+ %710 = fmul float %510, %702 ; [#uses=1]
+ %711 = fsub float %709, %710 ; [#uses=4]
+ %712 = fmul float %521, %510 ; [#uses=1]
+ %713 = fmul float %509, %702 ; [#uses=1]
+ %714 = fadd float %712, %713 ; [#uses=1]
+ %715 = fmul float %511, %704 ; [#uses=1]
+ %716 = fadd float %714, %715 ; [#uses=1]
+ %717 = fmul float %512, %703 ; [#uses=1]
+ %718 = fsub float %716, %717 ; [#uses=4]
+ %719 = fmul float %521, %511 ; [#uses=1]
+ %720 = fmul float %509, %703 ; [#uses=1]
+ %721 = fadd float %719, %720 ; [#uses=1]
+ %722 = fmul float %512, %702 ; [#uses=1]
+ %723 = fadd float %721, %722 ; [#uses=1]
+ %724 = fmul float %510, %704 ; [#uses=1]
+ %725 = fsub float %723, %724 ; [#uses=4]
+ %726 = fmul float %521, %512 ; [#uses=1]
+ %727 = fmul float %509, %704 ; [#uses=1]
+ %728 = fadd float %726, %727 ; [#uses=1]
+ %729 = fmul float %510, %703 ; [#uses=1]
+ %730 = fadd float %728, %729 ; [#uses=1]
+ %731 = fmul float %511, %702 ; [#uses=1]
+ %732 = fsub float %730, %731 ; [#uses=4]
+ %733 = fmul float %711, %521 ; [#uses=1]
+ %734 = fmul float %732, %524 ; [#uses=1]
+ %735 = fsub float %733, %734 ; [#uses=1]
+ %736 = fmul float %725, %523 ; [#uses=1]
+ %737 = fsub float %735, %736 ; [#uses=1]
+ %738 = fmul float %718, %522 ; [#uses=1]
+ %739 = fsub float %737, %738 ; [#uses=5]
+ %740 = fmul float %711, %522 ; [#uses=1]
+ %741 = fmul float %718, %521 ; [#uses=1]
+ %742 = fadd float %740, %741 ; [#uses=1]
+ %743 = fmul float %732, %523 ; [#uses=1]
+ %744 = fadd float %742, %743 ; [#uses=1]
+ %745 = fmul float %725, %524 ; [#uses=1]
+ %746 = fsub float %744, %745 ; [#uses=4]
+ %747 = fmul float %711, %523 ; [#uses=1]
+ %748 = fmul float %725, %521 ; [#uses=1]
+ %749 = fadd float %747, %748 ; [#uses=1]
+ %750 = fmul float %718, %524 ; [#uses=1]
+ %751 = fadd float %749, %750 ; [#uses=1]
+ %752 = fmul float %732, %522 ; [#uses=1]
+ %753 = fsub float %751, %752 ; [#uses=5]
+ %754 = fmul float %711, %524 ; [#uses=1]
+ %755 = fmul float %732, %521 ; [#uses=1]
+ %756 = fadd float %754, %755 ; [#uses=1]
+ %757 = fmul float %725, %522 ; [#uses=1]
+ %758 = fadd float %756, %757 ; [#uses=1]
+ %759 = fmul float %718, %523 ; [#uses=1]
+ %760 = fsub float %758, %759 ; [#uses=6]
+ %761 = fmul float %760, %760 ; [#uses=1]
+ %762 = fmul float %753, %753 ; [#uses=1]
+ %763 = fadd float %761, %762 ; [#uses=1]
+ %764 = fmul float %746, %746 ; [#uses=1]
+ %765 = fadd float %763, %764 ; [#uses=1]
+ %766 = fmul float %739, %739 ; [#uses=1]
+ %767 = fadd float %765, %766 ; [#uses=1]
+ %768 = fdiv float 2.000000e+00, %767 ; [#uses=3]
+ %769 = fmul float %760, %768 ; [#uses=2]
+ %770 = fmul float %753, %768 ; [#uses=3]
+ %771 = fmul float %746, %768 ; [#uses=4]
+ %772 = fmul float %739, %769 ; [#uses=2]
+ %773 = fmul float %739, %770 ; [#uses=2]
+ %774 = fmul float %739, %771 ; [#uses=2]
+ %775 = fmul float %760, %769 ; [#uses=2]
+ %776 = fmul float %760, %770 ; [#uses=2]
+ %777 = fmul float %760, %771 ; [#uses=2]
+ %778 = fmul float %753, %770 ; [#uses=2]
+ %779 = fmul float %753, %771 ; [#uses=2]
+ %780 = fmul float %746, %771 ; [#uses=2]
+ %781 = fadd float %775, %778 ; [#uses=1]
+ %782 = fsub float 1.000000e+00, %781 ; [#uses=3]
+ %783 = fadd float %779, %772 ; [#uses=3]
+ %784 = fsub float %777, %773 ; [#uses=3]
+ %785 = fsub float %779, %772 ; [#uses=3]
+ %786 = fadd float %775, %780 ; [#uses=1]
+ %787 = fsub float 1.000000e+00, %786 ; [#uses=3]
+ %788 = fadd float %776, %774 ; [#uses=3]
+ %789 = fadd float %777, %773 ; [#uses=3]
+ %790 = fsub float %776, %774 ; [#uses=3]
+ %791 = fadd float %778, %780 ; [#uses=1]
+ %792 = fsub float 1.000000e+00, %791 ; [#uses=3]
+ %793 = load float* %305, align 4 ; [#uses=3]
+ %794 = fmul float %793, %784 ; [#uses=1]
+ %795 = load float* %317, align 4 ; [#uses=3]
+ %796 = fmul float %795, %783 ; [#uses=1]
+ %797 = fadd float %794, %796 ; [#uses=1]
+ %798 = load float* %329, align 4 ; [#uses=3]
+ %799 = fmul float %798, %782 ; [#uses=1]
+ %800 = fadd float %797, %799 ; [#uses=2]
+ %801 = load float* %302, align 4 ; [#uses=3]
+ %802 = fmul float %801, %784 ; [#uses=1]
+ %803 = load float* %314, align 4 ; [#uses=3]
+ %804 = fmul float %803, %783 ; [#uses=1]
+ %805 = fadd float %802, %804 ; [#uses=1]
+ %806 = load float* %326, align 4 ; [#uses=3]
+ %807 = fmul float %806, %782 ; [#uses=1]
+ %808 = fadd float %805, %807 ; [#uses=2]
+ %809 = load float* %299, align 4 ; [#uses=3]
+ %810 = fmul float %809, %784 ; [#uses=1]
+ %811 = load float* %311, align 4 ; [#uses=3]
+ %812 = fmul float %811, %783 ; [#uses=1]
+ %813 = fadd float %810, %812 ; [#uses=1]
+ %814 = load float* %323, align 4 ; [#uses=3]
+ %815 = fmul float %814, %782 ; [#uses=1]
+ %816 = fadd float %813, %815 ; [#uses=2]
+ %817 = fmul float %793, %788 ; [#uses=1]
+ %818 = fmul float %795, %787 ; [#uses=1]
+ %819 = fadd float %817, %818 ; [#uses=1]
+ %820 = fmul float %798, %785 ; [#uses=1]
+ %821 = fadd float %819, %820 ; [#uses=2]
+ %822 = fmul float %801, %788 ; [#uses=1]
+ %823 = fmul float %803, %787 ; [#uses=1]
+ %824 = fadd float %822, %823 ; [#uses=1]
+ %825 = fmul float %806, %785 ; [#uses=1]
+ %826 = fadd float %824, %825 ; [#uses=2]
+ %827 = fmul float %809, %788 ; [#uses=1]
+ %828 = fmul float %811, %787 ; [#uses=1]
+ %829 = fadd float %827, %828 ; [#uses=1]
+ %830 = fmul float %814, %785 ; [#uses=1]
+ %831 = fadd float %829, %830 ; [#uses=2]
+ %832 = fmul float %793, %792 ; [#uses=1]
+ %833 = fmul float %795, %790 ; [#uses=1]
+ %834 = fadd float %832, %833 ; [#uses=1]
+ %835 = fmul float %798, %789 ; [#uses=1]
+ %836 = fadd float %834, %835 ; [#uses=2]
+ %837 = fmul float %801, %792 ; [#uses=1]
+ %838 = fmul float %803, %790 ; [#uses=1]
+ %839 = fadd float %837, %838 ; [#uses=1]
+ %840 = fmul float %806, %789 ; [#uses=1]
+ %841 = fadd float %839, %840 ; [#uses=2]
+ %842 = fmul float %809, %792 ; [#uses=1]
+ %843 = fmul float %811, %790 ; [#uses=1]
+ %844 = fadd float %842, %843 ; [#uses=1]
+ %845 = fmul float %814, %789 ; [#uses=1]
+ %846 = fadd float %844, %845 ; [#uses=2]
+ store float %846, float* %298, align 8
+ store float %841, float* %301, align 4
+ store float %836, float* %304, align 8
+ store float 0.000000e+00, float* %307, align 4
+ store float %831, float* %310, align 8
+ store float %826, float* %313, align 4
+ store float %821, float* %316, align 8
+ store float 0.000000e+00, float* %319, align 4
+ store float %816, float* %322, align 8
+ store float %808, float* %325, align 4
+ store float %800, float* %328, align 8
+ store float 0.000000e+00, float* %331, align 4
+ %.pre158 = load float* %334, align 8 ; [#uses=1]
+ %.pre159 = load float* %337, align 4 ; [#uses=1]
+ %.pre160 = load float* %340, align 8 ; [#uses=1]
+ %.pre161 = load float* %343, align 4 ; [#uses=1]
+ br label %bb39
+
+bb39: ; preds = %bb38, %bb37
+ %847 = phi float [ %.pre161, %bb38 ], [ %685, %bb37 ] ; [#uses=1]
+ %848 = phi float [ %.pre160, %bb38 ], [ %684, %bb37 ] ; [#uses=1]
+ %849 = phi float [ %.pre159, %bb38 ], [ %683, %bb37 ] ; [#uses=1]
+ %850 = phi float [ %.pre158, %bb38 ], [ %682, %bb37 ] ; [#uses=1]
+ %851 = phi float [ 0.000000e+00, %bb38 ], [ %681, %bb37 ] ; [#uses=1]
+ %852 = phi float [ %800, %bb38 ], [ %680, %bb37 ] ; [#uses=1]
+ %853 = phi float [ %808, %bb38 ], [ %679, %bb37 ] ; [#uses=1]
+ %854 = phi float [ %816, %bb38 ], [ %678, %bb37 ] ; [#uses=1]
+ %855 = phi float [ 0.000000e+00, %bb38 ], [ %677, %bb37 ] ; [#uses=1]
+ %856 = phi float [ %821, %bb38 ], [ %676, %bb37 ] ; [#uses=1]
+ %857 = phi float [ %826, %bb38 ], [ %675, %bb37 ] ; [#uses=1]
+ %858 = phi float [ %831, %bb38 ], [ %674, %bb37 ] ; [#uses=1]
+ %859 = phi float [ 0.000000e+00, %bb38 ], [ %673, %bb37 ] ; [#uses=1]
+ %860 = phi float [ %836, %bb38 ], [ %672, %bb37 ] ; [#uses=1]
+ %861 = phi float [ %841, %bb38 ], [ %671, %bb37 ] ; [#uses=1]
+ %862 = phi float [ %846, %bb38 ], [ %670, %bb37 ] ; [#uses=1]
+ %863 = phi float [ %701, %bb38 ], [ %.pre157, %bb37 ] ; [#uses=1]
+ %864 = phi float [ %700, %bb38 ], [ %.pre156, %bb37 ] ; [#uses=1]
+ %865 = phi float [ %699, %bb38 ], [ %.pre155, %bb37 ] ; [#uses=1]
+ %866 = phi float [ %698, %bb38 ], [ %.pre, %bb37 ] ; [#uses=1]
+ %867 = phi float [ %697, %bb38 ], [ 0.000000e+00, %bb37 ] ; [#uses=1]
+ %868 = phi float [ %696, %bb38 ], [ %623, %bb37 ] ; [#uses=1]
+ %869 = phi float [ %695, %bb38 ], [ %631, %bb37 ] ; [#uses=1]
+ %870 = phi float [ %694, %bb38 ], [ %639, %bb37 ] ; [#uses=1]
+ %871 = phi float [ %693, %bb38 ], [ 0.000000e+00, %bb37 ] ; [#uses=1]
+ %872 = phi float [ %692, %bb38 ], [ %644, %bb37 ] ; [#uses=1]
+ %873 = phi float [ %691, %bb38 ], [ %649, %bb37 ] ; [#uses=1]
+ %874 = phi float [ %690, %bb38 ], [ %654, %bb37 ] ; [#uses=1]
+ %875 = phi float [ %689, %bb38 ], [ 0.000000e+00, %bb37 ] ; [#uses=1]
+ %876 = phi float [ %688, %bb38 ], [ %659, %bb37 ] ; [#uses=1]
+ %877 = phi float [ %687, %bb38 ], [ %664, %bb37 ] ; [#uses=1]
+ %878 = phi float [ %686, %bb38 ], [ %669, %bb37 ] ; [#uses=1]
+ %879 = load %struct.btActionInterface** %346, align 4 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV24btPerturbedContactResult, i32 0, i32 2), i32 (...)*** %451, align 8
+ store %struct.btManifoldResult* %resultOut, %struct.btManifoldResult** %452, align 8
+ store float %878, float* %453, align 4
+ store float %877, float* %454, align 4
+ store float %876, float* %455, align 4
+ store float %875, float* %456, align 4
+ store float %874, float* %457, align 4
+ store float %873, float* %458, align 4
+ store float %872, float* %459, align 4
+ store float %871, float* %460, align 4
+ store float %870, float* %461, align 4
+ store float %869, float* %462, align 4
+ store float %868, float* %463, align 4
+ store float %867, float* %464, align 4
+ store float %866, float* %465, align 4
+ store float %865, float* %466, align 4
+ store float %864, float* %467, align 4
+ store float %863, float* %468, align 4
+ store float %862, float* %469, align 4
+ store float %861, float* %470, align 4
+ store float %860, float* %471, align 4
+ store float %859, float* %472, align 4
+ store float %858, float* %473, align 4
+ store float %857, float* %474, align 4
+ store float %856, float* %475, align 4
+ store float %855, float* %476, align 4
+ store float %854, float* %477, align 4
+ store float %853, float* %478, align 4
+ store float %852, float* %479, align 4
+ store float %851, float* %480, align 4
+ store float %850, float* %481, align 4
+ store float %849, float* %482, align 4
+ store float %848, float* %483, align 4
+ store float %847, float* %484, align 4
+ store float %unPerturbedTransform.0.0.0.0.0.0.ph, float* %485, align 4
+ store float %unPerturbedTransform.0.0.0.0.1.0.ph, float* %486, align 4
+ store float %unPerturbedTransform.0.0.0.0.2.0.ph, float* %487, align 4
+ store float %unPerturbedTransform.0.0.0.0.3.0.ph, float* %488, align 4
+ store float %unPerturbedTransform.0.0.1.0.0.0.ph, float* %489, align 4
+ store float %unPerturbedTransform.0.0.1.0.1.0.ph, float* %490, align 4
+ store float %unPerturbedTransform.0.0.1.0.2.0.ph, float* %491, align 4
+ store float %unPerturbedTransform.0.0.1.0.3.0.ph, float* %492, align 4
+ store float %unPerturbedTransform.0.0.2.0.0.0.ph, float* %493, align 4
+ store float %unPerturbedTransform.0.0.2.0.1.0.ph, float* %494, align 4
+ store float %unPerturbedTransform.0.0.2.0.2.0.ph, float* %495, align 4
+ store float %unPerturbedTransform.0.0.2.0.3.0.ph, float* %496, align 4
+ store float %unPerturbedTransform.1.0.0.0.ph, float* %497, align 4
+ store float %unPerturbedTransform.1.0.1.0.ph, float* %498, align 4
+ store float %unPerturbedTransform.1.0.2.0.ph, float* %499, align 4
+ store float %unPerturbedTransform.1.0.3.0.ph, float* %500, align 4
+ store i8 %perturbeA.0, i8* %501, align 4
+ store %struct.btActionInterface* %879, %struct.btActionInterface** %502, align 8
+ call void @_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.btGjkPairDetector* %gjkPairDetector, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, %struct.btActionInterface* %503, %struct.btActionInterface* %879, i8 zeroext 0)
+ br label %bb40
+
+bb40: ; preds = %bb39, %bb29
+ %880 = load i32* %349, align 4 ; [#uses=2]
+ %881 = icmp sgt i32 %880, %tmp ; [#uses=1]
+ br i1 %881, label %bb29, label %bb42
+
+bb42: ; preds = %bb40, %bb41.preheader, %bb14, %bb13
+ %882 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %883 = load i8* %882, align 4 ; [#uses=1]
+ %toBool43 = icmp eq i8 %883, 0 ; [#uses=1]
+ br i1 %toBool43, label %_ZN16btManifoldResult20refreshContactPointsEv.exit54, label %bb44
+
+bb44: ; preds = %bb42
+ %884 = load %struct.btPersistentManifold** %15, align 4 ; [#uses=4]
+ %885 = getelementptr inbounds %struct.btPersistentManifold* %884, i32 0, i32 4 ; [#uses=1]
+ %886 = load i32* %885, align 4 ; [#uses=1]
+ %887 = icmp eq i32 %886, 0 ; [#uses=1]
+ br i1 %887, label %_ZN16btManifoldResult20refreshContactPointsEv.exit54, label %bb.i
+
+bb.i: ; preds = %bb44
+ %888 = getelementptr inbounds %struct.btPersistentManifold* %884, i32 0, i32 2 ; [#uses=1]
+ %889 = load i8** %888, align 4 ; [#uses=1]
+ %890 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 4 ; [#uses=1]
+ %891 = load %struct.btCollisionObject** %890, align 4 ; [#uses=1]
+ %892 = bitcast %struct.btCollisionObject* %891 to i8* ; [#uses=1]
+ %893 = icmp eq i8* %889, %892 ; [#uses=1]
+ br i1 %893, label %bb3.i, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %894 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ %895 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %884, %struct.btTransform* %895, %struct.btTransform* %894)
+ ret void
+
+bb3.i: ; preds = %bb.i
+ %896 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ %897 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %884, %struct.btTransform* %897, %struct.btTransform* %896)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btConvexConvexAlgorithmD0Ev(%struct.btConvex2dConvex2dAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV23btConvexConvexAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ %14 = bitcast %struct.btConvex2dConvex2dAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %14) nounwind
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %15 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %15)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN23btConvexConvexAlgorithmD1Ev(%struct.btConvex2dConvex2dAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV23btConvexConvexAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN23btConvexConvexAlgorithmD2Ev(%struct.btConvex2dConvex2dAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV23btConvexConvexAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN23btConvexConvexAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolverii(%struct.btConvex2dConvex2dAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %pdSolver, i32 %numPerturbationIterations, i32 %minimumPointsPerturbationThreshold) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ %1 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV23btConvexConvexAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %2, align 4
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %pdSolver, %struct.btActionInterface** %3, align 4
+ %4 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 0, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %5, align 4
+ %6 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ store i8 0, i8* %6, align 4
+ %7 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 %numPerturbationIterations, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 %minimumPointsPerturbationThreshold, i32* %8, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btConvexConvexAlgorithmC2EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolverii(%struct.btConvex2dConvex2dAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %pdSolver, i32 %numPerturbationIterations, i32 %minimumPointsPerturbationThreshold) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ %1 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV23btConvexConvexAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %2, align 4
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %pdSolver, %struct.btActionInterface** %3, align 4
+ %4 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 0, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %5, align 4
+ %6 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ store i8 0, i8* %6, align 4
+ %7 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 %numPerturbationIterations, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 %minimumPointsPerturbationThreshold, i32* %8, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN31btConvexPlaneCollisionAlgorithmC2EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_bii(%struct.btConvexPlaneCollisionAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1, i8 zeroext %isSwapped, i32 %numPerturbationIterations, i32 %minimumPointsPerturbationThreshold) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfo(%struct.btCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci)
+ %1 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV31btConvexPlaneCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=2]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %3, align 4
+ %4 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 %isSwapped, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 %numPerturbationIterations, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 %minimumPointsPerturbationThreshold, i32* %6, align 4
+ %toBool = icmp eq i8 %isSwapped, 0 ; [#uses=2]
+ %iftmp.162.0 = select i1 %toBool, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1 ; [#uses=2]
+ %iftmp.163.0 = select i1 %toBool, %struct.btCollisionObject* %col1, %struct.btCollisionObject* %col0 ; [#uses=2]
+ %7 = icmp eq %struct.btPersistentManifold* %mf, null ; [#uses=1]
+ br i1 %7, label %bb7, label %bb13
+
+bb7: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ %9 = load %struct.btActionInterface** %8, align 4 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btActionInterface* %9, i32 0, i32 0 ; [#uses=1]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 6 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to i8 (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*)* ; [#uses=1]
+ %15 = invoke zeroext i8 %14(%struct.btActionInterface* %9, %struct.btCollisionObject* %iftmp.162.0, %struct.btCollisionObject* %iftmp.163.0)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb7
+ %toBool8not = icmp eq i8 %15, 0 ; [#uses=1]
+ br i1 %toBool8not, label %bb13, label %bb16
+
+bb13: ; preds = %invcont, %entry
+ ret void
+
+bb16: ; preds = %invcont
+ %16 = load %struct.btActionInterface** %8, align 4 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btActionInterface* %16, i32 0, i32 0 ; [#uses=1]
+ %18 = load i32 (...)*** %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i32 (...)** %18, i32 3 ; [#uses=1]
+ %20 = load i32 (...)** %19, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %20 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %22 = bitcast %struct.btCollisionObject* %iftmp.162.0 to i8* ; [#uses=1]
+ %23 = bitcast %struct.btCollisionObject* %iftmp.163.0 to i8* ; [#uses=1]
+ %24 = invoke %struct.btPersistentManifold* %21(%struct.btActionInterface* %16, i8* %22, i8* %23)
+ to label %invcont17 unwind label %lpad ; [#uses=1]
+
+invcont17: ; preds = %bb16
+ store %struct.btPersistentManifold* %24, %struct.btPersistentManifold** %3, align 4
+ store i8 1, i8* %2, align 4
+ ret void
+
+lpad: ; preds = %bb16, %bb7
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV20btCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define float @_ZN31btConvexPlaneCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btConvexPlaneCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %col0, %struct.btCollisionObject* nocapture %col1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* nocapture %resultOut) nounwind readnone align 2 {
+entry:
+ ret float 1.000000e+00
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN31btConvexPlaneCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(%struct.btConvexPlaneCollisionAlgorithm* nocapture %this, %"struct.btAlignedObjectArray<btPersistentManifold*>"* nocapture %manifoldArray) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb1
+
+bb1: ; preds = %bb
+ tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, %struct.btPersistentManifold** %0) inlinehint
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN31btConvexPlaneCollisionAlgorithm20collideSingleContactERK12btQuaternionP17btCollisionObjectS4_RK16btDispatcherInfoP16btManifoldResult(%struct.btConvexPlaneCollisionAlgorithm* nocapture %this, %struct.btQuaternion* nocapture %perturbeRot, %struct.btCollisionObject* nocapture %body0, %struct.btCollisionObject* nocapture %body1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %vtx = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %normalOnSurfaceB = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %pOnB = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=2]
+ %iftmp.167.0 = select i1 %toBool, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=13]
+ %iftmp.168.0 = select i1 %toBool, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=13]
+ %3 = getelementptr inbounds %struct.btCollisionObject* %iftmp.167.0, i32 0, i32 9 ; [#uses=1]
+ %4 = load %struct.btCollisionShape** %3, align 4 ; [#uses=2]
+ %5 = bitcast %struct.btCollisionShape* %4 to %struct.btConvexShape* ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %iftmp.168.0, i32 0, i32 9 ; [#uses=1]
+ %7 = load %struct.btCollisionShape** %6, align 4 ; [#uses=4]
+ %8 = getelementptr inbounds %struct.btCollisionShape* %7, i32 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btCollisionShape* %7, i32 5, i32 1 ; [#uses=1]
+ %10 = bitcast i32* %9 to float* ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCollisionObject* %iftmp.167.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=6]
+ %13 = getelementptr inbounds %struct.btCollisionObject* %iftmp.167.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=6]
+ %15 = getelementptr inbounds %struct.btCollisionObject* %iftmp.167.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=6]
+ %17 = getelementptr inbounds %struct.btCollisionObject* %iftmp.167.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=6]
+ %19 = getelementptr inbounds %struct.btCollisionObject* %iftmp.167.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=6]
+ %21 = getelementptr inbounds %struct.btCollisionObject* %iftmp.167.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=6]
+ %23 = getelementptr inbounds %struct.btCollisionObject* %iftmp.167.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=6]
+ %25 = getelementptr inbounds %struct.btCollisionObject* %iftmp.167.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=6]
+ %27 = getelementptr inbounds %struct.btCollisionObject* %iftmp.167.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=6]
+ %29 = getelementptr inbounds %struct.btCollisionObject* %iftmp.167.0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=3]
+ %31 = getelementptr inbounds %struct.btCollisionObject* %iftmp.167.0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=3]
+ %33 = getelementptr inbounds %struct.btCollisionObject* %iftmp.167.0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=3]
+ %35 = getelementptr inbounds %struct.btCollisionObject* %iftmp.168.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %36 = getelementptr inbounds %struct.btCollisionObject* %iftmp.168.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %37 = getelementptr inbounds %struct.btCollisionObject* %iftmp.168.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %38 = getelementptr inbounds %struct.btCollisionObject* %iftmp.168.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %39 = getelementptr inbounds %struct.btCollisionObject* %iftmp.168.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %40 = getelementptr inbounds %struct.btCollisionObject* %iftmp.168.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %41 = getelementptr inbounds %struct.btCollisionObject* %iftmp.168.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %42 = getelementptr inbounds %struct.btCollisionObject* %iftmp.168.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %43 = getelementptr inbounds %struct.btCollisionObject* %iftmp.168.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %44 = load float* %43, align 4 ; [#uses=8]
+ %45 = load float* %42, align 4 ; [#uses=8]
+ %46 = load float* %41, align 4 ; [#uses=8]
+ %47 = load float* %40, align 4 ; [#uses=8]
+ %48 = load float* %39, align 4 ; [#uses=8]
+ %49 = load float* %38, align 4 ; [#uses=8]
+ %50 = load float* %37, align 4 ; [#uses=8]
+ %51 = load float* %36, align 4 ; [#uses=8]
+ %52 = load float* %35, align 4 ; [#uses=8]
+ %53 = getelementptr inbounds %struct.btCollisionObject* %iftmp.168.0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=2]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = fsub float -0.000000e+00, %54 ; [#uses=3]
+ %56 = getelementptr inbounds %struct.btCollisionObject* %iftmp.168.0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=2]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = fsub float -0.000000e+00, %57 ; [#uses=3]
+ %59 = getelementptr inbounds %struct.btCollisionObject* %iftmp.168.0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=2]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ %61 = fsub float -0.000000e+00, %60 ; [#uses=3]
+ %62 = fmul float %50, %61 ; [#uses=1]
+ %63 = fmul float %51, %58 ; [#uses=1]
+ %64 = fadd float %62, %63 ; [#uses=1]
+ %65 = fmul float %52, %55 ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=1]
+ %67 = fmul float %47, %61 ; [#uses=1]
+ %68 = fmul float %48, %58 ; [#uses=1]
+ %69 = fadd float %67, %68 ; [#uses=1]
+ %70 = fmul float %49, %55 ; [#uses=1]
+ %71 = fadd float %69, %70 ; [#uses=1]
+ %72 = fmul float %44, %61 ; [#uses=1]
+ %73 = fmul float %45, %58 ; [#uses=1]
+ %74 = fadd float %72, %73 ; [#uses=1]
+ %75 = fmul float %46, %55 ; [#uses=1]
+ %76 = fadd float %74, %75 ; [#uses=1]
+ %77 = fmul float %50, %30 ; [#uses=1]
+ %78 = fmul float %51, %32 ; [#uses=1]
+ %79 = fadd float %77, %78 ; [#uses=1]
+ %80 = fmul float %52, %34 ; [#uses=1]
+ %81 = fadd float %79, %80 ; [#uses=1]
+ %82 = fadd float %81, %66 ; [#uses=1]
+ %83 = fmul float %47, %30 ; [#uses=1]
+ %84 = fmul float %48, %32 ; [#uses=1]
+ %85 = fadd float %83, %84 ; [#uses=1]
+ %86 = fmul float %49, %34 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=1]
+ %88 = fadd float %87, %71 ; [#uses=1]
+ %89 = fmul float %44, %30 ; [#uses=1]
+ %90 = fmul float %45, %32 ; [#uses=1]
+ %91 = fadd float %89, %90 ; [#uses=1]
+ %92 = fmul float %46, %34 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = fadd float %93, %76 ; [#uses=1]
+ %95 = fmul float %16, %50 ; [#uses=1]
+ %96 = fmul float %22, %51 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %28, %52 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=1]
+ %100 = fmul float %14, %50 ; [#uses=1]
+ %101 = fmul float %20, %51 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fmul float %26, %52 ; [#uses=1]
+ %104 = fadd float %102, %103 ; [#uses=1]
+ %105 = fmul float %12, %50 ; [#uses=1]
+ %106 = fmul float %18, %51 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = fmul float %24, %52 ; [#uses=1]
+ %109 = fadd float %107, %108 ; [#uses=1]
+ %110 = fmul float %16, %47 ; [#uses=1]
+ %111 = fmul float %22, %48 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=1]
+ %113 = fmul float %28, %49 ; [#uses=1]
+ %114 = fadd float %112, %113 ; [#uses=1]
+ %115 = fmul float %14, %47 ; [#uses=1]
+ %116 = fmul float %20, %48 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=1]
+ %118 = fmul float %26, %49 ; [#uses=1]
+ %119 = fadd float %117, %118 ; [#uses=1]
+ %120 = fmul float %12, %47 ; [#uses=1]
+ %121 = fmul float %18, %48 ; [#uses=1]
+ %122 = fadd float %120, %121 ; [#uses=1]
+ %123 = fmul float %24, %49 ; [#uses=1]
+ %124 = fadd float %122, %123 ; [#uses=1]
+ %125 = fmul float %16, %44 ; [#uses=1]
+ %126 = fmul float %22, %45 ; [#uses=1]
+ %127 = fadd float %125, %126 ; [#uses=1]
+ %128 = fmul float %28, %46 ; [#uses=1]
+ %129 = fadd float %127, %128 ; [#uses=1]
+ %130 = fmul float %14, %44 ; [#uses=1]
+ %131 = fmul float %20, %45 ; [#uses=1]
+ %132 = fadd float %130, %131 ; [#uses=1]
+ %133 = fmul float %26, %46 ; [#uses=1]
+ %134 = fadd float %132, %133 ; [#uses=1]
+ %135 = fmul float %12, %44 ; [#uses=1]
+ %136 = fmul float %18, %45 ; [#uses=1]
+ %137 = fadd float %135, %136 ; [#uses=1]
+ %138 = fmul float %24, %46 ; [#uses=1]
+ %139 = fadd float %137, %138 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btQuaternion* %perturbeRot, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=6]
+ %142 = fmul float %141, %141 ; [#uses=1]
+ %143 = getelementptr inbounds %struct.btQuaternion* %perturbeRot, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %144 = load float* %143, align 4 ; [#uses=5]
+ %145 = fmul float %144, %144 ; [#uses=1]
+ %146 = fadd float %142, %145 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btQuaternion* %perturbeRot, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %148 = load float* %147, align 4 ; [#uses=4]
+ %149 = fmul float %148, %148 ; [#uses=1]
+ %150 = fadd float %146, %149 ; [#uses=1]
+ %151 = getelementptr inbounds %struct.btQuaternion* %perturbeRot, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %152 = load float* %151, align 4 ; [#uses=5]
+ %153 = fmul float %152, %152 ; [#uses=1]
+ %154 = fadd float %150, %153 ; [#uses=1]
+ %155 = fdiv float 2.000000e+00, %154 ; [#uses=3]
+ %156 = fmul float %141, %155 ; [#uses=2]
+ %157 = fmul float %144, %155 ; [#uses=3]
+ %158 = fmul float %148, %155 ; [#uses=4]
+ %159 = fmul float %152, %156 ; [#uses=2]
+ %160 = fmul float %152, %157 ; [#uses=2]
+ %161 = fmul float %152, %158 ; [#uses=2]
+ %162 = fmul float %141, %156 ; [#uses=2]
+ %163 = fmul float %141, %157 ; [#uses=2]
+ %164 = fmul float %141, %158 ; [#uses=2]
+ %165 = fmul float %144, %157 ; [#uses=2]
+ %166 = fmul float %144, %158 ; [#uses=2]
+ %167 = fmul float %148, %158 ; [#uses=2]
+ %168 = fadd float %162, %165 ; [#uses=1]
+ %169 = fsub float 1.000000e+00, %168 ; [#uses=3]
+ %170 = fadd float %166, %159 ; [#uses=3]
+ %171 = fsub float %164, %160 ; [#uses=3]
+ %172 = fsub float %166, %159 ; [#uses=3]
+ %173 = fadd float %162, %167 ; [#uses=1]
+ %174 = fsub float 1.000000e+00, %173 ; [#uses=3]
+ %175 = fadd float %163, %161 ; [#uses=3]
+ %176 = fadd float %164, %160 ; [#uses=3]
+ %177 = fsub float %163, %161 ; [#uses=3]
+ %178 = fadd float %165, %167 ; [#uses=1]
+ %179 = fsub float 1.000000e+00, %178 ; [#uses=3]
+ %180 = fmul float %176, %24 ; [#uses=1]
+ %181 = fmul float %172, %26 ; [#uses=1]
+ %182 = fadd float %180, %181 ; [#uses=1]
+ %183 = fmul float %169, %28 ; [#uses=1]
+ %184 = fadd float %182, %183 ; [#uses=3]
+ %185 = fmul float %177, %24 ; [#uses=1]
+ %186 = fmul float %174, %26 ; [#uses=1]
+ %187 = fadd float %185, %186 ; [#uses=1]
+ %188 = fmul float %170, %28 ; [#uses=1]
+ %189 = fadd float %187, %188 ; [#uses=3]
+ %190 = fmul float %179, %24 ; [#uses=1]
+ %191 = fmul float %175, %26 ; [#uses=1]
+ %192 = fadd float %190, %191 ; [#uses=1]
+ %193 = fmul float %171, %28 ; [#uses=1]
+ %194 = fadd float %192, %193 ; [#uses=3]
+ %195 = fmul float %176, %18 ; [#uses=1]
+ %196 = fmul float %172, %20 ; [#uses=1]
+ %197 = fadd float %195, %196 ; [#uses=1]
+ %198 = fmul float %169, %22 ; [#uses=1]
+ %199 = fadd float %197, %198 ; [#uses=3]
+ %200 = fmul float %177, %18 ; [#uses=1]
+ %201 = fmul float %174, %20 ; [#uses=1]
+ %202 = fadd float %200, %201 ; [#uses=1]
+ %203 = fmul float %170, %22 ; [#uses=1]
+ %204 = fadd float %202, %203 ; [#uses=3]
+ %205 = fmul float %179, %18 ; [#uses=1]
+ %206 = fmul float %175, %20 ; [#uses=1]
+ %207 = fadd float %205, %206 ; [#uses=1]
+ %208 = fmul float %171, %22 ; [#uses=1]
+ %209 = fadd float %207, %208 ; [#uses=3]
+ %210 = fmul float %176, %12 ; [#uses=1]
+ %211 = fmul float %172, %14 ; [#uses=1]
+ %212 = fadd float %210, %211 ; [#uses=1]
+ %213 = fmul float %169, %16 ; [#uses=1]
+ %214 = fadd float %212, %213 ; [#uses=3]
+ %215 = fmul float %177, %12 ; [#uses=1]
+ %216 = fmul float %174, %14 ; [#uses=1]
+ %217 = fadd float %215, %216 ; [#uses=1]
+ %218 = fmul float %170, %16 ; [#uses=1]
+ %219 = fadd float %217, %218 ; [#uses=3]
+ %220 = fmul float %179, %12 ; [#uses=1]
+ %221 = fmul float %175, %14 ; [#uses=1]
+ %222 = fadd float %220, %221 ; [#uses=1]
+ %223 = fmul float %171, %16 ; [#uses=1]
+ %224 = fadd float %222, %223 ; [#uses=3]
+ %225 = fmul float %50, %214 ; [#uses=1]
+ %226 = fmul float %51, %199 ; [#uses=1]
+ %227 = fadd float %225, %226 ; [#uses=1]
+ %228 = fmul float %52, %184 ; [#uses=1]
+ %229 = fadd float %227, %228 ; [#uses=1]
+ %230 = fmul float %47, %214 ; [#uses=1]
+ %231 = fmul float %48, %199 ; [#uses=1]
+ %232 = fadd float %230, %231 ; [#uses=1]
+ %233 = fmul float %49, %184 ; [#uses=1]
+ %234 = fadd float %232, %233 ; [#uses=1]
+ %235 = fmul float %44, %214 ; [#uses=1]
+ %236 = fmul float %45, %199 ; [#uses=1]
+ %237 = fadd float %235, %236 ; [#uses=1]
+ %238 = fmul float %46, %184 ; [#uses=1]
+ %239 = fadd float %237, %238 ; [#uses=1]
+ %240 = fmul float %50, %219 ; [#uses=1]
+ %241 = fmul float %51, %204 ; [#uses=1]
+ %242 = fadd float %240, %241 ; [#uses=1]
+ %243 = fmul float %52, %189 ; [#uses=1]
+ %244 = fadd float %242, %243 ; [#uses=1]
+ %245 = fmul float %47, %219 ; [#uses=1]
+ %246 = fmul float %48, %204 ; [#uses=1]
+ %247 = fadd float %245, %246 ; [#uses=1]
+ %248 = fmul float %49, %189 ; [#uses=1]
+ %249 = fadd float %247, %248 ; [#uses=1]
+ %250 = fmul float %44, %219 ; [#uses=1]
+ %251 = fmul float %45, %204 ; [#uses=1]
+ %252 = fadd float %250, %251 ; [#uses=1]
+ %253 = fmul float %46, %189 ; [#uses=1]
+ %254 = fadd float %252, %253 ; [#uses=1]
+ %255 = fmul float %50, %224 ; [#uses=1]
+ %256 = fmul float %51, %209 ; [#uses=1]
+ %257 = fadd float %255, %256 ; [#uses=1]
+ %258 = fmul float %52, %194 ; [#uses=1]
+ %259 = fadd float %257, %258 ; [#uses=1]
+ %260 = fmul float %47, %224 ; [#uses=1]
+ %261 = fmul float %48, %209 ; [#uses=1]
+ %262 = fadd float %260, %261 ; [#uses=1]
+ %263 = fmul float %49, %194 ; [#uses=1]
+ %264 = fadd float %262, %263 ; [#uses=1]
+ %265 = fmul float %44, %224 ; [#uses=1]
+ %266 = fmul float %45, %209 ; [#uses=1]
+ %267 = fadd float %265, %266 ; [#uses=1]
+ %268 = fmul float %46, %194 ; [#uses=1]
+ %269 = fadd float %267, %268 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.btCollisionShape* %4, i32 0, i32 0 ; [#uses=1]
+ %271 = load i32 (...)*** %270, align 4 ; [#uses=1]
+ %272 = getelementptr inbounds i32 (...)** %271, i32 15 ; [#uses=1]
+ %273 = load i32 (...)** %272, align 4 ; [#uses=1]
+ %274 = getelementptr inbounds %struct.btCollisionShape* %7, i32 4, i32 2 ; [#uses=1]
+ %275 = bitcast i8** %274 to float* ; [#uses=3]
+ %276 = load float* %275, align 4 ; [#uses=1]
+ %277 = fsub float -0.000000e+00, %276 ; [#uses=3]
+ %278 = getelementptr inbounds %struct.btCollisionShape* %7, i32 4, i32 1 ; [#uses=1]
+ %279 = bitcast i32* %278 to float* ; [#uses=3]
+ %280 = load float* %279, align 4 ; [#uses=1]
+ %281 = fsub float -0.000000e+00, %280 ; [#uses=3]
+ %282 = bitcast %struct.btCollisionShape* %8 to float* ; [#uses=3]
+ %283 = load float* %282, align 4 ; [#uses=1]
+ %284 = fsub float -0.000000e+00, %283 ; [#uses=3]
+ %285 = fmul float %239, %284 ; [#uses=1]
+ %286 = fmul float %234, %281 ; [#uses=1]
+ %287 = fadd float %285, %286 ; [#uses=1]
+ %288 = fmul float %229, %277 ; [#uses=1]
+ %289 = fadd float %287, %288 ; [#uses=1]
+ %290 = fmul float %254, %284 ; [#uses=1]
+ %291 = fmul float %249, %281 ; [#uses=1]
+ %292 = fadd float %290, %291 ; [#uses=1]
+ %293 = fmul float %244, %277 ; [#uses=1]
+ %294 = fadd float %292, %293 ; [#uses=1]
+ %295 = fmul float %269, %284 ; [#uses=1]
+ %296 = fmul float %264, %281 ; [#uses=1]
+ %297 = fadd float %295, %296 ; [#uses=1]
+ %298 = fmul float %259, %277 ; [#uses=1]
+ %299 = fadd float %297, %298 ; [#uses=1]
+ %300 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %299, float* %300, align 8
+ %301 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %294, float* %301, align 4
+ %302 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %289, float* %302, align 8
+ %303 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %303, align 4
+ %304 = bitcast i32 (...)* %273 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %304(%struct.btQuadWord* noalias sret %vtx, %struct.btConvexShape* %5, %struct.btQuadWord* %0)
+ %305 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 0 ; [#uses=1]
+ %306 = load float* %305, align 8 ; [#uses=3]
+ %307 = fmul float %109, %306 ; [#uses=1]
+ %308 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 1 ; [#uses=1]
+ %309 = load float* %308, align 4 ; [#uses=3]
+ %310 = fmul float %104, %309 ; [#uses=1]
+ %311 = fadd float %307, %310 ; [#uses=1]
+ %312 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 2 ; [#uses=1]
+ %313 = load float* %312, align 8 ; [#uses=3]
+ %314 = fmul float %99, %313 ; [#uses=1]
+ %315 = fadd float %311, %314 ; [#uses=1]
+ %316 = fadd float %315, %82 ; [#uses=2]
+ %317 = fmul float %124, %306 ; [#uses=1]
+ %318 = fmul float %119, %309 ; [#uses=1]
+ %319 = fadd float %317, %318 ; [#uses=1]
+ %320 = fmul float %114, %313 ; [#uses=1]
+ %321 = fadd float %319, %320 ; [#uses=1]
+ %322 = fadd float %321, %88 ; [#uses=2]
+ %323 = fmul float %139, %306 ; [#uses=1]
+ %324 = fmul float %134, %309 ; [#uses=1]
+ %325 = fadd float %323, %324 ; [#uses=1]
+ %326 = fmul float %129, %313 ; [#uses=1]
+ %327 = fadd float %325, %326 ; [#uses=1]
+ %328 = fadd float %327, %94 ; [#uses=2]
+ %329 = load float* %282, align 4 ; [#uses=2]
+ %330 = fmul float %329, %328 ; [#uses=1]
+ %331 = load float* %279, align 4 ; [#uses=2]
+ %332 = fmul float %331, %322 ; [#uses=1]
+ %333 = fadd float %330, %332 ; [#uses=1]
+ %334 = load float* %275, align 4 ; [#uses=2]
+ %335 = fmul float %334, %316 ; [#uses=1]
+ %336 = fadd float %333, %335 ; [#uses=1]
+ %337 = load float* %10, align 4 ; [#uses=1]
+ %338 = fsub float %336, %337 ; [#uses=5]
+ %339 = fmul float %334, %338 ; [#uses=1]
+ %340 = fmul float %331, %338 ; [#uses=1]
+ %341 = fmul float %329, %338 ; [#uses=1]
+ %342 = fsub float %316, %339 ; [#uses=3]
+ %343 = fsub float %322, %340 ; [#uses=3]
+ %344 = fsub float %328, %341 ; [#uses=3]
+ %345 = load float* %41, align 4 ; [#uses=1]
+ %346 = load float* %38, align 4 ; [#uses=1]
+ %347 = load float* %35, align 4 ; [#uses=1]
+ %348 = load float* %53, align 4 ; [#uses=1]
+ %349 = load float* %42, align 4 ; [#uses=1]
+ %350 = load float* %39, align 4 ; [#uses=1]
+ %351 = load float* %36, align 4 ; [#uses=1]
+ %352 = load float* %56, align 4 ; [#uses=1]
+ %353 = load float* %43, align 4 ; [#uses=1]
+ %354 = load float* %40, align 4 ; [#uses=1]
+ %355 = load float* %37, align 4 ; [#uses=1]
+ %356 = load float* %59, align 4 ; [#uses=1]
+ %357 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %358 = load %struct.btPersistentManifold** %357, align 4 ; [#uses=1]
+ %359 = call float @_ZNK20btPersistentManifold27getContactBreakingThresholdEv(%struct.btPersistentManifold* %358) ; [#uses=1]
+ %360 = fcmp ogt float %359, %338 ; [#uses=1]
+ %361 = load %struct.btPersistentManifold** %357, align 4 ; [#uses=1]
+ %362 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 1 ; [#uses=1]
+ store %struct.btPersistentManifold* %361, %struct.btPersistentManifold** %362, align 4
+ br i1 %360, label %bb8, label %return
+
+bb8: ; preds = %entry
+ %363 = fmul float %354, %343 ; [#uses=1]
+ %364 = fmul float %353, %344 ; [#uses=1]
+ %365 = fmul float %350, %343 ; [#uses=1]
+ %366 = fmul float %349, %344 ; [#uses=1]
+ %367 = fmul float %346, %343 ; [#uses=1]
+ %368 = fmul float %345, %344 ; [#uses=1]
+ %369 = fmul float %355, %342 ; [#uses=1]
+ %370 = fadd float %364, %363 ; [#uses=1]
+ %371 = fmul float %351, %342 ; [#uses=1]
+ %372 = fadd float %366, %365 ; [#uses=1]
+ %373 = fmul float %347, %342 ; [#uses=1]
+ %374 = fadd float %368, %367 ; [#uses=1]
+ %375 = fadd float %370, %369 ; [#uses=1]
+ %376 = fadd float %372, %371 ; [#uses=1]
+ %377 = fadd float %374, %373 ; [#uses=1]
+ %378 = fadd float %375, %356 ; [#uses=1]
+ %379 = fadd float %376, %352 ; [#uses=1]
+ %380 = fadd float %377, %348 ; [#uses=1]
+ %381 = load float* %41, align 4 ; [#uses=1]
+ %382 = load float* %282, align 4 ; [#uses=3]
+ %383 = fmul float %381, %382 ; [#uses=1]
+ %384 = load float* %38, align 4 ; [#uses=1]
+ %385 = load float* %279, align 4 ; [#uses=3]
+ %386 = fmul float %384, %385 ; [#uses=1]
+ %387 = fadd float %383, %386 ; [#uses=1]
+ %388 = load float* %35, align 4 ; [#uses=1]
+ %389 = load float* %275, align 4 ; [#uses=3]
+ %390 = fmul float %388, %389 ; [#uses=1]
+ %391 = fadd float %387, %390 ; [#uses=1]
+ %392 = load float* %42, align 4 ; [#uses=1]
+ %393 = fmul float %392, %382 ; [#uses=1]
+ %394 = load float* %39, align 4 ; [#uses=1]
+ %395 = fmul float %394, %385 ; [#uses=1]
+ %396 = fadd float %393, %395 ; [#uses=1]
+ %397 = load float* %36, align 4 ; [#uses=1]
+ %398 = fmul float %397, %389 ; [#uses=1]
+ %399 = fadd float %396, %398 ; [#uses=1]
+ %400 = load float* %43, align 4 ; [#uses=1]
+ %401 = fmul float %400, %382 ; [#uses=1]
+ %402 = load float* %40, align 4 ; [#uses=1]
+ %403 = fmul float %402, %385 ; [#uses=1]
+ %404 = fadd float %401, %403 ; [#uses=1]
+ %405 = load float* %37, align 4 ; [#uses=1]
+ %406 = fmul float %405, %389 ; [#uses=1]
+ %407 = fadd float %404, %406 ; [#uses=1]
+ %408 = getelementptr inbounds %struct.btQuadWord* %normalOnSurfaceB, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %407, float* %408, align 8
+ %409 = getelementptr inbounds %struct.btQuadWord* %normalOnSurfaceB, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %399, float* %409, align 4
+ %410 = getelementptr inbounds %struct.btQuadWord* %normalOnSurfaceB, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %391, float* %410, align 8
+ %411 = getelementptr inbounds %struct.btQuadWord* %normalOnSurfaceB, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %411, align 4
+ %412 = getelementptr inbounds %struct.btQuadWord* %pOnB, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %378, float* %412, align 8
+ %413 = getelementptr inbounds %struct.btQuadWord* %pOnB, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %379, float* %413, align 4
+ %414 = getelementptr inbounds %struct.btQuadWord* %pOnB, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %380, float* %414, align 8
+ %415 = getelementptr inbounds %struct.btQuadWord* %pOnB, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %415, align 4
+ %416 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 0, i32 0 ; [#uses=1]
+ %417 = load i32 (...)*** %416, align 4 ; [#uses=1]
+ %418 = getelementptr inbounds i32 (...)** %417, i32 4 ; [#uses=1]
+ %419 = load i32 (...)** %418, align 4 ; [#uses=1]
+ %420 = bitcast i32 (...)* %419 to void (%struct.btManifoldResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %420(%struct.btManifoldResult* %resultOut, %struct.btQuadWord* %normalOnSurfaceB, %struct.btQuadWord* %pOnB, float %338)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN31btConvexPlaneCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btConvexPlaneCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %body0, %struct.btCollisionObject* nocapture %body1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %0 = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %rotq = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %1 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %2 = load %struct.btPersistentManifold** %1, align 4 ; [#uses=1]
+ %3 = icmp eq %struct.btPersistentManifold* %2, null ; [#uses=1]
+ br i1 %3, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %5, 0 ; [#uses=2]
+ %iftmp.171.0 = select i1 %toBool, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=1]
+ %iftmp.172.0 = select i1 %toBool, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %iftmp.171.0, i32 0, i32 9 ; [#uses=1]
+ %7 = load %struct.btCollisionShape** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btCollisionObject* %iftmp.172.0, i32 0, i32 9 ; [#uses=1]
+ %9 = load %struct.btCollisionShape** %8, align 4 ; [#uses=5]
+ %10 = getelementptr inbounds %struct.btCollisionShape* %9, i32 4 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btQuaternion* %rotq, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 8
+ %12 = getelementptr inbounds %struct.btQuaternion* %rotq, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btQuaternion* %rotq, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 8
+ %14 = getelementptr inbounds %struct.btQuaternion* %rotq, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 1.000000e+00, float* %14, align 4
+ call void @_ZN31btConvexPlaneCollisionAlgorithm20collideSingleContactERK12btQuaternionP17btCollisionObjectS4_RK16btDispatcherInfoP16btManifoldResult(%struct.btConvexPlaneCollisionAlgorithm* %this, %struct.btQuaternion* %rotq, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btDispatcherInfo* %dispatchInfo, %struct.btManifoldResult* %resultOut)
+ %15 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 1 ; [#uses=2]
+ %16 = load %struct.btPersistentManifold** %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btPersistentManifold* %16, i32 0, i32 4 ; [#uses=1]
+ %18 = load i32* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ %20 = load i32* %19, align 4 ; [#uses=1]
+ %21 = icmp slt i32 %18, %20 ; [#uses=1]
+ br i1 %21, label %bb9, label %bb15
+
+bb9: ; preds = %bb
+ %22 = getelementptr inbounds %struct.btCollisionShape* %9, i32 4, i32 2 ; [#uses=1]
+ %23 = bitcast i8** %22 to float* ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=4]
+ %25 = call float @fabsf(float %24) nounwind readnone ; [#uses=1]
+ %26 = fcmp ogt float %25, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %26, label %bb.i21, label %bb1.i
+
+bb.i21: ; preds = %bb9
+ %27 = getelementptr inbounds %struct.btCollisionShape* %9, i32 4, i32 1 ; [#uses=1]
+ %28 = bitcast i32* %27 to float* ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=3]
+ %30 = fmul float %29, %29 ; [#uses=1]
+ %31 = fmul float %24, %24 ; [#uses=1]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = call float @sqrtf(float %32) nounwind readonly ; [#uses=1]
+ %34 = fdiv float 1.000000e+00, %33 ; [#uses=2]
+ %35 = fsub float -0.000000e+00, %24 ; [#uses=1]
+ %36 = fmul float %34, %35 ; [#uses=1]
+ %37 = fmul float %29, %34 ; [#uses=1]
+ br label %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+
+bb1.i: ; preds = %bb9
+ %38 = bitcast %struct.btCollisionShape* %10 to float* ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=3]
+ %40 = fmul float %39, %39 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btCollisionShape* %9, i32 4, i32 1 ; [#uses=1]
+ %42 = bitcast i32* %41 to float* ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=3]
+ %44 = fmul float %43, %43 ; [#uses=1]
+ %45 = fadd float %40, %44 ; [#uses=1]
+ %46 = call float @sqrtf(float %45) nounwind readonly ; [#uses=1]
+ %47 = fdiv float 1.000000e+00, %46 ; [#uses=2]
+ %48 = fsub float -0.000000e+00, %43 ; [#uses=1]
+ %49 = fmul float %47, %48 ; [#uses=1]
+ %50 = fmul float %39, %47 ; [#uses=1]
+ br label %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+
+_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit: ; preds = %bb1.i, %bb.i21
+ %v0.0.0.0 = phi float [ 0.000000e+00, %bb.i21 ], [ %49, %bb1.i ] ; [#uses=3]
+ %v0.0.1.0 = phi float [ %36, %bb.i21 ], [ %50, %bb1.i ] ; [#uses=3]
+ %v0.0.2.0 = phi float [ %37, %bb.i21 ], [ 0.000000e+00, %bb1.i ] ; [#uses=3]
+ %51 = getelementptr inbounds %struct.btCollisionShape* %7, i32 0, i32 0 ; [#uses=1]
+ %52 = load i32 (...)*** %51, align 4 ; [#uses=1]
+ %53 = getelementptr inbounds i32 (...)** %52, i32 4 ; [#uses=1]
+ %54 = load i32 (...)** %53, align 4 ; [#uses=1]
+ %55 = bitcast i32 (...)* %54 to float (%struct.btCollisionShape*)* ; [#uses=1]
+ %56 = call float %55(%struct.btCollisionShape* %7) ; [#uses=1]
+ %57 = load float* @gContactBreakingThreshold, align 4 ; [#uses=1]
+ %58 = fdiv float %57, %56 ; [#uses=2]
+ %59 = fcmp ogt float %58, 0x3FD921FB60000000 ; [#uses=1]
+ %60 = fmul float %v0.0.0.0, %v0.0.0.0 ; [#uses=1]
+ %61 = fmul float %v0.0.1.0, %v0.0.1.0 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=1]
+ %63 = fmul float %v0.0.2.0, %v0.0.2.0 ; [#uses=1]
+ %64 = fadd float %62, %63 ; [#uses=1]
+ %65 = call float @sqrtf(float %64) nounwind readonly ; [#uses=1]
+ %.op = fmul float %58, 5.000000e-01 ; [#uses=1]
+ %66 = select i1 %59, float 0x3FC921FB60000000, float %.op ; [#uses=2]
+ %67 = call float @sinf(float %66) nounwind readonly ; [#uses=1]
+ %68 = fdiv float %67, %65 ; [#uses=3]
+ %69 = call float @cosf(float %66) nounwind readonly ; [#uses=4]
+ %70 = fmul float %v0.0.2.0, %68 ; [#uses=4]
+ %71 = fmul float %v0.0.1.0, %68 ; [#uses=4]
+ %72 = fmul float %v0.0.0.0, %68 ; [#uses=4]
+ %73 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 4 ; [#uses=2]
+ %74 = load i32* %73, align 4 ; [#uses=2]
+ %75 = icmp sgt i32 %74, 0 ; [#uses=1]
+ br i1 %75, label %bb.nph, label %bb15
+
+bb.nph: ; preds = %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+ %76 = bitcast %struct.btCollisionShape* %10 to float* ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btCollisionShape* %9, i32 4, i32 1 ; [#uses=1]
+ %78 = bitcast i32* %77 to float* ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb12
+
+bb12: ; preds = %bb12, %bb.nph
+ %83 = phi i32 [ %74, %bb.nph ], [ %165, %bb12 ] ; [#uses=1]
+ %84 = phi i32 [ 0, %bb.nph ], [ %164, %bb12 ] ; [#uses=2]
+ %85 = sitofp i32 %84 to float ; [#uses=1]
+ %86 = sitofp i32 %83 to float ; [#uses=1]
+ %87 = fdiv float 0x401921FB60000000, %86 ; [#uses=1]
+ %88 = fmul float %85, %87 ; [#uses=1]
+ %89 = load float* %76, align 4 ; [#uses=3]
+ %90 = fmul float %89, %89 ; [#uses=1]
+ %91 = load float* %78, align 4 ; [#uses=3]
+ %92 = fmul float %91, %91 ; [#uses=1]
+ %93 = fadd float %90, %92 ; [#uses=1]
+ %94 = load float* %23, align 4 ; [#uses=3]
+ %95 = fmul float %94, %94 ; [#uses=1]
+ %96 = fadd float %93, %95 ; [#uses=1]
+ %97 = call float @sqrtf(float %96) nounwind readonly ; [#uses=1]
+ %98 = fmul float %88, 5.000000e-01 ; [#uses=2]
+ %99 = call float @sinf(float %98) nounwind readonly ; [#uses=1]
+ %100 = fdiv float %99, %97 ; [#uses=3]
+ %101 = call float @cosf(float %98) nounwind readonly ; [#uses=8]
+ %102 = fmul float %94, %100 ; [#uses=5]
+ %103 = fmul float %91, %100 ; [#uses=5]
+ %104 = fmul float %89, %100 ; [#uses=5]
+ %105 = fsub float -0.000000e+00, %102 ; [#uses=4]
+ %106 = fsub float -0.000000e+00, %103 ; [#uses=4]
+ %107 = fsub float -0.000000e+00, %104 ; [#uses=4]
+ %108 = fmul float %101, %69 ; [#uses=1]
+ %109 = fmul float %72, %107 ; [#uses=1]
+ %110 = fsub float %108, %109 ; [#uses=1]
+ %111 = fmul float %71, %106 ; [#uses=1]
+ %112 = fsub float %110, %111 ; [#uses=1]
+ %113 = fmul float %70, %105 ; [#uses=1]
+ %114 = fsub float %112, %113 ; [#uses=4]
+ %115 = fmul float %101, %70 ; [#uses=1]
+ %116 = fmul float %69, %105 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=1]
+ %118 = fmul float %71, %107 ; [#uses=1]
+ %119 = fadd float %117, %118 ; [#uses=1]
+ %120 = fmul float %72, %106 ; [#uses=1]
+ %121 = fsub float %119, %120 ; [#uses=4]
+ %122 = fmul float %101, %71 ; [#uses=1]
+ %123 = fmul float %69, %106 ; [#uses=1]
+ %124 = fadd float %122, %123 ; [#uses=1]
+ %125 = fmul float %72, %105 ; [#uses=1]
+ %126 = fadd float %124, %125 ; [#uses=1]
+ %127 = fmul float %70, %107 ; [#uses=1]
+ %128 = fsub float %126, %127 ; [#uses=4]
+ %129 = fmul float %101, %72 ; [#uses=1]
+ %130 = fmul float %69, %107 ; [#uses=1]
+ %131 = fadd float %129, %130 ; [#uses=1]
+ %132 = fmul float %70, %106 ; [#uses=1]
+ %133 = fadd float %131, %132 ; [#uses=1]
+ %134 = fmul float %71, %105 ; [#uses=1]
+ %135 = fsub float %133, %134 ; [#uses=4]
+ %136 = fmul float %114, %101 ; [#uses=1]
+ %137 = fmul float %135, %104 ; [#uses=1]
+ %138 = fsub float %136, %137 ; [#uses=1]
+ %139 = fmul float %128, %103 ; [#uses=1]
+ %140 = fsub float %138, %139 ; [#uses=1]
+ %141 = fmul float %121, %102 ; [#uses=1]
+ %142 = fsub float %140, %141 ; [#uses=1]
+ %143 = fmul float %114, %102 ; [#uses=1]
+ %144 = fmul float %121, %101 ; [#uses=1]
+ %145 = fadd float %143, %144 ; [#uses=1]
+ %146 = fmul float %135, %103 ; [#uses=1]
+ %147 = fadd float %145, %146 ; [#uses=1]
+ %148 = fmul float %128, %104 ; [#uses=1]
+ %149 = fsub float %147, %148 ; [#uses=1]
+ %150 = fmul float %114, %103 ; [#uses=1]
+ %151 = fmul float %128, %101 ; [#uses=1]
+ %152 = fadd float %150, %151 ; [#uses=1]
+ %153 = fmul float %121, %104 ; [#uses=1]
+ %154 = fadd float %152, %153 ; [#uses=1]
+ %155 = fmul float %135, %102 ; [#uses=1]
+ %156 = fsub float %154, %155 ; [#uses=1]
+ %157 = fmul float %114, %104 ; [#uses=1]
+ %158 = fmul float %135, %101 ; [#uses=1]
+ %159 = fadd float %157, %158 ; [#uses=1]
+ %160 = fmul float %128, %102 ; [#uses=1]
+ %161 = fadd float %159, %160 ; [#uses=1]
+ %162 = fmul float %121, %103 ; [#uses=1]
+ %163 = fsub float %161, %162 ; [#uses=1]
+ store float %163, float* %79, align 8
+ store float %156, float* %80, align 4
+ store float %149, float* %81, align 8
+ store float %142, float* %82, align 4
+ call void @_ZN31btConvexPlaneCollisionAlgorithm20collideSingleContactERK12btQuaternionP17btCollisionObjectS4_RK16btDispatcherInfoP16btManifoldResult(%struct.btConvexPlaneCollisionAlgorithm* %this, %struct.btQuaternion* %0, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btDispatcherInfo* %dispatchInfo, %struct.btManifoldResult* %resultOut)
+ %164 = add nsw i32 %84, 1 ; [#uses=2]
+ %165 = load i32* %73, align 4 ; [#uses=2]
+ %166 = icmp sgt i32 %165, %164 ; [#uses=1]
+ br i1 %166, label %bb12, label %bb15
+
+bb15: ; preds = %bb12, %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit, %bb
+ %167 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %168 = load i8* %167, align 4 ; [#uses=1]
+ %toBool16 = icmp eq i8 %168, 0 ; [#uses=1]
+ br i1 %toBool16, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb17
+
+bb17: ; preds = %bb15
+ %169 = load %struct.btPersistentManifold** %1, align 4 ; [#uses=1]
+ %170 = getelementptr inbounds %struct.btPersistentManifold* %169, i32 0, i32 4 ; [#uses=1]
+ %171 = load i32* %170, align 4 ; [#uses=1]
+ %172 = icmp eq i32 %171, 0 ; [#uses=1]
+ br i1 %172, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb19
+
+bb19: ; preds = %bb17
+ %173 = load %struct.btPersistentManifold** %15, align 4 ; [#uses=4]
+ %174 = getelementptr inbounds %struct.btPersistentManifold* %173, i32 0, i32 4 ; [#uses=1]
+ %175 = load i32* %174, align 4 ; [#uses=1]
+ %176 = icmp eq i32 %175, 0 ; [#uses=1]
+ br i1 %176, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb.i
+
+bb.i: ; preds = %bb19
+ %177 = getelementptr inbounds %struct.btPersistentManifold* %173, i32 0, i32 2 ; [#uses=1]
+ %178 = load i8** %177, align 4 ; [#uses=1]
+ %179 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 4 ; [#uses=1]
+ %180 = load %struct.btCollisionObject** %179, align 4 ; [#uses=1]
+ %181 = bitcast %struct.btCollisionObject* %180 to i8* ; [#uses=1]
+ %182 = icmp eq i8* %178, %181 ; [#uses=1]
+ br i1 %182, label %bb3.i, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %183 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ %184 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %173, %struct.btTransform* %184, %struct.btTransform* %183)
+ ret void
+
+bb3.i: ; preds = %bb.i
+ %185 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %173, %struct.btTransform* %186, %struct.btTransform* %185)
+ ret void
+
+_ZN16btManifoldResult20refreshContactPointsEv.exit: ; preds = %bb19, %bb17, %bb15, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN31btConvexPlaneCollisionAlgorithmD0Ev(%struct.btConvexPlaneCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV31btConvexPlaneCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb4, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ tail call void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ br label %bb4
+
+bb4: ; preds = %bb1, %bb, %entry
+ %13 = bitcast %struct.btConvexPlaneCollisionAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %13) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN31btConvexPlaneCollisionAlgorithmD1Ev(%struct.btConvexPlaneCollisionAlgorithm* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV31btConvexPlaneCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %return, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ tail call void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN31btConvexPlaneCollisionAlgorithmD2Ev(%struct.btConvexPlaneCollisionAlgorithm* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV31btConvexPlaneCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %return, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ tail call void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN31btConvexPlaneCollisionAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_bii(%struct.btConvexPlaneCollisionAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1, i8 zeroext %isSwapped, i32 %numPerturbationIterations, i32 %minimumPointsPerturbationThreshold) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfo(%struct.btCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci)
+ %1 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV31btConvexPlaneCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=2]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %3, align 4
+ %4 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 %isSwapped, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 %numPerturbationIterations, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 %minimumPointsPerturbationThreshold, i32* %6, align 4
+ %toBool = icmp eq i8 %isSwapped, 0 ; [#uses=2]
+ %iftmp.162.0 = select i1 %toBool, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1 ; [#uses=2]
+ %iftmp.163.0 = select i1 %toBool, %struct.btCollisionObject* %col1, %struct.btCollisionObject* %col0 ; [#uses=2]
+ %7 = icmp eq %struct.btPersistentManifold* %mf, null ; [#uses=1]
+ br i1 %7, label %bb7, label %bb13
+
+bb7: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btConvexPlaneCollisionAlgorithm* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ %9 = load %struct.btActionInterface** %8, align 4 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btActionInterface* %9, i32 0, i32 0 ; [#uses=1]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 6 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to i8 (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*)* ; [#uses=1]
+ %15 = invoke zeroext i8 %14(%struct.btActionInterface* %9, %struct.btCollisionObject* %iftmp.162.0, %struct.btCollisionObject* %iftmp.163.0)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb7
+ %toBool8not = icmp eq i8 %15, 0 ; [#uses=1]
+ br i1 %toBool8not, label %bb13, label %bb16
+
+bb13: ; preds = %invcont, %entry
+ ret void
+
+bb16: ; preds = %invcont
+ %16 = load %struct.btActionInterface** %8, align 4 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btActionInterface* %16, i32 0, i32 0 ; [#uses=1]
+ %18 = load i32 (...)*** %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i32 (...)** %18, i32 3 ; [#uses=1]
+ %20 = load i32 (...)** %19, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %20 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %22 = bitcast %struct.btCollisionObject* %iftmp.162.0 to i8* ; [#uses=1]
+ %23 = bitcast %struct.btCollisionObject* %iftmp.163.0 to i8* ; [#uses=1]
+ %24 = invoke %struct.btPersistentManifold* %21(%struct.btActionInterface* %16, i8* %22, i8* %23)
+ to label %invcont17 unwind label %lpad ; [#uses=1]
+
+invcont17: ; preds = %bb16
+ store %struct.btPersistentManifold* %24, %struct.btPersistentManifold** %3, align 4
+ store i8 1, i8* %2, align 4
+ ret void
+
+lpad: ; preds = %bb16, %bb7
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV20btCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN27btConvex2dConvex2dAlgorithm10CreateFuncC2EP22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* nocapture %this, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %pdSolver) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i8 0, i8* %1, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN27btConvex2dConvex2dAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %2 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 3, i32* %3, align 4
+ %4 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %4, align 4
+ %5 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %pdSolver, %struct.btActionInterface** %5, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN27btConvex2dConvex2dAlgorithm10CreateFuncD1Ev(%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN27btConvex2dConvex2dAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN27btConvex2dConvex2dAlgorithm10CreateFuncD0Ev(%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN27btConvex2dConvex2dAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionAlgorithm* @_ZN27btConvex2dConvex2dAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i8* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %7 = tail call i8* %6(%struct.btActionInterface* %1, i32 36) ; [#uses=11]
+ %8 = icmp eq i8* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %9 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 4 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 3 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 1 ; [#uses=1]
+ %14 = load %struct.btActionInterface** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 2 ; [#uses=1]
+ %16 = load %struct.btVoronoiSimplexSolver** %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 1 ; [#uses=1]
+ %18 = load %struct.btPersistentManifold** %17, align 4 ; [#uses=1]
+ %19 = bitcast i8* %7 to %struct.btActivatingCollisionAlgorithm* ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %19, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ to label %_ZN27btConvex2dConvex2dAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolverii.exit unwind label %lpad
+
+_ZN27btConvex2dConvex2dAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolverii.exit: ; preds = %bb
+ %20 = bitcast i8* %7 to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV27btConvex2dConvex2dAlgorithm, i32 0, i32 2), i32 (...)*** %20, align 4
+ %21 = getelementptr inbounds i8* %7, i32 8 ; [#uses=1]
+ %22 = bitcast i8* %21 to %struct.btVoronoiSimplexSolver** ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %16, %struct.btVoronoiSimplexSolver** %22, align 4
+ %23 = getelementptr inbounds i8* %7, i32 12 ; [#uses=1]
+ %24 = bitcast i8* %23 to %struct.btActionInterface** ; [#uses=1]
+ store %struct.btActionInterface* %14, %struct.btActionInterface** %24, align 4
+ %25 = getelementptr inbounds i8* %7, i32 16 ; [#uses=1]
+ store i8 0, i8* %25, align 4
+ %26 = getelementptr inbounds i8* %7, i32 20 ; [#uses=1]
+ %27 = bitcast i8* %26 to %struct.btPersistentManifold** ; [#uses=1]
+ store %struct.btPersistentManifold* %18, %struct.btPersistentManifold** %27, align 4
+ %28 = getelementptr inbounds i8* %7, i32 24 ; [#uses=1]
+ store i8 0, i8* %28, align 4
+ %29 = getelementptr inbounds i8* %7, i32 28 ; [#uses=1]
+ %30 = bitcast i8* %29 to i32* ; [#uses=1]
+ store i32 %12, i32* %30, align 4
+ %31 = getelementptr inbounds i8* %7, i32 32 ; [#uses=1]
+ %32 = bitcast i8* %31 to i32* ; [#uses=1]
+ store i32 %10, i32* %32, align 4
+ br label %bb4
+
+bb4: ; preds = %_ZN27btConvex2dConvex2dAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolverii.exit, %entry
+ %iftmp.161.0 = bitcast i8* %7 to %struct.btCollisionAlgorithm* ; [#uses=1]
+ ret %struct.btCollisionAlgorithm* %iftmp.161.0
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN27btConvex2dConvex2dAlgorithm10CreateFuncC1EP22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* nocapture %this, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %pdSolver) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i8 0, i8* %1, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN27btConvex2dConvex2dAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %2 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 3, i32* %3, align 4
+ %4 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %4, align 4
+ %5 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %pdSolver, %struct.btActionInterface** %5, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN27btConvex2dConvex2dAlgorithm19setLowLevelOfDetailEb(%struct.btConvex2dConvex2dAlgorithm* nocapture %this, i8 zeroext %useLowLevel) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ store i8 %useLowLevel, i8* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN27btConvex2dConvex2dAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(%struct.btConvex2dConvex2dAlgorithm* nocapture %this, %"struct.btAlignedObjectArray<btPersistentManifold*>"* nocapture %manifoldArray) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=2]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb1
+
+bb1: ; preds = %bb
+ tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, %struct.btPersistentManifold** %0) inlinehint
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN27btConvex2dConvex2dAlgorithm10CreateFuncD2Ev(%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN27btConvex2dConvex2dAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define float @_ZN27btConvex2dConvex2dAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btConvex2dConvex2dAlgorithm* nocapture %this, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* nocapture %resultOut) align 2 {
+entry:
+ %sphere1 = alloca %struct.btPolyhedralConvexShape, align 8 ; [#uses=6]
+ %result = alloca %"struct.btConvexCast::CastResult", align 8 ; [#uses=5]
+ %voronoiSimplex = alloca %struct.btVoronoiSimplexSolver, align 8 ; [#uses=3]
+ %ccd1 = alloca %struct.btGjkConvexCast, align 8 ; [#uses=6]
+ %sphere0 = alloca %struct.btPolyhedralConvexShape, align 8 ; [#uses=6]
+ %result28 = alloca %"struct.btConvexCast::CastResult", align 8 ; [#uses=5]
+ %voronoiSimplex29 = alloca %struct.btVoronoiSimplexSolver, align 8 ; [#uses=3]
+ %ccd130 = alloca %struct.btGjkConvexCast, align 8 ; [#uses=6]
+ %0 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fsub float %1, %3 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fsub float %6, %8 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fsub float %11, %13 ; [#uses=2]
+ %15 = fmul float %14, %14 ; [#uses=1]
+ %16 = fmul float %9, %9 ; [#uses=1]
+ %17 = fadd float %15, %16 ; [#uses=1]
+ %18 = fmul float %4, %4 ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fsub float %21, %23 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fsub float %26, %28 ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fsub float %31, %33 ; [#uses=2]
+ %35 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 23 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = fmul float %36, %36 ; [#uses=1]
+ %38 = fcmp ule float %37, %19 ; [#uses=1]
+ br i1 %38, label %invcont, label %bb
+
+bb: ; preds = %entry
+ %39 = fmul float %29, %29 ; [#uses=1]
+ %40 = fmul float %34, %34 ; [#uses=1]
+ %41 = fmul float %24, %24 ; [#uses=1]
+ %42 = fadd float %40, %39 ; [#uses=1]
+ %43 = fadd float %42, %41 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 23 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=2]
+ %46 = fmul float %45, %45 ; [#uses=1]
+ %47 = fcmp ule float %46, %43 ; [#uses=1]
+ br i1 %47, label %invcont, label %bb56
+
+invcont: ; preds = %bb, %entry
+ %48 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 9 ; [#uses=1]
+ %49 = load %struct.btCollisionShape** %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 22 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=2]
+ %52 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere1, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %52)
+ %53 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btSphereShape, i32 0, i32 2), i32 (...)*** %53, align 8
+ %54 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 8, i32* %54, align 4
+ %55 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %51, float* %55, align 4
+ %56 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %51, float* %56, align 4
+ %57 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN12btConvexCast10CastResultE, i32 0, i32 2), i32 (...)*** %57, align 8
+ %58 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 5 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %58, align 4
+ %59 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %59, align 8
+ %60 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %voronoiSimplex, i32 0, i32 8 ; [#uses=1]
+ store float 0x3F1A36E2E0000000, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %voronoiSimplex, i32 0, i32 10, i32 1, i32 0 ; [#uses=2]
+ %63 = load i8* %62, align 4 ; [#uses=1]
+ %64 = and i8 %63, -16 ; [#uses=1]
+ store i8 %64, i8* %62, align 4
+ %65 = bitcast %struct.btCollisionShape* %49 to %struct.btConvexShape* ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere1, i32 0, i32 0, i32 0 ; [#uses=3]
+ invoke void @_ZN15btGjkConvexCastC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolver(%struct.btGjkConvexCast* %ccd1, %struct.btConvexShape* %65, %struct.btConvexShape* %66, %struct.btVoronoiSimplexSolver* %voronoiSimplex)
+ to label %invcont6 unwind label %lpad
+
+invcont6: ; preds = %invcont
+ %67 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 2 ; [#uses=2]
+ %68 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 1 ; [#uses=2]
+ %69 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 2 ; [#uses=2]
+ %70 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 1 ; [#uses=2]
+ %71 = invoke zeroext i8 @_ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(%struct.btGjkConvexCast* %ccd1, %struct.btTransform* %70, %struct.btTransform* %69, %struct.btTransform* %68, %struct.btTransform* %67, %"struct.btConvexCast::CastResult"* %result)
+ to label %invcont7 unwind label %lpad60 ; [#uses=1]
+
+invcont7: ; preds = %invcont6
+ %toBool8 = icmp eq i8 %71, 0 ; [#uses=1]
+ br i1 %toBool8, label %bb20, label %bb9
+
+bb9: ; preds = %invcont7
+ %72 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 21 ; [#uses=2]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ %74 = load float* %58, align 4 ; [#uses=6]
+ %75 = fcmp ogt float %73, %74 ; [#uses=1]
+ br i1 %75, label %bb11, label %bb12
+
+bb11: ; preds = %bb9
+ store float %74, float* %72, align 4
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb9
+ %76 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 21 ; [#uses=2]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ %78 = fcmp ogt float %77, %74 ; [#uses=1]
+ br i1 %78, label %bb14, label %bb15
+
+bb14: ; preds = %bb12
+ store float %74, float* %76, align 4
+ br label %bb15
+
+bb15: ; preds = %bb14, %bb12
+ %79 = fcmp olt float %74, 1.000000e+00 ; [#uses=1]
+ br i1 %79, label %bb16, label %bb20
+
+bb16: ; preds = %bb15
+ br label %bb20
+
+bb20: ; preds = %bb16, %bb15, %invcont7
+ %resultFraction.0 = phi float [ %74, %bb16 ], [ 1.000000e+00, %bb15 ], [ 1.000000e+00, %invcont7 ] ; [#uses=3]
+ %80 = getelementptr inbounds %struct.btGjkConvexCast* %ccd1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV15btGjkConvexCast, i32 0, i32 2), i32 (...)*** %80, align 8
+ %81 = getelementptr inbounds %struct.btGjkConvexCast* %ccd1, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %81)
+ to label %invcont31 unwind label %lpad
+
+invcont31: ; preds = %bb20
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %53, align 8
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %66)
+ %82 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 9 ; [#uses=1]
+ %83 = load %struct.btCollisionShape** %82, align 4 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 22 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=2]
+ %86 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %86)
+ %87 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btSphereShape, i32 0, i32 2), i32 (...)*** %87, align 8
+ %88 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 8, i32* %88, align 4
+ %89 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %85, float* %89, align 4
+ %90 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %85, float* %90, align 4
+ %91 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result28, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN12btConvexCast10CastResultE, i32 0, i32 2), i32 (...)*** %91, align 8
+ %92 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result28, i32 0, i32 5 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %92, align 4
+ %93 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result28, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %93, align 8
+ %94 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result28, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %94, align 4
+ %95 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %voronoiSimplex29, i32 0, i32 8 ; [#uses=1]
+ store float 0x3F1A36E2E0000000, float* %95, align 4
+ %96 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %voronoiSimplex29, i32 0, i32 10, i32 1, i32 0 ; [#uses=2]
+ %97 = load i8* %96, align 4 ; [#uses=1]
+ %98 = and i8 %97, -16 ; [#uses=1]
+ store i8 %98, i8* %96, align 4
+ %99 = bitcast %struct.btCollisionShape* %83 to %struct.btConvexShape* ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btPolyhedralConvexShape* %sphere0, i32 0, i32 0, i32 0 ; [#uses=3]
+ invoke void @_ZN15btGjkConvexCastC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolver(%struct.btGjkConvexCast* %ccd130, %struct.btConvexShape* %100, %struct.btConvexShape* %99, %struct.btVoronoiSimplexSolver* %voronoiSimplex29)
+ to label %invcont32 unwind label %lpad72
+
+invcont32: ; preds = %invcont31
+ %101 = invoke zeroext i8 @_ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(%struct.btGjkConvexCast* %ccd130, %struct.btTransform* %70, %struct.btTransform* %69, %struct.btTransform* %68, %struct.btTransform* %67, %"struct.btConvexCast::CastResult"* %result28)
+ to label %invcont33 unwind label %lpad76 ; [#uses=1]
+
+invcont33: ; preds = %invcont32
+ %toBool34 = icmp eq i8 %101, 0 ; [#uses=1]
+ br i1 %toBool34, label %bb48, label %bb35
+
+bb35: ; preds = %invcont33
+ %102 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 21 ; [#uses=2]
+ %103 = load float* %102, align 4 ; [#uses=1]
+ %104 = load float* %92, align 4 ; [#uses=6]
+ %105 = fcmp ogt float %103, %104 ; [#uses=1]
+ br i1 %105, label %bb37, label %bb38
+
+bb37: ; preds = %bb35
+ store float %104, float* %102, align 4
+ br label %bb38
+
+bb38: ; preds = %bb37, %bb35
+ %106 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 21 ; [#uses=2]
+ %107 = load float* %106, align 4 ; [#uses=1]
+ %108 = fcmp ogt float %107, %104 ; [#uses=1]
+ br i1 %108, label %bb40, label %bb41
+
+bb40: ; preds = %bb38
+ store float %104, float* %106, align 4
+ br label %bb41
+
+bb41: ; preds = %bb40, %bb38
+ %109 = fcmp olt float %104, %resultFraction.0 ; [#uses=1]
+ br i1 %109, label %bb42, label %bb48
+
+bb42: ; preds = %bb41
+ br label %bb48
+
+bb48: ; preds = %bb42, %bb41, %invcont33
+ %resultFraction.1 = phi float [ %104, %bb42 ], [ %resultFraction.0, %bb41 ], [ %resultFraction.0, %invcont33 ] ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btGjkConvexCast* %ccd130, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV15btGjkConvexCast, i32 0, i32 2), i32 (...)*** %110, align 8
+ %111 = getelementptr inbounds %struct.btGjkConvexCast* %ccd130, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %111)
+ to label %bb55 unwind label %lpad72
+
+bb55: ; preds = %bb48
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %87, align 8
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %100)
+ ret float %resultFraction.1
+
+bb56: ; preds = %bb
+ ret float 1.000000e+00
+
+lpad: ; preds = %bb20, %invcont
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select59 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad60: ; preds = %invcont6
+ %eh_ptr61 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select63 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr61, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %112 = getelementptr inbounds %struct.btGjkConvexCast* %ccd1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV15btGjkConvexCast, i32 0, i32 2), i32 (...)*** %112, align 8
+ %113 = getelementptr inbounds %struct.btGjkConvexCast* %ccd1, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %113)
+ to label %ppad unwind label %lpad64
+
+lpad64: ; preds = %lpad60
+ %eh_ptr65 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select67 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr65, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad68: ; preds = %ppad
+ %eh_ptr69 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select71 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr69, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad72: ; preds = %bb48, %invcont31
+ %eh_ptr73 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select75 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr73, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad91
+
+lpad76: ; preds = %invcont32
+ %eh_ptr77 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select79 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr77, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %114 = getelementptr inbounds %struct.btGjkConvexCast* %ccd130, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV15btGjkConvexCast, i32 0, i32 2), i32 (...)*** %114, align 8
+ %115 = getelementptr inbounds %struct.btGjkConvexCast* %ccd130, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %115)
+ to label %ppad91 unwind label %lpad80
+
+lpad80: ; preds = %lpad76
+ %eh_ptr81 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select83 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr81, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad84: ; preds = %ppad91
+ %eh_ptr85 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select87 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr85, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %lpad60, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr61, %lpad60 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %53, align 8
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %66)
+ to label %Unwind unwind label %lpad68
+
+ppad91: ; preds = %lpad76, %lpad72
+ %eh_exception.2 = phi i8* [ %eh_ptr73, %lpad72 ], [ %eh_ptr77, %lpad76 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %87, align 8
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %100)
+ to label %Unwind unwind label %lpad84
+
+Unwind: ; preds = %ppad91, %ppad
+ %eh_exception.1 = phi i8* [ %eh_exception.0, %ppad ], [ %eh_exception.2, %ppad91 ] ; [#uses=1]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.1)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN27btConvex2dConvex2dAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btConvex2dConvex2dAlgorithm* nocapture %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %input = alloca %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput", align 8 ; [#uses=35]
+ %gjkPairDetector = alloca %struct.btGjkPairDetector, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=3]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load %struct.btActionInterface** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btActionInterface* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 3 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %10 = bitcast %struct.btCollisionObject* %body0 to i8* ; [#uses=1]
+ %11 = bitcast %struct.btCollisionObject* %body1 to i8* ; [#uses=1]
+ %12 = call %struct.btPersistentManifold* %9(%struct.btActionInterface* %4, i8* %10, i8* %11) ; [#uses=2]
+ store %struct.btPersistentManifold* %12, %struct.btPersistentManifold** %0, align 4
+ %13 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 1, i8* %13, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %14 = phi %struct.btPersistentManifold* [ %12, %bb ], [ %1, %entry ] ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 1 ; [#uses=2]
+ store %struct.btPersistentManifold* %14, %struct.btPersistentManifold** %15, align 4
+ %16 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 9 ; [#uses=1]
+ %17 = load %struct.btCollisionShape** %16, align 4 ; [#uses=2]
+ %18 = bitcast %struct.btCollisionShape* %17 to %struct.btConvexShape* ; [#uses=3]
+ %19 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 9 ; [#uses=1]
+ %20 = load %struct.btCollisionShape** %19, align 4 ; [#uses=2]
+ %21 = bitcast %struct.btCollisionShape* %20 to %struct.btConvexShape* ; [#uses=3]
+ %22 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 2 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %22, align 8
+ %23 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 3 ; [#uses=2]
+ store %struct.btStackAlloc* null, %struct.btStackAlloc** %23, align 4
+ %24 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %25 = load %struct.btActionInterface** %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %27 = load %struct.btVoronoiSimplexSolver** %26, align 4 ; [#uses=1]
+ call void @_ZN17btGjkPairDetectorC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btGjkPairDetector* %gjkPairDetector, %struct.btConvexShape* %18, %struct.btConvexShape* %21, %struct.btVoronoiSimplexSolver* %27, %struct.btActionInterface* %25)
+ %28 = getelementptr inbounds %struct.btGjkPairDetector* %gjkPairDetector, i32 0, i32 4 ; [#uses=1]
+ store %struct.btConvexShape* %18, %struct.btConvexShape** %28, align 4
+ %29 = getelementptr inbounds %struct.btGjkPairDetector* %gjkPairDetector, i32 0, i32 5 ; [#uses=1]
+ store %struct.btConvexShape* %21, %struct.btConvexShape** %29, align 8
+ %30 = getelementptr inbounds %struct.btCollisionShape* %17, i32 0, i32 0 ; [#uses=1]
+ %31 = load i32 (...)*** %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds i32 (...)** %31, i32 11 ; [#uses=1]
+ %33 = load i32 (...)** %32, align 4 ; [#uses=1]
+ %34 = bitcast i32 (...)* %33 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %35 = call float %34(%struct.btConvexShape* %18) ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btCollisionShape* %20, i32 0, i32 0 ; [#uses=1]
+ %37 = load i32 (...)*** %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32 (...)** %37, i32 11 ; [#uses=1]
+ %39 = load i32 (...)** %38, align 4 ; [#uses=1]
+ %40 = bitcast i32 (...)* %39 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %41 = call float %40(%struct.btConvexShape* %21) ; [#uses=1]
+ %42 = fadd float %35, %41 ; [#uses=1]
+ %43 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %44 = call float @_ZNK20btPersistentManifold27getContactBreakingThresholdEv(%struct.btPersistentManifold* %43) ; [#uses=1]
+ %45 = fadd float %42, %44 ; [#uses=2]
+ %46 = fmul float %45, %45 ; [#uses=1]
+ store float %46, float* %22, align 8
+ %47 = getelementptr inbounds %struct.btDispatcherInfo* %dispatchInfo, i32 0, i32 13 ; [#uses=1]
+ %48 = load %struct.btStackAlloc** %47, align 4 ; [#uses=1]
+ store %struct.btStackAlloc* %48, %struct.btStackAlloc** %23, align 4
+ %49 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 8
+ %52 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ %55 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ store float %57, float* %55, align 8
+ %58 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ store float %60, float* %58, align 4
+ %61 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ store float %63, float* %61, align 8
+ %64 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %64, align 4
+ %67 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ store float %69, float* %67, align 8
+ %70 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %70, align 4
+ %73 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ store float %75, float* %73, align 8
+ %76 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ store float %78, float* %76, align 4
+ %79 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ store float %81, float* %79, align 8
+ %82 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %82, align 4
+ %85 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ store float %87, float* %85, align 8
+ %88 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ store float %90, float* %88, align 4
+ %91 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ store float %93, float* %91, align 8
+ %94 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %94, align 4
+ %97 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ store float %99, float* %97, align 8
+ %100 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ store float %102, float* %100, align 4
+ %103 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ store float %105, float* %103, align 8
+ %106 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %108 = load float* %107, align 4 ; [#uses=1]
+ store float %108, float* %106, align 4
+ %109 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %111 = load float* %110, align 4 ; [#uses=1]
+ store float %111, float* %109, align 8
+ %112 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %114 = load float* %113, align 4 ; [#uses=1]
+ store float %114, float* %112, align 4
+ %115 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %117 = load float* %116, align 4 ; [#uses=1]
+ store float %117, float* %115, align 8
+ %118 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %120 = load float* %119, align 4 ; [#uses=1]
+ store float %120, float* %118, align 4
+ %121 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=1]
+ store float %123, float* %121, align 8
+ %124 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %126 = load float* %125, align 4 ; [#uses=1]
+ store float %126, float* %124, align 4
+ %127 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %128 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %129 = load float* %128, align 4 ; [#uses=1]
+ store float %129, float* %127, align 8
+ %130 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %131 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %132 = load float* %131, align 4 ; [#uses=1]
+ store float %132, float* %130, align 4
+ %133 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ store float %135, float* %133, align 8
+ %136 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %138 = load float* %137, align 4 ; [#uses=1]
+ store float %138, float* %136, align 4
+ %139 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ store float %141, float* %139, align 8
+ %142 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %143 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %144 = load float* %143, align 4 ; [#uses=1]
+ store float %144, float* %142, align 4
+ %145 = getelementptr inbounds %struct.btDispatcherInfo* %dispatchInfo, i32 0, i32 5 ; [#uses=1]
+ %146 = load %struct.btActionInterface** %145, align 4 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.btGjkPairDetector* %gjkPairDetector, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, %struct.btActionInterface* %147, %struct.btActionInterface* %146, i8 zeroext 0)
+ %148 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %149 = load i8* %148, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %149, 0 ; [#uses=1]
+ br i1 %toBool, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb2
+
+bb2: ; preds = %bb1
+ %150 = load %struct.btPersistentManifold** %15, align 4 ; [#uses=4]
+ %151 = getelementptr inbounds %struct.btPersistentManifold* %150, i32 0, i32 4 ; [#uses=1]
+ %152 = load i32* %151, align 4 ; [#uses=1]
+ %153 = icmp eq i32 %152, 0 ; [#uses=1]
+ br i1 %153, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb.i
+
+bb.i: ; preds = %bb2
+ %154 = getelementptr inbounds %struct.btPersistentManifold* %150, i32 0, i32 2 ; [#uses=1]
+ %155 = load i8** %154, align 4 ; [#uses=1]
+ %156 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 4 ; [#uses=1]
+ %157 = load %struct.btCollisionObject** %156, align 4 ; [#uses=1]
+ %158 = bitcast %struct.btCollisionObject* %157 to i8* ; [#uses=1]
+ %159 = icmp eq i8* %155, %158 ; [#uses=1]
+ br i1 %159, label %bb3.i, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %160 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %150, %struct.btTransform* %161, %struct.btTransform* %160)
+ ret void
+
+bb3.i: ; preds = %bb.i
+ %162 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ %163 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %150, %struct.btTransform* %163, %struct.btTransform* %162)
+ ret void
+
+_ZN16btManifoldResult20refreshContactPointsEv.exit: ; preds = %bb2, %bb1
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN27btConvex2dConvex2dAlgorithmD0Ev(%struct.btConvex2dConvex2dAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV27btConvex2dConvex2dAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ %14 = bitcast %struct.btConvex2dConvex2dAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %14) nounwind
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %15 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %15)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN27btConvex2dConvex2dAlgorithmD1Ev(%struct.btConvex2dConvex2dAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV27btConvex2dConvex2dAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN27btConvex2dConvex2dAlgorithmD2Ev(%struct.btConvex2dConvex2dAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV27btConvex2dConvex2dAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN27btConvex2dConvex2dAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolverii(%struct.btConvex2dConvex2dAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %pdSolver, i32 %numPerturbationIterations, i32 %minimumPointsPerturbationThreshold) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ %1 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV27btConvex2dConvex2dAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %2, align 4
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %pdSolver, %struct.btActionInterface** %3, align 4
+ %4 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 0, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %5, align 4
+ %6 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ store i8 0, i8* %6, align 4
+ %7 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 %numPerturbationIterations, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 %minimumPointsPerturbationThreshold, i32* %8, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN27btConvex2dConvex2dAlgorithmC2EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolverii(%struct.btConvex2dConvex2dAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %pdSolver, i32 %numPerturbationIterations, i32 %minimumPointsPerturbationThreshold) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ %1 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV27btConvex2dConvex2dAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %2, align 4
+ %3 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %pdSolver, %struct.btActionInterface** %3, align 4
+ %4 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 0, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %5, align 4
+ %6 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ store i8 0, i8* %6, align 4
+ %7 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 %numPerturbationIterations, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btConvex2dConvex2dAlgorithm* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 %minimumPointsPerturbationThreshold, i32* %8, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN31btDefaultCollisionConfigurationC2ERK34btDefaultCollisionConstructionInfo(%struct.btDefaultCollisionConfiguration* %this, %struct.btDefaultCollisionConstructionInfo* nocapture %constructionInfo) align 2 {
+entry:
+ %collisionAlgorithmMaxElementSize = alloca i32, align 4 ; [#uses=2]
+ %0 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV31btDefaultCollisionConfiguration, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = invoke i8* @_Z22btAlignedAllocInternalji(i32 360, i32 16)
+ to label %invcont unwind label %lpad ; [#uses=4]
+
+invcont: ; preds = %entry
+ %2 = bitcast i8* %1 to %struct.btVoronoiSimplexSolver* ; [#uses=1]
+ %3 = icmp eq i8* %1, null ; [#uses=1]
+ br i1 %3, label %bb5, label %bb
+
+bb: ; preds = %invcont
+ %4 = getelementptr inbounds i8* %1, i32 308 ; [#uses=1]
+ %5 = bitcast i8* %4 to float* ; [#uses=1]
+ store float 0x3F1A36E2E0000000, float* %5, align 4
+ %6 = getelementptr inbounds i8* %1, i32 332 ; [#uses=2]
+ %7 = load i8* %6, align 2 ; [#uses=1]
+ %8 = and i8 %7, -16 ; [#uses=1]
+ store i8 %8, i8* %6, align 2
+ br label %bb5
+
+bb5: ; preds = %bb, %invcont
+ %9 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 8 ; [#uses=2]
+ store %struct.btVoronoiSimplexSolver* %2, %struct.btVoronoiSimplexSolver** %9, align 4
+ %10 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %constructionInfo, i32 0, i32 7 ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ %12 = icmp eq i32 %11, 0 ; [#uses=1]
+ br i1 %12, label %bb11, label %bb6
+
+bb6: ; preds = %bb5
+ %13 = invoke i8* @_Z22btAlignedAllocInternalji(i32 4, i32 16)
+ to label %invcont7 unwind label %lpad ; [#uses=3]
+
+invcont7: ; preds = %bb6
+ %14 = icmp eq i8* %13, null ; [#uses=1]
+ br i1 %14, label %bb10, label %bb8
+
+bb8: ; preds = %invcont7
+ %15 = bitcast i8* %13 to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btGjkEpaPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** %15, align 4
+ br label %bb10
+
+bb10: ; preds = %bb8, %invcont7
+ %16 = bitcast i8* %13 to %struct.btActionInterface* ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 9 ; [#uses=1]
+ store %struct.btActionInterface* %16, %struct.btActionInterface** %17, align 4
+ br label %bb16
+
+bb11: ; preds = %bb5
+ %18 = invoke i8* @_Z22btAlignedAllocInternalji(i32 4, i32 16)
+ to label %invcont12 unwind label %lpad ; [#uses=3]
+
+invcont12: ; preds = %bb11
+ %19 = icmp eq i8* %18, null ; [#uses=1]
+ br i1 %19, label %bb15, label %bb13
+
+bb13: ; preds = %invcont12
+ %20 = bitcast i8* %18 to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV33btMinkowskiPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** %20, align 4
+ br label %bb15
+
+bb15: ; preds = %bb13, %invcont12
+ %21 = bitcast i8* %18 to %struct.btActionInterface* ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 9 ; [#uses=1]
+ store %struct.btActionInterface* %21, %struct.btActionInterface** %22, align 4
+ br label %bb16
+
+bb16: ; preds = %bb15, %bb10
+ %23 = invoke i8* @_Z22btAlignedAllocInternalji(i32 24, i32 16)
+ to label %invcont17 unwind label %lpad ; [#uses=3]
+
+invcont17: ; preds = %bb16
+ %24 = icmp eq i8* %23, null ; [#uses=1]
+ br i1 %24, label %bb25, label %bb18
+
+bb18: ; preds = %invcont17
+ %25 = bitcast i8* %23 to %"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 9 ; [#uses=1]
+ %27 = load %struct.btActionInterface** %26, align 4 ; [#uses=1]
+ %28 = load %struct.btVoronoiSimplexSolver** %9, align 4 ; [#uses=1]
+ invoke void @_ZN23btConvexConvexAlgorithm10CreateFuncC1EP22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%"struct.btConvex2dConvex2dAlgorithm::CreateFunc"* %25, %struct.btVoronoiSimplexSolver* %28, %struct.btActionInterface* %27)
+ to label %bb25 unwind label %lpad118
+
+bb25: ; preds = %bb18, %invcont17
+ %29 = bitcast i8* %23 to %struct.btCollisionAlgorithmCreateFunc* ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 10 ; [#uses=1]
+ store %struct.btCollisionAlgorithmCreateFunc* %29, %struct.btCollisionAlgorithmCreateFunc** %30, align 4
+ %31 = invoke i8* @_Z22btAlignedAllocInternalji(i32 8, i32 16)
+ to label %invcont26 unwind label %lpad ; [#uses=4]
+
+invcont26: ; preds = %bb25
+ %32 = icmp eq i8* %31, null ; [#uses=1]
+ br i1 %32, label %bb29, label %bb27
+
+bb27: ; preds = %invcont26
+ %33 = bitcast i8* %31 to i32 (...)*** ; [#uses=1]
+ %34 = getelementptr inbounds i8* %31, i32 4 ; [#uses=1]
+ store i8 0, i8* %34, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %33, align 4
+ br label %bb29
+
+bb29: ; preds = %bb27, %invcont26
+ %35 = bitcast i8* %31 to %struct.btCollisionAlgorithmCreateFunc* ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 11 ; [#uses=1]
+ store %struct.btCollisionAlgorithmCreateFunc* %35, %struct.btCollisionAlgorithmCreateFunc** %36, align 4
+ %37 = invoke i8* @_Z22btAlignedAllocInternalji(i32 8, i32 16)
+ to label %invcont30 unwind label %lpad ; [#uses=4]
+
+invcont30: ; preds = %bb29
+ %38 = icmp eq i8* %37, null ; [#uses=1]
+ br i1 %38, label %bb33, label %bb31
+
+bb31: ; preds = %invcont30
+ %39 = bitcast i8* %37 to i32 (...)*** ; [#uses=1]
+ %40 = getelementptr inbounds i8* %37, i32 4 ; [#uses=1]
+ store i8 0, i8* %40, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE, i32 0, i32 2), i32 (...)*** %39, align 4
+ br label %bb33
+
+bb33: ; preds = %bb31, %invcont30
+ %41 = bitcast i8* %37 to %struct.btCollisionAlgorithmCreateFunc* ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 12 ; [#uses=1]
+ store %struct.btCollisionAlgorithmCreateFunc* %41, %struct.btCollisionAlgorithmCreateFunc** %42, align 4
+ %43 = invoke i8* @_Z22btAlignedAllocInternalji(i32 8, i32 16)
+ to label %invcont34 unwind label %lpad ; [#uses=4]
+
+invcont34: ; preds = %bb33
+ %44 = icmp eq i8* %43, null ; [#uses=1]
+ br i1 %44, label %bb37, label %bb35
+
+bb35: ; preds = %invcont34
+ %45 = bitcast i8* %43 to i32 (...)*** ; [#uses=1]
+ %46 = getelementptr inbounds i8* %43, i32 4 ; [#uses=1]
+ store i8 0, i8* %46, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN28btCompoundCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %45, align 4
+ br label %bb37
+
+bb37: ; preds = %bb35, %invcont34
+ %47 = bitcast i8* %43 to %struct.btCollisionAlgorithmCreateFunc* ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 13 ; [#uses=1]
+ store %struct.btCollisionAlgorithmCreateFunc* %47, %struct.btCollisionAlgorithmCreateFunc** %48, align 4
+ %49 = invoke i8* @_Z22btAlignedAllocInternalji(i32 8, i32 16)
+ to label %invcont38 unwind label %lpad ; [#uses=4]
+
+invcont38: ; preds = %bb37
+ %50 = icmp eq i8* %49, null ; [#uses=1]
+ br i1 %50, label %bb41, label %bb39
+
+bb39: ; preds = %invcont38
+ %51 = bitcast i8* %49 to i32 (...)*** ; [#uses=1]
+ %52 = getelementptr inbounds i8* %49, i32 4 ; [#uses=1]
+ store i8 0, i8* %52, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE, i32 0, i32 2), i32 (...)*** %51, align 4
+ br label %bb41
+
+bb41: ; preds = %bb39, %invcont38
+ %53 = bitcast i8* %49 to %struct.btCollisionAlgorithmCreateFunc* ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 14 ; [#uses=1]
+ store %struct.btCollisionAlgorithmCreateFunc* %53, %struct.btCollisionAlgorithmCreateFunc** %54, align 4
+ %55 = invoke i8* @_Z22btAlignedAllocInternalji(i32 8, i32 16)
+ to label %invcont42 unwind label %lpad ; [#uses=4]
+
+invcont42: ; preds = %bb41
+ %56 = icmp eq i8* %55, null ; [#uses=1]
+ br i1 %56, label %bb45, label %bb43
+
+bb43: ; preds = %invcont42
+ %57 = bitcast i8* %55 to i32 (...)*** ; [#uses=1]
+ %58 = getelementptr inbounds i8* %55, i32 4 ; [#uses=1]
+ store i8 0, i8* %58, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN16btEmptyAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %57, align 4
+ br label %bb45
+
+bb45: ; preds = %bb43, %invcont42
+ %59 = bitcast i8* %55 to %struct.btCollisionAlgorithmCreateFunc* ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 15 ; [#uses=1]
+ store %struct.btCollisionAlgorithmCreateFunc* %59, %struct.btCollisionAlgorithmCreateFunc** %60, align 4
+ %61 = invoke i8* @_Z22btAlignedAllocInternalji(i32 8, i32 16)
+ to label %invcont46 unwind label %lpad ; [#uses=4]
+
+invcont46: ; preds = %bb45
+ %62 = icmp eq i8* %61, null ; [#uses=1]
+ br i1 %62, label %bb49, label %bb47
+
+bb47: ; preds = %invcont46
+ %63 = bitcast i8* %61 to i32 (...)*** ; [#uses=1]
+ %64 = getelementptr inbounds i8* %61, i32 4 ; [#uses=1]
+ store i8 0, i8* %64, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %63, align 4
+ br label %bb49
+
+bb49: ; preds = %bb47, %invcont46
+ %65 = bitcast i8* %61 to %struct.btCollisionAlgorithmCreateFunc* ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 16 ; [#uses=1]
+ store %struct.btCollisionAlgorithmCreateFunc* %65, %struct.btCollisionAlgorithmCreateFunc** %66, align 4
+ %67 = invoke i8* @_Z22btAlignedAllocInternalji(i32 8, i32 16)
+ to label %invcont50 unwind label %lpad ; [#uses=4]
+
+invcont50: ; preds = %bb49
+ %68 = icmp eq i8* %67, null ; [#uses=1]
+ br i1 %68, label %bb53, label %bb51
+
+bb51: ; preds = %invcont50
+ %69 = bitcast i8* %67 to i32 (...)*** ; [#uses=1]
+ %70 = getelementptr inbounds i8* %67, i32 4 ; [#uses=1]
+ store i8 0, i8* %70, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %69, align 4
+ br label %bb53
+
+bb53: ; preds = %bb51, %invcont50
+ %71 = bitcast i8* %67 to %struct.btCollisionAlgorithmCreateFunc* ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 18 ; [#uses=1]
+ store %struct.btCollisionAlgorithmCreateFunc* %71, %struct.btCollisionAlgorithmCreateFunc** %72, align 4
+ %73 = invoke i8* @_Z22btAlignedAllocInternalji(i32 8, i32 16)
+ to label %invcont54 unwind label %lpad ; [#uses=5]
+
+invcont54: ; preds = %bb53
+ %74 = icmp eq i8* %73, null ; [#uses=1]
+ br i1 %74, label %bb57, label %bb55
+
+bb55: ; preds = %invcont54
+ %75 = bitcast i8* %73 to i32 (...)*** ; [#uses=1]
+ %76 = getelementptr inbounds i8* %73, i32 4 ; [#uses=1]
+ store i8 0, i8* %76, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %75, align 4
+ br label %bb57
+
+bb57: ; preds = %bb55, %invcont54
+ %77 = bitcast i8* %73 to %struct.btCollisionAlgorithmCreateFunc* ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 19 ; [#uses=1]
+ store %struct.btCollisionAlgorithmCreateFunc* %77, %struct.btCollisionAlgorithmCreateFunc** %78, align 4
+ %79 = getelementptr inbounds i8* %73, i32 4 ; [#uses=1]
+ store i8 1, i8* %79, align 4
+ %80 = invoke i8* @_Z22btAlignedAllocInternalji(i32 8, i32 16)
+ to label %invcont58 unwind label %lpad ; [#uses=4]
+
+invcont58: ; preds = %bb57
+ %81 = icmp eq i8* %80, null ; [#uses=1]
+ br i1 %81, label %bb61, label %bb59
+
+bb59: ; preds = %invcont58
+ %82 = bitcast i8* %80 to i32 (...)*** ; [#uses=1]
+ %83 = getelementptr inbounds i8* %80, i32 4 ; [#uses=1]
+ store i8 0, i8* %83, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %82, align 4
+ br label %bb61
+
+bb61: ; preds = %bb59, %invcont58
+ %84 = bitcast i8* %80 to %struct.btCollisionAlgorithmCreateFunc* ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 17 ; [#uses=1]
+ store %struct.btCollisionAlgorithmCreateFunc* %84, %struct.btCollisionAlgorithmCreateFunc** %85, align 4
+ %86 = invoke i8* @_Z22btAlignedAllocInternalji(i32 16, i32 16)
+ to label %invcont62 unwind label %lpad ; [#uses=6]
+
+invcont62: ; preds = %bb61
+ %87 = icmp eq i8* %86, null ; [#uses=1]
+ br i1 %87, label %bb65, label %bb63
+
+bb63: ; preds = %invcont62
+ %88 = bitcast i8* %86 to i32 (...)*** ; [#uses=1]
+ %89 = getelementptr inbounds i8* %86, i32 4 ; [#uses=1]
+ store i8 0, i8* %89, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %88, align 4
+ %90 = getelementptr inbounds i8* %86, i32 8 ; [#uses=1]
+ %91 = bitcast i8* %90 to i32* ; [#uses=1]
+ store i32 1, i32* %91, align 4
+ %92 = getelementptr inbounds i8* %86, i32 12 ; [#uses=1]
+ %93 = bitcast i8* %92 to i32* ; [#uses=1]
+ store i32 1, i32* %93, align 4
+ br label %bb65
+
+bb65: ; preds = %bb63, %invcont62
+ %94 = bitcast i8* %86 to %struct.btCollisionAlgorithmCreateFunc* ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 21 ; [#uses=1]
+ store %struct.btCollisionAlgorithmCreateFunc* %94, %struct.btCollisionAlgorithmCreateFunc** %95, align 4
+ %96 = invoke i8* @_Z22btAlignedAllocInternalji(i32 16, i32 16)
+ to label %invcont66 unwind label %lpad ; [#uses=7]
+
+invcont66: ; preds = %bb65
+ %97 = icmp eq i8* %96, null ; [#uses=1]
+ br i1 %97, label %bb69, label %bb67
+
+bb67: ; preds = %invcont66
+ %98 = bitcast i8* %96 to i32 (...)*** ; [#uses=1]
+ %99 = getelementptr inbounds i8* %96, i32 4 ; [#uses=1]
+ store i8 0, i8* %99, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %98, align 4
+ %100 = getelementptr inbounds i8* %96, i32 8 ; [#uses=1]
+ %101 = bitcast i8* %100 to i32* ; [#uses=1]
+ store i32 1, i32* %101, align 4
+ %102 = getelementptr inbounds i8* %96, i32 12 ; [#uses=1]
+ %103 = bitcast i8* %102 to i32* ; [#uses=1]
+ store i32 1, i32* %103, align 4
+ br label %bb69
+
+bb69: ; preds = %bb67, %invcont66
+ %104 = bitcast i8* %96 to %struct.btCollisionAlgorithmCreateFunc* ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 20 ; [#uses=1]
+ store %struct.btCollisionAlgorithmCreateFunc* %104, %struct.btCollisionAlgorithmCreateFunc** %105, align 4
+ %106 = getelementptr inbounds i8* %96, i32 4 ; [#uses=1]
+ store i8 1, i8* %106, align 4
+ %107 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %constructionInfo, i32 0, i32 5 ; [#uses=1]
+ %108 = load i32* %107, align 4 ; [#uses=2]
+ %109 = icmp slt i32 %108, 36 ; [#uses=1]
+ %110 = select i1 %109, i32 36, i32 %108 ; [#uses=2]
+ %111 = icmp sgt i32 %110, 80 ; [#uses=1]
+ %112 = select i1 %111, i32 %110, i32 80 ; [#uses=2]
+ %113 = icmp sgt i32 %112, 44 ; [#uses=1]
+ %114 = select i1 %113, i32 %112, i32 44 ; [#uses=1]
+ store i32 %114, i32* %collisionAlgorithmMaxElementSize, align 4
+ %115 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %constructionInfo, i32 0, i32 0 ; [#uses=2]
+ %116 = load %struct.btStackAlloc** %115, align 4 ; [#uses=1]
+ %117 = icmp eq %struct.btStackAlloc* %116, null ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 3 ; [#uses=2]
+ br i1 %117, label %bb71, label %bb70
+
+bb70: ; preds = %bb69
+ store i8 0, i8* %118, align 4
+ %119 = load %struct.btStackAlloc** %115, align 4 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btStackAlloc* %119, %struct.btStackAlloc** %120, align 4
+ br label %bb82
+
+bb71: ; preds = %bb69
+ store i8 1, i8* %118, align 4
+ %121 = invoke i8* @_Z22btAlignedAllocInternalji(i32 20, i32 16)
+ to label %invcont73 unwind label %lpad ; [#uses=7]
+
+invcont73: ; preds = %bb71
+ %122 = bitcast i8* %121 to %struct.btStackAlloc* ; [#uses=1]
+ %123 = icmp eq i8* %121, null ; [#uses=1]
+ br i1 %123, label %bb81, label %bb74
+
+bb74: ; preds = %invcont73
+ %124 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %constructionInfo, i32 0, i32 6 ; [#uses=1]
+ %125 = load i32* %124, align 4 ; [#uses=2]
+ %126 = bitcast i8* %121 to i8** ; [#uses=2]
+ %127 = getelementptr inbounds i8* %121, i32 4 ; [#uses=1]
+ %128 = bitcast i8* %127 to i32* ; [#uses=2]
+ store i32 0, i32* %128, align 4
+ %129 = getelementptr inbounds i8* %121, i32 8 ; [#uses=1]
+ %130 = bitcast i8* %129 to i32* ; [#uses=1]
+ %131 = getelementptr inbounds i8* %121, i32 12 ; [#uses=1]
+ %132 = bitcast i8* %131 to %struct.btBlock** ; [#uses=1]
+ store %struct.btBlock* null, %struct.btBlock** %132, align 4
+ %133 = getelementptr inbounds i8* %121, i32 16 ; [#uses=1]
+ store i8 0, i8* %133, align 4
+ store i8* null, i8** %126, align 4
+ store i32 0, i32* %130, align 4
+ %134 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %125, i32 16)
+ to label %_ZN12btStackAllocC1Ej.exit unwind label %lpad122 ; [#uses=1]
+
+_ZN12btStackAllocC1Ej.exit: ; preds = %bb74
+ store i8* %134, i8** %126, align 4
+ store i32 %125, i32* %128, align 4
+ br label %bb81
+
+bb81: ; preds = %_ZN12btStackAllocC1Ej.exit, %invcont73
+ %135 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btStackAlloc* %122, %struct.btStackAlloc** %135, align 4
+ br label %bb82
+
+bb82: ; preds = %bb81, %bb70
+ %136 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %constructionInfo, i32 0, i32 1 ; [#uses=2]
+ %137 = load %struct.btPoolAllocator** %136, align 4 ; [#uses=1]
+ %138 = icmp eq %struct.btPoolAllocator* %137, null ; [#uses=1]
+ %139 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 5 ; [#uses=2]
+ br i1 %138, label %bb84, label %bb83
+
+bb83: ; preds = %bb82
+ store i8 0, i8* %139, align 4
+ %140 = load %struct.btPoolAllocator** %136, align 4 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btPoolAllocator* %140, %struct.btPoolAllocator** %141, align 4
+ br label %bb95
+
+bb84: ; preds = %bb82
+ store i8 1, i8* %139, align 4
+ %142 = invoke i8* @_Z22btAlignedAllocInternalji(i32 20, i32 16)
+ to label %invcont86 unwind label %lpad ; [#uses=7]
+
+invcont86: ; preds = %bb84
+ %143 = bitcast i8* %142 to %struct.btPoolAllocator* ; [#uses=1]
+ %144 = icmp eq i8* %142, null ; [#uses=1]
+ br i1 %144, label %bb94, label %bb87
+
+bb87: ; preds = %invcont86
+ %145 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %constructionInfo, i32 0, i32 3 ; [#uses=1]
+ %146 = load i32* %145, align 4 ; [#uses=2]
+ %147 = bitcast i8* %142 to i32* ; [#uses=3]
+ store i32 1140, i32* %147, align 4
+ %148 = getelementptr inbounds i8* %142, i32 4 ; [#uses=1]
+ %149 = bitcast i8* %148 to i32* ; [#uses=2]
+ store i32 %146, i32* %149, align 4
+ %150 = mul nsw i32 %146, 1140 ; [#uses=1]
+ %151 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %150, i32 16)
+ to label %.noexc149 unwind label %lpad126 ; [#uses=4]
+
+.noexc149: ; preds = %bb87
+ %152 = getelementptr inbounds i8* %142, i32 16 ; [#uses=1]
+ %153 = bitcast i8* %152 to i8** ; [#uses=1]
+ store i8* %151, i8** %153, align 4
+ %154 = getelementptr inbounds i8* %142, i32 12 ; [#uses=1]
+ %155 = bitcast i8* %154 to i8** ; [#uses=1]
+ store i8* %151, i8** %155, align 4
+ %156 = load i32* %149, align 4 ; [#uses=3]
+ %157 = getelementptr inbounds i8* %142, i32 8 ; [#uses=1]
+ %158 = bitcast i8* %157 to i32* ; [#uses=1]
+ store i32 %156, i32* %158, align 4
+ %159 = icmp eq i32 %156, 1 ; [#uses=1]
+ %160 = bitcast i8* %151 to i8** ; [#uses=2]
+ br i1 %159, label %_ZN15btPoolAllocatorC1Eii.exit150, label %bb.nph.i142
+
+bb.nph.i142: ; preds = %.noexc149
+ %tmp.i140 = add i32 %156, -1 ; [#uses=1]
+ %.pre.i141 = load i32* %147, align 4 ; [#uses=1]
+ br label %bb.i147
+
+bb.i147: ; preds = %bb.i147, %bb.nph.i142
+ %161 = phi i32 [ %.pre.i141, %bb.nph.i142 ], [ %164, %bb.i147 ] ; [#uses=1]
+ %indvar.i143 = phi i32 [ 0, %bb.nph.i142 ], [ %indvar.next.i145, %bb.i147 ] ; [#uses=1]
+ %162 = phi i8** [ %160, %bb.nph.i142 ], [ %166, %bb.i147 ] ; [#uses=1]
+ %p.03.i144 = phi i8* [ %151, %bb.nph.i142 ], [ %165, %bb.i147 ] ; [#uses=2]
+ %163 = getelementptr inbounds i8* %p.03.i144, i32 %161 ; [#uses=1]
+ store i8* %163, i8** %162, align 4
+ %164 = load i32* %147, align 4 ; [#uses=2]
+ %165 = getelementptr inbounds i8* %p.03.i144, i32 %164 ; [#uses=2]
+ %166 = bitcast i8* %165 to i8** ; [#uses=2]
+ %indvar.next.i145 = add i32 %indvar.i143, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i145, %tmp.i140 ; [#uses=1]
+ br i1 %exitcond, label %_ZN15btPoolAllocatorC1Eii.exit150, label %bb.i147
+
+_ZN15btPoolAllocatorC1Eii.exit150: ; preds = %bb.i147, %.noexc149
+ %.lcssa.i148 = phi i8** [ %160, %.noexc149 ], [ %166, %bb.i147 ] ; [#uses=1]
+ store i8* null, i8** %.lcssa.i148, align 4
+ br label %bb94
+
+bb94: ; preds = %_ZN15btPoolAllocatorC1Eii.exit150, %invcont86
+ %167 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btPoolAllocator* %143, %struct.btPoolAllocator** %167, align 4
+ br label %bb95
+
+bb95: ; preds = %bb94, %bb83
+ %168 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %constructionInfo, i32 0, i32 2 ; [#uses=2]
+ %169 = load %struct.btPoolAllocator** %168, align 4 ; [#uses=1]
+ %170 = icmp eq %struct.btPoolAllocator* %169, null ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 7 ; [#uses=2]
+ br i1 %170, label %bb97, label %bb96
+
+bb96: ; preds = %bb95
+ store i8 0, i8* %171, align 4
+ %172 = load %struct.btPoolAllocator** %168, align 4 ; [#uses=1]
+ %173 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.btPoolAllocator* %172, %struct.btPoolAllocator** %173, align 4
+ ret void
+
+bb97: ; preds = %bb95
+ store i8 1, i8* %171, align 4
+ %174 = invoke i8* @_Z22btAlignedAllocInternalji(i32 20, i32 16)
+ to label %invcont99 unwind label %lpad ; [#uses=7]
+
+invcont99: ; preds = %bb97
+ %175 = bitcast i8* %174 to %struct.btPoolAllocator* ; [#uses=1]
+ %176 = icmp eq i8* %174, null ; [#uses=1]
+ br i1 %176, label %bb107, label %bb100
+
+bb100: ; preds = %invcont99
+ %177 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %constructionInfo, i32 0, i32 4 ; [#uses=1]
+ %178 = load i32* %177, align 4 ; [#uses=2]
+ %179 = load i32* %collisionAlgorithmMaxElementSize, align 4 ; [#uses=2]
+ %180 = bitcast i8* %174 to i32* ; [#uses=3]
+ store i32 %179, i32* %180, align 4
+ %181 = getelementptr inbounds i8* %174, i32 4 ; [#uses=1]
+ %182 = bitcast i8* %181 to i32* ; [#uses=2]
+ store i32 %178, i32* %182, align 4
+ %183 = mul nsw i32 %179, %178 ; [#uses=1]
+ %184 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %183, i32 16)
+ to label %.noexc unwind label %lpad130 ; [#uses=4]
+
+.noexc: ; preds = %bb100
+ %185 = getelementptr inbounds i8* %174, i32 16 ; [#uses=1]
+ %186 = bitcast i8* %185 to i8** ; [#uses=1]
+ store i8* %184, i8** %186, align 4
+ %187 = getelementptr inbounds i8* %174, i32 12 ; [#uses=1]
+ %188 = bitcast i8* %187 to i8** ; [#uses=1]
+ store i8* %184, i8** %188, align 4
+ %189 = load i32* %182, align 4 ; [#uses=3]
+ %190 = getelementptr inbounds i8* %174, i32 8 ; [#uses=1]
+ %191 = bitcast i8* %190 to i32* ; [#uses=1]
+ store i32 %189, i32* %191, align 4
+ %192 = icmp eq i32 %189, 1 ; [#uses=1]
+ %193 = bitcast i8* %184 to i8** ; [#uses=2]
+ br i1 %192, label %_ZN15btPoolAllocatorC1Eii.exit, label %bb.nph.i
+
+bb.nph.i: ; preds = %.noexc
+ %tmp.i = add i32 %189, -1 ; [#uses=1]
+ %.pre.i = load i32* %180, align 4 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %bb.i, %bb.nph.i
+ %194 = phi i32 [ %.pre.i, %bb.nph.i ], [ %197, %bb.i ] ; [#uses=1]
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb.i ] ; [#uses=1]
+ %195 = phi i8** [ %193, %bb.nph.i ], [ %199, %bb.i ] ; [#uses=1]
+ %p.03.i = phi i8* [ %184, %bb.nph.i ], [ %198, %bb.i ] ; [#uses=2]
+ %196 = getelementptr inbounds i8* %p.03.i, i32 %194 ; [#uses=1]
+ store i8* %196, i8** %195, align 4
+ %197 = load i32* %180, align 4 ; [#uses=2]
+ %198 = getelementptr inbounds i8* %p.03.i, i32 %197 ; [#uses=2]
+ %199 = bitcast i8* %198 to i8** ; [#uses=2]
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond156 = icmp eq i32 %indvar.next.i, %tmp.i ; [#uses=1]
+ br i1 %exitcond156, label %_ZN15btPoolAllocatorC1Eii.exit, label %bb.i
+
+_ZN15btPoolAllocatorC1Eii.exit: ; preds = %bb.i, %.noexc
+ %.lcssa.i = phi i8** [ %193, %.noexc ], [ %199, %bb.i ] ; [#uses=1]
+ store i8* null, i8** %.lcssa.i, align 4
+ br label %bb107
+
+bb107: ; preds = %_ZN15btPoolAllocatorC1Eii.exit, %invcont99
+ %200 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.btPoolAllocator* %175, %struct.btPoolAllocator** %200, align 4
+ ret void
+
+lpad: ; preds = %bb97, %bb84, %bb71, %bb65, %bb61, %bb57, %bb53, %bb49, %bb45, %bb41, %bb37, %bb33, %bb29, %bb25, %bb16, %bb11, %bb6, %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select113 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad118: ; preds = %bb18
+ %eh_ptr119 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select121 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr119, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad122: ; preds = %bb74
+ %eh_ptr123 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select125 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr123, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad126: ; preds = %bb87
+ %eh_ptr127 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select129 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr127, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad130: ; preds = %bb100
+ %eh_ptr131 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select133 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr131, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+ppad: ; preds = %lpad130, %lpad126, %lpad122, %lpad118, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr131, %lpad130 ], [ %eh_ptr, %lpad ], [ %eh_ptr127, %lpad126 ], [ %eh_ptr123, %lpad122 ], [ %eh_ptr119, %lpad118 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTV24btCollisionConfiguration, i32 0, i32 2), i32 (...)*** %0, align 4
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btPoolAllocator* @_ZN31btDefaultCollisionConfiguration25getPersistentManifoldPoolEv(%struct.btDefaultCollisionConfiguration* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 4 ; [#uses=1]
+ %1 = load %struct.btPoolAllocator** %0, align 4 ; [#uses=1]
+ ret %struct.btPoolAllocator* %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btPoolAllocator* @_ZN31btDefaultCollisionConfiguration25getCollisionAlgorithmPoolEv(%struct.btDefaultCollisionConfiguration* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load %struct.btPoolAllocator** %0, align 4 ; [#uses=1]
+ ret %struct.btPoolAllocator* %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btStackAlloc* @_ZN31btDefaultCollisionConfiguration17getStackAllocatorEv(%struct.btDefaultCollisionConfiguration* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 2 ; [#uses=1]
+ %1 = load %struct.btStackAlloc** %0, align 4 ; [#uses=1]
+ ret %struct.btStackAlloc* %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btVoronoiSimplexSolver* @_ZN31btDefaultCollisionConfiguration16getSimplexSolverEv(%struct.btDefaultCollisionConfiguration* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 8 ; [#uses=1]
+ %1 = load %struct.btVoronoiSimplexSolver** %0, align 4 ; [#uses=1]
+ ret %struct.btVoronoiSimplexSolver* %1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD1Ev(%"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN31btConvexPlaneCollisionAlgorithm10CreateFuncD0Ev(%"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN31btConvexPlaneCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionAlgorithm* @_ZN31btConvexPlaneCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i8* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %7 = tail call i8* %6(%struct.btActionInterface* %1, i32 28) ; [#uses=3]
+ %8 = getelementptr inbounds %"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load i8* %8, align 4 ; [#uses=1]
+ %toBoolnot = icmp eq i8 %9, 0 ; [#uses=1]
+ %10 = bitcast i8* %7 to %struct.btConvexPlaneCollisionAlgorithm* ; [#uses=2]
+ %11 = icmp eq i8* %7, null ; [#uses=2]
+ br i1 %toBoolnot, label %bb, label %bb9
+
+bb: ; preds = %entry
+ br i1 %11, label %bb18, label %bb4
+
+bb4: ; preds = %bb
+ %12 = getelementptr inbounds %"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 2 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 1 ; [#uses=1]
+ %15 = load i32* %14, align 4 ; [#uses=1]
+ invoke void @_ZN31btConvexPlaneCollisionAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_bii(%struct.btConvexPlaneCollisionAlgorithm* %10, %struct.btPersistentManifold* null, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext 0, i32 %15, i32 %13)
+ to label %bb18 unwind label %lpad
+
+bb9: ; preds = %entry
+ br i1 %11, label %bb18, label %bb10
+
+bb10: ; preds = %bb9
+ %16 = getelementptr inbounds %"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 2 ; [#uses=1]
+ %17 = load i32* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %"struct.btConvexPlaneCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 1 ; [#uses=1]
+ %19 = load i32* %18, align 4 ; [#uses=1]
+ invoke void @_ZN31btConvexPlaneCollisionAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_bii(%struct.btConvexPlaneCollisionAlgorithm* %10, %struct.btPersistentManifold* null, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext 1, i32 %19, i32 %17)
+ to label %bb18 unwind label %lpad22
+
+bb18: ; preds = %bb10, %bb9, %bb4, %bb
+ %.0 = bitcast i8* %7 to %struct.btCollisionAlgorithm* ; [#uses=1]
+ ret %struct.btCollisionAlgorithm* %.0
+
+lpad: ; preds = %bb4
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %Unwind
+
+lpad22: ; preds = %bb10
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %Unwind
+
+Unwind: ; preds = %lpad22, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr23, %lpad22 ] ; [#uses=1]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN24btCollisionConfigurationD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTV24btCollisionConfiguration, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN24btCollisionConfigurationD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTV24btCollisionConfiguration, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD1Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN33btConvexConcaveCollisionAlgorithm10CreateFuncD0Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN33btConvexConcaveCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionAlgorithm* @_ZN33btConvexConcaveCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i8* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %7 = tail call i8* %6(%struct.btActionInterface* %1, i32 80) ; [#uses=3]
+ %8 = icmp eq i8* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %9 = bitcast i8* %7 to %struct.btConvexConcaveCollisionAlgorithm* ; [#uses=1]
+ invoke void @_ZN33btConvexConcaveCollisionAlgorithmC1ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_b(%struct.btConvexConcaveCollisionAlgorithm* %9, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext 0)
+ to label %bb4 unwind label %lpad
+
+bb4: ; preds = %bb, %entry
+ %iftmp.163.0 = bitcast i8* %7 to %struct.btCollisionAlgorithm* ; [#uses=1]
+ ret %struct.btCollisionAlgorithm* %iftmp.163.0
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD1Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncD0Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN33btConvexConcaveCollisionAlgorithm17SwappedCreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionAlgorithm* @_ZN33btConvexConcaveCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i8* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %7 = tail call i8* %6(%struct.btActionInterface* %1, i32 80) ; [#uses=3]
+ %8 = icmp eq i8* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %9 = bitcast i8* %7 to %struct.btConvexConcaveCollisionAlgorithm* ; [#uses=1]
+ invoke void @_ZN33btConvexConcaveCollisionAlgorithmC1ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_b(%struct.btConvexConcaveCollisionAlgorithm* %9, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext 1)
+ to label %bb4 unwind label %lpad
+
+bb4: ; preds = %bb, %entry
+ %iftmp.164.0 = bitcast i8* %7 to %struct.btCollisionAlgorithm* ; [#uses=1]
+ ret %struct.btCollisionAlgorithm* %iftmp.164.0
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN28btCompoundCollisionAlgorithm10CreateFuncD1Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN28btCompoundCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN28btCompoundCollisionAlgorithm10CreateFuncD0Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN28btCompoundCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionAlgorithm* @_ZN28btCompoundCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i8* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %7 = tail call i8* %6(%struct.btActionInterface* %1, i32 44) ; [#uses=3]
+ %8 = icmp eq i8* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %9 = bitcast i8* %7 to %struct.btCompoundCollisionAlgorithm* ; [#uses=1]
+ invoke void @_ZN28btCompoundCollisionAlgorithmC1ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_b(%struct.btCompoundCollisionAlgorithm* %9, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext 0)
+ to label %bb4 unwind label %lpad
+
+bb4: ; preds = %bb, %entry
+ %iftmp.167.0 = bitcast i8* %7 to %struct.btCollisionAlgorithm* ; [#uses=1]
+ ret %struct.btCollisionAlgorithm* %iftmp.167.0
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD1Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN28btCompoundCollisionAlgorithm17SwappedCreateFuncD0Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN28btCompoundCollisionAlgorithm17SwappedCreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionAlgorithm* @_ZN28btCompoundCollisionAlgorithm17SwappedCreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i8* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %7 = tail call i8* %6(%struct.btActionInterface* %1, i32 44) ; [#uses=3]
+ %8 = icmp eq i8* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %9 = bitcast i8* %7 to %struct.btCompoundCollisionAlgorithm* ; [#uses=1]
+ invoke void @_ZN28btCompoundCollisionAlgorithmC1ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_b(%struct.btCompoundCollisionAlgorithm* %9, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext 1)
+ to label %bb4 unwind label %lpad
+
+bb4: ; preds = %bb, %entry
+ %iftmp.168.0 = bitcast i8* %7 to %struct.btCollisionAlgorithm* ; [#uses=1]
+ ret %struct.btCollisionAlgorithm* %iftmp.168.0
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btEmptyAlgorithm10CreateFuncD1Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN16btEmptyAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btEmptyAlgorithm10CreateFuncD0Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN16btEmptyAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionAlgorithm* @_ZN16btEmptyAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* nocapture %body0, %struct.btCollisionObject* nocapture %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i8* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %7 = tail call i8* %6(%struct.btActionInterface* %1, i32 8) ; [#uses=3]
+ %8 = icmp eq i8* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %9 = bitcast i8* %7 to %struct.btActivatingCollisionAlgorithm* ; [#uses=1]
+ invoke void @_ZN16btEmptyAlgorithmC1ERK36btCollisionAlgorithmConstructionInfo(%struct.btActivatingCollisionAlgorithm* %9, %struct.btCollisionAlgorithmConstructionInfo* %ci)
+ to label %bb4 unwind label %lpad
+
+bb4: ; preds = %bb, %entry
+ %iftmp.162.0 = bitcast i8* %7 to %struct.btCollisionAlgorithm* ; [#uses=1]
+ ret %struct.btCollisionAlgorithm* %iftmp.162.0
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN32btSphereSphereCollisionAlgorithm10CreateFuncD1Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN32btSphereSphereCollisionAlgorithm10CreateFuncD0Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN32btSphereSphereCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionAlgorithm* @_ZN32btSphereSphereCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i8* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %7 = tail call i8* %6(%struct.btActionInterface* %1, i32 16) ; [#uses=3]
+ %8 = icmp eq i8* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %9 = bitcast i8* %7 to %struct.btBox2dBox2dCollisionAlgorithm* ; [#uses=1]
+ invoke void @_ZN32btSphereSphereCollisionAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_(%struct.btBox2dBox2dCollisionAlgorithm* %9, %struct.btPersistentManifold* null, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ to label %bb4 unwind label %lpad
+
+bb4: ; preds = %bb, %entry
+ %iftmp.175.0 = bitcast i8* %7 to %struct.btCollisionAlgorithm* ; [#uses=1]
+ ret %struct.btCollisionAlgorithm* %iftmp.175.0
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD1Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN34btSphereTriangleCollisionAlgorithm10CreateFuncD0Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN34btSphereTriangleCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionAlgorithm* @_ZN34btSphereTriangleCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i8* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %7 = tail call i8* %6(%struct.btActionInterface* %1, i32 20) ; [#uses=3]
+ %8 = icmp eq i8* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %9 = bitcast i8* %7 to %struct.btSphereBoxCollisionAlgorithm* ; [#uses=1]
+ %10 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = load i8* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 1 ; [#uses=1]
+ %13 = load %struct.btPersistentManifold** %12, align 4 ; [#uses=1]
+ invoke void @_ZN34btSphereTriangleCollisionAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_b(%struct.btSphereBoxCollisionAlgorithm* %9, %struct.btPersistentManifold* %13, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, i8 zeroext %11)
+ to label %bb4 unwind label %lpad
+
+bb4: ; preds = %bb, %entry
+ %iftmp.177.0 = bitcast i8* %7 to %struct.btCollisionAlgorithm* ; [#uses=1]
+ ret %struct.btCollisionAlgorithm* %iftmp.177.0
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN26btBoxBoxCollisionAlgorithm10CreateFuncD1Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN26btBoxBoxCollisionAlgorithm10CreateFuncD0Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN26btBoxBoxCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionAlgorithm* @_ZN26btBoxBoxCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i8* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %7 = tail call i8* %6(%struct.btActionInterface* %1, i32 16) ; [#uses=3]
+ %8 = icmp eq i8* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %9 = bitcast i8* %7 to %struct.btBox2dBox2dCollisionAlgorithm* ; [#uses=1]
+ invoke void @_ZN26btBoxBoxCollisionAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_(%struct.btBox2dBox2dCollisionAlgorithm* %9, %struct.btPersistentManifold* null, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ to label %bb4 unwind label %lpad
+
+bb4: ; preds = %bb, %entry
+ %iftmp.173.0 = bitcast i8* %7 to %struct.btCollisionAlgorithm* ; [#uses=1]
+ ret %struct.btCollisionAlgorithm* %iftmp.173.0
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define %struct.btCollisionAlgorithmCreateFunc* @_ZN31btDefaultCollisionConfiguration31getCollisionAlgorithmCreateFuncEii(%struct.btDefaultCollisionConfiguration* nocapture %this, i32 %proxyType0, i32 %proxyType1) nounwind readonly align 2 {
+entry:
+ %0 = icmp eq i32 %proxyType0, 8 ; [#uses=2]
+ %1 = icmp eq i32 %proxyType1, 8 ; [#uses=2]
+ %2 = and i1 %0, %1 ; [#uses=1]
+ br i1 %2, label %bb, label %bb3
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 16 ; [#uses=1]
+ br label %bb89
+
+bb3: ; preds = %entry
+ %4 = icmp eq i32 %proxyType1, 1 ; [#uses=1]
+ %5 = and i1 %0, %4 ; [#uses=1]
+ br i1 %5, label %bb7, label %bb8
+
+bb7: ; preds = %bb3
+ %6 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 18 ; [#uses=1]
+ br label %bb89
+
+bb8: ; preds = %bb3
+ %7 = icmp eq i32 %proxyType0, 1 ; [#uses=1]
+ %8 = and i1 %7, %1 ; [#uses=1]
+ br i1 %8, label %bb12, label %bb13
+
+bb12: ; preds = %bb8
+ %9 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 19 ; [#uses=1]
+ br label %bb89
+
+bb13: ; preds = %bb8
+ %10 = or i32 %proxyType1, %proxyType0 ; [#uses=1]
+ %11 = icmp eq i32 %10, 0 ; [#uses=1]
+ br i1 %11, label %bb14, label %bb15
+
+bb14: ; preds = %bb13
+ %12 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 17 ; [#uses=1]
+ br label %bb89
+
+bb15: ; preds = %bb13
+ %13 = icmp slt i32 %proxyType0, 20 ; [#uses=2]
+ %14 = icmp eq i32 %proxyType1, 28 ; [#uses=1]
+ %or.cond = and i1 %13, %14 ; [#uses=1]
+ br i1 %or.cond, label %bb25, label %bb26
+
+bb25: ; preds = %bb15
+ %15 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 21 ; [#uses=1]
+ br label %bb89
+
+bb26: ; preds = %bb15
+ %16 = icmp slt i32 %proxyType1, 20 ; [#uses=3]
+ %17 = icmp eq i32 %proxyType0, 28 ; [#uses=1]
+ %or.cond91 = and i1 %16, %17 ; [#uses=1]
+ br i1 %or.cond91, label %bb36, label %bb37
+
+bb36: ; preds = %bb26
+ %18 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 20 ; [#uses=1]
+ br label %bb89
+
+bb37: ; preds = %bb26
+ br i1 %13, label %bb42, label %bb63
+
+bb42: ; preds = %bb37
+ br i1 %16, label %bb51, label %bb57
+
+bb51: ; preds = %bb42
+ %19 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 10 ; [#uses=1]
+ br label %bb89
+
+bb57: ; preds = %bb42
+ %20 = add i32 %proxyType1, -21 ; [#uses=1]
+ %21 = icmp ult i32 %20, 9 ; [#uses=1]
+ br i1 %21, label %bb66, label %bb85
+
+bb63: ; preds = %bb37
+ br i1 %16, label %bb72, label %bb78
+
+bb66: ; preds = %bb57
+ %22 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 11 ; [#uses=1]
+ br label %bb89
+
+bb72: ; preds = %bb63
+ %23 = add i32 %proxyType0, -21 ; [#uses=1]
+ %24 = icmp ult i32 %23, 9 ; [#uses=1]
+ br i1 %24, label %bb81, label %bb78
+
+bb78: ; preds = %bb72, %bb63
+ %25 = icmp eq i32 %proxyType0, 31 ; [#uses=1]
+ br i1 %25, label %bb84, label %bb85
+
+bb81: ; preds = %bb72
+ %26 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 12 ; [#uses=1]
+ br label %bb89
+
+bb84: ; preds = %bb78
+ %27 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 13 ; [#uses=1]
+ br label %bb89
+
+bb85: ; preds = %bb78, %bb57
+ %28 = icmp eq i32 %proxyType1, 31 ; [#uses=1]
+ br i1 %28, label %bb87, label %bb88
+
+bb87: ; preds = %bb85
+ %29 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 14 ; [#uses=1]
+ br label %bb89
+
+bb88: ; preds = %bb85
+ %30 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 15 ; [#uses=1]
+ br label %bb89
+
+bb89: ; preds = %bb88, %bb87, %bb84, %bb81, %bb66, %bb51, %bb36, %bb25, %bb14, %bb12, %bb7, %bb
+ %.0.in = phi %struct.btCollisionAlgorithmCreateFunc** [ %3, %bb ], [ %6, %bb7 ], [ %9, %bb12 ], [ %12, %bb14 ], [ %15, %bb25 ], [ %18, %bb36 ], [ %19, %bb51 ], [ %22, %bb66 ], [ %26, %bb81 ], [ %27, %bb84 ], [ %29, %bb87 ], [ %30, %bb88 ] ; [#uses=1]
+ %.0 = load %struct.btCollisionAlgorithmCreateFunc** %.0.in, align 4 ; [#uses=1]
+ ret %struct.btCollisionAlgorithmCreateFunc* %.0
+}
+
+; [#uses=0]
+define void @_ZN31btDefaultCollisionConfiguration35setConvexConvexMultipointIterationsEii(%struct.btDefaultCollisionConfiguration* nocapture %this, i32 %numPerturbationIterations, i32 %minimumPointsPerturbationThreshold) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 10 ; [#uses=1]
+ %1 = load %struct.btCollisionAlgorithmCreateFunc** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %1, i32 2, i32 0 ; [#uses=1]
+ %numPerturbationIterations.c = inttoptr i32 %numPerturbationIterations to i32 (...)** ; [#uses=1]
+ store i32 (...)** %numPerturbationIterations.c, i32 (...)*** %2, align 4
+ %3 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %1, i32 2, i32 1 ; [#uses=1]
+ %4 = bitcast i8* %3 to i32* ; [#uses=1]
+ store i32 %minimumPointsPerturbationThreshold, i32* %4, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN31btDefaultCollisionConfigurationD0Ev(%struct.btDefaultCollisionConfiguration* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV31btDefaultCollisionConfiguration, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 3 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 2 ; [#uses=3]
+ %4 = load %struct.btStackAlloc** %3, align 4 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btStackAlloc* %4, i32 0, i32 2 ; [#uses=2]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = icmp eq i32 %6, 0 ; [#uses=1]
+ br i1 %7, label %bb.i, label %_ZN12btStackAllocD1Ev.exit
+
+bb.i: ; preds = %bb
+ %8 = getelementptr inbounds %struct.btStackAlloc* %4, i32 0, i32 4 ; [#uses=1]
+ %9 = load i8* %8, align 4 ; [#uses=1]
+ %toBoolnot.i = icmp eq i8 %9, 0 ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb4.i, label %_ZN12btStackAlloc7destroyEv.exit
+
+bb4.i: ; preds = %bb.i
+ %10 = getelementptr inbounds %struct.btStackAlloc* %4, i32 0, i32 0 ; [#uses=1]
+ %11 = load i8** %10, align 4 ; [#uses=2]
+ %12 = icmp eq i8* %11, null ; [#uses=1]
+ br i1 %12, label %_ZN12btStackAlloc7destroyEv.exit, label %bb5.i
+
+bb5.i: ; preds = %bb4.i
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %11)
+ br label %_ZN12btStackAlloc7destroyEv.exit
+
+_ZN12btStackAlloc7destroyEv.exit: ; preds = %bb5.i, %bb4.i, %bb.i
+ %13 = getelementptr inbounds %struct.btStackAlloc* %4, i32 0, i32 0 ; [#uses=1]
+ store i8* null, i8** %13, align 4
+ store i32 0, i32* %5, align 4
+ %.pre = load %struct.btStackAlloc** %3, align 4 ; [#uses=6]
+ %.phi.trans.insert = getelementptr inbounds %struct.btStackAlloc* %.pre, i32 0, i32 2 ; [#uses=1]
+ %.pre12 = load i32* %.phi.trans.insert, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btStackAlloc* %.pre, i32 0, i32 2 ; [#uses=1]
+ %15 = icmp eq i32 %.pre12, 0 ; [#uses=1]
+ br i1 %15, label %bb.i.i, label %_ZN12btStackAllocD1Ev.exit
+
+bb.i.i: ; preds = %_ZN12btStackAlloc7destroyEv.exit
+ %16 = getelementptr inbounds %struct.btStackAlloc* %.pre, i32 0, i32 4 ; [#uses=1]
+ %17 = load i8* %16, align 4 ; [#uses=1]
+ %toBoolnot.i.i = icmp eq i8 %17, 0 ; [#uses=1]
+ br i1 %toBoolnot.i.i, label %bb4.i.i, label %bb6.i.i
+
+bb4.i.i: ; preds = %bb.i.i
+ %18 = getelementptr inbounds %struct.btStackAlloc* %.pre, i32 0, i32 0 ; [#uses=1]
+ %19 = load i8** %18, align 4 ; [#uses=2]
+ %20 = icmp eq i8* %19, null ; [#uses=1]
+ br i1 %20, label %bb6.i.i, label %bb5.i.i
+
+bb5.i.i: ; preds = %bb4.i.i
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %19)
+ br label %bb6.i.i
+
+bb6.i.i: ; preds = %bb5.i.i, %bb4.i.i, %bb.i.i
+ %21 = getelementptr inbounds %struct.btStackAlloc* %.pre, i32 0, i32 0 ; [#uses=1]
+ store i8* null, i8** %21, align 4
+ store i32 0, i32* %14, align 4
+ %.pre13 = load %struct.btStackAlloc** %3, align 4 ; [#uses=1]
+ br label %_ZN12btStackAllocD1Ev.exit
+
+_ZN12btStackAllocD1Ev.exit: ; preds = %bb6.i.i, %_ZN12btStackAlloc7destroyEv.exit, %bb
+ %22 = phi %struct.btStackAlloc* [ %.pre, %_ZN12btStackAlloc7destroyEv.exit ], [ %.pre13, %bb6.i.i ], [ %4, %bb ] ; [#uses=1]
+ %23 = bitcast %struct.btStackAlloc* %22 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb1
+
+bb1: ; preds = %_ZN12btStackAllocD1Ev.exit, %entry
+ %24 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 7 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool2 = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool2, label %bb4, label %bb3
+
+bb3: ; preds = %bb1
+ %26 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 6 ; [#uses=2]
+ %27 = load %struct.btPoolAllocator** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btPoolAllocator* %27, i32 0, i32 4 ; [#uses=1]
+ %29 = load i8** %28, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %29)
+ %30 = load %struct.btPoolAllocator** %26, align 4 ; [#uses=1]
+ %31 = bitcast %struct.btPoolAllocator* %30 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %31)
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb1
+ %32 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 5 ; [#uses=1]
+ %33 = load i8* %32, align 4 ; [#uses=1]
+ %toBool5 = icmp eq i8 %33, 0 ; [#uses=1]
+ br i1 %toBool5, label %bb7, label %bb6
+
+bb6: ; preds = %bb4
+ %34 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 4 ; [#uses=2]
+ %35 = load %struct.btPoolAllocator** %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btPoolAllocator* %35, i32 0, i32 4 ; [#uses=1]
+ %37 = load i8** %36, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %37)
+ %38 = load %struct.btPoolAllocator** %34, align 4 ; [#uses=1]
+ %39 = bitcast %struct.btPoolAllocator* %38 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %39)
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb4
+ %40 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 10 ; [#uses=2]
+ %41 = load %struct.btCollisionAlgorithmCreateFunc** %40, align 4 ; [#uses=2]
+ %42 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %41, i32 0, i32 0 ; [#uses=1]
+ %43 = load i32 (...)*** %42, align 4 ; [#uses=1]
+ %44 = load i32 (...)** %43, align 4 ; [#uses=1]
+ %45 = bitcast i32 (...)* %44 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %45(%struct.btCollisionAlgorithmCreateFunc* %41)
+ %46 = load %struct.btCollisionAlgorithmCreateFunc** %40, align 4 ; [#uses=1]
+ %47 = bitcast %struct.btCollisionAlgorithmCreateFunc* %46 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %47)
+ %48 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 11 ; [#uses=2]
+ %49 = load %struct.btCollisionAlgorithmCreateFunc** %48, align 4 ; [#uses=2]
+ %50 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %49, i32 0, i32 0 ; [#uses=1]
+ %51 = load i32 (...)*** %50, align 4 ; [#uses=1]
+ %52 = load i32 (...)** %51, align 4 ; [#uses=1]
+ %53 = bitcast i32 (...)* %52 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %53(%struct.btCollisionAlgorithmCreateFunc* %49)
+ %54 = load %struct.btCollisionAlgorithmCreateFunc** %48, align 4 ; [#uses=1]
+ %55 = bitcast %struct.btCollisionAlgorithmCreateFunc* %54 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %55)
+ %56 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 12 ; [#uses=2]
+ %57 = load %struct.btCollisionAlgorithmCreateFunc** %56, align 4 ; [#uses=2]
+ %58 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %57, i32 0, i32 0 ; [#uses=1]
+ %59 = load i32 (...)*** %58, align 4 ; [#uses=1]
+ %60 = load i32 (...)** %59, align 4 ; [#uses=1]
+ %61 = bitcast i32 (...)* %60 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %61(%struct.btCollisionAlgorithmCreateFunc* %57)
+ %62 = load %struct.btCollisionAlgorithmCreateFunc** %56, align 4 ; [#uses=1]
+ %63 = bitcast %struct.btCollisionAlgorithmCreateFunc* %62 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %63)
+ %64 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 13 ; [#uses=2]
+ %65 = load %struct.btCollisionAlgorithmCreateFunc** %64, align 4 ; [#uses=2]
+ %66 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %65, i32 0, i32 0 ; [#uses=1]
+ %67 = load i32 (...)*** %66, align 4 ; [#uses=1]
+ %68 = load i32 (...)** %67, align 4 ; [#uses=1]
+ %69 = bitcast i32 (...)* %68 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %69(%struct.btCollisionAlgorithmCreateFunc* %65)
+ %70 = load %struct.btCollisionAlgorithmCreateFunc** %64, align 4 ; [#uses=1]
+ %71 = bitcast %struct.btCollisionAlgorithmCreateFunc* %70 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %71)
+ %72 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 14 ; [#uses=2]
+ %73 = load %struct.btCollisionAlgorithmCreateFunc** %72, align 4 ; [#uses=2]
+ %74 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %73, i32 0, i32 0 ; [#uses=1]
+ %75 = load i32 (...)*** %74, align 4 ; [#uses=1]
+ %76 = load i32 (...)** %75, align 4 ; [#uses=1]
+ %77 = bitcast i32 (...)* %76 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %77(%struct.btCollisionAlgorithmCreateFunc* %73)
+ %78 = load %struct.btCollisionAlgorithmCreateFunc** %72, align 4 ; [#uses=1]
+ %79 = bitcast %struct.btCollisionAlgorithmCreateFunc* %78 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %79)
+ %80 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 15 ; [#uses=2]
+ %81 = load %struct.btCollisionAlgorithmCreateFunc** %80, align 4 ; [#uses=2]
+ %82 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %81, i32 0, i32 0 ; [#uses=1]
+ %83 = load i32 (...)*** %82, align 4 ; [#uses=1]
+ %84 = load i32 (...)** %83, align 4 ; [#uses=1]
+ %85 = bitcast i32 (...)* %84 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %85(%struct.btCollisionAlgorithmCreateFunc* %81)
+ %86 = load %struct.btCollisionAlgorithmCreateFunc** %80, align 4 ; [#uses=1]
+ %87 = bitcast %struct.btCollisionAlgorithmCreateFunc* %86 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %87)
+ %88 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 16 ; [#uses=2]
+ %89 = load %struct.btCollisionAlgorithmCreateFunc** %88, align 4 ; [#uses=2]
+ %90 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %89, i32 0, i32 0 ; [#uses=1]
+ %91 = load i32 (...)*** %90, align 4 ; [#uses=1]
+ %92 = load i32 (...)** %91, align 4 ; [#uses=1]
+ %93 = bitcast i32 (...)* %92 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %93(%struct.btCollisionAlgorithmCreateFunc* %89)
+ %94 = load %struct.btCollisionAlgorithmCreateFunc** %88, align 4 ; [#uses=1]
+ %95 = bitcast %struct.btCollisionAlgorithmCreateFunc* %94 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %95)
+ %96 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 18 ; [#uses=2]
+ %97 = load %struct.btCollisionAlgorithmCreateFunc** %96, align 4 ; [#uses=2]
+ %98 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %97, i32 0, i32 0 ; [#uses=1]
+ %99 = load i32 (...)*** %98, align 4 ; [#uses=1]
+ %100 = load i32 (...)** %99, align 4 ; [#uses=1]
+ %101 = bitcast i32 (...)* %100 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %101(%struct.btCollisionAlgorithmCreateFunc* %97)
+ %102 = load %struct.btCollisionAlgorithmCreateFunc** %96, align 4 ; [#uses=1]
+ %103 = bitcast %struct.btCollisionAlgorithmCreateFunc* %102 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %103)
+ %104 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 19 ; [#uses=2]
+ %105 = load %struct.btCollisionAlgorithmCreateFunc** %104, align 4 ; [#uses=2]
+ %106 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %105, i32 0, i32 0 ; [#uses=1]
+ %107 = load i32 (...)*** %106, align 4 ; [#uses=1]
+ %108 = load i32 (...)** %107, align 4 ; [#uses=1]
+ %109 = bitcast i32 (...)* %108 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %109(%struct.btCollisionAlgorithmCreateFunc* %105)
+ %110 = load %struct.btCollisionAlgorithmCreateFunc** %104, align 4 ; [#uses=1]
+ %111 = bitcast %struct.btCollisionAlgorithmCreateFunc* %110 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %111)
+ %112 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 17 ; [#uses=2]
+ %113 = load %struct.btCollisionAlgorithmCreateFunc** %112, align 4 ; [#uses=2]
+ %114 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %113, i32 0, i32 0 ; [#uses=1]
+ %115 = load i32 (...)*** %114, align 4 ; [#uses=1]
+ %116 = load i32 (...)** %115, align 4 ; [#uses=1]
+ %117 = bitcast i32 (...)* %116 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %117(%struct.btCollisionAlgorithmCreateFunc* %113)
+ %118 = load %struct.btCollisionAlgorithmCreateFunc** %112, align 4 ; [#uses=1]
+ %119 = bitcast %struct.btCollisionAlgorithmCreateFunc* %118 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %119)
+ %120 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 21 ; [#uses=2]
+ %121 = load %struct.btCollisionAlgorithmCreateFunc** %120, align 4 ; [#uses=2]
+ %122 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %121, i32 0, i32 0 ; [#uses=1]
+ %123 = load i32 (...)*** %122, align 4 ; [#uses=1]
+ %124 = load i32 (...)** %123, align 4 ; [#uses=1]
+ %125 = bitcast i32 (...)* %124 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %125(%struct.btCollisionAlgorithmCreateFunc* %121)
+ %126 = load %struct.btCollisionAlgorithmCreateFunc** %120, align 4 ; [#uses=1]
+ %127 = bitcast %struct.btCollisionAlgorithmCreateFunc* %126 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %127)
+ %128 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 20 ; [#uses=2]
+ %129 = load %struct.btCollisionAlgorithmCreateFunc** %128, align 4 ; [#uses=2]
+ %130 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %129, i32 0, i32 0 ; [#uses=1]
+ %131 = load i32 (...)*** %130, align 4 ; [#uses=1]
+ %132 = load i32 (...)** %131, align 4 ; [#uses=1]
+ %133 = bitcast i32 (...)* %132 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %133(%struct.btCollisionAlgorithmCreateFunc* %129)
+ %134 = load %struct.btCollisionAlgorithmCreateFunc** %128, align 4 ; [#uses=1]
+ %135 = bitcast %struct.btCollisionAlgorithmCreateFunc* %134 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %135)
+ %136 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 8 ; [#uses=1]
+ %137 = load %struct.btVoronoiSimplexSolver** %136, align 4 ; [#uses=1]
+ %138 = bitcast %struct.btVoronoiSimplexSolver* %137 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %138)
+ %139 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 9 ; [#uses=2]
+ %140 = load %struct.btActionInterface** %139, align 4 ; [#uses=2]
+ %141 = getelementptr inbounds %struct.btActionInterface* %140, i32 0, i32 0 ; [#uses=1]
+ %142 = load i32 (...)*** %141, align 4 ; [#uses=1]
+ %143 = load i32 (...)** %142, align 4 ; [#uses=1]
+ %144 = bitcast i32 (...)* %143 to void (%struct.btActionInterface*)* ; [#uses=1]
+ tail call void %144(%struct.btActionInterface* %140)
+ %145 = load %struct.btActionInterface** %139, align 4 ; [#uses=1]
+ %146 = bitcast %struct.btActionInterface* %145 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %146)
+ %147 = bitcast %struct.btDefaultCollisionConfiguration* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %147) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN31btDefaultCollisionConfigurationD1Ev(%struct.btDefaultCollisionConfiguration* %this) align 2 {
+entry:
+ tail call void @_ZN31btDefaultCollisionConfigurationD2Ev(%struct.btDefaultCollisionConfiguration* %this)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN31btDefaultCollisionConfigurationD2Ev(%struct.btDefaultCollisionConfiguration* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV31btDefaultCollisionConfiguration, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 3 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 2 ; [#uses=3]
+ %4 = load %struct.btStackAlloc** %3, align 4 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btStackAlloc* %4, i32 0, i32 2 ; [#uses=2]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = icmp eq i32 %6, 0 ; [#uses=1]
+ br i1 %7, label %bb.i, label %_ZN12btStackAllocD1Ev.exit
+
+bb.i: ; preds = %bb
+ %8 = getelementptr inbounds %struct.btStackAlloc* %4, i32 0, i32 4 ; [#uses=1]
+ %9 = load i8* %8, align 4 ; [#uses=1]
+ %toBoolnot.i = icmp eq i8 %9, 0 ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb4.i, label %_ZN12btStackAlloc7destroyEv.exit
+
+bb4.i: ; preds = %bb.i
+ %10 = getelementptr inbounds %struct.btStackAlloc* %4, i32 0, i32 0 ; [#uses=1]
+ %11 = load i8** %10, align 4 ; [#uses=2]
+ %12 = icmp eq i8* %11, null ; [#uses=1]
+ br i1 %12, label %_ZN12btStackAlloc7destroyEv.exit, label %bb5.i
+
+bb5.i: ; preds = %bb4.i
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %11)
+ br label %_ZN12btStackAlloc7destroyEv.exit
+
+_ZN12btStackAlloc7destroyEv.exit: ; preds = %bb5.i, %bb4.i, %bb.i
+ %13 = getelementptr inbounds %struct.btStackAlloc* %4, i32 0, i32 0 ; [#uses=1]
+ store i8* null, i8** %13, align 4
+ store i32 0, i32* %5, align 4
+ %.pre = load %struct.btStackAlloc** %3, align 4 ; [#uses=6]
+ %.phi.trans.insert = getelementptr inbounds %struct.btStackAlloc* %.pre, i32 0, i32 2 ; [#uses=1]
+ %.pre12 = load i32* %.phi.trans.insert, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btStackAlloc* %.pre, i32 0, i32 2 ; [#uses=1]
+ %15 = icmp eq i32 %.pre12, 0 ; [#uses=1]
+ br i1 %15, label %bb.i.i, label %_ZN12btStackAllocD1Ev.exit
+
+bb.i.i: ; preds = %_ZN12btStackAlloc7destroyEv.exit
+ %16 = getelementptr inbounds %struct.btStackAlloc* %.pre, i32 0, i32 4 ; [#uses=1]
+ %17 = load i8* %16, align 4 ; [#uses=1]
+ %toBoolnot.i.i = icmp eq i8 %17, 0 ; [#uses=1]
+ br i1 %toBoolnot.i.i, label %bb4.i.i, label %bb6.i.i
+
+bb4.i.i: ; preds = %bb.i.i
+ %18 = getelementptr inbounds %struct.btStackAlloc* %.pre, i32 0, i32 0 ; [#uses=1]
+ %19 = load i8** %18, align 4 ; [#uses=2]
+ %20 = icmp eq i8* %19, null ; [#uses=1]
+ br i1 %20, label %bb6.i.i, label %bb5.i.i
+
+bb5.i.i: ; preds = %bb4.i.i
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %19)
+ br label %bb6.i.i
+
+bb6.i.i: ; preds = %bb5.i.i, %bb4.i.i, %bb.i.i
+ %21 = getelementptr inbounds %struct.btStackAlloc* %.pre, i32 0, i32 0 ; [#uses=1]
+ store i8* null, i8** %21, align 4
+ store i32 0, i32* %14, align 4
+ %.pre13 = load %struct.btStackAlloc** %3, align 4 ; [#uses=1]
+ br label %_ZN12btStackAllocD1Ev.exit
+
+_ZN12btStackAllocD1Ev.exit: ; preds = %bb6.i.i, %_ZN12btStackAlloc7destroyEv.exit, %bb
+ %22 = phi %struct.btStackAlloc* [ %.pre, %_ZN12btStackAlloc7destroyEv.exit ], [ %.pre13, %bb6.i.i ], [ %4, %bb ] ; [#uses=1]
+ %23 = bitcast %struct.btStackAlloc* %22 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb1
+
+bb1: ; preds = %_ZN12btStackAllocD1Ev.exit, %entry
+ %24 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 7 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool2 = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool2, label %bb4, label %bb3
+
+bb3: ; preds = %bb1
+ %26 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 6 ; [#uses=2]
+ %27 = load %struct.btPoolAllocator** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btPoolAllocator* %27, i32 0, i32 4 ; [#uses=1]
+ %29 = load i8** %28, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %29)
+ %30 = load %struct.btPoolAllocator** %26, align 4 ; [#uses=1]
+ %31 = bitcast %struct.btPoolAllocator* %30 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %31)
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb1
+ %32 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 5 ; [#uses=1]
+ %33 = load i8* %32, align 4 ; [#uses=1]
+ %toBool5 = icmp eq i8 %33, 0 ; [#uses=1]
+ br i1 %toBool5, label %bb7, label %bb6
+
+bb6: ; preds = %bb4
+ %34 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 4 ; [#uses=2]
+ %35 = load %struct.btPoolAllocator** %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btPoolAllocator* %35, i32 0, i32 4 ; [#uses=1]
+ %37 = load i8** %36, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %37)
+ %38 = load %struct.btPoolAllocator** %34, align 4 ; [#uses=1]
+ %39 = bitcast %struct.btPoolAllocator* %38 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %39)
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb4
+ %40 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 10 ; [#uses=2]
+ %41 = load %struct.btCollisionAlgorithmCreateFunc** %40, align 4 ; [#uses=2]
+ %42 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %41, i32 0, i32 0 ; [#uses=1]
+ %43 = load i32 (...)*** %42, align 4 ; [#uses=1]
+ %44 = load i32 (...)** %43, align 4 ; [#uses=1]
+ %45 = bitcast i32 (...)* %44 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %45(%struct.btCollisionAlgorithmCreateFunc* %41)
+ %46 = load %struct.btCollisionAlgorithmCreateFunc** %40, align 4 ; [#uses=1]
+ %47 = bitcast %struct.btCollisionAlgorithmCreateFunc* %46 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %47)
+ %48 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 11 ; [#uses=2]
+ %49 = load %struct.btCollisionAlgorithmCreateFunc** %48, align 4 ; [#uses=2]
+ %50 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %49, i32 0, i32 0 ; [#uses=1]
+ %51 = load i32 (...)*** %50, align 4 ; [#uses=1]
+ %52 = load i32 (...)** %51, align 4 ; [#uses=1]
+ %53 = bitcast i32 (...)* %52 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %53(%struct.btCollisionAlgorithmCreateFunc* %49)
+ %54 = load %struct.btCollisionAlgorithmCreateFunc** %48, align 4 ; [#uses=1]
+ %55 = bitcast %struct.btCollisionAlgorithmCreateFunc* %54 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %55)
+ %56 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 12 ; [#uses=2]
+ %57 = load %struct.btCollisionAlgorithmCreateFunc** %56, align 4 ; [#uses=2]
+ %58 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %57, i32 0, i32 0 ; [#uses=1]
+ %59 = load i32 (...)*** %58, align 4 ; [#uses=1]
+ %60 = load i32 (...)** %59, align 4 ; [#uses=1]
+ %61 = bitcast i32 (...)* %60 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %61(%struct.btCollisionAlgorithmCreateFunc* %57)
+ %62 = load %struct.btCollisionAlgorithmCreateFunc** %56, align 4 ; [#uses=1]
+ %63 = bitcast %struct.btCollisionAlgorithmCreateFunc* %62 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %63)
+ %64 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 13 ; [#uses=2]
+ %65 = load %struct.btCollisionAlgorithmCreateFunc** %64, align 4 ; [#uses=2]
+ %66 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %65, i32 0, i32 0 ; [#uses=1]
+ %67 = load i32 (...)*** %66, align 4 ; [#uses=1]
+ %68 = load i32 (...)** %67, align 4 ; [#uses=1]
+ %69 = bitcast i32 (...)* %68 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %69(%struct.btCollisionAlgorithmCreateFunc* %65)
+ %70 = load %struct.btCollisionAlgorithmCreateFunc** %64, align 4 ; [#uses=1]
+ %71 = bitcast %struct.btCollisionAlgorithmCreateFunc* %70 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %71)
+ %72 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 14 ; [#uses=2]
+ %73 = load %struct.btCollisionAlgorithmCreateFunc** %72, align 4 ; [#uses=2]
+ %74 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %73, i32 0, i32 0 ; [#uses=1]
+ %75 = load i32 (...)*** %74, align 4 ; [#uses=1]
+ %76 = load i32 (...)** %75, align 4 ; [#uses=1]
+ %77 = bitcast i32 (...)* %76 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %77(%struct.btCollisionAlgorithmCreateFunc* %73)
+ %78 = load %struct.btCollisionAlgorithmCreateFunc** %72, align 4 ; [#uses=1]
+ %79 = bitcast %struct.btCollisionAlgorithmCreateFunc* %78 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %79)
+ %80 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 15 ; [#uses=2]
+ %81 = load %struct.btCollisionAlgorithmCreateFunc** %80, align 4 ; [#uses=2]
+ %82 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %81, i32 0, i32 0 ; [#uses=1]
+ %83 = load i32 (...)*** %82, align 4 ; [#uses=1]
+ %84 = load i32 (...)** %83, align 4 ; [#uses=1]
+ %85 = bitcast i32 (...)* %84 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %85(%struct.btCollisionAlgorithmCreateFunc* %81)
+ %86 = load %struct.btCollisionAlgorithmCreateFunc** %80, align 4 ; [#uses=1]
+ %87 = bitcast %struct.btCollisionAlgorithmCreateFunc* %86 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %87)
+ %88 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 16 ; [#uses=2]
+ %89 = load %struct.btCollisionAlgorithmCreateFunc** %88, align 4 ; [#uses=2]
+ %90 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %89, i32 0, i32 0 ; [#uses=1]
+ %91 = load i32 (...)*** %90, align 4 ; [#uses=1]
+ %92 = load i32 (...)** %91, align 4 ; [#uses=1]
+ %93 = bitcast i32 (...)* %92 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %93(%struct.btCollisionAlgorithmCreateFunc* %89)
+ %94 = load %struct.btCollisionAlgorithmCreateFunc** %88, align 4 ; [#uses=1]
+ %95 = bitcast %struct.btCollisionAlgorithmCreateFunc* %94 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %95)
+ %96 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 18 ; [#uses=2]
+ %97 = load %struct.btCollisionAlgorithmCreateFunc** %96, align 4 ; [#uses=2]
+ %98 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %97, i32 0, i32 0 ; [#uses=1]
+ %99 = load i32 (...)*** %98, align 4 ; [#uses=1]
+ %100 = load i32 (...)** %99, align 4 ; [#uses=1]
+ %101 = bitcast i32 (...)* %100 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %101(%struct.btCollisionAlgorithmCreateFunc* %97)
+ %102 = load %struct.btCollisionAlgorithmCreateFunc** %96, align 4 ; [#uses=1]
+ %103 = bitcast %struct.btCollisionAlgorithmCreateFunc* %102 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %103)
+ %104 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 19 ; [#uses=2]
+ %105 = load %struct.btCollisionAlgorithmCreateFunc** %104, align 4 ; [#uses=2]
+ %106 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %105, i32 0, i32 0 ; [#uses=1]
+ %107 = load i32 (...)*** %106, align 4 ; [#uses=1]
+ %108 = load i32 (...)** %107, align 4 ; [#uses=1]
+ %109 = bitcast i32 (...)* %108 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %109(%struct.btCollisionAlgorithmCreateFunc* %105)
+ %110 = load %struct.btCollisionAlgorithmCreateFunc** %104, align 4 ; [#uses=1]
+ %111 = bitcast %struct.btCollisionAlgorithmCreateFunc* %110 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %111)
+ %112 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 17 ; [#uses=2]
+ %113 = load %struct.btCollisionAlgorithmCreateFunc** %112, align 4 ; [#uses=2]
+ %114 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %113, i32 0, i32 0 ; [#uses=1]
+ %115 = load i32 (...)*** %114, align 4 ; [#uses=1]
+ %116 = load i32 (...)** %115, align 4 ; [#uses=1]
+ %117 = bitcast i32 (...)* %116 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %117(%struct.btCollisionAlgorithmCreateFunc* %113)
+ %118 = load %struct.btCollisionAlgorithmCreateFunc** %112, align 4 ; [#uses=1]
+ %119 = bitcast %struct.btCollisionAlgorithmCreateFunc* %118 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %119)
+ %120 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 21 ; [#uses=2]
+ %121 = load %struct.btCollisionAlgorithmCreateFunc** %120, align 4 ; [#uses=2]
+ %122 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %121, i32 0, i32 0 ; [#uses=1]
+ %123 = load i32 (...)*** %122, align 4 ; [#uses=1]
+ %124 = load i32 (...)** %123, align 4 ; [#uses=1]
+ %125 = bitcast i32 (...)* %124 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %125(%struct.btCollisionAlgorithmCreateFunc* %121)
+ %126 = load %struct.btCollisionAlgorithmCreateFunc** %120, align 4 ; [#uses=1]
+ %127 = bitcast %struct.btCollisionAlgorithmCreateFunc* %126 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %127)
+ %128 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 20 ; [#uses=2]
+ %129 = load %struct.btCollisionAlgorithmCreateFunc** %128, align 4 ; [#uses=2]
+ %130 = getelementptr inbounds %struct.btCollisionAlgorithmCreateFunc* %129, i32 0, i32 0 ; [#uses=1]
+ %131 = load i32 (...)*** %130, align 4 ; [#uses=1]
+ %132 = load i32 (...)** %131, align 4 ; [#uses=1]
+ %133 = bitcast i32 (...)* %132 to void (%struct.btCollisionAlgorithmCreateFunc*)* ; [#uses=1]
+ tail call void %133(%struct.btCollisionAlgorithmCreateFunc* %129)
+ %134 = load %struct.btCollisionAlgorithmCreateFunc** %128, align 4 ; [#uses=1]
+ %135 = bitcast %struct.btCollisionAlgorithmCreateFunc* %134 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %135)
+ %136 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 8 ; [#uses=1]
+ %137 = load %struct.btVoronoiSimplexSolver** %136, align 4 ; [#uses=1]
+ %138 = bitcast %struct.btVoronoiSimplexSolver* %137 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %138)
+ %139 = getelementptr inbounds %struct.btDefaultCollisionConfiguration* %this, i32 0, i32 9 ; [#uses=2]
+ %140 = load %struct.btActionInterface** %139, align 4 ; [#uses=2]
+ %141 = getelementptr inbounds %struct.btActionInterface* %140, i32 0, i32 0 ; [#uses=1]
+ %142 = load i32 (...)*** %141, align 4 ; [#uses=1]
+ %143 = load i32 (...)** %142, align 4 ; [#uses=1]
+ %144 = bitcast i32 (...)* %143 to void (%struct.btActionInterface*)* ; [#uses=1]
+ tail call void %144(%struct.btActionInterface* %140)
+ %145 = load %struct.btActionInterface** %139, align 4 ; [#uses=1]
+ %146 = bitcast %struct.btActionInterface* %145 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %146)
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN31btDefaultCollisionConfigurationC1ERK34btDefaultCollisionConstructionInfo(%struct.btDefaultCollisionConfiguration* %this, %struct.btDefaultCollisionConstructionInfo* nocapture %constructionInfo) align 2 {
+entry:
+ tail call void @_ZN31btDefaultCollisionConfigurationC2ERK34btDefaultCollisionConstructionInfo(%struct.btDefaultCollisionConfiguration* %this, %struct.btDefaultCollisionConstructionInfo* %constructionInfo)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btEmptyAlgorithmC2ERK36btCollisionAlgorithmConstructionInfo(%struct.btActivatingCollisionAlgorithm* %this, %struct.btCollisionAlgorithmConstructionInfo* %ci) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfo(%struct.btCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci)
+ %1 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btEmptyAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btEmptyAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(%struct.btActivatingCollisionAlgorithm* nocapture %this, %"struct.btAlignedObjectArray<btPersistentManifold*>"* nocapture %manifoldArray) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btEmptyAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btActivatingCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %unnamed_arg, %struct.btCollisionObject* nocapture %unnamed_arg2, %struct.btDispatcherInfo* nocapture %unnamed_arg4, %struct.btManifoldResult* nocapture %unnamed_arg6) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define float @_ZN16btEmptyAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btActivatingCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %unnamed_arg, %struct.btCollisionObject* nocapture %unnamed_arg2, %struct.btDispatcherInfo* nocapture %unnamed_arg4, %struct.btManifoldResult* nocapture %unnamed_arg6) nounwind readnone align 2 {
+entry:
+ ret float 1.000000e+00
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btEmptyAlgorithmD0Ev(%struct.btActivatingCollisionAlgorithm* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btEmptyAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActivatingCollisionAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btEmptyAlgorithmD1Ev(%struct.btActivatingCollisionAlgorithm* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btEmptyAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btEmptyAlgorithmC1ERK36btCollisionAlgorithmConstructionInfo(%struct.btActivatingCollisionAlgorithm* %this, %struct.btCollisionAlgorithmConstructionInfo* %ci) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfo(%struct.btCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci)
+ %1 = getelementptr inbounds %struct.btActivatingCollisionAlgorithm* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btEmptyAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN13btGhostObjectC2Ev(%struct.btGhostObject* %this) align 2 {
+invcont:
+ %0 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btCollisionObjectC2Ev(%struct.btCollisionObject* %0)
+ %1 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV13btGhostObject, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %3, align 4
+ %4 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0, i32 19 ; [#uses=1]
+ store i32 4, i32* %6, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_Z9btRayAabbRK9btVector3S1_S1_S1_RfRS_(%struct.btQuadWord* nocapture %rayFrom, %struct.btQuadWord* nocapture %rayTo, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax, float* nocapture %param, %struct.btQuadWord* nocapture %normal) nounwind inlinehint {
+entry:
+ %aabbHalfExtent = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %source = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %r = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %hitNormal = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fsub float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fsub float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fsub float %11, %13 ; [#uses=1]
+ %15 = fmul float %4, 5.000000e-01 ; [#uses=6]
+ %16 = fmul float %9, 5.000000e-01 ; [#uses=6]
+ %17 = fmul float %14, 5.000000e-01 ; [#uses=6]
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbHalfExtent, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %17, float* %18, align 8
+ %19 = getelementptr inbounds %struct.btQuadWord* %aabbHalfExtent, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %16, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuadWord* %aabbHalfExtent, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %15, float* %20, align 8
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbHalfExtent, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = fadd float %1, %3 ; [#uses=1]
+ %23 = fadd float %6, %8 ; [#uses=1]
+ %24 = fadd float %11, %13 ; [#uses=1]
+ %25 = fmul float %22, 5.000000e-01 ; [#uses=2]
+ %26 = fmul float %23, 5.000000e-01 ; [#uses=2]
+ %27 = fmul float %24, 5.000000e-01 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btQuadWord* %rayFrom, i32 0, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = fsub float %29, %25 ; [#uses=6]
+ %31 = getelementptr inbounds %struct.btQuadWord* %rayFrom, i32 0, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fsub float %32, %26 ; [#uses=6]
+ %34 = getelementptr inbounds %struct.btQuadWord* %rayFrom, i32 0, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fsub float %35, %27 ; [#uses=6]
+ %37 = getelementptr inbounds %struct.btQuadWord* %source, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %36, float* %37, align 8
+ %38 = getelementptr inbounds %struct.btQuadWord* %source, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %33, float* %38, align 4
+ %39 = getelementptr inbounds %struct.btQuadWord* %source, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %30, float* %39, align 8
+ %40 = getelementptr inbounds %struct.btQuadWord* %source, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btQuadWord* %rayTo, i32 0, i32 0, i32 2 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = fsub float %42, %25 ; [#uses=3]
+ %44 = getelementptr inbounds %struct.btQuadWord* %rayTo, i32 0, i32 0, i32 1 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fsub float %45, %26 ; [#uses=3]
+ %47 = getelementptr inbounds %struct.btQuadWord* %rayTo, i32 0, i32 0, i32 0 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = fsub float %48, %27 ; [#uses=3]
+ %50 = fsub float -0.000000e+00, %17 ; [#uses=2]
+ %51 = fcmp olt float %36, %50 ; [#uses=1]
+ %iftmp.187.0.i18 = zext i1 %51 to i32 ; [#uses=1]
+ %52 = fcmp ogt float %36, %17 ; [#uses=1]
+ %iftmp.188.0.i19 = select i1 %52, i32 8, i32 0 ; [#uses=1]
+ %53 = fsub float -0.000000e+00, %16 ; [#uses=2]
+ %54 = fcmp olt float %33, %53 ; [#uses=1]
+ %iftmp.189.0.i20 = select i1 %54, i32 2, i32 0 ; [#uses=1]
+ %55 = fcmp ogt float %33, %16 ; [#uses=1]
+ %iftmp.190.0.i21 = select i1 %55, i32 16, i32 0 ; [#uses=1]
+ %56 = fsub float -0.000000e+00, %15 ; [#uses=2]
+ %57 = fcmp olt float %30, %56 ; [#uses=1]
+ %iftmp.191.0.i22 = select i1 %57, i32 4, i32 0 ; [#uses=1]
+ %58 = fcmp ogt float %30, %15 ; [#uses=1]
+ %iftmp.192.0.i23 = select i1 %58, i32 32, i32 0 ; [#uses=1]
+ %59 = or i32 %iftmp.187.0.i18, %iftmp.188.0.i19 ; [#uses=1]
+ %60 = or i32 %59, %iftmp.190.0.i21 ; [#uses=1]
+ %61 = or i32 %60, %iftmp.189.0.i20 ; [#uses=1]
+ %62 = or i32 %61, %iftmp.192.0.i23 ; [#uses=1]
+ %63 = or i32 %62, %iftmp.191.0.i22 ; [#uses=4]
+ %64 = fcmp olt float %49, %50 ; [#uses=1]
+ %iftmp.187.0.i = zext i1 %64 to i32 ; [#uses=1]
+ %65 = fcmp ogt float %49, %17 ; [#uses=1]
+ %iftmp.188.0.i = select i1 %65, i32 8, i32 0 ; [#uses=1]
+ %66 = fcmp olt float %46, %53 ; [#uses=1]
+ %iftmp.189.0.i = select i1 %66, i32 2, i32 0 ; [#uses=1]
+ %67 = fcmp ogt float %46, %16 ; [#uses=1]
+ %iftmp.190.0.i = select i1 %67, i32 16, i32 0 ; [#uses=1]
+ %68 = fcmp olt float %43, %56 ; [#uses=1]
+ %iftmp.191.0.i = select i1 %68, i32 4, i32 0 ; [#uses=1]
+ %69 = fcmp ogt float %43, %15 ; [#uses=1]
+ %iftmp.192.0.i = select i1 %69, i32 32, i32 0 ; [#uses=1]
+ %70 = or i32 %iftmp.187.0.i, %iftmp.188.0.i ; [#uses=1]
+ %71 = or i32 %70, %iftmp.190.0.i ; [#uses=1]
+ %72 = or i32 %71, %iftmp.192.0.i ; [#uses=1]
+ %73 = or i32 %72, %iftmp.189.0.i ; [#uses=1]
+ %74 = or i32 %73, %iftmp.191.0.i ; [#uses=4]
+ %75 = and i32 %74, %63 ; [#uses=1]
+ %76 = icmp eq i32 %75, 0 ; [#uses=1]
+ br i1 %76, label %bb.nph49, label %bb15
+
+bb.nph: ; preds = %bb.nph49, %bb10
+ %lambda_exit.344 = phi float [ %105, %bb.nph49 ], [ %lambda_exit.1.2, %bb10 ] ; [#uses=5]
+ %lambda_enter.245 = phi float [ 0.000000e+00, %bb.nph49 ], [ %lambda_enter.0.2, %bb10 ] ; [#uses=5]
+ %normSign.046 = phi float [ 1.000000e+00, %bb.nph49 ], [ -1.000000e+00, %bb10 ] ; [#uses=12]
+ %bit.147 = phi i32 [ 1, %bb.nph49 ], [ %103, %bb10 ] ; [#uses=5]
+ %j.048 = phi i32 [ 0, %bb.nph49 ], [ %104, %bb10 ] ; [#uses=1]
+ %77 = phi float [ 0.000000e+00, %bb.nph49 ], [ %102, %bb10 ] ; [#uses=4]
+ %78 = phi float [ 0.000000e+00, %bb.nph49 ], [ %101, %bb10 ] ; [#uses=4]
+ %79 = phi float [ 0.000000e+00, %bb.nph49 ], [ %100, %bb10 ] ; [#uses=4]
+ %80 = and i32 %bit.147, %63 ; [#uses=1]
+ %81 = icmp eq i32 %80, 0 ; [#uses=1]
+ br i1 %81, label %bb5, label %bb3
+
+bb3: ; preds = %bb.nph
+ %82 = fsub float -0.000000e+00, %36 ; [#uses=1]
+ %83 = fmul float %17, %normSign.046 ; [#uses=1]
+ %84 = fsub float %82, %83 ; [#uses=1]
+ %85 = fdiv float %84, %108 ; [#uses=2]
+ %86 = fcmp ugt float %lambda_enter.245, %85 ; [#uses=1]
+ br i1 %86, label %bb8, label %bb4
+
+bb4: ; preds = %bb3
+ store float 0.000000e+00, float* %114, align 4
+ store float 0.000000e+00, float* %115, align 8
+ store float 0.000000e+00, float* %116, align 4
+ store float %normSign.046, float* %113, align 8
+ br label %bb8
+
+bb5: ; preds = %bb.nph
+ %87 = and i32 %bit.147, %74 ; [#uses=1]
+ %88 = icmp eq i32 %87, 0 ; [#uses=1]
+ br i1 %88, label %bb8, label %bb6
+
+bb6: ; preds = %bb5
+ %89 = fsub float -0.000000e+00, %36 ; [#uses=1]
+ %90 = fmul float %17, %normSign.046 ; [#uses=1]
+ %91 = fsub float %89, %90 ; [#uses=1]
+ %92 = fdiv float %91, %108 ; [#uses=2]
+ %93 = fcmp olt float %92, %lambda_exit.344 ; [#uses=1]
+ br i1 %93, label %bb8, label %return.i
+
+return.i: ; preds = %bb6
+ br label %bb8
+
+bb8: ; preds = %return.i, %bb6, %bb5, %bb4, %bb3
+ %94 = phi float [ %79, %bb5 ], [ %79, %bb3 ], [ 0.000000e+00, %bb4 ], [ %79, %return.i ], [ %79, %bb6 ] ; [#uses=4]
+ %95 = phi float [ %78, %bb5 ], [ %78, %bb3 ], [ 0.000000e+00, %bb4 ], [ %78, %return.i ], [ %78, %bb6 ] ; [#uses=4]
+ %96 = phi float [ %77, %bb5 ], [ %77, %bb3 ], [ %normSign.046, %bb4 ], [ %77, %return.i ], [ %77, %bb6 ] ; [#uses=4]
+ %lambda_exit.1 = phi float [ %lambda_exit.344, %bb5 ], [ %lambda_exit.344, %bb3 ], [ %lambda_exit.344, %bb4 ], [ %lambda_exit.344, %return.i ], [ %92, %bb6 ] ; [#uses=5]
+ %lambda_enter.0 = phi float [ %lambda_enter.245, %bb5 ], [ %lambda_enter.245, %bb3 ], [ %85, %bb4 ], [ %lambda_enter.245, %return.i ], [ %lambda_enter.245, %bb6 ] ; [#uses=5]
+ %97 = shl i32 %bit.147, 1 ; [#uses=2]
+ %98 = and i32 %97, %63 ; [#uses=1]
+ %99 = icmp eq i32 %98, 0 ; [#uses=1]
+ br i1 %99, label %bb5.1, label %bb3.1
+
+bb10: ; preds = %return.i.2, %bb6.2, %bb5.2, %bb3.2, %bb4.2
+ %100 = phi float [ %122, %bb5.2 ], [ %122, %bb3.2 ], [ %normSign.046, %bb4.2 ], [ %122, %return.i.2 ], [ %122, %bb6.2 ] ; [#uses=2]
+ %101 = phi float [ %123, %bb5.2 ], [ %123, %bb3.2 ], [ 0.000000e+00, %bb4.2 ], [ %123, %return.i.2 ], [ %123, %bb6.2 ] ; [#uses=2]
+ %102 = phi float [ %124, %bb5.2 ], [ %124, %bb3.2 ], [ 0.000000e+00, %bb4.2 ], [ %124, %return.i.2 ], [ %124, %bb6.2 ] ; [#uses=2]
+ %lambda_exit.1.2 = phi float [ %lambda_exit.1.1, %bb5.2 ], [ %lambda_exit.1.1, %bb3.2 ], [ %lambda_exit.1.1, %bb4.2 ], [ %lambda_exit.1.1, %return.i.2 ], [ %150, %bb6.2 ] ; [#uses=2]
+ %lambda_enter.0.2 = phi float [ %lambda_enter.0.1, %bb5.2 ], [ %lambda_enter.0.1, %bb3.2 ], [ %143, %bb4.2 ], [ %lambda_enter.0.1, %return.i.2 ], [ %lambda_enter.0.1, %bb6.2 ] ; [#uses=3]
+ %103 = shl i32 %bit.147, 3 ; [#uses=1]
+ %104 = add nsw i32 %j.048, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %104, 2 ; [#uses=1]
+ br i1 %exitcond, label %bb12, label %bb.nph
+
+bb.nph49: ; preds = %entry
+ %105 = load float* %param, align 4 ; [#uses=1]
+ %106 = fsub float %43, %30 ; [#uses=3]
+ %107 = fsub float %46, %33 ; [#uses=3]
+ %108 = fsub float %49, %36 ; [#uses=3]
+ %109 = getelementptr inbounds %struct.btQuadWord* %r, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %108, float* %109, align 8
+ %110 = getelementptr inbounds %struct.btQuadWord* %r, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %107, float* %110, align 4
+ %111 = getelementptr inbounds %struct.btQuadWord* %r, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %106, float* %111, align 8
+ %112 = getelementptr inbounds %struct.btQuadWord* %r, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btQuadWord* %hitNormal, i32 0, i32 0, i32 0 ; [#uses=4]
+ store float 0.000000e+00, float* %113, align 8
+ %114 = getelementptr inbounds %struct.btQuadWord* %hitNormal, i32 0, i32 0, i32 1 ; [#uses=4]
+ store float 0.000000e+00, float* %114, align 4
+ %115 = getelementptr inbounds %struct.btQuadWord* %hitNormal, i32 0, i32 0, i32 2 ; [#uses=4]
+ store float 0.000000e+00, float* %115, align 8
+ %116 = getelementptr inbounds %struct.btQuadWord* %hitNormal, i32 0, i32 0, i32 3 ; [#uses=4]
+ store float 0.000000e+00, float* %116, align 4
+ br label %bb.nph
+
+bb12: ; preds = %bb10
+ %117 = fcmp ugt float %lambda_enter.0.2, %lambda_exit.1.2 ; [#uses=1]
+ br i1 %117, label %bb15, label %bb13
+
+bb13: ; preds = %bb12
+ store float %lambda_enter.0.2, float* %param, align 4
+ %118 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %102, float* %118, align 4
+ %119 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %101, float* %119, align 4
+ %120 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %100, float* %120, align 4
+ %121 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %121, align 4
+ ret i8 1
+
+bb15: ; preds = %bb12, %entry
+ ret i8 0
+
+bb8.1: ; preds = %return.i.1, %bb6.1, %bb5.1, %bb3.1, %bb4.1
+ %122 = phi float [ %94, %bb5.1 ], [ %94, %bb3.1 ], [ 0.000000e+00, %bb4.1 ], [ %94, %return.i.1 ], [ %94, %bb6.1 ] ; [#uses=4]
+ %123 = phi float [ %95, %bb5.1 ], [ %95, %bb3.1 ], [ %normSign.046, %bb4.1 ], [ %95, %return.i.1 ], [ %95, %bb6.1 ] ; [#uses=4]
+ %124 = phi float [ %96, %bb5.1 ], [ %96, %bb3.1 ], [ 0.000000e+00, %bb4.1 ], [ %96, %return.i.1 ], [ %96, %bb6.1 ] ; [#uses=4]
+ %lambda_exit.1.1 = phi float [ %lambda_exit.1, %bb5.1 ], [ %lambda_exit.1, %bb3.1 ], [ %lambda_exit.1, %bb4.1 ], [ %lambda_exit.1, %return.i.1 ], [ %138, %bb6.1 ] ; [#uses=5]
+ %lambda_enter.0.1 = phi float [ %lambda_enter.0, %bb5.1 ], [ %lambda_enter.0, %bb3.1 ], [ %131, %bb4.1 ], [ %lambda_enter.0, %return.i.1 ], [ %lambda_enter.0, %bb6.1 ] ; [#uses=5]
+ %125 = shl i32 %bit.147, 2 ; [#uses=2]
+ %126 = and i32 %125, %63 ; [#uses=1]
+ %127 = icmp eq i32 %126, 0 ; [#uses=1]
+ br i1 %127, label %bb5.2, label %bb3.2
+
+bb4.1: ; preds = %bb3.1
+ store float 0.000000e+00, float* %113, align 8
+ store float 0.000000e+00, float* %115, align 8
+ store float 0.000000e+00, float* %116, align 4
+ store float %normSign.046, float* %114, align 4
+ br label %bb8.1
+
+bb3.1: ; preds = %bb8
+ %128 = fsub float -0.000000e+00, %33 ; [#uses=1]
+ %129 = fmul float %16, %normSign.046 ; [#uses=1]
+ %130 = fsub float %128, %129 ; [#uses=1]
+ %131 = fdiv float %130, %107 ; [#uses=2]
+ %132 = fcmp ugt float %lambda_enter.0, %131 ; [#uses=1]
+ br i1 %132, label %bb8.1, label %bb4.1
+
+bb5.1: ; preds = %bb8
+ %133 = and i32 %97, %74 ; [#uses=1]
+ %134 = icmp eq i32 %133, 0 ; [#uses=1]
+ br i1 %134, label %bb8.1, label %bb6.1
+
+bb6.1: ; preds = %bb5.1
+ %135 = fsub float -0.000000e+00, %33 ; [#uses=1]
+ %136 = fmul float %16, %normSign.046 ; [#uses=1]
+ %137 = fsub float %135, %136 ; [#uses=1]
+ %138 = fdiv float %137, %107 ; [#uses=2]
+ %139 = fcmp olt float %138, %lambda_exit.1 ; [#uses=1]
+ br i1 %139, label %bb8.1, label %return.i.1
+
+return.i.1: ; preds = %bb6.1
+ br label %bb8.1
+
+bb4.2: ; preds = %bb3.2
+ store float 0.000000e+00, float* %113, align 8
+ store float 0.000000e+00, float* %114, align 4
+ store float 0.000000e+00, float* %116, align 4
+ store float %normSign.046, float* %115, align 8
+ br label %bb10
+
+bb3.2: ; preds = %bb8.1
+ %140 = fsub float -0.000000e+00, %30 ; [#uses=1]
+ %141 = fmul float %15, %normSign.046 ; [#uses=1]
+ %142 = fsub float %140, %141 ; [#uses=1]
+ %143 = fdiv float %142, %106 ; [#uses=2]
+ %144 = fcmp ugt float %lambda_enter.0.1, %143 ; [#uses=1]
+ br i1 %144, label %bb10, label %bb4.2
+
+bb5.2: ; preds = %bb8.1
+ %145 = and i32 %125, %74 ; [#uses=1]
+ %146 = icmp eq i32 %145, 0 ; [#uses=1]
+ br i1 %146, label %bb10, label %bb6.2
+
+bb6.2: ; preds = %bb5.2
+ %147 = fsub float -0.000000e+00, %30 ; [#uses=1]
+ %148 = fmul float %15, %normSign.046 ; [#uses=1]
+ %149 = fsub float %147, %148 ; [#uses=1]
+ %150 = fdiv float %149, %106 ; [#uses=2]
+ %151 = fcmp olt float %150, %lambda_exit.1.1 ; [#uses=1]
+ br i1 %151, label %bb10, label %return.i.2
+
+return.i.2: ; preds = %bb6.2
+ br label %bb10
+}
+
+; [#uses=1]
+define void @_ZN24btPairCachingGhostObject31removeOverlappingObjectInternalEP17btBroadphaseProxyP12btDispatcherS1_(%struct.btPairCachingGhostObject* nocapture %this, %struct.btBroadphaseProxy* %otherProxy, %struct.btActionInterface* %dispatcher, %struct.btBroadphaseProxy* %thisProxy1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %otherProxy, i32 0, i32 0 ; [#uses=1]
+ %1 = load i8** %0, align 4 ; [#uses=1]
+ %2 = bitcast i8* %1 to %struct.btCollisionObject* ; [#uses=1]
+ %3 = icmp eq %struct.btBroadphaseProxy* %thisProxy1, null ; [#uses=1]
+ br i1 %3, label %bb, label %bb2
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0, i32 8 ; [#uses=1]
+ %5 = load %struct.btBroadphaseProxy** %4, align 4 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb, %entry
+ %iftmp.204.0 = phi %struct.btBroadphaseProxy* [ %5, %bb ], [ %thisProxy1, %entry ] ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 1 ; [#uses=3]
+ %7 = load i32* %6, align 4 ; [#uses=4]
+ %8 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=2]
+ br label %bb3.i
+
+bb.i: ; preds = %bb3.i
+ %9 = load %struct.btCollisionObject*** %8, align 4 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btCollisionObject** %9, i32 %13 ; [#uses=1]
+ %10 = load %struct.btCollisionObject** %scevgep.i, align 4 ; [#uses=1]
+ %11 = icmp eq %struct.btCollisionObject* %10, %2 ; [#uses=1]
+ br i1 %11, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %12 = add nsw i32 %13, 1 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb2
+ %13 = phi i32 [ 0, %bb2 ], [ %12, %bb2.i ] ; [#uses=4]
+ %14 = icmp sgt i32 %7, %13 ; [#uses=1]
+ br i1 %14, label %bb.i, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit
+
+_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit: ; preds = %bb3.i, %bb.i
+ %index.0.i = phi i32 [ %7, %bb3.i ], [ %13, %bb.i ] ; [#uses=2]
+ %15 = icmp sgt i32 %7, %index.0.i ; [#uses=1]
+ br i1 %15, label %bb3, label %return
+
+bb3: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit
+ %16 = load %struct.btCollisionObject*** %8, align 4 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btCollisionObject** %16, i32 %index.0.i ; [#uses=1]
+ %18 = add nsw i32 %7, -1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btCollisionObject** %16, i32 %18 ; [#uses=1]
+ %20 = load %struct.btCollisionObject** %19, align 4 ; [#uses=1]
+ store %struct.btCollisionObject* %20, %struct.btCollisionObject** %17, align 4
+ %21 = load i32* %6, align 4 ; [#uses=1]
+ %22 = add nsw i32 %21, -1 ; [#uses=1]
+ store i32 %22, i32* %6, align 4
+ %23 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 1 ; [#uses=1]
+ %24 = load %struct.btHashedOverlappingPairCache** %23, align 4 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %24, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %26 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds i32 (...)** %26, i32 3 ; [#uses=1]
+ %28 = load i32 (...)** %27, align 4 ; [#uses=1]
+ %29 = bitcast i32 (...)* %28 to i8* (%struct.btHashedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*, %struct.btActionInterface*)* ; [#uses=1]
+ %30 = tail call i8* %29(%struct.btHashedOverlappingPairCache* %24, %struct.btBroadphaseProxy* %iftmp.204.0, %struct.btBroadphaseProxy* %otherProxy, %struct.btActionInterface* %dispatcher) ; [#uses=0]
+ ret void
+
+return: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN13btGhostObject31removeOverlappingObjectInternalEP17btBroadphaseProxyP12btDispatcherS1_(%struct.btGhostObject* nocapture %this, %struct.btBroadphaseProxy* nocapture %otherProxy, %struct.btActionInterface* nocapture %dispatcher, %struct.btBroadphaseProxy* nocapture %thisProxy) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %otherProxy, i32 0, i32 0 ; [#uses=1]
+ %1 = load i8** %0, align 4 ; [#uses=1]
+ %2 = bitcast i8* %1 to %struct.btCollisionObject* ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ %4 = load i32* %3, align 4 ; [#uses=4]
+ %5 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 3 ; [#uses=2]
+ br label %bb3.i
+
+bb.i: ; preds = %bb3.i
+ %6 = load %struct.btCollisionObject*** %5, align 4 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btCollisionObject** %6, i32 %10 ; [#uses=1]
+ %7 = load %struct.btCollisionObject** %scevgep.i, align 4 ; [#uses=1]
+ %8 = icmp eq %struct.btCollisionObject* %7, %2 ; [#uses=1]
+ br i1 %8, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %9 = add nsw i32 %10, 1 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %entry
+ %10 = phi i32 [ 0, %entry ], [ %9, %bb2.i ] ; [#uses=4]
+ %11 = icmp sgt i32 %4, %10 ; [#uses=1]
+ br i1 %11, label %bb.i, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit
+
+_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit: ; preds = %bb3.i, %bb.i
+ %index.0.i = phi i32 [ %4, %bb3.i ], [ %10, %bb.i ] ; [#uses=2]
+ %12 = icmp sgt i32 %4, %index.0.i ; [#uses=1]
+ br i1 %12, label %bb, label %return
+
+bb: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit
+ %13 = load %struct.btCollisionObject*** %5, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btCollisionObject** %13, i32 %index.0.i ; [#uses=1]
+ %15 = add nsw i32 %4, -1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btCollisionObject** %13, i32 %15 ; [#uses=1]
+ %17 = load %struct.btCollisionObject** %16, align 4 ; [#uses=1]
+ store %struct.btCollisionObject* %17, %struct.btCollisionObject** %14, align 4
+ %18 = load i32* %3, align 4 ; [#uses=1]
+ %19 = add nsw i32 %18, -1 ; [#uses=1]
+ store i32 %19, i32* %3, align 4
+ ret void
+
+return: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit
+ ret void
+}
+
+; [#uses=0]
+define void @_ZNK13btGhostObject7rayTestERK9btVector3S2_RN16btCollisionWorld17RayResultCallbackE(%struct.btGhostObject* nocapture %this, %struct.btQuadWord* nocapture %rayFromWorld, %struct.btQuadWord* nocapture %rayToWorld, %"struct.btCollisionWorld::RayResultCallback"* %resultCallback) align 2 {
+entry:
+ %rayFromTrans = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %rayToTrans = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %0 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %0, align 8
+ %1 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 8
+ %3 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 8
+ %5 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 8
+ %7 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 8
+ %9 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %10, align 8
+ %11 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %rayFromTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %rayFromWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %12, align 8
+ %18 = getelementptr inbounds %struct.btQuadWord* %rayFromWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %13, align 4
+ %20 = getelementptr inbounds %struct.btQuadWord* %rayFromWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %14, align 8
+ %22 = getelementptr inbounds %struct.btQuadWord* %rayFromWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %15, align 4
+ %24 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %24, align 8
+ %25 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 8
+ %27 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 8
+ %29 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 8
+ %31 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %32, align 8
+ %33 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %34, align 8
+ %35 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %rayToTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuadWord* %rayToWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ store float %41, float* %36, align 8
+ %42 = getelementptr inbounds %struct.btQuadWord* %rayToWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %37, align 4
+ %44 = getelementptr inbounds %struct.btQuadWord* %rayToWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %38, align 8
+ %46 = getelementptr inbounds %struct.btQuadWord* %rayToWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ store float %47, float* %39, align 4
+ %48 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ %49 = load i32* %48, align 4 ; [#uses=1]
+ %50 = icmp sgt i32 %49, 0 ; [#uses=1]
+ br i1 %50, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %51 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %52 = getelementptr inbounds %"struct.btCollisionWorld::RayResultCallback"* %resultCallback, i32 0, i32 0 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb2, %bb.nph
+ %i.06 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb2 ] ; [#uses=2]
+ %tmp = add i32 %i.06, 1 ; [#uses=2]
+ %53 = load %struct.btCollisionObject*** %51, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %53, i32 %i.06 ; [#uses=1]
+ %54 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=4]
+ %55 = load i32 (...)*** %52, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds i32 (...)** %55, i32 2 ; [#uses=1]
+ %57 = load i32 (...)** %56, align 4 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btCollisionObject* %54, i32 0, i32 8 ; [#uses=1]
+ %59 = load %struct.btBroadphaseProxy** %58, align 4 ; [#uses=1]
+ %60 = bitcast i32 (...)* %57 to i8 (%"struct.btCollisionWorld::RayResultCallback"*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %61 = call zeroext i8 %60(%"struct.btCollisionWorld::RayResultCallback"* %resultCallback, %struct.btBroadphaseProxy* %59) ; [#uses=1]
+ %toBool = icmp eq i8 %61, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %62 = getelementptr inbounds %struct.btCollisionObject* %54, i32 0, i32 1 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btCollisionObject* %54, i32 0, i32 9 ; [#uses=1]
+ %64 = load %struct.btCollisionShape** %63, align 4 ; [#uses=1]
+ call void @_ZN16btCollisionWorld13rayTestSingleERK11btTransformS2_P17btCollisionObjectPK16btCollisionShapeS2_RNS_17RayResultCallbackE(%struct.btTransform* %rayFromTrans, %struct.btTransform* %rayToTrans, %struct.btCollisionObject* %54, %struct.btCollisionShape* %64, %struct.btTransform* %62, %"struct.btCollisionWorld::RayResultCallback"* %resultCallback)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %65 = load i32* %48, align 4 ; [#uses=1]
+ %66 = icmp sgt i32 %65, %tmp ; [#uses=1]
+ br i1 %66, label %bb, label %return
+
+return: ; preds = %bb2, %entry
+ ret void
+}
+
+; [#uses=3]
+define void @_ZNK13btGhostObject15convexSweepTestEPK13btConvexShapeRK11btTransformS5_RN16btCollisionWorld20ConvexResultCallbackEf(%struct.btGhostObject* nocapture %this, %struct.btConvexShape* %castShape, %struct.btTransform* nocapture %convexFromWorld, %struct.btTransform* nocapture %convexToWorld, %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, float %allowedCcdPenetration) align 2 {
+entry:
+ %axis.i = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %angle.i = alloca float, align 4 ; [#uses=2]
+ %0 = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %convexFromTrans = alloca %struct.btTransform, align 8 ; [#uses=19]
+ %convexToTrans = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %castShapeAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %castShapeAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %linVel = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %angVel = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %R = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %collisionObjectAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %collisionObjectAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %hitLambda = alloca float, align 4 ; [#uses=2]
+ %hitNormal = alloca %struct.btQuadWord, align 8 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %1, align 8
+ %4 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 8
+ %10 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 8
+ %16 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 8
+ %22 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 8
+ %28 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 8
+ %34 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=2]
+ store float %39, float* %37, align 8
+ %40 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=2]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=2]
+ store float %45, float* %43, align 8
+ %46 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 8
+ %52 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ %55 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ store float %57, float* %55, align 8
+ %58 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ store float %60, float* %58, align 4
+ %61 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ store float %63, float* %61, align 8
+ %64 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %64, align 4
+ %67 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ store float %69, float* %67, align 8
+ %70 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %70, align 4
+ %73 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ store float %75, float* %73, align 8
+ %76 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ store float %78, float* %76, align 4
+ %79 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ store float %81, float* %79, align 8
+ %82 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %82, align 4
+ %85 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=2]
+ store float %87, float* %85, align 8
+ %88 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=2]
+ store float %90, float* %88, align 4
+ %91 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=2]
+ store float %93, float* %91, align 8
+ %94 = getelementptr inbounds %struct.btTransform* %convexToTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %94, align 4
+ %97 = fsub float %93, %45 ; [#uses=1]
+ %98 = fsub float %90, %42 ; [#uses=1]
+ %99 = fsub float %87, %39 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btQuadWord* %linVel, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %99, float* %100, align 8
+ %101 = getelementptr inbounds %struct.btQuadWord* %linVel, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %98, float* %101, align 4
+ %102 = getelementptr inbounds %struct.btQuadWord* %linVel, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %97, float* %102, align 8
+ %103 = getelementptr inbounds %struct.btQuadWord* %linVel, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %103, align 4
+ call void @_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(%struct.btTransform* %convexFromTrans, %struct.btTransform* %convexToTrans, %struct.btQuadWord* %axis.i, float* %angle.i) nounwind
+ %104 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %105 = load float* %104, align 8 ; [#uses=1]
+ %106 = load float* %angle.i, align 4 ; [#uses=3]
+ %107 = fmul float %105, %106 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ %110 = fmul float %109, %106 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %112 = load float* %111, align 8 ; [#uses=1]
+ %113 = fmul float %112, %106 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btQuadWord* %angVel, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %113, float* %114, align 8
+ %115 = getelementptr inbounds %struct.btQuadWord* %angVel, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %110, float* %115, align 4
+ %116 = getelementptr inbounds %struct.btQuadWord* %angVel, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %107, float* %116, align 8
+ %117 = getelementptr inbounds %struct.btQuadWord* %angVel, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %117, align 4
+ %118 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 1.000000e+00, float* %118, align 8
+ %119 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %119, align 4
+ %120 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %120, align 8
+ %121 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %121, align 4
+ %122 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %122, align 8
+ %123 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 1.000000e+00, float* %123, align 4
+ %124 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %124, align 8
+ %125 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %125, align 4
+ %126 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %126, align 8
+ %127 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %127, align 4
+ %128 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ store float 1.000000e+00, float* %128, align 8
+ %129 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %129, align 4
+ %130 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %130, align 8
+ %131 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %131, align 4
+ %132 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %132, align 8
+ %133 = getelementptr inbounds %struct.btTransform* %R, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %133, align 4
+ %134 = getelementptr inbounds %struct.btTransform* %convexFromTrans, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %134, %struct.btQuaternion* %0) nounwind
+ %135 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %136 = load float* %135, align 8 ; [#uses=6]
+ %137 = fmul float %136, %136 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %139 = load float* %138, align 4 ; [#uses=5]
+ %140 = fmul float %139, %139 ; [#uses=1]
+ %141 = fadd float %137, %140 ; [#uses=1]
+ %142 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %143 = load float* %142, align 8 ; [#uses=4]
+ %144 = fmul float %143, %143 ; [#uses=1]
+ %145 = fadd float %141, %144 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %147 = load float* %146, align 4 ; [#uses=5]
+ %148 = fmul float %147, %147 ; [#uses=1]
+ %149 = fadd float %145, %148 ; [#uses=1]
+ %150 = fdiv float 2.000000e+00, %149 ; [#uses=3]
+ %151 = fmul float %136, %150 ; [#uses=2]
+ %152 = fmul float %139, %150 ; [#uses=3]
+ %153 = fmul float %143, %150 ; [#uses=4]
+ %154 = fmul float %147, %151 ; [#uses=2]
+ %155 = fmul float %147, %152 ; [#uses=2]
+ %156 = fmul float %147, %153 ; [#uses=2]
+ %157 = fmul float %136, %151 ; [#uses=2]
+ %158 = fmul float %136, %152 ; [#uses=2]
+ %159 = fmul float %136, %153 ; [#uses=2]
+ %160 = fmul float %139, %152 ; [#uses=2]
+ %161 = fmul float %139, %153 ; [#uses=2]
+ %162 = fmul float %143, %153 ; [#uses=2]
+ %163 = fadd float %157, %160 ; [#uses=1]
+ %164 = fsub float 1.000000e+00, %163 ; [#uses=1]
+ %165 = fadd float %161, %154 ; [#uses=1]
+ %166 = fsub float %159, %155 ; [#uses=1]
+ %167 = fsub float %161, %154 ; [#uses=1]
+ %168 = fadd float %157, %162 ; [#uses=1]
+ %169 = fsub float 1.000000e+00, %168 ; [#uses=1]
+ %170 = fadd float %158, %156 ; [#uses=1]
+ %171 = fadd float %159, %155 ; [#uses=1]
+ %172 = fsub float %158, %156 ; [#uses=1]
+ %173 = fadd float %160, %162 ; [#uses=1]
+ %174 = fsub float 1.000000e+00, %173 ; [#uses=1]
+ store float %174, float* %118, align 8
+ store float %172, float* %119, align 4
+ store float %171, float* %120, align 8
+ store float 0.000000e+00, float* %121, align 4
+ store float %170, float* %122, align 8
+ store float %169, float* %123, align 4
+ store float %167, float* %124, align 8
+ store float 0.000000e+00, float* %125, align 4
+ store float %166, float* %126, align 8
+ store float %165, float* %127, align 4
+ store float %164, float* %128, align 8
+ store float 0.000000e+00, float* %129, align 4
+ %175 = getelementptr inbounds %struct.btConvexShape* %castShape, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK16btCollisionShape21calculateTemporalAabbERK11btTransformRK9btVector3S5_fRS3_S6_(%struct.btCollisionShape* %175, %struct.btTransform* %R, %struct.btQuadWord* %linVel, %struct.btQuadWord* %angVel, float 1.000000e+00, %struct.btQuadWord* %castShapeAabbMin, %struct.btQuadWord* %castShapeAabbMax)
+ %176 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ %177 = load i32* %176, align 4 ; [#uses=1]
+ %178 = icmp sgt i32 %177, 0 ; [#uses=1]
+ br i1 %178, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %179 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %180 = getelementptr inbounds %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, i32 0, i32 0 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.btQuadWord* %collisionObjectAabbMin, i32 0, i32 0, i32 2 ; [#uses=2]
+ %182 = getelementptr inbounds %struct.btQuadWord* %castShapeAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %183 = getelementptr inbounds %struct.btQuadWord* %collisionObjectAabbMin, i32 0, i32 0, i32 1 ; [#uses=2]
+ %184 = getelementptr inbounds %struct.btQuadWord* %castShapeAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %185 = getelementptr inbounds %struct.btQuadWord* %collisionObjectAabbMin, i32 0, i32 0, i32 0 ; [#uses=2]
+ %186 = getelementptr inbounds %struct.btQuadWord* %castShapeAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %187 = getelementptr inbounds %struct.btQuadWord* %collisionObjectAabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %188 = getelementptr inbounds %struct.btQuadWord* %collisionObjectAabbMax, i32 0, i32 0, i32 2 ; [#uses=2]
+ %189 = getelementptr inbounds %struct.btQuadWord* %castShapeAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btQuadWord* %collisionObjectAabbMax, i32 0, i32 0, i32 1 ; [#uses=2]
+ %191 = getelementptr inbounds %struct.btQuadWord* %castShapeAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %192 = getelementptr inbounds %struct.btQuadWord* %collisionObjectAabbMax, i32 0, i32 0, i32 0 ; [#uses=2]
+ %193 = getelementptr inbounds %struct.btQuadWord* %castShapeAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %194 = getelementptr inbounds %struct.btQuadWord* %collisionObjectAabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %195 = getelementptr inbounds %struct.btTransform* %convexToWorld, i32 0, i32 1 ; [#uses=1]
+ %196 = getelementptr inbounds %struct.btTransform* %convexFromWorld, i32 0, i32 1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb4, %bb.nph
+ %i.08 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb4 ] ; [#uses=2]
+ %tmp = add i32 %i.08, 1 ; [#uses=2]
+ %197 = load %struct.btCollisionObject*** %179, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %197, i32 %i.08 ; [#uses=1]
+ %198 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=4]
+ %199 = load i32 (...)*** %180, align 4 ; [#uses=1]
+ %200 = getelementptr inbounds i32 (...)** %199, i32 2 ; [#uses=1]
+ %201 = load i32 (...)** %200, align 4 ; [#uses=1]
+ %202 = getelementptr inbounds %struct.btCollisionObject* %198, i32 0, i32 8 ; [#uses=1]
+ %203 = load %struct.btBroadphaseProxy** %202, align 4 ; [#uses=1]
+ %204 = bitcast i32 (...)* %201 to i8 (%"struct.btCollisionWorld::ConvexResultCallback"*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %205 = call zeroext i8 %204(%"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, %struct.btBroadphaseProxy* %203) ; [#uses=1]
+ %toBool = icmp eq i8 %205, 0 ; [#uses=1]
+ br i1 %toBool, label %bb4, label %bb1
+
+bb1: ; preds = %bb
+ %206 = getelementptr inbounds %struct.btCollisionObject* %198, i32 0, i32 9 ; [#uses=2]
+ %207 = load %struct.btCollisionShape** %206, align 4 ; [#uses=2]
+ %208 = getelementptr inbounds %struct.btCollisionShape* %207, i32 0, i32 0 ; [#uses=1]
+ %209 = load i32 (...)*** %208, align 4 ; [#uses=1]
+ %210 = getelementptr inbounds i32 (...)** %209, i32 2 ; [#uses=1]
+ %211 = load i32 (...)** %210, align 4 ; [#uses=1]
+ %212 = getelementptr inbounds %struct.btCollisionObject* %198, i32 0, i32 1 ; [#uses=2]
+ %213 = bitcast i32 (...)* %211 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %213(%struct.btCollisionShape* %207, %struct.btTransform* %212, %struct.btQuadWord* %collisionObjectAabbMin, %struct.btQuadWord* %collisionObjectAabbMax)
+ %214 = load float* %181, align 8 ; [#uses=1]
+ %215 = load float* %182, align 8 ; [#uses=1]
+ %216 = fadd float %214, %215 ; [#uses=1]
+ %217 = load float* %183, align 4 ; [#uses=1]
+ %218 = load float* %184, align 4 ; [#uses=1]
+ %219 = fadd float %217, %218 ; [#uses=1]
+ %220 = load float* %185, align 8 ; [#uses=1]
+ %221 = load float* %186, align 8 ; [#uses=1]
+ %222 = fadd float %220, %221 ; [#uses=1]
+ store float %222, float* %185, align 8
+ store float %219, float* %183, align 4
+ store float %216, float* %181, align 8
+ store float 0.000000e+00, float* %187, align 4
+ %223 = load float* %188, align 8 ; [#uses=1]
+ %224 = load float* %189, align 8 ; [#uses=1]
+ %225 = fadd float %223, %224 ; [#uses=1]
+ %226 = load float* %190, align 4 ; [#uses=1]
+ %227 = load float* %191, align 4 ; [#uses=1]
+ %228 = fadd float %226, %227 ; [#uses=1]
+ %229 = load float* %192, align 8 ; [#uses=1]
+ %230 = load float* %193, align 8 ; [#uses=1]
+ %231 = fadd float %229, %230 ; [#uses=1]
+ store float %231, float* %192, align 8
+ store float %228, float* %190, align 4
+ store float %225, float* %188, align 8
+ store float 0.000000e+00, float* %194, align 4
+ store float 1.000000e+00, float* %hitLambda, align 4
+ %232 = call zeroext i8 @_Z9btRayAabbRK9btVector3S1_S1_S1_RfRS_(%struct.btQuadWord* %196, %struct.btQuadWord* %195, %struct.btQuadWord* %collisionObjectAabbMin, %struct.btQuadWord* %collisionObjectAabbMax, float* %hitLambda, %struct.btQuadWord* %hitNormal) ; [#uses=1]
+ %toBool2 = icmp eq i8 %232, 0 ; [#uses=1]
+ br i1 %toBool2, label %bb4, label %bb3
+
+bb3: ; preds = %bb1
+ %233 = load %struct.btCollisionShape** %206, align 4 ; [#uses=1]
+ call void @_ZN16btCollisionWorld17objectQuerySingleEPK13btConvexShapeRK11btTransformS5_P17btCollisionObjectPK16btCollisionShapeS5_RNS_20ConvexResultCallbackEf(%struct.btConvexShape* %castShape, %struct.btTransform* %convexFromTrans, %struct.btTransform* %convexToTrans, %struct.btCollisionObject* %198, %struct.btCollisionShape* %233, %struct.btTransform* %212, %"struct.btCollisionWorld::ConvexResultCallback"* %resultCallback, float %allowedCcdPenetration)
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb1, %bb
+ %234 = load i32* %176, align 4 ; [#uses=1]
+ %235 = icmp sgt i32 %234, %tmp ; [#uses=1]
+ br i1 %235, label %bb, label %return
+
+return: ; preds = %bb4, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN24btPairCachingGhostObject28addOverlappingObjectInternalEP17btBroadphaseProxyS1_(%struct.btPairCachingGhostObject* nocapture %this, %struct.btBroadphaseProxy* %otherProxy, %struct.btBroadphaseProxy* %thisProxy) align 2 {
+entry:
+ %0 = icmp eq %struct.btBroadphaseProxy* %thisProxy, null ; [#uses=1]
+ br i1 %0, label %bb, label %bb2
+
+bb: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0, i32 8 ; [#uses=1]
+ %2 = load %struct.btBroadphaseProxy** %1, align 4 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb, %entry
+ %iftmp.202.0 = phi %struct.btBroadphaseProxy* [ %2, %bb ], [ %thisProxy, %entry ] ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btBroadphaseProxy* %otherProxy, i32 0, i32 0 ; [#uses=1]
+ %4 = load i8** %3, align 4 ; [#uses=1]
+ %5 = bitcast i8* %4 to %struct.btCollisionObject* ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 1 ; [#uses=5]
+ %7 = load i32* %6, align 4 ; [#uses=9]
+ %8 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=6]
+ br label %bb3.i
+
+bb.i: ; preds = %bb3.i
+ %9 = load %struct.btCollisionObject*** %8, align 4 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btCollisionObject** %9, i32 %13 ; [#uses=1]
+ %10 = load %struct.btCollisionObject** %scevgep.i, align 4 ; [#uses=1]
+ %11 = icmp eq %struct.btCollisionObject* %10, %5 ; [#uses=1]
+ br i1 %11, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %12 = add nsw i32 %13, 1 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb2
+ %13 = phi i32 [ 0, %bb2 ], [ %12, %bb2.i ] ; [#uses=4]
+ %14 = icmp sgt i32 %7, %13 ; [#uses=1]
+ br i1 %14, label %bb.i, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit
+
+_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit: ; preds = %bb3.i, %bb.i
+ %index.0.i = phi i32 [ %7, %bb3.i ], [ %13, %bb.i ] ; [#uses=1]
+ %15 = icmp eq i32 %7, %index.0.i ; [#uses=1]
+ br i1 %15, label %bb3, label %return
+
+bb3: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit
+ %16 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 2 ; [#uses=2]
+ %17 = load i32* %16, align 4 ; [#uses=2]
+ %18 = icmp eq i32 %17, %7 ; [#uses=1]
+ br i1 %18, label %bb.i5, label %bb1.i
+
+bb.i5: ; preds = %bb3
+ %19 = icmp eq i32 %7, 0 ; [#uses=1]
+ %20 = shl i32 %7, 1 ; [#uses=1]
+ %iftmp.222.0.i.i = select i1 %19, i32 1, i32 %20 ; [#uses=4]
+ %21 = icmp slt i32 %17, %iftmp.222.0.i.i ; [#uses=1]
+ br i1 %21, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i5
+ %22 = icmp eq i32 %iftmp.222.0.i.i, 0 ; [#uses=1]
+ br i1 %22, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %23 = shl i32 %iftmp.222.0.i.i, 2 ; [#uses=1]
+ %24 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %23, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %24 to %struct.btCollisionObject** ; [#uses=1]
+ %.pre.i = load i32* %6, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %25 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %7, %bb.i.i ] ; [#uses=2]
+ %26 = phi %struct.btCollisionObject** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %27 = icmp sgt i32 %25, 0 ; [#uses=1]
+ br i1 %27, label %bb.i4.i.i, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i
+ %indvar.i.i.i = phi i32 [ %indvar.next.i.i.i, %bb3.i.i.i ], [ 0, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btCollisionObject** %26, i32 %indvar.i.i.i ; [#uses=2]
+ %28 = icmp eq %struct.btCollisionObject** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %28, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %29 = load %struct.btCollisionObject*** %8, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btCollisionObject** %29, i32 %indvar.i.i.i ; [#uses=1]
+ %30 = load %struct.btCollisionObject** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btCollisionObject* %30, %struct.btCollisionObject** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %25 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i
+ %31 = load %struct.btCollisionObject*** %8, align 4 ; [#uses=2]
+ %32 = icmp eq %struct.btCollisionObject** %31, null ; [#uses=1]
+ br i1 %32, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i
+ %33 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ %34 = load i8* %33, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %34, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %35 = bitcast %struct.btCollisionObject** %31 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %35)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %8, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i
+ %36 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %36, align 4
+ store %struct.btCollisionObject** %26, %struct.btCollisionObject*** %8, align 4
+ store i32 %iftmp.222.0.i.i, i32* %16, align 4
+ %.pre5.i = load i32* %6, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i, %bb.i5, %bb3
+ %37 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i ], [ %7, %bb3 ], [ %7, %bb.i5 ] ; [#uses=2]
+ %38 = load %struct.btCollisionObject*** %8, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btCollisionObject** %38, i32 %37 ; [#uses=2]
+ %40 = icmp eq %struct.btCollisionObject** %39, null ; [#uses=1]
+ br i1 %40, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE9push_backERKS1_.exit, label %bb2.i6
+
+bb2.i6: ; preds = %bb1.i
+ store %struct.btCollisionObject* %5, %struct.btCollisionObject** %39, align 4
+ %.pre6.i = load i32* %6, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE9push_backERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE9push_backERKS1_.exit: ; preds = %bb2.i6, %bb1.i
+ %41 = phi i32 [ %37, %bb1.i ], [ %.pre6.i, %bb2.i6 ] ; [#uses=1]
+ %42 = add nsw i32 %41, 1 ; [#uses=1]
+ store i32 %42, i32* %6, align 4
+ %43 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 1 ; [#uses=1]
+ %44 = load %struct.btHashedOverlappingPairCache** %43, align 4 ; [#uses=2]
+ %45 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %44, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %46 = load i32 (...)*** %45, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds i32 (...)** %46, i32 2 ; [#uses=1]
+ %48 = load i32 (...)** %47, align 4 ; [#uses=1]
+ %49 = bitcast i32 (...)* %48 to %struct.btBroadphasePair* (%struct.btHashedOverlappingPairCache*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %50 = tail call %struct.btBroadphasePair* %49(%struct.btHashedOverlappingPairCache* %44, %struct.btBroadphaseProxy* %iftmp.202.0, %struct.btBroadphaseProxy* %otherProxy) ; [#uses=0]
+ ret void
+
+return: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN13btGhostObject28addOverlappingObjectInternalEP17btBroadphaseProxyS1_(%struct.btGhostObject* nocapture %this, %struct.btBroadphaseProxy* nocapture %otherProxy, %struct.btBroadphaseProxy* nocapture %thisProxy) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %otherProxy, i32 0, i32 0 ; [#uses=1]
+ %1 = load i8** %0, align 4 ; [#uses=1]
+ %2 = bitcast i8* %1 to %struct.btCollisionObject* ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 1 ; [#uses=5]
+ %4 = load i32* %3, align 4 ; [#uses=9]
+ %5 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 3 ; [#uses=6]
+ br label %bb3.i
+
+bb.i: ; preds = %bb3.i
+ %6 = load %struct.btCollisionObject*** %5, align 4 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btCollisionObject** %6, i32 %10 ; [#uses=1]
+ %7 = load %struct.btCollisionObject** %scevgep.i, align 4 ; [#uses=1]
+ %8 = icmp eq %struct.btCollisionObject* %7, %2 ; [#uses=1]
+ br i1 %8, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %9 = add nsw i32 %10, 1 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %entry
+ %10 = phi i32 [ 0, %entry ], [ %9, %bb2.i ] ; [#uses=4]
+ %11 = icmp sgt i32 %4, %10 ; [#uses=1]
+ br i1 %11, label %bb.i, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit
+
+_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit: ; preds = %bb3.i, %bb.i
+ %index.0.i = phi i32 [ %4, %bb3.i ], [ %10, %bb.i ] ; [#uses=1]
+ %12 = icmp eq i32 %4, %index.0.i ; [#uses=1]
+ br i1 %12, label %bb, label %return
+
+bb: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit
+ %13 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ %14 = load i32* %13, align 4 ; [#uses=2]
+ %15 = icmp eq i32 %14, %4 ; [#uses=1]
+ br i1 %15, label %bb.i2, label %bb1.i
+
+bb.i2: ; preds = %bb
+ %16 = icmp eq i32 %4, 0 ; [#uses=1]
+ %17 = shl i32 %4, 1 ; [#uses=1]
+ %iftmp.222.0.i.i = select i1 %16, i32 1, i32 %17 ; [#uses=4]
+ %18 = icmp slt i32 %14, %iftmp.222.0.i.i ; [#uses=1]
+ br i1 %18, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i2
+ %19 = icmp eq i32 %iftmp.222.0.i.i, 0 ; [#uses=1]
+ br i1 %19, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %20 = shl i32 %iftmp.222.0.i.i, 2 ; [#uses=1]
+ %21 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %20, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %21 to %struct.btCollisionObject** ; [#uses=1]
+ %.pre.i = load i32* %3, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %22 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %4, %bb.i.i ] ; [#uses=2]
+ %23 = phi %struct.btCollisionObject** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %24 = icmp sgt i32 %22, 0 ; [#uses=1]
+ br i1 %24, label %bb.i4.i.i, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i
+ %indvar.i.i.i = phi i32 [ %indvar.next.i.i.i, %bb3.i.i.i ], [ 0, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btCollisionObject** %23, i32 %indvar.i.i.i ; [#uses=2]
+ %25 = icmp eq %struct.btCollisionObject** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %25, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %26 = load %struct.btCollisionObject*** %5, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btCollisionObject** %26, i32 %indvar.i.i.i ; [#uses=1]
+ %27 = load %struct.btCollisionObject** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btCollisionObject* %27, %struct.btCollisionObject** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %22 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i
+ %28 = load %struct.btCollisionObject*** %5, align 4 ; [#uses=2]
+ %29 = icmp eq %struct.btCollisionObject** %28, null ; [#uses=1]
+ br i1 %29, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i
+ %30 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %31 = load i8* %30, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %31, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %32 = bitcast %struct.btCollisionObject** %28 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %32)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %5, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i
+ %33 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %33, align 4
+ store %struct.btCollisionObject** %23, %struct.btCollisionObject*** %5, align 4
+ store i32 %iftmp.222.0.i.i, i32* %13, align 4
+ %.pre5.i = load i32* %3, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i, %bb.i2, %bb
+ %34 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i ], [ %4, %bb ], [ %4, %bb.i2 ] ; [#uses=2]
+ %35 = load %struct.btCollisionObject*** %5, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btCollisionObject** %35, i32 %34 ; [#uses=2]
+ %37 = icmp eq %struct.btCollisionObject** %36, null ; [#uses=1]
+ br i1 %37, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE9push_backERKS1_.exit, label %bb2.i3
+
+bb2.i3: ; preds = %bb1.i
+ store %struct.btCollisionObject* %2, %struct.btCollisionObject** %36, align 4
+ %.pre6.i = load i32* %3, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE9push_backERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE9push_backERKS1_.exit: ; preds = %bb2.i3, %bb1.i
+ %38 = phi i32 [ %34, %bb1.i ], [ %.pre6.i, %bb2.i3 ] ; [#uses=1]
+ %39 = add nsw i32 %38, 1 ; [#uses=1]
+ store i32 %39, i32* %3, align 4
+ ret void
+
+return: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE16findLinearSearchERKS1_.exit
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN13btGhostObjectD0Ev(%struct.btGhostObject* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV13btGhostObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btCollisionObject*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btCollisionObject** %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btCollisionObject** %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %1, align 4
+ %8 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %10)
+ %11 = bitcast %struct.btGhostObject* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %11)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %12 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %12)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN13btGhostObjectD1Ev(%struct.btGhostObject* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV13btGhostObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btCollisionObject*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btCollisionObject** %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btCollisionObject** %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %1, align 4
+ %8 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %10)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %11 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %11)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN13btGhostObjectD2Ev(%struct.btGhostObject* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV13btGhostObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btCollisionObject*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btCollisionObject** %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btCollisionObject** %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %1, align 4
+ %8 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %10)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %11 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %11)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN24btPairCachingGhostObjectD0Ev(%struct.btPairCachingGhostObject* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV24btPairCachingGhostObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 1 ; [#uses=2]
+ %2 = load %struct.btHashedOverlappingPairCache** %1, align 4 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %2, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btHashedOverlappingPairCache*)* ; [#uses=1]
+ invoke void %6(%struct.btHashedOverlappingPairCache* %2)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %7 = load %struct.btHashedOverlappingPairCache** %1, align 4 ; [#uses=1]
+ %8 = bitcast %struct.btHashedOverlappingPairCache* %7 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %8)
+ to label %bb4 unwind label %lpad
+
+invcont2: ; preds = %bb3.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb4: ; preds = %invcont
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV13btGhostObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %9 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=3]
+ %10 = load %struct.btCollisionObject*** %9, align 4 ; [#uses=2]
+ %11 = icmp eq %struct.btCollisionObject** %10, null ; [#uses=1]
+ br i1 %11, label %_ZN13btGhostObjectD2Ev.exit, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %bb4
+ %12 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ %13 = load i8* %12, align 4 ; [#uses=1]
+ %toBool.i.i.i.i = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i, label %bb2.i.i.i.i, label %bb1.i.i.i.i
+
+bb1.i.i.i.i: ; preds = %bb.i.i.i.i
+ %14 = bitcast %struct.btCollisionObject** %10 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %14)
+ to label %bb2.i.i.i.i unwind label %lpad.i
+
+bb2.i.i.i.i: ; preds = %bb1.i.i.i.i, %bb.i.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %9, align 4
+ br label %_ZN13btGhostObjectD2Ev.exit
+
+invcont1.i: ; preds = %lpad.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ unreachable
+
+lpad.i: ; preds = %bb1.i.i.i.i
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %15 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %15)
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN13btGhostObjectD2Ev.exit: ; preds = %bb2.i.i.i.i, %bb4
+ %16 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %9, align 4
+ %17 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %19)
+ %20 = bitcast %struct.btPairCachingGhostObject* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %20)
+ ret void
+
+lpad: ; preds = %invcont, %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select9 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV13btGhostObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %21 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=3]
+ %22 = load %struct.btCollisionObject*** %21, align 4 ; [#uses=2]
+ %23 = icmp eq %struct.btCollisionObject** %22, null ; [#uses=1]
+ br i1 %23, label %bb3.i, label %bb.i.i.i.i17
+
+bb.i.i.i.i17: ; preds = %lpad
+ %24 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool.i.i.i.i16 = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i16, label %bb2.i.i.i.i19, label %bb1.i.i.i.i18
+
+bb1.i.i.i.i18: ; preds = %bb.i.i.i.i17
+ %26 = bitcast %struct.btCollisionObject** %22 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %26)
+ to label %bb2.i.i.i.i19 unwind label %lpad.i23
+
+bb2.i.i.i.i19: ; preds = %bb1.i.i.i.i18, %bb.i.i.i.i17
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %21, align 4
+ br label %bb3.i
+
+invcont1.i20: ; preds = %lpad.i23
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i21)
+ to label %.noexc unwind label %lpad10
+
+.noexc: ; preds = %invcont1.i20
+ unreachable
+
+bb3.i: ; preds = %bb2.i.i.i.i19, %lpad
+ %27 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %27, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %21, align 4
+ %28 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %30)
+ to label %invcont2 unwind label %lpad10
+
+lpad.i23: ; preds = %bb1.i.i.i.i18
+ %eh_ptr.i21 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i22 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i21, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %31 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %31)
+ to label %invcont1.i20 unwind label %lpad9.i26
+
+lpad9.i26: ; preds = %lpad.i23
+ %eh_ptr10.i24 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i24, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad10: ; preds = %bb3.i, %invcont1.i20
+ %eh_ptr11 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select13 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN24btPairCachingGhostObjectD1Ev(%struct.btPairCachingGhostObject* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV24btPairCachingGhostObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 1 ; [#uses=2]
+ %2 = load %struct.btHashedOverlappingPairCache** %1, align 4 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %2, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btHashedOverlappingPairCache*)* ; [#uses=1]
+ invoke void %6(%struct.btHashedOverlappingPairCache* %2)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %7 = load %struct.btHashedOverlappingPairCache** %1, align 4 ; [#uses=1]
+ %8 = bitcast %struct.btHashedOverlappingPairCache* %7 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %8)
+ to label %bb4 unwind label %lpad
+
+invcont2: ; preds = %bb3.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb4: ; preds = %invcont
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV13btGhostObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %9 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=3]
+ %10 = load %struct.btCollisionObject*** %9, align 4 ; [#uses=2]
+ %11 = icmp eq %struct.btCollisionObject** %10, null ; [#uses=1]
+ br i1 %11, label %_ZN13btGhostObjectD2Ev.exit, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %bb4
+ %12 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ %13 = load i8* %12, align 4 ; [#uses=1]
+ %toBool.i.i.i.i = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i, label %bb2.i.i.i.i, label %bb1.i.i.i.i
+
+bb1.i.i.i.i: ; preds = %bb.i.i.i.i
+ %14 = bitcast %struct.btCollisionObject** %10 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %14)
+ to label %bb2.i.i.i.i unwind label %lpad.i
+
+bb2.i.i.i.i: ; preds = %bb1.i.i.i.i, %bb.i.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %9, align 4
+ br label %_ZN13btGhostObjectD2Ev.exit
+
+invcont1.i: ; preds = %lpad.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ unreachable
+
+lpad.i: ; preds = %bb1.i.i.i.i
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %15 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %15)
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN13btGhostObjectD2Ev.exit: ; preds = %bb2.i.i.i.i, %bb4
+ %16 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %9, align 4
+ %17 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %19)
+ ret void
+
+lpad: ; preds = %invcont, %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select9 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV13btGhostObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %20 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=3]
+ %21 = load %struct.btCollisionObject*** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.btCollisionObject** %21, null ; [#uses=1]
+ br i1 %22, label %bb3.i, label %bb.i.i.i.i17
+
+bb.i.i.i.i17: ; preds = %lpad
+ %23 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i.i.i16 = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i16, label %bb2.i.i.i.i19, label %bb1.i.i.i.i18
+
+bb1.i.i.i.i18: ; preds = %bb.i.i.i.i17
+ %25 = bitcast %struct.btCollisionObject** %21 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %25)
+ to label %bb2.i.i.i.i19 unwind label %lpad.i23
+
+bb2.i.i.i.i19: ; preds = %bb1.i.i.i.i18, %bb.i.i.i.i17
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %20, align 4
+ br label %bb3.i
+
+invcont1.i20: ; preds = %lpad.i23
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i21)
+ to label %.noexc unwind label %lpad10
+
+.noexc: ; preds = %invcont1.i20
+ unreachable
+
+bb3.i: ; preds = %bb2.i.i.i.i19, %lpad
+ %26 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %26, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %20, align 4
+ %27 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %29)
+ to label %invcont2 unwind label %lpad10
+
+lpad.i23: ; preds = %bb1.i.i.i.i18
+ %eh_ptr.i21 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i22 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i21, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %30 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %30)
+ to label %invcont1.i20 unwind label %lpad9.i26
+
+lpad9.i26: ; preds = %lpad.i23
+ %eh_ptr10.i24 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i24, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad10: ; preds = %bb3.i, %invcont1.i20
+ %eh_ptr11 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select13 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN24btPairCachingGhostObjectD2Ev(%struct.btPairCachingGhostObject* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV24btPairCachingGhostObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 1 ; [#uses=2]
+ %2 = load %struct.btHashedOverlappingPairCache** %1, align 4 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %2, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btHashedOverlappingPairCache*)* ; [#uses=1]
+ invoke void %6(%struct.btHashedOverlappingPairCache* %2)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %7 = load %struct.btHashedOverlappingPairCache** %1, align 4 ; [#uses=1]
+ %8 = bitcast %struct.btHashedOverlappingPairCache* %7 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %8)
+ to label %bb4 unwind label %lpad
+
+invcont2: ; preds = %bb3.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb4: ; preds = %invcont
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV13btGhostObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %9 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=3]
+ %10 = load %struct.btCollisionObject*** %9, align 4 ; [#uses=2]
+ %11 = icmp eq %struct.btCollisionObject** %10, null ; [#uses=1]
+ br i1 %11, label %_ZN13btGhostObjectD2Ev.exit, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %bb4
+ %12 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ %13 = load i8* %12, align 4 ; [#uses=1]
+ %toBool.i.i.i.i = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i, label %bb2.i.i.i.i, label %bb1.i.i.i.i
+
+bb1.i.i.i.i: ; preds = %bb.i.i.i.i
+ %14 = bitcast %struct.btCollisionObject** %10 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %14)
+ to label %bb2.i.i.i.i unwind label %lpad.i
+
+bb2.i.i.i.i: ; preds = %bb1.i.i.i.i, %bb.i.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %9, align 4
+ br label %_ZN13btGhostObjectD2Ev.exit
+
+invcont1.i: ; preds = %lpad.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ unreachable
+
+lpad.i: ; preds = %bb1.i.i.i.i
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %15 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %15)
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN13btGhostObjectD2Ev.exit: ; preds = %bb2.i.i.i.i, %bb4
+ %16 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %9, align 4
+ %17 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %19)
+ ret void
+
+lpad: ; preds = %invcont, %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select9 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV13btGhostObject, i32 0, i32 2), i32 (...)*** %0, align 4
+ %20 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=3]
+ %21 = load %struct.btCollisionObject*** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.btCollisionObject** %21, null ; [#uses=1]
+ br i1 %22, label %bb3.i, label %bb.i.i.i.i17
+
+bb.i.i.i.i17: ; preds = %lpad
+ %23 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i.i.i16 = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i16, label %bb2.i.i.i.i19, label %bb1.i.i.i.i18
+
+bb1.i.i.i.i18: ; preds = %bb.i.i.i.i17
+ %25 = bitcast %struct.btCollisionObject** %21 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %25)
+ to label %bb2.i.i.i.i19 unwind label %lpad.i23
+
+bb2.i.i.i.i19: ; preds = %bb1.i.i.i.i18, %bb.i.i.i.i17
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %20, align 4
+ br label %bb3.i
+
+invcont1.i20: ; preds = %lpad.i23
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i21)
+ to label %.noexc unwind label %lpad10
+
+.noexc: ; preds = %invcont1.i20
+ unreachable
+
+bb3.i: ; preds = %bb2.i.i.i.i19, %lpad
+ %26 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %26, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %20, align 4
+ %27 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %29)
+ to label %invcont2 unwind label %lpad10
+
+lpad.i23: ; preds = %bb1.i.i.i.i18
+ %eh_ptr.i21 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i22 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i21, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %30 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %30)
+ to label %invcont1.i20 unwind label %lpad9.i26
+
+lpad9.i26: ; preds = %lpad.i23
+ %eh_ptr10.i24 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i24, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad10: ; preds = %bb3.i, %invcont1.i20
+ %eh_ptr11 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select13 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN13btGhostObjectC1Ev(%struct.btGhostObject* %this) align 2 {
+invcont:
+ %0 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btCollisionObjectC2Ev(%struct.btCollisionObject* %0)
+ %1 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV13btGhostObject, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %3, align 4
+ %4 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btGhostObject* %this, i32 0, i32 0, i32 19 ; [#uses=1]
+ store i32 4, i32* %6, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN24btPairCachingGhostObjectC2Ev(%struct.btPairCachingGhostObject* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0 ; [#uses=3]
+ tail call void @_ZN17btCollisionObjectC2Ev(%struct.btCollisionObject* %0)
+ %1 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=3]
+ store i8 1, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=4]
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %3, align 4
+ %4 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 1 ; [#uses=2]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 1, i32 2 ; [#uses=2]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 0, i32 0, i32 19 ; [#uses=1]
+ store i32 4, i32* %6, align 4
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV24btPairCachingGhostObject, i32 0, i32 2), i32 (...)*** %1, align 4
+ %7 = invoke i8* @_Z22btAlignedAllocInternalji(i32 76, i32 16)
+ to label %invcont unwind label %lpad ; [#uses=2]
+
+invcont: ; preds = %entry
+ %8 = bitcast i8* %7 to %struct.btHashedOverlappingPairCache* ; [#uses=2]
+ %9 = icmp eq i8* %7, null ; [#uses=1]
+ br i1 %9, label %bb5, label %bb
+
+bb: ; preds = %invcont
+ invoke void @_ZN28btHashedOverlappingPairCacheC1Ev(%struct.btHashedOverlappingPairCache* %8)
+ to label %bb5 unwind label %lpad13
+
+bb5: ; preds = %bb, %invcont
+ %10 = getelementptr inbounds %struct.btPairCachingGhostObject* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btHashedOverlappingPairCache* %8, %struct.btHashedOverlappingPairCache** %10, align 4
+ ret void
+
+invcont9: ; preds = %bb3.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad13: ; preds = %bb
+ %eh_ptr14 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select16 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr14, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad17: ; preds = %bb3.i, %invcont1.i
+ %eh_ptr18 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select20 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr18, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %lpad13, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr14, %lpad13 ], [ %eh_ptr, %lpad ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([11 x i32 (...)*]* @_ZTV13btGhostObject, i32 0, i32 2), i32 (...)*** %1, align 4
+ %11 = load %struct.btCollisionObject*** %3, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btCollisionObject** %11, null ; [#uses=1]
+ br i1 %12, label %bb3.i, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %ppad
+ %13 = load i8* %2, align 4 ; [#uses=1]
+ %toBool.i.i.i.i = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i, label %bb2.i.i.i.i, label %bb1.i.i.i.i
+
+bb1.i.i.i.i: ; preds = %bb.i.i.i.i
+ %14 = bitcast %struct.btCollisionObject** %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %14)
+ to label %bb2.i.i.i.i unwind label %lpad.i
+
+bb2.i.i.i.i: ; preds = %bb1.i.i.i.i, %bb.i.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %3, align 4
+ br label %bb3.i
+
+invcont1.i: ; preds = %lpad.i
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ to label %.noexc unwind label %lpad17
+
+.noexc: ; preds = %invcont1.i
+ unreachable
+
+bb3.i: ; preds = %bb2.i.i.i.i, %ppad
+ store i8 1, i8* %2, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %3, align 4
+ store i32 0, i32* %4, align 4
+ store i32 0, i32* %5, align 4
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %0)
+ to label %invcont9 unwind label %lpad17
+
+lpad.i: ; preds = %bb1.i.i.i.i
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %0)
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN24btPairCachingGhostObjectC1Ev(%struct.btPairCachingGhostObject* %this) align 2 {
+entry:
+ tail call void @_ZN24btPairCachingGhostObjectC2Ev(%struct.btPairCachingGhostObject* %this)
+ ret void
+}
+
+; [#uses=0]
+define void @_Z26btGenerateInternalEdgeInfoP22btBvhTriangleMeshShapeP17btTriangleInfoMap(%struct.btBvhTriangleMeshShape* %trimeshShape, %struct.btTriangleInfoMap* %triangleInfoMap) {
+entry:
+ %vertexbase = alloca i8*, align 4 ; [#uses=3]
+ %numverts = alloca i32, align 4 ; [#uses=2]
+ %type = alloca i32, align 4 ; [#uses=3]
+ %stride = alloca i32, align 4 ; [#uses=3]
+ %indexbase = alloca i8*, align 4 ; [#uses=3]
+ %indexstride = alloca i32, align 4 ; [#uses=3]
+ %numfaces = alloca i32, align 4 ; [#uses=3]
+ %indicestype = alloca i32, align 4 ; [#uses=3]
+ %triangleVerts = alloca [3 x %struct.btQuadWord], align 8 ; [#uses=17]
+ %aabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %aabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %connectivityProcessor = alloca %struct.btConnectivityProcessor, align 8 ; [#uses=6]
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %trimeshShape, i32 0, i32 2 ; [#uses=2]
+ %1 = load %struct.btTriangleInfoMap** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btTriangleInfoMap* %1, null ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ store %struct.btTriangleInfoMap* %triangleInfoMap, %struct.btTriangleInfoMap** %0, align 4
+ %3 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %trimeshShape, i32 0, i32 0, i32 3 ; [#uses=1]
+ %4 = load %struct.btStridingMeshInterface** %3, align 4 ; [#uses=6]
+ %5 = getelementptr inbounds %struct.btStridingMeshInterface* %4, i32 0, i32 0 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btStridingMeshInterface* %4, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btStridingMeshInterface* %4, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btStridingMeshInterface* %4, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=4]
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=4]
+ %11 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=4]
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=4]
+ %13 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=4]
+ %14 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=4]
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=4]
+ %16 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=4]
+ %17 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %21 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %23 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %24 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %26 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %27 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %28 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btConnectivityProcessor* %connectivityProcessor, i32 0, i32 0, i32 0 ; [#uses=3]
+ %30 = getelementptr inbounds %struct.btConnectivityProcessor* %connectivityProcessor, i32 0, i32 1 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btConnectivityProcessor* %connectivityProcessor, i32 0, i32 2 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btConnectivityProcessor* %connectivityProcessor, i32 0, i32 3 ; [#uses=1]
+ %33 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 0 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btConnectivityProcessor* %connectivityProcessor, i32 0, i32 4 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %trimeshShape, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btConnectivityProcessor* %connectivityProcessor, i32 0, i32 0 ; [#uses=3]
+ br label %bb22
+
+bb4: ; preds = %bb22
+ store i8* null, i8** %vertexbase, align 4
+ store i32 0, i32* %numverts, align 4
+ store i32 2, i32* %type, align 4
+ store i32 0, i32* %stride, align 4
+ store i8* null, i8** %indexbase, align 4
+ store i32 0, i32* %indexstride, align 4
+ store i32 0, i32* %numfaces, align 4
+ store i32 2, i32* %indicestype, align 4
+ %37 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32 (...)** %37, i32 4 ; [#uses=1]
+ %39 = load i32 (...)** %38, align 4 ; [#uses=1]
+ %40 = bitcast i32 (...)* %39 to void (%struct.btStridingMeshInterface*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* ; [#uses=1]
+ call void %40(%struct.btStridingMeshInterface* %4, i8** %vertexbase, i32* %numverts, i32* %type, i32* %stride, i8** %indexbase, i32* %indexstride, i32* %numfaces, i32* %indicestype, i32 %149)
+ br label %bb20
+
+bb.nph85: ; preds = %bb20
+ %41 = load i8** %indexbase, align 4 ; [#uses=2]
+ %42 = load i32* %indexstride, align 4 ; [#uses=1]
+ %tmp86 = mul i32 %42, %145 ; [#uses=2]
+ %tmp87 = add i32 %tmp86, 4 ; [#uses=1]
+ %tmp91 = add i32 %tmp86, 8 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb13, %bb.nph85
+ %indvar = phi i32 [ 0, %bb.nph85 ], [ %indvar.next, %bb13 ] ; [#uses=4]
+ %tmp96 = sub i32 2, %indvar ; [#uses=4]
+ %scevgep9798 = getelementptr [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 %tmp96, i32 0, i32 0 ; [#uses=1]
+ %scevgep99 = getelementptr [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 %tmp96, i32 0, i32 1 ; [#uses=1]
+ %scevgep100 = getelementptr [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 %tmp96, i32 0, i32 2 ; [#uses=1]
+ %scevgep101 = getelementptr [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 %tmp96, i32 0, i32 3 ; [#uses=1]
+ %43 = load i32* %indicestype, align 4 ; [#uses=1]
+ %44 = icmp eq i32 %43, 3 ; [#uses=1]
+ br i1 %44, label %bb7, label %bb8
+
+bb7: ; preds = %bb6
+ %tmp = mul i32 %indvar, -2 ; [#uses=1]
+ %tmp88 = add i32 %tmp87, %tmp ; [#uses=1]
+ %scevgep = getelementptr i8* %41, i32 %tmp88 ; [#uses=1]
+ %scevgep89 = bitcast i8* %scevgep to i16* ; [#uses=1]
+ %45 = load i16* %scevgep89, align 2 ; [#uses=1]
+ %46 = zext i16 %45 to i32 ; [#uses=1]
+ br label %bb9
+
+bb8: ; preds = %bb6
+ %tmp90 = mul i32 %indvar, -4 ; [#uses=1]
+ %tmp92 = add i32 %tmp91, %tmp90 ; [#uses=1]
+ %scevgep93 = getelementptr i8* %41, i32 %tmp92 ; [#uses=1]
+ %scevgep9394 = bitcast i8* %scevgep93 to i32* ; [#uses=1]
+ %47 = load i32* %scevgep9394, align 4 ; [#uses=1]
+ br label %bb9
+
+bb9: ; preds = %bb8, %bb7
+ %iftmp.282.0 = phi i32 [ %46, %bb7 ], [ %47, %bb8 ] ; [#uses=1]
+ %48 = load i32* %type, align 4 ; [#uses=1]
+ %49 = icmp eq i32 %48, 0 ; [#uses=1]
+ %50 = load i8** %vertexbase, align 4 ; [#uses=5]
+ %51 = load i32* %stride, align 4 ; [#uses=1]
+ %52 = mul nsw i32 %51, %iftmp.282.0 ; [#uses=5]
+ %53 = getelementptr inbounds i8* %50, i32 %52 ; [#uses=2]
+ br i1 %49, label %bb10, label %bb11
+
+bb10: ; preds = %bb9
+ %54 = bitcast i8* %53 to float* ; [#uses=1]
+ %.sum35 = add i32 %52, 8 ; [#uses=1]
+ %55 = getelementptr inbounds i8* %50, i32 %.sum35 ; [#uses=1]
+ %56 = bitcast i8* %55 to float* ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = load float* %6, align 4 ; [#uses=1]
+ %59 = fmul float %57, %58 ; [#uses=1]
+ %.sum36 = add i32 %52, 4 ; [#uses=1]
+ %60 = getelementptr inbounds i8* %50, i32 %.sum36 ; [#uses=1]
+ %61 = bitcast i8* %60 to float* ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ %63 = load float* %7, align 4 ; [#uses=1]
+ %64 = fmul float %62, %63 ; [#uses=1]
+ %65 = load float* %54, align 4 ; [#uses=1]
+ %66 = load float* %8, align 4 ; [#uses=1]
+ %67 = fmul float %65, %66 ; [#uses=1]
+ br label %bb13
+
+bb11: ; preds = %bb9
+ %68 = bitcast i8* %53 to double* ; [#uses=1]
+ %.sum = add i32 %52, 16 ; [#uses=1]
+ %69 = getelementptr inbounds i8* %50, i32 %.sum ; [#uses=1]
+ %70 = bitcast i8* %69 to double* ; [#uses=1]
+ %71 = load double* %70, align 4 ; [#uses=1]
+ %72 = load float* %6, align 4 ; [#uses=1]
+ %73 = fpext float %72 to double ; [#uses=1]
+ %74 = fmul double %71, %73 ; [#uses=1]
+ %75 = fptrunc double %74 to float ; [#uses=1]
+ %.sum34 = add i32 %52, 8 ; [#uses=1]
+ %76 = getelementptr inbounds i8* %50, i32 %.sum34 ; [#uses=1]
+ %77 = bitcast i8* %76 to double* ; [#uses=1]
+ %78 = load double* %77, align 4 ; [#uses=1]
+ %79 = load float* %7, align 4 ; [#uses=1]
+ %80 = fpext float %79 to double ; [#uses=1]
+ %81 = fmul double %78, %80 ; [#uses=1]
+ %82 = fptrunc double %81 to float ; [#uses=1]
+ %83 = load double* %68, align 4 ; [#uses=1]
+ %84 = load float* %8, align 4 ; [#uses=1]
+ %85 = fpext float %84 to double ; [#uses=1]
+ %86 = fmul double %83, %85 ; [#uses=1]
+ %87 = fptrunc double %86 to float ; [#uses=1]
+ br label %bb13
+
+bb13: ; preds = %bb11, %bb10
+ %storemerge103 = phi float [ %67, %bb10 ], [ %87, %bb11 ] ; [#uses=1]
+ %storemerge102 = phi float [ %64, %bb10 ], [ %82, %bb11 ] ; [#uses=1]
+ %storemerge = phi float [ %59, %bb10 ], [ %75, %bb11 ] ; [#uses=1]
+ store float %storemerge103, float* %scevgep9798, align 8
+ store float %storemerge102, float* %scevgep99, align 4
+ store float %storemerge, float* %scevgep100, align 8
+ store float 0.000000e+00, float* %scevgep101, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb15, label %bb6
+
+bb15: ; preds = %bb13
+ store float 0x43ABC16D60000000, float* %9, align 8
+ store float 0x43ABC16D60000000, float* %10, align 4
+ store float 0x43ABC16D60000000, float* %11, align 8
+ store float 0.000000e+00, float* %12, align 4
+ store float 0xC3ABC16D60000000, float* %13, align 8
+ store float 0xC3ABC16D60000000, float* %14, align 4
+ store float 0xC3ABC16D60000000, float* %15, align 8
+ store float 0.000000e+00, float* %16, align 4
+ %88 = load float* %17, align 8 ; [#uses=6]
+ %89 = fcmp olt float %88, 0x43ABC16D60000000 ; [#uses=1]
+ br i1 %89, label %bb.i.i68, label %_Z8btSetMinIfEvRT_RKS0_.exit.i69
+
+bb.i.i68: ; preds = %bb15
+ store float %88, float* %9, align 8
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit.i69
+
+_Z8btSetMinIfEvRT_RKS0_.exit.i69: ; preds = %bb.i.i68, %bb15
+ %90 = phi float [ %88, %bb.i.i68 ], [ 0x43ABC16D60000000, %bb15 ] ; [#uses=2]
+ %91 = load float* %18, align 4 ; [#uses=6]
+ %92 = fcmp olt float %91, 0x43ABC16D60000000 ; [#uses=1]
+ br i1 %92, label %bb.i7.i70, label %_Z8btSetMinIfEvRT_RKS0_.exit9.i71
+
+bb.i7.i70: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit.i69
+ store float %91, float* %10, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit9.i71
+
+_Z8btSetMinIfEvRT_RKS0_.exit9.i71: ; preds = %bb.i7.i70, %_Z8btSetMinIfEvRT_RKS0_.exit.i69
+ %93 = phi float [ %91, %bb.i7.i70 ], [ 0x43ABC16D60000000, %_Z8btSetMinIfEvRT_RKS0_.exit.i69 ] ; [#uses=2]
+ %94 = load float* %19, align 8 ; [#uses=6]
+ %95 = fcmp olt float %94, 0x43ABC16D60000000 ; [#uses=1]
+ br i1 %95, label %bb.i4.i72, label %_Z8btSetMinIfEvRT_RKS0_.exit6.i73
+
+bb.i4.i72: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit9.i71
+ store float %94, float* %11, align 8
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit6.i73
+
+_Z8btSetMinIfEvRT_RKS0_.exit6.i73: ; preds = %bb.i4.i72, %_Z8btSetMinIfEvRT_RKS0_.exit9.i71
+ %96 = phi float [ %94, %bb.i4.i72 ], [ 0x43ABC16D60000000, %_Z8btSetMinIfEvRT_RKS0_.exit9.i71 ] ; [#uses=2]
+ %97 = load float* %20, align 4 ; [#uses=6]
+ %98 = fcmp olt float %97, 0.000000e+00 ; [#uses=1]
+ br i1 %98, label %bb.i1.i74, label %_ZN9btVector36setMinERKS_.exit76
+
+bb.i1.i74: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit6.i73
+ store float %97, float* %12, align 4
+ br label %_ZN9btVector36setMinERKS_.exit76
+
+_ZN9btVector36setMinERKS_.exit76: ; preds = %bb.i1.i74, %_Z8btSetMinIfEvRT_RKS0_.exit6.i73
+ %99 = phi float [ 0.000000e+00, %_Z8btSetMinIfEvRT_RKS0_.exit6.i73 ], [ %97, %bb.i1.i74 ] ; [#uses=2]
+ %100 = fcmp ogt float %88, 0xC3ABC16D60000000 ; [#uses=1]
+ br i1 %100, label %bb.i.i59, label %_Z8btSetMaxIfEvRT_RKS0_.exit.i60
+
+bb.i.i59: ; preds = %_ZN9btVector36setMinERKS_.exit76
+ store float %88, float* %13, align 8
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit.i60
+
+_Z8btSetMaxIfEvRT_RKS0_.exit.i60: ; preds = %bb.i.i59, %_ZN9btVector36setMinERKS_.exit76
+ %101 = phi float [ %88, %bb.i.i59 ], [ 0xC3ABC16D60000000, %_ZN9btVector36setMinERKS_.exit76 ] ; [#uses=2]
+ %102 = fcmp ogt float %91, 0xC3ABC16D60000000 ; [#uses=1]
+ br i1 %102, label %bb.i7.i61, label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i62
+
+bb.i7.i61: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit.i60
+ store float %91, float* %14, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i62
+
+_Z8btSetMaxIfEvRT_RKS0_.exit9.i62: ; preds = %bb.i7.i61, %_Z8btSetMaxIfEvRT_RKS0_.exit.i60
+ %103 = phi float [ %91, %bb.i7.i61 ], [ 0xC3ABC16D60000000, %_Z8btSetMaxIfEvRT_RKS0_.exit.i60 ] ; [#uses=2]
+ %104 = fcmp ogt float %94, 0xC3ABC16D60000000 ; [#uses=1]
+ br i1 %104, label %bb.i4.i63, label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i64
+
+bb.i4.i63: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit9.i62
+ store float %94, float* %15, align 8
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i64
+
+_Z8btSetMaxIfEvRT_RKS0_.exit6.i64: ; preds = %bb.i4.i63, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i62
+ %105 = phi float [ %94, %bb.i4.i63 ], [ 0xC3ABC16D60000000, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i62 ] ; [#uses=2]
+ %106 = fcmp ogt float %97, 0.000000e+00 ; [#uses=1]
+ br i1 %106, label %bb.i1.i65, label %_ZN9btVector36setMaxERKS_.exit67
+
+bb.i1.i65: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit6.i64
+ store float %97, float* %16, align 4
+ br label %_ZN9btVector36setMaxERKS_.exit67
+
+_ZN9btVector36setMaxERKS_.exit67: ; preds = %bb.i1.i65, %_Z8btSetMaxIfEvRT_RKS0_.exit6.i64
+ %107 = phi float [ 0.000000e+00, %_Z8btSetMaxIfEvRT_RKS0_.exit6.i64 ], [ %97, %bb.i1.i65 ] ; [#uses=2]
+ %108 = load float* %21, align 8 ; [#uses=6]
+ %109 = fcmp olt float %108, %90 ; [#uses=1]
+ br i1 %109, label %bb.i.i50, label %_Z8btSetMinIfEvRT_RKS0_.exit.i51
+
+bb.i.i50: ; preds = %_ZN9btVector36setMaxERKS_.exit67
+ store float %108, float* %9, align 8
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit.i51
+
+_Z8btSetMinIfEvRT_RKS0_.exit.i51: ; preds = %bb.i.i50, %_ZN9btVector36setMaxERKS_.exit67
+ %110 = phi float [ %108, %bb.i.i50 ], [ %90, %_ZN9btVector36setMaxERKS_.exit67 ] ; [#uses=1]
+ %111 = load float* %22, align 4 ; [#uses=6]
+ %112 = fcmp olt float %111, %93 ; [#uses=1]
+ br i1 %112, label %bb.i7.i52, label %_Z8btSetMinIfEvRT_RKS0_.exit9.i53
+
+bb.i7.i52: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit.i51
+ store float %111, float* %10, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit9.i53
+
+_Z8btSetMinIfEvRT_RKS0_.exit9.i53: ; preds = %bb.i7.i52, %_Z8btSetMinIfEvRT_RKS0_.exit.i51
+ %113 = phi float [ %111, %bb.i7.i52 ], [ %93, %_Z8btSetMinIfEvRT_RKS0_.exit.i51 ] ; [#uses=1]
+ %114 = load float* %23, align 8 ; [#uses=6]
+ %115 = fcmp olt float %114, %96 ; [#uses=1]
+ br i1 %115, label %bb.i4.i54, label %_Z8btSetMinIfEvRT_RKS0_.exit6.i55
+
+bb.i4.i54: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit9.i53
+ store float %114, float* %11, align 8
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit6.i55
+
+_Z8btSetMinIfEvRT_RKS0_.exit6.i55: ; preds = %bb.i4.i54, %_Z8btSetMinIfEvRT_RKS0_.exit9.i53
+ %116 = phi float [ %114, %bb.i4.i54 ], [ %96, %_Z8btSetMinIfEvRT_RKS0_.exit9.i53 ] ; [#uses=1]
+ %117 = load float* %24, align 4 ; [#uses=6]
+ %118 = fcmp olt float %117, %99 ; [#uses=1]
+ br i1 %118, label %bb.i1.i56, label %_ZN9btVector36setMinERKS_.exit58
+
+bb.i1.i56: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit6.i55
+ store float %117, float* %12, align 4
+ br label %_ZN9btVector36setMinERKS_.exit58
+
+_ZN9btVector36setMinERKS_.exit58: ; preds = %bb.i1.i56, %_Z8btSetMinIfEvRT_RKS0_.exit6.i55
+ %119 = phi float [ %99, %_Z8btSetMinIfEvRT_RKS0_.exit6.i55 ], [ %117, %bb.i1.i56 ] ; [#uses=1]
+ %120 = fcmp olt float %101, %108 ; [#uses=1]
+ br i1 %120, label %bb.i.i41, label %_Z8btSetMaxIfEvRT_RKS0_.exit.i42
+
+bb.i.i41: ; preds = %_ZN9btVector36setMinERKS_.exit58
+ store float %108, float* %13, align 8
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit.i42
+
+_Z8btSetMaxIfEvRT_RKS0_.exit.i42: ; preds = %bb.i.i41, %_ZN9btVector36setMinERKS_.exit58
+ %121 = phi float [ %108, %bb.i.i41 ], [ %101, %_ZN9btVector36setMinERKS_.exit58 ] ; [#uses=1]
+ %122 = fcmp olt float %103, %111 ; [#uses=1]
+ br i1 %122, label %bb.i7.i43, label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i44
+
+bb.i7.i43: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit.i42
+ store float %111, float* %14, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i44
+
+_Z8btSetMaxIfEvRT_RKS0_.exit9.i44: ; preds = %bb.i7.i43, %_Z8btSetMaxIfEvRT_RKS0_.exit.i42
+ %123 = phi float [ %111, %bb.i7.i43 ], [ %103, %_Z8btSetMaxIfEvRT_RKS0_.exit.i42 ] ; [#uses=1]
+ %124 = fcmp olt float %105, %114 ; [#uses=1]
+ br i1 %124, label %bb.i4.i45, label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i46
+
+bb.i4.i45: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit9.i44
+ store float %114, float* %15, align 8
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i46
+
+_Z8btSetMaxIfEvRT_RKS0_.exit6.i46: ; preds = %bb.i4.i45, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i44
+ %125 = phi float [ %114, %bb.i4.i45 ], [ %105, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i44 ] ; [#uses=1]
+ %126 = fcmp olt float %107, %117 ; [#uses=1]
+ br i1 %126, label %bb.i1.i47, label %_ZN9btVector36setMaxERKS_.exit49
+
+bb.i1.i47: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit6.i46
+ store float %117, float* %16, align 4
+ br label %_ZN9btVector36setMaxERKS_.exit49
+
+_ZN9btVector36setMaxERKS_.exit49: ; preds = %bb.i1.i47, %_Z8btSetMaxIfEvRT_RKS0_.exit6.i46
+ %127 = phi float [ %107, %_Z8btSetMaxIfEvRT_RKS0_.exit6.i46 ], [ %117, %bb.i1.i47 ] ; [#uses=1]
+ %128 = load float* %25, align 8 ; [#uses=4]
+ %129 = fcmp olt float %128, %110 ; [#uses=1]
+ br i1 %129, label %bb.i.i37, label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+bb.i.i37: ; preds = %_ZN9btVector36setMaxERKS_.exit49
+ store float %128, float* %9, align 8
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i37, %_ZN9btVector36setMaxERKS_.exit49
+ %130 = load float* %26, align 4 ; [#uses=4]
+ %131 = fcmp olt float %130, %113 ; [#uses=1]
+ br i1 %131, label %bb.i7.i38, label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+bb.i7.i38: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ store float %130, float* %10, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i38, %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ %132 = load float* %27, align 8 ; [#uses=4]
+ %133 = fcmp olt float %132, %116 ; [#uses=1]
+ br i1 %133, label %bb.i4.i39, label %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+
+bb.i4.i39: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ store float %132, float* %11, align 8
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit6.i: ; preds = %bb.i4.i39, %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ %134 = load float* %28, align 4 ; [#uses=4]
+ %135 = fcmp olt float %134, %119 ; [#uses=1]
+ br i1 %135, label %bb.i1.i40, label %_ZN9btVector36setMinERKS_.exit
+
+bb.i1.i40: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+ store float %134, float* %12, align 4
+ br label %_ZN9btVector36setMinERKS_.exit
+
+_ZN9btVector36setMinERKS_.exit: ; preds = %bb.i1.i40, %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+ %136 = fcmp olt float %121, %128 ; [#uses=1]
+ br i1 %136, label %bb.i.i, label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+bb.i.i: ; preds = %_ZN9btVector36setMinERKS_.exit
+ store float %128, float* %13, align 8
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i, %_ZN9btVector36setMinERKS_.exit
+ %137 = fcmp olt float %123, %130 ; [#uses=1]
+ br i1 %137, label %bb.i7.i, label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+bb.i7.i: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ store float %130, float* %14, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i, %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ %138 = fcmp olt float %125, %132 ; [#uses=1]
+ br i1 %138, label %bb.i4.i, label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+
+bb.i4.i: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ store float %132, float* %15, align 8
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit6.i: ; preds = %bb.i4.i, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ %139 = fcmp olt float %127, %134 ; [#uses=1]
+ br i1 %139, label %bb.i1.i, label %_ZN9btVector36setMaxERKS_.exit
+
+bb.i1.i: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+ store float %134, float* %16, align 4
+ br label %_ZN9btVector36setMaxERKS_.exit
+
+_ZN9btVector36setMaxERKS_.exit: ; preds = %bb.i1.i, %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btConnectivityProcessor, i32 0, i32 2), i32 (...)*** %29, align 8
+ store i32 %149, i32* %30, align 4
+ store i32 %145, i32* %31, align 8
+ store %struct.btQuadWord* %33, %struct.btQuadWord** %32, align 4
+ store %struct.btTriangleInfoMap* %triangleInfoMap, %struct.btTriangleInfoMap** %34, align 8
+ %140 = load i32 (...)*** %35, align 4 ; [#uses=1]
+ %141 = getelementptr inbounds i32 (...)** %140, i32 15 ; [#uses=1]
+ %142 = load i32 (...)** %141, align 4 ; [#uses=1]
+ %143 = bitcast i32 (...)* %142 to void (%struct.btBvhTriangleMeshShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %143(%struct.btBvhTriangleMeshShape* %trimeshShape, %struct.btActionInterface* %36, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ to label %bb19 unwind label %lpad
+
+invcont17: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb19: ; preds = %_ZN9btVector36setMaxERKS_.exit
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btConnectivityProcessor, i32 0, i32 2), i32 (...)*** %29, align 8
+ call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %36)
+ %144 = add nsw i32 %145, 1 ; [#uses=1]
+ br label %bb20
+
+bb20: ; preds = %bb19, %bb4
+ %145 = phi i32 [ 0, %bb4 ], [ %144, %bb19 ] ; [#uses=4]
+ %146 = load i32* %numfaces, align 4 ; [#uses=1]
+ %147 = icmp slt i32 %145, %146 ; [#uses=1]
+ br i1 %147, label %bb.nph85, label %bb21
+
+bb21: ; preds = %bb20
+ %148 = add nsw i32 %149, 1 ; [#uses=1]
+ br label %bb22
+
+bb22: ; preds = %bb21, %bb
+ %149 = phi i32 [ 0, %bb ], [ %148, %bb21 ] ; [#uses=4]
+ %150 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %151 = getelementptr inbounds i32 (...)** %150, i32 7 ; [#uses=1]
+ %152 = load i32 (...)** %151, align 4 ; [#uses=1]
+ %153 = bitcast i32 (...)* %152 to i32 (%struct.btStridingMeshInterface*)* ; [#uses=1]
+ %154 = call i32 %153(%struct.btStridingMeshInterface* %4) ; [#uses=1]
+ %155 = icmp sgt i32 %154, %149 ; [#uses=1]
+ br i1 %155, label %bb4, label %return
+
+return: ; preds = %bb22, %entry
+ ret void
+
+lpad: ; preds = %_ZN9btVector36setMaxERKS_.exit
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select26 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btConnectivityProcessor, i32 0, i32 2), i32 (...)*** %29, align 8
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %36)
+ to label %invcont17 unwind label %lpad27
+
+lpad27: ; preds = %lpad
+ %eh_ptr28 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select30 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr28, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btConnectivityProcessorD1Ev(%struct.btConnectivityProcessor* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConnectivityProcessor* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btConnectivityProcessor, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConnectivityProcessor* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btConnectivityProcessorD0Ev(%struct.btConnectivityProcessor* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConnectivityProcessor* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV23btConnectivityProcessor, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConnectivityProcessor* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct.btConnectivityProcessor* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btConnectivityProcessor15processTriangleEP9btVector3ii(%struct.btConnectivityProcessor* nocapture %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %0 = alloca %struct.btHashInt, align 8 ; [#uses=2]
+ %sharedVertsA = alloca [3 x i32], align 4 ; [#uses=4]
+ %sharedVertsB = alloca [3 x i32], align 4 ; [#uses=4]
+ %tA = alloca %struct.btTriangleShape, align 8 ; [#uses=17]
+ %tB = alloca %struct.btTriangleShape, align 8 ; [#uses=16]
+ %tmp18 = alloca %struct.btTriangleInfo, align 8 ; [#uses=5]
+ %1 = getelementptr inbounds %struct.btConnectivityProcessor* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i32* %1, align 4 ; [#uses=2]
+ %3 = icmp eq i32 %2, %partId ; [#uses=1]
+ br i1 %3, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btConnectivityProcessor* %this, i32 0, i32 2 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp eq i32 %5, %triangleIndex ; [#uses=1]
+ br i1 %6, label %return, label %bb1
+
+bb1: ; preds = %bb, %entry
+ %7 = getelementptr inbounds [3 x i32]* %sharedVertsA, i32 0, i32 0 ; [#uses=4]
+ store i32 -1, i32* %7, align 4
+ %8 = getelementptr inbounds [3 x i32]* %sharedVertsA, i32 0, i32 1 ; [#uses=4]
+ store i32 -1, i32* %8, align 4
+ %9 = getelementptr inbounds [3 x i32]* %sharedVertsA, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %9, align 4
+ %10 = getelementptr inbounds [3 x i32]* %sharedVertsB, i32 0, i32 0 ; [#uses=4]
+ store i32 -1, i32* %10, align 4
+ %11 = getelementptr inbounds [3 x i32]* %sharedVertsB, i32 0, i32 1 ; [#uses=4]
+ store i32 -1, i32* %11, align 4
+ %12 = getelementptr inbounds [3 x i32]* %sharedVertsB, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = fsub float %14, %16 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=2]
+ %22 = fsub float %19, %21 ; [#uses=2]
+ %23 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=2]
+ %27 = fsub float %24, %26 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = fsub float %29, %16 ; [#uses=2]
+ %31 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fsub float %32, %21 ; [#uses=2]
+ %34 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fsub float %35, %26 ; [#uses=2]
+ %37 = fmul float %36, %22 ; [#uses=1]
+ %38 = fmul float %33, %27 ; [#uses=1]
+ %39 = fsub float %37, %38 ; [#uses=2]
+ %40 = fmul float %30, %27 ; [#uses=1]
+ %41 = fmul float %36, %17 ; [#uses=1]
+ %42 = fsub float %40, %41 ; [#uses=2]
+ %43 = fmul float %33, %17 ; [#uses=1]
+ %44 = fmul float %30, %22 ; [#uses=1]
+ %45 = fsub float %43, %44 ; [#uses=2]
+ %46 = fmul float %45, %45 ; [#uses=1]
+ %47 = fmul float %42, %42 ; [#uses=1]
+ %48 = fadd float %46, %47 ; [#uses=1]
+ %49 = fmul float %39, %39 ; [#uses=1]
+ %50 = fadd float %48, %49 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btConnectivityProcessor* %this, i32 0, i32 4 ; [#uses=3]
+ %52 = load %struct.btTriangleInfoMap** %51, align 4 ; [#uses=9]
+ %53 = getelementptr inbounds %struct.btTriangleInfoMap* %52, i32 0, i32 4 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=2]
+ %55 = fcmp ogt float %54, %50 ; [#uses=1]
+ br i1 %55, label %return, label %bb2
+
+bb2: ; preds = %bb1
+ %56 = getelementptr inbounds %struct.btConnectivityProcessor* %this, i32 0, i32 3 ; [#uses=3]
+ %57 = load %struct.btQuadWord** %56, align 4 ; [#uses=12]
+ %58 = getelementptr inbounds %struct.btQuadWord* %57, i32 2, i32 0, i32 2 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btQuadWord* %57, i32 0, i32 0, i32 2 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=2]
+ %62 = fsub float %59, %61 ; [#uses=2]
+ %63 = getelementptr inbounds %struct.btQuadWord* %57, i32 2, i32 0, i32 1 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btQuadWord* %57, i32 0, i32 0, i32 1 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=2]
+ %67 = fsub float %64, %66 ; [#uses=2]
+ %68 = getelementptr inbounds %struct.btQuadWord* %57, i32 2, i32 0, i32 0 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btQuadWord* %57, i32 0, i32 0, i32 0 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=2]
+ %72 = fsub float %69, %71 ; [#uses=2]
+ %73 = getelementptr inbounds %struct.btQuadWord* %57, i32 1, i32 0, i32 2 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = fsub float %74, %61 ; [#uses=2]
+ %76 = getelementptr inbounds %struct.btQuadWord* %57, i32 1, i32 0, i32 1 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ %78 = fsub float %77, %66 ; [#uses=2]
+ %79 = getelementptr inbounds %struct.btQuadWord* %57, i32 1, i32 0, i32 0 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fsub float %80, %71 ; [#uses=2]
+ %82 = fmul float %81, %67 ; [#uses=1]
+ %83 = fmul float %78, %72 ; [#uses=1]
+ %84 = fsub float %82, %83 ; [#uses=2]
+ %85 = fmul float %75, %72 ; [#uses=1]
+ %86 = fmul float %81, %62 ; [#uses=1]
+ %87 = fsub float %85, %86 ; [#uses=2]
+ %88 = fmul float %78, %62 ; [#uses=1]
+ %89 = fmul float %75, %67 ; [#uses=1]
+ %90 = fsub float %88, %89 ; [#uses=2]
+ %91 = fmul float %90, %90 ; [#uses=1]
+ %92 = fmul float %87, %87 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = fmul float %84, %84 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fcmp ogt float %54, %95 ; [#uses=1]
+ br i1 %96, label %return, label %bb11
+
+bb5: ; preds = %bb8
+ %scevgep249 = getelementptr %struct.btQuadWord* %triangle, i32 %119, i32 0, i32 2 ; [#uses=1]
+ %scevgep248 = getelementptr %struct.btQuadWord* %triangle, i32 %119, i32 0, i32 1 ; [#uses=1]
+ %scevgep247 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 %119, i32 0, i32 0 ; [#uses=1]
+ %scevgep255 = getelementptr %struct.btQuadWord* %57, i32 %123, i32 0, i32 2 ; [#uses=1]
+ %97 = load float* %scevgep255, align 4 ; [#uses=1]
+ %98 = load float* %scevgep249, align 4 ; [#uses=1]
+ %99 = fsub float %97, %98 ; [#uses=2]
+ %scevgep254 = getelementptr %struct.btQuadWord* %57, i32 %123, i32 0, i32 1 ; [#uses=1]
+ %100 = load float* %scevgep254, align 4 ; [#uses=1]
+ %101 = load float* %scevgep248, align 4 ; [#uses=1]
+ %102 = fsub float %100, %101 ; [#uses=2]
+ %scevgep252253 = getelementptr inbounds %struct.btQuadWord* %57, i32 %123, i32 0, i32 0 ; [#uses=1]
+ %103 = load float* %scevgep252253, align 4 ; [#uses=1]
+ %104 = load float* %scevgep247, align 4 ; [#uses=1]
+ %105 = fsub float %103, %104 ; [#uses=2]
+ %106 = fmul float %105, %105 ; [#uses=1]
+ %107 = fmul float %102, %102 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fmul float %99, %99 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btTriangleInfoMap* %52, i32 0, i32 4 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ %113 = fcmp olt float %110, %112 ; [#uses=1]
+ br i1 %113, label %bb6, label %bb7
+
+bb6: ; preds = %bb5
+ %114 = getelementptr inbounds [3 x i32]* %sharedVertsA, i32 0, i32 %numshared.1 ; [#uses=1]
+ store i32 %123, i32* %114, align 4
+ %115 = getelementptr inbounds [3 x i32]* %sharedVertsB, i32 0, i32 %numshared.1 ; [#uses=1]
+ store i32 %119, i32* %115, align 4
+ %116 = add nsw i32 %numshared.1, 1 ; [#uses=2]
+ %117 = icmp sgt i32 %116, 2 ; [#uses=1]
+ br i1 %117, label %return, label %bb7
+
+bb7: ; preds = %bb6, %bb5
+ %numshared.0 = phi i32 [ %116, %bb6 ], [ %numshared.1, %bb5 ] ; [#uses=1]
+ %118 = add nsw i32 %119, 1 ; [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb11, %bb7
+ %numshared.1 = phi i32 [ %numshared.0, %bb7 ], [ %numshared.2, %bb11 ] ; [#uses=6]
+ %119 = phi i32 [ %118, %bb7 ], [ 0, %bb11 ] ; [#uses=6]
+ %120 = icmp slt i32 %119, 3 ; [#uses=1]
+ br i1 %120, label %bb5, label %bb9
+
+bb9: ; preds = %bb8
+ %121 = icmp sgt i32 %numshared.1, 2 ; [#uses=1]
+ br i1 %121, label %return, label %bb10
+
+bb10: ; preds = %bb9
+ %122 = add nsw i32 %123, 1 ; [#uses=1]
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb2
+ %numshared.2 = phi i32 [ %numshared.1, %bb10 ], [ 0, %bb2 ] ; [#uses=2]
+ %123 = phi i32 [ %122, %bb10 ], [ 0, %bb2 ] ; [#uses=6]
+ %124 = icmp slt i32 %123, 3 ; [#uses=1]
+ br i1 %124, label %bb8, label %bb12
+
+bb12: ; preds = %bb11
+ %cond = icmp eq i32 %numshared.2, 2 ; [#uses=1]
+ br i1 %cond, label %bb13, label %return
+
+bb13: ; preds = %bb12
+ %125 = load i32* %7, align 4 ; [#uses=1]
+ %126 = icmp eq i32 %125, 0 ; [#uses=1]
+ br i1 %126, label %bb14, label %bb16
+
+bb14: ; preds = %bb13
+ %127 = load i32* %8, align 4 ; [#uses=1]
+ %128 = icmp eq i32 %127, 2 ; [#uses=1]
+ br i1 %128, label %bb15, label %bb16
+
+bb15: ; preds = %bb14
+ store i32 2, i32* %7, align 4
+ store i32 0, i32* %8, align 4
+ %129 = load i32* %11, align 4 ; [#uses=1]
+ %130 = load i32* %10, align 4 ; [#uses=1]
+ store i32 %130, i32* %11, align 4
+ store i32 %129, i32* %10, align 4
+ br label %bb16
+
+bb16: ; preds = %bb15, %bb14, %bb13
+ %131 = getelementptr inbounds %struct.btConnectivityProcessor* %this, i32 0, i32 2 ; [#uses=1]
+ %132 = load i32* %131, align 4 ; [#uses=2]
+ %133 = shl i32 %2, 21 ; [#uses=1]
+ %134 = or i32 %133, %132 ; [#uses=4]
+ %135 = shl i32 %132, 15 ; [#uses=1]
+ %not.i.i.i = xor i32 %135, -1 ; [#uses=1]
+ %136 = add nsw i32 %134, %not.i.i.i ; [#uses=2]
+ %137 = ashr i32 %136, 10 ; [#uses=1]
+ %138 = xor i32 %137, %136 ; [#uses=1]
+ %139 = mul i32 %138, 9 ; [#uses=2]
+ %140 = ashr i32 %139, 6 ; [#uses=1]
+ %141 = xor i32 %140, %139 ; [#uses=2]
+ %142 = shl i32 %141, 11 ; [#uses=1]
+ %not2.i.i.i = xor i32 %142, -1 ; [#uses=1]
+ %143 = add nsw i32 %141, %not2.i.i.i ; [#uses=2]
+ %144 = ashr i32 %143, 16 ; [#uses=1]
+ %145 = xor i32 %144, %143 ; [#uses=2]
+ %146 = getelementptr inbounds %struct.btTriangleInfoMap* %52, i32 0, i32 1, i32 2, i32 2 ; [#uses=1]
+ %147 = load i32* %146, align 4 ; [#uses=1]
+ %148 = add nsw i32 %147, -1 ; [#uses=1]
+ %149 = and i32 %145, %148 ; [#uses=2]
+ %150 = getelementptr inbounds %struct.btTriangleInfoMap* %52, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %151 = load i32* %150, align 4 ; [#uses=1]
+ %152 = icmp ugt i32 %151, %149 ; [#uses=1]
+ br i1 %152, label %bb1.i.i, label %bb17
+
+bb1.i.i: ; preds = %bb16
+ %153 = getelementptr inbounds %struct.btTriangleInfoMap* %52, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %154 = load i32** %153, align 4 ; [#uses=1]
+ %155 = getelementptr inbounds i32* %154, i32 %149 ; [#uses=1]
+ %156 = getelementptr inbounds %struct.btTriangleInfoMap* %52, i32 0, i32 1, i32 3, i32 3 ; [#uses=1]
+ %157 = getelementptr inbounds %struct.btTriangleInfoMap* %52, i32 0, i32 1, i32 1, i32 3 ; [#uses=1]
+ br label %bb3.i.i
+
+bb2.i.i: ; preds = %bb4.i.i
+ %158 = load i32** %157, align 4 ; [#uses=1]
+ %159 = getelementptr inbounds i32* %158, i32 %index.0.i.i ; [#uses=1]
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb2.i.i, %bb1.i.i
+ %index.0.in.i.i = phi i32* [ %155, %bb1.i.i ], [ %159, %bb2.i.i ] ; [#uses=1]
+ %index.0.i.i = load i32* %index.0.in.i.i, align 4 ; [#uses=4]
+ %160 = icmp eq i32 %index.0.i.i, -1 ; [#uses=1]
+ br i1 %160, label %bb17, label %bb4.i.i
+
+bb4.i.i: ; preds = %bb3.i.i
+ %161 = load %struct.btHashInt** %156, align 4 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btHashInt* %161, i32 %index.0.i.i, i32 0 ; [#uses=1]
+ %163 = load i32* %162, align 4 ; [#uses=1]
+ %164 = icmp eq i32 %134, %163 ; [#uses=1]
+ br i1 %164, label %_ZN9btHashMapI9btHashInt14btTriangleInfoE4findERKS0_.exit, label %bb2.i.i
+
+_ZN9btHashMapI9btHashInt14btTriangleInfoE4findERKS0_.exit: ; preds = %bb4.i.i
+ %165 = getelementptr inbounds %struct.btTriangleInfoMap* %52, i32 0, i32 1, i32 2, i32 3 ; [#uses=1]
+ %166 = load %struct.btTriangleInfo** %165, align 4 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btTriangleInfo* %166, i32 %index.0.i.i ; [#uses=2]
+ %168 = icmp eq %struct.btTriangleInfo* %167, null ; [#uses=1]
+ br i1 %168, label %bb17, label %bb19
+
+bb17: ; preds = %_ZN9btHashMapI9btHashInt14btTriangleInfoE4findERKS0_.exit, %bb3.i.i, %bb16
+ %169 = getelementptr inbounds %struct.btTriangleInfo* %tmp18, i32 0, i32 1 ; [#uses=1]
+ store float 0x401921FB60000000, float* %169, align 4
+ %170 = getelementptr inbounds %struct.btTriangleInfo* %tmp18, i32 0, i32 2 ; [#uses=1]
+ store float 0x401921FB60000000, float* %170, align 8
+ %171 = getelementptr inbounds %struct.btTriangleInfo* %tmp18, i32 0, i32 3 ; [#uses=1]
+ store float 0x401921FB60000000, float* %171, align 4
+ %172 = getelementptr inbounds %struct.btTriangleInfo* %tmp18, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %172, align 8
+ %173 = getelementptr inbounds %struct.btHashInt* %0, i32 0, i32 0 ; [#uses=1]
+ store i32 %134, i32* %173, align 8
+ %174 = getelementptr inbounds %struct.btTriangleInfoMap* %52, i32 0, i32 1 ; [#uses=1]
+ call void @_ZN9btHashMapI9btHashInt14btTriangleInfoE6insertERKS0_RKS1_(%"struct.btHashMap<btHashInt,btTriangleInfo>"* %174, %struct.btHashInt* %0, %struct.btTriangleInfo* %tmp18)
+ %175 = load %struct.btTriangleInfoMap** %51, align 4 ; [#uses=6]
+ %176 = getelementptr inbounds %struct.btTriangleInfoMap* %175, i32 0, i32 1, i32 2, i32 2 ; [#uses=1]
+ %177 = load i32* %176, align 4 ; [#uses=1]
+ %178 = add nsw i32 %177, -1 ; [#uses=1]
+ %179 = and i32 %178, %145 ; [#uses=2]
+ %180 = getelementptr inbounds %struct.btTriangleInfoMap* %175, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %181 = load i32* %180, align 4 ; [#uses=1]
+ %182 = icmp ugt i32 %181, %179 ; [#uses=1]
+ br i1 %182, label %bb1.i.i110, label %bb19
+
+bb1.i.i110: ; preds = %bb17
+ %183 = getelementptr inbounds %struct.btTriangleInfoMap* %175, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %184 = load i32** %183, align 4 ; [#uses=1]
+ %185 = getelementptr inbounds i32* %184, i32 %179 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btTriangleInfoMap* %175, i32 0, i32 1, i32 3, i32 3 ; [#uses=1]
+ %187 = getelementptr inbounds %struct.btTriangleInfoMap* %175, i32 0, i32 1, i32 1, i32 3 ; [#uses=1]
+ br label %bb3.i.i114
+
+bb2.i.i111: ; preds = %bb4.i.i115
+ %188 = load i32** %187, align 4 ; [#uses=1]
+ %189 = getelementptr inbounds i32* %188, i32 %index.0.i.i113 ; [#uses=1]
+ br label %bb3.i.i114
+
+bb3.i.i114: ; preds = %bb2.i.i111, %bb1.i.i110
+ %index.0.in.i.i112 = phi i32* [ %185, %bb1.i.i110 ], [ %189, %bb2.i.i111 ] ; [#uses=1]
+ %index.0.i.i113 = load i32* %index.0.in.i.i112, align 4 ; [#uses=4]
+ %190 = icmp eq i32 %index.0.i.i113, -1 ; [#uses=1]
+ br i1 %190, label %bb19, label %bb4.i.i115
+
+bb4.i.i115: ; preds = %bb3.i.i114
+ %191 = load %struct.btHashInt** %186, align 4 ; [#uses=1]
+ %192 = getelementptr inbounds %struct.btHashInt* %191, i32 %index.0.i.i113, i32 0 ; [#uses=1]
+ %193 = load i32* %192, align 4 ; [#uses=1]
+ %194 = icmp eq i32 %134, %193 ; [#uses=1]
+ br i1 %194, label %bb1.i116, label %bb2.i.i111
+
+bb1.i116: ; preds = %bb4.i.i115
+ %195 = getelementptr inbounds %struct.btTriangleInfoMap* %175, i32 0, i32 1, i32 2, i32 3 ; [#uses=1]
+ %196 = load %struct.btTriangleInfo** %195, align 4 ; [#uses=1]
+ %197 = getelementptr inbounds %struct.btTriangleInfo* %196, i32 %index.0.i.i113 ; [#uses=1]
+ br label %bb19
+
+bb19: ; preds = %bb1.i116, %bb3.i.i114, %bb17, %_ZN9btHashMapI9btHashInt14btTriangleInfoE4findERKS0_.exit
+ %info.0 = phi %struct.btTriangleInfo* [ %197, %bb1.i116 ], [ %167, %_ZN9btHashMapI9btHashInt14btTriangleInfoE4findERKS0_.exit ], [ null, %bb17 ], [ null, %bb3.i.i114 ] ; [#uses=9]
+ %198 = load i32* %7, align 4 ; [#uses=7]
+ %199 = load i32* %8, align 4 ; [#uses=4]
+ %200 = add nsw i32 %199, %198 ; [#uses=2]
+ %201 = load %struct.btQuadWord** %56, align 4 ; [#uses=18]
+ %202 = getelementptr inbounds %struct.btQuadWord* %201, i32 %199, i32 0, i32 2 ; [#uses=1]
+ %203 = load float* %202, align 4 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btQuadWord* %201, i32 %198, i32 0, i32 2 ; [#uses=1]
+ %205 = load float* %204, align 4 ; [#uses=1]
+ %206 = fsub float %203, %205 ; [#uses=3]
+ %207 = getelementptr inbounds %struct.btQuadWord* %201, i32 %199, i32 0, i32 1 ; [#uses=1]
+ %208 = load float* %207, align 4 ; [#uses=1]
+ %209 = getelementptr inbounds %struct.btQuadWord* %201, i32 %198, i32 0, i32 1 ; [#uses=1]
+ %210 = load float* %209, align 4 ; [#uses=1]
+ %211 = fsub float %208, %210 ; [#uses=3]
+ %212 = getelementptr inbounds %struct.btQuadWord* %201, i32 %199, i32 0, i32 0 ; [#uses=1]
+ %213 = load float* %212, align 4 ; [#uses=1]
+ %214 = getelementptr inbounds %struct.btQuadWord* %201, i32 %198, i32 0, i32 0 ; [#uses=1]
+ %215 = load float* %214, align 4 ; [#uses=1]
+ %216 = fsub float %213, %215 ; [#uses=3]
+ %217 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %217)
+ %218 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV15btTriangleShape, i32 0, i32 2), i32 (...)*** %218, align 8
+ %219 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %219, align 4
+ %220 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=2]
+ %221 = getelementptr inbounds %struct.btQuadWord* %201, i32 0, i32 0, i32 0 ; [#uses=1]
+ %222 = load float* %221, align 4 ; [#uses=1]
+ store float %222, float* %220, align 4
+ %223 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=2]
+ %224 = getelementptr inbounds %struct.btQuadWord* %201, i32 0, i32 0, i32 1 ; [#uses=1]
+ %225 = load float* %224, align 4 ; [#uses=1]
+ store float %225, float* %223, align 4
+ %226 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=2]
+ %227 = getelementptr inbounds %struct.btQuadWord* %201, i32 0, i32 0, i32 2 ; [#uses=1]
+ %228 = load float* %227, align 4 ; [#uses=1]
+ store float %228, float* %226, align 4
+ %229 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %230 = getelementptr inbounds %struct.btQuadWord* %201, i32 0, i32 0, i32 3 ; [#uses=1]
+ %231 = load float* %230, align 4 ; [#uses=1]
+ store float %231, float* %229, align 4
+ %232 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=2]
+ %233 = getelementptr inbounds %struct.btQuadWord* %201, i32 1, i32 0, i32 0 ; [#uses=1]
+ %234 = load float* %233, align 4 ; [#uses=1]
+ store float %234, float* %232, align 4
+ %235 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=2]
+ %236 = getelementptr inbounds %struct.btQuadWord* %201, i32 1, i32 0, i32 1 ; [#uses=1]
+ %237 = load float* %236, align 4 ; [#uses=1]
+ store float %237, float* %235, align 4
+ %238 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=2]
+ %239 = getelementptr inbounds %struct.btQuadWord* %201, i32 1, i32 0, i32 2 ; [#uses=1]
+ %240 = load float* %239, align 4 ; [#uses=1]
+ store float %240, float* %238, align 4
+ %241 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %242 = getelementptr inbounds %struct.btQuadWord* %201, i32 1, i32 0, i32 3 ; [#uses=1]
+ %243 = load float* %242, align 4 ; [#uses=1]
+ store float %243, float* %241, align 4
+ %244 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=2]
+ %245 = getelementptr inbounds %struct.btQuadWord* %201, i32 2, i32 0, i32 0 ; [#uses=1]
+ %246 = load float* %245, align 4 ; [#uses=1]
+ store float %246, float* %244, align 4
+ %247 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=2]
+ %248 = getelementptr inbounds %struct.btQuadWord* %201, i32 2, i32 0, i32 1 ; [#uses=1]
+ %249 = load float* %248, align 4 ; [#uses=1]
+ store float %249, float* %247, align 4
+ %250 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=2]
+ %251 = getelementptr inbounds %struct.btQuadWord* %201, i32 2, i32 0, i32 2 ; [#uses=1]
+ %252 = load float* %251, align 4 ; [#uses=1]
+ store float %252, float* %250, align 4
+ %253 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 1, i32 2, i32 0, i32 3 ; [#uses=1]
+ %254 = getelementptr inbounds %struct.btQuadWord* %201, i32 2, i32 0, i32 3 ; [#uses=1]
+ %255 = load float* %254, align 4 ; [#uses=1]
+ store float %255, float* %253, align 4
+ %256 = load i32* %10, align 4 ; [#uses=5]
+ %257 = load i32* %11, align 4 ; [#uses=5]
+ %.neg237 = sub i32 3, %256 ; [#uses=1]
+ %258 = sub i32 %.neg237, %257 ; [#uses=4]
+ %259 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %259)
+ to label %invcont unwind label %ppad
+
+invcont: ; preds = %bb19
+ %260 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV15btTriangleShape, i32 0, i32 2), i32 (...)*** %260, align 8
+ %261 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %261, align 4
+ %262 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %263 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 %257, i32 0, i32 0 ; [#uses=1]
+ %264 = load float* %263, align 4 ; [#uses=3]
+ store float %264, float* %262, align 4
+ %265 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %266 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 %257, i32 0, i32 1 ; [#uses=1]
+ %267 = load float* %266, align 4 ; [#uses=3]
+ store float %267, float* %265, align 4
+ %268 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %269 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 %257, i32 0, i32 2 ; [#uses=1]
+ %270 = load float* %269, align 4 ; [#uses=3]
+ store float %270, float* %268, align 4
+ %271 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %272 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 %257, i32 0, i32 3 ; [#uses=1]
+ %273 = load float* %272, align 4 ; [#uses=1]
+ store float %273, float* %271, align 4
+ %274 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %275 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 %256, i32 0, i32 0 ; [#uses=1]
+ %276 = load float* %275, align 4 ; [#uses=3]
+ store float %276, float* %274, align 4
+ %277 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %278 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 %256, i32 0, i32 1 ; [#uses=1]
+ %279 = load float* %278, align 4 ; [#uses=3]
+ store float %279, float* %277, align 4
+ %280 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %281 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 %256, i32 0, i32 2 ; [#uses=1]
+ %282 = load float* %281, align 4 ; [#uses=3]
+ store float %282, float* %280, align 4
+ %283 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %284 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 %256, i32 0, i32 3 ; [#uses=1]
+ %285 = load float* %284, align 4 ; [#uses=1]
+ store float %285, float* %283, align 4
+ %286 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %287 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 %258, i32 0, i32 0 ; [#uses=1]
+ %288 = load float* %287, align 4 ; [#uses=3]
+ store float %288, float* %286, align 4
+ %289 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %290 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 %258, i32 0, i32 1 ; [#uses=1]
+ %291 = load float* %290, align 4 ; [#uses=3]
+ store float %291, float* %289, align 4
+ %292 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %293 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 %258, i32 0, i32 2 ; [#uses=1]
+ %294 = load float* %293, align 4 ; [#uses=3]
+ store float %294, float* %292, align 4
+ %295 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 1, i32 2, i32 0, i32 3 ; [#uses=1]
+ %296 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 %258, i32 0, i32 3 ; [#uses=1]
+ %297 = load float* %296, align 4 ; [#uses=1]
+ store float %297, float* %295, align 4
+ %298 = sub nsw i32 3, %200 ; [#uses=3]
+ %299 = load float* %250, align 4 ; [#uses=1]
+ %300 = load float* %226, align 4 ; [#uses=2]
+ %301 = fsub float %299, %300 ; [#uses=2]
+ %302 = load float* %247, align 4 ; [#uses=1]
+ %303 = load float* %223, align 4 ; [#uses=2]
+ %304 = fsub float %302, %303 ; [#uses=2]
+ %305 = load float* %244, align 4 ; [#uses=1]
+ %306 = load float* %220, align 4 ; [#uses=2]
+ %307 = fsub float %305, %306 ; [#uses=2]
+ %308 = load float* %238, align 4 ; [#uses=1]
+ %309 = fsub float %308, %300 ; [#uses=2]
+ %310 = load float* %235, align 4 ; [#uses=1]
+ %311 = fsub float %310, %303 ; [#uses=2]
+ %312 = load float* %232, align 4 ; [#uses=1]
+ %313 = fsub float %312, %306 ; [#uses=2]
+ %314 = fmul float %313, %304 ; [#uses=1]
+ %315 = fmul float %311, %307 ; [#uses=1]
+ %316 = fsub float %314, %315 ; [#uses=3]
+ %317 = fmul float %309, %307 ; [#uses=1]
+ %318 = fmul float %313, %301 ; [#uses=1]
+ %319 = fsub float %317, %318 ; [#uses=3]
+ %320 = fmul float %311, %301 ; [#uses=1]
+ %321 = fmul float %309, %304 ; [#uses=1]
+ %322 = fsub float %320, %321 ; [#uses=3]
+ %323 = fmul float %322, %322 ; [#uses=1]
+ %324 = fmul float %319, %319 ; [#uses=1]
+ %325 = fadd float %323, %324 ; [#uses=1]
+ %326 = fmul float %316, %316 ; [#uses=1]
+ %327 = fadd float %325, %326 ; [#uses=1]
+ %328 = call float @sqrtf(float %327) nounwind readonly ; [#uses=1]
+ %329 = fdiv float 1.000000e+00, %328 ; [#uses=3]
+ %330 = fmul float %322, %329 ; [#uses=15]
+ %331 = fmul float %319, %329 ; [#uses=15]
+ %332 = fmul float %316, %329 ; [#uses=15]
+ %333 = fsub float %294, %270 ; [#uses=2]
+ %334 = fsub float %291, %267 ; [#uses=2]
+ %335 = fsub float %288, %264 ; [#uses=2]
+ %336 = fsub float %282, %270 ; [#uses=2]
+ %337 = fsub float %279, %267 ; [#uses=2]
+ %338 = fsub float %276, %264 ; [#uses=2]
+ %339 = fmul float %338, %334 ; [#uses=1]
+ %340 = fmul float %337, %335 ; [#uses=1]
+ %341 = fsub float %339, %340 ; [#uses=3]
+ %342 = fmul float %336, %335 ; [#uses=1]
+ %343 = fmul float %338, %333 ; [#uses=1]
+ %344 = fsub float %342, %343 ; [#uses=3]
+ %345 = fmul float %337, %333 ; [#uses=1]
+ %346 = fmul float %336, %334 ; [#uses=1]
+ %347 = fsub float %345, %346 ; [#uses=3]
+ %348 = fmul float %347, %347 ; [#uses=1]
+ %349 = fmul float %344, %344 ; [#uses=1]
+ %350 = fadd float %348, %349 ; [#uses=1]
+ %351 = fmul float %341, %341 ; [#uses=1]
+ %352 = fadd float %350, %351 ; [#uses=1]
+ %353 = call float @sqrtf(float %352) nounwind readonly ; [#uses=1]
+ %354 = fdiv float 1.000000e+00, %353 ; [#uses=3]
+ %355 = fmul float %347, %354 ; [#uses=5]
+ %356 = fmul float %344, %354 ; [#uses=5]
+ %357 = fmul float %341, %354 ; [#uses=5]
+ %358 = fmul float %216, %216 ; [#uses=1]
+ %359 = fmul float %211, %211 ; [#uses=1]
+ %360 = fadd float %358, %359 ; [#uses=1]
+ %361 = fmul float %206, %206 ; [#uses=1]
+ %362 = fadd float %360, %361 ; [#uses=1]
+ %363 = call float @sqrtf(float %362) nounwind readonly ; [#uses=1]
+ %364 = fdiv float 1.000000e+00, %363 ; [#uses=3]
+ %365 = fmul float %216, %364 ; [#uses=4]
+ %366 = fmul float %211, %364 ; [#uses=4]
+ %367 = fmul float %206, %364 ; [#uses=4]
+ %368 = fmul float %365, %331 ; [#uses=1]
+ %369 = fmul float %366, %330 ; [#uses=1]
+ %370 = fsub float %368, %369 ; [#uses=3]
+ %371 = fmul float %367, %330 ; [#uses=1]
+ %372 = fmul float %365, %332 ; [#uses=1]
+ %373 = fsub float %371, %372 ; [#uses=3]
+ %374 = fmul float %366, %332 ; [#uses=1]
+ %375 = fmul float %367, %331 ; [#uses=1]
+ %376 = fsub float %374, %375 ; [#uses=3]
+ %377 = fmul float %376, %376 ; [#uses=1]
+ %378 = fmul float %373, %373 ; [#uses=1]
+ %379 = fadd float %377, %378 ; [#uses=1]
+ %380 = fmul float %370, %370 ; [#uses=1]
+ %381 = fadd float %379, %380 ; [#uses=1]
+ %382 = call float @sqrtf(float %381) nounwind readonly ; [#uses=1]
+ %383 = fdiv float 1.000000e+00, %382 ; [#uses=3]
+ %384 = fmul float %376, %383 ; [#uses=3]
+ %385 = fmul float %373, %383 ; [#uses=3]
+ %386 = fmul float %370, %383 ; [#uses=3]
+ %387 = load %struct.btQuadWord** %56, align 4 ; [#uses=24]
+ %388 = getelementptr inbounds %struct.btQuadWord* %387, i32 %298, i32 0, i32 2 ; [#uses=1]
+ %389 = load float* %388, align 4 ; [#uses=1]
+ %390 = getelementptr inbounds %struct.btQuadWord* %387, i32 %198, i32 0, i32 2 ; [#uses=1]
+ %391 = load float* %390, align 4 ; [#uses=1]
+ %392 = fsub float %389, %391 ; [#uses=1]
+ %393 = getelementptr inbounds %struct.btQuadWord* %387, i32 %298, i32 0, i32 1 ; [#uses=1]
+ %394 = load float* %393, align 4 ; [#uses=1]
+ %395 = getelementptr inbounds %struct.btQuadWord* %387, i32 %198, i32 0, i32 1 ; [#uses=1]
+ %396 = load float* %395, align 4 ; [#uses=1]
+ %397 = fsub float %394, %396 ; [#uses=1]
+ %398 = getelementptr inbounds %struct.btQuadWord* %387, i32 %298, i32 0, i32 0 ; [#uses=1]
+ %399 = load float* %398, align 4 ; [#uses=1]
+ %400 = getelementptr inbounds %struct.btQuadWord* %387, i32 %198, i32 0, i32 0 ; [#uses=1]
+ %401 = load float* %400, align 4 ; [#uses=1]
+ %402 = fsub float %399, %401 ; [#uses=1]
+ %403 = fmul float %384, %402 ; [#uses=1]
+ %404 = fmul float %385, %397 ; [#uses=1]
+ %405 = fadd float %403, %404 ; [#uses=1]
+ %406 = fmul float %386, %392 ; [#uses=1]
+ %407 = fadd float %405, %406 ; [#uses=1]
+ %408 = fcmp olt float %407, 0.000000e+00 ; [#uses=1]
+ br i1 %408, label %bb22, label %bb23
+
+bb22: ; preds = %invcont
+ %409 = fmul float %384, -1.000000e+00 ; [#uses=1]
+ %410 = fmul float %385, -1.000000e+00 ; [#uses=1]
+ %411 = fmul float %386, -1.000000e+00 ; [#uses=1]
+ br label %bb23
+
+bb23: ; preds = %bb22, %invcont
+ %edgeCrossA.0.0.0 = phi float [ %409, %bb22 ], [ %384, %invcont ] ; [#uses=5]
+ %edgeCrossA.0.1.0 = phi float [ %410, %bb22 ], [ %385, %invcont ] ; [#uses=5]
+ %edgeCrossA.0.2.0 = phi float [ %411, %bb22 ], [ %386, %invcont ] ; [#uses=5]
+ %412 = fmul float %365, %356 ; [#uses=1]
+ %413 = fmul float %366, %355 ; [#uses=1]
+ %414 = fsub float %412, %413 ; [#uses=3]
+ %415 = fmul float %367, %355 ; [#uses=1]
+ %416 = fmul float %365, %357 ; [#uses=1]
+ %417 = fsub float %415, %416 ; [#uses=3]
+ %418 = fmul float %366, %357 ; [#uses=1]
+ %419 = fmul float %367, %356 ; [#uses=1]
+ %420 = fsub float %418, %419 ; [#uses=3]
+ %421 = fmul float %420, %420 ; [#uses=1]
+ %422 = fmul float %417, %417 ; [#uses=1]
+ %423 = fadd float %421, %422 ; [#uses=1]
+ %424 = fmul float %414, %414 ; [#uses=1]
+ %425 = fadd float %423, %424 ; [#uses=1]
+ %426 = call float @sqrtf(float %425) nounwind readonly ; [#uses=1]
+ %427 = fdiv float 1.000000e+00, %426 ; [#uses=3]
+ %428 = fmul float %420, %427 ; [#uses=3]
+ %429 = fmul float %417, %427 ; [#uses=3]
+ %430 = fmul float %414, %427 ; [#uses=3]
+ %431 = fsub float %294, %282 ; [#uses=1]
+ %432 = fsub float %291, %279 ; [#uses=1]
+ %433 = fsub float %288, %276 ; [#uses=1]
+ %434 = fmul float %428, %433 ; [#uses=1]
+ %435 = fmul float %429, %432 ; [#uses=1]
+ %436 = fadd float %434, %435 ; [#uses=1]
+ %437 = fmul float %430, %431 ; [#uses=1]
+ %438 = fadd float %436, %437 ; [#uses=1]
+ %439 = fcmp olt float %438, 0.000000e+00 ; [#uses=1]
+ br i1 %439, label %bb26, label %bb27
+
+bb26: ; preds = %bb23
+ %440 = fmul float %428, -1.000000e+00 ; [#uses=1]
+ %441 = fmul float %429, -1.000000e+00 ; [#uses=1]
+ %442 = fmul float %430, -1.000000e+00 ; [#uses=1]
+ br label %bb27
+
+bb27: ; preds = %bb26, %bb23
+ %edgeCrossB.0.0.0 = phi float [ %440, %bb26 ], [ %428, %bb23 ] ; [#uses=5]
+ %edgeCrossB.0.1.0 = phi float [ %441, %bb26 ], [ %429, %bb23 ] ; [#uses=5]
+ %edgeCrossB.0.2.0 = phi float [ %442, %bb26 ], [ %430, %bb23 ] ; [#uses=5]
+ %443 = fmul float %edgeCrossA.0.0.0, %edgeCrossB.0.1.0 ; [#uses=1]
+ %444 = fmul float %edgeCrossA.0.1.0, %edgeCrossB.0.0.0 ; [#uses=1]
+ %445 = fsub float %443, %444 ; [#uses=3]
+ %446 = fmul float %edgeCrossA.0.2.0, %edgeCrossB.0.0.0 ; [#uses=1]
+ %447 = fmul float %edgeCrossA.0.0.0, %edgeCrossB.0.2.0 ; [#uses=1]
+ %448 = fsub float %446, %447 ; [#uses=3]
+ %449 = fmul float %edgeCrossA.0.1.0, %edgeCrossB.0.2.0 ; [#uses=1]
+ %450 = fmul float %edgeCrossA.0.2.0, %edgeCrossB.0.1.0 ; [#uses=1]
+ %451 = fsub float %449, %450 ; [#uses=3]
+ %452 = fmul float %451, %451 ; [#uses=1]
+ %453 = fmul float %448, %448 ; [#uses=1]
+ %454 = fadd float %452, %453 ; [#uses=1]
+ %455 = fmul float %445, %445 ; [#uses=1]
+ %456 = fadd float %454, %455 ; [#uses=2]
+ %457 = load %struct.btTriangleInfoMap** %51, align 4 ; [#uses=1]
+ %458 = getelementptr inbounds %struct.btTriangleInfoMap* %457, i32 0, i32 3 ; [#uses=1]
+ %459 = load float* %458, align 4 ; [#uses=1]
+ %460 = fcmp ogt float %459, %456 ; [#uses=1]
+ br i1 %460, label %bb36, label %bb29
+
+bb29: ; preds = %bb27
+ %461 = call float @sqrtf(float %456) nounwind readonly ; [#uses=1]
+ %462 = fdiv float 1.000000e+00, %461 ; [#uses=3]
+ %463 = fmul float %451, %462 ; [#uses=2]
+ %464 = fmul float %448, %462 ; [#uses=2]
+ %465 = fmul float %445, %462 ; [#uses=2]
+ %466 = fmul float %463, %edgeCrossA.0.1.0 ; [#uses=1]
+ %467 = fmul float %464, %edgeCrossA.0.0.0 ; [#uses=1]
+ %468 = fsub float %466, %467 ; [#uses=3]
+ %469 = fmul float %465, %edgeCrossA.0.0.0 ; [#uses=1]
+ %470 = fmul float %463, %edgeCrossA.0.2.0 ; [#uses=1]
+ %471 = fsub float %469, %470 ; [#uses=3]
+ %472 = fmul float %464, %edgeCrossA.0.2.0 ; [#uses=1]
+ %473 = fmul float %465, %edgeCrossA.0.1.0 ; [#uses=1]
+ %474 = fsub float %472, %473 ; [#uses=3]
+ %475 = fmul float %474, %474 ; [#uses=1]
+ %476 = fmul float %471, %471 ; [#uses=1]
+ %477 = fadd float %475, %476 ; [#uses=1]
+ %478 = fmul float %468, %468 ; [#uses=1]
+ %479 = fadd float %477, %478 ; [#uses=1]
+ %480 = call float @sqrtf(float %479) nounwind readonly ; [#uses=1]
+ %481 = fdiv float 1.000000e+00, %480 ; [#uses=3]
+ %482 = fmul float %474, %481 ; [#uses=1]
+ %483 = fmul float %471, %481 ; [#uses=1]
+ %484 = fmul float %468, %481 ; [#uses=1]
+ %485 = fmul float %edgeCrossB.0.0.0, %edgeCrossA.0.0.0 ; [#uses=1]
+ %486 = fmul float %edgeCrossB.0.1.0, %edgeCrossA.0.1.0 ; [#uses=1]
+ %487 = fadd float %485, %486 ; [#uses=1]
+ %488 = fmul float %edgeCrossB.0.2.0, %edgeCrossA.0.2.0 ; [#uses=1]
+ %489 = fadd float %487, %488 ; [#uses=1]
+ %490 = fmul float %edgeCrossB.0.0.0, %482 ; [#uses=1]
+ %491 = fmul float %edgeCrossB.0.1.0, %483 ; [#uses=1]
+ %492 = fadd float %490, %491 ; [#uses=1]
+ %493 = fmul float %edgeCrossB.0.2.0, %484 ; [#uses=1]
+ %494 = fadd float %492, %493 ; [#uses=1]
+ %495 = call float @atan2f(float %494, float %489) nounwind readonly ; [#uses=1]
+ %496 = fsub float 0x400921FB60000000, %495 ; [#uses=2]
+ %497 = fmul float %330, %edgeCrossB.0.0.0 ; [#uses=1]
+ %498 = fmul float %331, %edgeCrossB.0.1.0 ; [#uses=1]
+ %499 = fadd float %497, %498 ; [#uses=1]
+ %500 = fmul float %332, %edgeCrossB.0.2.0 ; [#uses=1]
+ %501 = fadd float %499, %500 ; [#uses=1]
+ %502 = fcmp olt float %501, 0.000000e+00 ; [#uses=2]
+ %503 = zext i1 %502 to i8 ; [#uses=2]
+ br i1 %502, label %bb36, label %bb32
+
+bb32: ; preds = %bb29
+ %504 = fsub float -0.000000e+00, %496 ; [#uses=1]
+ br label %bb36
+
+bb36: ; preds = %bb32, %bb29, %bb27
+ %correctedAngle.0 = phi float [ 0.000000e+00, %bb27 ], [ %504, %bb32 ], [ %496, %bb29 ] ; [#uses=6]
+ %isConvex.0 = phi i8 [ 0, %bb27 ], [ %503, %bb32 ], [ %503, %bb29 ] ; [#uses=3]
+ switch i32 %200, label %bb79 [
+ i32 1, label %invcont43
+ i32 2, label %invcont55
+ i32 3, label %invcont68
+ ]
+
+invcont43: ; preds = %bb36
+ %505 = getelementptr inbounds %struct.btQuadWord* %387, i32 0, i32 0, i32 2 ; [#uses=1]
+ %506 = load float* %505, align 4 ; [#uses=1]
+ %507 = getelementptr inbounds %struct.btQuadWord* %387, i32 1, i32 0, i32 2 ; [#uses=1]
+ %508 = load float* %507, align 4 ; [#uses=1]
+ %509 = fsub float %506, %508 ; [#uses=3]
+ %510 = getelementptr inbounds %struct.btQuadWord* %387, i32 0, i32 0, i32 1 ; [#uses=1]
+ %511 = load float* %510, align 4 ; [#uses=1]
+ %512 = getelementptr inbounds %struct.btQuadWord* %387, i32 1, i32 0, i32 1 ; [#uses=1]
+ %513 = load float* %512, align 4 ; [#uses=1]
+ %514 = fsub float %511, %513 ; [#uses=3]
+ %515 = getelementptr inbounds %struct.btQuadWord* %387, i32 0, i32 0, i32 0 ; [#uses=1]
+ %516 = load float* %515, align 4 ; [#uses=1]
+ %517 = getelementptr inbounds %struct.btQuadWord* %387, i32 1, i32 0, i32 0 ; [#uses=1]
+ %518 = load float* %517, align 4 ; [#uses=1]
+ %519 = fsub float %516, %518 ; [#uses=3]
+ %520 = fmul float %519, %519 ; [#uses=1]
+ %521 = fmul float %514, %514 ; [#uses=1]
+ %522 = fadd float %520, %521 ; [#uses=1]
+ %523 = fmul float %509, %509 ; [#uses=1]
+ %524 = fadd float %522, %523 ; [#uses=1]
+ %525 = call float @sqrtf(float %524) nounwind readonly ; [#uses=1]
+ %526 = fmul float %correctedAngle.0, -5.000000e-01 ; [#uses=2]
+ %527 = call float @sinf(float %526) nounwind readonly ; [#uses=1]
+ %528 = fdiv float %527, %525 ; [#uses=3]
+ %529 = call float @cosf(float %526) nounwind readonly ; [#uses=6]
+ %530 = fmul float %509, %528 ; [#uses=4]
+ %531 = fmul float %514, %528 ; [#uses=4]
+ %532 = fmul float %519, %528 ; [#uses=3]
+ %533 = fsub float -0.000000e+00, %532 ; [#uses=4]
+ %534 = fmul float %330, %533 ; [#uses=1]
+ %535 = fmul float %531, %331 ; [#uses=1]
+ %536 = fsub float %534, %535 ; [#uses=1]
+ %537 = fmul float %530, %332 ; [#uses=1]
+ %538 = fsub float %536, %537 ; [#uses=3]
+ %539 = fmul float %529, %332 ; [#uses=1]
+ %540 = fmul float %532, %331 ; [#uses=1]
+ %541 = fadd float %539, %540 ; [#uses=1]
+ %542 = fmul float %531, %330 ; [#uses=1]
+ %543 = fsub float %541, %542 ; [#uses=3]
+ %544 = fmul float %529, %331 ; [#uses=1]
+ %545 = fmul float %530, %330 ; [#uses=1]
+ %546 = fadd float %544, %545 ; [#uses=1]
+ %547 = fmul float %532, %332 ; [#uses=1]
+ %548 = fsub float %546, %547 ; [#uses=3]
+ %549 = fmul float %529, %330 ; [#uses=1]
+ %550 = fmul float %531, %332 ; [#uses=1]
+ %551 = fadd float %549, %550 ; [#uses=1]
+ %552 = fmul float %530, %331 ; [#uses=1]
+ %553 = fsub float %551, %552 ; [#uses=3]
+ %554 = fsub float -0.000000e+00, %530 ; [#uses=3]
+ %555 = fsub float -0.000000e+00, %531 ; [#uses=3]
+ %556 = fmul float %538, %554 ; [#uses=1]
+ %557 = fmul float %543, %529 ; [#uses=1]
+ %558 = fadd float %556, %557 ; [#uses=1]
+ %559 = fmul float %553, %555 ; [#uses=1]
+ %560 = fadd float %558, %559 ; [#uses=1]
+ %561 = fmul float %548, %533 ; [#uses=1]
+ %562 = fsub float %560, %561 ; [#uses=1]
+ %563 = fmul float %538, %555 ; [#uses=1]
+ %564 = fmul float %548, %529 ; [#uses=1]
+ %565 = fadd float %563, %564 ; [#uses=1]
+ %566 = fmul float %543, %533 ; [#uses=1]
+ %567 = fadd float %565, %566 ; [#uses=1]
+ %568 = fmul float %553, %554 ; [#uses=1]
+ %569 = fsub float %567, %568 ; [#uses=1]
+ %570 = fmul float %538, %533 ; [#uses=1]
+ %571 = fmul float %553, %529 ; [#uses=1]
+ %572 = fadd float %570, %571 ; [#uses=1]
+ %573 = fmul float %548, %554 ; [#uses=1]
+ %574 = fadd float %572, %573 ; [#uses=1]
+ %575 = fmul float %543, %555 ; [#uses=1]
+ %576 = fsub float %574, %575 ; [#uses=1]
+ %577 = fmul float %576, %355 ; [#uses=1]
+ %578 = fmul float %569, %356 ; [#uses=1]
+ %579 = fadd float %577, %578 ; [#uses=1]
+ %580 = fmul float %562, %357 ; [#uses=1]
+ %581 = fadd float %579, %580 ; [#uses=1]
+ %582 = fcmp olt float %581, 0.000000e+00 ; [#uses=1]
+ br i1 %582, label %bb44, label %bb45
+
+bb44: ; preds = %invcont43
+ %583 = getelementptr inbounds %struct.btTriangleInfo* %info.0, i32 0, i32 0 ; [#uses=2]
+ %584 = load i32* %583, align 4 ; [#uses=1]
+ %585 = or i32 %584, 8 ; [#uses=1]
+ store i32 %585, i32* %583, align 4
+ br label %bb45
+
+bb45: ; preds = %bb44, %invcont43
+ %586 = fsub float -0.000000e+00, %correctedAngle.0 ; [#uses=1]
+ %587 = getelementptr inbounds %struct.btTriangleInfo* %info.0, i32 0, i32 1 ; [#uses=1]
+ store float %586, float* %587, align 4
+ %toBool46 = icmp eq i8 %isConvex.0, 0 ; [#uses=1]
+ br i1 %toBool46, label %bb79, label %bb47
+
+bb47: ; preds = %bb45
+ %588 = getelementptr inbounds %struct.btTriangleInfo* %info.0, i32 0, i32 0 ; [#uses=2]
+ %589 = load i32* %588, align 4 ; [#uses=1]
+ %590 = or i32 %589, 1 ; [#uses=1]
+ store i32 %590, i32* %588, align 4
+ br label %bb79
+
+invcont55: ; preds = %bb36
+ %591 = getelementptr inbounds %struct.btQuadWord* %387, i32 2, i32 0, i32 2 ; [#uses=1]
+ %592 = load float* %591, align 4 ; [#uses=1]
+ %593 = getelementptr inbounds %struct.btQuadWord* %387, i32 0, i32 0, i32 2 ; [#uses=1]
+ %594 = load float* %593, align 4 ; [#uses=1]
+ %595 = fsub float %592, %594 ; [#uses=3]
+ %596 = getelementptr inbounds %struct.btQuadWord* %387, i32 2, i32 0, i32 1 ; [#uses=1]
+ %597 = load float* %596, align 4 ; [#uses=1]
+ %598 = getelementptr inbounds %struct.btQuadWord* %387, i32 0, i32 0, i32 1 ; [#uses=1]
+ %599 = load float* %598, align 4 ; [#uses=1]
+ %600 = fsub float %597, %599 ; [#uses=3]
+ %601 = getelementptr inbounds %struct.btQuadWord* %387, i32 2, i32 0, i32 0 ; [#uses=1]
+ %602 = load float* %601, align 4 ; [#uses=1]
+ %603 = getelementptr inbounds %struct.btQuadWord* %387, i32 0, i32 0, i32 0 ; [#uses=1]
+ %604 = load float* %603, align 4 ; [#uses=1]
+ %605 = fsub float %602, %604 ; [#uses=3]
+ %606 = fmul float %605, %605 ; [#uses=1]
+ %607 = fmul float %600, %600 ; [#uses=1]
+ %608 = fadd float %606, %607 ; [#uses=1]
+ %609 = fmul float %595, %595 ; [#uses=1]
+ %610 = fadd float %608, %609 ; [#uses=1]
+ %611 = call float @sqrtf(float %610) nounwind readonly ; [#uses=1]
+ %612 = fmul float %correctedAngle.0, -5.000000e-01 ; [#uses=2]
+ %613 = call float @sinf(float %612) nounwind readonly ; [#uses=1]
+ %614 = fdiv float %613, %611 ; [#uses=3]
+ %615 = call float @cosf(float %612) nounwind readonly ; [#uses=6]
+ %616 = fmul float %595, %614 ; [#uses=4]
+ %617 = fmul float %600, %614 ; [#uses=4]
+ %618 = fmul float %605, %614 ; [#uses=3]
+ %619 = fsub float -0.000000e+00, %618 ; [#uses=4]
+ %620 = fmul float %330, %619 ; [#uses=1]
+ %621 = fmul float %617, %331 ; [#uses=1]
+ %622 = fsub float %620, %621 ; [#uses=1]
+ %623 = fmul float %616, %332 ; [#uses=1]
+ %624 = fsub float %622, %623 ; [#uses=3]
+ %625 = fmul float %615, %332 ; [#uses=1]
+ %626 = fmul float %618, %331 ; [#uses=1]
+ %627 = fadd float %625, %626 ; [#uses=1]
+ %628 = fmul float %617, %330 ; [#uses=1]
+ %629 = fsub float %627, %628 ; [#uses=3]
+ %630 = fmul float %615, %331 ; [#uses=1]
+ %631 = fmul float %616, %330 ; [#uses=1]
+ %632 = fadd float %630, %631 ; [#uses=1]
+ %633 = fmul float %618, %332 ; [#uses=1]
+ %634 = fsub float %632, %633 ; [#uses=3]
+ %635 = fmul float %615, %330 ; [#uses=1]
+ %636 = fmul float %617, %332 ; [#uses=1]
+ %637 = fadd float %635, %636 ; [#uses=1]
+ %638 = fmul float %616, %331 ; [#uses=1]
+ %639 = fsub float %637, %638 ; [#uses=3]
+ %640 = fsub float -0.000000e+00, %616 ; [#uses=3]
+ %641 = fsub float -0.000000e+00, %617 ; [#uses=3]
+ %642 = fmul float %624, %640 ; [#uses=1]
+ %643 = fmul float %629, %615 ; [#uses=1]
+ %644 = fadd float %642, %643 ; [#uses=1]
+ %645 = fmul float %639, %641 ; [#uses=1]
+ %646 = fadd float %644, %645 ; [#uses=1]
+ %647 = fmul float %634, %619 ; [#uses=1]
+ %648 = fsub float %646, %647 ; [#uses=1]
+ %649 = fmul float %624, %641 ; [#uses=1]
+ %650 = fmul float %634, %615 ; [#uses=1]
+ %651 = fadd float %649, %650 ; [#uses=1]
+ %652 = fmul float %629, %619 ; [#uses=1]
+ %653 = fadd float %651, %652 ; [#uses=1]
+ %654 = fmul float %639, %640 ; [#uses=1]
+ %655 = fsub float %653, %654 ; [#uses=1]
+ %656 = fmul float %624, %619 ; [#uses=1]
+ %657 = fmul float %639, %615 ; [#uses=1]
+ %658 = fadd float %656, %657 ; [#uses=1]
+ %659 = fmul float %634, %640 ; [#uses=1]
+ %660 = fadd float %658, %659 ; [#uses=1]
+ %661 = fmul float %629, %641 ; [#uses=1]
+ %662 = fsub float %660, %661 ; [#uses=1]
+ %663 = fmul float %662, %355 ; [#uses=1]
+ %664 = fmul float %655, %356 ; [#uses=1]
+ %665 = fadd float %663, %664 ; [#uses=1]
+ %666 = fmul float %648, %357 ; [#uses=1]
+ %667 = fadd float %665, %666 ; [#uses=1]
+ %668 = fcmp olt float %667, 0.000000e+00 ; [#uses=1]
+ br i1 %668, label %bb57, label %bb58
+
+bb57: ; preds = %invcont55
+ %669 = getelementptr inbounds %struct.btTriangleInfo* %info.0, i32 0, i32 0 ; [#uses=2]
+ %670 = load i32* %669, align 4 ; [#uses=1]
+ %671 = or i32 %670, 32 ; [#uses=1]
+ store i32 %671, i32* %669, align 4
+ br label %bb58
+
+bb58: ; preds = %bb57, %invcont55
+ %672 = fsub float -0.000000e+00, %correctedAngle.0 ; [#uses=1]
+ %673 = getelementptr inbounds %struct.btTriangleInfo* %info.0, i32 0, i32 3 ; [#uses=1]
+ store float %672, float* %673, align 4
+ %toBool59 = icmp eq i8 %isConvex.0, 0 ; [#uses=1]
+ br i1 %toBool59, label %bb79, label %bb60
+
+bb60: ; preds = %bb58
+ %674 = getelementptr inbounds %struct.btTriangleInfo* %info.0, i32 0, i32 0 ; [#uses=2]
+ %675 = load i32* %674, align 4 ; [#uses=1]
+ %676 = or i32 %675, 4 ; [#uses=1]
+ store i32 %676, i32* %674, align 4
+ br label %bb79
+
+invcont68: ; preds = %bb36
+ %677 = getelementptr inbounds %struct.btQuadWord* %387, i32 1, i32 0, i32 2 ; [#uses=1]
+ %678 = load float* %677, align 4 ; [#uses=1]
+ %679 = getelementptr inbounds %struct.btQuadWord* %387, i32 2, i32 0, i32 2 ; [#uses=1]
+ %680 = load float* %679, align 4 ; [#uses=1]
+ %681 = fsub float %678, %680 ; [#uses=3]
+ %682 = getelementptr inbounds %struct.btQuadWord* %387, i32 1, i32 0, i32 1 ; [#uses=1]
+ %683 = load float* %682, align 4 ; [#uses=1]
+ %684 = getelementptr inbounds %struct.btQuadWord* %387, i32 2, i32 0, i32 1 ; [#uses=1]
+ %685 = load float* %684, align 4 ; [#uses=1]
+ %686 = fsub float %683, %685 ; [#uses=3]
+ %687 = getelementptr inbounds %struct.btQuadWord* %387, i32 1, i32 0, i32 0 ; [#uses=1]
+ %688 = load float* %687, align 4 ; [#uses=1]
+ %689 = getelementptr inbounds %struct.btQuadWord* %387, i32 2, i32 0, i32 0 ; [#uses=1]
+ %690 = load float* %689, align 4 ; [#uses=1]
+ %691 = fsub float %688, %690 ; [#uses=3]
+ %692 = fmul float %691, %691 ; [#uses=1]
+ %693 = fmul float %686, %686 ; [#uses=1]
+ %694 = fadd float %692, %693 ; [#uses=1]
+ %695 = fmul float %681, %681 ; [#uses=1]
+ %696 = fadd float %694, %695 ; [#uses=1]
+ %697 = call float @sqrtf(float %696) nounwind readonly ; [#uses=1]
+ %698 = fmul float %correctedAngle.0, -5.000000e-01 ; [#uses=2]
+ %699 = call float @sinf(float %698) nounwind readonly ; [#uses=1]
+ %700 = fdiv float %699, %697 ; [#uses=3]
+ %701 = call float @cosf(float %698) nounwind readonly ; [#uses=6]
+ %702 = fmul float %681, %700 ; [#uses=4]
+ %703 = fmul float %686, %700 ; [#uses=4]
+ %704 = fmul float %691, %700 ; [#uses=3]
+ %705 = fsub float -0.000000e+00, %704 ; [#uses=4]
+ %706 = fmul float %330, %705 ; [#uses=1]
+ %707 = fmul float %703, %331 ; [#uses=1]
+ %708 = fsub float %706, %707 ; [#uses=1]
+ %709 = fmul float %702, %332 ; [#uses=1]
+ %710 = fsub float %708, %709 ; [#uses=3]
+ %711 = fmul float %701, %332 ; [#uses=1]
+ %712 = fmul float %704, %331 ; [#uses=1]
+ %713 = fadd float %711, %712 ; [#uses=1]
+ %714 = fmul float %703, %330 ; [#uses=1]
+ %715 = fsub float %713, %714 ; [#uses=3]
+ %716 = fmul float %701, %331 ; [#uses=1]
+ %717 = fmul float %702, %330 ; [#uses=1]
+ %718 = fadd float %716, %717 ; [#uses=1]
+ %719 = fmul float %704, %332 ; [#uses=1]
+ %720 = fsub float %718, %719 ; [#uses=3]
+ %721 = fmul float %701, %330 ; [#uses=1]
+ %722 = fmul float %703, %332 ; [#uses=1]
+ %723 = fadd float %721, %722 ; [#uses=1]
+ %724 = fmul float %702, %331 ; [#uses=1]
+ %725 = fsub float %723, %724 ; [#uses=3]
+ %726 = fsub float -0.000000e+00, %702 ; [#uses=3]
+ %727 = fsub float -0.000000e+00, %703 ; [#uses=3]
+ %728 = fmul float %710, %726 ; [#uses=1]
+ %729 = fmul float %715, %701 ; [#uses=1]
+ %730 = fadd float %728, %729 ; [#uses=1]
+ %731 = fmul float %725, %727 ; [#uses=1]
+ %732 = fadd float %730, %731 ; [#uses=1]
+ %733 = fmul float %720, %705 ; [#uses=1]
+ %734 = fsub float %732, %733 ; [#uses=1]
+ %735 = fmul float %710, %727 ; [#uses=1]
+ %736 = fmul float %720, %701 ; [#uses=1]
+ %737 = fadd float %735, %736 ; [#uses=1]
+ %738 = fmul float %715, %705 ; [#uses=1]
+ %739 = fadd float %737, %738 ; [#uses=1]
+ %740 = fmul float %725, %726 ; [#uses=1]
+ %741 = fsub float %739, %740 ; [#uses=1]
+ %742 = fmul float %710, %705 ; [#uses=1]
+ %743 = fmul float %725, %701 ; [#uses=1]
+ %744 = fadd float %742, %743 ; [#uses=1]
+ %745 = fmul float %720, %726 ; [#uses=1]
+ %746 = fadd float %744, %745 ; [#uses=1]
+ %747 = fmul float %715, %727 ; [#uses=1]
+ %748 = fsub float %746, %747 ; [#uses=1]
+ %749 = fmul float %748, %355 ; [#uses=1]
+ %750 = fmul float %741, %356 ; [#uses=1]
+ %751 = fadd float %749, %750 ; [#uses=1]
+ %752 = fmul float %734, %357 ; [#uses=1]
+ %753 = fadd float %751, %752 ; [#uses=1]
+ %754 = fcmp olt float %753, 0.000000e+00 ; [#uses=1]
+ br i1 %754, label %bb70, label %bb71
+
+bb70: ; preds = %invcont68
+ %755 = getelementptr inbounds %struct.btTriangleInfo* %info.0, i32 0, i32 0 ; [#uses=2]
+ %756 = load i32* %755, align 4 ; [#uses=1]
+ %757 = or i32 %756, 16 ; [#uses=1]
+ store i32 %757, i32* %755, align 4
+ br label %bb71
+
+bb71: ; preds = %bb70, %invcont68
+ %758 = fsub float -0.000000e+00, %correctedAngle.0 ; [#uses=1]
+ %759 = getelementptr inbounds %struct.btTriangleInfo* %info.0, i32 0, i32 2 ; [#uses=1]
+ store float %758, float* %759, align 4
+ %toBool72 = icmp eq i8 %isConvex.0, 0 ; [#uses=1]
+ br i1 %toBool72, label %bb79, label %bb73
+
+bb73: ; preds = %bb71
+ %760 = getelementptr inbounds %struct.btTriangleInfo* %info.0, i32 0, i32 0 ; [#uses=2]
+ %761 = load i32* %760, align 4 ; [#uses=1]
+ %762 = or i32 %761, 2 ; [#uses=1]
+ store i32 %762, i32* %760, align 4
+ br label %bb79
+
+bb79: ; preds = %bb73, %bb71, %bb60, %bb58, %bb47, %bb45, %bb36
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %260, align 8
+ %763 = getelementptr inbounds %struct.btTriangleShape* %tB, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %763)
+ to label %bb86 unwind label %ppad
+
+invcont84: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb86: ; preds = %bb79
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %218, align 8
+ %764 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %764)
+ ret void
+
+return: ; preds = %bb12, %bb9, %bb6, %bb2, %bb1, %bb
+ ret void
+
+lpad98: ; preds = %ppad
+ %eh_ptr99 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select101 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr99, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb79, %bb19
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select89 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %218, align 8
+ %765 = getelementptr inbounds %struct.btTriangleShape* %tA, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %765)
+ to label %invcont84 unwind label %lpad98
+}
+
+; [#uses=0]
+define void @_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_(%struct.btQuadWord* nocapture %point, %struct.btQuadWord* nocapture %line0, %struct.btQuadWord* nocapture %line1, %struct.btQuadWord* nocapture %nearestPoint) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %line1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %line0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fsub float %1, %3 ; [#uses=4]
+ %5 = getelementptr inbounds %struct.btQuadWord* %line1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %line0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fsub float %6, %8 ; [#uses=4]
+ %10 = getelementptr inbounds %struct.btQuadWord* %line1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %line0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=4]
+ %14 = fsub float %11, %13 ; [#uses=4]
+ %15 = fmul float %14, %14 ; [#uses=1]
+ %16 = fmul float %9, %9 ; [#uses=1]
+ %17 = fadd float %15, %16 ; [#uses=1]
+ %18 = fmul float %4, %4 ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=2]
+ %20 = fcmp olt float %19, 0x3E80000000000000 ; [#uses=1]
+ br i1 %20, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %21 = getelementptr inbounds %struct.btQuadWord* %nearestPoint, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %13, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %nearestPoint, i32 0, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %7, align 4 ; [#uses=1]
+ store float %23, float* %22, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %nearestPoint, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %2, align 4 ; [#uses=1]
+ store float %25, float* %24, align 4
+ %26 = getelementptr inbounds %struct.btQuadWord* %nearestPoint, i32 0, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %line0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %29 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fsub float %30, %3 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fsub float %33, %8 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = fsub float %36, %13 ; [#uses=1]
+ %38 = fmul float %37, %14 ; [#uses=1]
+ %39 = fmul float %34, %9 ; [#uses=1]
+ %40 = fadd float %38, %39 ; [#uses=1]
+ %41 = fmul float %31, %4 ; [#uses=1]
+ %42 = fadd float %40, %41 ; [#uses=1]
+ %43 = fdiv float %42, %19 ; [#uses=3]
+ %44 = fcmp olt float %43, 0.000000e+00 ; [#uses=1]
+ br i1 %44, label %bb5, label %bb3
+
+bb3: ; preds = %bb1
+ %45 = fcmp ogt float %43, 1.000000e+00 ; [#uses=1]
+ br i1 %45, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3, %bb1
+ %delta.0 = phi float [ 1.000000e+00, %bb4 ], [ %43, %bb3 ], [ 0.000000e+00, %bb1 ] ; [#uses=3]
+ %46 = fmul float %4, %delta.0 ; [#uses=1]
+ %47 = fmul float %9, %delta.0 ; [#uses=1]
+ %48 = fmul float %14, %delta.0 ; [#uses=1]
+ %49 = fadd float %3, %46 ; [#uses=1]
+ %50 = fadd float %8, %47 ; [#uses=1]
+ %51 = fadd float %13, %48 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btQuadWord* %nearestPoint, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %51, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btQuadWord* %nearestPoint, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %50, float* %53, align 4
+ %54 = getelementptr inbounds %struct.btQuadWord* %nearestPoint, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %49, float* %54, align 4
+ %55 = getelementptr inbounds %struct.btQuadWord* %nearestPoint, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %55, align 4
+ ret void
+}
+
+; [#uses=3]
+define zeroext i8 @_Z13btClampNormalRK9btVector3S1_S1_fRS_(%struct.btQuadWord* nocapture %edge, %struct.btQuadWord* nocapture %tri_normal_org, %struct.btQuadWord* nocapture %localContactNormalOnB, float %correctedEdgeAngle, %struct.btQuadWord* nocapture %clampedLocalNormal) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %tri_normal_org, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btQuadWord* %tri_normal_org, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = getelementptr inbounds %struct.btQuadWord* %tri_normal_org, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btQuadWord* %edge, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=8]
+ %8 = fmul float %7, %3 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %edge, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=8]
+ %11 = fmul float %10, %1 ; [#uses=1]
+ %12 = fsub float %8, %11 ; [#uses=3]
+ %13 = getelementptr inbounds %struct.btQuadWord* %edge, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=8]
+ %15 = fmul float %14, %1 ; [#uses=1]
+ %16 = fmul float %7, %5 ; [#uses=1]
+ %17 = fsub float %15, %16 ; [#uses=3]
+ %18 = fmul float %10, %5 ; [#uses=1]
+ %19 = fmul float %14, %3 ; [#uses=1]
+ %20 = fsub float %18, %19 ; [#uses=3]
+ %21 = fmul float %20, %20 ; [#uses=1]
+ %22 = fmul float %17, %17 ; [#uses=1]
+ %23 = fadd float %21, %22 ; [#uses=1]
+ %24 = fmul float %12, %12 ; [#uses=1]
+ %25 = fadd float %23, %24 ; [#uses=1]
+ %26 = tail call float @sqrtf(float %25) nounwind readonly ; [#uses=1]
+ %27 = fdiv float 1.000000e+00, %26 ; [#uses=3]
+ %28 = fmul float %20, %27 ; [#uses=1]
+ %29 = fmul float %17, %27 ; [#uses=1]
+ %30 = fmul float %12, %27 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=8]
+ %33 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=8]
+ %35 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=8]
+ %37 = fmul float %32, %1 ; [#uses=1]
+ %38 = fmul float %34, %3 ; [#uses=1]
+ %39 = fadd float %37, %38 ; [#uses=1]
+ %40 = fmul float %36, %5 ; [#uses=1]
+ %41 = fadd float %39, %40 ; [#uses=1]
+ %42 = fmul float %32, %28 ; [#uses=1]
+ %43 = fmul float %34, %29 ; [#uses=1]
+ %44 = fadd float %42, %43 ; [#uses=1]
+ %45 = fmul float %36, %30 ; [#uses=1]
+ %46 = fadd float %44, %45 ; [#uses=1]
+ %47 = tail call float @atan2f(float %46, float %41) nounwind readonly ; [#uses=4]
+ %48 = fcmp olt float %correctedEdgeAngle, 0.000000e+00 ; [#uses=1]
+ %49 = fcmp olt float %47, %correctedEdgeAngle ; [#uses=1]
+ %or.cond = and i1 %48, %49 ; [#uses=1]
+ br i1 %or.cond, label %bb1, label %bb2
+
+bb1: ; preds = %entry
+ %50 = fsub float %correctedEdgeAngle, %47 ; [#uses=1]
+ %51 = fmul float %7, %7 ; [#uses=1]
+ %52 = fmul float %10, %10 ; [#uses=1]
+ %53 = fadd float %51, %52 ; [#uses=1]
+ %54 = fmul float %14, %14 ; [#uses=1]
+ %55 = fadd float %53, %54 ; [#uses=1]
+ %56 = tail call float @sqrtf(float %55) nounwind readonly ; [#uses=1]
+ %57 = fmul float %50, 5.000000e-01 ; [#uses=2]
+ %58 = tail call float @sinf(float %57) nounwind readonly ; [#uses=1]
+ %59 = fdiv float %58, %56 ; [#uses=3]
+ %60 = tail call float @cosf(float %57) nounwind readonly ; [#uses=5]
+ %61 = fmul float %14, %59 ; [#uses=4]
+ %62 = fmul float %10, %59 ; [#uses=5]
+ %63 = fmul float %7, %59 ; [#uses=6]
+ %64 = fmul float %63, %63 ; [#uses=1]
+ %65 = fmul float %62, %62 ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=1]
+ %67 = fmul float %61, %61 ; [#uses=1]
+ %68 = fadd float %66, %67 ; [#uses=1]
+ %69 = fmul float %60, %60 ; [#uses=1]
+ %70 = fadd float %68, %69 ; [#uses=1]
+ %71 = fdiv float 2.000000e+00, %70 ; [#uses=3]
+ %72 = fmul float %63, %71 ; [#uses=2]
+ %73 = fmul float %62, %71 ; [#uses=3]
+ %74 = fmul float %61, %71 ; [#uses=4]
+ %75 = fmul float %60, %72 ; [#uses=2]
+ %76 = fmul float %60, %73 ; [#uses=2]
+ %77 = fmul float %60, %74 ; [#uses=2]
+ %78 = fmul float %63, %72 ; [#uses=2]
+ %79 = fmul float %63, %73 ; [#uses=2]
+ %80 = fmul float %63, %74 ; [#uses=2]
+ %81 = fmul float %62, %73 ; [#uses=2]
+ %82 = fmul float %62, %74 ; [#uses=2]
+ %83 = fmul float %61, %74 ; [#uses=2]
+ %84 = fadd float %78, %81 ; [#uses=1]
+ %85 = fsub float 1.000000e+00, %84 ; [#uses=1]
+ %86 = fadd float %82, %75 ; [#uses=1]
+ %87 = fsub float %80, %76 ; [#uses=1]
+ %88 = fsub float %82, %75 ; [#uses=1]
+ %89 = fadd float %78, %83 ; [#uses=1]
+ %90 = fsub float 1.000000e+00, %89 ; [#uses=1]
+ %91 = fadd float %79, %77 ; [#uses=1]
+ %92 = fadd float %80, %76 ; [#uses=1]
+ %93 = fsub float %79, %77 ; [#uses=1]
+ %94 = fadd float %81, %83 ; [#uses=1]
+ %95 = fsub float 1.000000e+00, %94 ; [#uses=1]
+ %96 = fmul float %87, %32 ; [#uses=1]
+ %97 = fmul float %86, %34 ; [#uses=1]
+ %98 = fadd float %96, %97 ; [#uses=1]
+ %99 = fmul float %85, %36 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %91, %32 ; [#uses=1]
+ %102 = fmul float %90, %34 ; [#uses=1]
+ %103 = fadd float %101, %102 ; [#uses=1]
+ %104 = fmul float %88, %36 ; [#uses=1]
+ %105 = fadd float %103, %104 ; [#uses=1]
+ %106 = fmul float %95, %32 ; [#uses=1]
+ %107 = fmul float %93, %34 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fmul float %92, %36 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %110, float* %111, align 4
+ %112 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %105, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %100, float* %113, align 4
+ %114 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %114, align 4
+ ret i8 1
+
+bb2: ; preds = %entry
+ %.not = fcmp oge float %correctedEdgeAngle, 0.000000e+00 ; [#uses=1]
+ %115 = fcmp ogt float %47, %correctedEdgeAngle ; [#uses=1]
+ %or.cond14 = and i1 %.not, %115 ; [#uses=1]
+ br i1 %or.cond14, label %bb4, label %bb11
+
+bb4: ; preds = %bb2
+ %116 = fsub float %correctedEdgeAngle, %47 ; [#uses=1]
+ %117 = fmul float %7, %7 ; [#uses=1]
+ %118 = fmul float %10, %10 ; [#uses=1]
+ %119 = fadd float %117, %118 ; [#uses=1]
+ %120 = fmul float %14, %14 ; [#uses=1]
+ %121 = fadd float %119, %120 ; [#uses=1]
+ %122 = tail call float @sqrtf(float %121) nounwind readonly ; [#uses=1]
+ %123 = fmul float %116, 5.000000e-01 ; [#uses=2]
+ %124 = tail call float @sinf(float %123) nounwind readonly ; [#uses=1]
+ %125 = fdiv float %124, %122 ; [#uses=3]
+ %126 = tail call float @cosf(float %123) nounwind readonly ; [#uses=5]
+ %127 = fmul float %14, %125 ; [#uses=4]
+ %128 = fmul float %10, %125 ; [#uses=5]
+ %129 = fmul float %7, %125 ; [#uses=6]
+ %130 = fmul float %129, %129 ; [#uses=1]
+ %131 = fmul float %128, %128 ; [#uses=1]
+ %132 = fadd float %130, %131 ; [#uses=1]
+ %133 = fmul float %127, %127 ; [#uses=1]
+ %134 = fadd float %132, %133 ; [#uses=1]
+ %135 = fmul float %126, %126 ; [#uses=1]
+ %136 = fadd float %134, %135 ; [#uses=1]
+ %137 = fdiv float 2.000000e+00, %136 ; [#uses=3]
+ %138 = fmul float %129, %137 ; [#uses=2]
+ %139 = fmul float %128, %137 ; [#uses=3]
+ %140 = fmul float %127, %137 ; [#uses=4]
+ %141 = fmul float %126, %138 ; [#uses=2]
+ %142 = fmul float %126, %139 ; [#uses=2]
+ %143 = fmul float %126, %140 ; [#uses=2]
+ %144 = fmul float %129, %138 ; [#uses=2]
+ %145 = fmul float %129, %139 ; [#uses=2]
+ %146 = fmul float %129, %140 ; [#uses=2]
+ %147 = fmul float %128, %139 ; [#uses=2]
+ %148 = fmul float %128, %140 ; [#uses=2]
+ %149 = fmul float %127, %140 ; [#uses=2]
+ %150 = fadd float %144, %147 ; [#uses=1]
+ %151 = fsub float 1.000000e+00, %150 ; [#uses=1]
+ %152 = fadd float %148, %141 ; [#uses=1]
+ %153 = fsub float %146, %142 ; [#uses=1]
+ %154 = fsub float %148, %141 ; [#uses=1]
+ %155 = fadd float %144, %149 ; [#uses=1]
+ %156 = fsub float 1.000000e+00, %155 ; [#uses=1]
+ %157 = fadd float %145, %143 ; [#uses=1]
+ %158 = fadd float %146, %142 ; [#uses=1]
+ %159 = fsub float %145, %143 ; [#uses=1]
+ %160 = fadd float %147, %149 ; [#uses=1]
+ %161 = fsub float 1.000000e+00, %160 ; [#uses=1]
+ %162 = fmul float %153, %32 ; [#uses=1]
+ %163 = fmul float %152, %34 ; [#uses=1]
+ %164 = fadd float %162, %163 ; [#uses=1]
+ %165 = fmul float %151, %36 ; [#uses=1]
+ %166 = fadd float %164, %165 ; [#uses=1]
+ %167 = fmul float %157, %32 ; [#uses=1]
+ %168 = fmul float %156, %34 ; [#uses=1]
+ %169 = fadd float %167, %168 ; [#uses=1]
+ %170 = fmul float %154, %36 ; [#uses=1]
+ %171 = fadd float %169, %170 ; [#uses=1]
+ %172 = fmul float %161, %32 ; [#uses=1]
+ %173 = fmul float %159, %34 ; [#uses=1]
+ %174 = fadd float %172, %173 ; [#uses=1]
+ %175 = fmul float %158, %36 ; [#uses=1]
+ %176 = fadd float %174, %175 ; [#uses=1]
+ %177 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %176, float* %177, align 4
+ %178 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %171, float* %178, align 4
+ %179 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %166, float* %179, align 4
+ %180 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %180, align 4
+ ret i8 1
+
+bb11: ; preds = %bb2
+ ret i8 0
+}
+
+; [#uses=0]
+define void @_Z28btAdjustInternalEdgeContactsR15btManifoldPointPK17btCollisionObjectS3_iii(%struct.btManifoldPoint* %cp, %struct.btCollisionObject* nocapture %colObj0, %struct.btCollisionObject* nocapture %colObj1, i32 %partId0, i32 %index0, i32 %normalAdjustFlags) {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %v0 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %v1 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %v2 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %localContactNormalOnB = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %edge = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %clampedLocalNormal = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %edge38 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %localContactNormalOnB73 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %clampedLocalNormal75 = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %edge96 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %localContactNormalOnB131 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %clampedLocalNormal133 = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %3 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 9 ; [#uses=1]
+ %4 = load %struct.btCollisionShape** %3, align 4 ; [#uses=12]
+ %5 = getelementptr inbounds %struct.btCollisionShape* %4, i32 0, i32 1 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = icmp eq i32 %6, 1 ; [#uses=1]
+ br i1 %7, label %bb, label %return
+
+bb: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 11 ; [#uses=1]
+ %9 = load %struct.btCollisionShape** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btCollisionShape* %9, i32 4, i32 2 ; [#uses=1]
+ %11 = load i8** %10, align 4 ; [#uses=13]
+ %12 = icmp eq i8* %11, null ; [#uses=1]
+ br i1 %12, label %return, label %bb1
+
+bb1: ; preds = %bb
+ %13 = shl i32 %partId0, 21 ; [#uses=1]
+ %14 = or i32 %13, %index0 ; [#uses=2]
+ %15 = shl i32 %index0, 15 ; [#uses=1]
+ %not.i.i.i = xor i32 %15, -1 ; [#uses=1]
+ %16 = add nsw i32 %14, %not.i.i.i ; [#uses=2]
+ %17 = ashr i32 %16, 10 ; [#uses=1]
+ %18 = xor i32 %17, %16 ; [#uses=1]
+ %19 = mul i32 %18, 9 ; [#uses=2]
+ %20 = ashr i32 %19, 6 ; [#uses=1]
+ %21 = xor i32 %20, %19 ; [#uses=2]
+ %22 = shl i32 %21, 11 ; [#uses=1]
+ %not2.i.i.i = xor i32 %22, -1 ; [#uses=1]
+ %23 = add nsw i32 %21, %not2.i.i.i ; [#uses=2]
+ %24 = ashr i32 %23, 16 ; [#uses=1]
+ %25 = xor i32 %24, %23 ; [#uses=1]
+ %26 = getelementptr inbounds i8* %11, i32 52 ; [#uses=1]
+ %27 = bitcast i8* %26 to i32* ; [#uses=1]
+ %28 = load i32* %27, align 4 ; [#uses=1]
+ %29 = add nsw i32 %28, -1 ; [#uses=1]
+ %30 = and i32 %29, %25 ; [#uses=2]
+ %31 = getelementptr inbounds i8* %11, i32 8 ; [#uses=1]
+ %32 = bitcast i8* %31 to i32* ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ %34 = icmp ugt i32 %33, %30 ; [#uses=1]
+ br i1 %34, label %bb1.i.i, label %return
+
+bb1.i.i: ; preds = %bb1
+ %35 = getelementptr inbounds i8* %11, i32 16 ; [#uses=1]
+ %36 = bitcast i8* %35 to i32** ; [#uses=1]
+ %37 = load i32** %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32* %37, i32 %30 ; [#uses=1]
+ %39 = getelementptr inbounds i8* %11, i32 76 ; [#uses=1]
+ %40 = bitcast i8* %39 to %struct.btHashInt** ; [#uses=1]
+ %41 = getelementptr inbounds i8* %11, i32 36 ; [#uses=1]
+ %42 = bitcast i8* %41 to i32** ; [#uses=1]
+ br label %bb3.i.i
+
+bb2.i.i: ; preds = %bb4.i.i
+ %43 = load i32** %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds i32* %43, i32 %index.0.i.i ; [#uses=1]
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb2.i.i, %bb1.i.i
+ %index.0.in.i.i = phi i32* [ %38, %bb1.i.i ], [ %44, %bb2.i.i ] ; [#uses=1]
+ %index.0.i.i = load i32* %index.0.in.i.i, align 4 ; [#uses=10]
+ %45 = icmp eq i32 %index.0.i.i, -1 ; [#uses=1]
+ br i1 %45, label %return, label %bb4.i.i
+
+bb4.i.i: ; preds = %bb3.i.i
+ %46 = load %struct.btHashInt** %40, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btHashInt* %46, i32 %index.0.i.i, i32 0 ; [#uses=1]
+ %48 = load i32* %47, align 4 ; [#uses=1]
+ %49 = icmp eq i32 %14, %48 ; [#uses=1]
+ br i1 %49, label %_ZN9btHashMapI9btHashInt14btTriangleInfoE4findERKS0_.exit, label %bb2.i.i
+
+_ZN9btHashMapI9btHashInt14btTriangleInfoE4findERKS0_.exit: ; preds = %bb4.i.i
+ %50 = getelementptr inbounds i8* %11, i32 56 ; [#uses=1]
+ %51 = bitcast i8* %50 to %struct.btTriangleInfo** ; [#uses=1]
+ %52 = load %struct.btTriangleInfo** %51, align 4 ; [#uses=7]
+ %53 = getelementptr inbounds %struct.btTriangleInfo* %52, i32 %index.0.i.i ; [#uses=1]
+ %54 = icmp eq %struct.btTriangleInfo* %53, null ; [#uses=1]
+ br i1 %54, label %return, label %bb2
+
+bb2: ; preds = %_ZN9btHashMapI9btHashInt14btTriangleInfoE4findERKS0_.exit
+ %55 = and i32 %normalAdjustFlags, 1 ; [#uses=1]
+ %56 = icmp eq i32 %55, 0 ; [#uses=1]
+ %iftmp.296.0 = select i1 %56, float 1.000000e+00, float -1.000000e+00 ; [#uses=12]
+ %57 = bitcast %struct.btCollisionShape* %4 to %struct.btTriangleShape* ; [#uses=3]
+ %58 = getelementptr inbounds %struct.btCollisionShape* %4, i32 0, i32 0 ; [#uses=3]
+ %59 = load i32 (...)*** %58, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds i32 (...)** %59, i32 24 ; [#uses=1]
+ %61 = load i32 (...)** %60, align 4 ; [#uses=1]
+ %62 = bitcast i32 (...)* %61 to void (%struct.btTriangleShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ call void %62(%struct.btTriangleShape* %57, i32 0, %struct.btQuadWord* %v0)
+ %63 = load i32 (...)*** %58, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds i32 (...)** %63, i32 24 ; [#uses=1]
+ %65 = load i32 (...)** %64, align 4 ; [#uses=1]
+ %66 = bitcast i32 (...)* %65 to void (%struct.btTriangleShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ call void %66(%struct.btTriangleShape* %57, i32 1, %struct.btQuadWord* %v1)
+ %67 = load i32 (...)*** %58, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds i32 (...)** %67, i32 24 ; [#uses=1]
+ %69 = load i32 (...)** %68, align 4 ; [#uses=1]
+ %70 = bitcast i32 (...)* %69 to void (%struct.btTriangleShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ call void %70(%struct.btTriangleShape* %57, i32 2, %struct.btQuadWord* %v2)
+ %71 = getelementptr inbounds %struct.btCollisionShape* %4, i32 7, i32 2 ; [#uses=1]
+ %72 = bitcast i8** %71 to float* ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btCollisionShape* %4, i32 5 ; [#uses=1]
+ %75 = bitcast %struct.btCollisionShape* %74 to float* ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=2]
+ %77 = fsub float %73, %76 ; [#uses=2]
+ %78 = getelementptr inbounds %struct.btCollisionShape* %4, i32 7, i32 1 ; [#uses=1]
+ %79 = bitcast i32* %78 to float* ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btCollisionShape* %4, i32 4, i32 2 ; [#uses=1]
+ %82 = bitcast i8** %81 to float* ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=2]
+ %84 = fsub float %80, %83 ; [#uses=2]
+ %85 = getelementptr inbounds %struct.btCollisionShape* %4, i32 7 ; [#uses=1]
+ %86 = bitcast %struct.btCollisionShape* %85 to float* ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btCollisionShape* %4, i32 4, i32 1 ; [#uses=1]
+ %89 = bitcast i32* %88 to float* ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=2]
+ %91 = fsub float %87, %90 ; [#uses=2]
+ %92 = getelementptr inbounds %struct.btCollisionShape* %4, i32 6, i32 1 ; [#uses=1]
+ %93 = bitcast i32* %92 to float* ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = fsub float %94, %76 ; [#uses=2]
+ %96 = getelementptr inbounds %struct.btCollisionShape* %4, i32 6 ; [#uses=1]
+ %97 = bitcast %struct.btCollisionShape* %96 to float* ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ %99 = fsub float %98, %83 ; [#uses=2]
+ %100 = getelementptr inbounds %struct.btCollisionShape* %4, i32 5, i32 2 ; [#uses=1]
+ %101 = bitcast i8** %100 to float* ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fsub float %102, %90 ; [#uses=2]
+ %104 = fmul float %103, %84 ; [#uses=1]
+ %105 = fmul float %99, %91 ; [#uses=1]
+ %106 = fsub float %104, %105 ; [#uses=3]
+ %107 = fmul float %95, %91 ; [#uses=1]
+ %108 = fmul float %103, %77 ; [#uses=1]
+ %109 = fsub float %107, %108 ; [#uses=3]
+ %110 = fmul float %99, %77 ; [#uses=1]
+ %111 = fmul float %95, %84 ; [#uses=1]
+ %112 = fsub float %110, %111 ; [#uses=3]
+ %113 = fmul float %112, %112 ; [#uses=1]
+ %114 = fmul float %109, %109 ; [#uses=1]
+ %115 = fadd float %113, %114 ; [#uses=1]
+ %116 = fmul float %106, %106 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=1]
+ %118 = call float @sqrtf(float %117) nounwind readonly ; [#uses=1]
+ %119 = fdiv float 1.000000e+00, %118 ; [#uses=3]
+ %120 = fmul float %112, %119 ; [#uses=22]
+ %121 = fmul float %109, %119 ; [#uses=22]
+ %122 = fmul float %106, %119 ; [#uses=22]
+ %123 = getelementptr inbounds %struct.btQuadWord* %v1, i32 0, i32 0, i32 2 ; [#uses=2]
+ %124 = load float* %123, align 8 ; [#uses=2]
+ %125 = getelementptr inbounds %struct.btQuadWord* %v0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %126 = load float* %125, align 8 ; [#uses=5]
+ %127 = fsub float %124, %126 ; [#uses=4]
+ %128 = getelementptr inbounds %struct.btQuadWord* %v1, i32 0, i32 0, i32 1 ; [#uses=2]
+ %129 = load float* %128, align 4 ; [#uses=2]
+ %130 = getelementptr inbounds %struct.btQuadWord* %v0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %131 = load float* %130, align 4 ; [#uses=5]
+ %132 = fsub float %129, %131 ; [#uses=4]
+ %133 = getelementptr inbounds %struct.btQuadWord* %v1, i32 0, i32 0, i32 0 ; [#uses=2]
+ %134 = load float* %133, align 8 ; [#uses=2]
+ %135 = getelementptr inbounds %struct.btQuadWord* %v0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %136 = load float* %135, align 8 ; [#uses=5]
+ %137 = fsub float %134, %136 ; [#uses=4]
+ %138 = fmul float %137, %137 ; [#uses=1]
+ %139 = fmul float %132, %132 ; [#uses=1]
+ %140 = fadd float %138, %139 ; [#uses=1]
+ %141 = fmul float %127, %127 ; [#uses=1]
+ %142 = fadd float %140, %141 ; [#uses=2]
+ %143 = fcmp olt float %142, 0x3E80000000000000 ; [#uses=1]
+ br i1 %143, label %bb.i172, label %bb1.i173
+
+bb.i172: ; preds = %bb2
+ %.phi.trans.insert = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %.pre = load float* %.phi.trans.insert, align 4 ; [#uses=1]
+ %.phi.trans.insert322 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %.pre323 = load float* %.phi.trans.insert322, align 4 ; [#uses=1]
+ %.phi.trans.insert324 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %.pre325 = load float* %.phi.trans.insert324, align 4 ; [#uses=1]
+ br label %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit178
+
+bb1.i173: ; preds = %bb2
+ %144 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=2]
+ %146 = fsub float %145, %126 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %148 = load float* %147, align 4 ; [#uses=2]
+ %149 = fsub float %148, %131 ; [#uses=1]
+ %150 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %151 = load float* %150, align 4 ; [#uses=2]
+ %152 = fsub float %151, %136 ; [#uses=1]
+ %153 = fmul float %152, %137 ; [#uses=1]
+ %154 = fmul float %149, %132 ; [#uses=1]
+ %155 = fadd float %153, %154 ; [#uses=1]
+ %156 = fmul float %146, %127 ; [#uses=1]
+ %157 = fadd float %155, %156 ; [#uses=1]
+ %158 = fdiv float %157, %142 ; [#uses=3]
+ %159 = fcmp olt float %158, 0.000000e+00 ; [#uses=1]
+ br i1 %159, label %bb5.i177, label %bb3.i174
+
+bb3.i174: ; preds = %bb1.i173
+ %160 = fcmp ogt float %158, 1.000000e+00 ; [#uses=1]
+ br i1 %160, label %bb4.i175, label %bb5.i177
+
+bb4.i175: ; preds = %bb3.i174
+ br label %bb5.i177
+
+bb5.i177: ; preds = %bb4.i175, %bb3.i174, %bb1.i173
+ %delta.0.i176 = phi float [ 1.000000e+00, %bb4.i175 ], [ %158, %bb3.i174 ], [ 0.000000e+00, %bb1.i173 ] ; [#uses=3]
+ %161 = fmul float %127, %delta.0.i176 ; [#uses=1]
+ %162 = fmul float %132, %delta.0.i176 ; [#uses=1]
+ %163 = fmul float %137, %delta.0.i176 ; [#uses=1]
+ %164 = fadd float %126, %161 ; [#uses=1]
+ %165 = fadd float %131, %162 ; [#uses=1]
+ %166 = fadd float %136, %163 ; [#uses=1]
+ %.pre344 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %.pre345 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %.pre347 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ br label %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit178
+
+_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit178: ; preds = %bb5.i177, %bb.i172
+ %.pre-phi348 = phi float* [ %.phi.trans.insert324, %bb.i172 ], [ %.pre347, %bb5.i177 ] ; [#uses=4]
+ %.pre-phi346 = phi float* [ %.phi.trans.insert322, %bb.i172 ], [ %.pre345, %bb5.i177 ] ; [#uses=4]
+ %.pre-phi = phi float* [ %.phi.trans.insert, %bb.i172 ], [ %.pre344, %bb5.i177 ] ; [#uses=4]
+ %167 = phi float [ %.pre325, %bb.i172 ], [ %145, %bb5.i177 ] ; [#uses=5]
+ %168 = phi float [ %.pre323, %bb.i172 ], [ %148, %bb5.i177 ] ; [#uses=5]
+ %169 = phi float [ %.pre, %bb.i172 ], [ %151, %bb5.i177 ] ; [#uses=5]
+ %nearest.0.0.2 = phi float [ %136, %bb.i172 ], [ %166, %bb5.i177 ] ; [#uses=1]
+ %nearest.0.1.2 = phi float [ %131, %bb.i172 ], [ %165, %bb5.i177 ] ; [#uses=1]
+ %nearest.0.2.2 = phi float [ %126, %bb.i172 ], [ %164, %bb5.i177 ] ; [#uses=1]
+ %170 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=12]
+ %171 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=12]
+ %172 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=12]
+ %173 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=12]
+ %174 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=12]
+ %175 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=12]
+ %176 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=12]
+ %177 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=12]
+ %178 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=12]
+ %179 = load float* %178, align 4 ; [#uses=1]
+ %180 = load float* %177, align 4 ; [#uses=1]
+ %181 = load float* %176, align 4 ; [#uses=1]
+ %182 = load float* %175, align 4 ; [#uses=1]
+ %183 = load float* %174, align 4 ; [#uses=1]
+ %184 = load float* %173, align 4 ; [#uses=1]
+ %185 = load float* %172, align 4 ; [#uses=1]
+ %186 = load float* %171, align 4 ; [#uses=1]
+ %187 = load float* %170, align 4 ; [#uses=1]
+ %188 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 4, i32 0, i32 0 ; [#uses=8]
+ %189 = load float* %188, align 4 ; [#uses=3]
+ %190 = fmul float %185, %189 ; [#uses=1]
+ %191 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 4, i32 0, i32 1 ; [#uses=8]
+ %192 = load float* %191, align 4 ; [#uses=3]
+ %193 = fmul float %186, %192 ; [#uses=1]
+ %194 = fadd float %190, %193 ; [#uses=1]
+ %195 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 4, i32 0, i32 2 ; [#uses=8]
+ %196 = load float* %195, align 4 ; [#uses=3]
+ %197 = fmul float %187, %196 ; [#uses=1]
+ %198 = fadd float %194, %197 ; [#uses=3]
+ %199 = fmul float %182, %189 ; [#uses=1]
+ %200 = fmul float %183, %192 ; [#uses=1]
+ %201 = fadd float %199, %200 ; [#uses=1]
+ %202 = fmul float %184, %196 ; [#uses=1]
+ %203 = fadd float %201, %202 ; [#uses=3]
+ %204 = fmul float %179, %189 ; [#uses=1]
+ %205 = fmul float %180, %192 ; [#uses=1]
+ %206 = fadd float %204, %205 ; [#uses=1]
+ %207 = fmul float %181, %196 ; [#uses=1]
+ %208 = fadd float %206, %207 ; [#uses=3]
+ %209 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB, i32 0, i32 0, i32 0 ; [#uses=4]
+ %210 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB, i32 0, i32 0, i32 1 ; [#uses=4]
+ %211 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB, i32 0, i32 0, i32 2 ; [#uses=4]
+ %212 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %212, align 4
+ %213 = fmul float %208, %208 ; [#uses=1]
+ %214 = fmul float %203, %203 ; [#uses=1]
+ %215 = fadd float %213, %214 ; [#uses=1]
+ %216 = fmul float %198, %198 ; [#uses=1]
+ %217 = fadd float %215, %216 ; [#uses=1]
+ %218 = call float @sqrtf(float %217) nounwind readonly ; [#uses=1]
+ %219 = fdiv float 1.000000e+00, %218 ; [#uses=3]
+ %220 = fmul float %208, %219 ; [#uses=3]
+ store float %220, float* %209, align 8
+ %221 = fmul float %203, %219 ; [#uses=3]
+ store float %221, float* %210, align 4
+ %222 = fmul float %198, %219 ; [#uses=3]
+ store float %222, float* %211, align 8
+ %223 = getelementptr inbounds %struct.btTriangleInfo* %52, i32 %index.0.i.i, i32 1 ; [#uses=1]
+ %224 = load float* %223, align 4 ; [#uses=4]
+ %225 = fcmp olt float %224, 0x401921FB60000000 ; [#uses=1]
+ br i1 %225, label %bb6, label %bb32
+
+bb6: ; preds = %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit178
+ %226 = fsub float %167, %nearest.0.2.2 ; [#uses=2]
+ %227 = fsub float %168, %nearest.0.1.2 ; [#uses=2]
+ %228 = fsub float %169, %nearest.0.0.2 ; [#uses=2]
+ %229 = fmul float %228, %228 ; [#uses=1]
+ %230 = fmul float %227, %227 ; [#uses=1]
+ %231 = fadd float %229, %230 ; [#uses=1]
+ %232 = fmul float %226, %226 ; [#uses=1]
+ %233 = fadd float %231, %232 ; [#uses=1]
+ %234 = call float @sqrtf(float %233) nounwind readonly ; [#uses=1]
+ %235 = getelementptr inbounds i8* %11, i32 96 ; [#uses=1]
+ %236 = bitcast i8* %235 to float* ; [#uses=1]
+ %237 = load float* %236, align 4 ; [#uses=1]
+ %238 = fcmp ogt float %237, %234 ; [#uses=1]
+ br i1 %238, label %bb7, label %bb32
+
+bb7: ; preds = %bb6
+ %239 = fsub float %126, %124 ; [#uses=4]
+ %240 = fsub float %131, %129 ; [#uses=4]
+ %241 = fsub float %136, %134 ; [#uses=4]
+ %242 = getelementptr inbounds %struct.btQuadWord* %edge, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %241, float* %242, align 8
+ %243 = getelementptr inbounds %struct.btQuadWord* %edge, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %240, float* %243, align 4
+ %244 = getelementptr inbounds %struct.btQuadWord* %edge, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %239, float* %244, align 8
+ %245 = getelementptr inbounds %struct.btQuadWord* %edge, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %245, align 4
+ %246 = fcmp oeq float %224, 0.000000e+00 ; [#uses=1]
+ br i1 %246, label %bb32, label %bb9
+
+bb9: ; preds = %bb7
+ %247 = getelementptr inbounds %struct.btTriangleInfo* %52, i32 %index.0.i.i, i32 0 ; [#uses=1]
+ %248 = load i32* %247, align 4 ; [#uses=2]
+ %249 = and i32 %248, 1 ; [#uses=1]
+ %toBool10 = icmp eq i32 %249, 0 ; [#uses=1]
+ %iftmp.297.0 = select i1 %toBool10, float -1.000000e+00, float 1.000000e+00 ; [#uses=6]
+ %250 = fmul float %122, %iftmp.297.0 ; [#uses=2]
+ %251 = fmul float %121, %iftmp.297.0 ; [#uses=2]
+ %252 = fmul float %120, %iftmp.297.0 ; [#uses=2]
+ %253 = fmul float %241, %241 ; [#uses=1]
+ %254 = fmul float %240, %240 ; [#uses=1]
+ %255 = fadd float %253, %254 ; [#uses=1]
+ %256 = fmul float %239, %239 ; [#uses=1]
+ %257 = fadd float %255, %256 ; [#uses=1]
+ %258 = call float @sqrtf(float %257) nounwind readonly ; [#uses=1]
+ %259 = fmul float %224, 5.000000e-01 ; [#uses=2]
+ %260 = call float @sinf(float %259) nounwind readonly ; [#uses=1]
+ %261 = fdiv float %260, %258 ; [#uses=3]
+ %262 = call float @cosf(float %259) nounwind readonly ; [#uses=6]
+ %263 = fmul float %239, %261 ; [#uses=4]
+ %264 = fmul float %240, %261 ; [#uses=4]
+ %265 = fmul float %241, %261 ; [#uses=3]
+ %266 = fsub float -0.000000e+00, %265 ; [#uses=4]
+ %267 = fmul float %120, %266 ; [#uses=1]
+ %268 = fmul float %264, %121 ; [#uses=1]
+ %269 = fsub float %267, %268 ; [#uses=1]
+ %270 = fmul float %263, %122 ; [#uses=1]
+ %271 = fsub float %269, %270 ; [#uses=3]
+ %272 = fmul float %262, %122 ; [#uses=1]
+ %273 = fmul float %265, %121 ; [#uses=1]
+ %274 = fadd float %272, %273 ; [#uses=1]
+ %275 = fmul float %264, %120 ; [#uses=1]
+ %276 = fsub float %274, %275 ; [#uses=3]
+ %277 = fmul float %262, %121 ; [#uses=1]
+ %278 = fmul float %263, %120 ; [#uses=1]
+ %279 = fadd float %277, %278 ; [#uses=1]
+ %280 = fmul float %265, %122 ; [#uses=1]
+ %281 = fsub float %279, %280 ; [#uses=3]
+ %282 = fmul float %262, %120 ; [#uses=1]
+ %283 = fmul float %264, %122 ; [#uses=1]
+ %284 = fadd float %282, %283 ; [#uses=1]
+ %285 = fmul float %263, %121 ; [#uses=1]
+ %286 = fsub float %284, %285 ; [#uses=3]
+ %287 = fsub float -0.000000e+00, %263 ; [#uses=3]
+ %288 = fsub float -0.000000e+00, %264 ; [#uses=3]
+ %289 = fmul float %271, %287 ; [#uses=1]
+ %290 = fmul float %276, %262 ; [#uses=1]
+ %291 = fadd float %289, %290 ; [#uses=1]
+ %292 = fmul float %286, %288 ; [#uses=1]
+ %293 = fadd float %291, %292 ; [#uses=1]
+ %294 = fmul float %281, %266 ; [#uses=1]
+ %295 = fsub float %293, %294 ; [#uses=2]
+ %296 = fmul float %271, %288 ; [#uses=1]
+ %297 = fmul float %281, %262 ; [#uses=1]
+ %298 = fadd float %296, %297 ; [#uses=1]
+ %299 = fmul float %276, %266 ; [#uses=1]
+ %300 = fadd float %298, %299 ; [#uses=1]
+ %301 = fmul float %286, %287 ; [#uses=1]
+ %302 = fsub float %300, %301 ; [#uses=2]
+ %303 = fmul float %271, %266 ; [#uses=1]
+ %304 = fmul float %286, %262 ; [#uses=1]
+ %305 = fadd float %303, %304 ; [#uses=1]
+ %306 = fmul float %281, %287 ; [#uses=1]
+ %307 = fadd float %305, %306 ; [#uses=1]
+ %308 = fmul float %276, %288 ; [#uses=1]
+ %309 = fsub float %307, %308 ; [#uses=2]
+ %310 = and i32 %248, 8 ; [#uses=1]
+ %311 = icmp eq i32 %310, 0 ; [#uses=1]
+ br i1 %311, label %bb15, label %bb14
+
+bb14: ; preds = %bb9
+ %312 = fmul float %309, -1.000000e+00 ; [#uses=1]
+ %313 = fmul float %302, -1.000000e+00 ; [#uses=1]
+ %314 = fmul float %295, -1.000000e+00 ; [#uses=1]
+ br label %bb15
+
+bb15: ; preds = %bb14, %bb9
+ %computedNormalB.0.0.0 = phi float [ %309, %bb9 ], [ %312, %bb14 ] ; [#uses=1]
+ %computedNormalB.0.1.0 = phi float [ %302, %bb9 ], [ %313, %bb14 ] ; [#uses=1]
+ %computedNormalB.0.2.0 = phi float [ %295, %bb9 ], [ %314, %bb14 ] ; [#uses=1]
+ %315 = fmul float %220, %252 ; [#uses=1]
+ %316 = fmul float %221, %251 ; [#uses=1]
+ %317 = fadd float %315, %316 ; [#uses=1]
+ %318 = fmul float %222, %250 ; [#uses=1]
+ %319 = fadd float %317, %318 ; [#uses=1]
+ %320 = getelementptr inbounds i8* %11, i32 84 ; [#uses=1]
+ %321 = bitcast i8* %320 to float* ; [#uses=1]
+ %322 = load float* %321, align 4 ; [#uses=2]
+ %323 = fcmp ule float %322, %319 ; [#uses=1]
+ br i1 %323, label %bb18, label %bb16
+
+bb16: ; preds = %bb15
+ %324 = fmul float %computedNormalB.0.0.0, %iftmp.297.0 ; [#uses=1]
+ %325 = fmul float %computedNormalB.0.1.0, %iftmp.297.0 ; [#uses=1]
+ %326 = fmul float %221, %325 ; [#uses=1]
+ %327 = fmul float %220, %324 ; [#uses=1]
+ %328 = fmul float %computedNormalB.0.2.0, %iftmp.297.0 ; [#uses=1]
+ %329 = fmul float %222, %328 ; [#uses=1]
+ %330 = fadd float %327, %326 ; [#uses=1]
+ %331 = fadd float %330, %329 ; [#uses=1]
+ %332 = fcmp ule float %322, %331 ; [#uses=1]
+ br i1 %332, label %bb18, label %bb32
+
+bb18: ; preds = %bb16, %bb15
+ %333 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %252, float* %333, align 8
+ %334 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %251, float* %334, align 4
+ %335 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %250, float* %335, align 8
+ %336 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %336, align 4
+ %337 = call zeroext i8 @_Z13btClampNormalRK9btVector3S1_S1_fRS_(%struct.btQuadWord* %edge, %struct.btQuadWord* %2, %struct.btQuadWord* %localContactNormalOnB, float %224, %struct.btQuadWord* %clampedLocalNormal) ; [#uses=1]
+ %toBool23 = icmp eq i8 %337, 0 ; [#uses=1]
+ br i1 %toBool23, label %bb32, label %bb24
+
+bb24: ; preds = %bb18
+ %338 = and i32 %normalAdjustFlags, 4 ; [#uses=1]
+ %339 = icmp eq i32 %338, 0 ; [#uses=1]
+ br i1 %339, label %bb25, label %bb24.bb30_crit_edge
+
+bb24.bb30_crit_edge: ; preds = %bb24
+ %.phi.trans.insert326 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre327 = load float* %.phi.trans.insert326, align 8 ; [#uses=1]
+ %.phi.trans.insert328 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre329 = load float* %.phi.trans.insert328, align 4 ; [#uses=1]
+ %.phi.trans.insert330 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre331 = load float* %.phi.trans.insert330, align 8 ; [#uses=1]
+ br label %bb30
+
+bb25: ; preds = %bb24
+ %340 = fmul float %122, %iftmp.296.0 ; [#uses=1]
+ %341 = fmul float %121, %iftmp.296.0 ; [#uses=1]
+ %342 = fmul float %120, %iftmp.296.0 ; [#uses=1]
+ %343 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %344 = load float* %343, align 8 ; [#uses=2]
+ %345 = fmul float %344, %342 ; [#uses=1]
+ %346 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %347 = load float* %346, align 4 ; [#uses=2]
+ %348 = fmul float %347, %341 ; [#uses=1]
+ %349 = fadd float %345, %348 ; [#uses=1]
+ %350 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %351 = load float* %350, align 8 ; [#uses=2]
+ %352 = fmul float %351, %340 ; [#uses=1]
+ %353 = fadd float %349, %352 ; [#uses=1]
+ %354 = fcmp ogt float %353, 0.000000e+00 ; [#uses=1]
+ br i1 %354, label %bb30, label %bb32
+
+bb30: ; preds = %bb25, %bb24.bb30_crit_edge
+ %355 = phi float [ %.pre331, %bb24.bb30_crit_edge ], [ %351, %bb25 ] ; [#uses=3]
+ %356 = phi float [ %.pre329, %bb24.bb30_crit_edge ], [ %347, %bb25 ] ; [#uses=3]
+ %357 = phi float [ %.pre327, %bb24.bb30_crit_edge ], [ %344, %bb25 ] ; [#uses=3]
+ %358 = load float* %176, align 4 ; [#uses=1]
+ %359 = fmul float %358, %357 ; [#uses=1]
+ %360 = load float* %173, align 4 ; [#uses=1]
+ %361 = fmul float %360, %356 ; [#uses=1]
+ %362 = fadd float %359, %361 ; [#uses=1]
+ %363 = load float* %170, align 4 ; [#uses=1]
+ %364 = fmul float %363, %355 ; [#uses=1]
+ %365 = fadd float %362, %364 ; [#uses=2]
+ %366 = load float* %177, align 4 ; [#uses=1]
+ %367 = fmul float %366, %357 ; [#uses=1]
+ %368 = load float* %174, align 4 ; [#uses=1]
+ %369 = fmul float %368, %356 ; [#uses=1]
+ %370 = fadd float %367, %369 ; [#uses=1]
+ %371 = load float* %171, align 4 ; [#uses=1]
+ %372 = fmul float %371, %355 ; [#uses=1]
+ %373 = fadd float %370, %372 ; [#uses=2]
+ %374 = load float* %178, align 4 ; [#uses=1]
+ %375 = fmul float %374, %357 ; [#uses=1]
+ %376 = load float* %175, align 4 ; [#uses=1]
+ %377 = fmul float %376, %356 ; [#uses=1]
+ %378 = fadd float %375, %377 ; [#uses=1]
+ %379 = load float* %172, align 4 ; [#uses=1]
+ %380 = fmul float %379, %355 ; [#uses=1]
+ %381 = fadd float %378, %380 ; [#uses=2]
+ store float %381, float* %188, align 4
+ store float %373, float* %191, align 4
+ store float %365, float* %195, align 4
+ %382 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %382, align 4
+ %383 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 5 ; [#uses=1]
+ %384 = load float* %383, align 4 ; [#uses=3]
+ %385 = fmul float %365, %384 ; [#uses=1]
+ %386 = fmul float %373, %384 ; [#uses=1]
+ %387 = fmul float %381, %384 ; [#uses=1]
+ %388 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %389 = load float* %388, align 4 ; [#uses=1]
+ %390 = fsub float %389, %385 ; [#uses=2]
+ %391 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %392 = load float* %391, align 4 ; [#uses=1]
+ %393 = fsub float %392, %386 ; [#uses=2]
+ %394 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %395 = load float* %394, align 4 ; [#uses=1]
+ %396 = fsub float %395, %387 ; [#uses=2]
+ %397 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %396, float* %397, align 4
+ %398 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %393, float* %398, align 4
+ %399 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %390, float* %399, align 4
+ %400 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %400, align 4
+ %401 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %402 = load float* %401, align 4 ; [#uses=1]
+ %403 = fsub float %390, %402 ; [#uses=3]
+ %404 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %405 = load float* %404, align 4 ; [#uses=1]
+ %406 = fsub float %393, %405 ; [#uses=3]
+ %407 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %408 = load float* %407, align 4 ; [#uses=1]
+ %409 = fsub float %396, %408 ; [#uses=3]
+ %410 = load float* %178, align 4 ; [#uses=1]
+ %411 = load float* %177, align 4 ; [#uses=1]
+ %412 = load float* %176, align 4 ; [#uses=1]
+ %413 = load float* %175, align 4 ; [#uses=1]
+ %414 = load float* %174, align 4 ; [#uses=1]
+ %415 = load float* %173, align 4 ; [#uses=1]
+ %416 = load float* %172, align 4 ; [#uses=1]
+ %417 = load float* %171, align 4 ; [#uses=1]
+ %418 = load float* %170, align 4 ; [#uses=1]
+ %419 = fmul float %416, %409 ; [#uses=1]
+ %420 = fmul float %417, %406 ; [#uses=1]
+ %421 = fadd float %419, %420 ; [#uses=1]
+ %422 = fmul float %418, %403 ; [#uses=1]
+ %423 = fadd float %421, %422 ; [#uses=1]
+ %424 = fmul float %413, %409 ; [#uses=1]
+ %425 = fmul float %414, %406 ; [#uses=1]
+ %426 = fadd float %424, %425 ; [#uses=1]
+ %427 = fmul float %415, %403 ; [#uses=1]
+ %428 = fadd float %426, %427 ; [#uses=1]
+ %429 = fmul float %410, %409 ; [#uses=1]
+ %430 = fmul float %411, %406 ; [#uses=1]
+ %431 = fadd float %429, %430 ; [#uses=1]
+ %432 = fmul float %412, %403 ; [#uses=1]
+ %433 = fadd float %431, %432 ; [#uses=1]
+ store float %433, float* %.pre-phi, align 4
+ store float %428, float* %.pre-phi346, align 4
+ store float %423, float* %.pre-phi348, align 4
+ %434 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %434, align 4
+ br label %bb32
+
+bb32: ; preds = %bb30, %bb25, %bb18, %bb16, %bb7, %bb6, %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit178
+ %isNearEdge.0 = phi i8 [ 1, %bb30 ], [ 0, %bb6 ], [ 0, %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit178 ], [ 1, %bb7 ], [ 1, %bb16 ], [ 1, %bb18 ], [ 1, %bb25 ] ; [#uses=2]
+ %numConcaveEdgeHits.0 = phi i32 [ 0, %bb30 ], [ 0, %bb6 ], [ 0, %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit178 ], [ 1, %bb7 ], [ 1, %bb16 ], [ 0, %bb18 ], [ 0, %bb25 ] ; [#uses=7]
+ %435 = getelementptr inbounds %struct.btQuadWord* %v2, i32 0, i32 0, i32 2 ; [#uses=2]
+ %436 = load float* %435, align 8 ; [#uses=2]
+ %437 = load float* %123, align 8 ; [#uses=5]
+ %438 = fsub float %436, %437 ; [#uses=4]
+ %439 = getelementptr inbounds %struct.btQuadWord* %v2, i32 0, i32 0, i32 1 ; [#uses=2]
+ %440 = load float* %439, align 4 ; [#uses=2]
+ %441 = load float* %128, align 4 ; [#uses=5]
+ %442 = fsub float %440, %441 ; [#uses=4]
+ %443 = getelementptr inbounds %struct.btQuadWord* %v2, i32 0, i32 0, i32 0 ; [#uses=2]
+ %444 = load float* %443, align 8 ; [#uses=2]
+ %445 = load float* %133, align 8 ; [#uses=5]
+ %446 = fsub float %444, %445 ; [#uses=4]
+ %447 = fmul float %446, %446 ; [#uses=1]
+ %448 = fmul float %442, %442 ; [#uses=1]
+ %449 = fadd float %447, %448 ; [#uses=1]
+ %450 = fmul float %438, %438 ; [#uses=1]
+ %451 = fadd float %449, %450 ; [#uses=2]
+ %452 = fcmp olt float %451, 0x3E80000000000000 ; [#uses=1]
+ br i1 %452, label %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit171, label %bb1.i166
+
+bb1.i166: ; preds = %bb32
+ %453 = fsub float %167, %437 ; [#uses=1]
+ %454 = fsub float %168, %441 ; [#uses=1]
+ %455 = fsub float %169, %445 ; [#uses=1]
+ %456 = fmul float %455, %446 ; [#uses=1]
+ %457 = fmul float %454, %442 ; [#uses=1]
+ %458 = fadd float %456, %457 ; [#uses=1]
+ %459 = fmul float %453, %438 ; [#uses=1]
+ %460 = fadd float %458, %459 ; [#uses=1]
+ %461 = fdiv float %460, %451 ; [#uses=3]
+ %462 = fcmp olt float %461, 0.000000e+00 ; [#uses=1]
+ br i1 %462, label %bb5.i170, label %bb3.i167
+
+bb3.i167: ; preds = %bb1.i166
+ %463 = fcmp ogt float %461, 1.000000e+00 ; [#uses=1]
+ br i1 %463, label %bb4.i168, label %bb5.i170
+
+bb4.i168: ; preds = %bb3.i167
+ br label %bb5.i170
+
+bb5.i170: ; preds = %bb4.i168, %bb3.i167, %bb1.i166
+ %delta.0.i169 = phi float [ 1.000000e+00, %bb4.i168 ], [ %461, %bb3.i167 ], [ 0.000000e+00, %bb1.i166 ] ; [#uses=3]
+ %464 = fmul float %438, %delta.0.i169 ; [#uses=1]
+ %465 = fmul float %442, %delta.0.i169 ; [#uses=1]
+ %466 = fmul float %446, %delta.0.i169 ; [#uses=1]
+ %467 = fadd float %437, %464 ; [#uses=1]
+ %468 = fadd float %441, %465 ; [#uses=1]
+ %469 = fadd float %445, %466 ; [#uses=1]
+ br label %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit171
+
+_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit171: ; preds = %bb5.i170, %bb32
+ %nearest.0.0.1 = phi float [ %469, %bb5.i170 ], [ %445, %bb32 ] ; [#uses=1]
+ %nearest.0.1.1 = phi float [ %468, %bb5.i170 ], [ %441, %bb32 ] ; [#uses=1]
+ %nearest.0.2.1 = phi float [ %467, %bb5.i170 ], [ %437, %bb32 ] ; [#uses=1]
+ %470 = getelementptr inbounds %struct.btTriangleInfo* %52, i32 %index.0.i.i, i32 2 ; [#uses=1]
+ %471 = load float* %470, align 4 ; [#uses=4]
+ %472 = fcmp olt float %471, 0x401921FB60000000 ; [#uses=1]
+ br i1 %472, label %bb33, label %bb90
+
+bb33: ; preds = %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit171
+ %473 = fsub float %167, %nearest.0.2.1 ; [#uses=2]
+ %474 = fsub float %168, %nearest.0.1.1 ; [#uses=2]
+ %475 = fsub float %169, %nearest.0.0.1 ; [#uses=2]
+ %476 = fmul float %475, %475 ; [#uses=1]
+ %477 = fmul float %474, %474 ; [#uses=1]
+ %478 = fadd float %476, %477 ; [#uses=1]
+ %479 = fmul float %473, %473 ; [#uses=1]
+ %480 = fadd float %478, %479 ; [#uses=1]
+ %481 = call float @sqrtf(float %480) nounwind readonly ; [#uses=1]
+ %482 = getelementptr inbounds i8* %11, i32 96 ; [#uses=1]
+ %483 = bitcast i8* %482 to float* ; [#uses=1]
+ %484 = load float* %483, align 4 ; [#uses=1]
+ %485 = fcmp ogt float %484, %481 ; [#uses=1]
+ br i1 %485, label %bb36, label %bb90
+
+bb36: ; preds = %bb33
+ %486 = fsub float %437, %436 ; [#uses=4]
+ %487 = fsub float %441, %440 ; [#uses=4]
+ %488 = fsub float %445, %444 ; [#uses=4]
+ %489 = getelementptr inbounds %struct.btQuadWord* %edge38, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %488, float* %489, align 8
+ %490 = getelementptr inbounds %struct.btQuadWord* %edge38, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %487, float* %490, align 4
+ %491 = getelementptr inbounds %struct.btQuadWord* %edge38, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %486, float* %491, align 8
+ %492 = getelementptr inbounds %struct.btQuadWord* %edge38, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %492, align 4
+ %493 = fcmp oeq float %471, 0.000000e+00 ; [#uses=1]
+ br i1 %493, label %bb39, label %bb40
+
+bb39: ; preds = %bb36
+ %494 = add nsw i32 %numConcaveEdgeHits.0, 1 ; [#uses=1]
+ br label %bb90
+
+bb40: ; preds = %bb36
+ %495 = getelementptr inbounds %struct.btTriangleInfo* %52, i32 %index.0.i.i, i32 0 ; [#uses=1]
+ %496 = load i32* %495, align 4 ; [#uses=2]
+ %.lobit163 = and i32 %496, 2 ; [#uses=1]
+ %toBool59 = icmp eq i32 %.lobit163, 0 ; [#uses=1]
+ %iftmp.301.0 = select i1 %toBool59, float -1.000000e+00, float 1.000000e+00 ; [#uses=6]
+ %497 = fmul float %122, %iftmp.301.0 ; [#uses=2]
+ %498 = fmul float %121, %iftmp.301.0 ; [#uses=2]
+ %499 = fmul float %120, %iftmp.301.0 ; [#uses=2]
+ %500 = fmul float %488, %488 ; [#uses=1]
+ %501 = fmul float %487, %487 ; [#uses=1]
+ %502 = fadd float %500, %501 ; [#uses=1]
+ %503 = fmul float %486, %486 ; [#uses=1]
+ %504 = fadd float %502, %503 ; [#uses=1]
+ %505 = call float @sqrtf(float %504) nounwind readonly ; [#uses=1]
+ %506 = fmul float %471, 5.000000e-01 ; [#uses=2]
+ %507 = call float @sinf(float %506) nounwind readonly ; [#uses=1]
+ %508 = fdiv float %507, %505 ; [#uses=3]
+ %509 = call float @cosf(float %506) nounwind readonly ; [#uses=6]
+ %510 = fmul float %486, %508 ; [#uses=4]
+ %511 = fmul float %487, %508 ; [#uses=4]
+ %512 = fmul float %488, %508 ; [#uses=3]
+ %513 = fsub float -0.000000e+00, %512 ; [#uses=4]
+ %514 = fmul float %120, %513 ; [#uses=1]
+ %515 = fmul float %511, %121 ; [#uses=1]
+ %516 = fsub float %514, %515 ; [#uses=1]
+ %517 = fmul float %510, %122 ; [#uses=1]
+ %518 = fsub float %516, %517 ; [#uses=3]
+ %519 = fmul float %509, %122 ; [#uses=1]
+ %520 = fmul float %512, %121 ; [#uses=1]
+ %521 = fadd float %519, %520 ; [#uses=1]
+ %522 = fmul float %511, %120 ; [#uses=1]
+ %523 = fsub float %521, %522 ; [#uses=3]
+ %524 = fmul float %509, %121 ; [#uses=1]
+ %525 = fmul float %510, %120 ; [#uses=1]
+ %526 = fadd float %524, %525 ; [#uses=1]
+ %527 = fmul float %512, %122 ; [#uses=1]
+ %528 = fsub float %526, %527 ; [#uses=3]
+ %529 = fmul float %509, %120 ; [#uses=1]
+ %530 = fmul float %511, %122 ; [#uses=1]
+ %531 = fadd float %529, %530 ; [#uses=1]
+ %532 = fmul float %510, %121 ; [#uses=1]
+ %533 = fsub float %531, %532 ; [#uses=3]
+ %534 = fsub float -0.000000e+00, %510 ; [#uses=3]
+ %535 = fsub float -0.000000e+00, %511 ; [#uses=3]
+ %536 = fmul float %518, %534 ; [#uses=1]
+ %537 = fmul float %523, %509 ; [#uses=1]
+ %538 = fadd float %536, %537 ; [#uses=1]
+ %539 = fmul float %533, %535 ; [#uses=1]
+ %540 = fadd float %538, %539 ; [#uses=1]
+ %541 = fmul float %528, %513 ; [#uses=1]
+ %542 = fsub float %540, %541 ; [#uses=2]
+ %543 = fmul float %518, %535 ; [#uses=1]
+ %544 = fmul float %528, %509 ; [#uses=1]
+ %545 = fadd float %543, %544 ; [#uses=1]
+ %546 = fmul float %523, %513 ; [#uses=1]
+ %547 = fadd float %545, %546 ; [#uses=1]
+ %548 = fmul float %533, %534 ; [#uses=1]
+ %549 = fsub float %547, %548 ; [#uses=2]
+ %550 = fmul float %518, %513 ; [#uses=1]
+ %551 = fmul float %533, %509 ; [#uses=1]
+ %552 = fadd float %550, %551 ; [#uses=1]
+ %553 = fmul float %528, %534 ; [#uses=1]
+ %554 = fadd float %552, %553 ; [#uses=1]
+ %555 = fmul float %523, %535 ; [#uses=1]
+ %556 = fsub float %554, %555 ; [#uses=2]
+ %557 = and i32 %496, 16 ; [#uses=1]
+ %558 = icmp eq i32 %557, 0 ; [#uses=1]
+ br i1 %558, label %bb64, label %bb63
+
+bb63: ; preds = %bb40
+ %559 = fmul float %556, -1.000000e+00 ; [#uses=1]
+ %560 = fmul float %549, -1.000000e+00 ; [#uses=1]
+ %561 = fmul float %542, -1.000000e+00 ; [#uses=1]
+ br label %bb64
+
+bb64: ; preds = %bb63, %bb40
+ %computedNormalB50.0.0.0 = phi float [ %559, %bb63 ], [ %556, %bb40 ] ; [#uses=1]
+ %computedNormalB50.0.1.0 = phi float [ %560, %bb63 ], [ %549, %bb40 ] ; [#uses=1]
+ %computedNormalB50.0.2.0 = phi float [ %561, %bb63 ], [ %542, %bb40 ] ; [#uses=1]
+ %562 = load float* %209, align 8 ; [#uses=2]
+ %563 = fmul float %562, %499 ; [#uses=1]
+ %564 = load float* %210, align 4 ; [#uses=2]
+ %565 = fmul float %564, %498 ; [#uses=1]
+ %566 = fadd float %563, %565 ; [#uses=1]
+ %567 = load float* %211, align 8 ; [#uses=2]
+ %568 = fmul float %567, %497 ; [#uses=1]
+ %569 = fadd float %566, %568 ; [#uses=1]
+ %570 = getelementptr inbounds i8* %11, i32 84 ; [#uses=1]
+ %571 = bitcast i8* %570 to float* ; [#uses=1]
+ %572 = load float* %571, align 4 ; [#uses=2]
+ %573 = fcmp ule float %572, %569 ; [#uses=1]
+ br i1 %573, label %bb67, label %bb65
+
+bb65: ; preds = %bb64
+ %574 = fmul float %computedNormalB50.0.0.0, %iftmp.301.0 ; [#uses=1]
+ %575 = fmul float %computedNormalB50.0.1.0, %iftmp.301.0 ; [#uses=1]
+ %576 = fmul float %564, %575 ; [#uses=1]
+ %577 = fmul float %562, %574 ; [#uses=1]
+ %578 = fmul float %computedNormalB50.0.2.0, %iftmp.301.0 ; [#uses=1]
+ %579 = fmul float %567, %578 ; [#uses=1]
+ %580 = fadd float %577, %576 ; [#uses=1]
+ %581 = fadd float %580, %579 ; [#uses=1]
+ %582 = fcmp ule float %572, %581 ; [#uses=1]
+ br i1 %582, label %bb67, label %bb70
+
+bb67: ; preds = %bb65, %bb64
+ %583 = load float* %178, align 4 ; [#uses=1]
+ %584 = load float* %177, align 4 ; [#uses=1]
+ %585 = load float* %176, align 4 ; [#uses=1]
+ %586 = load float* %175, align 4 ; [#uses=1]
+ %587 = load float* %174, align 4 ; [#uses=1]
+ %588 = load float* %173, align 4 ; [#uses=1]
+ %589 = load float* %172, align 4 ; [#uses=1]
+ %590 = load float* %171, align 4 ; [#uses=1]
+ %591 = load float* %170, align 4 ; [#uses=1]
+ %592 = load float* %188, align 4 ; [#uses=3]
+ %593 = fmul float %589, %592 ; [#uses=1]
+ %594 = load float* %191, align 4 ; [#uses=3]
+ %595 = fmul float %590, %594 ; [#uses=1]
+ %596 = fadd float %593, %595 ; [#uses=1]
+ %597 = load float* %195, align 4 ; [#uses=3]
+ %598 = fmul float %591, %597 ; [#uses=1]
+ %599 = fadd float %596, %598 ; [#uses=1]
+ %600 = fmul float %586, %592 ; [#uses=1]
+ %601 = fmul float %587, %594 ; [#uses=1]
+ %602 = fadd float %600, %601 ; [#uses=1]
+ %603 = fmul float %588, %597 ; [#uses=1]
+ %604 = fadd float %602, %603 ; [#uses=1]
+ %605 = fmul float %583, %592 ; [#uses=1]
+ %606 = fmul float %584, %594 ; [#uses=1]
+ %607 = fadd float %605, %606 ; [#uses=1]
+ %608 = fmul float %585, %597 ; [#uses=1]
+ %609 = fadd float %607, %608 ; [#uses=1]
+ %610 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB73, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %609, float* %610, align 8
+ %611 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB73, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %604, float* %611, align 4
+ %612 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB73, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %599, float* %612, align 8
+ %613 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB73, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %613, align 4
+ %614 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %499, float* %614, align 8
+ %615 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %498, float* %615, align 4
+ %616 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %497, float* %616, align 8
+ %617 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %617, align 4
+ %618 = call zeroext i8 @_Z13btClampNormalRK9btVector3S1_S1_fRS_(%struct.btQuadWord* %edge38, %struct.btQuadWord* %1, %struct.btQuadWord* %localContactNormalOnB73, float %471, %struct.btQuadWord* %clampedLocalNormal75) ; [#uses=1]
+ %toBool78 = icmp eq i8 %618, 0 ; [#uses=1]
+ br i1 %toBool78, label %bb90, label %bb79
+
+bb70: ; preds = %bb65
+ %619 = add nsw i32 %numConcaveEdgeHits.0, 1 ; [#uses=1]
+ br label %bb90
+
+bb79: ; preds = %bb67
+ %620 = and i32 %normalAdjustFlags, 4 ; [#uses=1]
+ %621 = icmp eq i32 %620, 0 ; [#uses=1]
+ br i1 %621, label %bb80, label %bb79.bb85_crit_edge
+
+bb79.bb85_crit_edge: ; preds = %bb79
+ %.phi.trans.insert332 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal75, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre333 = load float* %.phi.trans.insert332, align 8 ; [#uses=1]
+ %.phi.trans.insert334 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal75, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre335 = load float* %.phi.trans.insert334, align 4 ; [#uses=1]
+ %.phi.trans.insert336 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal75, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre337 = load float* %.phi.trans.insert336, align 8 ; [#uses=1]
+ br label %bb85
+
+bb80: ; preds = %bb79
+ %622 = fmul float %122, %iftmp.296.0 ; [#uses=1]
+ %623 = fmul float %121, %iftmp.296.0 ; [#uses=1]
+ %624 = fmul float %120, %iftmp.296.0 ; [#uses=1]
+ %625 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal75, i32 0, i32 0, i32 0 ; [#uses=1]
+ %626 = load float* %625, align 8 ; [#uses=2]
+ %627 = fmul float %626, %624 ; [#uses=1]
+ %628 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal75, i32 0, i32 0, i32 1 ; [#uses=1]
+ %629 = load float* %628, align 4 ; [#uses=2]
+ %630 = fmul float %629, %623 ; [#uses=1]
+ %631 = fadd float %627, %630 ; [#uses=1]
+ %632 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal75, i32 0, i32 0, i32 2 ; [#uses=1]
+ %633 = load float* %632, align 8 ; [#uses=2]
+ %634 = fmul float %633, %622 ; [#uses=1]
+ %635 = fadd float %631, %634 ; [#uses=1]
+ %636 = fcmp ogt float %635, 0.000000e+00 ; [#uses=1]
+ br i1 %636, label %bb85, label %bb90
+
+bb85: ; preds = %bb80, %bb79.bb85_crit_edge
+ %637 = phi float [ %.pre337, %bb79.bb85_crit_edge ], [ %633, %bb80 ] ; [#uses=3]
+ %638 = phi float [ %.pre335, %bb79.bb85_crit_edge ], [ %629, %bb80 ] ; [#uses=3]
+ %639 = phi float [ %.pre333, %bb79.bb85_crit_edge ], [ %626, %bb80 ] ; [#uses=3]
+ %640 = load float* %176, align 4 ; [#uses=1]
+ %641 = fmul float %640, %639 ; [#uses=1]
+ %642 = load float* %173, align 4 ; [#uses=1]
+ %643 = fmul float %642, %638 ; [#uses=1]
+ %644 = fadd float %641, %643 ; [#uses=1]
+ %645 = load float* %170, align 4 ; [#uses=1]
+ %646 = fmul float %645, %637 ; [#uses=1]
+ %647 = fadd float %644, %646 ; [#uses=2]
+ %648 = load float* %177, align 4 ; [#uses=1]
+ %649 = fmul float %648, %639 ; [#uses=1]
+ %650 = load float* %174, align 4 ; [#uses=1]
+ %651 = fmul float %650, %638 ; [#uses=1]
+ %652 = fadd float %649, %651 ; [#uses=1]
+ %653 = load float* %171, align 4 ; [#uses=1]
+ %654 = fmul float %653, %637 ; [#uses=1]
+ %655 = fadd float %652, %654 ; [#uses=2]
+ %656 = load float* %178, align 4 ; [#uses=1]
+ %657 = fmul float %656, %639 ; [#uses=1]
+ %658 = load float* %175, align 4 ; [#uses=1]
+ %659 = fmul float %658, %638 ; [#uses=1]
+ %660 = fadd float %657, %659 ; [#uses=1]
+ %661 = load float* %172, align 4 ; [#uses=1]
+ %662 = fmul float %661, %637 ; [#uses=1]
+ %663 = fadd float %660, %662 ; [#uses=2]
+ store float %663, float* %188, align 4
+ store float %655, float* %191, align 4
+ store float %647, float* %195, align 4
+ %664 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %664, align 4
+ %665 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 5 ; [#uses=1]
+ %666 = load float* %665, align 4 ; [#uses=3]
+ %667 = fmul float %647, %666 ; [#uses=1]
+ %668 = fmul float %655, %666 ; [#uses=1]
+ %669 = fmul float %663, %666 ; [#uses=1]
+ %670 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %671 = load float* %670, align 4 ; [#uses=1]
+ %672 = fsub float %671, %667 ; [#uses=2]
+ %673 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %674 = load float* %673, align 4 ; [#uses=1]
+ %675 = fsub float %674, %668 ; [#uses=2]
+ %676 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %677 = load float* %676, align 4 ; [#uses=1]
+ %678 = fsub float %677, %669 ; [#uses=2]
+ %679 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %678, float* %679, align 4
+ %680 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %675, float* %680, align 4
+ %681 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %672, float* %681, align 4
+ %682 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %682, align 4
+ %683 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %684 = load float* %683, align 4 ; [#uses=1]
+ %685 = fsub float %672, %684 ; [#uses=3]
+ %686 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %687 = load float* %686, align 4 ; [#uses=1]
+ %688 = fsub float %675, %687 ; [#uses=3]
+ %689 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %690 = load float* %689, align 4 ; [#uses=1]
+ %691 = fsub float %678, %690 ; [#uses=3]
+ %692 = load float* %178, align 4 ; [#uses=1]
+ %693 = load float* %177, align 4 ; [#uses=1]
+ %694 = load float* %176, align 4 ; [#uses=1]
+ %695 = load float* %175, align 4 ; [#uses=1]
+ %696 = load float* %174, align 4 ; [#uses=1]
+ %697 = load float* %173, align 4 ; [#uses=1]
+ %698 = load float* %172, align 4 ; [#uses=1]
+ %699 = load float* %171, align 4 ; [#uses=1]
+ %700 = load float* %170, align 4 ; [#uses=1]
+ %701 = fmul float %698, %691 ; [#uses=1]
+ %702 = fmul float %699, %688 ; [#uses=1]
+ %703 = fadd float %701, %702 ; [#uses=1]
+ %704 = fmul float %700, %685 ; [#uses=1]
+ %705 = fadd float %703, %704 ; [#uses=1]
+ %706 = fmul float %695, %691 ; [#uses=1]
+ %707 = fmul float %696, %688 ; [#uses=1]
+ %708 = fadd float %706, %707 ; [#uses=1]
+ %709 = fmul float %697, %685 ; [#uses=1]
+ %710 = fadd float %708, %709 ; [#uses=1]
+ %711 = fmul float %692, %691 ; [#uses=1]
+ %712 = fmul float %693, %688 ; [#uses=1]
+ %713 = fadd float %711, %712 ; [#uses=1]
+ %714 = fmul float %694, %685 ; [#uses=1]
+ %715 = fadd float %713, %714 ; [#uses=1]
+ store float %715, float* %.pre-phi, align 4
+ store float %710, float* %.pre-phi346, align 4
+ store float %705, float* %.pre-phi348, align 4
+ %716 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %716, align 4
+ br label %bb90
+
+bb90: ; preds = %bb85, %bb80, %bb70, %bb67, %bb39, %bb33, %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit171
+ %isNearEdge.1 = phi i8 [ 1, %bb39 ], [ 1, %bb70 ], [ 1, %bb85 ], [ %isNearEdge.0, %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit171 ], [ %isNearEdge.0, %bb33 ], [ 1, %bb67 ], [ 1, %bb80 ] ; [#uses=2]
+ %numConcaveEdgeHits.1 = phi i32 [ %494, %bb39 ], [ %619, %bb70 ], [ %numConcaveEdgeHits.0, %bb85 ], [ %numConcaveEdgeHits.0, %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit171 ], [ %numConcaveEdgeHits.0, %bb33 ], [ %numConcaveEdgeHits.0, %bb67 ], [ %numConcaveEdgeHits.0, %bb80 ] ; [#uses=7]
+ %717 = load float* %125, align 8 ; [#uses=2]
+ %718 = load float* %435, align 8 ; [#uses=5]
+ %719 = fsub float %717, %718 ; [#uses=4]
+ %720 = load float* %130, align 4 ; [#uses=2]
+ %721 = load float* %439, align 4 ; [#uses=5]
+ %722 = fsub float %720, %721 ; [#uses=4]
+ %723 = load float* %135, align 8 ; [#uses=2]
+ %724 = load float* %443, align 8 ; [#uses=5]
+ %725 = fsub float %723, %724 ; [#uses=4]
+ %726 = fmul float %725, %725 ; [#uses=1]
+ %727 = fmul float %722, %722 ; [#uses=1]
+ %728 = fadd float %726, %727 ; [#uses=1]
+ %729 = fmul float %719, %719 ; [#uses=1]
+ %730 = fadd float %728, %729 ; [#uses=2]
+ %731 = fcmp olt float %730, 0x3E80000000000000 ; [#uses=1]
+ br i1 %731, label %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit, label %bb1.i
+
+bb1.i: ; preds = %bb90
+ %732 = fsub float %167, %718 ; [#uses=1]
+ %733 = fsub float %168, %721 ; [#uses=1]
+ %734 = fsub float %169, %724 ; [#uses=1]
+ %735 = fmul float %734, %725 ; [#uses=1]
+ %736 = fmul float %733, %722 ; [#uses=1]
+ %737 = fadd float %735, %736 ; [#uses=1]
+ %738 = fmul float %732, %719 ; [#uses=1]
+ %739 = fadd float %737, %738 ; [#uses=1]
+ %740 = fdiv float %739, %730 ; [#uses=3]
+ %741 = fcmp olt float %740, 0.000000e+00 ; [#uses=1]
+ br i1 %741, label %bb5.i, label %bb3.i
+
+bb3.i: ; preds = %bb1.i
+ %742 = fcmp ogt float %740, 1.000000e+00 ; [#uses=1]
+ br i1 %742, label %bb4.i, label %bb5.i
+
+bb4.i: ; preds = %bb3.i
+ br label %bb5.i
+
+bb5.i: ; preds = %bb4.i, %bb3.i, %bb1.i
+ %delta.0.i = phi float [ 1.000000e+00, %bb4.i ], [ %740, %bb3.i ], [ 0.000000e+00, %bb1.i ] ; [#uses=3]
+ %743 = fmul float %719, %delta.0.i ; [#uses=1]
+ %744 = fmul float %722, %delta.0.i ; [#uses=1]
+ %745 = fmul float %725, %delta.0.i ; [#uses=1]
+ %746 = fadd float %718, %743 ; [#uses=1]
+ %747 = fadd float %721, %744 ; [#uses=1]
+ %748 = fadd float %724, %745 ; [#uses=1]
+ br label %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit
+
+_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit: ; preds = %bb5.i, %bb90
+ %nearest.0.0.0 = phi float [ %748, %bb5.i ], [ %724, %bb90 ] ; [#uses=1]
+ %nearest.0.1.0 = phi float [ %747, %bb5.i ], [ %721, %bb90 ] ; [#uses=1]
+ %nearest.0.2.0 = phi float [ %746, %bb5.i ], [ %718, %bb90 ] ; [#uses=1]
+ %749 = getelementptr inbounds %struct.btTriangleInfo* %52, i32 %index.0.i.i, i32 3 ; [#uses=1]
+ %750 = load float* %749, align 4 ; [#uses=4]
+ %751 = fcmp olt float %750, 0x401921FB60000000 ; [#uses=1]
+ br i1 %751, label %bb91, label %bb148
+
+bb91: ; preds = %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit
+ %752 = fsub float %167, %nearest.0.2.0 ; [#uses=2]
+ %753 = fsub float %168, %nearest.0.1.0 ; [#uses=2]
+ %754 = fsub float %169, %nearest.0.0.0 ; [#uses=2]
+ %755 = fmul float %754, %754 ; [#uses=1]
+ %756 = fmul float %753, %753 ; [#uses=1]
+ %757 = fadd float %755, %756 ; [#uses=1]
+ %758 = fmul float %752, %752 ; [#uses=1]
+ %759 = fadd float %757, %758 ; [#uses=1]
+ %760 = call float @sqrtf(float %759) nounwind readonly ; [#uses=1]
+ %761 = getelementptr inbounds i8* %11, i32 96 ; [#uses=1]
+ %762 = bitcast i8* %761 to float* ; [#uses=1]
+ %763 = load float* %762, align 4 ; [#uses=1]
+ %764 = fcmp ogt float %763, %760 ; [#uses=1]
+ br i1 %764, label %bb94, label %bb148
+
+bb94: ; preds = %bb91
+ %765 = fsub float %718, %717 ; [#uses=4]
+ %766 = fsub float %721, %720 ; [#uses=4]
+ %767 = fsub float %724, %723 ; [#uses=4]
+ %768 = getelementptr inbounds %struct.btQuadWord* %edge96, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %767, float* %768, align 8
+ %769 = getelementptr inbounds %struct.btQuadWord* %edge96, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %766, float* %769, align 4
+ %770 = getelementptr inbounds %struct.btQuadWord* %edge96, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %765, float* %770, align 8
+ %771 = getelementptr inbounds %struct.btQuadWord* %edge96, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %771, align 4
+ %772 = fcmp oeq float %750, 0.000000e+00 ; [#uses=1]
+ br i1 %772, label %bb97, label %bb98
+
+bb97: ; preds = %bb94
+ %773 = add nsw i32 %numConcaveEdgeHits.1, 1 ; [#uses=1]
+ br label %bb148
+
+bb98: ; preds = %bb94
+ %774 = getelementptr inbounds %struct.btTriangleInfo* %52, i32 %index.0.i.i, i32 0 ; [#uses=1]
+ %775 = load i32* %774, align 4 ; [#uses=2]
+ %.lobit = and i32 %775, 4 ; [#uses=1]
+ %toBool117 = icmp eq i32 %.lobit, 0 ; [#uses=1]
+ %iftmp.305.0 = select i1 %toBool117, float -1.000000e+00, float 1.000000e+00 ; [#uses=6]
+ %776 = fmul float %122, %iftmp.305.0 ; [#uses=2]
+ %777 = fmul float %121, %iftmp.305.0 ; [#uses=2]
+ %778 = fmul float %120, %iftmp.305.0 ; [#uses=2]
+ %779 = fmul float %767, %767 ; [#uses=1]
+ %780 = fmul float %766, %766 ; [#uses=1]
+ %781 = fadd float %779, %780 ; [#uses=1]
+ %782 = fmul float %765, %765 ; [#uses=1]
+ %783 = fadd float %781, %782 ; [#uses=1]
+ %784 = call float @sqrtf(float %783) nounwind readonly ; [#uses=1]
+ %785 = fmul float %750, 5.000000e-01 ; [#uses=2]
+ %786 = call float @sinf(float %785) nounwind readonly ; [#uses=1]
+ %787 = fdiv float %786, %784 ; [#uses=3]
+ %788 = call float @cosf(float %785) nounwind readonly ; [#uses=6]
+ %789 = fmul float %765, %787 ; [#uses=4]
+ %790 = fmul float %766, %787 ; [#uses=4]
+ %791 = fmul float %767, %787 ; [#uses=3]
+ %792 = fsub float -0.000000e+00, %791 ; [#uses=4]
+ %793 = fmul float %120, %792 ; [#uses=1]
+ %794 = fmul float %790, %121 ; [#uses=1]
+ %795 = fsub float %793, %794 ; [#uses=1]
+ %796 = fmul float %789, %122 ; [#uses=1]
+ %797 = fsub float %795, %796 ; [#uses=3]
+ %798 = fmul float %788, %122 ; [#uses=1]
+ %799 = fmul float %791, %121 ; [#uses=1]
+ %800 = fadd float %798, %799 ; [#uses=1]
+ %801 = fmul float %790, %120 ; [#uses=1]
+ %802 = fsub float %800, %801 ; [#uses=3]
+ %803 = fmul float %788, %121 ; [#uses=1]
+ %804 = fmul float %789, %120 ; [#uses=1]
+ %805 = fadd float %803, %804 ; [#uses=1]
+ %806 = fmul float %791, %122 ; [#uses=1]
+ %807 = fsub float %805, %806 ; [#uses=3]
+ %808 = fmul float %788, %120 ; [#uses=1]
+ %809 = fmul float %790, %122 ; [#uses=1]
+ %810 = fadd float %808, %809 ; [#uses=1]
+ %811 = fmul float %789, %121 ; [#uses=1]
+ %812 = fsub float %810, %811 ; [#uses=3]
+ %813 = fsub float -0.000000e+00, %789 ; [#uses=3]
+ %814 = fsub float -0.000000e+00, %790 ; [#uses=3]
+ %815 = fmul float %797, %813 ; [#uses=1]
+ %816 = fmul float %802, %788 ; [#uses=1]
+ %817 = fadd float %815, %816 ; [#uses=1]
+ %818 = fmul float %812, %814 ; [#uses=1]
+ %819 = fadd float %817, %818 ; [#uses=1]
+ %820 = fmul float %807, %792 ; [#uses=1]
+ %821 = fsub float %819, %820 ; [#uses=2]
+ %822 = fmul float %797, %814 ; [#uses=1]
+ %823 = fmul float %807, %788 ; [#uses=1]
+ %824 = fadd float %822, %823 ; [#uses=1]
+ %825 = fmul float %802, %792 ; [#uses=1]
+ %826 = fadd float %824, %825 ; [#uses=1]
+ %827 = fmul float %812, %813 ; [#uses=1]
+ %828 = fsub float %826, %827 ; [#uses=2]
+ %829 = fmul float %797, %792 ; [#uses=1]
+ %830 = fmul float %812, %788 ; [#uses=1]
+ %831 = fadd float %829, %830 ; [#uses=1]
+ %832 = fmul float %807, %813 ; [#uses=1]
+ %833 = fadd float %831, %832 ; [#uses=1]
+ %834 = fmul float %802, %814 ; [#uses=1]
+ %835 = fsub float %833, %834 ; [#uses=2]
+ %836 = and i32 %775, 32 ; [#uses=1]
+ %837 = icmp eq i32 %836, 0 ; [#uses=1]
+ br i1 %837, label %bb122, label %bb121
+
+bb121: ; preds = %bb98
+ %838 = fmul float %835, -1.000000e+00 ; [#uses=1]
+ %839 = fmul float %828, -1.000000e+00 ; [#uses=1]
+ %840 = fmul float %821, -1.000000e+00 ; [#uses=1]
+ br label %bb122
+
+bb122: ; preds = %bb121, %bb98
+ %computedNormalB108.0.0.0 = phi float [ %838, %bb121 ], [ %835, %bb98 ] ; [#uses=1]
+ %computedNormalB108.0.1.0 = phi float [ %839, %bb121 ], [ %828, %bb98 ] ; [#uses=1]
+ %computedNormalB108.0.2.0 = phi float [ %840, %bb121 ], [ %821, %bb98 ] ; [#uses=1]
+ %841 = load float* %209, align 8 ; [#uses=2]
+ %842 = fmul float %841, %778 ; [#uses=1]
+ %843 = load float* %210, align 4 ; [#uses=2]
+ %844 = fmul float %843, %777 ; [#uses=1]
+ %845 = fadd float %842, %844 ; [#uses=1]
+ %846 = load float* %211, align 8 ; [#uses=2]
+ %847 = fmul float %846, %776 ; [#uses=1]
+ %848 = fadd float %845, %847 ; [#uses=1]
+ %849 = getelementptr inbounds i8* %11, i32 84 ; [#uses=1]
+ %850 = bitcast i8* %849 to float* ; [#uses=1]
+ %851 = load float* %850, align 4 ; [#uses=2]
+ %852 = fcmp ule float %851, %848 ; [#uses=1]
+ br i1 %852, label %bb125, label %bb123
+
+bb123: ; preds = %bb122
+ %853 = fmul float %computedNormalB108.0.0.0, %iftmp.305.0 ; [#uses=1]
+ %854 = fmul float %computedNormalB108.0.1.0, %iftmp.305.0 ; [#uses=1]
+ %855 = fmul float %843, %854 ; [#uses=1]
+ %856 = fmul float %841, %853 ; [#uses=1]
+ %857 = fmul float %computedNormalB108.0.2.0, %iftmp.305.0 ; [#uses=1]
+ %858 = fmul float %846, %857 ; [#uses=1]
+ %859 = fadd float %856, %855 ; [#uses=1]
+ %860 = fadd float %859, %858 ; [#uses=1]
+ %861 = fcmp ule float %851, %860 ; [#uses=1]
+ br i1 %861, label %bb125, label %bb128
+
+bb125: ; preds = %bb123, %bb122
+ %862 = load float* %178, align 4 ; [#uses=1]
+ %863 = load float* %177, align 4 ; [#uses=1]
+ %864 = load float* %176, align 4 ; [#uses=1]
+ %865 = load float* %175, align 4 ; [#uses=1]
+ %866 = load float* %174, align 4 ; [#uses=1]
+ %867 = load float* %173, align 4 ; [#uses=1]
+ %868 = load float* %172, align 4 ; [#uses=1]
+ %869 = load float* %171, align 4 ; [#uses=1]
+ %870 = load float* %170, align 4 ; [#uses=1]
+ %871 = load float* %188, align 4 ; [#uses=3]
+ %872 = fmul float %868, %871 ; [#uses=1]
+ %873 = load float* %191, align 4 ; [#uses=3]
+ %874 = fmul float %869, %873 ; [#uses=1]
+ %875 = fadd float %872, %874 ; [#uses=1]
+ %876 = load float* %195, align 4 ; [#uses=3]
+ %877 = fmul float %870, %876 ; [#uses=1]
+ %878 = fadd float %875, %877 ; [#uses=1]
+ %879 = fmul float %865, %871 ; [#uses=1]
+ %880 = fmul float %866, %873 ; [#uses=1]
+ %881 = fadd float %879, %880 ; [#uses=1]
+ %882 = fmul float %867, %876 ; [#uses=1]
+ %883 = fadd float %881, %882 ; [#uses=1]
+ %884 = fmul float %862, %871 ; [#uses=1]
+ %885 = fmul float %863, %873 ; [#uses=1]
+ %886 = fadd float %884, %885 ; [#uses=1]
+ %887 = fmul float %864, %876 ; [#uses=1]
+ %888 = fadd float %886, %887 ; [#uses=1]
+ %889 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB131, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %888, float* %889, align 8
+ %890 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB131, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %883, float* %890, align 4
+ %891 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB131, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %878, float* %891, align 8
+ %892 = getelementptr inbounds %struct.btQuadWord* %localContactNormalOnB131, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %892, align 4
+ %893 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %778, float* %893, align 8
+ %894 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %777, float* %894, align 4
+ %895 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %776, float* %895, align 8
+ %896 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %896, align 4
+ %897 = call zeroext i8 @_Z13btClampNormalRK9btVector3S1_S1_fRS_(%struct.btQuadWord* %edge96, %struct.btQuadWord* %0, %struct.btQuadWord* %localContactNormalOnB131, float %750, %struct.btQuadWord* %clampedLocalNormal133) ; [#uses=1]
+ %toBool136 = icmp eq i8 %897, 0 ; [#uses=1]
+ br i1 %toBool136, label %bb148, label %bb137
+
+bb128: ; preds = %bb123
+ %898 = add nsw i32 %numConcaveEdgeHits.1, 1 ; [#uses=1]
+ br label %bb148
+
+bb137: ; preds = %bb125
+ %899 = and i32 %normalAdjustFlags, 4 ; [#uses=1]
+ %900 = icmp eq i32 %899, 0 ; [#uses=1]
+ br i1 %900, label %bb138, label %bb137.bb143_crit_edge
+
+bb137.bb143_crit_edge: ; preds = %bb137
+ %.phi.trans.insert338 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal133, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre339 = load float* %.phi.trans.insert338, align 8 ; [#uses=1]
+ %.phi.trans.insert340 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal133, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre341 = load float* %.phi.trans.insert340, align 4 ; [#uses=1]
+ %.phi.trans.insert342 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal133, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre343 = load float* %.phi.trans.insert342, align 8 ; [#uses=1]
+ br label %bb143
+
+bb138: ; preds = %bb137
+ %901 = fmul float %122, %iftmp.296.0 ; [#uses=1]
+ %902 = fmul float %121, %iftmp.296.0 ; [#uses=1]
+ %903 = fmul float %120, %iftmp.296.0 ; [#uses=1]
+ %904 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal133, i32 0, i32 0, i32 0 ; [#uses=1]
+ %905 = load float* %904, align 8 ; [#uses=2]
+ %906 = fmul float %905, %903 ; [#uses=1]
+ %907 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal133, i32 0, i32 0, i32 1 ; [#uses=1]
+ %908 = load float* %907, align 4 ; [#uses=2]
+ %909 = fmul float %908, %902 ; [#uses=1]
+ %910 = fadd float %906, %909 ; [#uses=1]
+ %911 = getelementptr inbounds %struct.btQuadWord* %clampedLocalNormal133, i32 0, i32 0, i32 2 ; [#uses=1]
+ %912 = load float* %911, align 8 ; [#uses=2]
+ %913 = fmul float %912, %901 ; [#uses=1]
+ %914 = fadd float %910, %913 ; [#uses=1]
+ %915 = fcmp ogt float %914, 0.000000e+00 ; [#uses=1]
+ br i1 %915, label %bb143, label %bb148
+
+bb143: ; preds = %bb138, %bb137.bb143_crit_edge
+ %916 = phi float [ %.pre343, %bb137.bb143_crit_edge ], [ %912, %bb138 ] ; [#uses=3]
+ %917 = phi float [ %.pre341, %bb137.bb143_crit_edge ], [ %908, %bb138 ] ; [#uses=3]
+ %918 = phi float [ %.pre339, %bb137.bb143_crit_edge ], [ %905, %bb138 ] ; [#uses=3]
+ %919 = load float* %176, align 4 ; [#uses=1]
+ %920 = fmul float %919, %918 ; [#uses=1]
+ %921 = load float* %173, align 4 ; [#uses=1]
+ %922 = fmul float %921, %917 ; [#uses=1]
+ %923 = fadd float %920, %922 ; [#uses=1]
+ %924 = load float* %170, align 4 ; [#uses=1]
+ %925 = fmul float %924, %916 ; [#uses=1]
+ %926 = fadd float %923, %925 ; [#uses=2]
+ %927 = load float* %177, align 4 ; [#uses=1]
+ %928 = fmul float %927, %918 ; [#uses=1]
+ %929 = load float* %174, align 4 ; [#uses=1]
+ %930 = fmul float %929, %917 ; [#uses=1]
+ %931 = fadd float %928, %930 ; [#uses=1]
+ %932 = load float* %171, align 4 ; [#uses=1]
+ %933 = fmul float %932, %916 ; [#uses=1]
+ %934 = fadd float %931, %933 ; [#uses=2]
+ %935 = load float* %178, align 4 ; [#uses=1]
+ %936 = fmul float %935, %918 ; [#uses=1]
+ %937 = load float* %175, align 4 ; [#uses=1]
+ %938 = fmul float %937, %917 ; [#uses=1]
+ %939 = fadd float %936, %938 ; [#uses=1]
+ %940 = load float* %172, align 4 ; [#uses=1]
+ %941 = fmul float %940, %916 ; [#uses=1]
+ %942 = fadd float %939, %941 ; [#uses=2]
+ store float %942, float* %188, align 4
+ store float %934, float* %191, align 4
+ store float %926, float* %195, align 4
+ %943 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %943, align 4
+ %944 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 5 ; [#uses=1]
+ %945 = load float* %944, align 4 ; [#uses=3]
+ %946 = fmul float %926, %945 ; [#uses=1]
+ %947 = fmul float %934, %945 ; [#uses=1]
+ %948 = fmul float %942, %945 ; [#uses=1]
+ %949 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %950 = load float* %949, align 4 ; [#uses=1]
+ %951 = fsub float %950, %946 ; [#uses=2]
+ %952 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %953 = load float* %952, align 4 ; [#uses=1]
+ %954 = fsub float %953, %947 ; [#uses=2]
+ %955 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %956 = load float* %955, align 4 ; [#uses=1]
+ %957 = fsub float %956, %948 ; [#uses=2]
+ %958 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %957, float* %958, align 4
+ %959 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %954, float* %959, align 4
+ %960 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %951, float* %960, align 4
+ %961 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %961, align 4
+ %962 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %963 = load float* %962, align 4 ; [#uses=1]
+ %964 = fsub float %951, %963 ; [#uses=3]
+ %965 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %966 = load float* %965, align 4 ; [#uses=1]
+ %967 = fsub float %954, %966 ; [#uses=3]
+ %968 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %969 = load float* %968, align 4 ; [#uses=1]
+ %970 = fsub float %957, %969 ; [#uses=3]
+ %971 = load float* %178, align 4 ; [#uses=1]
+ %972 = load float* %177, align 4 ; [#uses=1]
+ %973 = load float* %176, align 4 ; [#uses=1]
+ %974 = load float* %175, align 4 ; [#uses=1]
+ %975 = load float* %174, align 4 ; [#uses=1]
+ %976 = load float* %173, align 4 ; [#uses=1]
+ %977 = load float* %172, align 4 ; [#uses=1]
+ %978 = load float* %171, align 4 ; [#uses=1]
+ %979 = load float* %170, align 4 ; [#uses=1]
+ %980 = fmul float %977, %970 ; [#uses=1]
+ %981 = fmul float %978, %967 ; [#uses=1]
+ %982 = fadd float %980, %981 ; [#uses=1]
+ %983 = fmul float %979, %964 ; [#uses=1]
+ %984 = fadd float %982, %983 ; [#uses=1]
+ %985 = fmul float %974, %970 ; [#uses=1]
+ %986 = fmul float %975, %967 ; [#uses=1]
+ %987 = fadd float %985, %986 ; [#uses=1]
+ %988 = fmul float %976, %964 ; [#uses=1]
+ %989 = fadd float %987, %988 ; [#uses=1]
+ %990 = fmul float %971, %970 ; [#uses=1]
+ %991 = fmul float %972, %967 ; [#uses=1]
+ %992 = fadd float %990, %991 ; [#uses=1]
+ %993 = fmul float %973, %964 ; [#uses=1]
+ %994 = fadd float %992, %993 ; [#uses=1]
+ store float %994, float* %.pre-phi, align 4
+ store float %989, float* %.pre-phi346, align 4
+ store float %984, float* %.pre-phi348, align 4
+ %995 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %995, align 4
+ br label %bb148
+
+bb148: ; preds = %bb143, %bb138, %bb128, %bb125, %bb97, %bb91, %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit
+ %isNearEdge.2 = phi i8 [ 1, %bb97 ], [ 1, %bb128 ], [ 1, %bb143 ], [ 1, %bb125 ], [ %isNearEdge.1, %bb91 ], [ %isNearEdge.1, %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit ], [ 1, %bb138 ] ; [#uses=1]
+ %numConcaveEdgeHits.2 = phi i32 [ %773, %bb97 ], [ %898, %bb128 ], [ %numConcaveEdgeHits.1, %bb143 ], [ %numConcaveEdgeHits.1, %bb125 ], [ %numConcaveEdgeHits.1, %bb91 ], [ %numConcaveEdgeHits.1, %_Z27btNearestPointInLineSegmentRK9btVector3S1_S1_RS_.exit ], [ %numConcaveEdgeHits.1, %bb138 ] ; [#uses=1]
+ %toBool149.not = icmp ne i8 %isNearEdge.2, 0 ; [#uses=1]
+ %996 = icmp sgt i32 %numConcaveEdgeHits.2, 0 ; [#uses=1]
+ %or.cond = and i1 %toBool149.not, %996 ; [#uses=1]
+ br i1 %or.cond, label %bb151, label %return
+
+bb151: ; preds = %bb148
+ %997 = and i32 %normalAdjustFlags, 2 ; [#uses=1]
+ %998 = icmp eq i32 %997, 0 ; [#uses=1]
+ br i1 %998, label %bb157, label %bb152
+
+bb152: ; preds = %bb151
+ %999 = load float* %209, align 8 ; [#uses=1]
+ %1000 = fmul float %120, %999 ; [#uses=1]
+ %1001 = load float* %210, align 4 ; [#uses=1]
+ %1002 = fmul float %121, %1001 ; [#uses=1]
+ %1003 = fadd float %1000, %1002 ; [#uses=1]
+ %1004 = load float* %211, align 8 ; [#uses=1]
+ %1005 = fmul float %122, %1004 ; [#uses=1]
+ %1006 = fadd float %1003, %1005 ; [#uses=1]
+ %1007 = fcmp olt float %1006, 0.000000e+00 ; [#uses=1]
+ br i1 %1007, label %bb154, label %bb155
+
+bb154: ; preds = %bb152
+ %1008 = fmul float %120, -1.000000e+00 ; [#uses=1]
+ %1009 = fmul float %121, -1.000000e+00 ; [#uses=1]
+ %1010 = fmul float %122, -1.000000e+00 ; [#uses=1]
+ br label %bb155
+
+bb155: ; preds = %bb154, %bb152
+ %tri_normal.0.0.0 = phi float [ %1008, %bb154 ], [ %120, %bb152 ] ; [#uses=3]
+ %tri_normal.0.1.0 = phi float [ %1009, %bb154 ], [ %121, %bb152 ] ; [#uses=3]
+ %tri_normal.0.2.0 = phi float [ %1010, %bb154 ], [ %122, %bb152 ] ; [#uses=3]
+ %1011 = load float* %176, align 4 ; [#uses=1]
+ %1012 = fmul float %1011, %tri_normal.0.0.0 ; [#uses=1]
+ %1013 = load float* %173, align 4 ; [#uses=1]
+ %1014 = fmul float %1013, %tri_normal.0.1.0 ; [#uses=1]
+ %1015 = fadd float %1012, %1014 ; [#uses=1]
+ %1016 = load float* %170, align 4 ; [#uses=1]
+ %1017 = fmul float %1016, %tri_normal.0.2.0 ; [#uses=1]
+ %1018 = fadd float %1015, %1017 ; [#uses=2]
+ %1019 = load float* %177, align 4 ; [#uses=1]
+ %1020 = fmul float %1019, %tri_normal.0.0.0 ; [#uses=1]
+ %1021 = load float* %174, align 4 ; [#uses=1]
+ %1022 = fmul float %1021, %tri_normal.0.1.0 ; [#uses=1]
+ %1023 = fadd float %1020, %1022 ; [#uses=1]
+ %1024 = load float* %171, align 4 ; [#uses=1]
+ %1025 = fmul float %1024, %tri_normal.0.2.0 ; [#uses=1]
+ %1026 = fadd float %1023, %1025 ; [#uses=2]
+ %1027 = load float* %178, align 4 ; [#uses=1]
+ %1028 = fmul float %1027, %tri_normal.0.0.0 ; [#uses=1]
+ %1029 = load float* %175, align 4 ; [#uses=1]
+ %1030 = fmul float %1029, %tri_normal.0.1.0 ; [#uses=1]
+ %1031 = fadd float %1028, %1030 ; [#uses=1]
+ %1032 = load float* %172, align 4 ; [#uses=1]
+ %1033 = fmul float %1032, %tri_normal.0.2.0 ; [#uses=1]
+ %1034 = fadd float %1031, %1033 ; [#uses=2]
+ store float %1034, float* %188, align 4
+ store float %1026, float* %191, align 4
+ store float %1018, float* %195, align 4
+ %1035 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1035, align 4
+ br label %bb159
+
+bb157: ; preds = %bb151
+ %1036 = fmul float %122, %iftmp.296.0 ; [#uses=3]
+ %1037 = fmul float %121, %iftmp.296.0 ; [#uses=3]
+ %1038 = fmul float %120, %iftmp.296.0 ; [#uses=3]
+ %1039 = load float* %176, align 4 ; [#uses=1]
+ %1040 = fmul float %1039, %1038 ; [#uses=1]
+ %1041 = load float* %173, align 4 ; [#uses=1]
+ %1042 = fmul float %1041, %1037 ; [#uses=1]
+ %1043 = fadd float %1040, %1042 ; [#uses=1]
+ %1044 = load float* %170, align 4 ; [#uses=1]
+ %1045 = fmul float %1044, %1036 ; [#uses=1]
+ %1046 = fadd float %1043, %1045 ; [#uses=2]
+ %1047 = load float* %177, align 4 ; [#uses=1]
+ %1048 = fmul float %1047, %1038 ; [#uses=1]
+ %1049 = load float* %174, align 4 ; [#uses=1]
+ %1050 = fmul float %1049, %1037 ; [#uses=1]
+ %1051 = fadd float %1048, %1050 ; [#uses=1]
+ %1052 = load float* %171, align 4 ; [#uses=1]
+ %1053 = fmul float %1052, %1036 ; [#uses=1]
+ %1054 = fadd float %1051, %1053 ; [#uses=2]
+ %1055 = load float* %178, align 4 ; [#uses=1]
+ %1056 = fmul float %1055, %1038 ; [#uses=1]
+ %1057 = load float* %175, align 4 ; [#uses=1]
+ %1058 = fmul float %1057, %1037 ; [#uses=1]
+ %1059 = fadd float %1056, %1058 ; [#uses=1]
+ %1060 = load float* %172, align 4 ; [#uses=1]
+ %1061 = fmul float %1060, %1036 ; [#uses=1]
+ %1062 = fadd float %1059, %1061 ; [#uses=2]
+ store float %1062, float* %188, align 4
+ store float %1054, float* %191, align 4
+ store float %1046, float* %195, align 4
+ %1063 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1063, align 4
+ br label %bb159
+
+bb159: ; preds = %bb157, %bb155
+ %1064 = phi float [ %1062, %bb157 ], [ %1034, %bb155 ] ; [#uses=1]
+ %1065 = phi float [ %1054, %bb157 ], [ %1026, %bb155 ] ; [#uses=1]
+ %1066 = phi float [ %1046, %bb157 ], [ %1018, %bb155 ] ; [#uses=1]
+ %1067 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 5 ; [#uses=1]
+ %1068 = load float* %1067, align 4 ; [#uses=3]
+ %1069 = fmul float %1066, %1068 ; [#uses=1]
+ %1070 = fmul float %1065, %1068 ; [#uses=1]
+ %1071 = fmul float %1064, %1068 ; [#uses=1]
+ %1072 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %1073 = load float* %1072, align 4 ; [#uses=1]
+ %1074 = fsub float %1073, %1069 ; [#uses=2]
+ %1075 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %1076 = load float* %1075, align 4 ; [#uses=1]
+ %1077 = fsub float %1076, %1070 ; [#uses=2]
+ %1078 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %1079 = load float* %1078, align 4 ; [#uses=1]
+ %1080 = fsub float %1079, %1071 ; [#uses=2]
+ %1081 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %1080, float* %1081, align 4
+ %1082 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %1077, float* %1082, align 4
+ %1083 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %1074, float* %1083, align 4
+ %1084 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1084, align 4
+ %1085 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1086 = load float* %1085, align 4 ; [#uses=1]
+ %1087 = fsub float %1074, %1086 ; [#uses=3]
+ %1088 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1089 = load float* %1088, align 4 ; [#uses=1]
+ %1090 = fsub float %1077, %1089 ; [#uses=3]
+ %1091 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1092 = load float* %1091, align 4 ; [#uses=1]
+ %1093 = fsub float %1080, %1092 ; [#uses=3]
+ %1094 = load float* %178, align 4 ; [#uses=1]
+ %1095 = load float* %177, align 4 ; [#uses=1]
+ %1096 = load float* %176, align 4 ; [#uses=1]
+ %1097 = load float* %175, align 4 ; [#uses=1]
+ %1098 = load float* %174, align 4 ; [#uses=1]
+ %1099 = load float* %173, align 4 ; [#uses=1]
+ %1100 = load float* %172, align 4 ; [#uses=1]
+ %1101 = load float* %171, align 4 ; [#uses=1]
+ %1102 = load float* %170, align 4 ; [#uses=1]
+ %1103 = fmul float %1100, %1093 ; [#uses=1]
+ %1104 = fmul float %1101, %1090 ; [#uses=1]
+ %1105 = fadd float %1103, %1104 ; [#uses=1]
+ %1106 = fmul float %1102, %1087 ; [#uses=1]
+ %1107 = fadd float %1105, %1106 ; [#uses=1]
+ %1108 = fmul float %1097, %1093 ; [#uses=1]
+ %1109 = fmul float %1098, %1090 ; [#uses=1]
+ %1110 = fadd float %1108, %1109 ; [#uses=1]
+ %1111 = fmul float %1099, %1087 ; [#uses=1]
+ %1112 = fadd float %1110, %1111 ; [#uses=1]
+ %1113 = fmul float %1094, %1093 ; [#uses=1]
+ %1114 = fmul float %1095, %1090 ; [#uses=1]
+ %1115 = fadd float %1113, %1114 ; [#uses=1]
+ %1116 = fmul float %1096, %1087 ; [#uses=1]
+ %1117 = fadd float %1115, %1116 ; [#uses=1]
+ store float %1117, float* %.pre-phi, align 4
+ store float %1112, float* %.pre-phi346, align 4
+ store float %1107, float* %.pre-phi348, align 4
+ %1118 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1118, align 4
+ ret void
+
+return: ; preds = %bb148, %_ZN9btHashMapI9btHashInt14btTriangleInfoE4findERKS0_.exit, %bb3.i.i, %bb1, %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI14btTriangleInfoE9push_backERKS0_(%"struct.btAlignedObjectArray<btTriangleInfo>"* nocapture %this, %struct.btTriangleInfo* nocapture %_Val) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, i32 0, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.403.0.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.403.0.i ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb1
+
+bb.i: ; preds = %bb
+ %8 = icmp eq i32 %iftmp.403.0.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayI14btTriangleInfoE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %9 = shl i32 %iftmp.403.0.i, 4 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %10 to %struct.btTriangleInfo* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI14btTriangleInfoE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayI14btTriangleInfoE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %11 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %12 = phi %struct.btTriangleInfo* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=6]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayI14btTriangleInfoE4copyEiiPS0_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayI14btTriangleInfoE8allocateEi.exit.i
+ %14 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=10]
+ %scevgep.i.i = getelementptr %struct.btTriangleInfo* %12, i32 %indvar.i.i ; [#uses=1]
+ %15 = icmp eq %struct.btTriangleInfo* %scevgep.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %scevgep14.i.i = getelementptr %struct.btTriangleInfo* %12, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %scevgep15.i.i = getelementptr %struct.btTriangleInfo* %12, i32 %indvar.i.i, i32 2 ; [#uses=1]
+ %scevgep16.i.i = getelementptr %struct.btTriangleInfo* %12, i32 %indvar.i.i, i32 3 ; [#uses=1]
+ %scevgep13.i.i = getelementptr inbounds %struct.btTriangleInfo* %12, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %16 = load %struct.btTriangleInfo** %14, align 4 ; [#uses=4]
+ %scevgep89.i.i = getelementptr inbounds %struct.btTriangleInfo* %16, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %17 = load i32* %scevgep89.i.i, align 4 ; [#uses=1]
+ store i32 %17, i32* %scevgep13.i.i, align 4
+ %scevgep10.i.i = getelementptr %struct.btTriangleInfo* %16, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %18 = load float* %scevgep10.i.i, align 4 ; [#uses=1]
+ store float %18, float* %scevgep14.i.i, align 4
+ %scevgep11.i.i = getelementptr %struct.btTriangleInfo* %16, i32 %indvar.i.i, i32 2 ; [#uses=1]
+ %19 = load float* %scevgep11.i.i, align 4 ; [#uses=1]
+ store float %19, float* %scevgep15.i.i, align 4
+ %scevgep12.i.i = getelementptr %struct.btTriangleInfo* %16, i32 %indvar.i.i, i32 3 ; [#uses=1]
+ %20 = load float* %scevgep12.i.i, align 4 ; [#uses=1]
+ store float %20, float* %scevgep16.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI14btTriangleInfoE4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI14btTriangleInfoE4copyEiiPS0_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayI14btTriangleInfoE8allocateEi.exit.i
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, i32 0, i32 3 ; [#uses=3]
+ %22 = load %struct.btTriangleInfo** %21, align 4 ; [#uses=2]
+ %23 = icmp eq %struct.btTriangleInfo* %22, null ; [#uses=1]
+ br i1 %23, label %_ZN20btAlignedObjectArrayI14btTriangleInfoE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI14btTriangleInfoE4copyEiiPS0_.exit.i
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, i32 0, i32 4 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %26 = bitcast %struct.btTriangleInfo* %22 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %26)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btTriangleInfo* null, %struct.btTriangleInfo** %21, align 4
+ br label %_ZN20btAlignedObjectArrayI14btTriangleInfoE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayI14btTriangleInfoE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI14btTriangleInfoE4copyEiiPS0_.exit.i
+ %27 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %27, align 4
+ store %struct.btTriangleInfo* %12, %struct.btTriangleInfo** %21, align 4
+ store i32 %iftmp.403.0.i, i32* %2, align 4
+ %.pre11 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayI14btTriangleInfoE10deallocateEv.exit.i, %bb, %entry
+ %28 = phi i32 [ %.pre11, %_ZN20btAlignedObjectArrayI14btTriangleInfoE10deallocateEv.exit.i ], [ %1, %entry ], [ %1, %bb ] ; [#uses=6]
+ %29 = getelementptr inbounds %"struct.btAlignedObjectArray<btTriangleInfo>"* %this, i32 0, i32 3 ; [#uses=1]
+ %30 = load %struct.btTriangleInfo** %29, align 4 ; [#uses=5]
+ %31 = getelementptr inbounds %struct.btTriangleInfo* %30, i32 %28 ; [#uses=1]
+ %32 = icmp eq %struct.btTriangleInfo* %31, null ; [#uses=1]
+ br i1 %32, label %bb4, label %bb2
+
+bb2: ; preds = %bb1
+ %33 = getelementptr inbounds %struct.btTriangleInfo* %30, i32 %28, i32 0 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btTriangleInfo* %_Val, i32 0, i32 0 ; [#uses=1]
+ %35 = load i32* %34, align 4 ; [#uses=1]
+ store i32 %35, i32* %33, align 4
+ %36 = getelementptr inbounds %struct.btTriangleInfo* %30, i32 %28, i32 1 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTriangleInfo* %_Val, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds %struct.btTriangleInfo* %30, i32 %28, i32 2 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTriangleInfo* %_Val, i32 0, i32 2 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ store float %41, float* %39, align 4
+ %42 = getelementptr inbounds %struct.btTriangleInfo* %30, i32 %28, i32 3 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTriangleInfo* %_Val, i32 0, i32 3 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ store float %44, float* %42, align 4
+ %.pre12 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb2, %bb1
+ %45 = phi i32 [ %28, %bb1 ], [ %.pre12, %bb2 ] ; [#uses=1]
+ %46 = add nsw i32 %45, 1 ; [#uses=1]
+ store i32 %46, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI9btHashIntE9push_backERKS0_(%"struct.btAlignedObjectArray<btHashInt>"* nocapture %this, %struct.btHashInt* nocapture %_Val) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %this, i32 0, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.388.0.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.388.0.i ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb1
+
+bb.i: ; preds = %bb
+ %8 = icmp eq i32 %iftmp.388.0.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayI9btHashIntE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %9 = shl i32 %iftmp.388.0.i, 2 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %10 to %struct.btHashInt* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI9btHashIntE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayI9btHashIntE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %11 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %12 = phi %struct.btHashInt* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=3]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayI9btHashIntE4copyEiiPS0_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayI9btHashIntE8allocateEi.exit.i
+ %14 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=4]
+ %scevgep.i.i = getelementptr %struct.btHashInt* %12, i32 %indvar.i.i ; [#uses=1]
+ %15 = icmp eq %struct.btHashInt* %scevgep.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %scevgep10.i.i = getelementptr inbounds %struct.btHashInt* %12, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %16 = load %struct.btHashInt** %14, align 4 ; [#uses=1]
+ %scevgep89.i.i = getelementptr inbounds %struct.btHashInt* %16, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %17 = load i32* %scevgep89.i.i, align 4 ; [#uses=1]
+ store i32 %17, i32* %scevgep10.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI9btHashIntE4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI9btHashIntE4copyEiiPS0_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayI9btHashIntE8allocateEi.exit.i
+ %18 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %this, i32 0, i32 3 ; [#uses=3]
+ %19 = load %struct.btHashInt** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.btHashInt* %19, null ; [#uses=1]
+ br i1 %20, label %_ZN20btAlignedObjectArrayI9btHashIntE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI9btHashIntE4copyEiiPS0_.exit.i
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %this, i32 0, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %23 = bitcast %struct.btHashInt* %19 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btHashInt* null, %struct.btHashInt** %18, align 4
+ br label %_ZN20btAlignedObjectArrayI9btHashIntE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayI9btHashIntE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI9btHashIntE4copyEiiPS0_.exit.i
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store %struct.btHashInt* %12, %struct.btHashInt** %18, align 4
+ store i32 %iftmp.388.0.i, i32* %2, align 4
+ %.pre8 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayI9btHashIntE10deallocateEv.exit.i, %bb, %entry
+ %25 = phi i32 [ %.pre8, %_ZN20btAlignedObjectArrayI9btHashIntE10deallocateEv.exit.i ], [ %1, %entry ], [ %1, %bb ] ; [#uses=3]
+ %26 = getelementptr inbounds %"struct.btAlignedObjectArray<btHashInt>"* %this, i32 0, i32 3 ; [#uses=1]
+ %27 = load %struct.btHashInt** %26, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btHashInt* %27, i32 %25 ; [#uses=1]
+ %29 = icmp eq %struct.btHashInt* %28, null ; [#uses=1]
+ br i1 %29, label %bb4, label %bb2
+
+bb2: ; preds = %bb1
+ %30 = getelementptr inbounds %struct.btHashInt* %_Val, i32 0, i32 0 ; [#uses=1]
+ %31 = load i32* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btHashInt* %27, i32 %25, i32 0 ; [#uses=1]
+ store i32 %31, i32* %32, align 4
+ %.pre9 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb2, %bb1
+ %33 = phi i32 [ %25, %bb1 ], [ %.pre9, %bb2 ] ; [#uses=1]
+ %34 = add nsw i32 %33, 1 ; [#uses=1]
+ store i32 %34, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN9btHashMapI9btHashInt14btTriangleInfoE10growTablesERKS0_(%"struct.btHashMap<btHashInt,btTriangleInfo>"* nocapture %this, %struct.btHashInt* nocapture %unnamed_arg) align 2 {
+entry:
+ %0 = alloca i32, align 4 ; [#uses=2]
+ %1 = alloca i32, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 2, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=6]
+ %4 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=3]
+ %6 = icmp slt i32 %5, %3 ; [#uses=1]
+ br i1 %6, label %bb, label %return
+
+bb: ; preds = %entry
+ store i32 0, i32* %1, align 4
+ %7 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIiE6resizeEiRKi(%"struct.btAlignedObjectArray<int>"* %7, i32 %3, i32* %1) inlinehint
+ store i32 0, i32* %0, align 4
+ %8 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIiE6resizeEiRKi(%"struct.btAlignedObjectArray<int>"* %8, i32 %3, i32* %0) inlinehint
+ %9 = icmp sgt i32 %3, 0 ; [#uses=2]
+ br i1 %9, label %bb.nph14, label %bb8.preheader
+
+bb.nph14: ; preds = %bb
+ %10 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb1, %bb.nph14
+ %i.013 = phi i32 [ 0, %bb.nph14 ], [ %12, %bb1 ] ; [#uses=2]
+ %11 = load i32** %10, align 4 ; [#uses=1]
+ %scevgep20 = getelementptr i32* %11, i32 %i.013 ; [#uses=1]
+ store i32 -1, i32* %scevgep20, align 4
+ %12 = add nsw i32 %i.013, 1 ; [#uses=2]
+ %exitcond19 = icmp eq i32 %12, %3 ; [#uses=1]
+ br i1 %exitcond19, label %bb5.preheader, label %bb1
+
+bb5.preheader: ; preds = %bb1
+ br i1 %9, label %bb.nph12, label %bb8.preheader
+
+bb.nph12: ; preds = %bb5.preheader
+ %13 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb4, %bb.nph12
+ %i.111 = phi i32 [ 0, %bb.nph12 ], [ %15, %bb4 ] ; [#uses=2]
+ %14 = load i32** %13, align 4 ; [#uses=1]
+ %scevgep18 = getelementptr i32* %14, i32 %i.111 ; [#uses=1]
+ store i32 -1, i32* %scevgep18, align 4
+ %15 = add nsw i32 %i.111, 1 ; [#uses=2]
+ %exitcond17 = icmp eq i32 %15, %3 ; [#uses=1]
+ br i1 %exitcond17, label %bb8.preheader, label %bb4
+
+bb8.preheader: ; preds = %bb4, %bb5.preheader, %bb
+ %16 = icmp sgt i32 %5, 0 ; [#uses=1]
+ br i1 %16, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb8.preheader
+ %17 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %18 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %19 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 0, i32 3 ; [#uses=2]
+ br label %bb7
+
+bb7: ; preds = %bb7, %bb.nph
+ %20 = phi i32 [ 0, %bb.nph ], [ %43, %bb7 ] ; [#uses=4]
+ %21 = load %struct.btHashInt** %17, align 4 ; [#uses=1]
+ %scevgep1516 = getelementptr inbounds %struct.btHashInt* %21, i32 %20, i32 0 ; [#uses=1]
+ %22 = load i32* %scevgep1516, align 4 ; [#uses=2]
+ %23 = shl i32 %22, 15 ; [#uses=1]
+ %not.i = xor i32 %23, -1 ; [#uses=1]
+ %24 = add nsw i32 %22, %not.i ; [#uses=2]
+ %25 = ashr i32 %24, 10 ; [#uses=1]
+ %26 = xor i32 %25, %24 ; [#uses=1]
+ %27 = mul i32 %26, 9 ; [#uses=2]
+ %28 = ashr i32 %27, 6 ; [#uses=1]
+ %29 = xor i32 %28, %27 ; [#uses=2]
+ %30 = shl i32 %29, 11 ; [#uses=1]
+ %not2.i = xor i32 %30, -1 ; [#uses=1]
+ %31 = add nsw i32 %29, %not2.i ; [#uses=2]
+ %32 = ashr i32 %31, 16 ; [#uses=1]
+ %33 = xor i32 %32, %31 ; [#uses=1]
+ %34 = load i32* %2, align 4 ; [#uses=1]
+ %35 = add nsw i32 %34, -1 ; [#uses=1]
+ %36 = and i32 %33, %35 ; [#uses=2]
+ %37 = load i32** %18, align 4 ; [#uses=1]
+ %38 = load i32** %19, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds i32* %38, i32 %36 ; [#uses=1]
+ %40 = load i32* %39, align 4 ; [#uses=1]
+ %scevgep = getelementptr i32* %37, i32 %20 ; [#uses=1]
+ store i32 %40, i32* %scevgep, align 4
+ %41 = load i32** %19, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds i32* %41, i32 %36 ; [#uses=1]
+ store i32 %20, i32* %42, align 4
+ %43 = add nsw i32 %20, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %43, %5 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb7
+
+return: ; preds = %bb7, %bb8.preheader, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN9btHashMapI9btHashInt14btTriangleInfoE6insertERKS0_RKS1_(%"struct.btHashMap<btHashInt,btTriangleInfo>"* nocapture %this, %struct.btHashInt* nocapture %key, %struct.btTriangleInfo* nocapture %value) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHashInt* %key, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=3]
+ %2 = shl i32 %1, 15 ; [#uses=1]
+ %not.i = xor i32 %2, -1 ; [#uses=1]
+ %3 = add nsw i32 %1, %not.i ; [#uses=2]
+ %4 = ashr i32 %3, 10 ; [#uses=1]
+ %5 = xor i32 %4, %3 ; [#uses=1]
+ %6 = mul i32 %5, 9 ; [#uses=2]
+ %7 = ashr i32 %6, 6 ; [#uses=1]
+ %8 = xor i32 %7, %6 ; [#uses=2]
+ %9 = shl i32 %8, 11 ; [#uses=1]
+ %not2.i = xor i32 %9, -1 ; [#uses=1]
+ %10 = add nsw i32 %8, %not2.i ; [#uses=2]
+ %11 = ashr i32 %10, 16 ; [#uses=1]
+ %12 = xor i32 %11, %10 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 2, i32 2 ; [#uses=3]
+ %14 = load i32* %13, align 4 ; [#uses=2]
+ %15 = add nsw i32 %14, -1 ; [#uses=1]
+ %16 = and i32 %12, %15 ; [#uses=3]
+ %17 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load i32* %17, align 4 ; [#uses=1]
+ %19 = icmp ugt i32 %18, %16 ; [#uses=1]
+ br i1 %19, label %bb1.i, label %bb1
+
+bb1.i: ; preds = %entry
+ %20 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %21 = load i32** %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds i32* %21, i32 %16 ; [#uses=1]
+ %23 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb3.i
+
+bb2.i: ; preds = %bb4.i
+ %25 = load i32** %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds i32* %25, i32 %index.0.i ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb1.i
+ %index.0.in.i = phi i32* [ %22, %bb1.i ], [ %26, %bb2.i ] ; [#uses=1]
+ %index.0.i = load i32* %index.0.in.i, align 4 ; [#uses=7]
+ %27 = icmp eq i32 %index.0.i, -1 ; [#uses=1]
+ br i1 %27, label %bb1, label %bb4.i
+
+bb4.i: ; preds = %bb3.i
+ %28 = load %struct.btHashInt** %23, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btHashInt* %28, i32 %index.0.i, i32 0 ; [#uses=1]
+ %30 = load i32* %29, align 4 ; [#uses=1]
+ %31 = icmp eq i32 %1, %30 ; [#uses=1]
+ br i1 %31, label %bb, label %bb2.i
+
+bb: ; preds = %bb4.i
+ %32 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %33 = load %struct.btTriangleInfo** %32, align 4 ; [#uses=4]
+ %34 = getelementptr inbounds %struct.btTriangleInfo* %33, i32 %index.0.i, i32 0 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTriangleInfo* %value, i32 0, i32 0 ; [#uses=1]
+ %36 = load i32* %35, align 4 ; [#uses=1]
+ store i32 %36, i32* %34, align 4
+ %37 = getelementptr inbounds %struct.btTriangleInfo* %33, i32 %index.0.i, i32 1 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btTriangleInfo* %value, i32 0, i32 1 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %struct.btTriangleInfo* %33, i32 %index.0.i, i32 2 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btTriangleInfo* %value, i32 0, i32 2 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %struct.btTriangleInfo* %33, i32 %index.0.i, i32 3 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btTriangleInfo* %value, i32 0, i32 3 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %43, align 4
+ ret void
+
+bb1: ; preds = %bb3.i, %entry
+ %46 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %47 = load i32* %46, align 4 ; [#uses=2]
+ %48 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 2 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI14btTriangleInfoE9push_backERKS0_(%"struct.btAlignedObjectArray<btTriangleInfo>"* %48, %struct.btTriangleInfo* %value) inlinehint
+ %49 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 3 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI9btHashIntE9push_backERKS0_(%"struct.btAlignedObjectArray<btHashInt>"* %49, %struct.btHashInt* %key) inlinehint
+ %50 = load i32* %13, align 4 ; [#uses=1]
+ %51 = icmp slt i32 %14, %50 ; [#uses=1]
+ br i1 %51, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ tail call void @_ZN9btHashMapI9btHashInt14btTriangleInfoE10growTablesERKS0_(%"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, %struct.btHashInt* %key)
+ %52 = load i32* %0, align 4 ; [#uses=2]
+ %53 = shl i32 %52, 15 ; [#uses=1]
+ %not.i5 = xor i32 %53, -1 ; [#uses=1]
+ %54 = add nsw i32 %52, %not.i5 ; [#uses=2]
+ %55 = ashr i32 %54, 10 ; [#uses=1]
+ %56 = xor i32 %55, %54 ; [#uses=1]
+ %57 = mul i32 %56, 9 ; [#uses=2]
+ %58 = ashr i32 %57, 6 ; [#uses=1]
+ %59 = xor i32 %58, %57 ; [#uses=2]
+ %60 = shl i32 %59, 11 ; [#uses=1]
+ %not2.i6 = xor i32 %60, -1 ; [#uses=1]
+ %61 = add nsw i32 %59, %not2.i6 ; [#uses=2]
+ %62 = ashr i32 %61, 16 ; [#uses=1]
+ %63 = xor i32 %62, %61 ; [#uses=1]
+ %64 = load i32* %13, align 4 ; [#uses=1]
+ %65 = add nsw i32 %64, -1 ; [#uses=1]
+ %66 = and i32 %63, %65 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1
+ %hash.0 = phi i32 [ %66, %bb2 ], [ %16, %bb1 ] ; [#uses=2]
+ %67 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %68 = load i32** %67, align 4 ; [#uses=1]
+ %69 = getelementptr inbounds i32* %68, i32 %47 ; [#uses=1]
+ %70 = getelementptr inbounds %"struct.btHashMap<btHashInt,btTriangleInfo>"* %this, i32 0, i32 0, i32 3 ; [#uses=2]
+ %71 = load i32** %70, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds i32* %71, i32 %hash.0 ; [#uses=1]
+ %73 = load i32* %72, align 4 ; [#uses=1]
+ store i32 %73, i32* %69, align 4
+ %74 = load i32** %70, align 4 ; [#uses=1]
+ %75 = getelementptr inbounds i32* %74, i32 %hash.0 ; [#uses=1]
+ store i32 %47, i32* %75, align 4
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN16btManifoldResultC2EP17btCollisionObjectS1_(%struct.btManifoldResult* nocapture %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btManifoldResult, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %1, align 4
+ %2 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btCollisionObject* %body0, %struct.btCollisionObject** %2, align 4
+ %3 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btCollisionObject* %body1, %struct.btCollisionObject** %3, align 4
+ %4 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 4
+ %52 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ %55 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ store float %57, float* %55, align 4
+ %58 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ store float %60, float* %58, align 4
+ %61 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ store float %63, float* %61, align 4
+ %64 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %64, align 4
+ %67 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ store float %69, float* %67, align 4
+ %70 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %70, align 4
+ %73 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ store float %75, float* %73, align 4
+ %76 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ store float %78, float* %76, align 4
+ %79 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ store float %81, float* %79, align 4
+ %82 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %82, align 4
+ %85 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ store float %87, float* %85, align 4
+ %88 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ store float %90, float* %88, align 4
+ %91 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ store float %93, float* %91, align 4
+ %94 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %94, align 4
+ %97 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ store float %99, float* %97, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btManifoldResultD1Ev(%struct.btManifoldResult* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btManifoldResult, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btManifoldResultD0Ev(%struct.btManifoldResult* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btManifoldResult, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btManifoldResult* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btManifoldResult15addContactPointERK9btVector3S2_f(%struct.btManifoldResult* %this, %struct.btQuadWord* nocapture %normalOnBInWorld, %struct.btQuadWord* nocapture %pointInWorld, float %depth) align 2 {
+entry:
+ %newPt = alloca %struct.btManifoldPoint, align 8 ; [#uses=51]
+ %0 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 1 ; [#uses=4]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %2 = call float @_ZNK20btPersistentManifold27getContactBreakingThresholdEv(%struct.btPersistentManifold* %1) ; [#uses=1]
+ %3 = fcmp olt float %2, %depth ; [#uses=1]
+ br i1 %3, label %bb18, label %bb
+
+bb: ; preds = %entry
+ %4 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btPersistentManifold* %4, i32 0, i32 2 ; [#uses=1]
+ %6 = load i8** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 4 ; [#uses=4]
+ %8 = load %struct.btCollisionObject** %7, align 4 ; [#uses=1]
+ %9 = bitcast %struct.btCollisionObject* %8 to i8* ; [#uses=1]
+ %10 = icmp ne i8* %6, %9 ; [#uses=3]
+ %11 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=2]
+ %13 = fmul float %12, %depth ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=2]
+ %16 = fmul float %15, %depth ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ %19 = fmul float %18, %depth ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=4]
+ %22 = fadd float %21, %13 ; [#uses=3]
+ %23 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=4]
+ %25 = fadd float %24, %16 ; [#uses=3]
+ %26 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=4]
+ %28 = fadd float %27, %19 ; [#uses=3]
+ br i1 %10, label %bb2, label %bb4
+
+bb2: ; preds = %bb
+ %29 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fsub float %22, %30 ; [#uses=3]
+ %32 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fsub float %25, %33 ; [#uses=3]
+ %35 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = fsub float %28, %36 ; [#uses=3]
+ %38 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = load float* %45, align 4 ; [#uses=1]
+ %49 = load float* %44, align 4 ; [#uses=1]
+ %50 = load float* %43, align 4 ; [#uses=1]
+ %51 = load float* %42, align 4 ; [#uses=1]
+ %52 = load float* %41, align 4 ; [#uses=1]
+ %53 = load float* %40, align 4 ; [#uses=1]
+ %54 = load float* %39, align 4 ; [#uses=1]
+ %55 = load float* %38, align 4 ; [#uses=1]
+ %56 = fmul float %53, %37 ; [#uses=1]
+ %57 = fmul float %54, %34 ; [#uses=1]
+ %58 = fadd float %56, %57 ; [#uses=1]
+ %59 = fmul float %55, %31 ; [#uses=1]
+ %60 = fadd float %58, %59 ; [#uses=1]
+ %61 = fmul float %50, %37 ; [#uses=1]
+ %62 = fmul float %51, %34 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=1]
+ %64 = fmul float %52, %31 ; [#uses=1]
+ %65 = fadd float %63, %64 ; [#uses=1]
+ %66 = fmul float %47, %37 ; [#uses=1]
+ %67 = fmul float %48, %34 ; [#uses=1]
+ %68 = fadd float %66, %67 ; [#uses=1]
+ %69 = fmul float %49, %31 ; [#uses=1]
+ %70 = fadd float %68, %69 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fsub float %21, %72 ; [#uses=3]
+ %74 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = fsub float %24, %75 ; [#uses=3]
+ %77 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ %79 = fsub float %27, %78 ; [#uses=3]
+ %80 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ %90 = load float* %87, align 4 ; [#uses=1]
+ %91 = load float* %86, align 4 ; [#uses=1]
+ %92 = load float* %85, align 4 ; [#uses=1]
+ %93 = load float* %84, align 4 ; [#uses=1]
+ %94 = load float* %83, align 4 ; [#uses=1]
+ %95 = load float* %82, align 4 ; [#uses=1]
+ %96 = load float* %81, align 4 ; [#uses=1]
+ %97 = load float* %80, align 4 ; [#uses=1]
+ %98 = fmul float %95, %79 ; [#uses=1]
+ %99 = fmul float %96, %76 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %97, %73 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fmul float %92, %79 ; [#uses=1]
+ %104 = fmul float %93, %76 ; [#uses=1]
+ %105 = fadd float %103, %104 ; [#uses=1]
+ %106 = fmul float %94, %73 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = fmul float %89, %79 ; [#uses=1]
+ %109 = fmul float %90, %76 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = fmul float %91, %73 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=1]
+ br label %bb7
+
+bb4: ; preds = %bb
+ %113 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %114 = load float* %113, align 4 ; [#uses=1]
+ %115 = fsub float %22, %114 ; [#uses=3]
+ %116 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %117 = load float* %116, align 4 ; [#uses=1]
+ %118 = fsub float %25, %117 ; [#uses=3]
+ %119 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %120 = load float* %119, align 4 ; [#uses=1]
+ %121 = fsub float %28, %120 ; [#uses=3]
+ %122 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %124 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %126 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %128 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %130 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %131 = load float* %130, align 4 ; [#uses=1]
+ %132 = load float* %129, align 4 ; [#uses=1]
+ %133 = load float* %128, align 4 ; [#uses=1]
+ %134 = load float* %127, align 4 ; [#uses=1]
+ %135 = load float* %126, align 4 ; [#uses=1]
+ %136 = load float* %125, align 4 ; [#uses=1]
+ %137 = load float* %124, align 4 ; [#uses=1]
+ %138 = load float* %123, align 4 ; [#uses=1]
+ %139 = load float* %122, align 4 ; [#uses=1]
+ %140 = fmul float %137, %121 ; [#uses=1]
+ %141 = fmul float %138, %118 ; [#uses=1]
+ %142 = fadd float %140, %141 ; [#uses=1]
+ %143 = fmul float %139, %115 ; [#uses=1]
+ %144 = fadd float %142, %143 ; [#uses=1]
+ %145 = fmul float %134, %121 ; [#uses=1]
+ %146 = fmul float %135, %118 ; [#uses=1]
+ %147 = fadd float %145, %146 ; [#uses=1]
+ %148 = fmul float %136, %115 ; [#uses=1]
+ %149 = fadd float %147, %148 ; [#uses=1]
+ %150 = fmul float %131, %121 ; [#uses=1]
+ %151 = fmul float %132, %118 ; [#uses=1]
+ %152 = fadd float %150, %151 ; [#uses=1]
+ %153 = fmul float %133, %115 ; [#uses=1]
+ %154 = fadd float %152, %153 ; [#uses=1]
+ %155 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %156 = load float* %155, align 4 ; [#uses=1]
+ %157 = fsub float %21, %156 ; [#uses=3]
+ %158 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %159 = load float* %158, align 4 ; [#uses=1]
+ %160 = fsub float %24, %159 ; [#uses=3]
+ %161 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ %163 = fsub float %27, %162 ; [#uses=3]
+ %164 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %169 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %170 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %172 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %173 = load float* %172, align 4 ; [#uses=1]
+ %174 = load float* %171, align 4 ; [#uses=1]
+ %175 = load float* %170, align 4 ; [#uses=1]
+ %176 = load float* %169, align 4 ; [#uses=1]
+ %177 = load float* %168, align 4 ; [#uses=1]
+ %178 = load float* %167, align 4 ; [#uses=1]
+ %179 = load float* %166, align 4 ; [#uses=1]
+ %180 = load float* %165, align 4 ; [#uses=1]
+ %181 = load float* %164, align 4 ; [#uses=1]
+ %182 = fmul float %179, %163 ; [#uses=1]
+ %183 = fmul float %180, %160 ; [#uses=1]
+ %184 = fadd float %182, %183 ; [#uses=1]
+ %185 = fmul float %181, %157 ; [#uses=1]
+ %186 = fadd float %184, %185 ; [#uses=1]
+ %187 = fmul float %176, %163 ; [#uses=1]
+ %188 = fmul float %177, %160 ; [#uses=1]
+ %189 = fadd float %187, %188 ; [#uses=1]
+ %190 = fmul float %178, %157 ; [#uses=1]
+ %191 = fadd float %189, %190 ; [#uses=1]
+ %192 = fmul float %173, %163 ; [#uses=1]
+ %193 = fmul float %174, %160 ; [#uses=1]
+ %194 = fadd float %192, %193 ; [#uses=1]
+ %195 = fmul float %175, %157 ; [#uses=1]
+ %196 = fadd float %194, %195 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb4, %bb2
+ %localA.0.0.0 = phi float [ %70, %bb2 ], [ %154, %bb4 ] ; [#uses=1]
+ %localA.0.1.0 = phi float [ %65, %bb2 ], [ %149, %bb4 ] ; [#uses=1]
+ %localA.0.2.0 = phi float [ %60, %bb2 ], [ %144, %bb4 ] ; [#uses=1]
+ %localB.0.0.0 = phi float [ %112, %bb2 ], [ %196, %bb4 ] ; [#uses=1]
+ %localB.0.1.0 = phi float [ %107, %bb2 ], [ %191, %bb4 ] ; [#uses=1]
+ %localB.0.2.0 = phi float [ %102, %bb2 ], [ %186, %bb4 ] ; [#uses=1]
+ %197 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %localA.0.0.0, float* %197, align 8
+ %198 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %localA.0.1.0, float* %198, align 4
+ %199 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %localA.0.2.0, float* %199, align 8
+ %200 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %200, align 4
+ %201 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %localB.0.0.0, float* %201, align 8
+ %202 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %localB.0.1.0, float* %202, align 4
+ %203 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %localB.0.2.0, float* %203, align 8
+ %204 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %204, align 4
+ %205 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %18, float* %205, align 8
+ %206 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %15, float* %206, align 4
+ %207 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %12, float* %207, align 8
+ %208 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %209 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %210 = load float* %209, align 4 ; [#uses=1]
+ store float %210, float* %208, align 4
+ %211 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 5 ; [#uses=1]
+ store float %depth, float* %211, align 8
+ %212 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 6 ; [#uses=2]
+ store float 0.000000e+00, float* %212, align 4
+ %213 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 7 ; [#uses=2]
+ store float 0.000000e+00, float* %213, align 8
+ %214 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 12 ; [#uses=1]
+ store i8* null, i8** %214, align 4
+ %215 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %215, align 8
+ %216 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 14 ; [#uses=1]
+ store i8 0, i8* %216, align 4
+ %217 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 15 ; [#uses=1]
+ store float 0.000000e+00, float* %217, align 8
+ %218 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %218, align 4
+ %219 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 17 ; [#uses=1]
+ store float 0.000000e+00, float* %219, align 8
+ %220 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 18 ; [#uses=1]
+ store float 0.000000e+00, float* %220, align 4
+ %221 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 19 ; [#uses=1]
+ store float 0.000000e+00, float* %221, align 8
+ %222 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 20 ; [#uses=1]
+ store float 0.000000e+00, float* %222, align 4
+ %223 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 21 ; [#uses=1]
+ store i32 0, i32* %223, align 8
+ %224 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 24, i32 0, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %224, align 4
+ %225 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 24, i32 1, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %225, align 4
+ %226 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 24, i32 2, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %226, align 4
+ %227 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %28, float* %227, align 8
+ %228 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %25, float* %228, align 4
+ %229 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %22, float* %229, align 8
+ %230 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %230, align 4
+ %231 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %27, float* %231, align 8
+ %232 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %24, float* %232, align 4
+ %233 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %21, float* %233, align 8
+ %234 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %235 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %236 = load float* %235, align 4 ; [#uses=1]
+ store float %236, float* %234, align 4
+ %237 = call i32 @_ZNK20btPersistentManifold13getCacheEntryERK15btManifoldPoint(%struct.btPersistentManifold* %4, %struct.btManifoldPoint* %newPt) ; [#uses=11]
+ %238 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 5 ; [#uses=4]
+ %239 = load %struct.btCollisionObject** %238, align 4 ; [#uses=2]
+ %240 = load %struct.btCollisionObject** %7, align 4 ; [#uses=2]
+ %241 = getelementptr inbounds %struct.btCollisionObject* %240, i32 0, i32 17 ; [#uses=1]
+ %242 = load float* %241, align 4 ; [#uses=1]
+ %243 = getelementptr inbounds %struct.btCollisionObject* %239, i32 0, i32 17 ; [#uses=1]
+ %244 = load float* %243, align 4 ; [#uses=1]
+ %245 = fmul float %242, %244 ; [#uses=2]
+ %246 = fcmp olt float %245, -1.000000e+01 ; [#uses=1]
+ %friction.0.i = select i1 %246, float -1.000000e+01, float %245 ; [#uses=2]
+ %247 = fcmp ogt float %friction.0.i, 1.000000e+01 ; [#uses=1]
+ %friction.1.i = select i1 %247, float 1.000000e+01, float %friction.0.i ; [#uses=1]
+ store float %friction.1.i, float* %212, align 4
+ %248 = getelementptr inbounds %struct.btCollisionObject* %240, i32 0, i32 18 ; [#uses=1]
+ %249 = load float* %248, align 4 ; [#uses=1]
+ %250 = getelementptr inbounds %struct.btCollisionObject* %239, i32 0, i32 18 ; [#uses=1]
+ %251 = load float* %250, align 4 ; [#uses=1]
+ %252 = fmul float %249, %251 ; [#uses=1]
+ store float %252, float* %213, align 8
+ br i1 %10, label %bb9, label %bb10
+
+bb9: ; preds = %bb7
+ %253 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 7 ; [#uses=1]
+ %254 = load i32* %253, align 4 ; [#uses=1]
+ %255 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 8 ; [#uses=1]
+ store i32 %254, i32* %255, align 4
+ %256 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 6 ; [#uses=1]
+ %257 = load i32* %256, align 4 ; [#uses=1]
+ %258 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 9 ; [#uses=1]
+ store i32 %257, i32* %258, align 8
+ %259 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 9 ; [#uses=1]
+ %260 = load i32* %259, align 4 ; [#uses=1]
+ %261 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 10 ; [#uses=1]
+ store i32 %260, i32* %261, align 4
+ %262 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 8 ; [#uses=1]
+ %263 = load i32* %262, align 4 ; [#uses=1]
+ %264 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 11 ; [#uses=1]
+ store i32 %263, i32* %264, align 8
+ br label %bb11
+
+bb10: ; preds = %bb7
+ %265 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 6 ; [#uses=1]
+ %266 = load i32* %265, align 4 ; [#uses=1]
+ %267 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 8 ; [#uses=1]
+ store i32 %266, i32* %267, align 4
+ %268 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 7 ; [#uses=1]
+ %269 = load i32* %268, align 4 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 9 ; [#uses=1]
+ store i32 %269, i32* %270, align 8
+ %271 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 8 ; [#uses=1]
+ %272 = load i32* %271, align 4 ; [#uses=1]
+ %273 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 10 ; [#uses=1]
+ store i32 %272, i32* %273, align 4
+ %274 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 9 ; [#uses=1]
+ %275 = load i32* %274, align 4 ; [#uses=1]
+ %276 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 11 ; [#uses=1]
+ store i32 %275, i32* %276, align 8
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb9
+ %277 = icmp sgt i32 %237, -1 ; [#uses=1]
+ %278 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=10]
+ br i1 %277, label %bb12, label %bb13
+
+bb12: ; preds = %bb11
+ %279 = getelementptr inbounds %struct.btPersistentManifold* %278, i32 0, i32 1, i32 %237, i32 21 ; [#uses=2]
+ %280 = load i32* %279, align 4 ; [#uses=1]
+ %281 = getelementptr inbounds %struct.btPersistentManifold* %278, i32 0, i32 1, i32 %237, i32 24, i32 0, i32 5 ; [#uses=2]
+ %282 = load float* %281, align 4 ; [#uses=2]
+ %283 = getelementptr inbounds %struct.btPersistentManifold* %278, i32 0, i32 1, i32 %237, i32 24, i32 1, i32 5 ; [#uses=2]
+ %284 = load float* %283, align 4 ; [#uses=2]
+ %285 = getelementptr inbounds %struct.btPersistentManifold* %278, i32 0, i32 1, i32 %237, i32 24, i32 2, i32 5 ; [#uses=2]
+ %286 = load float* %285, align 4 ; [#uses=2]
+ %287 = getelementptr inbounds %struct.btPersistentManifold* %278, i32 0, i32 1, i32 %237, i32 12 ; [#uses=2]
+ %288 = load i8** %287, align 4 ; [#uses=1]
+ %289 = getelementptr inbounds %struct.btPersistentManifold* %278, i32 0, i32 1, i32 %237 ; [#uses=1]
+ %290 = bitcast %struct.btManifoldPoint* %289 to i8* ; [#uses=1]
+ %291 = bitcast %struct.btManifoldPoint* %newPt to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %290, i8* %291, i32 276, i32 4, i1 false) nounwind
+ store i8* %288, i8** %287, align 4
+ %292 = getelementptr inbounds %struct.btPersistentManifold* %278, i32 0, i32 1, i32 %237, i32 13 ; [#uses=1]
+ store float %282, float* %292, align 4
+ %293 = getelementptr inbounds %struct.btPersistentManifold* %278, i32 0, i32 1, i32 %237, i32 15 ; [#uses=1]
+ store float %284, float* %293, align 4
+ %294 = getelementptr inbounds %struct.btPersistentManifold* %278, i32 0, i32 1, i32 %237, i32 16 ; [#uses=1]
+ store float %286, float* %294, align 4
+ store float %282, float* %281, align 4
+ store float %284, float* %283, align 4
+ store float %286, float* %285, align 4
+ store i32 %280, i32* %279, align 4
+ br label %bb14
+
+bb13: ; preds = %bb11
+ %295 = call i32 @_ZN20btPersistentManifold16addManifoldPointERK15btManifoldPoint(%struct.btPersistentManifold* %278, %struct.btManifoldPoint* %newPt) ; [#uses=1]
+ br label %bb14
+
+bb14: ; preds = %bb13, %bb12
+ %insertIndex.0 = phi i32 [ %237, %bb12 ], [ %295, %bb13 ] ; [#uses=1]
+ %296 = load i8 (%struct.btManifoldPoint*, %struct.btCollisionObject*, i32, i32, %struct.btCollisionObject*, i32, i32)** @gContactAddedCallback, align 4 ; [#uses=2]
+ %297 = icmp eq i8 (%struct.btManifoldPoint*, %struct.btCollisionObject*, i32, i32, %struct.btCollisionObject*, i32, i32)* %296, null ; [#uses=1]
+ br i1 %297, label %bb18, label %bb15
+
+bb15: ; preds = %bb14
+ %298 = load %struct.btCollisionObject** %7, align 4 ; [#uses=2]
+ %299 = getelementptr inbounds %struct.btCollisionObject* %298, i32 0, i32 12 ; [#uses=1]
+ %300 = load i32* %299, align 4 ; [#uses=1]
+ %301 = and i32 %300, 8 ; [#uses=1]
+ %302 = icmp eq i32 %301, 0 ; [#uses=1]
+ br i1 %302, label %bb16, label %bb21
+
+bb16: ; preds = %bb15
+ %303 = load %struct.btCollisionObject** %238, align 4 ; [#uses=1]
+ %304 = getelementptr inbounds %struct.btCollisionObject* %303, i32 0, i32 12 ; [#uses=1]
+ %305 = load i32* %304, align 4 ; [#uses=1]
+ %306 = and i32 %305, 8 ; [#uses=1]
+ %307 = icmp eq i32 %306, 0 ; [#uses=1]
+ br i1 %307, label %bb18, label %bb21
+
+bb18: ; preds = %bb16, %bb14, %entry
+ ret void
+
+bb21: ; preds = %bb16, %bb15
+ br i1 %10, label %bb29, label %bb31
+
+bb29: ; preds = %bb21
+ %iftmp.157.054.pre = load %struct.btCollisionObject** %238, align 4 ; [#uses=1]
+ br label %bb31
+
+bb31: ; preds = %bb29, %bb21
+ %iftmp.157.054 = phi %struct.btCollisionObject* [ %iftmp.157.054.pre, %bb29 ], [ %298, %bb21 ] ; [#uses=1]
+ %iftmp.158.0.in = phi %struct.btCollisionObject** [ %7, %bb29 ], [ %238, %bb21 ] ; [#uses=1]
+ %iftmp.158.0 = load %struct.btCollisionObject** %iftmp.158.0.in, align 4 ; [#uses=1]
+ %308 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 11 ; [#uses=1]
+ %309 = load i32* %308, align 8 ; [#uses=1]
+ %310 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 9 ; [#uses=1]
+ %311 = load i32* %310, align 8 ; [#uses=1]
+ %312 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 10 ; [#uses=1]
+ %313 = load i32* %312, align 4 ; [#uses=1]
+ %314 = getelementptr inbounds %struct.btManifoldPoint* %newPt, i32 0, i32 8 ; [#uses=1]
+ %315 = load i32* %314, align 4 ; [#uses=1]
+ %316 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %317 = getelementptr inbounds %struct.btPersistentManifold* %316, i32 0, i32 1, i32 %insertIndex.0 ; [#uses=1]
+ %318 = call zeroext i8 %296(%struct.btManifoldPoint* %317, %struct.btCollisionObject* %iftmp.157.054, i32 %315, i32 %313, %struct.btCollisionObject* %iftmp.158.0, i32 %311, i32 %309) ; [#uses=0]
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btManifoldResultC1EP17btCollisionObjectS1_(%struct.btManifoldResult* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btManifoldResult, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %1, align 4
+ %2 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btCollisionObject* %body0, %struct.btCollisionObject** %2, align 4
+ %3 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btCollisionObject* %body1, %struct.btCollisionObject** %3, align 4
+ %4 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 4
+ %52 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ %55 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ store float %57, float* %55, align 4
+ %58 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ store float %60, float* %58, align 4
+ %61 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ store float %63, float* %61, align 4
+ %64 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %64, align 4
+ %67 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ store float %69, float* %67, align 4
+ %70 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %70, align 4
+ %73 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ store float %75, float* %73, align 4
+ %76 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ store float %78, float* %76, align 4
+ %79 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ store float %81, float* %79, align 4
+ %82 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %82, align 4
+ %85 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ store float %87, float* %85, align 4
+ %88 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ store float %90, float* %88, align 4
+ %91 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ store float %93, float* %91, align 4
+ %94 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %94, align 4
+ %97 = getelementptr inbounds %struct.btManifoldResult* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ store float %99, float* %97, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN25btSimulationIslandManagerC2Ev(%struct.btSimulationIslandManager* %this) align 2 {
+invcont1:
+ %0 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btSimulationIslandManager, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN11btUnionFindC1Ev(%struct.btPairSet* %1)
+ %2 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %3, align 4
+ %4 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %6, align 4
+ %7 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %7, align 4
+ %8 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %10, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btSimulationIslandManager10findUnionsEP12btDispatcherP16btCollisionWorld(%struct.btSimulationIslandManager* nocapture %this, %struct.btActionInterface* nocapture %unnamed_arg, %struct.btCollisionWorld* nocapture %colWorld) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %colWorld, i32 0, i32 5 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 9 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to %struct..0btMultiSapOverlapFilterCallback* (%struct.btActionInterface*)* ; [#uses=1]
+ %7 = tail call %struct..0btMultiSapOverlapFilterCallback* %6(%struct.btActionInterface* %1) ; [#uses=3]
+ %8 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %7, i32 0, i32 0, i32 0 ; [#uses=2]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 9 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to i32 (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %13 = tail call i32 %12(%struct..0btMultiSapOverlapFilterCallback* %7) ; [#uses=2]
+ %14 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds i32 (...)** %14, i32 5 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to %struct.btBroadphasePair* (%struct..0btMultiSapOverlapFilterCallback*)* ; [#uses=1]
+ %18 = tail call %struct.btBroadphasePair* %17(%struct..0btMultiSapOverlapFilterCallback* %7) ; [#uses=2]
+ %19 = icmp sgt i32 %13, 0 ; [#uses=1]
+ br i1 %19, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %20 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=4]
+ br label %bb
+
+bb: ; preds = %bb16, %bb.nph
+ %i.023 = phi i32 [ 0, %bb.nph ], [ %81, %bb16 ] ; [#uses=3]
+ %scevgep27 = getelementptr inbounds %struct.btBroadphasePair* %18, i32 %i.023, i32 0 ; [#uses=1]
+ %scevgep28 = getelementptr %struct.btBroadphasePair* %18, i32 %i.023, i32 1 ; [#uses=1]
+ %21 = load %struct.btBroadphaseProxy** %scevgep27, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btBroadphaseProxy* %21, i32 0, i32 0 ; [#uses=1]
+ %23 = load i8** %22, align 4 ; [#uses=3]
+ %24 = load %struct.btBroadphaseProxy** %scevgep28, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btBroadphaseProxy* %24, i32 0, i32 0 ; [#uses=1]
+ %26 = load i8** %25, align 4 ; [#uses=3]
+ %27 = icmp eq i8* %23, null ; [#uses=1]
+ br i1 %27, label %bb16, label %bb1
+
+bb1: ; preds = %bb
+ %28 = getelementptr inbounds i8* %23, i32 204 ; [#uses=1]
+ %29 = bitcast i8* %28 to i32* ; [#uses=1]
+ %30 = load i32* %29, align 4 ; [#uses=1]
+ %31 = and i32 %30, 7 ; [#uses=1]
+ %toBoolnot = icmp ne i32 %31, 0 ; [#uses=1]
+ %32 = icmp eq i8* %26, null ; [#uses=1]
+ %or.cond = or i1 %32, %toBoolnot ; [#uses=1]
+ br i1 %or.cond, label %bb16, label %bb6
+
+bb6: ; preds = %bb1
+ %33 = getelementptr inbounds i8* %26, i32 204 ; [#uses=1]
+ %34 = bitcast i8* %33 to i32* ; [#uses=1]
+ %35 = load i32* %34, align 4 ; [#uses=1]
+ %36 = and i32 %35, 7 ; [#uses=1]
+ %37 = icmp eq i32 %36, 0 ; [#uses=1]
+ br i1 %37, label %bb15, label %bb16
+
+bb15: ; preds = %bb6
+ %38 = getelementptr inbounds i8* %26, i32 208 ; [#uses=1]
+ %39 = bitcast i8* %38 to i32* ; [#uses=1]
+ %40 = load i32* %39, align 4 ; [#uses=4]
+ %41 = getelementptr inbounds i8* %23, i32 208 ; [#uses=1]
+ %42 = bitcast i8* %41 to i32* ; [#uses=1]
+ %43 = load i32* %42, align 4 ; [#uses=4]
+ %44 = load %struct.CONTACT_KEY_TOKEN** %20, align 4 ; [#uses=3]
+ %45 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %44, i32 %43, i32 0 ; [#uses=1]
+ %46 = load i32* %45, align 4 ; [#uses=2]
+ %47 = icmp eq i32 %46, %43 ; [#uses=1]
+ br i1 %47, label %_ZN11btUnionFind4findEi.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %bb.i.i, %bb15
+ %48 = phi i32 [ %56, %bb.i.i ], [ %46, %bb15 ] ; [#uses=1]
+ %49 = phi %struct.CONTACT_KEY_TOKEN* [ %54, %bb.i.i ], [ %44, %bb15 ] ; [#uses=2]
+ %x_addr.04.i.i = phi i32 [ %53, %bb.i.i ], [ %43, %bb15 ] ; [#uses=1]
+ %50 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %49, i32 %x_addr.04.i.i, i32 0 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %49, i32 %48, i32 0 ; [#uses=2]
+ %52 = load i32* %51, align 4 ; [#uses=1]
+ store i32 %52, i32* %50, align 4
+ %53 = load i32* %51, align 4 ; [#uses=4]
+ %54 = load %struct.CONTACT_KEY_TOKEN** %20, align 4 ; [#uses=3]
+ %55 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %54, i32 %53, i32 0 ; [#uses=1]
+ %56 = load i32* %55, align 4 ; [#uses=2]
+ %57 = icmp eq i32 %56, %53 ; [#uses=1]
+ br i1 %57, label %_ZN11btUnionFind4findEi.exit.i, label %bb.i.i
+
+_ZN11btUnionFind4findEi.exit.i: ; preds = %bb.i.i, %bb15
+ %58 = phi %struct.CONTACT_KEY_TOKEN* [ %44, %bb15 ], [ %54, %bb.i.i ] ; [#uses=3]
+ %x_addr.0.lcssa.i.i = phi i32 [ %43, %bb15 ], [ %53, %bb.i.i ] ; [#uses=3]
+ %59 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %58, i32 %40, i32 0 ; [#uses=1]
+ %60 = load i32* %59, align 4 ; [#uses=2]
+ %61 = icmp eq i32 %60, %40 ; [#uses=1]
+ br i1 %61, label %_ZN11btUnionFind4findEi.exit5.i, label %bb.i3.i
+
+bb.i3.i: ; preds = %bb.i3.i, %_ZN11btUnionFind4findEi.exit.i
+ %62 = phi i32 [ %70, %bb.i3.i ], [ %60, %_ZN11btUnionFind4findEi.exit.i ] ; [#uses=1]
+ %63 = phi %struct.CONTACT_KEY_TOKEN* [ %68, %bb.i3.i ], [ %58, %_ZN11btUnionFind4findEi.exit.i ] ; [#uses=2]
+ %x_addr.04.i2.i = phi i32 [ %67, %bb.i3.i ], [ %40, %_ZN11btUnionFind4findEi.exit.i ] ; [#uses=1]
+ %64 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %63, i32 %x_addr.04.i2.i, i32 0 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %63, i32 %62, i32 0 ; [#uses=2]
+ %66 = load i32* %65, align 4 ; [#uses=1]
+ store i32 %66, i32* %64, align 4
+ %67 = load i32* %65, align 4 ; [#uses=4]
+ %68 = load %struct.CONTACT_KEY_TOKEN** %20, align 4 ; [#uses=3]
+ %69 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %68, i32 %67, i32 0 ; [#uses=1]
+ %70 = load i32* %69, align 4 ; [#uses=2]
+ %71 = icmp eq i32 %70, %67 ; [#uses=1]
+ br i1 %71, label %_ZN11btUnionFind4findEi.exit5.i, label %bb.i3.i
+
+_ZN11btUnionFind4findEi.exit5.i: ; preds = %bb.i3.i, %_ZN11btUnionFind4findEi.exit.i
+ %72 = phi %struct.CONTACT_KEY_TOKEN* [ %58, %_ZN11btUnionFind4findEi.exit.i ], [ %68, %bb.i3.i ] ; [#uses=1]
+ %x_addr.0.lcssa.i4.i = phi i32 [ %40, %_ZN11btUnionFind4findEi.exit.i ], [ %67, %bb.i3.i ] ; [#uses=3]
+ %73 = icmp eq i32 %x_addr.0.lcssa.i.i, %x_addr.0.lcssa.i4.i ; [#uses=1]
+ br i1 %73, label %bb16, label %bb.i
+
+bb.i: ; preds = %_ZN11btUnionFind4findEi.exit5.i
+ %74 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %72, i32 %x_addr.0.lcssa.i.i, i32 0 ; [#uses=1]
+ store i32 %x_addr.0.lcssa.i4.i, i32* %74, align 4
+ %75 = load %struct.CONTACT_KEY_TOKEN** %20, align 4 ; [#uses=2]
+ %76 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %75, i32 %x_addr.0.lcssa.i4.i, i32 1 ; [#uses=2]
+ %77 = load i32* %76, align 4 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %75, i32 %x_addr.0.lcssa.i.i, i32 1 ; [#uses=1]
+ %79 = load i32* %78, align 4 ; [#uses=1]
+ %80 = add nsw i32 %79, %77 ; [#uses=1]
+ store i32 %80, i32* %76, align 4
+ br label %bb16
+
+bb16: ; preds = %bb.i, %_ZN11btUnionFind4findEi.exit5.i, %bb6, %bb1, %bb
+ %81 = add nsw i32 %i.023, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %81, %13 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb16, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btSimulationIslandManager26storeIslandActivationStateEP16btCollisionWorld(%struct.btSimulationIslandManager* nocapture %this, %struct.btCollisionWorld* nocapture %colWorld) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %colWorld, i32 0, i32 1, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btCollisionWorld* %colWorld, i32 0, i32 1, i32 3 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ br label %bb
+
+bb: ; preds = %bb5, %bb.nph
+ %5 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb5 ] ; [#uses=3]
+ %index.19 = phi i32 [ 0, %bb.nph ], [ %index.0, %bb5 ] ; [#uses=7]
+ %tmp = add i32 %5, 1 ; [#uses=2]
+ %6 = load %struct.btCollisionObject*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %6, i32 %5 ; [#uses=1]
+ %7 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=5]
+ %8 = getelementptr inbounds %struct.btCollisionObject* %7, i32 0, i32 12 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %10 = and i32 %9, 3 ; [#uses=1]
+ %11 = icmp eq i32 %10, 0 ; [#uses=1]
+ br i1 %11, label %bb3, label %bb4
+
+bb3: ; preds = %bb
+ %12 = load %struct.CONTACT_KEY_TOKEN** %4, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %12, i32 %index.19, i32 0 ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=2]
+ %15 = icmp eq i32 %14, %index.19 ; [#uses=1]
+ br i1 %15, label %_ZN11btUnionFind4findEi.exit, label %bb.i
+
+bb.i: ; preds = %bb.i, %bb3
+ %16 = phi i32 [ %24, %bb.i ], [ %14, %bb3 ] ; [#uses=1]
+ %17 = phi %struct.CONTACT_KEY_TOKEN* [ %22, %bb.i ], [ %12, %bb3 ] ; [#uses=2]
+ %x_addr.04.i = phi i32 [ %21, %bb.i ], [ %index.19, %bb3 ] ; [#uses=1]
+ %18 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %17, i32 %x_addr.04.i, i32 0 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %17, i32 %16, i32 0 ; [#uses=2]
+ %20 = load i32* %19, align 4 ; [#uses=1]
+ store i32 %20, i32* %18, align 4
+ %21 = load i32* %19, align 4 ; [#uses=4]
+ %22 = load %struct.CONTACT_KEY_TOKEN** %4, align 4 ; [#uses=2]
+ %23 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %22, i32 %21, i32 0 ; [#uses=1]
+ %24 = load i32* %23, align 4 ; [#uses=2]
+ %25 = icmp eq i32 %24, %21 ; [#uses=1]
+ br i1 %25, label %_ZN11btUnionFind4findEi.exit, label %bb.i
+
+_ZN11btUnionFind4findEi.exit: ; preds = %bb.i, %bb3
+ %x_addr.0.lcssa.i = phi i32 [ %index.19, %bb3 ], [ %21, %bb.i ] ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btCollisionObject* %7, i32 0, i32 13 ; [#uses=1]
+ store i32 %x_addr.0.lcssa.i, i32* %26, align 4
+ %27 = load %struct.CONTACT_KEY_TOKEN** %4, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %27, i32 %index.19, i32 1 ; [#uses=1]
+ store i32 %5, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btCollisionObject* %7, i32 0, i32 14 ; [#uses=1]
+ store i32 -1, i32* %29, align 4
+ %30 = add nsw i32 %index.19, 1 ; [#uses=1]
+ br label %bb5
+
+bb4: ; preds = %bb
+ %31 = getelementptr inbounds %struct.btCollisionObject* %7, i32 0, i32 13 ; [#uses=1]
+ store i32 -1, i32* %31, align 4
+ %32 = getelementptr inbounds %struct.btCollisionObject* %7, i32 0, i32 14 ; [#uses=1]
+ store i32 -2, i32* %32, align 4
+ br label %bb5
+
+bb5: ; preds = %bb4, %_ZN11btUnionFind4findEi.exit
+ %index.0 = phi i32 [ %30, %_ZN11btUnionFind4findEi.exit ], [ %index.19, %bb4 ] ; [#uses=1]
+ %33 = load i32* %0, align 4 ; [#uses=1]
+ %34 = icmp sgt i32 %33, %tmp ; [#uses=1]
+ br i1 %34, label %bb, label %return
+
+return: ; preds = %bb5, %entry
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE17quickSortInternalI33btPersistentManifoldSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* nocapture byval align 4 %CompareFunc, i32 %lo, i32 %hi) nounwind align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %1 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %this, i32 0, i32 3 ; [#uses=3]
+ %3 = load %struct.btPersistentManifold*** %2, align 4 ; [#uses=1]
+ %4 = add nsw i32 %hi, %lo ; [#uses=1]
+ %5 = sdiv i32 %4, 2 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btPersistentManifold** %3, i32 %5 ; [#uses=1]
+ %7 = load %struct.btPersistentManifold** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btPersistentManifold* %7, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btPersistentManifold* %7, i32 0, i32 3 ; [#uses=2]
+ br label %bb1.outer
+
+bb1.outer: ; preds = %bb7, %entry
+ %i.0.ph = phi i32 [ %lo, %entry ], [ %i.1, %bb7 ] ; [#uses=2]
+ %j.1.ph = phi i32 [ %hi, %entry ], [ %j.2, %bb7 ] ; [#uses=2]
+ %10 = load %struct.btPersistentManifold*** %2, align 4 ; [#uses=5]
+ %11 = load i8** %8, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i8* %11, i32 208 ; [#uses=1]
+ %13 = bitcast i8* %12 to i32* ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=3]
+ %15 = icmp sgt i32 %14, -1 ; [#uses=2]
+ br i1 %15, label %bb1.us, label %bb1
+
+bb1.us: ; preds = %bb.us, %bb1.outer
+ %indvar = phi i32 [ %indvar.next, %bb.us ], [ 0, %bb1.outer ] ; [#uses=2]
+ %i.0.us = add i32 %i.0.ph, %indvar ; [#uses=2]
+ %scevgep = getelementptr %struct.btPersistentManifold** %10, i32 %i.0.us ; [#uses=1]
+ %16 = load %struct.btPersistentManifold** %scevgep, align 4 ; [#uses=3]
+ %17 = getelementptr inbounds %struct.btPersistentManifold* %16, i32 0, i32 2 ; [#uses=1]
+ %18 = load i8** %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i8* %18, i32 208 ; [#uses=1]
+ %20 = bitcast i8* %19 to i32* ; [#uses=1]
+ %21 = load i32* %20, align 4 ; [#uses=2]
+ %22 = icmp sgt i32 %21, -1 ; [#uses=1]
+ br i1 %22, label %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit.us, label %bb1.i.i.us
+
+bb.us: ; preds = %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit.us
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb1.us
+
+_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit.us: ; preds = %bb1.i.i.us, %bb1.us
+ %23 = phi i32 [ %29, %bb1.i.i.us ], [ %21, %bb1.us ] ; [#uses=1]
+ %24 = icmp slt i32 %23, %14 ; [#uses=1]
+ br i1 %24, label %bb.us, label %bb3.preheader
+
+bb1.i.i.us: ; preds = %bb1.us
+ %25 = getelementptr inbounds %struct.btPersistentManifold* %16, i32 0, i32 3 ; [#uses=1]
+ %26 = load i8** %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds i8* %26, i32 208 ; [#uses=1]
+ %28 = bitcast i8* %27 to i32* ; [#uses=1]
+ %29 = load i32* %28, align 4 ; [#uses=1]
+ br label %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit.us
+
+bb: ; preds = %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit
+ %indvar.next30 = add i32 %indvar29, 1 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb, %bb1.outer
+ %indvar29 = phi i32 [ %indvar.next30, %bb ], [ 0, %bb1.outer ] ; [#uses=2]
+ %i.0 = add i32 %i.0.ph, %indvar29 ; [#uses=2]
+ %scevgep32 = getelementptr %struct.btPersistentManifold** %10, i32 %i.0 ; [#uses=1]
+ %30 = load %struct.btPersistentManifold** %scevgep32, align 4 ; [#uses=3]
+ %31 = getelementptr inbounds %struct.btPersistentManifold* %30, i32 0, i32 2 ; [#uses=1]
+ %32 = load i8** %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i8* %32, i32 208 ; [#uses=1]
+ %34 = bitcast i8* %33 to i32* ; [#uses=1]
+ %35 = load i32* %34, align 4 ; [#uses=2]
+ %36 = icmp sgt i32 %35, -1 ; [#uses=1]
+ br i1 %36, label %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb1
+ %37 = getelementptr inbounds %struct.btPersistentManifold* %30, i32 0, i32 3 ; [#uses=1]
+ %38 = load i8** %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds i8* %38, i32 208 ; [#uses=1]
+ %40 = bitcast i8* %39 to i32* ; [#uses=1]
+ %41 = load i32* %40, align 4 ; [#uses=1]
+ br label %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit
+
+_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit: ; preds = %bb1.i.i, %bb1
+ %42 = phi i32 [ %41, %bb1.i.i ], [ %35, %bb1 ] ; [#uses=1]
+ %43 = load i8** %9, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds i8* %43, i32 208 ; [#uses=1]
+ %45 = bitcast i8* %44 to i32* ; [#uses=1]
+ %46 = load i32* %45, align 4 ; [#uses=1]
+ %47 = icmp slt i32 %42, %46 ; [#uses=1]
+ br i1 %47, label %bb, label %bb3.preheader
+
+bb3.preheader: ; preds = %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit, %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit.us
+ %48 = phi %struct.btPersistentManifold* [ %16, %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit.us ], [ %30, %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit ] ; [#uses=1]
+ %i.0.lcssa = phi i32 [ %i.0.us, %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit.us ], [ %i.0, %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit ] ; [#uses=4]
+ br i1 %15, label %_Z11getIslandIdPK20btPersistentManifold.exit.i14.us, label %_Z11getIslandIdPK20btPersistentManifold.exit.i14
+
+bb2.us: ; preds = %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17.us
+ %indvar.next19 = add i32 %indvar18, 1 ; [#uses=1]
+ br label %_Z11getIslandIdPK20btPersistentManifold.exit.i14.us
+
+_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17.us: ; preds = %_Z11getIslandIdPK20btPersistentManifold.exit.i14.us, %bb1.i4.i15.us
+ %49 = phi i32 [ %55, %bb1.i4.i15.us ], [ %61, %_Z11getIslandIdPK20btPersistentManifold.exit.i14.us ] ; [#uses=1]
+ %50 = icmp slt i32 %14, %49 ; [#uses=1]
+ br i1 %50, label %bb2.us, label %bb5
+
+bb1.i4.i15.us: ; preds = %_Z11getIslandIdPK20btPersistentManifold.exit.i14.us
+ %51 = getelementptr inbounds %struct.btPersistentManifold* %56, i32 0, i32 3 ; [#uses=1]
+ %52 = load i8** %51, align 4 ; [#uses=1]
+ %53 = getelementptr inbounds i8* %52, i32 208 ; [#uses=1]
+ %54 = bitcast i8* %53 to i32* ; [#uses=1]
+ %55 = load i32* %54, align 4 ; [#uses=1]
+ br label %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17.us
+
+_Z11getIslandIdPK20btPersistentManifold.exit.i14.us: ; preds = %bb2.us, %bb3.preheader
+ %indvar18 = phi i32 [ %indvar.next19, %bb2.us ], [ 0, %bb3.preheader ] ; [#uses=2]
+ %j.0.us = sub i32 %j.1.ph, %indvar18 ; [#uses=2]
+ %scevgep21 = getelementptr %struct.btPersistentManifold** %10, i32 %j.0.us ; [#uses=1]
+ %56 = load %struct.btPersistentManifold** %scevgep21, align 4 ; [#uses=3]
+ %57 = getelementptr inbounds %struct.btPersistentManifold* %56, i32 0, i32 2 ; [#uses=1]
+ %58 = load i8** %57, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds i8* %58, i32 208 ; [#uses=1]
+ %60 = bitcast i8* %59 to i32* ; [#uses=1]
+ %61 = load i32* %60, align 4 ; [#uses=2]
+ %62 = icmp sgt i32 %61, -1 ; [#uses=1]
+ br i1 %62, label %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17.us, label %bb1.i4.i15.us
+
+bb2: ; preds = %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17
+ %indvar.next24 = add i32 %indvar23, 1 ; [#uses=1]
+ br label %_Z11getIslandIdPK20btPersistentManifold.exit.i14
+
+_Z11getIslandIdPK20btPersistentManifold.exit.i14: ; preds = %bb2, %bb3.preheader
+ %indvar23 = phi i32 [ %indvar.next24, %bb2 ], [ 0, %bb3.preheader ] ; [#uses=2]
+ %j.0 = sub i32 %j.1.ph, %indvar23 ; [#uses=2]
+ %scevgep27 = getelementptr %struct.btPersistentManifold** %10, i32 %j.0 ; [#uses=1]
+ %63 = load %struct.btPersistentManifold** %scevgep27, align 4 ; [#uses=3]
+ %64 = load i8** %9, align 4 ; [#uses=1]
+ %65 = getelementptr inbounds i8* %64, i32 208 ; [#uses=1]
+ %66 = bitcast i8* %65 to i32* ; [#uses=1]
+ %67 = load i32* %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btPersistentManifold* %63, i32 0, i32 2 ; [#uses=1]
+ %69 = load i8** %68, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds i8* %69, i32 208 ; [#uses=1]
+ %71 = bitcast i8* %70 to i32* ; [#uses=1]
+ %72 = load i32* %71, align 4 ; [#uses=2]
+ %73 = icmp sgt i32 %72, -1 ; [#uses=1]
+ br i1 %73, label %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17, label %bb1.i4.i15
+
+bb1.i4.i15: ; preds = %_Z11getIslandIdPK20btPersistentManifold.exit.i14
+ %74 = getelementptr inbounds %struct.btPersistentManifold* %63, i32 0, i32 3 ; [#uses=1]
+ %75 = load i8** %74, align 4 ; [#uses=1]
+ %76 = getelementptr inbounds i8* %75, i32 208 ; [#uses=1]
+ %77 = bitcast i8* %76 to i32* ; [#uses=1]
+ %78 = load i32* %77, align 4 ; [#uses=1]
+ br label %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17
+
+_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17: ; preds = %bb1.i4.i15, %_Z11getIslandIdPK20btPersistentManifold.exit.i14
+ %79 = phi i32 [ %78, %bb1.i4.i15 ], [ %72, %_Z11getIslandIdPK20btPersistentManifold.exit.i14 ] ; [#uses=1]
+ %80 = icmp slt i32 %67, %79 ; [#uses=1]
+ br i1 %80, label %bb2, label %bb5
+
+bb5: ; preds = %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17, %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17.us
+ %81 = phi %struct.btPersistentManifold* [ %56, %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17.us ], [ %63, %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17 ] ; [#uses=1]
+ %j.0.lcssa = phi i32 [ %j.0.us, %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17.us ], [ %j.0, %_ZN33btPersistentManifoldSortPredicateclEPK20btPersistentManifoldS2_.exit17 ] ; [#uses=4]
+ %82 = icmp sgt i32 %i.0.lcssa, %j.0.lcssa ; [#uses=1]
+ br i1 %82, label %bb7, label %bb6
+
+bb6: ; preds = %bb5
+ %83 = getelementptr inbounds %struct.btPersistentManifold** %10, i32 %i.0.lcssa ; [#uses=1]
+ store %struct.btPersistentManifold* %81, %struct.btPersistentManifold** %83, align 4
+ %84 = load %struct.btPersistentManifold*** %2, align 4 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btPersistentManifold** %84, i32 %j.0.lcssa ; [#uses=1]
+ store %struct.btPersistentManifold* %48, %struct.btPersistentManifold** %85, align 4
+ %86 = add nsw i32 %i.0.lcssa, 1 ; [#uses=1]
+ %87 = add nsw i32 %j.0.lcssa, -1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5
+ %i.1 = phi i32 [ %86, %bb6 ], [ %i.0.lcssa, %bb5 ] ; [#uses=4]
+ %j.2 = phi i32 [ %87, %bb6 ], [ %j.0.lcssa, %bb5 ] ; [#uses=4]
+ %88 = icmp sgt i32 %i.1, %j.2 ; [#uses=1]
+ br i1 %88, label %bb8, label %bb1.outer
+
+bb8: ; preds = %bb7
+ %89 = icmp sgt i32 %j.2, %lo ; [#uses=1]
+ br i1 %89, label %bb9, label %bb10
+
+bb9: ; preds = %bb8
+ call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE17quickSortInternalI33btPersistentManifoldSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %1, i32 %lo, i32 %j.2)
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb8
+ %90 = icmp slt i32 %i.1, %hi ; [#uses=1]
+ br i1 %90, label %bb11, label %return
+
+bb11: ; preds = %bb10
+ call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE17quickSortInternalI33btPersistentManifoldSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 %i.1, i32 %hi)
+ ret void
+
+return: ; preds = %bb10
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btSimulationIslandManager12buildIslandsEP12btDispatcherP16btCollisionWorld(%struct.btSimulationIslandManager* %this, %struct.btActionInterface* %dispatcher, %struct.btCollisionWorld* nocapture %collisionWorld) align 2 {
+entry:
+ tail call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([28 x i8]* @.str30, i32 0, i32 0))
+ %0 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 1 ; [#uses=7]
+ %1 = load i32* %0, align 4 ; [#uses=4]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ %.not = xor i1 %2, true ; [#uses=1]
+ %3 = icmp slt i32 %1, 0 ; [#uses=1]
+ %or.cond = and i1 %.not, %3 ; [#uses=1]
+ br i1 %or.cond, label %bb4.i, label %invcont
+
+bb4.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 2 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp slt i32 %5, 0 ; [#uses=1]
+ br i1 %6, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i, label %bb.nph.i
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i: ; preds = %bb4.i
+ %7 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %8 = load %struct.btPersistentManifold*** %7, align 4 ; [#uses=2]
+ %9 = icmp eq %struct.btPersistentManifold** %8, null ; [#uses=1]
+ br i1 %9, label %bb11.preheader.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i
+ %10 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %11 = load i8* %10, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %11, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %12 = bitcast %struct.btPersistentManifold** %8 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %12)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %7, align 4
+ br label %bb11.preheader.i
+
+bb11.preheader.i: ; preds = %bb2.i.i.i, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i
+ %13 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %13, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %7, align 4
+ store i32 0, i32* %4, align 4
+ br label %bb.nph.i
+
+bb.nph.i: ; preds = %bb11.preheader.i, %bb4.i
+ %14 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %tmp.i = sub i32 0, %1 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb10.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb10.i ] ; [#uses=2]
+ %tmp = add i32 %1, %indvar.i ; [#uses=1]
+ %15 = load %struct.btPersistentManifold*** %14, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btPersistentManifold** %15, i32 %tmp ; [#uses=2]
+ %16 = icmp eq %struct.btPersistentManifold** %scevgep, null ; [#uses=1]
+ br i1 %16, label %bb10.i, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %scevgep, align 4
+ br label %bb10.i
+
+bb10.i: ; preds = %bb8.i, %bb7.i
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %tmp.i ; [#uses=1]
+ br i1 %exitcond, label %invcont, label %bb7.i
+
+invcont: ; preds = %bb10.i, %entry
+ store i32 0, i32* %0, align 4
+ %17 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1 ; [#uses=1]
+ invoke void @_ZN11btUnionFind11sortIslandsEv(%struct.btPairSet* %17)
+ to label %invcont1 unwind label %lpad
+
+invcont1: ; preds = %invcont
+ %18 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load i32* %18, align 4 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %21 = getelementptr inbounds %struct.btCollisionWorld* %collisionWorld, i32 0, i32 1, i32 3 ; [#uses=3]
+ br label %bb63
+
+invcont3: ; preds = %bb63
+ %22 = load %struct.CONTACT_KEY_TOKEN** %20, align 4 ; [#uses=3]
+ %23 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %22, i32 %startIslandIndex.0, i32 0 ; [#uses=1]
+ %24 = load i32* %23, align 4 ; [#uses=4]
+ %tmp156 = add i32 %startIslandIndex.0, 1 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %invcont7, %invcont3
+ %indvar154 = phi i32 [ %indvar.next155, %invcont7 ], [ 0, %invcont3 ] ; [#uses=2]
+ %endIslandIndex.0 = add i32 %tmp156, %indvar154 ; [#uses=8]
+ %25 = icmp slt i32 %endIslandIndex.0, %19 ; [#uses=1]
+ br i1 %25, label %invcont7, label %bb27.loopexit
+
+invcont7: ; preds = %bb5
+ %scevgep158159 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %22, i32 %endIslandIndex.0, i32 0 ; [#uses=1]
+ %26 = load i32* %scevgep158159, align 4 ; [#uses=1]
+ %27 = icmp eq i32 %26, %24 ; [#uses=1]
+ %indvar.next155 = add i32 %indvar154, 1 ; [#uses=1]
+ br i1 %27, label %bb5, label %bb27.loopexit
+
+bb.nph: ; preds = %bb27.loopexit
+ %28 = load %struct.btCollisionObject*** %21, align 4 ; [#uses=1]
+ %tmp162 = sub i32 %endIslandIndex.0, %startIslandIndex.0 ; [#uses=1]
+ br label %invcont14
+
+invcont14: ; preds = %bb26, %bb.nph
+ %indvar160 = phi i32 [ 0, %bb.nph ], [ %indvar.next161, %bb26 ] ; [#uses=2]
+ %allSleeping.2143 = phi i8 [ 1, %bb.nph ], [ %allSleeping.1, %bb26 ] ; [#uses=2]
+ %tmp164 = add i32 %startIslandIndex.0, %indvar160 ; [#uses=1]
+ %scevgep165 = getelementptr %struct.CONTACT_KEY_TOKEN* %22, i32 %tmp164, i32 1 ; [#uses=1]
+ %29 = load i32* %scevgep165, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btCollisionObject** %28, i32 %29 ; [#uses=1]
+ %31 = load %struct.btCollisionObject** %30, align 4 ; [#uses=2]
+ %32 = getelementptr inbounds %struct.btCollisionObject* %31, i32 0, i32 13 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ %34 = icmp eq i32 %33, %24 ; [#uses=1]
+ br i1 %34, label %bb20, label %bb26
+
+bb20: ; preds = %invcont14
+ %35 = getelementptr inbounds %struct.btCollisionObject* %31, i32 0, i32 15 ; [#uses=1]
+ %36 = load i32* %35, align 4 ; [#uses=2]
+ %37 = icmp eq i32 %36, 1 ; [#uses=1]
+ %allSleeping.0 = select i1 %37, i8 0, i8 %allSleeping.2143 ; [#uses=1]
+ %38 = icmp eq i32 %36, 4 ; [#uses=1]
+ br i1 %38, label %bb25, label %bb26
+
+bb25: ; preds = %bb20
+ br label %bb26
+
+bb26: ; preds = %bb25, %bb20, %invcont14
+ %allSleeping.1 = phi i8 [ 0, %bb25 ], [ %allSleeping.0, %bb20 ], [ %allSleeping.2143, %invcont14 ] ; [#uses=2]
+ %indvar.next161 = add i32 %indvar160, 1 ; [#uses=2]
+ %exitcond163 = icmp eq i32 %indvar.next161, %tmp162 ; [#uses=1]
+ br i1 %exitcond163, label %bb28, label %invcont14
+
+bb27.loopexit: ; preds = %invcont7, %bb5
+ %39 = icmp slt i32 %startIslandIndex.0, %endIslandIndex.0 ; [#uses=1]
+ br i1 %39, label %bb.nph, label %bb44
+
+bb28: ; preds = %bb26
+ %toBool29 = icmp eq i8 %allSleeping.1, 0 ; [#uses=1]
+ br i1 %toBool29, label %bb61, label %bb44
+
+invcont35: ; preds = %bb44
+ %40 = load %struct.CONTACT_KEY_TOKEN** %20, align 4 ; [#uses=1]
+ %scevgep151 = getelementptr %struct.CONTACT_KEY_TOKEN* %40, i32 %idx31.0, i32 1 ; [#uses=1]
+ %41 = load i32* %scevgep151, align 4 ; [#uses=1]
+ %42 = load %struct.btCollisionObject*** %21, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btCollisionObject** %42, i32 %41 ; [#uses=1]
+ %44 = load %struct.btCollisionObject** %43, align 4 ; [#uses=2]
+ %45 = getelementptr inbounds %struct.btCollisionObject* %44, i32 0, i32 13 ; [#uses=1]
+ %46 = load i32* %45, align 4 ; [#uses=1]
+ %47 = icmp eq i32 %46, %24 ; [#uses=1]
+ br i1 %47, label %bb41, label %bb43
+
+bb41: ; preds = %invcont35
+ invoke void @_ZN17btCollisionObject18setActivationStateEi(%struct.btCollisionObject* %44, i32 2)
+ to label %bb43 unwind label %lpad
+
+bb43: ; preds = %bb41, %invcont35
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb44
+
+bb44: ; preds = %bb43, %bb28, %bb27.loopexit
+ %indvar = phi i32 [ %indvar.next, %bb43 ], [ 0, %bb28 ], [ 0, %bb27.loopexit ] ; [#uses=2]
+ %idx31.0 = add i32 %startIslandIndex.0, %indvar ; [#uses=2]
+ %48 = icmp slt i32 %idx31.0, %endIslandIndex.0 ; [#uses=1]
+ br i1 %48, label %invcont35, label %bb63
+
+invcont50: ; preds = %bb61
+ %49 = load %struct.CONTACT_KEY_TOKEN** %20, align 4 ; [#uses=1]
+ %scevgep169 = getelementptr %struct.CONTACT_KEY_TOKEN* %49, i32 %idx46.0, i32 1 ; [#uses=1]
+ %50 = load i32* %scevgep169, align 4 ; [#uses=1]
+ %51 = load %struct.btCollisionObject*** %21, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btCollisionObject** %51, i32 %50 ; [#uses=1]
+ %53 = load %struct.btCollisionObject** %52, align 4 ; [#uses=4]
+ %54 = getelementptr inbounds %struct.btCollisionObject* %53, i32 0, i32 13 ; [#uses=1]
+ %55 = load i32* %54, align 4 ; [#uses=1]
+ %56 = icmp eq i32 %55, %24 ; [#uses=1]
+ br i1 %56, label %bb56, label %bb60
+
+bb56: ; preds = %invcont50
+ %57 = getelementptr inbounds %struct.btCollisionObject* %53, i32 0, i32 15 ; [#uses=1]
+ %58 = load i32* %57, align 4 ; [#uses=1]
+ %59 = icmp eq i32 %58, 2 ; [#uses=1]
+ br i1 %59, label %bb58, label %bb60
+
+bb58: ; preds = %bb56
+ invoke void @_ZN17btCollisionObject18setActivationStateEi(%struct.btCollisionObject* %53, i32 3)
+ to label %invcont59 unwind label %lpad
+
+invcont59: ; preds = %bb58
+ %60 = getelementptr inbounds %struct.btCollisionObject* %53, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 4
+ br label %bb60
+
+bb60: ; preds = %invcont59, %bb56, %invcont50
+ %indvar.next167 = add i32 %indvar166, 1 ; [#uses=1]
+ br label %bb61
+
+bb61: ; preds = %bb60, %bb28
+ %indvar166 = phi i32 [ %indvar.next167, %bb60 ], [ 0, %bb28 ] ; [#uses=2]
+ %idx46.0 = add i32 %startIslandIndex.0, %indvar166 ; [#uses=2]
+ %61 = icmp slt i32 %idx46.0, %endIslandIndex.0 ; [#uses=1]
+ br i1 %61, label %invcont50, label %bb63
+
+bb63: ; preds = %bb61, %bb44, %invcont1
+ %startIslandIndex.0 = phi i32 [ 0, %invcont1 ], [ %endIslandIndex.0, %bb44 ], [ %endIslandIndex.0, %bb61 ] ; [#uses=8]
+ %62 = icmp slt i32 %startIslandIndex.0, %19 ; [#uses=1]
+ br i1 %62, label %invcont3, label %bb64
+
+bb64: ; preds = %bb63
+ %63 = getelementptr inbounds %struct.btActionInterface* %dispatcher, i32 0, i32 0 ; [#uses=3]
+ %64 = load i32 (...)*** %63, align 4 ; [#uses=1]
+ %65 = getelementptr inbounds i32 (...)** %64, i32 9 ; [#uses=1]
+ %66 = load i32 (...)** %65, align 4 ; [#uses=1]
+ %67 = bitcast i32 (...)* %66 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %68 = invoke i32 %67(%struct.btActionInterface* %dispatcher)
+ to label %bb108.preheader unwind label %lpad ; [#uses=1]
+
+bb108.preheader: ; preds = %bb64
+ %69 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 4 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 2 ; [#uses=2]
+ %71 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 3 ; [#uses=5]
+ %72 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=2]
+ br label %bb108
+
+bb66: ; preds = %bb108
+ %73 = load i32 (...)*** %63, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds i32 (...)** %73, i32 10 ; [#uses=1]
+ %75 = load i32 (...)** %74, align 4 ; [#uses=1]
+ %76 = bitcast i32 (...)* %75 to %struct.btPersistentManifold* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %77 = invoke %struct.btPersistentManifold* %76(%struct.btActionInterface* %dispatcher, i32 %140)
+ to label %invcont68 unwind label %lpad ; [#uses=3]
+
+invcont68: ; preds = %bb66
+ %78 = getelementptr inbounds %struct.btPersistentManifold* %77, i32 0, i32 2 ; [#uses=1]
+ %79 = load i8** %78, align 4 ; [#uses=5]
+ %80 = bitcast i8* %79 to %struct.btCollisionObject* ; [#uses=2]
+ %81 = getelementptr inbounds %struct.btPersistentManifold* %77, i32 0, i32 3 ; [#uses=1]
+ %82 = load i8** %81, align 4 ; [#uses=5]
+ %83 = bitcast i8* %82 to %struct.btCollisionObject* ; [#uses=2]
+ %84 = icmp eq i8* %79, null ; [#uses=1]
+ br i1 %84, label %bb70, label %bb69
+
+bb69: ; preds = %invcont68
+ %85 = getelementptr inbounds i8* %79, i32 216 ; [#uses=1]
+ %86 = bitcast i8* %85 to i32* ; [#uses=1]
+ %87 = load i32* %86, align 4 ; [#uses=1]
+ %88 = icmp eq i32 %87, 2 ; [#uses=1]
+ br i1 %88, label %bb70, label %bb76
+
+bb70: ; preds = %bb69, %invcont68
+ %89 = icmp eq i8* %82, null ; [#uses=1]
+ br i1 %89, label %bb107, label %bb71
+
+bb71: ; preds = %bb70
+ %90 = getelementptr inbounds i8* %82, i32 216 ; [#uses=1]
+ %91 = bitcast i8* %90 to i32* ; [#uses=1]
+ %92 = load i32* %91, align 4 ; [#uses=1]
+ %93 = icmp eq i32 %92, 2 ; [#uses=1]
+ br i1 %93, label %bb107, label %bb76
+
+bb76: ; preds = %bb71, %bb69
+ %94 = getelementptr inbounds i8* %79, i32 204 ; [#uses=1]
+ %95 = bitcast i8* %94 to i32* ; [#uses=1]
+ %96 = load i32* %95, align 4 ; [#uses=1]
+ %.lobit.i140 = and i32 %96, 2 ; [#uses=1]
+ %toBool77not = icmp eq i32 %.lobit.i140, 0 ; [#uses=1]
+ br i1 %toBool77not, label %bb88, label %bb81
+
+bb81: ; preds = %bb76
+ %97 = getelementptr inbounds i8* %79, i32 216 ; [#uses=1]
+ %98 = bitcast i8* %97 to i32* ; [#uses=1]
+ %99 = load i32* %98, align 4 ; [#uses=1]
+ %100 = icmp eq i32 %99, 2 ; [#uses=1]
+ br i1 %100, label %bb88, label %bb86
+
+bb86: ; preds = %bb81
+ invoke void @_ZN17btCollisionObject8activateEb(%struct.btCollisionObject* %83, i8 zeroext 0)
+ to label %bb88 unwind label %lpad
+
+bb88: ; preds = %bb86, %bb81, %bb76
+ %101 = getelementptr inbounds i8* %82, i32 204 ; [#uses=1]
+ %102 = bitcast i8* %101 to i32* ; [#uses=1]
+ %103 = load i32* %102, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %103, 2 ; [#uses=1]
+ %toBool89not = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ br i1 %toBool89not, label %bb100, label %bb93
+
+bb93: ; preds = %bb88
+ %104 = getelementptr inbounds i8* %82, i32 216 ; [#uses=1]
+ %105 = bitcast i8* %104 to i32* ; [#uses=1]
+ %106 = load i32* %105, align 4 ; [#uses=1]
+ %107 = icmp eq i32 %106, 2 ; [#uses=1]
+ br i1 %107, label %bb100, label %bb98
+
+bb98: ; preds = %bb93
+ invoke void @_ZN17btCollisionObject8activateEb(%struct.btCollisionObject* %80, i8 zeroext 0)
+ to label %bb100 unwind label %lpad
+
+bb100: ; preds = %bb98, %bb93, %bb88
+ %108 = load i8* %69, align 4 ; [#uses=1]
+ %toBool101 = icmp eq i8 %108, 0 ; [#uses=1]
+ br i1 %toBool101, label %bb107, label %bb102
+
+bb102: ; preds = %bb100
+ %109 = load i32 (...)*** %63, align 4 ; [#uses=1]
+ %110 = getelementptr inbounds i32 (...)** %109, i32 7 ; [#uses=1]
+ %111 = load i32 (...)** %110, align 4 ; [#uses=1]
+ %112 = bitcast i32 (...)* %111 to i8 (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*)* ; [#uses=1]
+ %113 = invoke zeroext i8 %112(%struct.btActionInterface* %dispatcher, %struct.btCollisionObject* %80, %struct.btCollisionObject* %83)
+ to label %invcont103 unwind label %lpad ; [#uses=1]
+
+invcont103: ; preds = %bb102
+ %toBool104 = icmp eq i8 %113, 0 ; [#uses=1]
+ br i1 %toBool104, label %bb107, label %bb105
+
+bb105: ; preds = %invcont103
+ %114 = load i32* %0, align 4 ; [#uses=6]
+ %115 = load i32* %70, align 4 ; [#uses=2]
+ %116 = icmp eq i32 %115, %114 ; [#uses=1]
+ br i1 %116, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb105
+ %117 = icmp eq i32 %114, 0 ; [#uses=1]
+ %118 = shl i32 %114, 1 ; [#uses=1]
+ %iftmp.231.0.i.i = select i1 %117, i32 1, i32 %118 ; [#uses=4]
+ %119 = icmp slt i32 %115, %iftmp.231.0.i.i ; [#uses=1]
+ br i1 %119, label %bb.i.i121, label %bb1.i
+
+bb.i.i121: ; preds = %bb.i
+ %120 = icmp eq i32 %iftmp.231.0.i.i, 0 ; [#uses=1]
+ br i1 %120, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i122, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i121
+ %121 = shl i32 %iftmp.231.0.i.i, 2 ; [#uses=1]
+ %122 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %121, i32 16)
+ to label %.noexc138 unwind label %lpad ; [#uses=1]
+
+.noexc138: ; preds = %bb.i2.i.i
+ %phitmp.i.i = bitcast i8* %122 to %struct.btPersistentManifold** ; [#uses=1]
+ %.pre.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i122
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i122: ; preds = %.noexc138, %bb.i.i121
+ %123 = phi i32 [ %.pre.i, %.noexc138 ], [ %114, %bb.i.i121 ] ; [#uses=2]
+ %124 = phi %struct.btPersistentManifold** [ %phitmp.i.i, %.noexc138 ], [ null, %bb.i.i121 ] ; [#uses=2]
+ %125 = icmp sgt i32 %123, 0 ; [#uses=1]
+ br i1 %125, label %bb.i4.i.i126, label %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i132
+
+bb.i4.i.i126: ; preds = %bb3.i.i.i131, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i122
+ %indvar.i.i.i124 = phi i32 [ %indvar.next.i.i.i129, %bb3.i.i.i131 ], [ 0, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i122 ] ; [#uses=3]
+ %scevgep.i.i.i125 = getelementptr %struct.btPersistentManifold** %124, i32 %indvar.i.i.i124 ; [#uses=2]
+ %126 = icmp eq %struct.btPersistentManifold** %scevgep.i.i.i125, null ; [#uses=1]
+ br i1 %126, label %bb3.i.i.i131, label %bb1.i5.i.i128
+
+bb1.i5.i.i128: ; preds = %bb.i4.i.i126
+ %127 = load %struct.btPersistentManifold*** %71, align 4 ; [#uses=1]
+ %scevgep8.i.i.i127 = getelementptr %struct.btPersistentManifold** %127, i32 %indvar.i.i.i124 ; [#uses=1]
+ %128 = load %struct.btPersistentManifold** %scevgep8.i.i.i127, align 4 ; [#uses=1]
+ store %struct.btPersistentManifold* %128, %struct.btPersistentManifold** %scevgep.i.i.i125, align 4
+ br label %bb3.i.i.i131
+
+bb3.i.i.i131: ; preds = %bb1.i5.i.i128, %bb.i4.i.i126
+ %indvar.next.i.i.i129 = add i32 %indvar.i.i.i124, 1 ; [#uses=2]
+ %exitcond147 = icmp eq i32 %indvar.next.i.i.i129, %123 ; [#uses=1]
+ br i1 %exitcond147, label %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i132, label %bb.i4.i.i126
+
+_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i132: ; preds = %bb3.i.i.i131, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i122
+ %129 = load %struct.btPersistentManifold*** %71, align 4 ; [#uses=2]
+ %130 = icmp eq %struct.btPersistentManifold** %129, null ; [#uses=1]
+ br i1 %130, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i.i, label %bb.i.i.i134
+
+bb.i.i.i134: ; preds = %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i132
+ %131 = load i8* %72, align 4 ; [#uses=1]
+ %toBool.i.i.i133 = icmp eq i8 %131, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i133, label %bb2.i.i.i136, label %bb1.i.i.i135
+
+bb1.i.i.i135: ; preds = %bb.i.i.i134
+ %132 = bitcast %struct.btPersistentManifold** %129 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %132)
+ to label %bb2.i.i.i136 unwind label %lpad
+
+bb2.i.i.i136: ; preds = %bb1.i.i.i135, %bb.i.i.i134
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %71, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i136, %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i132
+ store i8 1, i8* %72, align 4
+ store %struct.btPersistentManifold** %124, %struct.btPersistentManifold*** %71, align 4
+ store i32 %iftmp.231.0.i.i, i32* %70, align 4
+ %.pre5.i = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i.i, %bb.i, %bb105
+ %133 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i.i ], [ %114, %bb105 ], [ %114, %bb.i ] ; [#uses=2]
+ %134 = load %struct.btPersistentManifold*** %71, align 4 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btPersistentManifold** %134, i32 %133 ; [#uses=2]
+ %136 = icmp eq %struct.btPersistentManifold** %135, null ; [#uses=1]
+ br i1 %136, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %struct.btPersistentManifold* %77, %struct.btPersistentManifold** %135, align 4
+ %.pre6.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_.exit: ; preds = %bb2.i, %bb1.i
+ %137 = phi i32 [ %133, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %138 = add nsw i32 %137, 1 ; [#uses=1]
+ store i32 %138, i32* %0, align 4
+ br label %bb107
+
+bb107: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_.exit, %invcont103, %bb100, %bb71, %bb70
+ %139 = add nsw i32 %140, 1 ; [#uses=1]
+ br label %bb108
+
+bb108: ; preds = %bb107, %bb108.preheader
+ %140 = phi i32 [ %139, %bb107 ], [ 0, %bb108.preheader ] ; [#uses=3]
+ %141 = icmp slt i32 %140, %68 ; [#uses=1]
+ br i1 %141, label %bb66, label %bb112
+
+invcont110: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb112: ; preds = %bb108
+ tail call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %bb1.i.i.i135, %bb.i2.i.i, %bb102, %bb98, %bb86, %bb66, %bb64, %bb58, %bb41, %invcont, %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select114 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont110 unwind label %lpad115
+
+lpad115: ; preds = %lpad
+ %eh_ptr116 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select118 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr116, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN25btSimulationIslandManager22buildAndProcessIslandsEP12btDispatcherP16btCollisionWorldPNS_14IslandCallbackE(%struct.btSimulationIslandManager* %this, %struct.btActionInterface* %dispatcher, %struct.btCollisionWorld* nocapture %collisionWorld, %struct.btActionInterface* %callback) align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ call void @_ZN25btSimulationIslandManager12buildIslandsEP12btDispatcherP16btCollisionWorld(%struct.btSimulationIslandManager* %this, %struct.btActionInterface* %dispatcher, %struct.btCollisionWorld* %collisionWorld)
+ %1 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %2 = load i32* %1, align 4 ; [#uses=2]
+ call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([15 x i8]* @.str131, i32 0, i32 0))
+ %3 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 4 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBoolnot = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb, label %bb6
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btActionInterface* %dispatcher, i32 0, i32 0 ; [#uses=2]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 11 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to %struct.btPersistentManifold** (%struct.btActionInterface*)* ; [#uses=1]
+ %10 = invoke %struct.btPersistentManifold** %9(%struct.btActionInterface* %dispatcher)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb
+ %11 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 9 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %15 = invoke i32 %14(%struct.btActionInterface* %dispatcher)
+ to label %invcont4 unwind label %lpad ; [#uses=1]
+
+invcont4: ; preds = %invcont
+ %16 = getelementptr inbounds %struct.btActionInterface* %callback, i32 0, i32 0 ; [#uses=1]
+ %17 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 2 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCollisionWorld* %collisionWorld, i32 0, i32 1, i32 1 ; [#uses=1]
+ %21 = load i32* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btCollisionWorld* %collisionWorld, i32 0, i32 1, i32 3 ; [#uses=1]
+ %23 = load %struct.btCollisionObject*** %22, align 4 ; [#uses=1]
+ %24 = bitcast i32 (...)* %19 to void (%struct.btActionInterface*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, i32)* ; [#uses=1]
+ invoke void %24(%struct.btActionInterface* %callback, %struct.btCollisionObject** %23, i32 %21, %struct.btPersistentManifold** %10, i32 %15, i32 -1)
+ to label %bb51 unwind label %lpad
+
+bb6: ; preds = %entry
+ %25 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %26 = load i32* %25, align 4 ; [#uses=4]
+ %27 = icmp sgt i32 %26, 1 ; [#uses=1]
+ br i1 %27, label %bb.i87, label %bb47.preheader
+
+bb.i87: ; preds = %bb6
+ %28 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2 ; [#uses=1]
+ %29 = add nsw i32 %26, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE17quickSortInternalI33btPersistentManifoldSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %28, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 0, i32 %29) nounwind
+ br label %bb47.preheader
+
+bb47.preheader: ; preds = %bb.i87, %bb6
+ %30 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %31 = getelementptr inbounds %struct.btCollisionWorld* %collisionWorld, i32 0, i32 1, i32 3 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 1 ; [#uses=8]
+ %33 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 2 ; [#uses=4]
+ %34 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 3 ; [#uses=10]
+ %35 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 4 ; [#uses=4]
+ %36 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btActionInterface* %callback, i32 0, i32 0 ; [#uses=1]
+ br label %bb47
+
+invcont9: ; preds = %bb47
+ %38 = load %struct.CONTACT_KEY_TOKEN** %30, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %38, i32 %startIslandIndex.0, i32 0 ; [#uses=1]
+ %40 = load i32* %39, align 4 ; [#uses=4]
+ br label %bb18
+
+invcont11: ; preds = %invcont20
+ %scevgep102 = getelementptr %struct.CONTACT_KEY_TOKEN* %75, i32 %endIslandIndex.0, i32 1 ; [#uses=1]
+ %41 = load i32* %scevgep102, align 4 ; [#uses=1]
+ %42 = load %struct.btCollisionObject*** %31, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btCollisionObject** %42, i32 %41 ; [#uses=1]
+ %44 = load %struct.btCollisionObject** %43, align 4 ; [#uses=2]
+ %45 = load i32* %32, align 4 ; [#uses=6]
+ %46 = load i32* %33, align 4 ; [#uses=2]
+ %47 = icmp eq i32 %46, %45 ; [#uses=1]
+ br i1 %47, label %bb.i64, label %bb1.i81
+
+bb.i64: ; preds = %invcont11
+ %48 = icmp eq i32 %45, 0 ; [#uses=1]
+ %49 = shl i32 %45, 1 ; [#uses=1]
+ %iftmp.225.0.i.i = select i1 %48, i32 1, i32 %49 ; [#uses=4]
+ %50 = icmp slt i32 %46, %iftmp.225.0.i.i ; [#uses=1]
+ br i1 %50, label %bb.i.i65, label %bb1.i81
+
+bb.i.i65: ; preds = %bb.i64
+ %51 = icmp eq i32 %iftmp.225.0.i.i, 0 ; [#uses=1]
+ br i1 %51, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i66, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i65
+ %52 = shl i32 %iftmp.225.0.i.i, 2 ; [#uses=1]
+ %53 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %52, i32 16)
+ to label %.noexc84 unwind label %lpad ; [#uses=1]
+
+.noexc84: ; preds = %bb.i2.i.i
+ %phitmp.i.i = bitcast i8* %53 to %struct.btCollisionObject** ; [#uses=1]
+ %.pre.i = load i32* %32, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i66
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i66: ; preds = %.noexc84, %bb.i.i65
+ %54 = phi i32 [ %.pre.i, %.noexc84 ], [ %45, %bb.i.i65 ] ; [#uses=2]
+ %55 = phi %struct.btCollisionObject** [ %phitmp.i.i, %.noexc84 ], [ null, %bb.i.i65 ] ; [#uses=2]
+ %56 = icmp sgt i32 %54, 0 ; [#uses=1]
+ br i1 %56, label %bb.i4.i.i70, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i76
+
+bb.i4.i.i70: ; preds = %bb3.i.i.i75, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i66
+ %indvar.i.i.i68 = phi i32 [ %indvar.next.i.i.i73, %bb3.i.i.i75 ], [ 0, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i66 ] ; [#uses=3]
+ %scevgep.i.i.i69 = getelementptr %struct.btCollisionObject** %55, i32 %indvar.i.i.i68 ; [#uses=2]
+ %57 = icmp eq %struct.btCollisionObject** %scevgep.i.i.i69, null ; [#uses=1]
+ br i1 %57, label %bb3.i.i.i75, label %bb1.i5.i.i72
+
+bb1.i5.i.i72: ; preds = %bb.i4.i.i70
+ %58 = load %struct.btCollisionObject*** %34, align 4 ; [#uses=1]
+ %scevgep8.i.i.i71 = getelementptr %struct.btCollisionObject** %58, i32 %indvar.i.i.i68 ; [#uses=1]
+ %59 = load %struct.btCollisionObject** %scevgep8.i.i.i71, align 4 ; [#uses=1]
+ store %struct.btCollisionObject* %59, %struct.btCollisionObject** %scevgep.i.i.i69, align 4
+ br label %bb3.i.i.i75
+
+bb3.i.i.i75: ; preds = %bb1.i5.i.i72, %bb.i4.i.i70
+ %indvar.next.i.i.i73 = add i32 %indvar.i.i.i68, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i73, %54 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i76, label %bb.i4.i.i70
+
+_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i76: ; preds = %bb3.i.i.i75, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i66
+ %60 = load %struct.btCollisionObject*** %34, align 4 ; [#uses=2]
+ %61 = icmp eq %struct.btCollisionObject** %60, null ; [#uses=1]
+ br i1 %61, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i, label %bb.i.i.i78
+
+bb.i.i.i78: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i76
+ %62 = load i8* %35, align 4 ; [#uses=1]
+ %toBool.i.i.i77 = icmp eq i8 %62, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i77, label %bb2.i.i.i80, label %bb1.i.i.i79
+
+bb1.i.i.i79: ; preds = %bb.i.i.i78
+ %63 = bitcast %struct.btCollisionObject** %60 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %63)
+ to label %bb2.i.i.i80 unwind label %lpad
+
+bb2.i.i.i80: ; preds = %bb1.i.i.i79, %bb.i.i.i78
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %34, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i80, %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i.i76
+ store i8 1, i8* %35, align 4
+ store %struct.btCollisionObject** %55, %struct.btCollisionObject*** %34, align 4
+ store i32 %iftmp.225.0.i.i, i32* %33, align 4
+ %.pre5.i = load i32* %32, align 4 ; [#uses=1]
+ br label %bb1.i81
+
+bb1.i81: ; preds = %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i, %bb.i64, %invcont11
+ %64 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i.i ], [ %45, %invcont11 ], [ %45, %bb.i64 ] ; [#uses=2]
+ %65 = load %struct.btCollisionObject*** %34, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btCollisionObject** %65, i32 %64 ; [#uses=2]
+ %67 = icmp eq %struct.btCollisionObject** %66, null ; [#uses=1]
+ br i1 %67, label %invcont12, label %bb2.i82
+
+bb2.i82: ; preds = %bb1.i81
+ store %struct.btCollisionObject* %44, %struct.btCollisionObject** %66, align 4
+ %.pre6.i = load i32* %32, align 4 ; [#uses=1]
+ br label %invcont12
+
+invcont12: ; preds = %bb2.i82, %bb1.i81
+ %68 = phi i32 [ %64, %bb1.i81 ], [ %.pre6.i, %bb2.i82 ] ; [#uses=1]
+ %69 = add nsw i32 %68, 1 ; [#uses=1]
+ store i32 %69, i32* %32, align 4
+ %70 = getelementptr inbounds %struct.btCollisionObject* %44, i32 0, i32 15 ; [#uses=1]
+ %71 = load i32* %70, align 4 ; [#uses=2]
+ %72 = icmp eq i32 %71, 2 ; [#uses=1]
+ br i1 %72, label %_ZNK17btCollisionObject8isActiveEv.exit, label %bb.i63
+
+bb.i63: ; preds = %invcont12
+ %phitmp = icmp eq i32 %71, 5 ; [#uses=1]
+ %phitmp90 = select i1 %phitmp, i8 1, i8 %islandSleeping.1 ; [#uses=1]
+ br label %_ZNK17btCollisionObject8isActiveEv.exit
+
+_ZNK17btCollisionObject8isActiveEv.exit: ; preds = %bb.i63, %invcont12
+ %73 = phi i8 [ %phitmp90, %bb.i63 ], [ 1, %invcont12 ] ; [#uses=1]
+ %indvar.next100 = add i32 %indvar99, 1 ; [#uses=1]
+ br label %bb18
+
+bb18: ; preds = %_ZNK17btCollisionObject8isActiveEv.exit, %invcont9
+ %indvar99 = phi i32 [ %indvar.next100, %_ZNK17btCollisionObject8isActiveEv.exit ], [ 0, %invcont9 ] ; [#uses=2]
+ %islandSleeping.1 = phi i8 [ %73, %_ZNK17btCollisionObject8isActiveEv.exit ], [ 0, %invcont9 ] ; [#uses=2]
+ %endIslandIndex.0 = add i32 %startIslandIndex.0, %indvar99 ; [#uses=4]
+ %74 = icmp slt i32 %endIslandIndex.0, %2 ; [#uses=1]
+ br i1 %74, label %invcont20, label %bb25.critedge
+
+invcont20: ; preds = %bb18
+ %75 = load %struct.CONTACT_KEY_TOKEN** %30, align 4 ; [#uses=2]
+ %scevgep103104 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %75, i32 %endIslandIndex.0, i32 0 ; [#uses=1]
+ %76 = load i32* %scevgep103104, align 4 ; [#uses=1]
+ %77 = icmp eq i32 %76, %40 ; [#uses=1]
+ br i1 %77, label %invcont11, label %bb25.critedge
+
+bb25.critedge: ; preds = %invcont20, %bb18
+ %78 = icmp slt i32 %startManifoldIndex.1, %26 ; [#uses=1]
+ br i1 %78, label %bb26, label %bb36
+
+bb26: ; preds = %bb25.critedge
+ %79 = load %struct.btPersistentManifold*** %36, align 4 ; [#uses=2]
+ %80 = getelementptr inbounds %struct.btPersistentManifold** %79, i32 %startManifoldIndex.1 ; [#uses=2]
+ %81 = load %struct.btPersistentManifold** %80, align 4 ; [#uses=2]
+ %82 = getelementptr inbounds %struct.btPersistentManifold* %81, i32 0, i32 2 ; [#uses=1]
+ %83 = load i8** %82, align 4 ; [#uses=1]
+ %84 = getelementptr inbounds i8* %83, i32 208 ; [#uses=1]
+ %85 = bitcast i8* %84 to i32* ; [#uses=1]
+ %86 = load i32* %85, align 4 ; [#uses=2]
+ %87 = icmp sgt i32 %86, -1 ; [#uses=1]
+ br i1 %87, label %_Z11getIslandIdPK20btPersistentManifold.exit62, label %bb1.i61
+
+bb1.i61: ; preds = %bb26
+ %88 = getelementptr inbounds %struct.btPersistentManifold* %81, i32 0, i32 3 ; [#uses=1]
+ %89 = load i8** %88, align 4 ; [#uses=1]
+ %90 = getelementptr inbounds i8* %89, i32 208 ; [#uses=1]
+ %91 = bitcast i8* %90 to i32* ; [#uses=1]
+ %92 = load i32* %91, align 4 ; [#uses=1]
+ br label %_Z11getIslandIdPK20btPersistentManifold.exit62
+
+_Z11getIslandIdPK20btPersistentManifold.exit62: ; preds = %bb1.i61, %bb26
+ %93 = phi i32 [ %92, %bb1.i61 ], [ %86, %bb26 ] ; [#uses=1]
+ %94 = icmp eq i32 %93, %40 ; [#uses=1]
+ br i1 %94, label %bb27, label %bb36
+
+bb27: ; preds = %_Z11getIslandIdPK20btPersistentManifold.exit62
+ %tmp = add i32 %startManifoldIndex.1, 1 ; [#uses=1]
+ br label %bb29
+
+bb29: ; preds = %_Z11getIslandIdPK20btPersistentManifold.exit, %bb27
+ %indvar = phi i32 [ %indvar.next, %_Z11getIslandIdPK20btPersistentManifold.exit ], [ 0, %bb27 ] ; [#uses=2]
+ %endManifoldIndex.2 = add i32 %tmp, %indvar ; [#uses=4]
+ %95 = icmp slt i32 %endManifoldIndex.2, %26 ; [#uses=1]
+ br i1 %95, label %bb30, label %bb35.critedge
+
+bb30: ; preds = %bb29
+ %scevgep = getelementptr %struct.btPersistentManifold** %79, i32 %endManifoldIndex.2 ; [#uses=1]
+ %96 = load %struct.btPersistentManifold** %scevgep, align 4 ; [#uses=2]
+ %97 = getelementptr inbounds %struct.btPersistentManifold* %96, i32 0, i32 2 ; [#uses=1]
+ %98 = load i8** %97, align 4 ; [#uses=1]
+ %99 = getelementptr inbounds i8* %98, i32 208 ; [#uses=1]
+ %100 = bitcast i8* %99 to i32* ; [#uses=1]
+ %101 = load i32* %100, align 4 ; [#uses=2]
+ %102 = icmp sgt i32 %101, -1 ; [#uses=1]
+ br i1 %102, label %_Z11getIslandIdPK20btPersistentManifold.exit, label %bb1.i
+
+bb1.i: ; preds = %bb30
+ %103 = getelementptr inbounds %struct.btPersistentManifold* %96, i32 0, i32 3 ; [#uses=1]
+ %104 = load i8** %103, align 4 ; [#uses=1]
+ %105 = getelementptr inbounds i8* %104, i32 208 ; [#uses=1]
+ %106 = bitcast i8* %105 to i32* ; [#uses=1]
+ %107 = load i32* %106, align 4 ; [#uses=1]
+ br label %_Z11getIslandIdPK20btPersistentManifold.exit
+
+_Z11getIslandIdPK20btPersistentManifold.exit: ; preds = %bb1.i, %bb30
+ %108 = phi i32 [ %107, %bb1.i ], [ %101, %bb30 ] ; [#uses=1]
+ %109 = icmp eq i32 %108, %40 ; [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br i1 %109, label %bb29, label %bb35.critedge
+
+bb35.critedge: ; preds = %_Z11getIslandIdPK20btPersistentManifold.exit, %bb29
+ %110 = sub nsw i32 %endManifoldIndex.2, %startManifoldIndex.1 ; [#uses=1]
+ br label %bb36
+
+bb36: ; preds = %bb35.critedge, %_Z11getIslandIdPK20btPersistentManifold.exit62, %bb25.critedge
+ %endManifoldIndex.0 = phi i32 [ %endManifoldIndex.2, %bb35.critedge ], [ %endManifoldIndex.1, %_Z11getIslandIdPK20btPersistentManifold.exit62 ], [ %endManifoldIndex.1, %bb25.critedge ] ; [#uses=2]
+ %numIslandManifolds.0 = phi i32 [ %110, %bb35.critedge ], [ 0, %_Z11getIslandIdPK20btPersistentManifold.exit62 ], [ 0, %bb25.critedge ] ; [#uses=2]
+ %startManifold.0 = phi %struct.btPersistentManifold** [ %80, %bb35.critedge ], [ null, %_Z11getIslandIdPK20btPersistentManifold.exit62 ], [ null, %bb25.critedge ] ; [#uses=1]
+ %toBool37not = icmp eq i8 %islandSleeping.1, 0 ; [#uses=1]
+ br i1 %toBool37not, label %bb41, label %bb43
+
+bb41: ; preds = %bb36
+ %111 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %112 = getelementptr inbounds i32 (...)** %111, i32 2 ; [#uses=1]
+ %113 = load i32 (...)** %112, align 4 ; [#uses=1]
+ %114 = load i32* %32, align 4 ; [#uses=1]
+ %115 = load %struct.btCollisionObject*** %34, align 4 ; [#uses=1]
+ %116 = bitcast i32 (...)* %113 to void (%struct.btActionInterface*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, i32)* ; [#uses=1]
+ invoke void %116(%struct.btActionInterface* %callback, %struct.btCollisionObject** %115, i32 %114, %struct.btPersistentManifold** %startManifold.0, i32 %numIslandManifolds.0, i32 %40)
+ to label %bb43 unwind label %lpad
+
+bb43: ; preds = %bb41, %bb36
+ %117 = icmp eq i32 %numIslandManifolds.0, 0 ; [#uses=1]
+ %startManifoldIndex.0 = select i1 %117, i32 %startManifoldIndex.1, i32 %endManifoldIndex.0 ; [#uses=1]
+ %118 = load i32* %32, align 4 ; [#uses=4]
+ %119 = icmp sgt i32 %118, 0 ; [#uses=1]
+ %.not = xor i1 %119, true ; [#uses=1]
+ %120 = icmp slt i32 %118, 0 ; [#uses=1]
+ %or.cond = and i1 %.not, %120 ; [#uses=1]
+ br i1 %or.cond, label %bb4.i, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE6resizeEiRKS1_.exit
+
+bb4.i: ; preds = %bb43
+ %121 = load i32* %33, align 4 ; [#uses=1]
+ %122 = icmp slt i32 %121, 0 ; [#uses=1]
+ br i1 %122, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i, label %bb.nph.i
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i: ; preds = %bb4.i
+ %123 = load %struct.btCollisionObject*** %34, align 4 ; [#uses=2]
+ %124 = icmp eq %struct.btCollisionObject** %123, null ; [#uses=1]
+ br i1 %124, label %bb11.preheader.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i
+ %125 = load i8* %35, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %125, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %126 = bitcast %struct.btCollisionObject** %123 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %126)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %34, align 4
+ br label %bb11.preheader.i
+
+bb11.preheader.i: ; preds = %bb2.i.i.i, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i
+ store i8 1, i8* %35, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %34, align 4
+ store i32 0, i32* %33, align 4
+ br label %bb.nph.i
+
+bb.nph.i: ; preds = %bb11.preheader.i, %bb4.i
+ %tmp105 = sub i32 0, %118 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb10.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb10.i ] ; [#uses=2]
+ %tmp107 = add i32 %118, %indvar.i ; [#uses=1]
+ %127 = load %struct.btCollisionObject*** %34, align 4 ; [#uses=1]
+ %scevgep109 = getelementptr %struct.btCollisionObject** %127, i32 %tmp107 ; [#uses=2]
+ %128 = icmp eq %struct.btCollisionObject** %scevgep109, null ; [#uses=1]
+ br i1 %128, label %bb10.i, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ store %struct.btCollisionObject* null, %struct.btCollisionObject** %scevgep109, align 4
+ br label %bb10.i
+
+bb10.i: ; preds = %bb8.i, %bb7.i
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond106 = icmp eq i32 %indvar.next.i, %tmp105 ; [#uses=1]
+ br i1 %exitcond106, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE6resizeEiRKS1_.exit, label %bb7.i
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE6resizeEiRKS1_.exit: ; preds = %bb10.i, %bb43
+ store i32 0, i32* %32, align 4
+ br label %bb47
+
+bb47: ; preds = %_ZN20btAlignedObjectArrayIP17btCollisionObjectE6resizeEiRKS1_.exit, %bb47.preheader
+ %startIslandIndex.0 = phi i32 [ %endIslandIndex.0, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE6resizeEiRKS1_.exit ], [ 0, %bb47.preheader ] ; [#uses=3]
+ %startManifoldIndex.1 = phi i32 [ %startManifoldIndex.0, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE6resizeEiRKS1_.exit ], [ 0, %bb47.preheader ] ; [#uses=5]
+ %endManifoldIndex.1 = phi i32 [ %endManifoldIndex.0, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE6resizeEiRKS1_.exit ], [ 1, %bb47.preheader ] ; [#uses=2]
+ %129 = icmp slt i32 %startIslandIndex.0, %2 ; [#uses=1]
+ br i1 %129, label %invcont9, label %bb51
+
+invcont49: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb51: ; preds = %bb47, %invcont4
+ call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %bb1.i.i.i, %bb41, %bb1.i.i.i79, %bb.i2.i.i, %invcont4, %invcont, %bb
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select53 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont49 unwind label %lpad54
+
+lpad54: ; preds = %lpad
+ %eh_ptr55 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select57 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr55, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN25btSimulationIslandManager13initUnionFindEi(%struct.btSimulationIslandManager* %this, i32 %n) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN11btUnionFind5resetEi(%struct.btPairSet* %0, i32 %n)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btSimulationIslandManager21updateActivationStateEP16btCollisionWorldP12btDispatcher(%struct.btSimulationIslandManager* %this, %struct.btCollisionWorld* nocapture %colWorld, %struct.btActionInterface* nocapture %dispatcher) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %colWorld, i32 0, i32 1, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %bb7
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btCollisionWorld* %colWorld, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb4, %bb.nph
+ %i.09 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb4 ] ; [#uses=2]
+ %index.18 = phi i32 [ 0, %bb.nph ], [ %index.0, %bb4 ] ; [#uses=3]
+ %tmp = add i32 %i.09, 1 ; [#uses=2]
+ %4 = load %struct.btCollisionObject*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %4, i32 %i.09 ; [#uses=1]
+ %5 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=4]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 12 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = and i32 %7, 3 ; [#uses=1]
+ %9 = icmp eq i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb3, label %bb4
+
+bb3: ; preds = %bb
+ %10 = add nsw i32 %index.18, 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 13 ; [#uses=1]
+ store i32 %index.18, i32* %11, align 4
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb
+ %index.0 = phi i32 [ %10, %bb3 ], [ %index.18, %bb ] ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 14 ; [#uses=1]
+ store i32 -1, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 21 ; [#uses=1]
+ store float 1.000000e+00, float* %13, align 4
+ %14 = load i32* %0, align 4 ; [#uses=1]
+ %15 = icmp sgt i32 %14, %tmp ; [#uses=1]
+ br i1 %15, label %bb, label %bb7
+
+bb7: ; preds = %bb4, %entry
+ %index.1.lcssa = phi i32 [ 0, %entry ], [ %index.0, %bb4 ] ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN11btUnionFind5resetEi(%struct.btPairSet* %16, i32 %index.1.lcssa)
+ tail call void @_ZN25btSimulationIslandManager10findUnionsEP12btDispatcherP16btCollisionWorld(%struct.btSimulationIslandManager* %this, %struct.btActionInterface* %dispatcher, %struct.btCollisionWorld* %colWorld)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btSimulationIslandManagerD0Ev(%struct.btSimulationIslandManager* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btSimulationIslandManager, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %2 = load %struct.btCollisionObject*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btCollisionObject** %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btCollisionObject** %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad18
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %1, align 4
+ %8 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %11 = load %struct.btPersistentManifold*** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btPersistentManifold** %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i35
+
+bb.i.i.i35: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i34 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i34, label %bb2.i.i.i37, label %bb1.i.i.i36
+
+bb1.i.i.i36: ; preds = %bb.i.i.i35
+ %15 = bitcast %struct.btPersistentManifold** %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i37 unwind label %lpad
+
+bb2.i.i.i37: ; preds = %bb1.i.i.i36, %bb.i.i.i35
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %10, align 4
+ br label %bb10
+
+invcont8: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i37, %bb3
+ %16 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %10, align 4
+ %17 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN11btUnionFindD1Ev(%struct.btPairSet* %19)
+ %20 = bitcast %struct.btSimulationIslandManager* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %20) nounwind
+ ret void
+
+lpad: ; preds = %bb1.i.i.i36
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %bb1.i.i.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %21 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %22 = load %struct.btPersistentManifold*** %21, align 4 ; [#uses=2]
+ %23 = icmp eq %struct.btPersistentManifold** %22, null ; [#uses=1]
+ br i1 %23, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44, label %bb.i.i.i40
+
+bb.i.i.i40: ; preds = %lpad18
+ %24 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool.i.i.i39 = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i39, label %bb2.i.i.i42, label %bb1.i.i.i41
+
+bb1.i.i.i41: ; preds = %bb.i.i.i40
+ %26 = bitcast %struct.btPersistentManifold** %22 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %26)
+ to label %bb2.i.i.i42 unwind label %lpad22
+
+bb2.i.i.i42: ; preds = %bb1.i.i.i41, %bb.i.i.i40
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %21, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44: ; preds = %bb2.i.i.i42, %lpad18
+ %27 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %27, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %21, align 4
+ %28 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i41
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %ppad
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44 ] ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1 ; [#uses=1]
+ invoke void @_ZN11btUnionFindD1Ev(%struct.btPairSet* %30)
+ to label %invcont8 unwind label %lpad26
+}
+
+; [#uses=1]
+define void @_ZN25btSimulationIslandManagerD1Ev(%struct.btSimulationIslandManager* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btSimulationIslandManager, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %2 = load %struct.btCollisionObject*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btCollisionObject** %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btCollisionObject** %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad18
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %1, align 4
+ %8 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %11 = load %struct.btPersistentManifold*** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btPersistentManifold** %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i35
+
+bb.i.i.i35: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i34 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i34, label %bb2.i.i.i37, label %bb1.i.i.i36
+
+bb1.i.i.i36: ; preds = %bb.i.i.i35
+ %15 = bitcast %struct.btPersistentManifold** %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i37 unwind label %lpad
+
+bb2.i.i.i37: ; preds = %bb1.i.i.i36, %bb.i.i.i35
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %10, align 4
+ br label %bb10
+
+invcont8: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i37, %bb3
+ %16 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %10, align 4
+ %17 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN11btUnionFindD1Ev(%struct.btPairSet* %19)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i36
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %bb1.i.i.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %20 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %21 = load %struct.btPersistentManifold*** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.btPersistentManifold** %21, null ; [#uses=1]
+ br i1 %22, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44, label %bb.i.i.i40
+
+bb.i.i.i40: ; preds = %lpad18
+ %23 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i.i39 = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i39, label %bb2.i.i.i42, label %bb1.i.i.i41
+
+bb1.i.i.i41: ; preds = %bb.i.i.i40
+ %25 = bitcast %struct.btPersistentManifold** %21 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %25)
+ to label %bb2.i.i.i42 unwind label %lpad22
+
+bb2.i.i.i42: ; preds = %bb1.i.i.i41, %bb.i.i.i40
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %20, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44: ; preds = %bb2.i.i.i42, %lpad18
+ %26 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %26, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %20, align 4
+ %27 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i41
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %ppad
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44 ] ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1 ; [#uses=1]
+ invoke void @_ZN11btUnionFindD1Ev(%struct.btPairSet* %29)
+ to label %invcont8 unwind label %lpad26
+}
+
+; [#uses=0]
+define void @_ZN25btSimulationIslandManagerD2Ev(%struct.btSimulationIslandManager* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btSimulationIslandManager, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %2 = load %struct.btCollisionObject*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btCollisionObject** %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btCollisionObject** %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad18
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %1, align 4
+ %8 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %11 = load %struct.btPersistentManifold*** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btPersistentManifold** %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i35
+
+bb.i.i.i35: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i34 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i34, label %bb2.i.i.i37, label %bb1.i.i.i36
+
+bb1.i.i.i36: ; preds = %bb.i.i.i35
+ %15 = bitcast %struct.btPersistentManifold** %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i37 unwind label %lpad
+
+bb2.i.i.i37: ; preds = %bb1.i.i.i36, %bb.i.i.i35
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %10, align 4
+ br label %bb10
+
+invcont8: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i37, %bb3
+ %16 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %10, align 4
+ %17 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN11btUnionFindD1Ev(%struct.btPairSet* %19)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i36
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %bb1.i.i.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %20 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %21 = load %struct.btPersistentManifold*** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.btPersistentManifold** %21, null ; [#uses=1]
+ br i1 %22, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44, label %bb.i.i.i40
+
+bb.i.i.i40: ; preds = %lpad18
+ %23 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i.i39 = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i39, label %bb2.i.i.i42, label %bb1.i.i.i41
+
+bb1.i.i.i41: ; preds = %bb.i.i.i40
+ %25 = bitcast %struct.btPersistentManifold** %21 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %25)
+ to label %bb2.i.i.i42 unwind label %lpad22
+
+bb2.i.i.i42: ; preds = %bb1.i.i.i41, %bb.i.i.i40
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %20, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44: ; preds = %bb2.i.i.i42, %lpad18
+ %26 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %26, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %20, align 4
+ %27 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i41
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %ppad
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44 ] ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1 ; [#uses=1]
+ invoke void @_ZN11btUnionFindD1Ev(%struct.btPairSet* %29)
+ to label %invcont8 unwind label %lpad26
+}
+
+; [#uses=1]
+define void @_ZN25btSimulationIslandManagerC1Ev(%struct.btSimulationIslandManager* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btSimulationIslandManager, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN11btUnionFindC1Ev(%struct.btPairSet* %1)
+ %2 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %3, align 4
+ %4 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %6, align 4
+ %7 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %7, align 4
+ %8 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btSimulationIslandManager* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %10, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN29btSphereBoxCollisionAlgorithmC2EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_b(%struct.btSphereBoxCollisionAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1, i8 zeroext %isSwapped) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1)
+ %1 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV29btSphereBoxCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=2]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %3, align 4
+ %4 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 %isSwapped, i8* %4, align 4
+ %toBool = icmp eq i8 %isSwapped, 0 ; [#uses=2]
+ %iftmp.187.0 = select i1 %toBool, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1 ; [#uses=2]
+ %iftmp.188.0 = select i1 %toBool, %struct.btCollisionObject* %col1, %struct.btCollisionObject* %col0 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %mf, null ; [#uses=1]
+ br i1 %5, label %bb7, label %bb13
+
+bb7: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 6 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to i8 (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*)* ; [#uses=1]
+ %13 = invoke zeroext i8 %12(%struct.btActionInterface* %7, %struct.btCollisionObject* %iftmp.187.0, %struct.btCollisionObject* %iftmp.188.0)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb7
+ %toBool8not = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool8not, label %bb13, label %bb16
+
+bb13: ; preds = %invcont, %entry
+ ret void
+
+bb16: ; preds = %invcont
+ %14 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btActionInterface* %14, i32 0, i32 0 ; [#uses=1]
+ %16 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds i32 (...)** %16, i32 3 ; [#uses=1]
+ %18 = load i32 (...)** %17, align 4 ; [#uses=1]
+ %19 = bitcast i32 (...)* %18 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %20 = bitcast %struct.btCollisionObject* %iftmp.187.0 to i8* ; [#uses=1]
+ %21 = bitcast %struct.btCollisionObject* %iftmp.188.0 to i8* ; [#uses=1]
+ %22 = invoke %struct.btPersistentManifold* %19(%struct.btActionInterface* %14, i8* %20, i8* %21)
+ to label %invcont17 unwind label %lpad ; [#uses=1]
+
+invcont17: ; preds = %bb16
+ store %struct.btPersistentManifold* %22, %struct.btPersistentManifold** %3, align 4
+ store i8 1, i8* %2, align 4
+ ret void
+
+invcont19: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %bb16, %bb7
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select23 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %0)
+ to label %invcont19 unwind label %lpad24
+
+lpad24: ; preds = %lpad
+ %eh_ptr25 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select27 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr25, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define float @_ZN29btSphereBoxCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btSphereBoxCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %col0, %struct.btCollisionObject* nocapture %col1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* nocapture %resultOut) nounwind readnone align 2 {
+entry:
+ ret float 1.000000e+00
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN29btSphereBoxCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(%struct.btSphereBoxCollisionAlgorithm* nocapture %this, %"struct.btAlignedObjectArray<btPersistentManifold*>"* nocapture %manifoldArray) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb1
+
+bb1: ; preds = %bb
+ tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, %struct.btPersistentManifold** %0) inlinehint
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define float @_ZN29btSphereBoxCollisionAlgorithm20getSpherePenetrationEP17btCollisionObjectR9btVector3S3_RKS2_fS5_S5_(%struct.btSphereBoxCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %boxObj, %struct.btQuadWord* nocapture %pointOnBox, %struct.btQuadWord* nocapture %v3PointOnSphere, %struct.btQuadWord* nocapture %sphereCenter, float %fRadius, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+bb5:
+ %bounds = alloca [2 x %struct.btQuadWord], align 8 ; [#uses=11]
+ %n = alloca [6 x %struct.btQuadWord], align 8 ; [#uses=27]
+ %0 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 8
+ %3 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 8
+ %9 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 8
+ %15 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 8
+ %21 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float -1.000000e+00, float* %24, align 8
+ %25 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 8
+ %27 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ %28 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 8
+ %29 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float -1.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 8
+ %31 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %32, align 8
+ %33 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float -1.000000e+00, float* %34, align 8
+ %35 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %36, align 8
+ %37 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 4
+ %38 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %38, align 8
+ %39 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %39, align 4
+ %40 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %40, align 8
+ %41 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %41, align 4
+ %42 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %42, align 8
+ %43 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %43, align 4
+ %44 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %44, align 8
+ %45 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %45, align 4
+ %46 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %46, align 8
+ %47 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %47, align 4
+ %48 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=3]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fsub float %49, %51 ; [#uses=3]
+ %53 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=3]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = fsub float %54, %56 ; [#uses=3]
+ %58 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=3]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fsub float %59, %61 ; [#uses=3]
+ %63 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %64 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %65 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %66 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %67 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %68 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %69 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %70 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %71 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = load float* %70, align 4 ; [#uses=1]
+ %74 = load float* %69, align 4 ; [#uses=1]
+ %75 = load float* %68, align 4 ; [#uses=1]
+ %76 = load float* %67, align 4 ; [#uses=1]
+ %77 = load float* %66, align 4 ; [#uses=1]
+ %78 = load float* %65, align 4 ; [#uses=1]
+ %79 = load float* %64, align 4 ; [#uses=1]
+ %80 = load float* %63, align 4 ; [#uses=1]
+ %81 = fmul float %78, %62 ; [#uses=1]
+ %82 = fmul float %79, %57 ; [#uses=1]
+ %83 = fadd float %81, %82 ; [#uses=1]
+ %84 = fmul float %80, %52 ; [#uses=1]
+ %85 = fadd float %83, %84 ; [#uses=3]
+ %86 = fmul float %75, %62 ; [#uses=1]
+ %87 = fmul float %76, %57 ; [#uses=1]
+ %88 = fadd float %86, %87 ; [#uses=1]
+ %89 = fmul float %77, %52 ; [#uses=1]
+ %90 = fadd float %88, %89 ; [#uses=3]
+ %91 = fmul float %72, %62 ; [#uses=1]
+ %92 = fmul float %73, %57 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = fmul float %74, %52 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=3]
+ br label %bb13
+
+bb7: ; preds = %bb13
+ %scevgep8687 = getelementptr [6 x %struct.btQuadWord]* %n, i32 0, i32 %119, i32 0, i32 0 ; [#uses=1]
+ %scevgep85 = getelementptr [6 x %struct.btQuadWord]* %n, i32 0, i32 %119, i32 0, i32 1 ; [#uses=1]
+ %scevgep = getelementptr [6 x %struct.btQuadWord]* %n, i32 0, i32 %119, i32 0, i32 2 ; [#uses=1]
+ %96 = icmp sgt i32 %119, 2 ; [#uses=1]
+ %97 = zext i1 %96 to i32 ; [#uses=3]
+ %98 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %97, i32 0, i32 2 ; [#uses=1]
+ %99 = load float* %98, align 8 ; [#uses=2]
+ %100 = fsub float %85, %99 ; [#uses=1]
+ %101 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %97, i32 0, i32 1 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=2]
+ %103 = fsub float %90, %102 ; [#uses=1]
+ %104 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %97, i32 0, i32 0 ; [#uses=1]
+ %105 = load float* %104, align 8 ; [#uses=2]
+ %106 = fsub float %95, %105 ; [#uses=1]
+ %107 = load float* %scevgep8687, align 8 ; [#uses=2]
+ %108 = fmul float %106, %107 ; [#uses=1]
+ %109 = load float* %scevgep85, align 4 ; [#uses=2]
+ %110 = fmul float %103, %109 ; [#uses=1]
+ %111 = fadd float %108, %110 ; [#uses=1]
+ %112 = load float* %scevgep, align 8 ; [#uses=2]
+ %113 = fmul float %100, %112 ; [#uses=1]
+ %114 = fadd float %111, %113 ; [#uses=1]
+ %115 = fsub float %114, %fRadius ; [#uses=3]
+ %116 = fcmp ogt float %115, 0.000000e+00 ; [#uses=1]
+ br i1 %116, label %bb19, label %bb10
+
+bb10: ; preds = %bb7
+ %117 = fcmp ogt float %115, %fSep.1 ; [#uses=1]
+ br i1 %117, label %bb11, label %bb12
+
+bb11: ; preds = %bb10
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb10
+ %p0.0.0.0 = phi float [ %105, %bb11 ], [ %p0.0.0.1, %bb10 ] ; [#uses=1]
+ %p0.0.1.0 = phi float [ %102, %bb11 ], [ %p0.0.1.1, %bb10 ] ; [#uses=1]
+ %p0.0.2.0 = phi float [ %99, %bb11 ], [ %p0.0.2.1, %bb10 ] ; [#uses=1]
+ %normal.0.0.0 = phi float [ %107, %bb11 ], [ %normal.0.0.1, %bb10 ] ; [#uses=1]
+ %normal.0.1.0 = phi float [ %109, %bb11 ], [ %normal.0.1.1, %bb10 ] ; [#uses=1]
+ %normal.0.2.0 = phi float [ %112, %bb11 ], [ %normal.0.2.1, %bb10 ] ; [#uses=1]
+ %fSep.0 = phi float [ %115, %bb11 ], [ %fSep.1, %bb10 ] ; [#uses=1]
+ %118 = add nsw i32 %119, 1 ; [#uses=1]
+ br label %bb13
+
+bb13: ; preds = %bb12, %bb5
+ %p0.0.0.1 = phi float [ 0.000000e+00, %bb5 ], [ %p0.0.0.0, %bb12 ] ; [#uses=2]
+ %p0.0.1.1 = phi float [ 0.000000e+00, %bb5 ], [ %p0.0.1.0, %bb12 ] ; [#uses=2]
+ %p0.0.2.1 = phi float [ 0.000000e+00, %bb5 ], [ %p0.0.2.0, %bb12 ] ; [#uses=2]
+ %normal.0.0.1 = phi float [ 0.000000e+00, %bb5 ], [ %normal.0.0.0, %bb12 ] ; [#uses=4]
+ %normal.0.1.1 = phi float [ 0.000000e+00, %bb5 ], [ %normal.0.1.0, %bb12 ] ; [#uses=4]
+ %normal.0.2.1 = phi float [ 0.000000e+00, %bb5 ], [ %normal.0.2.0, %bb12 ] ; [#uses=4]
+ %fSep.1 = phi float [ -1.000000e+07, %bb5 ], [ %fSep.0, %bb12 ] ; [#uses=6]
+ %119 = phi i32 [ 0, %bb5 ], [ %118, %bb12 ] ; [#uses=6]
+ %120 = icmp slt i32 %119, 6 ; [#uses=1]
+ br i1 %120, label %bb7, label %bb14
+
+bb14: ; preds = %bb13
+ %121 = fsub float %85, %p0.0.2.1 ; [#uses=1]
+ %122 = fsub float %90, %p0.0.1.1 ; [#uses=1]
+ %123 = fsub float %95, %p0.0.0.1 ; [#uses=1]
+ %124 = fmul float %normal.0.0.1, %123 ; [#uses=1]
+ %125 = fmul float %normal.0.1.1, %122 ; [#uses=1]
+ %126 = fadd float %124, %125 ; [#uses=1]
+ %127 = fmul float %normal.0.2.1, %121 ; [#uses=1]
+ %128 = fadd float %126, %127 ; [#uses=3]
+ %129 = fmul float %normal.0.2.1, %128 ; [#uses=1]
+ %130 = fmul float %normal.0.1.1, %128 ; [#uses=1]
+ %131 = fmul float %normal.0.0.1, %128 ; [#uses=1]
+ %132 = fsub float %85, %129 ; [#uses=2]
+ %133 = fsub float %90, %130 ; [#uses=2]
+ %134 = fsub float %95, %131 ; [#uses=2]
+ %135 = getelementptr inbounds %struct.btQuadWord* %pointOnBox, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %134, float* %135, align 4
+ %136 = getelementptr inbounds %struct.btQuadWord* %pointOnBox, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %133, float* %136, align 4
+ %137 = getelementptr inbounds %struct.btQuadWord* %pointOnBox, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %132, float* %137, align 4
+ %138 = getelementptr inbounds %struct.btQuadWord* %pointOnBox, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %138, align 4
+ %139 = fmul float %normal.0.2.1, %fSep.1 ; [#uses=1]
+ %140 = fmul float %normal.0.1.1, %fSep.1 ; [#uses=1]
+ %141 = fmul float %normal.0.0.1, %fSep.1 ; [#uses=1]
+ %142 = fadd float %132, %139 ; [#uses=1]
+ %143 = fadd float %133, %140 ; [#uses=1]
+ %144 = fadd float %134, %141 ; [#uses=1]
+ %145 = getelementptr inbounds %struct.btQuadWord* %v3PointOnSphere, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %144, float* %145, align 4
+ %146 = getelementptr inbounds %struct.btQuadWord* %v3PointOnSphere, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %143, float* %146, align 4
+ %147 = getelementptr inbounds %struct.btQuadWord* %v3PointOnSphere, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %142, float* %147, align 4
+ %148 = getelementptr inbounds %struct.btQuadWord* %v3PointOnSphere, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %148, align 4
+ %149 = load float* %69, align 4 ; [#uses=1]
+ %150 = load float* %135, align 4 ; [#uses=3]
+ %151 = fmul float %149, %150 ; [#uses=1]
+ %152 = load float* %66, align 4 ; [#uses=1]
+ %153 = load float* %136, align 4 ; [#uses=3]
+ %154 = fmul float %152, %153 ; [#uses=1]
+ %155 = fadd float %151, %154 ; [#uses=1]
+ %156 = load float* %63, align 4 ; [#uses=1]
+ %157 = load float* %137, align 4 ; [#uses=3]
+ %158 = fmul float %156, %157 ; [#uses=1]
+ %159 = fadd float %155, %158 ; [#uses=1]
+ %160 = load float* %50, align 4 ; [#uses=1]
+ %161 = fadd float %159, %160 ; [#uses=1]
+ %162 = load float* %70, align 4 ; [#uses=1]
+ %163 = fmul float %162, %150 ; [#uses=1]
+ %164 = load float* %67, align 4 ; [#uses=1]
+ %165 = fmul float %164, %153 ; [#uses=1]
+ %166 = fadd float %163, %165 ; [#uses=1]
+ %167 = load float* %64, align 4 ; [#uses=1]
+ %168 = fmul float %167, %157 ; [#uses=1]
+ %169 = fadd float %166, %168 ; [#uses=1]
+ %170 = load float* %55, align 4 ; [#uses=1]
+ %171 = fadd float %169, %170 ; [#uses=1]
+ %172 = load float* %71, align 4 ; [#uses=1]
+ %173 = fmul float %172, %150 ; [#uses=1]
+ %174 = load float* %68, align 4 ; [#uses=1]
+ %175 = fmul float %174, %153 ; [#uses=1]
+ %176 = fadd float %173, %175 ; [#uses=1]
+ %177 = load float* %65, align 4 ; [#uses=1]
+ %178 = fmul float %177, %157 ; [#uses=1]
+ %179 = fadd float %176, %178 ; [#uses=1]
+ %180 = load float* %60, align 4 ; [#uses=1]
+ %181 = fadd float %179, %180 ; [#uses=1]
+ store float %181, float* %135, align 4
+ store float %171, float* %136, align 4
+ store float %161, float* %137, align 4
+ store float 0.000000e+00, float* %138, align 4
+ %182 = load float* %69, align 4 ; [#uses=1]
+ %183 = load float* %145, align 4 ; [#uses=3]
+ %184 = fmul float %182, %183 ; [#uses=1]
+ %185 = load float* %66, align 4 ; [#uses=1]
+ %186 = load float* %146, align 4 ; [#uses=3]
+ %187 = fmul float %185, %186 ; [#uses=1]
+ %188 = fadd float %184, %187 ; [#uses=1]
+ %189 = load float* %63, align 4 ; [#uses=1]
+ %190 = load float* %147, align 4 ; [#uses=3]
+ %191 = fmul float %189, %190 ; [#uses=1]
+ %192 = fadd float %188, %191 ; [#uses=1]
+ %193 = load float* %50, align 4 ; [#uses=1]
+ %194 = fadd float %192, %193 ; [#uses=1]
+ %195 = load float* %70, align 4 ; [#uses=1]
+ %196 = fmul float %195, %183 ; [#uses=1]
+ %197 = load float* %67, align 4 ; [#uses=1]
+ %198 = fmul float %197, %186 ; [#uses=1]
+ %199 = fadd float %196, %198 ; [#uses=1]
+ %200 = load float* %64, align 4 ; [#uses=1]
+ %201 = fmul float %200, %190 ; [#uses=1]
+ %202 = fadd float %199, %201 ; [#uses=1]
+ %203 = load float* %55, align 4 ; [#uses=1]
+ %204 = fadd float %202, %203 ; [#uses=1]
+ %205 = load float* %71, align 4 ; [#uses=1]
+ %206 = fmul float %205, %183 ; [#uses=1]
+ %207 = load float* %68, align 4 ; [#uses=1]
+ %208 = fmul float %207, %186 ; [#uses=1]
+ %209 = fadd float %206, %208 ; [#uses=1]
+ %210 = load float* %65, align 4 ; [#uses=1]
+ %211 = fmul float %210, %190 ; [#uses=1]
+ %212 = fadd float %209, %211 ; [#uses=1]
+ %213 = load float* %60, align 4 ; [#uses=1]
+ %214 = fadd float %212, %213 ; [#uses=1]
+ store float %214, float* %145, align 4
+ store float %204, float* %146, align 4
+ store float %194, float* %147, align 4
+ store float 0.000000e+00, float* %148, align 4
+ ret float %fSep.1
+
+bb19: ; preds = %bb7
+ ret float 1.000000e+00
+}
+
+; [#uses=1]
+define float @_ZN29btSphereBoxCollisionAlgorithm17getSphereDistanceEP17btCollisionObjectR9btVector3S3_RKS2_f(%struct.btSphereBoxCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %boxObj, %struct.btQuadWord* %pointOnBox, %struct.btQuadWord* %v3PointOnSphere, %struct.btQuadWord* nocapture %sphereCenter, float %fRadius) align 2 {
+bb.nph:
+ %bounds = alloca [2 x %struct.btQuadWord], align 8 ; [#uses=13]
+ %boundsVec = alloca [2 x %struct.btQuadWord], align 8 ; [#uses=8]
+ %n = alloca [6 x %struct.btQuadWord], align 8 ; [#uses=27]
+ %0 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 9 ; [#uses=1]
+ %1 = load %struct.btCollisionShape** %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btCollisionShape* %1, i32 2, i32 1 ; [#uses=4]
+ %3 = getelementptr inbounds i32* %2, i32 2 ; [#uses=1]
+ %4 = bitcast i32* %3 to float* ; [#uses=2]
+ %5 = load float* %4, align 4 ; [#uses=2]
+ %6 = fsub float -0.000000e+00, %5 ; [#uses=2]
+ %7 = getelementptr inbounds i32* %2, i32 1 ; [#uses=1]
+ %8 = bitcast i32* %7 to float* ; [#uses=2]
+ %9 = load float* %8, align 4 ; [#uses=2]
+ %10 = fsub float -0.000000e+00, %9 ; [#uses=2]
+ %11 = bitcast i32* %2 to float* ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=2]
+ %13 = fsub float -0.000000e+00, %12 ; [#uses=2]
+ %14 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %15 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %16 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %17 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %19 = load float* %11, align 4 ; [#uses=4]
+ %20 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %21 = load float* %8, align 4 ; [#uses=4]
+ %22 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %23 = load float* %4, align 4 ; [#uses=4]
+ %24 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %25 = getelementptr inbounds i32* %2, i32 3 ; [#uses=1]
+ %26 = bitcast i32* %25 to float* ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=4]
+ store float %27, float* %24, align 4
+ %28 = getelementptr inbounds %struct.btCollisionShape* %1, i32 0, i32 0 ; [#uses=1]
+ %29 = load i32 (...)*** %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds i32 (...)** %29, i32 11 ; [#uses=1]
+ %31 = load i32 (...)** %30, align 4 ; [#uses=1]
+ %32 = bitcast %struct.btCollisionShape* %1 to %struct.btConvexInternalShape* ; [#uses=1]
+ %33 = bitcast i32 (...)* %31 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %34 = call float %33(%struct.btConvexInternalShape* %32) ; [#uses=10]
+ %35 = getelementptr inbounds [2 x %struct.btQuadWord]* %boundsVec, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %13, float* %35, align 8
+ %36 = getelementptr inbounds [2 x %struct.btQuadWord]* %boundsVec, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %10, float* %36, align 4
+ %37 = getelementptr inbounds [2 x %struct.btQuadWord]* %boundsVec, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %6, float* %37, align 8
+ %38 = getelementptr inbounds [2 x %struct.btQuadWord]* %boundsVec, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %38, align 4
+ %39 = getelementptr inbounds [2 x %struct.btQuadWord]* %boundsVec, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %19, float* %39, align 8
+ %40 = getelementptr inbounds [2 x %struct.btQuadWord]* %boundsVec, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %21, float* %40, align 4
+ %41 = getelementptr inbounds [2 x %struct.btQuadWord]* %boundsVec, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %23, float* %41, align 8
+ %42 = getelementptr inbounds [2 x %struct.btQuadWord]* %boundsVec, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %27, float* %42, align 4
+ %43 = fsub float %34, %12 ; [#uses=1]
+ store float %43, float* %14, align 8
+ %44 = fsub float %34, %9 ; [#uses=1]
+ store float %44, float* %15, align 4
+ %45 = fsub float %34, %5 ; [#uses=1]
+ store float %45, float* %16, align 8
+ %46 = fsub float %19, %34 ; [#uses=1]
+ store float %46, float* %18, align 8
+ %47 = fsub float %21, %34 ; [#uses=1]
+ store float %47, float* %20, align 4
+ %48 = fsub float %23, %34 ; [#uses=1]
+ store float %48, float* %22, align 8
+ %49 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float -1.000000e+00, float* %49, align 8
+ %50 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %50, align 4
+ %51 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %51, align 8
+ %52 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %52, align 4
+ %53 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %53, align 8
+ %54 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float -1.000000e+00, float* %54, align 4
+ %55 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %55, align 8
+ %56 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %56, align 4
+ %57 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %57, align 8
+ %58 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %58, align 4
+ %59 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float -1.000000e+00, float* %59, align 8
+ %60 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 4
+ %61 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %61, align 8
+ %62 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %62, align 4
+ %63 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %63, align 8
+ %64 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %64, align 4
+ %65 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %65, align 8
+ %66 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %66, align 4
+ %67 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %67, align 8
+ %68 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %68, align 4
+ %69 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %69, align 8
+ %70 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %70, align 4
+ %71 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %71, align 8
+ %72 = getelementptr inbounds [6 x %struct.btQuadWord]* %n, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %72, align 4
+ %73 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 2 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=3]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ %77 = fsub float %74, %76 ; [#uses=3]
+ %78 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 1 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=3]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ %82 = fsub float %79, %81 ; [#uses=3]
+ %83 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 0 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=3]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ %87 = fsub float %84, %86 ; [#uses=3]
+ %88 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %89 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %90 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %91 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %92 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %93 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %94 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %95 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %96 = getelementptr inbounds %struct.btCollisionObject* %boxObj, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ %98 = load float* %95, align 4 ; [#uses=1]
+ %99 = load float* %94, align 4 ; [#uses=1]
+ %100 = load float* %93, align 4 ; [#uses=1]
+ %101 = load float* %92, align 4 ; [#uses=1]
+ %102 = load float* %91, align 4 ; [#uses=1]
+ %103 = load float* %90, align 4 ; [#uses=1]
+ %104 = load float* %89, align 4 ; [#uses=1]
+ %105 = load float* %88, align 4 ; [#uses=1]
+ %106 = fmul float %103, %87 ; [#uses=1]
+ %107 = fmul float %104, %82 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fmul float %105, %77 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=3]
+ %111 = fmul float %100, %87 ; [#uses=1]
+ %112 = fmul float %101, %82 ; [#uses=1]
+ %113 = fadd float %111, %112 ; [#uses=1]
+ %114 = fmul float %102, %77 ; [#uses=1]
+ %115 = fadd float %113, %114 ; [#uses=3]
+ %116 = fmul float %97, %87 ; [#uses=1]
+ %117 = fmul float %98, %82 ; [#uses=1]
+ %118 = fadd float %116, %117 ; [#uses=1]
+ %119 = fmul float %99, %77 ; [#uses=1]
+ %120 = fadd float %118, %119 ; [#uses=3]
+ br label %bb11
+
+bb11: ; preds = %bb15.bb11_crit_edge, %bb.nph
+ %121 = phi float [ 0.000000e+00, %bb.nph ], [ %.pre124, %bb15.bb11_crit_edge ] ; [#uses=2]
+ %122 = phi float [ 0.000000e+00, %bb.nph ], [ %.pre123, %bb15.bb11_crit_edge ] ; [#uses=2]
+ %123 = phi float [ -1.000000e+00, %bb.nph ], [ %.pre, %bb15.bb11_crit_edge ] ; [#uses=2]
+ %124 = phi i32 [ 0, %bb.nph ], [ %148, %bb15.bb11_crit_edge ] ; [#uses=2]
+ %bFound.1106 = phi i8 [ 0, %bb.nph ], [ %bFound.0, %bb15.bb11_crit_edge ] ; [#uses=1]
+ %v3P.0.2.1105 = phi float [ %110, %bb.nph ], [ %v3P.0.2.0, %bb15.bb11_crit_edge ] ; [#uses=3]
+ %v3P.0.1.1104 = phi float [ %115, %bb.nph ], [ %v3P.0.1.0, %bb15.bb11_crit_edge ] ; [#uses=3]
+ %v3P.0.0.1103 = phi float [ %120, %bb.nph ], [ %v3P.0.0.0, %bb15.bb11_crit_edge ] ; [#uses=3]
+ %125 = icmp sgt i32 %124, 2 ; [#uses=1]
+ %126 = zext i1 %125 to i32 ; [#uses=3]
+ %127 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %126, i32 0, i32 2 ; [#uses=1]
+ %128 = load float* %127, align 8 ; [#uses=1]
+ %129 = fsub float %v3P.0.2.1105, %128 ; [#uses=1]
+ %130 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %126, i32 0, i32 1 ; [#uses=1]
+ %131 = load float* %130, align 4 ; [#uses=1]
+ %132 = fsub float %v3P.0.1.1104, %131 ; [#uses=1]
+ %133 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 %126, i32 0, i32 0 ; [#uses=1]
+ %134 = load float* %133, align 8 ; [#uses=1]
+ %135 = fsub float %v3P.0.0.1103, %134 ; [#uses=1]
+ %136 = fmul float %135, %123 ; [#uses=1]
+ %137 = fmul float %132, %122 ; [#uses=1]
+ %138 = fadd float %136, %137 ; [#uses=1]
+ %139 = fmul float %129, %121 ; [#uses=1]
+ %140 = fadd float %138, %139 ; [#uses=4]
+ %141 = fcmp ogt float %140, 0.000000e+00 ; [#uses=1]
+ br i1 %141, label %bb13, label %bb15
+
+bb13: ; preds = %bb11
+ %142 = fmul float %121, %140 ; [#uses=1]
+ %143 = fmul float %122, %140 ; [#uses=1]
+ %144 = fmul float %123, %140 ; [#uses=1]
+ %145 = fsub float %v3P.0.2.1105, %142 ; [#uses=1]
+ %146 = fsub float %v3P.0.1.1104, %143 ; [#uses=1]
+ %147 = fsub float %v3P.0.0.1103, %144 ; [#uses=1]
+ br label %bb15
+
+bb15: ; preds = %bb13, %bb11
+ %v3P.0.0.0 = phi float [ %147, %bb13 ], [ %v3P.0.0.1103, %bb11 ] ; [#uses=3]
+ %v3P.0.1.0 = phi float [ %146, %bb13 ], [ %v3P.0.1.1104, %bb11 ] ; [#uses=3]
+ %v3P.0.2.0 = phi float [ %145, %bb13 ], [ %v3P.0.2.1105, %bb11 ] ; [#uses=3]
+ %bFound.0 = phi i8 [ 1, %bb13 ], [ %bFound.1106, %bb11 ] ; [#uses=2]
+ %148 = add nsw i32 %124, 1 ; [#uses=5]
+ %exitcond = icmp eq i32 %148, 6 ; [#uses=1]
+ br i1 %exitcond, label %bb17, label %bb15.bb11_crit_edge
+
+bb15.bb11_crit_edge: ; preds = %bb15
+ %scevgep117.phi.trans.insert = getelementptr [6 x %struct.btQuadWord]* %n, i32 0, i32 %148, i32 0, i32 0 ; [#uses=1]
+ %.pre = load float* %scevgep117.phi.trans.insert, align 8 ; [#uses=1]
+ %scevgep118.phi.trans.insert = getelementptr [6 x %struct.btQuadWord]* %n, i32 0, i32 %148, i32 0, i32 1 ; [#uses=1]
+ %.pre123 = load float* %scevgep118.phi.trans.insert, align 4 ; [#uses=1]
+ %scevgep119.phi.trans.insert = getelementptr [6 x %struct.btQuadWord]* %n, i32 0, i32 %148, i32 0, i32 2 ; [#uses=1]
+ %.pre124 = load float* %scevgep119.phi.trans.insert, align 8 ; [#uses=1]
+ br label %bb11
+
+bb17: ; preds = %bb15
+ %toBool18 = icmp eq i8 %bFound.0, 0 ; [#uses=1]
+ br i1 %toBool18, label %bb31, label %bb19
+
+bb19: ; preds = %bb17
+ store float %13, float* %14, align 8
+ store float %10, float* %15, align 4
+ store float %6, float* %16, align 8
+ store float 0.000000e+00, float* %17, align 4
+ store float %19, float* %18, align 8
+ store float %21, float* %20, align 4
+ store float %23, float* %22, align 8
+ store float %27, float* %24, align 4
+ %149 = fsub float %110, %v3P.0.2.0 ; [#uses=3]
+ %150 = fsub float %115, %v3P.0.1.0 ; [#uses=3]
+ %151 = fsub float %120, %v3P.0.0.0 ; [#uses=3]
+ %152 = fmul float %151, %151 ; [#uses=1]
+ %153 = fmul float %150, %150 ; [#uses=1]
+ %154 = fadd float %152, %153 ; [#uses=1]
+ %155 = fmul float %149, %149 ; [#uses=1]
+ %156 = fadd float %154, %155 ; [#uses=1]
+ %157 = call float @sqrtf(float %156) nounwind readonly ; [#uses=1]
+ %158 = fdiv float 1.000000e+00, %157 ; [#uses=3]
+ %159 = fmul float %151, %158 ; [#uses=3]
+ %160 = fmul float %150, %158 ; [#uses=3]
+ %161 = fmul float %149, %158 ; [#uses=3]
+ %162 = fmul float %161, %34 ; [#uses=1]
+ %163 = fmul float %160, %34 ; [#uses=1]
+ %164 = fmul float %159, %34 ; [#uses=1]
+ %165 = fadd float %v3P.0.2.0, %162 ; [#uses=1]
+ %166 = fadd float %v3P.0.1.0, %163 ; [#uses=1]
+ %167 = fadd float %v3P.0.0.0, %164 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btQuadWord* %pointOnBox, i32 0, i32 0, i32 0 ; [#uses=4]
+ store float %167, float* %168, align 4
+ %169 = getelementptr inbounds %struct.btQuadWord* %pointOnBox, i32 0, i32 0, i32 1 ; [#uses=4]
+ store float %166, float* %169, align 4
+ %170 = getelementptr inbounds %struct.btQuadWord* %pointOnBox, i32 0, i32 0, i32 2 ; [#uses=4]
+ store float %165, float* %170, align 4
+ %171 = getelementptr inbounds %struct.btQuadWord* %pointOnBox, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %171, align 4
+ %172 = fmul float %161, %fRadius ; [#uses=1]
+ %173 = fmul float %160, %fRadius ; [#uses=1]
+ %174 = fmul float %159, %fRadius ; [#uses=1]
+ %175 = fsub float %110, %172 ; [#uses=2]
+ %176 = fsub float %115, %173 ; [#uses=2]
+ %177 = fsub float %120, %174 ; [#uses=2]
+ %178 = getelementptr inbounds %struct.btQuadWord* %v3PointOnSphere, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %177, float* %178, align 4
+ %179 = getelementptr inbounds %struct.btQuadWord* %v3PointOnSphere, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %176, float* %179, align 4
+ %180 = getelementptr inbounds %struct.btQuadWord* %v3PointOnSphere, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %175, float* %180, align 4
+ %181 = getelementptr inbounds %struct.btQuadWord* %v3PointOnSphere, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %181, align 4
+ %182 = load float* %170, align 4 ; [#uses=4]
+ %183 = fsub float %175, %182 ; [#uses=1]
+ %184 = load float* %169, align 4 ; [#uses=4]
+ %185 = fsub float %176, %184 ; [#uses=1]
+ %186 = load float* %168, align 4 ; [#uses=4]
+ %187 = fsub float %177, %186 ; [#uses=1]
+ %188 = fmul float %187, %159 ; [#uses=1]
+ %189 = fmul float %185, %160 ; [#uses=1]
+ %190 = fadd float %188, %189 ; [#uses=1]
+ %191 = fmul float %183, %161 ; [#uses=1]
+ %192 = fadd float %190, %191 ; [#uses=1]
+ %193 = fcmp ogt float %192, 0.000000e+00 ; [#uses=1]
+ br i1 %193, label %bb34, label %bb25
+
+bb25: ; preds = %bb19
+ %194 = load float* %94, align 4 ; [#uses=1]
+ %195 = fmul float %194, %186 ; [#uses=1]
+ %196 = load float* %91, align 4 ; [#uses=1]
+ %197 = fmul float %196, %184 ; [#uses=1]
+ %198 = fadd float %195, %197 ; [#uses=1]
+ %199 = load float* %88, align 4 ; [#uses=1]
+ %200 = fmul float %199, %182 ; [#uses=1]
+ %201 = fadd float %198, %200 ; [#uses=1]
+ %202 = load float* %75, align 4 ; [#uses=1]
+ %203 = fadd float %201, %202 ; [#uses=1]
+ %204 = load float* %95, align 4 ; [#uses=1]
+ %205 = fmul float %204, %186 ; [#uses=1]
+ %206 = load float* %92, align 4 ; [#uses=1]
+ %207 = fmul float %206, %184 ; [#uses=1]
+ %208 = fadd float %205, %207 ; [#uses=1]
+ %209 = load float* %89, align 4 ; [#uses=1]
+ %210 = fmul float %209, %182 ; [#uses=1]
+ %211 = fadd float %208, %210 ; [#uses=1]
+ %212 = load float* %80, align 4 ; [#uses=1]
+ %213 = fadd float %211, %212 ; [#uses=1]
+ %214 = load float* %96, align 4 ; [#uses=1]
+ %215 = fmul float %214, %186 ; [#uses=1]
+ %216 = load float* %93, align 4 ; [#uses=1]
+ %217 = fmul float %216, %184 ; [#uses=1]
+ %218 = fadd float %215, %217 ; [#uses=1]
+ %219 = load float* %90, align 4 ; [#uses=1]
+ %220 = fmul float %219, %182 ; [#uses=1]
+ %221 = fadd float %218, %220 ; [#uses=1]
+ %222 = load float* %85, align 4 ; [#uses=1]
+ %223 = fadd float %221, %222 ; [#uses=1]
+ store float %223, float* %168, align 4
+ store float %213, float* %169, align 4
+ store float %203, float* %170, align 4
+ store float 0.000000e+00, float* %171, align 4
+ %224 = load float* %94, align 4 ; [#uses=1]
+ %225 = load float* %178, align 4 ; [#uses=3]
+ %226 = fmul float %224, %225 ; [#uses=1]
+ %227 = load float* %91, align 4 ; [#uses=1]
+ %228 = load float* %179, align 4 ; [#uses=3]
+ %229 = fmul float %227, %228 ; [#uses=1]
+ %230 = fadd float %226, %229 ; [#uses=1]
+ %231 = load float* %88, align 4 ; [#uses=1]
+ %232 = load float* %180, align 4 ; [#uses=3]
+ %233 = fmul float %231, %232 ; [#uses=1]
+ %234 = fadd float %230, %233 ; [#uses=1]
+ %235 = load float* %75, align 4 ; [#uses=1]
+ %236 = fadd float %234, %235 ; [#uses=2]
+ %237 = load float* %95, align 4 ; [#uses=1]
+ %238 = fmul float %237, %225 ; [#uses=1]
+ %239 = load float* %92, align 4 ; [#uses=1]
+ %240 = fmul float %239, %228 ; [#uses=1]
+ %241 = fadd float %238, %240 ; [#uses=1]
+ %242 = load float* %89, align 4 ; [#uses=1]
+ %243 = fmul float %242, %232 ; [#uses=1]
+ %244 = fadd float %241, %243 ; [#uses=1]
+ %245 = load float* %80, align 4 ; [#uses=1]
+ %246 = fadd float %244, %245 ; [#uses=2]
+ %247 = load float* %96, align 4 ; [#uses=1]
+ %248 = fmul float %247, %225 ; [#uses=1]
+ %249 = load float* %93, align 4 ; [#uses=1]
+ %250 = fmul float %249, %228 ; [#uses=1]
+ %251 = fadd float %248, %250 ; [#uses=1]
+ %252 = load float* %90, align 4 ; [#uses=1]
+ %253 = fmul float %252, %232 ; [#uses=1]
+ %254 = fadd float %251, %253 ; [#uses=1]
+ %255 = load float* %85, align 4 ; [#uses=1]
+ %256 = fadd float %254, %255 ; [#uses=2]
+ store float %256, float* %178, align 4
+ store float %246, float* %179, align 4
+ store float %236, float* %180, align 4
+ store float 0.000000e+00, float* %181, align 4
+ %257 = load float* %170, align 4 ; [#uses=1]
+ %258 = fsub float %257, %236 ; [#uses=2]
+ %259 = load float* %169, align 4 ; [#uses=1]
+ %260 = fsub float %259, %246 ; [#uses=2]
+ %261 = load float* %168, align 4 ; [#uses=1]
+ %262 = fsub float %261, %256 ; [#uses=2]
+ %263 = fmul float %262, %262 ; [#uses=1]
+ %264 = fmul float %260, %260 ; [#uses=1]
+ %265 = fadd float %263, %264 ; [#uses=1]
+ %266 = fmul float %258, %258 ; [#uses=1]
+ %267 = fadd float %265, %266 ; [#uses=2]
+ %268 = fcmp ogt float %267, 0x3E80000000000000 ; [#uses=1]
+ br i1 %268, label %bb28, label %bb34
+
+bb28: ; preds = %bb25
+ %269 = call float @sqrtf(float %267) nounwind readonly ; [#uses=1]
+ %270 = fsub float -0.000000e+00, %269 ; [#uses=1]
+ ret float %270
+
+bb31: ; preds = %bb17
+ %271 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 0 ; [#uses=1]
+ %272 = getelementptr inbounds [2 x %struct.btQuadWord]* %bounds, i32 0, i32 1 ; [#uses=1]
+ %273 = call float @_ZN29btSphereBoxCollisionAlgorithm20getSpherePenetrationEP17btCollisionObjectR9btVector3S3_RKS2_fS5_S5_(%struct.btSphereBoxCollisionAlgorithm* %this, %struct.btCollisionObject* %boxObj, %struct.btQuadWord* %pointOnBox, %struct.btQuadWord* %v3PointOnSphere, %struct.btQuadWord* %sphereCenter, float %fRadius, %struct.btQuadWord* %271, %struct.btQuadWord* %272) ; [#uses=2]
+ %274 = load float* %35, align 8 ; [#uses=1]
+ store float %274, float* %14, align 8
+ %275 = load float* %36, align 4 ; [#uses=1]
+ store float %275, float* %15, align 4
+ %276 = load float* %37, align 8 ; [#uses=1]
+ store float %276, float* %16, align 8
+ store float 0.000000e+00, float* %17, align 4
+ store float %19, float* %18, align 8
+ store float %21, float* %20, align 4
+ store float %23, float* %22, align 8
+ store float %27, float* %24, align 4
+ %277 = fcmp ugt float %273, 0.000000e+00 ; [#uses=1]
+ br i1 %277, label %bb34, label %bb32
+
+bb32: ; preds = %bb31
+ %278 = fsub float %273, %34 ; [#uses=1]
+ ret float %278
+
+bb34: ; preds = %bb31, %bb25, %bb19
+ %.038 = phi float [ 1.000000e+00, %bb19 ], [ 1.000000e+07, %bb25 ], [ 1.000000e+00, %bb31 ] ; [#uses=1]
+ ret float %.038
+}
+
+; [#uses=1]
+define void @_ZN29btSphereBoxCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btSphereBoxCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %body0, %struct.btCollisionObject* nocapture %body1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %pOnBox = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %pOnSphere = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %sphereCenter = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %normalOnSurfaceB9 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=3]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=2]
+ %iftmp.193.0 = select i1 %toBool, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1 ; [#uses=5]
+ %iftmp.194.0 = select i1 %toBool, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btCollisionObject* %iftmp.193.0, i32 0, i32 9 ; [#uses=1]
+ %6 = load %struct.btCollisionShape** %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btCollisionObject* %iftmp.193.0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 8
+ %10 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCollisionObject* %iftmp.193.0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btCollisionObject* %iftmp.193.0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 8
+ %16 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 3 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCollisionObject* %iftmp.193.0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btCollisionShape* %6, i32 2, i32 1 ; [#uses=1]
+ %20 = bitcast i32* %19 to float* ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btCollisionShape* %6, i32 1 ; [#uses=1]
+ %23 = bitcast %struct.btCollisionShape* %22 to float* ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fmul float %21, %24 ; [#uses=1]
+ %26 = call float @_ZN29btSphereBoxCollisionAlgorithm17getSphereDistanceEP17btCollisionObjectR9btVector3S3_RKS2_f(%struct.btSphereBoxCollisionAlgorithm* %this, %struct.btCollisionObject* %iftmp.194.0, %struct.btQuadWord* %pOnBox, %struct.btQuadWord* %pOnSphere, %struct.btQuadWord* %sphereCenter, float %25) ; [#uses=2]
+ %27 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 1 ; [#uses=2]
+ store %struct.btPersistentManifold* %27, %struct.btPersistentManifold** %28, align 4
+ %29 = fcmp olt float %26, 0x3E80000000000000 ; [#uses=1]
+ br i1 %29, label %bb8, label %bb10
+
+bb8: ; preds = %bb
+ %30 = getelementptr inbounds %struct.btQuadWord* %pOnBox, i32 0, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 8 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %pOnSphere, i32 0, i32 0, i32 2 ; [#uses=1]
+ %33 = load float* %32, align 8 ; [#uses=1]
+ %34 = fsub float %31, %33 ; [#uses=3]
+ %35 = getelementptr inbounds %struct.btQuadWord* %pOnBox, i32 0, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %pOnSphere, i32 0, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fsub float %36, %38 ; [#uses=3]
+ %40 = getelementptr inbounds %struct.btQuadWord* %pOnBox, i32 0, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 8 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %pOnSphere, i32 0, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 8 ; [#uses=1]
+ %44 = fsub float %41, %43 ; [#uses=3]
+ %45 = fmul float %44, %44 ; [#uses=1]
+ %46 = fmul float %39, %39 ; [#uses=1]
+ %47 = fadd float %45, %46 ; [#uses=1]
+ %48 = fmul float %34, %34 ; [#uses=1]
+ %49 = fadd float %47, %48 ; [#uses=1]
+ %50 = call float @sqrtf(float %49) nounwind readonly ; [#uses=1]
+ %51 = fdiv float 1.000000e+00, %50 ; [#uses=3]
+ %52 = fmul float %44, %51 ; [#uses=1]
+ %53 = fmul float %39, %51 ; [#uses=1]
+ %54 = fmul float %34, %51 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btQuadWord* %normalOnSurfaceB9, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %52, float* %55, align 8
+ %56 = getelementptr inbounds %struct.btQuadWord* %normalOnSurfaceB9, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %53, float* %56, align 4
+ %57 = getelementptr inbounds %struct.btQuadWord* %normalOnSurfaceB9, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %54, float* %57, align 8
+ %58 = getelementptr inbounds %struct.btQuadWord* %normalOnSurfaceB9, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 0, i32 0 ; [#uses=1]
+ %60 = load i32 (...)*** %59, align 4 ; [#uses=1]
+ %61 = getelementptr inbounds i32 (...)** %60, i32 4 ; [#uses=1]
+ %62 = load i32 (...)** %61, align 4 ; [#uses=1]
+ %63 = bitcast i32 (...)* %62 to void (%struct.btManifoldResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %63(%struct.btManifoldResult* %resultOut, %struct.btQuadWord* %normalOnSurfaceB9, %struct.btQuadWord* %pOnBox, float %26)
+ br label %bb10
+
+bb10: ; preds = %bb8, %bb
+ %64 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %65 = load i8* %64, align 4 ; [#uses=1]
+ %toBool11 = icmp eq i8 %65, 0 ; [#uses=1]
+ br i1 %toBool11, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb12
+
+bb12: ; preds = %bb10
+ %66 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btPersistentManifold* %66, i32 0, i32 4 ; [#uses=1]
+ %68 = load i32* %67, align 4 ; [#uses=1]
+ %69 = icmp eq i32 %68, 0 ; [#uses=1]
+ br i1 %69, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb14
+
+bb14: ; preds = %bb12
+ %70 = load %struct.btPersistentManifold** %28, align 4 ; [#uses=4]
+ %71 = getelementptr inbounds %struct.btPersistentManifold* %70, i32 0, i32 4 ; [#uses=1]
+ %72 = load i32* %71, align 4 ; [#uses=1]
+ %73 = icmp eq i32 %72, 0 ; [#uses=1]
+ br i1 %73, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb.i
+
+bb.i: ; preds = %bb14
+ %74 = getelementptr inbounds %struct.btPersistentManifold* %70, i32 0, i32 2 ; [#uses=1]
+ %75 = load i8** %74, align 4 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 4 ; [#uses=1]
+ %77 = load %struct.btCollisionObject** %76, align 4 ; [#uses=1]
+ %78 = bitcast %struct.btCollisionObject* %77 to i8* ; [#uses=1]
+ %79 = icmp eq i8* %75, %78 ; [#uses=1]
+ br i1 %79, label %bb3.i, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %80 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %70, %struct.btTransform* %81, %struct.btTransform* %80)
+ ret void
+
+bb3.i: ; preds = %bb.i
+ %82 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %70, %struct.btTransform* %83, %struct.btTransform* %82)
+ ret void
+
+_ZN16btManifoldResult20refreshContactPointsEv.exit: ; preds = %bb14, %bb12, %bb10, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN29btSphereBoxCollisionAlgorithmD0Ev(%struct.btSphereBoxCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV29btSphereBoxCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ %14 = bitcast %struct.btSphereBoxCollisionAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %14) nounwind
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %15 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %15)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN29btSphereBoxCollisionAlgorithmD1Ev(%struct.btSphereBoxCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV29btSphereBoxCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN29btSphereBoxCollisionAlgorithmD2Ev(%struct.btSphereBoxCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV29btSphereBoxCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN29btSphereBoxCollisionAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_b(%struct.btSphereBoxCollisionAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1, i8 zeroext %isSwapped) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1)
+ %1 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV29btSphereBoxCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=2]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %3, align 4
+ %4 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 %isSwapped, i8* %4, align 4
+ %toBool = icmp eq i8 %isSwapped, 0 ; [#uses=2]
+ %iftmp.187.0 = select i1 %toBool, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1 ; [#uses=2]
+ %iftmp.188.0 = select i1 %toBool, %struct.btCollisionObject* %col1, %struct.btCollisionObject* %col0 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %mf, null ; [#uses=1]
+ br i1 %5, label %bb7, label %bb13
+
+bb7: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 6 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to i8 (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*)* ; [#uses=1]
+ %13 = invoke zeroext i8 %12(%struct.btActionInterface* %7, %struct.btCollisionObject* %iftmp.187.0, %struct.btCollisionObject* %iftmp.188.0)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb7
+ %toBool8not = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool8not, label %bb13, label %bb16
+
+bb13: ; preds = %invcont, %entry
+ ret void
+
+bb16: ; preds = %invcont
+ %14 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btActionInterface* %14, i32 0, i32 0 ; [#uses=1]
+ %16 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds i32 (...)** %16, i32 3 ; [#uses=1]
+ %18 = load i32 (...)** %17, align 4 ; [#uses=1]
+ %19 = bitcast i32 (...)* %18 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %20 = bitcast %struct.btCollisionObject* %iftmp.187.0 to i8* ; [#uses=1]
+ %21 = bitcast %struct.btCollisionObject* %iftmp.188.0 to i8* ; [#uses=1]
+ %22 = invoke %struct.btPersistentManifold* %19(%struct.btActionInterface* %14, i8* %20, i8* %21)
+ to label %invcont17 unwind label %lpad ; [#uses=1]
+
+invcont17: ; preds = %bb16
+ store %struct.btPersistentManifold* %22, %struct.btPersistentManifold** %3, align 4
+ store i8 1, i8* %2, align 4
+ ret void
+
+invcont19: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %bb16, %bb7
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select23 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %0)
+ to label %invcont19 unwind label %lpad24
+
+lpad24: ; preds = %lpad
+ %eh_ptr25 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select27 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr25, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN32btSphereSphereCollisionAlgorithmC2EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_(%struct.btBox2dBox2dCollisionAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1)
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV32btSphereSphereCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=2]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %3, align 4
+ %4 = icmp eq %struct.btPersistentManifold* %mf, null ; [#uses=1]
+ br i1 %4, label %bb, label %return
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load %struct.btActionInterface** %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btActionInterface* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 3 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = bitcast i32 (...)* %10 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %12 = bitcast %struct.btCollisionObject* %col0 to i8* ; [#uses=1]
+ %13 = bitcast %struct.btCollisionObject* %col1 to i8* ; [#uses=1]
+ %14 = invoke %struct.btPersistentManifold* %11(%struct.btActionInterface* %6, i8* %12, i8* %13)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb
+ store %struct.btPersistentManifold* %14, %struct.btPersistentManifold** %3, align 4
+ store i8 1, i8* %2, align 4
+ ret void
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %entry
+ ret void
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %0)
+ to label %invcont2 unwind label %lpad7
+
+lpad7: ; preds = %lpad
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define float @_ZN32btSphereSphereCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btBox2dBox2dCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %col0, %struct.btCollisionObject* nocapture %col1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* nocapture %resultOut) nounwind readnone align 2 {
+entry:
+ ret float 1.000000e+00
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN32btSphereSphereCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(%struct.btBox2dBox2dCollisionAlgorithm* nocapture %this, %"struct.btAlignedObjectArray<btPersistentManifold*>"* nocapture %manifoldArray) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb1
+
+bb1: ; preds = %bb
+ tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, %struct.btPersistentManifold** %0) inlinehint
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN32btSphereSphereCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btBox2dBox2dCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %col0, %struct.btCollisionObject* nocapture %col1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %normalOnSurfaceB = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %pos1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=6]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %_ZN16btManifoldResult20refreshContactPointsEv.exit10, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 1 ; [#uses=2]
+ store %struct.btPersistentManifold* %1, %struct.btPersistentManifold** %3, align 4
+ %4 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 9 ; [#uses=1]
+ %5 = load %struct.btCollisionShape** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 9 ; [#uses=1]
+ %7 = load %struct.btCollisionShape** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = fsub float %9, %11 ; [#uses=3]
+ %13 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = fsub float %14, %16 ; [#uses=3]
+ %18 = getelementptr inbounds %struct.btCollisionObject* %col0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %col1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=2]
+ %22 = fsub float %19, %21 ; [#uses=3]
+ %23 = fmul float %22, %22 ; [#uses=1]
+ %24 = fmul float %17, %17 ; [#uses=1]
+ %25 = fadd float %23, %24 ; [#uses=1]
+ %26 = fmul float %12, %12 ; [#uses=1]
+ %27 = fadd float %25, %26 ; [#uses=1]
+ %28 = call float @sqrtf(float %27) nounwind readonly ; [#uses=4]
+ %29 = getelementptr inbounds %struct.btCollisionShape* %5, i32 2, i32 1 ; [#uses=1]
+ %30 = bitcast i32* %29 to float* ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btCollisionShape* %5, i32 1 ; [#uses=1]
+ %33 = bitcast %struct.btCollisionShape* %32 to float* ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fmul float %31, %34 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btCollisionShape* %7, i32 2, i32 1 ; [#uses=1]
+ %37 = bitcast i32* %36 to float* ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btCollisionShape* %7, i32 1 ; [#uses=1]
+ %40 = bitcast %struct.btCollisionShape* %39 to float* ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = fmul float %38, %41 ; [#uses=4]
+ %43 = fadd float %35, %42 ; [#uses=2]
+ %44 = fcmp olt float %43, %28 ; [#uses=1]
+ br i1 %44, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %45 = getelementptr inbounds %struct.btPersistentManifold* %1, i32 0, i32 4 ; [#uses=1]
+ %46 = load i32* %45, align 4 ; [#uses=1]
+ %47 = icmp eq i32 %46, 0 ; [#uses=1]
+ br i1 %47, label %_ZN16btManifoldResult20refreshContactPointsEv.exit10, label %bb.i6
+
+bb.i6: ; preds = %bb1
+ %48 = getelementptr inbounds %struct.btPersistentManifold* %1, i32 0, i32 2 ; [#uses=1]
+ %49 = load i8** %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 4 ; [#uses=1]
+ %51 = load %struct.btCollisionObject** %50, align 4 ; [#uses=1]
+ %52 = bitcast %struct.btCollisionObject* %51 to i8* ; [#uses=1]
+ %53 = icmp eq i8* %49, %52 ; [#uses=1]
+ br i1 %53, label %bb3.i8, label %bb2.i7
+
+bb2.i7: ; preds = %bb.i6
+ %54 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %1, %struct.btTransform* %55, %struct.btTransform* %54)
+ ret void
+
+bb3.i8: ; preds = %bb.i6
+ %56 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %1, %struct.btTransform* %57, %struct.btTransform* %56)
+ ret void
+
+_ZN16btManifoldResult20refreshContactPointsEv.exit10: ; preds = %bb4, %bb1, %entry
+ ret void
+
+bb2: ; preds = %bb
+ %58 = fsub float %28, %43 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btQuadWord* %normalOnSurfaceB, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 1.000000e+00, float* %59, align 8
+ %60 = getelementptr inbounds %struct.btQuadWord* %normalOnSurfaceB, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btQuadWord* %normalOnSurfaceB, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %61, align 8
+ %62 = getelementptr inbounds %struct.btQuadWord* %normalOnSurfaceB, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %62, align 4
+ %63 = fcmp ogt float %28, 0x3E80000000000000 ; [#uses=1]
+ br i1 %63, label %bb3, label %bb4
+
+bb3: ; preds = %bb2
+ %64 = fdiv float 1.000000e+00, %28 ; [#uses=3]
+ %65 = fmul float %12, %64 ; [#uses=2]
+ %66 = fmul float %17, %64 ; [#uses=2]
+ %67 = fmul float %22, %64 ; [#uses=2]
+ store float %67, float* %59, align 8
+ store float %66, float* %60, align 4
+ store float %65, float* %61, align 8
+ store float 0.000000e+00, float* %62, align 4
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %68 = phi float [ %67, %bb3 ], [ 1.000000e+00, %bb2 ] ; [#uses=1]
+ %69 = phi float [ %66, %bb3 ], [ 0.000000e+00, %bb2 ] ; [#uses=1]
+ %70 = phi float [ %65, %bb3 ], [ 0.000000e+00, %bb2 ] ; [#uses=1]
+ %71 = fmul float %70, %42 ; [#uses=1]
+ %72 = fmul float %69, %42 ; [#uses=1]
+ %73 = fmul float %68, %42 ; [#uses=1]
+ %74 = fadd float %11, %71 ; [#uses=1]
+ %75 = fadd float %16, %72 ; [#uses=1]
+ %76 = fadd float %21, %73 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btQuadWord* %pos1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %76, float* %77, align 8
+ %78 = getelementptr inbounds %struct.btQuadWord* %pos1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %75, float* %78, align 4
+ %79 = getelementptr inbounds %struct.btQuadWord* %pos1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %74, float* %79, align 8
+ %80 = getelementptr inbounds %struct.btQuadWord* %pos1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %80, align 4
+ %81 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 0, i32 0 ; [#uses=1]
+ %82 = load i32 (...)*** %81, align 4 ; [#uses=1]
+ %83 = getelementptr inbounds i32 (...)** %82, i32 4 ; [#uses=1]
+ %84 = load i32 (...)** %83, align 4 ; [#uses=1]
+ %85 = bitcast i32 (...)* %84 to void (%struct.btManifoldResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %85(%struct.btManifoldResult* %resultOut, %struct.btQuadWord* %normalOnSurfaceB, %struct.btQuadWord* %pos1, float %58)
+ %86 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=4]
+ %87 = getelementptr inbounds %struct.btPersistentManifold* %86, i32 0, i32 4 ; [#uses=1]
+ %88 = load i32* %87, align 4 ; [#uses=1]
+ %89 = icmp eq i32 %88, 0 ; [#uses=1]
+ br i1 %89, label %_ZN16btManifoldResult20refreshContactPointsEv.exit10, label %bb.i
+
+bb.i: ; preds = %bb4
+ %90 = getelementptr inbounds %struct.btPersistentManifold* %86, i32 0, i32 2 ; [#uses=1]
+ %91 = load i8** %90, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 4 ; [#uses=1]
+ %93 = load %struct.btCollisionObject** %92, align 4 ; [#uses=1]
+ %94 = bitcast %struct.btCollisionObject* %93 to i8* ; [#uses=1]
+ %95 = icmp eq i8* %91, %94 ; [#uses=1]
+ br i1 %95, label %bb3.i, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %96 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %86, %struct.btTransform* %97, %struct.btTransform* %96)
+ ret void
+
+bb3.i: ; preds = %bb.i
+ %98 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %86, %struct.btTransform* %99, %struct.btTransform* %98)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN32btSphereSphereCollisionAlgorithmD0Ev(%struct.btBox2dBox2dCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV32btSphereSphereCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ %14 = bitcast %struct.btBox2dBox2dCollisionAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %14) nounwind
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %15 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %15)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN32btSphereSphereCollisionAlgorithmD1Ev(%struct.btBox2dBox2dCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV32btSphereSphereCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN32btSphereSphereCollisionAlgorithmD2Ev(%struct.btBox2dBox2dCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV32btSphereSphereCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN32btSphereSphereCollisionAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_(%struct.btBox2dBox2dCollisionAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1)
+ %1 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV32btSphereSphereCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=2]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %3, align 4
+ %4 = icmp eq %struct.btPersistentManifold* %mf, null ; [#uses=1]
+ br i1 %4, label %bb, label %return
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btBox2dBox2dCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load %struct.btActionInterface** %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btActionInterface* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 3 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = bitcast i32 (...)* %10 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %12 = bitcast %struct.btCollisionObject* %col0 to i8* ; [#uses=1]
+ %13 = bitcast %struct.btCollisionObject* %col1 to i8* ; [#uses=1]
+ %14 = invoke %struct.btPersistentManifold* %11(%struct.btActionInterface* %6, i8* %12, i8* %13)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb
+ store %struct.btPersistentManifold* %14, %struct.btPersistentManifold** %3, align 4
+ store i8 1, i8* %2, align 4
+ ret void
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %entry
+ ret void
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %0)
+ to label %invcont2 unwind label %lpad7
+
+lpad7: ; preds = %lpad
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN34btSphereTriangleCollisionAlgorithmC2EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_b(%struct.btSphereBoxCollisionAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1, i8 zeroext %swapped) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1)
+ %1 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV34btSphereTriangleCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=2]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %3, align 4
+ %4 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 %swapped, i8* %4, align 4
+ %5 = icmp eq %struct.btPersistentManifold* %mf, null ; [#uses=1]
+ br i1 %5, label %bb, label %return
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 3 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %13 = bitcast %struct.btCollisionObject* %col0 to i8* ; [#uses=1]
+ %14 = bitcast %struct.btCollisionObject* %col1 to i8* ; [#uses=1]
+ %15 = invoke %struct.btPersistentManifold* %12(%struct.btActionInterface* %7, i8* %13, i8* %14)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb
+ store %struct.btPersistentManifold* %15, %struct.btPersistentManifold** %3, align 4
+ store i8 1, i8* %2, align 4
+ ret void
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %entry
+ ret void
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %0)
+ to label %invcont2 unwind label %lpad7
+
+lpad7: ; preds = %lpad
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define float @_ZN34btSphereTriangleCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btSphereBoxCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %col0, %struct.btCollisionObject* nocapture %col1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* nocapture %resultOut) nounwind readnone align 2 {
+entry:
+ ret float 1.000000e+00
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN34btSphereTriangleCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(%struct.btSphereBoxCollisionAlgorithm* nocapture %this, %"struct.btAlignedObjectArray<btPersistentManifold*>"* nocapture %manifoldArray) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb1
+
+bb1: ; preds = %bb
+ tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, %struct.btPersistentManifold** %0) inlinehint
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN34btSphereTriangleCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btSphereBoxCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %col0, %struct.btCollisionObject* nocapture %col1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %detector = alloca %struct.SphereTriangleDetector, align 8 ; [#uses=2]
+ %input = alloca %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput", align 8 ; [#uses=35]
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=2]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %4, 0 ; [#uses=2]
+ %iftmp.185.0 = select i1 %toBool, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1 ; [#uses=17]
+ %iftmp.186.0 = select i1 %toBool, %struct.btCollisionObject* %col1, %struct.btCollisionObject* %col0 ; [#uses=17]
+ %5 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 9 ; [#uses=1]
+ %6 = load %struct.btCollisionShape** %5, align 4 ; [#uses=1]
+ %7 = bitcast %struct.btCollisionShape* %6 to %struct.btPolyhedralConvexShape* ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 9 ; [#uses=1]
+ %9 = load %struct.btCollisionShape** %8, align 4 ; [#uses=1]
+ %10 = bitcast %struct.btCollisionShape* %9 to %struct.btTriangleShape* ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 1 ; [#uses=2]
+ store %struct.btPersistentManifold* %1, %struct.btPersistentManifold** %11, align 4
+ %12 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %13 = call float @_ZNK20btPersistentManifold27getContactBreakingThresholdEv(%struct.btPersistentManifold* %12) ; [#uses=1]
+ call void @_ZN22SphereTriangleDetectorC1EP13btSphereShapeP15btTriangleShapef(%struct.SphereTriangleDetector* %detector, %struct.btPolyhedralConvexShape* %7, %struct.btTriangleShape* %10, float %13)
+ %14 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 2 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 3 ; [#uses=1]
+ store %struct.btStackAlloc* null, %struct.btStackAlloc** %15, align 4
+ store float 0x43ABC16D60000000, float* %14, align 8
+ %16 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 8
+ %19 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 8
+ %25 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 8
+ %31 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 8
+ %37 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 8
+ %43 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 8
+ %49 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 4
+ %52 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 8
+ %55 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ store float %57, float* %55, align 4
+ %58 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ store float %60, float* %58, align 8
+ %61 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btCollisionObject* %iftmp.185.0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ store float %63, float* %61, align 4
+ %64 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %64, align 8
+ %67 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ store float %69, float* %67, align 4
+ %70 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %70, align 8
+ %73 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ store float %75, float* %73, align 4
+ %76 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ store float %78, float* %76, align 8
+ %79 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ store float %81, float* %79, align 4
+ %82 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %82, align 8
+ %85 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ store float %87, float* %85, align 4
+ %88 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ store float %90, float* %88, align 8
+ %91 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ store float %93, float* %91, align 4
+ %94 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %94, align 8
+ %97 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ store float %99, float* %97, align 4
+ %100 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ store float %102, float* %100, align 8
+ %103 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ store float %105, float* %103, align 4
+ %106 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %108 = load float* %107, align 4 ; [#uses=1]
+ store float %108, float* %106, align 8
+ %109 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btCollisionObject* %iftmp.186.0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %111 = load float* %110, align 4 ; [#uses=1]
+ store float %111, float* %109, align 4
+ %112 = load i8* %3, align 4 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btDispatcherInfo* %dispatchInfo, i32 0, i32 5 ; [#uses=1]
+ %114 = load %struct.btActionInterface** %113, align 4 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN22SphereTriangleDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.SphereTriangleDetector* %detector, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, %struct.btActionInterface* %115, %struct.btActionInterface* %114, i8 zeroext %112)
+ %116 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %117 = load i8* %116, align 4 ; [#uses=1]
+ %toBool8 = icmp eq i8 %117, 0 ; [#uses=1]
+ br i1 %toBool8, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb9
+
+bb9: ; preds = %bb
+ %118 = load %struct.btPersistentManifold** %11, align 4 ; [#uses=4]
+ %119 = getelementptr inbounds %struct.btPersistentManifold* %118, i32 0, i32 4 ; [#uses=1]
+ %120 = load i32* %119, align 4 ; [#uses=1]
+ %121 = icmp eq i32 %120, 0 ; [#uses=1]
+ br i1 %121, label %_ZN16btManifoldResult20refreshContactPointsEv.exit, label %bb.i
+
+bb.i: ; preds = %bb9
+ %122 = getelementptr inbounds %struct.btPersistentManifold* %118, i32 0, i32 2 ; [#uses=1]
+ %123 = load i8** %122, align 4 ; [#uses=1]
+ %124 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 4 ; [#uses=1]
+ %125 = load %struct.btCollisionObject** %124, align 4 ; [#uses=1]
+ %126 = bitcast %struct.btCollisionObject* %125 to i8* ; [#uses=1]
+ %127 = icmp eq i8* %123, %126 ; [#uses=1]
+ br i1 %127, label %bb3.i, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %128 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %118, %struct.btTransform* %129, %struct.btTransform* %128)
+ ret void
+
+bb3.i: ; preds = %bb.i
+ %130 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 3 ; [#uses=1]
+ %131 = getelementptr inbounds %struct.btManifoldResult* %resultOut, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %118, %struct.btTransform* %131, %struct.btTransform* %130)
+ ret void
+
+_ZN16btManifoldResult20refreshContactPointsEv.exit: ; preds = %bb9, %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN34btSphereTriangleCollisionAlgorithmD0Ev(%struct.btSphereBoxCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV34btSphereTriangleCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ %14 = bitcast %struct.btSphereBoxCollisionAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %14) nounwind
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %15 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %15)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN34btSphereTriangleCollisionAlgorithmD1Ev(%struct.btSphereBoxCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV34btSphereTriangleCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN34btSphereTriangleCollisionAlgorithmD2Ev(%struct.btSphereBoxCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV34btSphereTriangleCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPersistentManifold** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btPersistentManifold* %4, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 4 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %12(%struct.btActionInterface* %7, %struct.btPersistentManifold* %4)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1, %bb, %entry
+ %13 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %13)
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %14 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %14)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN34btSphereTriangleCollisionAlgorithmC1EP20btPersistentManifoldRK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS6_b(%struct.btSphereBoxCollisionAlgorithm* %this, %struct.btPersistentManifold* %mf, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1, i8 zeroext %swapped) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %col0, %struct.btCollisionObject* %col1)
+ %1 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV34btSphereTriangleCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=2]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ store %struct.btPersistentManifold* %mf, %struct.btPersistentManifold** %3, align 4
+ %4 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 %swapped, i8* %4, align 4
+ %5 = icmp eq %struct.btPersistentManifold* %mf, null ; [#uses=1]
+ br i1 %5, label %bb, label %return
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btSphereBoxCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 3 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %13 = bitcast %struct.btCollisionObject* %col0 to i8* ; [#uses=1]
+ %14 = bitcast %struct.btCollisionObject* %col1 to i8* ; [#uses=1]
+ %15 = invoke %struct.btPersistentManifold* %12(%struct.btActionInterface* %7, i8* %13, i8* %14)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb
+ store %struct.btPersistentManifold* %15, %struct.btPersistentManifold** %3, align 4
+ store i8 1, i8* %2, align 4
+ ret void
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %entry
+ ret void
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %0)
+ to label %invcont2 unwind label %lpad7
+
+lpad7: ; preds = %lpad
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN11btUnionFindD2Ev(%struct.btPairSet* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 3 ; [#uses=6]
+ %1 = load %struct.CONTACT_KEY_TOKEN** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.CONTACT_KEY_TOKEN* %1, null ; [#uses=1]
+ br i1 %2, label %_ZN20btAlignedObjectArrayI9btElementED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 4 ; [#uses=3]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %5 = bitcast %struct.CONTACT_KEY_TOKEN* %1 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %0, align 4
+ br label %_ZN20btAlignedObjectArrayI9btElementED1Ev.exit
+
+invcont1: ; preds = %bb2.i.i.i20, %lpad
+ store i8 1, i8* %3, align 4
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %0, align 4
+ %6 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+_ZN20btAlignedObjectArrayI9btElementED1Ev.exit: ; preds = %bb2.i.i.i, %entry
+ %8 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i8 1, i8* %8, align 4
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %0, align 4
+ store i32 0, i32* %9, align 4
+ store i32 0, i32* %10, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %11 = load %struct.CONTACT_KEY_TOKEN** %0, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.CONTACT_KEY_TOKEN* %11, null ; [#uses=1]
+ br i1 %12, label %invcont1, label %bb.i.i.i18
+
+bb.i.i.i18: ; preds = %lpad
+ %13 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i.i.i17 = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i17, label %bb2.i.i.i20, label %bb1.i.i.i19
+
+bb1.i.i.i19: ; preds = %bb.i.i.i18
+ %14 = bitcast %struct.CONTACT_KEY_TOKEN* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %14)
+ to label %bb2.i.i.i20 unwind label %lpad7
+
+bb2.i.i.i20: ; preds = %bb1.i.i.i19, %bb.i.i.i18
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %0, align 4
+ br label %invcont1
+
+lpad7: ; preds = %bb1.i.i.i19
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=2]
+define void @_ZN11btUnionFindC1Ev(%struct.btPairSet* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %0, align 4
+ %1 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %1, align 4
+ %2 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN11btUnionFindC2Ev(%struct.btPairSet* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %0, align 4
+ %1 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %1, align 4
+ %2 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI9btElementE17quickSortInternalI31btUnionFindElementSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* nocapture byval align 4 %CompareFunc, i32 %lo, i32 %hi) nounwind align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %1 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 3 ; [#uses=3]
+ %3 = load %struct.CONTACT_KEY_TOKEN** %2, align 4 ; [#uses=1]
+ %4 = add nsw i32 %hi, %lo ; [#uses=1]
+ %5 = sdiv i32 %4, 2 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %3, i32 %5, i32 0 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=4]
+ br label %bb1.outer
+
+bb1.outer: ; preds = %bb7, %entry
+ %i.0.ph = phi i32 [ %lo, %entry ], [ %i.1, %bb7 ] ; [#uses=3]
+ %j.1.ph = phi i32 [ %hi, %entry ], [ %j.2, %bb7 ] ; [#uses=3]
+ %8 = load %struct.CONTACT_KEY_TOKEN** %2, align 4 ; [#uses=7]
+ %9 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %i.0.ph, i32 0 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=2]
+ %11 = icmp slt i32 %10, %7 ; [#uses=1]
+ br i1 %11, label %bb.nph16, label %bb3.preheader
+
+bb.nph16: ; preds = %bb1.outer
+ %tmp24 = add i32 %i.0.ph, 1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph16
+ %indvar22 = phi i32 [ 0, %bb.nph16 ], [ %indvar.next23, %bb ] ; [#uses=2]
+ %tmp25 = add i32 %tmp24, %indvar22 ; [#uses=2]
+ %scevgep2627 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %tmp25, i32 0 ; [#uses=1]
+ %12 = load i32* %scevgep2627, align 4 ; [#uses=2]
+ %13 = icmp slt i32 %12, %7 ; [#uses=1]
+ %indvar.next23 = add i32 %indvar22, 1 ; [#uses=1]
+ br i1 %13, label %bb, label %bb3.preheader
+
+bb3.preheader: ; preds = %bb, %bb1.outer
+ %14 = phi i32 [ %10, %bb1.outer ], [ %12, %bb ] ; [#uses=1]
+ %i.0.lcssa = phi i32 [ %i.0.ph, %bb1.outer ], [ %tmp25, %bb ] ; [#uses=5]
+ %15 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %j.1.ph, i32 0 ; [#uses=1]
+ %16 = load i32* %15, align 4 ; [#uses=2]
+ %17 = icmp slt i32 %7, %16 ; [#uses=1]
+ br i1 %17, label %bb.nph, label %bb5
+
+bb.nph: ; preds = %bb3.preheader
+ %tmp18 = add i32 %j.1.ph, -1 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb2 ] ; [#uses=2]
+ %tmp19 = sub i32 %tmp18, %indvar ; [#uses=2]
+ %scevgep20 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %tmp19, i32 0 ; [#uses=1]
+ %18 = load i32* %scevgep20, align 4 ; [#uses=2]
+ %19 = icmp slt i32 %7, %18 ; [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br i1 %19, label %bb2, label %bb5
+
+bb5: ; preds = %bb2, %bb3.preheader
+ %20 = phi i32 [ %16, %bb3.preheader ], [ %18, %bb2 ] ; [#uses=1]
+ %j.0.lcssa = phi i32 [ %j.1.ph, %bb3.preheader ], [ %tmp19, %bb2 ] ; [#uses=6]
+ %21 = icmp sgt i32 %i.0.lcssa, %j.0.lcssa ; [#uses=1]
+ br i1 %21, label %bb7, label %bb6
+
+bb6: ; preds = %bb5
+ %22 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %i.0.lcssa, i32 0 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %i.0.lcssa, i32 1 ; [#uses=2]
+ %24 = load i32* %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %j.0.lcssa, i32 1 ; [#uses=1]
+ %26 = load i32* %25, align 4 ; [#uses=1]
+ store i32 %20, i32* %22, align 4
+ store i32 %26, i32* %23, align 4
+ %27 = load %struct.CONTACT_KEY_TOKEN** %2, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %27, i32 %j.0.lcssa, i32 0 ; [#uses=1]
+ store i32 %14, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %27, i32 %j.0.lcssa, i32 1 ; [#uses=1]
+ store i32 %24, i32* %29, align 4
+ %30 = add nsw i32 %i.0.lcssa, 1 ; [#uses=1]
+ %31 = add nsw i32 %j.0.lcssa, -1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5
+ %i.1 = phi i32 [ %30, %bb6 ], [ %i.0.lcssa, %bb5 ] ; [#uses=4]
+ %j.2 = phi i32 [ %31, %bb6 ], [ %j.0.lcssa, %bb5 ] ; [#uses=4]
+ %32 = icmp sgt i32 %i.1, %j.2 ; [#uses=1]
+ br i1 %32, label %bb8, label %bb1.outer
+
+bb8: ; preds = %bb7
+ %33 = icmp sgt i32 %j.2, %lo ; [#uses=1]
+ br i1 %33, label %bb9, label %bb10
+
+bb9: ; preds = %bb8
+ call void @_ZN20btAlignedObjectArrayI9btElementE17quickSortInternalI31btUnionFindElementSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %1, i32 %lo, i32 %j.2)
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb8
+ %34 = icmp slt i32 %i.1, %hi ; [#uses=1]
+ br i1 %34, label %bb11, label %return
+
+bb11: ; preds = %bb10
+ call void @_ZN20btAlignedObjectArrayI9btElementE17quickSortInternalI31btUnionFindElementSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 %i.1, i32 %hi)
+ ret void
+
+return: ; preds = %bb10
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN11btUnionFind11sortIslandsEv(%struct.btPairSet* %this) nounwind align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ %2 = load i32* %1, align 4 ; [#uses=2]
+ %3 = icmp sgt i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb.nph, label %_ZN20btAlignedObjectArrayI9btElementE9quickSortI31btUnionFindElementSortPredicateEEvT_.exit
+
+bb.nph: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 3 ; [#uses=2]
+ br label %bb
+
+bb: ; preds = %_ZN11btUnionFind4findEi.exit, %bb.nph
+ %5 = phi i32 [ 0, %bb.nph ], [ %19, %_ZN11btUnionFind4findEi.exit ] ; [#uses=5]
+ %6 = load %struct.CONTACT_KEY_TOKEN** %4, align 4 ; [#uses=2]
+ %scevgep9 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %6, i32 %5, i32 0 ; [#uses=2]
+ %7 = load i32* %scevgep9, align 4 ; [#uses=2]
+ %8 = icmp eq i32 %7, %5 ; [#uses=1]
+ br i1 %8, label %_ZN11btUnionFind4findEi.exit, label %bb.i4
+
+bb.i4: ; preds = %bb.i4, %bb
+ %9 = phi i32 [ %17, %bb.i4 ], [ %7, %bb ] ; [#uses=1]
+ %10 = phi %struct.CONTACT_KEY_TOKEN* [ %15, %bb.i4 ], [ %6, %bb ] ; [#uses=2]
+ %x_addr.04.i = phi i32 [ %14, %bb.i4 ], [ %5, %bb ] ; [#uses=1]
+ %11 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %10, i32 %x_addr.04.i, i32 0 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %10, i32 %9, i32 0 ; [#uses=2]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ store i32 %13, i32* %11, align 4
+ %14 = load i32* %12, align 4 ; [#uses=4]
+ %15 = load %struct.CONTACT_KEY_TOKEN** %4, align 4 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %15, i32 %14, i32 0 ; [#uses=1]
+ %17 = load i32* %16, align 4 ; [#uses=2]
+ %18 = icmp eq i32 %17, %14 ; [#uses=1]
+ br i1 %18, label %_ZN11btUnionFind4findEi.exit, label %bb.i4
+
+_ZN11btUnionFind4findEi.exit: ; preds = %bb.i4, %bb
+ %x_addr.0.lcssa.i = phi i32 [ %5, %bb ], [ %14, %bb.i4 ] ; [#uses=1]
+ store i32 %x_addr.0.lcssa.i, i32* %scevgep9, align 4
+ %19 = add nsw i32 %5, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %19, %2 ; [#uses=1]
+ br i1 %exitcond, label %bb2, label %bb
+
+bb2: ; preds = %_ZN11btUnionFind4findEi.exit
+ %.pre = load i32* %1, align 4 ; [#uses=2]
+ %20 = icmp sgt i32 %.pre, 1 ; [#uses=1]
+ br i1 %20, label %bb.i, label %_ZN20btAlignedObjectArrayI9btElementE9quickSortI31btUnionFindElementSortPredicateEEvT_.exit
+
+bb.i: ; preds = %bb2
+ %.lcssa7 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0 ; [#uses=1]
+ %21 = add nsw i32 %.pre, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI9btElementE17quickSortInternalI31btUnionFindElementSortPredicateEEvT_ii(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %.lcssa7, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 0, i32 %21) nounwind
+ ret void
+
+_ZN20btAlignedObjectArrayI9btElementE9quickSortI31btUnionFindElementSortPredicateEEvT_.exit: ; preds = %bb2, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN11btUnionFind4FreeEv(%struct.btPairSet* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 3 ; [#uses=3]
+ %1 = load %struct.CONTACT_KEY_TOKEN** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.CONTACT_KEY_TOKEN* %1, null ; [#uses=1]
+ br i1 %2, label %_ZN20btAlignedObjectArrayI9btElementE5clearEv.exit, label %bb.i.i
+
+bb.i.i: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %5 = bitcast %struct.CONTACT_KEY_TOKEN* %1 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %5)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %0, align 4
+ br label %_ZN20btAlignedObjectArrayI9btElementE5clearEv.exit
+
+_ZN20btAlignedObjectArrayI9btElementE5clearEv.exit: ; preds = %bb2.i.i, %entry
+ %6 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %6, align 4
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %0, align 4
+ %7 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI9btElementE6resizeEiRKS0_(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* nocapture %this, i32 %newsize, %struct.CONTACT_KEY_TOKEN* nocapture %fillData) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = icmp sgt i32 %1, %newsize ; [#uses=1]
+ br i1 %2, label %bb12, label %bb3
+
+bb3: ; preds = %entry
+ %3 = icmp slt i32 %1, %newsize ; [#uses=2]
+ br i1 %3, label %bb4, label %bb12
+
+bb4: ; preds = %bb3
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 2 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp slt i32 %5, %newsize ; [#uses=1]
+ br i1 %6, label %bb.i, label %bb.nph
+
+bb.i: ; preds = %bb4
+ %7 = icmp eq i32 %newsize, 0 ; [#uses=1]
+ br i1 %7, label %_ZN20btAlignedObjectArrayI9btElementE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %8 = shl i32 %newsize, 3 ; [#uses=1]
+ %9 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %8, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %9 to %struct.CONTACT_KEY_TOKEN* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI9btElementE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayI9btElementE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %10 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %11 = phi %struct.CONTACT_KEY_TOKEN* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=4]
+ %12 = icmp sgt i32 %10, 0 ; [#uses=1]
+ br i1 %12, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayI9btElementE4copyEiiPS0_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayI9btElementE8allocateEi.exit.i
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=6]
+ %scevgep.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %11, i32 %indvar.i.i ; [#uses=1]
+ %14 = icmp eq %struct.CONTACT_KEY_TOKEN* %scevgep.i.i, null ; [#uses=1]
+ br i1 %14, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %scevgep12.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %11, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %scevgep11.i.i = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %11, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %15 = load %struct.CONTACT_KEY_TOKEN** %13, align 4 ; [#uses=2]
+ %scevgep89.i.i = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %15, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %16 = load i32* %scevgep89.i.i, align 4 ; [#uses=1]
+ %scevgep10.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %15, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %17 = load i32* %scevgep10.i.i, align 4 ; [#uses=1]
+ store i32 %16, i32* %scevgep11.i.i, align 4
+ store i32 %17, i32* %scevgep12.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond21 = icmp eq i32 %indvar.next.i.i, %10 ; [#uses=1]
+ br i1 %exitcond21, label %_ZNK20btAlignedObjectArrayI9btElementE4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI9btElementE4copyEiiPS0_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayI9btElementE8allocateEi.exit.i
+ %18 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 3 ; [#uses=3]
+ %19 = load %struct.CONTACT_KEY_TOKEN** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.CONTACT_KEY_TOKEN* %19, null ; [#uses=1]
+ br i1 %20, label %bb11.preheader, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI9btElementE4copyEiiPS0_.exit.i
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %23 = bitcast %struct.CONTACT_KEY_TOKEN* %19 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %18, align 4
+ br label %bb11.preheader
+
+bb11.preheader: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI9btElementE4copyEiiPS0_.exit.i
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store %struct.CONTACT_KEY_TOKEN* %11, %struct.CONTACT_KEY_TOKEN** %18, align 4
+ store i32 %newsize, i32* %4, align 4
+ br i1 %3, label %bb.nph, label %bb12
+
+bb.nph: ; preds = %bb11.preheader, %bb4
+ %25 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 3 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %fillData, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %fillData, i32 0, i32 1 ; [#uses=1]
+ %tmp = sub i32 %newsize, %1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb10, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb10 ] ; [#uses=2]
+ %tmp17 = add i32 %1, %indvar ; [#uses=3]
+ %28 = load %struct.CONTACT_KEY_TOKEN** %25, align 4 ; [#uses=3]
+ %scevgep = getelementptr %struct.CONTACT_KEY_TOKEN* %28, i32 %tmp17 ; [#uses=1]
+ %29 = icmp eq %struct.CONTACT_KEY_TOKEN* %scevgep, null ; [#uses=1]
+ br i1 %29, label %bb10, label %bb8
+
+bb8: ; preds = %bb7
+ %30 = load i32* %26, align 4 ; [#uses=1]
+ %31 = load i32* %27, align 4 ; [#uses=1]
+ %scevgep1819 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %28, i32 %tmp17, i32 0 ; [#uses=1]
+ store i32 %30, i32* %scevgep1819, align 4
+ %scevgep20 = getelementptr %struct.CONTACT_KEY_TOKEN* %28, i32 %tmp17, i32 1 ; [#uses=1]
+ store i32 %31, i32* %scevgep20, align 4
+ br label %bb10
+
+bb10: ; preds = %bb8, %bb7
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; [#uses=1]
+ br i1 %exitcond, label %bb12, label %bb7
+
+bb12: ; preds = %bb10, %bb11.preheader, %bb3, %entry
+ store i32 %newsize, i32* %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN11btUnionFind8allocateEi(%struct.btPairSet* nocapture %this, i32 %N) align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %1 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %0, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %1, align 8
+ %2 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI9btElementE6resizeEiRKS0_(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %3, i32 %N, %struct.CONTACT_KEY_TOKEN* %0) inlinehint
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN11btUnionFind5resetEi(%struct.btPairSet* nocapture %this, i32 %N) align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %1 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %0, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %1, align 8
+ %2 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI9btElementE6resizeEiRKS0_(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %3, i32 %N, %struct.CONTACT_KEY_TOKEN* %0) inlinehint
+ %4 = icmp sgt i32 %N, 0 ; [#uses=1]
+ br i1 %4, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 3 ; [#uses=2]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %6 = phi i32 [ 0, %bb.nph ], [ %9, %bb ] ; [#uses=4]
+ %7 = load %struct.CONTACT_KEY_TOKEN** %5, align 4 ; [#uses=1]
+ %scevgep4 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %7, i32 %6, i32 0 ; [#uses=1]
+ store i32 %6, i32* %scevgep4, align 4
+ %8 = load %struct.CONTACT_KEY_TOKEN** %5, align 4 ; [#uses=1]
+ %scevgep5 = getelementptr %struct.CONTACT_KEY_TOKEN* %8, i32 %6, i32 1 ; [#uses=1]
+ store i32 1, i32* %scevgep5, align 4
+ %9 = add nsw i32 %6, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %9, %N ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=6]
+define void @_ZN11btUnionFindD1Ev(%struct.btPairSet* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 3 ; [#uses=6]
+ %1 = load %struct.CONTACT_KEY_TOKEN** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.CONTACT_KEY_TOKEN* %1, null ; [#uses=1]
+ br i1 %2, label %_ZN20btAlignedObjectArrayI9btElementED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 4 ; [#uses=3]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %5 = bitcast %struct.CONTACT_KEY_TOKEN* %1 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %0, align 4
+ br label %_ZN20btAlignedObjectArrayI9btElementED1Ev.exit
+
+invcont1: ; preds = %bb2.i.i.i20, %lpad
+ store i8 1, i8* %3, align 4
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %0, align 4
+ %6 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+_ZN20btAlignedObjectArrayI9btElementED1Ev.exit: ; preds = %bb2.i.i.i, %entry
+ %8 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i8 1, i8* %8, align 4
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %0, align 4
+ store i32 0, i32* %9, align 4
+ store i32 0, i32* %10, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %11 = load %struct.CONTACT_KEY_TOKEN** %0, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.CONTACT_KEY_TOKEN* %11, null ; [#uses=1]
+ br i1 %12, label %invcont1, label %bb.i.i.i18
+
+bb.i.i.i18: ; preds = %lpad
+ %13 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i.i.i17 = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i17, label %bb2.i.i.i20, label %bb1.i.i.i19
+
+bb1.i.i.i19: ; preds = %bb.i.i.i18
+ %14 = bitcast %struct.CONTACT_KEY_TOKEN* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %14)
+ to label %bb2.i.i.i20 unwind label %lpad7
+
+bb2.i.i.i20: ; preds = %bb1.i.i.i19, %bb.i.i.i18
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %0, align 4
+ br label %invcont1
+
+lpad7: ; preds = %bb1.i.i.i19
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN22SphereTriangleDetectorC2EP13btSphereShapeP15btTriangleShapef(%struct.SphereTriangleDetector* nocapture %this, %struct.btPolyhedralConvexShape* %sphere, %struct.btTriangleShape* %triangle, float %contactBreakingThreshold) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.SphereTriangleDetector* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV22SphereTriangleDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.SphereTriangleDetector* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btPolyhedralConvexShape* %sphere, %struct.btPolyhedralConvexShape** %1, align 4
+ %2 = getelementptr inbounds %struct.SphereTriangleDetector* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btTriangleShape* %triangle, %struct.btTriangleShape** %2, align 4
+ %3 = getelementptr inbounds %struct.SphereTriangleDetector* %this, i32 0, i32 3 ; [#uses=1]
+ store float %contactBreakingThreshold, float* %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22SphereTriangleDetectorD1Ev(%struct.SphereTriangleDetector* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.SphereTriangleDetector* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV22SphereTriangleDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22SphereTriangleDetectorD0Ev(%struct.SphereTriangleDetector* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.SphereTriangleDetector* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV22SphereTriangleDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.SphereTriangleDetector* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN22SphereTriangleDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.SphereTriangleDetector* nocapture %this, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* nocapture %input, %struct.btActionInterface* %output, %struct.btActionInterface* nocapture %debugDraw, i8 zeroext %swapResults) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %point = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %normal = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %timeOfImpact = alloca float, align 4 ; [#uses=2]
+ %depth = alloca float, align 4 ; [#uses=4]
+ %sphereInTr = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %normalOnA = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %pointOnA = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ store float 1.000000e+00, float* %timeOfImpact, align 4
+ store float 0.000000e+00, float* %depth, align 4
+ %2 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=3]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fsub float %3, %5 ; [#uses=3]
+ %7 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=3]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fsub float %8, %10 ; [#uses=3]
+ %12 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=3]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fsub float %13, %15 ; [#uses=3]
+ %17 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %18 = load float* %17, align 4 ; [#uses=4]
+ %19 = fmul float %18, %16 ; [#uses=1]
+ %20 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %21 = load float* %20, align 4 ; [#uses=4]
+ %22 = fmul float %21, %11 ; [#uses=1]
+ %23 = fadd float %19, %22 ; [#uses=1]
+ %24 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %25 = load float* %24, align 4 ; [#uses=4]
+ %26 = fmul float %25, %6 ; [#uses=1]
+ %27 = fadd float %23, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %29 = load float* %28, align 4 ; [#uses=4]
+ %30 = fmul float %29, %16 ; [#uses=1]
+ %31 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %32 = load float* %31, align 4 ; [#uses=4]
+ %33 = fmul float %32, %11 ; [#uses=1]
+ %34 = fadd float %30, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %36 = load float* %35, align 4 ; [#uses=4]
+ %37 = fmul float %36, %6 ; [#uses=1]
+ %38 = fadd float %34, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %40 = load float* %39, align 4 ; [#uses=4]
+ %41 = fmul float %40, %16 ; [#uses=1]
+ %42 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %43 = load float* %42, align 4 ; [#uses=4]
+ %44 = fmul float %43, %11 ; [#uses=1]
+ %45 = fadd float %41, %44 ; [#uses=1]
+ %46 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %47 = load float* %46, align 4 ; [#uses=4]
+ %48 = fmul float %47, %6 ; [#uses=1]
+ %49 = fadd float %45, %48 ; [#uses=1]
+ %50 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=3]
+ %52 = fmul float %18, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=3]
+ %55 = fmul float %21, %54 ; [#uses=1]
+ %56 = fadd float %52, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=3]
+ %59 = fmul float %25, %58 ; [#uses=1]
+ %60 = fadd float %56, %59 ; [#uses=1]
+ %61 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=3]
+ %63 = fmul float %18, %62 ; [#uses=1]
+ %64 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=3]
+ %66 = fmul float %21, %65 ; [#uses=1]
+ %67 = fadd float %63, %66 ; [#uses=1]
+ %68 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=3]
+ %70 = fmul float %25, %69 ; [#uses=1]
+ %71 = fadd float %67, %70 ; [#uses=1]
+ %72 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=3]
+ %74 = fmul float %18, %73 ; [#uses=1]
+ %75 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=3]
+ %77 = fmul float %21, %76 ; [#uses=1]
+ %78 = fadd float %74, %77 ; [#uses=1]
+ %79 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=3]
+ %81 = fmul float %25, %80 ; [#uses=1]
+ %82 = fadd float %78, %81 ; [#uses=1]
+ %83 = fmul float %29, %51 ; [#uses=1]
+ %84 = fmul float %32, %54 ; [#uses=1]
+ %85 = fadd float %83, %84 ; [#uses=1]
+ %86 = fmul float %36, %58 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=1]
+ %88 = fmul float %29, %62 ; [#uses=1]
+ %89 = fmul float %32, %65 ; [#uses=1]
+ %90 = fadd float %88, %89 ; [#uses=1]
+ %91 = fmul float %36, %69 ; [#uses=1]
+ %92 = fadd float %90, %91 ; [#uses=1]
+ %93 = fmul float %29, %73 ; [#uses=1]
+ %94 = fmul float %32, %76 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %36, %80 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %40, %51 ; [#uses=1]
+ %99 = fmul float %43, %54 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %47, %58 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fmul float %40, %62 ; [#uses=1]
+ %104 = fmul float %43, %65 ; [#uses=1]
+ %105 = fadd float %103, %104 ; [#uses=1]
+ %106 = fmul float %47, %69 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = fmul float %40, %73 ; [#uses=1]
+ %109 = fmul float %43, %76 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = fmul float %47, %80 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %112, float* %113, align 8
+ %114 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %107, float* %114, align 4
+ %115 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %102, float* %115, align 8
+ %116 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %116, align 4
+ %117 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %97, float* %117, align 8
+ %118 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %92, float* %118, align 4
+ %119 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %87, float* %119, align 8
+ %120 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %120, align 4
+ %121 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %82, float* %121, align 8
+ %122 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %71, float* %122, align 4
+ %123 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %60, float* %123, align 8
+ %124 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %124, align 4
+ %125 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %49, float* %125, align 8
+ %126 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %38, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %27, float* %127, align 8
+ %128 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %128, align 4
+ %129 = getelementptr inbounds %struct.SphereTriangleDetector* %this, i32 0, i32 3 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=1]
+ %131 = getelementptr inbounds %struct.btTransform* %sphereInTr, i32 0, i32 1 ; [#uses=1]
+ %132 = call zeroext i8 @_ZN22SphereTriangleDetector7collideERK9btVector3RS0_S3_RfS4_f(%struct.SphereTriangleDetector* %this, %struct.btQuadWord* %131, %struct.btQuadWord* %point, %struct.btQuadWord* %normal, float* %depth, float* %timeOfImpact, float %130) ; [#uses=1]
+ %toBool = icmp eq i8 %132, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %toBool1 = icmp eq i8 %swapResults, 0 ; [#uses=1]
+ br i1 %toBool1, label %bb3, label %bb2
+
+bb2: ; preds = %bb
+ %133 = load float* %46, align 4 ; [#uses=2]
+ %134 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %135 = load float* %134, align 8 ; [#uses=3]
+ %136 = fmul float %133, %135 ; [#uses=1]
+ %137 = load float* %35, align 4 ; [#uses=2]
+ %138 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %139 = load float* %138, align 4 ; [#uses=3]
+ %140 = fmul float %137, %139 ; [#uses=1]
+ %141 = fadd float %136, %140 ; [#uses=1]
+ %142 = load float* %24, align 4 ; [#uses=2]
+ %143 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %144 = load float* %143, align 8 ; [#uses=3]
+ %145 = fmul float %142, %144 ; [#uses=1]
+ %146 = fadd float %141, %145 ; [#uses=2]
+ %147 = load float* %42, align 4 ; [#uses=2]
+ %148 = fmul float %147, %135 ; [#uses=1]
+ %149 = load float* %31, align 4 ; [#uses=2]
+ %150 = fmul float %149, %139 ; [#uses=1]
+ %151 = fadd float %148, %150 ; [#uses=1]
+ %152 = load float* %20, align 4 ; [#uses=2]
+ %153 = fmul float %152, %144 ; [#uses=1]
+ %154 = fadd float %151, %153 ; [#uses=2]
+ %155 = load float* %39, align 4 ; [#uses=2]
+ %156 = fmul float %155, %135 ; [#uses=1]
+ %157 = load float* %28, align 4 ; [#uses=2]
+ %158 = fmul float %157, %139 ; [#uses=1]
+ %159 = fadd float %156, %158 ; [#uses=1]
+ %160 = load float* %17, align 4 ; [#uses=2]
+ %161 = fmul float %160, %144 ; [#uses=1]
+ %162 = fadd float %159, %161 ; [#uses=2]
+ %163 = fsub float -0.000000e+00, %146 ; [#uses=1]
+ %164 = fsub float -0.000000e+00, %154 ; [#uses=1]
+ %165 = fsub float -0.000000e+00, %162 ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btQuadWord* %normalOnA, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %165, float* %166, align 8
+ %167 = getelementptr inbounds %struct.btQuadWord* %normalOnA, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %164, float* %167, align 4
+ %168 = getelementptr inbounds %struct.btQuadWord* %normalOnA, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %163, float* %168, align 8
+ %169 = getelementptr inbounds %struct.btQuadWord* %normalOnA, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %169, align 4
+ %170 = load float* %depth, align 4 ; [#uses=4]
+ %171 = fmul float %146, %170 ; [#uses=1]
+ %172 = fmul float %154, %170 ; [#uses=1]
+ %173 = fmul float %162, %170 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 0 ; [#uses=1]
+ %175 = load float* %174, align 8 ; [#uses=3]
+ %176 = fmul float %133, %175 ; [#uses=1]
+ %177 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 1 ; [#uses=1]
+ %178 = load float* %177, align 4 ; [#uses=3]
+ %179 = fmul float %137, %178 ; [#uses=1]
+ %180 = fadd float %176, %179 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 2 ; [#uses=1]
+ %182 = load float* %181, align 8 ; [#uses=3]
+ %183 = fmul float %142, %182 ; [#uses=1]
+ %184 = fadd float %180, %183 ; [#uses=1]
+ %185 = load float* %4, align 4 ; [#uses=1]
+ %186 = fadd float %184, %185 ; [#uses=1]
+ %187 = fmul float %147, %175 ; [#uses=1]
+ %188 = fmul float %149, %178 ; [#uses=1]
+ %189 = fadd float %187, %188 ; [#uses=1]
+ %190 = fmul float %152, %182 ; [#uses=1]
+ %191 = fadd float %189, %190 ; [#uses=1]
+ %192 = load float* %9, align 4 ; [#uses=1]
+ %193 = fadd float %191, %192 ; [#uses=1]
+ %194 = fmul float %155, %175 ; [#uses=1]
+ %195 = fmul float %157, %178 ; [#uses=1]
+ %196 = fadd float %194, %195 ; [#uses=1]
+ %197 = fmul float %160, %182 ; [#uses=1]
+ %198 = fadd float %196, %197 ; [#uses=1]
+ %199 = load float* %14, align 4 ; [#uses=1]
+ %200 = fadd float %198, %199 ; [#uses=1]
+ %201 = fadd float %186, %171 ; [#uses=1]
+ %202 = fadd float %193, %172 ; [#uses=1]
+ %203 = fadd float %200, %173 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %203, float* %204, align 8
+ %205 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %202, float* %205, align 4
+ %206 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %201, float* %206, align 8
+ %207 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %207, align 4
+ %208 = getelementptr inbounds %struct.btActionInterface* %output, i32 0, i32 0 ; [#uses=1]
+ %209 = load i32 (...)*** %208, align 4 ; [#uses=1]
+ %210 = getelementptr inbounds i32 (...)** %209, i32 4 ; [#uses=1]
+ %211 = load i32 (...)** %210, align 4 ; [#uses=1]
+ %212 = bitcast i32 (...)* %211 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %212(%struct.btActionInterface* %output, %struct.btQuadWord* %normalOnA, %struct.btQuadWord* %pointOnA, float %170)
+ ret void
+
+bb3: ; preds = %bb
+ %213 = getelementptr inbounds %struct.btActionInterface* %output, i32 0, i32 0 ; [#uses=1]
+ %214 = load i32 (...)*** %213, align 4 ; [#uses=1]
+ %215 = getelementptr inbounds i32 (...)** %214, i32 4 ; [#uses=1]
+ %216 = load i32 (...)** %215, align 4 ; [#uses=1]
+ %217 = load float* %depth, align 4 ; [#uses=1]
+ %218 = load float* %46, align 4 ; [#uses=2]
+ %219 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 0 ; [#uses=1]
+ %220 = load float* %219, align 8 ; [#uses=3]
+ %221 = fmul float %218, %220 ; [#uses=1]
+ %222 = load float* %35, align 4 ; [#uses=2]
+ %223 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 1 ; [#uses=1]
+ %224 = load float* %223, align 4 ; [#uses=3]
+ %225 = fmul float %222, %224 ; [#uses=1]
+ %226 = fadd float %221, %225 ; [#uses=1]
+ %227 = load float* %24, align 4 ; [#uses=2]
+ %228 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 2 ; [#uses=1]
+ %229 = load float* %228, align 8 ; [#uses=3]
+ %230 = fmul float %227, %229 ; [#uses=1]
+ %231 = fadd float %226, %230 ; [#uses=1]
+ %232 = load float* %4, align 4 ; [#uses=1]
+ %233 = fadd float %231, %232 ; [#uses=1]
+ %234 = load float* %42, align 4 ; [#uses=2]
+ %235 = fmul float %234, %220 ; [#uses=1]
+ %236 = load float* %31, align 4 ; [#uses=2]
+ %237 = fmul float %236, %224 ; [#uses=1]
+ %238 = fadd float %235, %237 ; [#uses=1]
+ %239 = load float* %20, align 4 ; [#uses=2]
+ %240 = fmul float %239, %229 ; [#uses=1]
+ %241 = fadd float %238, %240 ; [#uses=1]
+ %242 = load float* %9, align 4 ; [#uses=1]
+ %243 = fadd float %241, %242 ; [#uses=1]
+ %244 = load float* %39, align 4 ; [#uses=2]
+ %245 = fmul float %244, %220 ; [#uses=1]
+ %246 = load float* %28, align 4 ; [#uses=2]
+ %247 = fmul float %246, %224 ; [#uses=1]
+ %248 = fadd float %245, %247 ; [#uses=1]
+ %249 = load float* %17, align 4 ; [#uses=2]
+ %250 = fmul float %249, %229 ; [#uses=1]
+ %251 = fadd float %248, %250 ; [#uses=1]
+ %252 = load float* %14, align 4 ; [#uses=1]
+ %253 = fadd float %251, %252 ; [#uses=1]
+ %254 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %253, float* %254, align 8
+ %255 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %243, float* %255, align 4
+ %256 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %233, float* %256, align 8
+ %257 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %257, align 4
+ %258 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %259 = load float* %258, align 8 ; [#uses=3]
+ %260 = fmul float %218, %259 ; [#uses=1]
+ %261 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %262 = load float* %261, align 4 ; [#uses=3]
+ %263 = fmul float %222, %262 ; [#uses=1]
+ %264 = fadd float %260, %263 ; [#uses=1]
+ %265 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %266 = load float* %265, align 8 ; [#uses=3]
+ %267 = fmul float %227, %266 ; [#uses=1]
+ %268 = fadd float %264, %267 ; [#uses=1]
+ %269 = fmul float %234, %259 ; [#uses=1]
+ %270 = fmul float %236, %262 ; [#uses=1]
+ %271 = fadd float %269, %270 ; [#uses=1]
+ %272 = fmul float %239, %266 ; [#uses=1]
+ %273 = fadd float %271, %272 ; [#uses=1]
+ %274 = fmul float %244, %259 ; [#uses=1]
+ %275 = fmul float %246, %262 ; [#uses=1]
+ %276 = fadd float %274, %275 ; [#uses=1]
+ %277 = fmul float %249, %266 ; [#uses=1]
+ %278 = fadd float %276, %277 ; [#uses=1]
+ %279 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %278, float* %279, align 8
+ %280 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %273, float* %280, align 4
+ %281 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %268, float* %281, align 8
+ %282 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %282, align 4
+ %283 = bitcast i32 (...)* %216 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %283(%struct.btActionInterface* %output, %struct.btQuadWord* %0, %struct.btQuadWord* %1, float %217)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN22SphereTriangleDetectorC1EP13btSphereShapeP15btTriangleShapef(%struct.SphereTriangleDetector* nocapture %this, %struct.btPolyhedralConvexShape* %sphere, %struct.btTriangleShape* %triangle, float %contactBreakingThreshold) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.SphereTriangleDetector* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV22SphereTriangleDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.SphereTriangleDetector* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btPolyhedralConvexShape* %sphere, %struct.btPolyhedralConvexShape** %1, align 4
+ %2 = getelementptr inbounds %struct.SphereTriangleDetector* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btTriangleShape* %triangle, %struct.btTriangleShape** %2, align 4
+ %3 = getelementptr inbounds %struct.SphereTriangleDetector* %this, i32 0, i32 3 ; [#uses=1]
+ store float %contactBreakingThreshold, float* %3, align 4
+ ret void
+}
+
+; [#uses=0]
+define float @_Z18SegmentSqrDistanceRK9btVector3S1_S1_RS_(%struct.btQuadWord* nocapture %from, %struct.btQuadWord* nocapture %to, %struct.btQuadWord* nocapture %p, %struct.btQuadWord* nocapture %nearest) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fsub float %1, %3 ; [#uses=4]
+ %5 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fsub float %6, %8 ; [#uses=4]
+ %10 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = fsub float %11, %13 ; [#uses=4]
+ %15 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fsub float %16, %3 ; [#uses=6]
+ %18 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fsub float %19, %8 ; [#uses=6]
+ %21 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fsub float %22, %13 ; [#uses=6]
+ %24 = fmul float %23, %14 ; [#uses=1]
+ %25 = fmul float %20, %9 ; [#uses=1]
+ %26 = fadd float %24, %25 ; [#uses=1]
+ %27 = fmul float %17, %4 ; [#uses=1]
+ %28 = fadd float %26, %27 ; [#uses=3]
+ %29 = fcmp ogt float %28, 0.000000e+00 ; [#uses=1]
+ br i1 %29, label %bb, label %bb4
+
+bb: ; preds = %entry
+ %30 = fmul float %23, %23 ; [#uses=1]
+ %31 = fmul float %20, %20 ; [#uses=1]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = fmul float %17, %17 ; [#uses=1]
+ %34 = fadd float %32, %33 ; [#uses=2]
+ %35 = fcmp olt float %28, %34 ; [#uses=1]
+ br i1 %35, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %36 = fdiv float %28, %34 ; [#uses=4]
+ %37 = fmul float %17, %36 ; [#uses=1]
+ %38 = fmul float %20, %36 ; [#uses=1]
+ %39 = fmul float %23, %36 ; [#uses=1]
+ %40 = fsub float %14, %39 ; [#uses=1]
+ %41 = fsub float %9, %38 ; [#uses=1]
+ %42 = fsub float %4, %37 ; [#uses=1]
+ br label %bb4
+
+bb2: ; preds = %bb
+ %43 = fsub float %14, %23 ; [#uses=1]
+ %44 = fsub float %9, %20 ; [#uses=1]
+ %45 = fsub float %4, %17 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb2, %bb1, %entry
+ %diff.0.0.0 = phi float [ %40, %bb1 ], [ %43, %bb2 ], [ %14, %entry ] ; [#uses=2]
+ %diff.0.1.0 = phi float [ %41, %bb1 ], [ %44, %bb2 ], [ %9, %entry ] ; [#uses=2]
+ %diff.0.2.0 = phi float [ %42, %bb1 ], [ %45, %bb2 ], [ %4, %entry ] ; [#uses=2]
+ %t.0 = phi float [ %36, %bb1 ], [ 1.000000e+00, %bb2 ], [ 0.000000e+00, %entry ] ; [#uses=3]
+ %46 = fmul float %17, %t.0 ; [#uses=1]
+ %47 = fmul float %20, %t.0 ; [#uses=1]
+ %48 = fmul float %23, %t.0 ; [#uses=1]
+ %49 = fadd float %3, %46 ; [#uses=1]
+ %50 = fadd float %8, %47 ; [#uses=1]
+ %51 = fadd float %13, %48 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btQuadWord* %nearest, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %51, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btQuadWord* %nearest, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %50, float* %53, align 4
+ %54 = getelementptr inbounds %struct.btQuadWord* %nearest, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %49, float* %54, align 4
+ %55 = getelementptr inbounds %struct.btQuadWord* %nearest, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %55, align 4
+ %56 = fmul float %diff.0.0.0, %diff.0.0.0 ; [#uses=1]
+ %57 = fmul float %diff.0.1.0, %diff.0.1.0 ; [#uses=1]
+ %58 = fadd float %56, %57 ; [#uses=1]
+ %59 = fmul float %diff.0.2.0, %diff.0.2.0 ; [#uses=1]
+ %60 = fadd float %58, %59 ; [#uses=1]
+ ret float %60
+}
+
+; [#uses=2]
+define zeroext i8 @_ZN22SphereTriangleDetector15pointInTriangleEPK9btVector3RS1_PS0_(%struct.SphereTriangleDetector* nocapture %this, %struct.btQuadWord* nocapture %vertices, %struct.btQuadWord* nocapture %normal, %struct.btQuadWord* nocapture %p) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fsub float %1, %3 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fsub float %6, %8 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 1, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=3]
+ %12 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = fsub float %11, %13 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 2, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=3]
+ %17 = fsub float %16, %1 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 2, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=3]
+ %20 = fsub float %19, %6 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 2, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=3]
+ %23 = fsub float %22, %11 ; [#uses=2]
+ %24 = fsub float %3, %16 ; [#uses=2]
+ %25 = fsub float %8, %19 ; [#uses=2]
+ %26 = fsub float %13, %22 ; [#uses=2]
+ %27 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=3]
+ %29 = fsub float %28, %3 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=3]
+ %32 = fsub float %31, %8 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=3]
+ %35 = fsub float %34, %13 ; [#uses=1]
+ %36 = fsub float %28, %1 ; [#uses=1]
+ %37 = fsub float %31, %6 ; [#uses=1]
+ %38 = fsub float %34, %11 ; [#uses=1]
+ %39 = fsub float %28, %16 ; [#uses=1]
+ %40 = fsub float %31, %19 ; [#uses=1]
+ %41 = fsub float %34, %22 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=6]
+ %44 = fmul float %14, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=6]
+ %47 = fmul float %9, %46 ; [#uses=1]
+ %48 = fsub float %44, %47 ; [#uses=1]
+ %49 = fmul float %4, %46 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=6]
+ %52 = fmul float %14, %51 ; [#uses=1]
+ %53 = fsub float %49, %52 ; [#uses=1]
+ %54 = fmul float %9, %51 ; [#uses=1]
+ %55 = fmul float %4, %43 ; [#uses=1]
+ %56 = fsub float %54, %55 ; [#uses=1]
+ %57 = fmul float %23, %43 ; [#uses=1]
+ %58 = fmul float %20, %46 ; [#uses=1]
+ %59 = fsub float %57, %58 ; [#uses=1]
+ %60 = fmul float %17, %46 ; [#uses=1]
+ %61 = fmul float %23, %51 ; [#uses=1]
+ %62 = fsub float %60, %61 ; [#uses=1]
+ %63 = fmul float %20, %51 ; [#uses=1]
+ %64 = fmul float %17, %43 ; [#uses=1]
+ %65 = fsub float %63, %64 ; [#uses=1]
+ %66 = fmul float %26, %43 ; [#uses=1]
+ %67 = fmul float %25, %46 ; [#uses=1]
+ %68 = fsub float %66, %67 ; [#uses=1]
+ %69 = fmul float %24, %46 ; [#uses=1]
+ %70 = fmul float %26, %51 ; [#uses=1]
+ %71 = fsub float %69, %70 ; [#uses=1]
+ %72 = fmul float %25, %51 ; [#uses=1]
+ %73 = fmul float %24, %43 ; [#uses=1]
+ %74 = fsub float %72, %73 ; [#uses=1]
+ %75 = fmul float %56, %35 ; [#uses=1]
+ %76 = fmul float %53, %32 ; [#uses=1]
+ %77 = fadd float %75, %76 ; [#uses=1]
+ %78 = fmul float %48, %29 ; [#uses=1]
+ %79 = fadd float %77, %78 ; [#uses=2]
+ %80 = fmul float %65, %38 ; [#uses=1]
+ %81 = fmul float %62, %37 ; [#uses=1]
+ %82 = fadd float %80, %81 ; [#uses=1]
+ %83 = fmul float %59, %36 ; [#uses=1]
+ %84 = fadd float %82, %83 ; [#uses=2]
+ %85 = fmul float %74, %41 ; [#uses=1]
+ %86 = fmul float %71, %40 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=1]
+ %88 = fmul float %68, %39 ; [#uses=1]
+ %89 = fadd float %87, %88 ; [#uses=2]
+ %notlhs = fcmp ogt float %79, 0.000000e+00 ; [#uses=1]
+ %notrhs = fcmp ogt float %84, 0.000000e+00 ; [#uses=1]
+ %or.cond.not = and i1 %notrhs, %notlhs ; [#uses=1]
+ %90 = fcmp ogt float %89, 0.000000e+00 ; [#uses=1]
+ %or.cond10 = and i1 %or.cond.not, %90 ; [#uses=1]
+ br i1 %or.cond10, label %bb7, label %bb2
+
+bb2: ; preds = %entry
+ %91 = fcmp ugt float %79, 0.000000e+00 ; [#uses=1]
+ %92 = fcmp ugt float %84, 0.000000e+00 ; [#uses=1]
+ %or.cond11 = or i1 %91, %92 ; [#uses=1]
+ %93 = fcmp ugt float %89, 0.000000e+00 ; [#uses=1]
+ %or.cond12 = or i1 %or.cond11, %93 ; [#uses=1]
+ %94 = zext i1 %or.cond12 to i8 ; [#uses=1]
+ %retval = xor i8 %94, 1 ; [#uses=1]
+ ret i8 %retval
+
+bb7: ; preds = %entry
+ ret i8 1
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN22SphereTriangleDetector12facecontainsERK9btVector3PS1_RS0_(%struct.SphereTriangleDetector* nocapture %this, %struct.btQuadWord* nocapture %p, %struct.btQuadWord* nocapture %vertices, %struct.btQuadWord* nocapture %normal) nounwind readonly align 2 {
+entry:
+ %lp = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %lnormal = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btQuadWord* %lp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 8
+ %3 = getelementptr inbounds %struct.btQuadWord* %lp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %lp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 8
+ %9 = getelementptr inbounds %struct.btQuadWord* %lp, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btQuadWord* %lnormal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 8
+ %15 = getelementptr inbounds %struct.btQuadWord* %lnormal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %lnormal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 8
+ %21 = getelementptr inbounds %struct.btQuadWord* %lnormal, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = call zeroext i8 @_ZN22SphereTriangleDetector15pointInTriangleEPK9btVector3RS1_PS0_(%struct.SphereTriangleDetector* %this, %struct.btQuadWord* %vertices, %struct.btQuadWord* %lnormal, %struct.btQuadWord* %lp) nounwind ; [#uses=1]
+ ret i8 %24
+}
+
+; [#uses=1]
+define zeroext i8 @_ZN22SphereTriangleDetector7collideERK9btVector3RS0_S3_RfS4_f(%struct.SphereTriangleDetector* nocapture %this, %struct.btQuadWord* nocapture %sphereCenter, %struct.btQuadWord* nocapture %point, %struct.btQuadWord* nocapture %resultNormal, float* nocapture %depth, float* nocapture %timeOfImpact, float %contactBreakingThreshold) align 2 {
+entry:
+ %lp.i = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %lnormal.i = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %pa = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %pb = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.SphereTriangleDetector* %this, i32 0, i32 2 ; [#uses=3]
+ %1 = load %struct.btTriangleShape** %0, align 4 ; [#uses=12]
+ %2 = getelementptr inbounds %struct.btTriangleShape* %1, i32 0, i32 1, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.SphereTriangleDetector* %this, i32 0, i32 1 ; [#uses=1]
+ %4 = load %struct.btPolyhedralConvexShape** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btPolyhedralConvexShape* %4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btPolyhedralConvexShape* %4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %6, %8 ; [#uses=5]
+ %10 = getelementptr inbounds %struct.btTriangleShape* %1, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTriangleShape* %1, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = fsub float %11, %13 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btTriangleShape* %1, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTriangleShape* %1, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=3]
+ %19 = fsub float %16, %18 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btTriangleShape* %1, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTriangleShape* %1, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=3]
+ %24 = fsub float %21, %23 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btTriangleShape* %1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = fsub float %26, %13 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btTriangleShape* %1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = fsub float %29, %18 ; [#uses=2]
+ %31 = getelementptr inbounds %struct.btTriangleShape* %1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fsub float %32, %23 ; [#uses=2]
+ %34 = fmul float %33, %19 ; [#uses=1]
+ %35 = fmul float %30, %24 ; [#uses=1]
+ %36 = fsub float %34, %35 ; [#uses=3]
+ %37 = fmul float %27, %24 ; [#uses=1]
+ %38 = fmul float %33, %14 ; [#uses=1]
+ %39 = fsub float %37, %38 ; [#uses=3]
+ %40 = fmul float %30, %14 ; [#uses=1]
+ %41 = fmul float %27, %19 ; [#uses=1]
+ %42 = fsub float %40, %41 ; [#uses=3]
+ %43 = fmul float %42, %42 ; [#uses=1]
+ %44 = fmul float %39, %39 ; [#uses=1]
+ %45 = fadd float %43, %44 ; [#uses=1]
+ %46 = fmul float %36, %36 ; [#uses=1]
+ %47 = fadd float %45, %46 ; [#uses=1]
+ %48 = call float @sqrtf(float %47) nounwind readonly ; [#uses=1]
+ %49 = fdiv float 1.000000e+00, %48 ; [#uses=3]
+ %50 = fmul float %42, %49 ; [#uses=3]
+ %51 = fmul float %39, %49 ; [#uses=3]
+ %52 = fmul float %36, %49 ; [#uses=3]
+ %53 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 2 ; [#uses=3]
+ %54 = load float* %53, align 4 ; [#uses=4]
+ %55 = fsub float %54, %13 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 1 ; [#uses=3]
+ %57 = load float* %56, align 4 ; [#uses=4]
+ %58 = fsub float %57, %18 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 0 ; [#uses=3]
+ %60 = load float* %59, align 4 ; [#uses=4]
+ %61 = fsub float %60, %23 ; [#uses=1]
+ %62 = fmul float %61, %50 ; [#uses=1]
+ %63 = fmul float %58, %51 ; [#uses=1]
+ %64 = fadd float %62, %63 ; [#uses=1]
+ %65 = fmul float %55, %52 ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=3]
+ %67 = fcmp olt float %66, 0.000000e+00 ; [#uses=1]
+ br i1 %67, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %68 = fsub float -0.000000e+00, %66 ; [#uses=1]
+ %69 = fmul float %50, -1.000000e+00 ; [#uses=1]
+ %70 = fmul float %51, -1.000000e+00 ; [#uses=1]
+ %71 = fmul float %52, -1.000000e+00 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %normal.0.0.0 = phi float [ %69, %bb ], [ %50, %entry ] ; [#uses=3]
+ %normal.0.1.0 = phi float [ %70, %bb ], [ %51, %entry ] ; [#uses=3]
+ %normal.0.2.0 = phi float [ %71, %bb ], [ %52, %entry ] ; [#uses=3]
+ %distanceFromPlane.0 = phi float [ %68, %bb ], [ %66, %entry ] ; [#uses=5]
+ %72 = fmul float %normal.0.0.0, 0.000000e+00 ; [#uses=1]
+ %73 = fmul float %normal.0.1.0, 0.000000e+00 ; [#uses=1]
+ %74 = fadd float %72, %73 ; [#uses=1]
+ %75 = fmul float %normal.0.2.0, 0.000000e+00 ; [#uses=1]
+ %76 = fadd float %74, %75 ; [#uses=1]
+ %toBoolnot.not = fcmp olt float %distanceFromPlane.0, %9 ; [#uses=1]
+ %77 = fcmp ult float %76, 0.000000e+00 ; [#uses=1]
+ %or.cond = or i1 %toBoolnot.not, %77 ; [#uses=1]
+ br i1 %or.cond, label %bb7, label %bb37
+
+bb7: ; preds = %bb1
+ %78 = fadd float %9, %contactBreakingThreshold ; [#uses=3]
+ %79 = fcmp ogt float %78, %distanceFromPlane.0 ; [#uses=1]
+ br i1 %79, label %bb9, label %bb37
+
+bb9: ; preds = %bb7
+ %80 = getelementptr inbounds %struct.btQuadWord* %lp.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %60, float* %80, align 8
+ %81 = getelementptr inbounds %struct.btQuadWord* %lp.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %57, float* %81, align 4
+ %82 = getelementptr inbounds %struct.btQuadWord* %lp.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %54, float* %82, align 8
+ %83 = getelementptr inbounds %struct.btQuadWord* %lp.i, i32 0, i32 0, i32 3 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btQuadWord* %sphereCenter, i32 0, i32 0, i32 3 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ store float %85, float* %83, align 4
+ %86 = getelementptr inbounds %struct.btQuadWord* %lnormal.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %normal.0.0.0, float* %86, align 8
+ %87 = getelementptr inbounds %struct.btQuadWord* %lnormal.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %normal.0.1.0, float* %87, align 4
+ %88 = getelementptr inbounds %struct.btQuadWord* %lnormal.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %normal.0.2.0, float* %88, align 8
+ %89 = getelementptr inbounds %struct.btQuadWord* %lnormal.i, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %89, align 4
+ %90 = call zeroext i8 @_ZN22SphereTriangleDetector15pointInTriangleEPK9btVector3RS1_PS0_(%struct.SphereTriangleDetector* %this, %struct.btQuadWord* %2, %struct.btQuadWord* %lnormal.i, %struct.btQuadWord* %lp.i) nounwind ; [#uses=1]
+ %toBool10 = icmp eq i8 %90, 0 ; [#uses=1]
+ br i1 %toBool10, label %bb12, label %bb24.thread80
+
+bb24.thread80: ; preds = %bb9
+ %91 = fmul float %normal.0.2.0, %distanceFromPlane.0 ; [#uses=1]
+ %92 = fmul float %normal.0.1.0, %distanceFromPlane.0 ; [#uses=1]
+ %93 = fmul float %normal.0.0.0, %distanceFromPlane.0 ; [#uses=1]
+ %94 = fsub float %54, %91 ; [#uses=1]
+ %95 = fsub float %57, %92 ; [#uses=1]
+ %96 = fsub float %60, %93 ; [#uses=1]
+ br label %bb26
+
+bb12: ; preds = %bb9
+ %97 = fmul float %78, %78 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btTriangleShape* %1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %99 = load i32 (...)*** %98, align 4 ; [#uses=1]
+ %100 = getelementptr inbounds i32 (...)** %99, i32 22 ; [#uses=1]
+ %101 = load i32 (...)** %100, align 4 ; [#uses=1]
+ %102 = bitcast i32 (...)* %101 to i32 (%struct.btTriangleShape*)* ; [#uses=1]
+ %103 = call i32 %102(%struct.btTriangleShape* %1) ; [#uses=1]
+ %104 = icmp sgt i32 %103, 0 ; [#uses=1]
+ br i1 %104, label %bb.nph, label %bb37
+
+bb.nph: ; preds = %bb12
+ %105 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb16
+
+bb16: ; preds = %bb21, %bb.nph
+ %111 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb21 ] ; [#uses=2]
+ %hasContact.290 = phi i8 [ 0, %bb.nph ], [ %hasContact.1, %bb21 ] ; [#uses=1]
+ %contactPoint.0.2.188 = phi float [ undef, %bb.nph ], [ %contactPoint.0.2.0, %bb21 ] ; [#uses=1]
+ %contactPoint.0.1.187 = phi float [ undef, %bb.nph ], [ %contactPoint.0.1.0, %bb21 ] ; [#uses=1]
+ %contactPoint.0.0.186 = phi float [ undef, %bb.nph ], [ %contactPoint.0.0.0, %bb21 ] ; [#uses=1]
+ %tmp = add i32 %111, 1 ; [#uses=2]
+ %112 = load %struct.btTriangleShape** %0, align 4 ; [#uses=2]
+ %113 = getelementptr inbounds %struct.btTriangleShape* %112, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %114 = load i32 (...)*** %113, align 4 ; [#uses=1]
+ %115 = getelementptr inbounds i32 (...)** %114, i32 23 ; [#uses=1]
+ %116 = load i32 (...)** %115, align 4 ; [#uses=1]
+ %117 = bitcast i32 (...)* %116 to void (%struct.btTriangleShape*, i32, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %117(%struct.btTriangleShape* %112, i32 %111, %struct.btQuadWord* %pa, %struct.btQuadWord* %pb)
+ %118 = load float* %53, align 4 ; [#uses=1]
+ %119 = load float* %105, align 8 ; [#uses=3]
+ %120 = fsub float %118, %119 ; [#uses=4]
+ %121 = load float* %56, align 4 ; [#uses=1]
+ %122 = load float* %106, align 4 ; [#uses=3]
+ %123 = fsub float %121, %122 ; [#uses=4]
+ %124 = load float* %59, align 4 ; [#uses=1]
+ %125 = load float* %107, align 8 ; [#uses=3]
+ %126 = fsub float %124, %125 ; [#uses=4]
+ %127 = load float* %108, align 8 ; [#uses=1]
+ %128 = fsub float %127, %119 ; [#uses=6]
+ %129 = load float* %109, align 4 ; [#uses=1]
+ %130 = fsub float %129, %122 ; [#uses=6]
+ %131 = load float* %110, align 8 ; [#uses=1]
+ %132 = fsub float %131, %125 ; [#uses=6]
+ %133 = fmul float %132, %126 ; [#uses=1]
+ %134 = fmul float %130, %123 ; [#uses=1]
+ %135 = fadd float %133, %134 ; [#uses=1]
+ %136 = fmul float %128, %120 ; [#uses=1]
+ %137 = fadd float %135, %136 ; [#uses=3]
+ %138 = fcmp ogt float %137, 0.000000e+00 ; [#uses=1]
+ br i1 %138, label %bb.i, label %_Z18SegmentSqrDistanceRK9btVector3S1_S1_RS_.exit
+
+bb.i: ; preds = %bb16
+ %139 = fmul float %132, %132 ; [#uses=1]
+ %140 = fmul float %130, %130 ; [#uses=1]
+ %141 = fadd float %139, %140 ; [#uses=1]
+ %142 = fmul float %128, %128 ; [#uses=1]
+ %143 = fadd float %141, %142 ; [#uses=2]
+ %144 = fcmp olt float %137, %143 ; [#uses=1]
+ br i1 %144, label %bb1.i, label %bb2.i
+
+bb1.i: ; preds = %bb.i
+ %145 = fdiv float %137, %143 ; [#uses=4]
+ %146 = fmul float %128, %145 ; [#uses=1]
+ %147 = fmul float %130, %145 ; [#uses=1]
+ %148 = fmul float %132, %145 ; [#uses=1]
+ %149 = fsub float %126, %148 ; [#uses=1]
+ %150 = fsub float %123, %147 ; [#uses=1]
+ %151 = fsub float %120, %146 ; [#uses=1]
+ br label %_Z18SegmentSqrDistanceRK9btVector3S1_S1_RS_.exit
+
+bb2.i: ; preds = %bb.i
+ %152 = fsub float %126, %132 ; [#uses=1]
+ %153 = fsub float %123, %130 ; [#uses=1]
+ %154 = fsub float %120, %128 ; [#uses=1]
+ br label %_Z18SegmentSqrDistanceRK9btVector3S1_S1_RS_.exit
+
+_Z18SegmentSqrDistanceRK9btVector3S1_S1_RS_.exit: ; preds = %bb2.i, %bb1.i, %bb16
+ %diff.0.0.0.i = phi float [ %149, %bb1.i ], [ %152, %bb2.i ], [ %126, %bb16 ] ; [#uses=2]
+ %diff.0.1.0.i = phi float [ %150, %bb1.i ], [ %153, %bb2.i ], [ %123, %bb16 ] ; [#uses=2]
+ %diff.0.2.0.i = phi float [ %151, %bb1.i ], [ %154, %bb2.i ], [ %120, %bb16 ] ; [#uses=2]
+ %t.0.i = phi float [ %145, %bb1.i ], [ 1.000000e+00, %bb2.i ], [ 0.000000e+00, %bb16 ] ; [#uses=3]
+ %155 = fmul float %diff.0.0.0.i, %diff.0.0.0.i ; [#uses=1]
+ %156 = fmul float %diff.0.1.0.i, %diff.0.1.0.i ; [#uses=1]
+ %157 = fadd float %155, %156 ; [#uses=1]
+ %158 = fmul float %diff.0.2.0.i, %diff.0.2.0.i ; [#uses=1]
+ %159 = fadd float %157, %158 ; [#uses=1]
+ %160 = fcmp olt float %159, %97 ; [#uses=1]
+ br i1 %160, label %bb20, label %bb21
+
+bb20: ; preds = %_Z18SegmentSqrDistanceRK9btVector3S1_S1_RS_.exit
+ %161 = fmul float %132, %t.0.i ; [#uses=1]
+ %162 = fmul float %130, %t.0.i ; [#uses=1]
+ %163 = fmul float %128, %t.0.i ; [#uses=1]
+ %164 = fadd float %125, %161 ; [#uses=1]
+ %165 = fadd float %122, %162 ; [#uses=1]
+ %166 = fadd float %119, %163 ; [#uses=1]
+ br label %bb21
+
+bb21: ; preds = %bb20, %_Z18SegmentSqrDistanceRK9btVector3S1_S1_RS_.exit
+ %contactPoint.0.0.0 = phi float [ %164, %bb20 ], [ %contactPoint.0.0.186, %_Z18SegmentSqrDistanceRK9btVector3S1_S1_RS_.exit ] ; [#uses=2]
+ %contactPoint.0.1.0 = phi float [ %165, %bb20 ], [ %contactPoint.0.1.187, %_Z18SegmentSqrDistanceRK9btVector3S1_S1_RS_.exit ] ; [#uses=2]
+ %contactPoint.0.2.0 = phi float [ %166, %bb20 ], [ %contactPoint.0.2.188, %_Z18SegmentSqrDistanceRK9btVector3S1_S1_RS_.exit ] ; [#uses=2]
+ %hasContact.1 = phi i8 [ 1, %bb20 ], [ %hasContact.290, %_Z18SegmentSqrDistanceRK9btVector3S1_S1_RS_.exit ] ; [#uses=2]
+ %167 = load %struct.btTriangleShape** %0, align 4 ; [#uses=2]
+ %168 = getelementptr inbounds %struct.btTriangleShape* %167, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %169 = load i32 (...)*** %168, align 4 ; [#uses=1]
+ %170 = getelementptr inbounds i32 (...)** %169, i32 22 ; [#uses=1]
+ %171 = load i32 (...)** %170, align 4 ; [#uses=1]
+ %172 = bitcast i32 (...)* %171 to i32 (%struct.btTriangleShape*)* ; [#uses=1]
+ %173 = call i32 %172(%struct.btTriangleShape* %167) ; [#uses=1]
+ %174 = icmp sgt i32 %173, %tmp ; [#uses=1]
+ br i1 %174, label %bb16, label %bb24
+
+bb24: ; preds = %bb21
+ %toBool25 = icmp eq i8 %hasContact.1, 0 ; [#uses=1]
+ br i1 %toBool25, label %bb37, label %bb24.bb26_crit_edge
+
+bb24.bb26_crit_edge: ; preds = %bb24
+ %.pre = load float* %53, align 4 ; [#uses=1]
+ %.pre96 = load float* %56, align 4 ; [#uses=1]
+ %.pre97 = load float* %59, align 4 ; [#uses=1]
+ br label %bb26
+
+bb26: ; preds = %bb24.bb26_crit_edge, %bb24.thread80
+ %175 = phi float [ %60, %bb24.thread80 ], [ %.pre97, %bb24.bb26_crit_edge ] ; [#uses=1]
+ %176 = phi float [ %57, %bb24.thread80 ], [ %.pre96, %bb24.bb26_crit_edge ] ; [#uses=1]
+ %177 = phi float [ %54, %bb24.thread80 ], [ %.pre, %bb24.bb26_crit_edge ] ; [#uses=1]
+ %contactPoint.0.2.284 = phi float [ %94, %bb24.thread80 ], [ %contactPoint.0.2.0, %bb24.bb26_crit_edge ] ; [#uses=3]
+ %contactPoint.0.1.283 = phi float [ %95, %bb24.thread80 ], [ %contactPoint.0.1.0, %bb24.bb26_crit_edge ] ; [#uses=3]
+ %contactPoint.0.0.282 = phi float [ %96, %bb24.thread80 ], [ %contactPoint.0.0.0, %bb24.bb26_crit_edge ] ; [#uses=3]
+ %178 = fsub float %177, %contactPoint.0.2.284 ; [#uses=5]
+ %179 = fsub float %176, %contactPoint.0.1.283 ; [#uses=5]
+ %180 = fsub float %175, %contactPoint.0.0.282 ; [#uses=5]
+ %181 = fmul float %180, %180 ; [#uses=1]
+ %182 = fmul float %179, %179 ; [#uses=1]
+ %183 = fadd float %181, %182 ; [#uses=1]
+ %184 = fmul float %178, %178 ; [#uses=1]
+ %185 = fadd float %183, %184 ; [#uses=3]
+ %186 = fmul float %9, %9 ; [#uses=1]
+ %187 = fcmp ogt float %186, %185 ; [#uses=1]
+ br i1 %187, label %bb30, label %bb32
+
+bb30: ; preds = %bb26
+ %188 = call float @sqrtf(float %185) nounwind readonly ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btQuadWord* %resultNormal, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %180, float* %189, align 4
+ %190 = getelementptr inbounds %struct.btQuadWord* %resultNormal, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %179, float* %190, align 4
+ %191 = getelementptr inbounds %struct.btQuadWord* %resultNormal, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %178, float* %191, align 4
+ %192 = getelementptr inbounds %struct.btQuadWord* %resultNormal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %192, align 4
+ %193 = call float @sqrtf(float %185) nounwind readonly ; [#uses=1]
+ %194 = fdiv float 1.000000e+00, %193 ; [#uses=3]
+ %195 = fmul float %180, %194 ; [#uses=1]
+ store float %195, float* %189, align 4
+ %196 = fmul float %179, %194 ; [#uses=1]
+ store float %196, float* %190, align 4
+ %197 = fmul float %178, %194 ; [#uses=1]
+ store float %197, float* %191, align 4
+ %198 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %contactPoint.0.0.282, float* %198, align 4
+ %199 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %contactPoint.0.1.283, float* %199, align 4
+ %200 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %contactPoint.0.2.284, float* %200, align 4
+ %201 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %201, align 4
+ %202 = fsub float %9, %188 ; [#uses=1]
+ %203 = fsub float -0.000000e+00, %202 ; [#uses=1]
+ store float %203, float* %depth, align 4
+ ret i8 1
+
+bb32: ; preds = %bb26
+ %204 = fmul float %180, 0.000000e+00 ; [#uses=1]
+ %205 = fmul float %179, 0.000000e+00 ; [#uses=1]
+ %206 = fadd float %204, %205 ; [#uses=1]
+ %207 = fmul float %178, 0.000000e+00 ; [#uses=1]
+ %208 = fadd float %206, %207 ; [#uses=1]
+ %209 = fcmp ult float %208, 0.000000e+00 ; [#uses=1]
+ br i1 %209, label %bb35, label %bb37
+
+bb35: ; preds = %bb32
+ %210 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %contactPoint.0.0.282, float* %210, align 4
+ %211 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %contactPoint.0.1.283, float* %211, align 4
+ %212 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %contactPoint.0.2.284, float* %212, align 4
+ %213 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %213, align 4
+ store float 0.000000e+00, float* %timeOfImpact, align 4
+ ret i8 1
+
+bb37: ; preds = %bb32, %bb24, %bb12, %bb7, %bb1
+ ret i8 0
+}
+
+; [#uses=1]
+define void @_ZNK10btBoxShape7getAabbERK11btTransformR9btVector3S4_(%struct.btBoxShape* %this, %struct.btTransform* nocapture %t, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fadd float %8, %6 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fadd float %11, %6 ; [#uses=3]
+ %13 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fadd float %14, %6 ; [#uses=3]
+ %16 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = tail call float @fabsf(float %17) nounwind readnone ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = tail call float @fabsf(float %20) nounwind readnone ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = tail call float @fabsf(float %23) nounwind readnone ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = tail call float @fabsf(float %26) nounwind readnone ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = tail call float @fabsf(float %29) nounwind readnone ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = tail call float @fabsf(float %32) nounwind readnone ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = tail call float @fabsf(float %35) nounwind readnone ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = tail call float @fabsf(float %38) nounwind readnone ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = tail call float @fabsf(float %41) nounwind readnone ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=2]
+ %45 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=2]
+ %47 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=2]
+ %49 = fmul float %24, %15 ; [#uses=1]
+ %50 = fmul float %21, %12 ; [#uses=1]
+ %51 = fadd float %49, %50 ; [#uses=1]
+ %52 = fmul float %18, %9 ; [#uses=1]
+ %53 = fadd float %51, %52 ; [#uses=2]
+ %54 = fmul float %33, %15 ; [#uses=1]
+ %55 = fmul float %30, %12 ; [#uses=1]
+ %56 = fadd float %54, %55 ; [#uses=1]
+ %57 = fmul float %27, %9 ; [#uses=1]
+ %58 = fadd float %56, %57 ; [#uses=2]
+ %59 = fmul float %42, %15 ; [#uses=1]
+ %60 = fmul float %39, %12 ; [#uses=1]
+ %61 = fadd float %59, %60 ; [#uses=1]
+ %62 = fmul float %36, %9 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=2]
+ %64 = fsub float %48, %53 ; [#uses=1]
+ %65 = fsub float %46, %58 ; [#uses=1]
+ %66 = fsub float %44, %63 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %66, float* %67, align 4
+ %68 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %65, float* %68, align 4
+ %69 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %64, float* %69, align 4
+ %70 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %70, align 4
+ %71 = fadd float %48, %53 ; [#uses=1]
+ %72 = fadd float %46, %58 ; [#uses=1]
+ %73 = fadd float %44, %63 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %73, float* %74, align 4
+ %75 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %72, float* %75, align 4
+ %76 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %71, float* %76, align 4
+ %77 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %77, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK10btBoxShape24localGetSupportingVertexERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btBoxShape* %this, %struct.btQuadWord* nocapture %vec) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0 ; [#uses=3]
+ %11 = bitcast i32 (...)* %9 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %12 = tail call float %11(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %13 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 11 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %17 = tail call float %16(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %18 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i32 (...)** %18, i32 11 ; [#uses=1]
+ %20 = load i32 (...)** %19, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %20 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %22 = tail call float %21(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %23 = fadd float %1, %22 ; [#uses=2]
+ %24 = fadd float %3, %17 ; [#uses=2]
+ %25 = fadd float %5, %12 ; [#uses=2]
+ %26 = fsub float -0.000000e+00, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fcmp ult float %28, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i2 = select i1 %29, float %26, float %25 ; [#uses=1]
+ %30 = fsub float -0.000000e+00, %24 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fcmp ult float %32, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i1 = select i1 %33, float %30, float %24 ; [#uses=1]
+ %34 = fsub float -0.000000e+00, %23 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = fcmp ult float %36, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i = select i1 %37, float %34, float %23 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %iftmp.3.0.i, float* %38, align 4
+ %39 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %iftmp.3.0.i1, float* %39, align 4
+ %40 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %iftmp.3.0.i2, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK10btBoxShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btBoxShape* nocapture %this, %struct.btQuadWord* nocapture %vec) nounwind inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = fsub float -0.000000e+00, %1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = fcmp ult float %4, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i2 = select i1 %5, float %2, float %1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = fsub float -0.000000e+00, %7 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fcmp ult float %10, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i1 = select i1 %11, float %8, float %7 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fsub float -0.000000e+00, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fcmp ult float %16, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i = select i1 %17, float %14, float %13 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %iftmp.3.0.i, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %iftmp.3.0.i1, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %iftmp.3.0.i2, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK10btBoxShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btBoxShape* nocapture %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) nounwind align 2 {
+entry:
+ %0 = icmp sgt i32 %numVectors, 0 ; [#uses=1]
+ br i1 %0, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %i.05 = phi i32 [ 0, %bb.nph ], [ %16, %bb ] ; [#uses=8]
+ %scevgep = getelementptr %struct.btQuadWord* %vectors, i32 %i.05, i32 0, i32 2 ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btQuadWord* %vectors, i32 %i.05, i32 0, i32 1 ; [#uses=1]
+ %scevgep78 = getelementptr inbounds %struct.btQuadWord* %vectors, i32 %i.05, i32 0, i32 0 ; [#uses=1]
+ %scevgep910 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 0 ; [#uses=1]
+ %scevgep11 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 1 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 2 ; [#uses=1]
+ %scevgep13 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 3 ; [#uses=1]
+ %4 = load float* %1, align 4 ; [#uses=2]
+ %5 = fsub float -0.000000e+00, %4 ; [#uses=1]
+ %6 = load float* %scevgep, align 4 ; [#uses=1]
+ %7 = fcmp ult float %6, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i4 = select i1 %7, float %5, float %4 ; [#uses=1]
+ %8 = load float* %2, align 4 ; [#uses=2]
+ %9 = fsub float -0.000000e+00, %8 ; [#uses=1]
+ %10 = load float* %scevgep6, align 4 ; [#uses=1]
+ %11 = fcmp ult float %10, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i3 = select i1 %11, float %9, float %8 ; [#uses=1]
+ %12 = load float* %3, align 4 ; [#uses=2]
+ %13 = fsub float -0.000000e+00, %12 ; [#uses=1]
+ %14 = load float* %scevgep78, align 4 ; [#uses=1]
+ %15 = fcmp ult float %14, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i = select i1 %15, float %13, float %12 ; [#uses=1]
+ store float %iftmp.3.0.i, float* %scevgep910, align 4
+ store float %iftmp.3.0.i3, float* %scevgep11, align 4
+ store float %iftmp.3.0.i4, float* %scevgep12, align 4
+ store float 0.000000e+00, float* %scevgep13, align 4
+ %16 = add nsw i32 %i.05, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %16, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN10btBoxShape9setMarginEf(%struct.btBoxShape* %this, float %collisionMargin) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=6]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0 ; [#uses=6]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %7 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %11 = tail call float %10(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %12 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 11 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = bitcast i32 (...)* %14 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %16 = tail call float %15(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fadd float %18, %6 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fadd float %21, %11 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fadd float %24, %16 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %collisionMargin, float* %26, align 4
+ %27 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds i32 (...)** %27, i32 11 ; [#uses=1]
+ %29 = load i32 (...)** %28, align 4 ; [#uses=1]
+ %30 = bitcast i32 (...)* %29 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %31 = tail call float %30(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %32 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32 (...)** %32, i32 11 ; [#uses=1]
+ %34 = load i32 (...)** %33, align 4 ; [#uses=1]
+ %35 = bitcast i32 (...)* %34 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %36 = tail call float %35(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %37 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32 (...)** %37, i32 11 ; [#uses=1]
+ %39 = load i32 (...)** %38, align 4 ; [#uses=1]
+ %40 = bitcast i32 (...)* %39 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %41 = tail call float %40(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %42 = fsub float %19, %31 ; [#uses=1]
+ %43 = fsub float %22, %36 ; [#uses=1]
+ %44 = fsub float %25, %41 ; [#uses=1]
+ store float %44, float* %23, align 4
+ store float %43, float* %20, align 4
+ store float %42, float* %17, align 4
+ %45 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %45, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK10btBoxShape8getPlaneER9btVector3S1_i(%struct.btBoxShape* %this, %struct.btQuadWord* nocapture %planeNormal, %struct.btQuadWord* nocapture %planeSupport, i32 %i) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %plane = alloca %struct.btQuaternion, align 8 ; [#uses=4]
+ %memtmp = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %2 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds i32 (...)** %2, i32 28 ; [#uses=1]
+ %4 = load i32 (...)** %3, align 4 ; [#uses=1]
+ %5 = bitcast i32 (...)* %4 to void (%struct.btBoxShape*, %struct.btQuaternion*, i32)* ; [#uses=1]
+ call void %5(%struct.btBoxShape* %this, %struct.btQuaternion* %plane, i32 %i)
+ %6 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 8 ; [#uses=2]
+ %10 = load float* %7, align 4 ; [#uses=2]
+ %11 = load float* %6, align 8 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %9, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %10, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %11, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 4
+ %16 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds i32 (...)** %16, i32 15 ; [#uses=1]
+ %18 = load i32 (...)** %17, align 4 ; [#uses=1]
+ %19 = fsub float -0.000000e+00, %11 ; [#uses=1]
+ %20 = fsub float -0.000000e+00, %10 ; [#uses=1]
+ %21 = fsub float -0.000000e+00, %9 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %21, float* %22, align 8
+ %23 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %20, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %19, float* %24, align 8
+ %25 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = bitcast i32 (...)* %18 to void (%struct.btQuadWord*, %struct.btBoxShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %26(%struct.btQuadWord* noalias sret %memtmp, %struct.btBoxShape* %this, %struct.btQuadWord* %0)
+ %27 = getelementptr inbounds %struct.btQuadWord* %planeSupport, i32 0, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 8 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.btQuadWord* %planeSupport, i32 0, i32 0, i32 1 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btQuadWord* %planeSupport, i32 0, i32 0, i32 2 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 8 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.btQuadWord* %planeSupport, i32 0, i32 0, i32 3 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 3 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK10btBoxShape12getNumPlanesEv(%struct.btBoxShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 6
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK10btBoxShape14getNumVerticesEv(%struct.btBoxShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 8
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK10btBoxShape11getNumEdgesEv(%struct.btBoxShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 12
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK10btBoxShape9getVertexEiR9btVector3(%struct.btBoxShape* nocapture %this, i32 %i, %struct.btQuadWord* nocapture %vtx) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=2]
+ %6 = lshr i32 %i, 2 ; [#uses=1]
+ %B.not = and i32 %6, 1 ; [#uses=2]
+ %7 = xor i32 %B.not, 1 ; [#uses=1]
+ %8 = sitofp i32 %7 to float ; [#uses=1]
+ %9 = fmul float %5, %8 ; [#uses=1]
+ %10 = sitofp i32 %B.not to float ; [#uses=1]
+ %11 = fmul float %5, %10 ; [#uses=1]
+ %12 = fsub float %9, %11 ; [#uses=1]
+ %13 = lshr i32 %i, 1 ; [#uses=1]
+ %B.not3 = and i32 %13, 1 ; [#uses=2]
+ %14 = xor i32 %B.not3, 1 ; [#uses=1]
+ %15 = sitofp i32 %14 to float ; [#uses=1]
+ %16 = fmul float %3, %15 ; [#uses=1]
+ %17 = sitofp i32 %B.not3 to float ; [#uses=1]
+ %18 = fmul float %3, %17 ; [#uses=1]
+ %19 = fsub float %16, %18 ; [#uses=1]
+ %20 = and i32 %i, 1 ; [#uses=2]
+ %21 = icmp eq i32 %20, 0 ; [#uses=1]
+ %iftmp.133.0 = select i1 %21, float 1.000000e+00, float 0.000000e+00 ; [#uses=1]
+ %22 = fmul float %1, %iftmp.133.0 ; [#uses=1]
+ %23 = sitofp i32 %20 to float ; [#uses=1]
+ %24 = fmul float %1, %23 ; [#uses=1]
+ %25 = fsub float %22, %24 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %25, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %19, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %12, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK10btBoxShape16getPlaneEquationER9btVector4i(%struct.btBoxShape* nocapture %this, %struct.btQuaternion* %plane, i32 %i) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=2]
+ switch i32 %i, label %return [
+ i32 0, label %bb
+ i32 1, label %bb1
+ i32 2, label %bb2
+ i32 3, label %bb3
+ i32 4, label %bb4
+ i32 5, label %bb5
+ ]
+
+bb: ; preds = %entry
+ %6 = fsub float -0.000000e+00, %1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %6, float* %10, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %11 = fsub float -0.000000e+00, %1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float -1.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %11, float* %15, align 4
+ ret void
+
+bb2: ; preds = %entry
+ %16 = fsub float -0.000000e+00, %3 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %16, float* %20, align 4
+ ret void
+
+bb3: ; preds = %entry
+ %21 = fsub float -0.000000e+00, %3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float -1.000000e+00, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %21, float* %25, align 4
+ ret void
+
+bb4: ; preds = %entry
+ %26 = fsub float -0.000000e+00, %5 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %26, float* %30, align 4
+ ret void
+
+bb5: ; preds = %entry
+ %31 = fsub float -0.000000e+00, %5 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float -1.000000e+00, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %31, float* %35, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK10btBoxShape7getEdgeEiR9btVector3S1_(%struct.btBoxShape* %this, i32 %i, %struct.btQuadWord* %pa, %struct.btQuadWord* %pb) align 2 {
+entry:
+ switch i32 %i, label %bb12 [
+ i32 0, label %bb
+ i32 1, label %bb1
+ i32 2, label %bb2
+ i32 3, label %bb3
+ i32 4, label %bb4
+ i32 5, label %bb5
+ i32 6, label %bb6
+ i32 7, label %bb7
+ i32 8, label %bb8
+ i32 9, label %bb9
+ i32 10, label %bb10
+ i32 11, label %bb11
+ ]
+
+bb: ; preds = %entry
+ br label %bb12
+
+bb1: ; preds = %entry
+ br label %bb12
+
+bb2: ; preds = %entry
+ br label %bb12
+
+bb3: ; preds = %entry
+ br label %bb12
+
+bb4: ; preds = %entry
+ br label %bb12
+
+bb5: ; preds = %entry
+ br label %bb12
+
+bb6: ; preds = %entry
+ br label %bb12
+
+bb7: ; preds = %entry
+ br label %bb12
+
+bb8: ; preds = %entry
+ br label %bb12
+
+bb9: ; preds = %entry
+ br label %bb12
+
+bb10: ; preds = %entry
+ br label %bb12
+
+bb11: ; preds = %entry
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb, %entry
+ %edgeVert0.0 = phi i32 [ 0, %entry ], [ 6, %bb11 ], [ 5, %bb10 ], [ 4, %bb9 ], [ 4, %bb8 ], [ 3, %bb7 ], [ 2, %bb6 ], [ 1, %bb5 ], [ 0, %bb4 ], [ 2, %bb3 ], [ 1, %bb2 ], [ 0, %bb1 ], [ 0, %bb ] ; [#uses=1]
+ %edgeVert1.0 = phi i32 [ 0, %entry ], [ 7, %bb11 ], [ 7, %bb10 ], [ 6, %bb9 ], [ 5, %bb8 ], [ 7, %bb7 ], [ 6, %bb6 ], [ 5, %bb5 ], [ 4, %bb4 ], [ 3, %bb3 ], [ 3, %bb2 ], [ 2, %bb1 ], [ 1, %bb ] ; [#uses=1]
+ %0 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 24 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btBoxShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %4(%struct.btBoxShape* %this, i32 %edgeVert0.0, %struct.btQuadWord* %pa)
+ %5 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 24 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct.btBoxShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %8(%struct.btBoxShape* %this, i32 %edgeVert1.0, %struct.btQuadWord* %pb)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK10btBoxShape8isInsideERK9btVector3f(%struct.btBoxShape* nocapture %this, %struct.btQuadWord* nocapture %pt, float %tolerance) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %pt, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = fadd float %1, %tolerance ; [#uses=1]
+ %9 = fcmp ugt float %7, %8 ; [#uses=1]
+ br i1 %9, label %bb6, label %bb
+
+bb: ; preds = %entry
+ %10 = fsub float -0.000000e+00, %1 ; [#uses=1]
+ %11 = fsub float %10, %tolerance ; [#uses=1]
+ %12 = fcmp ult float %7, %11 ; [#uses=1]
+ br i1 %12, label %bb6, label %bb1
+
+bb1: ; preds = %bb
+ %13 = getelementptr inbounds %struct.btQuadWord* %pt, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = fadd float %3, %tolerance ; [#uses=1]
+ %16 = fcmp ugt float %14, %15 ; [#uses=1]
+ br i1 %16, label %bb6, label %bb2
+
+bb2: ; preds = %bb1
+ %17 = fsub float -0.000000e+00, %3 ; [#uses=1]
+ %18 = fsub float %17, %tolerance ; [#uses=1]
+ %19 = fcmp ult float %14, %18 ; [#uses=1]
+ br i1 %19, label %bb6, label %bb3
+
+bb3: ; preds = %bb2
+ %20 = getelementptr inbounds %struct.btQuadWord* %pt, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=2]
+ %22 = fadd float %5, %tolerance ; [#uses=1]
+ %23 = fcmp ugt float %21, %22 ; [#uses=1]
+ br i1 %23, label %bb6, label %bb4
+
+bb4: ; preds = %bb3
+ %24 = fsub float -0.000000e+00, %5 ; [#uses=1]
+ %25 = fsub float %24, %tolerance ; [#uses=1]
+ %not. = fcmp oge float %21, %25 ; [#uses=1]
+ %retval = zext i1 %not. to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb6: ; preds = %bb3, %bb2, %bb1, %bb, %entry
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK10btBoxShape7getNameEv(%struct.btBoxShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([4 x i8]* @.str40, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK10btBoxShape36getNumPreferredPenetrationDirectionsEv(%struct.btBoxShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 6
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK10btBoxShape32getPreferredPenetrationDirectionEiR9btVector3(%struct.btBoxShape* nocapture %this, i32 %index, %struct.btQuadWord* %penetrationVector) nounwind align 2 {
+entry:
+ switch i32 %index, label %return [
+ i32 0, label %bb
+ i32 1, label %bb1
+ i32 2, label %bb2
+ i32 3, label %bb3
+ i32 4, label %bb4
+ i32 5, label %bb5
+ ]
+
+bb: ; preds = %entry
+ %0 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float -1.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ ret void
+
+bb2: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ ret void
+
+bb3: ; preds = %entry
+ %12 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float -1.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 4
+ ret void
+
+bb4: ; preds = %entry
+ %16 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ ret void
+
+bb5: ; preds = %entry
+ %20 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float -1.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK10btBoxShape21calculateLocalInertiaEfR9btVector3(%struct.btBoxShape* %this, float %mass, %struct.btQuadWord* nocapture %inertia) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0 ; [#uses=3]
+ %11 = bitcast i32 (...)* %9 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %12 = tail call float %11(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %13 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 11 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %17 = tail call float %16(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %18 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i32 (...)** %18, i32 11 ; [#uses=1]
+ %20 = load i32 (...)** %19, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %20 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %22 = tail call float %21(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %23 = fadd float %1, %22 ; [#uses=1]
+ %24 = fadd float %3, %17 ; [#uses=1]
+ %25 = fadd float %5, %12 ; [#uses=1]
+ %26 = fmul float %23, 2.000000e+00 ; [#uses=2]
+ %27 = fmul float %24, 2.000000e+00 ; [#uses=2]
+ %28 = fmul float %25, 2.000000e+00 ; [#uses=2]
+ %29 = fdiv float %mass, 1.200000e+01 ; [#uses=3]
+ %30 = fmul float %26, %26 ; [#uses=2]
+ %31 = fmul float %27, %27 ; [#uses=2]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = fmul float %29, %32 ; [#uses=1]
+ %34 = fmul float %28, %28 ; [#uses=2]
+ %35 = fadd float %30, %34 ; [#uses=1]
+ %36 = fmul float %29, %35 ; [#uses=1]
+ %37 = fadd float %31, %34 ; [#uses=1]
+ %38 = fmul float %29, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %38, float* %39, align 4
+ %40 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %36, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %33, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %42, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN10btBoxShape15setLocalScalingERK9btVector3(%struct.btBoxShape* %this, %struct.btQuadWord* %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0 ; [#uses=4]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=2]
+ %7 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %11 = tail call float %10(%struct.btConvexInternalShape* %4) ; [#uses=2]
+ %12 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 11 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = bitcast i32 (...)* %14 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %16 = tail call float %15(%struct.btConvexInternalShape* %4) ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fadd float %18, %6 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fadd float %21, %11 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fadd float %24, %16 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fdiv float %19, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fdiv float %22, %30 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fdiv float %25, %33 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3(%struct.btConvexInternalShape* %4, %struct.btQuadWord* %scaling)
+ %35 = load float* %26, align 4 ; [#uses=1]
+ %36 = fmul float %28, %35 ; [#uses=1]
+ %37 = load float* %29, align 4 ; [#uses=1]
+ %38 = fmul float %31, %37 ; [#uses=1]
+ %39 = load float* %32, align 4 ; [#uses=1]
+ %40 = fmul float %34, %39 ; [#uses=1]
+ %41 = fsub float %36, %6 ; [#uses=1]
+ %42 = fsub float %38, %11 ; [#uses=1]
+ %43 = fsub float %40, %16 ; [#uses=1]
+ store float %43, float* %23, align 4
+ store float %42, float* %20, align 4
+ store float %41, float* %17, align 4
+ %44 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %44, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN10btBoxShapeD0Ev(%struct.btBoxShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btBoxShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN10btBoxShapeD1Ev(%struct.btBoxShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBoxShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK12btBox2dShape7getAabbERK11btTransformR9btVector3S4_(%struct.btBox2dShape* %this, %struct.btTransform* nocapture %t, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fadd float %8, %6 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fadd float %11, %6 ; [#uses=3]
+ %13 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fadd float %14, %6 ; [#uses=3]
+ %16 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = tail call float @fabsf(float %17) nounwind readnone ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = tail call float @fabsf(float %20) nounwind readnone ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = tail call float @fabsf(float %23) nounwind readnone ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = tail call float @fabsf(float %26) nounwind readnone ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = tail call float @fabsf(float %29) nounwind readnone ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = tail call float @fabsf(float %32) nounwind readnone ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = tail call float @fabsf(float %35) nounwind readnone ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = tail call float @fabsf(float %38) nounwind readnone ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = tail call float @fabsf(float %41) nounwind readnone ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=2]
+ %45 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=2]
+ %47 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=2]
+ %49 = fmul float %24, %15 ; [#uses=1]
+ %50 = fmul float %21, %12 ; [#uses=1]
+ %51 = fadd float %49, %50 ; [#uses=1]
+ %52 = fmul float %18, %9 ; [#uses=1]
+ %53 = fadd float %51, %52 ; [#uses=2]
+ %54 = fmul float %33, %15 ; [#uses=1]
+ %55 = fmul float %30, %12 ; [#uses=1]
+ %56 = fadd float %54, %55 ; [#uses=1]
+ %57 = fmul float %27, %9 ; [#uses=1]
+ %58 = fadd float %56, %57 ; [#uses=2]
+ %59 = fmul float %42, %15 ; [#uses=1]
+ %60 = fmul float %39, %12 ; [#uses=1]
+ %61 = fadd float %59, %60 ; [#uses=1]
+ %62 = fmul float %36, %9 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=2]
+ %64 = fsub float %48, %53 ; [#uses=1]
+ %65 = fsub float %46, %58 ; [#uses=1]
+ %66 = fsub float %44, %63 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %66, float* %67, align 4
+ %68 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %65, float* %68, align 4
+ %69 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %64, float* %69, align 4
+ %70 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %70, align 4
+ %71 = fadd float %48, %53 ; [#uses=1]
+ %72 = fadd float %46, %58 ; [#uses=1]
+ %73 = fadd float %44, %63 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %73, float* %74, align 4
+ %75 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %72, float* %75, align 4
+ %76 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %71, float* %76, align 4
+ %77 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %77, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK12btBox2dShape24localGetSupportingVertexERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btBox2dShape* %this, %struct.btQuadWord* nocapture %vec) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0 ; [#uses=3]
+ %11 = bitcast i32 (...)* %9 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %12 = tail call float %11(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %13 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 11 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %17 = tail call float %16(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %18 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i32 (...)** %18, i32 11 ; [#uses=1]
+ %20 = load i32 (...)** %19, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %20 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %22 = tail call float %21(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %23 = fadd float %1, %22 ; [#uses=2]
+ %24 = fadd float %3, %17 ; [#uses=2]
+ %25 = fadd float %5, %12 ; [#uses=2]
+ %26 = fsub float -0.000000e+00, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fcmp ult float %28, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i2 = select i1 %29, float %26, float %25 ; [#uses=1]
+ %30 = fsub float -0.000000e+00, %24 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fcmp ult float %32, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i1 = select i1 %33, float %30, float %24 ; [#uses=1]
+ %34 = fsub float -0.000000e+00, %23 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = fcmp ult float %36, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i = select i1 %37, float %34, float %23 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %iftmp.3.0.i, float* %38, align 4
+ %39 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %iftmp.3.0.i1, float* %39, align 4
+ %40 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %iftmp.3.0.i2, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK12btBox2dShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btBox2dShape* nocapture %this, %struct.btQuadWord* nocapture %vec) nounwind inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = fsub float -0.000000e+00, %1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = fcmp ult float %4, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i2 = select i1 %5, float %2, float %1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = fsub float -0.000000e+00, %7 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fcmp ult float %10, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i1 = select i1 %11, float %8, float %7 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fsub float -0.000000e+00, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fcmp ult float %16, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i = select i1 %17, float %14, float %13 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %iftmp.3.0.i, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %iftmp.3.0.i1, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %iftmp.3.0.i2, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK12btBox2dShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btBox2dShape* nocapture %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) nounwind align 2 {
+entry:
+ %0 = icmp sgt i32 %numVectors, 0 ; [#uses=1]
+ br i1 %0, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %i.05 = phi i32 [ 0, %bb.nph ], [ %16, %bb ] ; [#uses=8]
+ %scevgep = getelementptr %struct.btQuadWord* %vectors, i32 %i.05, i32 0, i32 2 ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btQuadWord* %vectors, i32 %i.05, i32 0, i32 1 ; [#uses=1]
+ %scevgep78 = getelementptr inbounds %struct.btQuadWord* %vectors, i32 %i.05, i32 0, i32 0 ; [#uses=1]
+ %scevgep910 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 0 ; [#uses=1]
+ %scevgep11 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 1 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 2 ; [#uses=1]
+ %scevgep13 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 3 ; [#uses=1]
+ %4 = load float* %1, align 4 ; [#uses=2]
+ %5 = fsub float -0.000000e+00, %4 ; [#uses=1]
+ %6 = load float* %scevgep, align 4 ; [#uses=1]
+ %7 = fcmp ult float %6, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i4 = select i1 %7, float %5, float %4 ; [#uses=1]
+ %8 = load float* %2, align 4 ; [#uses=2]
+ %9 = fsub float -0.000000e+00, %8 ; [#uses=1]
+ %10 = load float* %scevgep6, align 4 ; [#uses=1]
+ %11 = fcmp ult float %10, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i3 = select i1 %11, float %9, float %8 ; [#uses=1]
+ %12 = load float* %3, align 4 ; [#uses=2]
+ %13 = fsub float -0.000000e+00, %12 ; [#uses=1]
+ %14 = load float* %scevgep78, align 4 ; [#uses=1]
+ %15 = fcmp ult float %14, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i = select i1 %15, float %13, float %12 ; [#uses=1]
+ store float %iftmp.3.0.i, float* %scevgep910, align 4
+ store float %iftmp.3.0.i3, float* %scevgep11, align 4
+ store float %iftmp.3.0.i4, float* %scevgep12, align 4
+ store float 0.000000e+00, float* %scevgep13, align 4
+ %16 = add nsw i32 %i.05, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %16, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btBox2dShape9setMarginEf(%struct.btBox2dShape* %this, float %collisionMargin) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=6]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0 ; [#uses=6]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %7 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %11 = tail call float %10(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %12 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 11 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = bitcast i32 (...)* %14 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %16 = tail call float %15(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fadd float %18, %6 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fadd float %21, %11 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fadd float %24, %16 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %collisionMargin, float* %26, align 4
+ %27 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds i32 (...)** %27, i32 11 ; [#uses=1]
+ %29 = load i32 (...)** %28, align 4 ; [#uses=1]
+ %30 = bitcast i32 (...)* %29 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %31 = tail call float %30(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %32 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32 (...)** %32, i32 11 ; [#uses=1]
+ %34 = load i32 (...)** %33, align 4 ; [#uses=1]
+ %35 = bitcast i32 (...)* %34 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %36 = tail call float %35(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %37 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32 (...)** %37, i32 11 ; [#uses=1]
+ %39 = load i32 (...)** %38, align 4 ; [#uses=1]
+ %40 = bitcast i32 (...)* %39 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %41 = tail call float %40(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %42 = fsub float %19, %31 ; [#uses=1]
+ %43 = fsub float %22, %36 ; [#uses=1]
+ %44 = fsub float %25, %41 ; [#uses=1]
+ store float %44, float* %23, align 4
+ store float %43, float* %20, align 4
+ store float %42, float* %17, align 4
+ %45 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %45, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK12btBox2dShape14getNumVerticesEv(%struct.btBox2dShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 4
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK12btBox2dShape8getPlaneER9btVector3S1_i(%struct.btBox2dShape* %this, %struct.btQuadWord* nocapture %planeNormal, %struct.btQuadWord* nocapture %planeSupport, i32 %i) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %plane = alloca %struct.btQuaternion, align 8 ; [#uses=4]
+ %memtmp = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %2 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds i32 (...)** %2, i32 28 ; [#uses=1]
+ %4 = load i32 (...)** %3, align 4 ; [#uses=1]
+ %5 = bitcast i32 (...)* %4 to void (%struct.btBox2dShape*, %struct.btQuaternion*, i32)* ; [#uses=1]
+ call void %5(%struct.btBox2dShape* %this, %struct.btQuaternion* %plane, i32 %i)
+ %6 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 8 ; [#uses=2]
+ %10 = load float* %7, align 4 ; [#uses=2]
+ %11 = load float* %6, align 8 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %9, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %10, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %11, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 4
+ %16 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds i32 (...)** %16, i32 15 ; [#uses=1]
+ %18 = load i32 (...)** %17, align 4 ; [#uses=1]
+ %19 = fsub float -0.000000e+00, %11 ; [#uses=1]
+ %20 = fsub float -0.000000e+00, %10 ; [#uses=1]
+ %21 = fsub float -0.000000e+00, %9 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %21, float* %22, align 8
+ %23 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %20, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %19, float* %24, align 8
+ %25 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = bitcast i32 (...)* %18 to void (%struct.btQuadWord*, %struct.btBox2dShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %26(%struct.btQuadWord* noalias sret %memtmp, %struct.btBox2dShape* %this, %struct.btQuadWord* %0)
+ %27 = getelementptr inbounds %struct.btQuadWord* %planeSupport, i32 0, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 8 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.btQuadWord* %planeSupport, i32 0, i32 0, i32 1 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btQuadWord* %planeSupport, i32 0, i32 0, i32 2 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 8 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.btQuadWord* %planeSupport, i32 0, i32 0, i32 3 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 3 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK12btBox2dShape12getNumPlanesEv(%struct.btBox2dShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 6
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK12btBox2dShape11getNumEdgesEv(%struct.btBox2dShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 12
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK12btBox2dShape9getVertexEiR9btVector3(%struct.btBox2dShape* nocapture %this, i32 %i, %struct.btQuadWord* nocapture %vtx) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=2]
+ %6 = lshr i32 %i, 2 ; [#uses=1]
+ %B.not = and i32 %6, 1 ; [#uses=2]
+ %7 = xor i32 %B.not, 1 ; [#uses=1]
+ %8 = sitofp i32 %7 to float ; [#uses=1]
+ %9 = fmul float %5, %8 ; [#uses=1]
+ %10 = sitofp i32 %B.not to float ; [#uses=1]
+ %11 = fmul float %5, %10 ; [#uses=1]
+ %12 = fsub float %9, %11 ; [#uses=1]
+ %13 = lshr i32 %i, 1 ; [#uses=1]
+ %B.not3 = and i32 %13, 1 ; [#uses=2]
+ %14 = xor i32 %B.not3, 1 ; [#uses=1]
+ %15 = sitofp i32 %14 to float ; [#uses=1]
+ %16 = fmul float %3, %15 ; [#uses=1]
+ %17 = sitofp i32 %B.not3 to float ; [#uses=1]
+ %18 = fmul float %3, %17 ; [#uses=1]
+ %19 = fsub float %16, %18 ; [#uses=1]
+ %20 = and i32 %i, 1 ; [#uses=2]
+ %21 = icmp eq i32 %20, 0 ; [#uses=1]
+ %iftmp.135.0 = select i1 %21, float 1.000000e+00, float 0.000000e+00 ; [#uses=1]
+ %22 = fmul float %1, %iftmp.135.0 ; [#uses=1]
+ %23 = sitofp i32 %20 to float ; [#uses=1]
+ %24 = fmul float %1, %23 ; [#uses=1]
+ %25 = fsub float %22, %24 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %25, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %19, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %12, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK12btBox2dShape16getPlaneEquationER9btVector4i(%struct.btBox2dShape* nocapture %this, %struct.btQuaternion* %plane, i32 %i) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=2]
+ switch i32 %i, label %return [
+ i32 0, label %bb
+ i32 1, label %bb1
+ i32 2, label %bb2
+ i32 3, label %bb3
+ i32 4, label %bb4
+ i32 5, label %bb5
+ ]
+
+bb: ; preds = %entry
+ %6 = fsub float -0.000000e+00, %1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %6, float* %10, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %11 = fsub float -0.000000e+00, %1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float -1.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %11, float* %15, align 4
+ ret void
+
+bb2: ; preds = %entry
+ %16 = fsub float -0.000000e+00, %3 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %16, float* %20, align 4
+ ret void
+
+bb3: ; preds = %entry
+ %21 = fsub float -0.000000e+00, %3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float -1.000000e+00, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %21, float* %25, align 4
+ ret void
+
+bb4: ; preds = %entry
+ %26 = fsub float -0.000000e+00, %5 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %26, float* %30, align 4
+ ret void
+
+bb5: ; preds = %entry
+ %31 = fsub float -0.000000e+00, %5 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float -1.000000e+00, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %31, float* %35, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK12btBox2dShape7getEdgeEiR9btVector3S1_(%struct.btBox2dShape* %this, i32 %i, %struct.btQuadWord* %pa, %struct.btQuadWord* %pb) align 2 {
+entry:
+ switch i32 %i, label %bb12 [
+ i32 0, label %bb
+ i32 1, label %bb1
+ i32 2, label %bb2
+ i32 3, label %bb3
+ i32 4, label %bb4
+ i32 5, label %bb5
+ i32 6, label %bb6
+ i32 7, label %bb7
+ i32 8, label %bb8
+ i32 9, label %bb9
+ i32 10, label %bb10
+ i32 11, label %bb11
+ ]
+
+bb: ; preds = %entry
+ br label %bb12
+
+bb1: ; preds = %entry
+ br label %bb12
+
+bb2: ; preds = %entry
+ br label %bb12
+
+bb3: ; preds = %entry
+ br label %bb12
+
+bb4: ; preds = %entry
+ br label %bb12
+
+bb5: ; preds = %entry
+ br label %bb12
+
+bb6: ; preds = %entry
+ br label %bb12
+
+bb7: ; preds = %entry
+ br label %bb12
+
+bb8: ; preds = %entry
+ br label %bb12
+
+bb9: ; preds = %entry
+ br label %bb12
+
+bb10: ; preds = %entry
+ br label %bb12
+
+bb11: ; preds = %entry
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb, %entry
+ %edgeVert0.0 = phi i32 [ 0, %entry ], [ 6, %bb11 ], [ 5, %bb10 ], [ 4, %bb9 ], [ 4, %bb8 ], [ 3, %bb7 ], [ 2, %bb6 ], [ 1, %bb5 ], [ 0, %bb4 ], [ 2, %bb3 ], [ 1, %bb2 ], [ 0, %bb1 ], [ 0, %bb ] ; [#uses=1]
+ %edgeVert1.0 = phi i32 [ 0, %entry ], [ 7, %bb11 ], [ 7, %bb10 ], [ 6, %bb9 ], [ 5, %bb8 ], [ 7, %bb7 ], [ 6, %bb6 ], [ 5, %bb5 ], [ 4, %bb4 ], [ 3, %bb3 ], [ 3, %bb2 ], [ 2, %bb1 ], [ 1, %bb ] ; [#uses=1]
+ %0 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 24 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btBox2dShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %4(%struct.btBox2dShape* %this, i32 %edgeVert0.0, %struct.btQuadWord* %pa)
+ %5 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 24 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct.btBox2dShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %8(%struct.btBox2dShape* %this, i32 %edgeVert1.0, %struct.btQuadWord* %pb)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK12btBox2dShape8isInsideERK9btVector3f(%struct.btBox2dShape* nocapture %this, %struct.btQuadWord* nocapture %pt, float %tolerance) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %pt, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = fadd float %1, %tolerance ; [#uses=1]
+ %9 = fcmp ugt float %7, %8 ; [#uses=1]
+ br i1 %9, label %bb6, label %bb
+
+bb: ; preds = %entry
+ %10 = fsub float -0.000000e+00, %1 ; [#uses=1]
+ %11 = fsub float %10, %tolerance ; [#uses=1]
+ %12 = fcmp ult float %7, %11 ; [#uses=1]
+ br i1 %12, label %bb6, label %bb1
+
+bb1: ; preds = %bb
+ %13 = getelementptr inbounds %struct.btQuadWord* %pt, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = fadd float %3, %tolerance ; [#uses=1]
+ %16 = fcmp ugt float %14, %15 ; [#uses=1]
+ br i1 %16, label %bb6, label %bb2
+
+bb2: ; preds = %bb1
+ %17 = fsub float -0.000000e+00, %3 ; [#uses=1]
+ %18 = fsub float %17, %tolerance ; [#uses=1]
+ %19 = fcmp ult float %14, %18 ; [#uses=1]
+ br i1 %19, label %bb6, label %bb3
+
+bb3: ; preds = %bb2
+ %20 = getelementptr inbounds %struct.btQuadWord* %pt, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=2]
+ %22 = fadd float %5, %tolerance ; [#uses=1]
+ %23 = fcmp ugt float %21, %22 ; [#uses=1]
+ br i1 %23, label %bb6, label %bb4
+
+bb4: ; preds = %bb3
+ %24 = fsub float -0.000000e+00, %5 ; [#uses=1]
+ %25 = fsub float %24, %tolerance ; [#uses=1]
+ %not. = fcmp oge float %21, %25 ; [#uses=1]
+ %retval = zext i1 %not. to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb6: ; preds = %bb3, %bb2, %bb1, %bb, %entry
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK12btBox2dShape7getNameEv(%struct.btBox2dShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([6 x i8]* @.str42, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK12btBox2dShape36getNumPreferredPenetrationDirectionsEv(%struct.btBox2dShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 6
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK12btBox2dShape32getPreferredPenetrationDirectionEiR9btVector3(%struct.btBox2dShape* nocapture %this, i32 %index, %struct.btQuadWord* %penetrationVector) nounwind align 2 {
+entry:
+ switch i32 %index, label %return [
+ i32 0, label %bb
+ i32 1, label %bb1
+ i32 2, label %bb2
+ i32 3, label %bb3
+ i32 4, label %bb4
+ i32 5, label %bb5
+ ]
+
+bb: ; preds = %entry
+ %0 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float -1.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ ret void
+
+bb2: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ ret void
+
+bb3: ; preds = %entry
+ %12 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float -1.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 4
+ ret void
+
+bb4: ; preds = %entry
+ %16 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ ret void
+
+bb5: ; preds = %entry
+ %20 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float -1.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btQuadWord* %penetrationVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK12btBox2dShape21calculateLocalInertiaEfR9btVector3(%struct.btBox2dShape* %this, float %mass, %struct.btQuadWord* nocapture %inertia) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0 ; [#uses=3]
+ %11 = bitcast i32 (...)* %9 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %12 = tail call float %11(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %13 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 11 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %17 = tail call float %16(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %18 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i32 (...)** %18, i32 11 ; [#uses=1]
+ %20 = load i32 (...)** %19, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %20 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %22 = tail call float %21(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %23 = fadd float %1, %22 ; [#uses=1]
+ %24 = fadd float %3, %17 ; [#uses=1]
+ %25 = fadd float %5, %12 ; [#uses=1]
+ %26 = fmul float %23, 2.000000e+00 ; [#uses=2]
+ %27 = fmul float %24, 2.000000e+00 ; [#uses=2]
+ %28 = fmul float %25, 2.000000e+00 ; [#uses=2]
+ %29 = fdiv float %mass, 1.200000e+01 ; [#uses=3]
+ %30 = fmul float %26, %26 ; [#uses=2]
+ %31 = fmul float %27, %27 ; [#uses=2]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = fmul float %29, %32 ; [#uses=1]
+ %34 = fmul float %28, %28 ; [#uses=2]
+ %35 = fadd float %30, %34 ; [#uses=1]
+ %36 = fmul float %29, %35 ; [#uses=1]
+ %37 = fadd float %31, %34 ; [#uses=1]
+ %38 = fmul float %29, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %38, float* %39, align 4
+ %40 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %36, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %33, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %42, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btBox2dShape15setLocalScalingERK9btVector3(%struct.btBox2dShape* %this, %struct.btQuadWord* %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0 ; [#uses=4]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=2]
+ %7 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %11 = tail call float %10(%struct.btConvexInternalShape* %4) ; [#uses=2]
+ %12 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 11 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = bitcast i32 (...)* %14 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %16 = tail call float %15(%struct.btConvexInternalShape* %4) ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fadd float %18, %6 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fadd float %21, %11 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fadd float %24, %16 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fdiv float %19, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fdiv float %22, %30 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fdiv float %25, %33 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3(%struct.btConvexInternalShape* %4, %struct.btQuadWord* %scaling)
+ %35 = load float* %26, align 4 ; [#uses=1]
+ %36 = fmul float %28, %35 ; [#uses=1]
+ %37 = load float* %29, align 4 ; [#uses=1]
+ %38 = fmul float %31, %37 ; [#uses=1]
+ %39 = load float* %32, align 4 ; [#uses=1]
+ %40 = fmul float %34, %39 ; [#uses=1]
+ %41 = fsub float %36, %6 ; [#uses=1]
+ %42 = fsub float %38, %11 ; [#uses=1]
+ %43 = fsub float %40, %16 ; [#uses=1]
+ store float %43, float* %23, align 4
+ store float %42, float* %20, align 4
+ store float %41, float* %17, align 4
+ %44 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %44, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btBox2dShapeD0Ev(%struct.btBox2dShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btBox2dShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btBox2dShapeD1Ev(%struct.btBox2dShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBox2dShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN22btBvhTriangleMeshShapeC2EP23btStridingMeshInterfacebb(%struct.btBvhTriangleMeshShape* %this, %struct.btStridingMeshInterface* %meshInterface, i8 zeroext %useQuantizedAabbCompression, i8 zeroext %buildBvh) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN19btTriangleMeshShapeC2EP23btStridingMeshInterface(%struct.btTriangleMeshShape* %0, %struct.btStridingMeshInterface* %meshInterface)
+ %1 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([22 x i32 (...)*]* @_ZTV22btBvhTriangleMeshShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btOptimizedBvh* null, %struct.btOptimizedBvh** %2, align 4
+ %3 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btTriangleInfoMap* null, %struct.btTriangleInfoMap** %3, align 4
+ %4 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 %useQuantizedAabbCompression, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 0, i8* %5, align 1
+ %6 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 21, i32* %6, align 4
+ %toBool = icmp eq i8 %buildBvh, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ invoke void @_ZN22btBvhTriangleMeshShape17buildOptimizedBvhEv(%struct.btBvhTriangleMeshShape* %this)
+ to label %return unwind label %lpad
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %bb, %entry
+ ret void
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN19btTriangleMeshShapeD2Ev(%struct.btTriangleMeshShape* %0)
+ to label %invcont2 unwind label %lpad7
+
+lpad7: ; preds = %lpad
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr float @_ZNK14btConcaveShape9getMarginEv(%struct.btConcaveShape* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConcaveShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ ret float %1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN14btConcaveShape9setMarginEf(%struct.btConcaveShape* nocapture %this, float %collisionMargin) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConcaveShape* %this, i32 0, i32 1 ; [#uses=1]
+ store float %collisionMargin, float* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK19btTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias sret %agg.result, %struct.btTriangleMeshShape* %this, %struct.btQuadWord* %vec) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 16 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btQuadWord*, %struct.btTriangleMeshShape*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %4(%struct.btQuadWord* noalias sret %agg.result, %struct.btTriangleMeshShape* %this, %struct.btQuadWord* %vec)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK22btBvhTriangleMeshShape7getNameEv(%struct.btBvhTriangleMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([16 x i8]* @.str44, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK22btBvhTriangleMeshShape28calculateSerializeBufferSizeEv(%struct.btBvhTriangleMeshShape* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 60
+}
+
+; [#uses=1]
+define void @_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev(%struct..0MyNodeOverlapCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev(%struct..0MyNodeOverlapCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..0MyNodeOverlapCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii(%struct..0MyNodeOverlapCallback* nocapture %this, i32 %nodeSubPart, i32 %nodeTriangleIndex) align 2 {
+bb.nph:
+ %m_triangle = alloca [3 x %struct.btQuadWord], align 8 ; [#uses=5]
+ %vertexbase = alloca i8*, align 4 ; [#uses=2]
+ %numverts = alloca i32, align 4 ; [#uses=1]
+ %type = alloca i32, align 4 ; [#uses=2]
+ %stride = alloca i32, align 4 ; [#uses=2]
+ %indexbase = alloca i8*, align 4 ; [#uses=2]
+ %indexstride = alloca i32, align 4 ; [#uses=2]
+ %numfaces = alloca i32, align 4 ; [#uses=1]
+ %indicestype = alloca i32, align 4 ; [#uses=2]
+ %0 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 4 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btStridingMeshInterface*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* ; [#uses=1]
+ call void %6(%struct.btStridingMeshInterface* %1, i8** %vertexbase, i32* %numverts, i32* %type, i32* %stride, i8** %indexbase, i32* %indexstride, i32* %numfaces, i32* %indicestype, i32 %nodeSubPart)
+ %7 = load i8** %indexbase, align 4 ; [#uses=2]
+ %8 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=3]
+ %9 = load i32* %indexstride, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btStridingMeshInterface* %8, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btStridingMeshInterface* %8, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btStridingMeshInterface* %8, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %tmp26 = mul i32 %9, %nodeTriangleIndex ; [#uses=2]
+ %tmp27 = add i32 %tmp26, 4 ; [#uses=1]
+ %tmp31 = add i32 %tmp26, 8 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb10, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb10 ] ; [#uses=4]
+ %tmp36 = sub i32 2, %indvar ; [#uses=4]
+ %scevgep3738 = getelementptr [3 x %struct.btQuadWord]* %m_triangle, i32 0, i32 %tmp36, i32 0, i32 0 ; [#uses=1]
+ %scevgep39 = getelementptr [3 x %struct.btQuadWord]* %m_triangle, i32 0, i32 %tmp36, i32 0, i32 1 ; [#uses=1]
+ %scevgep40 = getelementptr [3 x %struct.btQuadWord]* %m_triangle, i32 0, i32 %tmp36, i32 0, i32 2 ; [#uses=1]
+ %scevgep41 = getelementptr [3 x %struct.btQuadWord]* %m_triangle, i32 0, i32 %tmp36, i32 0, i32 3 ; [#uses=1]
+ %13 = load i32* %indicestype, align 4 ; [#uses=1]
+ %14 = icmp eq i32 %13, 3 ; [#uses=1]
+ br i1 %14, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ %tmp = mul i32 %indvar, -2 ; [#uses=1]
+ %tmp28 = add i32 %tmp27, %tmp ; [#uses=1]
+ %scevgep = getelementptr i8* %7, i32 %tmp28 ; [#uses=1]
+ %scevgep29 = bitcast i8* %scevgep to i16* ; [#uses=1]
+ %15 = load i16* %scevgep29, align 2 ; [#uses=1]
+ %16 = zext i16 %15 to i32 ; [#uses=1]
+ br label %bb6
+
+bb5: ; preds = %bb3
+ %tmp30 = mul i32 %indvar, -4 ; [#uses=1]
+ %tmp32 = add i32 %tmp31, %tmp30 ; [#uses=1]
+ %scevgep33 = getelementptr i8* %7, i32 %tmp32 ; [#uses=1]
+ %scevgep3334 = bitcast i8* %scevgep33 to i32* ; [#uses=1]
+ %17 = load i32* %scevgep3334, align 4 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %iftmp.220.0 = phi i32 [ %16, %bb4 ], [ %17, %bb5 ] ; [#uses=1]
+ %18 = load i32* %type, align 4 ; [#uses=1]
+ %19 = icmp eq i32 %18, 0 ; [#uses=1]
+ %20 = load i8** %vertexbase, align 4 ; [#uses=5]
+ %21 = load i32* %stride, align 4 ; [#uses=1]
+ %22 = mul nsw i32 %21, %iftmp.220.0 ; [#uses=5]
+ %23 = getelementptr inbounds i8* %20, i32 %22 ; [#uses=2]
+ br i1 %19, label %bb7, label %bb8
+
+bb7: ; preds = %bb6
+ %24 = bitcast i8* %23 to float* ; [#uses=1]
+ %.sum15 = add i32 %22, 8 ; [#uses=1]
+ %25 = getelementptr inbounds i8* %20, i32 %.sum15 ; [#uses=1]
+ %26 = bitcast i8* %25 to float* ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = load float* %10, align 4 ; [#uses=1]
+ %29 = fmul float %27, %28 ; [#uses=1]
+ %.sum16 = add i32 %22, 4 ; [#uses=1]
+ %30 = getelementptr inbounds i8* %20, i32 %.sum16 ; [#uses=1]
+ %31 = bitcast i8* %30 to float* ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = load float* %11, align 4 ; [#uses=1]
+ %34 = fmul float %32, %33 ; [#uses=1]
+ %35 = load float* %24, align 4 ; [#uses=1]
+ %36 = load float* %12, align 4 ; [#uses=1]
+ %37 = fmul float %35, %36 ; [#uses=1]
+ br label %bb10
+
+bb8: ; preds = %bb6
+ %38 = bitcast i8* %23 to double* ; [#uses=1]
+ %.sum = add i32 %22, 16 ; [#uses=1]
+ %39 = getelementptr inbounds i8* %20, i32 %.sum ; [#uses=1]
+ %40 = bitcast i8* %39 to double* ; [#uses=1]
+ %41 = load double* %40, align 4 ; [#uses=1]
+ %42 = fptrunc double %41 to float ; [#uses=1]
+ %43 = load float* %10, align 4 ; [#uses=1]
+ %44 = fmul float %42, %43 ; [#uses=1]
+ %.sum14 = add i32 %22, 8 ; [#uses=1]
+ %45 = getelementptr inbounds i8* %20, i32 %.sum14 ; [#uses=1]
+ %46 = bitcast i8* %45 to double* ; [#uses=1]
+ %47 = load double* %46, align 4 ; [#uses=1]
+ %48 = fptrunc double %47 to float ; [#uses=1]
+ %49 = load float* %11, align 4 ; [#uses=1]
+ %50 = fmul float %48, %49 ; [#uses=1]
+ %51 = load double* %38, align 4 ; [#uses=1]
+ %52 = fptrunc double %51 to float ; [#uses=1]
+ %53 = load float* %12, align 4 ; [#uses=1]
+ %54 = fmul float %52, %53 ; [#uses=1]
+ br label %bb10
+
+bb10: ; preds = %bb8, %bb7
+ %storemerge46 = phi float [ %37, %bb7 ], [ %54, %bb8 ] ; [#uses=1]
+ %storemerge45 = phi float [ %34, %bb7 ], [ %50, %bb8 ] ; [#uses=1]
+ %storemerge = phi float [ %29, %bb7 ], [ %44, %bb8 ] ; [#uses=1]
+ store float %storemerge46, float* %scevgep3738, align 8
+ store float %storemerge45, float* %scevgep39, align 4
+ store float %storemerge, float* %scevgep40, align 8
+ store float 0.000000e+00, float* %scevgep41, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb12, label %bb3
+
+bb12: ; preds = %bb10
+ %55 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %56 = load %struct.btActionInterface** %55, align 4 ; [#uses=2]
+ %57 = getelementptr inbounds %struct.btActionInterface* %56, i32 0, i32 0 ; [#uses=1]
+ %58 = load i32 (...)*** %57, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds i32 (...)** %58, i32 2 ; [#uses=1]
+ %60 = load i32 (...)** %59, align 4 ; [#uses=1]
+ %61 = bitcast i32 (...)* %60 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ %62 = getelementptr inbounds [3 x %struct.btQuadWord]* %m_triangle, i32 0, i32 0 ; [#uses=1]
+ call void %61(%struct.btActionInterface* %56, %struct.btQuadWord* %62, i32 %nodeSubPart, i32 %nodeTriangleIndex)
+ %63 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=2]
+ %64 = getelementptr inbounds %struct.btStridingMeshInterface* %63, i32 0, i32 0 ; [#uses=1]
+ %65 = load i32 (...)*** %64, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds i32 (...)** %65, i32 6 ; [#uses=1]
+ %67 = load i32 (...)** %66, align 4 ; [#uses=1]
+ %68 = bitcast i32 (...)* %67 to void (%struct.btStridingMeshInterface*, i32)* ; [#uses=1]
+ call void %68(%struct.btStridingMeshInterface* %63, i32 %nodeSubPart)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD1Ev(%struct..0MyNodeOverlapCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD0Ev(%struct..0MyNodeOverlapCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..0MyNodeOverlapCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallback11processNodeEii(%struct..0MyNodeOverlapCallback* nocapture %this, i32 %nodeSubPart, i32 %nodeTriangleIndex) align 2 {
+bb.nph:
+ %m_triangle = alloca [3 x %struct.btQuadWord], align 8 ; [#uses=5]
+ %vertexbase = alloca i8*, align 4 ; [#uses=2]
+ %numverts = alloca i32, align 4 ; [#uses=1]
+ %type = alloca i32, align 4 ; [#uses=2]
+ %stride = alloca i32, align 4 ; [#uses=2]
+ %indexbase = alloca i8*, align 4 ; [#uses=2]
+ %indexstride = alloca i32, align 4 ; [#uses=2]
+ %numfaces = alloca i32, align 4 ; [#uses=1]
+ %indicestype = alloca i32, align 4 ; [#uses=2]
+ %0 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 4 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btStridingMeshInterface*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* ; [#uses=1]
+ call void %6(%struct.btStridingMeshInterface* %1, i8** %vertexbase, i32* %numverts, i32* %type, i32* %stride, i8** %indexbase, i32* %indexstride, i32* %numfaces, i32* %indicestype, i32 %nodeSubPart)
+ %7 = load i8** %indexbase, align 4 ; [#uses=2]
+ %8 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=3]
+ %9 = load i32* %indexstride, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btStridingMeshInterface* %8, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btStridingMeshInterface* %8, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btStridingMeshInterface* %8, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %tmp26 = mul i32 %9, %nodeTriangleIndex ; [#uses=2]
+ %tmp27 = add i32 %tmp26, 4 ; [#uses=1]
+ %tmp31 = add i32 %tmp26, 8 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb10, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb10 ] ; [#uses=4]
+ %tmp36 = sub i32 2, %indvar ; [#uses=4]
+ %scevgep3738 = getelementptr [3 x %struct.btQuadWord]* %m_triangle, i32 0, i32 %tmp36, i32 0, i32 0 ; [#uses=1]
+ %scevgep39 = getelementptr [3 x %struct.btQuadWord]* %m_triangle, i32 0, i32 %tmp36, i32 0, i32 1 ; [#uses=1]
+ %scevgep40 = getelementptr [3 x %struct.btQuadWord]* %m_triangle, i32 0, i32 %tmp36, i32 0, i32 2 ; [#uses=1]
+ %scevgep41 = getelementptr [3 x %struct.btQuadWord]* %m_triangle, i32 0, i32 %tmp36, i32 0, i32 3 ; [#uses=1]
+ %13 = load i32* %indicestype, align 4 ; [#uses=1]
+ %14 = icmp eq i32 %13, 3 ; [#uses=1]
+ br i1 %14, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ %tmp = mul i32 %indvar, -2 ; [#uses=1]
+ %tmp28 = add i32 %tmp27, %tmp ; [#uses=1]
+ %scevgep = getelementptr i8* %7, i32 %tmp28 ; [#uses=1]
+ %scevgep29 = bitcast i8* %scevgep to i16* ; [#uses=1]
+ %15 = load i16* %scevgep29, align 2 ; [#uses=1]
+ %16 = zext i16 %15 to i32 ; [#uses=1]
+ br label %bb6
+
+bb5: ; preds = %bb3
+ %tmp30 = mul i32 %indvar, -4 ; [#uses=1]
+ %tmp32 = add i32 %tmp31, %tmp30 ; [#uses=1]
+ %scevgep33 = getelementptr i8* %7, i32 %tmp32 ; [#uses=1]
+ %scevgep3334 = bitcast i8* %scevgep33 to i32* ; [#uses=1]
+ %17 = load i32* %scevgep3334, align 4 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %iftmp.234.0 = phi i32 [ %16, %bb4 ], [ %17, %bb5 ] ; [#uses=1]
+ %18 = load i32* %type, align 4 ; [#uses=1]
+ %19 = icmp eq i32 %18, 0 ; [#uses=1]
+ %20 = load i8** %vertexbase, align 4 ; [#uses=5]
+ %21 = load i32* %stride, align 4 ; [#uses=1]
+ %22 = mul nsw i32 %21, %iftmp.234.0 ; [#uses=5]
+ %23 = getelementptr inbounds i8* %20, i32 %22 ; [#uses=2]
+ br i1 %19, label %bb7, label %bb8
+
+bb7: ; preds = %bb6
+ %24 = bitcast i8* %23 to float* ; [#uses=1]
+ %.sum15 = add i32 %22, 8 ; [#uses=1]
+ %25 = getelementptr inbounds i8* %20, i32 %.sum15 ; [#uses=1]
+ %26 = bitcast i8* %25 to float* ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = load float* %10, align 4 ; [#uses=1]
+ %29 = fmul float %27, %28 ; [#uses=1]
+ %.sum16 = add i32 %22, 4 ; [#uses=1]
+ %30 = getelementptr inbounds i8* %20, i32 %.sum16 ; [#uses=1]
+ %31 = bitcast i8* %30 to float* ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = load float* %11, align 4 ; [#uses=1]
+ %34 = fmul float %32, %33 ; [#uses=1]
+ %35 = load float* %24, align 4 ; [#uses=1]
+ %36 = load float* %12, align 4 ; [#uses=1]
+ %37 = fmul float %35, %36 ; [#uses=1]
+ br label %bb10
+
+bb8: ; preds = %bb6
+ %38 = bitcast i8* %23 to double* ; [#uses=1]
+ %.sum = add i32 %22, 16 ; [#uses=1]
+ %39 = getelementptr inbounds i8* %20, i32 %.sum ; [#uses=1]
+ %40 = bitcast i8* %39 to double* ; [#uses=1]
+ %41 = load double* %40, align 4 ; [#uses=1]
+ %42 = fptrunc double %41 to float ; [#uses=1]
+ %43 = load float* %10, align 4 ; [#uses=1]
+ %44 = fmul float %42, %43 ; [#uses=1]
+ %.sum14 = add i32 %22, 8 ; [#uses=1]
+ %45 = getelementptr inbounds i8* %20, i32 %.sum14 ; [#uses=1]
+ %46 = bitcast i8* %45 to double* ; [#uses=1]
+ %47 = load double* %46, align 4 ; [#uses=1]
+ %48 = fptrunc double %47 to float ; [#uses=1]
+ %49 = load float* %11, align 4 ; [#uses=1]
+ %50 = fmul float %48, %49 ; [#uses=1]
+ %51 = load double* %38, align 4 ; [#uses=1]
+ %52 = fptrunc double %51 to float ; [#uses=1]
+ %53 = load float* %12, align 4 ; [#uses=1]
+ %54 = fmul float %52, %53 ; [#uses=1]
+ br label %bb10
+
+bb10: ; preds = %bb8, %bb7
+ %storemerge46 = phi float [ %37, %bb7 ], [ %54, %bb8 ] ; [#uses=1]
+ %storemerge45 = phi float [ %34, %bb7 ], [ %50, %bb8 ] ; [#uses=1]
+ %storemerge = phi float [ %29, %bb7 ], [ %44, %bb8 ] ; [#uses=1]
+ store float %storemerge46, float* %scevgep3738, align 8
+ store float %storemerge45, float* %scevgep39, align 4
+ store float %storemerge, float* %scevgep40, align 8
+ store float 0.000000e+00, float* %scevgep41, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb12, label %bb3
+
+bb12: ; preds = %bb10
+ %55 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %56 = load %struct.btActionInterface** %55, align 4 ; [#uses=2]
+ %57 = getelementptr inbounds %struct.btActionInterface* %56, i32 0, i32 0 ; [#uses=1]
+ %58 = load i32 (...)*** %57, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds i32 (...)** %58, i32 2 ; [#uses=1]
+ %60 = load i32 (...)** %59, align 4 ; [#uses=1]
+ %61 = bitcast i32 (...)* %60 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ %62 = getelementptr inbounds [3 x %struct.btQuadWord]* %m_triangle, i32 0, i32 0 ; [#uses=1]
+ call void %61(%struct.btActionInterface* %56, %struct.btQuadWord* %62, i32 %nodeSubPart, i32 %nodeTriangleIndex)
+ %63 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=2]
+ %64 = getelementptr inbounds %struct.btStridingMeshInterface* %63, i32 0, i32 0 ; [#uses=1]
+ %65 = load i32 (...)*** %64, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds i32 (...)** %65, i32 6 ; [#uses=1]
+ %67 = load i32 (...)** %66, align 4 ; [#uses=1]
+ %68 = bitcast i32 (...)* %67 to void (%struct.btStridingMeshInterface*, i32)* ; [#uses=1]
+ call void %68(%struct.btStridingMeshInterface* %63, i32 %nodeSubPart)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD1Ev(%struct..2MyNodeOverlapCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..2MyNodeOverlapCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD0Ev(%struct..2MyNodeOverlapCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..2MyNodeOverlapCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..2MyNodeOverlapCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallback11processNodeEii(%struct..2MyNodeOverlapCallback* %this, i32 %nodeSubPart, i32 %nodeTriangleIndex) align 2 {
+bb.nph:
+ %vertexbase = alloca i8*, align 4 ; [#uses=2]
+ %numverts = alloca i32, align 4 ; [#uses=1]
+ %type = alloca i32, align 4 ; [#uses=2]
+ %stride = alloca i32, align 4 ; [#uses=2]
+ %indexbase = alloca i8*, align 4 ; [#uses=2]
+ %indexstride = alloca i32, align 4 ; [#uses=2]
+ %numfaces = alloca i32, align 4 ; [#uses=1]
+ %indicestype = alloca i32, align 4 ; [#uses=2]
+ %0 = getelementptr inbounds %struct..2MyNodeOverlapCallback* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 4 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btStridingMeshInterface*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* ; [#uses=1]
+ call void %6(%struct.btStridingMeshInterface* %1, i8** %vertexbase, i32* %numverts, i32* %type, i32* %stride, i8** %indexbase, i32* %indexstride, i32* %numfaces, i32* %indicestype, i32 %nodeSubPart)
+ %7 = load i8** %indexbase, align 4 ; [#uses=2]
+ %8 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=3]
+ %9 = load i32* %indexstride, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btStridingMeshInterface* %8, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btStridingMeshInterface* %8, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btStridingMeshInterface* %8, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %tmp22 = mul i32 %9, %nodeTriangleIndex ; [#uses=2]
+ %tmp23 = add i32 %tmp22, 4 ; [#uses=1]
+ %tmp27 = add i32 %tmp22, 8 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb7, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb7 ] ; [#uses=4]
+ %tmp32 = sub i32 2, %indvar ; [#uses=4]
+ %scevgep3334 = getelementptr %struct..2MyNodeOverlapCallback* %this, i32 0, i32 3, i32 %tmp32, i32 0, i32 0 ; [#uses=1]
+ %scevgep35 = getelementptr %struct..2MyNodeOverlapCallback* %this, i32 0, i32 3, i32 %tmp32, i32 0, i32 1 ; [#uses=1]
+ %scevgep36 = getelementptr %struct..2MyNodeOverlapCallback* %this, i32 0, i32 3, i32 %tmp32, i32 0, i32 2 ; [#uses=1]
+ %scevgep37 = getelementptr %struct..2MyNodeOverlapCallback* %this, i32 0, i32 3, i32 %tmp32, i32 0, i32 3 ; [#uses=1]
+ %13 = load i32* %indicestype, align 4 ; [#uses=1]
+ %14 = icmp eq i32 %13, 3 ; [#uses=1]
+ br i1 %14, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %tmp = mul i32 %indvar, -2 ; [#uses=1]
+ %tmp24 = add i32 %tmp23, %tmp ; [#uses=1]
+ %scevgep = getelementptr i8* %7, i32 %tmp24 ; [#uses=1]
+ %scevgep25 = bitcast i8* %scevgep to i16* ; [#uses=1]
+ %15 = load i16* %scevgep25, align 2 ; [#uses=1]
+ %16 = zext i16 %15 to i32 ; [#uses=1]
+ br label %bb3
+
+bb2: ; preds = %bb
+ %tmp26 = mul i32 %indvar, -4 ; [#uses=1]
+ %tmp28 = add i32 %tmp27, %tmp26 ; [#uses=1]
+ %scevgep29 = getelementptr i8* %7, i32 %tmp28 ; [#uses=1]
+ %scevgep2930 = bitcast i8* %scevgep29 to i32* ; [#uses=1]
+ %17 = load i32* %scevgep2930, align 4 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1
+ %iftmp.248.0 = phi i32 [ %16, %bb1 ], [ %17, %bb2 ] ; [#uses=1]
+ %18 = load i32* %type, align 4 ; [#uses=1]
+ %19 = icmp eq i32 %18, 0 ; [#uses=1]
+ %20 = load i8** %vertexbase, align 4 ; [#uses=5]
+ %21 = load i32* %stride, align 4 ; [#uses=1]
+ %22 = mul nsw i32 %21, %iftmp.248.0 ; [#uses=5]
+ %23 = getelementptr inbounds i8* %20, i32 %22 ; [#uses=2]
+ br i1 %19, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ %24 = bitcast i8* %23 to float* ; [#uses=1]
+ %.sum11 = add i32 %22, 8 ; [#uses=1]
+ %25 = getelementptr inbounds i8* %20, i32 %.sum11 ; [#uses=1]
+ %26 = bitcast i8* %25 to float* ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = load float* %10, align 4 ; [#uses=1]
+ %29 = fmul float %27, %28 ; [#uses=1]
+ %.sum12 = add i32 %22, 4 ; [#uses=1]
+ %30 = getelementptr inbounds i8* %20, i32 %.sum12 ; [#uses=1]
+ %31 = bitcast i8* %30 to float* ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = load float* %11, align 4 ; [#uses=1]
+ %34 = fmul float %32, %33 ; [#uses=1]
+ %35 = load float* %24, align 4 ; [#uses=1]
+ %36 = load float* %12, align 4 ; [#uses=1]
+ %37 = fmul float %35, %36 ; [#uses=1]
+ br label %bb7
+
+bb5: ; preds = %bb3
+ %38 = bitcast i8* %23 to double* ; [#uses=1]
+ %.sum = add i32 %22, 16 ; [#uses=1]
+ %39 = getelementptr inbounds i8* %20, i32 %.sum ; [#uses=1]
+ %40 = bitcast i8* %39 to double* ; [#uses=1]
+ %41 = load double* %40, align 4 ; [#uses=1]
+ %42 = fptrunc double %41 to float ; [#uses=1]
+ %43 = load float* %10, align 4 ; [#uses=1]
+ %44 = fmul float %42, %43 ; [#uses=1]
+ %.sum10 = add i32 %22, 8 ; [#uses=1]
+ %45 = getelementptr inbounds i8* %20, i32 %.sum10 ; [#uses=1]
+ %46 = bitcast i8* %45 to double* ; [#uses=1]
+ %47 = load double* %46, align 4 ; [#uses=1]
+ %48 = fptrunc double %47 to float ; [#uses=1]
+ %49 = load float* %11, align 4 ; [#uses=1]
+ %50 = fmul float %48, %49 ; [#uses=1]
+ %51 = load double* %38, align 4 ; [#uses=1]
+ %52 = fptrunc double %51 to float ; [#uses=1]
+ %53 = load float* %12, align 4 ; [#uses=1]
+ %54 = fmul float %52, %53 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb5, %bb4
+ %storemerge39 = phi float [ %37, %bb4 ], [ %54, %bb5 ] ; [#uses=1]
+ %storemerge38 = phi float [ %34, %bb4 ], [ %50, %bb5 ] ; [#uses=1]
+ %storemerge = phi float [ %29, %bb4 ], [ %44, %bb5 ] ; [#uses=1]
+ store float %storemerge39, float* %scevgep3334, align 4
+ store float %storemerge38, float* %scevgep35, align 4
+ store float %storemerge, float* %scevgep36, align 4
+ store float 0.000000e+00, float* %scevgep37, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb9, label %bb
+
+bb9: ; preds = %bb7
+ %55 = getelementptr inbounds %struct..2MyNodeOverlapCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %56 = load %struct.btActionInterface** %55, align 4 ; [#uses=2]
+ %57 = getelementptr inbounds %struct.btActionInterface* %56, i32 0, i32 0 ; [#uses=1]
+ %58 = load i32 (...)*** %57, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds i32 (...)** %58, i32 2 ; [#uses=1]
+ %60 = load i32 (...)** %59, align 4 ; [#uses=1]
+ %61 = getelementptr inbounds %struct..2MyNodeOverlapCallback* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ %62 = bitcast i32 (...)* %60 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ call void %62(%struct.btActionInterface* %56, %struct.btQuadWord* %61, i32 %nodeSubPart, i32 %nodeTriangleIndex)
+ %63 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=2]
+ %64 = getelementptr inbounds %struct.btStridingMeshInterface* %63, i32 0, i32 0 ; [#uses=1]
+ %65 = load i32 (...)*** %64, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds i32 (...)** %65, i32 6 ; [#uses=1]
+ %67 = load i32 (...)** %66, align 4 ; [#uses=1]
+ %68 = bitcast i32 (...)* %67 to void (%struct.btStridingMeshInterface*, i32)* ; [#uses=1]
+ call void %68(%struct.btStridingMeshInterface* %63, i32 %nodeSubPart)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK22btBvhTriangleMeshShape18serializeSingleBvhEP12btSerializer(%struct.btBvhTriangleMeshShape* nocapture %this, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load %struct.btOptimizedBvh** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.btOptimizedBvh* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btOptimizedBvh* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32 (...)** %4, i32 3 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btOptimizedBvh* %1, i32 0, i32 0 ; [#uses=1]
+ %8 = bitcast i32 (...)* %6 to i32 (%struct.btQuantizedBvh*)* ; [#uses=1]
+ %9 = tail call i32 %8(%struct.btQuantizedBvh* %7) ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=2]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 4 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %15 = tail call %struct.btChunk* %14(%struct.btActionInterface* %serializer, i32 %9, i32 1) ; [#uses=2]
+ %16 = load %struct.btOptimizedBvh** %0, align 4 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btOptimizedBvh* %16, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = load i32 (...)*** %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i32 (...)** %18, i32 4 ; [#uses=1]
+ %20 = load i32 (...)** %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btChunk* %15, i32 0, i32 2 ; [#uses=1]
+ %22 = load i8** %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btOptimizedBvh* %16, i32 0, i32 0 ; [#uses=1]
+ %24 = bitcast i32 (...)* %20 to i8* (%struct.btQuantizedBvh*, i8*, %struct.btActionInterface*)* ; [#uses=1]
+ %25 = tail call i8* %24(%struct.btQuantizedBvh* %23, i8* %22, %struct.btActionInterface* %serializer) ; [#uses=1]
+ %26 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds i32 (...)** %26, i32 5 ; [#uses=1]
+ %28 = load i32 (...)** %27, align 4 ; [#uses=1]
+ %29 = load %struct.btOptimizedBvh** %0, align 4 ; [#uses=1]
+ %30 = bitcast i32 (...)* %28 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ %31 = bitcast %struct.btOptimizedBvh* %29 to i8* ; [#uses=1]
+ tail call void %30(%struct.btActionInterface* %serializer, %struct.btChunk* %15, i8* %25, i32 1213612625, i8* %31)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK22btBvhTriangleMeshShape30serializeSingleTriangleInfoMapEP12btSerializer(%struct.btBvhTriangleMeshShape* nocapture %this, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 2 ; [#uses=3]
+ %1 = load %struct.btTriangleInfoMap** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.btTriangleInfoMap* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btTriangleInfoMap* %1, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32 (...)** %4, i32 2 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = bitcast i32 (...)* %6 to i32 (%struct.btTriangleInfoMap*)* ; [#uses=1]
+ %8 = tail call i32 %7(%struct.btTriangleInfoMap* %1) ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=2]
+ %10 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i32 (...)** %10, i32 4 ; [#uses=1]
+ %12 = load i32 (...)** %11, align 4 ; [#uses=1]
+ %13 = bitcast i32 (...)* %12 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %14 = tail call %struct.btChunk* %13(%struct.btActionInterface* %serializer, i32 %8, i32 1) ; [#uses=2]
+ %15 = load %struct.btTriangleInfoMap** %0, align 4 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btTriangleInfoMap* %15, i32 0, i32 0 ; [#uses=1]
+ %17 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 3 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btChunk* %14, i32 0, i32 2 ; [#uses=1]
+ %21 = load i8** %20, align 4 ; [#uses=1]
+ %22 = bitcast i32 (...)* %19 to i8* (%struct.btTriangleInfoMap*, i8*, %struct.btActionInterface*)* ; [#uses=1]
+ %23 = tail call i8* %22(%struct.btTriangleInfoMap* %15, i8* %21, %struct.btActionInterface* %serializer) ; [#uses=1]
+ %24 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i32 (...)** %24, i32 5 ; [#uses=1]
+ %26 = load i32 (...)** %25, align 4 ; [#uses=1]
+ %27 = load %struct.btTriangleInfoMap** %0, align 4 ; [#uses=1]
+ %28 = bitcast i32 (...)* %26 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ %29 = bitcast %struct.btTriangleInfoMap* %27 to i8* ; [#uses=1]
+ tail call void %28(%struct.btActionInterface* %serializer, %struct.btChunk* %14, i8* %23, i32 1346456916, i8* %29)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD2Ev(%struct..2MyNodeOverlapCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..2MyNodeOverlapCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_EN21MyNodeOverlapCallbackD2Ev(%struct..0MyNodeOverlapCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_EN21MyNodeOverlapCallbackD2Ev(%struct..0MyNodeOverlapCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define i8* @_ZNK22btBvhTriangleMeshShape9serializeEPvP12btSerializer(%struct.btBvhTriangleMeshShape* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK16btCollisionShape9serializeEPvP12btSerializer(%struct.btCollisionShape* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %3 = load %struct.btStridingMeshInterface** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btStridingMeshInterface* %3, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 14 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i8* %dataBuffer, i32 12 ; [#uses=1]
+ %9 = bitcast i32 (...)* %7 to i8* (%struct.btStridingMeshInterface*, i8*, %struct.btActionInterface*)* ; [#uses=1]
+ %10 = tail call i8* %9(%struct.btStridingMeshInterface* %3, i8* %8, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %11 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i8* %dataBuffer, i32 52 ; [#uses=1]
+ %14 = bitcast i8* %13 to float* ; [#uses=1]
+ store float %12, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=6]
+ %16 = load %struct.btOptimizedBvh** %15, align 4 ; [#uses=1]
+ %17 = icmp eq %struct.btOptimizedBvh* %16, null ; [#uses=1]
+ br i1 %17, label %bb8, label %bb
+
+bb: ; preds = %entry
+ %18 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=5]
+ %19 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i32 (...)** %19, i32 13 ; [#uses=1]
+ %21 = load i32 (...)** %20, align 4 ; [#uses=1]
+ %22 = bitcast i32 (...)* %21 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %23 = tail call i32 %22(%struct.btActionInterface* %serializer) ; [#uses=1]
+ %24 = and i32 %23, 1 ; [#uses=1]
+ %toBool6 = icmp eq i32 %24, 0 ; [#uses=1]
+ br i1 %toBool6, label %bb11, label %bb8
+
+bb8: ; preds = %bb, %entry
+ %25 = getelementptr inbounds i8* %dataBuffer, i32 40 ; [#uses=1]
+ %26 = bitcast i8* %25 to %struct.btQuantizedBvhFloatData** ; [#uses=1]
+ store %struct.btQuantizedBvhFloatData* null, %struct.btQuantizedBvhFloatData** %26, align 4
+ %27 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %28 = bitcast i8* %27 to %struct.btQuantizedBvhDoubleData** ; [#uses=1]
+ store %struct.btQuantizedBvhDoubleData* null, %struct.btQuantizedBvhDoubleData** %28, align 4
+ br label %bb16
+
+bb11: ; preds = %bb
+ %29 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds i32 (...)** %29, i32 6 ; [#uses=1]
+ %31 = load i32 (...)** %30, align 4 ; [#uses=1]
+ %32 = load %struct.btOptimizedBvh** %15, align 4 ; [#uses=1]
+ %33 = bitcast i32 (...)* %31 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %34 = bitcast %struct.btOptimizedBvh* %32 to i8* ; [#uses=1]
+ %35 = tail call i8* %33(%struct.btActionInterface* %serializer, i8* %34) ; [#uses=2]
+ %36 = icmp eq i8* %35, null ; [#uses=1]
+ br i1 %36, label %bb13, label %bb12
+
+bb12: ; preds = %bb11
+ %37 = bitcast i8* %35 to %struct.btQuantizedBvhFloatData* ; [#uses=1]
+ %38 = getelementptr inbounds i8* %dataBuffer, i32 40 ; [#uses=1]
+ %39 = bitcast i8* %38 to %struct.btQuantizedBvhFloatData** ; [#uses=1]
+ store %struct.btQuantizedBvhFloatData* %37, %struct.btQuantizedBvhFloatData** %39, align 4
+ %40 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %41 = bitcast i8* %40 to %struct.btQuantizedBvhDoubleData** ; [#uses=1]
+ store %struct.btQuantizedBvhDoubleData* null, %struct.btQuantizedBvhDoubleData** %41, align 4
+ br label %bb16
+
+bb13: ; preds = %bb11
+ %42 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds i32 (...)** %42, i32 7 ; [#uses=1]
+ %44 = load i32 (...)** %43, align 4 ; [#uses=1]
+ %45 = load %struct.btOptimizedBvh** %15, align 4 ; [#uses=1]
+ %46 = bitcast i32 (...)* %44 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %47 = bitcast %struct.btOptimizedBvh* %45 to i8* ; [#uses=1]
+ %48 = tail call i8* %46(%struct.btActionInterface* %serializer, i8* %47) ; [#uses=1]
+ %49 = bitcast i8* %48 to %struct.btQuantizedBvhFloatData* ; [#uses=1]
+ %50 = getelementptr inbounds i8* %dataBuffer, i32 40 ; [#uses=1]
+ %51 = bitcast i8* %50 to %struct.btQuantizedBvhFloatData** ; [#uses=1]
+ store %struct.btQuantizedBvhFloatData* %49, %struct.btQuantizedBvhFloatData** %51, align 4
+ %52 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %53 = bitcast i8* %52 to %struct.btQuantizedBvhDoubleData** ; [#uses=1]
+ store %struct.btQuantizedBvhDoubleData* null, %struct.btQuantizedBvhDoubleData** %53, align 4
+ %54 = load %struct.btOptimizedBvh** %15, align 4 ; [#uses=2]
+ %55 = getelementptr inbounds %struct.btOptimizedBvh* %54, i32 0, i32 0, i32 0 ; [#uses=1]
+ %56 = load i32 (...)*** %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds i32 (...)** %56, i32 3 ; [#uses=1]
+ %58 = load i32 (...)** %57, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btOptimizedBvh* %54, i32 0, i32 0 ; [#uses=1]
+ %60 = bitcast i32 (...)* %58 to i32 (%struct.btQuantizedBvh*)* ; [#uses=1]
+ %61 = tail call i32 %60(%struct.btQuantizedBvh* %59) ; [#uses=1]
+ %62 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds i32 (...)** %62, i32 4 ; [#uses=1]
+ %64 = load i32 (...)** %63, align 4 ; [#uses=1]
+ %65 = bitcast i32 (...)* %64 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %66 = tail call %struct.btChunk* %65(%struct.btActionInterface* %serializer, i32 %61, i32 1) ; [#uses=2]
+ %67 = load %struct.btOptimizedBvh** %15, align 4 ; [#uses=2]
+ %68 = getelementptr inbounds %struct.btOptimizedBvh* %67, i32 0, i32 0, i32 0 ; [#uses=1]
+ %69 = load i32 (...)*** %68, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds i32 (...)** %69, i32 4 ; [#uses=1]
+ %71 = load i32 (...)** %70, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btChunk* %66, i32 0, i32 2 ; [#uses=1]
+ %73 = load i8** %72, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btOptimizedBvh* %67, i32 0, i32 0 ; [#uses=1]
+ %75 = bitcast i32 (...)* %71 to i8* (%struct.btQuantizedBvh*, i8*, %struct.btActionInterface*)* ; [#uses=1]
+ %76 = tail call i8* %75(%struct.btQuantizedBvh* %74, i8* %73, %struct.btActionInterface* %serializer) ; [#uses=1]
+ %77 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %78 = getelementptr inbounds i32 (...)** %77, i32 5 ; [#uses=1]
+ %79 = load i32 (...)** %78, align 4 ; [#uses=1]
+ %80 = load %struct.btOptimizedBvh** %15, align 4 ; [#uses=1]
+ %81 = bitcast i32 (...)* %79 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ %82 = bitcast %struct.btOptimizedBvh* %80 to i8* ; [#uses=1]
+ tail call void %81(%struct.btActionInterface* %serializer, %struct.btChunk* %66, i8* %76, i32 1213612625, i8* %82)
+ br label %bb16
+
+bb16: ; preds = %bb13, %bb12, %bb8
+ %83 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 2 ; [#uses=6]
+ %84 = load %struct.btTriangleInfoMap** %83, align 4 ; [#uses=1]
+ %85 = icmp eq %struct.btTriangleInfoMap* %84, null ; [#uses=1]
+ br i1 %85, label %bb19, label %bb17
+
+bb17: ; preds = %bb16
+ %86 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=5]
+ %87 = load i32 (...)*** %86, align 4 ; [#uses=1]
+ %88 = getelementptr inbounds i32 (...)** %87, i32 13 ; [#uses=1]
+ %89 = load i32 (...)** %88, align 4 ; [#uses=1]
+ %90 = bitcast i32 (...)* %89 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %91 = tail call i32 %90(%struct.btActionInterface* %serializer) ; [#uses=1]
+ %92 = and i32 %91, 2 ; [#uses=1]
+ %93 = icmp eq i32 %92, 0 ; [#uses=1]
+ br i1 %93, label %bb22, label %bb19
+
+bb19: ; preds = %bb17, %bb16
+ %94 = getelementptr inbounds i8* %dataBuffer, i32 48 ; [#uses=1]
+ %95 = bitcast i8* %94 to %struct.btTriangleInfoMapData** ; [#uses=1]
+ store %struct.btTriangleInfoMapData* null, %struct.btTriangleInfoMapData** %95, align 4
+ ret i8* getelementptr inbounds ([24 x i8]* @.str448, i32 0, i32 0)
+
+bb22: ; preds = %bb17
+ %96 = load i32 (...)*** %86, align 4 ; [#uses=1]
+ %97 = getelementptr inbounds i32 (...)** %96, i32 6 ; [#uses=1]
+ %98 = load i32 (...)** %97, align 4 ; [#uses=1]
+ %99 = load %struct.btTriangleInfoMap** %83, align 4 ; [#uses=1]
+ %100 = bitcast i32 (...)* %98 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %101 = bitcast %struct.btTriangleInfoMap* %99 to i8* ; [#uses=1]
+ %102 = tail call i8* %100(%struct.btActionInterface* %serializer, i8* %101) ; [#uses=2]
+ %103 = icmp eq i8* %102, null ; [#uses=1]
+ br i1 %103, label %bb25, label %bb24
+
+bb24: ; preds = %bb22
+ %104 = bitcast i8* %102 to %struct.btTriangleInfoMapData* ; [#uses=1]
+ %105 = getelementptr inbounds i8* %dataBuffer, i32 48 ; [#uses=1]
+ %106 = bitcast i8* %105 to %struct.btTriangleInfoMapData** ; [#uses=1]
+ store %struct.btTriangleInfoMapData* %104, %struct.btTriangleInfoMapData** %106, align 4
+ ret i8* getelementptr inbounds ([24 x i8]* @.str448, i32 0, i32 0)
+
+bb25: ; preds = %bb22
+ %107 = load i32 (...)*** %86, align 4 ; [#uses=1]
+ %108 = getelementptr inbounds i32 (...)** %107, i32 7 ; [#uses=1]
+ %109 = load i32 (...)** %108, align 4 ; [#uses=1]
+ %110 = load %struct.btTriangleInfoMap** %83, align 4 ; [#uses=1]
+ %111 = bitcast i32 (...)* %109 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %112 = bitcast %struct.btTriangleInfoMap* %110 to i8* ; [#uses=1]
+ %113 = tail call i8* %111(%struct.btActionInterface* %serializer, i8* %112) ; [#uses=1]
+ %114 = bitcast i8* %113 to %struct.btTriangleInfoMapData* ; [#uses=1]
+ %115 = getelementptr inbounds i8* %dataBuffer, i32 48 ; [#uses=1]
+ %116 = bitcast i8* %115 to %struct.btTriangleInfoMapData** ; [#uses=1]
+ store %struct.btTriangleInfoMapData* %114, %struct.btTriangleInfoMapData** %116, align 4
+ %117 = load %struct.btTriangleInfoMap** %83, align 4 ; [#uses=2]
+ %118 = getelementptr inbounds %struct.btTriangleInfoMap* %117, i32 0, i32 0 ; [#uses=1]
+ %119 = load i32 (...)*** %118, align 4 ; [#uses=1]
+ %120 = getelementptr inbounds i32 (...)** %119, i32 2 ; [#uses=1]
+ %121 = load i32 (...)** %120, align 4 ; [#uses=1]
+ %122 = bitcast i32 (...)* %121 to i32 (%struct.btTriangleInfoMap*)* ; [#uses=1]
+ %123 = tail call i32 %122(%struct.btTriangleInfoMap* %117) ; [#uses=1]
+ %124 = load i32 (...)*** %86, align 4 ; [#uses=1]
+ %125 = getelementptr inbounds i32 (...)** %124, i32 4 ; [#uses=1]
+ %126 = load i32 (...)** %125, align 4 ; [#uses=1]
+ %127 = bitcast i32 (...)* %126 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %128 = tail call %struct.btChunk* %127(%struct.btActionInterface* %serializer, i32 %123, i32 1) ; [#uses=2]
+ %129 = load %struct.btTriangleInfoMap** %83, align 4 ; [#uses=2]
+ %130 = getelementptr inbounds %struct.btTriangleInfoMap* %129, i32 0, i32 0 ; [#uses=1]
+ %131 = load i32 (...)*** %130, align 4 ; [#uses=1]
+ %132 = getelementptr inbounds i32 (...)** %131, i32 3 ; [#uses=1]
+ %133 = load i32 (...)** %132, align 4 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btChunk* %128, i32 0, i32 2 ; [#uses=1]
+ %135 = load i8** %134, align 4 ; [#uses=1]
+ %136 = bitcast i32 (...)* %133 to i8* (%struct.btTriangleInfoMap*, i8*, %struct.btActionInterface*)* ; [#uses=1]
+ %137 = tail call i8* %136(%struct.btTriangleInfoMap* %129, i8* %135, %struct.btActionInterface* %serializer) ; [#uses=1]
+ %138 = load i32 (...)*** %86, align 4 ; [#uses=1]
+ %139 = getelementptr inbounds i32 (...)** %138, i32 5 ; [#uses=1]
+ %140 = load i32 (...)** %139, align 4 ; [#uses=1]
+ %141 = load %struct.btTriangleInfoMap** %83, align 4 ; [#uses=1]
+ %142 = bitcast i32 (...)* %140 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ %143 = bitcast %struct.btTriangleInfoMap* %141 to i8* ; [#uses=1]
+ tail call void %142(%struct.btActionInterface* %serializer, %struct.btChunk* %128, i8* %137, i32 1346456916, i8* %143)
+ ret i8* getelementptr inbounds ([24 x i8]* @.str448, i32 0, i32 0)
+}
+
+; [#uses=0]
+define void @_ZN22btBvhTriangleMeshShape15setOptimizedBvhEP14btOptimizedBvhRK9btVector3(%struct.btBvhTriangleMeshShape* %this, %struct.btOptimizedBvh* %bvh, %struct.btQuadWord* %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btOptimizedBvh* %bvh, %struct.btOptimizedBvh** %0, align 4
+ %1 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 0, i8* %1, align 1
+ %2 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 7 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=2]
+ %7 = bitcast i32 (...)* %5 to %struct.btQuadWord* (%struct.btTriangleMeshShape*)* ; [#uses=1]
+ %8 = tail call %struct.btQuadWord* %7(%struct.btTriangleMeshShape* %6) ; [#uses=3]
+ %9 = getelementptr inbounds %struct.btQuadWord* %8, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = fsub float %10, %12 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btQuadWord* %8, i32 0, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fsub float %15, %17 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btQuadWord* %8, i32 0, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fsub float %20, %22 ; [#uses=2]
+ %24 = fmul float %23, %23 ; [#uses=1]
+ %25 = fmul float %18, %18 ; [#uses=1]
+ %26 = fadd float %24, %25 ; [#uses=1]
+ %27 = fmul float %13, %13 ; [#uses=1]
+ %28 = fadd float %26, %27 ; [#uses=1]
+ %29 = fcmp ogt float %28, 0x3E80000000000000 ; [#uses=1]
+ br i1 %29, label %bb, label %return
+
+bb: ; preds = %entry
+ tail call void @_ZN19btTriangleMeshShape15setLocalScalingERK9btVector3(%struct.btTriangleMeshShape* %6, %struct.btQuadWord* %scaling)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN22btBvhTriangleMeshShape17buildOptimizedBvhEv(%struct.btBvhTriangleMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 4 ; [#uses=2]
+ %1 = load i8* %0, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=2]
+ %3 = load %struct.btOptimizedBvh** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btOptimizedBvh* %3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = bitcast i32 (...)* %6 to void (%struct.btOptimizedBvh*)* ; [#uses=1]
+ tail call void %7(%struct.btOptimizedBvh* %3)
+ %8 = load %struct.btOptimizedBvh** %2, align 4 ; [#uses=1]
+ %9 = bitcast %struct.btOptimizedBvh* %8 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %9)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 172, i32 16) ; [#uses=1]
+ %11 = bitcast i8* %10 to %struct.btOptimizedBvh* ; [#uses=3]
+ invoke void @_ZN14btOptimizedBvhC1Ev(%struct.btOptimizedBvh* %11)
+ to label %bb3 unwind label %lpad
+
+bb3: ; preds = %bb1
+ %12 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btOptimizedBvh* %11, %struct.btOptimizedBvh** %12, align 4
+ %13 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 3 ; [#uses=1]
+ %16 = load i8* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %18 = load %struct.btStridingMeshInterface** %17, align 4 ; [#uses=1]
+ tail call void @_ZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_(%struct.btOptimizedBvh* %11, %struct.btStridingMeshInterface* %18, i8 zeroext %16, %struct.btQuadWord* %14, %struct.btQuadWord* %13)
+ store i8 1, i8* %0, align 1
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select5 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN22btBvhTriangleMeshShape15setLocalScalingERK9btVector3(%struct.btBvhTriangleMeshShape* %this, %struct.btQuadWord* %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 7 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=2]
+ %5 = bitcast i32 (...)* %3 to %struct.btQuadWord* (%struct.btTriangleMeshShape*)* ; [#uses=1]
+ %6 = tail call %struct.btQuadWord* %5(%struct.btTriangleMeshShape* %4) ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fsub float %8, %10 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fsub float %13, %15 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fsub float %18, %20 ; [#uses=2]
+ %22 = fmul float %21, %21 ; [#uses=1]
+ %23 = fmul float %16, %16 ; [#uses=1]
+ %24 = fadd float %22, %23 ; [#uses=1]
+ %25 = fmul float %11, %11 ; [#uses=1]
+ %26 = fadd float %24, %25 ; [#uses=1]
+ %27 = fcmp ogt float %26, 0x3E80000000000000 ; [#uses=1]
+ br i1 %27, label %bb, label %return
+
+bb: ; preds = %entry
+ tail call void @_ZN19btTriangleMeshShape15setLocalScalingERK9btVector3(%struct.btTriangleMeshShape* %4, %struct.btQuadWord* %scaling)
+ tail call void @_ZN22btBvhTriangleMeshShape17buildOptimizedBvhEv(%struct.btBvhTriangleMeshShape* %this)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_(%struct.btBvhTriangleMeshShape* nocapture %this, %struct.btActionInterface* %callback, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %myNodeCallback = alloca %struct..2MyNodeOverlapCallback, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct..2MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %2, align 8
+ %3 = getelementptr inbounds %struct..2MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btStridingMeshInterface* %1, %struct.btStridingMeshInterface** %3, align 4
+ %4 = getelementptr inbounds %struct..2MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %callback, %struct.btActionInterface** %4, align 8
+ %5 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ %6 = load %struct.btOptimizedBvh** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btOptimizedBvh* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct..2MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZNK14btQuantizedBvh26reportAabbOverlappingNodexEP21btNodeOverlapCallbackRK9btVector3S4_(%struct.btQuantizedBvh* %7, %struct.btActionInterface* %8, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select3 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK22btBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %2, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_(%struct.btBvhTriangleMeshShape* nocapture %this, %struct.btActionInterface* %callback, %struct.btQuadWord* %raySource, %struct.btQuadWord* %rayTarget, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %myNodeCallback = alloca %struct..0MyNodeOverlapCallback, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %2, align 8
+ %3 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btStridingMeshInterface* %1, %struct.btStridingMeshInterface** %3, align 4
+ %4 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %callback, %struct.btActionInterface** %4, align 8
+ %5 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ %6 = load %struct.btOptimizedBvh** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btOptimizedBvh* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZNK14btQuantizedBvh29reportBoxCastOverlappingNodexEP21btNodeOverlapCallbackRK9btVector3S4_S4_S4_(%struct.btQuantizedBvh* %7, %struct.btActionInterface* %8, %struct.btQuadWord* %raySource, %struct.btQuadWord* %rayTarget, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select3 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN22btBvhTriangleMeshShape17performConvexcastEP18btTriangleCallbackRK9btVector3S4_S4_S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %2, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_(%struct.btBvhTriangleMeshShape* nocapture %this, %struct.btActionInterface* %callback, %struct.btQuadWord* %raySource, %struct.btQuadWord* %rayTarget) align 2 {
+entry:
+ %myNodeCallback = alloca %struct..0MyNodeOverlapCallback, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %2, align 8
+ %3 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btStridingMeshInterface* %1, %struct.btStridingMeshInterface** %3, align 4
+ %4 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %callback, %struct.btActionInterface** %4, align 8
+ %5 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ %6 = load %struct.btOptimizedBvh** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btOptimizedBvh* %6, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct..0MyNodeOverlapCallback* %myNodeCallback, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZNK14btQuantizedBvh25reportRayOverlappingNodexEP21btNodeOverlapCallbackRK9btVector3S4_(%struct.btQuantizedBvh* %7, %struct.btActionInterface* %8, %struct.btQuadWord* %raySource, %struct.btQuadWord* %rayTarget)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select3 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN22btBvhTriangleMeshShape14performRaycastEP18btTriangleCallbackRK9btVector3S4_E21MyNodeOverlapCallback, i32 0, i32 2), i32 (...)*** %2, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN22btBvhTriangleMeshShapeD0Ev(%struct.btBvhTriangleMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([22 x i32 (...)*]* @_ZTV22btBvhTriangleMeshShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 4 ; [#uses=1]
+ %2 = load i8* %1, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=2]
+ %4 = load %struct.btOptimizedBvh** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btOptimizedBvh* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct.btOptimizedBvh*)* ; [#uses=1]
+ invoke void %8(%struct.btOptimizedBvh* %4)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %9 = load %struct.btOptimizedBvh** %3, align 4 ; [#uses=1]
+ %10 = bitcast %struct.btOptimizedBvh* %9 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %10)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %invcont, %entry
+ %11 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN19btTriangleMeshShapeD2Ev(%struct.btTriangleMeshShape* %11)
+ %12 = bitcast %struct.btBvhTriangleMeshShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %12)
+ ret void
+
+lpad: ; preds = %invcont, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %13 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN19btTriangleMeshShapeD2Ev(%struct.btTriangleMeshShape* %13)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN22btBvhTriangleMeshShapeD1Ev(%struct.btBvhTriangleMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([22 x i32 (...)*]* @_ZTV22btBvhTriangleMeshShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 4 ; [#uses=1]
+ %2 = load i8* %1, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=2]
+ %4 = load %struct.btOptimizedBvh** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btOptimizedBvh* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct.btOptimizedBvh*)* ; [#uses=1]
+ invoke void %8(%struct.btOptimizedBvh* %4)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %9 = load %struct.btOptimizedBvh** %3, align 4 ; [#uses=1]
+ %10 = bitcast %struct.btOptimizedBvh* %9 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %10)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %invcont, %entry
+ %11 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN19btTriangleMeshShapeD2Ev(%struct.btTriangleMeshShape* %11)
+ ret void
+
+lpad: ; preds = %invcont, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %12 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN19btTriangleMeshShapeD2Ev(%struct.btTriangleMeshShape* %12)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN22btBvhTriangleMeshShapeD2Ev(%struct.btBvhTriangleMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([22 x i32 (...)*]* @_ZTV22btBvhTriangleMeshShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 4 ; [#uses=1]
+ %2 = load i8* %1, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=2]
+ %4 = load %struct.btOptimizedBvh** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btOptimizedBvh* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct.btOptimizedBvh*)* ; [#uses=1]
+ invoke void %8(%struct.btOptimizedBvh* %4)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %9 = load %struct.btOptimizedBvh** %3, align 4 ; [#uses=1]
+ %10 = bitcast %struct.btOptimizedBvh* %9 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %10)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %invcont, %entry
+ %11 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN19btTriangleMeshShapeD2Ev(%struct.btTriangleMeshShape* %11)
+ ret void
+
+lpad: ; preds = %invcont, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %12 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN19btTriangleMeshShapeD2Ev(%struct.btTriangleMeshShape* %12)
+ to label %invcont3 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN22btBvhTriangleMeshShape9refitTreeERK9btVector3S2_(%struct.btBvhTriangleMeshShape* %this, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load %struct.btOptimizedBvh** %2, align 4 ; [#uses=1]
+ tail call void @_ZN14btOptimizedBvh5refitEP23btStridingMeshInterfaceRK9btVector3S4_(%struct.btOptimizedBvh* %3, %struct.btStridingMeshInterface* %1, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ %4 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN19btTriangleMeshShape15recalcLocalAabbEv(%struct.btTriangleMeshShape* %4)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN22btBvhTriangleMeshShape16partialRefitTreeERK9btVector3S2_(%struct.btBvhTriangleMeshShape* nocapture %this, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load %struct.btOptimizedBvh** %2, align 4 ; [#uses=1]
+ tail call void @_ZN14btOptimizedBvh12refitPartialEP23btStridingMeshInterfaceRK9btVector3S4_(%struct.btOptimizedBvh* %3, %struct.btStridingMeshInterface* %1, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ %4 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %6 = load float* %4, align 4 ; [#uses=2]
+ %7 = load float* %5, align 4 ; [#uses=1]
+ %8 = fcmp olt float %6, %7 ; [#uses=1]
+ br i1 %8, label %bb.i.i, label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+bb.i.i: ; preds = %entry
+ store float %6, float* %5, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i, %entry
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %11 = load float* %9, align 4 ; [#uses=2]
+ %12 = load float* %10, align 4 ; [#uses=1]
+ %13 = fcmp olt float %11, %12 ; [#uses=1]
+ br i1 %13, label %bb.i7.i, label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+bb.i7.i: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ store float %11, float* %10, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i, %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ %14 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %16 = load float* %14, align 4 ; [#uses=2]
+ %17 = load float* %15, align 4 ; [#uses=1]
+ %18 = fcmp olt float %16, %17 ; [#uses=1]
+ br i1 %18, label %bb.i4.i, label %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+
+bb.i4.i: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ store float %16, float* %15, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit6.i: ; preds = %bb.i4.i, %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ %19 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %21 = load float* %19, align 4 ; [#uses=2]
+ %22 = load float* %20, align 4 ; [#uses=1]
+ %23 = fcmp olt float %21, %22 ; [#uses=1]
+ br i1 %23, label %bb.i1.i, label %_ZN9btVector36setMinERKS_.exit
+
+bb.i1.i: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+ store float %21, float* %20, align 4
+ br label %_ZN9btVector36setMinERKS_.exit
+
+_ZN9btVector36setMinERKS_.exit: ; preds = %bb.i1.i, %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+ %24 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = load float* %24, align 4 ; [#uses=2]
+ %28 = fcmp olt float %26, %27 ; [#uses=1]
+ br i1 %28, label %bb.i.i1, label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+bb.i.i1: ; preds = %_ZN9btVector36setMinERKS_.exit
+ store float %27, float* %25, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i1, %_ZN9btVector36setMinERKS_.exit
+ %29 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = load float* %29, align 4 ; [#uses=2]
+ %33 = fcmp olt float %31, %32 ; [#uses=1]
+ br i1 %33, label %bb.i7.i2, label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+bb.i7.i2: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ store float %32, float* %30, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i2, %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ %34 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = load float* %34, align 4 ; [#uses=2]
+ %38 = fcmp olt float %36, %37 ; [#uses=1]
+ br i1 %38, label %bb.i4.i3, label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+
+bb.i4.i3: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ store float %37, float* %35, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit6.i: ; preds = %bb.i4.i3, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ %39 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = load float* %39, align 4 ; [#uses=2]
+ %43 = fcmp olt float %41, %42 ; [#uses=1]
+ br i1 %43, label %bb.i1.i4, label %_ZN9btVector36setMaxERKS_.exit
+
+bb.i1.i4: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+ store float %42, float* %40, align 4
+ ret void
+
+_ZN9btVector36setMaxERKS_.exit: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN22btBvhTriangleMeshShapeC2EP23btStridingMeshInterfacebRK9btVector3S4_b(%struct.btBvhTriangleMeshShape* %this, %struct.btStridingMeshInterface* %meshInterface, i8 zeroext %useQuantizedAabbCompression, %struct.btQuadWord* %bvhAabbMin, %struct.btQuadWord* %bvhAabbMax, i8 zeroext %buildBvh) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN19btTriangleMeshShapeC2EP23btStridingMeshInterface(%struct.btTriangleMeshShape* %0, %struct.btStridingMeshInterface* %meshInterface)
+ %1 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([22 x i32 (...)*]* @_ZTV22btBvhTriangleMeshShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=2]
+ store %struct.btOptimizedBvh* null, %struct.btOptimizedBvh** %2, align 4
+ %3 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btTriangleInfoMap* null, %struct.btTriangleInfoMap** %3, align 4
+ %4 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 3 ; [#uses=2]
+ store i8 %useQuantizedAabbCompression, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 4 ; [#uses=2]
+ store i8 0, i8* %5, align 1
+ %6 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 21, i32* %6, align 4
+ %toBool = icmp eq i8 %buildBvh, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %7 = invoke i8* @_Z22btAlignedAllocInternalji(i32 172, i32 16)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb
+ %8 = bitcast i8* %7 to %struct.btOptimizedBvh* ; [#uses=3]
+ invoke void @_ZN14btOptimizedBvhC1Ev(%struct.btOptimizedBvh* %8)
+ to label %bb3 unwind label %lpad13
+
+bb3: ; preds = %invcont
+ store %struct.btOptimizedBvh* %8, %struct.btOptimizedBvh** %2, align 4
+ %9 = load i8* %4, align 4 ; [#uses=1]
+ invoke void @_ZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_(%struct.btOptimizedBvh* %8, %struct.btStridingMeshInterface* %meshInterface, i8 zeroext %9, %struct.btQuadWord* %bvhAabbMin, %struct.btQuadWord* %bvhAabbMax)
+ to label %invcont4 unwind label %lpad
+
+invcont4: ; preds = %bb3
+ store i8 1, i8* %5, align 1
+ ret void
+
+invcont8: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+return: ; preds = %entry
+ ret void
+
+lpad: ; preds = %bb3, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad13: ; preds = %invcont
+ %eh_ptr14 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select16 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr14, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad17: ; preds = %ppad
+ %eh_ptr18 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select20 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr18, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %lpad13, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr14, %lpad13 ] ; [#uses=1]
+ invoke void @_ZN19btTriangleMeshShapeD2Ev(%struct.btTriangleMeshShape* %0)
+ to label %invcont8 unwind label %lpad17
+}
+
+; [#uses=0]
+define void @_ZN22btBvhTriangleMeshShapeC1EP23btStridingMeshInterfacebRK9btVector3S4_b(%struct.btBvhTriangleMeshShape* %this, %struct.btStridingMeshInterface* %meshInterface, i8 zeroext %useQuantizedAabbCompression, %struct.btQuadWord* %bvhAabbMin, %struct.btQuadWord* %bvhAabbMax, i8 zeroext %buildBvh) align 2 {
+entry:
+ tail call void @_ZN22btBvhTriangleMeshShapeC2EP23btStridingMeshInterfacebRK9btVector3S4_b(%struct.btBvhTriangleMeshShape* %this, %struct.btStridingMeshInterface* %meshInterface, i8 zeroext %useQuantizedAabbCompression, %struct.btQuadWord* %bvhAabbMin, %struct.btQuadWord* %bvhAabbMax, i8 zeroext %buildBvh)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN22btBvhTriangleMeshShapeC1EP23btStridingMeshInterfacebb(%struct.btBvhTriangleMeshShape* %this, %struct.btStridingMeshInterface* %meshInterface, i8 zeroext %useQuantizedAabbCompression, i8 zeroext %buildBvh) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN19btTriangleMeshShapeC2EP23btStridingMeshInterface(%struct.btTriangleMeshShape* %0, %struct.btStridingMeshInterface* %meshInterface)
+ %1 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([22 x i32 (...)*]* @_ZTV22btBvhTriangleMeshShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btOptimizedBvh* null, %struct.btOptimizedBvh** %2, align 4
+ %3 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btTriangleInfoMap* null, %struct.btTriangleInfoMap** %3, align 4
+ %4 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 %useQuantizedAabbCompression, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 0, i8* %5, align 1
+ %6 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 21, i32* %6, align 4
+ %toBool = icmp eq i8 %buildBvh, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ invoke void @_ZN22btBvhTriangleMeshShape17buildOptimizedBvhEv(%struct.btBvhTriangleMeshShape* %this)
+ to label %return unwind label %lpad
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %bb, %entry
+ ret void
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN19btTriangleMeshShapeD2Ev(%struct.btTriangleMeshShape* %0)
+ to label %invcont2 unwind label %lpad7
+
+lpad7: ; preds = %lpad
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN14btCapsuleShapeC2Eff(%struct.btCapsuleShape* %this, float %radius, float %height) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV14btCapsuleShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 10, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %3, align 4
+ %4 = fmul float %height, 5.000000e-01 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %radius, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %4, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %radius, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK21btConvexInternalShape36getNumPreferredPenetrationDirectionsEv(%struct.btConvexInternalShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK21btConvexInternalShape32getPreferredPenetrationDirectionEiR9btVector3(%struct.btConvexInternalShape* nocapture %this, i32 %index, %struct.btQuadWord* nocapture %penetrationVector) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN14btCapsuleShape9setMarginEf(%struct.btCapsuleShape* %this, float %collisionMargin) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=6]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=6]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %7 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %11 = tail call float %10(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %12 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 11 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = bitcast i32 (...)* %14 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %16 = tail call float %15(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fadd float %18, %6 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fadd float %21, %11 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fadd float %24, %16 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %collisionMargin, float* %26, align 4
+ %27 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds i32 (...)** %27, i32 11 ; [#uses=1]
+ %29 = load i32 (...)** %28, align 4 ; [#uses=1]
+ %30 = bitcast i32 (...)* %29 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %31 = tail call float %30(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %32 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32 (...)** %32, i32 11 ; [#uses=1]
+ %34 = load i32 (...)** %33, align 4 ; [#uses=1]
+ %35 = bitcast i32 (...)* %34 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %36 = tail call float %35(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %37 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32 (...)** %37, i32 11 ; [#uses=1]
+ %39 = load i32 (...)** %38, align 4 ; [#uses=1]
+ %40 = bitcast i32 (...)* %39 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %41 = tail call float %40(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %42 = fsub float %19, %31 ; [#uses=1]
+ %43 = fsub float %22, %36 ; [#uses=1]
+ %44 = fsub float %25, %41 ; [#uses=1]
+ store float %44, float* %23, align 4
+ store float %43, float* %20, align 4
+ store float %42, float* %17, align 4
+ %45 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %45, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK14btCapsuleShape7getNameEv(%struct.btCapsuleShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([13 x i8]* @.str51, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK14btCapsuleShape7getAabbERK11btTransformR9btVector3S4_(%struct.btCapsuleShape* %this, %struct.btTransform* nocapture %t, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %halfExtents = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=3]
+ %2 = add nsw i32 %1, 2 ; [#uses=1]
+ %3 = srem i32 %2, 3 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 %3 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=4]
+ %6 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %5, float* %6, align 8
+ %7 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %5, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %5, float* %8, align 8
+ %9 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 %1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fadd float %5, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 %1 ; [#uses=1]
+ store float %12, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32 (...)** %15, i32 11 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=3]
+ %19 = bitcast i32 (...)* %17 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %20 = call float %19(%struct.btConvexInternalShape* %18) ; [#uses=1]
+ %21 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds i32 (...)** %21, i32 11 ; [#uses=1]
+ %23 = load i32 (...)** %22, align 4 ; [#uses=1]
+ %24 = bitcast i32 (...)* %23 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %25 = call float %24(%struct.btConvexInternalShape* %18) ; [#uses=1]
+ %26 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds i32 (...)** %26, i32 11 ; [#uses=1]
+ %28 = load i32 (...)** %27, align 4 ; [#uses=1]
+ %29 = bitcast i32 (...)* %28 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %30 = call float %29(%struct.btConvexInternalShape* %18) ; [#uses=1]
+ %31 = load float* %6, align 8 ; [#uses=1]
+ %32 = fadd float %31, %30 ; [#uses=4]
+ store float %32, float* %6, align 8
+ %33 = load float* %7, align 4 ; [#uses=1]
+ %34 = fadd float %33, %25 ; [#uses=4]
+ store float %34, float* %7, align 4
+ %35 = load float* %8, align 8 ; [#uses=1]
+ %36 = fadd float %35, %20 ; [#uses=3]
+ %37 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = call float @fabsf(float %38) nounwind readnone ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = call float @fabsf(float %41) nounwind readnone ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = call float @fabsf(float %44) nounwind readnone ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = call float @fabsf(float %47) nounwind readnone ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = call float @fabsf(float %50) nounwind readnone ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ %54 = call float @fabsf(float %53) nounwind readnone ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = call float @fabsf(float %56) nounwind readnone ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = call float @fabsf(float %59) nounwind readnone ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ %63 = call float @fabsf(float %62) nounwind readnone ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=2]
+ %66 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=2]
+ %68 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=2]
+ %70 = fmul float %45, %32 ; [#uses=1]
+ %71 = fmul float %42, %34 ; [#uses=1]
+ %72 = fadd float %70, %71 ; [#uses=1]
+ %73 = fmul float %39, %36 ; [#uses=1]
+ %74 = fadd float %72, %73 ; [#uses=2]
+ %75 = fmul float %54, %32 ; [#uses=1]
+ %76 = fmul float %51, %34 ; [#uses=1]
+ %77 = fadd float %75, %76 ; [#uses=1]
+ %78 = fmul float %48, %36 ; [#uses=1]
+ %79 = fadd float %77, %78 ; [#uses=2]
+ %80 = fmul float %63, %32 ; [#uses=1]
+ %81 = fmul float %60, %34 ; [#uses=1]
+ %82 = fadd float %80, %81 ; [#uses=1]
+ %83 = fmul float %57, %36 ; [#uses=1]
+ %84 = fadd float %82, %83 ; [#uses=2]
+ %85 = fsub float %69, %74 ; [#uses=1]
+ %86 = fsub float %67, %79 ; [#uses=1]
+ %87 = fsub float %65, %84 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %87, float* %88, align 4
+ %89 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %86, float* %89, align 4
+ %90 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %85, float* %90, align 4
+ %91 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %91, align 4
+ %92 = fadd float %69, %74 ; [#uses=1]
+ %93 = fadd float %67, %79 ; [#uses=1]
+ %94 = fadd float %65, %84 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %94, float* %95, align 4
+ %96 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %93, float* %96, align 4
+ %97 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %92, float* %97, align 4
+ %98 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %98, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK15btCapsuleShapeX7getNameEv(%struct.btCapsuleShapeX* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([9 x i8]* @.str152, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK15btCapsuleShapeZ7getNameEv(%struct.btCapsuleShapeX* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([9 x i8]* @.str253, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK14btCapsuleShape28calculateSerializeBufferSizeEv(%struct.btCapsuleShape* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 60
+}
+
+; [#uses=1]
+define void @_ZNK14btCapsuleShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btCapsuleShape* %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) align 2 {
+entry:
+ %pos = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %pos4 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = add nsw i32 %1, 2 ; [#uses=1]
+ %3 = srem i32 %2, 3 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 %3 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=6]
+ %6 = icmp sgt i32 %numVectors, 0 ; [#uses=1]
+ br i1 %6, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 0 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 1 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 2 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btQuadWord* %pos4, i32 0, i32 0, i32 0 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btQuadWord* %pos4, i32 0, i32 0, i32 1 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btQuadWord* %pos4, i32 0, i32 0, i32 2 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btQuadWord* %pos4, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb7.bb_crit_edge, %bb.nph
+ %20 = phi i32 [ %1, %bb.nph ], [ %.pre, %bb7.bb_crit_edge ] ; [#uses=2]
+ %j.064 = phi i32 [ 0, %bb.nph ], [ %99, %bb7.bb_crit_edge ] ; [#uses=8]
+ %scevgep65 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %j.064, i32 0, i32 0 ; [#uses=2]
+ %scevgep66 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.064, i32 0, i32 1 ; [#uses=2]
+ %scevgep67 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.064, i32 0, i32 2 ; [#uses=2]
+ %scevgep68 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.064, i32 0, i32 3 ; [#uses=2]
+ %scevgep69 = getelementptr %struct.btQuadWord* %vectors, i32 %j.064, i32 0, i32 2 ; [#uses=2]
+ %scevgep70 = getelementptr %struct.btQuadWord* %vectors, i32 %j.064, i32 0, i32 1 ; [#uses=2]
+ %scevgep7172 = getelementptr inbounds %struct.btQuadWord* %vectors, i32 %j.064, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %7, align 8
+ store float 0.000000e+00, float* %8, align 4
+ store float 0.000000e+00, float* %9, align 8
+ store float 0.000000e+00, float* %10, align 4
+ %21 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 %20 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 %20 ; [#uses=1]
+ store float %22, float* %23, align 4
+ %24 = load i32 (...)*** %11, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i32 (...)** %24, i32 11 ; [#uses=1]
+ %26 = load i32 (...)** %25, align 4 ; [#uses=1]
+ %27 = bitcast i32 (...)* %26 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %28 = call float %27(%struct.btConvexInternalShape* %12) ; [#uses=3]
+ %29 = load float* %scevgep69, align 4 ; [#uses=3]
+ %30 = fmul float %29, %28 ; [#uses=1]
+ %31 = load float* %scevgep70, align 4 ; [#uses=3]
+ %32 = fmul float %31, %28 ; [#uses=1]
+ %33 = load float* %scevgep7172, align 4 ; [#uses=3]
+ %34 = fmul float %33, %28 ; [#uses=1]
+ %35 = load float* %13, align 4 ; [#uses=1]
+ %36 = fmul float %29, %35 ; [#uses=1]
+ %37 = load float* %14, align 4 ; [#uses=1]
+ %38 = fmul float %31, %37 ; [#uses=1]
+ %39 = load float* %15, align 4 ; [#uses=1]
+ %40 = fmul float %33, %39 ; [#uses=1]
+ %41 = fmul float %36, %5 ; [#uses=1]
+ %42 = fmul float %38, %5 ; [#uses=1]
+ %43 = fmul float %40, %5 ; [#uses=1]
+ %44 = load float* %9, align 8 ; [#uses=1]
+ %45 = fadd float %44, %41 ; [#uses=1]
+ %46 = load float* %8, align 4 ; [#uses=1]
+ %47 = fadd float %46, %42 ; [#uses=1]
+ %48 = load float* %7, align 8 ; [#uses=1]
+ %49 = fadd float %48, %43 ; [#uses=1]
+ %50 = fsub float %45, %30 ; [#uses=2]
+ %51 = fsub float %47, %32 ; [#uses=2]
+ %52 = fsub float %49, %34 ; [#uses=2]
+ %53 = fmul float %33, %52 ; [#uses=1]
+ %54 = fmul float %31, %51 ; [#uses=1]
+ %55 = fadd float %53, %54 ; [#uses=1]
+ %56 = fmul float %29, %50 ; [#uses=1]
+ %57 = fadd float %55, %56 ; [#uses=2]
+ %58 = fcmp ogt float %57, 0xC3ABC16D60000000 ; [#uses=1]
+ br i1 %58, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ store float %52, float* %scevgep65, align 4
+ store float %51, float* %scevgep66, align 4
+ store float %50, float* %scevgep67, align 4
+ store float 0.000000e+00, float* %scevgep68, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %maxDot.0 = phi float [ %57, %bb1 ], [ 0xC3ABC16D60000000, %bb ] ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 8
+ store float 0.000000e+00, float* %17, align 4
+ store float 0.000000e+00, float* %18, align 8
+ store float 0.000000e+00, float* %19, align 4
+ %59 = load i32* %0, align 4 ; [#uses=2]
+ %60 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 %59 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fsub float -0.000000e+00, %61 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btQuadWord* %pos4, i32 0, i32 0, i32 %59 ; [#uses=1]
+ store float %62, float* %63, align 4
+ %64 = load i32 (...)*** %11, align 4 ; [#uses=1]
+ %65 = getelementptr inbounds i32 (...)** %64, i32 11 ; [#uses=1]
+ %66 = load i32 (...)** %65, align 4 ; [#uses=1]
+ %67 = bitcast i32 (...)* %66 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %68 = call float %67(%struct.btConvexInternalShape* %12) ; [#uses=3]
+ %69 = load float* %scevgep69, align 4 ; [#uses=3]
+ %70 = fmul float %69, %68 ; [#uses=1]
+ %71 = load float* %scevgep70, align 4 ; [#uses=3]
+ %72 = fmul float %71, %68 ; [#uses=1]
+ %73 = load float* %scevgep7172, align 4 ; [#uses=3]
+ %74 = fmul float %73, %68 ; [#uses=1]
+ %75 = load float* %13, align 4 ; [#uses=1]
+ %76 = fmul float %69, %75 ; [#uses=1]
+ %77 = load float* %14, align 4 ; [#uses=1]
+ %78 = fmul float %71, %77 ; [#uses=1]
+ %79 = load float* %15, align 4 ; [#uses=1]
+ %80 = fmul float %73, %79 ; [#uses=1]
+ %81 = fmul float %76, %5 ; [#uses=1]
+ %82 = fmul float %78, %5 ; [#uses=1]
+ %83 = fmul float %80, %5 ; [#uses=1]
+ %84 = load float* %18, align 8 ; [#uses=1]
+ %85 = fadd float %84, %81 ; [#uses=1]
+ %86 = load float* %17, align 4 ; [#uses=1]
+ %87 = fadd float %86, %82 ; [#uses=1]
+ %88 = load float* %16, align 8 ; [#uses=1]
+ %89 = fadd float %88, %83 ; [#uses=1]
+ %90 = fsub float %85, %70 ; [#uses=2]
+ %91 = fsub float %87, %72 ; [#uses=2]
+ %92 = fsub float %89, %74 ; [#uses=2]
+ %93 = fmul float %73, %92 ; [#uses=1]
+ %94 = fmul float %71, %91 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %69, %90 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fcmp ogt float %97, %maxDot.0 ; [#uses=1]
+ br i1 %98, label %bb6, label %bb7
+
+bb6: ; preds = %bb2
+ store float %92, float* %scevgep65, align 4
+ store float %91, float* %scevgep66, align 4
+ store float %90, float* %scevgep67, align 4
+ store float 0.000000e+00, float* %scevgep68, align 4
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb2
+ %99 = add nsw i32 %j.064, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %99, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb7.bb_crit_edge
+
+bb7.bb_crit_edge: ; preds = %bb7
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %bb
+
+return: ; preds = %bb7, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK14btCapsuleShape21calculateLocalInertiaEfR9btVector3(%struct.btCapsuleShape* nocapture %this, float %mass, %struct.btQuadWord* nocapture %inertia) nounwind align 2 {
+entry:
+ %halfExtents = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=3]
+ %2 = add nsw i32 %1, 2 ; [#uses=1]
+ %3 = srem i32 %2, 3 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 %3 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %5, float* %6, align 8
+ %7 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %5, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %5, float* %8, align 8
+ %9 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 %1 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 %1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fadd float %11, %13 ; [#uses=1]
+ store float %14, float* %10, align 4
+ %15 = load float* %6, align 8 ; [#uses=1]
+ %16 = fadd float %15, 0x3FA47AE140000000 ; [#uses=1]
+ %17 = fmul float %16, 2.000000e+00 ; [#uses=2]
+ %18 = load float* %7, align 4 ; [#uses=1]
+ %19 = fadd float %18, 0x3FA47AE140000000 ; [#uses=1]
+ %20 = fmul float %19, 2.000000e+00 ; [#uses=2]
+ %21 = load float* %8, align 8 ; [#uses=1]
+ %22 = fadd float %21, 0x3FA47AE140000000 ; [#uses=1]
+ %23 = fmul float %22, 2.000000e+00 ; [#uses=2]
+ %24 = fmul float %17, %17 ; [#uses=2]
+ %25 = fmul float %20, %20 ; [#uses=2]
+ %26 = fmul float %23, %23 ; [#uses=2]
+ %27 = fmul float %mass, 0x3FB5555540000000 ; [#uses=3]
+ %28 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = fadd float %25, %26 ; [#uses=1]
+ %30 = fmul float %29, %27 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = fadd float %24, %26 ; [#uses=1]
+ %32 = fmul float %31, %27 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %32, float* %33, align 4
+ %34 = fadd float %24, %25 ; [#uses=1]
+ %35 = fmul float %34, %27 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %35, float* %36, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK14btCapsuleShape9serializeEPvP12btSerializer(%struct.btCapsuleShape* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK16btCollisionShape9serializeEPvP12btSerializer(%struct.btCollisionShape* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds i8* %dataBuffer, i32 28 ; [#uses=1]
+ %scevgep.i.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i = bitcast i8* %2 to float* ; [#uses=1]
+ %3 = load float* %scevgep.i.i, align 4 ; [#uses=1]
+ store float %3, float* %scevgep4.i.i, align 4
+ %scevgep.1.i.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i = getelementptr i8* %dataBuffer, i32 32 ; [#uses=1]
+ %4 = bitcast i8* %scevgep4.1.i.i to float* ; [#uses=1]
+ %5 = load float* %scevgep.1.i.i, align 4 ; [#uses=1]
+ store float %5, float* %4, align 4
+ %scevgep.2.i.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i = getelementptr i8* %dataBuffer, i32 36 ; [#uses=1]
+ %6 = bitcast i8* %scevgep4.2.i.i to float* ; [#uses=1]
+ %7 = load float* %scevgep.2.i.i, align 4 ; [#uses=1]
+ store float %7, float* %6, align 4
+ %scevgep.3.i.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i = getelementptr i8* %dataBuffer, i32 40 ; [#uses=1]
+ %8 = bitcast i8* %scevgep4.3.i.i to float* ; [#uses=1]
+ %9 = load float* %scevgep.3.i.i, align 4 ; [#uses=1]
+ store float %9, float* %8, align 4
+ %10 = getelementptr inbounds i8* %dataBuffer, i32 12 ; [#uses=1]
+ %scevgep.i2.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i3.i = bitcast i8* %10 to float* ; [#uses=1]
+ %11 = load float* %scevgep.i2.i, align 4 ; [#uses=1]
+ store float %11, float* %scevgep4.i3.i, align 4
+ %scevgep.1.i4.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i5.i = getelementptr i8* %dataBuffer, i32 16 ; [#uses=1]
+ %12 = bitcast i8* %scevgep4.1.i5.i to float* ; [#uses=1]
+ %13 = load float* %scevgep.1.i4.i, align 4 ; [#uses=1]
+ store float %13, float* %12, align 4
+ %scevgep.2.i6.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i7.i = getelementptr i8* %dataBuffer, i32 20 ; [#uses=1]
+ %14 = bitcast i8* %scevgep4.2.i7.i to float* ; [#uses=1]
+ %15 = load float* %scevgep.2.i6.i, align 4 ; [#uses=1]
+ store float %15, float* %14, align 4
+ %scevgep.3.i8.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i9.i = getelementptr i8* %dataBuffer, i32 24 ; [#uses=1]
+ %16 = bitcast i8* %scevgep4.3.i9.i to float* ; [#uses=1]
+ %17 = load float* %scevgep.3.i8.i, align 4 ; [#uses=1]
+ store float %17, float* %16, align 4
+ %18 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %21 = bitcast i8* %20 to float* ; [#uses=1]
+ store float %19, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 1 ; [#uses=1]
+ %23 = load i32* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds i8* %dataBuffer, i32 52 ; [#uses=1]
+ %25 = bitcast i8* %24 to i32* ; [#uses=1]
+ store i32 %23, i32* %25, align 4
+ ret i8* getelementptr inbounds ([19 x i8]* @.str454, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN14btCapsuleShape15setLocalScalingERK9btVector3(%struct.btCapsuleShape* %this, %struct.btQuadWord* %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=4]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=2]
+ %7 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %11 = tail call float %10(%struct.btConvexInternalShape* %4) ; [#uses=2]
+ %12 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 11 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = bitcast i32 (...)* %14 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %16 = tail call float %15(%struct.btConvexInternalShape* %4) ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fadd float %18, %6 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fadd float %21, %11 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fadd float %24, %16 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fdiv float %19, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fdiv float %22, %30 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fdiv float %25, %33 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3(%struct.btConvexInternalShape* %4, %struct.btQuadWord* %scaling)
+ %35 = load float* %26, align 4 ; [#uses=1]
+ %36 = fmul float %28, %35 ; [#uses=1]
+ %37 = load float* %29, align 4 ; [#uses=1]
+ %38 = fmul float %31, %37 ; [#uses=1]
+ %39 = load float* %32, align 4 ; [#uses=1]
+ %40 = fmul float %34, %39 ; [#uses=1]
+ %41 = fsub float %36, %6 ; [#uses=1]
+ %42 = fsub float %38, %11 ; [#uses=1]
+ %43 = fsub float %40, %16 ; [#uses=1]
+ store float %43, float* %23, align 4
+ store float %42, float* %20, align 4
+ store float %41, float* %17, align 4
+ %44 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %44, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN14btCapsuleShapeD0Ev(%struct.btCapsuleShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btCapsuleShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN14btCapsuleShapeD1Ev(%struct.btCapsuleShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK14btCapsuleShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btCapsuleShape* %this, %struct.btQuadWord* nocapture %vec0) align 2 {
+entry:
+ %pos = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %pos6 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=3]
+ %10 = fmul float %5, %5 ; [#uses=1]
+ %11 = fmul float %7, %7 ; [#uses=1]
+ %12 = fadd float %10, %11 ; [#uses=1]
+ %13 = fmul float %9, %9 ; [#uses=1]
+ %14 = fadd float %12, %13 ; [#uses=2]
+ %15 = fcmp olt float %14, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %15, label %bb2, label %bb1
+
+bb1: ; preds = %entry
+ %16 = call float @sqrtf(float %14) nounwind readonly ; [#uses=1]
+ %17 = fdiv float 1.000000e+00, %16 ; [#uses=3]
+ %18 = fmul float %5, %17 ; [#uses=1]
+ %19 = fmul float %7, %17 ; [#uses=1]
+ %20 = fmul float %9, %17 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb1, %entry
+ %vec.0.0.0 = phi float [ %18, %bb1 ], [ 1.000000e+00, %entry ] ; [#uses=6]
+ %vec.0.1.0 = phi float [ %19, %bb1 ], [ 0.000000e+00, %entry ] ; [#uses=6]
+ %vec.0.2.0 = phi float [ %20, %bb1 ], [ 0.000000e+00, %entry ] ; [#uses=6]
+ %21 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 1 ; [#uses=2]
+ %22 = load i32* %21, align 4 ; [#uses=3]
+ %23 = add nsw i32 %22, 2 ; [#uses=1]
+ %24 = srem i32 %23, 3 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 %24 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=6]
+ %27 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %27, align 8
+ %28 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %29, align 8
+ %30 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 %22 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 %22 ; [#uses=1]
+ store float %32, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %35 = load i32 (...)*** %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds i32 (...)** %35, i32 11 ; [#uses=1]
+ %37 = load i32 (...)** %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=2]
+ %39 = bitcast i32 (...)* %37 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %40 = call float %39(%struct.btConvexInternalShape* %38) ; [#uses=3]
+ %41 = fmul float %vec.0.2.0, %40 ; [#uses=1]
+ %42 = fmul float %vec.0.1.0, %40 ; [#uses=1]
+ %43 = fmul float %vec.0.0.0, %40 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fmul float %vec.0.2.0, %45 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = fmul float %vec.0.1.0, %48 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fmul float %vec.0.0.0, %51 ; [#uses=1]
+ %53 = fmul float %46, %26 ; [#uses=1]
+ %54 = fmul float %49, %26 ; [#uses=1]
+ %55 = fmul float %52, %26 ; [#uses=1]
+ %56 = load float* %29, align 8 ; [#uses=1]
+ %57 = fadd float %56, %53 ; [#uses=1]
+ %58 = load float* %28, align 4 ; [#uses=1]
+ %59 = fadd float %58, %54 ; [#uses=1]
+ %60 = load float* %27, align 8 ; [#uses=1]
+ %61 = fadd float %60, %55 ; [#uses=1]
+ %62 = fsub float %57, %41 ; [#uses=2]
+ %63 = fsub float %59, %42 ; [#uses=2]
+ %64 = fsub float %61, %43 ; [#uses=2]
+ %65 = fmul float %vec.0.0.0, %64 ; [#uses=1]
+ %66 = fmul float %vec.0.1.0, %63 ; [#uses=1]
+ %67 = fadd float %65, %66 ; [#uses=1]
+ %68 = fmul float %vec.0.2.0, %62 ; [#uses=1]
+ %69 = fadd float %67, %68 ; [#uses=2]
+ %70 = fcmp ogt float %69, 0xC3ABC16D60000000 ; [#uses=1]
+ br i1 %70, label %bb3, label %bb4
+
+bb3: ; preds = %bb2
+ store float %64, float* %0, align 4
+ store float %63, float* %1, align 4
+ store float %62, float* %2, align 4
+ store float 0.000000e+00, float* %3, align 4
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %maxDot.0 = phi float [ %69, %bb3 ], [ 0xC3ABC16D60000000, %bb2 ] ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btQuadWord* %pos6, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %71, align 8
+ %72 = getelementptr inbounds %struct.btQuadWord* %pos6, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %72, align 4
+ %73 = getelementptr inbounds %struct.btQuadWord* %pos6, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %73, align 8
+ %74 = getelementptr inbounds %struct.btQuadWord* %pos6, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %74, align 4
+ %75 = load i32* %21, align 4 ; [#uses=2]
+ %76 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 %75 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ %78 = fsub float -0.000000e+00, %77 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btQuadWord* %pos6, i32 0, i32 0, i32 %75 ; [#uses=1]
+ store float %78, float* %79, align 4
+ %80 = load i32 (...)*** %34, align 4 ; [#uses=1]
+ %81 = getelementptr inbounds i32 (...)** %80, i32 11 ; [#uses=1]
+ %82 = load i32 (...)** %81, align 4 ; [#uses=1]
+ %83 = bitcast i32 (...)* %82 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %84 = call float %83(%struct.btConvexInternalShape* %38) ; [#uses=3]
+ %85 = fmul float %vec.0.2.0, %84 ; [#uses=1]
+ %86 = fmul float %vec.0.1.0, %84 ; [#uses=1]
+ %87 = fmul float %vec.0.0.0, %84 ; [#uses=1]
+ %88 = load float* %44, align 4 ; [#uses=1]
+ %89 = fmul float %vec.0.2.0, %88 ; [#uses=1]
+ %90 = load float* %47, align 4 ; [#uses=1]
+ %91 = fmul float %vec.0.1.0, %90 ; [#uses=1]
+ %92 = load float* %50, align 4 ; [#uses=1]
+ %93 = fmul float %vec.0.0.0, %92 ; [#uses=1]
+ %94 = fmul float %89, %26 ; [#uses=1]
+ %95 = fmul float %91, %26 ; [#uses=1]
+ %96 = fmul float %93, %26 ; [#uses=1]
+ %97 = load float* %73, align 8 ; [#uses=1]
+ %98 = fadd float %97, %94 ; [#uses=1]
+ %99 = load float* %72, align 4 ; [#uses=1]
+ %100 = fadd float %99, %95 ; [#uses=1]
+ %101 = load float* %71, align 8 ; [#uses=1]
+ %102 = fadd float %101, %96 ; [#uses=1]
+ %103 = fsub float %98, %85 ; [#uses=2]
+ %104 = fsub float %100, %86 ; [#uses=2]
+ %105 = fsub float %102, %87 ; [#uses=2]
+ %106 = fmul float %vec.0.0.0, %105 ; [#uses=1]
+ %107 = fmul float %vec.0.1.0, %104 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fmul float %vec.0.2.0, %103 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = fcmp ogt float %110, %maxDot.0 ; [#uses=1]
+ br i1 %111, label %bb8, label %return
+
+bb8: ; preds = %bb4
+ store float %105, float* %0, align 4
+ store float %104, float* %1, align 4
+ store float %103, float* %2, align 4
+ store float 0.000000e+00, float* %3, align 4
+ ret void
+
+return: ; preds = %bb4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btCapsuleShapeZD0Ev(%struct.btCapsuleShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btCapsuleShapeX* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btCapsuleShapeZD1Ev(%struct.btCapsuleShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btCapsuleShapeXD0Ev(%struct.btCapsuleShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btCapsuleShapeX* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btCapsuleShapeXD1Ev(%struct.btCapsuleShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN15btCapsuleShapeZC1Eff(%struct.btCapsuleShapeX* %this, float %radius, float %height) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 10, i32* %2, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV15btCapsuleShapeZ, i32 0, i32 2), i32 (...)*** %1, align 4
+ %3 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 2, i32* %3, align 4
+ %4 = fmul float %height, 5.000000e-01 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %radius, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %radius, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %4, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN15btCapsuleShapeZC2Eff(%struct.btCapsuleShapeX* %this, float %radius, float %height) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 10, i32* %2, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV15btCapsuleShapeZ, i32 0, i32 2), i32 (...)*** %1, align 4
+ %3 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 2, i32* %3, align 4
+ %4 = fmul float %height, 5.000000e-01 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %radius, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %radius, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %4, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN15btCapsuleShapeXC1Eff(%struct.btCapsuleShapeX* %this, float %radius, float %height) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 10, i32* %2, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV15btCapsuleShapeX, i32 0, i32 2), i32 (...)*** %1, align 4
+ %3 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = fmul float %height, 5.000000e-01 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %4, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %radius, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %radius, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN15btCapsuleShapeXC2Eff(%struct.btCapsuleShapeX* %this, float %radius, float %height) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 10, i32* %2, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV15btCapsuleShapeX, i32 0, i32 2), i32 (...)*** %1, align 4
+ %3 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = fmul float %height, 5.000000e-01 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %4, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %radius, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %radius, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN14btCapsuleShapeC1Eff(%struct.btCapsuleShape* %this, float %radius, float %height) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV14btCapsuleShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 10, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %3, align 4
+ %4 = fmul float %height, 5.000000e-01 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %radius, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %4, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %radius, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @btBulletCollisionProbe() nounwind readnone {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK16btCollisionShape28calculateSerializeBufferSizeEv(%struct.btCollisionShape* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 12
+}
+
+; [#uses=1]
+define float @_ZNK16btCollisionShape27getContactBreakingThresholdEf(%struct.btCollisionShape* %this, float %defaultContactThreshold) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionShape* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 4 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to float (%struct.btCollisionShape*)* ; [#uses=1]
+ %5 = tail call float %4(%struct.btCollisionShape* %this) ; [#uses=1]
+ %6 = fmul float %5, %defaultContactThreshold ; [#uses=1]
+ ret float %6
+}
+
+; [#uses=10]
+define i8* @_ZNK16btCollisionShape9serializeEPvP12btSerializer(%struct.btCollisionShape* %this, i8* nocapture %dataBuffer, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 10 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %5 = bitcast %struct.btCollisionShape* %this to i8* ; [#uses=1]
+ %6 = tail call i8* %4(%struct.btActionInterface* %serializer, i8* %5) ; [#uses=2]
+ %7 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 7 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %11 = tail call i8* %10(%struct.btActionInterface* %serializer, i8* %6) ; [#uses=2]
+ %12 = bitcast i8* %dataBuffer to i8** ; [#uses=1]
+ store i8* %11, i8** %12, align 4
+ %13 = icmp eq i8* %11, null ; [#uses=1]
+ br i1 %13, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %14 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds i32 (...)** %14, i32 12 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ tail call void %17(%struct.btActionInterface* %serializer, i8* %6)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %18 = getelementptr inbounds %struct.btCollisionShape* %this, i32 0, i32 1 ; [#uses=1]
+ %19 = load i32* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i8* %dataBuffer, i32 4 ; [#uses=1]
+ %21 = bitcast i8* %20 to i32* ; [#uses=1]
+ store i32 %19, i32* %21, align 4
+ ret i8* getelementptr inbounds ([21 x i8]* @.str55, i32 0, i32 0)
+}
+
+; [#uses=1]
+define void @_ZNK16btCollisionShape20serializeSingleShapeEP12btSerializer(%struct.btCollisionShape* %this, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionShape* %this, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 12 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to i32 (%struct.btCollisionShape*)* ; [#uses=1]
+ %5 = tail call i32 %4(%struct.btCollisionShape* %this) ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=2]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 4 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %11 = tail call %struct.btChunk* %10(%struct.btActionInterface* %serializer, i32 %5, i32 1) ; [#uses=2]
+ %12 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 13 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btChunk* %11, i32 0, i32 2 ; [#uses=1]
+ %16 = load i8** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %14 to i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* ; [#uses=1]
+ %18 = tail call i8* %17(%struct.btCollisionShape* %this, i8* %16, %struct.btActionInterface* %serializer) ; [#uses=1]
+ %19 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i32 (...)** %19, i32 5 ; [#uses=1]
+ %21 = load i32 (...)** %20, align 4 ; [#uses=1]
+ %22 = bitcast %struct.btCollisionShape* %this to i8* ; [#uses=1]
+ %23 = bitcast i32 (...)* %21 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ tail call void %23(%struct.btActionInterface* %serializer, %struct.btChunk* %11, i8* %18, i32 1346455635, i8* %22)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCollisionShapeD0Ev(%struct.btCollisionShape* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionShape* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([17 x i32 (...)*]* @_ZTV16btCollisionShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btCollisionShape* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCollisionShapeD1Ev(%struct.btCollisionShape* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionShape* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([17 x i32 (...)*]* @_ZTV16btCollisionShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK16btCollisionShape17getBoundingSphereER9btVector3Rf(%struct.btCollisionShape* %this, %struct.btQuadWord* nocapture %center, float* nocapture %radius) align 2 {
+entry:
+ %tr = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %aabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %aabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %0, align 8
+ %1 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 8
+ %3 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 8
+ %5 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 8
+ %7 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 8
+ %9 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %10, align 8
+ %11 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 8
+ %13 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 8
+ %15 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btCollisionShape* %this, i32 0, i32 0 ; [#uses=1]
+ %17 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 2 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = bitcast i32 (...)* %19 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %20(%struct.btCollisionShape* %this, %struct.btTransform* %tr, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 8 ; [#uses=2]
+ %23 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 8 ; [#uses=2]
+ %25 = fsub float %22, %24 ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=2]
+ %30 = fsub float %27, %29 ; [#uses=2]
+ %31 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 8 ; [#uses=2]
+ %33 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %33, align 8 ; [#uses=2]
+ %35 = fsub float %32, %34 ; [#uses=2]
+ %36 = fmul float %35, %35 ; [#uses=1]
+ %37 = fmul float %30, %30 ; [#uses=1]
+ %38 = fadd float %36, %37 ; [#uses=1]
+ %39 = fmul float %25, %25 ; [#uses=1]
+ %40 = fadd float %38, %39 ; [#uses=1]
+ %41 = call float @sqrtf(float %40) nounwind readonly ; [#uses=1]
+ %42 = fmul float %41, 5.000000e-01 ; [#uses=1]
+ store float %42, float* %radius, align 4
+ %43 = fadd float %24, %22 ; [#uses=1]
+ %44 = fadd float %29, %27 ; [#uses=1]
+ %45 = fadd float %34, %32 ; [#uses=1]
+ %46 = fmul float %43, 5.000000e-01 ; [#uses=1]
+ %47 = fmul float %44, 5.000000e-01 ; [#uses=1]
+ %48 = fmul float %45, 5.000000e-01 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btQuadWord* %center, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %48, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btQuadWord* %center, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %47, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btQuadWord* %center, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %46, float* %51, align 4
+ %52 = getelementptr inbounds %struct.btQuadWord* %center, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %52, align 4
+ ret void
+}
+
+; [#uses=1]
+define float @_ZNK16btCollisionShape20getAngularMotionDiscEv(%struct.btCollisionShape* %this) align 2 {
+entry:
+ %center = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %disc = alloca float, align 4 ; [#uses=2]
+ %0 = getelementptr inbounds %struct.btCollisionShape* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 3 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btCollisionShape*, %struct.btQuadWord*, float*)* ; [#uses=1]
+ call void %4(%struct.btCollisionShape* %this, %struct.btQuadWord* %center, float* %disc)
+ %5 = getelementptr inbounds %struct.btQuadWord* %center, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 8 ; [#uses=2]
+ %7 = fmul float %6, %6 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %center, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=2]
+ %10 = fmul float %9, %9 ; [#uses=1]
+ %11 = fadd float %7, %10 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %center, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 8 ; [#uses=2]
+ %14 = fmul float %13, %13 ; [#uses=1]
+ %15 = fadd float %11, %14 ; [#uses=1]
+ %16 = call float @sqrtf(float %15) nounwind readonly ; [#uses=1]
+ %17 = load float* %disc, align 4 ; [#uses=1]
+ %18 = fadd float %16, %17 ; [#uses=1]
+ ret float %18
+}
+
+; [#uses=2]
+define void @_ZNK16btCollisionShape21calculateTemporalAabbERK11btTransformRK9btVector3S5_fRS3_S6_(%struct.btCollisionShape* %this, %struct.btTransform* %curTrans, %struct.btQuadWord* nocapture %linvel, %struct.btQuadWord* nocapture %angvel, float %timeStep, %struct.btQuadWord* %temporalAabbMin, %struct.btQuadWord* %temporalAabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionShape* %this, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 2 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %4(%struct.btCollisionShape* %this, %struct.btTransform* %curTrans, %struct.btQuadWord* %temporalAabbMin, %struct.btQuadWord* %temporalAabbMax)
+ %5 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMax, i32 0, i32 0, i32 0 ; [#uses=4]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMax, i32 0, i32 0, i32 1 ; [#uses=4]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMax, i32 0, i32 0, i32 2 ; [#uses=4]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMin, i32 0, i32 0, i32 0 ; [#uses=4]
+ %12 = load float* %11, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMin, i32 0, i32 0, i32 1 ; [#uses=4]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMin, i32 0, i32 0, i32 2 ; [#uses=4]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btQuadWord* %linvel, i32 0, i32 0, i32 2 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fmul float %18, %timeStep ; [#uses=3]
+ %20 = getelementptr inbounds %struct.btQuadWord* %linvel, i32 0, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fmul float %21, %timeStep ; [#uses=3]
+ %23 = getelementptr inbounds %struct.btQuadWord* %linvel, i32 0, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fmul float %24, %timeStep ; [#uses=3]
+ %26 = fcmp ogt float %25, 0.000000e+00 ; [#uses=1]
+ br i1 %26, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %27 = fadd float %25, %6 ; [#uses=1]
+ br label %bb2
+
+bb1: ; preds = %entry
+ %28 = fadd float %25, %12 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %temporalAabbMinx.0 = phi float [ %12, %bb ], [ %28, %bb1 ] ; [#uses=1]
+ %temporalAabbMaxx.0 = phi float [ %27, %bb ], [ %6, %bb1 ] ; [#uses=1]
+ %29 = fcmp ogt float %22, 0.000000e+00 ; [#uses=1]
+ br i1 %29, label %bb4, label %bb5
+
+bb4: ; preds = %bb2
+ %30 = fadd float %22, %8 ; [#uses=1]
+ br label %bb6
+
+bb5: ; preds = %bb2
+ %31 = fadd float %22, %14 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %temporalAabbMiny.0 = phi float [ %14, %bb4 ], [ %31, %bb5 ] ; [#uses=1]
+ %temporalAabbMaxy.0 = phi float [ %30, %bb4 ], [ %8, %bb5 ] ; [#uses=1]
+ %32 = fcmp ogt float %19, 0.000000e+00 ; [#uses=1]
+ br i1 %32, label %bb8, label %bb9
+
+bb8: ; preds = %bb6
+ %33 = fadd float %19, %10 ; [#uses=1]
+ br label %bb10
+
+bb9: ; preds = %bb6
+ %34 = fadd float %19, %16 ; [#uses=1]
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb8
+ %temporalAabbMaxz.0 = phi float [ %33, %bb8 ], [ %10, %bb9 ] ; [#uses=1]
+ %temporalAabbMinz.0 = phi float [ %16, %bb8 ], [ %34, %bb9 ] ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %angvel, i32 0, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = fmul float %36, %36 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %angvel, i32 0, i32 0, i32 1 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=2]
+ %40 = fmul float %39, %39 ; [#uses=1]
+ %41 = fadd float %37, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %angvel, i32 0, i32 0, i32 2 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=2]
+ %44 = fmul float %43, %43 ; [#uses=1]
+ %45 = fadd float %41, %44 ; [#uses=1]
+ %46 = tail call float @sqrtf(float %45) nounwind readonly ; [#uses=1]
+ %47 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds i32 (...)** %47, i32 4 ; [#uses=1]
+ %49 = load i32 (...)** %48, align 4 ; [#uses=1]
+ %50 = bitcast i32 (...)* %49 to float (%struct.btCollisionShape*)* ; [#uses=1]
+ %51 = tail call float %50(%struct.btCollisionShape* %this) ; [#uses=1]
+ %52 = fmul float %46, %51 ; [#uses=1]
+ %53 = fmul float %52, %timeStep ; [#uses=6]
+ store float %temporalAabbMinx.0, float* %11, align 4
+ store float %temporalAabbMiny.0, float* %13, align 4
+ store float %temporalAabbMinz.0, float* %15, align 4
+ %54 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %54, align 4
+ store float %temporalAabbMaxx.0, float* %5, align 4
+ store float %temporalAabbMaxy.0, float* %7, align 4
+ store float %temporalAabbMaxz.0, float* %9, align 4
+ %55 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %55, align 4
+ %56 = load float* %11, align 4 ; [#uses=1]
+ %57 = fsub float %56, %53 ; [#uses=1]
+ store float %57, float* %11, align 4
+ %58 = load float* %13, align 4 ; [#uses=1]
+ %59 = fsub float %58, %53 ; [#uses=1]
+ store float %59, float* %13, align 4
+ %60 = load float* %15, align 4 ; [#uses=1]
+ %61 = fsub float %60, %53 ; [#uses=1]
+ store float %61, float* %15, align 4
+ %62 = load float* %5, align 4 ; [#uses=1]
+ %63 = fadd float %62, %53 ; [#uses=1]
+ store float %63, float* %5, align 4
+ %64 = load float* %7, align 4 ; [#uses=1]
+ %65 = fadd float %64, %53 ; [#uses=1]
+ store float %65, float* %7, align 4
+ %66 = load float* %9, align 4 ; [#uses=1]
+ %67 = fadd float %66, %53 ; [#uses=1]
+ store float %67, float* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN15btCompoundShapeC2Eb(%struct.btCompoundShape* nocapture %this, i8 zeroext %enableDynamicAabbTree) align 2 {
+invcont:
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i8* null, i8** %2, align 4
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV15btCompoundShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %3 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 4 ; [#uses=3]
+ store i8 1, i8* %3, align 4
+ %4 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=4]
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %4, align 4
+ %5 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ store i32 0, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 4 ; [#uses=2]
+ store %struct.btDbvt* null, %struct.btDbvt** %15, align 4
+ %16 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 1, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 6 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 7, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 7, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 7, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 7, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ store i32 31, i32* %1, align 4
+ %toBool = icmp eq i8 %enableDynamicAabbTree, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %invcont
+ %22 = invoke i8* @_Z22btAlignedAllocInternalji(i32 40, i32 16)
+ to label %invcont1 unwind label %lpad19 ; [#uses=2]
+
+invcont1: ; preds = %bb
+ %23 = bitcast i8* %22 to %struct.btDbvt* ; [#uses=2]
+ %24 = icmp eq i8* %22, null ; [#uses=1]
+ br i1 %24, label %bb7, label %bb2
+
+bb2: ; preds = %invcont1
+ invoke void @_ZN6btDbvtC1Ev(%struct.btDbvt* %23)
+ to label %bb7 unwind label %lpad23
+
+bb7: ; preds = %bb2, %invcont1
+ store %struct.btDbvt* %23, %struct.btDbvt** %15, align 4
+ ret void
+
+return: ; preds = %invcont
+ ret void
+
+lpad19: ; preds = %bb
+ %eh_ptr20 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select22 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr20, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad31
+
+lpad23: ; preds = %bb2
+ %eh_ptr24 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select26 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr24, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad31
+
+lpad27: ; preds = %bb1.i.i.i
+ %eh_ptr28 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select30 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr28, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i, %ppad31
+ store i8 1, i8* %3, align 4
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %4, align 4
+ store i32 0, i32* %5, align 4
+ store i32 0, i32* %6, align 4
+ store i32 (...)** getelementptr inbounds ([17 x i32 (...)*]* @_ZTV16btCollisionShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+ppad31: ; preds = %lpad23, %lpad19
+ %eh_exception.0 = phi i8* [ %eh_ptr24, %lpad23 ], [ %eh_ptr20, %lpad19 ] ; [#uses=1]
+ %25 = load %struct.btCompoundShapeChild** %4, align 4 ; [#uses=2]
+ %26 = icmp eq %struct.btCompoundShapeChild* %25, null ; [#uses=1]
+ br i1 %26, label %ppad, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %ppad31
+ %27 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %27, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %28 = bitcast %struct.btCompoundShapeChild* %25 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %28)
+ to label %bb2.i.i.i unwind label %lpad27
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %4, align 4
+ br label %ppad
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btQuadWord* @_ZNK15btCompoundShape15getLocalScalingEv(%struct.btCompoundShape* %this) nounwind readnone align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 7 ; [#uses=1]
+ ret %struct.btQuadWord* %0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btCompoundShape9setMarginEf(%struct.btCompoundShape* nocapture %this, float %margin) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 6 ; [#uses=1]
+ store float %margin, float* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr float @_ZNK15btCompoundShape9getMarginEv(%struct.btCompoundShape* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ ret float %1
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK15btCompoundShape7getNameEv(%struct.btCompoundShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([9 x i8]* @.str62, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK15btCompoundShape28calculateSerializeBufferSizeEv(%struct.btCompoundShape* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 24
+}
+
+; [#uses=1]
+define void @_ZNK15btCompoundShape21calculateLocalInertiaEfR9btVector3(%struct.btCompoundShape* %this, float %mass, %struct.btQuadWord* nocapture %inertia) align 2 {
+entry:
+ %ident = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %aabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %aabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %0, align 8
+ %1 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 8
+ %3 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 8
+ %5 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 8
+ %7 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 8
+ %9 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %10, align 8
+ %11 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 8
+ %13 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 8
+ %15 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 2 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = bitcast i32 (...)* %19 to void (%struct.btCompoundShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %20(%struct.btCompoundShape* %this, %struct.btTransform* %ident, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 8 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 8 ; [#uses=1]
+ %25 = fsub float %22, %24 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = fsub float %27, %29 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 8 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %33, align 8 ; [#uses=1]
+ %35 = fsub float %32, %34 ; [#uses=1]
+ %36 = fmul float %25, 5.000000e-01 ; [#uses=1]
+ %37 = fmul float %30, 5.000000e-01 ; [#uses=1]
+ %38 = fmul float %35, 5.000000e-01 ; [#uses=1]
+ %39 = fmul float %38, 2.000000e+00 ; [#uses=2]
+ %40 = fmul float %37, 2.000000e+00 ; [#uses=2]
+ %41 = fmul float %36, 2.000000e+00 ; [#uses=2]
+ %42 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ %43 = fdiv float %mass, 1.200000e+01 ; [#uses=3]
+ %44 = fmul float %40, %40 ; [#uses=2]
+ %45 = fmul float %41, %41 ; [#uses=2]
+ %46 = fadd float %44, %45 ; [#uses=1]
+ %47 = fmul float %43, %46 ; [#uses=1]
+ store float %47, float* %42, align 4
+ %48 = fmul float %39, %39 ; [#uses=2]
+ %49 = fadd float %48, %45 ; [#uses=1]
+ %50 = fmul float %43, %49 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %50, float* %51, align 4
+ %52 = fadd float %48, %44 ; [#uses=1]
+ %53 = fmul float %43, %52 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %53, float* %54, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK15btCompoundShape7getAabbERK11btTransformR9btVector3S4_(%struct.btCompoundShape* %this, %struct.btTransform* nocapture %trans, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fsub float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fsub float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fsub float %11, %13 ; [#uses=1]
+ %15 = fmul float %4, 5.000000e-01 ; [#uses=1]
+ %16 = fmul float %9, 5.000000e-01 ; [#uses=1]
+ %17 = fmul float %14, 5.000000e-01 ; [#uses=1]
+ %18 = fadd float %1, %3 ; [#uses=1]
+ %19 = fadd float %6, %8 ; [#uses=1]
+ %20 = fadd float %11, %13 ; [#uses=1]
+ %21 = fmul float %18, 5.000000e-01 ; [#uses=1]
+ %22 = fmul float %19, 5.000000e-01 ; [#uses=1]
+ %23 = fmul float %20, 5.000000e-01 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ %26 = icmp eq i32 %25, 0 ; [#uses=1]
+ br i1 %26, label %bb, label %bb1
+
+bb: ; preds = %entry
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %localHalfExtents.0.0.0 = phi float [ 0.000000e+00, %bb ], [ %17, %entry ] ; [#uses=1]
+ %localHalfExtents.0.1.0 = phi float [ 0.000000e+00, %bb ], [ %16, %entry ] ; [#uses=1]
+ %localHalfExtents.0.2.0 = phi float [ 0.000000e+00, %bb ], [ %15, %entry ] ; [#uses=1]
+ %localCenter.0.0.0 = phi float [ 0.000000e+00, %bb ], [ %23, %entry ] ; [#uses=3]
+ %localCenter.0.1.0 = phi float [ 0.000000e+00, %bb ], [ %22, %entry ] ; [#uses=3]
+ %localCenter.0.2.0 = phi float [ 0.000000e+00, %bb ], [ %21, %entry ] ; [#uses=3]
+ %27 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=3]
+ %28 = load i32 (...)*** %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds i32 (...)** %28, i32 11 ; [#uses=1]
+ %30 = load i32 (...)** %29, align 4 ; [#uses=1]
+ %31 = bitcast i32 (...)* %30 to float (%struct.btCompoundShape*)* ; [#uses=1]
+ %32 = tail call float %31(%struct.btCompoundShape* %this) ; [#uses=1]
+ %33 = load i32 (...)*** %27, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds i32 (...)** %33, i32 11 ; [#uses=1]
+ %35 = load i32 (...)** %34, align 4 ; [#uses=1]
+ %36 = bitcast i32 (...)* %35 to float (%struct.btCompoundShape*)* ; [#uses=1]
+ %37 = tail call float %36(%struct.btCompoundShape* %this) ; [#uses=1]
+ %38 = load i32 (...)*** %27, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds i32 (...)** %38, i32 11 ; [#uses=1]
+ %40 = load i32 (...)** %39, align 4 ; [#uses=1]
+ %41 = bitcast i32 (...)* %40 to float (%struct.btCompoundShape*)* ; [#uses=1]
+ %42 = tail call float %41(%struct.btCompoundShape* %this) ; [#uses=1]
+ %43 = fadd float %localHalfExtents.0.0.0, %42 ; [#uses=3]
+ %44 = fadd float %localHalfExtents.0.1.0, %37 ; [#uses=3]
+ %45 = fadd float %localHalfExtents.0.2.0, %32 ; [#uses=3]
+ %46 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=2]
+ %48 = tail call float @fabsf(float %47) nounwind readnone ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=2]
+ %51 = tail call float @fabsf(float %50) nounwind readnone ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=2]
+ %54 = tail call float @fabsf(float %53) nounwind readnone ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=2]
+ %57 = tail call float @fabsf(float %56) nounwind readnone ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=2]
+ %60 = tail call float @fabsf(float %59) nounwind readnone ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=2]
+ %63 = tail call float @fabsf(float %62) nounwind readnone ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=2]
+ %66 = tail call float @fabsf(float %65) nounwind readnone ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=2]
+ %69 = tail call float @fabsf(float %68) nounwind readnone ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=2]
+ %72 = tail call float @fabsf(float %71) nounwind readnone ; [#uses=1]
+ %73 = fmul float %53, %localCenter.0.0.0 ; [#uses=1]
+ %74 = fmul float %50, %localCenter.0.1.0 ; [#uses=1]
+ %75 = fadd float %73, %74 ; [#uses=1]
+ %76 = fmul float %47, %localCenter.0.2.0 ; [#uses=1]
+ %77 = fadd float %75, %76 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = fadd float %77, %79 ; [#uses=2]
+ %81 = fmul float %62, %localCenter.0.0.0 ; [#uses=1]
+ %82 = fmul float %59, %localCenter.0.1.0 ; [#uses=1]
+ %83 = fadd float %81, %82 ; [#uses=1]
+ %84 = fmul float %56, %localCenter.0.2.0 ; [#uses=1]
+ %85 = fadd float %83, %84 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ %88 = fadd float %85, %87 ; [#uses=2]
+ %89 = fmul float %71, %localCenter.0.0.0 ; [#uses=1]
+ %90 = fmul float %68, %localCenter.0.1.0 ; [#uses=1]
+ %91 = fadd float %89, %90 ; [#uses=1]
+ %92 = fmul float %65, %localCenter.0.2.0 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ %96 = fadd float %93, %95 ; [#uses=2]
+ %97 = fmul float %54, %43 ; [#uses=1]
+ %98 = fmul float %51, %44 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=1]
+ %100 = fmul float %48, %45 ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=2]
+ %102 = fmul float %63, %43 ; [#uses=1]
+ %103 = fmul float %60, %44 ; [#uses=1]
+ %104 = fadd float %102, %103 ; [#uses=1]
+ %105 = fmul float %57, %45 ; [#uses=1]
+ %106 = fadd float %104, %105 ; [#uses=2]
+ %107 = fmul float %72, %43 ; [#uses=1]
+ %108 = fmul float %69, %44 ; [#uses=1]
+ %109 = fadd float %107, %108 ; [#uses=1]
+ %110 = fmul float %66, %45 ; [#uses=1]
+ %111 = fadd float %109, %110 ; [#uses=2]
+ %112 = fsub float %80, %101 ; [#uses=1]
+ %113 = fsub float %88, %106 ; [#uses=1]
+ %114 = fsub float %96, %111 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %114, float* %115, align 4
+ %116 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %113, float* %116, align 4
+ %117 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %112, float* %117, align 4
+ %118 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %118, align 4
+ %119 = fadd float %80, %101 ; [#uses=1]
+ %120 = fadd float %88, %106 ; [#uses=1]
+ %121 = fadd float %96, %111 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %121, float* %122, align 4
+ %123 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %120, float* %123, align 4
+ %124 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %119, float* %124, align 4
+ %125 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %125, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN15btCompoundShape20recalculateLocalAabbEv(%struct.btCompoundShape* nocapture %this) align 2 {
+entry:
+ %localAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %localAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ store float 0x43ABC16D60000000, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ store float 0x43ABC16D60000000, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ store float 0x43ABC16D60000000, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=3]
+ store float 0xC3ABC16D60000000, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=3]
+ store float 0xC3ABC16D60000000, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=3]
+ store float 0xC3ABC16D60000000, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %10 = icmp sgt i32 %9, 0 ; [#uses=1]
+ br i1 %10, label %bb.nph22, label %return
+
+bb.nph22: ; preds = %entry
+ %11 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb.nph
+
+bb.nph: ; preds = %bb8, %bb.nph22
+ %j.021 = phi i32 [ 0, %bb.nph22 ], [ %tmp, %bb8 ] ; [#uses=3]
+ %tmp = add i32 %j.021, 1 ; [#uses=2]
+ %12 = load %struct.btCompoundShapeChild** %11, align 4 ; [#uses=2]
+ %scevgep26 = getelementptr %struct.btCompoundShapeChild* %12, i32 %j.021, i32 1 ; [#uses=1]
+ %13 = load %struct.btCollisionShape** %scevgep26, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btCollisionShape* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32 (...)** %15, i32 2 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = bitcast i32 (...)* %17 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %scevgep2728 = getelementptr inbounds %struct.btCompoundShapeChild* %12, i32 %j.021, i32 0 ; [#uses=1]
+ call void %18(%struct.btCollisionShape* %13, %struct.btTransform* %scevgep2728, %struct.btQuadWord* %localAabbMin, %struct.btQuadWord* %localAabbMax)
+ %scevgep23 = getelementptr %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep25 = getelementptr %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %0, align 4 ; [#uses=1]
+ %20 = load float* %scevgep23, align 8 ; [#uses=2]
+ %21 = fcmp ogt float %19, %20 ; [#uses=1]
+ br i1 %21, label %bb2, label %bb3
+
+bb2: ; preds = %bb.nph
+ store float %20, float* %0, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb.nph
+ %22 = load float* %4, align 4 ; [#uses=1]
+ %23 = load float* %scevgep25, align 8 ; [#uses=2]
+ %24 = fcmp olt float %22, %23 ; [#uses=1]
+ br i1 %24, label %bb5, label %bb6
+
+bb5: ; preds = %bb3
+ store float %23, float* %4, align 4
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb3
+ %scevgep23.1 = getelementptr %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep25.1 = getelementptr %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %1, align 4 ; [#uses=1]
+ %26 = load float* %scevgep23.1, align 4 ; [#uses=2]
+ %27 = fcmp ogt float %25, %26 ; [#uses=1]
+ br i1 %27, label %bb2.1, label %bb3.1
+
+bb8: ; preds = %bb5.2, %bb3.2
+ %28 = load i32* %8, align 4 ; [#uses=1]
+ %29 = icmp sgt i32 %28, %tmp ; [#uses=1]
+ br i1 %29, label %bb.nph, label %return
+
+return: ; preds = %bb8, %entry
+ ret void
+
+bb6.1: ; preds = %bb5.1, %bb3.1
+ %scevgep23.2 = getelementptr %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep25.2 = getelementptr %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %2, align 4 ; [#uses=1]
+ %31 = load float* %scevgep23.2, align 8 ; [#uses=2]
+ %32 = fcmp ogt float %30, %31 ; [#uses=1]
+ br i1 %32, label %bb2.2, label %bb3.2
+
+bb3.1: ; preds = %bb2.1, %bb6
+ %33 = load float* %5, align 4 ; [#uses=1]
+ %34 = load float* %scevgep25.1, align 4 ; [#uses=2]
+ %35 = fcmp olt float %33, %34 ; [#uses=1]
+ br i1 %35, label %bb5.1, label %bb6.1
+
+bb2.1: ; preds = %bb6
+ store float %26, float* %1, align 4
+ br label %bb3.1
+
+bb5.1: ; preds = %bb3.1
+ store float %34, float* %5, align 4
+ br label %bb6.1
+
+bb3.2: ; preds = %bb2.2, %bb6.1
+ %36 = load float* %6, align 4 ; [#uses=1]
+ %37 = load float* %scevgep25.2, align 8 ; [#uses=2]
+ %38 = fcmp olt float %36, %37 ; [#uses=1]
+ br i1 %38, label %bb5.2, label %bb8
+
+bb2.2: ; preds = %bb6.1
+ store float %31, float* %2, align 4
+ br label %bb3.2
+
+bb5.2: ; preds = %bb3.2
+ store float %37, float* %6, align 4
+ br label %bb8
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI20btCompoundShapeChildE4swapEii(%"struct.btAlignedObjectArray<btCompoundShapeChild>"* nocapture %this, i32 %index0, i32 %index1) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btCompoundShapeChild>"* %this, i32 0, i32 3 ; [#uses=2]
+ %1 = load %struct.btCompoundShapeChild** %0, align 4 ; [#uses=40]
+ %2 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 1 ; [#uses=2]
+ %35 = load %struct.btCollisionShape** %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 2 ; [#uses=2]
+ %37 = load i32* %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 3 ; [#uses=2]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index0, i32 4 ; [#uses=2]
+ %41 = load %struct.btDbvtNode** %40, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %2, align 4
+ %44 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %4, align 4
+ %46 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ store float %47, float* %6, align 4
+ %48 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %8, align 4
+ %50 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %10, align 4
+ %52 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ store float %53, float* %12, align 4
+ %54 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %14, align 4
+ %56 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ store float %57, float* %16, align 4
+ %58 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ store float %59, float* %18, align 4
+ %60 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %20, align 4
+ %62 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ store float %63, float* %22, align 4
+ %64 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ store float %65, float* %24, align 4
+ %66 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ store float %67, float* %26, align 4
+ %68 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ store float %69, float* %28, align 4
+ %70 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ store float %71, float* %30, align 4
+ %72 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %32, align 4
+ %74 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 1 ; [#uses=1]
+ %75 = load %struct.btCollisionShape** %74, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %75, %struct.btCollisionShape** %34, align 4
+ %76 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 2 ; [#uses=1]
+ %77 = load i32* %76, align 4 ; [#uses=1]
+ store i32 %77, i32* %36, align 4
+ %78 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 3 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ store float %79, float* %38, align 4
+ %80 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %index1, i32 4 ; [#uses=1]
+ %81 = load %struct.btDbvtNode** %80, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %81, %struct.btDbvtNode** %40, align 4
+ %82 = load %struct.btCompoundShapeChild** %0, align 4 ; [#uses=20]
+ %83 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %3, float* %83, align 4
+ %84 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %5, float* %84, align 4
+ %85 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %7, float* %85, align 4
+ %86 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %9, float* %86, align 4
+ %87 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %11, float* %87, align 4
+ %88 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %13, float* %88, align 4
+ %89 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %15, float* %89, align 4
+ %90 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %17, float* %90, align 4
+ %91 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %19, float* %91, align 4
+ %92 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %21, float* %92, align 4
+ %93 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %23, float* %93, align 4
+ %94 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %25, float* %94, align 4
+ %95 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %27, float* %95, align 4
+ %96 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %29, float* %96, align 4
+ %97 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %31, float* %97, align 4
+ %98 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %33, float* %98, align 4
+ %99 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 1 ; [#uses=1]
+ store %struct.btCollisionShape* %35, %struct.btCollisionShape** %99, align 4
+ %100 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 2 ; [#uses=1]
+ store i32 %37, i32* %100, align 4
+ %101 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 3 ; [#uses=1]
+ store float %39, float* %101, align 4
+ %102 = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %index1, i32 4 ; [#uses=1]
+ store %struct.btDbvtNode* %41, %struct.btDbvtNode** %102, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK20btAlignedObjectArrayI20btCompoundShapeChildE4copyEiiPS0_(%"struct.btAlignedObjectArray<btCompoundShapeChild>"* nocapture %this, i32 %start, i32 %end, %struct.btCompoundShapeChild* nocapture %dest) nounwind inlinehint align 2 {
+entry:
+ %0 = icmp slt i32 %start, %end ; [#uses=1]
+ br i1 %0, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %1 = getelementptr inbounds %"struct.btAlignedObjectArray<btCompoundShapeChild>"* %this, i32 0, i32 3 ; [#uses=1]
+ %tmp = sub i32 %end, %start ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb ] ; [#uses=2]
+ %tmp4 = add i32 %indvar, %start ; [#uses=40]
+ %scevgep5 = getelementptr inbounds %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep10 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep1415 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep18 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep20 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep22 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep2425 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep28 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep30 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep32 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep34 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep36 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep38 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep40 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep43 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 1 ; [#uses=1]
+ %scevgep45 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 2 ; [#uses=1]
+ %scevgep47 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 3 ; [#uses=1]
+ %scevgep49 = getelementptr %struct.btCompoundShapeChild* %dest, i32 %tmp4, i32 4 ; [#uses=1]
+ %2 = load %struct.btCompoundShapeChild** %1, align 4 ; [#uses=20]
+ %scevgep67 = getelementptr inbounds %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %scevgep67, align 4 ; [#uses=1]
+ store float %3, float* %scevgep5, align 4
+ %scevgep9 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load float* %scevgep9, align 4 ; [#uses=1]
+ store float %4, float* %scevgep8, align 4
+ %scevgep11 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %scevgep11, align 4 ; [#uses=1]
+ store float %5, float* %scevgep10, align 4
+ %scevgep13 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %6 = load float* %scevgep13, align 4 ; [#uses=1]
+ store float %6, float* %scevgep12, align 4
+ %scevgep1617 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %scevgep1617, align 4 ; [#uses=1]
+ store float %7, float* %scevgep1415, align 4
+ %scevgep19 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %scevgep19, align 4 ; [#uses=1]
+ store float %8, float* %scevgep18, align 4
+ %scevgep21 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %scevgep21, align 4 ; [#uses=1]
+ store float %9, float* %scevgep20, align 4
+ %scevgep23 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %10 = load float* %scevgep23, align 4 ; [#uses=1]
+ store float %10, float* %scevgep22, align 4
+ %scevgep2627 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %scevgep2627, align 4 ; [#uses=1]
+ store float %11, float* %scevgep2425, align 4
+ %scevgep29 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %scevgep29, align 4 ; [#uses=1]
+ store float %12, float* %scevgep28, align 4
+ %scevgep31 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %scevgep31, align 4 ; [#uses=1]
+ store float %13, float* %scevgep30, align 4
+ %scevgep33 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %14 = load float* %scevgep33, align 4 ; [#uses=1]
+ store float %14, float* %scevgep32, align 4
+ %scevgep35 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %scevgep35, align 4 ; [#uses=1]
+ store float %15, float* %scevgep34, align 4
+ %scevgep37 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %scevgep37, align 4 ; [#uses=1]
+ store float %16, float* %scevgep36, align 4
+ %scevgep39 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %scevgep39, align 4 ; [#uses=1]
+ store float %17, float* %scevgep38, align 4
+ %scevgep41 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %18 = load float* %scevgep41, align 4 ; [#uses=1]
+ store float %18, float* %scevgep40, align 4
+ %scevgep42 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 1 ; [#uses=1]
+ %19 = load %struct.btCollisionShape** %scevgep42, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %19, %struct.btCollisionShape** %scevgep43, align 4
+ %scevgep44 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 2 ; [#uses=1]
+ %20 = load i32* %scevgep44, align 4 ; [#uses=1]
+ store i32 %20, i32* %scevgep45, align 4
+ %scevgep46 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 3 ; [#uses=1]
+ %21 = load float* %scevgep46, align 4 ; [#uses=1]
+ store float %21, float* %scevgep47, align 4
+ %scevgep48 = getelementptr %struct.btCompoundShapeChild* %2, i32 %tmp4, i32 4 ; [#uses=1]
+ %22 = load %struct.btDbvtNode** %scevgep48, align 4 ; [#uses=1]
+ store %struct.btDbvtNode* %22, %struct.btDbvtNode** %scevgep49, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define i8* @_ZNK15btCompoundShape9serializeEPvP12btSerializer(%struct.btCompoundShape* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK16btCollisionShape9serializeEPvP12btSerializer(%struct.btCollisionShape* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 6 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i8* %dataBuffer, i32 20 ; [#uses=1]
+ %5 = bitcast i8* %4 to float* ; [#uses=1]
+ store float %3, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=3]
+ %8 = getelementptr inbounds i8* %dataBuffer, i32 16 ; [#uses=1]
+ %9 = bitcast i8* %8 to i32* ; [#uses=3]
+ store i32 %7, i32* %9, align 4
+ %10 = getelementptr inbounds i8* %dataBuffer, i32 12 ; [#uses=1]
+ %11 = bitcast i8* %10 to %struct.btCompoundShapeChildData** ; [#uses=2]
+ store %struct.btCompoundShapeChildData* null, %struct.btCompoundShapeChildData** %11, align 4
+ %12 = icmp eq i32 %7, 0 ; [#uses=1]
+ br i1 %12, label %bb7, label %bb
+
+bb: ; preds = %entry
+ %13 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=7]
+ %14 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds i32 (...)** %14, i32 4 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %18 = tail call %struct.btChunk* %17(%struct.btActionInterface* %serializer, i32 76, i32 %7) ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btChunk* %18, i32 0, i32 2 ; [#uses=2]
+ %20 = load i8** %19, align 4 ; [#uses=20]
+ %21 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds i32 (...)** %21, i32 7 ; [#uses=1]
+ %23 = load i32 (...)** %22, align 4 ; [#uses=1]
+ %24 = bitcast i32 (...)* %23 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %25 = tail call i8* %24(%struct.btActionInterface* %serializer, i8* %20) ; [#uses=1]
+ %26 = bitcast i8* %25 to %struct.btCompoundShapeChildData* ; [#uses=1]
+ store %struct.btCompoundShapeChildData* %26, %struct.btCompoundShapeChildData** %11, align 4
+ %27 = load i32* %9, align 4 ; [#uses=1]
+ %28 = icmp sgt i32 %27, 0 ; [#uses=1]
+ br i1 %28, label %bb.nph, label %bb6
+
+bb.nph: ; preds = %bb
+ %29 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=8]
+ br label %bb1
+
+bb1: ; preds = %bb4, %bb.nph
+ %i.010 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb4 ] ; [#uses=25]
+ %tmp = add i32 %i.010, 1 ; [#uses=2]
+ %tmp36 = mul i32 %i.010, 76 ; [#uses=19]
+ %tmp37 = add i32 %tmp36, 72 ; [#uses=1]
+ %scevgep38 = getelementptr i8* %20, i32 %tmp37 ; [#uses=1]
+ %scevgep3839 = bitcast i8* %scevgep38 to float* ; [#uses=1]
+ %tmp40 = add i32 %tmp36, 64 ; [#uses=1]
+ %scevgep41 = getelementptr i8* %20, i32 %tmp40 ; [#uses=1]
+ %scevgep4142 = bitcast i8* %scevgep41 to %struct.btCollisionShapeData** ; [#uses=1]
+ %tmp43 = add i32 %tmp36, 68 ; [#uses=1]
+ %scevgep44 = getelementptr i8* %20, i32 %tmp43 ; [#uses=1]
+ %scevgep4445 = bitcast i8* %scevgep44 to i32* ; [#uses=1]
+ %scevgep46 = getelementptr i8* %20, i32 %tmp36 ; [#uses=1]
+ %scevgep4.i.i.i = bitcast i8* %scevgep46 to float* ; [#uses=1]
+ %tmp48 = add i32 %tmp36, 4 ; [#uses=1]
+ %scevgep49 = getelementptr i8* %20, i32 %tmp48 ; [#uses=1]
+ %scevgep4.1.i.i.i = bitcast i8* %scevgep49 to float* ; [#uses=1]
+ %tmp51 = add i32 %tmp36, 8 ; [#uses=1]
+ %scevgep52 = getelementptr i8* %20, i32 %tmp51 ; [#uses=1]
+ %scevgep4.2.i.i.i = bitcast i8* %scevgep52 to float* ; [#uses=1]
+ %tmp54 = add i32 %tmp36, 12 ; [#uses=1]
+ %scevgep55 = getelementptr i8* %20, i32 %tmp54 ; [#uses=1]
+ %scevgep4.3.i.i.i = bitcast i8* %scevgep55 to float* ; [#uses=1]
+ %tmp57 = add i32 %tmp36, 16 ; [#uses=1]
+ %scevgep58 = getelementptr i8* %20, i32 %tmp57 ; [#uses=1]
+ %scevgep4.i.1.i.i = bitcast i8* %scevgep58 to float* ; [#uses=1]
+ %tmp60 = add i32 %tmp36, 20 ; [#uses=1]
+ %scevgep61 = getelementptr i8* %20, i32 %tmp60 ; [#uses=1]
+ %scevgep4.1.i.1.i.i = bitcast i8* %scevgep61 to float* ; [#uses=1]
+ %tmp63 = add i32 %tmp36, 24 ; [#uses=1]
+ %scevgep64 = getelementptr i8* %20, i32 %tmp63 ; [#uses=1]
+ %scevgep4.2.i.1.i.i = bitcast i8* %scevgep64 to float* ; [#uses=1]
+ %tmp66 = add i32 %tmp36, 28 ; [#uses=1]
+ %scevgep67 = getelementptr i8* %20, i32 %tmp66 ; [#uses=1]
+ %scevgep4.3.i.1.i.i = bitcast i8* %scevgep67 to float* ; [#uses=1]
+ %tmp69 = add i32 %tmp36, 32 ; [#uses=1]
+ %scevgep70 = getelementptr i8* %20, i32 %tmp69 ; [#uses=1]
+ %scevgep4.i.2.i.i = bitcast i8* %scevgep70 to float* ; [#uses=1]
+ %tmp72 = add i32 %tmp36, 36 ; [#uses=1]
+ %scevgep73 = getelementptr i8* %20, i32 %tmp72 ; [#uses=1]
+ %scevgep4.1.i.2.i.i = bitcast i8* %scevgep73 to float* ; [#uses=1]
+ %tmp75 = add i32 %tmp36, 40 ; [#uses=1]
+ %scevgep76 = getelementptr i8* %20, i32 %tmp75 ; [#uses=1]
+ %scevgep4.2.i.2.i.i = bitcast i8* %scevgep76 to float* ; [#uses=1]
+ %tmp78 = add i32 %tmp36, 44 ; [#uses=1]
+ %scevgep79 = getelementptr i8* %20, i32 %tmp78 ; [#uses=1]
+ %scevgep4.3.i.2.i.i = bitcast i8* %scevgep79 to float* ; [#uses=1]
+ %tmp81 = add i32 %tmp36, 48 ; [#uses=1]
+ %scevgep82 = getelementptr i8* %20, i32 %tmp81 ; [#uses=1]
+ %scevgep4.i.i = bitcast i8* %scevgep82 to float* ; [#uses=1]
+ %tmp84 = add i32 %tmp36, 52 ; [#uses=1]
+ %scevgep85 = getelementptr i8* %20, i32 %tmp84 ; [#uses=1]
+ %scevgep4.1.i.i = bitcast i8* %scevgep85 to float* ; [#uses=1]
+ %tmp87 = add i32 %tmp36, 56 ; [#uses=1]
+ %scevgep88 = getelementptr i8* %20, i32 %tmp87 ; [#uses=1]
+ %scevgep4.2.i.i = bitcast i8* %scevgep88 to float* ; [#uses=1]
+ %tmp90 = add i32 %tmp36, 60 ; [#uses=1]
+ %scevgep91 = getelementptr i8* %20, i32 %tmp90 ; [#uses=1]
+ %scevgep4.3.i.i = bitcast i8* %scevgep91 to float* ; [#uses=1]
+ %30 = load %struct.btCompoundShapeChild** %29, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCompoundShapeChild* %30, i32 %i.010, i32 3 ; [#uses=1]
+ %31 = load float* %scevgep, align 4 ; [#uses=1]
+ store float %31, float* %scevgep3839, align 4
+ %32 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32 (...)** %32, i32 7 ; [#uses=1]
+ %34 = load i32 (...)** %33, align 4 ; [#uses=1]
+ %35 = load %struct.btCompoundShapeChild** %29, align 4 ; [#uses=1]
+ %scevgep11 = getelementptr %struct.btCompoundShapeChild* %35, i32 %i.010, i32 1 ; [#uses=1]
+ %36 = load %struct.btCollisionShape** %scevgep11, align 4 ; [#uses=1]
+ %37 = bitcast i32 (...)* %34 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %38 = bitcast %struct.btCollisionShape* %36 to i8* ; [#uses=1]
+ %39 = tail call i8* %37(%struct.btActionInterface* %serializer, i8* %38) ; [#uses=1]
+ %40 = bitcast i8* %39 to %struct.btCollisionShapeData* ; [#uses=1]
+ store %struct.btCollisionShapeData* %40, %struct.btCollisionShapeData** %scevgep4142, align 4
+ %41 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds i32 (...)** %41, i32 6 ; [#uses=1]
+ %43 = load i32 (...)** %42, align 4 ; [#uses=1]
+ %44 = load %struct.btCompoundShapeChild** %29, align 4 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btCompoundShapeChild* %44, i32 %i.010, i32 1 ; [#uses=1]
+ %45 = load %struct.btCollisionShape** %scevgep12, align 4 ; [#uses=1]
+ %46 = bitcast i32 (...)* %43 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %47 = bitcast %struct.btCollisionShape* %45 to i8* ; [#uses=1]
+ %48 = tail call i8* %46(%struct.btActionInterface* %serializer, i8* %47) ; [#uses=1]
+ %49 = icmp eq i8* %48, null ; [#uses=1]
+ br i1 %49, label %bb2, label %bb4
+
+bb2: ; preds = %bb1
+ %50 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds i32 (...)** %50, i32 4 ; [#uses=1]
+ %52 = load i32 (...)** %51, align 4 ; [#uses=1]
+ %53 = load %struct.btCompoundShapeChild** %29, align 4 ; [#uses=1]
+ %scevgep33 = getelementptr %struct.btCompoundShapeChild* %53, i32 %i.010, i32 1 ; [#uses=1]
+ %54 = load %struct.btCollisionShape** %scevgep33, align 4 ; [#uses=2]
+ %55 = getelementptr inbounds %struct.btCollisionShape* %54, i32 0, i32 0 ; [#uses=1]
+ %56 = load i32 (...)*** %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds i32 (...)** %56, i32 12 ; [#uses=1]
+ %58 = load i32 (...)** %57, align 4 ; [#uses=1]
+ %59 = bitcast i32 (...)* %58 to i32 (%struct.btCollisionShape*)* ; [#uses=1]
+ %60 = tail call i32 %59(%struct.btCollisionShape* %54) ; [#uses=1]
+ %61 = bitcast i32 (...)* %52 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %62 = tail call %struct.btChunk* %61(%struct.btActionInterface* %serializer, i32 %60, i32 1) ; [#uses=2]
+ %63 = load %struct.btCompoundShapeChild** %29, align 4 ; [#uses=1]
+ %scevgep34 = getelementptr %struct.btCompoundShapeChild* %63, i32 %i.010, i32 1 ; [#uses=1]
+ %64 = load %struct.btCollisionShape** %scevgep34, align 4 ; [#uses=2]
+ %65 = getelementptr inbounds %struct.btCollisionShape* %64, i32 0, i32 0 ; [#uses=1]
+ %66 = load i32 (...)*** %65, align 4 ; [#uses=1]
+ %67 = getelementptr inbounds i32 (...)** %66, i32 13 ; [#uses=1]
+ %68 = load i32 (...)** %67, align 4 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btChunk* %62, i32 0, i32 2 ; [#uses=1]
+ %70 = load i8** %69, align 4 ; [#uses=1]
+ %71 = bitcast i32 (...)* %68 to i8* (%struct.btCollisionShape*, i8*, %struct.btActionInterface*)* ; [#uses=1]
+ %72 = tail call i8* %71(%struct.btCollisionShape* %64, i8* %70, %struct.btActionInterface* %serializer) ; [#uses=1]
+ %73 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds i32 (...)** %73, i32 5 ; [#uses=1]
+ %75 = load i32 (...)** %74, align 4 ; [#uses=1]
+ %76 = load %struct.btCompoundShapeChild** %29, align 4 ; [#uses=1]
+ %scevgep35 = getelementptr %struct.btCompoundShapeChild* %76, i32 %i.010, i32 1 ; [#uses=1]
+ %77 = load %struct.btCollisionShape** %scevgep35, align 4 ; [#uses=1]
+ %78 = bitcast i32 (...)* %75 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ %79 = bitcast %struct.btCollisionShape* %77 to i8* ; [#uses=1]
+ tail call void %78(%struct.btActionInterface* %serializer, %struct.btChunk* %62, i8* %72, i32 1346455635, i8* %79)
+ br label %bb4
+
+bb4: ; preds = %bb2, %bb1
+ %80 = load %struct.btCompoundShapeChild** %29, align 4 ; [#uses=1]
+ %scevgep13 = getelementptr %struct.btCompoundShapeChild* %80, i32 %i.010, i32 2 ; [#uses=1]
+ %81 = load i32* %scevgep13, align 4 ; [#uses=1]
+ store i32 %81, i32* %scevgep4445, align 4
+ %82 = load %struct.btCompoundShapeChild** %29, align 4 ; [#uses=16]
+ %scevgep.i.i.i = getelementptr inbounds %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %83 = load float* %scevgep.i.i.i, align 4 ; [#uses=1]
+ store float %83, float* %scevgep4.i.i.i, align 4
+ %scevgep.1.i.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %84 = load float* %scevgep.1.i.i.i, align 4 ; [#uses=1]
+ store float %84, float* %scevgep4.1.i.i.i, align 4
+ %scevgep.2.i.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %85 = load float* %scevgep.2.i.i.i, align 4 ; [#uses=1]
+ store float %85, float* %scevgep4.2.i.i.i, align 4
+ %scevgep.3.i.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %86 = load float* %scevgep.3.i.i.i, align 4 ; [#uses=1]
+ store float %86, float* %scevgep4.3.i.i.i, align 4
+ %scevgep.i.1.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %87 = load float* %scevgep.i.1.i.i, align 4 ; [#uses=1]
+ store float %87, float* %scevgep4.i.1.i.i, align 4
+ %scevgep.1.i.1.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %88 = load float* %scevgep.1.i.1.i.i, align 4 ; [#uses=1]
+ store float %88, float* %scevgep4.1.i.1.i.i, align 4
+ %scevgep.2.i.1.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %89 = load float* %scevgep.2.i.1.i.i, align 4 ; [#uses=1]
+ store float %89, float* %scevgep4.2.i.1.i.i, align 4
+ %scevgep.3.i.1.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %90 = load float* %scevgep.3.i.1.i.i, align 4 ; [#uses=1]
+ store float %90, float* %scevgep4.3.i.1.i.i, align 4
+ %scevgep.i.2.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %91 = load float* %scevgep.i.2.i.i, align 4 ; [#uses=1]
+ store float %91, float* %scevgep4.i.2.i.i, align 4
+ %scevgep.1.i.2.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %92 = load float* %scevgep.1.i.2.i.i, align 4 ; [#uses=1]
+ store float %92, float* %scevgep4.1.i.2.i.i, align 4
+ %scevgep.2.i.2.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %93 = load float* %scevgep.2.i.2.i.i, align 4 ; [#uses=1]
+ store float %93, float* %scevgep4.2.i.2.i.i, align 4
+ %scevgep.3.i.2.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %94 = load float* %scevgep.3.i.2.i.i, align 4 ; [#uses=1]
+ store float %94, float* %scevgep4.3.i.2.i.i, align 4
+ %scevgep.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %95 = load float* %scevgep.i.i, align 4 ; [#uses=1]
+ store float %95, float* %scevgep4.i.i, align 4
+ %scevgep.1.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %96 = load float* %scevgep.1.i.i, align 4 ; [#uses=1]
+ store float %96, float* %scevgep4.1.i.i, align 4
+ %scevgep.2.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %97 = load float* %scevgep.2.i.i, align 4 ; [#uses=1]
+ store float %97, float* %scevgep4.2.i.i, align 4
+ %scevgep.3.i.i = getelementptr %struct.btCompoundShapeChild* %82, i32 %i.010, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %98 = load float* %scevgep.3.i.i, align 4 ; [#uses=1]
+ store float %98, float* %scevgep4.3.i.i, align 4
+ %99 = load i32* %9, align 4 ; [#uses=1]
+ %100 = icmp sgt i32 %99, %tmp ; [#uses=1]
+ br i1 %100, label %bb1, label %bb6
+
+bb6: ; preds = %bb4, %bb
+ %101 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %102 = getelementptr inbounds i32 (...)** %101, i32 5 ; [#uses=1]
+ %103 = load i32 (...)** %102, align 4 ; [#uses=1]
+ %104 = load i8** %19, align 4 ; [#uses=1]
+ %105 = bitcast i32 (...)* %103 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ tail call void %105(%struct.btActionInterface* %serializer, %struct.btChunk* %18, i8* getelementptr inbounds ([25 x i8]* @.str163, i32 0, i32 0), i32 1497453121, i8* %104)
+ ret i8* getelementptr inbounds ([20 x i8]* @.str264, i32 0, i32 0)
+
+bb7: ; preds = %entry
+ ret i8* getelementptr inbounds ([20 x i8]* @.str264, i32 0, i32 0)
+}
+
+; [#uses=0]
+define void @_ZN15btCompoundShape26createAabbTreeFromChildrenEv(%struct.btCompoundShape* nocapture %this) align 2 {
+entry:
+ %localAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %localAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %bounds = alloca %struct.GIM_AABB, align 8 ; [#uses=9]
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 4 ; [#uses=3]
+ %1 = load %struct.btDbvt** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btDbvt* %1, null ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = call i8* @_Z22btAlignedAllocInternalji(i32 40, i32 16) ; [#uses=2]
+ %4 = bitcast i8* %3 to %struct.btDbvt* ; [#uses=2]
+ %5 = icmp eq i8* %3, null ; [#uses=1]
+ br i1 %5, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ invoke void @_ZN6btDbvtC1Ev(%struct.btDbvt* %4)
+ to label %bb5 unwind label %lpad
+
+bb5: ; preds = %bb1, %bb
+ store %struct.btDbvt* %4, %struct.btDbvt** %0, align 4
+ %6 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = icmp sgt i32 %7, 0 ; [#uses=1]
+ br i1 %8, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb5
+ %9 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb6, %bb.nph
+ %26 = phi i32 [ 0, %bb.nph ], [ %45, %bb6 ] ; [#uses=5]
+ %27 = load %struct.btCompoundShapeChild** %9, align 4 ; [#uses=3]
+ %scevgep = getelementptr %struct.btCompoundShapeChild* %27, i32 %26, i32 1 ; [#uses=1]
+ %28 = load %struct.btCollisionShape** %scevgep, align 4 ; [#uses=2]
+ %29 = getelementptr inbounds %struct.btCollisionShape* %28, i32 0, i32 0 ; [#uses=1]
+ %30 = load i32 (...)*** %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds i32 (...)** %30, i32 2 ; [#uses=1]
+ %32 = load i32 (...)** %31, align 4 ; [#uses=1]
+ %33 = bitcast i32 (...)* %32 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %scevgep1314 = getelementptr inbounds %struct.btCompoundShapeChild* %27, i32 %26, i32 0 ; [#uses=1]
+ call void %33(%struct.btCollisionShape* %28, %struct.btTransform* %scevgep1314, %struct.btQuadWord* %localAabbMin, %struct.btQuadWord* %localAabbMax)
+ %34 = load float* %11, align 8 ; [#uses=1]
+ store float %34, float* %10, align 8
+ %35 = load float* %13, align 4 ; [#uses=1]
+ store float %35, float* %12, align 4
+ %36 = load float* %15, align 8 ; [#uses=1]
+ store float %36, float* %14, align 8
+ %37 = load float* %17, align 4 ; [#uses=1]
+ store float %37, float* %16, align 4
+ %38 = load float* %19, align 8 ; [#uses=1]
+ store float %38, float* %18, align 8
+ %39 = load float* %21, align 4 ; [#uses=1]
+ store float %39, float* %20, align 4
+ %40 = load float* %23, align 8 ; [#uses=1]
+ store float %40, float* %22, align 8
+ %41 = load float* %25, align 4 ; [#uses=1]
+ store float %41, float* %24, align 4
+ %42 = inttoptr i32 %26 to i8* ; [#uses=1]
+ %43 = load %struct.btDbvt** %0, align 4 ; [#uses=1]
+ %44 = call %struct.btDbvtNode* @_ZN6btDbvt6insertERK12btDbvtAabbMmPv(%struct.btDbvt* %43, %struct.GIM_AABB* %bounds, i8* %42) ; [#uses=1]
+ %scevgep16 = getelementptr %struct.btCompoundShapeChild* %27, i32 %26, i32 4 ; [#uses=1]
+ store %struct.btDbvtNode* %44, %struct.btDbvtNode** %scevgep16, align 4
+ %45 = add nsw i32 %26, 1 ; [#uses=2]
+ %46 = load i32* %6, align 4 ; [#uses=1]
+ %47 = icmp sgt i32 %46, %45 ; [#uses=1]
+ br i1 %47, label %bb6, label %return
+
+return: ; preds = %bb6, %bb5, %entry
+ ret void
+
+lpad: ; preds = %bb1
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select10 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN11btMatrix3x311diagonalizeERS_fi(%struct.btMatrix3x3* %this, %struct.btMatrix3x3* nocapture %rot, float %threshold, i32 %maxSteps) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ br label %bb17
+
+bb: ; preds = %bb17
+ %18 = load float* %12, align 4 ; [#uses=1]
+ %19 = tail call float @fabsf(float %18) nounwind readnone ; [#uses=2]
+ %20 = load float* %13, align 4 ; [#uses=1]
+ %21 = tail call float @fabsf(float %20) nounwind readnone ; [#uses=2]
+ %22 = fcmp ogt float %21, %19 ; [#uses=3]
+ %max.0 = select i1 %22, float %21, float %19 ; [#uses=2]
+ %r.0 = select i1 %22, i32 1, i32 2 ; [#uses=1]
+ %q.0 = select i1 %22, i32 2, i32 1 ; [#uses=1]
+ %23 = load float* %14, align 4 ; [#uses=1]
+ %24 = tail call float @fabsf(float %23) nounwind readnone ; [#uses=2]
+ %25 = fcmp ogt float %24, %max.0 ; [#uses=1]
+ br i1 %25, label %bb3, label %bb4
+
+bb3: ; preds = %bb
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb
+ %max.1 = phi float [ %24, %bb3 ], [ %max.0, %bb ] ; [#uses=2]
+ %r.1 = phi i32 [ 0, %bb3 ], [ %r.0, %bb ] ; [#uses=4]
+ %q.1 = phi i32 [ 2, %bb3 ], [ %q.0, %bb ] ; [#uses=9]
+ %p.0 = phi i32 [ 1, %bb3 ], [ 0, %bb ] ; [#uses=9]
+ %26 = load float* %15, align 4 ; [#uses=1]
+ %27 = tail call float @fabsf(float %26) nounwind readnone ; [#uses=1]
+ %28 = load float* %16, align 4 ; [#uses=1]
+ %29 = tail call float @fabsf(float %28) nounwind readnone ; [#uses=1]
+ %30 = fadd float %27, %29 ; [#uses=1]
+ %31 = load float* %17, align 4 ; [#uses=1]
+ %32 = tail call float @fabsf(float %31) nounwind readnone ; [#uses=1]
+ %33 = fadd float %30, %32 ; [#uses=1]
+ %34 = fmul float %33, %threshold ; [#uses=2]
+ %35 = fcmp ugt float %max.1, %34 ; [#uses=1]
+ br i1 %35, label %bb7, label %bb5
+
+bb5: ; preds = %bb4
+ %36 = fmul float %34, 0x3E80000000000000 ; [#uses=1]
+ %37 = fcmp ult float %36, %max.1 ; [#uses=1]
+ br i1 %37, label %bb7, label %return
+
+bb7: ; preds = %bb5, %bb4
+ %step.0 = phi i32 [ %step.1, %bb4 ], [ 1, %bb5 ] ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %p.0, i32 0, i32 %q.1 ; [#uses=2]
+ %39 = load float* %38, align 4 ; [#uses=2]
+ %40 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %q.1, i32 0, i32 %q.1 ; [#uses=3]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %p.0, i32 0, i32 %p.0 ; [#uses=3]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fsub float %41, %43 ; [#uses=1]
+ %45 = fmul float %39, 2.000000e+00 ; [#uses=1]
+ %46 = fdiv float %44, %45 ; [#uses=6]
+ %47 = fmul float %46, %46 ; [#uses=4]
+ %48 = fmul float %47, %47 ; [#uses=1]
+ %49 = fcmp olt float %48, 8.388608e+07 ; [#uses=1]
+ br i1 %49, label %bb8, label %bb12
+
+bb8: ; preds = %bb7
+ %50 = fcmp ult float %46, 0.000000e+00 ; [#uses=1]
+ %51 = fadd float %47, 1.000000e+00 ; [#uses=1]
+ %52 = tail call float @sqrtf(float %51) nounwind readonly ; [#uses=2]
+ br i1 %50, label %bb10, label %bb9
+
+bb9: ; preds = %bb8
+ %53 = fadd float %52, %46 ; [#uses=1]
+ br label %bb11
+
+bb10: ; preds = %bb8
+ %54 = fsub float %46, %52 ; [#uses=1]
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb9
+ %.pn = phi float [ %53, %bb9 ], [ %54, %bb10 ] ; [#uses=1]
+ %iftmp.70.0 = fdiv float 1.000000e+00, %.pn ; [#uses=4]
+ %55 = fmul float %iftmp.70.0, %iftmp.70.0 ; [#uses=1]
+ %56 = fadd float %55, 1.000000e+00 ; [#uses=1]
+ %57 = tail call float @sqrtf(float %56) nounwind readonly ; [#uses=1]
+ %58 = fdiv float 1.000000e+00, %57 ; [#uses=2]
+ %59 = fmul float %58, %iftmp.70.0 ; [#uses=1]
+ br label %bb16
+
+bb12: ; preds = %bb7
+ %60 = fdiv float 5.000000e-01, %47 ; [#uses=1]
+ %61 = fadd float %60, 2.000000e+00 ; [#uses=1]
+ %62 = fmul float %61, %46 ; [#uses=1]
+ %63 = fdiv float 1.000000e+00, %62 ; [#uses=4]
+ %64 = fmul float %63, -5.000000e-01 ; [#uses=1]
+ %65 = fmul float %64, %63 ; [#uses=1]
+ %66 = fadd float %65, 1.000000e+00 ; [#uses=2]
+ %67 = fmul float %66, %63 ; [#uses=1]
+ br label %bb16
+
+bb16: ; preds = %bb12, %bb11
+ %cos.0 = phi float [ %58, %bb11 ], [ %66, %bb12 ] ; [#uses=8]
+ %t.0 = phi float [ %iftmp.70.0, %bb11 ], [ %63, %bb12 ] ; [#uses=1]
+ %sin.0 = phi float [ %59, %bb11 ], [ %67, %bb12 ] ; [#uses=8]
+ %68 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %q.1, i32 0, i32 %p.0 ; [#uses=1]
+ store float 0.000000e+00, float* %68, align 4
+ store float 0.000000e+00, float* %38, align 4
+ %69 = load float* %42, align 4 ; [#uses=1]
+ %70 = fmul float %t.0, %39 ; [#uses=2]
+ %71 = fsub float %69, %70 ; [#uses=1]
+ store float %71, float* %42, align 4
+ %72 = load float* %40, align 4 ; [#uses=1]
+ %73 = fadd float %72, %70 ; [#uses=1]
+ store float %73, float* %40, align 4
+ %74 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %r.1, i32 0, i32 %p.0 ; [#uses=2]
+ %75 = load float* %74, align 4 ; [#uses=2]
+ %76 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %r.1, i32 0, i32 %q.1 ; [#uses=2]
+ %77 = load float* %76, align 4 ; [#uses=2]
+ %78 = fmul float %cos.0, %75 ; [#uses=1]
+ %79 = fmul float %sin.0, %77 ; [#uses=1]
+ %80 = fsub float %78, %79 ; [#uses=2]
+ %81 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %p.0, i32 0, i32 %r.1 ; [#uses=1]
+ store float %80, float* %81, align 4
+ store float %80, float* %74, align 4
+ %82 = fmul float %cos.0, %77 ; [#uses=1]
+ %83 = fmul float %sin.0, %75 ; [#uses=1]
+ %84 = fadd float %82, %83 ; [#uses=2]
+ %85 = getelementptr inbounds %struct.btMatrix3x3* %this, i32 0, i32 0, i32 %q.1, i32 0, i32 %r.1 ; [#uses=1]
+ store float %84, float* %85, align 4
+ store float %84, float* %76, align 4
+ %scevgep = getelementptr %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 0, i32 0, i32 %p.0 ; [#uses=2]
+ %scevgep20 = getelementptr %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 0, i32 0, i32 %q.1 ; [#uses=2]
+ %86 = load float* %scevgep, align 4 ; [#uses=2]
+ %87 = load float* %scevgep20, align 4 ; [#uses=2]
+ %88 = fmul float %cos.0, %86 ; [#uses=1]
+ %89 = fmul float %sin.0, %87 ; [#uses=1]
+ %90 = fsub float %88, %89 ; [#uses=1]
+ store float %90, float* %scevgep, align 4
+ %91 = fmul float %cos.0, %87 ; [#uses=1]
+ %92 = fmul float %sin.0, %86 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ store float %93, float* %scevgep20, align 4
+ %scevgep.1 = getelementptr %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 1, i32 0, i32 %p.0 ; [#uses=2]
+ %scevgep20.1 = getelementptr %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 1, i32 0, i32 %q.1 ; [#uses=2]
+ %94 = load float* %scevgep.1, align 4 ; [#uses=2]
+ %95 = load float* %scevgep20.1, align 4 ; [#uses=2]
+ %96 = fmul float %cos.0, %94 ; [#uses=1]
+ %97 = fmul float %sin.0, %95 ; [#uses=1]
+ %98 = fsub float %96, %97 ; [#uses=1]
+ store float %98, float* %scevgep.1, align 4
+ %99 = fmul float %cos.0, %95 ; [#uses=1]
+ %100 = fmul float %sin.0, %94 ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=1]
+ store float %101, float* %scevgep20.1, align 4
+ %scevgep.2 = getelementptr %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 2, i32 0, i32 %p.0 ; [#uses=2]
+ %scevgep20.2 = getelementptr %struct.btMatrix3x3* %rot, i32 0, i32 0, i32 2, i32 0, i32 %q.1 ; [#uses=2]
+ %102 = load float* %scevgep.2, align 4 ; [#uses=2]
+ %103 = load float* %scevgep20.2, align 4 ; [#uses=2]
+ %104 = fmul float %cos.0, %102 ; [#uses=1]
+ %105 = fmul float %sin.0, %103 ; [#uses=1]
+ %106 = fsub float %104, %105 ; [#uses=1]
+ store float %106, float* %scevgep.2, align 4
+ %107 = fmul float %cos.0, %103 ; [#uses=1]
+ %108 = fmul float %sin.0, %102 ; [#uses=1]
+ %109 = fadd float %107, %108 ; [#uses=1]
+ store float %109, float* %scevgep20.2, align 4
+ %110 = add nsw i32 %step.0, -1 ; [#uses=1]
+ br label %bb17
+
+bb17: ; preds = %bb16, %entry
+ %step.1 = phi i32 [ %maxSteps, %entry ], [ %110, %bb16 ] ; [#uses=2]
+ %111 = icmp sgt i32 %step.1, 0 ; [#uses=1]
+ br i1 %111, label %bb, label %return
+
+return: ; preds = %bb17, %bb5
+ ret void
+}
+
+; [#uses=0]
+define void @_ZNK15btCompoundShape31calculatePrincipalAxisTransformEPfR11btTransformR9btVector3(%struct.btCompoundShape* nocapture %this, float* nocapture %masses, %struct.btTransform* nocapture %principal, %struct.btQuadWord* nocapture %inertia) align 2 {
+entry:
+ %tensor = alloca %struct.btMatrix3x3, align 8 ; [#uses=11]
+ %i = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=3]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=2]
+ br i1 %2, label %bb.nph89, label %bb2
+
+bb.nph89: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %4 = load %struct.btCompoundShapeChild** %3, align 4 ; [#uses=3]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph89
+ %k.088 = phi i32 [ 0, %bb.nph89 ], [ %16, %bb ] ; [#uses=5]
+ %totalMass.087 = phi float [ 0.000000e+00, %bb.nph89 ], [ %15, %bb ] ; [#uses=1]
+ %center.0.2.086 = phi float [ 0.000000e+00, %bb.nph89 ], [ %14, %bb ] ; [#uses=1]
+ %center.0.1.085 = phi float [ 0.000000e+00, %bb.nph89 ], [ %13, %bb ] ; [#uses=1]
+ %center.0.0.084 = phi float [ 0.000000e+00, %bb.nph89 ], [ %12, %bb ] ; [#uses=1]
+ %scevgep125 = getelementptr float* %masses, i32 %k.088 ; [#uses=1]
+ %scevgep126 = getelementptr %struct.btCompoundShapeChild* %4, i32 %k.088, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep127 = getelementptr %struct.btCompoundShapeChild* %4, i32 %k.088, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep128 = getelementptr %struct.btCompoundShapeChild* %4, i32 %k.088, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %scevgep126, align 4 ; [#uses=1]
+ %6 = load float* %scevgep125, align 4 ; [#uses=4]
+ %7 = fmul float %5, %6 ; [#uses=1]
+ %8 = load float* %scevgep127, align 4 ; [#uses=1]
+ %9 = fmul float %8, %6 ; [#uses=1]
+ %10 = load float* %scevgep128, align 4 ; [#uses=1]
+ %11 = fmul float %10, %6 ; [#uses=1]
+ %12 = fadd float %center.0.0.084, %11 ; [#uses=2]
+ %13 = fadd float %center.0.1.085, %9 ; [#uses=2]
+ %14 = fadd float %center.0.2.086, %7 ; [#uses=2]
+ %15 = fadd float %6, %totalMass.087 ; [#uses=2]
+ %16 = add nsw i32 %k.088, 1 ; [#uses=2]
+ %exitcond124 = icmp eq i32 %16, %1 ; [#uses=1]
+ br i1 %exitcond124, label %bb2, label %bb
+
+bb2: ; preds = %bb, %entry
+ %totalMass.0.lcssa = phi float [ 0.000000e+00, %entry ], [ %15, %bb ] ; [#uses=1]
+ %center.0.2.0.lcssa = phi float [ 0.000000e+00, %entry ], [ %14, %bb ] ; [#uses=1]
+ %center.0.1.0.lcssa = phi float [ 0.000000e+00, %entry ], [ %13, %bb ] ; [#uses=1]
+ %center.0.0.0.lcssa = phi float [ 0.000000e+00, %entry ], [ %12, %bb ] ; [#uses=1]
+ %17 = fdiv float 1.000000e+00, %totalMass.0.lcssa ; [#uses=3]
+ %18 = fmul float %center.0.0.0.lcssa, %17 ; [#uses=2]
+ %19 = fmul float %center.0.1.0.lcssa, %17 ; [#uses=2]
+ %20 = fmul float %center.0.2.0.lcssa, %17 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btTransform* %principal, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %18, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btTransform* %principal, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %19, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btTransform* %principal, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %20, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btTransform* %principal, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btMatrix3x3* %tensor, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %26 = getelementptr inbounds %struct.btMatrix3x3* %tensor, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %27 = getelementptr inbounds %struct.btMatrix3x3* %tensor, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btMatrix3x3* %tensor, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %29 = getelementptr inbounds %struct.btMatrix3x3* %tensor, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %30 = getelementptr inbounds %struct.btMatrix3x3* %tensor, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %31 = getelementptr inbounds %struct.btMatrix3x3* %tensor, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %32 = getelementptr inbounds %struct.btMatrix3x3* %tensor, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %33 = getelementptr inbounds %struct.btMatrix3x3* %tensor, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %34 = bitcast %struct.btMatrix3x3* %tensor to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %34, i8 0, i64 48, i32 8, i1 false)
+ br i1 %2, label %bb.nph, label %bb5
+
+bb.nph: ; preds = %bb2
+ %35 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=2]
+ %36 = getelementptr inbounds %struct.btQuadWord* %i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre = load %struct.btCompoundShapeChild** %35, align 4 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb3, %bb.nph
+ %39 = phi %struct.btCompoundShapeChild* [ %.pre, %bb.nph ], [ %47, %bb3 ] ; [#uses=1]
+ %k.183 = phi i32 [ 0, %bb.nph ], [ %183, %bb3 ] ; [#uses=15]
+ %scevgep = getelementptr float* %masses, i32 %k.183 ; [#uses=2]
+ %scevgep93 = getelementptr %struct.btCompoundShapeChild* %39, i32 %k.183, i32 1 ; [#uses=1]
+ %40 = load %struct.btCollisionShape** %scevgep93, align 4 ; [#uses=2]
+ %41 = getelementptr inbounds %struct.btCollisionShape* %40, i32 0, i32 0 ; [#uses=1]
+ %42 = load i32 (...)*** %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds i32 (...)** %42, i32 8 ; [#uses=1]
+ %44 = load i32 (...)** %43, align 4 ; [#uses=1]
+ %45 = load float* %scevgep, align 4 ; [#uses=1]
+ %46 = bitcast i32 (...)* %44 to void (%struct.btCollisionShape*, float, %struct.btQuadWord*)* ; [#uses=1]
+ call void %46(%struct.btCollisionShape* %40, float %45, %struct.btQuadWord* %i)
+ %47 = load %struct.btCompoundShapeChild** %35, align 4 ; [#uses=13]
+ %scevgep94 = getelementptr %struct.btCompoundShapeChild* %47, i32 %k.183, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %48 = load float* %scevgep94, align 4 ; [#uses=1]
+ %49 = fsub float %48, %20 ; [#uses=6]
+ %scevgep95 = getelementptr %struct.btCompoundShapeChild* %47, i32 %k.183, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %scevgep95, align 4 ; [#uses=1]
+ %51 = fsub float %50, %19 ; [#uses=6]
+ %scevgep96 = getelementptr %struct.btCompoundShapeChild* %47, i32 %k.183, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %scevgep96, align 4 ; [#uses=1]
+ %53 = fsub float %52, %18 ; [#uses=6]
+ %scevgep107108 = getelementptr inbounds %struct.btCompoundShapeChild* %47, i32 %k.183, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %54 = load float* %scevgep107108, align 4 ; [#uses=4]
+ %scevgep105106 = getelementptr %struct.btCompoundShapeChild* %47, i32 %k.183, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %55 = load float* %scevgep105106, align 4 ; [#uses=4]
+ %scevgep103104 = getelementptr %struct.btCompoundShapeChild* %47, i32 %k.183, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %56 = load float* %scevgep103104, align 4 ; [#uses=4]
+ %scevgep102 = getelementptr %struct.btCompoundShapeChild* %47, i32 %k.183, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %scevgep102, align 4 ; [#uses=4]
+ %scevgep101 = getelementptr %struct.btCompoundShapeChild* %47, i32 %k.183, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %58 = load float* %scevgep101, align 4 ; [#uses=4]
+ %scevgep100 = getelementptr %struct.btCompoundShapeChild* %47, i32 %k.183, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %59 = load float* %scevgep100, align 4 ; [#uses=4]
+ %scevgep99 = getelementptr %struct.btCompoundShapeChild* %47, i32 %k.183, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %scevgep99, align 4 ; [#uses=4]
+ %scevgep98 = getelementptr %struct.btCompoundShapeChild* %47, i32 %k.183, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %61 = load float* %scevgep98, align 4 ; [#uses=4]
+ %scevgep97 = getelementptr %struct.btCompoundShapeChild* %47, i32 %k.183, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %62 = load float* %scevgep97, align 4 ; [#uses=4]
+ %63 = load float* %36, align 8 ; [#uses=3]
+ %64 = fmul float %54, %63 ; [#uses=3]
+ %65 = fmul float %55, %63 ; [#uses=3]
+ %66 = fmul float %56, %63 ; [#uses=3]
+ %67 = load float* %37, align 4 ; [#uses=3]
+ %68 = fmul float %57, %67 ; [#uses=3]
+ %69 = fmul float %58, %67 ; [#uses=3]
+ %70 = fmul float %59, %67 ; [#uses=3]
+ %71 = load float* %38, align 8 ; [#uses=3]
+ %72 = fmul float %60, %71 ; [#uses=3]
+ %73 = fmul float %61, %71 ; [#uses=3]
+ %74 = fmul float %62, %71 ; [#uses=3]
+ %75 = fmul float %66, %56 ; [#uses=1]
+ %76 = fmul float %70, %59 ; [#uses=1]
+ %77 = fadd float %75, %76 ; [#uses=1]
+ %78 = fmul float %74, %62 ; [#uses=1]
+ %79 = fadd float %77, %78 ; [#uses=1]
+ %80 = fmul float %65, %56 ; [#uses=1]
+ %81 = fmul float %69, %59 ; [#uses=1]
+ %82 = fadd float %80, %81 ; [#uses=1]
+ %83 = fmul float %73, %62 ; [#uses=1]
+ %84 = fadd float %82, %83 ; [#uses=1]
+ %85 = fmul float %64, %56 ; [#uses=1]
+ %86 = fmul float %68, %59 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=1]
+ %88 = fmul float %72, %62 ; [#uses=1]
+ %89 = fadd float %87, %88 ; [#uses=1]
+ %90 = fmul float %66, %55 ; [#uses=1]
+ %91 = fmul float %70, %58 ; [#uses=1]
+ %92 = fadd float %90, %91 ; [#uses=1]
+ %93 = fmul float %74, %61 ; [#uses=1]
+ %94 = fadd float %92, %93 ; [#uses=1]
+ %95 = fmul float %65, %55 ; [#uses=1]
+ %96 = fmul float %69, %58 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %73, %61 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=1]
+ %100 = fmul float %64, %55 ; [#uses=1]
+ %101 = fmul float %68, %58 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fmul float %72, %61 ; [#uses=1]
+ %104 = fadd float %102, %103 ; [#uses=1]
+ %105 = fmul float %66, %54 ; [#uses=1]
+ %106 = fmul float %70, %57 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = fmul float %74, %60 ; [#uses=1]
+ %109 = fadd float %107, %108 ; [#uses=1]
+ %110 = fmul float %65, %54 ; [#uses=1]
+ %111 = fmul float %69, %57 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=1]
+ %113 = fmul float %73, %60 ; [#uses=1]
+ %114 = fadd float %112, %113 ; [#uses=1]
+ %115 = fmul float %64, %54 ; [#uses=1]
+ %116 = fmul float %68, %57 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=1]
+ %118 = fmul float %72, %60 ; [#uses=1]
+ %119 = fadd float %117, %118 ; [#uses=1]
+ %120 = load float* %25, align 8 ; [#uses=1]
+ %121 = fadd float %120, %119 ; [#uses=1]
+ %122 = load float* %26, align 4 ; [#uses=1]
+ %123 = fadd float %122, %114 ; [#uses=1]
+ %124 = load float* %27, align 8 ; [#uses=1]
+ %125 = fadd float %124, %109 ; [#uses=1]
+ %126 = load float* %28, align 8 ; [#uses=1]
+ %127 = fadd float %126, %104 ; [#uses=1]
+ %128 = load float* %29, align 4 ; [#uses=1]
+ %129 = fadd float %128, %99 ; [#uses=1]
+ %130 = load float* %30, align 8 ; [#uses=1]
+ %131 = fadd float %130, %94 ; [#uses=1]
+ %132 = load float* %31, align 8 ; [#uses=1]
+ %133 = fadd float %132, %89 ; [#uses=1]
+ %134 = load float* %32, align 4 ; [#uses=1]
+ %135 = fadd float %134, %84 ; [#uses=1]
+ %136 = load float* %33, align 8 ; [#uses=1]
+ %137 = fadd float %136, %79 ; [#uses=1]
+ %138 = fmul float %53, %53 ; [#uses=1]
+ %139 = fmul float %51, %51 ; [#uses=1]
+ %140 = fadd float %138, %139 ; [#uses=1]
+ %141 = fmul float %49, %49 ; [#uses=1]
+ %142 = fadd float %140, %141 ; [#uses=3]
+ %143 = fsub float -0.000000e+00, %53 ; [#uses=3]
+ %144 = fmul float %49, %143 ; [#uses=1]
+ %145 = fmul float %51, %143 ; [#uses=1]
+ %146 = fmul float %53, %143 ; [#uses=1]
+ %147 = fadd float %142, %146 ; [#uses=1]
+ %148 = fadd float %145, 0.000000e+00 ; [#uses=1]
+ %149 = fadd float %144, 0.000000e+00 ; [#uses=1]
+ %150 = fsub float -0.000000e+00, %51 ; [#uses=3]
+ %151 = fmul float %49, %150 ; [#uses=1]
+ %152 = fmul float %51, %150 ; [#uses=1]
+ %153 = fmul float %53, %150 ; [#uses=1]
+ %154 = fadd float %153, 0.000000e+00 ; [#uses=1]
+ %155 = fadd float %142, %152 ; [#uses=1]
+ %156 = fadd float %151, 0.000000e+00 ; [#uses=1]
+ %157 = fsub float -0.000000e+00, %49 ; [#uses=3]
+ %158 = fmul float %49, %157 ; [#uses=1]
+ %159 = fmul float %51, %157 ; [#uses=1]
+ %160 = fmul float %53, %157 ; [#uses=1]
+ %161 = fadd float %160, 0.000000e+00 ; [#uses=1]
+ %162 = fadd float %159, 0.000000e+00 ; [#uses=1]
+ %163 = fadd float %142, %158 ; [#uses=1]
+ %164 = load float* %scevgep, align 4 ; [#uses=9]
+ %165 = fmul float %149, %164 ; [#uses=1]
+ %166 = fmul float %148, %164 ; [#uses=1]
+ %167 = fmul float %147, %164 ; [#uses=1]
+ %168 = fadd float %121, %167 ; [#uses=1]
+ store float %168, float* %25, align 8
+ %169 = fadd float %123, %166 ; [#uses=1]
+ store float %169, float* %26, align 4
+ %170 = fadd float %125, %165 ; [#uses=1]
+ store float %170, float* %27, align 8
+ %171 = fmul float %156, %164 ; [#uses=1]
+ %172 = fmul float %155, %164 ; [#uses=1]
+ %173 = fmul float %154, %164 ; [#uses=1]
+ %174 = fadd float %127, %173 ; [#uses=1]
+ store float %174, float* %28, align 8
+ %175 = fadd float %129, %172 ; [#uses=1]
+ store float %175, float* %29, align 4
+ %176 = fadd float %131, %171 ; [#uses=1]
+ store float %176, float* %30, align 8
+ %177 = fmul float %163, %164 ; [#uses=1]
+ %178 = fmul float %162, %164 ; [#uses=1]
+ %179 = fmul float %161, %164 ; [#uses=1]
+ %180 = fadd float %133, %179 ; [#uses=1]
+ store float %180, float* %31, align 8
+ %181 = fadd float %135, %178 ; [#uses=1]
+ store float %181, float* %32, align 4
+ %182 = fadd float %137, %177 ; [#uses=1]
+ store float %182, float* %33, align 8
+ %183 = add nsw i32 %k.183, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %183, %1 ; [#uses=1]
+ br i1 %exitcond, label %bb5, label %bb3
+
+bb5: ; preds = %bb3, %bb2
+ %184 = getelementptr inbounds %struct.btTransform* %principal, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN11btMatrix3x311diagonalizeERS_fi(%struct.btMatrix3x3* %tensor, %struct.btMatrix3x3* %184, float 0x3EE4F8B580000000, i32 20) nounwind
+ %185 = load float* %25, align 8 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %185, float* %186, align 4
+ %187 = load float* %29, align 4 ; [#uses=1]
+ %188 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %187, float* %188, align 4
+ %189 = load float* %33, align 8 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %189, float* %190, align 4
+ %191 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %191, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN15btCompoundShape23removeChildShapeByIndexEi(%struct.btCompoundShape* nocapture %this, i32 %childShapeIndex) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 5 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = add nsw i32 %1, 1 ; [#uses=1]
+ store i32 %2, i32* %0, align 4
+ %3 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 4 ; [#uses=2]
+ %4 = load %struct.btDbvt** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %struct.btDbvt* %4, null ; [#uses=1]
+ br i1 %5, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %7 = load %struct.btCompoundShapeChild** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btCompoundShapeChild* %7, i32 %childShapeIndex, i32 4 ; [#uses=1]
+ %9 = load %struct.btDbvtNode** %8, align 4 ; [#uses=1]
+ tail call void @_ZN6btDbvt6removeEP10btDbvtNode(%struct.btDbvt* %4, %struct.btDbvtNode* %9)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %10 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ %12 = add nsw i32 %11, -1 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI20btCompoundShapeChildE4swapEii(%"struct.btAlignedObjectArray<btCompoundShapeChild>"* %13, i32 %childShapeIndex, i32 %12) nounwind
+ %14 = load %struct.btDbvt** %3, align 4 ; [#uses=1]
+ %15 = icmp eq %struct.btDbvt* %14, null ; [#uses=1]
+ br i1 %15, label %bb3, label %bb2
+
+bb2: ; preds = %bb1
+ %16 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %17 = load %struct.btCompoundShapeChild** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btCompoundShapeChild* %17, i32 %childShapeIndex, i32 4 ; [#uses=1]
+ %19 = load %struct.btDbvtNode** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btDbvtNode* %19, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %childShapeIndex.c = inttoptr i32 %childShapeIndex to %struct.btDbvtNode* ; [#uses=1]
+ store %struct.btDbvtNode* %childShapeIndex.c, %struct.btDbvtNode** %20, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1
+ %21 = load i32* %10, align 4 ; [#uses=1]
+ %22 = add nsw i32 %21, -1 ; [#uses=1]
+ store i32 %22, i32* %10, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN15btCompoundShape16removeChildShapeEP16btCollisionShape(%struct.btCompoundShape* %this, %struct.btCollisionShape* %shape) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 5 ; [#uses=4]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = add nsw i32 %1, 1 ; [#uses=1]
+ store i32 %2, i32* %0, align 4
+ %3 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=4]
+ %4 = load i32* %3, align 4 ; [#uses=4]
+ %i.05 = add i32 %4, -1 ; [#uses=2]
+ %5 = icmp sgt i32 %i.05, -1 ; [#uses=1]
+ br i1 %5, label %bb.nph, label %bb4
+
+bb.nph: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb3.backedge, %bb.nph
+ %9 = phi i32 [ %4, %bb.nph ], [ %27, %bb3.backedge ] ; [#uses=2]
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb3.backedge ] ; [#uses=3]
+ %tmp7 = sub i32 %4, %indvar ; [#uses=3]
+ %i.06 = sub i32 %i.05, %indvar ; [#uses=2]
+ %10 = load %struct.btCompoundShapeChild** %6, align 4 ; [#uses=2]
+ %scevgep13 = getelementptr %struct.btCompoundShapeChild* %10, i32 %tmp7, i32 0, i32 0, i32 0, i32 -1 ; [#uses=1]
+ %scevgep1314 = bitcast %struct.btQuadWord* %scevgep13 to %struct.btCollisionShape** ; [#uses=1]
+ %11 = load %struct.btCollisionShape** %scevgep1314, align 4 ; [#uses=1]
+ %12 = icmp eq %struct.btCollisionShape* %11, %shape ; [#uses=1]
+ br i1 %12, label %bb1, label %bb3.backedge
+
+bb1: ; preds = %bb
+ %13 = load i32* %0, align 4 ; [#uses=1]
+ %14 = add nsw i32 %13, 1 ; [#uses=1]
+ store i32 %14, i32* %0, align 4
+ %15 = load %struct.btDbvt** %7, align 4 ; [#uses=2]
+ %16 = icmp eq %struct.btDbvt* %15, null ; [#uses=1]
+ br i1 %16, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %bb1
+ %scevgep = getelementptr %struct.btCompoundShapeChild* %10, i32 %tmp7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 -1 ; [#uses=1]
+ %scevgep8 = bitcast float* %scevgep to %struct.btDbvtNode** ; [#uses=1]
+ %17 = load %struct.btDbvtNode** %scevgep8, align 4 ; [#uses=1]
+ tail call void @_ZN6btDbvt6removeEP10btDbvtNode(%struct.btDbvt* %15, %struct.btDbvtNode* %17)
+ %.pre = load i32* %3, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %bb.i, %bb1
+ %18 = phi i32 [ %.pre, %bb.i ], [ %9, %bb1 ] ; [#uses=1]
+ %19 = add nsw i32 %18, -1 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI20btCompoundShapeChildE4swapEii(%"struct.btAlignedObjectArray<btCompoundShapeChild>"* %8, i32 %i.06, i32 %19) nounwind
+ %20 = load %struct.btDbvt** %7, align 4 ; [#uses=1]
+ %21 = icmp eq %struct.btDbvt* %20, null ; [#uses=1]
+ br i1 %21, label %_ZN15btCompoundShape23removeChildShapeByIndexEi.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %22 = load %struct.btCompoundShapeChild** %6, align 4 ; [#uses=1]
+ %scevgep11 = getelementptr %struct.btCompoundShapeChild* %22, i32 %tmp7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 -1 ; [#uses=1]
+ %scevgep1112 = bitcast float* %scevgep11 to %struct.btDbvtNode** ; [#uses=1]
+ %23 = load %struct.btDbvtNode** %scevgep1112, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btDbvtNode* %23, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %childShapeIndex.c.i = inttoptr i32 %i.06 to %struct.btDbvtNode* ; [#uses=1]
+ store %struct.btDbvtNode* %childShapeIndex.c.i, %struct.btDbvtNode** %24, align 4
+ br label %_ZN15btCompoundShape23removeChildShapeByIndexEi.exit
+
+_ZN15btCompoundShape23removeChildShapeByIndexEi.exit: ; preds = %bb2.i, %bb1.i
+ %25 = load i32* %3, align 4 ; [#uses=1]
+ %26 = add nsw i32 %25, -1 ; [#uses=2]
+ store i32 %26, i32* %3, align 4
+ br label %bb3.backedge
+
+bb3.backedge: ; preds = %_ZN15btCompoundShape23removeChildShapeByIndexEi.exit, %bb
+ %27 = phi i32 [ %26, %_ZN15btCompoundShape23removeChildShapeByIndexEi.exit ], [ %9, %bb ] ; [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %4 ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb
+
+bb4: ; preds = %bb3.backedge, %entry
+ %28 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load i32 (...)*** %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds i32 (...)** %29, i32 16 ; [#uses=1]
+ %31 = load i32 (...)** %30, align 4 ; [#uses=1]
+ %32 = bitcast i32 (...)* %31 to void (%struct.btCompoundShape*)* ; [#uses=1]
+ tail call void %32(%struct.btCompoundShape* %this)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN15btCompoundShape20updateChildTransformEiRK11btTransform(%struct.btCompoundShape* %this, i32 %childIndex, %struct.btTransform* %newChildTransform) align 2 {
+entry:
+ %localAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %localAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %bounds = alloca %struct.GIM_AABB, align 8 ; [#uses=9]
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %1 = load %struct.btCompoundShapeChild** %0, align 4 ; [#uses=16]
+ %2 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btCompoundShapeChild* %1, i32 %childIndex, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %newChildTransform, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 4 ; [#uses=2]
+ %51 = load %struct.btDbvt** %50, align 4 ; [#uses=1]
+ %52 = icmp eq %struct.btDbvt* %51, null ; [#uses=1]
+ br i1 %52, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %53 = load %struct.btCompoundShapeChild** %0, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btCompoundShapeChild* %53, i32 %childIndex, i32 1 ; [#uses=1]
+ %55 = load %struct.btCollisionShape** %54, align 4 ; [#uses=2]
+ %56 = getelementptr inbounds %struct.btCollisionShape* %55, i32 0, i32 0 ; [#uses=1]
+ %57 = load i32 (...)*** %56, align 4 ; [#uses=1]
+ %58 = getelementptr inbounds i32 (...)** %57, i32 2 ; [#uses=1]
+ %59 = load i32 (...)** %58, align 4 ; [#uses=1]
+ %60 = bitcast i32 (...)* %59 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %60(%struct.btCollisionShape* %55, %struct.btTransform* %newChildTransform, %struct.btQuadWord* %localAabbMin, %struct.btQuadWord* %localAabbMax)
+ %61 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 8 ; [#uses=1]
+ store float %63, float* %61, align 8
+ %64 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %64, align 4
+ %67 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 8 ; [#uses=1]
+ store float %69, float* %67, align 8
+ %70 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %70, align 4
+ %73 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %75 = load float* %74, align 8 ; [#uses=1]
+ store float %75, float* %73, align 8
+ %76 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ store float %78, float* %76, align 4
+ %79 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %81 = load float* %80, align 8 ; [#uses=1]
+ store float %81, float* %79, align 8
+ %82 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %82, align 4
+ %85 = load %struct.btCompoundShapeChild** %0, align 4 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btCompoundShapeChild* %85, i32 %childIndex, i32 4 ; [#uses=1]
+ %87 = load %struct.btDbvtNode** %86, align 4 ; [#uses=1]
+ %88 = load %struct.btDbvt** %50, align 4 ; [#uses=1]
+ call void @_ZN6btDbvt6updateEP10btDbvtNodeR12btDbvtAabbMm(%struct.btDbvt* %88, %struct.btDbvtNode* %87, %struct.GIM_AABB* %bounds)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %89 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %90 = load i32 (...)*** %89, align 4 ; [#uses=1]
+ %91 = getelementptr inbounds i32 (...)** %90, i32 16 ; [#uses=1]
+ %92 = load i32 (...)** %91, align 4 ; [#uses=1]
+ %93 = bitcast i32 (...)* %92 to void (%struct.btCompoundShape*)* ; [#uses=1]
+ call void %93(%struct.btCompoundShape* %this)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN15btCompoundShape15setLocalScalingERK9btVector3(%struct.btCompoundShape* %this, %struct.btQuadWord* nocapture %scaling) align 2 {
+entry:
+ %childTrans = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %childScale = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %bb2
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %17 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %18 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %19 = getelementptr inbounds %struct.btTransform* %childTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btQuadWord* %childScale, i32 0, i32 0, i32 0 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btQuadWord* %childScale, i32 0, i32 0, i32 1 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btQuadWord* %childScale, i32 0, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %childScale, i32 0, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=2]
+ %27 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 7, i32 0, i32 2 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 7, i32 0, i32 1 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 7, i32 0, i32 0 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %31 = phi i32 [ 0, %bb.nph ], [ %94, %bb ] ; [#uses=20]
+ %32 = load %struct.btCompoundShapeChild** %3, align 4 ; [#uses=17]
+ %scevgep14 = getelementptr inbounds %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %scevgep14, align 4 ; [#uses=1]
+ store float %33, float* %4, align 8
+ %scevgep15 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %scevgep15, align 4 ; [#uses=1]
+ store float %34, float* %5, align 4
+ %scevgep16 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %scevgep16, align 4 ; [#uses=1]
+ store float %35, float* %6, align 8
+ %scevgep17 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %36 = load float* %scevgep17, align 4 ; [#uses=1]
+ store float %36, float* %7, align 4
+ %scevgep1819 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %scevgep1819, align 4 ; [#uses=1]
+ store float %37, float* %8, align 8
+ %scevgep20 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %scevgep20, align 4 ; [#uses=1]
+ store float %38, float* %9, align 4
+ %scevgep21 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %scevgep21, align 4 ; [#uses=1]
+ store float %39, float* %10, align 8
+ %scevgep22 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %40 = load float* %scevgep22, align 4 ; [#uses=1]
+ store float %40, float* %11, align 4
+ %scevgep2324 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %scevgep2324, align 4 ; [#uses=1]
+ store float %41, float* %12, align 8
+ %scevgep25 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %scevgep25, align 4 ; [#uses=1]
+ store float %42, float* %13, align 4
+ %scevgep26 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %43 = load float* %scevgep26, align 4 ; [#uses=1]
+ store float %43, float* %14, align 8
+ %scevgep27 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %44 = load float* %scevgep27, align 4 ; [#uses=1]
+ store float %44, float* %15, align 4
+ %scevgep28 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %45 = load float* %scevgep28, align 4 ; [#uses=1]
+ store float %45, float* %16, align 8
+ %scevgep29 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %scevgep29, align 4 ; [#uses=1]
+ store float %46, float* %17, align 4
+ %scevgep30 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %scevgep30, align 4 ; [#uses=1]
+ store float %47, float* %18, align 8
+ %scevgep31 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = load float* %scevgep31, align 4 ; [#uses=1]
+ store float %48, float* %19, align 4
+ %scevgep32 = getelementptr %struct.btCompoundShapeChild* %32, i32 %31, i32 1 ; [#uses=1]
+ %49 = load %struct.btCollisionShape** %scevgep32, align 4 ; [#uses=2]
+ %50 = getelementptr inbounds %struct.btCollisionShape* %49, i32 0, i32 0 ; [#uses=1]
+ %51 = load i32 (...)*** %50, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds i32 (...)** %51, i32 7 ; [#uses=1]
+ %53 = load i32 (...)** %52, align 4 ; [#uses=1]
+ %54 = bitcast i32 (...)* %53 to %struct.btQuadWord* (%struct.btCollisionShape*)* ; [#uses=1]
+ %55 = call %struct.btQuadWord* %54(%struct.btCollisionShape* %49) ; [#uses=3]
+ %56 = getelementptr inbounds %struct.btQuadWord* %55, i32 0, i32 0, i32 0 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=2]
+ store float %57, float* %20, align 8
+ %58 = getelementptr inbounds %struct.btQuadWord* %55, i32 0, i32 0, i32 1 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=2]
+ store float %59, float* %21, align 4
+ %60 = getelementptr inbounds %struct.btQuadWord* %55, i32 0, i32 0, i32 2 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = load float* %24, align 4 ; [#uses=1]
+ %63 = fmul float %61, %62 ; [#uses=1]
+ %64 = load float* %25, align 4 ; [#uses=1]
+ %65 = fmul float %59, %64 ; [#uses=1]
+ %66 = load float* %26, align 4 ; [#uses=1]
+ %67 = fmul float %57, %66 ; [#uses=1]
+ %68 = load float* %27, align 4 ; [#uses=1]
+ %69 = fdiv float %63, %68 ; [#uses=1]
+ %70 = load float* %28, align 4 ; [#uses=1]
+ %71 = fdiv float %65, %70 ; [#uses=1]
+ %72 = load float* %29, align 4 ; [#uses=1]
+ %73 = fdiv float %67, %72 ; [#uses=1]
+ store float %73, float* %20, align 8
+ store float %71, float* %21, align 4
+ store float %69, float* %22, align 8
+ store float 0.000000e+00, float* %23, align 4
+ %74 = load %struct.btCompoundShapeChild** %3, align 4 ; [#uses=1]
+ %scevgep33 = getelementptr %struct.btCompoundShapeChild* %74, i32 %31, i32 1 ; [#uses=1]
+ %75 = load %struct.btCollisionShape** %scevgep33, align 4 ; [#uses=2]
+ %76 = getelementptr inbounds %struct.btCollisionShape* %75, i32 0, i32 0 ; [#uses=1]
+ %77 = load i32 (...)*** %76, align 4 ; [#uses=1]
+ %78 = getelementptr inbounds i32 (...)** %77, i32 6 ; [#uses=1]
+ %79 = load i32 (...)** %78, align 4 ; [#uses=1]
+ %80 = bitcast i32 (...)* %79 to void (%struct.btCollisionShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %80(%struct.btCollisionShape* %75, %struct.btQuadWord* %childScale)
+ %81 = load float* %18, align 8 ; [#uses=1]
+ %82 = load float* %24, align 4 ; [#uses=1]
+ %83 = fmul float %81, %82 ; [#uses=1]
+ %84 = load float* %17, align 4 ; [#uses=1]
+ %85 = load float* %25, align 4 ; [#uses=1]
+ %86 = fmul float %84, %85 ; [#uses=1]
+ %87 = load float* %16, align 8 ; [#uses=1]
+ %88 = load float* %26, align 4 ; [#uses=1]
+ %89 = fmul float %87, %88 ; [#uses=1]
+ store float %89, float* %16, align 8
+ store float %86, float* %17, align 4
+ store float %83, float* %18, align 8
+ store float 0.000000e+00, float* %19, align 4
+ call void @_ZN15btCompoundShape20updateChildTransformEiRK11btTransform(%struct.btCompoundShape* %this, i32 %31, %struct.btTransform* %childTrans)
+ %90 = load i32 (...)*** %30, align 4 ; [#uses=1]
+ %91 = getelementptr inbounds i32 (...)** %90, i32 16 ; [#uses=1]
+ %92 = load i32 (...)** %91, align 4 ; [#uses=1]
+ %93 = bitcast i32 (...)* %92 to void (%struct.btCompoundShape*)* ; [#uses=1]
+ call void %93(%struct.btCompoundShape* %this)
+ %94 = add nsw i32 %31, 1 ; [#uses=2]
+ %95 = load i32* %0, align 4 ; [#uses=1]
+ %96 = icmp sgt i32 %95, %94 ; [#uses=1]
+ br i1 %96, label %bb, label %bb2
+
+bb2: ; preds = %bb, %entry
+ %97 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 7, i32 0, i32 0 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ store float %99, float* %97, align 4
+ %100 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 7, i32 0, i32 1 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ store float %102, float* %100, align 4
+ %103 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 7, i32 0, i32 2 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ store float %105, float* %103, align 4
+ %106 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 7, i32 0, i32 3 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %108 = load float* %107, align 4 ; [#uses=1]
+ store float %108, float* %106, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI20btCompoundShapeChildE9push_backERKS0_(%"struct.btAlignedObjectArray<btCompoundShapeChild>"* nocapture %this, %struct.btCompoundShapeChild* nocapture %_Val) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btCompoundShapeChild>"* %this, i32 0, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btCompoundShapeChild>"* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.408.0.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.408.0.i ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb1
+
+bb.i: ; preds = %bb
+ %8 = icmp eq i32 %iftmp.408.0.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayI20btCompoundShapeChildE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %9 = mul i32 %iftmp.408.0.i, 80 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %10 to %struct.btCompoundShapeChild* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI20btCompoundShapeChildE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayI20btCompoundShapeChildE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %11 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=1]
+ %12 = phi %struct.btCompoundShapeChild* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=2]
+ tail call void @_ZNK20btAlignedObjectArrayI20btCompoundShapeChildE4copyEiiPS0_(%"struct.btAlignedObjectArray<btCompoundShapeChild>"* %this, i32 0, i32 %11, %struct.btCompoundShapeChild* %12) nounwind
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<btCompoundShapeChild>"* %this, i32 0, i32 3 ; [#uses=3]
+ %14 = load %struct.btCompoundShapeChild** %13, align 4 ; [#uses=2]
+ %15 = icmp eq %struct.btCompoundShapeChild* %14, null ; [#uses=1]
+ br i1 %15, label %_ZN20btAlignedObjectArrayI20btCompoundShapeChildE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZN20btAlignedObjectArrayI20btCompoundShapeChildE8allocateEi.exit.i
+ %16 = getelementptr inbounds %"struct.btAlignedObjectArray<btCompoundShapeChild>"* %this, i32 0, i32 4 ; [#uses=1]
+ %17 = load i8* %16, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %17, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %18 = bitcast %struct.btCompoundShapeChild* %14 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %18)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %13, align 4
+ br label %_ZN20btAlignedObjectArrayI20btCompoundShapeChildE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayI20btCompoundShapeChildE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZN20btAlignedObjectArrayI20btCompoundShapeChildE8allocateEi.exit.i
+ %19 = getelementptr inbounds %"struct.btAlignedObjectArray<btCompoundShapeChild>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %19, align 4
+ store %struct.btCompoundShapeChild* %12, %struct.btCompoundShapeChild** %13, align 4
+ store i32 %iftmp.408.0.i, i32* %2, align 4
+ %.pre2 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayI20btCompoundShapeChildE10deallocateEv.exit.i, %bb, %entry
+ %20 = phi i32 [ %.pre2, %_ZN20btAlignedObjectArrayI20btCompoundShapeChildE10deallocateEv.exit.i ], [ %1, %entry ], [ %1, %bb ] ; [#uses=20]
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<btCompoundShapeChild>"* %this, i32 0, i32 3 ; [#uses=1]
+ %22 = load %struct.btCompoundShapeChild** %21, align 4 ; [#uses=20]
+ %23 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ %56 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ store float %58, float* %56, align 4
+ %59 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %59, align 4
+ %62 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ store float %64, float* %62, align 4
+ %65 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ store float %67, float* %65, align 4
+ %68 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 1 ; [#uses=1]
+ %72 = load %struct.btCollisionShape** %71, align 4 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 1 ; [#uses=1]
+ store %struct.btCollisionShape* %72, %struct.btCollisionShape** %73, align 4
+ %74 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 2 ; [#uses=1]
+ %75 = load i32* %74, align 4 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 2 ; [#uses=1]
+ store i32 %75, i32* %76, align 4
+ %77 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 3 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 3 ; [#uses=1]
+ store float %78, float* %79, align 4
+ %80 = getelementptr inbounds %struct.btCompoundShapeChild* %_Val, i32 0, i32 4 ; [#uses=1]
+ %81 = load %struct.btDbvtNode** %80, align 4 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btCompoundShapeChild* %22, i32 %20, i32 4 ; [#uses=1]
+ store %struct.btDbvtNode* %81, %struct.btDbvtNode** %82, align 4
+ %83 = load i32* %0, align 4 ; [#uses=1]
+ %84 = add nsw i32 %83, 1 ; [#uses=1]
+ store i32 %84, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN15btCompoundShape13addChildShapeERK11btTransformP16btCollisionShape(%struct.btCompoundShape* nocapture %this, %struct.btTransform* %localTransform, %struct.btCollisionShape* %shape) align 2 {
+bb.nph:
+ %child = alloca %struct.btCompoundShapeChild, align 8 ; [#uses=21]
+ %localAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=8]
+ %localAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=8]
+ %bounds = alloca %struct.GIM_AABB, align 8 ; [#uses=9]
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 5 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = add nsw i32 %1, 1 ; [#uses=1]
+ store i32 %2, i32* %0, align 4
+ %3 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 4 ; [#uses=2]
+ store %struct.btDbvtNode* null, %struct.btDbvtNode** %3, align 4
+ %4 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 8
+ %7 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 8
+ %13 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 8
+ %19 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 8
+ %25 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 8
+ %31 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 8
+ %37 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 8
+ %43 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 8
+ %49 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btTransform* %localTransform, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 4
+ %52 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 1 ; [#uses=1]
+ store %struct.btCollisionShape* %shape, %struct.btCollisionShape** %52, align 8
+ %53 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 0, i32 1 ; [#uses=1]
+ %54 = load i32* %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 2 ; [#uses=1]
+ store i32 %54, i32* %55, align 4
+ %56 = getelementptr inbounds %struct.btCollisionShape* %shape, i32 0, i32 0 ; [#uses=2]
+ %57 = load i32 (...)*** %56, align 4 ; [#uses=1]
+ %58 = getelementptr inbounds i32 (...)** %57, i32 11 ; [#uses=1]
+ %59 = load i32 (...)** %58, align 4 ; [#uses=1]
+ %60 = bitcast i32 (...)* %59 to float (%struct.btCollisionShape*)* ; [#uses=1]
+ %61 = call float %60(%struct.btCollisionShape* %shape) ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btCompoundShapeChild* %child, i32 0, i32 3 ; [#uses=1]
+ store float %61, float* %62, align 8
+ %63 = load i32 (...)*** %56, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds i32 (...)** %63, i32 2 ; [#uses=1]
+ %65 = load i32 (...)** %64, align 4 ; [#uses=1]
+ %66 = bitcast i32 (...)* %65 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %66(%struct.btCollisionShape* %shape, %struct.btTransform* %localTransform, %struct.btQuadWord* %localAabbMin, %struct.btQuadWord* %localAabbMax)
+ %scevgep = getelementptr %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %scevgep11 = getelementptr %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %scevgep13 = getelementptr %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %67 = load float* %scevgep, align 4 ; [#uses=1]
+ %68 = load float* %scevgep11, align 8 ; [#uses=2]
+ %69 = fcmp ogt float %67, %68 ; [#uses=1]
+ br i1 %69, label %bb1, label %bb2
+
+bb1: ; preds = %bb.nph
+ store float %68, float* %scevgep, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb.nph
+ %70 = load float* %scevgep12, align 4 ; [#uses=1]
+ %71 = load float* %scevgep13, align 8 ; [#uses=2]
+ %72 = fcmp olt float %70, %71 ; [#uses=1]
+ br i1 %72, label %bb4, label %bb5
+
+bb4: ; preds = %bb2
+ store float %71, float* %scevgep12, align 4
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb2
+ %scevgep.1 = getelementptr %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %scevgep11.1 = getelementptr %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep12.1 = getelementptr %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %scevgep13.1 = getelementptr %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %73 = load float* %scevgep.1, align 4 ; [#uses=1]
+ %74 = load float* %scevgep11.1, align 4 ; [#uses=2]
+ %75 = fcmp ogt float %73, %74 ; [#uses=1]
+ br i1 %75, label %bb1.1, label %bb2.1
+
+bb7: ; preds = %bb4.2, %bb2.2
+ %76 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 4 ; [#uses=1]
+ %77 = load %struct.btDbvt** %76, align 4 ; [#uses=2]
+ %78 = icmp eq %struct.btDbvt* %77, null ; [#uses=1]
+ br i1 %78, label %bb9, label %bb8
+
+bb8: ; preds = %bb7
+ %79 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %81 = load float* %80, align 8 ; [#uses=1]
+ store float %81, float* %79, align 8
+ %82 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %82, align 4
+ %85 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %87 = load float* %86, align 8 ; [#uses=1]
+ store float %87, float* %85, align 8
+ %88 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ store float %90, float* %88, align 4
+ %91 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %93 = load float* %92, align 8 ; [#uses=1]
+ store float %93, float* %91, align 8
+ %94 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %94, align 4
+ %97 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %99 = load float* %98, align 8 ; [#uses=1]
+ store float %99, float* %97, align 8
+ %100 = getelementptr inbounds %struct.GIM_AABB* %bounds, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ store float %102, float* %100, align 4
+ %103 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %104 = load i32* %103, align 4 ; [#uses=1]
+ %105 = inttoptr i32 %104 to i8* ; [#uses=1]
+ %106 = call %struct.btDbvtNode* @_ZN6btDbvt6insertERK12btDbvtAabbMmPv(%struct.btDbvt* %77, %struct.GIM_AABB* %bounds, i8* %105) ; [#uses=1]
+ store %struct.btDbvtNode* %106, %struct.btDbvtNode** %3, align 4
+ br label %bb9
+
+bb9: ; preds = %bb8, %bb7
+ %107 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI20btCompoundShapeChildE9push_backERKS0_(%"struct.btAlignedObjectArray<btCompoundShapeChild>"* %107, %struct.btCompoundShapeChild* %child) inlinehint
+ ret void
+
+bb5.1: ; preds = %bb4.1, %bb2.1
+ %scevgep.2 = getelementptr %struct.btCompoundShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %scevgep11.2 = getelementptr %struct.btQuadWord* %localAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep12.2 = getelementptr %struct.btCompoundShape* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %scevgep13.2 = getelementptr %struct.btQuadWord* %localAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %108 = load float* %scevgep.2, align 4 ; [#uses=1]
+ %109 = load float* %scevgep11.2, align 8 ; [#uses=2]
+ %110 = fcmp ogt float %108, %109 ; [#uses=1]
+ br i1 %110, label %bb1.2, label %bb2.2
+
+bb2.1: ; preds = %bb1.1, %bb5
+ %111 = load float* %scevgep12.1, align 4 ; [#uses=1]
+ %112 = load float* %scevgep13.1, align 4 ; [#uses=2]
+ %113 = fcmp olt float %111, %112 ; [#uses=1]
+ br i1 %113, label %bb4.1, label %bb5.1
+
+bb1.1: ; preds = %bb5
+ store float %74, float* %scevgep.1, align 4
+ br label %bb2.1
+
+bb4.1: ; preds = %bb2.1
+ store float %112, float* %scevgep12.1, align 4
+ br label %bb5.1
+
+bb2.2: ; preds = %bb1.2, %bb5.1
+ %114 = load float* %scevgep12.2, align 4 ; [#uses=1]
+ %115 = load float* %scevgep13.2, align 8 ; [#uses=2]
+ %116 = fcmp olt float %114, %115 ; [#uses=1]
+ br i1 %116, label %bb4.2, label %bb7
+
+bb1.2: ; preds = %bb5.1
+ store float %109, float* %scevgep.2, align 4
+ br label %bb2.2
+
+bb4.2: ; preds = %bb2.2
+ store float %115, float* %scevgep12.2, align 4
+ br label %bb7
+}
+
+; [#uses=1]
+define void @_ZN15btCompoundShapeD0Ev(%struct.btCompoundShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV15btCompoundShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 4 ; [#uses=2]
+ %2 = load %struct.btDbvt** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btDbvt* %2, null ; [#uses=1]
+ br i1 %3, label %bb5, label %bb
+
+bb: ; preds = %entry
+ invoke void @_ZN6btDbvtD1Ev(%struct.btDbvt* %2)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %4 = load %struct.btDbvt** %1, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btDbvt* %4 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %bb2.i.i.i20, %lpad
+ %6 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %6, align 4
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %19, align 4
+ %7 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %invcont, %entry
+ %9 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %10 = load %struct.btCompoundShapeChild** %9, align 4 ; [#uses=2]
+ %11 = icmp eq %struct.btCompoundShapeChild* %10, null ; [#uses=1]
+ br i1 %11, label %_ZN20btAlignedObjectArrayI20btCompoundShapeChildED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb5
+ %12 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %13 = load i8* %12, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %14 = bitcast %struct.btCompoundShapeChild* %10 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %14)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %9, align 4
+ br label %_ZN20btAlignedObjectArrayI20btCompoundShapeChildED1Ev.exit
+
+_ZN20btAlignedObjectArrayI20btCompoundShapeChildED1Ev.exit: ; preds = %bb2.i.i.i, %bb5
+ %15 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %15, align 4
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %9, align 4
+ %16 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = bitcast %struct.btCompoundShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %18)
+ ret void
+
+lpad: ; preds = %invcont, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %19 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %20 = load %struct.btCompoundShapeChild** %19, align 4 ; [#uses=2]
+ %21 = icmp eq %struct.btCompoundShapeChild* %20, null ; [#uses=1]
+ br i1 %21, label %invcont3, label %bb.i.i.i18
+
+bb.i.i.i18: ; preds = %lpad
+ %22 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i.i17 = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i17, label %bb2.i.i.i20, label %bb1.i.i.i19
+
+bb1.i.i.i19: ; preds = %bb.i.i.i18
+ %24 = bitcast %struct.btCompoundShapeChild* %20 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %24)
+ to label %bb2.i.i.i20 unwind label %lpad11
+
+bb2.i.i.i20: ; preds = %bb1.i.i.i19, %bb.i.i.i18
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %19, align 4
+ br label %invcont3
+
+lpad11: ; preds = %bb1.i.i.i19
+ %eh_ptr12 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select14 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr12, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN15btCompoundShapeD1Ev(%struct.btCompoundShape* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV15btCompoundShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 4 ; [#uses=2]
+ %2 = load %struct.btDbvt** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btDbvt* %2, null ; [#uses=1]
+ br i1 %3, label %bb5, label %bb
+
+bb: ; preds = %entry
+ invoke void @_ZN6btDbvtD1Ev(%struct.btDbvt* %2)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %4 = load %struct.btDbvt** %1, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btDbvt* %4 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %bb2.i.i.i20, %lpad
+ %6 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %6, align 4
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %18, align 4
+ %7 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %invcont, %entry
+ %9 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %10 = load %struct.btCompoundShapeChild** %9, align 4 ; [#uses=2]
+ %11 = icmp eq %struct.btCompoundShapeChild* %10, null ; [#uses=1]
+ br i1 %11, label %_ZN20btAlignedObjectArrayI20btCompoundShapeChildED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb5
+ %12 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %13 = load i8* %12, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %14 = bitcast %struct.btCompoundShapeChild* %10 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %14)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %9, align 4
+ br label %_ZN20btAlignedObjectArrayI20btCompoundShapeChildED1Ev.exit
+
+_ZN20btAlignedObjectArrayI20btCompoundShapeChildED1Ev.exit: ; preds = %bb2.i.i.i, %bb5
+ %15 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %15, align 4
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %9, align 4
+ %16 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ ret void
+
+lpad: ; preds = %invcont, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %18 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %19 = load %struct.btCompoundShapeChild** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.btCompoundShapeChild* %19, null ; [#uses=1]
+ br i1 %20, label %invcont3, label %bb.i.i.i18
+
+bb.i.i.i18: ; preds = %lpad
+ %21 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i.i17 = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i17, label %bb2.i.i.i20, label %bb1.i.i.i19
+
+bb1.i.i.i19: ; preds = %bb.i.i.i18
+ %23 = bitcast %struct.btCompoundShapeChild* %19 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %23)
+ to label %bb2.i.i.i20 unwind label %lpad11
+
+bb2.i.i.i20: ; preds = %bb1.i.i.i19, %bb.i.i.i18
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %18, align 4
+ br label %invcont3
+
+lpad11: ; preds = %bb1.i.i.i19
+ %eh_ptr12 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select14 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr12, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN15btCompoundShapeD2Ev(%struct.btCompoundShape* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV15btCompoundShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 4 ; [#uses=2]
+ %2 = load %struct.btDbvt** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btDbvt* %2, null ; [#uses=1]
+ br i1 %3, label %bb5, label %bb
+
+bb: ; preds = %entry
+ invoke void @_ZN6btDbvtD1Ev(%struct.btDbvt* %2)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %4 = load %struct.btDbvt** %1, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btDbvt* %4 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %bb5 unwind label %lpad
+
+invcont3: ; preds = %bb2.i.i.i20, %lpad
+ %6 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %6, align 4
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %18, align 4
+ %7 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %invcont, %entry
+ %9 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %10 = load %struct.btCompoundShapeChild** %9, align 4 ; [#uses=2]
+ %11 = icmp eq %struct.btCompoundShapeChild* %10, null ; [#uses=1]
+ br i1 %11, label %_ZN20btAlignedObjectArrayI20btCompoundShapeChildED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb5
+ %12 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %13 = load i8* %12, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %14 = bitcast %struct.btCompoundShapeChild* %10 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %14)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %9, align 4
+ br label %_ZN20btAlignedObjectArrayI20btCompoundShapeChildED1Ev.exit
+
+_ZN20btAlignedObjectArrayI20btCompoundShapeChildED1Ev.exit: ; preds = %bb2.i.i.i, %bb5
+ %15 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %15, align 4
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %9, align 4
+ %16 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ ret void
+
+lpad: ; preds = %invcont, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %18 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %19 = load %struct.btCompoundShapeChild** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.btCompoundShapeChild* %19, null ; [#uses=1]
+ br i1 %20, label %invcont3, label %bb.i.i.i18
+
+bb.i.i.i18: ; preds = %lpad
+ %21 = getelementptr inbounds %struct.btCompoundShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i.i17 = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i17, label %bb2.i.i.i20, label %bb1.i.i.i19
+
+bb1.i.i.i19: ; preds = %bb.i.i.i18
+ %23 = bitcast %struct.btCompoundShapeChild* %19 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %23)
+ to label %bb2.i.i.i20 unwind label %lpad11
+
+bb2.i.i.i20: ; preds = %bb1.i.i.i19, %bb.i.i.i18
+ store %struct.btCompoundShapeChild* null, %struct.btCompoundShapeChild** %18, align 4
+ br label %invcont3
+
+lpad11: ; preds = %bb1.i.i.i19
+ %eh_ptr12 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select14 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr12, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN15btCompoundShapeC1Eb(%struct.btCompoundShape* nocapture %this, i8 zeroext %enableDynamicAabbTree) align 2 {
+entry:
+ tail call void @_ZN15btCompoundShapeC2Eb(%struct.btCompoundShape* %this, i8 zeroext %enableDynamicAabbTree)
+ ret void
+}
+
+; [#uses=11]
+define void @_ZN14btConcaveShapeC2Ev(%struct.btConcaveShape* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConcaveShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btConcaveShape* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 35, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.btConcaveShape* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i8* null, i8** %2, align 4
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV14btConcaveShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %3 = getelementptr inbounds %struct.btConcaveShape* %this, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN14btConcaveShapeD1Ev(%struct.btConcaveShape* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConcaveShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV14btConcaveShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN14btConcaveShapeD0Ev(%struct.btConcaveShape* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConcaveShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV14btConcaveShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btConcaveShape* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN14btConcaveShapeC1Ev(%struct.btConcaveShape* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConcaveShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btConcaveShape* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 35, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.btConcaveShape* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i8* null, i8** %2, align 4
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV14btConcaveShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %3 = getelementptr inbounds %struct.btConcaveShape* %this, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ ret void
+}
+
+; [#uses=40]
+define void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConcaveShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV14btConcaveShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN11btConeShapeC2Eff(%struct.btConeShape* %this, float %radius, float %height) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV11btConeShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 2 ; [#uses=1]
+ store float %radius, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 3 ; [#uses=1]
+ store float %height, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 11, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 0 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 1, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 2, i32* %7, align 4
+ %8 = fmul float %radius, %radius ; [#uses=1]
+ %9 = fmul float %height, %height ; [#uses=1]
+ %10 = fadd float %8, %9 ; [#uses=1]
+ %11 = tail call float @sqrtf(float %10) nounwind readonly ; [#uses=1]
+ %12 = fdiv float %radius, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 1 ; [#uses=1]
+ store float %12, float* %13, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK21btConvexInternalShape7getAabbERK11btTransformR9btVector3S4_(%struct.btConvexInternalShape* %this, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 18 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %4(%struct.btConvexInternalShape* %this, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK11btConeShape21calculateLocalInertiaEfR9btVector3(%struct.btConeShape* %this, float %mass, %struct.btQuadWord* nocapture %inertia) align 2 {
+entry:
+ %identity = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %aabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %aabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %0, align 8
+ %1 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 8
+ %3 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 8
+ %5 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 8
+ %7 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 8
+ %9 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %10, align 8
+ %11 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 8
+ %13 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 8
+ %15 = getelementptr inbounds %struct.btTransform* %identity, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %17 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 2 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0 ; [#uses=2]
+ %21 = bitcast i32 (...)* %19 to void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %21(%struct.btConvexInternalShape* %20, %struct.btTransform* %identity, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ %22 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 8 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 8 ; [#uses=1]
+ %26 = fsub float %23, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fsub float %28, %30 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 8 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %34, align 8 ; [#uses=1]
+ %36 = fsub float %33, %35 ; [#uses=1]
+ %37 = fmul float %26, 5.000000e-01 ; [#uses=1]
+ %38 = fmul float %31, 5.000000e-01 ; [#uses=1]
+ %39 = fmul float %36, 5.000000e-01 ; [#uses=1]
+ %40 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds i32 (...)** %40, i32 11 ; [#uses=1]
+ %42 = load i32 (...)** %41, align 4 ; [#uses=1]
+ %43 = bitcast i32 (...)* %42 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %44 = call float %43(%struct.btConvexInternalShape* %20) ; [#uses=3]
+ %45 = fadd float %39, %44 ; [#uses=1]
+ %46 = fmul float %45, 2.000000e+00 ; [#uses=2]
+ %47 = fadd float %38, %44 ; [#uses=1]
+ %48 = fmul float %47, 2.000000e+00 ; [#uses=2]
+ %49 = fadd float %37, %44 ; [#uses=1]
+ %50 = fmul float %49, 2.000000e+00 ; [#uses=2]
+ %51 = fmul float %46, %46 ; [#uses=2]
+ %52 = fmul float %48, %48 ; [#uses=2]
+ %53 = fmul float %50, %50 ; [#uses=2]
+ %54 = fmul float %mass, 0x3FB5555540000000 ; [#uses=3]
+ %55 = fadd float %51, %52 ; [#uses=1]
+ %56 = fadd float %51, %53 ; [#uses=1]
+ %57 = fadd float %52, %53 ; [#uses=1]
+ %58 = fmul float %55, %54 ; [#uses=1]
+ %59 = fmul float %56, %54 ; [#uses=1]
+ %60 = fmul float %57, %54 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %60, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %59, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %58, float* %63, align 4
+ %64 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %64, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK11btConeShape7getNameEv(%struct.btConeShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([5 x i8]* @.str65, i32 0, i32 0)
+}
+
+; [#uses=0]
+define void @_ZN11btConeShape14setConeUpIndexEi(%struct.btConeShape* nocapture %this, i32 %upIndex) nounwind align 2 {
+entry:
+ switch i32 %upIndex, label %return [
+ i32 0, label %bb
+ i32 1, label %bb1
+ i32 2, label %bb2
+ ]
+
+bb: ; preds = %entry
+ %0 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 0 ; [#uses=1]
+ store i32 1, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 2, i32* %2, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 0 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 1, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 2, i32* %5, align 4
+ ret void
+
+bb2: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 0 ; [#uses=1]
+ store i32 0, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 2, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 1, i32* %8, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN11btConeShapeD0Ev(%struct.btConeShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btConeShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN11btConeShapeD1Ev(%struct.btConeShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK11btConeShape24localGetSupportingVertexERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btConeShape* %this, %struct.btQuadWord* nocapture %vec) align 2 {
+entry:
+ tail call void @_ZNK11btConeShape16coneLocalSupportERK9btVector3(%struct.btQuadWord* noalias sret %agg.result, %struct.btConeShape* %this, %struct.btQuadWord* %vec) nounwind
+ %0 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0 ; [#uses=2]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %7 = fcmp une float %6, 0.000000e+00 ; [#uses=1]
+ br i1 %7, label %bb, label %return
+
+bb: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=3]
+ %12 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = fmul float %9, %9 ; [#uses=1]
+ %15 = fmul float %11, %11 ; [#uses=1]
+ %16 = fadd float %14, %15 ; [#uses=1]
+ %17 = fmul float %13, %13 ; [#uses=1]
+ %18 = fadd float %16, %17 ; [#uses=1]
+ %19 = fcmp olt float %18, 0x3D10000000000000 ; [#uses=3]
+ %vecnorm.0.0.0 = select i1 %19, float -1.000000e+00, float %9 ; [#uses=3]
+ %vecnorm.0.1.0 = select i1 %19, float -1.000000e+00, float %11 ; [#uses=3]
+ %vecnorm.0.2.0 = select i1 %19, float -1.000000e+00, float %13 ; [#uses=3]
+ %20 = fmul float %vecnorm.0.0.0, %vecnorm.0.0.0 ; [#uses=1]
+ %21 = fmul float %vecnorm.0.1.0, %vecnorm.0.1.0 ; [#uses=1]
+ %22 = fadd float %20, %21 ; [#uses=1]
+ %23 = fmul float %vecnorm.0.2.0, %vecnorm.0.2.0 ; [#uses=1]
+ %24 = fadd float %22, %23 ; [#uses=1]
+ %25 = tail call float @sqrtf(float %24) nounwind readonly ; [#uses=1]
+ %26 = fdiv float 1.000000e+00, %25 ; [#uses=3]
+ %27 = fmul float %vecnorm.0.0.0, %26 ; [#uses=1]
+ %28 = fmul float %vecnorm.0.1.0, %26 ; [#uses=1]
+ %29 = fmul float %vecnorm.0.2.0, %26 ; [#uses=1]
+ %30 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds i32 (...)** %30, i32 11 ; [#uses=1]
+ %32 = load i32 (...)** %31, align 4 ; [#uses=1]
+ %33 = bitcast i32 (...)* %32 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %34 = tail call float %33(%struct.btConvexInternalShape* %4) ; [#uses=3]
+ %35 = fmul float %29, %34 ; [#uses=1]
+ %36 = fmul float %28, %34 ; [#uses=1]
+ %37 = fmul float %27, %34 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=2]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fadd float %39, %37 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=2]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = fadd float %42, %36 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=2]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fadd float %45, %35 ; [#uses=1]
+ store float %46, float* %44, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK11btConeShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btConeShape* nocapture %this, %struct.btQuadWord* nocapture %vec) nounwind align 2 {
+entry:
+ tail call void @_ZNK11btConeShape16coneLocalSupportERK9btVector3(%struct.btQuadWord* noalias sret %agg.result, %struct.btConeShape* %this, %struct.btQuadWord* %vec) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK11btConeShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btConeShape* nocapture %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) nounwind align 2 {
+entry:
+ %memtmp = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = icmp sgt i32 %numVectors, 0 ; [#uses=1]
+ br i1 %0, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %i.03 = phi i32 [ 0, %bb.nph ], [ %9, %bb ] ; [#uses=6]
+ %scevgep = getelementptr %struct.btQuadWord* %vectors, i32 %i.03 ; [#uses=1]
+ %scevgep45 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %i.03, i32 0, i32 0 ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.03, i32 0, i32 1 ; [#uses=1]
+ %scevgep7 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.03, i32 0, i32 2 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.03, i32 0, i32 3 ; [#uses=1]
+ call void @_ZNK11btConeShape16coneLocalSupportERK9btVector3(%struct.btQuadWord* noalias sret %memtmp, %struct.btConeShape* %this, %struct.btQuadWord* %scevgep) nounwind
+ %5 = load float* %1, align 8 ; [#uses=1]
+ store float %5, float* %scevgep45, align 4
+ %6 = load float* %2, align 4 ; [#uses=1]
+ store float %6, float* %scevgep6, align 4
+ %7 = load float* %3, align 8 ; [#uses=1]
+ store float %7, float* %scevgep7, align 4
+ %8 = load float* %4, align 4 ; [#uses=1]
+ store float %8, float* %scevgep8, align 4
+ %9 = add nsw i32 %i.03, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %9, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btConeShapeXD0Ev(%struct.btConeShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btConeShapeX* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btConeShapeXD1Ev(%struct.btConeShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btConeShapeZD0Ev(%struct.btConeShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btConeShapeX* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btConeShapeZD1Ev(%struct.btConeShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=3]
+define void @_ZNK11btConeShape16coneLocalSupportERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btConeShape* nocapture %this, %struct.btQuadWord* nocapture %v) nounwind align 2 {
+entry:
+ %tmp = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %tmp3 = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %tmp5 = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %0 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 3 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = fmul float %1, 5.000000e-01 ; [#uses=3]
+ %3 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=4]
+ %5 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 %4 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fmul float %8, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = fmul float %11, %11 ; [#uses=1]
+ %13 = fadd float %9, %12 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=2]
+ %16 = fmul float %15, %15 ; [#uses=1]
+ %17 = fadd float %13, %16 ; [#uses=1]
+ %18 = call float @sqrtf(float %17) nounwind readonly ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fmul float %18, %20 ; [#uses=1]
+ %22 = fcmp ogt float %6, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 0 ; [#uses=1]
+ %24 = load i32* %23, align 4 ; [#uses=4]
+ br i1 %22, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %25 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 %24 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 %4 ; [#uses=1]
+ store float %2, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ %28 = load i32* %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 %28 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 8 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 8 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 3 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ store float %41, float* %39, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %42 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 %24 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=3]
+ %44 = fmul float %43, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ %46 = load i32* %45, align 4 ; [#uses=3]
+ %47 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 %46 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=3]
+ %49 = fmul float %48, %48 ; [#uses=1]
+ %50 = fadd float %44, %49 ; [#uses=1]
+ %51 = call float @sqrtf(float %50) nounwind readonly ; [#uses=2]
+ %52 = fcmp ogt float %51, 0x3E80000000000000 ; [#uses=1]
+ br i1 %52, label %bb2, label %bb4
+
+bb2: ; preds = %bb1
+ %53 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = fdiv float %54, %51 ; [#uses=2]
+ %56 = fmul float %43, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btQuadWord* %tmp3, i32 0, i32 0, i32 %24 ; [#uses=1]
+ store float %56, float* %57, align 4
+ %58 = fsub float -0.000000e+00, %2 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btQuadWord* %tmp3, i32 0, i32 0, i32 %4 ; [#uses=1]
+ store float %58, float* %59, align 4
+ %60 = fmul float %48, %55 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btQuadWord* %tmp3, i32 0, i32 0, i32 %46 ; [#uses=1]
+ store float %60, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btQuadWord* %tmp3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 8 ; [#uses=1]
+ store float %64, float* %62, align 4
+ %65 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btQuadWord* %tmp3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ store float %67, float* %65, align 4
+ %68 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btQuadWord* %tmp3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 8 ; [#uses=1]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btQuadWord* %tmp3, i32 0, i32 0, i32 3 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %71, align 4
+ ret void
+
+bb4: ; preds = %bb1
+ %74 = getelementptr inbounds %struct.btQuadWord* %tmp5, i32 0, i32 0, i32 %24 ; [#uses=1]
+ store float 0.000000e+00, float* %74, align 4
+ %75 = fsub float -0.000000e+00, %2 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btQuadWord* %tmp5, i32 0, i32 0, i32 %4 ; [#uses=1]
+ store float %75, float* %76, align 4
+ %77 = getelementptr inbounds %struct.btQuadWord* %tmp5, i32 0, i32 0, i32 %46 ; [#uses=1]
+ store float 0.000000e+00, float* %77, align 4
+ %78 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btQuadWord* %tmp5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %80 = load float* %79, align 8 ; [#uses=1]
+ store float %80, float* %78, align 4
+ %81 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btQuadWord* %tmp5, i32 0, i32 0, i32 1 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ store float %83, float* %81, align 4
+ %84 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btQuadWord* %tmp5, i32 0, i32 0, i32 2 ; [#uses=1]
+ %86 = load float* %85, align 8 ; [#uses=1]
+ store float %86, float* %84, align 4
+ %87 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btQuadWord* %tmp5, i32 0, i32 0, i32 3 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ store float %89, float* %87, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12btConeShapeXC1Eff(%struct.btConeShapeX* %this, float %radius, float %height) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV11btConeShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %radius, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %height, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 11, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 4, i32 0 ; [#uses=2]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 4, i32 1 ; [#uses=2]
+ store i32 1, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 4, i32 2 ; [#uses=2]
+ store i32 2, i32* %7, align 4
+ %8 = fmul float %radius, %radius ; [#uses=1]
+ %9 = fmul float %height, %height ; [#uses=1]
+ %10 = fadd float %8, %9 ; [#uses=1]
+ %11 = tail call float @sqrtf(float %10) nounwind readonly ; [#uses=1]
+ %12 = fdiv float %radius, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %12, float* %13, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV12btConeShapeX, i32 0, i32 2), i32 (...)*** %1, align 4
+ store i32 1, i32* %5, align 4
+ store i32 0, i32* %6, align 4
+ store i32 2, i32* %7, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12btConeShapeXC2Eff(%struct.btConeShapeX* %this, float %radius, float %height) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV11btConeShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %radius, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %height, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 11, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 4, i32 0 ; [#uses=2]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 4, i32 1 ; [#uses=2]
+ store i32 1, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 4, i32 2 ; [#uses=2]
+ store i32 2, i32* %7, align 4
+ %8 = fmul float %radius, %radius ; [#uses=1]
+ %9 = fmul float %height, %height ; [#uses=1]
+ %10 = fadd float %8, %9 ; [#uses=1]
+ %11 = tail call float @sqrtf(float %10) nounwind readonly ; [#uses=1]
+ %12 = fdiv float %radius, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %12, float* %13, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV12btConeShapeX, i32 0, i32 2), i32 (...)*** %1, align 4
+ store i32 1, i32* %5, align 4
+ store i32 0, i32* %6, align 4
+ store i32 2, i32* %7, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12btConeShapeZC1Eff(%struct.btConeShapeX* %this, float %radius, float %height) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV11btConeShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %radius, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %height, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 11, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 4, i32 0 ; [#uses=2]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 4, i32 1 ; [#uses=2]
+ store i32 1, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 4, i32 2 ; [#uses=2]
+ store i32 2, i32* %7, align 4
+ %8 = fmul float %radius, %radius ; [#uses=1]
+ %9 = fmul float %height, %height ; [#uses=1]
+ %10 = fadd float %8, %9 ; [#uses=1]
+ %11 = tail call float @sqrtf(float %10) nounwind readonly ; [#uses=1]
+ %12 = fdiv float %radius, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %12, float* %13, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV12btConeShapeZ, i32 0, i32 2), i32 (...)*** %1, align 4
+ store i32 0, i32* %5, align 4
+ store i32 2, i32* %6, align 4
+ store i32 1, i32* %7, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12btConeShapeZC2Eff(%struct.btConeShapeX* %this, float %radius, float %height) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV11btConeShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %radius, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %height, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 11, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 4, i32 0 ; [#uses=2]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 4, i32 1 ; [#uses=2]
+ store i32 1, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 4, i32 2 ; [#uses=2]
+ store i32 2, i32* %7, align 4
+ %8 = fmul float %radius, %radius ; [#uses=1]
+ %9 = fmul float %height, %height ; [#uses=1]
+ %10 = fadd float %8, %9 ; [#uses=1]
+ %11 = tail call float @sqrtf(float %10) nounwind readonly ; [#uses=1]
+ %12 = fdiv float %radius, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btConeShapeX* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %12, float* %13, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV12btConeShapeZ, i32 0, i32 2), i32 (...)*** %1, align 4
+ store i32 0, i32* %5, align 4
+ store i32 2, i32* %6, align 4
+ store i32 1, i32* %7, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN11btConeShapeC1Eff(%struct.btConeShape* %this, float %radius, float %height) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV11btConeShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 2 ; [#uses=1]
+ store float %radius, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 3 ; [#uses=1]
+ store float %height, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 11, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 0 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 1, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 2, i32* %7, align 4
+ %8 = fmul float %radius, %radius ; [#uses=1]
+ %9 = fmul float %height, %height ; [#uses=1]
+ %10 = fadd float %8, %9 ; [#uses=1]
+ %11 = tail call float @sqrtf(float %10) nounwind readonly ; [#uses=1]
+ %12 = fdiv float %radius, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btConeShape* %this, i32 0, i32 1 ; [#uses=1]
+ store float %12, float* %13, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btConvexHullShapeC2EPKfii(%struct.btConvexHullShape* %this, float* nocapture %points, i32 %numPoints, i32 %stride) align 2 {
+invcont:
+ %0 = bitcast float* %points to i8* ; [#uses=1]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0 ; [#uses=2]
+ call void @_ZN34btPolyhedralConvexAabbCachingShapeC2Ev(%struct.btPolyhedralConvexAabbCachingShape* %2)
+ %3 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([30 x i32 (...)*]* @_ZTV17btConvexHullShape, i32 0, i32 2), i32 (...)*** %3, align 4
+ %4 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 4 ; [#uses=3]
+ store i8 1, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 3 ; [#uses=5]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %5, align 4
+ %6 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ store i32 0, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 4, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(%"struct.btAlignedObjectArray<btVector3>"* %9, i32 %numPoints, %struct.btQuadWord* %1) inlinehint
+ to label %invcont1 unwind label %lpad16
+
+invcont1: ; preds = %invcont
+ %10 = icmp sgt i32 %numPoints, 0 ; [#uses=1]
+ br i1 %10, label %bb.nph, label %bb3
+
+bb.nph: ; preds = %invcont1
+ %scevgep41 = getelementptr float* %points, i32 2 ; [#uses=1]
+ %scevgep4142 = bitcast float* %scevgep41 to i8* ; [#uses=1]
+ %scevgep45 = getelementptr float* %points, i32 1 ; [#uses=1]
+ %scevgep4546 = bitcast float* %scevgep45 to i8* ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %i.035 = phi i32 [ 0, %bb.nph ], [ %15, %bb ] ; [#uses=6]
+ %tmp = mul i32 %i.035, %stride ; [#uses=3]
+ %uglygep = getelementptr i8* %0, i32 %tmp ; [#uses=1]
+ %uglygep40 = bitcast i8* %uglygep to float* ; [#uses=1]
+ %uglygep43 = getelementptr i8* %scevgep4142, i32 %tmp ; [#uses=1]
+ %uglygep4344 = bitcast i8* %uglygep43 to float* ; [#uses=1]
+ %uglygep47 = getelementptr i8* %scevgep4546, i32 %tmp ; [#uses=1]
+ %uglygep4748 = bitcast i8* %uglygep47 to float* ; [#uses=1]
+ %11 = load %struct.btQuadWord** %5, align 4 ; [#uses=4]
+ %12 = load float* %uglygep40, align 4 ; [#uses=1]
+ %13 = load float* %uglygep4748, align 4 ; [#uses=1]
+ %14 = load float* %uglygep4344, align 4 ; [#uses=1]
+ %scevgep36 = getelementptr inbounds %struct.btQuadWord* %11, i32 %i.035, i32 0, i32 0 ; [#uses=1]
+ store float %12, float* %scevgep36, align 4
+ %scevgep37 = getelementptr %struct.btQuadWord* %11, i32 %i.035, i32 0, i32 1 ; [#uses=1]
+ store float %13, float* %scevgep37, align 4
+ %scevgep38 = getelementptr %struct.btQuadWord* %11, i32 %i.035, i32 0, i32 2 ; [#uses=1]
+ store float %14, float* %scevgep38, align 4
+ %scevgep39 = getelementptr %struct.btQuadWord* %11, i32 %i.035, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep39, align 4
+ %15 = add nsw i32 %i.035, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %15, %numPoints ; [#uses=1]
+ br i1 %exitcond, label %bb3, label %bb
+
+bb3: ; preds = %bb, %invcont1
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %2)
+ to label %return unwind label %lpad16
+
+invcont11: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr17)
+ unreachable
+
+return: ; preds = %bb3
+ ret void
+
+lpad16: ; preds = %bb3, %invcont
+ %eh_ptr17 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select19 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr17, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %16 = load %struct.btQuadWord** %5, align 4 ; [#uses=2]
+ %17 = icmp eq %struct.btQuadWord* %16, null ; [#uses=1]
+ br i1 %17, label %ppad, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad16
+ %18 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %18, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %19 = bitcast %struct.btQuadWord* %16 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %19)
+ to label %bb2.i.i.i unwind label %lpad20
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btQuadWord* null, %struct.btQuadWord** %5, align 4
+ br label %ppad
+
+lpad20: ; preds = %bb1.i.i.i
+ %eh_ptr21 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select23 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr21, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad24: ; preds = %ppad
+ %eh_ptr25 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select27 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr25, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i, %lpad16
+ store i8 1, i8* %4, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %5, align 4
+ store i32 0, i32* %6, align 4
+ store i32 0, i32* %7, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %3, align 4
+ %20 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %20)
+ to label %invcont11 unwind label %lpad24
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK17btConvexHullShape7getNameEv(%struct.btConvexHullShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([7 x i8]* @.str67, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK17btConvexHullShape28calculateSerializeBufferSizeEv(%struct.btConvexHullShape* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 68
+}
+
+; [#uses=1]
+define i32 @_ZNK17btConvexHullShape12getNumPlanesEv(%struct.btConvexHullShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=1]
+define void @_ZNK17btConvexHullShape8getPlaneER9btVector3S1_i(%struct.btConvexHullShape* nocapture %this, %struct.btQuadWord* nocapture %unnamed_arg, %struct.btQuadWord* nocapture %unnamed_arg2, i32 %unnamed_arg4) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define zeroext i8 @_ZNK17btConvexHullShape8isInsideERK9btVector3f(%struct.btConvexHullShape* nocapture %this, %struct.btQuadWord* nocapture %unnamed_arg, float %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define void @_ZNK17btConvexHullShape9getVertexEiR9btVector3(%struct.btConvexHullShape* nocapture %this, i32 %i, %struct.btQuadWord* nocapture %vtx) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %1 = load %struct.btQuadWord** %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btQuadWord* %1, i32 %i, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fmul float %3, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %1, i32 %i, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fmul float %8, %10 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %1, i32 %i, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fmul float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %16, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %11, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %6, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %20, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK17btConvexHullShape7getEdgeEiR9btVector3S1_(%struct.btConvexHullShape* nocapture %this, i32 %i, %struct.btQuadWord* nocapture %pa, %struct.btQuadWord* nocapture %pb) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = srem i32 %i, %1 ; [#uses=3]
+ %3 = add nsw i32 %i, 1 ; [#uses=1]
+ %4 = srem i32 %3, %1 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 3 ; [#uses=2]
+ %6 = load %struct.btQuadWord** %5, align 4 ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btQuadWord* %6, i32 %2, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fmul float %8, %10 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %6, i32 %2, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fmul float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %6, i32 %2, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fmul float %18, %20 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %21, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %16, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %11, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = load %struct.btQuadWord** %5, align 4 ; [#uses=3]
+ %27 = getelementptr inbounds %struct.btQuadWord* %26, i32 %4, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = load float* %9, align 4 ; [#uses=1]
+ %30 = fmul float %28, %29 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %26, i32 %4, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = load float* %14, align 4 ; [#uses=1]
+ %34 = fmul float %32, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %26, i32 %4, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = load float* %19, align 4 ; [#uses=1]
+ %38 = fmul float %36, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %38, float* %39, align 4
+ %40 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %34, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %30, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %42, align 4
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZNK17btConvexHullShape11getNumEdgesEv(%struct.btConvexHullShape* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=1]
+define i32 @_ZNK17btConvexHullShape14getNumVerticesEv(%struct.btConvexHullShape* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=1]
+define void @_ZNK17btConvexHullShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btConvexHullShape* nocapture %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) nounwind align 2 {
+entry:
+ %0 = icmp sgt i32 %numVectors, 0 ; [#uses=2]
+ br i1 %0, label %bb, label %bb10.preheader
+
+bb: ; preds = %bb, %entry
+ %i.019 = phi i32 [ %1, %bb ], [ 0, %entry ] ; [#uses=2]
+ %scevgep35 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.019, i32 0, i32 3 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %scevgep35, align 4
+ %1 = add nsw i32 %i.019, 1 ; [#uses=2]
+ %exitcond34 = icmp eq i32 %1, %numVectors ; [#uses=1]
+ br i1 %exitcond34, label %bb10.preheader, label %bb
+
+bb10.preheader: ; preds = %bb, %entry
+ %2 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp sgt i32 %3, 0 ; [#uses=1]
+ br i1 %4, label %bb.nph18, label %return
+
+bb.nph18: ; preds = %bb10.preheader
+ %5 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ br i1 %0, label %bb.nph.us, label %bb9
+
+bb9.us: ; preds = %bb7.us
+ %9 = load i32* %2, align 4 ; [#uses=1]
+ %10 = icmp sgt i32 %9, %tmp ; [#uses=1]
+ br i1 %10, label %bb.nph.us, label %return
+
+bb7.us: ; preds = %bb6.us, %bb5.us
+ %11 = add nsw i32 %j.016.us, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %11, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %bb9.us, label %bb5.us
+
+bb5.us: ; preds = %bb.nph.us, %bb7.us
+ %j.016.us = phi i32 [ 0, %bb.nph.us ], [ %11, %bb7.us ] ; [#uses=8]
+ %scevgep = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.016.us, i32 0, i32 3 ; [#uses=2]
+ %scevgep25 = getelementptr %struct.btQuadWord* %vectors, i32 %j.016.us, i32 0, i32 2 ; [#uses=1]
+ %scevgep26 = getelementptr %struct.btQuadWord* %vectors, i32 %j.016.us, i32 0, i32 1 ; [#uses=1]
+ %scevgep2728 = getelementptr inbounds %struct.btQuadWord* %vectors, i32 %j.016.us, i32 0, i32 0 ; [#uses=1]
+ %12 = load float* %scevgep2728, align 4 ; [#uses=1]
+ %13 = fmul float %12, %31 ; [#uses=1]
+ %14 = load float* %scevgep26, align 4 ; [#uses=1]
+ %15 = fmul float %14, %28 ; [#uses=1]
+ %16 = fadd float %13, %15 ; [#uses=1]
+ %17 = load float* %scevgep25, align 4 ; [#uses=1]
+ %18 = fmul float %17, %25 ; [#uses=1]
+ %19 = fadd float %16, %18 ; [#uses=2]
+ %20 = load float* %scevgep, align 4 ; [#uses=1]
+ %21 = fcmp olt float %20, %19 ; [#uses=1]
+ br i1 %21, label %bb6.us, label %bb7.us
+
+bb6.us: ; preds = %bb5.us
+ %scevgep2324 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %j.016.us, i32 0, i32 0 ; [#uses=1]
+ %scevgep22 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.016.us, i32 0, i32 1 ; [#uses=1]
+ %scevgep21 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.016.us, i32 0, i32 2 ; [#uses=1]
+ store float %31, float* %scevgep2324, align 4
+ store float %28, float* %scevgep22, align 4
+ store float %25, float* %scevgep21, align 4
+ store float %19, float* %scevgep, align 4
+ br label %bb7.us
+
+bb.nph.us: ; preds = %bb9.us, %bb.nph18
+ %i3.017.us = phi i32 [ %tmp, %bb9.us ], [ 0, %bb.nph18 ] ; [#uses=4]
+ %tmp = add i32 %i3.017.us, 1 ; [#uses=2]
+ %22 = load %struct.btQuadWord** %5, align 4 ; [#uses=3]
+ %scevgep32 = getelementptr %struct.btQuadWord* %22, i32 %i3.017.us, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %scevgep32, align 4 ; [#uses=1]
+ %24 = load float* %6, align 4 ; [#uses=1]
+ %25 = fmul float %23, %24 ; [#uses=2]
+ %scevgep31 = getelementptr %struct.btQuadWord* %22, i32 %i3.017.us, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %scevgep31, align 4 ; [#uses=1]
+ %27 = load float* %7, align 4 ; [#uses=1]
+ %28 = fmul float %26, %27 ; [#uses=2]
+ %scevgep2930 = getelementptr inbounds %struct.btQuadWord* %22, i32 %i3.017.us, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %scevgep2930, align 4 ; [#uses=1]
+ %30 = load float* %8, align 4 ; [#uses=1]
+ %31 = fmul float %29, %30 ; [#uses=2]
+ br label %bb5.us
+
+bb9: ; preds = %bb9, %bb.nph18
+ %i3.017 = phi i32 [ %tmp33, %bb9 ], [ 0, %bb.nph18 ] ; [#uses=1]
+ %tmp33 = add i32 %i3.017, 1 ; [#uses=2]
+ %32 = icmp sgt i32 %3, %tmp33 ; [#uses=1]
+ br i1 %32, label %bb9, label %return
+
+return: ; preds = %bb9, %bb9.us, %bb10.preheader
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK17btConvexHullShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btConvexHullShape* nocapture %this, %struct.btQuadWord* nocapture %vec) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=3]
+ %6 = icmp sgt i32 %5, 0 ; [#uses=1]
+ br i1 %6, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %8 = load %struct.btQuadWord** %7, align 4 ; [#uses=3]
+ %9 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %tmp = icmp sgt i32 %5, 1 ; [#uses=1]
+ %smax = select i1 %tmp, i32 %5, i32 1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb2, %bb.nph
+ %i.09 = phi i32 [ 0, %bb.nph ], [ %33, %bb2 ] ; [#uses=4]
+ %maxDot.18 = phi float [ 0xC3ABC16D60000000, %bb.nph ], [ %maxDot.0, %bb2 ] ; [#uses=2]
+ %scevgep = getelementptr %struct.btQuadWord* %8, i32 %i.09, i32 0, i32 2 ; [#uses=1]
+ %scevgep10 = getelementptr %struct.btQuadWord* %8, i32 %i.09, i32 0, i32 1 ; [#uses=1]
+ %scevgep1112 = getelementptr inbounds %struct.btQuadWord* %8, i32 %i.09, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %scevgep, align 4 ; [#uses=1]
+ %22 = fmul float %21, %10 ; [#uses=2]
+ %23 = load float* %scevgep10, align 4 ; [#uses=1]
+ %24 = fmul float %23, %12 ; [#uses=2]
+ %25 = load float* %scevgep1112, align 4 ; [#uses=1]
+ %26 = fmul float %25, %14 ; [#uses=2]
+ %27 = fmul float %16, %26 ; [#uses=1]
+ %28 = fmul float %18, %24 ; [#uses=1]
+ %29 = fadd float %27, %28 ; [#uses=1]
+ %30 = fmul float %20, %22 ; [#uses=1]
+ %31 = fadd float %29, %30 ; [#uses=2]
+ %32 = fcmp ogt float %31, %maxDot.18 ; [#uses=1]
+ br i1 %32, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ store float %26, float* %0, align 4
+ store float %24, float* %1, align 4
+ store float %22, float* %2, align 4
+ store float 0.000000e+00, float* %3, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %maxDot.0 = phi float [ %31, %bb1 ], [ %maxDot.18, %bb ] ; [#uses=1]
+ %33 = add nsw i32 %i.09, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %33, %smax ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb2, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btConvexHullShapeD0Ev(%struct.btConvexHullShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([30 x i32 (...)*]* @_ZTV17btConvexHullShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btQuadWord** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btQuadWord* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btQuadWord* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btQuadWord* null, %struct.btQuadWord** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %1, align 4
+ %8 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %10 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %10)
+ %11 = bitcast %struct.btConvexHullShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %11)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %12 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %12)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btConvexHullShapeD1Ev(%struct.btConvexHullShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([30 x i32 (...)*]* @_ZTV17btConvexHullShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btQuadWord** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btQuadWord* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btQuadWord* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btQuadWord* null, %struct.btQuadWord** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %1, align 4
+ %8 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %10 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %10)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %11 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %11)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN17btConvexHullShape15setLocalScalingERK9btVector3(%struct.btConvexHullShape* %this, %struct.btQuadWord* nocapture %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %12)
+ ret void
+}
+
+; [#uses=1]
+define i8* @_ZNK17btConvexHullShape9serializeEPvP12btSerializer(%struct.btConvexHullShape* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK16btCollisionShape9serializeEPvP12btSerializer(%struct.btCollisionShape* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds i8* %dataBuffer, i32 28 ; [#uses=1]
+ %scevgep.i.i = getelementptr %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i = bitcast i8* %2 to float* ; [#uses=1]
+ %3 = load float* %scevgep.i.i, align 4 ; [#uses=1]
+ store float %3, float* %scevgep4.i.i, align 4
+ %scevgep.1.i.i = getelementptr %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i = getelementptr i8* %dataBuffer, i32 32 ; [#uses=1]
+ %4 = bitcast i8* %scevgep4.1.i.i to float* ; [#uses=1]
+ %5 = load float* %scevgep.1.i.i, align 4 ; [#uses=1]
+ store float %5, float* %4, align 4
+ %scevgep.2.i.i = getelementptr %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i = getelementptr i8* %dataBuffer, i32 36 ; [#uses=1]
+ %6 = bitcast i8* %scevgep4.2.i.i to float* ; [#uses=1]
+ %7 = load float* %scevgep.2.i.i, align 4 ; [#uses=1]
+ store float %7, float* %6, align 4
+ %scevgep.3.i.i = getelementptr %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i = getelementptr i8* %dataBuffer, i32 40 ; [#uses=1]
+ %8 = bitcast i8* %scevgep4.3.i.i to float* ; [#uses=1]
+ %9 = load float* %scevgep.3.i.i, align 4 ; [#uses=1]
+ store float %9, float* %8, align 4
+ %10 = getelementptr inbounds i8* %dataBuffer, i32 12 ; [#uses=1]
+ %scevgep.i2.i = getelementptr %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i3.i = bitcast i8* %10 to float* ; [#uses=1]
+ %11 = load float* %scevgep.i2.i, align 4 ; [#uses=1]
+ store float %11, float* %scevgep4.i3.i, align 4
+ %scevgep.1.i4.i = getelementptr %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i5.i = getelementptr i8* %dataBuffer, i32 16 ; [#uses=1]
+ %12 = bitcast i8* %scevgep4.1.i5.i to float* ; [#uses=1]
+ %13 = load float* %scevgep.1.i4.i, align 4 ; [#uses=1]
+ store float %13, float* %12, align 4
+ %scevgep.2.i6.i = getelementptr %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i7.i = getelementptr i8* %dataBuffer, i32 20 ; [#uses=1]
+ %14 = bitcast i8* %scevgep4.2.i7.i to float* ; [#uses=1]
+ %15 = load float* %scevgep.2.i6.i, align 4 ; [#uses=1]
+ store float %15, float* %14, align 4
+ %scevgep.3.i8.i = getelementptr %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i9.i = getelementptr i8* %dataBuffer, i32 24 ; [#uses=1]
+ %16 = bitcast i8* %scevgep4.3.i9.i to float* ; [#uses=1]
+ %17 = load float* %scevgep.3.i8.i, align 4 ; [#uses=1]
+ store float %17, float* %16, align 4
+ %18 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %21 = bitcast i8* %20 to float* ; [#uses=1]
+ store float %19, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %23 = load i32* %22, align 4 ; [#uses=5]
+ %24 = getelementptr inbounds i8* %dataBuffer, i32 60 ; [#uses=1]
+ %25 = bitcast i8* %24 to i32* ; [#uses=1]
+ store i32 %23, i32* %25, align 4
+ %26 = icmp eq i32 %23, 0 ; [#uses=1]
+ br i1 %26, label %bb7, label %bb3
+
+bb3: ; preds = %entry
+ %27 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=3]
+ %28 = load i32 (...)*** %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds i32 (...)** %28, i32 7 ; [#uses=1]
+ %30 = load i32 (...)** %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %32 = load %struct.btQuadWord** %31, align 4 ; [#uses=1]
+ %33 = bitcast %struct.btQuadWord* %32 to i8* ; [#uses=1]
+ %34 = bitcast i32 (...)* %30 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %35 = tail call i8* %34(%struct.btActionInterface* %serializer, i8* %33) ; [#uses=1]
+ %36 = bitcast i8* %35 to %struct.btQuadWord* ; [#uses=1]
+ %37 = getelementptr inbounds i8* %dataBuffer, i32 52 ; [#uses=1]
+ %38 = bitcast i8* %37 to %struct.btQuadWord** ; [#uses=1]
+ store %struct.btQuadWord* %36, %struct.btQuadWord** %38, align 4
+ %39 = getelementptr inbounds i8* %dataBuffer, i32 56 ; [#uses=1]
+ %40 = bitcast i8* %39 to %struct.btVector3DoubleData** ; [#uses=1]
+ store %struct.btVector3DoubleData* null, %struct.btVector3DoubleData** %40, align 4
+ %41 = load i32 (...)*** %27, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds i32 (...)** %41, i32 4 ; [#uses=1]
+ %43 = load i32 (...)** %42, align 4 ; [#uses=1]
+ %44 = bitcast i32 (...)* %43 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %45 = tail call %struct.btChunk* %44(%struct.btActionInterface* %serializer, i32 16, i32 %23) ; [#uses=2]
+ %46 = icmp sgt i32 %23, 0 ; [#uses=1]
+ br i1 %46, label %bb.nph, label %bb6
+
+bb.nph: ; preds = %bb3
+ %47 = getelementptr inbounds %struct.btChunk* %45, i32 0, i32 2 ; [#uses=1]
+ %48 = load i8** %47, align 4 ; [#uses=4]
+ br label %bb4
+
+bb4: ; preds = %bb4, %bb.nph
+ %i.010 = phi i32 [ 0, %bb.nph ], [ %54, %bb4 ] ; [#uses=6]
+ %tmp = shl i32 %i.010, 4 ; [#uses=4]
+ %scevgep15 = getelementptr i8* %48, i32 %tmp ; [#uses=1]
+ %scevgep4.i = bitcast i8* %scevgep15 to float* ; [#uses=1]
+ %tmp1726 = or i32 %tmp, 4 ; [#uses=1]
+ %scevgep18 = getelementptr i8* %48, i32 %tmp1726 ; [#uses=1]
+ %scevgep4.1.i = bitcast i8* %scevgep18 to float* ; [#uses=1]
+ %tmp2027 = or i32 %tmp, 8 ; [#uses=1]
+ %scevgep21 = getelementptr i8* %48, i32 %tmp2027 ; [#uses=1]
+ %scevgep4.2.i = bitcast i8* %scevgep21 to float* ; [#uses=1]
+ %tmp2328 = or i32 %tmp, 12 ; [#uses=1]
+ %scevgep24 = getelementptr i8* %48, i32 %tmp2328 ; [#uses=1]
+ %scevgep4.3.i = bitcast i8* %scevgep24 to float* ; [#uses=1]
+ %49 = load %struct.btQuadWord** %31, align 4 ; [#uses=4]
+ %scevgep.i = getelementptr inbounds %struct.btQuadWord* %49, i32 %i.010, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %scevgep.i, align 4 ; [#uses=1]
+ store float %50, float* %scevgep4.i, align 4
+ %scevgep.1.i = getelementptr %struct.btQuadWord* %49, i32 %i.010, i32 0, i32 1 ; [#uses=1]
+ %51 = load float* %scevgep.1.i, align 4 ; [#uses=1]
+ store float %51, float* %scevgep4.1.i, align 4
+ %scevgep.2.i = getelementptr %struct.btQuadWord* %49, i32 %i.010, i32 0, i32 2 ; [#uses=1]
+ %52 = load float* %scevgep.2.i, align 4 ; [#uses=1]
+ store float %52, float* %scevgep4.2.i, align 4
+ %scevgep.3.i = getelementptr %struct.btQuadWord* %49, i32 %i.010, i32 0, i32 3 ; [#uses=1]
+ %53 = load float* %scevgep.3.i, align 4 ; [#uses=1]
+ store float %53, float* %scevgep4.3.i, align 4
+ %54 = add nsw i32 %i.010, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %54, %23 ; [#uses=1]
+ br i1 %exitcond, label %bb6, label %bb4
+
+bb6: ; preds = %bb4, %bb3
+ %55 = load i32 (...)*** %27, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds i32 (...)** %55, i32 5 ; [#uses=1]
+ %57 = load i32 (...)** %56, align 4 ; [#uses=1]
+ %58 = load %struct.btQuadWord** %31, align 4 ; [#uses=1]
+ %59 = bitcast %struct.btQuadWord* %58 to i8* ; [#uses=1]
+ %60 = bitcast i32 (...)* %57 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ tail call void %60(%struct.btActionInterface* %serializer, %struct.btChunk* %45, i8* getelementptr inbounds ([19 x i8]* @.str268, i32 0, i32 0), i32 1497453121, i8* %59)
+ ret i8* getelementptr inbounds ([22 x i8]* @.str369, i32 0, i32 0)
+
+bb7: ; preds = %entry
+ %61 = getelementptr inbounds i8* %dataBuffer, i32 52 ; [#uses=1]
+ %62 = bitcast i8* %61 to %struct.btQuadWord** ; [#uses=1]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %62, align 4
+ %63 = getelementptr inbounds i8* %dataBuffer, i32 56 ; [#uses=1]
+ %64 = bitcast i8* %63 to %struct.btVector3DoubleData** ; [#uses=1]
+ store %struct.btVector3DoubleData* null, %struct.btVector3DoubleData** %64, align 4
+ ret i8* getelementptr inbounds ([22 x i8]* @.str369, i32 0, i32 0)
+}
+
+; [#uses=1]
+define void @_ZNK17btConvexHullShape24localGetSupportingVertexERK9btVector3(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvexHullShape* %this, %struct.btQuadWord* %vec) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 16 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btQuadWord*, %struct.btConvexHullShape*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %4(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvexHullShape* %this, %struct.btQuadWord* %vec)
+ %5 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 11 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %9 = bitcast i32 (...)* %7 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %10 = tail call float %9(%struct.btConvexInternalShape* %8) ; [#uses=1]
+ %11 = fcmp une float %10, 0.000000e+00 ; [#uses=1]
+ br i1 %11, label %bb, label %return
+
+bb: ; preds = %entry
+ %12 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=3]
+ %16 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=3]
+ %18 = fmul float %13, %13 ; [#uses=1]
+ %19 = fmul float %15, %15 ; [#uses=1]
+ %20 = fadd float %18, %19 ; [#uses=1]
+ %21 = fmul float %17, %17 ; [#uses=1]
+ %22 = fadd float %20, %21 ; [#uses=1]
+ %23 = fcmp olt float %22, 0x3D10000000000000 ; [#uses=3]
+ %vecnorm.0.0.0 = select i1 %23, float -1.000000e+00, float %13 ; [#uses=3]
+ %vecnorm.0.1.0 = select i1 %23, float -1.000000e+00, float %15 ; [#uses=3]
+ %vecnorm.0.2.0 = select i1 %23, float -1.000000e+00, float %17 ; [#uses=3]
+ %24 = fmul float %vecnorm.0.0.0, %vecnorm.0.0.0 ; [#uses=1]
+ %25 = fmul float %vecnorm.0.1.0, %vecnorm.0.1.0 ; [#uses=1]
+ %26 = fadd float %24, %25 ; [#uses=1]
+ %27 = fmul float %vecnorm.0.2.0, %vecnorm.0.2.0 ; [#uses=1]
+ %28 = fadd float %26, %27 ; [#uses=1]
+ %29 = tail call float @sqrtf(float %28) nounwind readonly ; [#uses=1]
+ %30 = fdiv float 1.000000e+00, %29 ; [#uses=3]
+ %31 = fmul float %vecnorm.0.0.0, %30 ; [#uses=1]
+ %32 = fmul float %vecnorm.0.1.0, %30 ; [#uses=1]
+ %33 = fmul float %vecnorm.0.2.0, %30 ; [#uses=1]
+ %34 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds i32 (...)** %34, i32 11 ; [#uses=1]
+ %36 = load i32 (...)** %35, align 4 ; [#uses=1]
+ %37 = bitcast i32 (...)* %36 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %38 = tail call float %37(%struct.btConvexInternalShape* %8) ; [#uses=3]
+ %39 = fmul float %33, %38 ; [#uses=1]
+ %40 = fmul float %32, %38 ; [#uses=1]
+ %41 = fmul float %31, %38 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=2]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fadd float %43, %41 ; [#uses=1]
+ store float %44, float* %42, align 4
+ %45 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=2]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fadd float %46, %40 ; [#uses=1]
+ store float %47, float* %45, align 4
+ %48 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=2]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fadd float %49, %39 ; [#uses=1]
+ store float %50, float* %48, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI9btVector3E9push_backERKS0_(%"struct.btAlignedObjectArray<btVector3>"* nocapture %this, %struct.btQuadWord* nocapture %_Val) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.288.0.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.288.0.i ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb1
+
+bb.i: ; preds = %bb
+ %8 = icmp eq i32 %iftmp.288.0.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayI9btVector3E8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %9 = shl i32 %iftmp.288.0.i, 4 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %10 to %struct.btQuadWord* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI9btVector3E8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayI9btVector3E8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %11 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %12 = phi %struct.btQuadWord* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=6]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayI9btVector3E4copyEiiPS0_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayI9btVector3E8allocateEi.exit.i
+ %14 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=10]
+ %scevgep.i.i = getelementptr %struct.btQuadWord* %12, i32 %indvar.i.i ; [#uses=1]
+ %15 = icmp eq %struct.btQuadWord* %scevgep.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %scevgep14.i.i = getelementptr %struct.btQuadWord* %12, i32 %indvar.i.i, i32 0, i32 1 ; [#uses=1]
+ %scevgep15.i.i = getelementptr %struct.btQuadWord* %12, i32 %indvar.i.i, i32 0, i32 2 ; [#uses=1]
+ %scevgep16.i.i = getelementptr %struct.btQuadWord* %12, i32 %indvar.i.i, i32 0, i32 3 ; [#uses=1]
+ %scevgep13.i.i = getelementptr inbounds %struct.btQuadWord* %12, i32 %indvar.i.i, i32 0, i32 0 ; [#uses=1]
+ %16 = load %struct.btQuadWord** %14, align 4 ; [#uses=4]
+ %scevgep89.i.i = getelementptr inbounds %struct.btQuadWord* %16, i32 %indvar.i.i, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %scevgep89.i.i, align 4 ; [#uses=1]
+ store float %17, float* %scevgep13.i.i, align 4
+ %scevgep10.i.i = getelementptr %struct.btQuadWord* %16, i32 %indvar.i.i, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %scevgep10.i.i, align 4 ; [#uses=1]
+ store float %18, float* %scevgep14.i.i, align 4
+ %scevgep11.i.i = getelementptr %struct.btQuadWord* %16, i32 %indvar.i.i, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %scevgep11.i.i, align 4 ; [#uses=1]
+ store float %19, float* %scevgep15.i.i, align 4
+ %scevgep12.i.i = getelementptr %struct.btQuadWord* %16, i32 %indvar.i.i, i32 0, i32 3 ; [#uses=1]
+ %20 = load float* %scevgep12.i.i, align 4 ; [#uses=1]
+ store float %20, float* %scevgep16.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI9btVector3E4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI9btVector3E4copyEiiPS0_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayI9btVector3E8allocateEi.exit.i
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 3 ; [#uses=3]
+ %22 = load %struct.btQuadWord** %21, align 4 ; [#uses=2]
+ %23 = icmp eq %struct.btQuadWord* %22, null ; [#uses=1]
+ br i1 %23, label %_ZN20btAlignedObjectArrayI9btVector3E10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI9btVector3E4copyEiiPS0_.exit.i
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 4 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %26 = bitcast %struct.btQuadWord* %22 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %26)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btQuadWord* null, %struct.btQuadWord** %21, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3E10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayI9btVector3E10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI9btVector3E4copyEiiPS0_.exit.i
+ %27 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %27, align 4
+ store %struct.btQuadWord* %12, %struct.btQuadWord** %21, align 4
+ store i32 %iftmp.288.0.i, i32* %2, align 4
+ %.pre11 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayI9btVector3E10deallocateEv.exit.i, %bb, %entry
+ %28 = phi i32 [ %.pre11, %_ZN20btAlignedObjectArrayI9btVector3E10deallocateEv.exit.i ], [ %1, %entry ], [ %1, %bb ] ; [#uses=6]
+ %29 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 3 ; [#uses=1]
+ %30 = load %struct.btQuadWord** %29, align 4 ; [#uses=5]
+ %31 = getelementptr inbounds %struct.btQuadWord* %30, i32 %28 ; [#uses=1]
+ %32 = icmp eq %struct.btQuadWord* %31, null ; [#uses=1]
+ br i1 %32, label %bb4, label %bb2
+
+bb2: ; preds = %bb1
+ %33 = getelementptr inbounds %struct.btQuadWord* %30, i32 %28, i32 0, i32 0 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %_Val, i32 0, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.btQuadWord* %30, i32 %28, i32 0, i32 1 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %_Val, i32 0, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds %struct.btQuadWord* %30, i32 %28, i32 0, i32 2 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuadWord* %_Val, i32 0, i32 0, i32 2 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ store float %41, float* %39, align 4
+ %42 = getelementptr inbounds %struct.btQuadWord* %30, i32 %28, i32 0, i32 3 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btQuadWord* %_Val, i32 0, i32 0, i32 3 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ store float %44, float* %42, align 4
+ %.pre12 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb2, %bb1
+ %45 = phi i32 [ %28, %bb1 ], [ %.pre12, %bb2 ] ; [#uses=1]
+ %46 = add nsw i32 %45, 1 ; [#uses=1]
+ store i32 %46, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btConvexHullShape8addPointERK9btVector3(%struct.btConvexHullShape* %this, %struct.btQuadWord* nocapture %point) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI9btVector3E9push_backERKS0_(%"struct.btAlignedObjectArray<btVector3>"* %0, %struct.btQuadWord* %point) inlinehint
+ %1 = getelementptr inbounds %struct.btConvexHullShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %1)
+ ret void
+}
+
+; [#uses=10]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(%"struct.btAlignedObjectArray<btVector3>"* nocapture %this, i32 %newsize, %struct.btQuadWord* nocapture %fillData) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = icmp sgt i32 %1, %newsize ; [#uses=1]
+ br i1 %2, label %bb12, label %bb3
+
+bb3: ; preds = %entry
+ %3 = icmp slt i32 %1, %newsize ; [#uses=2]
+ br i1 %3, label %bb4, label %bb12
+
+bb4: ; preds = %bb3
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 2 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp slt i32 %5, %newsize ; [#uses=1]
+ br i1 %6, label %bb.i, label %bb.nph
+
+bb.i: ; preds = %bb4
+ %7 = icmp eq i32 %newsize, 0 ; [#uses=1]
+ br i1 %7, label %_ZN20btAlignedObjectArrayI9btVector3E8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %8 = shl i32 %newsize, 4 ; [#uses=1]
+ %9 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %8, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %9 to %struct.btQuadWord* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI9btVector3E8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayI9btVector3E8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %10 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %11 = phi %struct.btQuadWord* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=6]
+ %12 = icmp sgt i32 %10, 0 ; [#uses=1]
+ br i1 %12, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayI9btVector3E4copyEiiPS0_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayI9btVector3E8allocateEi.exit.i
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=10]
+ %scevgep.i.i = getelementptr %struct.btQuadWord* %11, i32 %indvar.i.i ; [#uses=1]
+ %14 = icmp eq %struct.btQuadWord* %scevgep.i.i, null ; [#uses=1]
+ br i1 %14, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %scevgep14.i.i = getelementptr %struct.btQuadWord* %11, i32 %indvar.i.i, i32 0, i32 1 ; [#uses=1]
+ %scevgep15.i.i = getelementptr %struct.btQuadWord* %11, i32 %indvar.i.i, i32 0, i32 2 ; [#uses=1]
+ %scevgep16.i.i = getelementptr %struct.btQuadWord* %11, i32 %indvar.i.i, i32 0, i32 3 ; [#uses=1]
+ %scevgep13.i.i = getelementptr inbounds %struct.btQuadWord* %11, i32 %indvar.i.i, i32 0, i32 0 ; [#uses=1]
+ %15 = load %struct.btQuadWord** %13, align 4 ; [#uses=4]
+ %scevgep89.i.i = getelementptr inbounds %struct.btQuadWord* %15, i32 %indvar.i.i, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %scevgep89.i.i, align 4 ; [#uses=1]
+ store float %16, float* %scevgep13.i.i, align 4
+ %scevgep10.i.i = getelementptr %struct.btQuadWord* %15, i32 %indvar.i.i, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %scevgep10.i.i, align 4 ; [#uses=1]
+ store float %17, float* %scevgep14.i.i, align 4
+ %scevgep11.i.i = getelementptr %struct.btQuadWord* %15, i32 %indvar.i.i, i32 0, i32 2 ; [#uses=1]
+ %18 = load float* %scevgep11.i.i, align 4 ; [#uses=1]
+ store float %18, float* %scevgep15.i.i, align 4
+ %scevgep12.i.i = getelementptr %struct.btQuadWord* %15, i32 %indvar.i.i, i32 0, i32 3 ; [#uses=1]
+ %19 = load float* %scevgep12.i.i, align 4 ; [#uses=1]
+ store float %19, float* %scevgep16.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond23 = icmp eq i32 %indvar.next.i.i, %10 ; [#uses=1]
+ br i1 %exitcond23, label %_ZNK20btAlignedObjectArrayI9btVector3E4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI9btVector3E4copyEiiPS0_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayI9btVector3E8allocateEi.exit.i
+ %20 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 3 ; [#uses=3]
+ %21 = load %struct.btQuadWord** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.btQuadWord* %21, null ; [#uses=1]
+ br i1 %22, label %bb11.preheader, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI9btVector3E4copyEiiPS0_.exit.i
+ %23 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %25 = bitcast %struct.btQuadWord* %21 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %25)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btQuadWord* null, %struct.btQuadWord** %20, align 4
+ br label %bb11.preheader
+
+bb11.preheader: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI9btVector3E4copyEiiPS0_.exit.i
+ %26 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %26, align 4
+ store %struct.btQuadWord* %11, %struct.btQuadWord** %20, align 4
+ store i32 %newsize, i32* %4, align 4
+ br i1 %3, label %bb.nph, label %bb12
+
+bb.nph: ; preds = %bb11.preheader, %bb4
+ %27 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %this, i32 0, i32 3 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %fillData, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuadWord* %fillData, i32 0, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %fillData, i32 0, i32 0, i32 2 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %fillData, i32 0, i32 0, i32 3 ; [#uses=1]
+ %tmp = sub i32 %newsize, %1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb10, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb10 ] ; [#uses=2]
+ %tmp17 = add i32 %1, %indvar ; [#uses=5]
+ %32 = load %struct.btQuadWord** %27, align 4 ; [#uses=5]
+ %scevgep = getelementptr %struct.btQuadWord* %32, i32 %tmp17 ; [#uses=1]
+ %33 = icmp eq %struct.btQuadWord* %scevgep, null ; [#uses=1]
+ br i1 %33, label %bb10, label %bb8
+
+bb8: ; preds = %bb7
+ %34 = load float* %28, align 4 ; [#uses=1]
+ %scevgep1819 = getelementptr inbounds %struct.btQuadWord* %32, i32 %tmp17, i32 0, i32 0 ; [#uses=1]
+ store float %34, float* %scevgep1819, align 4
+ %35 = load float* %29, align 4 ; [#uses=1]
+ %scevgep20 = getelementptr %struct.btQuadWord* %32, i32 %tmp17, i32 0, i32 1 ; [#uses=1]
+ store float %35, float* %scevgep20, align 4
+ %36 = load float* %30, align 4 ; [#uses=1]
+ %scevgep21 = getelementptr %struct.btQuadWord* %32, i32 %tmp17, i32 0, i32 2 ; [#uses=1]
+ store float %36, float* %scevgep21, align 4
+ %37 = load float* %31, align 4 ; [#uses=1]
+ %scevgep22 = getelementptr %struct.btQuadWord* %32, i32 %tmp17, i32 0, i32 3 ; [#uses=1]
+ store float %37, float* %scevgep22, align 4
+ br label %bb10
+
+bb10: ; preds = %bb8, %bb7
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; [#uses=1]
+ br i1 %exitcond, label %bb12, label %bb7
+
+bb12: ; preds = %bb10, %bb11.preheader, %bb3, %entry
+ store i32 %newsize, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btConvexHullShapeC1EPKfii(%struct.btConvexHullShape* %this, float* nocapture %points, i32 %numPoints, i32 %stride) align 2 {
+entry:
+ tail call void @_ZN17btConvexHullShapeC2EPKfii(%struct.btConvexHullShape* %this, float* %points, i32 %numPoints, i32 %stride)
+ ret void
+}
+
+; [#uses=35]
+define void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeC2Ev(%struct.btConvexShape* %0)
+ %1 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 3 ; [#uses=1]
+ store float 0x3FA47AE140000000, float* %6, align 4
+ ret void
+}
+
+; [#uses=6]
+define void @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3(%struct.btConvexInternalShape* nocapture %this, %struct.btQuadWord* nocapture %scaling) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = tail call float @fabsf(float %1) nounwind readnone ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = tail call float @fabsf(float %4) nounwind readnone ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = tail call float @fabsf(float %7) nounwind readnone ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %8, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %5, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %2, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK21btConvexInternalShape11getAabbSlowERK11btTransformR9btVector3S4_(%struct.btConvexInternalShape* %this, %struct.btTransform* %trans, %struct.btQuadWord* nocapture %minAabb, %struct.btQuadWord* nocapture %maxAabb) align 2 {
+bb.nph:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %vec = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %sv = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %tmp = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %3 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32 (...)** %4, i32 11 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = bitcast i32 (...)* %6 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %8 = call float %7(%struct.btConvexInternalShape* %this) ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=3]
+ %11 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=3]
+ %12 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=4]
+ %14 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=4]
+ %15 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=4]
+ %16 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=4]
+ %17 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=4]
+ %18 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=4]
+ %19 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %20 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=4]
+ %21 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=4]
+ %22 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %sv, i32 0, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %sv, i32 0, i32 0, i32 1 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %sv, i32 0, i32 0, i32 2 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %31 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %32 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 0 ; [#uses=2]
+ %33 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 1 ; [#uses=2]
+ %34 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 2 ; [#uses=2]
+ %35 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 3 ; [#uses=2]
+ %36 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %i.05 = phi i32 [ 0, %bb.nph ], [ %175, %bb ] ; [#uses=5]
+ %scevgep = getelementptr %struct.btQuadWord* %vec, i32 0, i32 0, i32 %i.05 ; [#uses=2]
+ %scevgep6 = getelementptr %struct.btQuadWord* %tmp, i32 0, i32 0, i32 %i.05 ; [#uses=2]
+ %scevgep7 = getelementptr %struct.btQuadWord* %maxAabb, i32 0, i32 0, i32 %i.05 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btQuadWord* %minAabb, i32 0, i32 0, i32 %i.05 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 8
+ store float 0.000000e+00, float* %10, align 4
+ store float 0.000000e+00, float* %11, align 8
+ store float 0.000000e+00, float* %12, align 4
+ store float 1.000000e+00, float* %scevgep, align 4
+ %43 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds i32 (...)** %43, i32 15 ; [#uses=1]
+ %45 = load i32 (...)** %44, align 4 ; [#uses=1]
+ %46 = load float* %13, align 4 ; [#uses=1]
+ %47 = load float* %9, align 8 ; [#uses=3]
+ %48 = fmul float %46, %47 ; [#uses=1]
+ %49 = load float* %14, align 4 ; [#uses=1]
+ %50 = load float* %10, align 4 ; [#uses=3]
+ %51 = fmul float %49, %50 ; [#uses=1]
+ %52 = fadd float %48, %51 ; [#uses=1]
+ %53 = load float* %15, align 4 ; [#uses=1]
+ %54 = load float* %11, align 8 ; [#uses=3]
+ %55 = fmul float %53, %54 ; [#uses=1]
+ %56 = fadd float %52, %55 ; [#uses=1]
+ %57 = load float* %16, align 4 ; [#uses=1]
+ %58 = fmul float %57, %47 ; [#uses=1]
+ %59 = load float* %17, align 4 ; [#uses=1]
+ %60 = fmul float %59, %50 ; [#uses=1]
+ %61 = fadd float %58, %60 ; [#uses=1]
+ %62 = load float* %18, align 4 ; [#uses=1]
+ %63 = fmul float %62, %54 ; [#uses=1]
+ %64 = fadd float %61, %63 ; [#uses=1]
+ %65 = load float* %19, align 4 ; [#uses=1]
+ %66 = fmul float %65, %47 ; [#uses=1]
+ %67 = load float* %20, align 4 ; [#uses=1]
+ %68 = fmul float %67, %50 ; [#uses=1]
+ %69 = fadd float %66, %68 ; [#uses=1]
+ %70 = load float* %21, align 4 ; [#uses=1]
+ %71 = fmul float %70, %54 ; [#uses=1]
+ %72 = fadd float %69, %71 ; [#uses=1]
+ store float %72, float* %22, align 8
+ store float %64, float* %23, align 4
+ store float %56, float* %24, align 8
+ store float 0.000000e+00, float* %25, align 4
+ %73 = bitcast i32 (...)* %45 to void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %73(%struct.btQuadWord* noalias sret %sv, %struct.btConvexInternalShape* %this, %struct.btQuadWord* %2)
+ %74 = load float* %21, align 4 ; [#uses=1]
+ %75 = load float* %26, align 8 ; [#uses=3]
+ %76 = fmul float %74, %75 ; [#uses=1]
+ %77 = load float* %18, align 4 ; [#uses=1]
+ %78 = load float* %27, align 4 ; [#uses=3]
+ %79 = fmul float %77, %78 ; [#uses=1]
+ %80 = fadd float %76, %79 ; [#uses=1]
+ %81 = load float* %15, align 4 ; [#uses=1]
+ %82 = load float* %28, align 8 ; [#uses=3]
+ %83 = fmul float %81, %82 ; [#uses=1]
+ %84 = fadd float %80, %83 ; [#uses=1]
+ %85 = load float* %29, align 4 ; [#uses=1]
+ %86 = fadd float %84, %85 ; [#uses=1]
+ %87 = load float* %20, align 4 ; [#uses=1]
+ %88 = fmul float %87, %75 ; [#uses=1]
+ %89 = load float* %17, align 4 ; [#uses=1]
+ %90 = fmul float %89, %78 ; [#uses=1]
+ %91 = fadd float %88, %90 ; [#uses=1]
+ %92 = load float* %14, align 4 ; [#uses=1]
+ %93 = fmul float %92, %82 ; [#uses=1]
+ %94 = fadd float %91, %93 ; [#uses=1]
+ %95 = load float* %30, align 4 ; [#uses=1]
+ %96 = fadd float %94, %95 ; [#uses=1]
+ %97 = load float* %19, align 4 ; [#uses=1]
+ %98 = fmul float %97, %75 ; [#uses=1]
+ %99 = load float* %16, align 4 ; [#uses=1]
+ %100 = fmul float %99, %78 ; [#uses=1]
+ %101 = fadd float %98, %100 ; [#uses=1]
+ %102 = load float* %13, align 4 ; [#uses=1]
+ %103 = fmul float %102, %82 ; [#uses=1]
+ %104 = fadd float %101, %103 ; [#uses=1]
+ %105 = load float* %31, align 4 ; [#uses=1]
+ %106 = fadd float %104, %105 ; [#uses=1]
+ store float %106, float* %32, align 8
+ store float %96, float* %33, align 4
+ store float %86, float* %34, align 8
+ store float 0.000000e+00, float* %35, align 4
+ %107 = load float* %scevgep6, align 4 ; [#uses=1]
+ %108 = fadd float %107, %8 ; [#uses=1]
+ store float %108, float* %scevgep7, align 4
+ store float -1.000000e+00, float* %scevgep, align 4
+ %109 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %110 = getelementptr inbounds i32 (...)** %109, i32 15 ; [#uses=1]
+ %111 = load i32 (...)** %110, align 4 ; [#uses=1]
+ %112 = load float* %13, align 4 ; [#uses=1]
+ %113 = load float* %9, align 8 ; [#uses=3]
+ %114 = fmul float %112, %113 ; [#uses=1]
+ %115 = load float* %14, align 4 ; [#uses=1]
+ %116 = load float* %10, align 4 ; [#uses=3]
+ %117 = fmul float %115, %116 ; [#uses=1]
+ %118 = fadd float %114, %117 ; [#uses=1]
+ %119 = load float* %15, align 4 ; [#uses=1]
+ %120 = load float* %11, align 8 ; [#uses=3]
+ %121 = fmul float %119, %120 ; [#uses=1]
+ %122 = fadd float %118, %121 ; [#uses=1]
+ %123 = load float* %16, align 4 ; [#uses=1]
+ %124 = fmul float %123, %113 ; [#uses=1]
+ %125 = load float* %17, align 4 ; [#uses=1]
+ %126 = fmul float %125, %116 ; [#uses=1]
+ %127 = fadd float %124, %126 ; [#uses=1]
+ %128 = load float* %18, align 4 ; [#uses=1]
+ %129 = fmul float %128, %120 ; [#uses=1]
+ %130 = fadd float %127, %129 ; [#uses=1]
+ %131 = load float* %19, align 4 ; [#uses=1]
+ %132 = fmul float %131, %113 ; [#uses=1]
+ %133 = load float* %20, align 4 ; [#uses=1]
+ %134 = fmul float %133, %116 ; [#uses=1]
+ %135 = fadd float %132, %134 ; [#uses=1]
+ %136 = load float* %21, align 4 ; [#uses=1]
+ %137 = fmul float %136, %120 ; [#uses=1]
+ %138 = fadd float %135, %137 ; [#uses=1]
+ store float %138, float* %36, align 8
+ store float %130, float* %37, align 4
+ store float %122, float* %38, align 8
+ store float 0.000000e+00, float* %39, align 4
+ %139 = bitcast i32 (...)* %111 to void (%struct.btQuadWord*, %struct.btConvexInternalShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %139(%struct.btQuadWord* noalias sret %1, %struct.btConvexInternalShape* %this, %struct.btQuadWord* %0)
+ %140 = load float* %21, align 4 ; [#uses=1]
+ %141 = load float* %40, align 8 ; [#uses=3]
+ %142 = fmul float %140, %141 ; [#uses=1]
+ %143 = load float* %18, align 4 ; [#uses=1]
+ %144 = load float* %41, align 4 ; [#uses=3]
+ %145 = fmul float %143, %144 ; [#uses=1]
+ %146 = fadd float %142, %145 ; [#uses=1]
+ %147 = load float* %15, align 4 ; [#uses=1]
+ %148 = load float* %42, align 8 ; [#uses=3]
+ %149 = fmul float %147, %148 ; [#uses=1]
+ %150 = fadd float %146, %149 ; [#uses=1]
+ %151 = load float* %29, align 4 ; [#uses=1]
+ %152 = fadd float %150, %151 ; [#uses=1]
+ %153 = load float* %20, align 4 ; [#uses=1]
+ %154 = fmul float %153, %141 ; [#uses=1]
+ %155 = load float* %17, align 4 ; [#uses=1]
+ %156 = fmul float %155, %144 ; [#uses=1]
+ %157 = fadd float %154, %156 ; [#uses=1]
+ %158 = load float* %14, align 4 ; [#uses=1]
+ %159 = fmul float %158, %148 ; [#uses=1]
+ %160 = fadd float %157, %159 ; [#uses=1]
+ %161 = load float* %30, align 4 ; [#uses=1]
+ %162 = fadd float %160, %161 ; [#uses=1]
+ %163 = load float* %19, align 4 ; [#uses=1]
+ %164 = fmul float %163, %141 ; [#uses=1]
+ %165 = load float* %16, align 4 ; [#uses=1]
+ %166 = fmul float %165, %144 ; [#uses=1]
+ %167 = fadd float %164, %166 ; [#uses=1]
+ %168 = load float* %13, align 4 ; [#uses=1]
+ %169 = fmul float %168, %148 ; [#uses=1]
+ %170 = fadd float %167, %169 ; [#uses=1]
+ %171 = load float* %31, align 4 ; [#uses=1]
+ %172 = fadd float %170, %171 ; [#uses=1]
+ store float %172, float* %32, align 8
+ store float %162, float* %33, align 4
+ store float %152, float* %34, align 8
+ store float 0.000000e+00, float* %35, align 4
+ %173 = load float* %scevgep6, align 4 ; [#uses=1]
+ %174 = fsub float %173, %8 ; [#uses=1]
+ store float %174, float* %scevgep8, align 4
+ %175 = add nsw i32 %i.05, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %175, 3 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK32btConvexInternalAabbCachingShape7getAabbERK11btTransformR9btVector3S4_(%struct.btConvexInternalAabbCachingShape* %this, %struct.btTransform* nocapture %trans, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0 ; [#uses=1]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ %11 = fsub float %8, %10 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=2]
+ %16 = fsub float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=2]
+ %21 = fsub float %18, %20 ; [#uses=1]
+ %22 = fmul float %11, 5.000000e-01 ; [#uses=1]
+ %23 = fmul float %16, 5.000000e-01 ; [#uses=1]
+ %24 = fmul float %21, 5.000000e-01 ; [#uses=1]
+ %25 = fadd float %24, %6 ; [#uses=3]
+ %26 = fadd float %23, %6 ; [#uses=3]
+ %27 = fadd float %22, %6 ; [#uses=3]
+ %28 = fadd float %8, %10 ; [#uses=1]
+ %29 = fadd float %13, %15 ; [#uses=1]
+ %30 = fadd float %18, %20 ; [#uses=1]
+ %31 = fmul float %28, 5.000000e-01 ; [#uses=3]
+ %32 = fmul float %29, 5.000000e-01 ; [#uses=3]
+ %33 = fmul float %30, 5.000000e-01 ; [#uses=3]
+ %34 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=2]
+ %36 = tail call float @fabsf(float %35) nounwind readnone ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=2]
+ %39 = tail call float @fabsf(float %38) nounwind readnone ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=2]
+ %42 = tail call float @fabsf(float %41) nounwind readnone ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=2]
+ %45 = tail call float @fabsf(float %44) nounwind readnone ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=2]
+ %48 = tail call float @fabsf(float %47) nounwind readnone ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=2]
+ %51 = tail call float @fabsf(float %50) nounwind readnone ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=2]
+ %54 = tail call float @fabsf(float %53) nounwind readnone ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=2]
+ %57 = tail call float @fabsf(float %56) nounwind readnone ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=2]
+ %60 = tail call float @fabsf(float %59) nounwind readnone ; [#uses=1]
+ %61 = fmul float %41, %33 ; [#uses=1]
+ %62 = fmul float %38, %32 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=1]
+ %64 = fmul float %35, %31 ; [#uses=1]
+ %65 = fadd float %63, %64 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = fadd float %65, %67 ; [#uses=2]
+ %69 = fmul float %50, %33 ; [#uses=1]
+ %70 = fmul float %47, %32 ; [#uses=1]
+ %71 = fadd float %69, %70 ; [#uses=1]
+ %72 = fmul float %44, %31 ; [#uses=1]
+ %73 = fadd float %71, %72 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = fadd float %73, %75 ; [#uses=2]
+ %77 = fmul float %59, %33 ; [#uses=1]
+ %78 = fmul float %56, %32 ; [#uses=1]
+ %79 = fadd float %77, %78 ; [#uses=1]
+ %80 = fmul float %53, %31 ; [#uses=1]
+ %81 = fadd float %79, %80 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = fadd float %81, %83 ; [#uses=2]
+ %85 = fmul float %42, %25 ; [#uses=1]
+ %86 = fmul float %39, %26 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=1]
+ %88 = fmul float %36, %27 ; [#uses=1]
+ %89 = fadd float %87, %88 ; [#uses=2]
+ %90 = fmul float %51, %25 ; [#uses=1]
+ %91 = fmul float %48, %26 ; [#uses=1]
+ %92 = fadd float %90, %91 ; [#uses=1]
+ %93 = fmul float %45, %27 ; [#uses=1]
+ %94 = fadd float %92, %93 ; [#uses=2]
+ %95 = fmul float %60, %25 ; [#uses=1]
+ %96 = fmul float %57, %26 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %54, %27 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=2]
+ %100 = fsub float %68, %89 ; [#uses=1]
+ %101 = fsub float %76, %94 ; [#uses=1]
+ %102 = fsub float %84, %99 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %102, float* %103, align 4
+ %104 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %101, float* %104, align 4
+ %105 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %100, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %106, align 4
+ %107 = fadd float %68, %89 ; [#uses=1]
+ %108 = fadd float %76, %94 ; [#uses=1]
+ %109 = fadd float %84, %99 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %109, float* %110, align 4
+ %111 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %108, float* %111, align 4
+ %112 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %107, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %113, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btConvexInternalShapeD0Ev(%struct.btConvexInternalShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btConvexInternalShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btConvexInternalShapeD1Ev(%struct.btConvexInternalShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK21btConvexInternalShape24localGetSupportingVertexERK9btVector3(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvexInternalShape* %this, %struct.btQuadWord* %vec) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 16 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 0 ; [#uses=1]
+ %5 = bitcast i32 (...)* %3 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %5(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvexShape* %4, %struct.btQuadWord* %vec)
+ %6 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 11 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %10 = tail call float %9(%struct.btConvexInternalShape* %this) ; [#uses=1]
+ %11 = fcmp une float %10, 0.000000e+00 ; [#uses=1]
+ br i1 %11, label %bb, label %return
+
+bb: ; preds = %entry
+ %12 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=3]
+ %16 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=3]
+ %18 = fmul float %13, %13 ; [#uses=1]
+ %19 = fmul float %15, %15 ; [#uses=1]
+ %20 = fadd float %18, %19 ; [#uses=1]
+ %21 = fmul float %17, %17 ; [#uses=1]
+ %22 = fadd float %20, %21 ; [#uses=1]
+ %23 = fcmp olt float %22, 0x3D10000000000000 ; [#uses=3]
+ %vecnorm.0.0.0 = select i1 %23, float -1.000000e+00, float %13 ; [#uses=3]
+ %vecnorm.0.1.0 = select i1 %23, float -1.000000e+00, float %15 ; [#uses=3]
+ %vecnorm.0.2.0 = select i1 %23, float -1.000000e+00, float %17 ; [#uses=3]
+ %24 = fmul float %vecnorm.0.0.0, %vecnorm.0.0.0 ; [#uses=1]
+ %25 = fmul float %vecnorm.0.1.0, %vecnorm.0.1.0 ; [#uses=1]
+ %26 = fadd float %24, %25 ; [#uses=1]
+ %27 = fmul float %vecnorm.0.2.0, %vecnorm.0.2.0 ; [#uses=1]
+ %28 = fadd float %26, %27 ; [#uses=1]
+ %29 = tail call float @sqrtf(float %28) nounwind readonly ; [#uses=1]
+ %30 = fdiv float 1.000000e+00, %29 ; [#uses=3]
+ %31 = fmul float %vecnorm.0.0.0, %30 ; [#uses=1]
+ %32 = fmul float %vecnorm.0.1.0, %30 ; [#uses=1]
+ %33 = fmul float %vecnorm.0.2.0, %30 ; [#uses=1]
+ %34 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds i32 (...)** %34, i32 11 ; [#uses=1]
+ %36 = load i32 (...)** %35, align 4 ; [#uses=1]
+ %37 = bitcast i32 (...)* %36 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %38 = tail call float %37(%struct.btConvexInternalShape* %this) ; [#uses=3]
+ %39 = fmul float %33, %38 ; [#uses=1]
+ %40 = fmul float %32, %38 ; [#uses=1]
+ %41 = fmul float %31, %38 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=2]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fadd float %43, %41 ; [#uses=1]
+ store float %44, float* %42, align 4
+ %45 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=2]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fadd float %46, %40 ; [#uses=1]
+ store float %47, float* %45, align 4
+ %48 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=2]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fadd float %49, %39 ; [#uses=1]
+ store float %50, float* %48, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN32btConvexInternalAabbCachingShapeD0Ev(%struct.btConvexInternalAabbCachingShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btConvexInternalAabbCachingShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN32btConvexInternalAabbCachingShapeD1Ev(%struct.btConvexInternalAabbCachingShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN32btConvexInternalAabbCachingShape15setLocalScalingERK9btVector3(%struct.btConvexInternalAabbCachingShape* %this, %struct.btQuadWord* nocapture %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = tail call float @fabsf(float %1) nounwind readnone ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = tail call float @fabsf(float %4) nounwind readnone ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = tail call float @fabsf(float %7) nounwind readnone ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %8, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %5, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %2, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ tail call void @_ZN32btConvexInternalAabbCachingShape15recalcLocalAabbEv(%struct.btConvexInternalAabbCachingShape* %this)
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN32btConvexInternalAabbCachingShape15recalcLocalAabbEv(%struct.btConvexInternalAabbCachingShape* %this) align 2 {
+entry:
+ %_supporting = alloca [6 x %struct.btQuadWord], align 8 ; [#uses=8]
+ %0 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 1, i8* %0, align 4
+ %1 = load i8* bitcast (i64* @_ZGVZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions to i8*), align 8 ; [#uses=1]
+ %2 = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions) nounwind ; [#uses=1]
+ %4 = icmp eq i32 %3, 0 ; [#uses=1]
+ br i1 %4, label %return, label %bb1
+
+bb1: ; preds = %bb
+ store float 1.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 0, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 0, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 0, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 1, i32 0, i32 0), align 16
+ store float 1.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 1, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 1, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 1, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 2, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 2, i32 0, i32 1), align 4
+ store float 1.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 2, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 2, i32 0, i32 3), align 4
+ store float -1.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 3, i32 0, i32 0), align 16
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 3, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 3, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 3, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 4, i32 0, i32 0), align 32
+ store float -1.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 4, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 4, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 4, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 5, i32 0, i32 0), align 16
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 5, i32 0, i32 1), align 4
+ store float -1.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 5, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 5, i32 0, i32 3), align 4
+ call void @__cxa_guard_release(i64* @_ZGVZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions) nounwind
+ br label %return
+
+return: ; preds = %bb1, %bb, %entry
+ %5 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = bitcast [6 x %struct.btQuadWord]* %_supporting to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %6, i8 0, i64 96, i32 8, i1 false)
+ %7 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 17 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = bitcast i32 (...)* %9 to void (%struct.btConvexShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* ; [#uses=1]
+ %12 = getelementptr inbounds [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 0 ; [#uses=1]
+ call void %11(%struct.btConvexShape* %10, %struct.btQuadWord* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN32btConvexInternalAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 0), %struct.btQuadWord* %12, i32 6)
+ %13 = getelementptr inbounds [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep7 = getelementptr %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %13, align 8 ; [#uses=1]
+ %17 = load float* %15, align 4 ; [#uses=6]
+ %18 = fadd float %16, %17 ; [#uses=1]
+ store float %18, float* %scevgep7, align 4
+ %19 = load float* %14, align 8 ; [#uses=1]
+ %20 = fsub float %19, %17 ; [#uses=1]
+ store float %20, float* %scevgep9, align 4
+ %scevgep.1 = getelementptr [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 0, i32 0, i32 5 ; [#uses=1]
+ %scevgep7.1 = getelementptr %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep8.1 = getelementptr [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 3, i32 0, i32 5 ; [#uses=1]
+ %scevgep9.1 = getelementptr %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %scevgep.1, align 4 ; [#uses=1]
+ %22 = fadd float %21, %17 ; [#uses=1]
+ store float %22, float* %scevgep7.1, align 4
+ %23 = load float* %scevgep8.1, align 4 ; [#uses=1]
+ %24 = fsub float %23, %17 ; [#uses=1]
+ store float %24, float* %scevgep9.1, align 4
+ %scevgep.2 = getelementptr [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 0, i32 0, i32 10 ; [#uses=1]
+ %scevgep7.2 = getelementptr %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep8.2 = getelementptr [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 3, i32 0, i32 10 ; [#uses=1]
+ %scevgep9.2 = getelementptr %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %scevgep.2, align 8 ; [#uses=1]
+ %26 = fadd float %25, %17 ; [#uses=1]
+ store float %26, float* %scevgep7.2, align 4
+ %27 = load float* %scevgep8.2, align 8 ; [#uses=1]
+ %28 = fsub float %27, %17 ; [#uses=1]
+ store float %28, float* %scevgep9.2, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btConvexInternalShapeC1Ev(%struct.btConvexInternalShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeC2Ev(%struct.btConvexShape* %0)
+ %1 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btConvexInternalShape* %this, i32 0, i32 3 ; [#uses=1]
+ store float 0x3FA47AE140000000, float* %6, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN32btConvexInternalAabbCachingShapeC1Ev(%struct.btConvexInternalAabbCachingShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeC2Ev(%struct.btConvexShape* %0)
+ %1 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0x3FA47AE140000000, float* %6, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV32btConvexInternalAabbCachingShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %7 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float -1.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float -1.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float -1.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 0, i8* %15, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN32btConvexInternalAabbCachingShapeC2Ev(%struct.btConvexInternalAabbCachingShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeC2Ev(%struct.btConvexShape* %0)
+ %1 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0x3FA47AE140000000, float* %6, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV32btConvexInternalAabbCachingShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %7 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float -1.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float -1.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float -1.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btConvexInternalAabbCachingShape* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 0, i8* %15, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btConvexPointCloudShape15setLocalScalingERK9btVector3(%struct.btConvexPointCloudShape* %this, %struct.btQuadWord* nocapture %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %12)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK23btConvexPointCloudShape7getNameEv(%struct.btConvexPointCloudShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([17 x i8]* @.str77, i32 0, i32 0)
+}
+
+; [#uses=1]
+define void @_ZNK23btConvexPointCloudShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btConvexPointCloudShape* nocapture %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) nounwind align 2 {
+entry:
+ %0 = icmp sgt i32 %numVectors, 0 ; [#uses=2]
+ br i1 %0, label %bb, label %bb10.preheader
+
+bb: ; preds = %bb, %entry
+ %i.018 = phi i32 [ %1, %bb ], [ 0, %entry ] ; [#uses=2]
+ %scevgep34 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.018, i32 0, i32 3 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %scevgep34, align 4
+ %1 = add nsw i32 %i.018, 1 ; [#uses=2]
+ %exitcond33 = icmp eq i32 %1, %numVectors ; [#uses=1]
+ br i1 %exitcond33, label %bb10.preheader, label %bb
+
+bb10.preheader: ; preds = %bb, %entry
+ %2 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp sgt i32 %3, 0 ; [#uses=1]
+ br i1 %4, label %bb.nph17, label %return
+
+bb.nph17: ; preds = %bb10.preheader
+ %5 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ br i1 %0, label %bb.nph.us, label %bb9
+
+bb9.us: ; preds = %bb7.us
+ %9 = load i32* %2, align 4 ; [#uses=1]
+ %10 = icmp sgt i32 %9, %tmp ; [#uses=1]
+ br i1 %10, label %bb.nph.us, label %return
+
+bb7.us: ; preds = %bb6.us, %bb5.us
+ %11 = add nsw i32 %j.015.us, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %11, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %bb9.us, label %bb5.us
+
+bb5.us: ; preds = %bb.nph.us, %bb7.us
+ %j.015.us = phi i32 [ 0, %bb.nph.us ], [ %11, %bb7.us ] ; [#uses=8]
+ %scevgep = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.015.us, i32 0, i32 3 ; [#uses=2]
+ %scevgep24 = getelementptr %struct.btQuadWord* %vectors, i32 %j.015.us, i32 0, i32 2 ; [#uses=1]
+ %scevgep25 = getelementptr %struct.btQuadWord* %vectors, i32 %j.015.us, i32 0, i32 1 ; [#uses=1]
+ %scevgep2627 = getelementptr inbounds %struct.btQuadWord* %vectors, i32 %j.015.us, i32 0, i32 0 ; [#uses=1]
+ %12 = load float* %scevgep2627, align 4 ; [#uses=1]
+ %13 = fmul float %12, %31 ; [#uses=1]
+ %14 = load float* %scevgep25, align 4 ; [#uses=1]
+ %15 = fmul float %14, %28 ; [#uses=1]
+ %16 = fadd float %13, %15 ; [#uses=1]
+ %17 = load float* %scevgep24, align 4 ; [#uses=1]
+ %18 = fmul float %17, %25 ; [#uses=1]
+ %19 = fadd float %16, %18 ; [#uses=2]
+ %20 = load float* %scevgep, align 4 ; [#uses=1]
+ %21 = fcmp olt float %20, %19 ; [#uses=1]
+ br i1 %21, label %bb6.us, label %bb7.us
+
+bb6.us: ; preds = %bb5.us
+ %scevgep2223 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %j.015.us, i32 0, i32 0 ; [#uses=1]
+ %scevgep21 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.015.us, i32 0, i32 1 ; [#uses=1]
+ %scevgep20 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.015.us, i32 0, i32 2 ; [#uses=1]
+ store float %31, float* %scevgep2223, align 4
+ store float %28, float* %scevgep21, align 4
+ store float %25, float* %scevgep20, align 4
+ store float %19, float* %scevgep, align 4
+ br label %bb7.us
+
+bb.nph.us: ; preds = %bb9.us, %bb.nph17
+ %i3.016.us = phi i32 [ %tmp, %bb9.us ], [ 0, %bb.nph17 ] ; [#uses=4]
+ %tmp = add i32 %i3.016.us, 1 ; [#uses=2]
+ %22 = load %struct.btQuadWord** %5, align 4 ; [#uses=3]
+ %scevgep31 = getelementptr %struct.btQuadWord* %22, i32 %i3.016.us, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %scevgep31, align 4 ; [#uses=1]
+ %24 = load float* %6, align 4 ; [#uses=1]
+ %25 = fmul float %23, %24 ; [#uses=2]
+ %scevgep30 = getelementptr %struct.btQuadWord* %22, i32 %i3.016.us, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %scevgep30, align 4 ; [#uses=1]
+ %27 = load float* %7, align 4 ; [#uses=1]
+ %28 = fmul float %26, %27 ; [#uses=2]
+ %scevgep2829 = getelementptr inbounds %struct.btQuadWord* %22, i32 %i3.016.us, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %scevgep2829, align 4 ; [#uses=1]
+ %30 = load float* %8, align 4 ; [#uses=1]
+ %31 = fmul float %29, %30 ; [#uses=2]
+ br label %bb5.us
+
+bb9: ; preds = %bb9, %bb.nph17
+ %i3.016 = phi i32 [ %tmp32, %bb9 ], [ 0, %bb.nph17 ] ; [#uses=1]
+ %tmp32 = add i32 %i3.016, 1 ; [#uses=2]
+ %32 = icmp sgt i32 %3, %tmp32 ; [#uses=1]
+ br i1 %32, label %bb9, label %return
+
+return: ; preds = %bb9, %bb9.us, %bb10.preheader
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZNK23btConvexPointCloudShape14getNumVerticesEv(%struct.btConvexPointCloudShape* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 2 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=1]
+define i32 @_ZNK23btConvexPointCloudShape11getNumEdgesEv(%struct.btConvexPointCloudShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=1]
+define void @_ZNK23btConvexPointCloudShape7getEdgeEiR9btVector3S1_(%struct.btConvexPointCloudShape* nocapture %this, i32 %i, %struct.btQuadWord* nocapture %pa, %struct.btQuadWord* nocapture %pb) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK23btConvexPointCloudShape9getVertexEiR9btVector3(%struct.btConvexPointCloudShape* nocapture %this, i32 %i, %struct.btQuadWord* nocapture %vtx) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btQuadWord** %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btQuadWord* %1, i32 %i, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fmul float %3, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %1, i32 %i, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fmul float %8, %10 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %1, i32 %i, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fmul float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %16, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %11, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %6, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %20, align 4
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZNK23btConvexPointCloudShape12getNumPlanesEv(%struct.btConvexPointCloudShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=1]
+define void @_ZNK23btConvexPointCloudShape8getPlaneER9btVector3S1_i(%struct.btConvexPointCloudShape* nocapture %this, %struct.btQuadWord* nocapture %unnamed_arg, %struct.btQuadWord* nocapture %unnamed_arg2, i32 %unnamed_arg4) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define zeroext i8 @_ZNK23btConvexPointCloudShape8isInsideERK9btVector3f(%struct.btConvexPointCloudShape* nocapture %this, %struct.btQuadWord* nocapture %unnamed_arg, float %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btConvexPointCloudShapeD0Ev(%struct.btConvexPointCloudShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btConvexPointCloudShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btConvexPointCloudShapeD1Ev(%struct.btConvexPointCloudShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK23btConvexPointCloudShape24localGetSupportingVertexERK9btVector3(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvexPointCloudShape* %this, %struct.btQuadWord* %vec) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 16 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btQuadWord*, %struct.btConvexPointCloudShape*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %4(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvexPointCloudShape* %this, %struct.btQuadWord* %vec)
+ %5 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 11 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %9 = bitcast i32 (...)* %7 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %10 = tail call float %9(%struct.btConvexInternalShape* %8) ; [#uses=1]
+ %11 = fcmp une float %10, 0.000000e+00 ; [#uses=1]
+ br i1 %11, label %bb, label %return
+
+bb: ; preds = %entry
+ %12 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=3]
+ %16 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=3]
+ %18 = fmul float %13, %13 ; [#uses=1]
+ %19 = fmul float %15, %15 ; [#uses=1]
+ %20 = fadd float %18, %19 ; [#uses=1]
+ %21 = fmul float %17, %17 ; [#uses=1]
+ %22 = fadd float %20, %21 ; [#uses=1]
+ %23 = fcmp olt float %22, 0x3D10000000000000 ; [#uses=3]
+ %vecnorm.0.0.0 = select i1 %23, float -1.000000e+00, float %13 ; [#uses=3]
+ %vecnorm.0.1.0 = select i1 %23, float -1.000000e+00, float %15 ; [#uses=3]
+ %vecnorm.0.2.0 = select i1 %23, float -1.000000e+00, float %17 ; [#uses=3]
+ %24 = fmul float %vecnorm.0.0.0, %vecnorm.0.0.0 ; [#uses=1]
+ %25 = fmul float %vecnorm.0.1.0, %vecnorm.0.1.0 ; [#uses=1]
+ %26 = fadd float %24, %25 ; [#uses=1]
+ %27 = fmul float %vecnorm.0.2.0, %vecnorm.0.2.0 ; [#uses=1]
+ %28 = fadd float %26, %27 ; [#uses=1]
+ %29 = tail call float @sqrtf(float %28) nounwind readonly ; [#uses=1]
+ %30 = fdiv float 1.000000e+00, %29 ; [#uses=3]
+ %31 = fmul float %vecnorm.0.0.0, %30 ; [#uses=1]
+ %32 = fmul float %vecnorm.0.1.0, %30 ; [#uses=1]
+ %33 = fmul float %vecnorm.0.2.0, %30 ; [#uses=1]
+ %34 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds i32 (...)** %34, i32 11 ; [#uses=1]
+ %36 = load i32 (...)** %35, align 4 ; [#uses=1]
+ %37 = bitcast i32 (...)* %36 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %38 = tail call float %37(%struct.btConvexInternalShape* %8) ; [#uses=3]
+ %39 = fmul float %33, %38 ; [#uses=1]
+ %40 = fmul float %32, %38 ; [#uses=1]
+ %41 = fmul float %31, %38 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=2]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fadd float %43, %41 ; [#uses=1]
+ store float %44, float* %42, align 4
+ %45 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=2]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fadd float %46, %40 ; [#uses=1]
+ store float %47, float* %45, align 4
+ %48 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=2]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fadd float %49, %39 ; [#uses=1]
+ store float %50, float* %48, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK23btConvexPointCloudShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btConvexPointCloudShape* nocapture %this, %struct.btQuadWord* nocapture %vec0) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=3]
+ %10 = fmul float %5, %5 ; [#uses=1]
+ %11 = fmul float %7, %7 ; [#uses=1]
+ %12 = fadd float %10, %11 ; [#uses=1]
+ %13 = fmul float %9, %9 ; [#uses=1]
+ %14 = fadd float %12, %13 ; [#uses=2]
+ %15 = fcmp olt float %14, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %15, label %bb6.preheader, label %bb1
+
+bb1: ; preds = %entry
+ %16 = tail call float @sqrtf(float %14) nounwind readonly ; [#uses=1]
+ %17 = fdiv float 1.000000e+00, %16 ; [#uses=3]
+ %18 = fmul float %5, %17 ; [#uses=1]
+ %19 = fmul float %7, %17 ; [#uses=1]
+ %20 = fmul float %9, %17 ; [#uses=1]
+ br label %bb6.preheader
+
+bb6.preheader: ; preds = %bb1, %entry
+ %vec.0.2.0.ph = phi float [ 0.000000e+00, %entry ], [ %20, %bb1 ] ; [#uses=1]
+ %vec.0.1.0.ph = phi float [ 0.000000e+00, %entry ], [ %19, %bb1 ] ; [#uses=1]
+ %vec.0.0.0.ph = phi float [ 1.000000e+00, %entry ], [ %18, %bb1 ] ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 2 ; [#uses=1]
+ %22 = load i32* %21, align 4 ; [#uses=3]
+ %23 = icmp sgt i32 %22, 0 ; [#uses=1]
+ br i1 %23, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb6.preheader
+ %24 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 1 ; [#uses=1]
+ %25 = load %struct.btQuadWord** %24, align 4 ; [#uses=3]
+ %26 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btConvexPointCloudShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %tmp = icmp sgt i32 %22, 1 ; [#uses=1]
+ %smax = select i1 %tmp, i32 %22, i32 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb5, %bb.nph
+ %i.017 = phi i32 [ 0, %bb.nph ], [ %44, %bb5 ] ; [#uses=4]
+ %maxDot.116 = phi float [ 0xC3ABC16D60000000, %bb.nph ], [ %maxDot.0, %bb5 ] ; [#uses=2]
+ %scevgep = getelementptr %struct.btQuadWord* %25, i32 %i.017, i32 0, i32 2 ; [#uses=1]
+ %scevgep18 = getelementptr %struct.btQuadWord* %25, i32 %i.017, i32 0, i32 1 ; [#uses=1]
+ %scevgep1920 = getelementptr inbounds %struct.btQuadWord* %25, i32 %i.017, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %scevgep, align 4 ; [#uses=1]
+ %33 = fmul float %32, %27 ; [#uses=2]
+ %34 = load float* %scevgep18, align 4 ; [#uses=1]
+ %35 = fmul float %34, %29 ; [#uses=2]
+ %36 = load float* %scevgep1920, align 4 ; [#uses=1]
+ %37 = fmul float %36, %31 ; [#uses=2]
+ %38 = fmul float %vec.0.0.0.ph, %37 ; [#uses=1]
+ %39 = fmul float %vec.0.1.0.ph, %35 ; [#uses=1]
+ %40 = fadd float %38, %39 ; [#uses=1]
+ %41 = fmul float %vec.0.2.0.ph, %33 ; [#uses=1]
+ %42 = fadd float %40, %41 ; [#uses=2]
+ %43 = fcmp ogt float %42, %maxDot.116 ; [#uses=1]
+ br i1 %43, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ store float %37, float* %0, align 4
+ store float %35, float* %1, align 4
+ store float %33, float* %2, align 4
+ store float 0.000000e+00, float* %3, align 4
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ %maxDot.0 = phi float [ %42, %bb4 ], [ %maxDot.116, %bb3 ] ; [#uses=1]
+ %44 = add nsw i32 %i.017, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %44, %smax ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb3
+
+return: ; preds = %bb5, %bb6.preheader
+ ret void
+}
+
+; [#uses=8]
+define void @_ZN13btConvexShapeC2Ev(%struct.btConvexShape* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 35, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i8* null, i8** %2, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btConvexShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN13btConvexShapeD1Ev(%struct.btConvexShape* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btConvexShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN13btConvexShapeD0Ev(%struct.btConvexShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btConvexShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btConvexShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN13btConvexShapeC1Ev(%struct.btConvexShape* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 35, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i8* null, i8** %2, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btConvexShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=6]
+define float @_ZNK13btConvexShape19getMarginNonVirtualEv(%struct.btConvexShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ switch i32 %1, label %bb6 [
+ i32 0, label %bb1
+ i32 1, label %bb2
+ i32 4, label %bb5
+ i32 5, label %bb5
+ i32 8, label %bb
+ i32 10, label %bb4
+ i32 13, label %bb3
+ ]
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btConvexShape* %this, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = bitcast i32* %2 to float* ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btConvexShape* %this, i32 1 ; [#uses=1]
+ %6 = bitcast %struct.btConvexShape* %5 to float* ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = fmul float %4, %7 ; [#uses=1]
+ ret float %8
+
+bb1: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %10 = bitcast i8** %9 to float* ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ ret float %11
+
+bb2: ; preds = %entry
+ %12 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %13 = bitcast i8** %12 to float* ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ ret float %14
+
+bb3: ; preds = %entry
+ %15 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %16 = bitcast i8** %15 to float* ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ ret float %17
+
+bb4: ; preds = %entry
+ %18 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %19 = bitcast i8** %18 to float* ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ ret float %20
+
+bb5: ; preds = %entry, %entry
+ %21 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %22 = bitcast i8** %21 to float* ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ ret float %23
+
+bb6: ; preds = %entry
+ %24 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = load i32 (...)*** %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds i32 (...)** %25, i32 11 ; [#uses=1]
+ %27 = load i32 (...)** %26, align 4 ; [#uses=1]
+ %28 = bitcast i32 (...)* %27 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %29 = tail call float %28(%struct.btConvexShape* %this) ; [#uses=1]
+ ret float %29
+}
+
+; [#uses=6]
+define void @_ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvexShape* %this, %struct.btQuadWord* %localDir) align 2 {
+entry:
+ %halfExtents4 = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %v = alloca %struct.btQuadWord, align 8 ; [#uses=8]
+ %tmp = alloca %struct.btQuadWord, align 8 ; [#uses=12]
+ %pos = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %pos26 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ switch i32 %1, label %bb40 [
+ i32 0, label %bb1
+ i32 1, label %bb2
+ i32 4, label %bb34
+ i32 5, label %bb30
+ i32 8, label %bb
+ i32 10, label %bb17
+ i32 13, label %bb3
+ ]
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btConvexShape* %this, i32 2, i32 0, i32 1 ; [#uses=3]
+ %7 = getelementptr inbounds i32* %6, i32 2 ; [#uses=1]
+ %8 = bitcast i32* %7 to float* ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=2]
+ %10 = fsub float -0.000000e+00, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = fcmp ult float %12, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i65 = select i1 %13, float %10, float %9 ; [#uses=1]
+ %14 = getelementptr inbounds i32* %6, i32 1 ; [#uses=1]
+ %15 = bitcast i32* %14 to float* ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = fsub float -0.000000e+00, %16 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fcmp ult float %19, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i64 = select i1 %20, float %17, float %16 ; [#uses=1]
+ %21 = bitcast i32* %6 to float* ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ %23 = fsub float -0.000000e+00, %22 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fcmp ult float %25, 0.000000e+00 ; [#uses=1]
+ %iftmp.3.0.i = select i1 %26, float %23, float %22 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %iftmp.3.0.i, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %iftmp.3.0.i64, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %iftmp.3.0.i65, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ ret void
+
+bb2: ; preds = %entry
+ %31 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 2 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 1 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=3]
+ %35 = load float* %32, align 4 ; [#uses=3]
+ %36 = load float* %31, align 4 ; [#uses=3]
+ %37 = getelementptr inbounds %struct.btConvexShape* %this, i32 4, i32 0, i32 1 ; [#uses=10]
+ %38 = bitcast i32* %37 to %struct.btQuadWord* ; [#uses=3]
+ %39 = getelementptr inbounds i32* %37, i32 8 ; [#uses=1]
+ %40 = bitcast i32* %39 to float* ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = fmul float %34, %41 ; [#uses=1]
+ %43 = getelementptr inbounds i32* %37, i32 9 ; [#uses=1]
+ %44 = bitcast i32* %43 to float* ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fmul float %35, %45 ; [#uses=1]
+ %47 = fadd float %42, %46 ; [#uses=1]
+ %48 = getelementptr inbounds i32* %37, i32 10 ; [#uses=1]
+ %49 = bitcast i32* %48 to float* ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fmul float %36, %50 ; [#uses=1]
+ %52 = fadd float %47, %51 ; [#uses=2]
+ %53 = getelementptr inbounds i32* %37, i32 4 ; [#uses=1]
+ %54 = bitcast i32* %53 to float* ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fmul float %34, %55 ; [#uses=1]
+ %57 = getelementptr inbounds i32* %37, i32 5 ; [#uses=1]
+ %58 = bitcast i32* %57 to float* ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = fmul float %35, %59 ; [#uses=1]
+ %61 = fadd float %56, %60 ; [#uses=1]
+ %62 = getelementptr inbounds i32* %37, i32 6 ; [#uses=1]
+ %63 = bitcast i32* %62 to float* ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %65 = fmul float %36, %64 ; [#uses=1]
+ %66 = fadd float %61, %65 ; [#uses=2]
+ %67 = bitcast i32* %37 to float* ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = fmul float %34, %68 ; [#uses=1]
+ %70 = getelementptr inbounds i32* %37, i32 1 ; [#uses=1]
+ %71 = bitcast i32* %70 to float* ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fmul float %35, %72 ; [#uses=1]
+ %74 = fadd float %69, %73 ; [#uses=1]
+ %75 = getelementptr inbounds i32* %37, i32 2 ; [#uses=1]
+ %76 = bitcast i32* %75 to float* ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ %78 = fmul float %36, %77 ; [#uses=1]
+ %79 = fadd float %74, %78 ; [#uses=2]
+ %80 = fcmp olt float %79, %66 ; [#uses=1]
+ br i1 %80, label %bb.i63, label %bb4.i
+
+bb.i63: ; preds = %bb2
+ %81 = fcmp olt float %66, %52 ; [#uses=1]
+ %iftmp.18.0.i = select i1 %81, i32 2, i32 1 ; [#uses=1]
+ br label %_ZNK9btVector37maxAxisEv.exit
+
+bb4.i: ; preds = %bb2
+ %82 = fcmp olt float %79, %52 ; [#uses=1]
+ %iftmp.19.0.i = select i1 %82, i32 2, i32 0 ; [#uses=1]
+ br label %_ZNK9btVector37maxAxisEv.exit
+
+_ZNK9btVector37maxAxisEv.exit: ; preds = %bb4.i, %bb.i63
+ %83 = phi i32 [ %iftmp.19.0.i, %bb4.i ], [ %iftmp.18.0.i, %bb.i63 ] ; [#uses=3]
+ %84 = getelementptr inbounds %struct.btQuadWord* %38, i32 %83, i32 0, i32 0 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btQuadWord* %38, i32 %83, i32 0, i32 1 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btQuadWord* %38, i32 %83, i32 0, i32 2 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %85, float* %90, align 4
+ %91 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %87, float* %91, align 4
+ %92 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %89, float* %92, align 4
+ %93 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %93, align 4
+ ret void
+
+bb3: ; preds = %entry
+ %94 = getelementptr inbounds %struct.btConvexShape* %this, i32 2, i32 0, i32 1 ; [#uses=4]
+ %95 = getelementptr inbounds %struct.btQuadWord* %halfExtents4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %96 = bitcast i32* %94 to float* ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ store float %97, float* %95, align 8
+ %98 = getelementptr inbounds %struct.btQuadWord* %halfExtents4, i32 0, i32 0, i32 1 ; [#uses=1]
+ %99 = getelementptr inbounds i32* %94, i32 1 ; [#uses=1]
+ %100 = bitcast i32* %99 to float* ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ store float %101, float* %98, align 4
+ %102 = getelementptr inbounds %struct.btQuadWord* %halfExtents4, i32 0, i32 0, i32 2 ; [#uses=1]
+ %103 = getelementptr inbounds i32* %94, i32 2 ; [#uses=1]
+ %104 = bitcast i32* %103 to float* ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ store float %105, float* %102, align 8
+ %106 = getelementptr inbounds %struct.btQuadWord* %halfExtents4, i32 0, i32 0, i32 3 ; [#uses=1]
+ %107 = getelementptr inbounds i32* %94, i32 3 ; [#uses=1]
+ %108 = bitcast i32* %107 to float* ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ store float %109, float* %106, align 4
+ %110 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 2 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 1 ; [#uses=1]
+ %112 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 0 ; [#uses=1]
+ %113 = load float* %112, align 4 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %113, float* %114, align 8
+ %115 = load float* %111, align 4 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %115, float* %116, align 4
+ %117 = load float* %110, align 4 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %117, float* %118, align 8
+ %119 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %119, align 4
+ %120 = getelementptr inbounds %struct.btConvexShape* %this, i32 4, i32 0, i32 1 ; [#uses=1]
+ %121 = load i32* %120, align 4 ; [#uses=2]
+ switch i32 %121, label %bb8 [
+ i32 1, label %bb6
+ i32 2, label %bb7
+ ]
+
+bb6: ; preds = %bb3
+ br label %bb8
+
+bb7: ; preds = %bb3
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb6, %bb3
+ %XX.0 = phi i32 [ 0, %bb7 ], [ 0, %bb6 ], [ 1, %bb3 ] ; [#uses=4]
+ %YY.0 = phi i32 [ 2, %bb7 ], [ 1, %bb6 ], [ 0, %bb3 ] ; [#uses=4]
+ %ZZ.0 = phi i32 [ 1, %bb7 ], [ 2, %bb6 ], [ 2, %bb3 ] ; [#uses=3]
+ %122 = getelementptr inbounds %struct.btQuadWord* %halfExtents4, i32 0, i32 0, i32 %XX.0 ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=2]
+ %124 = getelementptr inbounds %struct.btQuadWord* %halfExtents4, i32 0, i32 0, i32 %121 ; [#uses=1]
+ %125 = load float* %124, align 4 ; [#uses=4]
+ %126 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 %XX.0 ; [#uses=1]
+ %127 = load float* %126, align 4 ; [#uses=3]
+ %128 = fmul float %127, %127 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 %ZZ.0 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=3]
+ %131 = fmul float %130, %130 ; [#uses=1]
+ %132 = fadd float %128, %131 ; [#uses=1]
+ %133 = call float @sqrtf(float %132) nounwind readonly ; [#uses=2]
+ %134 = fcmp une float %133, 0.000000e+00 ; [#uses=1]
+ br i1 %134, label %bb9, label %bb13
+
+bb9: ; preds = %bb8
+ %135 = fdiv float %123, %133 ; [#uses=2]
+ %136 = fmul float %127, %135 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 %XX.0 ; [#uses=1]
+ store float %136, float* %137, align 4
+ %138 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 %YY.0 ; [#uses=1]
+ %139 = load float* %138, align 4 ; [#uses=1]
+ %140 = fcmp olt float %139, 0.000000e+00 ; [#uses=1]
+ br i1 %140, label %bb10, label %bb12
+
+bb10: ; preds = %bb9
+ %141 = fsub float -0.000000e+00, %125 ; [#uses=1]
+ br label %bb12
+
+bb12: ; preds = %bb10, %bb9
+ %iftmp.152.0 = phi float [ %141, %bb10 ], [ %125, %bb9 ] ; [#uses=1]
+ %142 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 %YY.0 ; [#uses=1]
+ store float %iftmp.152.0, float* %142, align 4
+ %143 = fmul float %130, %135 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 %ZZ.0 ; [#uses=1]
+ store float %143, float* %144, align 4
+ %145 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %148 = load float* %147, align 8 ; [#uses=1]
+ %149 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %148, float* %149, align 4
+ %150 = load float* %146, align 4 ; [#uses=1]
+ %151 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %150, float* %151, align 4
+ %152 = load float* %145, align 8 ; [#uses=1]
+ %153 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %152, float* %153, align 4
+ %154 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %154, align 4
+ ret void
+
+bb13: ; preds = %bb8
+ %155 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 %XX.0 ; [#uses=1]
+ store float %123, float* %155, align 4
+ %156 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 %YY.0 ; [#uses=1]
+ %157 = load float* %156, align 4 ; [#uses=1]
+ %158 = fcmp olt float %157, 0.000000e+00 ; [#uses=1]
+ br i1 %158, label %bb14, label %bb16
+
+bb14: ; preds = %bb13
+ %159 = fsub float -0.000000e+00, %125 ; [#uses=1]
+ br label %bb16
+
+bb16: ; preds = %bb14, %bb13
+ %iftmp.153.0 = phi float [ %159, %bb14 ], [ %125, %bb13 ] ; [#uses=1]
+ %160 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 %YY.0 ; [#uses=1]
+ store float %iftmp.153.0, float* %160, align 4
+ %161 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 %ZZ.0 ; [#uses=1]
+ store float 0.000000e+00, float* %161, align 4
+ %162 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %163 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %165 = load float* %164, align 8 ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %165, float* %166, align 4
+ %167 = load float* %163, align 4 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %167, float* %168, align 4
+ %169 = load float* %162, align 8 ; [#uses=1]
+ %170 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %169, float* %170, align 4
+ %171 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %171, align 4
+ ret void
+
+bb17: ; preds = %entry
+ %172 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 2 ; [#uses=1]
+ %173 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 1 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 0 ; [#uses=1]
+ %175 = load float* %174, align 4 ; [#uses=3]
+ %176 = load float* %173, align 4 ; [#uses=3]
+ %177 = load float* %172, align 4 ; [#uses=3]
+ %178 = bitcast %struct.btConvexShape* %this to %struct.btCapsuleShape* ; [#uses=2]
+ %179 = getelementptr inbounds %struct.btConvexShape* %this, i32 4, i32 0, i32 1 ; [#uses=1]
+ %180 = load i32* %179, align 4 ; [#uses=4]
+ %181 = getelementptr inbounds %struct.btCapsuleShape* %178, i32 0, i32 0, i32 2, i32 0, i32 %180 ; [#uses=1]
+ %182 = load float* %181, align 4 ; [#uses=2]
+ %183 = add nsw i32 %180, 2 ; [#uses=1]
+ %184 = srem i32 %183, 3 ; [#uses=1]
+ %185 = getelementptr inbounds %struct.btCapsuleShape* %178, i32 0, i32 0, i32 2, i32 0, i32 %184 ; [#uses=1]
+ %186 = load float* %185, align 4 ; [#uses=3]
+ %187 = fmul float %175, %175 ; [#uses=1]
+ %188 = fmul float %176, %176 ; [#uses=1]
+ %189 = fadd float %187, %188 ; [#uses=1]
+ %190 = fmul float %177, %177 ; [#uses=1]
+ %191 = fadd float %189, %190 ; [#uses=2]
+ %192 = fcmp olt float %191, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %192, label %bb22, label %bb21
+
+bb21: ; preds = %bb17
+ %193 = call float @sqrtf(float %191) nounwind readonly ; [#uses=1]
+ %194 = fdiv float 1.000000e+00, %193 ; [#uses=3]
+ %195 = fmul float %175, %194 ; [#uses=1]
+ %196 = fmul float %176, %194 ; [#uses=1]
+ %197 = fmul float %177, %194 ; [#uses=1]
+ br label %bb22
+
+bb22: ; preds = %bb21, %bb17
+ %vec.0.0.0 = phi float [ %195, %bb21 ], [ 1.000000e+00, %bb17 ] ; [#uses=4]
+ %vec.0.1.0 = phi float [ %196, %bb21 ], [ 0.000000e+00, %bb17 ] ; [#uses=4]
+ %vec.0.2.0 = phi float [ %197, %bb21 ], [ 0.000000e+00, %bb17 ] ; [#uses=4]
+ %198 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %198, align 8
+ %199 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %199, align 4
+ %200 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %200, align 8
+ %201 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %201, align 4
+ %202 = getelementptr inbounds %struct.btQuadWord* %pos, i32 0, i32 0, i32 %180 ; [#uses=1]
+ store float %182, float* %202, align 4
+ %203 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %204 = bitcast i8** %203 to float* ; [#uses=1]
+ %205 = load float* %204, align 4 ; [#uses=3]
+ %206 = fmul float %vec.0.2.0, %205 ; [#uses=2]
+ %207 = fmul float %vec.0.1.0, %205 ; [#uses=2]
+ %208 = fmul float %vec.0.0.0, %205 ; [#uses=2]
+ %209 = getelementptr inbounds %struct.btConvexShape* %this, i32 1 ; [#uses=1]
+ %210 = getelementptr inbounds %struct.btConvexShape* %this, i32 1, i32 0, i32 2 ; [#uses=1]
+ %211 = bitcast i8** %210 to float* ; [#uses=1]
+ %212 = load float* %211, align 4 ; [#uses=1]
+ %213 = fmul float %vec.0.2.0, %212 ; [#uses=1]
+ %214 = getelementptr inbounds %struct.btConvexShape* %this, i32 1, i32 0, i32 1 ; [#uses=1]
+ %215 = bitcast i32* %214 to float* ; [#uses=1]
+ %216 = load float* %215, align 4 ; [#uses=1]
+ %217 = fmul float %vec.0.1.0, %216 ; [#uses=1]
+ %218 = bitcast %struct.btConvexShape* %209 to float* ; [#uses=1]
+ %219 = load float* %218, align 4 ; [#uses=1]
+ %220 = fmul float %vec.0.0.0, %219 ; [#uses=1]
+ %221 = fmul float %213, %186 ; [#uses=2]
+ %222 = fmul float %217, %186 ; [#uses=2]
+ %223 = fmul float %220, %186 ; [#uses=2]
+ %224 = load float* %200, align 8 ; [#uses=1]
+ %225 = fadd float %224, %221 ; [#uses=1]
+ %226 = load float* %199, align 4 ; [#uses=1]
+ %227 = fadd float %226, %222 ; [#uses=1]
+ %228 = load float* %198, align 8 ; [#uses=1]
+ %229 = fadd float %228, %223 ; [#uses=1]
+ %230 = fsub float %225, %206 ; [#uses=2]
+ %231 = fsub float %227, %207 ; [#uses=2]
+ %232 = fsub float %229, %208 ; [#uses=2]
+ %233 = fmul float %vec.0.0.0, %232 ; [#uses=1]
+ %234 = fmul float %vec.0.1.0, %231 ; [#uses=1]
+ %235 = fadd float %233, %234 ; [#uses=1]
+ %236 = fmul float %vec.0.2.0, %230 ; [#uses=1]
+ %237 = fadd float %235, %236 ; [#uses=2]
+ %238 = fcmp ogt float %237, 0xC3ABC16D60000000 ; [#uses=1]
+ br i1 %238, label %bb23, label %bb24
+
+bb23: ; preds = %bb22
+ br label %bb24
+
+bb24: ; preds = %bb23, %bb22
+ %supVec.0.0.1 = phi float [ %232, %bb23 ], [ 0.000000e+00, %bb22 ] ; [#uses=1]
+ %supVec.0.1.1 = phi float [ %231, %bb23 ], [ 0.000000e+00, %bb22 ] ; [#uses=1]
+ %supVec.0.2.1 = phi float [ %230, %bb23 ], [ 0.000000e+00, %bb22 ] ; [#uses=1]
+ %maxDot.0 = phi float [ %237, %bb23 ], [ 0xC3ABC16D60000000, %bb22 ] ; [#uses=1]
+ %239 = getelementptr inbounds %struct.btQuadWord* %pos26, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %239, align 8
+ %240 = getelementptr inbounds %struct.btQuadWord* %pos26, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %240, align 4
+ %241 = getelementptr inbounds %struct.btQuadWord* %pos26, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %241, align 8
+ %242 = getelementptr inbounds %struct.btQuadWord* %pos26, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %242, align 4
+ %243 = fsub float -0.000000e+00, %182 ; [#uses=1]
+ %244 = getelementptr inbounds %struct.btQuadWord* %pos26, i32 0, i32 0, i32 %180 ; [#uses=1]
+ store float %243, float* %244, align 4
+ %245 = load float* %241, align 8 ; [#uses=1]
+ %246 = fadd float %245, %221 ; [#uses=1]
+ %247 = load float* %240, align 4 ; [#uses=1]
+ %248 = fadd float %247, %222 ; [#uses=1]
+ %249 = load float* %239, align 8 ; [#uses=1]
+ %250 = fadd float %249, %223 ; [#uses=1]
+ %251 = fsub float %246, %206 ; [#uses=2]
+ %252 = fsub float %248, %207 ; [#uses=2]
+ %253 = fsub float %250, %208 ; [#uses=2]
+ %254 = fmul float %vec.0.0.0, %253 ; [#uses=1]
+ %255 = fmul float %vec.0.1.0, %252 ; [#uses=1]
+ %256 = fadd float %254, %255 ; [#uses=1]
+ %257 = fmul float %vec.0.2.0, %251 ; [#uses=1]
+ %258 = fadd float %256, %257 ; [#uses=1]
+ %259 = fcmp ogt float %258, %maxDot.0 ; [#uses=3]
+ %supVec.0.0.0 = select i1 %259, float %253, float %supVec.0.0.1 ; [#uses=1]
+ %supVec.0.1.0 = select i1 %259, float %252, float %supVec.0.1.1 ; [#uses=1]
+ %supVec.0.2.0 = select i1 %259, float %251, float %supVec.0.2.1 ; [#uses=1]
+ %260 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %supVec.0.0.0, float* %260, align 4
+ %261 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %supVec.0.1.0, float* %261, align 4
+ %262 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %supVec.0.2.0, float* %262, align 4
+ %263 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %263, align 4
+ ret void
+
+bb30: ; preds = %entry
+ %264 = getelementptr inbounds %struct.btConvexShape* %this, i32 7, i32 0, i32 1 ; [#uses=1]
+ %265 = bitcast i32* %264 to %struct.btQuadWord** ; [#uses=1]
+ %266 = load %struct.btQuadWord** %265, align 4 ; [#uses=6]
+ %267 = getelementptr inbounds %struct.btConvexShape* %this, i32 7, i32 0, i32 2 ; [#uses=1]
+ %268 = bitcast i8** %267 to i32* ; [#uses=1]
+ %269 = load i32* %268, align 4 ; [#uses=2]
+ %270 = getelementptr inbounds %struct.btConvexShape* %this, i32 1 ; [#uses=1]
+ %localDir.idx46 = getelementptr %struct.btQuadWord* %localDir, i32 0, i32 0, i32 0 ; [#uses=1]
+ %localDir.idx46.val = load float* %localDir.idx46, align 4 ; [#uses=1]
+ %localDir.idx47 = getelementptr %struct.btQuadWord* %localDir, i32 0, i32 0, i32 1 ; [#uses=1]
+ %localDir.idx47.val = load float* %localDir.idx47, align 4 ; [#uses=1]
+ %localDir.idx48 = getelementptr %struct.btQuadWord* %localDir, i32 0, i32 0, i32 2 ; [#uses=1]
+ %localDir.idx48.val = load float* %localDir.idx48, align 4 ; [#uses=1]
+ %.idx49 = bitcast %struct.btConvexShape* %270 to float* ; [#uses=1]
+ %.idx49.val = load float* %.idx49, align 4 ; [#uses=2]
+ %.idx50 = getelementptr %struct.btConvexShape* %this, i32 1, i32 0, i32 1 ; [#uses=1]
+ %271 = bitcast i32* %.idx50 to float* ; [#uses=1]
+ %.idx50.val = load float* %271, align 4 ; [#uses=2]
+ %.idx51 = getelementptr %struct.btConvexShape* %this, i32 1, i32 0, i32 2 ; [#uses=1]
+ %272 = bitcast i8** %.idx51 to float* ; [#uses=1]
+ %.idx51.val = load float* %272, align 4 ; [#uses=2]
+ %273 = fmul float %localDir.idx48.val, %.idx51.val ; [#uses=1]
+ %274 = fmul float %localDir.idx47.val, %.idx50.val ; [#uses=1]
+ %275 = fmul float %localDir.idx46.val, %.idx49.val ; [#uses=1]
+ %276 = icmp sgt i32 %269, 0 ; [#uses=1]
+ br i1 %276, label %bb.i60, label %_ZL17convexHullSupportRK9btVector3PS0_iS1_.exit62
+
+bb.i60: ; preds = %bb.i60, %bb30
+ %277 = phi i32 [ %287, %bb.i60 ], [ 0, %bb30 ] ; [#uses=5]
+ %ptIndex.14.i52 = phi i32 [ %ptIndex.0.i57, %bb.i60 ], [ -1, %bb30 ] ; [#uses=1]
+ %maxDot.13.i53 = phi float [ %maxDot.0.i58, %bb.i60 ], [ 0xC3ABC16D60000000, %bb30 ] ; [#uses=2]
+ %scevgep8.i56 = getelementptr %struct.btQuadWord* %266, i32 %277, i32 0, i32 2 ; [#uses=1]
+ %scevgep7.i55 = getelementptr %struct.btQuadWord* %266, i32 %277, i32 0, i32 1 ; [#uses=1]
+ %scevgep6.i54 = getelementptr inbounds %struct.btQuadWord* %266, i32 %277, i32 0, i32 0 ; [#uses=1]
+ %278 = load float* %scevgep6.i54, align 4 ; [#uses=1]
+ %279 = fmul float %275, %278 ; [#uses=1]
+ %280 = load float* %scevgep7.i55, align 4 ; [#uses=1]
+ %281 = fmul float %274, %280 ; [#uses=1]
+ %282 = fadd float %279, %281 ; [#uses=1]
+ %283 = load float* %scevgep8.i56, align 4 ; [#uses=1]
+ %284 = fmul float %273, %283 ; [#uses=1]
+ %285 = fadd float %282, %284 ; [#uses=2]
+ %286 = fcmp ogt float %285, %maxDot.13.i53 ; [#uses=2]
+ %ptIndex.0.i57 = select i1 %286, i32 %277, i32 %ptIndex.14.i52 ; [#uses=2]
+ %287 = add nsw i32 %277, 1 ; [#uses=2]
+ %maxDot.0.i58 = select i1 %286, float %285, float %maxDot.13.i53 ; [#uses=1]
+ %exitcond = icmp eq i32 %287, %269 ; [#uses=1]
+ br i1 %exitcond, label %_ZL17convexHullSupportRK9btVector3PS0_iS1_.exit62, label %bb.i60
+
+_ZL17convexHullSupportRK9btVector3PS0_iS1_.exit62: ; preds = %bb.i60, %bb30
+ %ptIndex.1.lcssa.i61 = phi i32 [ -1, %bb30 ], [ %ptIndex.0.i57, %bb.i60 ] ; [#uses=3]
+ %288 = getelementptr inbounds %struct.btQuadWord* %266, i32 %ptIndex.1.lcssa.i61, i32 0, i32 2 ; [#uses=1]
+ %289 = load float* %288, align 4 ; [#uses=1]
+ %290 = fmul float %289, %.idx51.val ; [#uses=1]
+ %291 = getelementptr inbounds %struct.btQuadWord* %266, i32 %ptIndex.1.lcssa.i61, i32 0, i32 1 ; [#uses=1]
+ %292 = load float* %291, align 4 ; [#uses=1]
+ %293 = fmul float %292, %.idx50.val ; [#uses=1]
+ %294 = getelementptr inbounds %struct.btQuadWord* %266, i32 %ptIndex.1.lcssa.i61, i32 0, i32 0 ; [#uses=1]
+ %295 = load float* %294, align 4 ; [#uses=1]
+ %296 = fmul float %295, %.idx49.val ; [#uses=1]
+ %297 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %296, float* %297, align 4
+ %298 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %293, float* %298, align 4
+ %299 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %290, float* %299, align 4
+ %300 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %300, align 4
+ ret void
+
+bb34: ; preds = %entry
+ %301 = getelementptr inbounds %struct.btConvexShape* %this, i32 8, i32 0, i32 1 ; [#uses=1]
+ %302 = bitcast i32* %301 to %struct.btQuadWord** ; [#uses=1]
+ %303 = load %struct.btQuadWord** %302, align 4 ; [#uses=6]
+ %304 = getelementptr inbounds %struct.btConvexShape* %this, i32 7, i32 0, i32 2 ; [#uses=1]
+ %305 = bitcast i8** %304 to i32* ; [#uses=1]
+ %306 = load i32* %305, align 4 ; [#uses=2]
+ %307 = getelementptr inbounds %struct.btConvexShape* %this, i32 1 ; [#uses=1]
+ %localDir.idx = getelementptr %struct.btQuadWord* %localDir, i32 0, i32 0, i32 0 ; [#uses=1]
+ %localDir.idx.val = load float* %localDir.idx, align 4 ; [#uses=1]
+ %localDir.idx42 = getelementptr %struct.btQuadWord* %localDir, i32 0, i32 0, i32 1 ; [#uses=1]
+ %localDir.idx42.val = load float* %localDir.idx42, align 4 ; [#uses=1]
+ %localDir.idx43 = getelementptr %struct.btQuadWord* %localDir, i32 0, i32 0, i32 2 ; [#uses=1]
+ %localDir.idx43.val = load float* %localDir.idx43, align 4 ; [#uses=1]
+ %.idx = bitcast %struct.btConvexShape* %307 to float* ; [#uses=1]
+ %.idx.val = load float* %.idx, align 4 ; [#uses=2]
+ %.idx44 = getelementptr %struct.btConvexShape* %this, i32 1, i32 0, i32 1 ; [#uses=1]
+ %308 = bitcast i32* %.idx44 to float* ; [#uses=1]
+ %.idx44.val = load float* %308, align 4 ; [#uses=2]
+ %.idx45 = getelementptr %struct.btConvexShape* %this, i32 1, i32 0, i32 2 ; [#uses=1]
+ %309 = bitcast i8** %.idx45 to float* ; [#uses=1]
+ %.idx45.val = load float* %309, align 4 ; [#uses=2]
+ %310 = fmul float %localDir.idx43.val, %.idx45.val ; [#uses=1]
+ %311 = fmul float %localDir.idx42.val, %.idx44.val ; [#uses=1]
+ %312 = fmul float %localDir.idx.val, %.idx.val ; [#uses=1]
+ %313 = icmp sgt i32 %306, 0 ; [#uses=1]
+ br i1 %313, label %bb.i, label %_ZL17convexHullSupportRK9btVector3PS0_iS1_.exit
+
+bb.i: ; preds = %bb.i, %bb34
+ %314 = phi i32 [ %324, %bb.i ], [ 0, %bb34 ] ; [#uses=5]
+ %ptIndex.14.i = phi i32 [ %ptIndex.0.i, %bb.i ], [ -1, %bb34 ] ; [#uses=1]
+ %maxDot.13.i = phi float [ %maxDot.0.i, %bb.i ], [ 0xC3ABC16D60000000, %bb34 ] ; [#uses=2]
+ %scevgep8.i = getelementptr %struct.btQuadWord* %303, i32 %314, i32 0, i32 2 ; [#uses=1]
+ %scevgep7.i = getelementptr %struct.btQuadWord* %303, i32 %314, i32 0, i32 1 ; [#uses=1]
+ %scevgep6.i = getelementptr inbounds %struct.btQuadWord* %303, i32 %314, i32 0, i32 0 ; [#uses=1]
+ %315 = load float* %scevgep6.i, align 4 ; [#uses=1]
+ %316 = fmul float %312, %315 ; [#uses=1]
+ %317 = load float* %scevgep7.i, align 4 ; [#uses=1]
+ %318 = fmul float %311, %317 ; [#uses=1]
+ %319 = fadd float %316, %318 ; [#uses=1]
+ %320 = load float* %scevgep8.i, align 4 ; [#uses=1]
+ %321 = fmul float %310, %320 ; [#uses=1]
+ %322 = fadd float %319, %321 ; [#uses=2]
+ %323 = fcmp ogt float %322, %maxDot.13.i ; [#uses=2]
+ %ptIndex.0.i = select i1 %323, i32 %314, i32 %ptIndex.14.i ; [#uses=2]
+ %324 = add nsw i32 %314, 1 ; [#uses=2]
+ %maxDot.0.i = select i1 %323, float %322, float %maxDot.13.i ; [#uses=1]
+ %exitcond145 = icmp eq i32 %324, %306 ; [#uses=1]
+ br i1 %exitcond145, label %_ZL17convexHullSupportRK9btVector3PS0_iS1_.exit, label %bb.i
+
+_ZL17convexHullSupportRK9btVector3PS0_iS1_.exit: ; preds = %bb.i, %bb34
+ %ptIndex.1.lcssa.i = phi i32 [ -1, %bb34 ], [ %ptIndex.0.i, %bb.i ] ; [#uses=3]
+ %325 = getelementptr inbounds %struct.btQuadWord* %303, i32 %ptIndex.1.lcssa.i, i32 0, i32 2 ; [#uses=1]
+ %326 = load float* %325, align 4 ; [#uses=1]
+ %327 = fmul float %326, %.idx45.val ; [#uses=1]
+ %328 = getelementptr inbounds %struct.btQuadWord* %303, i32 %ptIndex.1.lcssa.i, i32 0, i32 1 ; [#uses=1]
+ %329 = load float* %328, align 4 ; [#uses=1]
+ %330 = fmul float %329, %.idx44.val ; [#uses=1]
+ %331 = getelementptr inbounds %struct.btQuadWord* %303, i32 %ptIndex.1.lcssa.i, i32 0, i32 0 ; [#uses=1]
+ %332 = load float* %331, align 4 ; [#uses=1]
+ %333 = fmul float %332, %.idx.val ; [#uses=1]
+ %334 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %333, float* %334, align 4
+ %335 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %330, float* %335, align 4
+ %336 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %327, float* %336, align 4
+ %337 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %337, align 4
+ ret void
+
+bb40: ; preds = %entry
+ %338 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %339 = load i32 (...)*** %338, align 4 ; [#uses=1]
+ %340 = getelementptr inbounds i32 (...)** %339, i32 16 ; [#uses=1]
+ %341 = load i32 (...)** %340, align 4 ; [#uses=1]
+ %342 = bitcast i32 (...)* %341 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %342(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvexShape* %this, %struct.btQuadWord* %localDir)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZNK13btConvexShape17getAabbNonVirtualERK11btTransformR9btVector3S4_(%struct.btConvexShape* %this, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %vec = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %sv = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %tmp = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %halfExtents28 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %3 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ switch i32 %4, label %bb42 [
+ i32 10, label %bb25
+ i32 1, label %bb.nph
+ i32 13, label %bb3.i47
+ i32 0, label %bb1.i45
+ i32 8, label %_ZNK13btConvexShape19getMarginNonVirtualEv.exit
+ i32 4, label %bb5.i57
+ i32 5, label %bb5.i57
+ ]
+
+_ZNK13btConvexShape19getMarginNonVirtualEv.exit: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btConvexShape* %this, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = bitcast i32* %5 to float* ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btConvexShape* %this, i32 1 ; [#uses=1]
+ %9 = bitcast %struct.btConvexShape* %8 to float* ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fmul float %7, %10 ; [#uses=1]
+ %12 = fadd float %11, %7 ; [#uses=6]
+ %13 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fsub float %14, %12 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fsub float %17, %12 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fsub float %20, %12 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %21, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %18, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %15, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = load float* %13, align 4 ; [#uses=1]
+ %27 = fadd float %26, %12 ; [#uses=1]
+ %28 = load float* %16, align 4 ; [#uses=1]
+ %29 = fadd float %28, %12 ; [#uses=1]
+ %30 = load float* %19, align 4 ; [#uses=1]
+ %31 = fadd float %30, %12 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %31, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %29, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %27, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ ret void
+
+bb1.i45: ; preds = %entry
+ %36 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %37 = bitcast i8** %36 to float* ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ br label %_ZNK13btConvexShape19getMarginNonVirtualEv.exit51
+
+bb3.i47: ; preds = %entry
+ %39 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %40 = bitcast i8** %39 to float* ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ br label %_ZNK13btConvexShape19getMarginNonVirtualEv.exit51
+
+_ZNK13btConvexShape19getMarginNonVirtualEv.exit51: ; preds = %bb3.i47, %bb1.i45
+ %42 = phi float [ %41, %bb3.i47 ], [ %38, %bb1.i45 ] ; [#uses=3]
+ %43 = getelementptr inbounds %struct.btConvexShape* %this, i32 2, i32 0, i32 1 ; [#uses=3]
+ %44 = bitcast i32* %43 to float* ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds i32* %43, i32 1 ; [#uses=1]
+ %47 = bitcast i32* %46 to float* ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds i32* %43, i32 2 ; [#uses=1]
+ %50 = bitcast i32* %49 to float* ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fadd float %45, %42 ; [#uses=3]
+ %53 = fadd float %48, %42 ; [#uses=3]
+ %54 = fadd float %51, %42 ; [#uses=3]
+ %55 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = call float @fabsf(float %56) nounwind readnone ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = call float @fabsf(float %59) nounwind readnone ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ %63 = call float @fabsf(float %62) nounwind readnone ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ %66 = call float @fabsf(float %65) nounwind readnone ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = call float @fabsf(float %68) nounwind readnone ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ %72 = call float @fabsf(float %71) nounwind readnone ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = call float @fabsf(float %74) nounwind readnone ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ %78 = call float @fabsf(float %77) nounwind readnone ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = call float @fabsf(float %80) nounwind readnone ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=2]
+ %84 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=2]
+ %86 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=2]
+ %88 = fmul float %63, %52 ; [#uses=1]
+ %89 = fmul float %60, %53 ; [#uses=1]
+ %90 = fadd float %88, %89 ; [#uses=1]
+ %91 = fmul float %57, %54 ; [#uses=1]
+ %92 = fadd float %90, %91 ; [#uses=2]
+ %93 = fmul float %72, %52 ; [#uses=1]
+ %94 = fmul float %69, %53 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %66, %54 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=2]
+ %98 = fmul float %81, %52 ; [#uses=1]
+ %99 = fmul float %78, %53 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %75, %54 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=2]
+ %103 = fsub float %87, %92 ; [#uses=1]
+ %104 = fsub float %85, %97 ; [#uses=1]
+ %105 = fsub float %83, %102 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %105, float* %106, align 4
+ %107 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %104, float* %107, align 4
+ %108 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %103, float* %108, align 4
+ %109 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %109, align 4
+ %110 = fadd float %87, %92 ; [#uses=1]
+ %111 = fadd float %85, %97 ; [#uses=1]
+ %112 = fadd float %83, %102 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %112, float* %113, align 4
+ %114 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %111, float* %114, align 4
+ %115 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %110, float* %115, align 4
+ %116 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %116, align 4
+ ret void
+
+bb.nph: ; preds = %entry
+ %117 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %118 = bitcast i8** %117 to float* ; [#uses=1]
+ %119 = load float* %118, align 4 ; [#uses=2]
+ %120 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=3]
+ %121 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=3]
+ %122 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=3]
+ %123 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 3 ; [#uses=1]
+ %124 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=4]
+ %125 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=4]
+ %126 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=4]
+ %127 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=4]
+ %128 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=4]
+ %129 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=4]
+ %130 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %131 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=4]
+ %132 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=4]
+ %133 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btQuadWord* %sv, i32 0, i32 0, i32 0 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btQuadWord* %sv, i32 0, i32 0, i32 1 ; [#uses=1]
+ %139 = getelementptr inbounds %struct.btQuadWord* %sv, i32 0, i32 0, i32 2 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %141 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %142 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %143 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 0 ; [#uses=2]
+ %144 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 1 ; [#uses=2]
+ %145 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 2 ; [#uses=2]
+ %146 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 3 ; [#uses=2]
+ %147 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %149 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %150 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %151 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %153 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ br label %bb19
+
+bb19: ; preds = %bb19, %bb.nph
+ %i.0144 = phi i32 [ 0, %bb.nph ], [ %278, %bb19 ] ; [#uses=5]
+ %scevgep = getelementptr %struct.btQuadWord* %vec, i32 0, i32 0, i32 %i.0144 ; [#uses=2]
+ %scevgep145 = getelementptr %struct.btQuadWord* %tmp, i32 0, i32 0, i32 %i.0144 ; [#uses=2]
+ %scevgep146 = getelementptr %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 %i.0144 ; [#uses=1]
+ %scevgep147 = getelementptr %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 %i.0144 ; [#uses=1]
+ store float 0.000000e+00, float* %120, align 8
+ store float 0.000000e+00, float* %121, align 4
+ store float 0.000000e+00, float* %122, align 8
+ store float 0.000000e+00, float* %123, align 4
+ store float 1.000000e+00, float* %scevgep, align 4
+ %154 = load float* %124, align 4 ; [#uses=1]
+ %155 = load float* %120, align 8 ; [#uses=3]
+ %156 = fmul float %154, %155 ; [#uses=1]
+ %157 = load float* %125, align 4 ; [#uses=1]
+ %158 = load float* %121, align 4 ; [#uses=3]
+ %159 = fmul float %157, %158 ; [#uses=1]
+ %160 = fadd float %156, %159 ; [#uses=1]
+ %161 = load float* %126, align 4 ; [#uses=1]
+ %162 = load float* %122, align 8 ; [#uses=3]
+ %163 = fmul float %161, %162 ; [#uses=1]
+ %164 = fadd float %160, %163 ; [#uses=1]
+ %165 = load float* %127, align 4 ; [#uses=1]
+ %166 = fmul float %165, %155 ; [#uses=1]
+ %167 = load float* %128, align 4 ; [#uses=1]
+ %168 = fmul float %167, %158 ; [#uses=1]
+ %169 = fadd float %166, %168 ; [#uses=1]
+ %170 = load float* %129, align 4 ; [#uses=1]
+ %171 = fmul float %170, %162 ; [#uses=1]
+ %172 = fadd float %169, %171 ; [#uses=1]
+ %173 = load float* %130, align 4 ; [#uses=1]
+ %174 = fmul float %173, %155 ; [#uses=1]
+ %175 = load float* %131, align 4 ; [#uses=1]
+ %176 = fmul float %175, %158 ; [#uses=1]
+ %177 = fadd float %174, %176 ; [#uses=1]
+ %178 = load float* %132, align 4 ; [#uses=1]
+ %179 = fmul float %178, %162 ; [#uses=1]
+ %180 = fadd float %177, %179 ; [#uses=1]
+ store float %180, float* %133, align 8
+ store float %172, float* %134, align 4
+ store float %164, float* %135, align 8
+ store float 0.000000e+00, float* %136, align 4
+ call void @_ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(%struct.btQuadWord* noalias sret %sv, %struct.btConvexShape* %this, %struct.btQuadWord* %2)
+ %181 = load float* %132, align 4 ; [#uses=1]
+ %182 = load float* %137, align 8 ; [#uses=3]
+ %183 = fmul float %181, %182 ; [#uses=1]
+ %184 = load float* %129, align 4 ; [#uses=1]
+ %185 = load float* %138, align 4 ; [#uses=3]
+ %186 = fmul float %184, %185 ; [#uses=1]
+ %187 = fadd float %183, %186 ; [#uses=1]
+ %188 = load float* %126, align 4 ; [#uses=1]
+ %189 = load float* %139, align 8 ; [#uses=3]
+ %190 = fmul float %188, %189 ; [#uses=1]
+ %191 = fadd float %187, %190 ; [#uses=1]
+ %192 = load float* %140, align 4 ; [#uses=1]
+ %193 = fadd float %191, %192 ; [#uses=1]
+ %194 = load float* %131, align 4 ; [#uses=1]
+ %195 = fmul float %194, %182 ; [#uses=1]
+ %196 = load float* %128, align 4 ; [#uses=1]
+ %197 = fmul float %196, %185 ; [#uses=1]
+ %198 = fadd float %195, %197 ; [#uses=1]
+ %199 = load float* %125, align 4 ; [#uses=1]
+ %200 = fmul float %199, %189 ; [#uses=1]
+ %201 = fadd float %198, %200 ; [#uses=1]
+ %202 = load float* %141, align 4 ; [#uses=1]
+ %203 = fadd float %201, %202 ; [#uses=1]
+ %204 = load float* %130, align 4 ; [#uses=1]
+ %205 = fmul float %204, %182 ; [#uses=1]
+ %206 = load float* %127, align 4 ; [#uses=1]
+ %207 = fmul float %206, %185 ; [#uses=1]
+ %208 = fadd float %205, %207 ; [#uses=1]
+ %209 = load float* %124, align 4 ; [#uses=1]
+ %210 = fmul float %209, %189 ; [#uses=1]
+ %211 = fadd float %208, %210 ; [#uses=1]
+ %212 = load float* %142, align 4 ; [#uses=1]
+ %213 = fadd float %211, %212 ; [#uses=1]
+ store float %213, float* %143, align 8
+ store float %203, float* %144, align 4
+ store float %193, float* %145, align 8
+ store float 0.000000e+00, float* %146, align 4
+ %214 = load float* %scevgep145, align 4 ; [#uses=1]
+ %215 = fadd float %214, %119 ; [#uses=1]
+ store float %215, float* %scevgep146, align 4
+ store float -1.000000e+00, float* %scevgep, align 4
+ %216 = load float* %124, align 4 ; [#uses=1]
+ %217 = load float* %120, align 8 ; [#uses=3]
+ %218 = fmul float %216, %217 ; [#uses=1]
+ %219 = load float* %125, align 4 ; [#uses=1]
+ %220 = load float* %121, align 4 ; [#uses=3]
+ %221 = fmul float %219, %220 ; [#uses=1]
+ %222 = fadd float %218, %221 ; [#uses=1]
+ %223 = load float* %126, align 4 ; [#uses=1]
+ %224 = load float* %122, align 8 ; [#uses=3]
+ %225 = fmul float %223, %224 ; [#uses=1]
+ %226 = fadd float %222, %225 ; [#uses=1]
+ %227 = load float* %127, align 4 ; [#uses=1]
+ %228 = fmul float %227, %217 ; [#uses=1]
+ %229 = load float* %128, align 4 ; [#uses=1]
+ %230 = fmul float %229, %220 ; [#uses=1]
+ %231 = fadd float %228, %230 ; [#uses=1]
+ %232 = load float* %129, align 4 ; [#uses=1]
+ %233 = fmul float %232, %224 ; [#uses=1]
+ %234 = fadd float %231, %233 ; [#uses=1]
+ %235 = load float* %130, align 4 ; [#uses=1]
+ %236 = fmul float %235, %217 ; [#uses=1]
+ %237 = load float* %131, align 4 ; [#uses=1]
+ %238 = fmul float %237, %220 ; [#uses=1]
+ %239 = fadd float %236, %238 ; [#uses=1]
+ %240 = load float* %132, align 4 ; [#uses=1]
+ %241 = fmul float %240, %224 ; [#uses=1]
+ %242 = fadd float %239, %241 ; [#uses=1]
+ store float %242, float* %147, align 8
+ store float %234, float* %148, align 4
+ store float %226, float* %149, align 8
+ store float 0.000000e+00, float* %150, align 4
+ call void @_ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(%struct.btQuadWord* noalias sret %1, %struct.btConvexShape* %this, %struct.btQuadWord* %0)
+ %243 = load float* %132, align 4 ; [#uses=1]
+ %244 = load float* %151, align 8 ; [#uses=3]
+ %245 = fmul float %243, %244 ; [#uses=1]
+ %246 = load float* %129, align 4 ; [#uses=1]
+ %247 = load float* %152, align 4 ; [#uses=3]
+ %248 = fmul float %246, %247 ; [#uses=1]
+ %249 = fadd float %245, %248 ; [#uses=1]
+ %250 = load float* %126, align 4 ; [#uses=1]
+ %251 = load float* %153, align 8 ; [#uses=3]
+ %252 = fmul float %250, %251 ; [#uses=1]
+ %253 = fadd float %249, %252 ; [#uses=1]
+ %254 = load float* %140, align 4 ; [#uses=1]
+ %255 = fadd float %253, %254 ; [#uses=1]
+ %256 = load float* %131, align 4 ; [#uses=1]
+ %257 = fmul float %256, %244 ; [#uses=1]
+ %258 = load float* %128, align 4 ; [#uses=1]
+ %259 = fmul float %258, %247 ; [#uses=1]
+ %260 = fadd float %257, %259 ; [#uses=1]
+ %261 = load float* %125, align 4 ; [#uses=1]
+ %262 = fmul float %261, %251 ; [#uses=1]
+ %263 = fadd float %260, %262 ; [#uses=1]
+ %264 = load float* %141, align 4 ; [#uses=1]
+ %265 = fadd float %263, %264 ; [#uses=1]
+ %266 = load float* %130, align 4 ; [#uses=1]
+ %267 = fmul float %266, %244 ; [#uses=1]
+ %268 = load float* %127, align 4 ; [#uses=1]
+ %269 = fmul float %268, %247 ; [#uses=1]
+ %270 = fadd float %267, %269 ; [#uses=1]
+ %271 = load float* %124, align 4 ; [#uses=1]
+ %272 = fmul float %271, %251 ; [#uses=1]
+ %273 = fadd float %270, %272 ; [#uses=1]
+ %274 = load float* %142, align 4 ; [#uses=1]
+ %275 = fadd float %273, %274 ; [#uses=1]
+ store float %275, float* %143, align 8
+ store float %265, float* %144, align 4
+ store float %255, float* %145, align 8
+ store float 0.000000e+00, float* %146, align 4
+ %276 = load float* %scevgep145, align 4 ; [#uses=1]
+ %277 = fsub float %276, %119 ; [#uses=1]
+ store float %277, float* %scevgep147, align 4
+ %278 = add nsw i32 %i.0144, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %278, 3 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb19
+
+bb25: ; preds = %entry
+ %279 = bitcast %struct.btConvexShape* %this to %struct.btCapsuleShape* ; [#uses=2]
+ %280 = getelementptr inbounds %struct.btConvexShape* %this, i32 4, i32 0, i32 1 ; [#uses=1]
+ %281 = load i32* %280, align 4 ; [#uses=3]
+ %282 = add nsw i32 %281, 2 ; [#uses=1]
+ %283 = srem i32 %282, 3 ; [#uses=1]
+ %284 = getelementptr inbounds %struct.btCapsuleShape* %279, i32 0, i32 0, i32 2, i32 0, i32 %283 ; [#uses=1]
+ %285 = load float* %284, align 4 ; [#uses=4]
+ %286 = getelementptr inbounds %struct.btQuadWord* %halfExtents28, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %285, float* %286, align 8
+ %287 = getelementptr inbounds %struct.btQuadWord* %halfExtents28, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %285, float* %287, align 4
+ %288 = getelementptr inbounds %struct.btQuadWord* %halfExtents28, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %285, float* %288, align 8
+ %289 = getelementptr inbounds %struct.btQuadWord* %halfExtents28, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %289, align 4
+ %290 = getelementptr inbounds %struct.btCapsuleShape* %279, i32 0, i32 0, i32 2, i32 0, i32 %281 ; [#uses=1]
+ %291 = load float* %290, align 4 ; [#uses=1]
+ %292 = fadd float %285, %291 ; [#uses=1]
+ %293 = getelementptr inbounds %struct.btQuadWord* %halfExtents28, i32 0, i32 0, i32 %281 ; [#uses=1]
+ store float %292, float* %293, align 4
+ %294 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %295 = bitcast i8** %294 to float* ; [#uses=1]
+ %296 = load float* %295, align 4 ; [#uses=1]
+ %297 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %298 = bitcast i8** %297 to float* ; [#uses=1]
+ %299 = load float* %298, align 4 ; [#uses=1]
+ %300 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %301 = bitcast i8** %300 to float* ; [#uses=1]
+ %302 = load float* %301, align 4 ; [#uses=1]
+ %303 = load float* %286, align 8 ; [#uses=1]
+ %304 = fadd float %303, %302 ; [#uses=4]
+ store float %304, float* %286, align 8
+ %305 = load float* %287, align 4 ; [#uses=1]
+ %306 = fadd float %305, %299 ; [#uses=4]
+ store float %306, float* %287, align 4
+ %307 = load float* %288, align 8 ; [#uses=1]
+ %308 = fadd float %307, %296 ; [#uses=3]
+ %309 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %310 = load float* %309, align 4 ; [#uses=1]
+ %311 = call float @fabsf(float %310) nounwind readnone ; [#uses=1]
+ %312 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %313 = load float* %312, align 4 ; [#uses=1]
+ %314 = call float @fabsf(float %313) nounwind readnone ; [#uses=1]
+ %315 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %316 = load float* %315, align 4 ; [#uses=1]
+ %317 = call float @fabsf(float %316) nounwind readnone ; [#uses=1]
+ %318 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %319 = load float* %318, align 4 ; [#uses=1]
+ %320 = call float @fabsf(float %319) nounwind readnone ; [#uses=1]
+ %321 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %322 = load float* %321, align 4 ; [#uses=1]
+ %323 = call float @fabsf(float %322) nounwind readnone ; [#uses=1]
+ %324 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %325 = load float* %324, align 4 ; [#uses=1]
+ %326 = call float @fabsf(float %325) nounwind readnone ; [#uses=1]
+ %327 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %328 = load float* %327, align 4 ; [#uses=1]
+ %329 = call float @fabsf(float %328) nounwind readnone ; [#uses=1]
+ %330 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %331 = load float* %330, align 4 ; [#uses=1]
+ %332 = call float @fabsf(float %331) nounwind readnone ; [#uses=1]
+ %333 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %334 = load float* %333, align 4 ; [#uses=1]
+ %335 = call float @fabsf(float %334) nounwind readnone ; [#uses=1]
+ %336 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %337 = load float* %336, align 4 ; [#uses=2]
+ %338 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %339 = load float* %338, align 4 ; [#uses=2]
+ %340 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %341 = load float* %340, align 4 ; [#uses=2]
+ %342 = fmul float %317, %304 ; [#uses=1]
+ %343 = fmul float %314, %306 ; [#uses=1]
+ %344 = fadd float %342, %343 ; [#uses=1]
+ %345 = fmul float %311, %308 ; [#uses=1]
+ %346 = fadd float %344, %345 ; [#uses=2]
+ %347 = fmul float %326, %304 ; [#uses=1]
+ %348 = fmul float %323, %306 ; [#uses=1]
+ %349 = fadd float %347, %348 ; [#uses=1]
+ %350 = fmul float %320, %308 ; [#uses=1]
+ %351 = fadd float %349, %350 ; [#uses=2]
+ %352 = fmul float %335, %304 ; [#uses=1]
+ %353 = fmul float %332, %306 ; [#uses=1]
+ %354 = fadd float %352, %353 ; [#uses=1]
+ %355 = fmul float %329, %308 ; [#uses=1]
+ %356 = fadd float %354, %355 ; [#uses=2]
+ %357 = fsub float %341, %346 ; [#uses=1]
+ %358 = fsub float %339, %351 ; [#uses=1]
+ %359 = fsub float %337, %356 ; [#uses=1]
+ %360 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %359, float* %360, align 4
+ %361 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %358, float* %361, align 4
+ %362 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %357, float* %362, align 4
+ %363 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %363, align 4
+ %364 = fadd float %341, %346 ; [#uses=1]
+ %365 = fadd float %339, %351 ; [#uses=1]
+ %366 = fadd float %337, %356 ; [#uses=1]
+ %367 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %366, float* %367, align 4
+ %368 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %365, float* %368, align 4
+ %369 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %364, float* %369, align 4
+ %370 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %370, align 4
+ ret void
+
+bb5.i57: ; preds = %entry, %entry
+ %371 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %372 = bitcast i8** %371 to float* ; [#uses=1]
+ %373 = load float* %372, align 4 ; [#uses=3]
+ %374 = getelementptr inbounds %struct.btConvexShape* %this, i32 6, i32 0, i32 1 ; [#uses=1]
+ %375 = bitcast i32* %374 to float* ; [#uses=1]
+ %376 = load float* %375, align 4 ; [#uses=2]
+ %377 = getelementptr inbounds %struct.btConvexShape* %this, i32 5 ; [#uses=1]
+ %378 = bitcast %struct.btConvexShape* %377 to float* ; [#uses=1]
+ %379 = load float* %378, align 4 ; [#uses=2]
+ %380 = fsub float %376, %379 ; [#uses=1]
+ %381 = getelementptr inbounds %struct.btConvexShape* %this, i32 6 ; [#uses=1]
+ %382 = bitcast %struct.btConvexShape* %381 to float* ; [#uses=1]
+ %383 = load float* %382, align 4 ; [#uses=2]
+ %384 = getelementptr inbounds %struct.btConvexShape* %this, i32 4, i32 0, i32 2 ; [#uses=1]
+ %385 = bitcast i8** %384 to float* ; [#uses=1]
+ %386 = load float* %385, align 4 ; [#uses=2]
+ %387 = fsub float %383, %386 ; [#uses=1]
+ %388 = getelementptr inbounds %struct.btConvexShape* %this, i32 5, i32 0, i32 2 ; [#uses=1]
+ %389 = bitcast i8** %388 to float* ; [#uses=1]
+ %390 = load float* %389, align 4 ; [#uses=2]
+ %391 = getelementptr inbounds %struct.btConvexShape* %this, i32 4, i32 0, i32 1 ; [#uses=1]
+ %392 = bitcast i32* %391 to float* ; [#uses=1]
+ %393 = load float* %392, align 4 ; [#uses=2]
+ %394 = fsub float %390, %393 ; [#uses=1]
+ %395 = fmul float %380, 5.000000e-01 ; [#uses=1]
+ %396 = fmul float %387, 5.000000e-01 ; [#uses=1]
+ %397 = fmul float %394, 5.000000e-01 ; [#uses=1]
+ %398 = fadd float %397, %373 ; [#uses=3]
+ %399 = fadd float %396, %373 ; [#uses=3]
+ %400 = fadd float %395, %373 ; [#uses=3]
+ %401 = fadd float %376, %379 ; [#uses=1]
+ %402 = fadd float %383, %386 ; [#uses=1]
+ %403 = fadd float %390, %393 ; [#uses=1]
+ %404 = fmul float %401, 5.000000e-01 ; [#uses=3]
+ %405 = fmul float %402, 5.000000e-01 ; [#uses=3]
+ %406 = fmul float %403, 5.000000e-01 ; [#uses=3]
+ %407 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %408 = load float* %407, align 4 ; [#uses=2]
+ %409 = call float @fabsf(float %408) nounwind readnone ; [#uses=1]
+ %410 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %411 = load float* %410, align 4 ; [#uses=2]
+ %412 = call float @fabsf(float %411) nounwind readnone ; [#uses=1]
+ %413 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %414 = load float* %413, align 4 ; [#uses=2]
+ %415 = call float @fabsf(float %414) nounwind readnone ; [#uses=1]
+ %416 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %417 = load float* %416, align 4 ; [#uses=2]
+ %418 = call float @fabsf(float %417) nounwind readnone ; [#uses=1]
+ %419 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %420 = load float* %419, align 4 ; [#uses=2]
+ %421 = call float @fabsf(float %420) nounwind readnone ; [#uses=1]
+ %422 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %423 = load float* %422, align 4 ; [#uses=2]
+ %424 = call float @fabsf(float %423) nounwind readnone ; [#uses=1]
+ %425 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %426 = load float* %425, align 4 ; [#uses=2]
+ %427 = call float @fabsf(float %426) nounwind readnone ; [#uses=1]
+ %428 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %429 = load float* %428, align 4 ; [#uses=2]
+ %430 = call float @fabsf(float %429) nounwind readnone ; [#uses=1]
+ %431 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %432 = load float* %431, align 4 ; [#uses=2]
+ %433 = call float @fabsf(float %432) nounwind readnone ; [#uses=1]
+ %434 = fmul float %414, %406 ; [#uses=1]
+ %435 = fmul float %411, %405 ; [#uses=1]
+ %436 = fadd float %434, %435 ; [#uses=1]
+ %437 = fmul float %408, %404 ; [#uses=1]
+ %438 = fadd float %436, %437 ; [#uses=1]
+ %439 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %440 = load float* %439, align 4 ; [#uses=1]
+ %441 = fadd float %438, %440 ; [#uses=2]
+ %442 = fmul float %423, %406 ; [#uses=1]
+ %443 = fmul float %420, %405 ; [#uses=1]
+ %444 = fadd float %442, %443 ; [#uses=1]
+ %445 = fmul float %417, %404 ; [#uses=1]
+ %446 = fadd float %444, %445 ; [#uses=1]
+ %447 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %448 = load float* %447, align 4 ; [#uses=1]
+ %449 = fadd float %446, %448 ; [#uses=2]
+ %450 = fmul float %432, %406 ; [#uses=1]
+ %451 = fmul float %429, %405 ; [#uses=1]
+ %452 = fadd float %450, %451 ; [#uses=1]
+ %453 = fmul float %426, %404 ; [#uses=1]
+ %454 = fadd float %452, %453 ; [#uses=1]
+ %455 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %456 = load float* %455, align 4 ; [#uses=1]
+ %457 = fadd float %454, %456 ; [#uses=2]
+ %458 = fmul float %415, %398 ; [#uses=1]
+ %459 = fmul float %412, %399 ; [#uses=1]
+ %460 = fadd float %458, %459 ; [#uses=1]
+ %461 = fmul float %409, %400 ; [#uses=1]
+ %462 = fadd float %460, %461 ; [#uses=2]
+ %463 = fmul float %424, %398 ; [#uses=1]
+ %464 = fmul float %421, %399 ; [#uses=1]
+ %465 = fadd float %463, %464 ; [#uses=1]
+ %466 = fmul float %418, %400 ; [#uses=1]
+ %467 = fadd float %465, %466 ; [#uses=2]
+ %468 = fmul float %433, %398 ; [#uses=1]
+ %469 = fmul float %430, %399 ; [#uses=1]
+ %470 = fadd float %468, %469 ; [#uses=1]
+ %471 = fmul float %427, %400 ; [#uses=1]
+ %472 = fadd float %470, %471 ; [#uses=2]
+ %473 = fsub float %441, %462 ; [#uses=1]
+ %474 = fsub float %449, %467 ; [#uses=1]
+ %475 = fsub float %457, %472 ; [#uses=1]
+ %476 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %475, float* %476, align 4
+ %477 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %474, float* %477, align 4
+ %478 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %473, float* %478, align 4
+ %479 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %479, align 4
+ %480 = fadd float %441, %462 ; [#uses=1]
+ %481 = fadd float %449, %467 ; [#uses=1]
+ %482 = fadd float %457, %472 ; [#uses=1]
+ %483 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %482, float* %483, align 4
+ %484 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %481, float* %484, align 4
+ %485 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %480, float* %485, align 4
+ %486 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %486, align 4
+ ret void
+
+bb42: ; preds = %entry
+ %487 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %488 = load i32 (...)*** %487, align 4 ; [#uses=1]
+ %489 = getelementptr inbounds i32 (...)** %488, i32 2 ; [#uses=1]
+ %490 = load i32 (...)** %489, align 4 ; [#uses=1]
+ %491 = bitcast i32 (...)* %490 to void (%struct.btConvexShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %491(%struct.btConvexShape* %this, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ ret void
+
+return: ; preds = %bb19
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK13btConvexShape31localGetSupportVertexNonVirtualERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btConvexShape* %this, %struct.btQuadWord* nocapture %localDir) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %localDirNorm = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = getelementptr inbounds %struct.btQuadWord* %localDirNorm, i32 0, i32 0, i32 0 ; [#uses=4]
+ %2 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ store float %3, float* %1, align 8
+ %4 = getelementptr inbounds %struct.btQuadWord* %localDirNorm, i32 0, i32 0, i32 1 ; [#uses=4]
+ %5 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=4]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btQuadWord* %localDirNorm, i32 0, i32 0, i32 2 ; [#uses=4]
+ %8 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=4]
+ store float %9, float* %7, align 8
+ %10 = getelementptr inbounds %struct.btQuadWord* %localDirNorm, i32 0, i32 0, i32 3 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btQuadWord* %localDir, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = fmul float %3, %3 ; [#uses=1]
+ %14 = fmul float %6, %6 ; [#uses=1]
+ %15 = fadd float %13, %14 ; [#uses=1]
+ %16 = fmul float %9, %9 ; [#uses=1]
+ %17 = fadd float %15, %16 ; [#uses=1]
+ %18 = fcmp olt float %17, 0x3D10000000000000 ; [#uses=1]
+ br i1 %18, label %bb, label %bb1
+
+bb: ; preds = %entry
+ store float -1.000000e+00, float* %1, align 8
+ store float -1.000000e+00, float* %4, align 4
+ store float -1.000000e+00, float* %7, align 8
+ store float 0.000000e+00, float* %10, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %19 = phi float [ -1.000000e+00, %bb ], [ %9, %entry ] ; [#uses=3]
+ %20 = phi float [ -1.000000e+00, %bb ], [ %6, %entry ] ; [#uses=3]
+ %21 = phi float [ -1.000000e+00, %bb ], [ %3, %entry ] ; [#uses=3]
+ %22 = fmul float %21, %21 ; [#uses=1]
+ %23 = fmul float %20, %20 ; [#uses=1]
+ %24 = fadd float %22, %23 ; [#uses=1]
+ %25 = fmul float %19, %19 ; [#uses=1]
+ %26 = fadd float %24, %25 ; [#uses=1]
+ %27 = call float @sqrtf(float %26) nounwind readonly ; [#uses=1]
+ %28 = fdiv float 1.000000e+00, %27 ; [#uses=3]
+ %29 = fmul float %21, %28 ; [#uses=7]
+ store float %29, float* %1, align 8
+ %30 = fmul float %20, %28 ; [#uses=7]
+ store float %30, float* %4, align 4
+ %31 = fmul float %19, %28 ; [#uses=7]
+ store float %31, float* %7, align 8
+ %32 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ switch i32 %33, label %bb6.i [
+ i32 0, label %bb1.i
+ i32 1, label %bb2.i
+ i32 4, label %bb5.i
+ i32 5, label %bb5.i
+ i32 8, label %bb.i
+ i32 10, label %bb4.i
+ i32 13, label %bb3.i
+ ]
+
+bb.i: ; preds = %bb1
+ %34 = getelementptr inbounds %struct.btConvexShape* %this, i32 2, i32 0, i32 1 ; [#uses=1]
+ %35 = bitcast i32* %34 to float* ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btConvexShape* %this, i32 1 ; [#uses=1]
+ %38 = bitcast %struct.btConvexShape* %37 to float* ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fmul float %36, %39 ; [#uses=1]
+ br label %_ZNK13btConvexShape19getMarginNonVirtualEv.exit
+
+bb1.i: ; preds = %bb1
+ %41 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %42 = bitcast i8** %41 to float* ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ br label %_ZNK13btConvexShape19getMarginNonVirtualEv.exit
+
+bb2.i: ; preds = %bb1
+ %44 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %45 = bitcast i8** %44 to float* ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ br label %_ZNK13btConvexShape19getMarginNonVirtualEv.exit
+
+bb3.i: ; preds = %bb1
+ %47 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %48 = bitcast i8** %47 to float* ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ br label %_ZNK13btConvexShape19getMarginNonVirtualEv.exit
+
+bb4.i: ; preds = %bb1
+ %50 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %51 = bitcast i8** %50 to float* ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ br label %_ZNK13btConvexShape19getMarginNonVirtualEv.exit
+
+bb5.i: ; preds = %bb1, %bb1
+ %53 = getelementptr inbounds %struct.btConvexShape* %this, i32 3, i32 0, i32 2 ; [#uses=1]
+ %54 = bitcast i8** %53 to float* ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ br label %_ZNK13btConvexShape19getMarginNonVirtualEv.exit
+
+bb6.i: ; preds = %bb1
+ %56 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %57 = load i32 (...)*** %56, align 4 ; [#uses=1]
+ %58 = getelementptr inbounds i32 (...)** %57, i32 11 ; [#uses=1]
+ %59 = load i32 (...)** %58, align 4 ; [#uses=1]
+ %60 = bitcast i32 (...)* %59 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %61 = call float %60(%struct.btConvexShape* %this) ; [#uses=1]
+ %.pre = load float* %7, align 8 ; [#uses=1]
+ %.pre4 = load float* %4, align 4 ; [#uses=1]
+ %.pre5 = load float* %1, align 8 ; [#uses=1]
+ br label %_ZNK13btConvexShape19getMarginNonVirtualEv.exit
+
+_ZNK13btConvexShape19getMarginNonVirtualEv.exit: ; preds = %bb6.i, %bb5.i, %bb4.i, %bb3.i, %bb2.i, %bb1.i, %bb.i
+ %62 = phi float [ %29, %bb3.i ], [ %29, %bb4.i ], [ %29, %bb.i ], [ %29, %bb5.i ], [ %29, %bb2.i ], [ %29, %bb1.i ], [ %.pre5, %bb6.i ] ; [#uses=1]
+ %63 = phi float [ %30, %bb3.i ], [ %30, %bb4.i ], [ %30, %bb.i ], [ %30, %bb5.i ], [ %30, %bb2.i ], [ %30, %bb1.i ], [ %.pre4, %bb6.i ] ; [#uses=1]
+ %64 = phi float [ %31, %bb3.i ], [ %31, %bb4.i ], [ %31, %bb.i ], [ %31, %bb5.i ], [ %31, %bb2.i ], [ %31, %bb1.i ], [ %.pre, %bb6.i ] ; [#uses=1]
+ %65 = phi float [ %49, %bb3.i ], [ %52, %bb4.i ], [ %40, %bb.i ], [ %55, %bb5.i ], [ %46, %bb2.i ], [ %43, %bb1.i ], [ %61, %bb6.i ] ; [#uses=3]
+ %66 = fmul float %64, %65 ; [#uses=1]
+ %67 = fmul float %63, %65 ; [#uses=1]
+ %68 = fmul float %62, %65 ; [#uses=1]
+ call void @_ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(%struct.btQuadWord* noalias sret %0, %struct.btConvexShape* %this, %struct.btQuadWord* %localDirNorm)
+ %69 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 8 ; [#uses=1]
+ %71 = fadd float %70, %66 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ %74 = fadd float %73, %67 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 8 ; [#uses=1]
+ %77 = fadd float %76, %68 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %77, float* %78, align 4
+ %79 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %74, float* %79, align 4
+ %80 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %71, float* %80, align 4
+ %81 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %81, align 4
+ ret void
+}
+
+; [#uses=126]
+define void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btConvexShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN15btConvex2dShapeC2EP13btConvexShape(%struct.btConvex2dShape* %this, %struct.btConvexShape* %convexChildShape) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeC2Ev(%struct.btConvexShape* %0)
+ %1 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV15btConvex2dShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btConvexShape* %convexChildShape, %struct.btConvexShape** %2, align 4
+ %3 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 18, i32* %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK15btConvex2dShape7getNameEv(%struct.btConvex2dShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([14 x i8]* @.str82, i32 0, i32 0)
+}
+
+; [#uses=1]
+define void @_ZNK15btConvex2dShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvex2dShape* nocapture %this, %struct.btQuadWord* %vec) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 16 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %6(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvexShape* %1, %struct.btQuadWord* %vec)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK15btConvex2dShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btConvex2dShape* nocapture %this, %struct.btQuadWord* %vectors, %struct.btQuadWord* %supportVerticesOut, i32 %numVectors) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 17 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btConvexShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* ; [#uses=1]
+ tail call void %6(%struct.btConvexShape* %1, %struct.btQuadWord* %vectors, %struct.btQuadWord* %supportVerticesOut, i32 %numVectors)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK15btConvex2dShape24localGetSupportingVertexERK9btVector3(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvex2dShape* nocapture %this, %struct.btQuadWord* %vec) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 15 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %6(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvexShape* %1, %struct.btQuadWord* %vec)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK15btConvex2dShape21calculateLocalInertiaEfR9btVector3(%struct.btConvex2dShape* nocapture %this, float %mass, %struct.btQuadWord* %inertia) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 8 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0 ; [#uses=1]
+ %7 = bitcast i32 (...)* %5 to void (%struct.btCollisionShape*, float, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %7(%struct.btCollisionShape* %6, float %mass, %struct.btQuadWord* %inertia)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK15btConvex2dShape7getAabbERK11btTransformR9btVector3S4_(%struct.btConvex2dShape* nocapture %this, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 2 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btConvexShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %6(%struct.btConvexShape* %1, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK15btConvex2dShape11getAabbSlowERK11btTransformR9btVector3S4_(%struct.btConvex2dShape* nocapture %this, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 18 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btConvexShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %6(%struct.btConvexShape* %1, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN15btConvex2dShape15setLocalScalingERK9btVector3(%struct.btConvex2dShape* nocapture %this, %struct.btQuadWord* %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 6 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %6(%struct.btConvexShape* %1, %struct.btQuadWord* %scaling)
+ ret void
+}
+
+; [#uses=1]
+define %struct.btQuadWord* @_ZNK15btConvex2dShape15getLocalScalingEv(%struct.btConvex2dShape* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 7 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to %struct.btQuadWord* (%struct.btConvexShape*)* ; [#uses=1]
+ %7 = tail call %struct.btQuadWord* %6(%struct.btConvexShape* %1) ; [#uses=1]
+ ret %struct.btQuadWord* %7
+}
+
+; [#uses=1]
+define void @_ZN15btConvex2dShape9setMarginEf(%struct.btConvex2dShape* nocapture %this, float %margin) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 10 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btConvexShape*, float)* ; [#uses=1]
+ tail call void %6(%struct.btConvexShape* %1, float %margin)
+ ret void
+}
+
+; [#uses=1]
+define float @_ZNK15btConvex2dShape9getMarginEv(%struct.btConvex2dShape* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 11 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %7 = tail call float %6(%struct.btConvexShape* %1) ; [#uses=1]
+ ret float %7
+}
+
+; [#uses=1]
+define i32 @_ZNK15btConvex2dShape36getNumPreferredPenetrationDirectionsEv(%struct.btConvex2dShape* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 19 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i32 (%struct.btConvexShape*)* ; [#uses=1]
+ %7 = tail call i32 %6(%struct.btConvexShape* %1) ; [#uses=1]
+ ret i32 %7
+}
+
+; [#uses=1]
+define void @_ZNK15btConvex2dShape32getPreferredPenetrationDirectionEiR9btVector3(%struct.btConvex2dShape* nocapture %this, i32 %index, %struct.btQuadWord* %penetrationVector) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 20 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btConvexShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %6(%struct.btConvexShape* %1, i32 %index, %struct.btQuadWord* %penetrationVector)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN15btConvex2dShapeD0Ev(%struct.btConvex2dShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV15btConvex2dShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btConvex2dShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN15btConvex2dShapeD1Ev(%struct.btConvex2dShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV15btConvex2dShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN15btConvex2dShapeD2Ev(%struct.btConvex2dShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV15btConvex2dShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN15btConvex2dShapeC1EP13btConvexShape(%struct.btConvex2dShape* %this, %struct.btConvexShape* %convexChildShape) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeC2Ev(%struct.btConvexShape* %0)
+ %1 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV15btConvex2dShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btConvexShape* %convexChildShape, %struct.btConvexShape** %2, align 4
+ %3 = getelementptr inbounds %struct.btConvex2dShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 18, i32* %3, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN25btConvexTriangleMeshShapeC2EP23btStridingMeshInterfaceb(%struct.btConvexTriangleMeshShape* %this, %struct.btStridingMeshInterface* %meshInterface, i8 zeroext %calcAabb) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShapeC2Ev(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ %1 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([30 x i32 (...)*]* @_ZTV25btConvexTriangleMeshShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btStridingMeshInterface* %meshInterface, %struct.btStridingMeshInterface** %2, align 4
+ %3 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 3, i32* %3, align 4
+ %toBool = icmp eq i8 %calcAabb, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ to label %return unwind label %lpad
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %bb, %entry
+ ret void
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %4 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %4)
+ to label %invcont2 unwind label %lpad7
+
+lpad7: ; preds = %lpad
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK25btConvexTriangleMeshShape7getNameEv(%struct.btConvexTriangleMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([14 x i8]* @.str83, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN26LocalSupportVertexCallbackD1Ev(%struct.LocalSupportVertexCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.LocalSupportVertexCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV26LocalSupportVertexCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.LocalSupportVertexCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN26LocalSupportVertexCallbackD0Ev(%struct.LocalSupportVertexCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.LocalSupportVertexCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV26LocalSupportVertexCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.LocalSupportVertexCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct.LocalSupportVertexCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN26LocalSupportVertexCallback28internalProcessTriangleIndexEP9btVector3ii(%struct.LocalSupportVertexCallback* nocapture %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) nounwind align 2 {
+bb.nph:
+ %0 = getelementptr inbounds %struct.LocalSupportVertexCallback* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.LocalSupportVertexCallback* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.LocalSupportVertexCallback* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.LocalSupportVertexCallback* %this, i32 0, i32 2 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.LocalSupportVertexCallback* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.LocalSupportVertexCallback* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.LocalSupportVertexCallback* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %7 = getelementptr inbounds %struct.LocalSupportVertexCallback* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %scevgep6 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=2]
+ %scevgep7 = getelementptr %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=2]
+ %scevgep8 = getelementptr %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=2]
+ %8 = load float* %0, align 4 ; [#uses=3]
+ %9 = load float* %scevgep6, align 4 ; [#uses=1]
+ %10 = fmul float %8, %9 ; [#uses=1]
+ %11 = load float* %1, align 4 ; [#uses=3]
+ %12 = load float* %scevgep7, align 4 ; [#uses=1]
+ %13 = fmul float %11, %12 ; [#uses=1]
+ %14 = fadd float %10, %13 ; [#uses=1]
+ %15 = load float* %2, align 4 ; [#uses=3]
+ %16 = load float* %scevgep8, align 4 ; [#uses=1]
+ %17 = fmul float %15, %16 ; [#uses=1]
+ %18 = fadd float %14, %17 ; [#uses=3]
+ %19 = load float* %3, align 4 ; [#uses=2]
+ %20 = fcmp olt float %19, %18 ; [#uses=1]
+ br i1 %20, label %bb1, label %bb2
+
+bb1: ; preds = %bb.nph
+ %scevgep9 = getelementptr %struct.btQuadWord* %triangle, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %18, float* %3, align 4
+ %21 = load float* %scevgep6, align 4 ; [#uses=1]
+ store float %21, float* %4, align 4
+ %22 = load float* %scevgep7, align 4 ; [#uses=1]
+ store float %22, float* %5, align 4
+ %23 = load float* %scevgep8, align 4 ; [#uses=1]
+ store float %23, float* %6, align 4
+ %24 = load float* %scevgep9, align 4 ; [#uses=1]
+ store float %24, float* %7, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb.nph
+ %25 = phi float [ %18, %bb1 ], [ %19, %bb.nph ] ; [#uses=2]
+ %scevgep6.1 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=2]
+ %scevgep7.1 = getelementptr %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=2]
+ %scevgep8.1 = getelementptr %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=2]
+ %26 = load float* %scevgep6.1, align 4 ; [#uses=1]
+ %27 = fmul float %8, %26 ; [#uses=1]
+ %28 = load float* %scevgep7.1, align 4 ; [#uses=1]
+ %29 = fmul float %11, %28 ; [#uses=1]
+ %30 = fadd float %27, %29 ; [#uses=1]
+ %31 = load float* %scevgep8.1, align 4 ; [#uses=1]
+ %32 = fmul float %15, %31 ; [#uses=1]
+ %33 = fadd float %30, %32 ; [#uses=3]
+ %34 = fcmp olt float %25, %33 ; [#uses=1]
+ br i1 %34, label %bb1.1, label %bb2.1
+
+return: ; preds = %bb2.1
+ ret void
+
+bb2.1: ; preds = %bb1.1, %bb2
+ %35 = phi float [ %33, %bb1.1 ], [ %25, %bb2 ] ; [#uses=1]
+ %scevgep6.2 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=2]
+ %scevgep7.2 = getelementptr %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=2]
+ %scevgep8.2 = getelementptr %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=2]
+ %36 = load float* %scevgep6.2, align 4 ; [#uses=1]
+ %37 = fmul float %8, %36 ; [#uses=1]
+ %38 = load float* %scevgep7.2, align 4 ; [#uses=1]
+ %39 = fmul float %11, %38 ; [#uses=1]
+ %40 = fadd float %37, %39 ; [#uses=1]
+ %41 = load float* %scevgep8.2, align 4 ; [#uses=1]
+ %42 = fmul float %15, %41 ; [#uses=1]
+ %43 = fadd float %40, %42 ; [#uses=2]
+ %44 = fcmp olt float %35, %43 ; [#uses=1]
+ br i1 %44, label %bb1.2, label %return
+
+bb1.1: ; preds = %bb2
+ %scevgep9.1 = getelementptr %struct.btQuadWord* %triangle, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %33, float* %3, align 4
+ %45 = load float* %scevgep6.1, align 4 ; [#uses=1]
+ store float %45, float* %4, align 4
+ %46 = load float* %scevgep7.1, align 4 ; [#uses=1]
+ store float %46, float* %5, align 4
+ %47 = load float* %scevgep8.1, align 4 ; [#uses=1]
+ store float %47, float* %6, align 4
+ %48 = load float* %scevgep9.1, align 4 ; [#uses=1]
+ store float %48, float* %7, align 4
+ br label %bb2.1
+
+bb1.2: ; preds = %bb2.1
+ %scevgep9.2 = getelementptr %struct.btQuadWord* %triangle, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %43, float* %3, align 4
+ %49 = load float* %scevgep6.2, align 4 ; [#uses=1]
+ store float %49, float* %4, align 4
+ %50 = load float* %scevgep7.2, align 4 ; [#uses=1]
+ store float %50, float* %5, align 4
+ %51 = load float* %scevgep8.2, align 4 ; [#uses=1]
+ store float %51, float* %6, align 4
+ %52 = load float* %scevgep9.2, align 4 ; [#uses=1]
+ store float %52, float* %7, align 4
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZNK25btConvexTriangleMeshShape14getNumVerticesEv(%struct.btConvexTriangleMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=1]
+define i32 @_ZNK25btConvexTriangleMeshShape11getNumEdgesEv(%struct.btConvexTriangleMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=1]
+define void @_ZNK25btConvexTriangleMeshShape7getEdgeEiR9btVector3S1_(%struct.btConvexTriangleMeshShape* nocapture %this, i32 %unnamed_arg, %struct.btQuadWord* nocapture %unnamed_arg2, %struct.btQuadWord* nocapture %unnamed_arg4) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK25btConvexTriangleMeshShape9getVertexEiR9btVector3(%struct.btConvexTriangleMeshShape* nocapture %this, i32 %unnamed_arg, %struct.btQuadWord* nocapture %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZNK25btConvexTriangleMeshShape12getNumPlanesEv(%struct.btConvexTriangleMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=1]
+define void @_ZNK25btConvexTriangleMeshShape8getPlaneER9btVector3S1_i(%struct.btConvexTriangleMeshShape* nocapture %this, %struct.btQuadWord* nocapture %unnamed_arg, %struct.btQuadWord* nocapture %unnamed_arg2, i32 %unnamed_arg4) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define zeroext i8 @_ZNK25btConvexTriangleMeshShape8isInsideERK9btVector3f(%struct.btConvexTriangleMeshShape* nocapture %this, %struct.btQuadWord* nocapture %unnamed_arg, float %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define %struct.btQuadWord* @_ZNK25btConvexTriangleMeshShape15getLocalScalingEv(%struct.btConvexTriangleMeshShape* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 1 ; [#uses=1]
+ ret %struct.btQuadWord* %2
+}
+
+; [#uses=1]
+define void @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN14CenterCallbackD1Ev(%struct..0CenterCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE14CenterCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN14CenterCallbackD0Ev(%struct..0CenterCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE14CenterCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct..0CenterCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN14CenterCallback28internalProcessTriangleIndexEPS2_ii(%struct..0CenterCallback* nocapture %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 1 ; [#uses=2]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ store i8 0, i8* %0, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %14 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=2]
+ %16 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=4]
+ %18 = fsub float %15, %17 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=2]
+ %21 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=4]
+ %23 = fsub float %20, %22 ; [#uses=2]
+ %24 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=2]
+ %26 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=4]
+ %28 = fsub float %25, %27 ; [#uses=2]
+ %29 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=2]
+ %31 = fsub float %30, %17 ; [#uses=2]
+ %32 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=2]
+ %34 = fsub float %33, %22 ; [#uses=2]
+ %35 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = fsub float %36, %27 ; [#uses=2]
+ %38 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=2]
+ %40 = fsub float %39, %17 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=2]
+ %43 = fsub float %42, %22 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=2]
+ %46 = fsub float %45, %27 ; [#uses=1]
+ %47 = fmul float %34, %18 ; [#uses=1]
+ %48 = fmul float %31, %23 ; [#uses=1]
+ %49 = fsub float %47, %48 ; [#uses=1]
+ %50 = fmul float %46, %49 ; [#uses=1]
+ %51 = fmul float %31, %28 ; [#uses=1]
+ %52 = fmul float %37, %18 ; [#uses=1]
+ %53 = fsub float %51, %52 ; [#uses=1]
+ %54 = fmul float %43, %53 ; [#uses=1]
+ %55 = fadd float %50, %54 ; [#uses=1]
+ %56 = fmul float %37, %23 ; [#uses=1]
+ %57 = fmul float %34, %28 ; [#uses=1]
+ %58 = fsub float %56, %57 ; [#uses=1]
+ %59 = fmul float %40, %58 ; [#uses=1]
+ %60 = fadd float %55, %59 ; [#uses=1]
+ %61 = tail call float @fabsf(float %60) nounwind readnone ; [#uses=2]
+ %62 = fadd float %39, %30 ; [#uses=1]
+ %63 = fadd float %42, %33 ; [#uses=1]
+ %64 = fadd float %45, %36 ; [#uses=1]
+ %65 = fadd float %62, %15 ; [#uses=1]
+ %66 = fadd float %63, %20 ; [#uses=1]
+ %67 = fadd float %64, %25 ; [#uses=1]
+ %68 = fadd float %65, %17 ; [#uses=1]
+ %69 = fadd float %66, %22 ; [#uses=1]
+ %70 = fadd float %67, %27 ; [#uses=1]
+ %71 = fmul float %61, 2.500000e-01 ; [#uses=3]
+ %72 = fmul float %68, %71 ; [#uses=1]
+ %73 = fmul float %69, %71 ; [#uses=1]
+ %74 = fmul float %70, %71 ; [#uses=1]
+ %75 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ %77 = fadd float %76, %74 ; [#uses=1]
+ store float %77, float* %75, align 4
+ %78 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = fadd float %79, %73 ; [#uses=1]
+ store float %80, float* %78, align 4
+ %81 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ %83 = fadd float %82, %72 ; [#uses=1]
+ store float %83, float* %81, align 4
+ %84 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 4 ; [#uses=2]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = fadd float %85, %61 ; [#uses=1]
+ store float %86, float* %84, align 4
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN15InertiaCallback28internalProcessTriangleIndexEPS2_ii(%struct..1InertiaCallback* nocapture %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) nounwind align 2 {
+bb.nph.1:
+ %i = alloca %struct.btMatrix3x3, align 8 ; [#uses=14]
+ %a = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %b = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %c = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %0 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fsub float %1, %3 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fsub float %6, %8 ; [#uses=5]
+ %10 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = fsub float %11, %13 ; [#uses=10]
+ %15 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %14, float* %15, align 8
+ %16 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %9, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %4, float* %17, align 8
+ %18 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fsub float %20, %3 ; [#uses=6]
+ %22 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fsub float %23, %8 ; [#uses=6]
+ %25 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = fsub float %26, %13 ; [#uses=11]
+ %28 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %27, float* %28, align 8
+ %29 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %24, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %21, float* %30, align 8
+ %31 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fsub float %33, %3 ; [#uses=6]
+ %35 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = fsub float %36, %8 ; [#uses=6]
+ %38 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fsub float %39, %13 ; [#uses=11]
+ %41 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %40, float* %41, align 8
+ %42 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %37, float* %42, align 4
+ %43 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %34, float* %43, align 8
+ %44 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %44, align 4
+ %45 = fmul float %24, %34 ; [#uses=1]
+ %46 = fmul float %21, %37 ; [#uses=1]
+ %47 = fsub float %45, %46 ; [#uses=1]
+ %48 = fmul float %14, %47 ; [#uses=1]
+ %49 = fmul float %21, %40 ; [#uses=1]
+ %50 = fmul float %27, %34 ; [#uses=1]
+ %51 = fsub float %49, %50 ; [#uses=1]
+ %52 = fmul float %9, %51 ; [#uses=1]
+ %53 = fadd float %48, %52 ; [#uses=1]
+ %54 = fmul float %27, %37 ; [#uses=1]
+ %55 = fmul float %24, %40 ; [#uses=1]
+ %56 = fsub float %54, %55 ; [#uses=1]
+ %57 = fmul float %4, %56 ; [#uses=1]
+ %58 = fadd float %53, %57 ; [#uses=1]
+ %59 = call float @fabsf(float %58) nounwind readnone ; [#uses=1]
+ %60 = fmul float %59, 0xBFC5555560000000 ; [#uses=3]
+ %scevgep12 = getelementptr %struct.btMatrix3x3* %i, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %61 = fmul float %14, %14 ; [#uses=1]
+ %62 = fmul float %27, %27 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=1]
+ %64 = fmul float %40, %40 ; [#uses=1]
+ %65 = fadd float %63, %64 ; [#uses=1]
+ %66 = fmul float %65, 0x3FB99999A0000000 ; [#uses=1]
+ %67 = fmul float %14, %27 ; [#uses=1]
+ %68 = fmul float %14, %27 ; [#uses=1]
+ %69 = fadd float %67, %68 ; [#uses=1]
+ %70 = fmul float %14, %40 ; [#uses=1]
+ %71 = fadd float %69, %70 ; [#uses=1]
+ %72 = fmul float %14, %40 ; [#uses=1]
+ %73 = fadd float %71, %72 ; [#uses=1]
+ %74 = fmul float %27, %40 ; [#uses=1]
+ %75 = fadd float %73, %74 ; [#uses=1]
+ %76 = fmul float %27, %40 ; [#uses=1]
+ %77 = fadd float %75, %76 ; [#uses=1]
+ %78 = fmul float %77, 0x3FA99999A0000000 ; [#uses=1]
+ %79 = fadd float %66, %78 ; [#uses=1]
+ %80 = fmul float %79, %60 ; [#uses=1]
+ store float %80, float* %scevgep12, align 8
+ br label %bb1.1
+
+bb5: ; preds = %bb1.2
+ %.phi.trans.insert = getelementptr inbounds %struct.btMatrix3x3* %i, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre = load float* %.phi.trans.insert, align 8 ; [#uses=2]
+ %.phi.trans.insert20 = getelementptr inbounds %struct.btMatrix3x3* %i, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %.pre21 = load float* %.phi.trans.insert20, align 4 ; [#uses=2]
+ %.phi.trans.insert22 = getelementptr inbounds %struct.btMatrix3x3* %i, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %.pre23 = load float* %.phi.trans.insert22, align 8 ; [#uses=2]
+ %.phi.trans.insert24 = getelementptr inbounds %struct.btMatrix3x3* %i, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre25 = load float* %.phi.trans.insert24, align 4 ; [#uses=1]
+ %.phi.trans.insert26 = getelementptr inbounds %struct.btMatrix3x3* %i, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre27 = load float* %.phi.trans.insert26, align 8 ; [#uses=1]
+ %.phi.trans.insert28 = getelementptr inbounds %struct.btMatrix3x3* %i, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %.pre29 = load float* %.phi.trans.insert28, align 8 ; [#uses=1]
+ %.phi.trans.insert30 = getelementptr inbounds %struct.btMatrix3x3* %i, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %.pre31 = load float* %.phi.trans.insert30, align 8 ; [#uses=1]
+ %.phi.trans.insert32 = getelementptr inbounds %struct.btMatrix3x3* %i, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %.pre33 = load float* %.phi.trans.insert32, align 8 ; [#uses=1]
+ %.phi.trans.insert34 = getelementptr inbounds %struct.btMatrix3x3* %i, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %.pre35 = load float* %.phi.trans.insert34, align 4 ; [#uses=1]
+ %81 = fsub float -0.000000e+00, %.pre ; [#uses=1]
+ %82 = fsub float -0.000000e+00, %.pre21 ; [#uses=1]
+ %83 = fsub float -0.000000e+00, %.pre23 ; [#uses=1]
+ %84 = fsub float %83, %.pre21 ; [#uses=1]
+ %85 = fsub float %81, %.pre23 ; [#uses=1]
+ %86 = fsub float %82, %.pre ; [#uses=1]
+ %87 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = fadd float %88, %84 ; [#uses=1]
+ store float %89, float* %87, align 4
+ %90 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = fadd float %91, %.pre25 ; [#uses=1]
+ store float %92, float* %90, align 4
+ %93 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = fadd float %94, %.pre27 ; [#uses=1]
+ store float %95, float* %93, align 4
+ %96 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ %98 = fadd float %97, %.pre29 ; [#uses=1]
+ store float %98, float* %96, align 4
+ %99 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %100 = load float* %99, align 4 ; [#uses=1]
+ %101 = fadd float %100, %85 ; [#uses=1]
+ store float %101, float* %99, align 4
+ %102 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %103 = load float* %102, align 4 ; [#uses=1]
+ %104 = fadd float %103, %.pre31 ; [#uses=1]
+ store float %104, float* %102, align 4
+ %105 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %106 = load float* %105, align 4 ; [#uses=1]
+ %107 = fadd float %106, %.pre33 ; [#uses=1]
+ store float %107, float* %105, align 4
+ %108 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ %110 = fadd float %109, %.pre35 ; [#uses=1]
+ store float %110, float* %108, align 4
+ %111 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ %113 = fadd float %112, %86 ; [#uses=1]
+ store float %113, float* %111, align 4
+ ret void
+
+bb1.1: ; preds = %bb1.1.bb1.1_crit_edge, %bb.nph.1
+ %114 = phi float [ %40, %bb.nph.1 ], [ %.pre41, %bb1.1.bb1.1_crit_edge ] ; [#uses=3]
+ %115 = phi float [ %27, %bb.nph.1 ], [ %.pre40, %bb1.1.bb1.1_crit_edge ] ; [#uses=3]
+ %116 = phi float [ %14, %bb.nph.1 ], [ %.pre39, %bb1.1.bb1.1_crit_edge ] ; [#uses=3]
+ %k.06.1 = phi i32 [ 0, %bb.nph.1 ], [ %137, %bb1.1.bb1.1_crit_edge ] ; [#uses=3]
+ %scevgep12.1 = getelementptr %struct.btMatrix3x3* %i, i32 0, i32 0, i32 1, i32 0, i32 %k.06.1 ; [#uses=1]
+ %scevgep11.1 = getelementptr %struct.btMatrix3x3* %i, i32 0, i32 0, i32 %k.06.1, i32 0, i32 1 ; [#uses=1]
+ %117 = fmul float %9, %116 ; [#uses=1]
+ %118 = fmul float %24, %115 ; [#uses=1]
+ %119 = fadd float %117, %118 ; [#uses=1]
+ %120 = fmul float %37, %114 ; [#uses=1]
+ %121 = fadd float %119, %120 ; [#uses=1]
+ %122 = fmul float %121, 0x3FB99999A0000000 ; [#uses=1]
+ %123 = fmul float %9, %115 ; [#uses=1]
+ %124 = fmul float %116, %24 ; [#uses=1]
+ %125 = fadd float %123, %124 ; [#uses=1]
+ %126 = fmul float %9, %114 ; [#uses=1]
+ %127 = fadd float %125, %126 ; [#uses=1]
+ %128 = fmul float %116, %37 ; [#uses=1]
+ %129 = fadd float %127, %128 ; [#uses=1]
+ %130 = fmul float %24, %114 ; [#uses=1]
+ %131 = fadd float %129, %130 ; [#uses=1]
+ %132 = fmul float %115, %37 ; [#uses=1]
+ %133 = fadd float %131, %132 ; [#uses=1]
+ %134 = fmul float %133, 0x3FA99999A0000000 ; [#uses=1]
+ %135 = fadd float %122, %134 ; [#uses=1]
+ %136 = fmul float %135, %60 ; [#uses=2]
+ store float %136, float* %scevgep11.1, align 4
+ store float %136, float* %scevgep12.1, align 4
+ %137 = add nsw i32 %k.06.1, 1 ; [#uses=5]
+ %exitcond.1 = icmp eq i32 %137, 2 ; [#uses=1]
+ br i1 %exitcond.1, label %bb1.2, label %bb1.1.bb1.1_crit_edge
+
+bb1.1.bb1.1_crit_edge: ; preds = %bb1.1
+ %scevgep.1.phi.trans.insert = getelementptr %struct.btQuadWord* %a, i32 0, i32 0, i32 %137 ; [#uses=1]
+ %.pre39 = load float* %scevgep.1.phi.trans.insert, align 4 ; [#uses=1]
+ %scevgep9.1.phi.trans.insert = getelementptr %struct.btQuadWord* %b, i32 0, i32 0, i32 %137 ; [#uses=1]
+ %.pre40 = load float* %scevgep9.1.phi.trans.insert, align 4 ; [#uses=1]
+ %scevgep10.1.phi.trans.insert = getelementptr %struct.btQuadWord* %c, i32 0, i32 0, i32 %137 ; [#uses=1]
+ %.pre41 = load float* %scevgep10.1.phi.trans.insert, align 4 ; [#uses=1]
+ br label %bb1.1
+
+bb1.2: ; preds = %bb1.2.bb1.2_crit_edge, %bb1.1
+ %138 = phi float [ %.pre38, %bb1.2.bb1.2_crit_edge ], [ %40, %bb1.1 ] ; [#uses=3]
+ %139 = phi float [ %.pre37, %bb1.2.bb1.2_crit_edge ], [ %27, %bb1.1 ] ; [#uses=3]
+ %140 = phi float [ %.pre36, %bb1.2.bb1.2_crit_edge ], [ %14, %bb1.1 ] ; [#uses=3]
+ %k.06.2 = phi i32 [ %161, %bb1.2.bb1.2_crit_edge ], [ 0, %bb1.1 ] ; [#uses=3]
+ %scevgep12.2 = getelementptr %struct.btMatrix3x3* %i, i32 0, i32 0, i32 2, i32 0, i32 %k.06.2 ; [#uses=1]
+ %scevgep11.2 = getelementptr %struct.btMatrix3x3* %i, i32 0, i32 0, i32 %k.06.2, i32 0, i32 2 ; [#uses=1]
+ %141 = fmul float %4, %140 ; [#uses=1]
+ %142 = fmul float %21, %139 ; [#uses=1]
+ %143 = fadd float %141, %142 ; [#uses=1]
+ %144 = fmul float %34, %138 ; [#uses=1]
+ %145 = fadd float %143, %144 ; [#uses=1]
+ %146 = fmul float %145, 0x3FB99999A0000000 ; [#uses=1]
+ %147 = fmul float %4, %139 ; [#uses=1]
+ %148 = fmul float %140, %21 ; [#uses=1]
+ %149 = fadd float %147, %148 ; [#uses=1]
+ %150 = fmul float %4, %138 ; [#uses=1]
+ %151 = fadd float %149, %150 ; [#uses=1]
+ %152 = fmul float %140, %34 ; [#uses=1]
+ %153 = fadd float %151, %152 ; [#uses=1]
+ %154 = fmul float %21, %138 ; [#uses=1]
+ %155 = fadd float %153, %154 ; [#uses=1]
+ %156 = fmul float %139, %34 ; [#uses=1]
+ %157 = fadd float %155, %156 ; [#uses=1]
+ %158 = fmul float %157, 0x3FA99999A0000000 ; [#uses=1]
+ %159 = fadd float %146, %158 ; [#uses=1]
+ %160 = fmul float %159, %60 ; [#uses=2]
+ store float %160, float* %scevgep11.2, align 8
+ store float %160, float* %scevgep12.2, align 4
+ %161 = add nsw i32 %k.06.2, 1 ; [#uses=5]
+ %exitcond.2 = icmp eq i32 %161, 3 ; [#uses=1]
+ br i1 %exitcond.2, label %bb5, label %bb1.2.bb1.2_crit_edge
+
+bb1.2.bb1.2_crit_edge: ; preds = %bb1.2
+ %scevgep.2.phi.trans.insert = getelementptr %struct.btQuadWord* %a, i32 0, i32 0, i32 %161 ; [#uses=1]
+ %.pre36 = load float* %scevgep.2.phi.trans.insert, align 4 ; [#uses=1]
+ %scevgep9.2.phi.trans.insert = getelementptr %struct.btQuadWord* %b, i32 0, i32 0, i32 %161 ; [#uses=1]
+ %.pre37 = load float* %scevgep9.2.phi.trans.insert, align 4 ; [#uses=1]
+ %scevgep10.2.phi.trans.insert = getelementptr %struct.btQuadWord* %c, i32 0, i32 0, i32 %161 ; [#uses=1]
+ %.pre38 = load float* %scevgep10.2.phi.trans.insert, align 4 ; [#uses=1]
+ br label %bb1.2
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN25btConvexTriangleMeshShapeD0Ev(%struct.btConvexTriangleMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btConvexTriangleMeshShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN25btConvexTriangleMeshShapeD1Ev(%struct.btConvexTriangleMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btConvexTriangleMeshShape15setLocalScalingERK9btVector3(%struct.btConvexTriangleMeshShape* %this, %struct.btQuadWord* nocapture %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=4]
+ %2 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %14)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK25btConvexTriangleMeshShape24localGetSupportingVertexERK9btVector3(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvexTriangleMeshShape* %this, %struct.btQuadWord* %vec) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 16 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btQuadWord*, %struct.btConvexTriangleMeshShape*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %4(%struct.btQuadWord* noalias sret %agg.result, %struct.btConvexTriangleMeshShape* %this, %struct.btQuadWord* %vec)
+ %5 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 11 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %9 = bitcast i32 (...)* %7 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %10 = tail call float %9(%struct.btConvexInternalShape* %8) ; [#uses=1]
+ %11 = fcmp une float %10, 0.000000e+00 ; [#uses=1]
+ br i1 %11, label %bb, label %return
+
+bb: ; preds = %entry
+ %12 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=3]
+ %16 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=3]
+ %18 = fmul float %13, %13 ; [#uses=1]
+ %19 = fmul float %15, %15 ; [#uses=1]
+ %20 = fadd float %18, %19 ; [#uses=1]
+ %21 = fmul float %17, %17 ; [#uses=1]
+ %22 = fadd float %20, %21 ; [#uses=1]
+ %23 = fcmp olt float %22, 0x3D10000000000000 ; [#uses=3]
+ %vecnorm.0.0.0 = select i1 %23, float -1.000000e+00, float %13 ; [#uses=3]
+ %vecnorm.0.1.0 = select i1 %23, float -1.000000e+00, float %15 ; [#uses=3]
+ %vecnorm.0.2.0 = select i1 %23, float -1.000000e+00, float %17 ; [#uses=3]
+ %24 = fmul float %vecnorm.0.0.0, %vecnorm.0.0.0 ; [#uses=1]
+ %25 = fmul float %vecnorm.0.1.0, %vecnorm.0.1.0 ; [#uses=1]
+ %26 = fadd float %24, %25 ; [#uses=1]
+ %27 = fmul float %vecnorm.0.2.0, %vecnorm.0.2.0 ; [#uses=1]
+ %28 = fadd float %26, %27 ; [#uses=1]
+ %29 = tail call float @sqrtf(float %28) nounwind readonly ; [#uses=1]
+ %30 = fdiv float 1.000000e+00, %29 ; [#uses=3]
+ %31 = fmul float %vecnorm.0.0.0, %30 ; [#uses=1]
+ %32 = fmul float %vecnorm.0.1.0, %30 ; [#uses=1]
+ %33 = fmul float %vecnorm.0.2.0, %30 ; [#uses=1]
+ %34 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds i32 (...)** %34, i32 11 ; [#uses=1]
+ %36 = load i32 (...)** %35, align 4 ; [#uses=1]
+ %37 = bitcast i32 (...)* %36 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %38 = tail call float %37(%struct.btConvexInternalShape* %8) ; [#uses=3]
+ %39 = fmul float %33, %38 ; [#uses=1]
+ %40 = fmul float %32, %38 ; [#uses=1]
+ %41 = fmul float %31, %38 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=2]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fadd float %43, %41 ; [#uses=1]
+ store float %44, float* %42, align 4
+ %45 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=2]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fadd float %46, %40 ; [#uses=1]
+ store float %47, float* %45, align 4
+ %48 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=2]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fadd float %49, %39 ; [#uses=1]
+ store float %50, float* %48, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK25btConvexTriangleMeshShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btConvexTriangleMeshShape* nocapture %this, %struct.btQuadWord* nocapture %vec0) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %supportCallback = alloca %struct.LocalSupportVertexCallback, align 8 ; [#uses=11]
+ %aabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=3]
+ %11 = fmul float %6, %6 ; [#uses=1]
+ %12 = fmul float %8, %8 ; [#uses=1]
+ %13 = fadd float %11, %12 ; [#uses=1]
+ %14 = fmul float %10, %10 ; [#uses=1]
+ %15 = fadd float %13, %14 ; [#uses=2]
+ %16 = fcmp olt float %15, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %16, label %bb2, label %bb1
+
+bb1: ; preds = %entry
+ %17 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = call float @sqrtf(float %15) nounwind readonly ; [#uses=1]
+ %20 = fdiv float 1.000000e+00, %19 ; [#uses=3]
+ %21 = fmul float %6, %20 ; [#uses=1]
+ %22 = fmul float %8, %20 ; [#uses=1]
+ %23 = fmul float %10, %20 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb1, %entry
+ %vec.0.3.0 = phi float [ %18, %bb1 ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %vec.0.2.0 = phi float [ %23, %bb1 ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %vec.0.1.0 = phi float [ %22, %bb1 ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %vec.0.0.0 = phi float [ %21, %bb1 ], [ 1.000000e+00, %entry ] ; [#uses=1]
+ %24 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV26LocalSupportVertexCallback, i32 0, i32 2), i32 (...)*** %24, align 8
+ %25 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %27, align 4
+ %28 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 2 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %29, align 4
+ %30 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %vec.0.0.0, float* %30, align 8
+ %31 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %vec.0.1.0, float* %31, align 4
+ %32 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %vec.0.2.0, float* %32, align 8
+ %33 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float %vec.0.3.0, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %34, align 8
+ %35 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %36, align 8
+ %37 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 4
+ %38 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ %39 = load %struct.btStridingMeshInterface** %38, align 4 ; [#uses=2]
+ %40 = getelementptr inbounds %struct.btStridingMeshInterface* %39, i32 0, i32 0 ; [#uses=1]
+ %41 = load i32 (...)*** %40, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds i32 (...)** %41, i32 2 ; [#uses=1]
+ %43 = load i32 (...)** %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %44, align 8
+ %45 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %45, align 4
+ %46 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %46, align 8
+ %47 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %47, align 4
+ %48 = bitcast i32 (...)* %43 to void (%struct.btStridingMeshInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %49 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 0 ; [#uses=3]
+ invoke void %48(%struct.btStridingMeshInterface* %39, %struct.btActionInterface* %49, %struct.btQuadWord* %0, %struct.btQuadWord* %aabbMax)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb2
+ %50 = load float* %25, align 4 ; [#uses=1]
+ %51 = load float* %26, align 4 ; [#uses=1]
+ %52 = load float* %27, align 4 ; [#uses=1]
+ %53 = load float* %28, align 4 ; [#uses=1]
+ store float %50, float* %1, align 4
+ store float %51, float* %2, align 4
+ store float %52, float* %3, align 4
+ store float %53, float* %4, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV26LocalSupportVertexCallback, i32 0, i32 2), i32 (...)*** %24, align 8
+ call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %49)
+ ret void
+
+invcont6: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %bb2
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select9 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV26LocalSupportVertexCallback, i32 0, i32 2), i32 (...)*** %24, align 8
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %49)
+ to label %invcont6 unwind label %lpad10
+
+lpad10: ; preds = %lpad
+ %eh_ptr11 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select13 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZNK25btConvexTriangleMeshShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btConvexTriangleMeshShape* nocapture %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %supportCallback = alloca %struct.LocalSupportVertexCallback, align 8 ; [#uses=11]
+ %aabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = icmp sgt i32 %numVectors, 0 ; [#uses=1]
+ br i1 %1, label %bb, label %bb9.preheader
+
+bb: ; preds = %bb, %entry
+ %i.021 = phi i32 [ %2, %bb ], [ 0, %entry ] ; [#uses=2]
+ %scevgep31 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.021, i32 0, i32 3 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %scevgep31, align 4
+ %2 = add nsw i32 %i.021, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %2, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %bb9.preheader, label %bb
+
+bb9.preheader: ; preds = %bb, %entry
+ %3 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 0, i32 0 ; [#uses=3]
+ %4 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.LocalSupportVertexCallback* %supportCallback, i32 0, i32 0 ; [#uses=3]
+ br label %bb9
+
+bb3: ; preds = %bb9
+ %scevgep2425 = getelementptr inbounds %struct.btQuadWord* %vectors, i32 %38, i32 0, i32 0 ; [#uses=1]
+ %scevgep23 = getelementptr %struct.btQuadWord* %vectors, i32 %38, i32 0, i32 1 ; [#uses=1]
+ %scevgep22 = getelementptr %struct.btQuadWord* %vectors, i32 %38, i32 0, i32 2 ; [#uses=1]
+ %scevgep = getelementptr %struct.btQuadWord* %vectors, i32 %38, i32 0, i32 3 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV26LocalSupportVertexCallback, i32 0, i32 2), i32 (...)*** %3, align 8
+ store float 0.000000e+00, float* %4, align 4
+ store float 0.000000e+00, float* %5, align 4
+ store float 0.000000e+00, float* %6, align 4
+ store float 0.000000e+00, float* %7, align 4
+ store float 0xC3ABC16D60000000, float* %8, align 4
+ %23 = load float* %scevgep2425, align 4 ; [#uses=1]
+ store float %23, float* %9, align 8
+ %24 = load float* %scevgep23, align 4 ; [#uses=1]
+ store float %24, float* %10, align 4
+ %25 = load float* %scevgep22, align 4 ; [#uses=1]
+ store float %25, float* %11, align 8
+ %26 = load float* %scevgep, align 4 ; [#uses=1]
+ store float %26, float* %12, align 4
+ store float 0x43ABC16D60000000, float* %13, align 8
+ store float 0x43ABC16D60000000, float* %14, align 4
+ store float 0x43ABC16D60000000, float* %15, align 8
+ store float 0.000000e+00, float* %16, align 4
+ %27 = load %struct.btStridingMeshInterface** %17, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btStridingMeshInterface* %27, i32 0, i32 0 ; [#uses=1]
+ %29 = load i32 (...)*** %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds i32 (...)** %29, i32 2 ; [#uses=1]
+ %31 = load i32 (...)** %30, align 4 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %18, align 8
+ store float 0xC3ABC16D60000000, float* %19, align 4
+ store float 0xC3ABC16D60000000, float* %20, align 8
+ store float 0.000000e+00, float* %21, align 4
+ %32 = bitcast i32 (...)* %31 to void (%struct.btStridingMeshInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %32(%struct.btStridingMeshInterface* %27, %struct.btActionInterface* %22, %struct.btQuadWord* %0, %struct.btQuadWord* %aabbMax)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb3
+ %33 = load float* %4, align 4 ; [#uses=1]
+ %34 = load float* %5, align 4 ; [#uses=1]
+ %35 = load float* %6, align 4 ; [#uses=1]
+ %36 = load float* %7, align 4 ; [#uses=1]
+ store float %33, float* %scevgep2930, align 4
+ store float %34, float* %scevgep28, align 4
+ store float %35, float* %scevgep27, align 4
+ store float %36, float* %scevgep26, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV26LocalSupportVertexCallback, i32 0, i32 2), i32 (...)*** %3, align 8
+ call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %22)
+ %37 = add nsw i32 %38, 1 ; [#uses=1]
+ br label %bb9
+
+invcont7: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb9: ; preds = %invcont, %bb9.preheader
+ %38 = phi i32 [ %37, %invcont ], [ 0, %bb9.preheader ] ; [#uses=10]
+ %scevgep26 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %38, i32 0, i32 3 ; [#uses=1]
+ %scevgep27 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %38, i32 0, i32 2 ; [#uses=1]
+ %scevgep28 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %38, i32 0, i32 1 ; [#uses=1]
+ %scevgep2930 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %38, i32 0, i32 0 ; [#uses=1]
+ %39 = icmp slt i32 %38, %numVectors ; [#uses=1]
+ br i1 %39, label %bb3, label %return
+
+return: ; preds = %bb9
+ ret void
+
+lpad: ; preds = %bb3
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select12 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV26LocalSupportVertexCallback, i32 0, i32 2), i32 (...)*** %3, align 8
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %22)
+ to label %invcont7 unwind label %lpad13
+
+lpad13: ; preds = %lpad
+ %eh_ptr14 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select16 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr14, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN15InertiaCallbackD1Ev(%struct..1InertiaCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE15InertiaCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN15InertiaCallbackD0Ev(%struct..1InertiaCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE15InertiaCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct..1InertiaCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN15InertiaCallbackD2Ev(%struct..1InertiaCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE15InertiaCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..1InertiaCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3Rf(%struct.btConvexTriangleMeshShape* nocapture %this, %struct.btTransform* nocapture %principal, %struct.btQuadWord* nocapture %inertia, float* nocapture %volume) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %centerCallback = alloca %struct..0CenterCallback, align 8 ; [#uses=11]
+ %aabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %inertiaCallback = alloca %struct..1InertiaCallback, align 8 ; [#uses=10]
+ %2 = getelementptr inbounds %struct..0CenterCallback* %centerCallback, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE14CenterCallback, i32 0, i32 2), i32 (...)*** %2, align 8
+ %3 = getelementptr inbounds %struct..0CenterCallback* %centerCallback, i32 0, i32 1 ; [#uses=1]
+ store i8 1, i8* %3, align 4
+ %4 = getelementptr inbounds %struct..0CenterCallback* %centerCallback, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %5 = bitcast float* %4 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %5, i8 0, i64 36, i32 8, i1 false) nounwind
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %6, align 8
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %8, align 8
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=2]
+ %11 = load %struct.btStridingMeshInterface** %10, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btStridingMeshInterface* %11, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 2 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %16, align 8
+ %17 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %18, align 8
+ %19 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ %20 = bitcast i32 (...)* %15 to void (%struct.btStridingMeshInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %21 = getelementptr inbounds %struct..0CenterCallback* %centerCallback, i32 0, i32 0 ; [#uses=3]
+ invoke void %20(%struct.btStridingMeshInterface* %11, %struct.btActionInterface* %21, %struct.btQuadWord* %1, %struct.btQuadWord* %aabbMax)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %22 = getelementptr inbounds %struct..0CenterCallback* %centerCallback, i32 0, i32 4 ; [#uses=1]
+ %23 = load float* %22, align 8 ; [#uses=3]
+ %24 = fcmp ogt float %23, 0.000000e+00 ; [#uses=1]
+ br i1 %24, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %invcont
+ %25 = fdiv float 1.000000e+00, %23 ; [#uses=3]
+ %26 = getelementptr inbounds %struct..0CenterCallback* %centerCallback, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 8 ; [#uses=1]
+ %28 = fmul float %27, %25 ; [#uses=1]
+ %29 = getelementptr inbounds %struct..0CenterCallback* %centerCallback, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fmul float %30, %25 ; [#uses=1]
+ %32 = getelementptr inbounds %struct..0CenterCallback* %centerCallback, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 8 ; [#uses=1]
+ %34 = fmul float %33, %25 ; [#uses=1]
+ br label %invcont1
+
+bb1.i: ; preds = %invcont
+ %35 = load float* %4, align 8 ; [#uses=1]
+ %36 = getelementptr inbounds %struct..0CenterCallback* %centerCallback, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct..0CenterCallback* %centerCallback, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 8 ; [#uses=1]
+ %40 = getelementptr inbounds %struct..0CenterCallback* %centerCallback, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ br label %invcont1
+
+invcont1: ; preds = %bb1.i, %bb.i
+ %center.0.3.0 = phi float [ 0.000000e+00, %bb.i ], [ %41, %bb1.i ] ; [#uses=2]
+ %center.0.2.0 = phi float [ %28, %bb.i ], [ %39, %bb1.i ] ; [#uses=2]
+ %center.0.1.0 = phi float [ %31, %bb.i ], [ %37, %bb1.i ] ; [#uses=2]
+ %center.0.0.0 = phi float [ %34, %bb.i ], [ %35, %bb1.i ] ; [#uses=2]
+ %42 = getelementptr inbounds %struct.btTransform* %principal, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %center.0.0.0, float* %42, align 4
+ %43 = getelementptr inbounds %struct.btTransform* %principal, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %center.0.1.0, float* %43, align 4
+ %44 = getelementptr inbounds %struct.btTransform* %principal, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %center.0.2.0, float* %44, align 4
+ %45 = getelementptr inbounds %struct.btTransform* %principal, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %center.0.3.0, float* %45, align 4
+ %46 = fmul float %23, 0x3FC5555560000000 ; [#uses=1]
+ store float %46, float* %volume, align 4
+ %47 = getelementptr inbounds %struct..1InertiaCallback* %inertiaCallback, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE15InertiaCallback, i32 0, i32 2), i32 (...)*** %47, align 8
+ %48 = getelementptr inbounds %struct..1InertiaCallback* %inertiaCallback, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %49 = getelementptr inbounds %struct..1InertiaCallback* %inertiaCallback, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %50 = bitcast float* %48 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %50, i8 0, i64 48, i32 4, i1 false)
+ store float %center.0.0.0, float* %49, align 4
+ %51 = getelementptr inbounds %struct..1InertiaCallback* %inertiaCallback, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %center.0.1.0, float* %51, align 4
+ %52 = getelementptr inbounds %struct..1InertiaCallback* %inertiaCallback, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %center.0.2.0, float* %52, align 4
+ %53 = getelementptr inbounds %struct..1InertiaCallback* %inertiaCallback, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %center.0.3.0, float* %53, align 4
+ %54 = load %struct.btStridingMeshInterface** %10, align 4 ; [#uses=2]
+ %55 = getelementptr inbounds %struct.btStridingMeshInterface* %54, i32 0, i32 0 ; [#uses=1]
+ %56 = load i32 (...)*** %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds i32 (...)** %56, i32 2 ; [#uses=1]
+ %58 = load i32 (...)** %57, align 4 ; [#uses=1]
+ %59 = load float* %8, align 8 ; [#uses=1]
+ %60 = fsub float -0.000000e+00, %59 ; [#uses=1]
+ %61 = load float* %7, align 4 ; [#uses=1]
+ %62 = fsub float -0.000000e+00, %61 ; [#uses=1]
+ %63 = load float* %6, align 8 ; [#uses=1]
+ %64 = fsub float -0.000000e+00, %63 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %64, float* %65, align 8
+ %66 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %62, float* %66, align 4
+ %67 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %60, float* %67, align 8
+ %68 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %68, align 4
+ %69 = bitcast i32 (...)* %58 to void (%struct.btStridingMeshInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %70 = getelementptr inbounds %struct..1InertiaCallback* %inertiaCallback, i32 0, i32 0 ; [#uses=3]
+ invoke void %69(%struct.btStridingMeshInterface* %54, %struct.btActionInterface* %70, %struct.btQuadWord* %0, %struct.btQuadWord* %aabbMax)
+ to label %invcont2 unwind label %lpad14
+
+invcont2: ; preds = %invcont1
+ %71 = getelementptr inbounds %struct..1InertiaCallback* %inertiaCallback, i32 0, i32 1 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btTransform* %principal, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN11btMatrix3x311diagonalizeERS_fi(%struct.btMatrix3x3* %71, %struct.btMatrix3x3* %72, float 0x3EE4F8B580000000, i32 20) nounwind
+ %73 = getelementptr inbounds %struct..1InertiaCallback* %inertiaCallback, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %74 = getelementptr inbounds %struct..1InertiaCallback* %inertiaCallback, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %48, align 4 ; [#uses=2]
+ %76 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %75, float* %76, align 4
+ %77 = load float* %74, align 4 ; [#uses=2]
+ %78 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %77, float* %78, align 4
+ %79 = load float* %73, align 4 ; [#uses=2]
+ %80 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %79, float* %80, align 4
+ %81 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %81, align 4
+ %82 = load float* %volume, align 4 ; [#uses=1]
+ %83 = fdiv float 1.000000e+00, %82 ; [#uses=3]
+ %84 = fmul float %75, %83 ; [#uses=1]
+ store float %84, float* %76, align 4
+ %85 = fmul float %77, %83 ; [#uses=1]
+ store float %85, float* %78, align 4
+ %86 = fmul float %79, %83 ; [#uses=1]
+ store float %86, float* %80, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE15InertiaCallback, i32 0, i32 2), i32 (...)*** %47, align 8
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %70)
+ to label %bb11 unwind label %lpad
+
+invcont9: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb11: ; preds = %invcont2
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE14CenterCallback, i32 0, i32 2), i32 (...)*** %2, align 8
+ call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %21)
+ ret void
+
+lpad: ; preds = %invcont2, %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select13 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad14: ; preds = %invcont1
+ %eh_ptr15 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr15, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE15InertiaCallback, i32 0, i32 2), i32 (...)*** %47, align 8
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %70)
+ to label %ppad unwind label %lpad18
+
+lpad18: ; preds = %lpad14
+ %eh_ptr19 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select21 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad22: ; preds = %ppad
+ %eh_ptr23 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %lpad14, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr15, %lpad14 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE14CenterCallback, i32 0, i32 2), i32 (...)*** %2, align 8
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %21)
+ to label %invcont9 unwind label %lpad22
+}
+
+; [#uses=0]
+define void @_ZZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfEN14CenterCallbackD2Ev(%struct..0CenterCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK25btConvexTriangleMeshShape31calculatePrincipalAxisTransformER11btTransformR9btVector3RfE14CenterCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0CenterCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN25btConvexTriangleMeshShapeC1EP23btStridingMeshInterfaceb(%struct.btConvexTriangleMeshShape* %this, %struct.btStridingMeshInterface* %meshInterface, i8 zeroext %calcAabb) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShapeC2Ev(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ %1 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([30 x i32 (...)*]* @_ZTV25btConvexTriangleMeshShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btStridingMeshInterface* %meshInterface, %struct.btStridingMeshInterface** %2, align 4
+ %3 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 3, i32* %3, align 4
+ %toBool = icmp eq i8 %calcAabb, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ to label %return unwind label %lpad
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %bb, %entry
+ ret void
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %4 = getelementptr inbounds %struct.btConvexTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %4)
+ to label %invcont2 unwind label %lpad7
+
+lpad7: ; preds = %lpad
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN15btCylinderShapeC2ERK9btVector3(%struct.btCapsuleShape* %this, %struct.btQuadWord* nocapture %halfExtents) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([24 x i32 (...)*]* @_ZTV15btCylinderShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fmul float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fmul float %16, %18 ; [#uses=1]
+ %20 = fsub float %9, %4 ; [#uses=1]
+ %21 = fsub float %14, %4 ; [#uses=1]
+ %22 = fsub float %19, %4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %22, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %21, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %20, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 13, i32* %27, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btCylinderShape9setMarginEf(%struct.btCapsuleShape* %this, float %collisionMargin) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=6]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=6]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %7 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %11 = tail call float %10(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %12 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 11 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = bitcast i32 (...)* %14 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %16 = tail call float %15(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fadd float %18, %6 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fadd float %21, %11 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fadd float %24, %16 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %collisionMargin, float* %26, align 4
+ %27 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds i32 (...)** %27, i32 11 ; [#uses=1]
+ %29 = load i32 (...)** %28, align 4 ; [#uses=1]
+ %30 = bitcast i32 (...)* %29 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %31 = tail call float %30(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %32 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32 (...)** %32, i32 11 ; [#uses=1]
+ %34 = load i32 (...)** %33, align 4 ; [#uses=1]
+ %35 = bitcast i32 (...)* %34 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %36 = tail call float %35(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %37 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32 (...)** %37, i32 11 ; [#uses=1]
+ %39 = load i32 (...)** %38, align 4 ; [#uses=1]
+ %40 = bitcast i32 (...)* %39 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %41 = tail call float %40(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %42 = fsub float %19, %31 ; [#uses=1]
+ %43 = fsub float %22, %36 ; [#uses=1]
+ %44 = fsub float %25, %41 ; [#uses=1]
+ store float %44, float* %23, align 4
+ store float %43, float* %20, align 4
+ store float %42, float* %17, align 4
+ %45 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %45, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr float @_ZNK15btCylinderShape9getRadiusEv(%struct.btCapsuleShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 11 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=3]
+ %7 = bitcast i32 (...)* %5 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %8 = tail call float %7(%struct.btConvexInternalShape* %6) ; [#uses=0]
+ %9 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 11 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %13 = tail call float %12(%struct.btConvexInternalShape* %6) ; [#uses=0]
+ %14 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds i32 (...)** %14, i32 11 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %18 = tail call float %17(%struct.btConvexInternalShape* %6) ; [#uses=1]
+ %19 = fadd float %1, %18 ; [#uses=1]
+ ret float %19
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK15btCylinderShape7getNameEv(%struct.btCapsuleShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([10 x i8]* @.str85, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK16btCylinderShapeX7getNameEv(%struct.btCapsuleShapeX* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([10 x i8]* @.str186, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr float @_ZNK16btCylinderShapeX9getRadiusEv(%struct.btCapsuleShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 11 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=3]
+ %7 = bitcast i32 (...)* %5 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %8 = tail call float %7(%struct.btConvexInternalShape* %6) ; [#uses=0]
+ %9 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 11 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %13 = tail call float %12(%struct.btConvexInternalShape* %6) ; [#uses=1]
+ %14 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds i32 (...)** %14, i32 11 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %18 = tail call float %17(%struct.btConvexInternalShape* %6) ; [#uses=0]
+ %19 = fadd float %1, %13 ; [#uses=1]
+ ret float %19
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK16btCylinderShapeZ7getNameEv(%struct.btCapsuleShapeX* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([10 x i8]* @.str287, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr float @_ZNK16btCylinderShapeZ9getRadiusEv(%struct.btCapsuleShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 11 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=3]
+ %7 = bitcast i32 (...)* %5 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %8 = tail call float %7(%struct.btConvexInternalShape* %6) ; [#uses=0]
+ %9 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 11 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %13 = tail call float %12(%struct.btConvexInternalShape* %6) ; [#uses=0]
+ %14 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds i32 (...)** %14, i32 11 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %18 = tail call float %17(%struct.btConvexInternalShape* %6) ; [#uses=1]
+ %19 = fadd float %1, %18 ; [#uses=1]
+ ret float %19
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK15btCylinderShape28calculateSerializeBufferSizeEv(%struct.btCapsuleShape* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 60
+}
+
+; [#uses=1]
+define void @_ZNK15btCylinderShape7getAabbERK11btTransformR9btVector3S4_(%struct.btCapsuleShape* %this, %struct.btTransform* nocapture %t, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=1]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fadd float %8, %6 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fadd float %11, %6 ; [#uses=3]
+ %13 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fadd float %14, %6 ; [#uses=3]
+ %16 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = tail call float @fabsf(float %17) nounwind readnone ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = tail call float @fabsf(float %20) nounwind readnone ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = tail call float @fabsf(float %23) nounwind readnone ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = tail call float @fabsf(float %26) nounwind readnone ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = tail call float @fabsf(float %29) nounwind readnone ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = tail call float @fabsf(float %32) nounwind readnone ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = tail call float @fabsf(float %35) nounwind readnone ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = tail call float @fabsf(float %38) nounwind readnone ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = tail call float @fabsf(float %41) nounwind readnone ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=2]
+ %45 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=2]
+ %47 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=2]
+ %49 = fmul float %24, %15 ; [#uses=1]
+ %50 = fmul float %21, %12 ; [#uses=1]
+ %51 = fadd float %49, %50 ; [#uses=1]
+ %52 = fmul float %18, %9 ; [#uses=1]
+ %53 = fadd float %51, %52 ; [#uses=2]
+ %54 = fmul float %33, %15 ; [#uses=1]
+ %55 = fmul float %30, %12 ; [#uses=1]
+ %56 = fadd float %54, %55 ; [#uses=1]
+ %57 = fmul float %27, %9 ; [#uses=1]
+ %58 = fadd float %56, %57 ; [#uses=2]
+ %59 = fmul float %42, %15 ; [#uses=1]
+ %60 = fmul float %39, %12 ; [#uses=1]
+ %61 = fadd float %59, %60 ; [#uses=1]
+ %62 = fmul float %36, %9 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=2]
+ %64 = fsub float %48, %53 ; [#uses=1]
+ %65 = fsub float %46, %58 ; [#uses=1]
+ %66 = fsub float %44, %63 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %66, float* %67, align 4
+ %68 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %65, float* %68, align 4
+ %69 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %64, float* %69, align 4
+ %70 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %70, align 4
+ %71 = fadd float %48, %53 ; [#uses=1]
+ %72 = fadd float %46, %58 ; [#uses=1]
+ %73 = fadd float %44, %63 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %73, float* %74, align 4
+ %75 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %72, float* %75, align 4
+ %76 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %71, float* %76, align 4
+ %77 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %77, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK15btCylinderShape21calculateLocalInertiaEfR9btVector3(%struct.btCapsuleShape* %this, float %mass, %struct.btQuadWord* nocapture %inertia) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=3]
+ %11 = bitcast i32 (...)* %9 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %12 = tail call float %11(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %13 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 11 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %17 = tail call float %16(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %18 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i32 (...)** %18, i32 11 ; [#uses=1]
+ %20 = load i32 (...)** %19, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %20 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %22 = tail call float %21(%struct.btConvexInternalShape* %10) ; [#uses=1]
+ %23 = fadd float %1, %22 ; [#uses=1]
+ %24 = fadd float %3, %17 ; [#uses=1]
+ %25 = fadd float %5, %12 ; [#uses=1]
+ %26 = fmul float %23, 2.000000e+00 ; [#uses=2]
+ %27 = fmul float %24, 2.000000e+00 ; [#uses=2]
+ %28 = fmul float %25, 2.000000e+00 ; [#uses=2]
+ %29 = fdiv float %mass, 1.200000e+01 ; [#uses=3]
+ %30 = fmul float %26, %26 ; [#uses=2]
+ %31 = fmul float %27, %27 ; [#uses=2]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = fmul float %29, %32 ; [#uses=1]
+ %34 = fmul float %28, %28 ; [#uses=2]
+ %35 = fadd float %30, %34 ; [#uses=1]
+ %36 = fmul float %29, %35 ; [#uses=1]
+ %37 = fadd float %31, %34 ; [#uses=1]
+ %38 = fmul float %29, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %38, float* %39, align 4
+ %40 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %36, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %33, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %42, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btCylinderShapeD0Ev(%struct.btCapsuleShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btCapsuleShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btCylinderShapeD1Ev(%struct.btCapsuleShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btCylinderShape15setLocalScalingERK9btVector3(%struct.btCapsuleShape* %this, %struct.btQuadWord* %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=4]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=2]
+ %7 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %11 = tail call float %10(%struct.btConvexInternalShape* %4) ; [#uses=2]
+ %12 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 11 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = bitcast i32 (...)* %14 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %16 = tail call float %15(%struct.btConvexInternalShape* %4) ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fadd float %18, %6 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fadd float %21, %11 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fadd float %24, %16 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fdiv float %19, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fdiv float %22, %30 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fdiv float %25, %33 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3(%struct.btConvexInternalShape* %4, %struct.btQuadWord* %scaling)
+ %35 = load float* %26, align 4 ; [#uses=1]
+ %36 = fmul float %28, %35 ; [#uses=1]
+ %37 = load float* %29, align 4 ; [#uses=1]
+ %38 = fmul float %31, %37 ; [#uses=1]
+ %39 = load float* %32, align 4 ; [#uses=1]
+ %40 = fmul float %34, %39 ; [#uses=1]
+ %41 = fsub float %36, %6 ; [#uses=1]
+ %42 = fsub float %38, %11 ; [#uses=1]
+ %43 = fsub float %40, %16 ; [#uses=1]
+ store float %43, float* %23, align 4
+ store float %42, float* %20, align 4
+ store float %41, float* %17, align 4
+ %44 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %44, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK15btCylinderShape9serializeEPvP12btSerializer(%struct.btCapsuleShape* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK16btCollisionShape9serializeEPvP12btSerializer(%struct.btCollisionShape* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds i8* %dataBuffer, i32 28 ; [#uses=1]
+ %scevgep.i.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i = bitcast i8* %2 to float* ; [#uses=1]
+ %3 = load float* %scevgep.i.i, align 4 ; [#uses=1]
+ store float %3, float* %scevgep4.i.i, align 4
+ %scevgep.1.i.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i = getelementptr i8* %dataBuffer, i32 32 ; [#uses=1]
+ %4 = bitcast i8* %scevgep4.1.i.i to float* ; [#uses=1]
+ %5 = load float* %scevgep.1.i.i, align 4 ; [#uses=1]
+ store float %5, float* %4, align 4
+ %scevgep.2.i.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i = getelementptr i8* %dataBuffer, i32 36 ; [#uses=1]
+ %6 = bitcast i8* %scevgep4.2.i.i to float* ; [#uses=1]
+ %7 = load float* %scevgep.2.i.i, align 4 ; [#uses=1]
+ store float %7, float* %6, align 4
+ %scevgep.3.i.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i = getelementptr i8* %dataBuffer, i32 40 ; [#uses=1]
+ %8 = bitcast i8* %scevgep4.3.i.i to float* ; [#uses=1]
+ %9 = load float* %scevgep.3.i.i, align 4 ; [#uses=1]
+ store float %9, float* %8, align 4
+ %10 = getelementptr inbounds i8* %dataBuffer, i32 12 ; [#uses=1]
+ %scevgep.i2.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i3.i = bitcast i8* %10 to float* ; [#uses=1]
+ %11 = load float* %scevgep.i2.i, align 4 ; [#uses=1]
+ store float %11, float* %scevgep4.i3.i, align 4
+ %scevgep.1.i4.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i5.i = getelementptr i8* %dataBuffer, i32 16 ; [#uses=1]
+ %12 = bitcast i8* %scevgep4.1.i5.i to float* ; [#uses=1]
+ %13 = load float* %scevgep.1.i4.i, align 4 ; [#uses=1]
+ store float %13, float* %12, align 4
+ %scevgep.2.i6.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i7.i = getelementptr i8* %dataBuffer, i32 20 ; [#uses=1]
+ %14 = bitcast i8* %scevgep4.2.i7.i to float* ; [#uses=1]
+ %15 = load float* %scevgep.2.i6.i, align 4 ; [#uses=1]
+ store float %15, float* %14, align 4
+ %scevgep.3.i8.i = getelementptr %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i9.i = getelementptr i8* %dataBuffer, i32 24 ; [#uses=1]
+ %16 = bitcast i8* %scevgep4.3.i9.i to float* ; [#uses=1]
+ %17 = load float* %scevgep.3.i8.i, align 4 ; [#uses=1]
+ store float %17, float* %16, align 4
+ %18 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %21 = bitcast i8* %20 to float* ; [#uses=1]
+ store float %19, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 1 ; [#uses=1]
+ %23 = load i32* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds i8* %dataBuffer, i32 52 ; [#uses=1]
+ %25 = bitcast i8* %24 to i32* ; [#uses=1]
+ store i32 %23, i32* %25, align 4
+ ret i8* getelementptr inbounds ([20 x i8]* @.str488, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK15btCylinderShape24localGetSupportingVertexERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btCapsuleShape* %this, %struct.btQuadWord* %vec) align 2 {
+entry:
+ %memtmp = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 16 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btQuadWord*, %struct.btCapsuleShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %4(%struct.btQuadWord* noalias sret %memtmp, %struct.btCapsuleShape* %this, %struct.btQuadWord* %vec)
+ %5 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 8 ; [#uses=2]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 8 ; [#uses=2]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 3 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 11 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=2]
+ %21 = bitcast i32 (...)* %19 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %22 = call float %21(%struct.btConvexInternalShape* %20) ; [#uses=1]
+ %23 = fcmp une float %22, 0.000000e+00 ; [#uses=1]
+ br i1 %23, label %bb, label %return
+
+bb: ; preds = %entry
+ %24 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=3]
+ %26 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=3]
+ %28 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=3]
+ %30 = fmul float %25, %25 ; [#uses=1]
+ %31 = fmul float %27, %27 ; [#uses=1]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = fmul float %29, %29 ; [#uses=1]
+ %34 = fadd float %32, %33 ; [#uses=1]
+ %35 = fcmp olt float %34, 0x3D10000000000000 ; [#uses=3]
+ %vecnorm.0.0.0 = select i1 %35, float -1.000000e+00, float %25 ; [#uses=3]
+ %vecnorm.0.1.0 = select i1 %35, float -1.000000e+00, float %27 ; [#uses=3]
+ %vecnorm.0.2.0 = select i1 %35, float -1.000000e+00, float %29 ; [#uses=3]
+ %36 = fmul float %vecnorm.0.0.0, %vecnorm.0.0.0 ; [#uses=1]
+ %37 = fmul float %vecnorm.0.1.0, %vecnorm.0.1.0 ; [#uses=1]
+ %38 = fadd float %36, %37 ; [#uses=1]
+ %39 = fmul float %vecnorm.0.2.0, %vecnorm.0.2.0 ; [#uses=1]
+ %40 = fadd float %38, %39 ; [#uses=1]
+ %41 = call float @sqrtf(float %40) nounwind readonly ; [#uses=1]
+ %42 = fdiv float 1.000000e+00, %41 ; [#uses=3]
+ %43 = fmul float %vecnorm.0.0.0, %42 ; [#uses=1]
+ %44 = fmul float %vecnorm.0.1.0, %42 ; [#uses=1]
+ %45 = fmul float %vecnorm.0.2.0, %42 ; [#uses=1]
+ %46 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds i32 (...)** %46, i32 11 ; [#uses=1]
+ %48 = load i32 (...)** %47, align 4 ; [#uses=1]
+ %49 = bitcast i32 (...)* %48 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %50 = call float %49(%struct.btConvexInternalShape* %20) ; [#uses=3]
+ %51 = fmul float %45, %50 ; [#uses=1]
+ %52 = fmul float %44, %50 ; [#uses=1]
+ %53 = fmul float %43, %50 ; [#uses=1]
+ %54 = fadd float %7, %53 ; [#uses=1]
+ store float %54, float* %5, align 4
+ %55 = fadd float %10, %52 ; [#uses=1]
+ store float %55, float* %8, align 4
+ %56 = fadd float %13, %51 ; [#uses=1]
+ store float %56, float* %11, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK15btCylinderShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btCapsuleShape* nocapture %this, %struct.btQuadWord* nocapture %vec) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = fmul float %5, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fmul float %8, %8 ; [#uses=1]
+ %10 = fadd float %6, %9 ; [#uses=1]
+ %11 = tail call float @sqrtf(float %10) nounwind readonly ; [#uses=2]
+ %12 = fcmp une float %11, 0.000000e+00 ; [#uses=1]
+ br i1 %12, label %bb.i, label %bb4.i
+
+bb.i: ; preds = %entry
+ %13 = fdiv float %1, %11 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = fmul float %5, %13 ; [#uses=1]
+ store float %15, float* %14, align 4
+ %16 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fcmp olt float %17, 0.000000e+00 ; [#uses=1]
+ br i1 %18, label %bb1.i, label %bb3.i
+
+bb1.i: ; preds = %bb.i
+ %19 = fsub float -0.000000e+00, %3 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb1.i, %bb.i
+ %iftmp.143.0.i = phi float [ %19, %bb1.i ], [ %3, %bb.i ] ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %iftmp.143.0.i, float* %20, align 4
+ %21 = fmul float %8, %13 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %21, float* %22, align 4
+ ret void
+
+bb4.i: ; preds = %entry
+ %23 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fcmp olt float %25, 0.000000e+00 ; [#uses=1]
+ br i1 %26, label %bb5.i, label %bb7.i
+
+bb5.i: ; preds = %bb4.i
+ %27 = fsub float -0.000000e+00, %3 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb5.i, %bb4.i
+ %iftmp.144.0.i = phi float [ %27, %bb5.i ], [ %3, %bb4.i ] ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %iftmp.144.0.i, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK15btCylinderShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btCapsuleShape* nocapture %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) nounwind align 2 {
+entry:
+ %0 = icmp sgt i32 %numVectors, 0 ; [#uses=1]
+ br i1 %0, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %_Z21CylinderLocalSupportYRK9btVector3S1_.exit, %bb.nph
+ %i.06 = phi i32 [ 0, %bb.nph ], [ %21, %_Z21CylinderLocalSupportYRK9btVector3S1_.exit ] ; [#uses=7]
+ %scevgep7 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %i.06, i32 0, i32 0 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.06, i32 0, i32 1 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.06, i32 0, i32 2 ; [#uses=1]
+ %scevgep1011 = getelementptr inbounds %struct.btQuadWord* %vectors, i32 %i.06, i32 0, i32 0 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btQuadWord* %vectors, i32 %i.06, i32 0, i32 2 ; [#uses=1]
+ %scevgep13 = getelementptr %struct.btQuadWord* %vectors, i32 %i.06, i32 0, i32 1 ; [#uses=2]
+ %3 = load float* %1, align 4 ; [#uses=3]
+ %4 = load float* %2, align 4 ; [#uses=4]
+ %5 = load float* %scevgep1011, align 4 ; [#uses=3]
+ %6 = fmul float %5, %5 ; [#uses=1]
+ %7 = load float* %scevgep12, align 4 ; [#uses=3]
+ %8 = fmul float %7, %7 ; [#uses=1]
+ %9 = fadd float %6, %8 ; [#uses=1]
+ %10 = tail call float @sqrtf(float %9) nounwind readonly ; [#uses=2]
+ %11 = fcmp une float %10, 0.000000e+00 ; [#uses=1]
+ br i1 %11, label %bb.i, label %bb4.i
+
+bb.i: ; preds = %bb
+ %12 = fdiv float %3, %10 ; [#uses=2]
+ %13 = fmul float %5, %12 ; [#uses=1]
+ %14 = load float* %scevgep13, align 4 ; [#uses=1]
+ %15 = fcmp olt float %14, 0.000000e+00 ; [#uses=1]
+ br i1 %15, label %bb1.i, label %bb3.i
+
+bb1.i: ; preds = %bb.i
+ %16 = fsub float -0.000000e+00, %4 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb1.i, %bb.i
+ %iftmp.143.0.i = phi float [ %16, %bb1.i ], [ %4, %bb.i ] ; [#uses=1]
+ %17 = fmul float %7, %12 ; [#uses=1]
+ br label %_Z21CylinderLocalSupportYRK9btVector3S1_.exit
+
+bb4.i: ; preds = %bb
+ %18 = load float* %scevgep13, align 4 ; [#uses=1]
+ %19 = fcmp olt float %18, 0.000000e+00 ; [#uses=1]
+ br i1 %19, label %bb5.i, label %_Z21CylinderLocalSupportYRK9btVector3S1_.exit
+
+bb5.i: ; preds = %bb4.i
+ %20 = fsub float -0.000000e+00, %4 ; [#uses=1]
+ br label %_Z21CylinderLocalSupportYRK9btVector3S1_.exit
+
+_Z21CylinderLocalSupportYRK9btVector3S1_.exit: ; preds = %bb5.i, %bb4.i, %bb3.i
+ %memtmp.0.2.0 = phi float [ %17, %bb3.i ], [ 0.000000e+00, %bb5.i ], [ 0.000000e+00, %bb4.i ] ; [#uses=1]
+ %memtmp.0.1.0 = phi float [ %iftmp.143.0.i, %bb3.i ], [ %20, %bb5.i ], [ %4, %bb4.i ] ; [#uses=1]
+ %memtmp.0.0.0 = phi float [ %13, %bb3.i ], [ %3, %bb5.i ], [ %3, %bb4.i ] ; [#uses=1]
+ store float %memtmp.0.0.0, float* %scevgep7, align 4
+ store float %memtmp.0.1.0, float* %scevgep8, align 4
+ store float %memtmp.0.2.0, float* %scevgep9, align 4
+ %21 = add nsw i32 %i.06, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %21, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %_Z21CylinderLocalSupportYRK9btVector3S1_.exit, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCylinderShapeXD0Ev(%struct.btCapsuleShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btCapsuleShapeX* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCylinderShapeXD1Ev(%struct.btCapsuleShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK16btCylinderShapeX37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btCapsuleShapeX* nocapture %this, %struct.btQuadWord* nocapture %vec) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = fmul float %5, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fmul float %8, %8 ; [#uses=1]
+ %10 = fadd float %6, %9 ; [#uses=1]
+ %11 = tail call float @sqrtf(float %10) nounwind readonly ; [#uses=2]
+ %12 = fcmp une float %11, 0.000000e+00 ; [#uses=1]
+ br i1 %12, label %bb.i, label %bb4.i
+
+bb.i: ; preds = %entry
+ %13 = fdiv float %1, %11 ; [#uses=2]
+ %14 = fmul float %5, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %14, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fcmp olt float %18, 0.000000e+00 ; [#uses=1]
+ br i1 %19, label %bb1.i, label %bb3.i
+
+bb1.i: ; preds = %bb.i
+ %20 = fsub float -0.000000e+00, %3 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb1.i, %bb.i
+ %iftmp.141.0.i = phi float [ %20, %bb1.i ], [ %3, %bb.i ] ; [#uses=1]
+ store float %iftmp.141.0.i, float* %16, align 4
+ %21 = fmul float %8, %13 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %21, float* %22, align 4
+ ret void
+
+bb4.i: ; preds = %entry
+ %23 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = fcmp olt float %26, 0.000000e+00 ; [#uses=1]
+ br i1 %27, label %bb5.i, label %bb7.i
+
+bb5.i: ; preds = %bb4.i
+ %28 = fsub float -0.000000e+00, %3 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb5.i, %bb4.i
+ %iftmp.142.0.i = phi float [ %28, %bb5.i ], [ %3, %bb4.i ] ; [#uses=1]
+ store float %iftmp.142.0.i, float* %24, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK16btCylinderShapeX49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btCapsuleShapeX* nocapture %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) nounwind align 2 {
+entry:
+ %0 = icmp sgt i32 %numVectors, 0 ; [#uses=1]
+ br i1 %0, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %_Z21CylinderLocalSupportXRK9btVector3S1_.exit, %bb.nph
+ %i.06 = phi i32 [ 0, %bb.nph ], [ %21, %_Z21CylinderLocalSupportXRK9btVector3S1_.exit ] ; [#uses=7]
+ %scevgep7 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %i.06, i32 0, i32 0 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.06, i32 0, i32 1 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.06, i32 0, i32 2 ; [#uses=1]
+ %scevgep10 = getelementptr %struct.btQuadWord* %vectors, i32 %i.06, i32 0, i32 1 ; [#uses=1]
+ %scevgep11 = getelementptr %struct.btQuadWord* %vectors, i32 %i.06, i32 0, i32 2 ; [#uses=1]
+ %scevgep1213 = getelementptr inbounds %struct.btQuadWord* %vectors, i32 %i.06, i32 0, i32 0 ; [#uses=2]
+ %3 = load float* %1, align 4 ; [#uses=3]
+ %4 = load float* %2, align 4 ; [#uses=4]
+ %5 = load float* %scevgep10, align 4 ; [#uses=3]
+ %6 = fmul float %5, %5 ; [#uses=1]
+ %7 = load float* %scevgep11, align 4 ; [#uses=3]
+ %8 = fmul float %7, %7 ; [#uses=1]
+ %9 = fadd float %6, %8 ; [#uses=1]
+ %10 = tail call float @sqrtf(float %9) nounwind readonly ; [#uses=2]
+ %11 = fcmp une float %10, 0.000000e+00 ; [#uses=1]
+ br i1 %11, label %bb.i, label %bb4.i
+
+bb.i: ; preds = %bb
+ %12 = fdiv float %3, %10 ; [#uses=2]
+ %13 = fmul float %5, %12 ; [#uses=1]
+ %14 = load float* %scevgep1213, align 4 ; [#uses=1]
+ %15 = fcmp olt float %14, 0.000000e+00 ; [#uses=1]
+ br i1 %15, label %bb1.i, label %bb3.i
+
+bb1.i: ; preds = %bb.i
+ %16 = fsub float -0.000000e+00, %4 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb1.i, %bb.i
+ %iftmp.141.0.i = phi float [ %16, %bb1.i ], [ %4, %bb.i ] ; [#uses=1]
+ %17 = fmul float %7, %12 ; [#uses=1]
+ br label %_Z21CylinderLocalSupportXRK9btVector3S1_.exit
+
+bb4.i: ; preds = %bb
+ %18 = load float* %scevgep1213, align 4 ; [#uses=1]
+ %19 = fcmp olt float %18, 0.000000e+00 ; [#uses=1]
+ br i1 %19, label %bb5.i, label %_Z21CylinderLocalSupportXRK9btVector3S1_.exit
+
+bb5.i: ; preds = %bb4.i
+ %20 = fsub float -0.000000e+00, %4 ; [#uses=1]
+ br label %_Z21CylinderLocalSupportXRK9btVector3S1_.exit
+
+_Z21CylinderLocalSupportXRK9btVector3S1_.exit: ; preds = %bb5.i, %bb4.i, %bb3.i
+ %memtmp.0.2.0 = phi float [ %17, %bb3.i ], [ 0.000000e+00, %bb5.i ], [ 0.000000e+00, %bb4.i ] ; [#uses=1]
+ %memtmp.0.1.0 = phi float [ %13, %bb3.i ], [ %3, %bb5.i ], [ %3, %bb4.i ] ; [#uses=1]
+ %memtmp.0.0.0 = phi float [ %iftmp.141.0.i, %bb3.i ], [ %20, %bb5.i ], [ %4, %bb4.i ] ; [#uses=1]
+ store float %memtmp.0.0.0, float* %scevgep7, align 4
+ store float %memtmp.0.1.0, float* %scevgep8, align 4
+ store float %memtmp.0.2.0, float* %scevgep9, align 4
+ %21 = add nsw i32 %i.06, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %21, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %_Z21CylinderLocalSupportXRK9btVector3S1_.exit, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCylinderShapeZD0Ev(%struct.btCapsuleShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btCapsuleShapeX* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCylinderShapeZD1Ev(%struct.btCapsuleShapeX* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK16btCylinderShapeZ37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btCapsuleShapeX* nocapture %this, %struct.btQuadWord* nocapture %vec) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = fmul float %5, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fmul float %8, %8 ; [#uses=1]
+ %10 = fadd float %6, %9 ; [#uses=1]
+ %11 = tail call float @sqrtf(float %10) nounwind readonly ; [#uses=2]
+ %12 = fcmp une float %11, 0.000000e+00 ; [#uses=1]
+ br i1 %12, label %bb.i, label %bb4.i
+
+bb.i: ; preds = %entry
+ %13 = fdiv float %1, %11 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = fmul float %5, %13 ; [#uses=1]
+ store float %15, float* %14, align 4
+ %16 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fcmp olt float %17, 0.000000e+00 ; [#uses=1]
+ br i1 %18, label %bb1.i, label %bb3.i
+
+bb1.i: ; preds = %bb.i
+ %19 = fsub float -0.000000e+00, %3 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb1.i, %bb.i
+ %iftmp.145.0.i = phi float [ %19, %bb1.i ], [ %3, %bb.i ] ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %iftmp.145.0.i, float* %20, align 4
+ %21 = fmul float %8, %13 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %21, float* %22, align 4
+ ret void
+
+bb4.i: ; preds = %entry
+ %23 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fcmp olt float %25, 0.000000e+00 ; [#uses=1]
+ br i1 %26, label %bb5.i, label %bb7.i
+
+bb5.i: ; preds = %bb4.i
+ %27 = fsub float -0.000000e+00, %3 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb5.i, %bb4.i
+ %iftmp.146.0.i = phi float [ %27, %bb5.i ], [ %3, %bb4.i ] ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %iftmp.146.0.i, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK16btCylinderShapeZ49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btCapsuleShapeX* nocapture %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) nounwind align 2 {
+entry:
+ %0 = icmp sgt i32 %numVectors, 0 ; [#uses=1]
+ br i1 %0, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %_Z21CylinderLocalSupportZRK9btVector3S1_.exit, %bb.nph
+ %i.06 = phi i32 [ 0, %bb.nph ], [ %21, %_Z21CylinderLocalSupportZRK9btVector3S1_.exit ] ; [#uses=7]
+ %scevgep7 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %i.06, i32 0, i32 0 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.06, i32 0, i32 1 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.06, i32 0, i32 2 ; [#uses=1]
+ %scevgep1011 = getelementptr inbounds %struct.btQuadWord* %vectors, i32 %i.06, i32 0, i32 0 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btQuadWord* %vectors, i32 %i.06, i32 0, i32 1 ; [#uses=1]
+ %scevgep13 = getelementptr %struct.btQuadWord* %vectors, i32 %i.06, i32 0, i32 2 ; [#uses=2]
+ %3 = load float* %1, align 4 ; [#uses=3]
+ %4 = load float* %2, align 4 ; [#uses=4]
+ %5 = load float* %scevgep1011, align 4 ; [#uses=3]
+ %6 = fmul float %5, %5 ; [#uses=1]
+ %7 = load float* %scevgep12, align 4 ; [#uses=3]
+ %8 = fmul float %7, %7 ; [#uses=1]
+ %9 = fadd float %6, %8 ; [#uses=1]
+ %10 = tail call float @sqrtf(float %9) nounwind readonly ; [#uses=2]
+ %11 = fcmp une float %10, 0.000000e+00 ; [#uses=1]
+ br i1 %11, label %bb.i, label %bb4.i
+
+bb.i: ; preds = %bb
+ %12 = fdiv float %3, %10 ; [#uses=2]
+ %13 = fmul float %5, %12 ; [#uses=1]
+ %14 = load float* %scevgep13, align 4 ; [#uses=1]
+ %15 = fcmp olt float %14, 0.000000e+00 ; [#uses=1]
+ br i1 %15, label %bb1.i, label %bb3.i
+
+bb1.i: ; preds = %bb.i
+ %16 = fsub float -0.000000e+00, %4 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb1.i, %bb.i
+ %iftmp.145.0.i = phi float [ %16, %bb1.i ], [ %4, %bb.i ] ; [#uses=1]
+ %17 = fmul float %7, %12 ; [#uses=1]
+ br label %_Z21CylinderLocalSupportZRK9btVector3S1_.exit
+
+bb4.i: ; preds = %bb
+ %18 = load float* %scevgep13, align 4 ; [#uses=1]
+ %19 = fcmp olt float %18, 0.000000e+00 ; [#uses=1]
+ br i1 %19, label %bb5.i, label %_Z21CylinderLocalSupportZRK9btVector3S1_.exit
+
+bb5.i: ; preds = %bb4.i
+ %20 = fsub float -0.000000e+00, %4 ; [#uses=1]
+ br label %_Z21CylinderLocalSupportZRK9btVector3S1_.exit
+
+_Z21CylinderLocalSupportZRK9btVector3S1_.exit: ; preds = %bb5.i, %bb4.i, %bb3.i
+ %memtmp.0.2.0 = phi float [ %iftmp.145.0.i, %bb3.i ], [ %20, %bb5.i ], [ %4, %bb4.i ] ; [#uses=1]
+ %memtmp.0.1.0 = phi float [ %17, %bb3.i ], [ 0.000000e+00, %bb5.i ], [ 0.000000e+00, %bb4.i ] ; [#uses=1]
+ %memtmp.0.0.0 = phi float [ %13, %bb3.i ], [ %3, %bb5.i ], [ %3, %bb4.i ] ; [#uses=1]
+ store float %memtmp.0.0.0, float* %scevgep7, align 4
+ store float %memtmp.0.1.0, float* %scevgep8, align 4
+ store float %memtmp.0.2.0, float* %scevgep9, align 4
+ %21 = add nsw i32 %i.06, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %21, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %_Z21CylinderLocalSupportZRK9btVector3S1_.exit, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btCylinderShapeZC1ERK9btVector3(%struct.btCapsuleShapeX* %this, %struct.btQuadWord* nocapture %halfExtents) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([24 x i32 (...)*]* @_ZTV15btCylinderShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ store i32 1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fmul float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fmul float %16, %18 ; [#uses=1]
+ %20 = fsub float %9, %4 ; [#uses=1]
+ %21 = fsub float %14, %4 ; [#uses=1]
+ %22 = fsub float %19, %4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %22, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %21, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %20, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 13, i32* %27, align 4
+ store i32 (...)** getelementptr inbounds ([24 x i32 (...)*]* @_ZTV16btCylinderShapeZ, i32 0, i32 2), i32 (...)*** %1, align 4
+ store i32 2, i32* %2, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btCylinderShapeZC2ERK9btVector3(%struct.btCapsuleShapeX* %this, %struct.btQuadWord* nocapture %halfExtents) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([24 x i32 (...)*]* @_ZTV15btCylinderShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ store i32 1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fmul float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fmul float %16, %18 ; [#uses=1]
+ %20 = fsub float %9, %4 ; [#uses=1]
+ %21 = fsub float %14, %4 ; [#uses=1]
+ %22 = fsub float %19, %4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %22, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %21, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %20, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 13, i32* %27, align 4
+ store i32 (...)** getelementptr inbounds ([24 x i32 (...)*]* @_ZTV16btCylinderShapeZ, i32 0, i32 2), i32 (...)*** %1, align 4
+ store i32 2, i32* %2, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btCylinderShapeXC1ERK9btVector3(%struct.btCapsuleShapeX* %this, %struct.btQuadWord* nocapture %halfExtents) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([24 x i32 (...)*]* @_ZTV15btCylinderShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ store i32 1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fmul float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fmul float %16, %18 ; [#uses=1]
+ %20 = fsub float %9, %4 ; [#uses=1]
+ %21 = fsub float %14, %4 ; [#uses=1]
+ %22 = fsub float %19, %4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %22, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %21, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %20, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 13, i32* %27, align 4
+ store i32 (...)** getelementptr inbounds ([24 x i32 (...)*]* @_ZTV16btCylinderShapeX, i32 0, i32 2), i32 (...)*** %1, align 4
+ store i32 0, i32* %2, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btCylinderShapeXC2ERK9btVector3(%struct.btCapsuleShapeX* %this, %struct.btQuadWord* nocapture %halfExtents) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([24 x i32 (...)*]* @_ZTV15btCylinderShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ store i32 1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fmul float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fmul float %16, %18 ; [#uses=1]
+ %20 = fsub float %9, %4 ; [#uses=1]
+ %21 = fsub float %14, %4 ; [#uses=1]
+ %22 = fsub float %19, %4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %22, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %21, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %20, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btCapsuleShapeX* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 13, i32* %27, align 4
+ store i32 (...)** getelementptr inbounds ([24 x i32 (...)*]* @_ZTV16btCylinderShapeX, i32 0, i32 2), i32 (...)*** %1, align 4
+ store i32 0, i32* %2, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN15btCylinderShapeC1ERK9btVector3(%struct.btCapsuleShape* %this, %struct.btQuadWord* nocapture %halfExtents) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([24 x i32 (...)*]* @_ZTV15btCylinderShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fmul float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %halfExtents, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fmul float %16, %18 ; [#uses=1]
+ %20 = fsub float %9, %4 ; [#uses=1]
+ %21 = fsub float %14, %4 ; [#uses=1]
+ %22 = fsub float %19, %4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %22, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %21, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %20, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btCapsuleShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 13, i32* %27, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12btEmptyShapeC2Ev(%struct.btEmptyShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeC2Ev(%struct.btConcaveShape* %0)
+ %1 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV12btEmptyShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 27, i32* %2, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN12btEmptyShape15setLocalScalingERK9btVector3(%struct.btEmptyShape* nocapture %this, %struct.btQuadWord* nocapture %scaling) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btQuadWord* @_ZNK12btEmptyShape15getLocalScalingEv(%struct.btEmptyShape* %this) nounwind readnone align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 1 ; [#uses=1]
+ ret %struct.btQuadWord* %0
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK12btEmptyShape7getNameEv(%struct.btEmptyShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([6 x i8]* @.str89, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK12btEmptyShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_(%struct.btEmptyShape* nocapture %this, %struct.btActionInterface* nocapture %unnamed_arg, %struct.btQuadWord* nocapture %unnamed_arg2, %struct.btQuadWord* nocapture %unnamed_arg4) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK12btEmptyShape7getAabbERK11btTransformR9btVector3S4_(%struct.btEmptyShape* %this, %struct.btTransform* nocapture %t, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0 ; [#uses=3]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConcaveShape* %4) ; [#uses=2]
+ %7 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %11 = tail call float %10(%struct.btConcaveShape* %4) ; [#uses=2]
+ %12 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 11 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = bitcast i32 (...)* %14 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %16 = tail call float %15(%struct.btConcaveShape* %4) ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fsub float %18, %6 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fsub float %21, %11 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fsub float %24, %16 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %25, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %22, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %19, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ %30 = load float* %17, align 4 ; [#uses=1]
+ %31 = fadd float %30, %6 ; [#uses=1]
+ %32 = load float* %20, align 4 ; [#uses=1]
+ %33 = fadd float %32, %11 ; [#uses=1]
+ %34 = load float* %23, align 4 ; [#uses=1]
+ %35 = fadd float %34, %16 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %35, float* %36, align 4
+ %37 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %33, float* %37, align 4
+ %38 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %31, float* %38, align 4
+ %39 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %39, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK12btEmptyShape21calculateLocalInertiaEfR9btVector3(%struct.btEmptyShape* nocapture %this, float %unnamed_arg, %struct.btQuadWord* nocapture %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN12btEmptyShapeD0Ev(%struct.btEmptyShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV12btEmptyShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ %2 = bitcast %struct.btEmptyShape* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN12btEmptyShapeD1Ev(%struct.btEmptyShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV12btEmptyShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12btEmptyShapeD2Ev(%struct.btEmptyShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV12btEmptyShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12btEmptyShapeC1Ev(%struct.btEmptyShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeC2Ev(%struct.btConcaveShape* %0)
+ %1 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV12btEmptyShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btEmptyShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 27, i32* %2, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN25btHeightfieldTerrainShapeC2EiiPvfffi14PHY_ScalarTypeb(%struct.btHeightfieldTerrainShape* %this, i32 %heightStickWidth, i32 %heightStickLength, i8* %heightfieldData, float %heightScale, float %minHeight, float %maxHeight, i32 %upAxis, i32 %hdt, i8 zeroext %flipQuadEdges) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeC2Ev(%struct.btConcaveShape* %0)
+ %1 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV25btHeightfieldTerrainShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ tail call void @_ZN25btHeightfieldTerrainShape10initializeEiiPvfffi14PHY_ScalarTypeb(%struct.btHeightfieldTerrainShape* %this, i32 %heightStickWidth, i32 %heightStickLength, i8* %heightfieldData, float %heightScale, float %minHeight, float %maxHeight, i32 %upAxis, i32 %hdt, i8 zeroext %flipQuadEdges) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK25btHeightfieldTerrainShape7getNameEv(%struct.btHeightfieldTerrainShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([12 x i8]* @.str90, i32 0, i32 0)
+}
+
+; [#uses=4]
+define void @_ZN25btHeightfieldTerrainShape10initializeEiiPvfffi14PHY_ScalarTypeb(%struct.btHeightfieldTerrainShape* %this, i32 %heightStickWidth, i32 %heightStickLength, i8* %heightfieldData, float %heightScale, float %minHeight, float %maxHeight, i32 %upAxis, i32 %hdt, i8 zeroext %flipQuadEdges) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 24, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 %heightStickWidth, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 %heightStickLength, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 6 ; [#uses=1]
+ store float %minHeight, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 7 ; [#uses=1]
+ store float %maxHeight, float* %4, align 4
+ %5 = add nsw i32 %heightStickWidth, -1 ; [#uses=1]
+ %6 = sitofp i32 %5 to float ; [#uses=7]
+ %7 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 8 ; [#uses=1]
+ store float %6, float* %7, align 4
+ %8 = add nsw i32 %heightStickLength, -1 ; [#uses=1]
+ %9 = sitofp i32 %8 to float ; [#uses=7]
+ %10 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 9 ; [#uses=1]
+ store float %9, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 10 ; [#uses=1]
+ store float %heightScale, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 11, i32 0 ; [#uses=1]
+ store i8* %heightfieldData, i8** %12, align 4
+ %13 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 12 ; [#uses=1]
+ store i32 %hdt, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 13 ; [#uses=1]
+ store i8 %flipQuadEdges, i8* %14, align 4
+ %15 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 14 ; [#uses=1]
+ store i8 0, i8* %15, align 1
+ %16 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 %upAxis, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %20, align 4
+ switch i32 %upAxis, label %entry.bb3_crit_edge [
+ i32 0, label %bb
+ i32 1, label %bb1
+ i32 2, label %bb2
+ ]
+
+entry.bb3_crit_edge: ; preds = %entry
+ %.phi.trans.insert = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %.pre = load float* %.phi.trans.insert, align 4 ; [#uses=1]
+ %.phi.trans.insert8 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %.pre9 = load float* %.phi.trans.insert8, align 4 ; [#uses=1]
+ %.phi.trans.insert10 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %.pre11 = load float* %.phi.trans.insert10, align 4 ; [#uses=1]
+ %.phi.trans.insert12 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %.pre13 = load float* %.phi.trans.insert12, align 4 ; [#uses=1]
+ %.phi.trans.insert14 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %.pre15 = load float* %.phi.trans.insert14, align 4 ; [#uses=1]
+ %.phi.trans.insert16 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %.pre17 = load float* %.phi.trans.insert16, align 4 ; [#uses=1]
+ br label %bb3
+
+bb: ; preds = %entry
+ %21 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %minHeight, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %maxHeight, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %6, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %9, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ br label %bb3
+
+bb1: ; preds = %entry
+ %29 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %minHeight, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %6, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %maxHeight, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %9, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 4
+ br label %bb3
+
+bb2: ; preds = %entry
+ %37 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 4
+ %38 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %38, align 4
+ %39 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %minHeight, float* %39, align 4
+ %40 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %6, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %9, float* %42, align 4
+ %43 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %maxHeight, float* %43, align 4
+ %44 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %44, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1, %bb, %entry.bb3_crit_edge
+ %45 = phi float [ %.pre17, %entry.bb3_crit_edge ], [ %6, %bb2 ], [ %6, %bb1 ], [ %maxHeight, %bb ] ; [#uses=1]
+ %46 = phi float [ %.pre15, %entry.bb3_crit_edge ], [ 0.000000e+00, %bb2 ], [ 0.000000e+00, %bb1 ], [ %minHeight, %bb ] ; [#uses=1]
+ %47 = phi float [ %.pre13, %entry.bb3_crit_edge ], [ %9, %bb2 ], [ %maxHeight, %bb1 ], [ %6, %bb ] ; [#uses=1]
+ %48 = phi float [ %.pre11, %entry.bb3_crit_edge ], [ 0.000000e+00, %bb2 ], [ %minHeight, %bb1 ], [ 0.000000e+00, %bb ] ; [#uses=1]
+ %49 = phi float [ %.pre9, %entry.bb3_crit_edge ], [ %maxHeight, %bb2 ], [ %9, %bb1 ], [ %9, %bb ] ; [#uses=1]
+ %50 = phi float [ %.pre, %entry.bb3_crit_edge ], [ %minHeight, %bb2 ], [ 0.000000e+00, %bb1 ], [ 0.000000e+00, %bb ] ; [#uses=1]
+ %51 = fadd float %50, %49 ; [#uses=1]
+ %52 = fadd float %48, %47 ; [#uses=1]
+ %53 = fadd float %46, %45 ; [#uses=1]
+ %54 = fmul float %51, 5.000000e-01 ; [#uses=1]
+ %55 = fmul float %52, 5.000000e-01 ; [#uses=1]
+ %56 = fmul float %53, 5.000000e-01 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %56, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %55, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %54, float* %59, align 4
+ %60 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK25btHeightfieldTerrainShape7getAabbERK11btTransformR9btVector3S4_(%struct.btHeightfieldTerrainShape* %this, %struct.btTransform* nocapture %t, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fsub float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fsub float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fsub float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fmul float %4, %16 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fmul float %9, %19 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fmul float %14, %22 ; [#uses=1]
+ %24 = fmul float %17, 5.000000e-01 ; [#uses=3]
+ %25 = fmul float %20, 5.000000e-01 ; [#uses=3]
+ %26 = fmul float %23, 5.000000e-01 ; [#uses=3]
+ %27 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = call float @fabsf(float %28) nounwind readnone ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = call float @fabsf(float %31) nounwind readnone ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = call float @fabsf(float %34) nounwind readnone ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = call float @fabsf(float %37) nounwind readnone ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = call float @fabsf(float %40) nounwind readnone ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = call float @fabsf(float %43) nounwind readnone ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = call float @fabsf(float %46) nounwind readnone ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = call float @fabsf(float %49) nounwind readnone ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = call float @fabsf(float %52) nounwind readnone ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=2]
+ %56 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=2]
+ %58 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=2]
+ %60 = fmul float %35, %26 ; [#uses=1]
+ %61 = fmul float %32, %25 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=1]
+ %63 = fmul float %29, %24 ; [#uses=1]
+ %64 = fadd float %62, %63 ; [#uses=1]
+ %65 = fmul float %44, %26 ; [#uses=1]
+ %66 = fmul float %41, %25 ; [#uses=1]
+ %67 = fadd float %65, %66 ; [#uses=1]
+ %68 = fmul float %38, %24 ; [#uses=1]
+ %69 = fadd float %67, %68 ; [#uses=1]
+ %70 = fmul float %53, %26 ; [#uses=1]
+ %71 = fmul float %50, %25 ; [#uses=1]
+ %72 = fadd float %70, %71 ; [#uses=1]
+ %73 = fmul float %47, %24 ; [#uses=1]
+ %74 = fadd float %72, %73 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %76 = load i32 (...)*** %75, align 4 ; [#uses=1]
+ %77 = getelementptr inbounds i32 (...)** %76, i32 11 ; [#uses=1]
+ %78 = load i32 (...)** %77, align 4 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0 ; [#uses=3]
+ %80 = bitcast i32 (...)* %78 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %81 = call float %80(%struct.btConcaveShape* %79) ; [#uses=1]
+ %82 = load i32 (...)*** %75, align 4 ; [#uses=1]
+ %83 = getelementptr inbounds i32 (...)** %82, i32 11 ; [#uses=1]
+ %84 = load i32 (...)** %83, align 4 ; [#uses=1]
+ %85 = bitcast i32 (...)* %84 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %86 = call float %85(%struct.btConcaveShape* %79) ; [#uses=1]
+ %87 = load i32 (...)*** %75, align 4 ; [#uses=1]
+ %88 = getelementptr inbounds i32 (...)** %87, i32 11 ; [#uses=1]
+ %89 = load i32 (...)** %88, align 4 ; [#uses=1]
+ %90 = bitcast i32 (...)* %89 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %91 = call float %90(%struct.btConcaveShape* %79) ; [#uses=1]
+ %92 = fadd float %74, %91 ; [#uses=2]
+ %93 = fadd float %69, %86 ; [#uses=2]
+ %94 = fadd float %64, %81 ; [#uses=2]
+ %95 = fsub float %59, %94 ; [#uses=1]
+ %96 = fsub float %57, %93 ; [#uses=1]
+ %97 = fsub float %55, %92 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %97, float* %98, align 4
+ %99 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %96, float* %99, align 4
+ %100 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %95, float* %100, align 4
+ %101 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %101, align 4
+ %102 = fadd float %59, %94 ; [#uses=1]
+ %103 = fadd float %57, %93 ; [#uses=1]
+ %104 = fadd float %55, %92 ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %104, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %103, float* %106, align 4
+ %107 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %102, float* %107, align 4
+ %108 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %108, align 4
+ ret void
+}
+
+; [#uses=1]
+define float @_ZNK25btHeightfieldTerrainShape22getRawHeightFieldValueEii(%struct.btHeightfieldTerrainShape* nocapture %this, i32 %x, i32 %y) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 12 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ switch i32 %1, label %bb3 [
+ i32 0, label %bb
+ i32 3, label %bb2
+ i32 5, label %bb1
+ ]
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 11, i32 0 ; [#uses=1]
+ %3 = load i8** %2, align 4 ; [#uses=1]
+ %4 = bitcast i8* %3 to float* ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 4 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = mul nsw i32 %6, %y ; [#uses=1]
+ %8 = add nsw i32 %7, %x ; [#uses=1]
+ %9 = getelementptr inbounds float* %4, i32 %8 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ ret float %10
+
+bb1: ; preds = %entry
+ %11 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 11, i32 0 ; [#uses=1]
+ %12 = load i8** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 4 ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=1]
+ %15 = mul nsw i32 %14, %y ; [#uses=1]
+ %16 = add nsw i32 %15, %x ; [#uses=1]
+ %17 = getelementptr inbounds i8* %12, i32 %16 ; [#uses=1]
+ %18 = load i8* %17, align 1 ; [#uses=1]
+ %19 = zext i8 %18 to i32 ; [#uses=1]
+ %20 = sitofp i32 %19 to float ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 10 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fmul float %20, %22 ; [#uses=1]
+ ret float %23
+
+bb2: ; preds = %entry
+ %24 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 11, i32 0 ; [#uses=1]
+ %25 = load i8** %24, align 4 ; [#uses=1]
+ %26 = bitcast i8* %25 to i16* ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 4 ; [#uses=1]
+ %28 = load i32* %27, align 4 ; [#uses=1]
+ %29 = mul nsw i32 %28, %y ; [#uses=1]
+ %30 = add nsw i32 %29, %x ; [#uses=1]
+ %31 = getelementptr inbounds i16* %26, i32 %30 ; [#uses=1]
+ %32 = load i16* %31, align 2 ; [#uses=1]
+ %33 = sitofp i16 %32 to float ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 10 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fmul float %33, %35 ; [#uses=1]
+ ret float %36
+
+bb3: ; preds = %entry
+ ret float 0.000000e+00
+}
+
+; [#uses=12]
+define void @_ZNK25btHeightfieldTerrainShape9getVertexEiiR9btVector3(%struct.btHeightfieldTerrainShape* %this, i32 %x, i32 %y, %struct.btQuadWord* nocapture %vertex) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 16 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to float (%struct.btHeightfieldTerrainShape*, i32, i32)* ; [#uses=1]
+ %5 = tail call float %4(%struct.btHeightfieldTerrainShape* %this, i32 %x, i32 %y) ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 15 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ switch i32 %7, label %entry.bb3_crit_edge [
+ i32 0, label %bb
+ i32 1, label %bb1
+ i32 2, label %bb2
+ ]
+
+entry.bb3_crit_edge: ; preds = %entry
+ %.phi.trans.insert = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre = load float* %.phi.trans.insert, align 4 ; [#uses=1]
+ %.phi.trans.insert4 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre5 = load float* %.phi.trans.insert4, align 4 ; [#uses=1]
+ %.phi.trans.insert6 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre7 = load float* %.phi.trans.insert6, align 4 ; [#uses=1]
+ br label %bb3
+
+bb: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 9 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = fmul float %9, -5.000000e-01 ; [#uses=1]
+ %11 = sitofp i32 %y to float ; [#uses=1]
+ %12 = fadd float %10, %11 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 8 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fmul float %14, -5.000000e-01 ; [#uses=1]
+ %16 = sitofp i32 %x to float ; [#uses=1]
+ %17 = fadd float %15, %16 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fsub float %5, %19 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %20, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %17, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %12, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 4
+ br label %bb3
+
+bb1: ; preds = %entry
+ %25 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 9 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = fmul float %26, -5.000000e-01 ; [#uses=1]
+ %28 = sitofp i32 %y to float ; [#uses=1]
+ %29 = fadd float %27, %28 ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = fsub float %5, %31 ; [#uses=2]
+ %33 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 8 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fmul float %34, -5.000000e-01 ; [#uses=1]
+ %36 = sitofp i32 %x to float ; [#uses=1]
+ %37 = fadd float %35, %36 ; [#uses=2]
+ %38 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %37, float* %38, align 4
+ %39 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %32, float* %39, align 4
+ %40 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %29, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 4
+ br label %bb3
+
+bb2: ; preds = %entry
+ %42 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fsub float %5, %43 ; [#uses=2]
+ %45 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 9 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fmul float %46, -5.000000e-01 ; [#uses=1]
+ %48 = sitofp i32 %y to float ; [#uses=1]
+ %49 = fadd float %47, %48 ; [#uses=2]
+ %50 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 8 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fmul float %51, -5.000000e-01 ; [#uses=1]
+ %53 = sitofp i32 %x to float ; [#uses=1]
+ %54 = fadd float %52, %53 ; [#uses=2]
+ %55 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %54, float* %55, align 4
+ %56 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %49, float* %56, align 4
+ %57 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %44, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %58, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1, %bb, %entry.bb3_crit_edge
+ %59 = phi float [ %.pre7, %entry.bb3_crit_edge ], [ %44, %bb2 ], [ %29, %bb1 ], [ %12, %bb ] ; [#uses=1]
+ %60 = phi float [ %.pre5, %entry.bb3_crit_edge ], [ %49, %bb2 ], [ %32, %bb1 ], [ %17, %bb ] ; [#uses=1]
+ %61 = phi float [ %.pre, %entry.bb3_crit_edge ], [ %54, %bb2 ], [ %37, %bb1 ], [ %20, %bb ] ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 0 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %65 = fmul float %61, %64 ; [#uses=1]
+ store float %65, float* %62, align 4
+ %66 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 1 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 1 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = fmul float %60, %68 ; [#uses=1]
+ store float %69, float* %66, align 4
+ %70 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 2 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fmul float %59, %72 ; [#uses=1]
+ store float %73, float* %70, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK25btHeightfieldTerrainShape21calculateLocalInertiaEfR9btVector3(%struct.btHeightfieldTerrainShape* nocapture %this, float %unnamed_arg, %struct.btQuadWord* nocapture %inertia) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btHeightfieldTerrainShape15setLocalScalingERK9btVector3(%struct.btHeightfieldTerrainShape* nocapture %this, %struct.btQuadWord* nocapture %scaling) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define %struct.btQuadWord* @_ZNK25btHeightfieldTerrainShape15getLocalScalingEv(%struct.btHeightfieldTerrainShape* %this) nounwind readnone align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16 ; [#uses=1]
+ ret %struct.btQuadWord* %0
+}
+
+; [#uses=0]
+define void @_ZNK25btHeightfieldTerrainShape17quantizeWithClampEPiRK9btVector3i(%struct.btHeightfieldTerrainShape* nocapture %this, i32* nocapture %out, %struct.btQuadWord* nocapture %point, i32 %unnamed_arg) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = fcmp olt float %1, %7 ; [#uses=1]
+ %clampedPoint.0.0.0 = select i1 %8, float %7, float %1 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ %11 = fcmp olt float %3, %10 ; [#uses=1]
+ %clampedPoint.0.1.0 = select i1 %11, float %10, float %3 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fcmp olt float %5, %13 ; [#uses=1]
+ %clampedPoint.0.2.0 = select i1 %14, float %13, float %5 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = fcmp olt float %16, %clampedPoint.0.0.0 ; [#uses=1]
+ %clampedPoint.0.0.1 = select i1 %17, float %16, float %clampedPoint.0.0.0 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=2]
+ %20 = fcmp olt float %19, %clampedPoint.0.1.0 ; [#uses=1]
+ %clampedPoint.0.1.1 = select i1 %20, float %19, float %clampedPoint.0.1.0 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ %23 = fcmp olt float %22, %clampedPoint.0.2.0 ; [#uses=1]
+ %clampedPoint.0.2.1 = select i1 %23, float %22, float %clampedPoint.0.2.0 ; [#uses=2]
+ %24 = fcmp olt float %clampedPoint.0.0.1, 0.000000e+00 ; [#uses=1]
+ %25 = fpext float %clampedPoint.0.0.1 to double ; [#uses=2]
+ br i1 %24, label %bb.i6, label %bb1.i7
+
+bb.i6: ; preds = %entry
+ %26 = fadd double %25, -5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit10
+
+bb1.i7: ; preds = %entry
+ %27 = fadd double %25, 5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit10
+
+_ZL12getQuantizedf.exit10: ; preds = %bb1.i7, %bb.i6
+ %.0.in.i8 = phi double [ %26, %bb.i6 ], [ %27, %bb1.i7 ] ; [#uses=1]
+ %.0.i9 = fptosi double %.0.in.i8 to i32 ; [#uses=1]
+ store i32 %.0.i9, i32* %out, align 4
+ %28 = fcmp olt float %clampedPoint.0.1.1, 0.000000e+00 ; [#uses=1]
+ %29 = fpext float %clampedPoint.0.1.1 to double ; [#uses=2]
+ br i1 %28, label %bb.i1, label %bb1.i2
+
+bb.i1: ; preds = %_ZL12getQuantizedf.exit10
+ %30 = fadd double %29, -5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit5
+
+bb1.i2: ; preds = %_ZL12getQuantizedf.exit10
+ %31 = fadd double %29, 5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit5
+
+_ZL12getQuantizedf.exit5: ; preds = %bb1.i2, %bb.i1
+ %.0.in.i3 = phi double [ %30, %bb.i1 ], [ %31, %bb1.i2 ] ; [#uses=1]
+ %.0.i4 = fptosi double %.0.in.i3 to i32 ; [#uses=1]
+ %32 = getelementptr inbounds i32* %out, i32 1 ; [#uses=1]
+ store i32 %.0.i4, i32* %32, align 4
+ %33 = fcmp olt float %clampedPoint.0.2.1, 0.000000e+00 ; [#uses=1]
+ %34 = fpext float %clampedPoint.0.2.1 to double ; [#uses=2]
+ br i1 %33, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %_ZL12getQuantizedf.exit5
+ %35 = fadd double %34, -5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit
+
+bb1.i: ; preds = %_ZL12getQuantizedf.exit5
+ %36 = fadd double %34, 5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit
+
+_ZL12getQuantizedf.exit: ; preds = %bb1.i, %bb.i
+ %.0.in.i = phi double [ %35, %bb.i ], [ %36, %bb1.i ] ; [#uses=1]
+ %.0.i = fptosi double %.0.in.i to i32 ; [#uses=1]
+ %37 = getelementptr inbounds i32* %out, i32 2 ; [#uses=1]
+ store i32 %.0.i, i32* %37, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK25btHeightfieldTerrainShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_(%struct.btHeightfieldTerrainShape* %this, %struct.btActionInterface* %callback, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %quantizedAabbMin = alloca [3 x i32], align 4 ; [#uses=3]
+ %quantizedAabbMax = alloca [3 x i32], align 4 ; [#uses=3]
+ %vertices = alloca [3 x %struct.btQuadWord], align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = fdiv float 1.000000e+00, %1 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 1 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = fdiv float 1.000000e+00, %4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 16, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = fdiv float 1.000000e+00, %7 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fmul float %10, %2 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fmul float %13, %5 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fmul float %16, %8 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fmul float %19, %2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fmul float %22, %5 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fmul float %25, %8 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=2]
+ %29 = fadd float %17, %28 ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=2]
+ %32 = fadd float %14, %31 ; [#uses=2]
+ %33 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ %35 = fadd float %11, %34 ; [#uses=2]
+ %36 = fadd float %26, %28 ; [#uses=2]
+ %37 = fadd float %23, %31 ; [#uses=2]
+ %38 = fadd float %20, %34 ; [#uses=2]
+ %39 = getelementptr inbounds [3 x i32]* %quantizedAabbMin, i32 0, i32 0 ; [#uses=2]
+ %40 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=4]
+ %42 = fcmp olt float %29, %41 ; [#uses=1]
+ %clampedPoint.0.0.0.i = select i1 %42, float %41, float %29 ; [#uses=2]
+ %43 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=4]
+ %45 = fcmp olt float %32, %44 ; [#uses=1]
+ %clampedPoint.0.1.0.i = select i1 %45, float %44, float %32 ; [#uses=2]
+ %46 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=4]
+ %48 = fcmp olt float %35, %47 ; [#uses=1]
+ %clampedPoint.0.2.0.i = select i1 %48, float %47, float %35 ; [#uses=2]
+ %49 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=4]
+ %51 = fcmp olt float %50, %clampedPoint.0.0.0.i ; [#uses=1]
+ %clampedPoint.0.0.1.i = select i1 %51, float %50, float %clampedPoint.0.0.0.i ; [#uses=2]
+ %52 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=4]
+ %54 = fcmp olt float %53, %clampedPoint.0.1.0.i ; [#uses=1]
+ %clampedPoint.0.1.1.i = select i1 %54, float %53, float %clampedPoint.0.1.0.i ; [#uses=2]
+ %55 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=4]
+ %57 = fcmp olt float %56, %clampedPoint.0.2.0.i ; [#uses=1]
+ %clampedPoint.0.2.1.i = select i1 %57, float %56, float %clampedPoint.0.2.0.i ; [#uses=2]
+ %58 = fcmp olt float %clampedPoint.0.0.1.i, 0.000000e+00 ; [#uses=1]
+ %59 = fpext float %clampedPoint.0.0.1.i to double ; [#uses=2]
+ br i1 %58, label %bb.i6.i, label %bb1.i7.i
+
+bb.i6.i: ; preds = %entry
+ %60 = fadd double %59, -5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit10.i
+
+bb1.i7.i: ; preds = %entry
+ %61 = fadd double %59, 5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit10.i
+
+_ZL12getQuantizedf.exit10.i: ; preds = %bb1.i7.i, %bb.i6.i
+ %.0.in.i8.i = phi double [ %60, %bb.i6.i ], [ %61, %bb1.i7.i ] ; [#uses=1]
+ %.0.i9.i = fptosi double %.0.in.i8.i to i32 ; [#uses=2]
+ store i32 %.0.i9.i, i32* %39, align 4
+ %62 = fcmp olt float %clampedPoint.0.1.1.i, 0.000000e+00 ; [#uses=1]
+ %63 = fpext float %clampedPoint.0.1.1.i to double ; [#uses=2]
+ br i1 %62, label %bb.i1.i, label %bb1.i2.i
+
+bb.i1.i: ; preds = %_ZL12getQuantizedf.exit10.i
+ %64 = fadd double %63, -5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit5.i
+
+bb1.i2.i: ; preds = %_ZL12getQuantizedf.exit10.i
+ %65 = fadd double %63, 5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit5.i
+
+_ZL12getQuantizedf.exit5.i: ; preds = %bb1.i2.i, %bb.i1.i
+ %.0.in.i3.i = phi double [ %64, %bb.i1.i ], [ %65, %bb1.i2.i ] ; [#uses=1]
+ %.0.i4.i = fptosi double %.0.in.i3.i to i32 ; [#uses=2]
+ %66 = getelementptr inbounds [3 x i32]* %quantizedAabbMin, i32 0, i32 1 ; [#uses=2]
+ store i32 %.0.i4.i, i32* %66, align 4
+ %67 = fcmp olt float %clampedPoint.0.2.1.i, 0.000000e+00 ; [#uses=1]
+ %68 = fpext float %clampedPoint.0.2.1.i to double ; [#uses=2]
+ br i1 %67, label %bb.i.i, label %bb1.i.i
+
+bb.i.i: ; preds = %_ZL12getQuantizedf.exit5.i
+ %69 = fadd double %68, -5.000000e-01 ; [#uses=1]
+ br label %_ZNK25btHeightfieldTerrainShape17quantizeWithClampEPiRK9btVector3i.exit
+
+bb1.i.i: ; preds = %_ZL12getQuantizedf.exit5.i
+ %70 = fadd double %68, 5.000000e-01 ; [#uses=1]
+ br label %_ZNK25btHeightfieldTerrainShape17quantizeWithClampEPiRK9btVector3i.exit
+
+_ZNK25btHeightfieldTerrainShape17quantizeWithClampEPiRK9btVector3i.exit: ; preds = %bb1.i.i, %bb.i.i
+ %.0.in.i.i = phi double [ %69, %bb.i.i ], [ %70, %bb1.i.i ] ; [#uses=1]
+ %.0.i.i = fptosi double %.0.in.i.i to i32 ; [#uses=2]
+ %71 = getelementptr inbounds [3 x i32]* %quantizedAabbMin, i32 0, i32 2 ; [#uses=2]
+ store i32 %.0.i.i, i32* %71, align 4
+ %72 = getelementptr inbounds [3 x i32]* %quantizedAabbMax, i32 0, i32 0 ; [#uses=2]
+ %73 = fcmp olt float %36, %41 ; [#uses=1]
+ %clampedPoint.0.0.0.i51 = select i1 %73, float %41, float %36 ; [#uses=2]
+ %74 = fcmp olt float %37, %44 ; [#uses=1]
+ %clampedPoint.0.1.0.i52 = select i1 %74, float %44, float %37 ; [#uses=2]
+ %75 = fcmp olt float %38, %47 ; [#uses=1]
+ %clampedPoint.0.2.0.i53 = select i1 %75, float %47, float %38 ; [#uses=2]
+ %76 = fcmp olt float %50, %clampedPoint.0.0.0.i51 ; [#uses=1]
+ %clampedPoint.0.0.1.i54 = select i1 %76, float %50, float %clampedPoint.0.0.0.i51 ; [#uses=2]
+ %77 = fcmp olt float %53, %clampedPoint.0.1.0.i52 ; [#uses=1]
+ %clampedPoint.0.1.1.i55 = select i1 %77, float %53, float %clampedPoint.0.1.0.i52 ; [#uses=2]
+ %78 = fcmp olt float %56, %clampedPoint.0.2.0.i53 ; [#uses=1]
+ %clampedPoint.0.2.1.i56 = select i1 %78, float %56, float %clampedPoint.0.2.0.i53 ; [#uses=2]
+ %79 = fcmp olt float %clampedPoint.0.0.1.i54, 0.000000e+00 ; [#uses=1]
+ %80 = fpext float %clampedPoint.0.0.1.i54 to double ; [#uses=2]
+ br i1 %79, label %bb.i6.i57, label %bb1.i7.i58
+
+bb.i6.i57: ; preds = %_ZNK25btHeightfieldTerrainShape17quantizeWithClampEPiRK9btVector3i.exit
+ %81 = fadd double %80, -5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit10.i61
+
+bb1.i7.i58: ; preds = %_ZNK25btHeightfieldTerrainShape17quantizeWithClampEPiRK9btVector3i.exit
+ %82 = fadd double %80, 5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit10.i61
+
+_ZL12getQuantizedf.exit10.i61: ; preds = %bb1.i7.i58, %bb.i6.i57
+ %.0.in.i8.i59 = phi double [ %81, %bb.i6.i57 ], [ %82, %bb1.i7.i58 ] ; [#uses=1]
+ %.0.i9.i60 = fptosi double %.0.in.i8.i59 to i32 ; [#uses=2]
+ store i32 %.0.i9.i60, i32* %72, align 4
+ %83 = fcmp olt float %clampedPoint.0.1.1.i55, 0.000000e+00 ; [#uses=1]
+ %84 = fpext float %clampedPoint.0.1.1.i55 to double ; [#uses=2]
+ br i1 %83, label %bb.i1.i62, label %bb1.i2.i63
+
+bb.i1.i62: ; preds = %_ZL12getQuantizedf.exit10.i61
+ %85 = fadd double %84, -5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit5.i66
+
+bb1.i2.i63: ; preds = %_ZL12getQuantizedf.exit10.i61
+ %86 = fadd double %84, 5.000000e-01 ; [#uses=1]
+ br label %_ZL12getQuantizedf.exit5.i66
+
+_ZL12getQuantizedf.exit5.i66: ; preds = %bb1.i2.i63, %bb.i1.i62
+ %.0.in.i3.i64 = phi double [ %85, %bb.i1.i62 ], [ %86, %bb1.i2.i63 ] ; [#uses=1]
+ %.0.i4.i65 = fptosi double %.0.in.i3.i64 to i32 ; [#uses=2]
+ %87 = getelementptr inbounds [3 x i32]* %quantizedAabbMax, i32 0, i32 1 ; [#uses=2]
+ store i32 %.0.i4.i65, i32* %87, align 4
+ %88 = fcmp olt float %clampedPoint.0.2.1.i56, 0.000000e+00 ; [#uses=1]
+ %89 = fpext float %clampedPoint.0.2.1.i56 to double ; [#uses=2]
+ br i1 %88, label %bb.i.i67, label %bb1.i.i68
+
+bb.i.i67: ; preds = %_ZL12getQuantizedf.exit5.i66
+ %90 = fadd double %89, -5.000000e-01 ; [#uses=1]
+ br label %bb2
+
+bb1.i.i68: ; preds = %_ZL12getQuantizedf.exit5.i66
+ %91 = fadd double %89, 5.000000e-01 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb1.i.i68, %bb.i.i67
+ %.0.in.i.i69 = phi double [ %90, %bb.i.i67 ], [ %91, %bb1.i.i68 ] ; [#uses=1]
+ %.0.i.i70 = fptosi double %.0.in.i.i69 to i32 ; [#uses=1]
+ %92 = getelementptr inbounds [3 x i32]* %quantizedAabbMax, i32 0, i32 2 ; [#uses=1]
+ %93 = add nsw i32 %.0.i9.i, -1 ; [#uses=5]
+ store i32 %93, i32* %39, align 4
+ %94 = add nsw i32 %.0.i9.i60, 1 ; [#uses=5]
+ store i32 %94, i32* %72, align 4
+ %95 = add nsw i32 %.0.i4.i, -1 ; [#uses=5]
+ store i32 %95, i32* %66, align 4
+ %96 = add nsw i32 %.0.i4.i65, 1 ; [#uses=5]
+ store i32 %96, i32* %87, align 4
+ %97 = add nsw i32 %.0.i.i, -1 ; [#uses=5]
+ store i32 %97, i32* %71, align 4
+ %98 = add nsw i32 %.0.i.i70, 1 ; [#uses=5]
+ store i32 %98, i32* %92, align 4
+ %99 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 4 ; [#uses=1]
+ %100 = load i32* %99, align 4 ; [#uses=1]
+ %101 = add nsw i32 %100, -1 ; [#uses=7]
+ %102 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 5 ; [#uses=1]
+ %103 = load i32* %102, align 4 ; [#uses=1]
+ %104 = add nsw i32 %103, -1 ; [#uses=7]
+ %105 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 15 ; [#uses=1]
+ %106 = load i32* %105, align 4 ; [#uses=1]
+ switch i32 %106, label %bb27 [
+ i32 0, label %bb3
+ i32 1, label %bb11
+ i32 2, label %bb19
+ ]
+
+bb3: ; preds = %bb2
+ %107 = icmp sgt i32 %95, 0 ; [#uses=1]
+ %startX.0 = select i1 %107, i32 %95, i32 0 ; [#uses=2]
+ %108 = icmp slt i32 %96, %101 ; [#uses=1]
+ %endX.0 = select i1 %108, i32 %96, i32 %101 ; [#uses=2]
+ %109 = icmp sgt i32 %97, 0 ; [#uses=1]
+ %startJ.0 = select i1 %109, i32 %97, i32 0 ; [#uses=2]
+ %110 = icmp slt i32 %98, %104 ; [#uses=1]
+ br i1 %110, label %bb10, label %bb27
+
+bb10: ; preds = %bb3
+ br label %bb27
+
+bb11: ; preds = %bb2
+ %111 = icmp sgt i32 %93, 0 ; [#uses=1]
+ %startX.2 = select i1 %111, i32 %93, i32 0 ; [#uses=2]
+ %112 = icmp slt i32 %94, %101 ; [#uses=1]
+ %endX.2 = select i1 %112, i32 %94, i32 %101 ; [#uses=2]
+ %113 = icmp sgt i32 %97, 0 ; [#uses=1]
+ %startJ.2 = select i1 %113, i32 %97, i32 0 ; [#uses=2]
+ %114 = icmp slt i32 %98, %104 ; [#uses=1]
+ br i1 %114, label %bb18, label %bb27
+
+bb18: ; preds = %bb11
+ br label %bb27
+
+bb19: ; preds = %bb2
+ %115 = icmp sgt i32 %93, 0 ; [#uses=1]
+ %startX.3 = select i1 %115, i32 %93, i32 0 ; [#uses=2]
+ %116 = icmp slt i32 %94, %101 ; [#uses=1]
+ %endX.3 = select i1 %116, i32 %94, i32 %101 ; [#uses=2]
+ %117 = icmp sgt i32 %95, 0 ; [#uses=1]
+ %startJ.3 = select i1 %117, i32 %95, i32 0 ; [#uses=2]
+ %118 = icmp slt i32 %96, %104 ; [#uses=1]
+ br i1 %118, label %bb26, label %bb27
+
+bb26: ; preds = %bb19
+ br label %bb27
+
+bb27: ; preds = %bb26, %bb19, %bb18, %bb11, %bb10, %bb3, %bb2
+ %startX.1 = phi i32 [ 0, %bb2 ], [ %startX.3, %bb26 ], [ %startX.3, %bb19 ], [ %startX.2, %bb18 ], [ %startX.2, %bb11 ], [ %startX.0, %bb10 ], [ %startX.0, %bb3 ] ; [#uses=5]
+ %endX.1 = phi i32 [ %101, %bb2 ], [ %endX.3, %bb26 ], [ %endX.3, %bb19 ], [ %endX.2, %bb18 ], [ %endX.2, %bb11 ], [ %endX.0, %bb10 ], [ %endX.0, %bb3 ] ; [#uses=2]
+ %startJ.1 = phi i32 [ 0, %bb2 ], [ %startJ.3, %bb26 ], [ %startJ.3, %bb19 ], [ %startJ.2, %bb18 ], [ %startJ.2, %bb11 ], [ %startJ.0, %bb10 ], [ %startJ.0, %bb3 ] ; [#uses=5]
+ %endJ.0 = phi i32 [ %104, %bb2 ], [ %96, %bb26 ], [ %104, %bb19 ], [ %98, %bb18 ], [ %104, %bb11 ], [ %98, %bb10 ], [ %104, %bb3 ] ; [#uses=2]
+ %119 = icmp slt i32 %startJ.1, %endJ.0 ; [#uses=1]
+ br i1 %119, label %bb.nph88, label %return
+
+bb32: ; preds = %bb46.preheader, %bb45
+ %indvar = phi i32 [ %indvar.next, %bb45 ], [ 0, %bb46.preheader ] ; [#uses=4]
+ %tmp96 = add i32 %tmp101, %indvar ; [#uses=1]
+ %x.085 = add i32 %startX.1, %indvar ; [#uses=10]
+ %tmp98 = add i32 %tmp97, %indvar ; [#uses=6]
+ %120 = load i8* %140, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %120, 0 ; [#uses=1]
+ br i1 %toBool, label %bb33, label %bb43
+
+bb33: ; preds = %bb32
+ %121 = load i8* %141, align 1 ; [#uses=1]
+ %toBool34not = icmp eq i8 %121, 0 ; [#uses=1]
+ br i1 %toBool34not, label %bb44, label %bb38
+
+bb38: ; preds = %bb33
+ %122 = and i32 %tmp96, 1 ; [#uses=1]
+ %toBool42 = icmp eq i32 %122, 0 ; [#uses=1]
+ br i1 %toBool42, label %bb43, label %bb44
+
+bb43: ; preds = %bb38, %bb32
+ call void @_ZNK25btHeightfieldTerrainShape9getVertexEiiR9btVector3(%struct.btHeightfieldTerrainShape* %this, i32 %x.085, i32 %j.087, %struct.btQuadWord* %142)
+ call void @_ZNK25btHeightfieldTerrainShape9getVertexEiiR9btVector3(%struct.btHeightfieldTerrainShape* %this, i32 %tmp98, i32 %j.087, %struct.btQuadWord* %143)
+ call void @_ZNK25btHeightfieldTerrainShape9getVertexEiiR9btVector3(%struct.btHeightfieldTerrainShape* %this, i32 %tmp98, i32 %tmp105, %struct.btQuadWord* %144)
+ %123 = load i32 (...)*** %145, align 4 ; [#uses=1]
+ %124 = getelementptr inbounds i32 (...)** %123, i32 2 ; [#uses=1]
+ %125 = load i32 (...)** %124, align 4 ; [#uses=1]
+ %126 = bitcast i32 (...)* %125 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ call void %126(%struct.btActionInterface* %callback, %struct.btQuadWord* %142, i32 %x.085, i32 %j.087)
+ call void @_ZNK25btHeightfieldTerrainShape9getVertexEiiR9btVector3(%struct.btHeightfieldTerrainShape* %this, i32 %x.085, i32 %j.087, %struct.btQuadWord* %142)
+ call void @_ZNK25btHeightfieldTerrainShape9getVertexEiiR9btVector3(%struct.btHeightfieldTerrainShape* %this, i32 %tmp98, i32 %tmp105, %struct.btQuadWord* %143)
+ call void @_ZNK25btHeightfieldTerrainShape9getVertexEiiR9btVector3(%struct.btHeightfieldTerrainShape* %this, i32 %x.085, i32 %tmp105, %struct.btQuadWord* %144)
+ %127 = load i32 (...)*** %145, align 4 ; [#uses=1]
+ %128 = getelementptr inbounds i32 (...)** %127, i32 2 ; [#uses=1]
+ %129 = load i32 (...)** %128, align 4 ; [#uses=1]
+ %130 = bitcast i32 (...)* %129 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ call void %130(%struct.btActionInterface* %callback, %struct.btQuadWord* %142, i32 %x.085, i32 %j.087)
+ br label %bb45
+
+bb44: ; preds = %bb38, %bb33
+ call void @_ZNK25btHeightfieldTerrainShape9getVertexEiiR9btVector3(%struct.btHeightfieldTerrainShape* %this, i32 %x.085, i32 %j.087, %struct.btQuadWord* %142)
+ call void @_ZNK25btHeightfieldTerrainShape9getVertexEiiR9btVector3(%struct.btHeightfieldTerrainShape* %this, i32 %x.085, i32 %tmp105, %struct.btQuadWord* %143)
+ call void @_ZNK25btHeightfieldTerrainShape9getVertexEiiR9btVector3(%struct.btHeightfieldTerrainShape* %this, i32 %tmp98, i32 %j.087, %struct.btQuadWord* %144)
+ %131 = load i32 (...)*** %145, align 4 ; [#uses=1]
+ %132 = getelementptr inbounds i32 (...)** %131, i32 2 ; [#uses=1]
+ %133 = load i32 (...)** %132, align 4 ; [#uses=1]
+ %134 = bitcast i32 (...)* %133 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ call void %134(%struct.btActionInterface* %callback, %struct.btQuadWord* %142, i32 %x.085, i32 %j.087)
+ call void @_ZNK25btHeightfieldTerrainShape9getVertexEiiR9btVector3(%struct.btHeightfieldTerrainShape* %this, i32 %tmp98, i32 %j.087, %struct.btQuadWord* %142)
+ call void @_ZNK25btHeightfieldTerrainShape9getVertexEiiR9btVector3(%struct.btHeightfieldTerrainShape* %this, i32 %x.085, i32 %tmp105, %struct.btQuadWord* %143)
+ call void @_ZNK25btHeightfieldTerrainShape9getVertexEiiR9btVector3(%struct.btHeightfieldTerrainShape* %this, i32 %tmp98, i32 %tmp105, %struct.btQuadWord* %144)
+ %135 = load i32 (...)*** %145, align 4 ; [#uses=1]
+ %136 = getelementptr inbounds i32 (...)** %135, i32 2 ; [#uses=1]
+ %137 = load i32 (...)** %136, align 4 ; [#uses=1]
+ %138 = bitcast i32 (...)* %137 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ call void %138(%struct.btActionInterface* %callback, %struct.btQuadWord* %142, i32 %x.085, i32 %j.087)
+ br label %bb45
+
+bb45: ; preds = %bb44, %bb43
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; [#uses=1]
+ br i1 %exitcond, label %bb47, label %bb32
+
+bb47: ; preds = %bb46.preheader, %bb45
+ %indvar.next93 = add i32 %indvar92, 1 ; [#uses=2]
+ %exitcond100 = icmp eq i32 %indvar.next93, %tmp99 ; [#uses=1]
+ br i1 %exitcond100, label %return, label %bb46.preheader
+
+bb.nph88: ; preds = %bb27
+ %139 = icmp slt i32 %startX.1, %endX.1 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 13 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 14 ; [#uses=1]
+ %142 = getelementptr inbounds [3 x %struct.btQuadWord]* %vertices, i32 0, i32 0 ; [#uses=8]
+ %143 = getelementptr inbounds [3 x %struct.btQuadWord]* %vertices, i32 0, i32 1 ; [#uses=4]
+ %144 = getelementptr inbounds [3 x %struct.btQuadWord]* %vertices, i32 0, i32 2 ; [#uses=4]
+ %145 = getelementptr inbounds %struct.btActionInterface* %callback, i32 0, i32 0 ; [#uses=4]
+ %tmp = sub i32 %endX.1, %startX.1 ; [#uses=1]
+ %tmp94 = add i32 %startJ.1, %startX.1 ; [#uses=1]
+ %tmp97 = add i32 %startX.1, 1 ; [#uses=1]
+ %tmp99 = sub i32 %endJ.0, %startJ.1 ; [#uses=1]
+ %tmp104 = add i32 %startJ.1, 1 ; [#uses=1]
+ br label %bb46.preheader
+
+bb46.preheader: ; preds = %bb.nph88, %bb47
+ %indvar92 = phi i32 [ 0, %bb.nph88 ], [ %indvar.next93, %bb47 ] ; [#uses=4]
+ %tmp101 = add i32 %tmp94, %indvar92 ; [#uses=1]
+ %j.087 = add i32 %startJ.1, %indvar92 ; [#uses=10]
+ %tmp105 = add i32 %tmp104, %indvar92 ; [#uses=6]
+ br i1 %139, label %bb32, label %bb47
+
+return: ; preds = %bb47, %bb27
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btHeightfieldTerrainShapeD0Ev(%struct.btHeightfieldTerrainShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV25btHeightfieldTerrainShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ %2 = bitcast %struct.btHeightfieldTerrainShape* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btHeightfieldTerrainShapeD1Ev(%struct.btHeightfieldTerrainShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV25btHeightfieldTerrainShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN25btHeightfieldTerrainShapeD2Ev(%struct.btHeightfieldTerrainShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV25btHeightfieldTerrainShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN25btHeightfieldTerrainShapeC2EiiPvfibb(%struct.btHeightfieldTerrainShape* %this, i32 %heightStickWidth, i32 %heightStickLength, i8* %heightfieldData, float %maxHeight, i32 %upAxis, i8 zeroext %useFloatData, i8 zeroext %flipQuadEdges) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeC2Ev(%struct.btConcaveShape* %0)
+ %1 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV25btHeightfieldTerrainShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %toBool = icmp eq i8 %useFloatData, 0 ; [#uses=1]
+ %iftmp.123.0 = select i1 %toBool, i32 5, i32 0 ; [#uses=1]
+ %2 = fdiv float %maxHeight, 6.553500e+04 ; [#uses=1]
+ tail call void @_ZN25btHeightfieldTerrainShape10initializeEiiPvfffi14PHY_ScalarTypeb(%struct.btHeightfieldTerrainShape* %this, i32 %heightStickWidth, i32 %heightStickLength, i8* %heightfieldData, float %2, float 0.000000e+00, float %maxHeight, i32 %upAxis, i32 %iftmp.123.0, i8 zeroext %flipQuadEdges) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN25btHeightfieldTerrainShapeC1EiiPvfibb(%struct.btHeightfieldTerrainShape* %this, i32 %heightStickWidth, i32 %heightStickLength, i8* %heightfieldData, float %maxHeight, i32 %upAxis, i8 zeroext %useFloatData, i8 zeroext %flipQuadEdges) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeC2Ev(%struct.btConcaveShape* %0)
+ %1 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV25btHeightfieldTerrainShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %toBool.i = icmp eq i8 %useFloatData, 0 ; [#uses=1]
+ %iftmp.123.0.i = select i1 %toBool.i, i32 5, i32 0 ; [#uses=1]
+ %2 = fdiv float %maxHeight, 6.553500e+04 ; [#uses=1]
+ tail call void @_ZN25btHeightfieldTerrainShape10initializeEiiPvfffi14PHY_ScalarTypeb(%struct.btHeightfieldTerrainShape* %this, i32 %heightStickWidth, i32 %heightStickLength, i8* %heightfieldData, float %2, float 0.000000e+00, float %maxHeight, i32 %upAxis, i32 %iftmp.123.0.i, i8 zeroext %flipQuadEdges) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN25btHeightfieldTerrainShapeC1EiiPvfffi14PHY_ScalarTypeb(%struct.btHeightfieldTerrainShape* %this, i32 %heightStickWidth, i32 %heightStickLength, i8* %heightfieldData, float %heightScale, float %minHeight, float %maxHeight, i32 %upAxis, i32 %hdt, i8 zeroext %flipQuadEdges) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeC2Ev(%struct.btConcaveShape* %0)
+ %1 = getelementptr inbounds %struct.btHeightfieldTerrainShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV25btHeightfieldTerrainShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ tail call void @_ZN25btHeightfieldTerrainShape10initializeEiiPvfffi14PHY_ScalarTypeb(%struct.btHeightfieldTerrainShape* %this, i32 %heightStickWidth, i32 %heightStickLength, i8* %heightfieldData, float %heightScale, float %minHeight, float %maxHeight, i32 %upAxis, i32 %hdt, i8 zeroext %flipQuadEdges) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN19btMinkowskiSumShapeC2EPK13btConvexShapeS2_(%struct.btMinkowskiSumShape* %this, %struct.btConvexShape* %shapeA, %struct.btConvexShape* %shapeB) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV19btMinkowskiSumShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConvexShape* %shapeA, %struct.btConvexShape** %2, align 4
+ %3 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btConvexShape* %shapeB, %struct.btConvexShape** %3, align 4
+ %4 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 16, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK19btMinkowskiSumShape7getNameEv(%struct.btMinkowskiSumShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([13 x i8]* @.str91, i32 0, i32 0)
+}
+
+; [#uses=1]
+define void @_ZNK19btMinkowskiSumShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btMinkowskiSumShape* nocapture %this, %struct.btQuadWord* nocapture %vec) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %3 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 3 ; [#uses=1]
+ %5 = load %struct.btConvexShape** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btConvexShape* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 16 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=2]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = fmul float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=3]
+ %19 = fmul float %16, %18 ; [#uses=1]
+ %20 = fadd float %14, %19 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=3]
+ %25 = fmul float %22, %24 ; [#uses=1]
+ %26 = fadd float %20, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fmul float %28, %13 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = fmul float %31, %18 ; [#uses=1]
+ %33 = fadd float %29, %32 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fmul float %35, %24 ; [#uses=1]
+ %37 = fadd float %33, %36 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fmul float %39, %13 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = fmul float %42, %18 ; [#uses=1]
+ %44 = fadd float %40, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fmul float %46, %24 ; [#uses=1]
+ %48 = fadd float %44, %47 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %48, float* %49, align 8
+ %50 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %37, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %26, float* %51, align 8
+ %52 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %52, align 4
+ %53 = bitcast i32 (...)* %9 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %53(%struct.btQuadWord* noalias sret %3, %struct.btConvexShape* %5, %struct.btQuadWord* %2)
+ %54 = load float* %45, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %56 = load float* %55, align 8 ; [#uses=3]
+ %57 = fmul float %54, %56 ; [#uses=1]
+ %58 = load float* %34, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=3]
+ %61 = fmul float %58, %60 ; [#uses=1]
+ %62 = fadd float %57, %61 ; [#uses=1]
+ %63 = load float* %21, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %65 = load float* %64, align 8 ; [#uses=3]
+ %66 = fmul float %63, %65 ; [#uses=1]
+ %67 = fadd float %62, %66 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = fadd float %67, %69 ; [#uses=1]
+ %71 = load float* %41, align 4 ; [#uses=1]
+ %72 = fmul float %71, %56 ; [#uses=1]
+ %73 = load float* %30, align 4 ; [#uses=1]
+ %74 = fmul float %73, %60 ; [#uses=1]
+ %75 = fadd float %72, %74 ; [#uses=1]
+ %76 = load float* %15, align 4 ; [#uses=1]
+ %77 = fmul float %76, %65 ; [#uses=1]
+ %78 = fadd float %75, %77 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fadd float %78, %80 ; [#uses=1]
+ %82 = load float* %38, align 4 ; [#uses=1]
+ %83 = fmul float %82, %56 ; [#uses=1]
+ %84 = load float* %27, align 4 ; [#uses=1]
+ %85 = fmul float %84, %60 ; [#uses=1]
+ %86 = fadd float %83, %85 ; [#uses=1]
+ %87 = load float* %10, align 4 ; [#uses=1]
+ %88 = fmul float %87, %65 ; [#uses=1]
+ %89 = fadd float %86, %88 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = fadd float %89, %91 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 4 ; [#uses=1]
+ %94 = load %struct.btConvexShape** %93, align 4 ; [#uses=2]
+ %95 = getelementptr inbounds %struct.btConvexShape* %94, i32 0, i32 0, i32 0 ; [#uses=1]
+ %96 = load i32 (...)*** %95, align 4 ; [#uses=1]
+ %97 = getelementptr inbounds i32 (...)** %96, i32 16 ; [#uses=1]
+ %98 = load i32 (...)** %97, align 4 ; [#uses=1]
+ %99 = load float* %23, align 4 ; [#uses=1]
+ %100 = fsub float -0.000000e+00, %99 ; [#uses=3]
+ %101 = load float* %17, align 4 ; [#uses=1]
+ %102 = fsub float -0.000000e+00, %101 ; [#uses=3]
+ %103 = load float* %12, align 4 ; [#uses=1]
+ %104 = fsub float -0.000000e+00, %103 ; [#uses=3]
+ %105 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %106 = load float* %105, align 4 ; [#uses=1]
+ %107 = fmul float %106, %104 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ %110 = fmul float %109, %102 ; [#uses=1]
+ %111 = fadd float %107, %110 ; [#uses=1]
+ %112 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %113 = load float* %112, align 4 ; [#uses=1]
+ %114 = fmul float %113, %100 ; [#uses=1]
+ %115 = fadd float %111, %114 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %117 = load float* %116, align 4 ; [#uses=1]
+ %118 = fmul float %117, %104 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %120 = load float* %119, align 4 ; [#uses=1]
+ %121 = fmul float %120, %102 ; [#uses=1]
+ %122 = fadd float %118, %121 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %124 = load float* %123, align 4 ; [#uses=1]
+ %125 = fmul float %124, %100 ; [#uses=1]
+ %126 = fadd float %122, %125 ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %128 = load float* %127, align 4 ; [#uses=1]
+ %129 = fmul float %128, %104 ; [#uses=1]
+ %130 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %131 = load float* %130, align 4 ; [#uses=1]
+ %132 = fmul float %131, %102 ; [#uses=1]
+ %133 = fadd float %129, %132 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ %136 = fmul float %135, %100 ; [#uses=1]
+ %137 = fadd float %133, %136 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %137, float* %138, align 8
+ %139 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %126, float* %139, align 4
+ %140 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %115, float* %140, align 8
+ %141 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %141, align 4
+ %142 = bitcast i32 (...)* %98 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %142(%struct.btQuadWord* noalias sret %1, %struct.btConvexShape* %94, %struct.btQuadWord* %0)
+ %143 = load float* %134, align 4 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %145 = load float* %144, align 8 ; [#uses=3]
+ %146 = fmul float %143, %145 ; [#uses=1]
+ %147 = load float* %123, align 4 ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %149 = load float* %148, align 4 ; [#uses=3]
+ %150 = fmul float %147, %149 ; [#uses=1]
+ %151 = fadd float %146, %150 ; [#uses=1]
+ %152 = load float* %112, align 4 ; [#uses=1]
+ %153 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %154 = load float* %153, align 8 ; [#uses=3]
+ %155 = fmul float %152, %154 ; [#uses=1]
+ %156 = fadd float %151, %155 ; [#uses=1]
+ %157 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %158 = load float* %157, align 4 ; [#uses=1]
+ %159 = fadd float %156, %158 ; [#uses=1]
+ %160 = load float* %130, align 4 ; [#uses=1]
+ %161 = fmul float %160, %145 ; [#uses=1]
+ %162 = load float* %119, align 4 ; [#uses=1]
+ %163 = fmul float %162, %149 ; [#uses=1]
+ %164 = fadd float %161, %163 ; [#uses=1]
+ %165 = load float* %108, align 4 ; [#uses=1]
+ %166 = fmul float %165, %154 ; [#uses=1]
+ %167 = fadd float %164, %166 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=1]
+ %170 = fadd float %167, %169 ; [#uses=1]
+ %171 = load float* %127, align 4 ; [#uses=1]
+ %172 = fmul float %171, %145 ; [#uses=1]
+ %173 = load float* %116, align 4 ; [#uses=1]
+ %174 = fmul float %173, %149 ; [#uses=1]
+ %175 = fadd float %172, %174 ; [#uses=1]
+ %176 = load float* %105, align 4 ; [#uses=1]
+ %177 = fmul float %176, %154 ; [#uses=1]
+ %178 = fadd float %175, %177 ; [#uses=1]
+ %179 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %180 = load float* %179, align 4 ; [#uses=1]
+ %181 = fadd float %178, %180 ; [#uses=1]
+ %182 = fsub float %70, %159 ; [#uses=1]
+ %183 = fsub float %81, %170 ; [#uses=1]
+ %184 = fsub float %92, %181 ; [#uses=1]
+ %185 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %184, float* %185, align 4
+ %186 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %183, float* %186, align 4
+ %187 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %182, float* %187, align 4
+ %188 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %188, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK19btMinkowskiSumShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btMinkowskiSumShape* %this, %struct.btQuadWord* %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) align 2 {
+entry:
+ %memtmp = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = icmp sgt i32 %numVectors, 0 ; [#uses=1]
+ br i1 %0, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %i.03 = phi i32 [ 0, %bb.nph ], [ %14, %bb ] ; [#uses=6]
+ %scevgep = getelementptr %struct.btQuadWord* %vectors, i32 %i.03 ; [#uses=1]
+ %scevgep45 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %i.03, i32 0, i32 0 ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.03, i32 0, i32 1 ; [#uses=1]
+ %scevgep7 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.03, i32 0, i32 2 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.03, i32 0, i32 3 ; [#uses=1]
+ %6 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 16 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to void (%struct.btQuadWord*, %struct.btMinkowskiSumShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %9(%struct.btQuadWord* noalias sret %memtmp, %struct.btMinkowskiSumShape* %this, %struct.btQuadWord* %scevgep)
+ %10 = load float* %2, align 8 ; [#uses=1]
+ store float %10, float* %scevgep45, align 4
+ %11 = load float* %3, align 4 ; [#uses=1]
+ store float %11, float* %scevgep6, align 4
+ %12 = load float* %4, align 8 ; [#uses=1]
+ store float %12, float* %scevgep7, align 4
+ %13 = load float* %5, align 4 ; [#uses=1]
+ store float %13, float* %scevgep8, align 4
+ %14 = add nsw i32 %i.03, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %14, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define float @_ZNK19btMinkowskiSumShape9getMarginEv(%struct.btMinkowskiSumShape* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 3 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 11 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %7 = tail call float %6(%struct.btConvexShape* %1) ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 4 ; [#uses=1]
+ %9 = load %struct.btConvexShape** %8, align 4 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btConvexShape* %9, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 11 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %15 = tail call float %14(%struct.btConvexShape* %9) ; [#uses=1]
+ %16 = fadd float %7, %15 ; [#uses=1]
+ ret float %16
+}
+
+; [#uses=1]
+define void @_ZNK19btMinkowskiSumShape21calculateLocalInertiaEfR9btVector3(%struct.btMinkowskiSumShape* nocapture %this, float %mass, %struct.btQuadWord* nocapture %inertia) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN19btMinkowskiSumShapeD0Ev(%struct.btMinkowskiSumShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btMinkowskiSumShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN19btMinkowskiSumShapeD1Ev(%struct.btMinkowskiSumShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN19btMinkowskiSumShapeC1EPK13btConvexShapeS2_(%struct.btMinkowskiSumShape* %this, %struct.btConvexShape* %shapeA, %struct.btConvexShape* %shapeB) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV19btMinkowskiSumShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConvexShape* %shapeA, %struct.btConvexShape** %2, align 4
+ %3 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btConvexShape* %shapeB, %struct.btConvexShape** %3, align 4
+ %4 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 16, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btMinkowskiSumShape* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 4
+ ret void
+}
+
+; [#uses=0]
+define %struct.btMaterial* @_ZN32btMultimaterialTriangleMeshShape21getMaterialPropertiesEii(%struct.btMultimaterialTriangleMeshShape* nocapture %this, i32 %partID, i32 %triIndex) align 2 {
+entry:
+ %materialBase = alloca i8*, align 4 ; [#uses=3]
+ %numMaterials = alloca i32, align 4 ; [#uses=1]
+ %materialType = alloca i32, align 4 ; [#uses=1]
+ %materialStride = alloca i32, align 4 ; [#uses=2]
+ %triangleMaterialBase = alloca i8*, align 4 ; [#uses=3]
+ %numTriangles = alloca i32, align 4 ; [#uses=1]
+ %triangleMaterialStride = alloca i32, align 4 ; [#uses=2]
+ %triangleType = alloca i32, align 4 ; [#uses=1]
+ store i8* null, i8** %materialBase, align 4
+ store i8* null, i8** %triangleMaterialBase, align 4
+ %0 = getelementptr inbounds %struct.btMultimaterialTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 16 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast %struct.btStridingMeshInterface* %1 to %struct.btTriangleIndexVertexMaterialArray* ; [#uses=1]
+ %7 = bitcast i32 (...)* %5 to void (%struct.btTriangleIndexVertexMaterialArray*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* ; [#uses=1]
+ call void %7(%struct.btTriangleIndexVertexMaterialArray* %6, i8** %materialBase, i32* %numMaterials, i32* %materialType, i32* %materialStride, i8** %triangleMaterialBase, i32* %numTriangles, i32* %triangleMaterialStride, i32* %triangleType, i32 %partID)
+ %8 = load i8** %triangleMaterialBase, align 4 ; [#uses=1]
+ %9 = load i32* %triangleMaterialStride, align 4 ; [#uses=1]
+ %10 = mul nsw i32 %9, %triIndex ; [#uses=1]
+ %11 = getelementptr inbounds i8* %8, i32 %10 ; [#uses=1]
+ %12 = bitcast i8* %11 to i32* ; [#uses=1]
+ %13 = load i8** %materialBase, align 4 ; [#uses=1]
+ %14 = load i32* %12, align 4 ; [#uses=1]
+ %15 = load i32* %materialStride, align 4 ; [#uses=1]
+ %16 = mul nsw i32 %15, %14 ; [#uses=1]
+ %17 = getelementptr inbounds i8* %13, i32 %16 ; [#uses=1]
+ %18 = bitcast i8* %17 to %struct.btMaterial* ; [#uses=1]
+ ret %struct.btMaterial* %18
+}
+
+; [#uses=1]
+define void @_ZN18btMultiSphereShapeC2EPK9btVector3PKfi(%struct.btMultiSphereShape* %this, %struct.btQuadWord* nocapture %positions, float* nocapture %radi, i32 %numSpheres) align 2 {
+invcont1:
+ %0 = alloca float, align 4 ; [#uses=2]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0 ; [#uses=2]
+ call void @_ZN32btConvexInternalAabbCachingShapeC2Ev(%struct.btConvexInternalAabbCachingShape* %2)
+ %3 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV18btMultiSphereShape, i32 0, i32 2), i32 (...)*** %3, align 4
+ %4 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 4 ; [#uses=3]
+ store i8 1, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 3 ; [#uses=5]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %5, align 4
+ %6 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ store i32 0, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 4 ; [#uses=3]
+ store i8 1, i8* %8, align 4
+ %9 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 3 ; [#uses=5]
+ store float* null, float** %9, align 4
+ %10 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 1 ; [#uses=2]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 2 ; [#uses=2]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 9, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(%"struct.btAlignedObjectArray<btVector3>"* %13, i32 %numSpheres, %struct.btQuadWord* %1) inlinehint
+ to label %invcont2 unwind label %lpad27
+
+invcont2: ; preds = %invcont1
+ store float 0.000000e+00, float* %0, align 4
+ %14 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayIfE6resizeEiRKf(%"struct.btAlignedObjectArray<float>"* %14, i32 %numSpheres, float* %0) inlinehint
+ to label %bb4.preheader unwind label %lpad27
+
+bb4.preheader: ; preds = %invcont2
+ %15 = icmp sgt i32 %numSpheres, 0 ; [#uses=1]
+ br i1 %15, label %bb, label %bb5
+
+bb: ; preds = %bb, %bb4.preheader
+ %i.055 = phi i32 [ %23, %bb ], [ 0, %bb4.preheader ] ; [#uses=11]
+ %scevgep = getelementptr float* %radi, i32 %i.055 ; [#uses=1]
+ %scevgep5657 = getelementptr inbounds %struct.btQuadWord* %positions, i32 %i.055, i32 0, i32 0 ; [#uses=1]
+ %scevgep58 = getelementptr %struct.btQuadWord* %positions, i32 %i.055, i32 0, i32 1 ; [#uses=1]
+ %scevgep59 = getelementptr %struct.btQuadWord* %positions, i32 %i.055, i32 0, i32 2 ; [#uses=1]
+ %scevgep60 = getelementptr %struct.btQuadWord* %positions, i32 %i.055, i32 0, i32 3 ; [#uses=1]
+ %16 = load %struct.btQuadWord** %5, align 4 ; [#uses=4]
+ %17 = load float* %scevgep5657, align 4 ; [#uses=1]
+ %scevgep6263 = getelementptr inbounds %struct.btQuadWord* %16, i32 %i.055, i32 0, i32 0 ; [#uses=1]
+ store float %17, float* %scevgep6263, align 4
+ %18 = load float* %scevgep58, align 4 ; [#uses=1]
+ %scevgep64 = getelementptr %struct.btQuadWord* %16, i32 %i.055, i32 0, i32 1 ; [#uses=1]
+ store float %18, float* %scevgep64, align 4
+ %19 = load float* %scevgep59, align 4 ; [#uses=1]
+ %scevgep65 = getelementptr %struct.btQuadWord* %16, i32 %i.055, i32 0, i32 2 ; [#uses=1]
+ store float %19, float* %scevgep65, align 4
+ %20 = load float* %scevgep60, align 4 ; [#uses=1]
+ %scevgep66 = getelementptr %struct.btQuadWord* %16, i32 %i.055, i32 0, i32 3 ; [#uses=1]
+ store float %20, float* %scevgep66, align 4
+ %21 = load float** %9, align 4 ; [#uses=1]
+ %22 = load float* %scevgep, align 4 ; [#uses=1]
+ %scevgep61 = getelementptr float* %21, i32 %i.055 ; [#uses=1]
+ store float %22, float* %scevgep61, align 4
+ %23 = add nsw i32 %i.055, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %23, %numSpheres ; [#uses=1]
+ br i1 %exitcond, label %bb5, label %bb
+
+bb5: ; preds = %bb, %bb4.preheader
+ invoke void @_ZN32btConvexInternalAabbCachingShape15recalcLocalAabbEv(%struct.btConvexInternalAabbCachingShape* %2)
+ to label %return unwind label %lpad27
+
+invcont18: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr28)
+ unreachable
+
+return: ; preds = %bb5
+ ret void
+
+lpad27: ; preds = %bb5, %invcont2, %invcont1
+ %eh_ptr28 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select30 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr28, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %24 = load float** %9, align 4 ; [#uses=2]
+ %25 = icmp eq float* %24, null ; [#uses=1]
+ br i1 %25, label %ppad43, label %bb.i.i.i51
+
+bb.i.i.i51: ; preds = %lpad27
+ %26 = load i8* %8, align 4 ; [#uses=1]
+ %toBool.i.i.i50 = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i50, label %bb2.i.i.i53, label %bb1.i.i.i52
+
+bb1.i.i.i52: ; preds = %bb.i.i.i51
+ %27 = bitcast float* %24 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %27)
+ to label %bb2.i.i.i53 unwind label %lpad31
+
+bb2.i.i.i53: ; preds = %bb1.i.i.i52, %bb.i.i.i51
+ store float* null, float** %9, align 4
+ br label %ppad43
+
+lpad31: ; preds = %bb1.i.i.i52
+ %eh_ptr32 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select34 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr32, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad35: ; preds = %bb1.i.i.i
+ %eh_ptr36 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select38 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr36, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad39: ; preds = %ppad
+ %eh_ptr40 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select42 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr40, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i, %ppad43
+ store i8 1, i8* %4, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %5, align 4
+ store i32 0, i32* %6, align 4
+ store i32 0, i32* %7, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %3, align 4
+ %28 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %28)
+ to label %invcont18 unwind label %lpad39
+
+ppad43: ; preds = %bb2.i.i.i53, %lpad27
+ store i8 1, i8* %8, align 4
+ store float* null, float** %9, align 4
+ store i32 0, i32* %10, align 4
+ store i32 0, i32* %11, align 4
+ %29 = load %struct.btQuadWord** %5, align 4 ; [#uses=2]
+ %30 = icmp eq %struct.btQuadWord* %29, null ; [#uses=1]
+ br i1 %30, label %ppad, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %ppad43
+ %31 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %31, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %32 = bitcast %struct.btQuadWord* %29 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %32)
+ to label %bb2.i.i.i unwind label %lpad35
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btQuadWord* null, %struct.btQuadWord** %5, align 4
+ br label %ppad
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK18btMultiSphereShape7getNameEv(%struct.btMultiSphereShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([12 x i8]* @.str96, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK18btMultiSphereShape28calculateSerializeBufferSizeEv(%struct.btMultiSphereShape* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 64
+}
+
+; [#uses=1]
+define void @_ZNK18btMultiSphereShape21calculateLocalInertiaEfR9btVector3(%struct.btMultiSphereShape* nocapture %this, float %mass, %struct.btQuadWord* nocapture %inertia) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fsub float %11, %5 ; [#uses=1]
+ %13 = fsub float %9, %3 ; [#uses=1]
+ %14 = fsub float %7, %1 ; [#uses=1]
+ %15 = fmul float %12, 5.000000e-01 ; [#uses=1]
+ %16 = fmul float %13, 5.000000e-01 ; [#uses=1]
+ %17 = fmul float %14, 5.000000e-01 ; [#uses=1]
+ %18 = fmul float %17, 2.000000e+00 ; [#uses=2]
+ %19 = fmul float %16, 2.000000e+00 ; [#uses=2]
+ %20 = fmul float %15, 2.000000e+00 ; [#uses=2]
+ %21 = fdiv float %mass, 1.200000e+01 ; [#uses=3]
+ %22 = fmul float %18, %18 ; [#uses=2]
+ %23 = fmul float %19, %19 ; [#uses=2]
+ %24 = fadd float %22, %23 ; [#uses=1]
+ %25 = fmul float %21, %24 ; [#uses=1]
+ %26 = fmul float %20, %20 ; [#uses=2]
+ %27 = fadd float %22, %26 ; [#uses=1]
+ %28 = fmul float %21, %27 ; [#uses=1]
+ %29 = fadd float %23, %26 ; [#uses=1]
+ %30 = fmul float %21, %29 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %30, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %28, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %25, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %34, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK18btMultiSphereShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btMultiSphereShape* %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) align 2 {
+entry:
+ %0 = icmp sgt i32 %numVectors, 0 ; [#uses=1]
+ br i1 %0, label %bb.nph38, label %return
+
+bb.nph38: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb5, %bb.nph38
+ %j.037 = phi i32 [ 0, %bb.nph38 ], [ %50, %bb5 ] ; [#uses=8]
+ %scevgep4344 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %j.037, i32 0, i32 0 ; [#uses=1]
+ %scevgep45 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.037, i32 0, i32 1 ; [#uses=1]
+ %scevgep46 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.037, i32 0, i32 2 ; [#uses=1]
+ %scevgep47 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.037, i32 0, i32 3 ; [#uses=1]
+ %scevgep48 = getelementptr %struct.btQuadWord* %vectors, i32 %j.037, i32 0, i32 2 ; [#uses=1]
+ %scevgep49 = getelementptr %struct.btQuadWord* %vectors, i32 %j.037, i32 0, i32 1 ; [#uses=1]
+ %scevgep5051 = getelementptr inbounds %struct.btQuadWord* %vectors, i32 %j.037, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32* %3, align 4 ; [#uses=2]
+ %10 = icmp sgt i32 %9, 0 ; [#uses=1]
+ br i1 %10, label %bb.nph, label %bb5
+
+bb.nph: ; preds = %bb
+ %11 = load float** %2, align 4 ; [#uses=1]
+ %12 = load %struct.btQuadWord** %1, align 4 ; [#uses=3]
+ br label %bb1
+
+bb1: ; preds = %bb3, %bb.nph
+ %i.036 = phi i32 [ 0, %bb.nph ], [ %49, %bb3 ] ; [#uses=5]
+ %maxDot.133 = phi float [ 0xC3ABC16D60000000, %bb.nph ], [ %maxDot.0, %bb3 ] ; [#uses=2]
+ %rad.035 = getelementptr float* %11, i32 %i.036 ; [#uses=1]
+ %scevgep = getelementptr %struct.btQuadWord* %12, i32 %i.036, i32 0, i32 2 ; [#uses=1]
+ %scevgep39 = getelementptr %struct.btQuadWord* %12, i32 %i.036, i32 0, i32 1 ; [#uses=1]
+ %scevgep4041 = getelementptr inbounds %struct.btQuadWord* %12, i32 %i.036, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 11 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %17 = tail call float %16(%struct.btConvexInternalShape* %5) ; [#uses=3]
+ %18 = load float* %scevgep48, align 4 ; [#uses=3]
+ %19 = fmul float %18, %17 ; [#uses=1]
+ %20 = load float* %scevgep49, align 4 ; [#uses=3]
+ %21 = fmul float %20, %17 ; [#uses=1]
+ %22 = load float* %scevgep5051, align 4 ; [#uses=3]
+ %23 = fmul float %22, %17 ; [#uses=1]
+ %24 = load float* %6, align 4 ; [#uses=1]
+ %25 = fmul float %18, %24 ; [#uses=1]
+ %26 = load float* %7, align 4 ; [#uses=1]
+ %27 = fmul float %20, %26 ; [#uses=1]
+ %28 = load float* %8, align 4 ; [#uses=1]
+ %29 = fmul float %22, %28 ; [#uses=1]
+ %30 = load float* %rad.035, align 4 ; [#uses=3]
+ %31 = fmul float %25, %30 ; [#uses=1]
+ %32 = fmul float %27, %30 ; [#uses=1]
+ %33 = fmul float %29, %30 ; [#uses=1]
+ %34 = load float* %scevgep, align 4 ; [#uses=1]
+ %35 = fadd float %34, %31 ; [#uses=1]
+ %36 = load float* %scevgep39, align 4 ; [#uses=1]
+ %37 = fadd float %36, %32 ; [#uses=1]
+ %38 = load float* %scevgep4041, align 4 ; [#uses=1]
+ %39 = fadd float %38, %33 ; [#uses=1]
+ %40 = fsub float %35, %19 ; [#uses=2]
+ %41 = fsub float %37, %21 ; [#uses=2]
+ %42 = fsub float %39, %23 ; [#uses=2]
+ %43 = fmul float %22, %42 ; [#uses=1]
+ %44 = fmul float %20, %41 ; [#uses=1]
+ %45 = fadd float %43, %44 ; [#uses=1]
+ %46 = fmul float %18, %40 ; [#uses=1]
+ %47 = fadd float %45, %46 ; [#uses=2]
+ %48 = fcmp ogt float %47, %maxDot.133 ; [#uses=1]
+ br i1 %48, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ store float %42, float* %scevgep4344, align 4
+ store float %41, float* %scevgep45, align 4
+ store float %40, float* %scevgep46, align 4
+ store float 0.000000e+00, float* %scevgep47, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1
+ %maxDot.0 = phi float [ %47, %bb2 ], [ %maxDot.133, %bb1 ] ; [#uses=1]
+ %49 = add nsw i32 %i.036, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %49, %9 ; [#uses=1]
+ br i1 %exitcond, label %bb5, label %bb1
+
+bb5: ; preds = %bb3, %bb
+ %50 = add nsw i32 %j.037, 1 ; [#uses=2]
+ %exitcond42 = icmp eq i32 %50, %numVectors ; [#uses=1]
+ br i1 %exitcond42, label %return, label %bb
+
+return: ; preds = %bb5, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btMultiSphereShapeD0Ev(%struct.btMultiSphereShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV18btMultiSphereShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %2 = load float** %1, align 4 ; [#uses=2]
+ %3 = icmp eq float* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast float* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad18
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store float* null, float** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store float* null, float** %1, align 4
+ %8 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %11 = load %struct.btQuadWord** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btQuadWord* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i35
+
+bb.i.i.i35: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i34 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i34, label %bb2.i.i.i37, label %bb1.i.i.i36
+
+bb1.i.i.i36: ; preds = %bb.i.i.i35
+ %15 = bitcast %struct.btQuadWord* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i37 unwind label %lpad
+
+bb2.i.i.i37: ; preds = %bb1.i.i.i36, %bb.i.i.i35
+ store %struct.btQuadWord* null, %struct.btQuadWord** %10, align 4
+ br label %bb10
+
+invcont8: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i37, %bb3
+ %16 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %10, align 4
+ %17 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %19 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %19)
+ %20 = bitcast %struct.btMultiSphereShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %20)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i36
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %bb1.i.i.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %21 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %22 = load %struct.btQuadWord** %21, align 4 ; [#uses=2]
+ %23 = icmp eq %struct.btQuadWord* %22, null ; [#uses=1]
+ br i1 %23, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit44, label %bb.i.i.i40
+
+bb.i.i.i40: ; preds = %lpad18
+ %24 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool.i.i.i39 = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i39, label %bb2.i.i.i42, label %bb1.i.i.i41
+
+bb1.i.i.i41: ; preds = %bb.i.i.i40
+ %26 = bitcast %struct.btQuadWord* %22 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %26)
+ to label %bb2.i.i.i42 unwind label %lpad22
+
+bb2.i.i.i42: ; preds = %bb1.i.i.i41, %bb.i.i.i40
+ store %struct.btQuadWord* null, %struct.btQuadWord** %21, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit44
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit44: ; preds = %bb2.i.i.i42, %lpad18
+ %27 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %27, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %21, align 4
+ %28 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i41
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %ppad
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit44, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit44 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %30 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %30)
+ to label %invcont8 unwind label %lpad26
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btMultiSphereShapeD1Ev(%struct.btMultiSphereShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV18btMultiSphereShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %2 = load float** %1, align 4 ; [#uses=2]
+ %3 = icmp eq float* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast float* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad18
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store float* null, float** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store float* null, float** %1, align 4
+ %8 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %11 = load %struct.btQuadWord** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btQuadWord* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i35
+
+bb.i.i.i35: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i34 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i34, label %bb2.i.i.i37, label %bb1.i.i.i36
+
+bb1.i.i.i36: ; preds = %bb.i.i.i35
+ %15 = bitcast %struct.btQuadWord* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i37 unwind label %lpad
+
+bb2.i.i.i37: ; preds = %bb1.i.i.i36, %bb.i.i.i35
+ store %struct.btQuadWord* null, %struct.btQuadWord** %10, align 4
+ br label %bb10
+
+invcont8: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i37, %bb3
+ %16 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %10, align 4
+ %17 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %19 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %19)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i36
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %bb1.i.i.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %20 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %21 = load %struct.btQuadWord** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.btQuadWord* %21, null ; [#uses=1]
+ br i1 %22, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit44, label %bb.i.i.i40
+
+bb.i.i.i40: ; preds = %lpad18
+ %23 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i.i39 = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i39, label %bb2.i.i.i42, label %bb1.i.i.i41
+
+bb1.i.i.i41: ; preds = %bb.i.i.i40
+ %25 = bitcast %struct.btQuadWord* %21 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %25)
+ to label %bb2.i.i.i42 unwind label %lpad22
+
+bb2.i.i.i42: ; preds = %bb1.i.i.i41, %bb.i.i.i40
+ store %struct.btQuadWord* null, %struct.btQuadWord** %20, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit44
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit44: ; preds = %bb2.i.i.i42, %lpad18
+ %26 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %26, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %20, align 4
+ %27 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i41
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %ppad
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit44, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit44 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %29 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %29)
+ to label %invcont8 unwind label %lpad26
+}
+
+; [#uses=1]
+define i8* @_ZNK18btMultiSphereShape9serializeEPvP12btSerializer(%struct.btMultiSphereShape* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK16btCollisionShape9serializeEPvP12btSerializer(%struct.btCollisionShape* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds i8* %dataBuffer, i32 28 ; [#uses=1]
+ %scevgep.i.i = getelementptr %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i = bitcast i8* %2 to float* ; [#uses=1]
+ %3 = load float* %scevgep.i.i, align 4 ; [#uses=1]
+ store float %3, float* %scevgep4.i.i, align 4
+ %scevgep.1.i.i = getelementptr %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i = getelementptr i8* %dataBuffer, i32 32 ; [#uses=1]
+ %4 = bitcast i8* %scevgep4.1.i.i to float* ; [#uses=1]
+ %5 = load float* %scevgep.1.i.i, align 4 ; [#uses=1]
+ store float %5, float* %4, align 4
+ %scevgep.2.i.i = getelementptr %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i = getelementptr i8* %dataBuffer, i32 36 ; [#uses=1]
+ %6 = bitcast i8* %scevgep4.2.i.i to float* ; [#uses=1]
+ %7 = load float* %scevgep.2.i.i, align 4 ; [#uses=1]
+ store float %7, float* %6, align 4
+ %scevgep.3.i.i = getelementptr %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i = getelementptr i8* %dataBuffer, i32 40 ; [#uses=1]
+ %8 = bitcast i8* %scevgep4.3.i.i to float* ; [#uses=1]
+ %9 = load float* %scevgep.3.i.i, align 4 ; [#uses=1]
+ store float %9, float* %8, align 4
+ %10 = getelementptr inbounds i8* %dataBuffer, i32 12 ; [#uses=1]
+ %scevgep.i2.i = getelementptr %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i3.i = bitcast i8* %10 to float* ; [#uses=1]
+ %11 = load float* %scevgep.i2.i, align 4 ; [#uses=1]
+ store float %11, float* %scevgep4.i3.i, align 4
+ %scevgep.1.i4.i = getelementptr %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i5.i = getelementptr i8* %dataBuffer, i32 16 ; [#uses=1]
+ %12 = bitcast i8* %scevgep4.1.i5.i to float* ; [#uses=1]
+ %13 = load float* %scevgep.1.i4.i, align 4 ; [#uses=1]
+ store float %13, float* %12, align 4
+ %scevgep.2.i6.i = getelementptr %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i7.i = getelementptr i8* %dataBuffer, i32 20 ; [#uses=1]
+ %14 = bitcast i8* %scevgep4.2.i7.i to float* ; [#uses=1]
+ %15 = load float* %scevgep.2.i6.i, align 4 ; [#uses=1]
+ store float %15, float* %14, align 4
+ %scevgep.3.i8.i = getelementptr %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i9.i = getelementptr i8* %dataBuffer, i32 24 ; [#uses=1]
+ %16 = bitcast i8* %scevgep4.3.i9.i to float* ; [#uses=1]
+ %17 = load float* %scevgep.3.i8.i, align 4 ; [#uses=1]
+ store float %17, float* %16, align 4
+ %18 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %21 = bitcast i8* %20 to float* ; [#uses=1]
+ store float %19, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %23 = load i32* %22, align 4 ; [#uses=6]
+ %24 = icmp eq i32 %23, 0 ; [#uses=1]
+ br i1 %24, label %bb7, label %bb3
+
+bb3: ; preds = %entry
+ %25 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=3]
+ %26 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds i32 (...)** %26, i32 7 ; [#uses=1]
+ %28 = load i32 (...)** %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %30 = load %struct.btQuadWord** %29, align 4 ; [#uses=1]
+ %31 = bitcast %struct.btQuadWord* %30 to i8* ; [#uses=1]
+ %32 = bitcast i32 (...)* %28 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %33 = tail call i8* %32(%struct.btActionInterface* %serializer, i8* %31) ; [#uses=1]
+ %34 = bitcast i8* %33 to %struct.btPlane* ; [#uses=1]
+ %35 = getelementptr inbounds i8* %dataBuffer, i32 52 ; [#uses=1]
+ %36 = bitcast i8* %35 to %struct.btPlane** ; [#uses=1]
+ store %struct.btPlane* %34, %struct.btPlane** %36, align 4
+ %37 = getelementptr inbounds i8* %dataBuffer, i32 56 ; [#uses=1]
+ %38 = bitcast i8* %37 to i32* ; [#uses=1]
+ store i32 %23, i32* %38, align 4
+ %39 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %40 = getelementptr inbounds i32 (...)** %39, i32 4 ; [#uses=1]
+ %41 = load i32 (...)** %40, align 4 ; [#uses=1]
+ %42 = bitcast i32 (...)* %41 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %43 = tail call %struct.btChunk* %42(%struct.btActionInterface* %serializer, i32 20, i32 %23) ; [#uses=2]
+ %44 = icmp sgt i32 %23, 0 ; [#uses=1]
+ br i1 %44, label %bb.nph, label %bb6
+
+bb.nph: ; preds = %bb3
+ %45 = getelementptr inbounds %struct.btChunk* %43, i32 0, i32 2 ; [#uses=1]
+ %46 = load i8** %45, align 4 ; [#uses=5]
+ %47 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb4, %bb.nph
+ %i.010 = phi i32 [ 0, %bb.nph ], [ %55, %bb4 ] ; [#uses=7]
+ %tmp = mul i32 %i.010, 20 ; [#uses=5]
+ %tmp16 = add i32 %tmp, 16 ; [#uses=1]
+ %scevgep17 = getelementptr i8* %46, i32 %tmp16 ; [#uses=1]
+ %scevgep1718 = bitcast i8* %scevgep17 to float* ; [#uses=1]
+ %scevgep19 = getelementptr i8* %46, i32 %tmp ; [#uses=1]
+ %scevgep4.i = bitcast i8* %scevgep19 to float* ; [#uses=1]
+ %tmp21 = add i32 %tmp, 4 ; [#uses=1]
+ %scevgep22 = getelementptr i8* %46, i32 %tmp21 ; [#uses=1]
+ %scevgep4.1.i = bitcast i8* %scevgep22 to float* ; [#uses=1]
+ %tmp24 = add i32 %tmp, 8 ; [#uses=1]
+ %scevgep25 = getelementptr i8* %46, i32 %tmp24 ; [#uses=1]
+ %scevgep4.2.i = bitcast i8* %scevgep25 to float* ; [#uses=1]
+ %tmp27 = add i32 %tmp, 12 ; [#uses=1]
+ %scevgep28 = getelementptr i8* %46, i32 %tmp27 ; [#uses=1]
+ %scevgep4.3.i = bitcast i8* %scevgep28 to float* ; [#uses=1]
+ %48 = load %struct.btQuadWord** %29, align 4 ; [#uses=4]
+ %scevgep.i = getelementptr inbounds %struct.btQuadWord* %48, i32 %i.010, i32 0, i32 0 ; [#uses=1]
+ %49 = load float* %scevgep.i, align 4 ; [#uses=1]
+ store float %49, float* %scevgep4.i, align 4
+ %scevgep.1.i = getelementptr %struct.btQuadWord* %48, i32 %i.010, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %scevgep.1.i, align 4 ; [#uses=1]
+ store float %50, float* %scevgep4.1.i, align 4
+ %scevgep.2.i = getelementptr %struct.btQuadWord* %48, i32 %i.010, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %scevgep.2.i, align 4 ; [#uses=1]
+ store float %51, float* %scevgep4.2.i, align 4
+ %scevgep.3.i = getelementptr %struct.btQuadWord* %48, i32 %i.010, i32 0, i32 3 ; [#uses=1]
+ %52 = load float* %scevgep.3.i, align 4 ; [#uses=1]
+ store float %52, float* %scevgep4.3.i, align 4
+ %53 = load float** %47, align 4 ; [#uses=1]
+ %scevgep = getelementptr float* %53, i32 %i.010 ; [#uses=1]
+ %54 = load float* %scevgep, align 4 ; [#uses=1]
+ store float %54, float* %scevgep1718, align 4
+ %55 = add nsw i32 %i.010, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %55, %23 ; [#uses=1]
+ br i1 %exitcond, label %bb6, label %bb4
+
+bb6: ; preds = %bb4, %bb3
+ %56 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds i32 (...)** %56, i32 5 ; [#uses=1]
+ %58 = load i32 (...)** %57, align 4 ; [#uses=1]
+ %59 = load %struct.btQuadWord** %29, align 4 ; [#uses=1]
+ %60 = bitcast %struct.btQuadWord* %59 to i8* ; [#uses=1]
+ %61 = bitcast i32 (...)* %58 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ tail call void %61(%struct.btActionInterface* %serializer, %struct.btChunk* %43, i8* getelementptr inbounds ([20 x i8]* @.str297, i32 0, i32 0), i32 1497453121, i8* %60)
+ ret i8* getelementptr inbounds ([23 x i8]* @.str398, i32 0, i32 0)
+
+bb7: ; preds = %entry
+ %62 = getelementptr inbounds i8* %dataBuffer, i32 52 ; [#uses=1]
+ %63 = bitcast i8* %62 to %struct.btPlane** ; [#uses=1]
+ store %struct.btPlane* null, %struct.btPlane** %63, align 4
+ %64 = getelementptr inbounds i8* %dataBuffer, i32 56 ; [#uses=1]
+ %65 = bitcast i8* %64 to i32* ; [#uses=1]
+ store i32 %23, i32* %65, align 4
+ ret i8* getelementptr inbounds ([23 x i8]* @.str398, i32 0, i32 0)
+}
+
+; [#uses=1]
+define void @_ZNK18btMultiSphereShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btMultiSphereShape* %this, %struct.btQuadWord* nocapture %vec0) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=3]
+ %10 = fmul float %5, %5 ; [#uses=1]
+ %11 = fmul float %7, %7 ; [#uses=1]
+ %12 = fadd float %10, %11 ; [#uses=1]
+ %13 = fmul float %9, %9 ; [#uses=1]
+ %14 = fadd float %12, %13 ; [#uses=2]
+ %15 = fcmp olt float %14, 0x3D10000000000000 ; [#uses=1]
+ br i1 %15, label %bb2, label %bb1
+
+bb1: ; preds = %entry
+ %16 = tail call float @sqrtf(float %14) nounwind readonly ; [#uses=1]
+ %17 = fdiv float 1.000000e+00, %16 ; [#uses=3]
+ %18 = fmul float %5, %17 ; [#uses=1]
+ %19 = fmul float %7, %17 ; [#uses=1]
+ %20 = fmul float %9, %17 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb1, %entry
+ %vec.0.0.0 = phi float [ %18, %bb1 ], [ 1.000000e+00, %entry ] ; [#uses=3]
+ %vec.0.1.0 = phi float [ %19, %bb1 ], [ 0.000000e+00, %entry ] ; [#uses=3]
+ %vec.0.2.0 = phi float [ %20, %bb1 ], [ 0.000000e+00, %entry ] ; [#uses=3]
+ %21 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %22 = load i32* %21, align 4 ; [#uses=2]
+ %23 = icmp sgt i32 %22, 0 ; [#uses=1]
+ br i1 %23, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb2
+ %24 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %26 = load float** %24, align 4 ; [#uses=1]
+ %27 = load %struct.btQuadWord** %25, align 4 ; [#uses=3]
+ %28 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btMultiSphereShape* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb5, %bb.nph
+ %i.041 = phi i32 [ 0, %bb.nph ], [ %66, %bb5 ] ; [#uses=5]
+ %maxDot.140 = phi float [ 0xC3ABC16D60000000, %bb.nph ], [ %maxDot.0, %bb5 ] ; [#uses=2]
+ %rad.043 = getelementptr float* %26, i32 %i.041 ; [#uses=1]
+ %scevgep = getelementptr %struct.btQuadWord* %27, i32 %i.041, i32 0, i32 2 ; [#uses=1]
+ %scevgep44 = getelementptr %struct.btQuadWord* %27, i32 %i.041, i32 0, i32 1 ; [#uses=1]
+ %scevgep4546 = getelementptr inbounds %struct.btQuadWord* %27, i32 %i.041, i32 0, i32 0 ; [#uses=1]
+ %33 = load i32 (...)*** %28, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds i32 (...)** %33, i32 11 ; [#uses=1]
+ %35 = load i32 (...)** %34, align 4 ; [#uses=1]
+ %36 = bitcast i32 (...)* %35 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %37 = tail call float %36(%struct.btConvexInternalShape* %29) ; [#uses=3]
+ %38 = fmul float %vec.0.2.0, %37 ; [#uses=1]
+ %39 = fmul float %vec.0.1.0, %37 ; [#uses=1]
+ %40 = fmul float %vec.0.0.0, %37 ; [#uses=1]
+ %41 = load float* %30, align 4 ; [#uses=1]
+ %42 = fmul float %vec.0.2.0, %41 ; [#uses=1]
+ %43 = load float* %31, align 4 ; [#uses=1]
+ %44 = fmul float %vec.0.1.0, %43 ; [#uses=1]
+ %45 = load float* %32, align 4 ; [#uses=1]
+ %46 = fmul float %vec.0.0.0, %45 ; [#uses=1]
+ %47 = load float* %rad.043, align 4 ; [#uses=3]
+ %48 = fmul float %42, %47 ; [#uses=1]
+ %49 = fmul float %44, %47 ; [#uses=1]
+ %50 = fmul float %46, %47 ; [#uses=1]
+ %51 = load float* %scevgep, align 4 ; [#uses=1]
+ %52 = fadd float %51, %48 ; [#uses=1]
+ %53 = load float* %scevgep44, align 4 ; [#uses=1]
+ %54 = fadd float %53, %49 ; [#uses=1]
+ %55 = load float* %scevgep4546, align 4 ; [#uses=1]
+ %56 = fadd float %55, %50 ; [#uses=1]
+ %57 = fsub float %52, %38 ; [#uses=2]
+ %58 = fsub float %54, %39 ; [#uses=2]
+ %59 = fsub float %56, %40 ; [#uses=2]
+ %60 = fmul float %vec.0.0.0, %59 ; [#uses=1]
+ %61 = fmul float %vec.0.1.0, %58 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=1]
+ %63 = fmul float %vec.0.2.0, %57 ; [#uses=1]
+ %64 = fadd float %62, %63 ; [#uses=2]
+ %65 = fcmp ogt float %64, %maxDot.140 ; [#uses=1]
+ br i1 %65, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ store float %59, float* %0, align 4
+ store float %58, float* %1, align 4
+ store float %57, float* %2, align 4
+ store float 0.000000e+00, float* %3, align 4
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ %maxDot.0 = phi float [ %64, %bb4 ], [ %maxDot.140, %bb3 ] ; [#uses=1]
+ %66 = add nsw i32 %i.041, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %66, %22 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb3
+
+return: ; preds = %bb5, %bb2
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIfE6resizeEiRKf(%"struct.btAlignedObjectArray<float>"* nocapture %this, i32 %newsize, float* nocapture %fillData) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<float>"* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = icmp sgt i32 %1, %newsize ; [#uses=1]
+ br i1 %2, label %bb12, label %bb3
+
+bb3: ; preds = %entry
+ %3 = icmp slt i32 %1, %newsize ; [#uses=2]
+ br i1 %3, label %bb4, label %bb12
+
+bb4: ; preds = %bb3
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<float>"* %this, i32 0, i32 2 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp slt i32 %5, %newsize ; [#uses=1]
+ br i1 %6, label %bb.i, label %bb.nph
+
+bb.i: ; preds = %bb4
+ %7 = icmp eq i32 %newsize, 0 ; [#uses=1]
+ br i1 %7, label %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %8 = shl i32 %newsize, 2 ; [#uses=1]
+ %9 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %8, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %9 to float* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %10 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %11 = phi float* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=2]
+ %12 = icmp sgt i32 %10, 0 ; [#uses=1]
+ br i1 %12, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<float>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=3]
+ %scevgep.i.i = getelementptr float* %11, i32 %indvar.i.i ; [#uses=2]
+ %14 = icmp eq float* %scevgep.i.i, null ; [#uses=1]
+ br i1 %14, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %15 = load float** %13, align 4 ; [#uses=1]
+ %scevgep8.i.i = getelementptr float* %15, i32 %indvar.i.i ; [#uses=1]
+ %16 = load float* %scevgep8.i.i, align 4 ; [#uses=1]
+ store float %16, float* %scevgep.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond19 = icmp eq i32 %indvar.next.i.i, %10 ; [#uses=1]
+ br i1 %exitcond19, label %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i
+ %17 = getelementptr inbounds %"struct.btAlignedObjectArray<float>"* %this, i32 0, i32 3 ; [#uses=3]
+ %18 = load float** %17, align 4 ; [#uses=2]
+ %19 = icmp eq float* %18, null ; [#uses=1]
+ br i1 %19, label %bb11.preheader, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i
+ %20 = getelementptr inbounds %"struct.btAlignedObjectArray<float>"* %this, i32 0, i32 4 ; [#uses=1]
+ %21 = load i8* %20, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %21, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %22 = bitcast float* %18 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %22)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store float* null, float** %17, align 4
+ br label %bb11.preheader
+
+bb11.preheader: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i
+ %23 = getelementptr inbounds %"struct.btAlignedObjectArray<float>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %23, align 4
+ store float* %11, float** %17, align 4
+ store i32 %newsize, i32* %4, align 4
+ br i1 %3, label %bb.nph, label %bb12
+
+bb.nph: ; preds = %bb11.preheader, %bb4
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<float>"* %this, i32 0, i32 3 ; [#uses=1]
+ %tmp = sub i32 %newsize, %1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb10, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb10 ] ; [#uses=2]
+ %tmp17 = add i32 %1, %indvar ; [#uses=1]
+ %25 = load float** %24, align 4 ; [#uses=1]
+ %scevgep18 = getelementptr float* %25, i32 %tmp17 ; [#uses=2]
+ %26 = icmp eq float* %scevgep18, null ; [#uses=1]
+ br i1 %26, label %bb10, label %bb8
+
+bb8: ; preds = %bb7
+ %27 = load float* %fillData, align 4 ; [#uses=1]
+ store float %27, float* %scevgep18, align 4
+ br label %bb10
+
+bb10: ; preds = %bb8, %bb7
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; [#uses=1]
+ br i1 %exitcond, label %bb12, label %bb7
+
+bb12: ; preds = %bb10, %bb11.preheader, %bb3, %entry
+ store i32 %newsize, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btMultiSphereShapeC1EPK9btVector3PKfi(%struct.btMultiSphereShape* %this, %struct.btQuadWord* nocapture %positions, float* nocapture %radi, i32 %numSpheres) align 2 {
+entry:
+ tail call void @_ZN18btMultiSphereShapeC2EPK9btVector3PKfi(%struct.btMultiSphereShape* %this, %struct.btQuadWord* %positions, float* %radi, i32 %numSpheres)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN14btOptimizedBvhC2Ev(%struct.btOptimizedBvh* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btQuantizedBvhC2Ev(%struct.btQuantizedBvh* %0)
+ %1 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([10 x i32 (...)*]* @_ZTV14btOptimizedBvh, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD1Ev(%struct..0NodeTriangleCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0NodeTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0NodeTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD0Ev(%struct..0NodeTriangleCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0NodeTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0NodeTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct..0NodeTriangleCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallback28internalProcessTriangleIndexEPS2_ii(%struct..0NodeTriangleCallback* nocapture %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=4]
+ %2 = fcmp olt float %1, 0x43ABC16D60000000 ; [#uses=1]
+ %aabbMin.0.0.2 = select i1 %2, float %1, float 0x43ABC16D60000000 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=4]
+ %5 = fcmp olt float %4, 0x43ABC16D60000000 ; [#uses=1]
+ %aabbMin.0.1.2 = select i1 %5, float %4, float 0x43ABC16D60000000 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=4]
+ %8 = fcmp olt float %7, 0x43ABC16D60000000 ; [#uses=1]
+ %aabbMin.0.2.2 = select i1 %8, float %7, float 0x43ABC16D60000000 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=4]
+ %11 = fcmp olt float %10, 0.000000e+00 ; [#uses=1]
+ %aabbMin.0.3.2 = select i1 %11, float %10, float 0.000000e+00 ; [#uses=2]
+ %12 = fcmp ogt float %1, 0xC3ABC16D60000000 ; [#uses=1]
+ %aabbMax.0.0.2 = select i1 %12, float %1, float 0xC3ABC16D60000000 ; [#uses=2]
+ %13 = fcmp ogt float %4, 0xC3ABC16D60000000 ; [#uses=1]
+ %aabbMax.0.1.2 = select i1 %13, float %4, float 0xC3ABC16D60000000 ; [#uses=2]
+ %14 = fcmp ogt float %7, 0xC3ABC16D60000000 ; [#uses=1]
+ %aabbMax.0.2.2 = select i1 %14, float %7, float 0xC3ABC16D60000000 ; [#uses=2]
+ %15 = fcmp ogt float %10, 0.000000e+00 ; [#uses=1]
+ %aabbMax.0.3.2 = select i1 %15, float %10, float 0.000000e+00 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=4]
+ %18 = fcmp olt float %17, %aabbMin.0.0.2 ; [#uses=1]
+ %aabbMin.0.0.1 = select i1 %18, float %17, float %aabbMin.0.0.2 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=4]
+ %21 = fcmp olt float %20, %aabbMin.0.1.2 ; [#uses=1]
+ %aabbMin.0.1.1 = select i1 %21, float %20, float %aabbMin.0.1.2 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=4]
+ %24 = fcmp olt float %23, %aabbMin.0.2.2 ; [#uses=1]
+ %aabbMin.0.2.1 = select i1 %24, float %23, float %aabbMin.0.2.2 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 3 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=4]
+ %27 = fcmp olt float %26, %aabbMin.0.3.2 ; [#uses=1]
+ %aabbMin.0.3.1 = select i1 %27, float %26, float %aabbMin.0.3.2 ; [#uses=2]
+ %28 = fcmp olt float %aabbMax.0.0.2, %17 ; [#uses=1]
+ %aabbMax.0.0.1 = select i1 %28, float %17, float %aabbMax.0.0.2 ; [#uses=2]
+ %29 = fcmp olt float %aabbMax.0.1.2, %20 ; [#uses=1]
+ %aabbMax.0.1.1 = select i1 %29, float %20, float %aabbMax.0.1.2 ; [#uses=2]
+ %30 = fcmp olt float %aabbMax.0.2.2, %23 ; [#uses=1]
+ %aabbMax.0.2.1 = select i1 %30, float %23, float %aabbMax.0.2.2 ; [#uses=2]
+ %31 = fcmp olt float %aabbMax.0.3.2, %26 ; [#uses=1]
+ %aabbMax.0.3.1 = select i1 %31, float %26, float %aabbMax.0.3.2 ; [#uses=2]
+ %32 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=4]
+ %34 = fcmp olt float %33, %aabbMin.0.0.1 ; [#uses=1]
+ %aabbMin.0.0.0 = select i1 %34, float %33, float %aabbMin.0.0.1 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=4]
+ %37 = fcmp olt float %36, %aabbMin.0.1.1 ; [#uses=1]
+ %aabbMin.0.1.0 = select i1 %37, float %36, float %aabbMin.0.1.1 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=4]
+ %40 = fcmp olt float %39, %aabbMin.0.2.1 ; [#uses=1]
+ %aabbMin.0.2.0 = select i1 %40, float %39, float %aabbMin.0.2.1 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 3 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=4]
+ %43 = fcmp olt float %42, %aabbMin.0.3.1 ; [#uses=1]
+ %aabbMin.0.3.0 = select i1 %43, float %42, float %aabbMin.0.3.1 ; [#uses=1]
+ %44 = fcmp olt float %aabbMax.0.0.1, %33 ; [#uses=1]
+ %aabbMax.0.0.0 = select i1 %44, float %33, float %aabbMax.0.0.1 ; [#uses=1]
+ %45 = fcmp olt float %aabbMax.0.1.1, %36 ; [#uses=1]
+ %aabbMax.0.1.0 = select i1 %45, float %36, float %aabbMax.0.1.1 ; [#uses=1]
+ %46 = fcmp olt float %aabbMax.0.2.1, %39 ; [#uses=1]
+ %aabbMax.0.2.0 = select i1 %46, float %39, float %aabbMax.0.2.1 ; [#uses=1]
+ %47 = fcmp olt float %aabbMax.0.3.1, %42 ; [#uses=1]
+ %aabbMax.0.3.0 = select i1 %47, float %42, float %aabbMax.0.3.1 ; [#uses=1]
+ %48 = getelementptr inbounds %struct..0NodeTriangleCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %49 = load %struct.NodeArray** %48, align 4 ; [#uses=7]
+ %50 = getelementptr inbounds %struct.NodeArray* %49, i32 0, i32 1 ; [#uses=5]
+ %51 = load i32* %50, align 4 ; [#uses=6]
+ %52 = getelementptr inbounds %struct.NodeArray* %49, i32 0, i32 2 ; [#uses=2]
+ %53 = load i32* %52, align 4 ; [#uses=2]
+ %54 = icmp eq i32 %53, %51 ; [#uses=1]
+ br i1 %54, label %bb.i, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE9push_backERKS0_.exit
+
+bb.i: ; preds = %entry
+ %55 = icmp eq i32 %51, 0 ; [#uses=1]
+ %56 = shl i32 %51, 1 ; [#uses=1]
+ %iftmp.196.0.i.i = select i1 %55, i32 1, i32 %56 ; [#uses=4]
+ %57 = icmp slt i32 %53, %iftmp.196.0.i.i ; [#uses=1]
+ br i1 %57, label %bb.i.i, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE9push_backERKS0_.exit
+
+bb.i.i: ; preds = %bb.i
+ %58 = icmp eq i32 %iftmp.196.0.i.i, 0 ; [#uses=1]
+ br i1 %58, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %59 = shl i32 %iftmp.196.0.i.i, 6 ; [#uses=1]
+ %60 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %59, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %60 to %struct.btOptimizedBvhNode* ; [#uses=1]
+ %.pre.i = load i32* %50, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %61 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %51, %bb.i.i ] ; [#uses=2]
+ %62 = phi %struct.btOptimizedBvhNode* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %63 = icmp sgt i32 %61, 0 ; [#uses=1]
+ br i1 %63, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i
+ %64 = getelementptr inbounds %struct.NodeArray* %49, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb.i4.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb.i4.i.i ] ; [#uses=3]
+ %scevgep85 = getelementptr %struct.btOptimizedBvhNode* %62, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep5.i.i.i = bitcast %struct.btOptimizedBvhNode* %scevgep85 to i8* ; [#uses=1]
+ %65 = load %struct.btOptimizedBvhNode** %64, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btOptimizedBvhNode* %65, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep67.i.i.i = bitcast %struct.btOptimizedBvhNode* %scevgep to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep5.i.i.i, i8* %scevgep67.i.i.i, i32 64, i32 4, i1 false) nounwind
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %61 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i: ; preds = %bb.i4.i.i, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i
+ %66 = getelementptr inbounds %struct.NodeArray* %49, i32 0, i32 3 ; [#uses=3]
+ %67 = load %struct.btOptimizedBvhNode** %66, align 4 ; [#uses=2]
+ %68 = icmp eq %struct.btOptimizedBvhNode* %67, null ; [#uses=1]
+ br i1 %68, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i
+ %69 = getelementptr inbounds %struct.NodeArray* %49, i32 0, i32 4 ; [#uses=1]
+ %70 = load i8* %69, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %70, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %71 = bitcast %struct.btOptimizedBvhNode* %67 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %71)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %66, align 4
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i
+ %72 = getelementptr inbounds %struct.NodeArray* %49, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %72, align 4
+ store %struct.btOptimizedBvhNode* %62, %struct.btOptimizedBvhNode** %66, align 4
+ store i32 %iftmp.196.0.i.i, i32* %52, align 4
+ %.pre5.i = load i32* %50, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE9push_backERKS0_.exit
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE9push_backERKS0_.exit: ; preds = %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE10deallocateEv.exit.i.i, %bb.i, %entry
+ %73 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE10deallocateEv.exit.i.i ], [ %51, %entry ], [ %51, %bb.i ] ; [#uses=11]
+ %74 = getelementptr inbounds %struct.NodeArray* %49, i32 0, i32 3 ; [#uses=1]
+ %75 = load %struct.btOptimizedBvhNode** %74, align 4 ; [#uses=11]
+ %.0 = getelementptr inbounds %struct.btOptimizedBvhNode* %75, i32 %73, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %aabbMin.0.0.0, float* %.0, align 4
+ %.178 = getelementptr inbounds %struct.btOptimizedBvhNode* %75, i32 %73, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %aabbMin.0.1.0, float* %.178, align 4
+ %.280 = getelementptr inbounds %struct.btOptimizedBvhNode* %75, i32 %73, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %aabbMin.0.2.0, float* %.280, align 4
+ %.382 = getelementptr inbounds %struct.btOptimizedBvhNode* %75, i32 %73, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %aabbMin.0.3.0, float* %.382, align 4
+ %.169.0 = getelementptr inbounds %struct.btOptimizedBvhNode* %75, i32 %73, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %aabbMax.0.0.0, float* %.169.0, align 4
+ %.169.1 = getelementptr inbounds %struct.btOptimizedBvhNode* %75, i32 %73, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %aabbMax.0.1.0, float* %.169.1, align 4
+ %.169.2 = getelementptr inbounds %struct.btOptimizedBvhNode* %75, i32 %73, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %aabbMax.0.2.0, float* %.169.2, align 4
+ %.169.3 = getelementptr inbounds %struct.btOptimizedBvhNode* %75, i32 %73, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %aabbMax.0.3.0, float* %.169.3, align 4
+ %.2 = getelementptr inbounds %struct.btOptimizedBvhNode* %75, i32 %73, i32 2 ; [#uses=1]
+ store i32 -1, i32* %.2, align 4
+ %.3 = getelementptr inbounds %struct.btOptimizedBvhNode* %75, i32 %73, i32 3 ; [#uses=1]
+ store i32 %partId, i32* %.3, align 4
+ %.4 = getelementptr inbounds %struct.btOptimizedBvhNode* %75, i32 %73, i32 4 ; [#uses=1]
+ store i32 %triangleIndex, i32* %.4, align 4
+ %76 = load i32* %50, align 4 ; [#uses=1]
+ %77 = add nsw i32 %76, 1 ; [#uses=1]
+ store i32 %77, i32* %50, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD1Ev(%struct..1QuantizedNodeTriangleCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1QuantizedNodeTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..1QuantizedNodeTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD0Ev(%struct..1QuantizedNodeTriangleCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1QuantizedNodeTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..1QuantizedNodeTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct..1QuantizedNodeTriangleCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallback28internalProcessTriangleIndexEPS2_ii(%struct..1QuantizedNodeTriangleCallback* nocapture %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=4]
+ %2 = fcmp olt float %1, 0x43ABC16D60000000 ; [#uses=1]
+ %aabbMin.0.0.3 = select i1 %2, float %1, float 0x43ABC16D60000000 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=4]
+ %5 = fcmp olt float %4, 0x43ABC16D60000000 ; [#uses=1]
+ %aabbMin.0.1.3 = select i1 %5, float %4, float 0x43ABC16D60000000 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=4]
+ %8 = fcmp olt float %7, 0x43ABC16D60000000 ; [#uses=1]
+ %aabbMin.0.2.3 = select i1 %8, float %7, float 0x43ABC16D60000000 ; [#uses=2]
+ %9 = fcmp ogt float %1, 0xC3ABC16D60000000 ; [#uses=1]
+ %aabbMax.0.0.3 = select i1 %9, float %1, float 0xC3ABC16D60000000 ; [#uses=2]
+ %10 = fcmp ogt float %4, 0xC3ABC16D60000000 ; [#uses=1]
+ %aabbMax.0.1.3 = select i1 %10, float %4, float 0xC3ABC16D60000000 ; [#uses=2]
+ %11 = fcmp ogt float %7, 0xC3ABC16D60000000 ; [#uses=1]
+ %aabbMax.0.2.3 = select i1 %11, float %7, float 0xC3ABC16D60000000 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=4]
+ %14 = fcmp olt float %13, %aabbMin.0.0.3 ; [#uses=1]
+ %aabbMin.0.0.2 = select i1 %14, float %13, float %aabbMin.0.0.3 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=4]
+ %17 = fcmp olt float %16, %aabbMin.0.1.3 ; [#uses=1]
+ %aabbMin.0.1.2 = select i1 %17, float %16, float %aabbMin.0.1.3 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=4]
+ %20 = fcmp olt float %19, %aabbMin.0.2.3 ; [#uses=1]
+ %aabbMin.0.2.2 = select i1 %20, float %19, float %aabbMin.0.2.3 ; [#uses=2]
+ %21 = fcmp olt float %aabbMax.0.0.3, %13 ; [#uses=1]
+ %aabbMax.0.0.2 = select i1 %21, float %13, float %aabbMax.0.0.3 ; [#uses=2]
+ %22 = fcmp olt float %aabbMax.0.1.3, %16 ; [#uses=1]
+ %aabbMax.0.1.2 = select i1 %22, float %16, float %aabbMax.0.1.3 ; [#uses=2]
+ %23 = fcmp olt float %aabbMax.0.2.3, %19 ; [#uses=1]
+ %aabbMax.0.2.2 = select i1 %23, float %19, float %aabbMax.0.2.3 ; [#uses=2]
+ %24 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=4]
+ %26 = fcmp olt float %25, %aabbMin.0.0.2 ; [#uses=1]
+ %aabbMin.0.0.1 = select i1 %26, float %25, float %aabbMin.0.0.2 ; [#uses=3]
+ %27 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=4]
+ %29 = fcmp olt float %28, %aabbMin.0.1.2 ; [#uses=1]
+ %aabbMin.0.1.1 = select i1 %29, float %28, float %aabbMin.0.1.2 ; [#uses=3]
+ %30 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=4]
+ %32 = fcmp olt float %31, %aabbMin.0.2.2 ; [#uses=1]
+ %aabbMin.0.2.1 = select i1 %32, float %31, float %aabbMin.0.2.2 ; [#uses=3]
+ %33 = fcmp olt float %aabbMax.0.0.2, %25 ; [#uses=1]
+ %aabbMax.0.0.1 = select i1 %33, float %25, float %aabbMax.0.0.2 ; [#uses=3]
+ %34 = fcmp olt float %aabbMax.0.1.2, %28 ; [#uses=1]
+ %aabbMax.0.1.1 = select i1 %34, float %28, float %aabbMax.0.1.2 ; [#uses=3]
+ %35 = fcmp olt float %aabbMax.0.2.2, %31 ; [#uses=1]
+ %aabbMax.0.2.1 = select i1 %35, float %31, float %aabbMax.0.2.2 ; [#uses=3]
+ %36 = fsub float %aabbMax.0.0.1, %aabbMin.0.0.1 ; [#uses=1]
+ %37 = fcmp olt float %36, 0x3F60624DE0000000 ; [#uses=1]
+ br i1 %37, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %38 = fadd float %aabbMax.0.0.1, 0x3F50624DE0000000 ; [#uses=1]
+ %39 = fadd float %aabbMin.0.0.1, 0xBF50624DE0000000 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %aabbMin.0.0.0 = phi float [ %39, %bb ], [ %aabbMin.0.0.1, %entry ] ; [#uses=1]
+ %aabbMax.0.0.0 = phi float [ %38, %bb ], [ %aabbMax.0.0.1, %entry ] ; [#uses=1]
+ %40 = fsub float %aabbMax.0.1.1, %aabbMin.0.1.1 ; [#uses=1]
+ %41 = fcmp olt float %40, 0x3F60624DE0000000 ; [#uses=1]
+ br i1 %41, label %bb3, label %bb4
+
+bb3: ; preds = %bb1
+ %42 = fadd float %aabbMax.0.1.1, 0x3F50624DE0000000 ; [#uses=1]
+ %43 = fadd float %aabbMin.0.1.1, 0xBF50624DE0000000 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb1
+ %aabbMin.0.1.0 = phi float [ %43, %bb3 ], [ %aabbMin.0.1.1, %bb1 ] ; [#uses=1]
+ %aabbMax.0.1.0 = phi float [ %42, %bb3 ], [ %aabbMax.0.1.1, %bb1 ] ; [#uses=1]
+ %44 = fsub float %aabbMax.0.2.1, %aabbMin.0.2.1 ; [#uses=1]
+ %45 = fcmp olt float %44, 0x3F60624DE0000000 ; [#uses=1]
+ br i1 %45, label %bb6, label %bb7
+
+bb6: ; preds = %bb4
+ %46 = fadd float %aabbMax.0.2.1, 0x3F50624DE0000000 ; [#uses=1]
+ %47 = fadd float %aabbMin.0.2.1, 0xBF50624DE0000000 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb4
+ %aabbMin.0.2.0 = phi float [ %47, %bb6 ], [ %aabbMin.0.2.1, %bb4 ] ; [#uses=1]
+ %aabbMax.0.2.0 = phi float [ %46, %bb6 ], [ %aabbMax.0.2.1, %bb4 ] ; [#uses=1]
+ %48 = getelementptr inbounds %struct..1QuantizedNodeTriangleCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %49 = load %struct.btQuantizedBvh** %48, align 4 ; [#uses=6]
+ %50 = getelementptr inbounds %struct.btQuantizedBvh* %49, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=2]
+ %52 = fsub float %aabbMin.0.2.0, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btQuantizedBvh* %49, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=2]
+ %55 = fsub float %aabbMin.0.1.0, %54 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btQuantizedBvh* %49, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=2]
+ %58 = fsub float %aabbMin.0.0.0, %57 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btQuantizedBvh* %49, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=2]
+ %61 = fmul float %52, %60 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btQuantizedBvh* %49, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=2]
+ %64 = fmul float %55, %63 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btQuantizedBvh* %49, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=2]
+ %67 = fmul float %58, %66 ; [#uses=1]
+ %68 = fptoui float %67 to i16 ; [#uses=1]
+ %69 = and i16 %68, -2 ; [#uses=1]
+ %70 = fptoui float %64 to i16 ; [#uses=1]
+ %71 = and i16 %70, -2 ; [#uses=1]
+ %72 = fptoui float %61 to i16 ; [#uses=1]
+ %73 = and i16 %72, -2 ; [#uses=1]
+ %74 = fsub float %aabbMax.0.2.0, %51 ; [#uses=1]
+ %75 = fsub float %aabbMax.0.1.0, %54 ; [#uses=1]
+ %76 = fsub float %aabbMax.0.0.0, %57 ; [#uses=1]
+ %77 = fmul float %74, %60 ; [#uses=1]
+ %78 = fmul float %75, %63 ; [#uses=1]
+ %79 = fmul float %76, %66 ; [#uses=1]
+ %80 = fadd float %79, 1.000000e+00 ; [#uses=1]
+ %81 = fptoui float %80 to i16 ; [#uses=1]
+ %82 = or i16 %81, 1 ; [#uses=1]
+ %83 = fadd float %78, 1.000000e+00 ; [#uses=1]
+ %84 = fptoui float %83 to i16 ; [#uses=1]
+ %85 = or i16 %84, 1 ; [#uses=1]
+ %86 = fadd float %77, 1.000000e+00 ; [#uses=1]
+ %87 = fptoui float %86 to i16 ; [#uses=1]
+ %88 = or i16 %87, 1 ; [#uses=1]
+ %89 = shl i32 %partId, 21 ; [#uses=1]
+ %90 = or i32 %89, %triangleIndex ; [#uses=1]
+ %91 = getelementptr inbounds %struct..1QuantizedNodeTriangleCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %92 = load %struct.QuantizedNodeArray** %91, align 4 ; [#uses=4]
+ %93 = getelementptr inbounds %struct.QuantizedNodeArray* %92, i32 0, i32 1 ; [#uses=4]
+ %94 = load i32* %93, align 4 ; [#uses=4]
+ %95 = getelementptr inbounds %struct.QuantizedNodeArray* %92, i32 0, i32 2 ; [#uses=1]
+ %96 = load i32* %95, align 4 ; [#uses=1]
+ %97 = icmp eq i32 %96, %94 ; [#uses=1]
+ br i1 %97, label %bb.i, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE9push_backERKS0_.exit
+
+bb.i: ; preds = %bb7
+ %98 = icmp eq i32 %94, 0 ; [#uses=1]
+ %99 = shl i32 %94, 1 ; [#uses=1]
+ %iftmp.198.0.i.i = select i1 %98, i32 1, i32 %99 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(%struct.QuantizedNodeArray* %92, i32 %iftmp.198.0.i.i) inlinehint
+ %.pre.i = load i32* %93, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE9push_backERKS0_.exit
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE9push_backERKS0_.exit: ; preds = %bb.i, %bb7
+ %100 = phi i32 [ %.pre.i, %bb.i ], [ %94, %bb7 ] ; [#uses=7]
+ %101 = getelementptr inbounds %struct.QuantizedNodeArray* %92, i32 0, i32 3 ; [#uses=1]
+ %102 = load %struct.BT_QUANTIZED_BVH_NODE** %101, align 4 ; [#uses=7]
+ %103 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %102, i32 %100, i32 0, i32 0 ; [#uses=1]
+ store i16 %69, i16* %103, align 4
+ %104 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %102, i32 %100, i32 0, i32 1 ; [#uses=1]
+ store i16 %71, i16* %104, align 2
+ %105 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %102, i32 %100, i32 0, i32 2 ; [#uses=1]
+ store i16 %73, i16* %105, align 4
+ %106 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %102, i32 %100, i32 1, i32 0 ; [#uses=1]
+ store i16 %82, i16* %106, align 2
+ %107 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %102, i32 %100, i32 1, i32 1 ; [#uses=1]
+ store i16 %85, i16* %107, align 2
+ %108 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %102, i32 %100, i32 1, i32 2 ; [#uses=1]
+ store i16 %88, i16* %108, align 2
+ %109 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %102, i32 %100, i32 2 ; [#uses=1]
+ store i32 %90, i32* %109, align 4
+ %110 = load i32* %93, align 4 ; [#uses=1]
+ %111 = add nsw i32 %110, 1 ; [#uses=1]
+ store i32 %111, i32* %93, align 4
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN14btOptimizedBvh14updateBvhNodesEP23btStridingMeshInterfaceiii(%struct.btOptimizedBvh* nocapture %this, %struct.btStridingMeshInterface* %meshInterface, i32 %firstNode, i32 %endNode, i32 %index) align 2 {
+bb32.preheader:
+ %vertexbase = alloca i8*, align 4 ; [#uses=3]
+ %numverts = alloca i32, align 4 ; [#uses=2]
+ %type = alloca i32, align 4 ; [#uses=3]
+ %stride = alloca i32, align 4 ; [#uses=3]
+ %indexbase = alloca i8*, align 4 ; [#uses=3]
+ %indexstride = alloca i32, align 4 ; [#uses=3]
+ %numfaces = alloca i32, align 4 ; [#uses=2]
+ %indicestype = alloca i32, align 4 ; [#uses=3]
+ %triangleVerts = alloca [3 x %struct.btQuadWord], align 8 ; [#uses=13]
+ store i8* null, i8** %vertexbase, align 4
+ store i32 0, i32* %numverts, align 4
+ store i32 2, i32* %type, align 4
+ store i32 0, i32* %stride, align 4
+ store i8* null, i8** %indexbase, align 4
+ store i32 0, i32* %indexstride, align 4
+ store i32 0, i32* %numfaces, align 4
+ store i32 2, i32* %indicestype, align 4
+ %0 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 10, i32 3 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btStridingMeshInterface* %meshInterface, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btStridingMeshInterface* %meshInterface, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btStridingMeshInterface* %meshInterface, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %4 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %11 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btStridingMeshInterface* %meshInterface, i32 0, i32 0 ; [#uses=3]
+ br label %bb32.outer
+
+bb3: ; preds = %bb32
+ %20 = load %struct.BT_QUANTIZED_BVH_NODE** %0, align 4 ; [#uses=27]
+ %scevgep162 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp139, i32 0, i32 -2 ; [#uses=1]
+ %scevgep162163 = bitcast i16* %scevgep162 to i32* ; [#uses=1]
+ %21 = load i32* %scevgep162163, align 4 ; [#uses=1]
+ %toBool = icmp slt i32 %21, 0 ; [#uses=1]
+ br i1 %toBool, label %bb19, label %bb4
+
+bb4: ; preds = %bb3
+ %22 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %i.0, i32 2 ; [#uses=1]
+ %23 = load i32* %22, align 4 ; [#uses=2]
+ %24 = ashr i32 %23, 21 ; [#uses=3]
+ %25 = icmp eq i32 %24, %curNodeSubPart.2.ph ; [#uses=1]
+ br i1 %25, label %bb.nph, label %bb5
+
+bb5: ; preds = %bb4
+ %26 = icmp sgt i32 %curNodeSubPart.2.ph, -1 ; [#uses=1]
+ br i1 %26, label %bb6, label %bb7
+
+bb6: ; preds = %bb5
+ %27 = load i32 (...)*** %19, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds i32 (...)** %27, i32 6 ; [#uses=1]
+ %29 = load i32 (...)** %28, align 4 ; [#uses=1]
+ %30 = bitcast i32 (...)* %29 to void (%struct.btStridingMeshInterface*, i32)* ; [#uses=1]
+ call void %30(%struct.btStridingMeshInterface* %meshInterface, i32 %curNodeSubPart.2.ph)
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5
+ %31 = load i32 (...)*** %19, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds i32 (...)** %31, i32 4 ; [#uses=1]
+ %33 = load i32 (...)** %32, align 4 ; [#uses=1]
+ %34 = bitcast i32 (...)* %33 to void (%struct.btStridingMeshInterface*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* ; [#uses=1]
+ call void %34(%struct.btStridingMeshInterface* %meshInterface, i8** %vertexbase, i32* %numverts, i32* %type, i32* %stride, i8** %indexbase, i32* %indexstride, i32* %numfaces, i32* %indicestype, i32 %24)
+ br label %bb.nph
+
+bb.nph: ; preds = %bb7, %bb4
+ %curNodeSubPart.0 = phi i32 [ %24, %bb7 ], [ %curNodeSubPart.2.ph, %bb4 ] ; [#uses=1]
+ %35 = load i8** %indexbase, align 4 ; [#uses=2]
+ %36 = load i32* %indexstride, align 4 ; [#uses=1]
+ %tmp106 = and i32 %23, 2097151 ; [#uses=1]
+ %tmp107 = mul i32 %36, %tmp106 ; [#uses=2]
+ %tmp108 = add i32 %tmp107, 4 ; [#uses=1]
+ %tmp112 = add i32 %tmp107, 8 ; [#uses=1]
+ br label %bb9
+
+bb9: ; preds = %bb16, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb16 ] ; [#uses=4]
+ %tmp117 = sub i32 2, %indvar ; [#uses=4]
+ %scevgep118119 = getelementptr [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 %tmp117, i32 0, i32 0 ; [#uses=1]
+ %scevgep120 = getelementptr [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 %tmp117, i32 0, i32 1 ; [#uses=1]
+ %scevgep121 = getelementptr [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 %tmp117, i32 0, i32 2 ; [#uses=1]
+ %scevgep122 = getelementptr [3 x %struct.btQuadWord]* %triangleVerts, i32 0, i32 %tmp117, i32 0, i32 3 ; [#uses=1]
+ %37 = load i32* %indicestype, align 4 ; [#uses=1]
+ %38 = icmp eq i32 %37, 3 ; [#uses=1]
+ br i1 %38, label %bb10, label %bb11
+
+bb10: ; preds = %bb9
+ %tmp = mul i32 %indvar, -2 ; [#uses=1]
+ %tmp109 = add i32 %tmp108, %tmp ; [#uses=1]
+ %scevgep = getelementptr i8* %35, i32 %tmp109 ; [#uses=1]
+ %scevgep110 = bitcast i8* %scevgep to i16* ; [#uses=1]
+ %39 = load i16* %scevgep110, align 2 ; [#uses=1]
+ %40 = zext i16 %39 to i32 ; [#uses=1]
+ br label %bb12
+
+bb11: ; preds = %bb9
+ %tmp111 = mul i32 %indvar, -4 ; [#uses=1]
+ %tmp113 = add i32 %tmp112, %tmp111 ; [#uses=1]
+ %scevgep114 = getelementptr i8* %35, i32 %tmp113 ; [#uses=1]
+ %scevgep114115 = bitcast i8* %scevgep114 to i32* ; [#uses=1]
+ %41 = load i32* %scevgep114115, align 4 ; [#uses=1]
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb10
+ %iftmp.164.0 = phi i32 [ %40, %bb10 ], [ %41, %bb11 ] ; [#uses=1]
+ %42 = load i32* %type, align 4 ; [#uses=1]
+ %43 = icmp eq i32 %42, 0 ; [#uses=1]
+ %44 = load i8** %vertexbase, align 4 ; [#uses=5]
+ %45 = load i32* %stride, align 4 ; [#uses=1]
+ %46 = mul nsw i32 %45, %iftmp.164.0 ; [#uses=5]
+ %47 = getelementptr inbounds i8* %44, i32 %46 ; [#uses=2]
+ br i1 %43, label %bb13, label %bb14
+
+bb13: ; preds = %bb12
+ %48 = bitcast i8* %47 to float* ; [#uses=1]
+ %.sum38 = add i32 %46, 8 ; [#uses=1]
+ %49 = getelementptr inbounds i8* %44, i32 %.sum38 ; [#uses=1]
+ %50 = bitcast i8* %49 to float* ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = load float* %1, align 4 ; [#uses=1]
+ %53 = fmul float %51, %52 ; [#uses=1]
+ %.sum39 = add i32 %46, 4 ; [#uses=1]
+ %54 = getelementptr inbounds i8* %44, i32 %.sum39 ; [#uses=1]
+ %55 = bitcast i8* %54 to float* ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = load float* %2, align 4 ; [#uses=1]
+ %58 = fmul float %56, %57 ; [#uses=1]
+ %59 = load float* %48, align 4 ; [#uses=1]
+ %60 = load float* %3, align 4 ; [#uses=1]
+ %61 = fmul float %59, %60 ; [#uses=1]
+ br label %bb16
+
+bb14: ; preds = %bb12
+ %62 = bitcast i8* %47 to double* ; [#uses=1]
+ %.sum = add i32 %46, 16 ; [#uses=1]
+ %63 = getelementptr inbounds i8* %44, i32 %.sum ; [#uses=1]
+ %64 = bitcast i8* %63 to double* ; [#uses=1]
+ %65 = load double* %64, align 4 ; [#uses=1]
+ %66 = load float* %1, align 4 ; [#uses=1]
+ %67 = fpext float %66 to double ; [#uses=1]
+ %68 = fmul double %65, %67 ; [#uses=1]
+ %69 = fptrunc double %68 to float ; [#uses=1]
+ %.sum37 = add i32 %46, 8 ; [#uses=1]
+ %70 = getelementptr inbounds i8* %44, i32 %.sum37 ; [#uses=1]
+ %71 = bitcast i8* %70 to double* ; [#uses=1]
+ %72 = load double* %71, align 4 ; [#uses=1]
+ %73 = load float* %2, align 4 ; [#uses=1]
+ %74 = fpext float %73 to double ; [#uses=1]
+ %75 = fmul double %72, %74 ; [#uses=1]
+ %76 = fptrunc double %75 to float ; [#uses=1]
+ %77 = load double* %62, align 4 ; [#uses=1]
+ %78 = load float* %3, align 4 ; [#uses=1]
+ %79 = fpext float %78 to double ; [#uses=1]
+ %80 = fmul double %77, %79 ; [#uses=1]
+ %81 = fptrunc double %80 to float ; [#uses=1]
+ br label %bb16
+
+bb16: ; preds = %bb14, %bb13
+ %storemerge174 = phi float [ %61, %bb13 ], [ %81, %bb14 ] ; [#uses=1]
+ %storemerge173 = phi float [ %58, %bb13 ], [ %76, %bb14 ] ; [#uses=1]
+ %storemerge = phi float [ %53, %bb13 ], [ %69, %bb14 ] ; [#uses=1]
+ store float %storemerge174, float* %scevgep118119, align 8
+ store float %storemerge173, float* %scevgep120, align 4
+ store float %storemerge, float* %scevgep121, align 8
+ store float 0.000000e+00, float* %scevgep122, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb18, label %bb9
+
+bb18: ; preds = %bb16
+ %.pre = load float* %4, align 8 ; [#uses=4]
+ %.pre175 = load float* %5, align 4 ; [#uses=4]
+ %.pre176 = load float* %6, align 8 ; [#uses=4]
+ %.pre177 = load float* %7, align 8 ; [#uses=4]
+ %.pre178 = load float* %8, align 4 ; [#uses=4]
+ %.pre179 = load float* %9, align 8 ; [#uses=4]
+ %.pre180 = load float* %10, align 8 ; [#uses=4]
+ %.pre181 = load float* %11, align 4 ; [#uses=4]
+ %.pre182 = load float* %12, align 8 ; [#uses=4]
+ %82 = fcmp olt float %.pre, 0x43ABC16D60000000 ; [#uses=1]
+ %aabbMin.0.0.2 = select i1 %82, float %.pre, float 0x43ABC16D60000000 ; [#uses=2]
+ %83 = fcmp olt float %.pre175, 0x43ABC16D60000000 ; [#uses=1]
+ %aabbMin.0.1.2 = select i1 %83, float %.pre175, float 0x43ABC16D60000000 ; [#uses=2]
+ %84 = fcmp olt float %.pre176, 0x43ABC16D60000000 ; [#uses=1]
+ %aabbMin.0.2.2 = select i1 %84, float %.pre176, float 0x43ABC16D60000000 ; [#uses=2]
+ %85 = fcmp ogt float %.pre, 0xC3ABC16D60000000 ; [#uses=1]
+ %aabbMax.0.0.2 = select i1 %85, float %.pre, float 0xC3ABC16D60000000 ; [#uses=2]
+ %86 = fcmp ogt float %.pre175, 0xC3ABC16D60000000 ; [#uses=1]
+ %aabbMax.0.1.2 = select i1 %86, float %.pre175, float 0xC3ABC16D60000000 ; [#uses=2]
+ %87 = fcmp ogt float %.pre176, 0xC3ABC16D60000000 ; [#uses=1]
+ %aabbMax.0.2.2 = select i1 %87, float %.pre176, float 0xC3ABC16D60000000 ; [#uses=2]
+ %88 = fcmp olt float %.pre177, %aabbMin.0.0.2 ; [#uses=1]
+ %aabbMin.0.0.1 = select i1 %88, float %.pre177, float %aabbMin.0.0.2 ; [#uses=2]
+ %89 = fcmp olt float %.pre178, %aabbMin.0.1.2 ; [#uses=1]
+ %aabbMin.0.1.1 = select i1 %89, float %.pre178, float %aabbMin.0.1.2 ; [#uses=2]
+ %90 = fcmp olt float %.pre179, %aabbMin.0.2.2 ; [#uses=1]
+ %aabbMin.0.2.1 = select i1 %90, float %.pre179, float %aabbMin.0.2.2 ; [#uses=2]
+ %91 = fcmp olt float %aabbMax.0.0.2, %.pre177 ; [#uses=1]
+ %aabbMax.0.0.1 = select i1 %91, float %.pre177, float %aabbMax.0.0.2 ; [#uses=2]
+ %92 = fcmp olt float %aabbMax.0.1.2, %.pre178 ; [#uses=1]
+ %aabbMax.0.1.1 = select i1 %92, float %.pre178, float %aabbMax.0.1.2 ; [#uses=2]
+ %93 = fcmp olt float %aabbMax.0.2.2, %.pre179 ; [#uses=1]
+ %aabbMax.0.2.1 = select i1 %93, float %.pre179, float %aabbMax.0.2.2 ; [#uses=2]
+ %94 = fcmp olt float %.pre180, %aabbMin.0.0.1 ; [#uses=1]
+ %aabbMin.0.0.0 = select i1 %94, float %.pre180, float %aabbMin.0.0.1 ; [#uses=1]
+ %95 = fcmp olt float %.pre181, %aabbMin.0.1.1 ; [#uses=1]
+ %aabbMin.0.1.0 = select i1 %95, float %.pre181, float %aabbMin.0.1.1 ; [#uses=1]
+ %96 = fcmp olt float %.pre182, %aabbMin.0.2.1 ; [#uses=1]
+ %aabbMin.0.2.0 = select i1 %96, float %.pre182, float %aabbMin.0.2.1 ; [#uses=1]
+ %97 = fcmp olt float %aabbMax.0.0.1, %.pre180 ; [#uses=1]
+ %aabbMax.0.0.0 = select i1 %97, float %.pre180, float %aabbMax.0.0.1 ; [#uses=1]
+ %98 = fcmp olt float %aabbMax.0.1.1, %.pre181 ; [#uses=1]
+ %aabbMax.0.1.0 = select i1 %98, float %.pre181, float %aabbMax.0.1.1 ; [#uses=1]
+ %99 = fcmp olt float %aabbMax.0.2.1, %.pre182 ; [#uses=1]
+ %aabbMax.0.2.0 = select i1 %99, float %.pre182, float %aabbMax.0.2.1 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %i.0, i32 0, i32 0 ; [#uses=1]
+ %101 = load float* %13, align 4 ; [#uses=1]
+ %102 = fsub float %aabbMin.0.2.0, %101 ; [#uses=1]
+ %103 = load float* %14, align 4 ; [#uses=1]
+ %104 = fsub float %aabbMin.0.1.0, %103 ; [#uses=1]
+ %105 = load float* %15, align 4 ; [#uses=1]
+ %106 = fsub float %aabbMin.0.0.0, %105 ; [#uses=1]
+ %107 = load float* %16, align 4 ; [#uses=1]
+ %108 = fmul float %102, %107 ; [#uses=1]
+ %109 = load float* %17, align 4 ; [#uses=1]
+ %110 = fmul float %104, %109 ; [#uses=1]
+ %111 = load float* %18, align 4 ; [#uses=1]
+ %112 = fmul float %106, %111 ; [#uses=1]
+ %113 = fptoui float %112 to i16 ; [#uses=1]
+ %114 = and i16 %113, -2 ; [#uses=1]
+ store i16 %114, i16* %100, align 2
+ %115 = fptoui float %110 to i16 ; [#uses=1]
+ %116 = and i16 %115, -2 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %i.0, i32 0, i32 1 ; [#uses=1]
+ store i16 %116, i16* %117, align 2
+ %118 = fptoui float %108 to i16 ; [#uses=1]
+ %119 = and i16 %118, -2 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %i.0, i32 0, i32 2 ; [#uses=1]
+ store i16 %119, i16* %120, align 2
+ %121 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %i.0, i32 1, i32 0 ; [#uses=1]
+ %122 = load float* %13, align 4 ; [#uses=1]
+ %123 = fsub float %aabbMax.0.2.0, %122 ; [#uses=1]
+ %124 = load float* %14, align 4 ; [#uses=1]
+ %125 = fsub float %aabbMax.0.1.0, %124 ; [#uses=1]
+ %126 = load float* %15, align 4 ; [#uses=1]
+ %127 = fsub float %aabbMax.0.0.0, %126 ; [#uses=1]
+ %128 = load float* %16, align 4 ; [#uses=1]
+ %129 = fmul float %123, %128 ; [#uses=1]
+ %130 = load float* %17, align 4 ; [#uses=1]
+ %131 = fmul float %125, %130 ; [#uses=1]
+ %132 = load float* %18, align 4 ; [#uses=1]
+ %133 = fmul float %127, %132 ; [#uses=1]
+ %134 = fadd float %133, 1.000000e+00 ; [#uses=1]
+ %135 = fptoui float %134 to i16 ; [#uses=1]
+ %136 = or i16 %135, 1 ; [#uses=1]
+ store i16 %136, i16* %121, align 2
+ %137 = fadd float %131, 1.000000e+00 ; [#uses=1]
+ %138 = fptoui float %137 to i16 ; [#uses=1]
+ %139 = or i16 %138, 1 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %i.0, i32 1, i32 1 ; [#uses=1]
+ store i16 %139, i16* %140, align 2
+ %141 = fadd float %129, 1.000000e+00 ; [#uses=1]
+ %142 = fptoui float %141 to i16 ; [#uses=1]
+ %143 = or i16 %142, 1 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %i.0, i32 1, i32 2 ; [#uses=1]
+ store i16 %143, i16* %144, align 2
+ br label %bb32.outer
+
+bb32.outer: ; preds = %bb18, %bb32.preheader
+ %curNodeSubPart.2.ph = phi i32 [ %curNodeSubPart.0, %bb18 ], [ -1, %bb32.preheader ] ; [#uses=6]
+ %i.0.in.ph = phi i32 [ %i.0, %bb18 ], [ %endNode, %bb32.preheader ] ; [#uses=3]
+ %tmp129 = add i32 %i.0.in.ph, -1 ; [#uses=1]
+ %tmp164 = add i32 %i.0.in.ph, 1 ; [#uses=1]
+ br label %bb32
+
+bb19: ; preds = %bb3
+ %scevgep169 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp139, i32 2 ; [#uses=1]
+ %145 = load i32* %scevgep169, align 4 ; [#uses=2]
+ %tmp167 = sub i32 %tmp139, %145 ; [#uses=1]
+ %toBool20 = icmp slt i32 %145, 0 ; [#uses=2]
+ %tmp167.tmp165 = select i1 %toBool20, i32 %tmp167, i32 %tmp165 ; [#uses=8]
+ %tmp165.pn = select i1 %toBool20, i32 %tmp167.tmp165, i32 %tmp167.tmp165 ; [#uses=0]
+ %scevgep132 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp167.tmp165, i32 0, i32 0 ; [#uses=1]
+ %scevgep136 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp167.tmp165, i32 1, i32 0 ; [#uses=1]
+ %scevgep128 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp139, i32 0, i32 0 ; [#uses=1]
+ %146 = load i16* %scevgep128, align 2 ; [#uses=2]
+ %scevgep147148 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %i.0, i32 0, i32 0 ; [#uses=2]
+ store i16 %146, i16* %scevgep147148, align 2
+ %147 = load i16* %scevgep132, align 2 ; [#uses=2]
+ %148 = icmp ugt i16 %146, %147 ; [#uses=1]
+ br i1 %148, label %bb26, label %bb27
+
+bb26: ; preds = %bb19
+ store i16 %147, i16* %scevgep147148, align 2
+ br label %bb27
+
+bb27: ; preds = %bb26, %bb19
+ %scevgep133 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp139, i32 1, i32 0 ; [#uses=1]
+ %149 = load i16* %scevgep133, align 2 ; [#uses=2]
+ %scevgep158 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp139, i32 0, i32 -5 ; [#uses=2]
+ store i16 %149, i16* %scevgep158, align 2
+ %150 = load i16* %scevgep136, align 2 ; [#uses=2]
+ %151 = icmp ult i16 %149, %150 ; [#uses=1]
+ br i1 %151, label %bb28, label %bb29
+
+bb28: ; preds = %bb27
+ store i16 %150, i16* %scevgep158, align 2
+ br label %bb29
+
+bb29: ; preds = %bb28, %bb27
+ %scevgep132.1 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp167.tmp165, i32 0, i32 1 ; [#uses=1]
+ %scevgep136.1 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp167.tmp165, i32 1, i32 1 ; [#uses=1]
+ %scevgep128.1 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp139, i32 0, i32 1 ; [#uses=1]
+ %152 = load i16* %scevgep128.1, align 2 ; [#uses=2]
+ %scevgep143 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp139, i32 0, i32 -7 ; [#uses=2]
+ store i16 %152, i16* %scevgep143, align 2
+ %153 = load i16* %scevgep132.1, align 2 ; [#uses=2]
+ %154 = icmp ugt i16 %152, %153 ; [#uses=1]
+ br i1 %154, label %bb26.1, label %bb27.1
+
+bb32.loopexit: ; preds = %bb28.2, %bb27.2
+ %indvar.next125 = add i32 %indvar124, 1 ; [#uses=1]
+ br label %bb32
+
+bb32: ; preds = %bb32.loopexit, %bb32.outer
+ %indvar124 = phi i32 [ 0, %bb32.outer ], [ %indvar.next125, %bb32.loopexit ] ; [#uses=4]
+ %tmp139 = sub i32 %i.0.in.ph, %indvar124 ; [#uses=14]
+ %i.0 = sub i32 %tmp129, %indvar124 ; [#uses=10]
+ %tmp165 = sub i32 %tmp164, %indvar124 ; [#uses=1]
+ %155 = icmp slt i32 %i.0, %firstNode ; [#uses=1]
+ br i1 %155, label %bb33, label %bb3
+
+bb33: ; preds = %bb32
+ %156 = icmp sgt i32 %curNodeSubPart.2.ph, -1 ; [#uses=1]
+ br i1 %156, label %bb34, label %return
+
+bb34: ; preds = %bb33
+ %157 = load i32 (...)*** %19, align 4 ; [#uses=1]
+ %158 = getelementptr inbounds i32 (...)** %157, i32 6 ; [#uses=1]
+ %159 = load i32 (...)** %158, align 4 ; [#uses=1]
+ %160 = bitcast i32 (...)* %159 to void (%struct.btStridingMeshInterface*, i32)* ; [#uses=1]
+ call void %160(%struct.btStridingMeshInterface* %meshInterface, i32 %curNodeSubPart.2.ph)
+ ret void
+
+return: ; preds = %bb33
+ ret void
+
+bb29.1: ; preds = %bb28.1, %bb27.1
+ %scevgep132.2 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp167.tmp165, i32 0, i32 2 ; [#uses=1]
+ %scevgep136.2 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp167.tmp165, i32 1, i32 2 ; [#uses=1]
+ %scevgep128.2 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp139, i32 0, i32 2 ; [#uses=1]
+ %161 = load i16* %scevgep128.2, align 2 ; [#uses=2]
+ %scevgep141 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp139, i32 0, i32 -6 ; [#uses=2]
+ store i16 %161, i16* %scevgep141, align 2
+ %162 = load i16* %scevgep132.2, align 2 ; [#uses=2]
+ %163 = icmp ugt i16 %161, %162 ; [#uses=1]
+ br i1 %163, label %bb26.2, label %bb27.2
+
+bb27.1: ; preds = %bb26.1, %bb29
+ %scevgep133.1 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp139, i32 1, i32 1 ; [#uses=1]
+ %164 = load i16* %scevgep133.1, align 2 ; [#uses=2]
+ %scevgep154 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp139, i32 0, i32 -4 ; [#uses=2]
+ store i16 %164, i16* %scevgep154, align 2
+ %165 = load i16* %scevgep136.1, align 2 ; [#uses=2]
+ %166 = icmp ult i16 %164, %165 ; [#uses=1]
+ br i1 %166, label %bb28.1, label %bb29.1
+
+bb26.1: ; preds = %bb29
+ store i16 %153, i16* %scevgep143, align 2
+ br label %bb27.1
+
+bb28.1: ; preds = %bb27.1
+ store i16 %165, i16* %scevgep154, align 2
+ br label %bb29.1
+
+bb27.2: ; preds = %bb26.2, %bb29.1
+ %scevgep133.2 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp139, i32 1, i32 2 ; [#uses=1]
+ %167 = load i16* %scevgep133.2, align 2 ; [#uses=2]
+ %scevgep150 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %20, i32 %tmp139, i32 0, i32 -3 ; [#uses=2]
+ store i16 %167, i16* %scevgep150, align 2
+ %168 = load i16* %scevgep136.2, align 2 ; [#uses=2]
+ %169 = icmp ult i16 %167, %168 ; [#uses=1]
+ br i1 %169, label %bb28.2, label %bb32.loopexit
+
+bb26.2: ; preds = %bb29.1
+ store i16 %162, i16* %scevgep141, align 2
+ br label %bb27.2
+
+bb28.2: ; preds = %bb27.2
+ store i16 %168, i16* %scevgep150, align 2
+ br label %bb32.loopexit
+}
+
+; [#uses=1]
+define void @_ZN14btOptimizedBvh12refitPartialEP23btStridingMeshInterfaceRK9btVector3S4_(%struct.btOptimizedBvh* nocapture %this, %struct.btStridingMeshInterface* %meshInterface, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fsub float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fsub float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fsub float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = fmul float %4, %16 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=2]
+ %20 = fmul float %9, %19 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ %23 = fmul float %14, %22 ; [#uses=1]
+ %24 = fptoui float %23 to i16 ; [#uses=1]
+ %25 = and i16 %24, -2 ; [#uses=1]
+ %26 = fptoui float %20 to i16 ; [#uses=1]
+ %27 = and i16 %26, -2 ; [#uses=1]
+ %28 = fptoui float %17 to i16 ; [#uses=1]
+ %29 = and i16 %28, -2 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = fsub float %31, %3 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fsub float %34, %8 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fsub float %37, %13 ; [#uses=1]
+ %39 = fmul float %32, %16 ; [#uses=1]
+ %40 = fmul float %35, %19 ; [#uses=1]
+ %41 = fmul float %38, %22 ; [#uses=1]
+ %42 = fadd float %41, 1.000000e+00 ; [#uses=1]
+ %43 = fptoui float %42 to i16 ; [#uses=1]
+ %44 = or i16 %43, 1 ; [#uses=1]
+ %45 = fadd float %40, 1.000000e+00 ; [#uses=1]
+ %46 = fptoui float %45 to i16 ; [#uses=1]
+ %47 = or i16 %46, 1 ; [#uses=1]
+ %48 = fadd float %39, 1.000000e+00 ; [#uses=1]
+ %49 = fptoui float %48 to i16 ; [#uses=1]
+ %50 = or i16 %49, 1 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 12, i32 1 ; [#uses=2]
+ %52 = load i32* %51, align 4 ; [#uses=1]
+ %53 = icmp sgt i32 %52, 0 ; [#uses=1]
+ br i1 %53, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %54 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 12, i32 3 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 10, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb2, %bb.nph
+ %56 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb2 ] ; [#uses=10]
+ %tmp = add i32 %56, 1 ; [#uses=2]
+ %57 = load %struct.btBvhSubtreeInfo** %54, align 4 ; [#uses=8]
+ %scevgep = getelementptr %struct.btBvhSubtreeInfo* %57, i32 %56, i32 1, i32 0 ; [#uses=2]
+ %58 = load i16* %scevgep, align 2 ; [#uses=1]
+ %59 = icmp ule i16 %25, %58 ; [#uses=1]
+ %scevgep67 = getelementptr inbounds %struct.btBvhSubtreeInfo* %57, i32 %56, i32 0, i32 0 ; [#uses=2]
+ %60 = load i16* %scevgep67, align 2 ; [#uses=1]
+ %61 = icmp uge i16 %44, %60 ; [#uses=1]
+ %62 = and i1 %59, %61 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btBvhSubtreeInfo* %57, i32 %56, i32 1, i32 2 ; [#uses=2]
+ %63 = load i16* %scevgep8, align 2 ; [#uses=1]
+ %64 = icmp ule i16 %29, %63 ; [#uses=1]
+ %65 = and i1 %62, %64 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btBvhSubtreeInfo* %57, i32 %56, i32 0, i32 2 ; [#uses=2]
+ %66 = load i16* %scevgep9, align 2 ; [#uses=1]
+ %67 = icmp uge i16 %50, %66 ; [#uses=1]
+ %68 = and i1 %65, %67 ; [#uses=1]
+ %scevgep10 = getelementptr %struct.btBvhSubtreeInfo* %57, i32 %56, i32 1, i32 1 ; [#uses=2]
+ %69 = load i16* %scevgep10, align 2 ; [#uses=1]
+ %70 = icmp ule i16 %27, %69 ; [#uses=1]
+ %71 = and i1 %68, %70 ; [#uses=1]
+ %scevgep11 = getelementptr %struct.btBvhSubtreeInfo* %57, i32 %56, i32 0, i32 1 ; [#uses=2]
+ %72 = load i16* %scevgep11, align 2 ; [#uses=1]
+ %73 = icmp uge i16 %47, %72 ; [#uses=1]
+ %74 = and i1 %71, %73 ; [#uses=1]
+ br i1 %74, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %scevgep12 = getelementptr %struct.btBvhSubtreeInfo* %57, i32 %56, i32 2 ; [#uses=2]
+ %75 = load i32* %scevgep12, align 4 ; [#uses=2]
+ %scevgep13 = getelementptr %struct.btBvhSubtreeInfo* %57, i32 %56, i32 3 ; [#uses=1]
+ %76 = load i32* %scevgep13, align 4 ; [#uses=1]
+ %77 = add nsw i32 %76, %75 ; [#uses=1]
+ tail call void @_ZN14btOptimizedBvh14updateBvhNodesEP23btStridingMeshInterfaceiii(%struct.btOptimizedBvh* %this, %struct.btStridingMeshInterface* %meshInterface, i32 %75, i32 %77, i32 %56)
+ %78 = load i32* %scevgep12, align 4 ; [#uses=6]
+ %79 = load %struct.BT_QUANTIZED_BVH_NODE** %55, align 4 ; [#uses=6]
+ %80 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %79, i32 %78, i32 0, i32 0 ; [#uses=1]
+ %81 = load i16* %80, align 2 ; [#uses=1]
+ store i16 %81, i16* %scevgep67, align 2
+ %82 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %79, i32 %78, i32 0, i32 1 ; [#uses=1]
+ %83 = load i16* %82, align 2 ; [#uses=1]
+ store i16 %83, i16* %scevgep11, align 2
+ %84 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %79, i32 %78, i32 0, i32 2 ; [#uses=1]
+ %85 = load i16* %84, align 2 ; [#uses=1]
+ store i16 %85, i16* %scevgep9, align 2
+ %86 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %79, i32 %78, i32 1, i32 0 ; [#uses=1]
+ %87 = load i16* %86, align 2 ; [#uses=1]
+ store i16 %87, i16* %scevgep, align 2
+ %88 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %79, i32 %78, i32 1, i32 1 ; [#uses=1]
+ %89 = load i16* %88, align 2 ; [#uses=1]
+ store i16 %89, i16* %scevgep10, align 2
+ %90 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %79, i32 %78, i32 1, i32 2 ; [#uses=1]
+ %91 = load i16* %90, align 2 ; [#uses=1]
+ store i16 %91, i16* %scevgep8, align 2
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %92 = load i32* %51, align 4 ; [#uses=1]
+ %93 = icmp sgt i32 %92, %tmp ; [#uses=1]
+ br i1 %93, label %bb, label %return
+
+return: ; preds = %bb2, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK14btOptimizedBvh16serializeInPlaceEPvjb(%struct.btOptimizedBvh* %this, i8* %o_alignedDataBuffer, i32 %i_dataBufferSize, i8 zeroext %i_swapEndian) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call zeroext i8 @_ZNK14btQuantizedBvh9serializeEPvjb(%struct.btQuantizedBvh* %0, i8* %o_alignedDataBuffer, i32 %i_dataBufferSize, i8 zeroext %i_swapEndian) ; [#uses=1]
+ ret i8 %1
+}
+
+; [#uses=0]
+define %struct.btOptimizedBvh* @_ZN14btOptimizedBvh18deSerializeInPlaceEPvjb(i8* %i_alignedDataBuffer, i32 %i_dataBufferSize, i8 zeroext %i_swapEndian) align 2 {
+entry:
+ %0 = tail call %struct.btQuantizedBvh* @_ZN14btQuantizedBvh18deSerializeInPlaceEPvjb(i8* %i_alignedDataBuffer, i32 %i_dataBufferSize, i8 zeroext %i_swapEndian) ; [#uses=1]
+ %1 = bitcast %struct.btQuantizedBvh* %0 to %struct.btOptimizedBvh* ; [#uses=1]
+ ret %struct.btOptimizedBvh* %1
+}
+
+; [#uses=1]
+define void @_ZN14btOptimizedBvh5refitEP23btStridingMeshInterfaceRK9btVector3S4_(%struct.btOptimizedBvh* %this, %struct.btStridingMeshInterface* %meshInterface, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btQuantizedBvh21setQuantizationValuesERK9btVector3S2_f(%struct.btQuantizedBvh* %2, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax, float 1.000000e+00)
+ %3 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ tail call void @_ZN14btOptimizedBvh14updateBvhNodesEP23btStridingMeshInterfaceiii(%struct.btOptimizedBvh* %this, %struct.btStridingMeshInterface* %meshInterface, i32 0, i32 %4, i32 0)
+ %5 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 12, i32 1 ; [#uses=2]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = icmp sgt i32 %6, 0 ; [#uses=1]
+ br i1 %7, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb
+ %8 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 12, i32 3 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 10, i32 3 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb1, %bb.nph
+ %i.05 = phi i32 [ 0, %bb.nph ], [ %25, %bb1 ] ; [#uses=8]
+ %10 = load %struct.btBvhSubtreeInfo** %8, align 4 ; [#uses=7]
+ %scevgep = getelementptr %struct.btBvhSubtreeInfo* %10, i32 %i.05, i32 2 ; [#uses=1]
+ %11 = load i32* %scevgep, align 4 ; [#uses=6]
+ %12 = load %struct.BT_QUANTIZED_BVH_NODE** %9, align 4 ; [#uses=6]
+ %13 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %12, i32 %11, i32 0, i32 0 ; [#uses=1]
+ %14 = load i16* %13, align 2 ; [#uses=1]
+ %scevgep67 = getelementptr inbounds %struct.btBvhSubtreeInfo* %10, i32 %i.05, i32 0, i32 0 ; [#uses=1]
+ store i16 %14, i16* %scevgep67, align 2
+ %15 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %12, i32 %11, i32 0, i32 1 ; [#uses=1]
+ %16 = load i16* %15, align 2 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btBvhSubtreeInfo* %10, i32 %i.05, i32 0, i32 1 ; [#uses=1]
+ store i16 %16, i16* %scevgep8, align 2
+ %17 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %12, i32 %11, i32 0, i32 2 ; [#uses=1]
+ %18 = load i16* %17, align 2 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btBvhSubtreeInfo* %10, i32 %i.05, i32 0, i32 2 ; [#uses=1]
+ store i16 %18, i16* %scevgep9, align 2
+ %19 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %12, i32 %11, i32 1, i32 0 ; [#uses=1]
+ %20 = load i16* %19, align 2 ; [#uses=1]
+ %scevgep10 = getelementptr %struct.btBvhSubtreeInfo* %10, i32 %i.05, i32 1, i32 0 ; [#uses=1]
+ store i16 %20, i16* %scevgep10, align 2
+ %21 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %12, i32 %11, i32 1, i32 1 ; [#uses=1]
+ %22 = load i16* %21, align 2 ; [#uses=1]
+ %scevgep11 = getelementptr %struct.btBvhSubtreeInfo* %10, i32 %i.05, i32 1, i32 1 ; [#uses=1]
+ store i16 %22, i16* %scevgep11, align 2
+ %23 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %12, i32 %11, i32 1, i32 2 ; [#uses=1]
+ %24 = load i16* %23, align 2 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btBvhSubtreeInfo* %10, i32 %i.05, i32 1, i32 2 ; [#uses=1]
+ store i16 %24, i16* %scevgep12, align 2
+ %25 = add nsw i32 %i.05, 1 ; [#uses=2]
+ %26 = load i32* %5, align 4 ; [#uses=1]
+ %27 = icmp sgt i32 %26, %25 ; [#uses=1]
+ br i1 %27, label %bb1, label %return
+
+return: ; preds = %bb1, %bb, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN20NodeTriangleCallbackD2Ev(%struct..0NodeTriangleCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0NodeTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0NodeTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_(%struct.btOptimizedBvh* %this, %struct.btStridingMeshInterface* %triangles, i8 zeroext %useQuantizedAabbCompression, %struct.btQuadWord* %bvhAabbMin, %struct.btQuadWord* %bvhAabbMax) align 2 {
+entry:
+ %callback = alloca %struct..1QuantizedNodeTriangleCallback, align 8 ; [#uses=4]
+ %callback7 = alloca %struct..0NodeTriangleCallback, align 8 ; [#uses=3]
+ %aabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %aabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 6 ; [#uses=2]
+ store i8 %useQuantizedAabbCompression, i8* %0, align 4
+ %toBool = icmp eq i8 %useQuantizedAabbCompression, 0 ; [#uses=1]
+ br i1 %toBool, label %bb6, label %bb
+
+bb: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0 ; [#uses=2]
+ call void @_ZN14btQuantizedBvh21setQuantizationValuesERK9btVector3S2_f(%struct.btQuantizedBvh* %1, %struct.btQuadWord* %bvhAabbMin, %struct.btQuadWord* %bvhAabbMax, float 1.000000e+00)
+ %2 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 9 ; [#uses=1]
+ %3 = getelementptr inbounds %struct..1QuantizedNodeTriangleCallback* %callback, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback, i32 0, i32 2), i32 (...)*** %3, align 8
+ %4 = getelementptr inbounds %struct..1QuantizedNodeTriangleCallback* %callback, i32 0, i32 1 ; [#uses=1]
+ store %struct.QuantizedNodeArray* %2, %struct.QuantizedNodeArray** %4, align 4
+ %5 = getelementptr inbounds %struct..1QuantizedNodeTriangleCallback* %callback, i32 0, i32 2 ; [#uses=1]
+ store %struct.btQuantizedBvh* %1, %struct.btQuantizedBvh** %5, align 8
+ %6 = getelementptr inbounds %struct.btStridingMeshInterface* %triangles, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 2 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = bitcast i32 (...)* %9 to void (%struct.btStridingMeshInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %13 = getelementptr inbounds %struct..1QuantizedNodeTriangleCallback* %callback, i32 0, i32 0 ; [#uses=3]
+ invoke void %12(%struct.btStridingMeshInterface* %triangles, %struct.btActionInterface* %13, %struct.btQuadWord* %11, %struct.btQuadWord* %10)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %14 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 9, i32 1 ; [#uses=1]
+ %15 = load i32* %14, align 4 ; [#uses=2]
+ %16 = shl i32 %15, 1 ; [#uses=4]
+ %17 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 10, i32 1 ; [#uses=2]
+ %18 = load i32* %17, align 4 ; [#uses=3]
+ %19 = icmp slt i32 %18, %16 ; [#uses=1]
+ br i1 %19, label %bb.nph.i, label %bb5
+
+bb.nph.i: ; preds = %invcont
+ %20 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 10 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE7reserveEi(%struct.QuantizedNodeArray* %20, i32 %16) inlinehint
+ to label %.noexc unwind label %lpad
+
+.noexc: ; preds = %bb.nph.i
+ %21 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 10, i32 3 ; [#uses=1]
+ %tmp152 = sub i32 %16, %18 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb7.i, %.noexc
+ %indvar.i = phi i32 [ 0, %.noexc ], [ %indvar.next.i, %bb7.i ] ; [#uses=2]
+ %tmp153 = add i32 %18, %indvar.i ; [#uses=1]
+ %22 = load %struct.BT_QUANTIZED_BVH_NODE** %21, align 4 ; [#uses=1]
+ %scevgep15.i = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %22, i32 %tmp153, i32 0, i32 0 ; [#uses=1]
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %tmp152 ; [#uses=1]
+ %scevgep15.i168 = bitcast i16* %scevgep15.i to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %scevgep15.i168, i8 0, i64 16, i32 4, i1 false)
+ br i1 %exitcond, label %bb5, label %bb7.i
+
+bb5: ; preds = %bb7.i, %invcont
+ store i32 %16, i32* %17, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback, i32 0, i32 2), i32 (...)*** %3, align 8
+ call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %13)
+ br label %bb16
+
+bb6: ; preds = %entry
+ %23 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 7 ; [#uses=1]
+ %24 = getelementptr inbounds %struct..0NodeTriangleCallback* %callback7, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback, i32 0, i32 2), i32 (...)*** %24, align 8
+ %25 = getelementptr inbounds %struct..0NodeTriangleCallback* %callback7, i32 0, i32 1 ; [#uses=1]
+ store %struct.NodeArray* %23, %struct.NodeArray** %25, align 4
+ %26 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %26, align 8
+ %27 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %28, align 8
+ %29 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %30, align 8
+ %31 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %32, align 8
+ %33 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btStridingMeshInterface* %triangles, i32 0, i32 0 ; [#uses=1]
+ %35 = load i32 (...)*** %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds i32 (...)** %35, i32 2 ; [#uses=1]
+ %37 = load i32 (...)** %36, align 4 ; [#uses=1]
+ %38 = bitcast i32 (...)* %37 to void (%struct.btStridingMeshInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %39 = getelementptr inbounds %struct..0NodeTriangleCallback* %callback7, i32 0, i32 0 ; [#uses=3]
+ invoke void %38(%struct.btStridingMeshInterface* %triangles, %struct.btActionInterface* %39, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ to label %invcont8 unwind label %lpad38
+
+invcont8: ; preds = %bb6
+ %40 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 7, i32 1 ; [#uses=1]
+ %41 = load i32* %40, align 4 ; [#uses=3]
+ %42 = shl i32 %41, 1 ; [#uses=6]
+ %43 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 8, i32 1 ; [#uses=3]
+ %44 = load i32* %43, align 4 ; [#uses=3]
+ %45 = icmp sgt i32 %44, %42 ; [#uses=1]
+ %.not = xor i1 %45, true ; [#uses=1]
+ %46 = icmp slt i32 %44, %42 ; [#uses=1]
+ %or.cond = and i1 %.not, %46 ; [#uses=1]
+ br i1 %or.cond, label %bb4.i, label %bb15
+
+bb4.i: ; preds = %invcont8
+ %47 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 8, i32 2 ; [#uses=2]
+ %48 = load i32* %47, align 4 ; [#uses=1]
+ %49 = icmp slt i32 %48, %42 ; [#uses=1]
+ br i1 %49, label %bb.i.i57, label %bb15
+
+bb.i.i57: ; preds = %bb4.i
+ %50 = icmp eq i32 %42, 0 ; [#uses=1]
+ br i1 %50, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i, label %bb.i2.i.i60
+
+bb.i2.i.i60: ; preds = %bb.i.i57
+ %51 = shl i32 %41, 7 ; [#uses=1]
+ %52 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %51, i32 16)
+ to label %.noexc82 unwind label %lpad38 ; [#uses=1]
+
+.noexc82: ; preds = %bb.i2.i.i60
+ %phitmp.i.i58 = bitcast i8* %52 to %struct.btOptimizedBvhNode* ; [#uses=1]
+ %.pre.i59 = load i32* %43, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i: ; preds = %.noexc82, %bb.i.i57
+ %53 = phi i32 [ %.pre.i59, %.noexc82 ], [ %44, %bb.i.i57 ] ; [#uses=2]
+ %54 = phi %struct.btOptimizedBvhNode* [ %phitmp.i.i58, %.noexc82 ], [ null, %bb.i.i57 ] ; [#uses=2]
+ %55 = icmp sgt i32 %53, 0 ; [#uses=1]
+ br i1 %55, label %bb.nph.i.i.i61, label %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i
+
+bb.nph.i.i.i61: ; preds = %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i
+ %56 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 8, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i68
+
+bb.i4.i.i68: ; preds = %bb.i4.i.i68, %bb.nph.i.i.i61
+ %indvar.i.i.i62 = phi i32 [ 0, %bb.nph.i.i.i61 ], [ %indvar.next.i.i.i67, %bb.i4.i.i68 ] ; [#uses=3]
+ %scevgep161 = getelementptr %struct.btOptimizedBvhNode* %54, i32 %indvar.i.i.i62 ; [#uses=1]
+ %scevgep5.i.i.i64 = bitcast %struct.btOptimizedBvhNode* %scevgep161 to i8* ; [#uses=1]
+ %57 = load %struct.btOptimizedBvhNode** %56, align 4 ; [#uses=1]
+ %scevgep159 = getelementptr %struct.btOptimizedBvhNode* %57, i32 %indvar.i.i.i62 ; [#uses=1]
+ %scevgep67.i.i.i66 = bitcast %struct.btOptimizedBvhNode* %scevgep159 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep5.i.i.i64, i8* %scevgep67.i.i.i66, i32 64, i32 4, i1 false) nounwind
+ %indvar.next.i.i.i67 = add i32 %indvar.i.i.i62, 1 ; [#uses=2]
+ %exitcond158 = icmp eq i32 %indvar.next.i.i.i67, %53 ; [#uses=1]
+ br i1 %exitcond158, label %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i68
+
+_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i: ; preds = %bb.i4.i.i68, %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE8allocateEi.exit.i.i
+ %58 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 8, i32 3 ; [#uses=3]
+ %59 = load %struct.btOptimizedBvhNode** %58, align 4 ; [#uses=2]
+ %60 = icmp eq %struct.btOptimizedBvhNode* %59, null ; [#uses=1]
+ br i1 %60, label %bb8.preheader.i, label %bb.i.i.i70
+
+bb.i.i.i70: ; preds = %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i
+ %61 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 8, i32 4 ; [#uses=1]
+ %62 = load i8* %61, align 4 ; [#uses=1]
+ %toBool.i.i.i69 = icmp eq i8 %62, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i69, label %bb2.i.i.i72, label %bb1.i.i.i71
+
+bb1.i.i.i71: ; preds = %bb.i.i.i70
+ %63 = bitcast %struct.btOptimizedBvhNode* %59 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %63)
+ to label %bb2.i.i.i72 unwind label %lpad38
+
+bb2.i.i.i72: ; preds = %bb1.i.i.i71, %bb.i.i.i70
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %58, align 4
+ br label %bb8.preheader.i
+
+bb8.preheader.i: ; preds = %bb2.i.i.i72, %_ZNK20btAlignedObjectArrayI18btOptimizedBvhNodeE4copyEiiPS0_.exit.i.i
+ %64 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %64, align 4
+ store %struct.btOptimizedBvhNode* %54, %struct.btOptimizedBvhNode** %58, align 4
+ store i32 %42, i32* %47, align 4
+ br label %bb15
+
+bb15: ; preds = %bb8.preheader.i, %bb4.i, %invcont8
+ store i32 %42, i32* %43, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback, i32 0, i32 2), i32 (...)*** %24, align 8
+ call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %39)
+ br label %bb16
+
+bb16: ; preds = %bb15, %bb5
+ %numLeafNodes.0 = phi i32 [ %15, %bb5 ], [ %41, %bb15 ] ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ store i32 0, i32* %65, align 4
+ %66 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN14btQuantizedBvh9buildTreeEii(%struct.btQuantizedBvh* %66, i32 0, i32 %numLeafNodes.0)
+ %67 = load i8* %0, align 4 ; [#uses=1]
+ %toBool17not = icmp eq i8 %67, 0 ; [#uses=1]
+ br i1 %toBool17not, label %bb31, label %bb21
+
+bb21: ; preds = %bb16
+ %68 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 12, i32 1 ; [#uses=4]
+ %69 = load i32* %68, align 4 ; [#uses=10]
+ %70 = icmp eq i32 %69, 0 ; [#uses=1]
+ br i1 %70, label %bb26, label %bb31
+
+bb26: ; preds = %bb21
+ %71 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 12, i32 2 ; [#uses=2]
+ %72 = load i32* %71, align 4 ; [#uses=2]
+ %73 = icmp eq i32 %72, %69 ; [#uses=1]
+ %74 = icmp slt i32 %72, 1 ; [#uses=1]
+ %or.cond169 = and i1 %73, %74 ; [#uses=1]
+ br i1 %or.cond169, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i: ; preds = %bb26
+ %75 = call i8* @_Z22btAlignedAllocInternalji(i32 32, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %75 to %struct.btBvhSubtreeInfo* ; [#uses=2]
+ %.pre.i = load i32* %68, align 4 ; [#uses=2]
+ %76 = icmp sgt i32 %.pre.i, 0 ; [#uses=1]
+ br i1 %76, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i
+ %77 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 12, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb.i4.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb.i4.i.i ] ; [#uses=3]
+ %scevgep166 = getelementptr %struct.btBvhSubtreeInfo* %phitmp.i.i, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep5.i.i.i = bitcast %struct.btBvhSubtreeInfo* %scevgep166 to i8* ; [#uses=1]
+ %78 = load %struct.btBvhSubtreeInfo** %77, align 4 ; [#uses=1]
+ %scevgep164 = getelementptr %struct.btBvhSubtreeInfo* %78, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep67.i.i.i = bitcast %struct.btBvhSubtreeInfo* %scevgep164 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep5.i.i.i, i8* %scevgep67.i.i.i, i32 32, i32 4, i1 false) nounwind
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond163 = icmp eq i32 %indvar.next.i.i.i, %.pre.i ; [#uses=1]
+ br i1 %exitcond163, label %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i: ; preds = %bb.i4.i.i, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE8allocateEi.exit.i.i
+ %79 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 12, i32 3 ; [#uses=3]
+ %80 = load %struct.btBvhSubtreeInfo** %79, align 4 ; [#uses=2]
+ %81 = icmp eq %struct.btBvhSubtreeInfo* %80, null ; [#uses=1]
+ br i1 %81, label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+ %82 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 12, i32 4 ; [#uses=1]
+ %83 = load i8* %82, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %83, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %84 = bitcast %struct.btBvhSubtreeInfo* %80 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %84)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btBvhSubtreeInfo* null, %struct.btBvhSubtreeInfo** %79, align 4
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayI16btBvhSubtreeInfoE4copyEiiPS0_.exit.i.i
+ %85 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 12, i32 4 ; [#uses=1]
+ store i8 1, i8* %85, align 4
+ store %struct.btBvhSubtreeInfo* %phitmp.i.i, %struct.btBvhSubtreeInfo** %79, align 4
+ store i32 1, i32* %71, align 4
+ %.pre6.i = load i32* %68, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit
+
+_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i, %bb26
+ %86 = phi i32 [ %.pre6.i, %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE10deallocateEv.exit.i.i ], [ 0, %bb26 ] ; [#uses=1]
+ %87 = add nsw i32 %86, 1 ; [#uses=1]
+ store i32 %87, i32* %68, align 4
+ %88 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 12, i32 3 ; [#uses=1]
+ %89 = load %struct.btBvhSubtreeInfo** %88, align 4 ; [#uses=8]
+ %90 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 10, i32 3 ; [#uses=2]
+ %91 = load %struct.BT_QUANTIZED_BVH_NODE** %90, align 4 ; [#uses=6]
+ %92 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %91, i32 0, i32 0, i32 0 ; [#uses=1]
+ %93 = load i16* %92, align 2 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btBvhSubtreeInfo* %89, i32 %69, i32 0, i32 0 ; [#uses=1]
+ store i16 %93, i16* %94, align 2
+ %95 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %91, i32 0, i32 0, i32 1 ; [#uses=1]
+ %96 = load i16* %95, align 2 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btBvhSubtreeInfo* %89, i32 %69, i32 0, i32 1 ; [#uses=1]
+ store i16 %96, i16* %97, align 2
+ %98 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %91, i32 0, i32 0, i32 2 ; [#uses=1]
+ %99 = load i16* %98, align 2 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btBvhSubtreeInfo* %89, i32 %69, i32 0, i32 2 ; [#uses=1]
+ store i16 %99, i16* %100, align 2
+ %101 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %91, i32 0, i32 1, i32 0 ; [#uses=1]
+ %102 = load i16* %101, align 2 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btBvhSubtreeInfo* %89, i32 %69, i32 1, i32 0 ; [#uses=1]
+ store i16 %102, i16* %103, align 2
+ %104 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %91, i32 0, i32 1, i32 1 ; [#uses=1]
+ %105 = load i16* %104, align 2 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.btBvhSubtreeInfo* %89, i32 %69, i32 1, i32 1 ; [#uses=1]
+ store i16 %105, i16* %106, align 2
+ %107 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %91, i32 0, i32 1, i32 2 ; [#uses=1]
+ %108 = load i16* %107, align 2 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btBvhSubtreeInfo* %89, i32 %69, i32 1, i32 2 ; [#uses=1]
+ store i16 %108, i16* %109, align 2
+ %110 = getelementptr inbounds %struct.btBvhSubtreeInfo* %89, i32 %69, i32 2 ; [#uses=1]
+ store i32 0, i32* %110, align 4
+ %111 = load %struct.BT_QUANTIZED_BVH_NODE** %90, align 4 ; [#uses=1]
+ %112 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %111, i32 0, i32 2 ; [#uses=1]
+ %113 = load i32* %112, align 4 ; [#uses=2]
+ %114 = sub nsw i32 0, %113 ; [#uses=1]
+ %toBool27 = icmp slt i32 %113, 0 ; [#uses=2]
+ %. = select i1 %toBool27, i32 %114, i32 1 ; [#uses=3]
+ %iftmp.157.0 = select i1 %toBool27, i32 %., i32 %. ; [#uses=0]
+ %115 = getelementptr inbounds %struct.btBvhSubtreeInfo* %89, i32 %69, i32 3 ; [#uses=1]
+ store i32 %., i32* %115, align 4
+ br label %bb31
+
+bb31: ; preds = %_ZN20btAlignedObjectArrayI16btBvhSubtreeInfoE6expandERKS0_.exit, %bb21, %bb16
+ %116 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 12, i32 1 ; [#uses=1]
+ %117 = load i32* %116, align 4 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 13 ; [#uses=1]
+ store i32 %117, i32* %118, align 4
+ %119 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 9, i32 3 ; [#uses=3]
+ %120 = load %struct.BT_QUANTIZED_BVH_NODE** %119, align 4 ; [#uses=2]
+ %121 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %120, null ; [#uses=1]
+ br i1 %121, label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE5clearEv.exit, label %bb.i.i51
+
+bb.i.i51: ; preds = %bb31
+ %122 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 9, i32 4 ; [#uses=1]
+ %123 = load i8* %122, align 4 ; [#uses=1]
+ %toBool.i.i50 = icmp eq i8 %123, 0 ; [#uses=1]
+ br i1 %toBool.i.i50, label %bb2.i.i53, label %bb1.i.i52
+
+bb1.i.i52: ; preds = %bb.i.i51
+ %124 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %120 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %124)
+ br label %bb2.i.i53
+
+bb2.i.i53: ; preds = %bb1.i.i52, %bb.i.i51
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %119, align 4
+ br label %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE5clearEv.exit
+
+_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE5clearEv.exit: ; preds = %bb2.i.i53, %bb31
+ %125 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %125, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %119, align 4
+ %126 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %126, align 4
+ %127 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %127, align 4
+ %128 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 7, i32 3 ; [#uses=3]
+ %129 = load %struct.btOptimizedBvhNode** %128, align 4 ; [#uses=2]
+ %130 = icmp eq %struct.btOptimizedBvhNode* %129, null ; [#uses=1]
+ br i1 %130, label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE5clearEv.exit, label %bb.i.i
+
+bb.i.i: ; preds = %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE5clearEv.exit
+ %131 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 7, i32 4 ; [#uses=1]
+ %132 = load i8* %131, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %132, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %133 = bitcast %struct.btOptimizedBvhNode* %129 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %133)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %128, align 4
+ br label %_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE5clearEv.exit
+
+_ZN20btAlignedObjectArrayI18btOptimizedBvhNodeE5clearEv.exit: ; preds = %bb2.i.i, %_ZN20btAlignedObjectArrayI18btQuantizedBvhNodeE5clearEv.exit
+ %134 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 7, i32 4 ; [#uses=1]
+ store i8 1, i8* %134, align 4
+ store %struct.btOptimizedBvhNode* null, %struct.btOptimizedBvhNode** %128, align 4
+ %135 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 7, i32 1 ; [#uses=1]
+ store i32 0, i32* %135, align 4
+ %136 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 7, i32 2 ; [#uses=1]
+ store i32 0, i32* %136, align 4
+ ret void
+
+lpad: ; preds = %bb.nph.i, %bb
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select33 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback, i32 0, i32 2), i32 (...)*** %3, align 8
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %13)
+ to label %Unwind unwind label %lpad34
+
+lpad34: ; preds = %lpad
+ %eh_ptr35 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select37 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr35, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad38: ; preds = %bb1.i.i.i71, %bb.i2.i.i60, %bb6
+ %eh_ptr39 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select41 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr39, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E20NodeTriangleCallback, i32 0, i32 2), i32 (...)*** %24, align 8
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %39)
+ to label %Unwind unwind label %lpad42
+
+lpad42: ; preds = %lpad38
+ %eh_ptr43 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select45 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr43, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+Unwind: ; preds = %lpad38, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr39, %lpad38 ] ; [#uses=1]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_EN29QuantizedNodeTriangleCallbackD2Ev(%struct..1QuantizedNodeTriangleCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..1QuantizedNodeTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN14btOptimizedBvh5buildEP23btStridingMeshInterfacebRK9btVector3S4_E29QuantizedNodeTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..1QuantizedNodeTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN14btOptimizedBvhD0Ev(%struct.btOptimizedBvh* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([10 x i32 (...)*]* @_ZTV14btOptimizedBvh, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btQuantizedBvhD2Ev(%struct.btQuantizedBvh* %1)
+ %2 = bitcast %struct.btOptimizedBvh* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN14btOptimizedBvhD1Ev(%struct.btOptimizedBvh* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([10 x i32 (...)*]* @_ZTV14btOptimizedBvh, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btQuantizedBvhD2Ev(%struct.btQuantizedBvh* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN14btOptimizedBvhD2Ev(%struct.btOptimizedBvh* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([10 x i32 (...)*]* @_ZTV14btOptimizedBvh, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btQuantizedBvhD2Ev(%struct.btQuantizedBvh* %1)
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN14btOptimizedBvhC1Ev(%struct.btOptimizedBvh* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btQuantizedBvhC2Ev(%struct.btQuantizedBvh* %0)
+ %1 = getelementptr inbounds %struct.btOptimizedBvh* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([10 x i32 (...)*]* @_ZTV14btOptimizedBvh, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=13]
+define void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([30 x i32 (...)*]* @_ZTV23btPolyhedralConvexShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK23btPolyhedralConvexShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btPolyhedralConvexShape* %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) align 2 {
+entry:
+ %vtx = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = icmp sgt i32 %numVectors, 0 ; [#uses=2]
+ br i1 %0, label %bb, label %return
+
+bb: ; preds = %bb, %entry
+ %i.015 = phi i32 [ %1, %bb ], [ 0, %entry ] ; [#uses=2]
+ %scevgep26 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.015, i32 0, i32 3 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %scevgep26, align 4
+ %1 = add nsw i32 %i.015, 1 ; [#uses=2]
+ %exitcond25 = icmp eq i32 %1, %numVectors ; [#uses=1]
+ br i1 %exitcond25, label %bb10.preheader, label %bb
+
+bb10.preheader: ; preds = %bb
+ br i1 %0, label %bb.nph14, label %return
+
+bb4: ; preds = %bb7.preheader, %bb6
+ %2 = phi i32 [ %tmp, %bb6 ], [ 0, %bb7.preheader ] ; [#uses=2]
+ %tmp = add i32 %2, 1 ; [#uses=2]
+ %3 = load i32 (...)*** %27, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 24 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btPolyhedralConvexShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ call void %6(%struct.btPolyhedralConvexShape* %this, i32 %2, %struct.btQuadWord* %vtx)
+ %7 = load float* %scevgep2021, align 4 ; [#uses=1]
+ %8 = load float* %28, align 8 ; [#uses=2]
+ %9 = fmul float %7, %8 ; [#uses=1]
+ %10 = load float* %scevgep22, align 4 ; [#uses=1]
+ %11 = load float* %29, align 4 ; [#uses=2]
+ %12 = fmul float %10, %11 ; [#uses=1]
+ %13 = fadd float %9, %12 ; [#uses=1]
+ %14 = load float* %scevgep23, align 4 ; [#uses=1]
+ %15 = load float* %30, align 8 ; [#uses=2]
+ %16 = fmul float %14, %15 ; [#uses=1]
+ %17 = fadd float %13, %16 ; [#uses=2]
+ %18 = load float* %scevgep24, align 4 ; [#uses=1]
+ %19 = fcmp olt float %18, %17 ; [#uses=1]
+ br i1 %19, label %bb5, label %bb6
+
+bb5: ; preds = %bb4
+ store float %8, float* %scevgep17, align 4
+ store float %11, float* %scevgep18, align 4
+ store float %15, float* %scevgep19, align 4
+ store float %17, float* %scevgep24, align 4
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %20 = load i32 (...)*** %27, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds i32 (...)** %20, i32 21 ; [#uses=1]
+ %22 = load i32 (...)** %21, align 4 ; [#uses=1]
+ %23 = bitcast i32 (...)* %22 to i32 (%struct.btPolyhedralConvexShape*)* ; [#uses=1]
+ %24 = call i32 %23(%struct.btPolyhedralConvexShape* %this) ; [#uses=1]
+ %25 = icmp sgt i32 %24, %tmp ; [#uses=1]
+ br i1 %25, label %bb4, label %bb9
+
+bb9: ; preds = %bb7.preheader, %bb6
+ %26 = add nsw i32 %j.013, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %26, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb7.preheader
+
+bb.nph14: ; preds = %bb10.preheader
+ %27 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %28 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 2 ; [#uses=1]
+ br label %bb7.preheader
+
+bb7.preheader: ; preds = %bb.nph14, %bb9
+ %j.013 = phi i32 [ 0, %bb.nph14 ], [ %26, %bb9 ] ; [#uses=8]
+ %scevgep17 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %j.013, i32 0, i32 0 ; [#uses=1]
+ %scevgep18 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.013, i32 0, i32 1 ; [#uses=1]
+ %scevgep19 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.013, i32 0, i32 2 ; [#uses=1]
+ %scevgep2021 = getelementptr inbounds %struct.btQuadWord* %vectors, i32 %j.013, i32 0, i32 0 ; [#uses=1]
+ %scevgep22 = getelementptr %struct.btQuadWord* %vectors, i32 %j.013, i32 0, i32 1 ; [#uses=1]
+ %scevgep23 = getelementptr %struct.btQuadWord* %vectors, i32 %j.013, i32 0, i32 2 ; [#uses=1]
+ %scevgep24 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %j.013, i32 0, i32 3 ; [#uses=2]
+ %31 = load i32 (...)*** %27, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds i32 (...)** %31, i32 21 ; [#uses=1]
+ %33 = load i32 (...)** %32, align 4 ; [#uses=1]
+ %34 = bitcast i32 (...)* %33 to i32 (%struct.btPolyhedralConvexShape*)* ; [#uses=1]
+ %35 = call i32 %34(%struct.btPolyhedralConvexShape* %this) ; [#uses=1]
+ %36 = icmp sgt i32 %35, 0 ; [#uses=1]
+ br i1 %36, label %bb4, label %bb9
+
+return: ; preds = %bb9, %bb10.preheader, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK23btPolyhedralConvexShape21calculateLocalInertiaEfR9btVector3(%struct.btPolyhedralConvexShape* %this, float %mass, %struct.btQuadWord* nocapture %inertia) align 2 {
+entry:
+ %ident = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %aabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %aabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0 ; [#uses=2]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = call float %5(%struct.btConvexInternalShape* %4) ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %7, align 8
+ %8 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 8
+ %10 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 8
+ %12 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 8
+ %14 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 8
+ %16 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %17, align 8
+ %18 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 8
+ %20 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 8
+ %22 = getelementptr inbounds %struct.btTransform* %ident, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ %23 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds i32 (...)** %23, i32 2 ; [#uses=1]
+ %25 = load i32 (...)** %24, align 4 ; [#uses=1]
+ %26 = bitcast i32 (...)* %25 to void (%struct.btConvexInternalShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %26(%struct.btConvexInternalShape* %4, %struct.btTransform* %ident, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ %27 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 8 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 8 ; [#uses=1]
+ %31 = fsub float %28, %30 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fsub float %33, %35 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %37, align 8 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 8 ; [#uses=1]
+ %41 = fsub float %38, %40 ; [#uses=1]
+ %42 = fmul float %31, 5.000000e-01 ; [#uses=1]
+ %43 = fmul float %36, 5.000000e-01 ; [#uses=1]
+ %44 = fmul float %41, 5.000000e-01 ; [#uses=1]
+ %45 = fadd float %44, %6 ; [#uses=1]
+ %46 = fmul float %45, 2.000000e+00 ; [#uses=2]
+ %47 = fadd float %43, %6 ; [#uses=1]
+ %48 = fmul float %47, 2.000000e+00 ; [#uses=2]
+ %49 = fadd float %42, %6 ; [#uses=1]
+ %50 = fmul float %49, 2.000000e+00 ; [#uses=2]
+ %51 = fmul float %46, %46 ; [#uses=2]
+ %52 = fmul float %48, %48 ; [#uses=2]
+ %53 = fmul float %50, %50 ; [#uses=2]
+ %54 = fmul float %mass, 0x3FB5555540000000 ; [#uses=3]
+ %55 = fadd float %51, %52 ; [#uses=1]
+ %56 = fadd float %51, %53 ; [#uses=1]
+ %57 = fadd float %52, %53 ; [#uses=1]
+ %58 = fmul float %55, %54 ; [#uses=1]
+ %59 = fmul float %56, %54 ; [#uses=1]
+ %60 = fmul float %57, %54 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %60, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %59, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %58, float* %63, align 4
+ %64 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %64, align 4
+ ret void
+}
+
+; [#uses=2]
+define void @_ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4_(%struct.btPolyhedralConvexAabbCachingShape* %this, %struct.btTransform* nocapture %trans, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ %11 = fsub float %8, %10 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=2]
+ %16 = fsub float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=2]
+ %21 = fsub float %18, %20 ; [#uses=1]
+ %22 = fmul float %11, 5.000000e-01 ; [#uses=1]
+ %23 = fmul float %16, 5.000000e-01 ; [#uses=1]
+ %24 = fmul float %21, 5.000000e-01 ; [#uses=1]
+ %25 = fadd float %24, %6 ; [#uses=3]
+ %26 = fadd float %23, %6 ; [#uses=3]
+ %27 = fadd float %22, %6 ; [#uses=3]
+ %28 = fadd float %8, %10 ; [#uses=1]
+ %29 = fadd float %13, %15 ; [#uses=1]
+ %30 = fadd float %18, %20 ; [#uses=1]
+ %31 = fmul float %28, 5.000000e-01 ; [#uses=3]
+ %32 = fmul float %29, 5.000000e-01 ; [#uses=3]
+ %33 = fmul float %30, 5.000000e-01 ; [#uses=3]
+ %34 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=2]
+ %36 = tail call float @fabsf(float %35) nounwind readnone ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=2]
+ %39 = tail call float @fabsf(float %38) nounwind readnone ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=2]
+ %42 = tail call float @fabsf(float %41) nounwind readnone ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=2]
+ %45 = tail call float @fabsf(float %44) nounwind readnone ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=2]
+ %48 = tail call float @fabsf(float %47) nounwind readnone ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=2]
+ %51 = tail call float @fabsf(float %50) nounwind readnone ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=2]
+ %54 = tail call float @fabsf(float %53) nounwind readnone ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=2]
+ %57 = tail call float @fabsf(float %56) nounwind readnone ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=2]
+ %60 = tail call float @fabsf(float %59) nounwind readnone ; [#uses=1]
+ %61 = fmul float %41, %33 ; [#uses=1]
+ %62 = fmul float %38, %32 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=1]
+ %64 = fmul float %35, %31 ; [#uses=1]
+ %65 = fadd float %63, %64 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = fadd float %65, %67 ; [#uses=2]
+ %69 = fmul float %50, %33 ; [#uses=1]
+ %70 = fmul float %47, %32 ; [#uses=1]
+ %71 = fadd float %69, %70 ; [#uses=1]
+ %72 = fmul float %44, %31 ; [#uses=1]
+ %73 = fadd float %71, %72 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = fadd float %73, %75 ; [#uses=2]
+ %77 = fmul float %59, %33 ; [#uses=1]
+ %78 = fmul float %56, %32 ; [#uses=1]
+ %79 = fadd float %77, %78 ; [#uses=1]
+ %80 = fmul float %53, %31 ; [#uses=1]
+ %81 = fadd float %79, %80 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = fadd float %81, %83 ; [#uses=2]
+ %85 = fmul float %42, %25 ; [#uses=1]
+ %86 = fmul float %39, %26 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=1]
+ %88 = fmul float %36, %27 ; [#uses=1]
+ %89 = fadd float %87, %88 ; [#uses=2]
+ %90 = fmul float %51, %25 ; [#uses=1]
+ %91 = fmul float %48, %26 ; [#uses=1]
+ %92 = fadd float %90, %91 ; [#uses=1]
+ %93 = fmul float %45, %27 ; [#uses=1]
+ %94 = fadd float %92, %93 ; [#uses=2]
+ %95 = fmul float %60, %25 ; [#uses=1]
+ %96 = fmul float %57, %26 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %54, %27 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=2]
+ %100 = fsub float %68, %89 ; [#uses=1]
+ %101 = fsub float %76, %94 ; [#uses=1]
+ %102 = fsub float %84, %99 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %102, float* %103, align 4
+ %104 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %101, float* %104, align 4
+ %105 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %100, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %106, align 4
+ %107 = fadd float %68, %89 ; [#uses=1]
+ %108 = fadd float %76, %94 ; [#uses=1]
+ %109 = fadd float %84, %99 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %109, float* %110, align 4
+ %111 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %108, float* %111, align 4
+ %112 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %107, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %113, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btPolyhedralConvexShapeD0Ev(%struct.btPolyhedralConvexShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btPolyhedralConvexShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btPolyhedralConvexShapeD1Ev(%struct.btPolyhedralConvexShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK23btPolyhedralConvexShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btPolyhedralConvexShape* %this, %struct.btQuadWord* nocapture %vec0) align 2 {
+entry:
+ %vtx = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = getelementptr inbounds %struct.btQuadWord* %vec0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=3]
+ %10 = fmul float %5, %5 ; [#uses=1]
+ %11 = fmul float %7, %7 ; [#uses=1]
+ %12 = fadd float %10, %11 ; [#uses=1]
+ %13 = fmul float %9, %9 ; [#uses=1]
+ %14 = fadd float %12, %13 ; [#uses=2]
+ %15 = fcmp olt float %14, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %15, label %bb2, label %bb1
+
+bb1: ; preds = %entry
+ %16 = call float @sqrtf(float %14) nounwind readonly ; [#uses=1]
+ %17 = fdiv float 1.000000e+00, %16 ; [#uses=3]
+ %18 = fmul float %5, %17 ; [#uses=1]
+ %19 = fmul float %7, %17 ; [#uses=1]
+ %20 = fmul float %9, %17 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb1, %entry
+ %vec.0.2.0 = phi float [ %20, %bb1 ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %vec.0.1.0 = phi float [ %19, %bb1 ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %vec.0.0.0 = phi float [ %18, %bb1 ], [ 1.000000e+00, %entry ] ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %22 = load i32 (...)*** %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds i32 (...)** %22, i32 21 ; [#uses=1]
+ %24 = load i32 (...)** %23, align 4 ; [#uses=1]
+ %25 = bitcast i32 (...)* %24 to i32 (%struct.btPolyhedralConvexShape*)* ; [#uses=1]
+ %26 = call i32 %25(%struct.btPolyhedralConvexShape* %this) ; [#uses=1]
+ %27 = icmp sgt i32 %26, 0 ; [#uses=1]
+ br i1 %27, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb2
+ %28 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 2 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb5, %bb.nph
+ %maxDot.114 = phi float [ 0xC3ABC16D60000000, %bb.nph ], [ %maxDot.0, %bb5 ] ; [#uses=2]
+ %32 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb5 ] ; [#uses=2]
+ %tmp = add i32 %32, 1 ; [#uses=2]
+ %33 = load i32 (...)*** %21, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds i32 (...)** %33, i32 24 ; [#uses=1]
+ %35 = load i32 (...)** %34, align 4 ; [#uses=1]
+ %36 = bitcast i32 (...)* %35 to void (%struct.btPolyhedralConvexShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ call void %36(%struct.btPolyhedralConvexShape* %this, i32 %32, %struct.btQuadWord* %vtx)
+ %37 = load float* %28, align 8 ; [#uses=2]
+ %38 = fmul float %vec.0.0.0, %37 ; [#uses=1]
+ %39 = load float* %29, align 4 ; [#uses=2]
+ %40 = fmul float %vec.0.1.0, %39 ; [#uses=1]
+ %41 = fadd float %38, %40 ; [#uses=1]
+ %42 = load float* %30, align 8 ; [#uses=2]
+ %43 = fmul float %vec.0.2.0, %42 ; [#uses=1]
+ %44 = fadd float %41, %43 ; [#uses=2]
+ %45 = fcmp ogt float %44, %maxDot.114 ; [#uses=1]
+ br i1 %45, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ store float %37, float* %0, align 4
+ store float %39, float* %1, align 4
+ store float %42, float* %2, align 4
+ %46 = load float* %31, align 4 ; [#uses=1]
+ store float %46, float* %3, align 4
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ %maxDot.0 = phi float [ %44, %bb4 ], [ %maxDot.114, %bb3 ] ; [#uses=1]
+ %47 = load i32 (...)*** %21, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds i32 (...)** %47, i32 21 ; [#uses=1]
+ %49 = load i32 (...)** %48, align 4 ; [#uses=1]
+ %50 = bitcast i32 (...)* %49 to i32 (%struct.btPolyhedralConvexShape*)* ; [#uses=1]
+ %51 = call i32 %50(%struct.btPolyhedralConvexShape* %this) ; [#uses=1]
+ %52 = icmp sgt i32 %51, %tmp ; [#uses=1]
+ br i1 %52, label %bb3, label %return
+
+return: ; preds = %bb5, %bb2
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN34btPolyhedralConvexAabbCachingShapeD0Ev(%struct.btPolyhedralConvexAabbCachingShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btPolyhedralConvexAabbCachingShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN34btPolyhedralConvexAabbCachingShapeD1Ev(%struct.btPolyhedralConvexAabbCachingShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN34btPolyhedralConvexAabbCachingShape15setLocalScalingERK9btVector3(%struct.btPolyhedralConvexAabbCachingShape* %this, %struct.btQuadWord* %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShape15setLocalScalingERK9btVector3(%struct.btConvexInternalShape* %0, %struct.btQuadWord* %scaling)
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %this)
+ ret void
+}
+
+; [#uses=20]
+define void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %this) align 2 {
+entry:
+ %_supporting = alloca [6 x %struct.btQuadWord], align 8 ; [#uses=8]
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 1, i8* %0, align 4
+ %1 = load i8* bitcast (i64* @_ZGVZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions to i8*), align 8 ; [#uses=1]
+ %2 = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions) nounwind ; [#uses=1]
+ %4 = icmp eq i32 %3, 0 ; [#uses=1]
+ br i1 %4, label %return, label %bb1
+
+bb1: ; preds = %bb
+ store float 1.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 0, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 0, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 0, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 1, i32 0, i32 0), align 16
+ store float 1.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 1, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 1, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 1, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 2, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 2, i32 0, i32 1), align 4
+ store float 1.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 2, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 2, i32 0, i32 3), align 4
+ store float -1.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 3, i32 0, i32 0), align 16
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 3, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 3, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 3, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 4, i32 0, i32 0), align 32
+ store float -1.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 4, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 4, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 4, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 5, i32 0, i32 0), align 16
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 5, i32 0, i32 1), align 4
+ store float -1.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 5, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 5, i32 0, i32 3), align 4
+ call void @__cxa_guard_release(i64* @_ZGVZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions) nounwind
+ br label %return
+
+return: ; preds = %bb1, %bb, %entry
+ %5 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = bitcast [6 x %struct.btQuadWord]* %_supporting to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %6, i8 0, i64 96, i32 8, i1 false)
+ %7 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 17 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0 ; [#uses=1]
+ %11 = bitcast i32 (...)* %9 to void (%struct.btPolyhedralConvexShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* ; [#uses=1]
+ %12 = getelementptr inbounds [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 0 ; [#uses=1]
+ call void %11(%struct.btPolyhedralConvexShape* %10, %struct.btQuadWord* getelementptr inbounds ([6 x %struct.btQuadWord]* @_ZZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEvE11_directions, i32 0, i32 0), %struct.btQuadWord* %12, i32 6)
+ %13 = getelementptr inbounds [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep7 = getelementptr %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %13, align 8 ; [#uses=1]
+ %17 = load float* %15, align 4 ; [#uses=6]
+ %18 = fadd float %16, %17 ; [#uses=1]
+ store float %18, float* %scevgep7, align 4
+ %19 = load float* %14, align 8 ; [#uses=1]
+ %20 = fsub float %19, %17 ; [#uses=1]
+ store float %20, float* %scevgep9, align 4
+ %scevgep.1 = getelementptr [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 0, i32 0, i32 5 ; [#uses=1]
+ %scevgep7.1 = getelementptr %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep8.1 = getelementptr [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 3, i32 0, i32 5 ; [#uses=1]
+ %scevgep9.1 = getelementptr %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %scevgep.1, align 4 ; [#uses=1]
+ %22 = fadd float %21, %17 ; [#uses=1]
+ store float %22, float* %scevgep7.1, align 4
+ %23 = load float* %scevgep8.1, align 4 ; [#uses=1]
+ %24 = fsub float %23, %17 ; [#uses=1]
+ store float %24, float* %scevgep9.1, align 4
+ %scevgep.2 = getelementptr [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 0, i32 0, i32 10 ; [#uses=1]
+ %scevgep7.2 = getelementptr %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep8.2 = getelementptr [6 x %struct.btQuadWord]* %_supporting, i32 0, i32 3, i32 0, i32 10 ; [#uses=1]
+ %scevgep9.2 = getelementptr %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %scevgep.2, align 8 ; [#uses=1]
+ %26 = fadd float %25, %17 ; [#uses=1]
+ store float %26, float* %scevgep7.2, align 4
+ %27 = load float* %scevgep8.2, align 8 ; [#uses=1]
+ %28 = fsub float %27, %17 ; [#uses=1]
+ store float %28, float* %scevgep9.2, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btPolyhedralConvexShapeC1Ev(%struct.btPolyhedralConvexShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([30 x i32 (...)*]* @_ZTV23btPolyhedralConvexShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN34btPolyhedralConvexAabbCachingShapeC1Ev(%struct.btPolyhedralConvexAabbCachingShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([30 x i32 (...)*]* @_ZTV34btPolyhedralConvexAabbCachingShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float -1.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float -1.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float -1.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 0, i8* %10, align 4
+ ret void
+}
+
+; [#uses=10]
+define void @_ZN34btPolyhedralConvexAabbCachingShapeC2Ev(%struct.btPolyhedralConvexAabbCachingShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %0)
+ %1 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([30 x i32 (...)*]* @_ZTV34btPolyhedralConvexAabbCachingShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float -1.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float -1.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float -1.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btPolyhedralConvexAabbCachingShape* %this, i32 0, i32 3 ; [#uses=1]
+ store i8 0, i8* %10, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN28btScaledBvhTriangleMeshShapeC2EP22btBvhTriangleMeshShapeRK9btVector3(%struct.btScaledBvhTriangleMeshShape* %this, %struct.btBvhTriangleMeshShape* %childShape, %struct.btQuadWord* nocapture %localScaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeC2Ev(%struct.btConcaveShape* %0)
+ %1 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV28btScaledBvhTriangleMeshShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %localScaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %localScaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %localScaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %localScaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btBvhTriangleMeshShape* %childShape, %struct.btBvhTriangleMeshShape** %14, align 4
+ %15 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 22, i32* %15, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK28btScaledBvhTriangleMeshShape7getNameEv(%struct.btScaledBvhTriangleMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([22 x i8]* @.str111, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN24btScaledTriangleCallbackD1Ev(%struct.btScaledTriangleCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btScaledTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btScaledTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btScaledTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN24btScaledTriangleCallbackD0Ev(%struct.btScaledTriangleCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btScaledTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btScaledTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btScaledTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct.btScaledTriangleCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN24btScaledTriangleCallback15processTriangleEP9btVector3ii(%struct.btScaledTriangleCallback* nocapture %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) align 2 {
+bb2:
+ %newTriangle = alloca [3 x %struct.btQuadWord], align 8 ; [#uses=13]
+ %0 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btScaledTriangleCallback* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btScaledTriangleCallback* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btScaledTriangleCallback* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = fmul float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds [3 x %struct.btQuadWord]* %newTriangle, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %14, float* %15, align 8
+ %16 = getelementptr inbounds [3 x %struct.btQuadWord]* %newTriangle, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %9, float* %16, align 4
+ %17 = getelementptr inbounds [3 x %struct.btQuadWord]* %newTriangle, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %4, float* %17, align 8
+ %18 = getelementptr inbounds [3 x %struct.btQuadWord]* %newTriangle, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fmul float %20, %3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fmul float %23, %8 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = fmul float %26, %13 ; [#uses=1]
+ %28 = getelementptr inbounds [3 x %struct.btQuadWord]* %newTriangle, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %27, float* %28, align 8
+ %29 = getelementptr inbounds [3 x %struct.btQuadWord]* %newTriangle, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %24, float* %29, align 4
+ %30 = getelementptr inbounds [3 x %struct.btQuadWord]* %newTriangle, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %21, float* %30, align 8
+ %31 = getelementptr inbounds [3 x %struct.btQuadWord]* %newTriangle, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fmul float %33, %3 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = fmul float %36, %8 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fmul float %39, %13 ; [#uses=1]
+ %41 = getelementptr inbounds [3 x %struct.btQuadWord]* %newTriangle, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %40, float* %41, align 8
+ %42 = getelementptr inbounds [3 x %struct.btQuadWord]* %newTriangle, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %37, float* %42, align 4
+ %43 = getelementptr inbounds [3 x %struct.btQuadWord]* %newTriangle, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %34, float* %43, align 8
+ %44 = getelementptr inbounds [3 x %struct.btQuadWord]* %newTriangle, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %44, align 4
+ %45 = getelementptr inbounds %struct.btScaledTriangleCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %46 = load %struct.btActionInterface** %45, align 4 ; [#uses=2]
+ %47 = getelementptr inbounds %struct.btActionInterface* %46, i32 0, i32 0 ; [#uses=1]
+ %48 = load i32 (...)*** %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds i32 (...)** %48, i32 2 ; [#uses=1]
+ %50 = load i32 (...)** %49, align 4 ; [#uses=1]
+ %51 = bitcast i32 (...)* %50 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ %52 = getelementptr inbounds [3 x %struct.btQuadWord]* %newTriangle, i32 0, i32 0 ; [#uses=1]
+ call void %51(%struct.btActionInterface* %46, %struct.btQuadWord* %52, i32 %partId, i32 %triangleIndex)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK28btScaledBvhTriangleMeshShape7getAabbERK11btTransformR9btVector3S4_(%struct.btScaledBvhTriangleMeshShape* nocapture %this, %struct.btTransform* nocapture %trans, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %tmpLocalAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %tmpLocalAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 2 ; [#uses=1]
+ %1 = load %struct.btBvhTriangleMeshShape** %0, align 4 ; [#uses=8]
+ %2 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=4]
+ %16 = fmul float %7, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=4]
+ %19 = fmul float %5, %18 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=4]
+ %22 = fmul float %3, %21 ; [#uses=3]
+ %23 = getelementptr inbounds %struct.btQuadWord* %tmpLocalAabbMin, i32 0, i32 0, i32 0 ; [#uses=5]
+ store float %22, float* %23, align 8
+ %24 = getelementptr inbounds %struct.btQuadWord* %tmpLocalAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %19, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btQuadWord* %tmpLocalAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %16, float* %25, align 8
+ %26 = getelementptr inbounds %struct.btQuadWord* %tmpLocalAabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = fmul float %13, %15 ; [#uses=1]
+ %28 = fmul float %11, %18 ; [#uses=1]
+ %29 = fmul float %9, %21 ; [#uses=3]
+ %30 = getelementptr inbounds %struct.btQuadWord* %tmpLocalAabbMax, i32 0, i32 0, i32 0 ; [#uses=5]
+ store float %29, float* %30, align 8
+ %31 = getelementptr inbounds %struct.btQuadWord* %tmpLocalAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %28, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btQuadWord* %tmpLocalAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %27, float* %32, align 8
+ %33 = getelementptr inbounds %struct.btQuadWord* %tmpLocalAabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = fcmp ult float %21, 0.000000e+00 ; [#uses=1]
+ %iftmp.224.0 = select i1 %34, float %29, float %22 ; [#uses=2]
+ %35 = fcmp ult float %18, 0.000000e+00 ; [#uses=1]
+ %.pn = select i1 %35, float* %30, float* %23 ; [#uses=1]
+ %iftmp.225.0.in = getelementptr inbounds float* %.pn, i32 1 ; [#uses=1]
+ %iftmp.225.0 = load float* %iftmp.225.0.in, align 4 ; [#uses=2]
+ %36 = fcmp ult float %15, 0.000000e+00 ; [#uses=1]
+ %.pn19 = select i1 %36, float* %30, float* %23 ; [#uses=1]
+ %iftmp.226.0.in = getelementptr inbounds float* %.pn19, i32 2 ; [#uses=1]
+ %iftmp.226.0 = load float* %iftmp.226.0.in, align 4 ; [#uses=2]
+ %37 = fcmp ugt float %21, 0.000000e+00 ; [#uses=1]
+ %iftmp.227.0 = select i1 %37, float %29, float %22 ; [#uses=2]
+ %38 = fcmp ugt float %18, 0.000000e+00 ; [#uses=1]
+ %.pn20 = select i1 %38, float* %30, float* %23 ; [#uses=1]
+ %iftmp.228.0.in = getelementptr inbounds float* %.pn20, i32 1 ; [#uses=1]
+ %iftmp.228.0 = load float* %iftmp.228.0.in, align 4 ; [#uses=2]
+ %39 = fcmp ugt float %15, 0.000000e+00 ; [#uses=1]
+ %.pn21 = select i1 %39, float* %30, float* %23 ; [#uses=1]
+ %iftmp.229.0.in = getelementptr inbounds float* %.pn21, i32 2 ; [#uses=1]
+ %iftmp.229.0 = load float* %iftmp.229.0.in, align 4 ; [#uses=2]
+ %40 = fsub float %iftmp.229.0, %iftmp.226.0 ; [#uses=1]
+ %41 = fsub float %iftmp.228.0, %iftmp.225.0 ; [#uses=1]
+ %42 = fsub float %iftmp.227.0, %iftmp.224.0 ; [#uses=1]
+ %43 = fmul float %40, 5.000000e-01 ; [#uses=1]
+ %44 = fmul float %41, 5.000000e-01 ; [#uses=1]
+ %45 = fmul float %42, 5.000000e-01 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %47 = load i32 (...)*** %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds i32 (...)** %47, i32 11 ; [#uses=1]
+ %49 = load i32 (...)** %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = bitcast i32 (...)* %49 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %52 = call float %51(%struct.btConcaveShape* %50) ; [#uses=3]
+ %53 = fadd float %45, %52 ; [#uses=3]
+ %54 = fadd float %44, %52 ; [#uses=3]
+ %55 = fadd float %43, %52 ; [#uses=3]
+ %56 = fadd float %iftmp.229.0, %iftmp.226.0 ; [#uses=1]
+ %57 = fadd float %iftmp.228.0, %iftmp.225.0 ; [#uses=1]
+ %58 = fadd float %iftmp.227.0, %iftmp.224.0 ; [#uses=1]
+ %59 = fmul float %56, 5.000000e-01 ; [#uses=3]
+ %60 = fmul float %57, 5.000000e-01 ; [#uses=3]
+ %61 = fmul float %58, 5.000000e-01 ; [#uses=3]
+ %62 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=2]
+ %64 = call float @fabsf(float %63) nounwind readnone ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=2]
+ %67 = call float @fabsf(float %66) nounwind readnone ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=2]
+ %70 = call float @fabsf(float %69) nounwind readnone ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=2]
+ %73 = call float @fabsf(float %72) nounwind readnone ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=2]
+ %76 = call float @fabsf(float %75) nounwind readnone ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=2]
+ %79 = call float @fabsf(float %78) nounwind readnone ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=2]
+ %82 = call float @fabsf(float %81) nounwind readnone ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=2]
+ %85 = call float @fabsf(float %84) nounwind readnone ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=2]
+ %88 = call float @fabsf(float %87) nounwind readnone ; [#uses=1]
+ %89 = fmul float %69, %61 ; [#uses=1]
+ %90 = fmul float %66, %60 ; [#uses=1]
+ %91 = fadd float %89, %90 ; [#uses=1]
+ %92 = fmul float %63, %59 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ %96 = fadd float %93, %95 ; [#uses=2]
+ %97 = fmul float %78, %61 ; [#uses=1]
+ %98 = fmul float %75, %60 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=1]
+ %100 = fmul float %72, %59 ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %103 = load float* %102, align 4 ; [#uses=1]
+ %104 = fadd float %101, %103 ; [#uses=2]
+ %105 = fmul float %87, %61 ; [#uses=1]
+ %106 = fmul float %84, %60 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = fmul float %81, %59 ; [#uses=1]
+ %109 = fadd float %107, %108 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %111 = load float* %110, align 4 ; [#uses=1]
+ %112 = fadd float %109, %111 ; [#uses=2]
+ %113 = fmul float %70, %53 ; [#uses=1]
+ %114 = fmul float %67, %54 ; [#uses=1]
+ %115 = fadd float %113, %114 ; [#uses=1]
+ %116 = fmul float %64, %55 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=2]
+ %118 = fmul float %79, %53 ; [#uses=1]
+ %119 = fmul float %76, %54 ; [#uses=1]
+ %120 = fadd float %118, %119 ; [#uses=1]
+ %121 = fmul float %73, %55 ; [#uses=1]
+ %122 = fadd float %120, %121 ; [#uses=2]
+ %123 = fmul float %88, %53 ; [#uses=1]
+ %124 = fmul float %85, %54 ; [#uses=1]
+ %125 = fadd float %123, %124 ; [#uses=1]
+ %126 = fmul float %82, %55 ; [#uses=1]
+ %127 = fadd float %125, %126 ; [#uses=2]
+ %128 = fsub float %96, %117 ; [#uses=1]
+ %129 = fsub float %104, %122 ; [#uses=1]
+ %130 = fsub float %112, %127 ; [#uses=1]
+ %131 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %130, float* %131, align 4
+ %132 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %129, float* %132, align 4
+ %133 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %128, float* %133, align 4
+ %134 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %134, align 4
+ %135 = fadd float %96, %117 ; [#uses=1]
+ %136 = fadd float %104, %122 ; [#uses=1]
+ %137 = fadd float %112, %127 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %137, float* %138, align 4
+ %139 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %136, float* %139, align 4
+ %140 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %135, float* %140, align 4
+ %141 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %141, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN28btScaledBvhTriangleMeshShape15setLocalScalingERK9btVector3(%struct.btScaledBvhTriangleMeshShape* nocapture %this, %struct.btQuadWord* nocapture %scaling) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define %struct.btQuadWord* @_ZNK28btScaledBvhTriangleMeshShape15getLocalScalingEv(%struct.btScaledBvhTriangleMeshShape* %this) nounwind readnone align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ ret %struct.btQuadWord* %0
+}
+
+; [#uses=1]
+define void @_ZNK28btScaledBvhTriangleMeshShape21calculateLocalInertiaEfR9btVector3(%struct.btScaledBvhTriangleMeshShape* nocapture %this, float %mass, %struct.btQuadWord* nocapture %inertia) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK28btScaledBvhTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_(%struct.btScaledBvhTriangleMeshShape* nocapture %this, %struct.btActionInterface* %callback, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %scaledCallback = alloca %struct.btScaledTriangleCallback, align 8 ; [#uses=7]
+ %scaledAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %scaledAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btScaledTriangleCallback* %scaledCallback, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btScaledTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ %1 = getelementptr inbounds %struct.btScaledTriangleCallback* %scaledCallback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %callback, %struct.btActionInterface** %1, align 4
+ %2 = getelementptr inbounds %struct.btScaledTriangleCallback* %scaledCallback, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=4]
+ store float %4, float* %2, align 8
+ %5 = getelementptr inbounds %struct.btScaledTriangleCallback* %scaledCallback, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=4]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btScaledTriangleCallback* %scaledCallback, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=4]
+ store float %10, float* %8, align 8
+ %11 = getelementptr inbounds %struct.btScaledTriangleCallback* %scaledCallback, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = fdiv float 1.000000e+00, %10 ; [#uses=2]
+ %15 = fdiv float 1.000000e+00, %7 ; [#uses=2]
+ %16 = fdiv float 1.000000e+00, %4 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btQuadWord* %scaledAabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = fcmp ult float %4, 0.000000e+00 ; [#uses=1]
+ %aabbMin.pn = select i1 %18, %struct.btQuadWord* %aabbMax, %struct.btQuadWord* %aabbMin ; [#uses=1]
+ %.pn.in = getelementptr inbounds %struct.btQuadWord* %aabbMin.pn, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pn = load float* %.pn.in, align 4 ; [#uses=1]
+ %iftmp.218.0 = fmul float %.pn, %16 ; [#uses=1]
+ store float %iftmp.218.0, float* %17, align 8
+ %19 = fcmp ult float %7, 0.000000e+00 ; [#uses=1]
+ %aabbMin.pn48 = select i1 %19, %struct.btQuadWord* %aabbMax, %struct.btQuadWord* %aabbMin ; [#uses=1]
+ %.pn43.in = getelementptr inbounds %struct.btQuadWord* %aabbMin.pn48, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pn43 = load float* %.pn43.in, align 4 ; [#uses=1]
+ %iftmp.219.0 = fmul float %.pn43, %15 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %scaledAabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %iftmp.219.0, float* %20, align 4
+ %21 = fcmp ult float %10, 0.000000e+00 ; [#uses=1]
+ %aabbMin.pn49 = select i1 %21, %struct.btQuadWord* %aabbMax, %struct.btQuadWord* %aabbMin ; [#uses=1]
+ %.pn44.in = getelementptr inbounds %struct.btQuadWord* %aabbMin.pn49, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pn44 = load float* %.pn44.in, align 4 ; [#uses=1]
+ %iftmp.220.0 = fmul float %.pn44, %14 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %scaledAabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %iftmp.220.0, float* %22, align 8
+ %23 = getelementptr inbounds %struct.btQuadWord* %scaledAabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %24 = fcmp ugt float %4, 0.000000e+00 ; [#uses=1]
+ %aabbMin.pn50 = select i1 %24, %struct.btQuadWord* %aabbMax, %struct.btQuadWord* %aabbMin ; [#uses=1]
+ %.pn45.in = getelementptr inbounds %struct.btQuadWord* %aabbMin.pn50, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pn45 = load float* %.pn45.in, align 4 ; [#uses=1]
+ %iftmp.221.0 = fmul float %.pn45, %16 ; [#uses=1]
+ store float %iftmp.221.0, float* %23, align 8
+ %25 = fcmp ugt float %7, 0.000000e+00 ; [#uses=1]
+ %aabbMin.pn51 = select i1 %25, %struct.btQuadWord* %aabbMax, %struct.btQuadWord* %aabbMin ; [#uses=1]
+ %.pn46.in = getelementptr inbounds %struct.btQuadWord* %aabbMin.pn51, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pn46 = load float* %.pn46.in, align 4 ; [#uses=1]
+ %iftmp.222.0 = fmul float %.pn46, %15 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %scaledAabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %iftmp.222.0, float* %26, align 4
+ %27 = fcmp ugt float %10, 0.000000e+00 ; [#uses=1]
+ %aabbMin.pn52 = select i1 %27, %struct.btQuadWord* %aabbMax, %struct.btQuadWord* %aabbMin ; [#uses=1]
+ %.pn47.in = getelementptr inbounds %struct.btQuadWord* %aabbMin.pn52, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pn47 = load float* %.pn47.in, align 4 ; [#uses=1]
+ %iftmp.223.0 = fmul float %.pn47, %14 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %scaledAabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %iftmp.223.0, float* %28, align 8
+ %29 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 2 ; [#uses=1]
+ %30 = load %struct.btBvhTriangleMeshShape** %29, align 4 ; [#uses=2]
+ %31 = getelementptr inbounds %struct.btBvhTriangleMeshShape* %30, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %32 = load i32 (...)*** %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32 (...)** %32, i32 15 ; [#uses=1]
+ %34 = load i32 (...)** %33, align 4 ; [#uses=1]
+ %35 = bitcast i32 (...)* %34 to void (%struct.btBvhTriangleMeshShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btScaledTriangleCallback* %scaledCallback, i32 0, i32 0 ; [#uses=3]
+ invoke void %35(%struct.btBvhTriangleMeshShape* %30, %struct.btActionInterface* %36, %struct.btQuadWord* %scaledAabbMin, %struct.btQuadWord* %scaledAabbMax)
+ to label %bb21 unwind label %lpad
+
+invcont19: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb21: ; preds = %entry
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btScaledTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %36)
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select23 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV24btScaledTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %36)
+ to label %invcont19 unwind label %lpad24
+
+lpad24: ; preds = %lpad
+ %eh_ptr25 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select27 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr25, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN28btScaledBvhTriangleMeshShapeD0Ev(%struct.btScaledBvhTriangleMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV28btScaledBvhTriangleMeshShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ %2 = bitcast %struct.btScaledBvhTriangleMeshShape* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN28btScaledBvhTriangleMeshShapeD1Ev(%struct.btScaledBvhTriangleMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV28btScaledBvhTriangleMeshShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN28btScaledBvhTriangleMeshShapeD2Ev(%struct.btScaledBvhTriangleMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV28btScaledBvhTriangleMeshShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN28btScaledBvhTriangleMeshShapeC1EP22btBvhTriangleMeshShapeRK9btVector3(%struct.btScaledBvhTriangleMeshShape* %this, %struct.btBvhTriangleMeshShape* %childShape, %struct.btQuadWord* nocapture %localScaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeC2Ev(%struct.btConcaveShape* %0)
+ %1 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV28btScaledBvhTriangleMeshShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %localScaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %localScaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %localScaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %localScaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btBvhTriangleMeshShape* %childShape, %struct.btBvhTriangleMeshShape** %14, align 4
+ %15 = getelementptr inbounds %struct.btScaledBvhTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 22, i32* %15, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN11btShapeHullC2EPK13btConvexShape(%struct.btShapeHull* nocapture %this, %struct.btConvexShape* %shape) align 2 {
+invcont2:
+ %0 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConvexShape* %shape, %struct.btConvexShape** %8, align 4
+ store i8 1, i8* %0, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %1, align 4
+ store i32 0, i32* %2, align 4
+ store i32 0, i32* %3, align 4
+ store i8 1, i8* %4, align 4
+ store i32* null, i32** %5, align 4
+ store i32 0, i32* %6, align 4
+ store i32 0, i32* %7, align 4
+ %9 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ ret void
+}
+
+; [#uses=0]
+define i32 @_ZNK11btShapeHull12numTrianglesEv(%struct.btShapeHull* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 2 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = udiv i32 %1, 3 ; [#uses=1]
+ ret i32 %2
+}
+
+; [#uses=0]
+define i32 @_ZNK11btShapeHull10numIndicesEv(%struct.btShapeHull* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 2 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=0]
+define i32 @_ZNK11btShapeHull11numVerticesEv(%struct.btShapeHull* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=2]
+define %struct.btQuadWord* @_ZN11btShapeHull19getUnitSpherePointsEv() nounwind align 2 {
+entry:
+ %0 = load i8* bitcast (i64* @_ZGVZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints to i8*), align 8 ; [#uses=1]
+ %1 = icmp eq i8 %0, 0 ; [#uses=1]
+ br i1 %1, label %bb, label %bb5
+
+bb: ; preds = %entry
+ %2 = tail call i32 @__cxa_guard_acquire(i64* @_ZGVZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints) nounwind ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb5, label %bb4
+
+bb4: ; preds = %bb
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 0, i32 0, i32 0), align 32
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 0, i32 0, i32 1), align 4
+ store float -1.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 0, i32 0, i32 3), align 4
+ store float 0x3FE727CC00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 1, i32 0, i32 0), align 16
+ store float 0xBFE0D2BD40000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 1, i32 0, i32 1), align 4
+ store float 0xBFDC9F3C80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 1, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 1, i32 0, i32 3), align 4
+ store float 0xBFD1B05740000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 2, i32 0, i32 0), align 32
+ store float 0xBFEB388440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 2, i32 0, i32 1), align 4
+ store float 0xBFDC9F3C80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 2, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 2, i32 0, i32 3), align 4
+ store float 0xBFEC9F2340000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 3, i32 0, i32 0), align 16
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 3, i32 0, i32 1), align 4
+ store float 0xBFDC9F2FE0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 3, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 3, i32 0, i32 3), align 4
+ store float 0xBFD1B05740000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 4, i32 0, i32 0), align 32
+ store float 0x3FEB388440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 4, i32 0, i32 1), align 4
+ store float 0xBFDC9F40A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 4, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 4, i32 0, i32 3), align 4
+ store float 0x3FE727CC00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 5, i32 0, i32 0), align 16
+ store float 0x3FE0D2BD40000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 5, i32 0, i32 1), align 4
+ store float 0xBFDC9F3C80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 5, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 5, i32 0, i32 3), align 4
+ store float 0x3FD1B05740000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 6, i32 0, i32 0), align 32
+ store float 0xBFEB388440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 6, i32 0, i32 1), align 4
+ store float 0x3FDC9F40A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 6, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 6, i32 0, i32 3), align 4
+ store float 0xBFE727CC00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 7, i32 0, i32 0), align 16
+ store float 0xBFE0D2BD40000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 7, i32 0, i32 1), align 4
+ store float 0x3FDC9F3C80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 7, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 7, i32 0, i32 3), align 4
+ store float 0xBFE727CC00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 8, i32 0, i32 0), align 32
+ store float 0x3FE0D2BD40000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 8, i32 0, i32 1), align 4
+ store float 0x3FDC9F3C80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 8, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 8, i32 0, i32 3), align 4
+ store float 0x3FD1B05740000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 9, i32 0, i32 0), align 16
+ store float 0x3FEB388440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 9, i32 0, i32 1), align 4
+ store float 0x3FDC9F3C80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 9, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 9, i32 0, i32 3), align 4
+ store float 0x3FEC9F2340000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 10, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 10, i32 0, i32 1), align 4
+ store float 0x3FDC9F2FE0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 10, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 10, i32 0, i32 3), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 11, i32 0, i32 0), align 16
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 11, i32 0, i32 1), align 4
+ store float 1.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 11, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 11, i32 0, i32 3), align 4
+ store float 0x3FDB387E00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 12, i32 0, i32 0), align 32
+ store float 0xBFD3C6D620000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 12, i32 0, i32 1), align 4
+ store float 0xBFEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 12, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 12, i32 0, i32 3), align 4
+ store float 0xBFC4CB5BC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 13, i32 0, i32 0), align 16
+ store float 0xBFDFFFEB00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 13, i32 0, i32 1), align 4
+ store float 0xBFEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 13, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 13, i32 0, i32 3), align 4
+ store float 0x3FD0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 14, i32 0, i32 0), align 32
+ store float 0xBFE9E36D20000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 14, i32 0, i32 1), align 4
+ store float 0xBFE0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 14, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 14, i32 0, i32 3), align 4
+ store float 0x3FDB387E00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 15, i32 0, i32 0), align 16
+ store float 0x3FD3C6D620000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 15, i32 0, i32 1), align 4
+ store float 0xBFEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 15, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 15, i32 0, i32 3), align 4
+ store float 0x3FEB388220000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 16, i32 0, i32 0), align 32
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 16, i32 0, i32 1), align 4
+ store float 0xBFE0D2D440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 16, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 16, i32 0, i32 3), align 4
+ store float 0xBFE0D2C7C0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 17, i32 0, i32 0), align 16
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 17, i32 0, i32 1), align 4
+ store float 0xBFEB388A80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 17, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 17, i32 0, i32 3), align 4
+ store float 0xBFE605A700000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 18, i32 0, i32 0), align 32
+ store float 0xBFDFFFF360000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 18, i32 0, i32 1), align 4
+ store float 0xBFE0D2D440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 18, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 18, i32 0, i32 3), align 4
+ store float 0xBFC4CB5BC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 19, i32 0, i32 0), align 16
+ store float 0x3FDFFFEB00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 19, i32 0, i32 1), align 4
+ store float 0xBFEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 19, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 19, i32 0, i32 3), align 4
+ store float 0xBFE605A700000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 20, i32 0, i32 0), align 32
+ store float 0x3FDFFFF360000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 20, i32 0, i32 1), align 4
+ store float 0xBFE0D2D440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 20, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 20, i32 0, i32 3), align 4
+ store float 0x3FD0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 21, i32 0, i32 0), align 16
+ store float 0x3FE9E36D20000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 21, i32 0, i32 1), align 4
+ store float 0xBFE0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 21, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 21, i32 0, i32 3), align 4
+ store float 0x3FEE6F1120000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 22, i32 0, i32 0), align 32
+ store float 0x3FD3C6DE80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 22, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 22, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 22, i32 0, i32 3), align 4
+ store float 0x3FEE6F1120000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 23, i32 0, i32 0), align 16
+ store float 0xBFD3C6DE80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 23, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 23, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 23, i32 0, i32 3), align 4
+ store float 0x3FE2CF24A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 24, i32 0, i32 0), align 32
+ store float 0xBFE9E377A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 24, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 24, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 24, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 25, i32 0, i32 0), align 16
+ store float -1.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 25, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 25, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 25, i32 0, i32 3), align 4
+ store float 0xBFE2CF24A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 26, i32 0, i32 0), align 32
+ store float 0xBFE9E377A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 26, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 26, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 26, i32 0, i32 3), align 4
+ store float 0xBFEE6F1120000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 27, i32 0, i32 0), align 16
+ store float 0xBFD3C6DE80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 27, i32 0, i32 1), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 27, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 27, i32 0, i32 3), align 4
+ store float 0xBFEE6F1120000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 28, i32 0, i32 0), align 32
+ store float 0x3FD3C6DE80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 28, i32 0, i32 1), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 28, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 28, i32 0, i32 3), align 4
+ store float 0xBFE2CF24A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 29, i32 0, i32 0), align 16
+ store float 0x3FE9E377A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 29, i32 0, i32 1), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 29, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 29, i32 0, i32 3), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 30, i32 0, i32 0), align 32
+ store float 1.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 30, i32 0, i32 1), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 30, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 30, i32 0, i32 3), align 4
+ store float 0x3FE2CF24A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 31, i32 0, i32 0), align 16
+ store float 0x3FE9E377A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 31, i32 0, i32 1), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 31, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 31, i32 0, i32 3), align 4
+ store float 0x3FE605A700000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 32, i32 0, i32 0), align 32
+ store float 0xBFDFFFF360000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 32, i32 0, i32 1), align 4
+ store float 0x3FE0D2D440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 32, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 32, i32 0, i32 3), align 4
+ store float 0xBFD0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 33, i32 0, i32 0), align 16
+ store float 0xBFE9E36D20000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 33, i32 0, i32 1), align 4
+ store float 0x3FE0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 33, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 33, i32 0, i32 3), align 4
+ store float 0xBFEB388220000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 34, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 34, i32 0, i32 1), align 4
+ store float 0x3FE0D2D440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 34, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 34, i32 0, i32 3), align 4
+ store float 0xBFD0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 35, i32 0, i32 0), align 16
+ store float 0x3FE9E36D20000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 35, i32 0, i32 1), align 4
+ store float 0x3FE0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 35, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 35, i32 0, i32 3), align 4
+ store float 0x3FE605A700000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 36, i32 0, i32 0), align 32
+ store float 0x3FDFFFF360000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 36, i32 0, i32 1), align 4
+ store float 0x3FE0D2D440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 36, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 36, i32 0, i32 3), align 4
+ store float 0x3FE0D2C7C0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 37, i32 0, i32 0), align 16
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 37, i32 0, i32 1), align 4
+ store float 0x3FEB388A80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 37, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 37, i32 0, i32 3), align 4
+ store float 0x3FC4CB5BC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 38, i32 0, i32 0), align 32
+ store float 0xBFDFFFEB00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 38, i32 0, i32 1), align 4
+ store float 0x3FEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 38, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 38, i32 0, i32 3), align 4
+ store float 0xBFDB387E00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 39, i32 0, i32 0), align 16
+ store float 0xBFD3C6D620000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 39, i32 0, i32 1), align 4
+ store float 0x3FEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 39, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 39, i32 0, i32 3), align 4
+ store float 0xBFDB387E00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 40, i32 0, i32 0), align 32
+ store float 0x3FD3C6D620000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 40, i32 0, i32 1), align 4
+ store float 0x3FEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 40, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 40, i32 0, i32 3), align 4
+ store float 0x3FC4CB5BC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 41, i32 0, i32 0), align 16
+ store float 0x3FDFFFEB00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 41, i32 0, i32 1), align 4
+ store float 0x3FEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 41, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 41, i32 0, i32 3), align 4
+ tail call void @__cxa_guard_release(i64* @_ZGVZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints) nounwind
+ ret %struct.btQuadWord* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 0)
+
+bb5: ; preds = %bb, %entry
+ ret %struct.btQuadWord* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 0)
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN10HullResultD1Ev(%struct.HullResult* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 5, i32 3 ; [#uses=3]
+ %1 = load i32** %0, align 4 ; [#uses=2]
+ %2 = icmp eq i32* %1, null ; [#uses=1]
+ br i1 %2, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %3 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %5 = bitcast i32* %1 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %0, align 4
+ br label %bb3
+
+invcont1: ; preds = %bb2.i.i.i20, %lpad
+ %6 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %6, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %21, align 4
+ %7 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %9 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %9, align 4
+ store i32* null, i32** %0, align 4
+ %10 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %13 = load %struct.btQuadWord** %12, align 4 ; [#uses=2]
+ %14 = icmp eq %struct.btQuadWord* %13, null ; [#uses=1]
+ br i1 %14, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit, label %bb.i.i.i14
+
+bb.i.i.i14: ; preds = %bb3
+ %15 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %16 = load i8* %15, align 4 ; [#uses=1]
+ %toBool.i.i.i13 = icmp eq i8 %16, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i13, label %bb2.i.i.i16, label %bb1.i.i.i15
+
+bb1.i.i.i15: ; preds = %bb.i.i.i14
+ %17 = bitcast %struct.btQuadWord* %13 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %17)
+ br label %bb2.i.i.i16
+
+bb2.i.i.i16: ; preds = %bb1.i.i.i15, %bb.i.i.i14
+ store %struct.btQuadWord* null, %struct.btQuadWord** %12, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit: ; preds = %bb2.i.i.i16, %bb3
+ %18 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %18, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %12, align 4
+ %19 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %19, align 4
+ %20 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %20, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %21 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %22 = load %struct.btQuadWord** %21, align 4 ; [#uses=2]
+ %23 = icmp eq %struct.btQuadWord* %22, null ; [#uses=1]
+ br i1 %23, label %invcont1, label %bb.i.i.i18
+
+bb.i.i.i18: ; preds = %lpad
+ %24 = getelementptr inbounds %struct.HullResult* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool.i.i.i17 = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i17, label %bb2.i.i.i20, label %bb1.i.i.i19
+
+bb1.i.i.i19: ; preds = %bb.i.i.i18
+ %26 = bitcast %struct.btQuadWord* %22 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %26)
+ to label %bb2.i.i.i20 unwind label %lpad7
+
+bb2.i.i.i20: ; preds = %bb1.i.i.i19, %bb.i.i.i18
+ store %struct.btQuadWord* null, %struct.btQuadWord** %21, align 4
+ br label %invcont1
+
+lpad7: ; preds = %bb1.i.i.i19
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN11btShapeHullD1Ev(%struct.btShapeHull* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 3 ; [#uses=10]
+ %1 = load i32** %0, align 4 ; [#uses=2]
+ %2 = icmp eq i32* %1, null ; [#uses=1]
+ br i1 %2, label %invcont, label %bb.i.i
+
+bb.i.i: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %5 = bitcast i32* %1 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %bb2.i.i unwind label %lpad17
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store i32* null, i32** %0, align 4
+ br label %invcont
+
+invcont: ; preds = %bb2.i.i, %entry
+ %6 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 4 ; [#uses=5]
+ store i8 1, i8* %6, align 4
+ store i32* null, i32** %0, align 4
+ %7 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 1 ; [#uses=4]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 2 ; [#uses=4]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 3 ; [#uses=6]
+ %10 = load %struct.btQuadWord** %9, align 4 ; [#uses=2]
+ %11 = icmp eq %struct.btQuadWord* %10, null ; [#uses=1]
+ br i1 %11, label %bb4, label %bb.i.i34
+
+bb.i.i34: ; preds = %invcont
+ %12 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %13 = load i8* %12, align 4 ; [#uses=1]
+ %toBool.i.i33 = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i33, label %bb2.i.i36, label %bb1.i.i35
+
+bb1.i.i35: ; preds = %bb.i.i34
+ %14 = bitcast %struct.btQuadWord* %10 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %14)
+ to label %bb1.i.i35.bb2.i.i36_crit_edge unwind label %lpad17
+
+bb1.i.i35.bb2.i.i36_crit_edge: ; preds = %bb1.i.i35
+ %.pre.pre = load i32** %0, align 4 ; [#uses=1]
+ br label %bb2.i.i36
+
+bb2.i.i36: ; preds = %bb1.i.i35.bb2.i.i36_crit_edge, %bb.i.i34
+ %.pre = phi i32* [ %.pre.pre, %bb1.i.i35.bb2.i.i36_crit_edge ], [ null, %bb.i.i34 ] ; [#uses=1]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %9, align 4
+ br label %bb4
+
+bb4: ; preds = %bb2.i.i36, %invcont
+ %15 = phi i32* [ %.pre, %bb2.i.i36 ], [ null, %invcont ] ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 4 ; [#uses=3]
+ store i8 1, i8* %16, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %9, align 4
+ %17 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 2 ; [#uses=2]
+ store i32 0, i32* %18, align 4
+ %19 = icmp eq i32* %15, null ; [#uses=1]
+ br i1 %19, label %bb11.thread, label %bb.i.i.i
+
+bb11.thread: ; preds = %bb4
+ store i8 1, i8* %6, align 4
+ store i32* null, i32** %0, align 4
+ store i32 0, i32* %7, align 4
+ store i32 0, i32* %8, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit
+
+bb.i.i.i: ; preds = %bb4
+ %20 = load i8* %6, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %20, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb11.thread58, label %bb1.i.i.i
+
+bb11.thread58: ; preds = %bb.i.i.i
+ store i8 1, i8* %6, align 4
+ store i32* null, i32** %0, align 4
+ store i32 0, i32* %7, align 4
+ store i32 0, i32* %8, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %21 = bitcast i32* %15 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %21)
+ to label %bb11 unwind label %lpad
+
+invcont9: ; preds = %bb2.i.i.i52, %ppad
+ %22 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %22, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %36, align 4
+ %23 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %23, align 4
+ %24 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %24, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb11: ; preds = %bb1.i.i.i
+ %.pre55.pre = load %struct.btQuadWord** %9, align 4 ; [#uses=2]
+ store i8 1, i8* %6, align 4
+ store i32* null, i32** %0, align 4
+ store i32 0, i32* %7, align 4
+ store i32 0, i32* %8, align 4
+ %25 = icmp eq %struct.btQuadWord* %.pre55.pre, null ; [#uses=1]
+ br i1 %25, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit, label %bb.i.i.i40
+
+bb.i.i.i40: ; preds = %bb11
+ %26 = load i8* %16, align 4 ; [#uses=1]
+ %toBool.i.i.i39 = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i39, label %bb2.i.i.i42, label %bb1.i.i.i41
+
+bb1.i.i.i41: ; preds = %bb.i.i.i40
+ %27 = bitcast %struct.btQuadWord* %.pre55.pre to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %27)
+ br label %bb2.i.i.i42
+
+bb2.i.i.i42: ; preds = %bb1.i.i.i41, %bb.i.i.i40
+ store %struct.btQuadWord* null, %struct.btQuadWord** %9, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit: ; preds = %bb2.i.i.i42, %bb11, %bb11.thread58, %bb11.thread
+ store i8 1, i8* %16, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %9, align 4
+ store i32 0, i32* %17, align 4
+ store i32 0, i32* %18, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select16 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad17: ; preds = %bb1.i.i35, %bb1.i.i
+ %eh_ptr18 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select20 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr18, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %28 = load i32** %0, align 4 ; [#uses=2]
+ %29 = icmp eq i32* %28, null ; [#uses=1]
+ br i1 %29, label %_ZN20btAlignedObjectArrayIjED1Ev.exit48, label %bb.i.i.i44
+
+bb.i.i.i44: ; preds = %lpad17
+ %30 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %31 = load i8* %30, align 4 ; [#uses=1]
+ %toBool.i.i.i43 = icmp eq i8 %31, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i43, label %bb2.i.i.i46, label %bb1.i.i.i45
+
+bb1.i.i.i45: ; preds = %bb.i.i.i44
+ %32 = bitcast i32* %28 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %32)
+ to label %bb2.i.i.i46 unwind label %lpad21
+
+bb2.i.i.i46: ; preds = %bb1.i.i.i45, %bb.i.i.i44
+ store i32* null, i32** %0, align 4
+ br label %_ZN20btAlignedObjectArrayIjED1Ev.exit48
+
+_ZN20btAlignedObjectArrayIjED1Ev.exit48: ; preds = %bb2.i.i.i46, %lpad17
+ %33 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %33, align 4
+ store i32* null, i32** %0, align 4
+ %34 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %34, align 4
+ %35 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %35, align 4
+ br label %ppad
+
+lpad21: ; preds = %bb1.i.i.i45
+ %eh_ptr22 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select24 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr22, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad25: ; preds = %bb1.i.i.i51
+ %eh_ptr26 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select28 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr26, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIjED1Ev.exit48, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr18, %_ZN20btAlignedObjectArrayIjED1Ev.exit48 ] ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 3 ; [#uses=3]
+ %37 = load %struct.btQuadWord** %36, align 4 ; [#uses=2]
+ %38 = icmp eq %struct.btQuadWord* %37, null ; [#uses=1]
+ br i1 %38, label %invcont9, label %bb.i.i.i50
+
+bb.i.i.i50: ; preds = %ppad
+ %39 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %40 = load i8* %39, align 4 ; [#uses=1]
+ %toBool.i.i.i49 = icmp eq i8 %40, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i49, label %bb2.i.i.i52, label %bb1.i.i.i51
+
+bb1.i.i.i51: ; preds = %bb.i.i.i50
+ %41 = bitcast %struct.btQuadWord* %37 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %41)
+ to label %bb2.i.i.i52 unwind label %lpad25
+
+bb2.i.i.i52: ; preds = %bb1.i.i.i51, %bb.i.i.i50
+ store %struct.btQuadWord* null, %struct.btQuadWord** %36, align 4
+ br label %invcont9
+}
+
+; [#uses=0]
+define void @_ZN11btShapeHullD2Ev(%struct.btShapeHull* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 3 ; [#uses=10]
+ %1 = load i32** %0, align 4 ; [#uses=2]
+ %2 = icmp eq i32* %1, null ; [#uses=1]
+ br i1 %2, label %invcont, label %bb.i.i
+
+bb.i.i: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %5 = bitcast i32* %1 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %bb2.i.i unwind label %lpad17
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store i32* null, i32** %0, align 4
+ br label %invcont
+
+invcont: ; preds = %bb2.i.i, %entry
+ %6 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 4 ; [#uses=5]
+ store i8 1, i8* %6, align 4
+ store i32* null, i32** %0, align 4
+ %7 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 1 ; [#uses=4]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 2 ; [#uses=4]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 3 ; [#uses=6]
+ %10 = load %struct.btQuadWord** %9, align 4 ; [#uses=2]
+ %11 = icmp eq %struct.btQuadWord* %10, null ; [#uses=1]
+ br i1 %11, label %bb4, label %bb.i.i34
+
+bb.i.i34: ; preds = %invcont
+ %12 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %13 = load i8* %12, align 4 ; [#uses=1]
+ %toBool.i.i33 = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i33, label %bb2.i.i36, label %bb1.i.i35
+
+bb1.i.i35: ; preds = %bb.i.i34
+ %14 = bitcast %struct.btQuadWord* %10 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %14)
+ to label %bb1.i.i35.bb2.i.i36_crit_edge unwind label %lpad17
+
+bb1.i.i35.bb2.i.i36_crit_edge: ; preds = %bb1.i.i35
+ %.pre.pre = load i32** %0, align 4 ; [#uses=1]
+ br label %bb2.i.i36
+
+bb2.i.i36: ; preds = %bb1.i.i35.bb2.i.i36_crit_edge, %bb.i.i34
+ %.pre = phi i32* [ %.pre.pre, %bb1.i.i35.bb2.i.i36_crit_edge ], [ null, %bb.i.i34 ] ; [#uses=1]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %9, align 4
+ br label %bb4
+
+bb4: ; preds = %bb2.i.i36, %invcont
+ %15 = phi i32* [ %.pre, %bb2.i.i36 ], [ null, %invcont ] ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 4 ; [#uses=3]
+ store i8 1, i8* %16, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %9, align 4
+ %17 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 2 ; [#uses=2]
+ store i32 0, i32* %18, align 4
+ %19 = icmp eq i32* %15, null ; [#uses=1]
+ br i1 %19, label %bb11.thread, label %bb.i.i.i
+
+bb11.thread: ; preds = %bb4
+ store i8 1, i8* %6, align 4
+ store i32* null, i32** %0, align 4
+ store i32 0, i32* %7, align 4
+ store i32 0, i32* %8, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit
+
+bb.i.i.i: ; preds = %bb4
+ %20 = load i8* %6, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %20, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb11.thread58, label %bb1.i.i.i
+
+bb11.thread58: ; preds = %bb.i.i.i
+ store i8 1, i8* %6, align 4
+ store i32* null, i32** %0, align 4
+ store i32 0, i32* %7, align 4
+ store i32 0, i32* %8, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %21 = bitcast i32* %15 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %21)
+ to label %bb11 unwind label %lpad
+
+invcont9: ; preds = %bb2.i.i.i52, %ppad
+ %22 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %22, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %36, align 4
+ %23 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %23, align 4
+ %24 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %24, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb11: ; preds = %bb1.i.i.i
+ %.pre55.pre = load %struct.btQuadWord** %9, align 4 ; [#uses=2]
+ store i8 1, i8* %6, align 4
+ store i32* null, i32** %0, align 4
+ store i32 0, i32* %7, align 4
+ store i32 0, i32* %8, align 4
+ %25 = icmp eq %struct.btQuadWord* %.pre55.pre, null ; [#uses=1]
+ br i1 %25, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit, label %bb.i.i.i40
+
+bb.i.i.i40: ; preds = %bb11
+ %26 = load i8* %16, align 4 ; [#uses=1]
+ %toBool.i.i.i39 = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i39, label %bb2.i.i.i42, label %bb1.i.i.i41
+
+bb1.i.i.i41: ; preds = %bb.i.i.i40
+ %27 = bitcast %struct.btQuadWord* %.pre55.pre to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %27)
+ br label %bb2.i.i.i42
+
+bb2.i.i.i42: ; preds = %bb1.i.i.i41, %bb.i.i.i40
+ store %struct.btQuadWord* null, %struct.btQuadWord** %9, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit: ; preds = %bb2.i.i.i42, %bb11, %bb11.thread58, %bb11.thread
+ store i8 1, i8* %16, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %9, align 4
+ store i32 0, i32* %17, align 4
+ store i32 0, i32* %18, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select16 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad17: ; preds = %bb1.i.i35, %bb1.i.i
+ %eh_ptr18 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select20 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr18, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %28 = load i32** %0, align 4 ; [#uses=2]
+ %29 = icmp eq i32* %28, null ; [#uses=1]
+ br i1 %29, label %_ZN20btAlignedObjectArrayIjED1Ev.exit48, label %bb.i.i.i44
+
+bb.i.i.i44: ; preds = %lpad17
+ %30 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %31 = load i8* %30, align 4 ; [#uses=1]
+ %toBool.i.i.i43 = icmp eq i8 %31, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i43, label %bb2.i.i.i46, label %bb1.i.i.i45
+
+bb1.i.i.i45: ; preds = %bb.i.i.i44
+ %32 = bitcast i32* %28 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %32)
+ to label %bb2.i.i.i46 unwind label %lpad21
+
+bb2.i.i.i46: ; preds = %bb1.i.i.i45, %bb.i.i.i44
+ store i32* null, i32** %0, align 4
+ br label %_ZN20btAlignedObjectArrayIjED1Ev.exit48
+
+_ZN20btAlignedObjectArrayIjED1Ev.exit48: ; preds = %bb2.i.i.i46, %lpad17
+ %33 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %33, align 4
+ store i32* null, i32** %0, align 4
+ %34 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %34, align 4
+ %35 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %35, align 4
+ br label %ppad
+
+lpad21: ; preds = %bb1.i.i.i45
+ %eh_ptr22 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select24 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr22, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad25: ; preds = %bb1.i.i.i51
+ %eh_ptr26 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select28 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr26, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIjED1Ev.exit48, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr18, %_ZN20btAlignedObjectArrayIjED1Ev.exit48 ] ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 3 ; [#uses=3]
+ %37 = load %struct.btQuadWord** %36, align 4 ; [#uses=2]
+ %38 = icmp eq %struct.btQuadWord* %37, null ; [#uses=1]
+ br i1 %38, label %invcont9, label %bb.i.i.i50
+
+bb.i.i.i50: ; preds = %ppad
+ %39 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %40 = load i8* %39, align 4 ; [#uses=1]
+ %toBool.i.i.i49 = icmp eq i8 %40, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i49, label %bb2.i.i.i52, label %bb1.i.i.i51
+
+bb1.i.i.i51: ; preds = %bb.i.i.i50
+ %41 = bitcast %struct.btQuadWord* %37 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %41)
+ to label %bb2.i.i.i52 unwind label %lpad25
+
+bb2.i.i.i52: ; preds = %bb1.i.i.i51, %bb.i.i.i50
+ store %struct.btQuadWord* null, %struct.btQuadWord** %36, align 4
+ br label %invcont9
+}
+
+; [#uses=0]
+define void @_ZN11btShapeHullC1EPK13btConvexShape(%struct.btShapeHull* nocapture %this, %struct.btConvexShape* %shape) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConvexShape* %shape, %struct.btConvexShape** %8, align 4
+ store i8 1, i8* %0, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %1, align 4
+ store i32 0, i32* %2, align 4
+ store i32 0, i32* %3, align 4
+ store i8 1, i8* %4, align 4
+ store i32* null, i32** %5, align 4
+ store i32 0, i32* %6, align 4
+ store i32 0, i32* %7, align 4
+ %9 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN11HullLibraryD1Ev(%struct.HullLibrary* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %1 = load i32** %0, align 4 ; [#uses=2]
+ %2 = icmp eq i32* %1, null ; [#uses=1]
+ br i1 %2, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %3 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %5 = bitcast i32* %1 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %0, align 4
+ br label %bb3
+
+invcont1: ; preds = %bb2.i.i.i20, %lpad
+ %6 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %6, align 4
+ store %struct.btHullTriangle** null, %struct.btHullTriangle*** %21, align 4
+ %7 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %9 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %9, align 4
+ store i32* null, i32** %0, align 4
+ %10 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 3 ; [#uses=3]
+ %13 = load %struct.btHullTriangle*** %12, align 4 ; [#uses=2]
+ %14 = icmp eq %struct.btHullTriangle** %13, null ; [#uses=1]
+ br i1 %14, label %_ZN20btAlignedObjectArrayIP14btHullTriangleED1Ev.exit, label %bb.i.i.i14
+
+bb.i.i.i14: ; preds = %bb3
+ %15 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %16 = load i8* %15, align 4 ; [#uses=1]
+ %toBool.i.i.i13 = icmp eq i8 %16, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i13, label %bb2.i.i.i16, label %bb1.i.i.i15
+
+bb1.i.i.i15: ; preds = %bb.i.i.i14
+ %17 = bitcast %struct.btHullTriangle** %13 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %17)
+ br label %bb2.i.i.i16
+
+bb2.i.i.i16: ; preds = %bb1.i.i.i15, %bb.i.i.i14
+ store %struct.btHullTriangle** null, %struct.btHullTriangle*** %12, align 4
+ br label %_ZN20btAlignedObjectArrayIP14btHullTriangleED1Ev.exit
+
+_ZN20btAlignedObjectArrayIP14btHullTriangleED1Ev.exit: ; preds = %bb2.i.i.i16, %bb3
+ %18 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %18, align 4
+ store %struct.btHullTriangle** null, %struct.btHullTriangle*** %12, align 4
+ %19 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %19, align 4
+ %20 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %20, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %21 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 3 ; [#uses=3]
+ %22 = load %struct.btHullTriangle*** %21, align 4 ; [#uses=2]
+ %23 = icmp eq %struct.btHullTriangle** %22, null ; [#uses=1]
+ br i1 %23, label %invcont1, label %bb.i.i.i18
+
+bb.i.i.i18: ; preds = %lpad
+ %24 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool.i.i.i17 = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i17, label %bb2.i.i.i20, label %bb1.i.i.i19
+
+bb1.i.i.i19: ; preds = %bb.i.i.i18
+ %26 = bitcast %struct.btHullTriangle** %22 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %26)
+ to label %bb2.i.i.i20 unwind label %lpad7
+
+bb2.i.i.i20: ; preds = %bb1.i.i.i19, %bb.i.i.i18
+ store %struct.btHullTriangle** null, %struct.btHullTriangle*** %21, align 4
+ br label %invcont1
+
+lpad7: ; preds = %bb1.i.i.i19
+ %eh_ptr8 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIjE6resizeEiRKj(%"struct.btAlignedObjectArray<int>"* nocapture %this, i32 %newsize, i32* nocapture %fillData) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = icmp sgt i32 %1, %newsize ; [#uses=1]
+ br i1 %2, label %bb12, label %bb3
+
+bb3: ; preds = %entry
+ %3 = icmp slt i32 %1, %newsize ; [#uses=2]
+ br i1 %3, label %bb4, label %bb12
+
+bb4: ; preds = %bb3
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 2 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp slt i32 %5, %newsize ; [#uses=1]
+ br i1 %6, label %bb.i, label %bb.nph
+
+bb.i: ; preds = %bb4
+ %7 = icmp eq i32 %newsize, 0 ; [#uses=1]
+ br i1 %7, label %_ZN20btAlignedObjectArrayIjE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %8 = shl i32 %newsize, 2 ; [#uses=1]
+ %9 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %8, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %9 to i32* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIjE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayIjE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %10 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %11 = phi i32* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=2]
+ %12 = icmp sgt i32 %10, 0 ; [#uses=1]
+ br i1 %12, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayIjE4copyEiiPj.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayIjE8allocateEi.exit.i
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=3]
+ %scevgep.i.i = getelementptr i32* %11, i32 %indvar.i.i ; [#uses=2]
+ %14 = icmp eq i32* %scevgep.i.i, null ; [#uses=1]
+ br i1 %14, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %15 = load i32** %13, align 4 ; [#uses=1]
+ %scevgep8.i.i = getelementptr i32* %15, i32 %indvar.i.i ; [#uses=1]
+ %16 = load i32* %scevgep8.i.i, align 4 ; [#uses=1]
+ store i32 %16, i32* %scevgep.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond19 = icmp eq i32 %indvar.next.i.i, %10 ; [#uses=1]
+ br i1 %exitcond19, label %_ZNK20btAlignedObjectArrayIjE4copyEiiPj.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIjE4copyEiiPj.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIjE8allocateEi.exit.i
+ %17 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 3 ; [#uses=3]
+ %18 = load i32** %17, align 4 ; [#uses=2]
+ %19 = icmp eq i32* %18, null ; [#uses=1]
+ br i1 %19, label %bb11.preheader, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIjE4copyEiiPj.exit.i
+ %20 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 4 ; [#uses=1]
+ %21 = load i8* %20, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %21, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %22 = bitcast i32* %18 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %22)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store i32* null, i32** %17, align 4
+ br label %bb11.preheader
+
+bb11.preheader: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIjE4copyEiiPj.exit.i
+ %23 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %23, align 4
+ store i32* %11, i32** %17, align 4
+ store i32 %newsize, i32* %4, align 4
+ br i1 %3, label %bb.nph, label %bb12
+
+bb.nph: ; preds = %bb11.preheader, %bb4
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %this, i32 0, i32 3 ; [#uses=1]
+ %tmp = sub i32 %newsize, %1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb10, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb10 ] ; [#uses=2]
+ %tmp17 = add i32 %1, %indvar ; [#uses=1]
+ %25 = load i32** %24, align 4 ; [#uses=1]
+ %scevgep18 = getelementptr i32* %25, i32 %tmp17 ; [#uses=2]
+ %26 = icmp eq i32* %scevgep18, null ; [#uses=1]
+ br i1 %26, label %bb10, label %bb8
+
+bb8: ; preds = %bb7
+ %27 = load i32* %fillData, align 4 ; [#uses=1]
+ store i32 %27, i32* %scevgep18, align 4
+ br label %bb10
+
+bb10: ; preds = %bb8, %bb7
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; [#uses=1]
+ br i1 %exitcond, label %bb12, label %bb7
+
+bb12: ; preds = %bb10, %bb11.preheader, %bb3, %entry
+ store i32 %newsize, i32* %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN11btShapeHull9buildHullEf(%struct.btShapeHull* nocapture %this, float %unnamed_arg) align 2 {
+entry:
+ %0 = alloca i32, align 4 ; [#uses=2]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=1]
+ %supportPoints = alloca [62 x %struct.btQuadWord], align 8 ; [#uses=5]
+ %hd = alloca %struct.HullDesc, align 8 ; [#uses=8]
+ %hl = alloca %struct.HullLibrary, align 8 ; [#uses=12]
+ %hr = alloca %struct.HullResult, align 8 ; [#uses=16]
+ %norm = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %memtmp = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 3 ; [#uses=4]
+ %3 = load %struct.btConvexShape** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btConvexShape* %3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 19 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to i32 (%struct.btConvexShape*)* ; [#uses=1]
+ %9 = call i32 %8(%struct.btConvexShape* %3) ; [#uses=4]
+ %10 = icmp eq i32 %9, 0 ; [#uses=1]
+ %.not = xor i1 %10, true ; [#uses=1]
+ %11 = icmp sgt i32 %9, 0 ; [#uses=1]
+ %or.cond = and i1 %.not, %11 ; [#uses=1]
+ br i1 %or.cond, label %bb.nph, label %bb.nph65
+
+bb.nph: ; preds = %entry
+ %12 = getelementptr inbounds %struct.btQuadWord* %norm, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %norm, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %norm, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %norm, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb.nph
+ %16 = phi i32 [ 0, %bb.nph ], [ %28, %bb2 ] ; [#uses=3]
+ %tmp68 = add i32 %16, 42 ; [#uses=4]
+ %scevgep69 = getelementptr [62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 %tmp68, i32 0, i32 0 ; [#uses=1]
+ %scevgep70 = getelementptr [62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 %tmp68, i32 0, i32 1 ; [#uses=1]
+ %scevgep71 = getelementptr [62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 %tmp68, i32 0, i32 2 ; [#uses=1]
+ %scevgep72 = getelementptr [62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 %tmp68, i32 0, i32 3 ; [#uses=1]
+ %17 = load %struct.btConvexShape** %2, align 4 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btConvexShape* %17, i32 0, i32 0, i32 0 ; [#uses=1]
+ %19 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i32 (...)** %19, i32 20 ; [#uses=1]
+ %21 = load i32 (...)** %20, align 4 ; [#uses=1]
+ %22 = bitcast i32 (...)* %21 to void (%struct.btConvexShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ call void %22(%struct.btConvexShape* %17, i32 %16, %struct.btQuadWord* %norm)
+ %23 = call %struct.btQuadWord* @_ZN11btShapeHull19getUnitSpherePointsEv() nounwind ; [#uses=0]
+ %24 = load float* %12, align 8 ; [#uses=1]
+ store float %24, float* %scevgep69, align 16
+ %25 = load float* %13, align 4 ; [#uses=1]
+ store float %25, float* %scevgep70, align 4
+ %26 = load float* %14, align 8 ; [#uses=1]
+ store float %26, float* %scevgep71, align 8
+ %27 = load float* %15, align 4 ; [#uses=1]
+ store float %27, float* %scevgep72, align 4
+ %28 = add nsw i32 %16, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %28, %9 ; [#uses=1]
+ br i1 %exitcond, label %bb9.preheader, label %bb2
+
+bb9.preheader: ; preds = %bb2
+ %tmp = add i32 %9, 42 ; [#uses=3]
+ %29 = icmp sgt i32 %tmp, 0 ; [#uses=1]
+ br i1 %29, label %bb.nph65, label %invcont
+
+bb.nph65: ; preds = %bb9.preheader, %entry
+ %numSampleDirections.196 = phi i32 [ %tmp, %bb9.preheader ], [ 42, %entry ] ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb8, %bb.nph65
+ %i.064 = phi i32 [ 0, %bb.nph65 ], [ %46, %bb8 ] ; [#uses=6]
+ %scevgep8889 = getelementptr [62 x %struct.btQuadWord]* %supportPoints, i32 0, i32 %i.064, i32 0, i32 0 ; [#uses=1]
+ %scevgep90 = getelementptr [62 x %struct.btQuadWord]* %supportPoints, i32 0, i32 %i.064, i32 0, i32 1 ; [#uses=1]
+ %scevgep91 = getelementptr [62 x %struct.btQuadWord]* %supportPoints, i32 0, i32 %i.064, i32 0, i32 2 ; [#uses=1]
+ %scevgep92 = getelementptr [62 x %struct.btQuadWord]* %supportPoints, i32 0, i32 %i.064, i32 0, i32 3 ; [#uses=1]
+ %scevgep93 = getelementptr [62 x %struct.btQuadWord]* @_ZZN11btShapeHull19getUnitSpherePointsEvE17sUnitSpherePoints, i32 0, i32 %i.064 ; [#uses=1]
+ %34 = load %struct.btConvexShape** %2, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btConvexShape* %34, i32 0, i32 0, i32 0 ; [#uses=1]
+ %36 = load i32 (...)*** %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds i32 (...)** %36, i32 15 ; [#uses=1]
+ %38 = load i32 (...)** %37, align 4 ; [#uses=1]
+ %39 = call %struct.btQuadWord* @_ZN11btShapeHull19getUnitSpherePointsEv() nounwind ; [#uses=0]
+ %40 = load %struct.btConvexShape** %2, align 4 ; [#uses=1]
+ %41 = bitcast i32 (...)* %38 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %41(%struct.btQuadWord* noalias sret %memtmp, %struct.btConvexShape* %40, %struct.btQuadWord* %scevgep93)
+ %42 = load float* %30, align 8 ; [#uses=1]
+ store float %42, float* %scevgep8889, align 8
+ %43 = load float* %31, align 4 ; [#uses=1]
+ store float %43, float* %scevgep90, align 4
+ %44 = load float* %32, align 8 ; [#uses=1]
+ store float %44, float* %scevgep91, align 8
+ %45 = load float* %33, align 4 ; [#uses=1]
+ store float %45, float* %scevgep92, align 4
+ %46 = add nsw i32 %i.064, 1 ; [#uses=2]
+ %exitcond87 = icmp eq i32 %46, %numSampleDirections.196 ; [#uses=1]
+ br i1 %exitcond87, label %invcont, label %bb8
+
+invcont: ; preds = %bb8, %bb9.preheader
+ %numSampleDirections.195 = phi i32 [ %tmp, %bb9.preheader ], [ %numSampleDirections.196, %bb8 ] ; [#uses=1]
+ %47 = getelementptr inbounds %struct.HullDesc* %hd, i32 0, i32 0 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.HullDesc* %hd, i32 0, i32 1 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.HullDesc* %hd, i32 0, i32 2 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.HullDesc* %hd, i32 0, i32 3 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.HullDesc* %hd, i32 0, i32 4 ; [#uses=1]
+ store float 0x3F50624DE0000000, float* %51, align 8
+ %52 = getelementptr inbounds %struct.HullDesc* %hd, i32 0, i32 5 ; [#uses=1]
+ store i32 4096, i32* %52, align 4
+ %53 = getelementptr inbounds %struct.HullDesc* %hd, i32 0, i32 6 ; [#uses=1]
+ store i32 4096, i32* %53, align 8
+ store i32 1, i32* %47, align 8
+ store i32 %numSampleDirections.195, i32* %48, align 4
+ %54 = getelementptr inbounds [62 x %struct.btQuadWord]* %supportPoints, i32 0, i32 0 ; [#uses=1]
+ store %struct.btQuadWord* %54, %struct.btQuadWord** %49, align 8
+ store i32 16, i32* %50, align 4
+ %55 = getelementptr inbounds %struct.HullLibrary* %hl, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %55, align 8
+ %56 = getelementptr inbounds %struct.HullLibrary* %hl, i32 0, i32 0, i32 3 ; [#uses=1]
+ store %struct.btHullTriangle** null, %struct.btHullTriangle*** %56, align 4
+ %57 = getelementptr inbounds %struct.HullLibrary* %hl, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %57, align 4
+ %58 = getelementptr inbounds %struct.HullLibrary* %hl, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %58, align 8
+ %59 = getelementptr inbounds %struct.HullLibrary* %hl, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %59, align 4
+ %60 = getelementptr inbounds %struct.HullLibrary* %hl, i32 0, i32 1, i32 3 ; [#uses=1]
+ store i32* null, i32** %60, align 4
+ %61 = getelementptr inbounds %struct.HullLibrary* %hl, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %61, align 4
+ %62 = getelementptr inbounds %struct.HullLibrary* %hl, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %62, align 4
+ %63 = getelementptr inbounds %struct.HullResult* %hr, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %63, align 8
+ %64 = getelementptr inbounds %struct.HullResult* %hr, i32 0, i32 2, i32 3 ; [#uses=2]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %64, align 4
+ %65 = getelementptr inbounds %struct.HullResult* %hr, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %65, align 4
+ %66 = getelementptr inbounds %struct.HullResult* %hr, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %66, align 8
+ %67 = getelementptr inbounds %struct.HullResult* %hr, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %67, align 4
+ %68 = getelementptr inbounds %struct.HullResult* %hr, i32 0, i32 5, i32 3 ; [#uses=2]
+ store i32* null, i32** %68, align 4
+ %69 = getelementptr inbounds %struct.HullResult* %hr, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %69, align 4
+ %70 = getelementptr inbounds %struct.HullResult* %hr, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %70, align 4
+ %71 = getelementptr inbounds %struct.HullResult* %hr, i32 0, i32 0 ; [#uses=1]
+ store i8 1, i8* %71, align 8
+ %72 = getelementptr inbounds %struct.HullResult* %hr, i32 0, i32 1 ; [#uses=4]
+ store i32 0, i32* %72, align 4
+ %73 = getelementptr inbounds %struct.HullResult* %hr, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %73, align 4
+ %74 = getelementptr inbounds %struct.HullResult* %hr, i32 0, i32 4 ; [#uses=2]
+ store i32 0, i32* %74, align 8
+ %75 = invoke i32 @_ZN11HullLibrary16CreateConvexHullERK8HullDescR10HullResult(%struct.HullLibrary* %hl, %struct.HullDesc* %hd, %struct.HullResult* %hr)
+ to label %invcont11 unwind label %lpad40 ; [#uses=1]
+
+invcont11: ; preds = %invcont
+ %76 = icmp eq i32 %75, 1 ; [#uses=1]
+ br i1 %76, label %bb28, label %bb13
+
+bb13: ; preds = %invcont11
+ %77 = load i32* %72, align 4 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(%"struct.btAlignedObjectArray<btVector3>"* %78, i32 %77, %struct.btQuadWord* %1) inlinehint
+ to label %bb16.preheader unwind label %lpad40
+
+bb16.preheader: ; preds = %bb13
+ %79 = load i32* %72, align 4 ; [#uses=1]
+ %80 = icmp sgt i32 %79, 0 ; [#uses=1]
+ br i1 %80, label %bb.nph63, label %bb17
+
+bb.nph63: ; preds = %bb16.preheader
+ %81 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb15
+
+bb15: ; preds = %bb15, %bb.nph63
+ %i.162 = phi i32 [ 0, %bb.nph63 ], [ %88, %bb15 ] ; [#uses=9]
+ %82 = load %struct.btQuadWord** %81, align 4 ; [#uses=4]
+ %83 = load %struct.btQuadWord** %64, align 4 ; [#uses=4]
+ %scevgep7879 = getelementptr inbounds %struct.btQuadWord* %83, i32 %i.162, i32 0, i32 0 ; [#uses=1]
+ %84 = load float* %scevgep7879, align 4 ; [#uses=1]
+ %scevgep7677 = getelementptr inbounds %struct.btQuadWord* %82, i32 %i.162, i32 0, i32 0 ; [#uses=1]
+ store float %84, float* %scevgep7677, align 4
+ %scevgep81 = getelementptr %struct.btQuadWord* %83, i32 %i.162, i32 0, i32 1 ; [#uses=1]
+ %85 = load float* %scevgep81, align 4 ; [#uses=1]
+ %scevgep80 = getelementptr %struct.btQuadWord* %82, i32 %i.162, i32 0, i32 1 ; [#uses=1]
+ store float %85, float* %scevgep80, align 4
+ %scevgep83 = getelementptr %struct.btQuadWord* %83, i32 %i.162, i32 0, i32 2 ; [#uses=1]
+ %86 = load float* %scevgep83, align 4 ; [#uses=1]
+ %scevgep82 = getelementptr %struct.btQuadWord* %82, i32 %i.162, i32 0, i32 2 ; [#uses=1]
+ store float %86, float* %scevgep82, align 4
+ %scevgep85 = getelementptr %struct.btQuadWord* %83, i32 %i.162, i32 0, i32 3 ; [#uses=1]
+ %87 = load float* %scevgep85, align 4 ; [#uses=1]
+ %scevgep84 = getelementptr %struct.btQuadWord* %82, i32 %i.162, i32 0, i32 3 ; [#uses=1]
+ store float %87, float* %scevgep84, align 4
+ %88 = add nsw i32 %i.162, 1 ; [#uses=2]
+ %89 = load i32* %72, align 4 ; [#uses=1]
+ %90 = icmp sgt i32 %89, %88 ; [#uses=1]
+ br i1 %90, label %bb15, label %bb17
+
+bb17: ; preds = %bb15, %bb16.preheader
+ %91 = load i32* %74, align 8 ; [#uses=2]
+ %92 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 2 ; [#uses=3]
+ store i32 %91, i32* %92, align 4
+ store i32 0, i32* %0, align 4
+ %93 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayIjE6resizeEiRKj(%"struct.btAlignedObjectArray<int>"* %93, i32 %91, i32* %0) inlinehint
+ to label %bb20.preheader unwind label %lpad40
+
+bb20.preheader: ; preds = %bb17
+ %94 = load i32* %92, align 4 ; [#uses=1]
+ %95 = icmp sgt i32 %94, 0 ; [#uses=1]
+ br i1 %95, label %bb.nph61, label %bb21
+
+bb.nph61: ; preds = %bb20.preheader
+ %96 = getelementptr inbounds %struct.btShapeHull* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb19
+
+bb19: ; preds = %bb19, %bb.nph61
+ %i.260 = phi i32 [ 0, %bb.nph61 ], [ %100, %bb19 ] ; [#uses=3]
+ %97 = load i32** %96, align 4 ; [#uses=1]
+ %98 = load i32** %68, align 4 ; [#uses=1]
+ %scevgep73 = getelementptr i32* %98, i32 %i.260 ; [#uses=1]
+ %99 = load i32* %scevgep73, align 4 ; [#uses=1]
+ %scevgep74 = getelementptr i32* %97, i32 %i.260 ; [#uses=1]
+ store i32 %99, i32* %scevgep74, align 4
+ %100 = add nsw i32 %i.260, 1 ; [#uses=2]
+ %101 = load i32* %92, align 4 ; [#uses=1]
+ %102 = icmp sgt i32 %101, %100 ; [#uses=1]
+ br i1 %102, label %bb19, label %bb21
+
+bb21: ; preds = %bb19, %bb20.preheader
+ %103 = invoke i32 @_ZN11HullLibrary13ReleaseResultER10HullResult(%struct.HullLibrary* %hl, %struct.HullResult* %hr)
+ to label %bb28 unwind label %lpad40 ; [#uses=0]
+
+bb28: ; preds = %bb21, %invcont11
+ %.057 = phi i8 [ 0, %invcont11 ], [ 1, %bb21 ] ; [#uses=1]
+ invoke void @_ZN10HullResultD1Ev(%struct.HullResult* %hr)
+ to label %bb35 unwind label %lpad
+
+invcont33: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb35: ; preds = %bb28
+ call void @_ZN11HullLibraryD1Ev(%struct.HullLibrary* %hl)
+ ret i8 %.057
+
+lpad: ; preds = %bb28
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select39 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad40: ; preds = %bb21, %bb17, %bb13, %invcont
+ %eh_ptr41 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select43 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr41, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN10HullResultD1Ev(%struct.HullResult* %hr)
+ to label %ppad unwind label %lpad44
+
+lpad44: ; preds = %lpad40
+ %eh_ptr45 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select47 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr45, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad48: ; preds = %ppad
+ %eh_ptr49 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select51 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr49, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %lpad40, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr41, %lpad40 ] ; [#uses=1]
+ invoke void @_ZN11HullLibraryD1Ev(%struct.HullLibrary* %hl)
+ to label %invcont33 unwind label %lpad48
+}
+
+; [#uses=1]
+define void @_ZNK13btSphereShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btPolyhedralConvexShape* nocapture %this, %struct.btQuadWord* nocapture %vec) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK13btSphereShape7getNameEv(%struct.btPolyhedralConvexShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([7 x i8]* @.str115, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN13btSphereShape9setMarginEf(%struct.btPolyhedralConvexShape* nocapture %this, float %margin) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %margin, float* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr float @_ZNK13btSphereShape9getMarginEv(%struct.btPolyhedralConvexShape* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ ret float %4
+}
+
+; [#uses=1]
+define void @_ZNK13btSphereShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btPolyhedralConvexShape* nocapture %this, %struct.btQuadWord* nocapture %vectors, %struct.btQuadWord* nocapture %supportVerticesOut, i32 %numVectors) nounwind align 2 {
+entry:
+ %0 = icmp sgt i32 %numVectors, 0 ; [#uses=1]
+ br i1 %0, label %bb, label %return
+
+bb: ; preds = %bb, %entry
+ %i.03 = phi i32 [ %1, %bb ], [ 0, %entry ] ; [#uses=5]
+ %scevgep4 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %i.03, i32 0, i32 0 ; [#uses=1]
+ %scevgep5 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.03, i32 0, i32 1 ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.03, i32 0, i32 2 ; [#uses=1]
+ %scevgep7 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.03, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep4, align 4
+ store float 0.000000e+00, float* %scevgep5, align 4
+ store float 0.000000e+00, float* %scevgep6, align 4
+ store float 0.000000e+00, float* %scevgep7, align 4
+ %1 = add nsw i32 %i.03, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %1, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK13btSphereShape7getAabbERK11btTransformR9btVector3S4_(%struct.btPolyhedralConvexShape* %this, %struct.btTransform* nocapture %t, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to float (%struct.btPolyhedralConvexShape*)* ; [#uses=1]
+ %5 = tail call float %4(%struct.btPolyhedralConvexShape* %this) ; [#uses=2]
+ %6 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 11 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to float (%struct.btPolyhedralConvexShape*)* ; [#uses=1]
+ %10 = tail call float %9(%struct.btPolyhedralConvexShape* %this) ; [#uses=2]
+ %11 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 11 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to float (%struct.btPolyhedralConvexShape*)* ; [#uses=1]
+ %15 = tail call float %14(%struct.btPolyhedralConvexShape* %this) ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fsub float %17, %5 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fsub float %20, %10 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fsub float %23, %15 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %24, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %21, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %18, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = load float* %16, align 4 ; [#uses=1]
+ %30 = fadd float %29, %5 ; [#uses=1]
+ %31 = load float* %19, align 4 ; [#uses=1]
+ %32 = fadd float %31, %10 ; [#uses=1]
+ %33 = load float* %22, align 4 ; [#uses=1]
+ %34 = fadd float %33, %15 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %34, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %32, float* %36, align 4
+ %37 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %30, float* %37, align 4
+ %38 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %38, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK13btSphereShape21calculateLocalInertiaEfR9btVector3(%struct.btPolyhedralConvexShape* %this, float %mass, %struct.btQuadWord* nocapture %inertia) align 2 {
+entry:
+ %0 = fmul float %mass, 0x3FD99999A0000000 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %2 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds i32 (...)** %2, i32 11 ; [#uses=1]
+ %4 = load i32 (...)** %3, align 4 ; [#uses=1]
+ %5 = bitcast i32 (...)* %4 to float (%struct.btPolyhedralConvexShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btPolyhedralConvexShape* %this) ; [#uses=1]
+ %7 = fmul float %0, %6 ; [#uses=1]
+ %8 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 11 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = bitcast i32 (...)* %10 to float (%struct.btPolyhedralConvexShape*)* ; [#uses=1]
+ %12 = tail call float %11(%struct.btPolyhedralConvexShape* %this) ; [#uses=1]
+ %13 = fmul float %7, %12 ; [#uses=3]
+ %14 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %13, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %13, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %13, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN13btSphereShapeD0Ev(%struct.btPolyhedralConvexShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btPolyhedralConvexShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN13btSphereShapeD1Ev(%struct.btPolyhedralConvexShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK13btSphereShape24localGetSupportingVertexERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btPolyhedralConvexShape* %this, %struct.btQuadWord* %vec) align 2 {
+entry:
+ %memtmp = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btPolyhedralConvexShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 16 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btQuadWord*, %struct.btPolyhedralConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %4(%struct.btQuadWord* noalias sret %memtmp, %struct.btPolyhedralConvexShape* %this, %struct.btQuadWord* %vec)
+ %5 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 8 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 8 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 3 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=3]
+ %19 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ %21 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=3]
+ %23 = fmul float %18, %18 ; [#uses=1]
+ %24 = fmul float %20, %20 ; [#uses=1]
+ %25 = fadd float %23, %24 ; [#uses=1]
+ %26 = fmul float %22, %22 ; [#uses=1]
+ %27 = fadd float %25, %26 ; [#uses=1]
+ %28 = fcmp olt float %27, 0x3D10000000000000 ; [#uses=3]
+ %vecnorm.0.0.0 = select i1 %28, float -1.000000e+00, float %18 ; [#uses=3]
+ %vecnorm.0.1.0 = select i1 %28, float -1.000000e+00, float %20 ; [#uses=3]
+ %vecnorm.0.2.0 = select i1 %28, float -1.000000e+00, float %22 ; [#uses=3]
+ %29 = fmul float %vecnorm.0.0.0, %vecnorm.0.0.0 ; [#uses=1]
+ %30 = fmul float %vecnorm.0.1.0, %vecnorm.0.1.0 ; [#uses=1]
+ %31 = fadd float %29, %30 ; [#uses=1]
+ %32 = fmul float %vecnorm.0.2.0, %vecnorm.0.2.0 ; [#uses=1]
+ %33 = fadd float %31, %32 ; [#uses=1]
+ %34 = call float @sqrtf(float %33) nounwind readonly ; [#uses=1]
+ %35 = fdiv float 1.000000e+00, %34 ; [#uses=3]
+ %36 = fmul float %vecnorm.0.0.0, %35 ; [#uses=1]
+ %37 = fmul float %vecnorm.0.1.0, %35 ; [#uses=1]
+ %38 = fmul float %vecnorm.0.2.0, %35 ; [#uses=1]
+ %39 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %40 = getelementptr inbounds i32 (...)** %39, i32 11 ; [#uses=1]
+ %41 = load i32 (...)** %40, align 4 ; [#uses=1]
+ %42 = bitcast i32 (...)* %41 to float (%struct.btPolyhedralConvexShape*)* ; [#uses=1]
+ %43 = call float %42(%struct.btPolyhedralConvexShape* %this) ; [#uses=3]
+ %44 = fmul float %38, %43 ; [#uses=1]
+ %45 = fmul float %37, %43 ; [#uses=1]
+ %46 = fmul float %36, %43 ; [#uses=1]
+ %47 = fadd float %7, %46 ; [#uses=1]
+ store float %47, float* %5, align 4
+ %48 = fadd float %10, %45 ; [#uses=1]
+ store float %48, float* %8, align 4
+ %49 = fadd float %13, %44 ; [#uses=1]
+ store float %49, float* %11, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN18btStaticPlaneShapeC2ERK9btVector3f(%struct.btStaticPlaneShape* %this, %struct.btQuadWord* nocapture %planeNormal, float %planeConstant) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeC2Ev(%struct.btConcaveShape* %0)
+ %1 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV18btStaticPlaneShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fmul float %3, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=3]
+ %7 = fmul float %6, %6 ; [#uses=1]
+ %8 = fadd float %4, %7 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=3]
+ %11 = fmul float %10, %10 ; [#uses=1]
+ %12 = fadd float %8, %11 ; [#uses=1]
+ %13 = tail call float @sqrtf(float %12) nounwind readonly ; [#uses=1]
+ %14 = fdiv float 1.000000e+00, %13 ; [#uses=3]
+ %15 = fmul float %10, %14 ; [#uses=1]
+ %16 = fmul float %6, %14 ; [#uses=1]
+ %17 = fmul float %3, %14 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %17, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %16, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %15, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 4 ; [#uses=1]
+ store float %planeConstant, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 28, i32* %27, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK18btStaticPlaneShape7getNameEv(%struct.btStaticPlaneShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([12 x i8]* @.str120, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK18btStaticPlaneShape28calculateSerializeBufferSizeEv(%struct.btStaticPlaneShape* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 52
+}
+
+; [#uses=1]
+define void @_ZNK18btStaticPlaneShape7getAabbERK11btTransformR9btVector3S4_(%struct.btStaticPlaneShape* nocapture %this, %struct.btTransform* nocapture %t, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK18btStaticPlaneShape21calculateLocalInertiaEfR9btVector3(%struct.btStaticPlaneShape* nocapture %this, float %mass, %struct.btQuadWord* nocapture %inertia) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btStaticPlaneShape15setLocalScalingERK9btVector3(%struct.btStaticPlaneShape* nocapture %this, %struct.btQuadWord* nocapture %scaling) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define %struct.btQuadWord* @_ZNK18btStaticPlaneShape15getLocalScalingEv(%struct.btStaticPlaneShape* %this) nounwind readnone align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 5 ; [#uses=1]
+ ret %struct.btQuadWord* %0
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK18btStaticPlaneShape9serializeEPvP12btSerializer(%struct.btStaticPlaneShape* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK16btCollisionShape9serializeEPvP12btSerializer(%struct.btCollisionShape* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds i8* %dataBuffer, i32 12 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i = bitcast i8* %2 to float* ; [#uses=1]
+ %3 = load float* %scevgep.i, align 4 ; [#uses=1]
+ store float %3, float* %scevgep4.i, align 4
+ %scevgep.1.i = getelementptr %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i = getelementptr i8* %dataBuffer, i32 16 ; [#uses=1]
+ %4 = bitcast i8* %scevgep4.1.i to float* ; [#uses=1]
+ %5 = load float* %scevgep.1.i, align 4 ; [#uses=1]
+ store float %5, float* %4, align 4
+ %scevgep.2.i = getelementptr %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i = getelementptr i8* %dataBuffer, i32 20 ; [#uses=1]
+ %6 = bitcast i8* %scevgep4.2.i to float* ; [#uses=1]
+ %7 = load float* %scevgep.2.i, align 4 ; [#uses=1]
+ store float %7, float* %6, align 4
+ %scevgep.3.i = getelementptr %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i = getelementptr i8* %dataBuffer, i32 24 ; [#uses=1]
+ %8 = bitcast i8* %scevgep4.3.i to float* ; [#uses=1]
+ %9 = load float* %scevgep.3.i, align 4 ; [#uses=1]
+ store float %9, float* %8, align 4
+ %10 = getelementptr inbounds i8* %dataBuffer, i32 28 ; [#uses=1]
+ %scevgep.i2 = getelementptr %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i3 = bitcast i8* %10 to float* ; [#uses=1]
+ %11 = load float* %scevgep.i2, align 4 ; [#uses=1]
+ store float %11, float* %scevgep4.i3, align 4
+ %scevgep.1.i4 = getelementptr %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i5 = getelementptr i8* %dataBuffer, i32 32 ; [#uses=1]
+ %12 = bitcast i8* %scevgep4.1.i5 to float* ; [#uses=1]
+ %13 = load float* %scevgep.1.i4, align 4 ; [#uses=1]
+ store float %13, float* %12, align 4
+ %scevgep.2.i6 = getelementptr %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i7 = getelementptr i8* %dataBuffer, i32 36 ; [#uses=1]
+ %14 = bitcast i8* %scevgep4.2.i7 to float* ; [#uses=1]
+ %15 = load float* %scevgep.2.i6, align 4 ; [#uses=1]
+ store float %15, float* %14, align 4
+ %scevgep.3.i8 = getelementptr %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i9 = getelementptr i8* %dataBuffer, i32 40 ; [#uses=1]
+ %16 = bitcast i8* %scevgep4.3.i9 to float* ; [#uses=1]
+ %17 = load float* %scevgep.3.i8, align 4 ; [#uses=1]
+ store float %17, float* %16, align 4
+ %18 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 4 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %21 = bitcast i8* %20 to float* ; [#uses=1]
+ store float %19, float* %21, align 4
+ ret i8* getelementptr inbounds ([23 x i8]* @.str1121, i32 0, i32 0)
+}
+
+; [#uses=1]
+define void @_ZNK18btStaticPlaneShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_(%struct.btStaticPlaneShape* nocapture %this, %struct.btActionInterface* %callback, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %triangle = alloca [3 x %struct.btQuadWord], align 8 ; [#uses=13]
+ %0 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fsub float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fsub float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fsub float %11, %13 ; [#uses=1]
+ %15 = fmul float %4, 5.000000e-01 ; [#uses=2]
+ %16 = fmul float %9, 5.000000e-01 ; [#uses=2]
+ %17 = fmul float %14, 5.000000e-01 ; [#uses=2]
+ %18 = fmul float %17, %17 ; [#uses=1]
+ %19 = fmul float %16, %16 ; [#uses=1]
+ %20 = fadd float %18, %19 ; [#uses=1]
+ %21 = fmul float %15, %15 ; [#uses=1]
+ %22 = fadd float %20, %21 ; [#uses=1]
+ %23 = call float @sqrtf(float %22) nounwind readonly ; [#uses=6]
+ %24 = fadd float %1, %3 ; [#uses=1]
+ %25 = fadd float %6, %8 ; [#uses=1]
+ %26 = fadd float %11, %13 ; [#uses=1]
+ %27 = fmul float %24, 5.000000e-01 ; [#uses=2]
+ %28 = fmul float %25, 5.000000e-01 ; [#uses=2]
+ %29 = fmul float %26, 5.000000e-01 ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=8]
+ %32 = call float @fabsf(float %31) nounwind readnone ; [#uses=1]
+ %33 = fcmp ogt float %32, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %33, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %entry
+ %34 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=4]
+ %36 = fmul float %35, %35 ; [#uses=1]
+ %37 = fmul float %31, %31 ; [#uses=1]
+ %38 = fadd float %36, %37 ; [#uses=2]
+ %39 = call float @sqrtf(float %38) nounwind readonly ; [#uses=1]
+ %40 = fdiv float 1.000000e+00, %39 ; [#uses=3]
+ %41 = fsub float -0.000000e+00, %31 ; [#uses=1]
+ %42 = fmul float %40, %41 ; [#uses=2]
+ %43 = fmul float %35, %40 ; [#uses=2]
+ %44 = fmul float %38, %40 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=3]
+ %47 = fsub float -0.000000e+00, %46 ; [#uses=1]
+ %48 = fmul float %43, %47 ; [#uses=1]
+ %49 = fmul float %46, %42 ; [#uses=1]
+ br label %bb2
+
+bb1.i: ; preds = %entry
+ %50 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=4]
+ %52 = fmul float %51, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=4]
+ %55 = fmul float %54, %54 ; [#uses=1]
+ %56 = fadd float %52, %55 ; [#uses=2]
+ %57 = call float @sqrtf(float %56) nounwind readonly ; [#uses=1]
+ %58 = fdiv float 1.000000e+00, %57 ; [#uses=3]
+ %59 = fsub float -0.000000e+00, %54 ; [#uses=1]
+ %60 = fmul float %58, %59 ; [#uses=2]
+ %61 = fmul float %51, %58 ; [#uses=2]
+ %62 = fsub float -0.000000e+00, %31 ; [#uses=1]
+ %63 = fmul float %61, %62 ; [#uses=1]
+ %64 = fmul float %31, %60 ; [#uses=1]
+ %65 = fmul float %56, %58 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb1.i, %bb.i
+ %66 = phi float [ %35, %bb.i ], [ %54, %bb1.i ] ; [#uses=2]
+ %67 = phi float [ %46, %bb.i ], [ %51, %bb1.i ] ; [#uses=2]
+ %tangentDir0.0.0.0 = phi float [ 0.000000e+00, %bb.i ], [ %60, %bb1.i ] ; [#uses=1]
+ %tangentDir0.0.1.0 = phi float [ %42, %bb.i ], [ %61, %bb1.i ] ; [#uses=1]
+ %tangentDir0.0.2.0 = phi float [ %43, %bb.i ], [ 0.000000e+00, %bb1.i ] ; [#uses=1]
+ %tangentDir1.0.0.0 = phi float [ %44, %bb.i ], [ %63, %bb1.i ] ; [#uses=1]
+ %tangentDir1.0.1.0 = phi float [ %48, %bb.i ], [ %64, %bb1.i ] ; [#uses=1]
+ %tangentDir1.0.2.0 = phi float [ %49, %bb.i ], [ %65, %bb1.i ] ; [#uses=1]
+ %68 = fmul float %67, %29 ; [#uses=1]
+ %69 = fmul float %66, %28 ; [#uses=1]
+ %70 = fadd float %68, %69 ; [#uses=1]
+ %71 = fmul float %31, %27 ; [#uses=1]
+ %72 = fadd float %70, %71 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 4 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = fsub float %72, %74 ; [#uses=3]
+ %76 = fmul float %31, %75 ; [#uses=1]
+ %77 = fmul float %66, %75 ; [#uses=1]
+ %78 = fmul float %67, %75 ; [#uses=1]
+ %79 = fsub float %27, %76 ; [#uses=2]
+ %80 = fsub float %28, %77 ; [#uses=2]
+ %81 = fsub float %29, %78 ; [#uses=2]
+ %82 = fmul float %tangentDir1.0.2.0, %23 ; [#uses=4]
+ %83 = fmul float %tangentDir1.0.1.0, %23 ; [#uses=4]
+ %84 = fmul float %tangentDir1.0.0.0, %23 ; [#uses=4]
+ %85 = fmul float %tangentDir0.0.2.0, %23 ; [#uses=2]
+ %86 = fmul float %tangentDir0.0.1.0, %23 ; [#uses=2]
+ %87 = fmul float %tangentDir0.0.0.0, %23 ; [#uses=2]
+ %88 = fadd float %79, %85 ; [#uses=2]
+ %89 = fadd float %80, %86 ; [#uses=2]
+ %90 = fadd float %81, %87 ; [#uses=2]
+ %91 = fadd float %88, %82 ; [#uses=2]
+ %92 = fadd float %89, %83 ; [#uses=2]
+ %93 = fadd float %90, %84 ; [#uses=2]
+ %94 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %93, float* %94, align 8
+ %95 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %92, float* %95, align 4
+ %96 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %91, float* %96, align 8
+ %97 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %97, align 4
+ %98 = fsub float %88, %82 ; [#uses=1]
+ %99 = fsub float %89, %83 ; [#uses=1]
+ %100 = fsub float %90, %84 ; [#uses=1]
+ %101 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float %100, float* %101, align 8
+ %102 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float %99, float* %102, align 4
+ %103 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float %98, float* %103, align 8
+ %104 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %104, align 4
+ %105 = fsub float %79, %85 ; [#uses=2]
+ %106 = fsub float %80, %86 ; [#uses=2]
+ %107 = fsub float %81, %87 ; [#uses=2]
+ %108 = fsub float %105, %82 ; [#uses=2]
+ %109 = fsub float %106, %83 ; [#uses=2]
+ %110 = fsub float %107, %84 ; [#uses=2]
+ %111 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ store float %110, float* %111, align 8
+ %112 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ store float %109, float* %112, align 4
+ %113 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ store float %108, float* %113, align 8
+ %114 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %114, align 4
+ %115 = getelementptr inbounds %struct.btActionInterface* %callback, i32 0, i32 0 ; [#uses=2]
+ %116 = load i32 (...)*** %115, align 4 ; [#uses=1]
+ %117 = getelementptr inbounds i32 (...)** %116, i32 2 ; [#uses=1]
+ %118 = load i32 (...)** %117, align 4 ; [#uses=1]
+ %119 = bitcast i32 (...)* %118 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ %120 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 0 ; [#uses=2]
+ call void %119(%struct.btActionInterface* %callback, %struct.btQuadWord* %120, i32 0, i32 0)
+ store float %110, float* %94, align 8
+ store float %109, float* %95, align 4
+ store float %108, float* %96, align 8
+ store float 0.000000e+00, float* %97, align 4
+ %121 = fadd float %105, %82 ; [#uses=1]
+ %122 = fadd float %106, %83 ; [#uses=1]
+ %123 = fadd float %107, %84 ; [#uses=1]
+ store float %123, float* %101, align 8
+ store float %122, float* %102, align 4
+ store float %121, float* %103, align 8
+ store float 0.000000e+00, float* %104, align 4
+ store float %93, float* %111, align 8
+ store float %92, float* %112, align 4
+ store float %91, float* %113, align 8
+ store float 0.000000e+00, float* %114, align 4
+ %124 = load i32 (...)*** %115, align 4 ; [#uses=1]
+ %125 = getelementptr inbounds i32 (...)** %124, i32 2 ; [#uses=1]
+ %126 = load i32 (...)** %125, align 4 ; [#uses=1]
+ %127 = bitcast i32 (...)* %126 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ call void %127(%struct.btActionInterface* %callback, %struct.btQuadWord* %120, i32 0, i32 1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btStaticPlaneShapeD0Ev(%struct.btStaticPlaneShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV18btStaticPlaneShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ %2 = bitcast %struct.btStaticPlaneShape* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btStaticPlaneShapeD1Ev(%struct.btStaticPlaneShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV18btStaticPlaneShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN18btStaticPlaneShapeD2Ev(%struct.btStaticPlaneShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV18btStaticPlaneShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN18btStaticPlaneShapeC1ERK9btVector3f(%struct.btStaticPlaneShape* %this, %struct.btQuadWord* nocapture %planeNormal, float %planeConstant) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeC2Ev(%struct.btConcaveShape* %0)
+ %1 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([18 x i32 (...)*]* @_ZTV18btStaticPlaneShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fmul float %3, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=3]
+ %7 = fmul float %6, %6 ; [#uses=1]
+ %8 = fadd float %4, %7 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=3]
+ %11 = fmul float %10, %10 ; [#uses=1]
+ %12 = fadd float %8, %11 ; [#uses=1]
+ %13 = tail call float @sqrtf(float %12) nounwind readonly ; [#uses=1]
+ %14 = fdiv float 1.000000e+00, %13 ; [#uses=3]
+ %15 = fmul float %10, %14 ; [#uses=1]
+ %16 = fmul float %6, %14 ; [#uses=1]
+ %17 = fmul float %3, %14 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %17, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %16, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %15, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 4 ; [#uses=1]
+ store float %planeConstant, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btStaticPlaneShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 28, i32* %27, align 4
+ ret void
+}
+
+; [#uses=7]
+define void @_ZN23btStridingMeshInterfaceD2Ev(%struct.btStridingMeshInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btStridingMeshInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([17 x i32 (...)*]* @_ZTV23btStridingMeshInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK23btStridingMeshInterface14hasPremadeAabbEv(%struct.btStridingMeshInterface* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK23btStridingMeshInterface14setPremadeAabbERK9btVector3S2_(%struct.btStridingMeshInterface* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK23btStridingMeshInterface14getPremadeAabbEP9btVector3S1_(%struct.btStridingMeshInterface* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK23btStridingMeshInterface28calculateSerializeBufferSizeEv(%struct.btStridingMeshInterface* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 28
+}
+
+; [#uses=1]
+define void @_ZNK23btStridingMeshInterface27InternalProcessAllTrianglesEP31btInternalTriangleIndexCallbackRK9btVector3S4_(%struct.btStridingMeshInterface* %this, %struct.btActionInterface* %callback, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+bb2:
+ %vertexbase = alloca i8*, align 4 ; [#uses=5]
+ %indexbase = alloca i8*, align 4 ; [#uses=5]
+ %indexstride = alloca i32, align 4 ; [#uses=5]
+ %type = alloca i32, align 4 ; [#uses=2]
+ %gfxindextype = alloca i32, align 4 ; [#uses=3]
+ %stride = alloca i32, align 4 ; [#uses=5]
+ %numverts = alloca i32, align 4 ; [#uses=1]
+ %numtriangles = alloca i32, align 4 ; [#uses=9]
+ %triangle = alloca [3 x %struct.btQuadWord], align 8 ; [#uses=13]
+ %0 = getelementptr inbounds %struct.btStridingMeshInterface* %this, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 7 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to i32 (%struct.btStridingMeshInterface*)* ; [#uses=1]
+ %5 = call i32 %4(%struct.btStridingMeshInterface* %this) ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btStridingMeshInterface* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=12]
+ %8 = getelementptr inbounds %struct.btStridingMeshInterface* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=12]
+ %10 = getelementptr inbounds %struct.btStridingMeshInterface* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=12]
+ %12 = icmp sgt i32 %5, 0 ; [#uses=1]
+ br i1 %12, label %bb.nph81, label %return
+
+bb.nph81: ; preds = %bb2
+ %13 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %14 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 0, i32 0, i32 1 ; [#uses=4]
+ %15 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 0, i32 0, i32 2 ; [#uses=4]
+ %16 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 0, i32 0, i32 3 ; [#uses=4]
+ %17 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 1, i32 0, i32 0 ; [#uses=4]
+ %18 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 1, i32 0, i32 1 ; [#uses=4]
+ %19 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 1, i32 0, i32 2 ; [#uses=4]
+ %20 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 1, i32 0, i32 3 ; [#uses=4]
+ %21 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 2, i32 0, i32 0 ; [#uses=4]
+ %22 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 2, i32 0, i32 1 ; [#uses=4]
+ %23 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 2, i32 0, i32 2 ; [#uses=4]
+ %24 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 2, i32 0, i32 3 ; [#uses=4]
+ %25 = getelementptr inbounds %struct.btActionInterface* %callback, i32 0, i32 0 ; [#uses=4]
+ %26 = getelementptr inbounds [3 x %struct.btQuadWord]* %triangle, i32 0, i32 0 ; [#uses=4]
+ br label %bb3
+
+bb3: ; preds = %bb22, %bb.nph81
+ %27 = phi i32 [ 0, %bb.nph81 ], [ %315, %bb22 ] ; [#uses=7]
+ %28 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds i32 (...)** %28, i32 4 ; [#uses=1]
+ %30 = load i32 (...)** %29, align 4 ; [#uses=1]
+ %31 = bitcast i32 (...)* %30 to void (%struct.btStridingMeshInterface*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* ; [#uses=1]
+ call void %31(%struct.btStridingMeshInterface* %this, i8** %vertexbase, i32* %numverts, i32* %type, i32* %stride, i8** %indexbase, i32* %indexstride, i32* %numtriangles, i32* %gfxindextype, i32 %27)
+ %32 = load i32* %type, align 4 ; [#uses=1]
+ switch i32 %32, label %bb22 [
+ i32 0, label %bb4
+ i32 1, label %bb12
+ ]
+
+bb4: ; preds = %bb3
+ %33 = load i32* %gfxindextype, align 4 ; [#uses=1]
+ switch i32 %33, label %bb22 [
+ i32 2, label %bb7.preheader
+ i32 3, label %bb11.preheader
+ ]
+
+bb7.preheader: ; preds = %bb4
+ %34 = load i32* %numtriangles, align 4 ; [#uses=1]
+ %35 = icmp sgt i32 %34, 0 ; [#uses=1]
+ br i1 %35, label %bb6, label %bb22
+
+bb11.preheader: ; preds = %bb4
+ %36 = load i32* %numtriangles, align 4 ; [#uses=1]
+ %37 = icmp sgt i32 %36, 0 ; [#uses=1]
+ br i1 %37, label %bb9, label %bb22
+
+bb6: ; preds = %bb6, %bb7.preheader
+ %38 = phi i32 [ %96, %bb6 ], [ 0, %bb7.preheader ] ; [#uses=3]
+ %39 = load i8** %indexbase, align 4 ; [#uses=3]
+ %40 = load i32* %indexstride, align 4 ; [#uses=1]
+ %41 = mul nsw i32 %40, %38 ; [#uses=3]
+ %42 = getelementptr inbounds i8* %39, i32 %41 ; [#uses=1]
+ %43 = bitcast i8* %42 to i32* ; [#uses=1]
+ %44 = load i8** %vertexbase, align 4 ; [#uses=9]
+ %45 = load i32* %43, align 4 ; [#uses=1]
+ %46 = load i32* %stride, align 4 ; [#uses=3]
+ %47 = mul i32 %46, %45 ; [#uses=3]
+ %48 = getelementptr inbounds i8* %44, i32 %47 ; [#uses=1]
+ %49 = bitcast i8* %48 to float* ; [#uses=1]
+ %.sum49 = add i32 %47, 8 ; [#uses=1]
+ %50 = getelementptr inbounds i8* %44, i32 %.sum49 ; [#uses=1]
+ %51 = bitcast i8* %50 to float* ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = fmul float %52, %11 ; [#uses=1]
+ %.sum50 = add i32 %47, 4 ; [#uses=1]
+ %54 = getelementptr inbounds i8* %44, i32 %.sum50 ; [#uses=1]
+ %55 = bitcast i8* %54 to float* ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = fmul float %56, %9 ; [#uses=1]
+ %58 = load float* %49, align 4 ; [#uses=1]
+ %59 = fmul float %58, %7 ; [#uses=1]
+ store float %59, float* %13, align 8
+ store float %57, float* %14, align 4
+ store float %53, float* %15, align 8
+ store float 0.000000e+00, float* %16, align 4
+ %.sum51 = add i32 %41, 4 ; [#uses=1]
+ %60 = getelementptr inbounds i8* %39, i32 %.sum51 ; [#uses=1]
+ %61 = bitcast i8* %60 to i32* ; [#uses=1]
+ %62 = load i32* %61, align 4 ; [#uses=1]
+ %63 = mul i32 %46, %62 ; [#uses=3]
+ %64 = getelementptr inbounds i8* %44, i32 %63 ; [#uses=1]
+ %65 = bitcast i8* %64 to float* ; [#uses=1]
+ %.sum52 = add i32 %63, 8 ; [#uses=1]
+ %66 = getelementptr inbounds i8* %44, i32 %.sum52 ; [#uses=1]
+ %67 = bitcast i8* %66 to float* ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = fmul float %68, %11 ; [#uses=1]
+ %.sum53 = add i32 %63, 4 ; [#uses=1]
+ %70 = getelementptr inbounds i8* %44, i32 %.sum53 ; [#uses=1]
+ %71 = bitcast i8* %70 to float* ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fmul float %72, %9 ; [#uses=1]
+ %74 = load float* %65, align 4 ; [#uses=1]
+ %75 = fmul float %74, %7 ; [#uses=1]
+ store float %75, float* %17, align 8
+ store float %73, float* %18, align 4
+ store float %69, float* %19, align 8
+ store float 0.000000e+00, float* %20, align 4
+ %.sum54 = add i32 %41, 8 ; [#uses=1]
+ %76 = getelementptr inbounds i8* %39, i32 %.sum54 ; [#uses=1]
+ %77 = bitcast i8* %76 to i32* ; [#uses=1]
+ %78 = load i32* %77, align 4 ; [#uses=1]
+ %79 = mul i32 %46, %78 ; [#uses=3]
+ %80 = getelementptr inbounds i8* %44, i32 %79 ; [#uses=1]
+ %81 = bitcast i8* %80 to float* ; [#uses=1]
+ %.sum55 = add i32 %79, 8 ; [#uses=1]
+ %82 = getelementptr inbounds i8* %44, i32 %.sum55 ; [#uses=1]
+ %83 = bitcast i8* %82 to float* ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ %85 = fmul float %84, %11 ; [#uses=1]
+ %.sum56 = add i32 %79, 4 ; [#uses=1]
+ %86 = getelementptr inbounds i8* %44, i32 %.sum56 ; [#uses=1]
+ %87 = bitcast i8* %86 to float* ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = fmul float %88, %9 ; [#uses=1]
+ %90 = load float* %81, align 4 ; [#uses=1]
+ %91 = fmul float %90, %7 ; [#uses=1]
+ store float %91, float* %21, align 8
+ store float %89, float* %22, align 4
+ store float %85, float* %23, align 8
+ store float 0.000000e+00, float* %24, align 4
+ %92 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %93 = getelementptr inbounds i32 (...)** %92, i32 2 ; [#uses=1]
+ %94 = load i32 (...)** %93, align 4 ; [#uses=1]
+ %95 = bitcast i32 (...)* %94 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ call void %95(%struct.btActionInterface* %callback, %struct.btQuadWord* %26, i32 %27, i32 %38)
+ %96 = add nsw i32 %38, 1 ; [#uses=2]
+ %97 = load i32* %numtriangles, align 4 ; [#uses=1]
+ %98 = icmp slt i32 %96, %97 ; [#uses=1]
+ br i1 %98, label %bb6, label %bb22
+
+bb9: ; preds = %bb9, %bb11.preheader
+ %99 = phi i32 [ %160, %bb9 ], [ 0, %bb11.preheader ] ; [#uses=3]
+ %100 = load i8** %indexbase, align 4 ; [#uses=3]
+ %101 = load i32* %indexstride, align 4 ; [#uses=1]
+ %102 = mul nsw i32 %101, %99 ; [#uses=3]
+ %103 = getelementptr inbounds i8* %100, i32 %102 ; [#uses=1]
+ %104 = bitcast i8* %103 to i16* ; [#uses=1]
+ %105 = load i8** %vertexbase, align 4 ; [#uses=9]
+ %106 = load i16* %104, align 2 ; [#uses=1]
+ %107 = zext i16 %106 to i32 ; [#uses=1]
+ %108 = load i32* %stride, align 4 ; [#uses=3]
+ %109 = mul nsw i32 %107, %108 ; [#uses=3]
+ %110 = getelementptr inbounds i8* %105, i32 %109 ; [#uses=1]
+ %111 = bitcast i8* %110 to float* ; [#uses=1]
+ %.sum41 = add i32 %109, 8 ; [#uses=1]
+ %112 = getelementptr inbounds i8* %105, i32 %.sum41 ; [#uses=1]
+ %113 = bitcast i8* %112 to float* ; [#uses=1]
+ %114 = load float* %113, align 4 ; [#uses=1]
+ %115 = fmul float %114, %11 ; [#uses=1]
+ %.sum42 = add i32 %109, 4 ; [#uses=1]
+ %116 = getelementptr inbounds i8* %105, i32 %.sum42 ; [#uses=1]
+ %117 = bitcast i8* %116 to float* ; [#uses=1]
+ %118 = load float* %117, align 4 ; [#uses=1]
+ %119 = fmul float %118, %9 ; [#uses=1]
+ %120 = load float* %111, align 4 ; [#uses=1]
+ %121 = fmul float %120, %7 ; [#uses=1]
+ store float %121, float* %13, align 8
+ store float %119, float* %14, align 4
+ store float %115, float* %15, align 8
+ store float 0.000000e+00, float* %16, align 4
+ %.sum43 = add i32 %102, 2 ; [#uses=1]
+ %122 = getelementptr inbounds i8* %100, i32 %.sum43 ; [#uses=1]
+ %123 = bitcast i8* %122 to i16* ; [#uses=1]
+ %124 = load i16* %123, align 2 ; [#uses=1]
+ %125 = zext i16 %124 to i32 ; [#uses=1]
+ %126 = mul nsw i32 %125, %108 ; [#uses=3]
+ %127 = getelementptr inbounds i8* %105, i32 %126 ; [#uses=1]
+ %128 = bitcast i8* %127 to float* ; [#uses=1]
+ %.sum44 = add i32 %126, 8 ; [#uses=1]
+ %129 = getelementptr inbounds i8* %105, i32 %.sum44 ; [#uses=1]
+ %130 = bitcast i8* %129 to float* ; [#uses=1]
+ %131 = load float* %130, align 4 ; [#uses=1]
+ %132 = fmul float %131, %11 ; [#uses=1]
+ %.sum45 = add i32 %126, 4 ; [#uses=1]
+ %133 = getelementptr inbounds i8* %105, i32 %.sum45 ; [#uses=1]
+ %134 = bitcast i8* %133 to float* ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ %136 = fmul float %135, %9 ; [#uses=1]
+ %137 = load float* %128, align 4 ; [#uses=1]
+ %138 = fmul float %137, %7 ; [#uses=1]
+ store float %138, float* %17, align 8
+ store float %136, float* %18, align 4
+ store float %132, float* %19, align 8
+ store float 0.000000e+00, float* %20, align 4
+ %.sum46 = add i32 %102, 4 ; [#uses=1]
+ %139 = getelementptr inbounds i8* %100, i32 %.sum46 ; [#uses=1]
+ %140 = bitcast i8* %139 to i16* ; [#uses=1]
+ %141 = load i16* %140, align 2 ; [#uses=1]
+ %142 = zext i16 %141 to i32 ; [#uses=1]
+ %143 = mul nsw i32 %142, %108 ; [#uses=3]
+ %144 = getelementptr inbounds i8* %105, i32 %143 ; [#uses=1]
+ %145 = bitcast i8* %144 to float* ; [#uses=1]
+ %.sum47 = add i32 %143, 8 ; [#uses=1]
+ %146 = getelementptr inbounds i8* %105, i32 %.sum47 ; [#uses=1]
+ %147 = bitcast i8* %146 to float* ; [#uses=1]
+ %148 = load float* %147, align 4 ; [#uses=1]
+ %149 = fmul float %148, %11 ; [#uses=1]
+ %.sum48 = add i32 %143, 4 ; [#uses=1]
+ %150 = getelementptr inbounds i8* %105, i32 %.sum48 ; [#uses=1]
+ %151 = bitcast i8* %150 to float* ; [#uses=1]
+ %152 = load float* %151, align 4 ; [#uses=1]
+ %153 = fmul float %152, %9 ; [#uses=1]
+ %154 = load float* %145, align 4 ; [#uses=1]
+ %155 = fmul float %154, %7 ; [#uses=1]
+ store float %155, float* %21, align 8
+ store float %153, float* %22, align 4
+ store float %149, float* %23, align 8
+ store float 0.000000e+00, float* %24, align 4
+ %156 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %157 = getelementptr inbounds i32 (...)** %156, i32 2 ; [#uses=1]
+ %158 = load i32 (...)** %157, align 4 ; [#uses=1]
+ %159 = bitcast i32 (...)* %158 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ call void %159(%struct.btActionInterface* %callback, %struct.btQuadWord* %26, i32 %27, i32 %99)
+ %160 = add nsw i32 %99, 1 ; [#uses=2]
+ %161 = load i32* %numtriangles, align 4 ; [#uses=1]
+ %162 = icmp slt i32 %160, %161 ; [#uses=1]
+ br i1 %162, label %bb9, label %bb22
+
+bb12: ; preds = %bb3
+ %163 = load i32* %gfxindextype, align 4 ; [#uses=1]
+ switch i32 %163, label %bb22 [
+ i32 2, label %bb17.preheader
+ i32 3, label %bb21.preheader
+ ]
+
+bb17.preheader: ; preds = %bb12
+ %164 = load i32* %numtriangles, align 4 ; [#uses=1]
+ %165 = icmp sgt i32 %164, 0 ; [#uses=1]
+ br i1 %165, label %bb15, label %bb22
+
+bb21.preheader: ; preds = %bb12
+ %166 = load i32* %numtriangles, align 4 ; [#uses=1]
+ %167 = icmp sgt i32 %166, 0 ; [#uses=1]
+ br i1 %167, label %bb19, label %bb22
+
+bb15: ; preds = %bb15, %bb17.preheader
+ %168 = phi i32 [ %235, %bb15 ], [ 0, %bb17.preheader ] ; [#uses=3]
+ %169 = load i8** %indexbase, align 4 ; [#uses=3]
+ %170 = load i32* %indexstride, align 4 ; [#uses=1]
+ %171 = mul nsw i32 %170, %168 ; [#uses=3]
+ %172 = getelementptr inbounds i8* %169, i32 %171 ; [#uses=1]
+ %173 = bitcast i8* %172 to i32* ; [#uses=1]
+ %174 = load i8** %vertexbase, align 4 ; [#uses=9]
+ %175 = load i32* %173, align 4 ; [#uses=1]
+ %176 = load i32* %stride, align 4 ; [#uses=3]
+ %177 = mul i32 %176, %175 ; [#uses=3]
+ %178 = getelementptr inbounds i8* %174, i32 %177 ; [#uses=1]
+ %179 = bitcast i8* %178 to double* ; [#uses=1]
+ %.sum33 = add i32 %177, 16 ; [#uses=1]
+ %180 = getelementptr inbounds i8* %174, i32 %.sum33 ; [#uses=1]
+ %181 = bitcast i8* %180 to double* ; [#uses=1]
+ %182 = load double* %181, align 4 ; [#uses=1]
+ %183 = fptrunc double %182 to float ; [#uses=1]
+ %184 = fmul float %183, %11 ; [#uses=1]
+ %.sum34 = add i32 %177, 8 ; [#uses=1]
+ %185 = getelementptr inbounds i8* %174, i32 %.sum34 ; [#uses=1]
+ %186 = bitcast i8* %185 to double* ; [#uses=1]
+ %187 = load double* %186, align 4 ; [#uses=1]
+ %188 = fptrunc double %187 to float ; [#uses=1]
+ %189 = fmul float %188, %9 ; [#uses=1]
+ %190 = load double* %179, align 4 ; [#uses=1]
+ %191 = fptrunc double %190 to float ; [#uses=1]
+ %192 = fmul float %191, %7 ; [#uses=1]
+ store float %192, float* %13, align 8
+ store float %189, float* %14, align 4
+ store float %184, float* %15, align 8
+ store float 0.000000e+00, float* %16, align 4
+ %.sum35 = add i32 %171, 4 ; [#uses=1]
+ %193 = getelementptr inbounds i8* %169, i32 %.sum35 ; [#uses=1]
+ %194 = bitcast i8* %193 to i32* ; [#uses=1]
+ %195 = load i32* %194, align 4 ; [#uses=1]
+ %196 = mul i32 %176, %195 ; [#uses=3]
+ %197 = getelementptr inbounds i8* %174, i32 %196 ; [#uses=1]
+ %198 = bitcast i8* %197 to double* ; [#uses=1]
+ %.sum36 = add i32 %196, 16 ; [#uses=1]
+ %199 = getelementptr inbounds i8* %174, i32 %.sum36 ; [#uses=1]
+ %200 = bitcast i8* %199 to double* ; [#uses=1]
+ %201 = load double* %200, align 4 ; [#uses=1]
+ %202 = fptrunc double %201 to float ; [#uses=1]
+ %203 = fmul float %202, %11 ; [#uses=1]
+ %.sum37 = add i32 %196, 8 ; [#uses=1]
+ %204 = getelementptr inbounds i8* %174, i32 %.sum37 ; [#uses=1]
+ %205 = bitcast i8* %204 to double* ; [#uses=1]
+ %206 = load double* %205, align 4 ; [#uses=1]
+ %207 = fptrunc double %206 to float ; [#uses=1]
+ %208 = fmul float %207, %9 ; [#uses=1]
+ %209 = load double* %198, align 4 ; [#uses=1]
+ %210 = fptrunc double %209 to float ; [#uses=1]
+ %211 = fmul float %210, %7 ; [#uses=1]
+ store float %211, float* %17, align 8
+ store float %208, float* %18, align 4
+ store float %203, float* %19, align 8
+ store float 0.000000e+00, float* %20, align 4
+ %.sum38 = add i32 %171, 8 ; [#uses=1]
+ %212 = getelementptr inbounds i8* %169, i32 %.sum38 ; [#uses=1]
+ %213 = bitcast i8* %212 to i32* ; [#uses=1]
+ %214 = load i32* %213, align 4 ; [#uses=1]
+ %215 = mul i32 %176, %214 ; [#uses=3]
+ %216 = getelementptr inbounds i8* %174, i32 %215 ; [#uses=1]
+ %217 = bitcast i8* %216 to double* ; [#uses=1]
+ %.sum39 = add i32 %215, 16 ; [#uses=1]
+ %218 = getelementptr inbounds i8* %174, i32 %.sum39 ; [#uses=1]
+ %219 = bitcast i8* %218 to double* ; [#uses=1]
+ %220 = load double* %219, align 4 ; [#uses=1]
+ %221 = fptrunc double %220 to float ; [#uses=1]
+ %222 = fmul float %221, %11 ; [#uses=1]
+ %.sum40 = add i32 %215, 8 ; [#uses=1]
+ %223 = getelementptr inbounds i8* %174, i32 %.sum40 ; [#uses=1]
+ %224 = bitcast i8* %223 to double* ; [#uses=1]
+ %225 = load double* %224, align 4 ; [#uses=1]
+ %226 = fptrunc double %225 to float ; [#uses=1]
+ %227 = fmul float %226, %9 ; [#uses=1]
+ %228 = load double* %217, align 4 ; [#uses=1]
+ %229 = fptrunc double %228 to float ; [#uses=1]
+ %230 = fmul float %229, %7 ; [#uses=1]
+ store float %230, float* %21, align 8
+ store float %227, float* %22, align 4
+ store float %222, float* %23, align 8
+ store float 0.000000e+00, float* %24, align 4
+ %231 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %232 = getelementptr inbounds i32 (...)** %231, i32 2 ; [#uses=1]
+ %233 = load i32 (...)** %232, align 4 ; [#uses=1]
+ %234 = bitcast i32 (...)* %233 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ call void %234(%struct.btActionInterface* %callback, %struct.btQuadWord* %26, i32 %27, i32 %168)
+ %235 = add nsw i32 %168, 1 ; [#uses=2]
+ %236 = load i32* %numtriangles, align 4 ; [#uses=1]
+ %237 = icmp slt i32 %235, %236 ; [#uses=1]
+ br i1 %237, label %bb15, label %bb22
+
+bb19: ; preds = %bb19, %bb21.preheader
+ %238 = phi i32 [ %308, %bb19 ], [ 0, %bb21.preheader ] ; [#uses=3]
+ %239 = load i8** %indexbase, align 4 ; [#uses=3]
+ %240 = load i32* %indexstride, align 4 ; [#uses=1]
+ %241 = mul nsw i32 %240, %238 ; [#uses=3]
+ %242 = getelementptr inbounds i8* %239, i32 %241 ; [#uses=1]
+ %243 = bitcast i8* %242 to i16* ; [#uses=1]
+ %244 = load i8** %vertexbase, align 4 ; [#uses=9]
+ %245 = load i16* %243, align 2 ; [#uses=1]
+ %246 = zext i16 %245 to i32 ; [#uses=1]
+ %247 = load i32* %stride, align 4 ; [#uses=3]
+ %248 = mul nsw i32 %246, %247 ; [#uses=3]
+ %249 = getelementptr inbounds i8* %244, i32 %248 ; [#uses=1]
+ %250 = bitcast i8* %249 to double* ; [#uses=1]
+ %.sum = add i32 %248, 16 ; [#uses=1]
+ %251 = getelementptr inbounds i8* %244, i32 %.sum ; [#uses=1]
+ %252 = bitcast i8* %251 to double* ; [#uses=1]
+ %253 = load double* %252, align 4 ; [#uses=1]
+ %254 = fptrunc double %253 to float ; [#uses=1]
+ %255 = fmul float %254, %11 ; [#uses=1]
+ %.sum26 = add i32 %248, 8 ; [#uses=1]
+ %256 = getelementptr inbounds i8* %244, i32 %.sum26 ; [#uses=1]
+ %257 = bitcast i8* %256 to double* ; [#uses=1]
+ %258 = load double* %257, align 4 ; [#uses=1]
+ %259 = fptrunc double %258 to float ; [#uses=1]
+ %260 = fmul float %259, %9 ; [#uses=1]
+ %261 = load double* %250, align 4 ; [#uses=1]
+ %262 = fptrunc double %261 to float ; [#uses=1]
+ %263 = fmul float %262, %7 ; [#uses=1]
+ store float %263, float* %13, align 8
+ store float %260, float* %14, align 4
+ store float %255, float* %15, align 8
+ store float 0.000000e+00, float* %16, align 4
+ %.sum27 = add i32 %241, 2 ; [#uses=1]
+ %264 = getelementptr inbounds i8* %239, i32 %.sum27 ; [#uses=1]
+ %265 = bitcast i8* %264 to i16* ; [#uses=1]
+ %266 = load i16* %265, align 2 ; [#uses=1]
+ %267 = zext i16 %266 to i32 ; [#uses=1]
+ %268 = mul nsw i32 %267, %247 ; [#uses=3]
+ %269 = getelementptr inbounds i8* %244, i32 %268 ; [#uses=1]
+ %270 = bitcast i8* %269 to double* ; [#uses=1]
+ %.sum28 = add i32 %268, 16 ; [#uses=1]
+ %271 = getelementptr inbounds i8* %244, i32 %.sum28 ; [#uses=1]
+ %272 = bitcast i8* %271 to double* ; [#uses=1]
+ %273 = load double* %272, align 4 ; [#uses=1]
+ %274 = fptrunc double %273 to float ; [#uses=1]
+ %275 = fmul float %274, %11 ; [#uses=1]
+ %.sum29 = add i32 %268, 8 ; [#uses=1]
+ %276 = getelementptr inbounds i8* %244, i32 %.sum29 ; [#uses=1]
+ %277 = bitcast i8* %276 to double* ; [#uses=1]
+ %278 = load double* %277, align 4 ; [#uses=1]
+ %279 = fptrunc double %278 to float ; [#uses=1]
+ %280 = fmul float %279, %9 ; [#uses=1]
+ %281 = load double* %270, align 4 ; [#uses=1]
+ %282 = fptrunc double %281 to float ; [#uses=1]
+ %283 = fmul float %282, %7 ; [#uses=1]
+ store float %283, float* %17, align 8
+ store float %280, float* %18, align 4
+ store float %275, float* %19, align 8
+ store float 0.000000e+00, float* %20, align 4
+ %.sum30 = add i32 %241, 4 ; [#uses=1]
+ %284 = getelementptr inbounds i8* %239, i32 %.sum30 ; [#uses=1]
+ %285 = bitcast i8* %284 to i16* ; [#uses=1]
+ %286 = load i16* %285, align 2 ; [#uses=1]
+ %287 = zext i16 %286 to i32 ; [#uses=1]
+ %288 = mul nsw i32 %287, %247 ; [#uses=3]
+ %289 = getelementptr inbounds i8* %244, i32 %288 ; [#uses=1]
+ %290 = bitcast i8* %289 to double* ; [#uses=1]
+ %.sum31 = add i32 %288, 16 ; [#uses=1]
+ %291 = getelementptr inbounds i8* %244, i32 %.sum31 ; [#uses=1]
+ %292 = bitcast i8* %291 to double* ; [#uses=1]
+ %293 = load double* %292, align 4 ; [#uses=1]
+ %294 = fptrunc double %293 to float ; [#uses=1]
+ %295 = fmul float %294, %11 ; [#uses=1]
+ %.sum32 = add i32 %288, 8 ; [#uses=1]
+ %296 = getelementptr inbounds i8* %244, i32 %.sum32 ; [#uses=1]
+ %297 = bitcast i8* %296 to double* ; [#uses=1]
+ %298 = load double* %297, align 4 ; [#uses=1]
+ %299 = fptrunc double %298 to float ; [#uses=1]
+ %300 = fmul float %299, %9 ; [#uses=1]
+ %301 = load double* %290, align 4 ; [#uses=1]
+ %302 = fptrunc double %301 to float ; [#uses=1]
+ %303 = fmul float %302, %7 ; [#uses=1]
+ store float %303, float* %21, align 8
+ store float %300, float* %22, align 4
+ store float %295, float* %23, align 8
+ store float 0.000000e+00, float* %24, align 4
+ %304 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %305 = getelementptr inbounds i32 (...)** %304, i32 2 ; [#uses=1]
+ %306 = load i32 (...)** %305, align 4 ; [#uses=1]
+ %307 = bitcast i32 (...)* %306 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ call void %307(%struct.btActionInterface* %callback, %struct.btQuadWord* %26, i32 %27, i32 %238)
+ %308 = add nsw i32 %238, 1 ; [#uses=2]
+ %309 = load i32* %numtriangles, align 4 ; [#uses=1]
+ %310 = icmp slt i32 %308, %309 ; [#uses=1]
+ br i1 %310, label %bb19, label %bb22
+
+bb22: ; preds = %bb19, %bb15, %bb21.preheader, %bb17.preheader, %bb12, %bb9, %bb6, %bb11.preheader, %bb7.preheader, %bb4, %bb3
+ %311 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %312 = getelementptr inbounds i32 (...)** %311, i32 6 ; [#uses=1]
+ %313 = load i32 (...)** %312, align 4 ; [#uses=1]
+ %314 = bitcast i32 (...)* %313 to void (%struct.btStridingMeshInterface*, i32)* ; [#uses=1]
+ call void %314(%struct.btStridingMeshInterface* %this, i32 %27)
+ %315 = add nsw i32 %27, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %315, %5 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb3
+
+return: ; preds = %bb22, %bb2
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_EN23AabbCalculationCallbackD1Ev(%struct..0AabbCalculationCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_E23AabbCalculationCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_EN23AabbCalculationCallbackD0Ev(%struct..0AabbCalculationCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_E23AabbCalculationCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct..0AabbCalculationCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_EN23AabbCalculationCallback28internalProcessTriangleIndexEPS0_ii(%struct..0AabbCalculationCallback* nocapture %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=4]
+ %2 = load float* %0, align 4 ; [#uses=3]
+ %3 = load float* %1, align 4 ; [#uses=2]
+ %4 = fcmp olt float %2, %3 ; [#uses=1]
+ br i1 %4, label %bb.i.i, label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+bb.i.i: ; preds = %entry
+ store float %2, float* %1, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i, %entry
+ %5 = phi float [ %2, %bb.i.i ], [ %3, %entry ] ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=2]
+ %7 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=4]
+ %8 = load float* %6, align 4 ; [#uses=3]
+ %9 = load float* %7, align 4 ; [#uses=2]
+ %10 = fcmp olt float %8, %9 ; [#uses=1]
+ br i1 %10, label %bb.i7.i, label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+bb.i7.i: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ store float %8, float* %7, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i, %_Z8btSetMinIfEvRT_RKS0_.exit.i
+ %11 = phi float [ %8, %bb.i7.i ], [ %9, %_Z8btSetMinIfEvRT_RKS0_.exit.i ] ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=2]
+ %13 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=4]
+ %14 = load float* %12, align 4 ; [#uses=3]
+ %15 = load float* %13, align 4 ; [#uses=2]
+ %16 = fcmp olt float %14, %15 ; [#uses=1]
+ br i1 %16, label %bb.i4.i, label %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+
+bb.i4.i: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ store float %14, float* %13, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+
+_Z8btSetMinIfEvRT_RKS0_.exit6.i: ; preds = %bb.i4.i, %_Z8btSetMinIfEvRT_RKS0_.exit9.i
+ %17 = phi float [ %14, %bb.i4.i ], [ %15, %_Z8btSetMinIfEvRT_RKS0_.exit9.i ] ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 3 ; [#uses=2]
+ %19 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=4]
+ %20 = load float* %18, align 4 ; [#uses=3]
+ %21 = load float* %19, align 4 ; [#uses=2]
+ %22 = fcmp olt float %20, %21 ; [#uses=1]
+ br i1 %22, label %bb.i1.i, label %_ZN9btVector36setMinERKS_.exit
+
+bb.i1.i: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+ store float %20, float* %19, align 4
+ br label %_ZN9btVector36setMinERKS_.exit
+
+_ZN9btVector36setMinERKS_.exit: ; preds = %bb.i1.i, %_Z8btSetMinIfEvRT_RKS0_.exit6.i
+ %23 = phi float [ %20, %bb.i1.i ], [ %21, %_Z8btSetMinIfEvRT_RKS0_.exit6.i ] ; [#uses=2]
+ %24 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=4]
+ %25 = load float* %24, align 4 ; [#uses=2]
+ %26 = load float* %0, align 4 ; [#uses=3]
+ %27 = fcmp olt float %25, %26 ; [#uses=1]
+ br i1 %27, label %bb.i.i32, label %_Z8btSetMaxIfEvRT_RKS0_.exit.i33
+
+bb.i.i32: ; preds = %_ZN9btVector36setMinERKS_.exit
+ store float %26, float* %24, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit.i33
+
+_Z8btSetMaxIfEvRT_RKS0_.exit.i33: ; preds = %bb.i.i32, %_ZN9btVector36setMinERKS_.exit
+ %28 = phi float [ %26, %bb.i.i32 ], [ %25, %_ZN9btVector36setMinERKS_.exit ] ; [#uses=2]
+ %29 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=4]
+ %30 = load float* %29, align 4 ; [#uses=2]
+ %31 = load float* %6, align 4 ; [#uses=3]
+ %32 = fcmp olt float %30, %31 ; [#uses=1]
+ br i1 %32, label %bb.i7.i34, label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i35
+
+bb.i7.i34: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit.i33
+ store float %31, float* %29, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i35
+
+_Z8btSetMaxIfEvRT_RKS0_.exit9.i35: ; preds = %bb.i7.i34, %_Z8btSetMaxIfEvRT_RKS0_.exit.i33
+ %33 = phi float [ %31, %bb.i7.i34 ], [ %30, %_Z8btSetMaxIfEvRT_RKS0_.exit.i33 ] ; [#uses=2]
+ %34 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=4]
+ %35 = load float* %34, align 4 ; [#uses=2]
+ %36 = load float* %12, align 4 ; [#uses=3]
+ %37 = fcmp olt float %35, %36 ; [#uses=1]
+ br i1 %37, label %bb.i4.i36, label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i37
+
+bb.i4.i36: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit9.i35
+ store float %36, float* %34, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i37
+
+_Z8btSetMaxIfEvRT_RKS0_.exit6.i37: ; preds = %bb.i4.i36, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i35
+ %38 = phi float [ %36, %bb.i4.i36 ], [ %35, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i35 ] ; [#uses=2]
+ %39 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=4]
+ %40 = load float* %39, align 4 ; [#uses=2]
+ %41 = load float* %18, align 4 ; [#uses=3]
+ %42 = fcmp olt float %40, %41 ; [#uses=1]
+ br i1 %42, label %bb.i1.i38, label %_ZN9btVector36setMaxERKS_.exit40
+
+bb.i1.i38: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit6.i37
+ store float %41, float* %39, align 4
+ br label %_ZN9btVector36setMaxERKS_.exit40
+
+_ZN9btVector36setMaxERKS_.exit40: ; preds = %bb.i1.i38, %_Z8btSetMaxIfEvRT_RKS0_.exit6.i37
+ %43 = phi float [ %40, %_Z8btSetMaxIfEvRT_RKS0_.exit6.i37 ], [ %41, %bb.i1.i38 ] ; [#uses=2]
+ %44 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=2]
+ %45 = load float* %44, align 4 ; [#uses=3]
+ %46 = fcmp olt float %45, %5 ; [#uses=1]
+ br i1 %46, label %bb.i.i23, label %_Z8btSetMinIfEvRT_RKS0_.exit.i24
+
+bb.i.i23: ; preds = %_ZN9btVector36setMaxERKS_.exit40
+ store float %45, float* %1, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit.i24
+
+_Z8btSetMinIfEvRT_RKS0_.exit.i24: ; preds = %bb.i.i23, %_ZN9btVector36setMaxERKS_.exit40
+ %47 = phi float [ %45, %bb.i.i23 ], [ %5, %_ZN9btVector36setMaxERKS_.exit40 ] ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=2]
+ %49 = load float* %48, align 4 ; [#uses=3]
+ %50 = fcmp olt float %49, %11 ; [#uses=1]
+ br i1 %50, label %bb.i7.i25, label %_Z8btSetMinIfEvRT_RKS0_.exit9.i26
+
+bb.i7.i25: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit.i24
+ store float %49, float* %7, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit9.i26
+
+_Z8btSetMinIfEvRT_RKS0_.exit9.i26: ; preds = %bb.i7.i25, %_Z8btSetMinIfEvRT_RKS0_.exit.i24
+ %51 = phi float [ %49, %bb.i7.i25 ], [ %11, %_Z8btSetMinIfEvRT_RKS0_.exit.i24 ] ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=2]
+ %53 = load float* %52, align 4 ; [#uses=3]
+ %54 = fcmp olt float %53, %17 ; [#uses=1]
+ br i1 %54, label %bb.i4.i27, label %_Z8btSetMinIfEvRT_RKS0_.exit6.i28
+
+bb.i4.i27: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit9.i26
+ store float %53, float* %13, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit6.i28
+
+_Z8btSetMinIfEvRT_RKS0_.exit6.i28: ; preds = %bb.i4.i27, %_Z8btSetMinIfEvRT_RKS0_.exit9.i26
+ %55 = phi float [ %53, %bb.i4.i27 ], [ %17, %_Z8btSetMinIfEvRT_RKS0_.exit9.i26 ] ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 3 ; [#uses=2]
+ %57 = load float* %56, align 4 ; [#uses=3]
+ %58 = fcmp olt float %57, %23 ; [#uses=1]
+ br i1 %58, label %bb.i1.i29, label %_ZN9btVector36setMinERKS_.exit31
+
+bb.i1.i29: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit6.i28
+ store float %57, float* %19, align 4
+ br label %_ZN9btVector36setMinERKS_.exit31
+
+_ZN9btVector36setMinERKS_.exit31: ; preds = %bb.i1.i29, %_Z8btSetMinIfEvRT_RKS0_.exit6.i28
+ %59 = phi float [ %57, %bb.i1.i29 ], [ %23, %_Z8btSetMinIfEvRT_RKS0_.exit6.i28 ] ; [#uses=1]
+ %60 = load float* %44, align 4 ; [#uses=3]
+ %61 = fcmp olt float %28, %60 ; [#uses=1]
+ br i1 %61, label %bb.i.i14, label %_Z8btSetMaxIfEvRT_RKS0_.exit.i15
+
+bb.i.i14: ; preds = %_ZN9btVector36setMinERKS_.exit31
+ store float %60, float* %24, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit.i15
+
+_Z8btSetMaxIfEvRT_RKS0_.exit.i15: ; preds = %bb.i.i14, %_ZN9btVector36setMinERKS_.exit31
+ %62 = phi float [ %60, %bb.i.i14 ], [ %28, %_ZN9btVector36setMinERKS_.exit31 ] ; [#uses=1]
+ %63 = load float* %48, align 4 ; [#uses=3]
+ %64 = fcmp olt float %33, %63 ; [#uses=1]
+ br i1 %64, label %bb.i7.i16, label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i17
+
+bb.i7.i16: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit.i15
+ store float %63, float* %29, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i17
+
+_Z8btSetMaxIfEvRT_RKS0_.exit9.i17: ; preds = %bb.i7.i16, %_Z8btSetMaxIfEvRT_RKS0_.exit.i15
+ %65 = phi float [ %63, %bb.i7.i16 ], [ %33, %_Z8btSetMaxIfEvRT_RKS0_.exit.i15 ] ; [#uses=1]
+ %66 = load float* %52, align 4 ; [#uses=3]
+ %67 = fcmp olt float %38, %66 ; [#uses=1]
+ br i1 %67, label %bb.i4.i18, label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i19
+
+bb.i4.i18: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit9.i17
+ store float %66, float* %34, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i19
+
+_Z8btSetMaxIfEvRT_RKS0_.exit6.i19: ; preds = %bb.i4.i18, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i17
+ %68 = phi float [ %66, %bb.i4.i18 ], [ %38, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i17 ] ; [#uses=1]
+ %69 = load float* %56, align 4 ; [#uses=3]
+ %70 = fcmp olt float %43, %69 ; [#uses=1]
+ br i1 %70, label %bb.i1.i20, label %_ZN9btVector36setMaxERKS_.exit22
+
+bb.i1.i20: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit6.i19
+ store float %69, float* %39, align 4
+ br label %_ZN9btVector36setMaxERKS_.exit22
+
+_ZN9btVector36setMaxERKS_.exit22: ; preds = %bb.i1.i20, %_Z8btSetMaxIfEvRT_RKS0_.exit6.i19
+ %71 = phi float [ %43, %_Z8btSetMaxIfEvRT_RKS0_.exit6.i19 ], [ %69, %bb.i1.i20 ] ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=2]
+ %73 = load float* %72, align 4 ; [#uses=2]
+ %74 = fcmp olt float %73, %47 ; [#uses=1]
+ br i1 %74, label %bb.i.i5, label %_Z8btSetMinIfEvRT_RKS0_.exit.i6
+
+bb.i.i5: ; preds = %_ZN9btVector36setMaxERKS_.exit22
+ store float %73, float* %1, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit.i6
+
+_Z8btSetMinIfEvRT_RKS0_.exit.i6: ; preds = %bb.i.i5, %_ZN9btVector36setMaxERKS_.exit22
+ %75 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=2]
+ %76 = load float* %75, align 4 ; [#uses=2]
+ %77 = fcmp olt float %76, %51 ; [#uses=1]
+ br i1 %77, label %bb.i7.i7, label %_Z8btSetMinIfEvRT_RKS0_.exit9.i8
+
+bb.i7.i7: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit.i6
+ store float %76, float* %7, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit9.i8
+
+_Z8btSetMinIfEvRT_RKS0_.exit9.i8: ; preds = %bb.i7.i7, %_Z8btSetMinIfEvRT_RKS0_.exit.i6
+ %78 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=2]
+ %79 = load float* %78, align 4 ; [#uses=2]
+ %80 = fcmp olt float %79, %55 ; [#uses=1]
+ br i1 %80, label %bb.i4.i9, label %_Z8btSetMinIfEvRT_RKS0_.exit6.i10
+
+bb.i4.i9: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit9.i8
+ store float %79, float* %13, align 4
+ br label %_Z8btSetMinIfEvRT_RKS0_.exit6.i10
+
+_Z8btSetMinIfEvRT_RKS0_.exit6.i10: ; preds = %bb.i4.i9, %_Z8btSetMinIfEvRT_RKS0_.exit9.i8
+ %81 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 3 ; [#uses=2]
+ %82 = load float* %81, align 4 ; [#uses=2]
+ %83 = fcmp olt float %82, %59 ; [#uses=1]
+ br i1 %83, label %bb.i1.i11, label %_ZN9btVector36setMinERKS_.exit13
+
+bb.i1.i11: ; preds = %_Z8btSetMinIfEvRT_RKS0_.exit6.i10
+ store float %82, float* %19, align 4
+ br label %_ZN9btVector36setMinERKS_.exit13
+
+_ZN9btVector36setMinERKS_.exit13: ; preds = %bb.i1.i11, %_Z8btSetMinIfEvRT_RKS0_.exit6.i10
+ %84 = load float* %72, align 4 ; [#uses=2]
+ %85 = fcmp olt float %62, %84 ; [#uses=1]
+ br i1 %85, label %bb.i.i1, label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+bb.i.i1: ; preds = %_ZN9btVector36setMinERKS_.exit13
+ store float %84, float* %24, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit.i: ; preds = %bb.i.i1, %_ZN9btVector36setMinERKS_.exit13
+ %86 = load float* %75, align 4 ; [#uses=2]
+ %87 = fcmp olt float %65, %86 ; [#uses=1]
+ br i1 %87, label %bb.i7.i2, label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+bb.i7.i2: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ store float %86, float* %29, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit9.i: ; preds = %bb.i7.i2, %_Z8btSetMaxIfEvRT_RKS0_.exit.i
+ %88 = load float* %78, align 4 ; [#uses=2]
+ %89 = fcmp olt float %68, %88 ; [#uses=1]
+ br i1 %89, label %bb.i4.i3, label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+
+bb.i4.i3: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ store float %88, float* %34, align 4
+ br label %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+
+_Z8btSetMaxIfEvRT_RKS0_.exit6.i: ; preds = %bb.i4.i3, %_Z8btSetMaxIfEvRT_RKS0_.exit9.i
+ %90 = load float* %81, align 4 ; [#uses=2]
+ %91 = fcmp olt float %71, %90 ; [#uses=1]
+ br i1 %91, label %bb.i1.i4, label %_ZN9btVector36setMaxERKS_.exit
+
+bb.i1.i4: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+ store float %90, float* %39, align 4
+ ret void
+
+_ZN9btVector36setMaxERKS_.exit: ; preds = %_Z8btSetMaxIfEvRT_RKS0_.exit6.i
+ ret void
+}
+
+; [#uses=1]
+define i8* @_ZNK23btStridingMeshInterface9serializeEPvP12btSerializer(%struct.btStridingMeshInterface* %this, i8* nocapture %dataBuffer, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %vertexbase = alloca i8*, align 4 ; [#uses=3]
+ %indexbase = alloca i8*, align 4 ; [#uses=3]
+ %indexstride = alloca i32, align 4 ; [#uses=3]
+ %type = alloca i32, align 4 ; [#uses=2]
+ %gfxindextype = alloca i32, align 4 ; [#uses=2]
+ %stride = alloca i32, align 4 ; [#uses=3]
+ %numverts = alloca i32, align 4 ; [#uses=7]
+ %numtriangles = alloca i32, align 4 ; [#uses=8]
+ %0 = getelementptr inbounds %struct.btStridingMeshInterface* %this, i32 0, i32 0 ; [#uses=4]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 7 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to i32 (%struct.btStridingMeshInterface*)* ; [#uses=1]
+ %5 = call i32 %4(%struct.btStridingMeshInterface* %this) ; [#uses=3]
+ %6 = getelementptr inbounds i8* %dataBuffer, i32 20 ; [#uses=1]
+ %7 = bitcast i8* %6 to i32* ; [#uses=1]
+ store i32 %5, i32* %7, align 4
+ %8 = bitcast i8* %dataBuffer to %struct.btMeshPartData** ; [#uses=2]
+ store %struct.btMeshPartData* null, %struct.btMeshPartData** %8, align 4
+ %9 = icmp eq i32 %5, 0 ; [#uses=1]
+ br i1 %9, label %bb35, label %bb
+
+bb: ; preds = %entry
+ %10 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=15]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 4 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %15 = call %struct.btChunk* %14(%struct.btActionInterface* %serializer, i32 28, i32 %5) ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btChunk* %15, i32 0, i32 2 ; [#uses=2]
+ %17 = load i8** %16, align 4 ; [#uses=8]
+ %18 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i32 (...)** %18, i32 7 ; [#uses=1]
+ %20 = load i32 (...)** %19, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %20 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %22 = call i8* %21(%struct.btActionInterface* %serializer, i8* %17) ; [#uses=1]
+ %23 = bitcast i8* %22 to %struct.btMeshPartData* ; [#uses=1]
+ store %struct.btMeshPartData* %23, %struct.btMeshPartData** %8, align 4
+ %24 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i32 (...)** %24, i32 7 ; [#uses=1]
+ %26 = load i32 (...)** %25, align 4 ; [#uses=1]
+ %27 = bitcast i32 (...)* %26 to i32 (%struct.btStridingMeshInterface*)* ; [#uses=1]
+ %28 = call i32 %27(%struct.btStridingMeshInterface* %this) ; [#uses=2]
+ %29 = icmp sgt i32 %28, 0 ; [#uses=1]
+ br i1 %29, label %bb1, label %bb34
+
+bb1: ; preds = %bb32, %bb
+ %30 = phi i32 [ %186, %bb32 ], [ 0, %bb ] ; [#uses=4]
+ %tmp102 = mul i32 %30, 28 ; [#uses=7]
+ %tmp103 = add i32 %tmp102, 20 ; [#uses=1]
+ %scevgep104 = getelementptr i8* %17, i32 %tmp103 ; [#uses=1]
+ %scevgep104105 = bitcast i8* %scevgep104 to i32* ; [#uses=1]
+ %tmp106 = add i32 %tmp102, 24 ; [#uses=1]
+ %scevgep107 = getelementptr i8* %17, i32 %tmp106 ; [#uses=1]
+ %scevgep107108 = bitcast i8* %scevgep107 to i32* ; [#uses=1]
+ %tmp109 = add i32 %tmp102, 16 ; [#uses=1]
+ %scevgep110 = getelementptr i8* %17, i32 %tmp109 ; [#uses=1]
+ %scevgep110111 = bitcast i8* %scevgep110 to %struct.btShortIntIndexData** ; [#uses=1]
+ %tmp112 = add i32 %tmp102, 8 ; [#uses=1]
+ %scevgep113 = getelementptr i8* %17, i32 %tmp112 ; [#uses=1]
+ %scevgep113114 = bitcast i8* %scevgep113 to %struct.btHashInt** ; [#uses=2]
+ %tmp115 = add i32 %tmp102, 12 ; [#uses=1]
+ %scevgep116 = getelementptr i8* %17, i32 %tmp115 ; [#uses=1]
+ %scevgep116117 = bitcast i8* %scevgep116 to %struct.btShortIntIndexTripletData** ; [#uses=2]
+ %scevgep118 = getelementptr i8* %17, i32 %tmp102 ; [#uses=1]
+ %scevgep118119 = bitcast i8* %scevgep118 to %struct.btQuadWord** ; [#uses=2]
+ %tmp120 = add i32 %tmp102, 4 ; [#uses=1]
+ %scevgep121 = getelementptr i8* %17, i32 %tmp120 ; [#uses=1]
+ %scevgep121122 = bitcast i8* %scevgep121 to %struct.btVector3DoubleData** ; [#uses=2]
+ %31 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds i32 (...)** %31, i32 4 ; [#uses=1]
+ %33 = load i32 (...)** %32, align 4 ; [#uses=1]
+ %34 = bitcast i32 (...)* %33 to void (%struct.btStridingMeshInterface*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* ; [#uses=1]
+ call void %34(%struct.btStridingMeshInterface* %this, i8** %vertexbase, i32* %numverts, i32* %type, i32* %stride, i8** %indexbase, i32* %indexstride, i32* %numtriangles, i32* %gfxindextype, i32 %30)
+ %35 = load i32* %numtriangles, align 4 ; [#uses=1]
+ store i32 %35, i32* %scevgep104105, align 4
+ %36 = load i32* %numverts, align 4 ; [#uses=1]
+ store i32 %36, i32* %scevgep107108, align 4
+ store %struct.btShortIntIndexData* null, %struct.btShortIntIndexData** %scevgep110111, align 4
+ store %struct.btHashInt* null, %struct.btHashInt** %scevgep113114, align 4
+ store %struct.btShortIntIndexTripletData* null, %struct.btShortIntIndexTripletData** %scevgep116117, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %scevgep118119, align 4
+ store %struct.btVector3DoubleData* null, %struct.btVector3DoubleData** %scevgep121122, align 4
+ %37 = load i32* %gfxindextype, align 4 ; [#uses=1]
+ switch i32 %37, label %bb16 [
+ i32 2, label %bb2
+ i32 3, label %bb8
+ ]
+
+bb2: ; preds = %bb1
+ %38 = load i32* %numtriangles, align 4 ; [#uses=1]
+ %39 = mul nsw i32 %38, 3 ; [#uses=2]
+ %40 = icmp eq i32 %39, 0 ; [#uses=1]
+ br i1 %40, label %bb16, label %bb3
+
+bb3: ; preds = %bb2
+ %41 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds i32 (...)** %41, i32 4 ; [#uses=1]
+ %43 = load i32 (...)** %42, align 4 ; [#uses=1]
+ %44 = bitcast i32 (...)* %43 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %45 = call %struct.btChunk* %44(%struct.btActionInterface* %serializer, i32 4, i32 %39) ; [#uses=2]
+ %46 = getelementptr inbounds %struct.btChunk* %45, i32 0, i32 2 ; [#uses=2]
+ %47 = load i8** %46, align 4 ; [#uses=4]
+ %48 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds i32 (...)** %48, i32 7 ; [#uses=1]
+ %50 = load i32 (...)** %49, align 4 ; [#uses=1]
+ %51 = bitcast i32 (...)* %50 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %52 = call i8* %51(%struct.btActionInterface* %serializer, i8* %47) ; [#uses=1]
+ %53 = bitcast i8* %52 to %struct.btHashInt* ; [#uses=1]
+ store %struct.btHashInt* %53, %struct.btHashInt** %scevgep113114, align 4
+ %54 = load i32* %numtriangles, align 4 ; [#uses=1]
+ %55 = icmp sgt i32 %54, 0 ; [#uses=1]
+ br i1 %55, label %bb5, label %bb7
+
+bb5: ; preds = %bb5, %bb3
+ %56 = phi i32 [ %69, %bb5 ], [ 0, %bb3 ] ; [#uses=3]
+ %tmp91 = mul i32 %56, 12 ; [#uses=3]
+ %scevgep92 = getelementptr i8* %47, i32 %tmp91 ; [#uses=1]
+ %scevgep9293 = bitcast i8* %scevgep92 to i32* ; [#uses=1]
+ %tmp94 = add i32 %tmp91, 4 ; [#uses=1]
+ %scevgep95 = getelementptr i8* %47, i32 %tmp94 ; [#uses=1]
+ %scevgep9596 = bitcast i8* %scevgep95 to i32* ; [#uses=1]
+ %tmp97 = add i32 %tmp91, 8 ; [#uses=1]
+ %scevgep98 = getelementptr i8* %47, i32 %tmp97 ; [#uses=1]
+ %scevgep9899 = bitcast i8* %scevgep98 to i32* ; [#uses=1]
+ %57 = load i8** %indexbase, align 4 ; [#uses=3]
+ %58 = load i32* %indexstride, align 4 ; [#uses=1]
+ %59 = mul nsw i32 %58, %56 ; [#uses=3]
+ %60 = getelementptr inbounds i8* %57, i32 %59 ; [#uses=1]
+ %61 = bitcast i8* %60 to i32* ; [#uses=1]
+ %62 = load i32* %61, align 4 ; [#uses=1]
+ store i32 %62, i32* %scevgep9293, align 4
+ %.sum42 = add i32 %59, 4 ; [#uses=1]
+ %63 = getelementptr inbounds i8* %57, i32 %.sum42 ; [#uses=1]
+ %64 = bitcast i8* %63 to i32* ; [#uses=1]
+ %65 = load i32* %64, align 4 ; [#uses=1]
+ store i32 %65, i32* %scevgep9596, align 4
+ %.sum43 = add i32 %59, 8 ; [#uses=1]
+ %66 = getelementptr inbounds i8* %57, i32 %.sum43 ; [#uses=1]
+ %67 = bitcast i8* %66 to i32* ; [#uses=1]
+ %68 = load i32* %67, align 4 ; [#uses=1]
+ store i32 %68, i32* %scevgep9899, align 4
+ %69 = add nsw i32 %56, 1 ; [#uses=2]
+ %70 = load i32* %numtriangles, align 4 ; [#uses=1]
+ %71 = icmp slt i32 %69, %70 ; [#uses=1]
+ br i1 %71, label %bb5, label %bb7
+
+bb7: ; preds = %bb5, %bb3
+ %72 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %73 = getelementptr inbounds i32 (...)** %72, i32 5 ; [#uses=1]
+ %74 = load i32 (...)** %73, align 4 ; [#uses=1]
+ %75 = load i8** %46, align 4 ; [#uses=1]
+ %76 = bitcast i32 (...)* %74 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ call void %76(%struct.btActionInterface* %serializer, %struct.btChunk* %45, i8* getelementptr inbounds ([15 x i8]* @.str123, i32 0, i32 0), i32 1497453121, i8* %75)
+ br label %bb16
+
+bb8: ; preds = %bb1
+ %77 = load i32* %numtriangles, align 4 ; [#uses=2]
+ %78 = icmp eq i32 %77, 0 ; [#uses=1]
+ br i1 %78, label %bb16, label %bb9
+
+bb9: ; preds = %bb8
+ %79 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %80 = getelementptr inbounds i32 (...)** %79, i32 4 ; [#uses=1]
+ %81 = load i32 (...)** %80, align 4 ; [#uses=1]
+ %82 = bitcast i32 (...)* %81 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %83 = call %struct.btChunk* %82(%struct.btActionInterface* %serializer, i32 8, i32 %77) ; [#uses=2]
+ %84 = getelementptr inbounds %struct.btChunk* %83, i32 0, i32 2 ; [#uses=2]
+ %85 = load i8** %84, align 4 ; [#uses=4]
+ %86 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %87 = getelementptr inbounds i32 (...)** %86, i32 7 ; [#uses=1]
+ %88 = load i32 (...)** %87, align 4 ; [#uses=1]
+ %89 = bitcast i32 (...)* %88 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %90 = call i8* %89(%struct.btActionInterface* %serializer, i8* %85) ; [#uses=1]
+ %91 = bitcast i8* %90 to %struct.btShortIntIndexTripletData* ; [#uses=1]
+ store %struct.btShortIntIndexTripletData* %91, %struct.btShortIntIndexTripletData** %scevgep116117, align 4
+ %92 = load i32* %numtriangles, align 4 ; [#uses=1]
+ %93 = icmp sgt i32 %92, 0 ; [#uses=1]
+ br i1 %93, label %bb12, label %bb15
+
+bb12: ; preds = %bb12, %bb9
+ %94 = phi i32 [ %107, %bb12 ], [ 0, %bb9 ] ; [#uses=3]
+ %tmp81 = shl i32 %94, 3 ; [#uses=3]
+ %scevgep82 = getelementptr i8* %85, i32 %tmp81 ; [#uses=1]
+ %scevgep8283 = bitcast i8* %scevgep82 to i16* ; [#uses=1]
+ %tmp84127 = or i32 %tmp81, 2 ; [#uses=1]
+ %scevgep85 = getelementptr i8* %85, i32 %tmp84127 ; [#uses=1]
+ %scevgep8586 = bitcast i8* %scevgep85 to i16* ; [#uses=1]
+ %tmp87128 = or i32 %tmp81, 4 ; [#uses=1]
+ %scevgep88 = getelementptr i8* %85, i32 %tmp87128 ; [#uses=1]
+ %scevgep8889 = bitcast i8* %scevgep88 to i16* ; [#uses=1]
+ %95 = load i8** %indexbase, align 4 ; [#uses=3]
+ %96 = load i32* %indexstride, align 4 ; [#uses=1]
+ %97 = mul nsw i32 %96, %94 ; [#uses=3]
+ %98 = getelementptr inbounds i8* %95, i32 %97 ; [#uses=1]
+ %99 = bitcast i8* %98 to i16* ; [#uses=1]
+ %100 = load i16* %99, align 2 ; [#uses=1]
+ store i16 %100, i16* %scevgep8283, align 2
+ %.sum40 = add i32 %97, 2 ; [#uses=1]
+ %101 = getelementptr inbounds i8* %95, i32 %.sum40 ; [#uses=1]
+ %102 = bitcast i8* %101 to i16* ; [#uses=1]
+ %103 = load i16* %102, align 2 ; [#uses=1]
+ store i16 %103, i16* %scevgep8586, align 2
+ %.sum41 = add i32 %97, 4 ; [#uses=1]
+ %104 = getelementptr inbounds i8* %95, i32 %.sum41 ; [#uses=1]
+ %105 = bitcast i8* %104 to i16* ; [#uses=1]
+ %106 = load i16* %105, align 2 ; [#uses=1]
+ store i16 %106, i16* %scevgep8889, align 2
+ %107 = add nsw i32 %94, 1 ; [#uses=2]
+ %108 = load i32* %numtriangles, align 4 ; [#uses=1]
+ %109 = icmp slt i32 %107, %108 ; [#uses=1]
+ br i1 %109, label %bb12, label %bb15
+
+bb15: ; preds = %bb12, %bb9
+ %110 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %111 = getelementptr inbounds i32 (...)** %110, i32 5 ; [#uses=1]
+ %112 = load i32 (...)** %111, align 4 ; [#uses=1]
+ %113 = load i8** %84, align 4 ; [#uses=1]
+ %114 = bitcast i32 (...)* %112 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ call void %114(%struct.btActionInterface* %serializer, %struct.btChunk* %83, i8* getelementptr inbounds ([27 x i8]* @.str1124, i32 0, i32 0), i32 1497453121, i8* %113)
+ br label %bb16
+
+bb16: ; preds = %bb15, %bb8, %bb7, %bb2, %bb1
+ %115 = load i32* %type, align 4 ; [#uses=1]
+ switch i32 %115, label %bb32 [
+ i32 0, label %bb17
+ i32 1, label %bb23
+ ]
+
+bb17: ; preds = %bb16
+ %116 = load i32* %numverts, align 4 ; [#uses=2]
+ %117 = icmp eq i32 %116, 0 ; [#uses=1]
+ br i1 %117, label %bb32, label %bb18
+
+bb18: ; preds = %bb17
+ %118 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %119 = getelementptr inbounds i32 (...)** %118, i32 4 ; [#uses=1]
+ %120 = load i32 (...)** %119, align 4 ; [#uses=1]
+ %121 = bitcast i32 (...)* %120 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %122 = call %struct.btChunk* %121(%struct.btActionInterface* %serializer, i32 16, i32 %116) ; [#uses=2]
+ %123 = getelementptr inbounds %struct.btChunk* %122, i32 0, i32 2 ; [#uses=2]
+ %124 = load i8** %123, align 4 ; [#uses=4]
+ %125 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %126 = getelementptr inbounds i32 (...)** %125, i32 7 ; [#uses=1]
+ %127 = load i32 (...)** %126, align 4 ; [#uses=1]
+ %128 = bitcast i32 (...)* %127 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %129 = call i8* %128(%struct.btActionInterface* %serializer, i8* %124) ; [#uses=1]
+ %130 = bitcast i8* %129 to %struct.btQuadWord* ; [#uses=1]
+ store %struct.btQuadWord* %130, %struct.btQuadWord** %scevgep118119, align 4
+ %131 = load i32* %numverts, align 4 ; [#uses=1]
+ %132 = icmp sgt i32 %131, 0 ; [#uses=1]
+ br i1 %132, label %bb20, label %bb22
+
+bb20: ; preds = %bb20, %bb18
+ %133 = phi i32 [ %146, %bb20 ], [ 0, %bb18 ] ; [#uses=3]
+ %tmp71 = shl i32 %133, 4 ; [#uses=3]
+ %scevgep72 = getelementptr i8* %124, i32 %tmp71 ; [#uses=1]
+ %scevgep7273 = bitcast i8* %scevgep72 to float* ; [#uses=1]
+ %tmp74125 = or i32 %tmp71, 4 ; [#uses=1]
+ %scevgep75 = getelementptr i8* %124, i32 %tmp74125 ; [#uses=1]
+ %scevgep7576 = bitcast i8* %scevgep75 to float* ; [#uses=1]
+ %tmp77126 = or i32 %tmp71, 8 ; [#uses=1]
+ %scevgep78 = getelementptr i8* %124, i32 %tmp77126 ; [#uses=1]
+ %scevgep7879 = bitcast i8* %scevgep78 to float* ; [#uses=1]
+ %134 = load i8** %vertexbase, align 4 ; [#uses=3]
+ %135 = load i32* %stride, align 4 ; [#uses=1]
+ %136 = mul nsw i32 %135, %133 ; [#uses=3]
+ %137 = getelementptr inbounds i8* %134, i32 %136 ; [#uses=1]
+ %138 = bitcast i8* %137 to float* ; [#uses=1]
+ %139 = load float* %138, align 4 ; [#uses=1]
+ store float %139, float* %scevgep7273, align 4
+ %.sum38 = add i32 %136, 4 ; [#uses=1]
+ %140 = getelementptr inbounds i8* %134, i32 %.sum38 ; [#uses=1]
+ %141 = bitcast i8* %140 to float* ; [#uses=1]
+ %142 = load float* %141, align 4 ; [#uses=1]
+ store float %142, float* %scevgep7576, align 4
+ %.sum39 = add i32 %136, 8 ; [#uses=1]
+ %143 = getelementptr inbounds i8* %134, i32 %.sum39 ; [#uses=1]
+ %144 = bitcast i8* %143 to float* ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ store float %145, float* %scevgep7879, align 4
+ %146 = add nsw i32 %133, 1 ; [#uses=2]
+ %147 = load i32* %numverts, align 4 ; [#uses=1]
+ %148 = icmp slt i32 %146, %147 ; [#uses=1]
+ br i1 %148, label %bb20, label %bb22
+
+bb22: ; preds = %bb20, %bb18
+ %149 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %150 = getelementptr inbounds i32 (...)** %149, i32 5 ; [#uses=1]
+ %151 = load i32 (...)** %150, align 4 ; [#uses=1]
+ %152 = load i8** %123, align 4 ; [#uses=1]
+ %153 = bitcast i32 (...)* %151 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ call void %153(%struct.btActionInterface* %serializer, %struct.btChunk* %122, i8* getelementptr inbounds ([19 x i8]* @.str2125, i32 0, i32 0), i32 1497453121, i8* %152)
+ br label %bb32
+
+bb23: ; preds = %bb16
+ %154 = load i32* %numverts, align 4 ; [#uses=2]
+ %155 = icmp eq i32 %154, 0 ; [#uses=1]
+ br i1 %155, label %bb32, label %bb24
+
+bb24: ; preds = %bb23
+ %156 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %157 = getelementptr inbounds i32 (...)** %156, i32 4 ; [#uses=1]
+ %158 = load i32 (...)** %157, align 4 ; [#uses=1]
+ %159 = bitcast i32 (...)* %158 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %160 = call %struct.btChunk* %159(%struct.btActionInterface* %serializer, i32 32, i32 %154) ; [#uses=2]
+ %161 = getelementptr inbounds %struct.btChunk* %160, i32 0, i32 2 ; [#uses=2]
+ %162 = load i8** %161, align 4 ; [#uses=4]
+ %163 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %164 = getelementptr inbounds i32 (...)** %163, i32 7 ; [#uses=1]
+ %165 = load i32 (...)** %164, align 4 ; [#uses=1]
+ %166 = bitcast i32 (...)* %165 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %167 = call i8* %166(%struct.btActionInterface* %serializer, i8* %162) ; [#uses=1]
+ %168 = bitcast i8* %167 to %struct.btVector3DoubleData* ; [#uses=1]
+ store %struct.btVector3DoubleData* %168, %struct.btVector3DoubleData** %scevgep121122, align 4
+ %169 = load i32* %numverts, align 4 ; [#uses=3]
+ %170 = icmp sgt i32 %169, 0 ; [#uses=1]
+ br i1 %170, label %bb.nph, label %bb31
+
+bb.nph: ; preds = %bb24
+ %171 = load i8** %vertexbase, align 4 ; [#uses=3]
+ %172 = load i32* %stride, align 4 ; [#uses=1]
+ %tmp = icmp sgt i32 %169, 1 ; [#uses=1]
+ %smax = select i1 %tmp, i32 %169, i32 1 ; [#uses=1]
+ br label %bb28
+
+bb28: ; preds = %bb28, %bb.nph
+ %i27.044 = phi i32 [ 0, %bb.nph ], [ %176, %bb28 ] ; [#uses=3]
+ %tmp54 = shl i32 %i27.044, 5 ; [#uses=3]
+ %scevgep = getelementptr i8* %162, i32 %tmp54 ; [#uses=1]
+ %scevgep55 = bitcast i8* %scevgep to double* ; [#uses=1]
+ %tmp56123 = or i32 %tmp54, 8 ; [#uses=1]
+ %scevgep57 = getelementptr i8* %162, i32 %tmp56123 ; [#uses=1]
+ %scevgep5758 = bitcast i8* %scevgep57 to double* ; [#uses=1]
+ %tmp59124 = or i32 %tmp54, 16 ; [#uses=1]
+ %scevgep60 = getelementptr i8* %162, i32 %tmp59124 ; [#uses=1]
+ %scevgep6061 = bitcast i8* %scevgep60 to double* ; [#uses=1]
+ %tmp62 = mul i32 %172, %i27.044 ; [#uses=3]
+ %tmp63 = add i32 %tmp62, 16 ; [#uses=1]
+ %scevgep64 = getelementptr i8* %171, i32 %tmp63 ; [#uses=1]
+ %scevgep6465 = bitcast i8* %scevgep64 to double* ; [#uses=1]
+ %tmp66 = add i32 %tmp62, 8 ; [#uses=1]
+ %scevgep67 = getelementptr i8* %171, i32 %tmp66 ; [#uses=1]
+ %scevgep6768 = bitcast i8* %scevgep67 to double* ; [#uses=1]
+ %scevgep69 = getelementptr i8* %171, i32 %tmp62 ; [#uses=1]
+ %scevgep6970 = bitcast i8* %scevgep69 to double* ; [#uses=1]
+ %173 = load double* %scevgep6970, align 4 ; [#uses=1]
+ store double %173, double* %scevgep55, align 4
+ %174 = load double* %scevgep6768, align 4 ; [#uses=1]
+ store double %174, double* %scevgep5758, align 4
+ %175 = load double* %scevgep6465, align 4 ; [#uses=1]
+ store double %175, double* %scevgep6061, align 4
+ %176 = add nsw i32 %i27.044, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %176, %smax ; [#uses=1]
+ br i1 %exitcond, label %bb31, label %bb28
+
+bb31: ; preds = %bb28, %bb24
+ %177 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %178 = getelementptr inbounds i32 (...)** %177, i32 5 ; [#uses=1]
+ %179 = load i32 (...)** %178, align 4 ; [#uses=1]
+ %180 = load i8** %161, align 4 ; [#uses=1]
+ %181 = bitcast i32 (...)* %179 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ call void %181(%struct.btActionInterface* %serializer, %struct.btChunk* %160, i8* getelementptr inbounds ([20 x i8]* @.str3126, i32 0, i32 0), i32 1497453121, i8* %180)
+ br label %bb32
+
+bb32: ; preds = %bb31, %bb23, %bb22, %bb17, %bb16
+ %182 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %183 = getelementptr inbounds i32 (...)** %182, i32 6 ; [#uses=1]
+ %184 = load i32 (...)** %183, align 4 ; [#uses=1]
+ %185 = bitcast i32 (...)* %184 to void (%struct.btStridingMeshInterface*, i32)* ; [#uses=1]
+ call void %185(%struct.btStridingMeshInterface* %this, i32 %30)
+ %186 = add nsw i32 %30, 1 ; [#uses=2]
+ %exitcond101 = icmp eq i32 %186, %28 ; [#uses=1]
+ br i1 %exitcond101, label %bb34, label %bb1
+
+bb34: ; preds = %bb32, %bb
+ %187 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %188 = getelementptr inbounds i32 (...)** %187, i32 5 ; [#uses=1]
+ %189 = load i32 (...)** %188, align 4 ; [#uses=1]
+ %190 = load i8** %16, align 4 ; [#uses=1]
+ %191 = bitcast i32 (...)* %189 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ call void %191(%struct.btActionInterface* %serializer, %struct.btChunk* %15, i8* getelementptr inbounds ([15 x i8]* @.str4127, i32 0, i32 0), i32 1497453121, i8* %190)
+ br label %bb35
+
+bb35: ; preds = %bb34, %entry
+ %192 = getelementptr inbounds i8* %dataBuffer, i32 4 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btStridingMeshInterface* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i = bitcast i8* %192 to float* ; [#uses=1]
+ %193 = load float* %scevgep.i, align 4 ; [#uses=1]
+ store float %193, float* %scevgep4.i, align 4
+ %scevgep.1.i = getelementptr %struct.btStridingMeshInterface* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i = getelementptr i8* %dataBuffer, i32 8 ; [#uses=1]
+ %194 = bitcast i8* %scevgep4.1.i to float* ; [#uses=1]
+ %195 = load float* %scevgep.1.i, align 4 ; [#uses=1]
+ store float %195, float* %194, align 4
+ %scevgep.2.i = getelementptr %struct.btStridingMeshInterface* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i = getelementptr i8* %dataBuffer, i32 12 ; [#uses=1]
+ %196 = bitcast i8* %scevgep4.2.i to float* ; [#uses=1]
+ %197 = load float* %scevgep.2.i, align 4 ; [#uses=1]
+ store float %197, float* %196, align 4
+ %scevgep.3.i = getelementptr %struct.btStridingMeshInterface* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i = getelementptr i8* %dataBuffer, i32 16 ; [#uses=1]
+ %198 = bitcast i8* %scevgep4.3.i to float* ; [#uses=1]
+ %199 = load float* %scevgep.3.i, align 4 ; [#uses=1]
+ store float %199, float* %198, align 4
+ ret i8* getelementptr inbounds ([28 x i8]* @.str5128, i32 0, i32 0)
+}
+
+; [#uses=0]
+define void @_ZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_(%struct.btStridingMeshInterface* %this, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %aabbCallback = alloca %struct..0AabbCalculationCallback, align 8 ; [#uses=10]
+ %0 = getelementptr inbounds %struct..0AabbCalculationCallback* %aabbCallback, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_E23AabbCalculationCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ %1 = getelementptr inbounds %struct..0AabbCalculationCallback* %aabbCallback, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %1, align 4
+ %2 = getelementptr inbounds %struct..0AabbCalculationCallback* %aabbCallback, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %2, align 4
+ %3 = getelementptr inbounds %struct..0AabbCalculationCallback* %aabbCallback, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %3, align 4
+ %4 = getelementptr inbounds %struct..0AabbCalculationCallback* %aabbCallback, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct..0AabbCalculationCallback* %aabbCallback, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ store float 0xC3ABC16D60000000, float* %5, align 4
+ %6 = getelementptr inbounds %struct..0AabbCalculationCallback* %aabbCallback, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ store float 0xC3ABC16D60000000, float* %6, align 4
+ %7 = getelementptr inbounds %struct..0AabbCalculationCallback* %aabbCallback, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ store float 0xC3ABC16D60000000, float* %7, align 4
+ %8 = getelementptr inbounds %struct..0AabbCalculationCallback* %aabbCallback, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0xC3ABC16D60000000, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0xC3ABC16D60000000, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0xC3ABC16D60000000, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btStridingMeshInterface* %this, i32 0, i32 0 ; [#uses=1]
+ %18 = load i32 (...)*** %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i32 (...)** %18, i32 2 ; [#uses=1]
+ %20 = load i32 (...)** %19, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %20 to void (%struct.btStridingMeshInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %22 = getelementptr inbounds %struct..0AabbCalculationCallback* %aabbCallback, i32 0, i32 0 ; [#uses=3]
+ invoke void %21(%struct.btStridingMeshInterface* %this, %struct.btActionInterface* %22, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %23 = load float* %1, align 4 ; [#uses=1]
+ store float %23, float* %9, align 4
+ %24 = load float* %2, align 4 ; [#uses=1]
+ store float %24, float* %10, align 4
+ %25 = load float* %3, align 4 ; [#uses=1]
+ store float %25, float* %11, align 4
+ %26 = load float* %4, align 4 ; [#uses=1]
+ store float %26, float* %12, align 4
+ %27 = load float* %5, align 4 ; [#uses=1]
+ store float %27, float* %13, align 4
+ %28 = load float* %6, align 4 ; [#uses=1]
+ store float %28, float* %14, align 4
+ %29 = load float* %7, align 4 ; [#uses=1]
+ store float %29, float* %15, align 4
+ %30 = load float* %8, align 4 ; [#uses=1]
+ store float %30, float* %16, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_E23AabbCalculationCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %22)
+ ret void
+
+invcont1: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select4 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_E23AabbCalculationCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %22)
+ to label %invcont1 unwind label %lpad5
+
+lpad5: ; preds = %lpad
+ %eh_ptr6 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select8 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr6, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_EN23AabbCalculationCallbackD2Ev(%struct..0AabbCalculationCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN23btStridingMeshInterface23calculateAabbBruteForceER9btVector3S1_E23AabbCalculationCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0AabbCalculationCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btStridingMeshInterfaceD0Ev(%struct.btStridingMeshInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btStridingMeshInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([17 x i32 (...)*]* @_ZTV23btStridingMeshInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btStridingMeshInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btStridingMeshInterfaceD1Ev(%struct.btStridingMeshInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btStridingMeshInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([17 x i32 (...)*]* @_ZTV23btStridingMeshInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btBU_Simplex1to4C2Ev(%struct.btBU_Simplex1to4* %this) align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShapeC2Ev(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ %1 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV16btBU_Simplex1to4, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 2, i32* %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK16btBU_Simplex1to47getNameEv(%struct.btBU_Simplex1to4* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([17 x i8]* @.str129, i32 0, i32 0)
+}
+
+; [#uses=1]
+define i32 @_ZNK16btBU_Simplex1to414getNumVerticesEv(%struct.btBU_Simplex1to4* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=1]
+define i32 @_ZNK16btBU_Simplex1to411getNumEdgesEv(%struct.btBU_Simplex1to4* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ switch i32 %1, label %bb6 [
+ i32 2, label %bb2
+ i32 3, label %bb3
+ i32 4, label %bb4
+ ]
+
+bb2: ; preds = %entry
+ ret i32 1
+
+bb3: ; preds = %entry
+ ret i32 3
+
+bb4: ; preds = %entry
+ ret i32 6
+
+bb6: ; preds = %entry
+ ret i32 0
+}
+
+; [#uses=1]
+define void @_ZNK16btBU_Simplex1to47getEdgeEiR9btVector3S1_(%struct.btBU_Simplex1to4* %this, i32 %i, %struct.btQuadWord* %pa, %struct.btQuadWord* %pb) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ switch i32 %1, label %return [
+ i32 2, label %bb
+ i32 3, label %bb1
+ i32 4, label %bb5
+ ]
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ ret void
+
+bb1: ; preds = %entry
+ switch i32 %i, label %return [
+ i32 0, label %bb2
+ i32 1, label %bb3
+ i32 2, label %bb4
+ ]
+
+bb2: ; preds = %bb1
+ %26 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ ret void
+
+bb3: ; preds = %bb1
+ %50 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ %56 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ store float %58, float* %56, align 4
+ %59 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 3 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %59, align 4
+ %62 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ store float %64, float* %62, align 4
+ %65 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ store float %67, float* %65, align 4
+ %68 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 3 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 3 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %71, align 4
+ ret void
+
+bb4: ; preds = %bb1
+ %74 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ store float %76, float* %74, align 4
+ %77 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 1 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ store float %79, float* %77, align 4
+ %80 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ store float %82, float* %80, align 4
+ %83 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 3 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 3 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ store float %85, float* %83, align 4
+ %86 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ store float %88, float* %86, align 4
+ %89 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ store float %91, float* %89, align 4
+ %92 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ store float %94, float* %92, align 4
+ %95 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 3 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ store float %97, float* %95, align 4
+ ret void
+
+bb5: ; preds = %entry
+ switch i32 %i, label %return [
+ i32 0, label %bb6
+ i32 1, label %bb7
+ i32 2, label %bb8
+ i32 3, label %bb9
+ i32 4, label %bb10
+ i32 5, label %bb11
+ ]
+
+bb6: ; preds = %bb5
+ %98 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %100 = load float* %99, align 4 ; [#uses=1]
+ store float %100, float* %98, align 4
+ %101 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %103 = load float* %102, align 4 ; [#uses=1]
+ store float %103, float* %101, align 4
+ %104 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %106 = load float* %105, align 4 ; [#uses=1]
+ store float %106, float* %104, align 4
+ %107 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 3 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ store float %109, float* %107, align 4
+ %110 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ store float %112, float* %110, align 4
+ %113 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=1]
+ store float %115, float* %113, align 4
+ %116 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %118 = load float* %117, align 4 ; [#uses=1]
+ store float %118, float* %116, align 4
+ %119 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 3 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %121 = load float* %120, align 4 ; [#uses=1]
+ store float %121, float* %119, align 4
+ ret void
+
+bb7: ; preds = %bb5
+ %122 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %124 = load float* %123, align 4 ; [#uses=1]
+ store float %124, float* %122, align 4
+ %125 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %126 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %127 = load float* %126, align 4 ; [#uses=1]
+ store float %127, float* %125, align 4
+ %128 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=1]
+ store float %130, float* %128, align 4
+ %131 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 3 ; [#uses=1]
+ %132 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %133 = load float* %132, align 4 ; [#uses=1]
+ store float %133, float* %131, align 4
+ %134 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 0 ; [#uses=1]
+ %136 = load float* %135, align 4 ; [#uses=1]
+ store float %136, float* %134, align 4
+ %137 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 1 ; [#uses=1]
+ %139 = load float* %138, align 4 ; [#uses=1]
+ store float %139, float* %137, align 4
+ %140 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 2 ; [#uses=1]
+ %142 = load float* %141, align 4 ; [#uses=1]
+ store float %142, float* %140, align 4
+ %143 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 3 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 3 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ store float %145, float* %143, align 4
+ ret void
+
+bb8: ; preds = %bb5
+ %146 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 0 ; [#uses=1]
+ %148 = load float* %147, align 4 ; [#uses=1]
+ store float %148, float* %146, align 4
+ %149 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %150 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 1 ; [#uses=1]
+ %151 = load float* %150, align 4 ; [#uses=1]
+ store float %151, float* %149, align 4
+ %152 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %153 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 2 ; [#uses=1]
+ %154 = load float* %153, align 4 ; [#uses=1]
+ store float %154, float* %152, align 4
+ %155 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 3 ; [#uses=1]
+ %156 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 3 ; [#uses=1]
+ %157 = load float* %156, align 4 ; [#uses=1]
+ store float %157, float* %155, align 4
+ %158 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %160 = load float* %159, align 4 ; [#uses=1]
+ store float %160, float* %158, align 4
+ %161 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %163 = load float* %162, align 4 ; [#uses=1]
+ store float %163, float* %161, align 4
+ %164 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %166 = load float* %165, align 4 ; [#uses=1]
+ store float %166, float* %164, align 4
+ %167 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 3 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=1]
+ store float %169, float* %167, align 4
+ ret void
+
+bb9: ; preds = %bb5
+ %170 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %172 = load float* %171, align 4 ; [#uses=1]
+ store float %172, float* %170, align 4
+ %173 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %175 = load float* %174, align 4 ; [#uses=1]
+ store float %175, float* %173, align 4
+ %176 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %177 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %178 = load float* %177, align 4 ; [#uses=1]
+ store float %178, float* %176, align 4
+ %179 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 3 ; [#uses=1]
+ %180 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %181 = load float* %180, align 4 ; [#uses=1]
+ store float %181, float* %179, align 4
+ %182 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ %183 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 3, i32 0, i32 0 ; [#uses=1]
+ %184 = load float* %183, align 4 ; [#uses=1]
+ store float %184, float* %182, align 4
+ %185 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 3, i32 0, i32 1 ; [#uses=1]
+ %187 = load float* %186, align 4 ; [#uses=1]
+ store float %187, float* %185, align 4
+ %188 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 3, i32 0, i32 2 ; [#uses=1]
+ %190 = load float* %189, align 4 ; [#uses=1]
+ store float %190, float* %188, align 4
+ %191 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 3 ; [#uses=1]
+ %192 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 3, i32 0, i32 3 ; [#uses=1]
+ %193 = load float* %192, align 4 ; [#uses=1]
+ store float %193, float* %191, align 4
+ ret void
+
+bb10: ; preds = %bb5
+ %194 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ %195 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %196 = load float* %195, align 4 ; [#uses=1]
+ store float %196, float* %194, align 4
+ %197 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %198 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %199 = load float* %198, align 4 ; [#uses=1]
+ store float %199, float* %197, align 4
+ %200 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %201 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %202 = load float* %201, align 4 ; [#uses=1]
+ store float %202, float* %200, align 4
+ %203 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 3 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %205 = load float* %204, align 4 ; [#uses=1]
+ store float %205, float* %203, align 4
+ %206 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ %207 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 3, i32 0, i32 0 ; [#uses=1]
+ %208 = load float* %207, align 4 ; [#uses=1]
+ store float %208, float* %206, align 4
+ %209 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %210 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 3, i32 0, i32 1 ; [#uses=1]
+ %211 = load float* %210, align 4 ; [#uses=1]
+ store float %211, float* %209, align 4
+ %212 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %213 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 3, i32 0, i32 2 ; [#uses=1]
+ %214 = load float* %213, align 4 ; [#uses=1]
+ store float %214, float* %212, align 4
+ %215 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 3 ; [#uses=1]
+ %216 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 3, i32 0, i32 3 ; [#uses=1]
+ %217 = load float* %216, align 4 ; [#uses=1]
+ store float %217, float* %215, align 4
+ ret void
+
+bb11: ; preds = %bb5
+ %218 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ %219 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 0 ; [#uses=1]
+ %220 = load float* %219, align 4 ; [#uses=1]
+ store float %220, float* %218, align 4
+ %221 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ %222 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 1 ; [#uses=1]
+ %223 = load float* %222, align 4 ; [#uses=1]
+ store float %223, float* %221, align 4
+ %224 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ %225 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 2 ; [#uses=1]
+ %226 = load float* %225, align 4 ; [#uses=1]
+ store float %226, float* %224, align 4
+ %227 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 3 ; [#uses=1]
+ %228 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 2, i32 0, i32 3 ; [#uses=1]
+ %229 = load float* %228, align 4 ; [#uses=1]
+ store float %229, float* %227, align 4
+ %230 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ %231 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 3, i32 0, i32 0 ; [#uses=1]
+ %232 = load float* %231, align 4 ; [#uses=1]
+ store float %232, float* %230, align 4
+ %233 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ %234 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 3, i32 0, i32 1 ; [#uses=1]
+ %235 = load float* %234, align 4 ; [#uses=1]
+ store float %235, float* %233, align 4
+ %236 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ %237 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 3, i32 0, i32 2 ; [#uses=1]
+ %238 = load float* %237, align 4 ; [#uses=1]
+ store float %238, float* %236, align 4
+ %239 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 3 ; [#uses=1]
+ %240 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 3, i32 0, i32 3 ; [#uses=1]
+ %241 = load float* %240, align 4 ; [#uses=1]
+ store float %241, float* %239, align 4
+ ret void
+
+return: ; preds = %bb5, %bb1, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK16btBU_Simplex1to49getVertexEiR9btVector3(%struct.btBU_Simplex1to4* nocapture %this, i32 %i, %struct.btQuadWord* nocapture %vtx) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %i, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %i, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %i, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %vtx, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %i, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZNK16btBU_Simplex1to412getNumPlanesEv(%struct.btBU_Simplex1to4* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ switch i32 %1, label %bb6 [
+ i32 3, label %bb3
+ i32 4, label %bb4
+ ]
+
+bb3: ; preds = %entry
+ ret i32 2
+
+bb4: ; preds = %entry
+ ret i32 4
+
+bb6: ; preds = %entry
+ ret i32 0
+}
+
+; [#uses=1]
+define void @_ZNK16btBU_Simplex1to48getPlaneER9btVector3S1_i(%struct.btBU_Simplex1to4* nocapture %this, %struct.btQuadWord* nocapture %unnamed_arg, %struct.btQuadWord* nocapture %unnamed_arg2, i32 %unnamed_arg4) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZNK16btBU_Simplex1to48getIndexEi(%struct.btBU_Simplex1to4* nocapture %this, i32 %unnamed_arg) nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=1]
+define zeroext i8 @_ZNK16btBU_Simplex1to48isInsideERK9btVector3f(%struct.btBU_Simplex1to4* nocapture %this, %struct.btQuadWord* nocapture %unnamed_arg, float %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btBU_Simplex1to4D0Ev(%struct.btBU_Simplex1to4* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btBU_Simplex1to4* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btBU_Simplex1to4D1Ev(%struct.btBU_Simplex1to4* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK16btBU_Simplex1to47getAabbERK11btTransformR9btVector3S4_(%struct.btBU_Simplex1to4* %this, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZNK34btPolyhedralConvexAabbCachingShape7getAabbERK11btTransformR9btVector3S4_(%struct.btPolyhedralConvexAabbCachingShape* %0, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btBU_Simplex1to49addVertexERK9btVector3(%struct.btBU_Simplex1to4* %this, %struct.btQuadWord* nocapture %pt) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %pt, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %1, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %pt, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %1, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %pt, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %1, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %pt, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = add nsw i32 %1, 1 ; [#uses=1]
+ store i32 %14, i32* %0, align 4
+ %15 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %15)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btBU_Simplex1to4C1Ev(%struct.btBU_Simplex1to4* %this) align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShapeC2Ev(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ %1 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV16btBU_Simplex1to4, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 2, i32* %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btBU_Simplex1to4C2ERK9btVector3S2_S2_S2_(%struct.btBU_Simplex1to4* %this, %struct.btQuadWord* nocapture %pt0, %struct.btQuadWord* nocapture %pt1, %struct.btQuadWord* nocapture %pt2, %struct.btQuadWord* nocapture %pt3) align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0 ; [#uses=5]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShapeC2Ev(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ %1 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV16btBU_Simplex1to4, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 1 ; [#uses=8]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 2, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ store i32 1, i32* %2, align 4
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb2
+ %16 = load i32* %2, align 4 ; [#uses=5]
+ %17 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %16, i32 0, i32 0 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %pt1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %16, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %pt1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %16, i32 0, i32 2 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %pt1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %16, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %pt1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = add nsw i32 %16, 1 ; [#uses=1]
+ store i32 %29, i32* %2, align 4
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ to label %invcont3 unwind label %lpad
+
+invcont3: ; preds = %invcont
+ %30 = load i32* %2, align 4 ; [#uses=5]
+ %31 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %30, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %pt2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %30, i32 0, i32 1 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %pt2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %30, i32 0, i32 2 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %pt2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %30, i32 0, i32 3 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %pt2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ %43 = add nsw i32 %30, 1 ; [#uses=1]
+ store i32 %43, i32* %2, align 4
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ to label %invcont4 unwind label %lpad
+
+invcont4: ; preds = %invcont3
+ %44 = load i32* %2, align 4 ; [#uses=5]
+ %45 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %44, i32 0, i32 0 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btQuadWord* %pt3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ store float %47, float* %45, align 4
+ %48 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %44, i32 0, i32 1 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btQuadWord* %pt3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ store float %50, float* %48, align 4
+ %51 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %44, i32 0, i32 2 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btQuadWord* %pt3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ store float %53, float* %51, align 4
+ %54 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %44, i32 0, i32 3 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btQuadWord* %pt3, i32 0, i32 0, i32 3 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ store float %56, float* %54, align 4
+ %57 = add nsw i32 %44, 1 ; [#uses=1]
+ store i32 %57, i32* %2, align 4
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ to label %return unwind label %lpad
+
+invcont7: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %invcont4
+ ret void
+
+lpad: ; preds = %invcont4, %invcont3, %invcont, %bb2
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %58 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %58)
+ to label %invcont7 unwind label %lpad12
+
+lpad12: ; preds = %lpad
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN16btBU_Simplex1to4C1ERK9btVector3S2_S2_S2_(%struct.btBU_Simplex1to4* %this, %struct.btQuadWord* nocapture %pt0, %struct.btQuadWord* nocapture %pt1, %struct.btQuadWord* nocapture %pt2, %struct.btQuadWord* nocapture %pt3) align 2 {
+entry:
+ tail call void @_ZN16btBU_Simplex1to4C2ERK9btVector3S2_S2_S2_(%struct.btBU_Simplex1to4* %this, %struct.btQuadWord* %pt0, %struct.btQuadWord* %pt1, %struct.btQuadWord* %pt2, %struct.btQuadWord* %pt3)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btBU_Simplex1to4C2ERK9btVector3S2_S2_(%struct.btBU_Simplex1to4* %this, %struct.btQuadWord* nocapture %pt0, %struct.btQuadWord* nocapture %pt1, %struct.btQuadWord* nocapture %pt2) align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0 ; [#uses=4]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShapeC2Ev(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ %1 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV16btBU_Simplex1to4, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 1 ; [#uses=6]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 2, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ store i32 1, i32* %2, align 4
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb2
+ %16 = load i32* %2, align 4 ; [#uses=5]
+ %17 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %16, i32 0, i32 0 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %pt1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %16, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %pt1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %16, i32 0, i32 2 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %pt1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %16, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %pt1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = add nsw i32 %16, 1 ; [#uses=1]
+ store i32 %29, i32* %2, align 4
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ to label %invcont3 unwind label %lpad
+
+invcont3: ; preds = %invcont
+ %30 = load i32* %2, align 4 ; [#uses=5]
+ %31 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %30, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %pt2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %30, i32 0, i32 1 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %pt2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %30, i32 0, i32 2 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %pt2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %30, i32 0, i32 3 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %pt2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ %43 = add nsw i32 %30, 1 ; [#uses=1]
+ store i32 %43, i32* %2, align 4
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ to label %return unwind label %lpad
+
+invcont6: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %invcont3
+ ret void
+
+lpad: ; preds = %invcont3, %invcont, %bb2
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %44 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %44)
+ to label %invcont6 unwind label %lpad11
+
+lpad11: ; preds = %lpad
+ %eh_ptr12 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select14 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr12, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN16btBU_Simplex1to4C1ERK9btVector3S2_S2_(%struct.btBU_Simplex1to4* %this, %struct.btQuadWord* nocapture %pt0, %struct.btQuadWord* nocapture %pt1, %struct.btQuadWord* nocapture %pt2) align 2 {
+entry:
+ tail call void @_ZN16btBU_Simplex1to4C2ERK9btVector3S2_S2_(%struct.btBU_Simplex1to4* %this, %struct.btQuadWord* %pt0, %struct.btQuadWord* %pt1, %struct.btQuadWord* %pt2)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btBU_Simplex1to4C2ERK9btVector3S2_(%struct.btBU_Simplex1to4* %this, %struct.btQuadWord* nocapture %pt0, %struct.btQuadWord* nocapture %pt1) align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0 ; [#uses=3]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShapeC2Ev(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ %1 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV16btBU_Simplex1to4, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 1 ; [#uses=4]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 2, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ store i32 1, i32* %2, align 4
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb2
+ %16 = load i32* %2, align 4 ; [#uses=5]
+ %17 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %16, i32 0, i32 0 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %pt1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %16, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %pt1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %16, i32 0, i32 2 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %pt1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 %16, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %pt1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = add nsw i32 %16, 1 ; [#uses=1]
+ store i32 %29, i32* %2, align 4
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ to label %return unwind label %lpad
+
+invcont5: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %invcont
+ ret void
+
+lpad: ; preds = %invcont, %bb2
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select9 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %30 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %30)
+ to label %invcont5 unwind label %lpad10
+
+lpad10: ; preds = %lpad
+ %eh_ptr11 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select13 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN16btBU_Simplex1to4C1ERK9btVector3S2_(%struct.btBU_Simplex1to4* %this, %struct.btQuadWord* nocapture %pt0, %struct.btQuadWord* nocapture %pt1) align 2 {
+entry:
+ tail call void @_ZN16btBU_Simplex1to4C2ERK9btVector3S2_(%struct.btBU_Simplex1to4* %this, %struct.btQuadWord* %pt0, %struct.btQuadWord* %pt1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btBU_Simplex1to4C1ERK9btVector3(%struct.btBU_Simplex1to4* %this, %struct.btQuadWord* nocapture %pt0) align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShapeC2Ev(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ %1 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV16btBU_Simplex1to4, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 1 ; [#uses=2]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 2, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ store i32 1, i32* %2, align 4
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ to label %return unwind label %lpad
+
+invcont4: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %bb2
+ ret void
+
+lpad: ; preds = %bb2
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %16 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %16)
+ to label %invcont4 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN16btBU_Simplex1to4C2ERK9btVector3(%struct.btBU_Simplex1to4* %this, %struct.btQuadWord* nocapture %pt0) align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN34btPolyhedralConvexAabbCachingShapeC2Ev(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ %1 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV16btBU_Simplex1to4, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 1 ; [#uses=2]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 2, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %pt0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ store i32 1, i32* %2, align 4
+ invoke void @_ZN34btPolyhedralConvexAabbCachingShape15recalcLocalAabbEv(%struct.btPolyhedralConvexAabbCachingShape* %0)
+ to label %return unwind label %lpad
+
+invcont4: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %bb2
+ ret void
+
+lpad: ; preds = %bb2
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %16 = getelementptr inbounds %struct.btBU_Simplex1to4* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %16)
+ to label %invcont4 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN16btTriangleBuffer15processTriangleEP9btVector3ii(%struct.btTriangleBuffer* nocapture %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 3 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 3 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 1 ; [#uses=5]
+ %25 = load i32* %24, align 4 ; [#uses=6]
+ %26 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ %27 = load i32* %26, align 4 ; [#uses=2]
+ %28 = icmp eq i32 %27, %25 ; [#uses=1]
+ br i1 %28, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %entry
+ %29 = icmp eq i32 %25, 0 ; [#uses=1]
+ %30 = shl i32 %25, 1 ; [#uses=1]
+ %iftmp.39.0.i.i = select i1 %29, i32 1, i32 %30 ; [#uses=4]
+ %31 = icmp slt i32 %27, %iftmp.39.0.i.i ; [#uses=1]
+ br i1 %31, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %32 = icmp eq i32 %iftmp.39.0.i.i, 0 ; [#uses=1]
+ br i1 %32, label %_ZN20btAlignedObjectArrayI10btTriangleE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %33 = mul i32 %iftmp.39.0.i.i, 56 ; [#uses=1]
+ %34 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %33, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %34 to %struct.btTriangle* ; [#uses=1]
+ %.pre.i = load i32* %24, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI10btTriangleE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayI10btTriangleE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %35 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %25, %bb.i.i ] ; [#uses=2]
+ %36 = phi %struct.btTriangle* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %37 = icmp sgt i32 %35, 0 ; [#uses=1]
+ br i1 %37, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayI10btTriangleE4copyEiiPS0_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayI10btTriangleE8allocateEi.exit.i.i
+ %38 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btTriangle* %36, i32 %indvar.i.i.i ; [#uses=2]
+ %39 = icmp eq %struct.btTriangle* %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %39, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %scevgep8.i.i.i = bitcast %struct.btTriangle* %scevgep.i.i.i to i8* ; [#uses=1]
+ %40 = load %struct.btTriangle** %38, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btTriangle* %40, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep910.i.i.i = bitcast %struct.btTriangle* %scevgep to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep8.i.i.i, i8* %scevgep910.i.i.i, i32 56, i32 4, i1 false) nounwind
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %35 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI10btTriangleE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayI10btTriangleE4copyEiiPS0_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayI10btTriangleE8allocateEi.exit.i.i
+ %41 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %42 = load %struct.btTriangle** %41, align 4 ; [#uses=2]
+ %43 = icmp eq %struct.btTriangle* %42, null ; [#uses=1]
+ br i1 %43, label %_ZN20btAlignedObjectArrayI10btTriangleE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayI10btTriangleE4copyEiiPS0_.exit.i.i
+ %44 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %45 = load i8* %44, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %45, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %46 = bitcast %struct.btTriangle* %42 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %46)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTriangle* null, %struct.btTriangle** %41, align 4
+ br label %_ZN20btAlignedObjectArrayI10btTriangleE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayI10btTriangleE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayI10btTriangleE4copyEiiPS0_.exit.i.i
+ %47 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %47, align 4
+ store %struct.btTriangle* %36, %struct.btTriangle** %41, align 4
+ store i32 %iftmp.39.0.i.i, i32* %26, align 4
+ %.pre8.i = load i32* %24, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayI10btTriangleE10deallocateEv.exit.i.i, %bb.i, %entry
+ %48 = phi i32 [ %.pre8.i, %_ZN20btAlignedObjectArrayI10btTriangleE10deallocateEv.exit.i.i ], [ %25, %entry ], [ %25, %bb.i ] ; [#uses=16]
+ %49 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %50 = load %struct.btTriangle** %49, align 4 ; [#uses=15]
+ %51 = getelementptr inbounds %struct.btTriangle* %50, i32 %48 ; [#uses=1]
+ %52 = icmp eq %struct.btTriangle* %51, null ; [#uses=1]
+ br i1 %52, label %_ZN20btAlignedObjectArrayI10btTriangleE9push_backERKS0_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %.0 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1, float* %.0, align 4
+ %.129 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %3, float* %.129, align 4
+ %.231 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %5, float* %.231, align 4
+ %.333 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %7, float* %.333, align 4
+ %.120.0 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %9, float* %.120.0, align 4
+ %.120.1 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %11, float* %.120.1, align 4
+ %.120.2 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %13, float* %.120.2, align 4
+ %.120.3 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %15, float* %.120.3, align 4
+ %.213.0 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %17, float* %.213.0, align 4
+ %.213.1 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %19, float* %.213.1, align 4
+ %.213.2 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %21, float* %.213.2, align 4
+ %.213.3 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %23, float* %.213.3, align 4
+ %.3 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 3 ; [#uses=1]
+ store i32 %partId, i32* %.3, align 4
+ %.4 = getelementptr inbounds %struct.btTriangle* %50, i32 %48, i32 4 ; [#uses=1]
+ store i32 %triangleIndex, i32* %.4, align 4
+ %.pre9.i = load i32* %24, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI10btTriangleE9push_backERKS0_.exit
+
+_ZN20btAlignedObjectArrayI10btTriangleE9push_backERKS0_.exit: ; preds = %bb2.i, %bb1.i
+ %53 = phi i32 [ %48, %bb1.i ], [ %.pre9.i, %bb2.i ] ; [#uses=1]
+ %54 = add nsw i32 %53, 1 ; [#uses=1]
+ store i32 %54, i32* %24, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btTriangleBufferD0Ev(%struct.btTriangleBuffer* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV16btTriangleBuffer, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btTriangle** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btTriangle* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btTriangle* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTriangle* null, %struct.btTriangle** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btTriangle* null, %struct.btTriangle** %1, align 4
+ %8 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %10)
+ %11 = bitcast %struct.btTriangleBuffer* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %11) nounwind
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %12 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %12)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btTriangleBufferD1Ev(%struct.btTriangleBuffer* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV16btTriangleBuffer, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btTriangle** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btTriangle* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btTriangle* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTriangle* null, %struct.btTriangle** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btTriangle* null, %struct.btTriangle** %1, align 4
+ %8 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %10)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %11 = getelementptr inbounds %struct.btTriangleBuffer* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %11)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=75]
+define void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV18btTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN31btInternalTriangleIndexCallbackD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV31btInternalTriangleIndexCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN31btInternalTriangleIndexCallbackD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV31btInternalTriangleIndexCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=44]
+define void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV31btInternalTriangleIndexCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btTriangleCallbackD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV18btTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btTriangleCallbackD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV18btTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN26btTriangleIndexVertexArrayC2EiPiiiPfi(%struct.btTriangleIndexVertexArray* %this, i32 %numTriangles, i32* %triangleIndexBase, i32 %triangleIndexStride, i32 %numVertices, float* %vertexBase, i32 %vertexStride) align 2 {
+bb.i.i:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ store i32 (...)** getelementptr inbounds ([17 x i32 (...)*]* @_ZTV26btTriangleIndexVertexArray, i32 0, i32 2), i32 (...)*** %0, align 4
+ %5 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 4 ; [#uses=3]
+ store i8 1, i8* %5, align 4
+ %6 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 3 ; [#uses=6]
+ store %struct.btIndexedMesh* null, %struct.btIndexedMesh** %6, align 4
+ %7 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 1 ; [#uses=5]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = bitcast i32* %triangleIndexBase to i8* ; [#uses=1]
+ %11 = bitcast float* %vertexBase to i8* ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI13btIndexedMeshE7reserveEi(%struct.IndexedMeshArray* %12, i32 1) inlinehint
+ to label %return unwind label %lpad12
+
+invcont7: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr13)
+ unreachable
+
+return: ; preds = %bb.i.i
+ %.pre.i.i = load i32* %7, align 4 ; [#uses=8]
+ %.pre = load %struct.btIndexedMesh** %6, align 4 ; [#uses=8]
+ %13 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i.i, i32 0 ; [#uses=1]
+ store i32 %numTriangles, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i.i, i32 1 ; [#uses=1]
+ store i8* %10, i8** %14, align 4
+ %15 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i.i, i32 2 ; [#uses=1]
+ store i32 %triangleIndexStride, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i.i, i32 3 ; [#uses=1]
+ store i32 %numVertices, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i.i, i32 4 ; [#uses=1]
+ store i8* %11, i8** %17, align 4
+ %18 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i.i, i32 5 ; [#uses=1]
+ store i32 %vertexStride, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i.i, i32 6 ; [#uses=1]
+ store i32 2, i32* %19, align 4
+ %20 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i.i, i32 7 ; [#uses=1]
+ store i32 0, i32* %20, align 4
+ %21 = load i32* %7, align 4 ; [#uses=2]
+ %22 = add nsw i32 %21, 1 ; [#uses=1]
+ store i32 %22, i32* %7, align 4
+ %23 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btIndexedMesh* %23, i32 %21, i32 6 ; [#uses=1]
+ store i32 2, i32* %24, align 4
+ ret void
+
+lpad12: ; preds = %bb.i.i
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %25 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=2]
+ %26 = icmp eq %struct.btIndexedMesh* %25, null ; [#uses=1]
+ br i1 %26, label %ppad, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad12
+ %27 = load i8* %5, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %27, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %28 = bitcast %struct.btIndexedMesh* %25 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %28)
+ to label %bb2.i.i.i unwind label %lpad16
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btIndexedMesh* null, %struct.btIndexedMesh** %6, align 4
+ br label %ppad
+
+lpad16: ; preds = %bb1.i.i.i
+ %eh_ptr17 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select19 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr17, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad20: ; preds = %ppad
+ %eh_ptr21 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select23 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr21, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i, %lpad12
+ store i8 1, i8* %5, align 4
+ store %struct.btIndexedMesh* null, %struct.btIndexedMesh** %6, align 4
+ store i32 0, i32* %7, align 4
+ store i32 0, i32* %8, align 4
+ %29 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN23btStridingMeshInterfaceD2Ev(%struct.btStridingMeshInterface* %29)
+ to label %invcont7 unwind label %lpad20
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN26btTriangleIndexVertexArray16unLockVertexBaseEi(%struct.btTriangleIndexVertexArray* nocapture %this, i32 %subpart) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK26btTriangleIndexVertexArray24unLockReadOnlyVertexBaseEi(%struct.btTriangleIndexVertexArray* nocapture %this, i32 %subpart) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN26btTriangleIndexVertexArray19preallocateVerticesEi(%struct.btTriangleIndexVertexArray* nocapture %this, i32 %numverts) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN26btTriangleIndexVertexArray18preallocateIndicesEi(%struct.btTriangleIndexVertexArray* nocapture %this, i32 %numindices) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define zeroext i8 @_ZNK26btTriangleIndexVertexArray14hasPremadeAabbEv(%struct.btTriangleIndexVertexArray* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 3 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 1 ; [#uses=1]
+ %retval12 = zext i1 %2 to i8 ; [#uses=1]
+ ret i8 %retval12
+}
+
+; [#uses=1]
+define void @_ZNK26btTriangleIndexVertexArray14setPremadeAabbERK9btVector3S2_(%struct.btTriangleIndexVertexArray* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 1, i32* %24, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK26btTriangleIndexVertexArray14getPremadeAabbEP9btVector3S1_(%struct.btTriangleIndexVertexArray* nocapture %this, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK26btTriangleIndexVertexArray14getNumSubPartsEv(%struct.btTriangleIndexVertexArray* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=1]
+define void @_ZN26btTriangleIndexVertexArray24getLockedVertexIndexBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i(%struct.btTriangleIndexVertexArray* nocapture %this, i8** nocapture %vertexbase, i32* nocapture %numverts, i32* nocapture %type, i32* nocapture %vertexStride, i8** nocapture %indexbase, i32* nocapture %indexstride, i32* nocapture %numfaces, i32* nocapture %indicestype, i32 %subpart) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %1 = load %struct.btIndexedMesh** %0, align 4 ; [#uses=8]
+ %2 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 3 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ store i32 %3, i32* %numverts, align 4
+ %4 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 4 ; [#uses=1]
+ %5 = load i8** %4, align 4 ; [#uses=1]
+ store i8* %5, i8** %vertexbase, align 4
+ %6 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 7 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ store i32 %7, i32* %type, align 4
+ %8 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 5 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ store i32 %9, i32* %vertexStride, align 4
+ %10 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 0 ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ store i32 %11, i32* %numfaces, align 4
+ %12 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 1 ; [#uses=1]
+ %13 = load i8** %12, align 4 ; [#uses=1]
+ store i8* %13, i8** %indexbase, align 4
+ %14 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 2 ; [#uses=1]
+ %15 = load i32* %14, align 4 ; [#uses=1]
+ store i32 %15, i32* %indexstride, align 4
+ %16 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 6 ; [#uses=1]
+ %17 = load i32* %16, align 4 ; [#uses=1]
+ store i32 %17, i32* %indicestype, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK26btTriangleIndexVertexArray32getLockedReadOnlyVertexIndexBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i(%struct.btTriangleIndexVertexArray* nocapture %this, i8** nocapture %vertexbase, i32* nocapture %numverts, i32* nocapture %type, i32* nocapture %vertexStride, i8** nocapture %indexbase, i32* nocapture %indexstride, i32* nocapture %numfaces, i32* nocapture %indicestype, i32 %subpart) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %1 = load %struct.btIndexedMesh** %0, align 4 ; [#uses=8]
+ %2 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 3 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ store i32 %3, i32* %numverts, align 4
+ %4 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 4 ; [#uses=1]
+ %5 = load i8** %4, align 4 ; [#uses=1]
+ store i8* %5, i8** %vertexbase, align 4
+ %6 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 7 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ store i32 %7, i32* %type, align 4
+ %8 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 5 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ store i32 %9, i32* %vertexStride, align 4
+ %10 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 0 ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ store i32 %11, i32* %numfaces, align 4
+ %12 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 1 ; [#uses=1]
+ %13 = load i8** %12, align 4 ; [#uses=1]
+ store i8* %13, i8** %indexbase, align 4
+ %14 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 2 ; [#uses=1]
+ %15 = load i32* %14, align 4 ; [#uses=1]
+ store i32 %15, i32* %indexstride, align 4
+ %16 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 %subpart, i32 6 ; [#uses=1]
+ %17 = load i32* %16, align 4 ; [#uses=1]
+ store i32 %17, i32* %indicestype, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN26btTriangleIndexVertexArrayD0Ev(%struct.btTriangleIndexVertexArray* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([17 x i32 (...)*]* @_ZTV26btTriangleIndexVertexArray, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btIndexedMesh** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btIndexedMesh* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btIndexedMesh* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btIndexedMesh* null, %struct.btIndexedMesh** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btIndexedMesh* null, %struct.btIndexedMesh** %1, align 4
+ %8 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN23btStridingMeshInterfaceD2Ev(%struct.btStridingMeshInterface* %10)
+ %11 = bitcast %struct.btTriangleIndexVertexArray* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %11)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %12 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN23btStridingMeshInterfaceD2Ev(%struct.btStridingMeshInterface* %12)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN26btTriangleIndexVertexArrayD1Ev(%struct.btTriangleIndexVertexArray* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([17 x i32 (...)*]* @_ZTV26btTriangleIndexVertexArray, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btIndexedMesh** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btIndexedMesh* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btIndexedMesh* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btIndexedMesh* null, %struct.btIndexedMesh** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btIndexedMesh* null, %struct.btIndexedMesh** %1, align 4
+ %8 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN23btStridingMeshInterfaceD2Ev(%struct.btStridingMeshInterface* %10)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %11 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN23btStridingMeshInterfaceD2Ev(%struct.btStridingMeshInterface* %11)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=10]
+define void @_ZN26btTriangleIndexVertexArrayD2Ev(%struct.btTriangleIndexVertexArray* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([17 x i32 (...)*]* @_ZTV26btTriangleIndexVertexArray, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btIndexedMesh** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btIndexedMesh* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btIndexedMesh* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btIndexedMesh* null, %struct.btIndexedMesh** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btIndexedMesh* null, %struct.btIndexedMesh** %1, align 4
+ %8 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN23btStridingMeshInterfaceD2Ev(%struct.btStridingMeshInterface* %10)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %11 = getelementptr inbounds %struct.btTriangleIndexVertexArray* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN23btStridingMeshInterfaceD2Ev(%struct.btStridingMeshInterface* %11)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI13btIndexedMeshE7reserveEi(%struct.IndexedMeshArray* nocapture %this, i32 %_Count) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.IndexedMeshArray* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp slt i32 %1, %_Count ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = icmp eq i32 %_Count, 0 ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI13btIndexedMeshE8allocateEi.exit, label %bb.i2
+
+bb.i2: ; preds = %bb
+ %4 = shl i32 %_Count, 5 ; [#uses=1]
+ %5 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %4, i32 16) ; [#uses=1]
+ %phitmp = bitcast i8* %5 to %struct.btIndexedMesh* ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI13btIndexedMeshE8allocateEi.exit
+
+_ZN20btAlignedObjectArrayI13btIndexedMeshE8allocateEi.exit: ; preds = %bb.i2, %bb
+ %6 = phi %struct.btIndexedMesh* [ %phitmp, %bb.i2 ], [ null, %bb ] ; [#uses=9]
+ %7 = getelementptr inbounds %struct.IndexedMeshArray* %this, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = icmp sgt i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb.nph.i, label %_ZNK20btAlignedObjectArrayI13btIndexedMeshE4copyEiiPS0_.exit
+
+bb.nph.i: ; preds = %_ZN20btAlignedObjectArrayI13btIndexedMeshE8allocateEi.exit
+ %10 = getelementptr inbounds %struct.IndexedMeshArray* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4
+
+bb.i4: ; preds = %bb.i4, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb.i4 ] ; [#uses=17]
+ %scevgep1314.i = getelementptr inbounds %struct.btIndexedMesh* %6, i32 %indvar.i, i32 0 ; [#uses=1]
+ %scevgep15.i = getelementptr %struct.btIndexedMesh* %6, i32 %indvar.i, i32 1 ; [#uses=1]
+ %scevgep16.i = getelementptr %struct.btIndexedMesh* %6, i32 %indvar.i, i32 2 ; [#uses=1]
+ %scevgep17.i = getelementptr %struct.btIndexedMesh* %6, i32 %indvar.i, i32 3 ; [#uses=1]
+ %scevgep18.i = getelementptr %struct.btIndexedMesh* %6, i32 %indvar.i, i32 4 ; [#uses=1]
+ %scevgep19.i = getelementptr %struct.btIndexedMesh* %6, i32 %indvar.i, i32 5 ; [#uses=1]
+ %scevgep20.i = getelementptr %struct.btIndexedMesh* %6, i32 %indvar.i, i32 6 ; [#uses=1]
+ %scevgep21.i = getelementptr %struct.btIndexedMesh* %6, i32 %indvar.i, i32 7 ; [#uses=1]
+ %11 = load %struct.btIndexedMesh** %10, align 4 ; [#uses=8]
+ %scevgep5.i = getelementptr inbounds %struct.btIndexedMesh* %11, i32 %indvar.i, i32 0 ; [#uses=1]
+ %12 = load i32* %scevgep5.i, align 4 ; [#uses=1]
+ store i32 %12, i32* %scevgep1314.i, align 4
+ %scevgep6.i = getelementptr %struct.btIndexedMesh* %11, i32 %indvar.i, i32 1 ; [#uses=1]
+ %13 = load i8** %scevgep6.i, align 4 ; [#uses=1]
+ store i8* %13, i8** %scevgep15.i, align 4
+ %scevgep7.i = getelementptr %struct.btIndexedMesh* %11, i32 %indvar.i, i32 2 ; [#uses=1]
+ %14 = load i32* %scevgep7.i, align 4 ; [#uses=1]
+ store i32 %14, i32* %scevgep16.i, align 4
+ %scevgep8.i = getelementptr %struct.btIndexedMesh* %11, i32 %indvar.i, i32 3 ; [#uses=1]
+ %15 = load i32* %scevgep8.i, align 4 ; [#uses=1]
+ store i32 %15, i32* %scevgep17.i, align 4
+ %scevgep9.i = getelementptr %struct.btIndexedMesh* %11, i32 %indvar.i, i32 4 ; [#uses=1]
+ %16 = load i8** %scevgep9.i, align 4 ; [#uses=1]
+ store i8* %16, i8** %scevgep18.i, align 4
+ %scevgep10.i = getelementptr %struct.btIndexedMesh* %11, i32 %indvar.i, i32 5 ; [#uses=1]
+ %17 = load i32* %scevgep10.i, align 4 ; [#uses=1]
+ store i32 %17, i32* %scevgep19.i, align 4
+ %scevgep11.i = getelementptr %struct.btIndexedMesh* %11, i32 %indvar.i, i32 6 ; [#uses=1]
+ %18 = load i32* %scevgep11.i, align 4 ; [#uses=1]
+ store i32 %18, i32* %scevgep20.i, align 4
+ %scevgep12.i = getelementptr %struct.btIndexedMesh* %11, i32 %indvar.i, i32 7 ; [#uses=1]
+ %19 = load i32* %scevgep12.i, align 4 ; [#uses=1]
+ store i32 %19, i32* %scevgep21.i, align 4
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %8 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI13btIndexedMeshE4copyEiiPS0_.exit, label %bb.i4
+
+_ZNK20btAlignedObjectArrayI13btIndexedMeshE4copyEiiPS0_.exit: ; preds = %bb.i4, %_ZN20btAlignedObjectArrayI13btIndexedMeshE8allocateEi.exit
+ %20 = getelementptr inbounds %struct.IndexedMeshArray* %this, i32 0, i32 3 ; [#uses=3]
+ %21 = load %struct.btIndexedMesh** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.btIndexedMesh* %21, null ; [#uses=1]
+ br i1 %22, label %_ZN20btAlignedObjectArrayI13btIndexedMeshE10deallocateEv.exit, label %bb.i
+
+bb.i: ; preds = %_ZNK20btAlignedObjectArrayI13btIndexedMeshE4copyEiiPS0_.exit
+ %23 = getelementptr inbounds %struct.IndexedMeshArray* %this, i32 0, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %25 = bitcast %struct.btIndexedMesh* %21 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %25)
+ br label %bb2.i
+
+bb2.i: ; preds = %bb1.i, %bb.i
+ store %struct.btIndexedMesh* null, %struct.btIndexedMesh** %20, align 4
+ br label %_ZN20btAlignedObjectArrayI13btIndexedMeshE10deallocateEv.exit
+
+_ZN20btAlignedObjectArrayI13btIndexedMeshE10deallocateEv.exit: ; preds = %bb2.i, %_ZNK20btAlignedObjectArrayI13btIndexedMeshE4copyEiiPS0_.exit
+ %26 = getelementptr inbounds %struct.IndexedMeshArray* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %26, align 4
+ store %struct.btIndexedMesh* %6, %struct.btIndexedMesh** %20, align 4
+ store i32 %_Count, i32* %0, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN26btTriangleIndexVertexArrayC1EiPiiiPfi(%struct.btTriangleIndexVertexArray* %this, i32 %numTriangles, i32* %triangleIndexBase, i32 %triangleIndexStride, i32 %numVertices, float* %vertexBase, i32 %vertexStride) align 2 {
+entry:
+ tail call void @_ZN26btTriangleIndexVertexArrayC2EiPiiiPfi(%struct.btTriangleIndexVertexArray* %this, i32 %numTriangles, i32* %triangleIndexBase, i32 %triangleIndexStride, i32 %numVertices, float* %vertexBase, i32 %vertexStride)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN34btTriangleIndexVertexMaterialArrayC2EiPiiiPfiiPhiS0_i(%struct.btTriangleIndexVertexMaterialArray* %this, i32 %numTriangles, i32* %triangleIndexBase, i32 %triangleIndexStride, i32 %numVertices, float* %vertexBase, i32 %vertexStride, i32 %numMaterials, i8* %materialBase, i32 %materialStride, i32* %triangleMaterialsBase, i32 %materialIndexStride) align 2 {
+bb.i.i:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN26btTriangleIndexVertexArrayC2EiPiiiPfi(%struct.btTriangleIndexVertexArray* %0, i32 %numTriangles, i32* %triangleIndexBase, i32 %triangleIndexStride, i32 %numVertices, float* %vertexBase, i32 %vertexStride)
+ %1 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV34btTriangleIndexVertexMaterialArray, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 4 ; [#uses=3]
+ store i8 1, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 3 ; [#uses=6]
+ store %struct.btMaterialProperties* null, %struct.btMaterialProperties** %3, align 4
+ %4 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 1 ; [#uses=5]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ store i32 0, i32* %5, align 4
+ %6 = bitcast i32* %triangleMaterialsBase to i8* ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI20btMaterialPropertiesE7reserveEi(%struct.MaterialArray* %7, i32 1) inlinehint
+ to label %bb1.i.i unwind label %lpad12
+
+bb1.i.i: ; preds = %bb.i.i
+ %.pre.i.i = load i32* %4, align 4 ; [#uses=10]
+ %.pre = load %struct.btMaterialProperties** %3, align 4 ; [#uses=10]
+ %8 = getelementptr inbounds %struct.btMaterialProperties* %.pre, i32 %.pre.i.i ; [#uses=1]
+ %9 = icmp eq %struct.btMaterialProperties* %8, null ; [#uses=1]
+ br i1 %9, label %return, label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i
+ %10 = getelementptr inbounds %struct.btMaterialProperties* %.pre, i32 %.pre.i.i, i32 0 ; [#uses=1]
+ store i32 %numMaterials, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btMaterialProperties* %.pre, i32 %.pre.i.i, i32 1 ; [#uses=1]
+ store i8* %materialBase, i8** %11, align 4
+ %12 = getelementptr inbounds %struct.btMaterialProperties* %.pre, i32 %.pre.i.i, i32 2 ; [#uses=1]
+ store i32 %materialStride, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.btMaterialProperties* %.pre, i32 %.pre.i.i, i32 3 ; [#uses=1]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btMaterialProperties* %.pre, i32 %.pre.i.i, i32 4 ; [#uses=1]
+ store i32 %numTriangles, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btMaterialProperties* %.pre, i32 %.pre.i.i, i32 5 ; [#uses=1]
+ store i8* %6, i8** %15, align 4
+ %16 = getelementptr inbounds %struct.btMaterialProperties* %.pre, i32 %.pre.i.i, i32 6 ; [#uses=1]
+ store i32 %materialIndexStride, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btMaterialProperties* %.pre, i32 %.pre.i.i, i32 7 ; [#uses=1]
+ store i32 2, i32* %17, align 4
+ %.pre5.i.i = load i32* %4, align 4 ; [#uses=1]
+ %.pre.i = load %struct.btMaterialProperties** %3, align 4 ; [#uses=1]
+ br label %return
+
+invcont7: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr13)
+ unreachable
+
+return: ; preds = %bb2.i.i, %bb1.i.i
+ %18 = phi %struct.btMaterialProperties* [ %.pre, %bb1.i.i ], [ %.pre.i, %bb2.i.i ] ; [#uses=1]
+ %19 = phi i32 [ %.pre.i.i, %bb1.i.i ], [ %.pre5.i.i, %bb2.i.i ] ; [#uses=2]
+ %20 = add nsw i32 %19, 1 ; [#uses=1]
+ store i32 %20, i32* %4, align 4
+ %21 = getelementptr inbounds %struct.btMaterialProperties* %18, i32 %19, i32 7 ; [#uses=1]
+ store i32 2, i32* %21, align 4
+ ret void
+
+lpad12: ; preds = %bb.i.i
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %22 = load %struct.btMaterialProperties** %3, align 4 ; [#uses=2]
+ %23 = icmp eq %struct.btMaterialProperties* %22, null ; [#uses=1]
+ br i1 %23, label %ppad, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad12
+ %24 = load i8* %2, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %25 = bitcast %struct.btMaterialProperties* %22 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %25)
+ to label %bb2.i.i.i unwind label %lpad16
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btMaterialProperties* null, %struct.btMaterialProperties** %3, align 4
+ br label %ppad
+
+lpad16: ; preds = %bb1.i.i.i
+ %eh_ptr17 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select19 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr17, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad20: ; preds = %ppad
+ %eh_ptr21 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select23 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr21, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i, %lpad12
+ store i8 1, i8* %2, align 4
+ store %struct.btMaterialProperties* null, %struct.btMaterialProperties** %3, align 4
+ store i32 0, i32* %4, align 4
+ store i32 0, i32* %5, align 4
+ invoke void @_ZN26btTriangleIndexVertexArrayD2Ev(%struct.btTriangleIndexVertexArray* %0)
+ to label %invcont7 unwind label %lpad20
+}
+
+; [#uses=1]
+define void @_ZN34btTriangleIndexVertexMaterialArray29getLockedReadOnlyMaterialBaseEPPKhRiR14PHY_ScalarTypeS3_S2_S3_S3_S5_i(%struct.btTriangleIndexVertexMaterialArray* nocapture %this, i8** nocapture %materialBase, i32* nocapture %numMaterials, i32* nocapture %materialType, i32* nocapture %materialStride, i8** nocapture %triangleMaterialBase, i32* nocapture %numTriangles, i32* nocapture %triangleMaterialStride, i32* nocapture %triangleType, i32 %subpart) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %1 = load %struct.btMaterialProperties** %0, align 4 ; [#uses=7]
+ %2 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 0 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ store i32 %3, i32* %numMaterials, align 4
+ %4 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 1 ; [#uses=1]
+ %5 = load i8** %4, align 4 ; [#uses=1]
+ store i8* %5, i8** %materialBase, align 4
+ store i32 0, i32* %materialType, align 4
+ %6 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 2 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ store i32 %7, i32* %materialStride, align 4
+ %8 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 4 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ store i32 %9, i32* %numTriangles, align 4
+ %10 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 5 ; [#uses=1]
+ %11 = load i8** %10, align 4 ; [#uses=1]
+ store i8* %11, i8** %triangleMaterialBase, align 4
+ %12 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 6 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ store i32 %13, i32* %triangleMaterialStride, align 4
+ %14 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 7 ; [#uses=1]
+ %15 = load i32* %14, align 4 ; [#uses=1]
+ store i32 %15, i32* %triangleType, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN34btTriangleIndexVertexMaterialArray21getLockedMaterialBaseEPPhRiR14PHY_ScalarTypeS2_S1_S2_S2_S4_i(%struct.btTriangleIndexVertexMaterialArray* nocapture %this, i8** nocapture %materialBase, i32* nocapture %numMaterials, i32* nocapture %materialType, i32* nocapture %materialStride, i8** nocapture %triangleMaterialBase, i32* nocapture %numTriangles, i32* nocapture %triangleMaterialStride, i32* nocapture %triangleType, i32 %subpart) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %1 = load %struct.btMaterialProperties** %0, align 4 ; [#uses=7]
+ %2 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 0 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ store i32 %3, i32* %numMaterials, align 4
+ %4 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 1 ; [#uses=1]
+ %5 = load i8** %4, align 4 ; [#uses=1]
+ store i8* %5, i8** %materialBase, align 4
+ store i32 0, i32* %materialType, align 4
+ %6 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 2 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ store i32 %7, i32* %materialStride, align 4
+ %8 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 4 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ store i32 %9, i32* %numTriangles, align 4
+ %10 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 5 ; [#uses=1]
+ %11 = load i8** %10, align 4 ; [#uses=1]
+ store i8* %11, i8** %triangleMaterialBase, align 4
+ %12 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 6 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ store i32 %13, i32* %triangleMaterialStride, align 4
+ %14 = getelementptr inbounds %struct.btMaterialProperties* %1, i32 %subpart, i32 7 ; [#uses=1]
+ %15 = load i32* %14, align 4 ; [#uses=1]
+ store i32 %15, i32* %triangleType, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN34btTriangleIndexVertexMaterialArrayD0Ev(%struct.btTriangleIndexVertexMaterialArray* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV34btTriangleIndexVertexMaterialArray, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btMaterialProperties** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btMaterialProperties* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btMaterialProperties* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btMaterialProperties* null, %struct.btMaterialProperties** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btMaterialProperties* null, %struct.btMaterialProperties** %1, align 4
+ %8 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN26btTriangleIndexVertexArrayD2Ev(%struct.btTriangleIndexVertexArray* %10)
+ %11 = bitcast %struct.btTriangleIndexVertexMaterialArray* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %11)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %12 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN26btTriangleIndexVertexArrayD2Ev(%struct.btTriangleIndexVertexArray* %12)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN34btTriangleIndexVertexMaterialArrayD1Ev(%struct.btTriangleIndexVertexMaterialArray* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([19 x i32 (...)*]* @_ZTV34btTriangleIndexVertexMaterialArray, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %2 = load %struct.btMaterialProperties** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btMaterialProperties* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btMaterialProperties* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btMaterialProperties* null, %struct.btMaterialProperties** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btMaterialProperties* null, %struct.btMaterialProperties** %1, align 4
+ %8 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN26btTriangleIndexVertexArrayD2Ev(%struct.btTriangleIndexVertexArray* %10)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %11 = getelementptr inbounds %struct.btTriangleIndexVertexMaterialArray* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN26btTriangleIndexVertexArrayD2Ev(%struct.btTriangleIndexVertexArray* %11)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI20btMaterialPropertiesE7reserveEi(%struct.MaterialArray* nocapture %this, i32 %_Count) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.MaterialArray* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp slt i32 %1, %_Count ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = icmp eq i32 %_Count, 0 ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI20btMaterialPropertiesE8allocateEi.exit, label %bb.i2
+
+bb.i2: ; preds = %bb
+ %4 = shl i32 %_Count, 5 ; [#uses=1]
+ %5 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %4, i32 16) ; [#uses=1]
+ %phitmp = bitcast i8* %5 to %struct.btMaterialProperties* ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI20btMaterialPropertiesE8allocateEi.exit
+
+_ZN20btAlignedObjectArrayI20btMaterialPropertiesE8allocateEi.exit: ; preds = %bb.i2, %bb
+ %6 = phi %struct.btMaterialProperties* [ %phitmp, %bb.i2 ], [ null, %bb ] ; [#uses=10]
+ %7 = getelementptr inbounds %struct.MaterialArray* %this, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = icmp sgt i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb.nph.i, label %_ZNK20btAlignedObjectArrayI20btMaterialPropertiesE4copyEiiPS0_.exit
+
+bb.nph.i: ; preds = %_ZN20btAlignedObjectArrayI20btMaterialPropertiesE8allocateEi.exit
+ %10 = getelementptr inbounds %struct.MaterialArray* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4
+
+bb.i4: ; preds = %bb3.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb3.i ] ; [#uses=18]
+ %scevgep.i = getelementptr %struct.btMaterialProperties* %6, i32 %indvar.i ; [#uses=1]
+ %11 = icmp eq %struct.btMaterialProperties* %scevgep.i, null ; [#uses=1]
+ br i1 %11, label %bb3.i, label %bb1.i5
+
+bb1.i5: ; preds = %bb.i4
+ %scevgep18.i = getelementptr %struct.btMaterialProperties* %6, i32 %indvar.i, i32 1 ; [#uses=1]
+ %scevgep19.i = getelementptr %struct.btMaterialProperties* %6, i32 %indvar.i, i32 2 ; [#uses=1]
+ %scevgep20.i = getelementptr %struct.btMaterialProperties* %6, i32 %indvar.i, i32 3 ; [#uses=1]
+ %scevgep21.i = getelementptr %struct.btMaterialProperties* %6, i32 %indvar.i, i32 4 ; [#uses=1]
+ %scevgep22.i = getelementptr %struct.btMaterialProperties* %6, i32 %indvar.i, i32 5 ; [#uses=1]
+ %scevgep23.i = getelementptr %struct.btMaterialProperties* %6, i32 %indvar.i, i32 6 ; [#uses=1]
+ %scevgep24.i = getelementptr %struct.btMaterialProperties* %6, i32 %indvar.i, i32 7 ; [#uses=1]
+ %scevgep17.i = getelementptr inbounds %struct.btMaterialProperties* %6, i32 %indvar.i, i32 0 ; [#uses=1]
+ %12 = load %struct.btMaterialProperties** %10, align 4 ; [#uses=8]
+ %scevgep89.i = getelementptr inbounds %struct.btMaterialProperties* %12, i32 %indvar.i, i32 0 ; [#uses=1]
+ %13 = load i32* %scevgep89.i, align 4 ; [#uses=1]
+ store i32 %13, i32* %scevgep17.i, align 4
+ %scevgep10.i = getelementptr %struct.btMaterialProperties* %12, i32 %indvar.i, i32 1 ; [#uses=1]
+ %14 = load i8** %scevgep10.i, align 4 ; [#uses=1]
+ store i8* %14, i8** %scevgep18.i, align 4
+ %scevgep11.i = getelementptr %struct.btMaterialProperties* %12, i32 %indvar.i, i32 2 ; [#uses=1]
+ %15 = load i32* %scevgep11.i, align 4 ; [#uses=1]
+ store i32 %15, i32* %scevgep19.i, align 4
+ %scevgep12.i = getelementptr %struct.btMaterialProperties* %12, i32 %indvar.i, i32 3 ; [#uses=1]
+ %16 = load i32* %scevgep12.i, align 4 ; [#uses=1]
+ store i32 %16, i32* %scevgep20.i, align 4
+ %scevgep13.i = getelementptr %struct.btMaterialProperties* %12, i32 %indvar.i, i32 4 ; [#uses=1]
+ %17 = load i32* %scevgep13.i, align 4 ; [#uses=1]
+ store i32 %17, i32* %scevgep21.i, align 4
+ %scevgep14.i = getelementptr %struct.btMaterialProperties* %12, i32 %indvar.i, i32 5 ; [#uses=1]
+ %18 = load i8** %scevgep14.i, align 4 ; [#uses=1]
+ store i8* %18, i8** %scevgep22.i, align 4
+ %scevgep15.i = getelementptr %struct.btMaterialProperties* %12, i32 %indvar.i, i32 6 ; [#uses=1]
+ %19 = load i32* %scevgep15.i, align 4 ; [#uses=1]
+ store i32 %19, i32* %scevgep23.i, align 4
+ %scevgep16.i = getelementptr %struct.btMaterialProperties* %12, i32 %indvar.i, i32 7 ; [#uses=1]
+ %20 = load i32* %scevgep16.i, align 4 ; [#uses=1]
+ store i32 %20, i32* %scevgep24.i, align 4
+ br label %bb3.i
+
+bb3.i: ; preds = %bb1.i5, %bb.i4
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %8 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI20btMaterialPropertiesE4copyEiiPS0_.exit, label %bb.i4
+
+_ZNK20btAlignedObjectArrayI20btMaterialPropertiesE4copyEiiPS0_.exit: ; preds = %bb3.i, %_ZN20btAlignedObjectArrayI20btMaterialPropertiesE8allocateEi.exit
+ %21 = getelementptr inbounds %struct.MaterialArray* %this, i32 0, i32 3 ; [#uses=3]
+ %22 = load %struct.btMaterialProperties** %21, align 4 ; [#uses=2]
+ %23 = icmp eq %struct.btMaterialProperties* %22, null ; [#uses=1]
+ br i1 %23, label %_ZN20btAlignedObjectArrayI20btMaterialPropertiesE10deallocateEv.exit, label %bb.i
+
+bb.i: ; preds = %_ZNK20btAlignedObjectArrayI20btMaterialPropertiesE4copyEiiPS0_.exit
+ %24 = getelementptr inbounds %struct.MaterialArray* %this, i32 0, i32 4 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %26 = bitcast %struct.btMaterialProperties* %22 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %26)
+ br label %bb2.i
+
+bb2.i: ; preds = %bb1.i, %bb.i
+ store %struct.btMaterialProperties* null, %struct.btMaterialProperties** %21, align 4
+ br label %_ZN20btAlignedObjectArrayI20btMaterialPropertiesE10deallocateEv.exit
+
+_ZN20btAlignedObjectArrayI20btMaterialPropertiesE10deallocateEv.exit: ; preds = %bb2.i, %_ZNK20btAlignedObjectArrayI20btMaterialPropertiesE4copyEiiPS0_.exit
+ %27 = getelementptr inbounds %struct.MaterialArray* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %27, align 4
+ store %struct.btMaterialProperties* %6, %struct.btMaterialProperties** %21, align 4
+ store i32 %_Count, i32* %0, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN34btTriangleIndexVertexMaterialArrayC1EiPiiiPfiiPhiS0_i(%struct.btTriangleIndexVertexMaterialArray* %this, i32 %numTriangles, i32* %triangleIndexBase, i32 %triangleIndexStride, i32 %numVertices, float* %vertexBase, i32 %vertexStride, i32 %numMaterials, i8* %materialBase, i32 %materialStride, i32* %triangleMaterialsBase, i32 %materialIndexStride) align 2 {
+entry:
+ tail call void @_ZN34btTriangleIndexVertexMaterialArrayC2EiPiiiPfiiPhiS0_i(%struct.btTriangleIndexVertexMaterialArray* %this, i32 %numTriangles, i32* %triangleIndexBase, i32 %triangleIndexStride, i32 %numVertices, float* %vertexBase, i32 %vertexStride, i32 %numMaterials, i8* %materialBase, i32 %materialStride, i32* %triangleMaterialsBase, i32 %materialIndexStride)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN14btTriangleMeshC2Ebb(%struct.btTriangleMesh* %this, i8 zeroext %use32bitIndices, i8 zeroext %use4componentVertices) align 2 {
+bb.i:
+ %0 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %5, align 4
+ %6 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=14]
+ store %struct.btIndexedMesh* null, %struct.btIndexedMesh** %6, align 4
+ %7 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 1, i32 1 ; [#uses=4]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ store i32 (...)** getelementptr inbounds ([17 x i32 (...)*]* @_ZTV14btTriangleMesh, i32 0, i32 2), i32 (...)*** %0, align 4
+ %10 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 4 ; [#uses=3]
+ store i8 1, i8* %10, align 4
+ %11 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 3 ; [#uses=4]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %11, align 4
+ %12 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ store i32 0, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=3]
+ store i8 1, i8* %14, align 4
+ %15 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 3 ; [#uses=4]
+ store float* null, float** %15, align 4
+ %16 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 1 ; [#uses=3]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 2 ; [#uses=2]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 4 ; [#uses=3]
+ store i8 1, i8* %18, align 4
+ %19 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 3 ; [#uses=4]
+ store i32* null, i32** %19, align 4
+ %20 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 1 ; [#uses=3]
+ store i32 0, i32* %20, align 4
+ %21 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 2 ; [#uses=2]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 4 ; [#uses=3]
+ store i8 1, i8* %22, align 4
+ %23 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 3 ; [#uses=4]
+ store i16* null, i16** %23, align 4
+ %24 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 1 ; [#uses=3]
+ store i32 0, i32* %24, align 4
+ %25 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 2 ; [#uses=2]
+ store i32 0, i32* %25, align 4
+ %26 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 5 ; [#uses=2]
+ store i8 %use32bitIndices, i8* %26, align 4
+ %27 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 6 ; [#uses=2]
+ store i8 %use4componentVertices, i8* %27, align 1
+ %28 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI13btIndexedMeshE7reserveEi(%struct.IndexedMeshArray* %29, i32 1) inlinehint
+ to label %invcont4 unwind label %lpad48
+
+invcont4: ; preds = %bb.i
+ %.pre.i = load i32* %7, align 4 ; [#uses=8]
+ %.pre = load %struct.btIndexedMesh** %6, align 4 ; [#uses=8]
+ %30 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i, i32 0 ; [#uses=1]
+ store i32 0, i32* %30, align 4
+ %31 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i, i32 1 ; [#uses=1]
+ store i8* null, i8** %31, align 4
+ %32 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i, i32 2 ; [#uses=1]
+ store i32 12, i32* %32, align 4
+ %33 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i, i32 3 ; [#uses=1]
+ store i32 0, i32* %33, align 4
+ %34 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i, i32 4 ; [#uses=1]
+ store i8* null, i8** %34, align 4
+ %35 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i, i32 5 ; [#uses=1]
+ store i32 16, i32* %35, align 4
+ %36 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i, i32 6 ; [#uses=1]
+ store i32 2, i32* %36, align 4
+ %37 = getelementptr inbounds %struct.btIndexedMesh* %.pre, i32 %.pre.i, i32 7 ; [#uses=1]
+ store i32 0, i32* %37, align 4
+ %38 = load i32* %7, align 4 ; [#uses=1]
+ %39 = add nsw i32 %38, 1 ; [#uses=1]
+ store i32 %39, i32* %7, align 4
+ %40 = load i8* %26, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %40, 0 ; [#uses=1]
+ %41 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=2]
+ br i1 %toBool, label %bb5, label %bb
+
+bb: ; preds = %invcont4
+ %42 = load i32* %20, align 4 ; [#uses=1]
+ %43 = sdiv i32 %42, 3 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btIndexedMesh* %41, i32 0, i32 0 ; [#uses=1]
+ store i32 %43, i32* %44, align 4
+ %45 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btIndexedMesh* %45, i32 0, i32 1 ; [#uses=1]
+ store i8* null, i8** %46, align 4
+ %47 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btIndexedMesh* %47, i32 0, i32 6 ; [#uses=1]
+ store i32 2, i32* %48, align 4
+ %49 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btIndexedMesh* %49, i32 0, i32 2 ; [#uses=1]
+ store i32 12, i32* %50, align 4
+ br label %bb6
+
+bb5: ; preds = %invcont4
+ %51 = load i32* %24, align 4 ; [#uses=1]
+ %52 = sdiv i32 %51, 3 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btIndexedMesh* %41, i32 0, i32 0 ; [#uses=1]
+ store i32 %52, i32* %53, align 4
+ %54 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btIndexedMesh* %54, i32 0, i32 1 ; [#uses=1]
+ store i8* null, i8** %55, align 4
+ %56 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btIndexedMesh* %56, i32 0, i32 6 ; [#uses=1]
+ store i32 3, i32* %57, align 4
+ %58 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btIndexedMesh* %58, i32 0, i32 2 ; [#uses=1]
+ store i32 6, i32* %59, align 4
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb
+ %60 = load i8* %27, align 1 ; [#uses=1]
+ %toBool7 = icmp eq i8 %60, 0 ; [#uses=1]
+ %61 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=2]
+ br i1 %toBool7, label %bb9, label %bb8
+
+bb8: ; preds = %bb6
+ %62 = load i32* %12, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btIndexedMesh* %61, i32 0, i32 3 ; [#uses=1]
+ store i32 %62, i32* %63, align 4
+ %64 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btIndexedMesh* %64, i32 0, i32 4 ; [#uses=1]
+ store i8* null, i8** %65, align 4
+ %66 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btIndexedMesh* %66, i32 0, i32 5 ; [#uses=1]
+ store i32 16, i32* %67, align 4
+ ret void
+
+bb9: ; preds = %bb6
+ %68 = load i32* %16, align 4 ; [#uses=1]
+ %69 = sdiv i32 %68, 3 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btIndexedMesh* %61, i32 0, i32 3 ; [#uses=1]
+ store i32 %69, i32* %70, align 4
+ %71 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btIndexedMesh* %71, i32 0, i32 4 ; [#uses=1]
+ store i8* null, i8** %72, align 4
+ %73 = load %struct.btIndexedMesh** %6, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btIndexedMesh* %73, i32 0, i32 5 ; [#uses=1]
+ store i32 12, i32* %74, align 4
+ ret void
+
+invcont31: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr49)
+ unreachable
+
+lpad48: ; preds = %bb.i
+ %eh_ptr49 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select51 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr49, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %75 = load i16** %23, align 4 ; [#uses=2]
+ %76 = icmp eq i16* %75, null ; [#uses=1]
+ br i1 %76, label %ppad74, label %bb.i.i.i93
+
+bb.i.i.i93: ; preds = %lpad48
+ %77 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i.i92 = icmp eq i8 %77, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i92, label %bb2.i.i.i95, label %bb1.i.i.i94
+
+bb1.i.i.i94: ; preds = %bb.i.i.i93
+ %78 = bitcast i16* %75 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %78)
+ to label %bb2.i.i.i95 unwind label %lpad52
+
+bb2.i.i.i95: ; preds = %bb1.i.i.i94, %bb.i.i.i93
+ store i16* null, i16** %23, align 4
+ br label %ppad74
+
+lpad52: ; preds = %bb1.i.i.i94
+ %eh_ptr53 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select55 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr53, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad56: ; preds = %bb1.i.i.i
+ %eh_ptr57 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select59 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr57, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad60: ; preds = %bb1.i.i.i84
+ %eh_ptr61 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select63 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr61, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad64: ; preds = %bb1.i.i.i89
+ %eh_ptr65 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select67 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr65, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad68: ; preds = %ppad
+ %eh_ptr69 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select71 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr69, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i90, %ppad72
+ store i8 1, i8* %10, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %11, align 4
+ store i32 0, i32* %12, align 4
+ store i32 0, i32* %13, align 4
+ %79 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN26btTriangleIndexVertexArrayD2Ev(%struct.btTriangleIndexVertexArray* %79)
+ to label %invcont31 unwind label %lpad68
+
+ppad72: ; preds = %bb2.i.i.i85, %ppad73
+ store i8 1, i8* %14, align 4
+ store float* null, float** %15, align 4
+ store i32 0, i32* %16, align 4
+ store i32 0, i32* %17, align 4
+ %80 = load %struct.btQuadWord** %11, align 4 ; [#uses=2]
+ %81 = icmp eq %struct.btQuadWord* %80, null ; [#uses=1]
+ br i1 %81, label %ppad, label %bb.i.i.i88
+
+bb.i.i.i88: ; preds = %ppad72
+ %82 = load i8* %10, align 4 ; [#uses=1]
+ %toBool.i.i.i87 = icmp eq i8 %82, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i87, label %bb2.i.i.i90, label %bb1.i.i.i89
+
+bb1.i.i.i89: ; preds = %bb.i.i.i88
+ %83 = bitcast %struct.btQuadWord* %80 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %83)
+ to label %bb2.i.i.i90 unwind label %lpad64
+
+bb2.i.i.i90: ; preds = %bb1.i.i.i89, %bb.i.i.i88
+ store %struct.btQuadWord* null, %struct.btQuadWord** %11, align 4
+ br label %ppad
+
+ppad73: ; preds = %bb2.i.i.i, %ppad74
+ store i8 1, i8* %18, align 4
+ store i32* null, i32** %19, align 4
+ store i32 0, i32* %20, align 4
+ store i32 0, i32* %21, align 4
+ %84 = load float** %15, align 4 ; [#uses=2]
+ %85 = icmp eq float* %84, null ; [#uses=1]
+ br i1 %85, label %ppad72, label %bb.i.i.i83
+
+bb.i.i.i83: ; preds = %ppad73
+ %86 = load i8* %14, align 4 ; [#uses=1]
+ %toBool.i.i.i82 = icmp eq i8 %86, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i82, label %bb2.i.i.i85, label %bb1.i.i.i84
+
+bb1.i.i.i84: ; preds = %bb.i.i.i83
+ %87 = bitcast float* %84 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %87)
+ to label %bb2.i.i.i85 unwind label %lpad60
+
+bb2.i.i.i85: ; preds = %bb1.i.i.i84, %bb.i.i.i83
+ store float* null, float** %15, align 4
+ br label %ppad72
+
+ppad74: ; preds = %bb2.i.i.i95, %lpad48
+ store i8 1, i8* %22, align 4
+ store i16* null, i16** %23, align 4
+ store i32 0, i32* %24, align 4
+ store i32 0, i32* %25, align 4
+ %88 = load i32** %19, align 4 ; [#uses=2]
+ %89 = icmp eq i32* %88, null ; [#uses=1]
+ br i1 %89, label %ppad73, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %ppad74
+ %90 = load i8* %18, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %90, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %91 = bitcast i32* %88 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %91)
+ to label %bb2.i.i.i unwind label %lpad56
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %19, align 4
+ br label %ppad73
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN14btTriangleMesh19preallocateVerticesEi(%struct.btTriangleMesh* nocapture %this, i32 %numverts) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN14btTriangleMesh18preallocateIndicesEi(%struct.btTriangleMesh* nocapture %this, i32 %numindices) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=0]
+define i32 @_ZNK14btTriangleMesh15getNumTrianglesEv(%struct.btTriangleMesh* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 5 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ br label %bb2
+
+bb1: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %.0.in.in = phi i32* [ %2, %bb ], [ %3, %bb1 ] ; [#uses=1]
+ %.0.in = load i32* %.0.in.in, align 4 ; [#uses=1]
+ %.0 = sdiv i32 %.0.in, 3 ; [#uses=1]
+ ret i32 %.0
+}
+
+; [#uses=3]
+define i32 @_ZN14btTriangleMesh15findOrAddVertexERK9btVector3b(%struct.btTriangleMesh* %this, %struct.btQuadWord* nocapture %vertex, i8 zeroext %removeDuplicateVertices) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load i8* %0, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ %toBool1 = icmp ne i8 %removeDuplicateVertices, 0 ; [#uses=2]
+ br i1 %toBool, label %bb10, label %bb
+
+bb: ; preds = %entry
+ br i1 %toBool1, label %bb7.preheader, label %bb9
+
+bb7.preheader: ; preds = %bb
+ %2 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 7 ; [#uses=1]
+ br label %bb7
+
+bb3: ; preds = %bb7
+ %9 = load %struct.btQuadWord** %4, align 4 ; [#uses=3]
+ %scevgep92 = getelementptr %struct.btQuadWord* %9, i32 %27, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %scevgep92, align 4 ; [#uses=1]
+ %11 = load float* %5, align 4 ; [#uses=1]
+ %12 = fsub float %10, %11 ; [#uses=2]
+ %scevgep91 = getelementptr %struct.btQuadWord* %9, i32 %27, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %scevgep91, align 4 ; [#uses=1]
+ %14 = load float* %6, align 4 ; [#uses=1]
+ %15 = fsub float %13, %14 ; [#uses=2]
+ %scevgep90 = getelementptr inbounds %struct.btQuadWord* %9, i32 %27, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %scevgep90, align 4 ; [#uses=1]
+ %17 = load float* %7, align 4 ; [#uses=1]
+ %18 = fsub float %16, %17 ; [#uses=2]
+ %19 = fmul float %18, %18 ; [#uses=1]
+ %20 = fmul float %15, %15 ; [#uses=1]
+ %21 = fadd float %19, %20 ; [#uses=1]
+ %22 = fmul float %12, %12 ; [#uses=1]
+ %23 = fadd float %21, %22 ; [#uses=1]
+ %24 = load float* %8, align 4 ; [#uses=1]
+ %25 = fcmp ugt float %23, %24 ; [#uses=1]
+ br i1 %25, label %bb6, label %bb21
+
+bb6: ; preds = %bb3
+ %26 = add nsw i32 %27, 1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb7.preheader
+ %27 = phi i32 [ %26, %bb6 ], [ 0, %bb7.preheader ] ; [#uses=6]
+ %28 = icmp sgt i32 %3, %27 ; [#uses=1]
+ br i1 %28, label %bb3, label %bb9
+
+bb9: ; preds = %bb7, %bb
+ %29 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=2]
+ %30 = load %struct.btIndexedMesh** %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btIndexedMesh* %30, i32 0, i32 3 ; [#uses=2]
+ %32 = load i32* %31, align 4 ; [#uses=1]
+ %33 = add nsw i32 %32, 1 ; [#uses=1]
+ store i32 %33, i32* %31, align 4
+ %34 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI9btVector3E9push_backERKS0_(%"struct.btAlignedObjectArray<btVector3>"* %34, %struct.btQuadWord* %vertex) inlinehint
+ %35 = load %struct.btIndexedMesh** %29, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %37 = load %struct.btQuadWord** %36, align 4 ; [#uses=1]
+ %38 = bitcast %struct.btQuadWord* %37 to i8* ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btIndexedMesh* %35, i32 0, i32 4 ; [#uses=1]
+ store i8* %38, i8** %39, align 4
+ %40 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %41 = load i32* %40, align 4 ; [#uses=1]
+ %42 = add nsw i32 %41, -1 ; [#uses=1]
+ ret i32 %42
+
+bb10: ; preds = %entry
+ %43 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 1 ; [#uses=2]
+ %44 = load i32* %43, align 4 ; [#uses=3]
+ br i1 %toBool1, label %bb18.preheader, label %bb20
+
+bb18.preheader: ; preds = %bb10
+ %45 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 2 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 1 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 0 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 7 ; [#uses=1]
+ br label %bb18
+
+bb14: ; preds = %bb18
+ %tmp103 = add i32 %i13.0, 2 ; [#uses=1]
+ %tmp = add i32 %i13.0, 1 ; [#uses=1]
+ %50 = load float** %45, align 4 ; [#uses=3]
+ %scevgep105 = getelementptr float* %50, i32 %i13.0 ; [#uses=1]
+ %51 = load float* %scevgep105, align 4 ; [#uses=1]
+ %scevgep102 = getelementptr float* %50, i32 %tmp ; [#uses=1]
+ %52 = load float* %scevgep102, align 4 ; [#uses=1]
+ %scevgep104 = getelementptr float* %50, i32 %tmp103 ; [#uses=1]
+ %53 = load float* %scevgep104, align 4 ; [#uses=1]
+ %54 = load float* %46, align 4 ; [#uses=1]
+ %55 = fsub float %53, %54 ; [#uses=2]
+ %56 = load float* %47, align 4 ; [#uses=1]
+ %57 = fsub float %52, %56 ; [#uses=2]
+ %58 = load float* %48, align 4 ; [#uses=1]
+ %59 = fsub float %51, %58 ; [#uses=2]
+ %60 = fmul float %59, %59 ; [#uses=1]
+ %61 = fmul float %57, %57 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=1]
+ %63 = fmul float %55, %55 ; [#uses=1]
+ %64 = fadd float %62, %63 ; [#uses=1]
+ %65 = load float* %49, align 4 ; [#uses=1]
+ %66 = fcmp ugt float %64, %65 ; [#uses=1]
+ br i1 %66, label %bb17, label %bb16
+
+bb16: ; preds = %bb14
+ %67 = sdiv i32 %i13.0, 3 ; [#uses=1]
+ ret i32 %67
+
+bb17: ; preds = %bb14
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb18
+
+bb18: ; preds = %bb17, %bb18.preheader
+ %indvar = phi i32 [ 0, %bb18.preheader ], [ %indvar.next, %bb17 ] ; [#uses=2]
+ %i13.0 = mul i32 %indvar, 3 ; [#uses=5]
+ %68 = icmp sgt i32 %44, %i13.0 ; [#uses=1]
+ br i1 %68, label %bb14, label %bb20.loopexit
+
+bb20.loopexit: ; preds = %bb18
+ %.pre108 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ br label %bb20
+
+bb20: ; preds = %bb20.loopexit, %bb10
+ %.pre-phi = phi i32* [ %.pre108, %bb20.loopexit ], [ %43, %bb10 ] ; [#uses=13]
+ %69 = phi i32 [ %44, %bb20.loopexit ], [ %44, %bb10 ] ; [#uses=6]
+ %70 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 0 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 2 ; [#uses=6]
+ %73 = load i32* %72, align 4 ; [#uses=4]
+ %74 = icmp eq i32 %73, %69 ; [#uses=1]
+ br i1 %74, label %bb.i51, label %bb1.i73
+
+bb.i51: ; preds = %bb20
+ %75 = icmp eq i32 %69, 0 ; [#uses=1]
+ %76 = shl i32 %69, 1 ; [#uses=1]
+ %iftmp.138.0.i.i50 = select i1 %75, i32 1, i32 %76 ; [#uses=5]
+ %77 = icmp slt i32 %73, %iftmp.138.0.i.i50 ; [#uses=1]
+ br i1 %77, label %bb.i.i52, label %bb1.i73
+
+bb.i.i52: ; preds = %bb.i51
+ %78 = icmp eq i32 %iftmp.138.0.i.i50, 0 ; [#uses=1]
+ br i1 %78, label %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i56, label %bb.i2.i.i55
+
+bb.i2.i.i55: ; preds = %bb.i.i52
+ %79 = shl i32 %iftmp.138.0.i.i50, 2 ; [#uses=1]
+ %80 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %79, i32 16) ; [#uses=1]
+ %phitmp.i.i53 = bitcast i8* %80 to float* ; [#uses=1]
+ %.pre.i54 = load i32* %.pre-phi, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i56
+
+_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i56: ; preds = %bb.i2.i.i55, %bb.i.i52
+ %81 = phi i32 [ %.pre.i54, %bb.i2.i.i55 ], [ %69, %bb.i.i52 ] ; [#uses=2]
+ %82 = phi float* [ %phitmp.i.i53, %bb.i2.i.i55 ], [ null, %bb.i.i52 ] ; [#uses=2]
+ %83 = icmp sgt i32 %81, 0 ; [#uses=1]
+ br i1 %83, label %bb.nph.i.i.i57, label %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i66
+
+bb.nph.i.i.i57: ; preds = %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i56
+ %84 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i60
+
+bb.i4.i.i60: ; preds = %bb3.i.i.i65, %bb.nph.i.i.i57
+ %indvar.i.i.i58 = phi i32 [ 0, %bb.nph.i.i.i57 ], [ %indvar.next.i.i.i63, %bb3.i.i.i65 ] ; [#uses=3]
+ %scevgep.i.i.i59 = getelementptr float* %82, i32 %indvar.i.i.i58 ; [#uses=2]
+ %85 = icmp eq float* %scevgep.i.i.i59, null ; [#uses=1]
+ br i1 %85, label %bb3.i.i.i65, label %bb1.i5.i.i62
+
+bb1.i5.i.i62: ; preds = %bb.i4.i.i60
+ %86 = load float** %84, align 4 ; [#uses=1]
+ %scevgep8.i.i.i61 = getelementptr float* %86, i32 %indvar.i.i.i58 ; [#uses=1]
+ %87 = load float* %scevgep8.i.i.i61, align 4 ; [#uses=1]
+ store float %87, float* %scevgep.i.i.i59, align 4
+ br label %bb3.i.i.i65
+
+bb3.i.i.i65: ; preds = %bb1.i5.i.i62, %bb.i4.i.i60
+ %indvar.next.i.i.i63 = add i32 %indvar.i.i.i58, 1 ; [#uses=2]
+ %exitcond98 = icmp eq i32 %indvar.next.i.i.i63, %81 ; [#uses=1]
+ br i1 %exitcond98, label %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i66, label %bb.i4.i.i60
+
+_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i66: ; preds = %bb3.i.i.i65, %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i56
+ %88 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %89 = load float** %88, align 4 ; [#uses=2]
+ %90 = icmp eq float* %89, null ; [#uses=1]
+ br i1 %90, label %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i72, label %bb.i.i.i68
+
+bb.i.i.i68: ; preds = %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i66
+ %91 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %92 = load i8* %91, align 4 ; [#uses=1]
+ %toBool.i.i.i67 = icmp eq i8 %92, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i67, label %bb2.i.i.i70, label %bb1.i.i.i69
+
+bb1.i.i.i69: ; preds = %bb.i.i.i68
+ %93 = bitcast float* %89 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %93)
+ br label %bb2.i.i.i70
+
+bb2.i.i.i70: ; preds = %bb1.i.i.i69, %bb.i.i.i68
+ store float* null, float** %88, align 4
+ br label %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i72
+
+_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i72: ; preds = %bb2.i.i.i70, %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i66
+ %94 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %94, align 4
+ store float* %82, float** %88, align 4
+ store i32 %iftmp.138.0.i.i50, i32* %72, align 4
+ %.pre5.i71 = load i32* %.pre-phi, align 4 ; [#uses=1]
+ br label %bb1.i73
+
+bb1.i73: ; preds = %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i72, %bb.i51, %bb20
+ %95 = phi i32 [ %iftmp.138.0.i.i50, %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i72 ], [ %73, %bb20 ], [ %73, %bb.i51 ] ; [#uses=1]
+ %96 = phi i32 [ %.pre5.i71, %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i72 ], [ %69, %bb20 ], [ %69, %bb.i51 ] ; [#uses=2]
+ %97 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 3 ; [#uses=12]
+ %98 = load float** %97, align 4 ; [#uses=1]
+ %99 = getelementptr inbounds float* %98, i32 %96 ; [#uses=2]
+ %100 = icmp eq float* %99, null ; [#uses=1]
+ br i1 %100, label %_ZN20btAlignedObjectArrayIfE9push_backERKf.exit76, label %bb2.i75
+
+bb2.i75: ; preds = %bb1.i73
+ store float %71, float* %99, align 4
+ %.pre6.i74 = load i32* %.pre-phi, align 4 ; [#uses=1]
+ %.pre = load i32* %72, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIfE9push_backERKf.exit76
+
+_ZN20btAlignedObjectArrayIfE9push_backERKf.exit76: ; preds = %bb2.i75, %bb1.i73
+ %101 = phi i32 [ %95, %bb1.i73 ], [ %.pre, %bb2.i75 ] ; [#uses=4]
+ %102 = phi i32 [ %96, %bb1.i73 ], [ %.pre6.i74, %bb2.i75 ] ; [#uses=1]
+ %103 = add nsw i32 %102, 1 ; [#uses=7]
+ store i32 %103, i32* %.pre-phi, align 4
+ %104 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 1 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ %106 = icmp eq i32 %101, %103 ; [#uses=1]
+ br i1 %106, label %bb.i24, label %bb1.i46
+
+bb.i24: ; preds = %_ZN20btAlignedObjectArrayIfE9push_backERKf.exit76
+ %107 = icmp eq i32 %103, 0 ; [#uses=1]
+ %108 = shl i32 %103, 1 ; [#uses=1]
+ %iftmp.138.0.i.i23 = select i1 %107, i32 1, i32 %108 ; [#uses=5]
+ %109 = icmp slt i32 %101, %iftmp.138.0.i.i23 ; [#uses=1]
+ br i1 %109, label %bb.i.i25, label %bb1.i46
+
+bb.i.i25: ; preds = %bb.i24
+ %110 = icmp eq i32 %iftmp.138.0.i.i23, 0 ; [#uses=1]
+ br i1 %110, label %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i29, label %bb.i2.i.i28
+
+bb.i2.i.i28: ; preds = %bb.i.i25
+ %111 = shl i32 %iftmp.138.0.i.i23, 2 ; [#uses=1]
+ %112 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %111, i32 16) ; [#uses=1]
+ %phitmp.i.i26 = bitcast i8* %112 to float* ; [#uses=1]
+ %.pre.i27 = load i32* %.pre-phi, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i29
+
+_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i29: ; preds = %bb.i2.i.i28, %bb.i.i25
+ %113 = phi i32 [ %.pre.i27, %bb.i2.i.i28 ], [ %103, %bb.i.i25 ] ; [#uses=2]
+ %114 = phi float* [ %phitmp.i.i26, %bb.i2.i.i28 ], [ null, %bb.i.i25 ] ; [#uses=2]
+ %115 = icmp sgt i32 %113, 0 ; [#uses=1]
+ br i1 %115, label %bb.i4.i.i33, label %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i39
+
+bb.i4.i.i33: ; preds = %bb3.i.i.i38, %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i29
+ %indvar.i.i.i31 = phi i32 [ %indvar.next.i.i.i36, %bb3.i.i.i38 ], [ 0, %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i29 ] ; [#uses=3]
+ %scevgep.i.i.i32 = getelementptr float* %114, i32 %indvar.i.i.i31 ; [#uses=2]
+ %116 = icmp eq float* %scevgep.i.i.i32, null ; [#uses=1]
+ br i1 %116, label %bb3.i.i.i38, label %bb1.i5.i.i35
+
+bb1.i5.i.i35: ; preds = %bb.i4.i.i33
+ %117 = load float** %97, align 4 ; [#uses=1]
+ %scevgep8.i.i.i34 = getelementptr float* %117, i32 %indvar.i.i.i31 ; [#uses=1]
+ %118 = load float* %scevgep8.i.i.i34, align 4 ; [#uses=1]
+ store float %118, float* %scevgep.i.i.i32, align 4
+ br label %bb3.i.i.i38
+
+bb3.i.i.i38: ; preds = %bb1.i5.i.i35, %bb.i4.i.i33
+ %indvar.next.i.i.i36 = add i32 %indvar.i.i.i31, 1 ; [#uses=2]
+ %exitcond95 = icmp eq i32 %indvar.next.i.i.i36, %113 ; [#uses=1]
+ br i1 %exitcond95, label %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i39, label %bb.i4.i.i33
+
+_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i39: ; preds = %bb3.i.i.i38, %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i29
+ %119 = load float** %97, align 4 ; [#uses=2]
+ %120 = icmp eq float* %119, null ; [#uses=1]
+ br i1 %120, label %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i45, label %bb.i.i.i41
+
+bb.i.i.i41: ; preds = %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i39
+ %121 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %122 = load i8* %121, align 4 ; [#uses=1]
+ %toBool.i.i.i40 = icmp eq i8 %122, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i40, label %bb2.i.i.i43, label %bb1.i.i.i42
+
+bb1.i.i.i42: ; preds = %bb.i.i.i41
+ %123 = bitcast float* %119 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %123)
+ br label %bb2.i.i.i43
+
+bb2.i.i.i43: ; preds = %bb1.i.i.i42, %bb.i.i.i41
+ store float* null, float** %97, align 4
+ br label %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i45
+
+_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i45: ; preds = %bb2.i.i.i43, %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i39
+ %124 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %124, align 4
+ store float* %114, float** %97, align 4
+ store i32 %iftmp.138.0.i.i23, i32* %72, align 4
+ %.pre5.i44 = load i32* %.pre-phi, align 4 ; [#uses=1]
+ br label %bb1.i46
+
+bb1.i46: ; preds = %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i45, %bb.i24, %_ZN20btAlignedObjectArrayIfE9push_backERKf.exit76
+ %125 = phi i32 [ %iftmp.138.0.i.i23, %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i45 ], [ %101, %_ZN20btAlignedObjectArrayIfE9push_backERKf.exit76 ], [ %101, %bb.i24 ] ; [#uses=1]
+ %126 = phi i32 [ %.pre5.i44, %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i45 ], [ %103, %_ZN20btAlignedObjectArrayIfE9push_backERKf.exit76 ], [ %103, %bb.i24 ] ; [#uses=2]
+ %127 = load float** %97, align 4 ; [#uses=1]
+ %128 = getelementptr inbounds float* %127, i32 %126 ; [#uses=2]
+ %129 = icmp eq float* %128, null ; [#uses=1]
+ br i1 %129, label %_ZN20btAlignedObjectArrayIfE9push_backERKf.exit49, label %bb2.i48
+
+bb2.i48: ; preds = %bb1.i46
+ store float %105, float* %128, align 4
+ %.pre6.i47 = load i32* %.pre-phi, align 4 ; [#uses=1]
+ %.pre106 = load i32* %72, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIfE9push_backERKf.exit49
+
+_ZN20btAlignedObjectArrayIfE9push_backERKf.exit49: ; preds = %bb2.i48, %bb1.i46
+ %130 = phi i32 [ %125, %bb1.i46 ], [ %.pre106, %bb2.i48 ] ; [#uses=2]
+ %131 = phi i32 [ %126, %bb1.i46 ], [ %.pre6.i47, %bb2.i48 ] ; [#uses=1]
+ %132 = add nsw i32 %131, 1 ; [#uses=7]
+ store i32 %132, i32* %.pre-phi, align 4
+ %133 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 2 ; [#uses=1]
+ %134 = load float* %133, align 4 ; [#uses=1]
+ %135 = icmp eq i32 %130, %132 ; [#uses=1]
+ br i1 %135, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %_ZN20btAlignedObjectArrayIfE9push_backERKf.exit49
+ %136 = icmp eq i32 %132, 0 ; [#uses=1]
+ %137 = shl i32 %132, 1 ; [#uses=1]
+ %iftmp.138.0.i.i = select i1 %136, i32 1, i32 %137 ; [#uses=4]
+ %138 = icmp slt i32 %130, %iftmp.138.0.i.i ; [#uses=1]
+ br i1 %138, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %139 = icmp eq i32 %iftmp.138.0.i.i, 0 ; [#uses=1]
+ br i1 %139, label %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %140 = shl i32 %iftmp.138.0.i.i, 2 ; [#uses=1]
+ %141 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %140, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %141 to float* ; [#uses=1]
+ %.pre.i = load i32* %.pre-phi, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %142 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %132, %bb.i.i ] ; [#uses=2]
+ %143 = phi float* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %144 = icmp sgt i32 %142, 0 ; [#uses=1]
+ br i1 %144, label %bb.i4.i.i, label %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i
+ %indvar.i.i.i = phi i32 [ %indvar.next.i.i.i, %bb3.i.i.i ], [ 0, %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr float* %143, i32 %indvar.i.i.i ; [#uses=2]
+ %145 = icmp eq float* %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %145, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %146 = load float** %97, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr float* %146, i32 %indvar.i.i.i ; [#uses=1]
+ %147 = load float* %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store float %147, float* %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %142 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIfE8allocateEi.exit.i.i
+ %148 = load float** %97, align 4 ; [#uses=2]
+ %149 = icmp eq float* %148, null ; [#uses=1]
+ br i1 %149, label %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i
+ %150 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %151 = load i8* %150, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %151, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %152 = bitcast float* %148 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %152)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store float* null, float** %97, align 4
+ br label %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIfE4copyEiiPf.exit.i.i
+ %153 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %153, align 4
+ store float* %143, float** %97, align 4
+ store i32 %iftmp.138.0.i.i, i32* %72, align 4
+ %.pre5.i = load i32* %.pre-phi, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i, %bb.i, %_ZN20btAlignedObjectArrayIfE9push_backERKf.exit49
+ %154 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIfE10deallocateEv.exit.i.i ], [ %132, %_ZN20btAlignedObjectArrayIfE9push_backERKf.exit49 ], [ %132, %bb.i ] ; [#uses=2]
+ %155 = load float** %97, align 4 ; [#uses=1]
+ %156 = getelementptr inbounds float* %155, i32 %154 ; [#uses=2]
+ %157 = icmp eq float* %156, null ; [#uses=1]
+ br i1 %157, label %_ZN20btAlignedObjectArrayIfE9push_backERKf.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store float %134, float* %156, align 4
+ %.pre6.i = load i32* %.pre-phi, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIfE9push_backERKf.exit
+
+_ZN20btAlignedObjectArrayIfE9push_backERKf.exit: ; preds = %bb2.i, %bb1.i
+ %158 = phi i32 [ %154, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %159 = add nsw i32 %158, 1 ; [#uses=1]
+ store i32 %159, i32* %.pre-phi, align 4
+ %160 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=2]
+ %161 = load %struct.btIndexedMesh** %160, align 4 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btIndexedMesh* %161, i32 0, i32 3 ; [#uses=2]
+ %163 = load i32* %162, align 4 ; [#uses=1]
+ %164 = add nsw i32 %163, 1 ; [#uses=1]
+ store i32 %164, i32* %162, align 4
+ %165 = load %struct.btIndexedMesh** %160, align 4 ; [#uses=1]
+ %166 = load float** %97, align 4 ; [#uses=1]
+ %167 = bitcast float* %166 to i8* ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btIndexedMesh* %165, i32 0, i32 4 ; [#uses=1]
+ store i8* %167, i8** %168, align 4
+ %169 = load i32* %.pre-phi, align 4 ; [#uses=1]
+ %170 = sdiv i32 %169, 3 ; [#uses=1]
+ %171 = add nsw i32 %170, -1 ; [#uses=1]
+ ret i32 %171
+
+bb21: ; preds = %bb3
+ ret i32 %27
+}
+
+; [#uses=3]
+define void @_ZN14btTriangleMesh8addIndexEi(%struct.btTriangleMesh* nocapture %this, i32 %index) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 5 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 1 ; [#uses=5]
+ %3 = load i32* %2, align 4 ; [#uses=6]
+ %4 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 2 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=2]
+ %6 = icmp eq i32 %5, %3 ; [#uses=1]
+ br i1 %6, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb
+ %7 = icmp eq i32 %3, 0 ; [#uses=1]
+ %8 = shl i32 %3, 1 ; [#uses=1]
+ %iftmp.132.0.i.i = select i1 %7, i32 1, i32 %8 ; [#uses=4]
+ %9 = icmp slt i32 %5, %iftmp.132.0.i.i ; [#uses=1]
+ br i1 %9, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %10 = icmp eq i32 %iftmp.132.0.i.i, 0 ; [#uses=1]
+ br i1 %10, label %_ZN20btAlignedObjectArrayIjE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %11 = shl i32 %iftmp.132.0.i.i, 2 ; [#uses=1]
+ %12 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %11, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %12 to i32* ; [#uses=1]
+ %.pre.i = load i32* %2, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIjE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIjE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %13 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %3, %bb.i.i ] ; [#uses=2]
+ %14 = phi i32* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %15 = icmp sgt i32 %13, 0 ; [#uses=1]
+ br i1 %15, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayIjE4copyEiiPj.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIjE8allocateEi.exit.i.i
+ %16 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr i32* %14, i32 %indvar.i.i.i ; [#uses=2]
+ %17 = icmp eq i32* %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %17, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %18 = load i32** %16, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr i32* %18, i32 %indvar.i.i.i ; [#uses=1]
+ %19 = load i32* %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store i32 %19, i32* %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %13 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIjE4copyEiiPj.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIjE4copyEiiPj.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIjE8allocateEi.exit.i.i
+ %20 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %21 = load i32** %20, align 4 ; [#uses=2]
+ %22 = icmp eq i32* %21, null ; [#uses=1]
+ br i1 %22, label %_ZN20btAlignedObjectArrayIjE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIjE4copyEiiPj.exit.i.i
+ %23 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %25 = bitcast i32* %21 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %25)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %20, align 4
+ br label %_ZN20btAlignedObjectArrayIjE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIjE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIjE4copyEiiPj.exit.i.i
+ %26 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %26, align 4
+ store i32* %14, i32** %20, align 4
+ store i32 %iftmp.132.0.i.i, i32* %4, align 4
+ %.pre5.i = load i32* %2, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIjE10deallocateEv.exit.i.i, %bb.i, %bb
+ %27 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIjE10deallocateEv.exit.i.i ], [ %3, %bb ], [ %3, %bb.i ] ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 3 ; [#uses=2]
+ %29 = load i32** %28, align 4 ; [#uses=2]
+ %30 = getelementptr inbounds i32* %29, i32 %27 ; [#uses=2]
+ %31 = icmp eq i32* %30, null ; [#uses=1]
+ br i1 %31, label %_ZN20btAlignedObjectArrayIjE9push_backERKj.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store i32 %index, i32* %30, align 4
+ %.pre6.i = load i32* %2, align 4 ; [#uses=1]
+ %.pre26 = load i32** %28, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIjE9push_backERKj.exit
+
+_ZN20btAlignedObjectArrayIjE9push_backERKj.exit: ; preds = %bb2.i, %bb1.i
+ %32 = phi i32* [ %29, %bb1.i ], [ %.pre26, %bb2.i ] ; [#uses=1]
+ %33 = phi i32 [ %27, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %34 = add nsw i32 %33, 1 ; [#uses=1]
+ store i32 %34, i32* %2, align 4
+ %35 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ %36 = load %struct.btIndexedMesh** %35, align 4 ; [#uses=1]
+ %37 = bitcast i32* %32 to i8* ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btIndexedMesh* %36, i32 0, i32 1 ; [#uses=1]
+ store i8* %37, i8** %38, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %39 = trunc i32 %index to i16 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 1 ; [#uses=5]
+ %41 = load i32* %40, align 4 ; [#uses=6]
+ %42 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 2 ; [#uses=2]
+ %43 = load i32* %42, align 4 ; [#uses=2]
+ %44 = icmp eq i32 %43, %41 ; [#uses=1]
+ br i1 %44, label %bb.i3, label %bb1.i22
+
+bb.i3: ; preds = %bb1
+ %45 = icmp eq i32 %41, 0 ; [#uses=1]
+ %46 = shl i32 %41, 1 ; [#uses=1]
+ %iftmp.134.0.i.i = select i1 %45, i32 1, i32 %46 ; [#uses=4]
+ %47 = icmp slt i32 %43, %iftmp.134.0.i.i ; [#uses=1]
+ br i1 %47, label %bb.i.i4, label %bb1.i22
+
+bb.i.i4: ; preds = %bb.i3
+ %48 = icmp eq i32 %iftmp.134.0.i.i, 0 ; [#uses=1]
+ br i1 %48, label %_ZN20btAlignedObjectArrayItE8allocateEi.exit.i.i, label %bb.i2.i.i7
+
+bb.i2.i.i7: ; preds = %bb.i.i4
+ %49 = shl i32 %iftmp.134.0.i.i, 1 ; [#uses=1]
+ %50 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %49, i32 16) ; [#uses=1]
+ %phitmp.i.i5 = bitcast i8* %50 to i16* ; [#uses=1]
+ %.pre.i6 = load i32* %40, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayItE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayItE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i7, %bb.i.i4
+ %51 = phi i32 [ %.pre.i6, %bb.i2.i.i7 ], [ %41, %bb.i.i4 ] ; [#uses=2]
+ %52 = phi i16* [ %phitmp.i.i5, %bb.i2.i.i7 ], [ null, %bb.i.i4 ] ; [#uses=2]
+ %53 = icmp sgt i32 %51, 0 ; [#uses=1]
+ br i1 %53, label %bb.nph.i.i.i8, label %_ZNK20btAlignedObjectArrayItE4copyEiiPt.exit.i.i
+
+bb.nph.i.i.i8: ; preds = %_ZN20btAlignedObjectArrayItE8allocateEi.exit.i.i
+ %54 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i11
+
+bb.i4.i.i11: ; preds = %bb3.i.i.i16, %bb.nph.i.i.i8
+ %indvar.i.i.i9 = phi i32 [ 0, %bb.nph.i.i.i8 ], [ %indvar.next.i.i.i14, %bb3.i.i.i16 ] ; [#uses=3]
+ %scevgep.i.i.i10 = getelementptr i16* %52, i32 %indvar.i.i.i9 ; [#uses=2]
+ %55 = icmp eq i16* %scevgep.i.i.i10, null ; [#uses=1]
+ br i1 %55, label %bb3.i.i.i16, label %bb1.i5.i.i13
+
+bb1.i5.i.i13: ; preds = %bb.i4.i.i11
+ %56 = load i16** %54, align 4 ; [#uses=1]
+ %scevgep8.i.i.i12 = getelementptr i16* %56, i32 %indvar.i.i.i9 ; [#uses=1]
+ %57 = load i16* %scevgep8.i.i.i12, align 2 ; [#uses=1]
+ store i16 %57, i16* %scevgep.i.i.i10, align 2
+ br label %bb3.i.i.i16
+
+bb3.i.i.i16: ; preds = %bb1.i5.i.i13, %bb.i4.i.i11
+ %indvar.next.i.i.i14 = add i32 %indvar.i.i.i9, 1 ; [#uses=2]
+ %exitcond25 = icmp eq i32 %indvar.next.i.i.i14, %51 ; [#uses=1]
+ br i1 %exitcond25, label %_ZNK20btAlignedObjectArrayItE4copyEiiPt.exit.i.i, label %bb.i4.i.i11
+
+_ZNK20btAlignedObjectArrayItE4copyEiiPt.exit.i.i: ; preds = %bb3.i.i.i16, %_ZN20btAlignedObjectArrayItE8allocateEi.exit.i.i
+ %58 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %59 = load i16** %58, align 4 ; [#uses=2]
+ %60 = icmp eq i16* %59, null ; [#uses=1]
+ br i1 %60, label %_ZN20btAlignedObjectArrayItE10deallocateEv.exit.i.i, label %bb.i.i.i18
+
+bb.i.i.i18: ; preds = %_ZNK20btAlignedObjectArrayItE4copyEiiPt.exit.i.i
+ %61 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %62 = load i8* %61, align 4 ; [#uses=1]
+ %toBool.i.i.i17 = icmp eq i8 %62, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i17, label %bb2.i.i.i20, label %bb1.i.i.i19
+
+bb1.i.i.i19: ; preds = %bb.i.i.i18
+ %63 = bitcast i16* %59 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %63)
+ br label %bb2.i.i.i20
+
+bb2.i.i.i20: ; preds = %bb1.i.i.i19, %bb.i.i.i18
+ store i16* null, i16** %58, align 4
+ br label %_ZN20btAlignedObjectArrayItE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayItE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i20, %_ZNK20btAlignedObjectArrayItE4copyEiiPt.exit.i.i
+ %64 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %64, align 4
+ store i16* %52, i16** %58, align 4
+ store i32 %iftmp.134.0.i.i, i32* %42, align 4
+ %.pre5.i21 = load i32* %40, align 4 ; [#uses=1]
+ br label %bb1.i22
+
+bb1.i22: ; preds = %_ZN20btAlignedObjectArrayItE10deallocateEv.exit.i.i, %bb.i3, %bb1
+ %65 = phi i32 [ %.pre5.i21, %_ZN20btAlignedObjectArrayItE10deallocateEv.exit.i.i ], [ %41, %bb1 ], [ %41, %bb.i3 ] ; [#uses=2]
+ %66 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 3 ; [#uses=2]
+ %67 = load i16** %66, align 4 ; [#uses=2]
+ %68 = getelementptr inbounds i16* %67, i32 %65 ; [#uses=2]
+ %69 = icmp eq i16* %68, null ; [#uses=1]
+ br i1 %69, label %_ZN20btAlignedObjectArrayItE9push_backERKt.exit, label %bb2.i24
+
+bb2.i24: ; preds = %bb1.i22
+ store i16 %39, i16* %68, align 2
+ %.pre6.i23 = load i32* %40, align 4 ; [#uses=1]
+ %.pre = load i16** %66, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayItE9push_backERKt.exit
+
+_ZN20btAlignedObjectArrayItE9push_backERKt.exit: ; preds = %bb2.i24, %bb1.i22
+ %70 = phi i16* [ %67, %bb1.i22 ], [ %.pre, %bb2.i24 ] ; [#uses=1]
+ %71 = phi i32 [ %65, %bb1.i22 ], [ %.pre6.i23, %bb2.i24 ] ; [#uses=1]
+ %72 = add nsw i32 %71, 1 ; [#uses=1]
+ store i32 %72, i32* %40, align 4
+ %73 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ %74 = load %struct.btIndexedMesh** %73, align 4 ; [#uses=1]
+ %75 = bitcast i16* %70 to i8* ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btIndexedMesh* %74, i32 0, i32 1 ; [#uses=1]
+ store i8* %75, i8** %76, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN14btTriangleMesh11addTriangleERK9btVector3S2_S2_b(%struct.btTriangleMesh* %this, %struct.btQuadWord* nocapture %vertex0, %struct.btQuadWord* nocapture %vertex1, %struct.btQuadWord* nocapture %vertex2, i8 zeroext %removeDuplicateVertices) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ %1 = load %struct.btIndexedMesh** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btIndexedMesh* %1, i32 0, i32 0 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = add nsw i32 %3, 1 ; [#uses=1]
+ store i32 %4, i32* %2, align 4
+ %5 = tail call i32 @_ZN14btTriangleMesh15findOrAddVertexERK9btVector3b(%struct.btTriangleMesh* %this, %struct.btQuadWord* %vertex0, i8 zeroext %removeDuplicateVertices) ; [#uses=1]
+ tail call void @_ZN14btTriangleMesh8addIndexEi(%struct.btTriangleMesh* %this, i32 %5)
+ %6 = tail call i32 @_ZN14btTriangleMesh15findOrAddVertexERK9btVector3b(%struct.btTriangleMesh* %this, %struct.btQuadWord* %vertex1, i8 zeroext %removeDuplicateVertices) ; [#uses=1]
+ tail call void @_ZN14btTriangleMesh8addIndexEi(%struct.btTriangleMesh* %this, i32 %6)
+ %7 = tail call i32 @_ZN14btTriangleMesh15findOrAddVertexERK9btVector3b(%struct.btTriangleMesh* %this, %struct.btQuadWord* %vertex2, i8 zeroext %removeDuplicateVertices) ; [#uses=1]
+ tail call void @_ZN14btTriangleMesh8addIndexEi(%struct.btTriangleMesh* %this, i32 %7)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN14btTriangleMeshD0Ev(%struct.btTriangleMesh* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([17 x i32 (...)*]* @_ZTV14btTriangleMesh, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %2 = load i16** %1, align 4 ; [#uses=2]
+ %3 = icmp eq i16* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast i16* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad44
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i16* null, i16** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store i16* null, i16** %1, align 4
+ %8 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %11 = load i32** %10, align 4 ; [#uses=2]
+ %12 = icmp eq i32* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i73
+
+bb.i.i.i73: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i72 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i72, label %bb2.i.i.i75, label %bb1.i.i.i74
+
+bb1.i.i.i74: ; preds = %bb.i.i.i73
+ %15 = bitcast i32* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i75 unwind label %lpad40
+
+bb2.i.i.i75: ; preds = %bb1.i.i.i74, %bb.i.i.i73
+ store i32* null, i32** %10, align 4
+ br label %bb10
+
+bb10: ; preds = %bb2.i.i.i75, %bb3
+ %16 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store i32* null, i32** %10, align 4
+ %17 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %20 = load float** %19, align 4 ; [#uses=2]
+ %21 = icmp eq float* %20, null ; [#uses=1]
+ br i1 %21, label %bb19, label %bb.i.i.i78
+
+bb.i.i.i78: ; preds = %bb10
+ %22 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i.i77 = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i77, label %bb2.i.i.i80, label %bb1.i.i.i79
+
+bb1.i.i.i79: ; preds = %bb.i.i.i78
+ %24 = bitcast float* %20 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %24)
+ to label %bb2.i.i.i80 unwind label %lpad36
+
+bb2.i.i.i80: ; preds = %bb1.i.i.i79, %bb.i.i.i78
+ store float* null, float** %19, align 4
+ br label %bb19
+
+bb19: ; preds = %bb2.i.i.i80, %bb10
+ %25 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ store float* null, float** %19, align 4
+ %26 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %29 = load %struct.btQuadWord** %28, align 4 ; [#uses=2]
+ %30 = icmp eq %struct.btQuadWord* %29, null ; [#uses=1]
+ br i1 %30, label %bb28, label %bb.i.i.i83
+
+bb.i.i.i83: ; preds = %bb19
+ %31 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %32 = load i8* %31, align 4 ; [#uses=1]
+ %toBool.i.i.i82 = icmp eq i8 %32, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i82, label %bb2.i.i.i85, label %bb1.i.i.i84
+
+bb1.i.i.i84: ; preds = %bb.i.i.i83
+ %33 = bitcast %struct.btQuadWord* %29 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %33)
+ to label %bb2.i.i.i85 unwind label %lpad
+
+bb2.i.i.i85: ; preds = %bb1.i.i.i84, %bb.i.i.i83
+ store %struct.btQuadWord* null, %struct.btQuadWord** %28, align 4
+ br label %bb28
+
+invcont26: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.2)
+ unreachable
+
+bb28: ; preds = %bb2.i.i.i85, %bb19
+ %34 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %34, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %28, align 4
+ %35 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %35, align 4
+ %36 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %36, align 4
+ %37 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN26btTriangleIndexVertexArrayD2Ev(%struct.btTriangleIndexVertexArray* %37)
+ %38 = bitcast %struct.btTriangleMesh* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %38)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i84
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select35 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad36: ; preds = %bb1.i.i.i79
+ %eh_ptr37 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select39 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr37, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad64
+
+lpad40: ; preds = %bb1.i.i.i74
+ %eh_ptr41 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select43 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr41, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad65
+
+lpad44: ; preds = %bb1.i.i.i
+ %eh_ptr45 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select47 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr45, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %39 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %40 = load i32** %39, align 4 ; [#uses=2]
+ %41 = icmp eq i32* %40, null ; [#uses=1]
+ br i1 %41, label %_ZN20btAlignedObjectArrayIjED1Ev.exit92, label %bb.i.i.i88
+
+bb.i.i.i88: ; preds = %lpad44
+ %42 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %43 = load i8* %42, align 4 ; [#uses=1]
+ %toBool.i.i.i87 = icmp eq i8 %43, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i87, label %bb2.i.i.i90, label %bb1.i.i.i89
+
+bb1.i.i.i89: ; preds = %bb.i.i.i88
+ %44 = bitcast i32* %40 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %44)
+ to label %bb2.i.i.i90 unwind label %lpad48
+
+bb2.i.i.i90: ; preds = %bb1.i.i.i89, %bb.i.i.i88
+ store i32* null, i32** %39, align 4
+ br label %_ZN20btAlignedObjectArrayIjED1Ev.exit92
+
+_ZN20btAlignedObjectArrayIjED1Ev.exit92: ; preds = %bb2.i.i.i90, %lpad44
+ %45 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %45, align 4
+ store i32* null, i32** %39, align 4
+ %46 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %46, align 4
+ %47 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %47, align 4
+ br label %ppad65
+
+lpad48: ; preds = %bb1.i.i.i89
+ %eh_ptr49 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select51 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr49, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad52: ; preds = %bb1.i.i.i101
+ %eh_ptr53 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select55 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr53, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad56: ; preds = %bb1.i.i.i95
+ %eh_ptr57 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select59 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr57, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad60: ; preds = %ppad
+ %eh_ptr61 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select63 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr61, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit98, %lpad
+ %eh_exception.2 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.1, %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit98 ] ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN26btTriangleIndexVertexArrayD2Ev(%struct.btTriangleIndexVertexArray* %48)
+ to label %invcont26 unwind label %lpad60
+
+ppad64: ; preds = %_ZN20btAlignedObjectArrayIfED1Ev.exit104, %lpad36
+ %eh_exception.1 = phi i8* [ %eh_ptr37, %lpad36 ], [ %eh_exception.0, %_ZN20btAlignedObjectArrayIfED1Ev.exit104 ] ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %50 = load %struct.btQuadWord** %49, align 4 ; [#uses=2]
+ %51 = icmp eq %struct.btQuadWord* %50, null ; [#uses=1]
+ br i1 %51, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit98, label %bb.i.i.i94
+
+bb.i.i.i94: ; preds = %ppad64
+ %52 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %53 = load i8* %52, align 4 ; [#uses=1]
+ %toBool.i.i.i93 = icmp eq i8 %53, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i93, label %bb2.i.i.i96, label %bb1.i.i.i95
+
+bb1.i.i.i95: ; preds = %bb.i.i.i94
+ %54 = bitcast %struct.btQuadWord* %50 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %54)
+ to label %bb2.i.i.i96 unwind label %lpad56
+
+bb2.i.i.i96: ; preds = %bb1.i.i.i95, %bb.i.i.i94
+ store %struct.btQuadWord* null, %struct.btQuadWord** %49, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit98
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit98: ; preds = %bb2.i.i.i96, %ppad64
+ %55 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %55, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %49, align 4
+ %56 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %56, align 4
+ %57 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %57, align 4
+ br label %ppad
+
+ppad65: ; preds = %_ZN20btAlignedObjectArrayIjED1Ev.exit92, %lpad40
+ %eh_exception.0 = phi i8* [ %eh_ptr41, %lpad40 ], [ %eh_ptr45, %_ZN20btAlignedObjectArrayIjED1Ev.exit92 ] ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %59 = load float** %58, align 4 ; [#uses=2]
+ %60 = icmp eq float* %59, null ; [#uses=1]
+ br i1 %60, label %_ZN20btAlignedObjectArrayIfED1Ev.exit104, label %bb.i.i.i100
+
+bb.i.i.i100: ; preds = %ppad65
+ %61 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %62 = load i8* %61, align 4 ; [#uses=1]
+ %toBool.i.i.i99 = icmp eq i8 %62, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i99, label %bb2.i.i.i102, label %bb1.i.i.i101
+
+bb1.i.i.i101: ; preds = %bb.i.i.i100
+ %63 = bitcast float* %59 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %63)
+ to label %bb2.i.i.i102 unwind label %lpad52
+
+bb2.i.i.i102: ; preds = %bb1.i.i.i101, %bb.i.i.i100
+ store float* null, float** %58, align 4
+ br label %_ZN20btAlignedObjectArrayIfED1Ev.exit104
+
+_ZN20btAlignedObjectArrayIfED1Ev.exit104: ; preds = %bb2.i.i.i102, %ppad65
+ %64 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %64, align 4
+ store float* null, float** %58, align 4
+ %65 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %65, align 4
+ %66 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %66, align 4
+ br label %ppad64
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN14btTriangleMeshD1Ev(%struct.btTriangleMesh* %this) align 2 {
+entry:
+ tail call void @_ZN14btTriangleMeshD2Ev(%struct.btTriangleMesh* %this)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN14btTriangleMeshD2Ev(%struct.btTriangleMesh* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([17 x i32 (...)*]* @_ZTV14btTriangleMesh, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %2 = load i16** %1, align 4 ; [#uses=2]
+ %3 = icmp eq i16* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast i16* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad44
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i16* null, i16** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store i16* null, i16** %1, align 4
+ %8 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %11 = load i32** %10, align 4 ; [#uses=2]
+ %12 = icmp eq i32* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i73
+
+bb.i.i.i73: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i72 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i72, label %bb2.i.i.i75, label %bb1.i.i.i74
+
+bb1.i.i.i74: ; preds = %bb.i.i.i73
+ %15 = bitcast i32* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i75 unwind label %lpad40
+
+bb2.i.i.i75: ; preds = %bb1.i.i.i74, %bb.i.i.i73
+ store i32* null, i32** %10, align 4
+ br label %bb10
+
+bb10: ; preds = %bb2.i.i.i75, %bb3
+ %16 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store i32* null, i32** %10, align 4
+ %17 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %20 = load float** %19, align 4 ; [#uses=2]
+ %21 = icmp eq float* %20, null ; [#uses=1]
+ br i1 %21, label %bb19, label %bb.i.i.i78
+
+bb.i.i.i78: ; preds = %bb10
+ %22 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i.i77 = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i77, label %bb2.i.i.i80, label %bb1.i.i.i79
+
+bb1.i.i.i79: ; preds = %bb.i.i.i78
+ %24 = bitcast float* %20 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %24)
+ to label %bb2.i.i.i80 unwind label %lpad36
+
+bb2.i.i.i80: ; preds = %bb1.i.i.i79, %bb.i.i.i78
+ store float* null, float** %19, align 4
+ br label %bb19
+
+bb19: ; preds = %bb2.i.i.i80, %bb10
+ %25 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ store float* null, float** %19, align 4
+ %26 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %29 = load %struct.btQuadWord** %28, align 4 ; [#uses=2]
+ %30 = icmp eq %struct.btQuadWord* %29, null ; [#uses=1]
+ br i1 %30, label %bb28, label %bb.i.i.i83
+
+bb.i.i.i83: ; preds = %bb19
+ %31 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %32 = load i8* %31, align 4 ; [#uses=1]
+ %toBool.i.i.i82 = icmp eq i8 %32, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i82, label %bb2.i.i.i85, label %bb1.i.i.i84
+
+bb1.i.i.i84: ; preds = %bb.i.i.i83
+ %33 = bitcast %struct.btQuadWord* %29 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %33)
+ to label %bb2.i.i.i85 unwind label %lpad
+
+bb2.i.i.i85: ; preds = %bb1.i.i.i84, %bb.i.i.i83
+ store %struct.btQuadWord* null, %struct.btQuadWord** %28, align 4
+ br label %bb28
+
+invcont26: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.2)
+ unreachable
+
+bb28: ; preds = %bb2.i.i.i85, %bb19
+ %34 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %34, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %28, align 4
+ %35 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %35, align 4
+ %36 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %36, align 4
+ %37 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN26btTriangleIndexVertexArrayD2Ev(%struct.btTriangleIndexVertexArray* %37)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i84
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select35 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad36: ; preds = %bb1.i.i.i79
+ %eh_ptr37 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select39 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr37, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad64
+
+lpad40: ; preds = %bb1.i.i.i74
+ %eh_ptr41 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select43 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr41, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad65
+
+lpad44: ; preds = %bb1.i.i.i
+ %eh_ptr45 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select47 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr45, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %38 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %39 = load i32** %38, align 4 ; [#uses=2]
+ %40 = icmp eq i32* %39, null ; [#uses=1]
+ br i1 %40, label %_ZN20btAlignedObjectArrayIjED1Ev.exit92, label %bb.i.i.i88
+
+bb.i.i.i88: ; preds = %lpad44
+ %41 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %42 = load i8* %41, align 4 ; [#uses=1]
+ %toBool.i.i.i87 = icmp eq i8 %42, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i87, label %bb2.i.i.i90, label %bb1.i.i.i89
+
+bb1.i.i.i89: ; preds = %bb.i.i.i88
+ %43 = bitcast i32* %39 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %43)
+ to label %bb2.i.i.i90 unwind label %lpad48
+
+bb2.i.i.i90: ; preds = %bb1.i.i.i89, %bb.i.i.i88
+ store i32* null, i32** %38, align 4
+ br label %_ZN20btAlignedObjectArrayIjED1Ev.exit92
+
+_ZN20btAlignedObjectArrayIjED1Ev.exit92: ; preds = %bb2.i.i.i90, %lpad44
+ %44 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %44, align 4
+ store i32* null, i32** %38, align 4
+ %45 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %45, align 4
+ %46 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %46, align 4
+ br label %ppad65
+
+lpad48: ; preds = %bb1.i.i.i89
+ %eh_ptr49 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select51 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr49, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad52: ; preds = %bb1.i.i.i101
+ %eh_ptr53 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select55 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr53, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad56: ; preds = %bb1.i.i.i95
+ %eh_ptr57 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select59 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr57, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad60: ; preds = %ppad
+ %eh_ptr61 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select63 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr61, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit98, %lpad
+ %eh_exception.2 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.1, %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit98 ] ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN26btTriangleIndexVertexArrayD2Ev(%struct.btTriangleIndexVertexArray* %47)
+ to label %invcont26 unwind label %lpad60
+
+ppad64: ; preds = %_ZN20btAlignedObjectArrayIfED1Ev.exit104, %lpad36
+ %eh_exception.1 = phi i8* [ %eh_ptr37, %lpad36 ], [ %eh_exception.0, %_ZN20btAlignedObjectArrayIfED1Ev.exit104 ] ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %49 = load %struct.btQuadWord** %48, align 4 ; [#uses=2]
+ %50 = icmp eq %struct.btQuadWord* %49, null ; [#uses=1]
+ br i1 %50, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit98, label %bb.i.i.i94
+
+bb.i.i.i94: ; preds = %ppad64
+ %51 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %52 = load i8* %51, align 4 ; [#uses=1]
+ %toBool.i.i.i93 = icmp eq i8 %52, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i93, label %bb2.i.i.i96, label %bb1.i.i.i95
+
+bb1.i.i.i95: ; preds = %bb.i.i.i94
+ %53 = bitcast %struct.btQuadWord* %49 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %53)
+ to label %bb2.i.i.i96 unwind label %lpad56
+
+bb2.i.i.i96: ; preds = %bb1.i.i.i95, %bb.i.i.i94
+ store %struct.btQuadWord* null, %struct.btQuadWord** %48, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit98
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit98: ; preds = %bb2.i.i.i96, %ppad64
+ %54 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %54, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %48, align 4
+ %55 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %55, align 4
+ %56 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %56, align 4
+ br label %ppad
+
+ppad65: ; preds = %_ZN20btAlignedObjectArrayIjED1Ev.exit92, %lpad40
+ %eh_exception.0 = phi i8* [ %eh_ptr41, %lpad40 ], [ %eh_ptr45, %_ZN20btAlignedObjectArrayIjED1Ev.exit92 ] ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %58 = load float** %57, align 4 ; [#uses=2]
+ %59 = icmp eq float* %58, null ; [#uses=1]
+ br i1 %59, label %_ZN20btAlignedObjectArrayIfED1Ev.exit104, label %bb.i.i.i100
+
+bb.i.i.i100: ; preds = %ppad65
+ %60 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %61 = load i8* %60, align 4 ; [#uses=1]
+ %toBool.i.i.i99 = icmp eq i8 %61, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i99, label %bb2.i.i.i102, label %bb1.i.i.i101
+
+bb1.i.i.i101: ; preds = %bb.i.i.i100
+ %62 = bitcast float* %58 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %62)
+ to label %bb2.i.i.i102 unwind label %lpad52
+
+bb2.i.i.i102: ; preds = %bb1.i.i.i101, %bb.i.i.i100
+ store float* null, float** %57, align 4
+ br label %_ZN20btAlignedObjectArrayIfED1Ev.exit104
+
+_ZN20btAlignedObjectArrayIfED1Ev.exit104: ; preds = %bb2.i.i.i102, %ppad65
+ %63 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %63, align 4
+ store float* null, float** %57, align 4
+ %64 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %64, align 4
+ %65 = getelementptr inbounds %struct.btTriangleMesh* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %65, align 4
+ br label %ppad64
+}
+
+; [#uses=0]
+define void @_ZN14btTriangleMeshC1Ebb(%struct.btTriangleMesh* %this, i8 zeroext %use32bitIndices, i8 zeroext %use4componentVertices) align 2 {
+entry:
+ tail call void @_ZN14btTriangleMeshC2Ebb(%struct.btTriangleMesh* %this, i8 zeroext %use32bitIndices, i8 zeroext %use4componentVertices)
+ ret void
+}
+
+; [#uses=4]
+define void @_ZN19btTriangleMeshShapeC2EP23btStridingMeshInterface(%struct.btTriangleMeshShape* %this, %struct.btStridingMeshInterface* %meshInterface) align 2 {
+entry:
+ %vec.i = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %tmp.i = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %memtmp.i = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=2]
+ call void @_ZN14btConcaveShapeC2Ev(%struct.btConcaveShape* %0)
+ %1 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([20 x i32 (...)*]* @_ZTV19btTriangleMeshShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btStridingMeshInterface* %meshInterface, %struct.btStridingMeshInterface** %2, align 4
+ %3 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 21, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btStridingMeshInterface* %meshInterface, i32 0, i32 0 ; [#uses=2]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 10 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to i8 (%struct.btStridingMeshInterface*)* ; [#uses=1]
+ %9 = invoke zeroext i8 %8(%struct.btStridingMeshInterface* %meshInterface)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %entry
+ %toBool = icmp eq i8 %9, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb
+
+bb: ; preds = %invcont
+ %10 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i32 (...)** %10, i32 12 ; [#uses=1]
+ %12 = load i32 (...)** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 2 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ %15 = bitcast i32 (...)* %12 to void (%struct.btStridingMeshInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %15(%struct.btStridingMeshInterface* %meshInterface, %struct.btQuadWord* %14, %struct.btQuadWord* %13)
+ to label %return unwind label %lpad
+
+bb2: ; preds = %invcont
+ %16 = getelementptr inbounds %struct.btQuadWord* %vec.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %vec.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %vec.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %vec.i, i32 0, i32 0, i32 3 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btQuadWord* %tmp.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %memtmp.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %tmp.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %memtmp.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %tmp.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %memtmp.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %tmp.i, i32 0, i32 0, i32 3 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %memtmp.i, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %.noexc16, %bb2
+ %i.03.i = phi i32 [ 0, %bb2 ], [ %47, %.noexc16 ] ; [#uses=6]
+ %scevgep6.i = getelementptr %struct.btTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 %i.03.i ; [#uses=1]
+ %scevgep4.i = getelementptr %struct.btQuadWord* %tmp.i, i32 0, i32 0, i32 %i.03.i ; [#uses=2]
+ %scevgep.i = getelementptr %struct.btQuadWord* %vec.i, i32 0, i32 0, i32 %i.03.i ; [#uses=2]
+ store float 0.000000e+00, float* %16, align 8
+ store float 0.000000e+00, float* %17, align 4
+ store float 0.000000e+00, float* %18, align 8
+ store float 0.000000e+00, float* %19, align 4
+ store float 1.000000e+00, float* %scevgep.i, align 4
+ %29 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds i32 (...)** %29, i32 16 ; [#uses=1]
+ %31 = load i32 (...)** %30, align 4 ; [#uses=1]
+ %32 = bitcast i32 (...)* %31 to void (%struct.btQuadWord*, %struct.btTriangleMeshShape*, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %32(%struct.btQuadWord* noalias sret %tmp.i, %struct.btTriangleMeshShape* %this, %struct.btQuadWord* %vec.i)
+ to label %.noexc unwind label %lpad
+
+.noexc: ; preds = %bb.i
+ %scevgep5.i = getelementptr %struct.btTriangleMeshShape* %this, i32 0, i32 2, i32 0, i32 %i.03.i ; [#uses=1]
+ %33 = load float* %scevgep4.i, align 4 ; [#uses=1]
+ %34 = load float* %20, align 4 ; [#uses=1]
+ %35 = fadd float %33, %34 ; [#uses=1]
+ store float %35, float* %scevgep5.i, align 4
+ store float -1.000000e+00, float* %scevgep.i, align 4
+ %36 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds i32 (...)** %36, i32 16 ; [#uses=1]
+ %38 = load i32 (...)** %37, align 4 ; [#uses=1]
+ %39 = bitcast i32 (...)* %38 to void (%struct.btQuadWord*, %struct.btTriangleMeshShape*, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %39(%struct.btQuadWord* noalias sret %memtmp.i, %struct.btTriangleMeshShape* %this, %struct.btQuadWord* %vec.i)
+ to label %.noexc16 unwind label %lpad
+
+.noexc16: ; preds = %.noexc
+ %40 = load float* %22, align 8 ; [#uses=1]
+ store float %40, float* %21, align 8
+ %41 = load float* %24, align 4 ; [#uses=1]
+ store float %41, float* %23, align 4
+ %42 = load float* %26, align 8 ; [#uses=1]
+ store float %42, float* %25, align 8
+ %43 = load float* %28, align 4 ; [#uses=1]
+ store float %43, float* %27, align 4
+ %44 = load float* %scevgep4.i, align 4 ; [#uses=1]
+ %45 = load float* %20, align 4 ; [#uses=1]
+ %46 = fsub float %44, %45 ; [#uses=1]
+ store float %46, float* %scevgep6.i, align 4
+ %47 = add nsw i32 %i.03.i, 1 ; [#uses=1]
+ %exitcond.i = icmp eq i32 %i.03.i, 2 ; [#uses=1]
+ br i1 %exitcond.i, label %return, label %bb.i
+
+invcont5: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %.noexc16, %bb
+ ret void
+
+lpad: ; preds = %.noexc, %bb.i, %bb, %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select9 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %0)
+ to label %invcont5 unwind label %lpad10
+
+lpad10: ; preds = %lpad
+ %eh_ptr11 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select13 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK19btTriangleMeshShape7getNameEv(%struct.btTriangleMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([13 x i8]* @.str135, i32 0, i32 0)
+}
+
+; [#uses=1]
+define void @_ZNK19btTriangleMeshShape7getAabbERK11btTransformR9btVector3S4_(%struct.btTriangleMeshShape* %this, %struct.btTransform* nocapture %trans, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fsub float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fsub float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fsub float %11, %13 ; [#uses=1]
+ %15 = fmul float %4, 5.000000e-01 ; [#uses=1]
+ %16 = fmul float %9, 5.000000e-01 ; [#uses=1]
+ %17 = fmul float %14, 5.000000e-01 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %19 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i32 (...)** %19, i32 11 ; [#uses=1]
+ %21 = load i32 (...)** %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=3]
+ %23 = bitcast i32 (...)* %21 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %24 = tail call float %23(%struct.btConcaveShape* %22) ; [#uses=1]
+ %25 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds i32 (...)** %25, i32 11 ; [#uses=1]
+ %27 = load i32 (...)** %26, align 4 ; [#uses=1]
+ %28 = bitcast i32 (...)* %27 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %29 = tail call float %28(%struct.btConcaveShape* %22) ; [#uses=1]
+ %30 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds i32 (...)** %30, i32 11 ; [#uses=1]
+ %32 = load i32 (...)** %31, align 4 ; [#uses=1]
+ %33 = bitcast i32 (...)* %32 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %34 = tail call float %33(%struct.btConcaveShape* %22) ; [#uses=1]
+ %35 = fadd float %17, %34 ; [#uses=3]
+ %36 = fadd float %16, %29 ; [#uses=3]
+ %37 = fadd float %15, %24 ; [#uses=3]
+ %38 = load float* %0, align 4 ; [#uses=1]
+ %39 = load float* %2, align 4 ; [#uses=1]
+ %40 = fadd float %38, %39 ; [#uses=1]
+ %41 = load float* %5, align 4 ; [#uses=1]
+ %42 = load float* %7, align 4 ; [#uses=1]
+ %43 = fadd float %41, %42 ; [#uses=1]
+ %44 = load float* %10, align 4 ; [#uses=1]
+ %45 = load float* %12, align 4 ; [#uses=1]
+ %46 = fadd float %44, %45 ; [#uses=1]
+ %47 = fmul float %40, 5.000000e-01 ; [#uses=3]
+ %48 = fmul float %43, 5.000000e-01 ; [#uses=3]
+ %49 = fmul float %46, 5.000000e-01 ; [#uses=3]
+ %50 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=2]
+ %52 = tail call float @fabsf(float %51) nounwind readnone ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=2]
+ %55 = tail call float @fabsf(float %54) nounwind readnone ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=2]
+ %58 = tail call float @fabsf(float %57) nounwind readnone ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=2]
+ %61 = tail call float @fabsf(float %60) nounwind readnone ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=2]
+ %64 = tail call float @fabsf(float %63) nounwind readnone ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=2]
+ %67 = tail call float @fabsf(float %66) nounwind readnone ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=2]
+ %70 = tail call float @fabsf(float %69) nounwind readnone ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=2]
+ %73 = tail call float @fabsf(float %72) nounwind readnone ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=2]
+ %76 = tail call float @fabsf(float %75) nounwind readnone ; [#uses=1]
+ %77 = fmul float %57, %49 ; [#uses=1]
+ %78 = fmul float %54, %48 ; [#uses=1]
+ %79 = fadd float %77, %78 ; [#uses=1]
+ %80 = fmul float %51, %47 ; [#uses=1]
+ %81 = fadd float %79, %80 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = fadd float %81, %83 ; [#uses=2]
+ %85 = fmul float %66, %49 ; [#uses=1]
+ %86 = fmul float %63, %48 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=1]
+ %88 = fmul float %60, %47 ; [#uses=1]
+ %89 = fadd float %87, %88 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = fadd float %89, %91 ; [#uses=2]
+ %93 = fmul float %75, %49 ; [#uses=1]
+ %94 = fmul float %72, %48 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %69, %47 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btTransform* %trans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ %100 = fadd float %97, %99 ; [#uses=2]
+ %101 = fmul float %58, %35 ; [#uses=1]
+ %102 = fmul float %55, %36 ; [#uses=1]
+ %103 = fadd float %101, %102 ; [#uses=1]
+ %104 = fmul float %52, %37 ; [#uses=1]
+ %105 = fadd float %103, %104 ; [#uses=2]
+ %106 = fmul float %67, %35 ; [#uses=1]
+ %107 = fmul float %64, %36 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fmul float %61, %37 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=2]
+ %111 = fmul float %76, %35 ; [#uses=1]
+ %112 = fmul float %73, %36 ; [#uses=1]
+ %113 = fadd float %111, %112 ; [#uses=1]
+ %114 = fmul float %70, %37 ; [#uses=1]
+ %115 = fadd float %113, %114 ; [#uses=2]
+ %116 = fsub float %84, %105 ; [#uses=1]
+ %117 = fsub float %92, %110 ; [#uses=1]
+ %118 = fsub float %100, %115 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %118, float* %119, align 4
+ %120 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %117, float* %120, align 4
+ %121 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %116, float* %121, align 4
+ %122 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %122, align 4
+ %123 = fadd float %84, %105 ; [#uses=1]
+ %124 = fadd float %92, %110 ; [#uses=1]
+ %125 = fadd float %100, %115 ; [#uses=1]
+ %126 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %125, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %124, float* %127, align 4
+ %128 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %123, float* %128, align 4
+ %129 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %129, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN19btTriangleMeshShape15recalcLocalAabbEv(%struct.btTriangleMeshShape* %this) align 2 {
+bb.nph:
+ %vec = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %tmp = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %memtmp = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 3 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %i.03 = phi i32 [ 0, %bb.nph ], [ %32, %bb ] ; [#uses=5]
+ %scevgep = getelementptr %struct.btQuadWord* %vec, i32 0, i32 0, i32 %i.03 ; [#uses=2]
+ %scevgep4 = getelementptr %struct.btQuadWord* %tmp, i32 0, i32 0, i32 %i.03 ; [#uses=2]
+ %scevgep5 = getelementptr %struct.btTriangleMeshShape* %this, i32 0, i32 2, i32 0, i32 %i.03 ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 %i.03 ; [#uses=1]
+ store float 0.000000e+00, float* %0, align 8
+ store float 0.000000e+00, float* %1, align 4
+ store float 0.000000e+00, float* %2, align 8
+ store float 0.000000e+00, float* %3, align 4
+ store float 1.000000e+00, float* %scevgep, align 4
+ %14 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds i32 (...)** %14, i32 16 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to void (%struct.btQuadWord*, %struct.btTriangleMeshShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %17(%struct.btQuadWord* noalias sret %tmp, %struct.btTriangleMeshShape* %this, %struct.btQuadWord* %vec)
+ %18 = load float* %scevgep4, align 4 ; [#uses=1]
+ %19 = load float* %5, align 4 ; [#uses=1]
+ %20 = fadd float %18, %19 ; [#uses=1]
+ store float %20, float* %scevgep5, align 4
+ store float -1.000000e+00, float* %scevgep, align 4
+ %21 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds i32 (...)** %21, i32 16 ; [#uses=1]
+ %23 = load i32 (...)** %22, align 4 ; [#uses=1]
+ %24 = bitcast i32 (...)* %23 to void (%struct.btQuadWord*, %struct.btTriangleMeshShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %24(%struct.btQuadWord* noalias sret %memtmp, %struct.btTriangleMeshShape* %this, %struct.btQuadWord* %vec)
+ %25 = load float* %7, align 8 ; [#uses=1]
+ store float %25, float* %6, align 8
+ %26 = load float* %9, align 4 ; [#uses=1]
+ store float %26, float* %8, align 4
+ %27 = load float* %11, align 8 ; [#uses=1]
+ store float %27, float* %10, align 8
+ %28 = load float* %13, align 4 ; [#uses=1]
+ store float %28, float* %12, align 4
+ %29 = load float* %scevgep4, align 4 ; [#uses=1]
+ %30 = load float* %5, align 4 ; [#uses=1]
+ %31 = fsub float %29, %30 ; [#uses=1]
+ store float %31, float* %scevgep6, align 4
+ %32 = add nsw i32 %i.03, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %32, 3 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21SupportVertexCallbackD1Ev(%struct.SupportVertexCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.SupportVertexCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV21SupportVertexCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.SupportVertexCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21SupportVertexCallbackD0Ev(%struct.SupportVertexCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.SupportVertexCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV21SupportVertexCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.SupportVertexCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct.SupportVertexCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21SupportVertexCallback15processTriangleEP9btVector3ii(%struct.SupportVertexCallback* nocapture %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) nounwind align 2 {
+bb.nph:
+ %0 = getelementptr inbounds %struct.SupportVertexCallback* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.SupportVertexCallback* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.SupportVertexCallback* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.SupportVertexCallback* %this, i32 0, i32 3 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.SupportVertexCallback* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.SupportVertexCallback* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.SupportVertexCallback* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %7 = getelementptr inbounds %struct.SupportVertexCallback* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %scevgep6 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=2]
+ %scevgep7 = getelementptr %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=2]
+ %scevgep8 = getelementptr %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=2]
+ %8 = load float* %0, align 4 ; [#uses=3]
+ %9 = load float* %scevgep6, align 4 ; [#uses=1]
+ %10 = fmul float %8, %9 ; [#uses=1]
+ %11 = load float* %1, align 4 ; [#uses=3]
+ %12 = load float* %scevgep7, align 4 ; [#uses=1]
+ %13 = fmul float %11, %12 ; [#uses=1]
+ %14 = fadd float %10, %13 ; [#uses=1]
+ %15 = load float* %2, align 4 ; [#uses=3]
+ %16 = load float* %scevgep8, align 4 ; [#uses=1]
+ %17 = fmul float %15, %16 ; [#uses=1]
+ %18 = fadd float %14, %17 ; [#uses=3]
+ %19 = load float* %3, align 4 ; [#uses=2]
+ %20 = fcmp olt float %19, %18 ; [#uses=1]
+ br i1 %20, label %bb1, label %bb2
+
+bb1: ; preds = %bb.nph
+ %scevgep9 = getelementptr %struct.btQuadWord* %triangle, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %18, float* %3, align 4
+ %21 = load float* %scevgep6, align 4 ; [#uses=1]
+ store float %21, float* %4, align 4
+ %22 = load float* %scevgep7, align 4 ; [#uses=1]
+ store float %22, float* %5, align 4
+ %23 = load float* %scevgep8, align 4 ; [#uses=1]
+ store float %23, float* %6, align 4
+ %24 = load float* %scevgep9, align 4 ; [#uses=1]
+ store float %24, float* %7, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb.nph
+ %25 = phi float [ %18, %bb1 ], [ %19, %bb.nph ] ; [#uses=2]
+ %scevgep6.1 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=2]
+ %scevgep7.1 = getelementptr %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=2]
+ %scevgep8.1 = getelementptr %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=2]
+ %26 = load float* %scevgep6.1, align 4 ; [#uses=1]
+ %27 = fmul float %8, %26 ; [#uses=1]
+ %28 = load float* %scevgep7.1, align 4 ; [#uses=1]
+ %29 = fmul float %11, %28 ; [#uses=1]
+ %30 = fadd float %27, %29 ; [#uses=1]
+ %31 = load float* %scevgep8.1, align 4 ; [#uses=1]
+ %32 = fmul float %15, %31 ; [#uses=1]
+ %33 = fadd float %30, %32 ; [#uses=3]
+ %34 = fcmp olt float %25, %33 ; [#uses=1]
+ br i1 %34, label %bb1.1, label %bb2.1
+
+return: ; preds = %bb2.1
+ ret void
+
+bb2.1: ; preds = %bb1.1, %bb2
+ %35 = phi float [ %33, %bb1.1 ], [ %25, %bb2 ] ; [#uses=1]
+ %scevgep6.2 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=2]
+ %scevgep7.2 = getelementptr %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=2]
+ %scevgep8.2 = getelementptr %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=2]
+ %36 = load float* %scevgep6.2, align 4 ; [#uses=1]
+ %37 = fmul float %8, %36 ; [#uses=1]
+ %38 = load float* %scevgep7.2, align 4 ; [#uses=1]
+ %39 = fmul float %11, %38 ; [#uses=1]
+ %40 = fadd float %37, %39 ; [#uses=1]
+ %41 = load float* %scevgep8.2, align 4 ; [#uses=1]
+ %42 = fmul float %15, %41 ; [#uses=1]
+ %43 = fadd float %40, %42 ; [#uses=2]
+ %44 = fcmp olt float %35, %43 ; [#uses=1]
+ br i1 %44, label %bb1.2, label %return
+
+bb1.1: ; preds = %bb2
+ %scevgep9.1 = getelementptr %struct.btQuadWord* %triangle, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %33, float* %3, align 4
+ %45 = load float* %scevgep6.1, align 4 ; [#uses=1]
+ store float %45, float* %4, align 4
+ %46 = load float* %scevgep7.1, align 4 ; [#uses=1]
+ store float %46, float* %5, align 4
+ %47 = load float* %scevgep8.1, align 4 ; [#uses=1]
+ store float %47, float* %6, align 4
+ %48 = load float* %scevgep9.1, align 4 ; [#uses=1]
+ store float %48, float* %7, align 4
+ br label %bb2.1
+
+bb1.2: ; preds = %bb2.1
+ %scevgep9.2 = getelementptr %struct.btQuadWord* %triangle, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %43, float* %3, align 4
+ %49 = load float* %scevgep6.2, align 4 ; [#uses=1]
+ store float %49, float* %4, align 4
+ %50 = load float* %scevgep7.2, align 4 ; [#uses=1]
+ store float %50, float* %5, align 4
+ %51 = load float* %scevgep8.2, align 4 ; [#uses=1]
+ store float %51, float* %6, align 4
+ %52 = load float* %scevgep9.2, align 4 ; [#uses=1]
+ store float %52, float* %7, align 4
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN19btTriangleMeshShape15setLocalScalingERK9btVector3(%struct.btTriangleMeshShape* %this, %struct.btQuadWord* nocapture %scaling) align 2 {
+entry:
+ %vec.i = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %tmp.i = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %memtmp.i = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 3 ; [#uses=1]
+ %1 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=4]
+ %2 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btQuadWord* %vec.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %vec.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %vec.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %vec.i, i32 0, i32 0, i32 3 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btQuadWord* %tmp.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %memtmp.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %tmp.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %memtmp.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %tmp.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %memtmp.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %tmp.i, i32 0, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %memtmp.i, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %bb.i, %entry
+ %i.03.i = phi i32 [ 0, %entry ], [ %46, %bb.i ] ; [#uses=5]
+ %scevgep6.i = getelementptr %struct.btTriangleMeshShape* %this, i32 0, i32 1, i32 0, i32 %i.03.i ; [#uses=1]
+ %scevgep5.i = getelementptr %struct.btTriangleMeshShape* %this, i32 0, i32 2, i32 0, i32 %i.03.i ; [#uses=1]
+ %scevgep4.i = getelementptr %struct.btQuadWord* %tmp.i, i32 0, i32 0, i32 %i.03.i ; [#uses=2]
+ %scevgep.i = getelementptr %struct.btQuadWord* %vec.i, i32 0, i32 0, i32 %i.03.i ; [#uses=2]
+ store float 0.000000e+00, float* %14, align 8
+ store float 0.000000e+00, float* %15, align 4
+ store float 0.000000e+00, float* %16, align 8
+ store float 0.000000e+00, float* %17, align 4
+ store float 1.000000e+00, float* %scevgep.i, align 4
+ %28 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds i32 (...)** %28, i32 16 ; [#uses=1]
+ %30 = load i32 (...)** %29, align 4 ; [#uses=1]
+ %31 = bitcast i32 (...)* %30 to void (%struct.btQuadWord*, %struct.btTriangleMeshShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %31(%struct.btQuadWord* noalias sret %tmp.i, %struct.btTriangleMeshShape* %this, %struct.btQuadWord* %vec.i)
+ %32 = load float* %scevgep4.i, align 4 ; [#uses=1]
+ %33 = load float* %19, align 4 ; [#uses=1]
+ %34 = fadd float %32, %33 ; [#uses=1]
+ store float %34, float* %scevgep5.i, align 4
+ store float -1.000000e+00, float* %scevgep.i, align 4
+ %35 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds i32 (...)** %35, i32 16 ; [#uses=1]
+ %37 = load i32 (...)** %36, align 4 ; [#uses=1]
+ %38 = bitcast i32 (...)* %37 to void (%struct.btQuadWord*, %struct.btTriangleMeshShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %38(%struct.btQuadWord* noalias sret %memtmp.i, %struct.btTriangleMeshShape* %this, %struct.btQuadWord* %vec.i)
+ %39 = load float* %21, align 8 ; [#uses=1]
+ store float %39, float* %20, align 8
+ %40 = load float* %23, align 4 ; [#uses=1]
+ store float %40, float* %22, align 4
+ %41 = load float* %25, align 8 ; [#uses=1]
+ store float %41, float* %24, align 8
+ %42 = load float* %27, align 4 ; [#uses=1]
+ store float %42, float* %26, align 4
+ %43 = load float* %scevgep4.i, align 4 ; [#uses=1]
+ %44 = load float* %19, align 4 ; [#uses=1]
+ %45 = fsub float %43, %44 ; [#uses=1]
+ store float %45, float* %scevgep6.i, align 4
+ %46 = add nsw i32 %i.03.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %46, 3 ; [#uses=1]
+ br i1 %exitcond, label %_ZN19btTriangleMeshShape15recalcLocalAabbEv.exit, label %bb.i
+
+_ZN19btTriangleMeshShape15recalcLocalAabbEv.exit: ; preds = %bb.i
+ ret void
+}
+
+; [#uses=1]
+define %struct.btQuadWord* @_ZNK19btTriangleMeshShape15getLocalScalingEv(%struct.btTriangleMeshShape* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 3 ; [#uses=1]
+ %1 = load %struct.btStridingMeshInterface** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btStridingMeshInterface* %1, i32 0, i32 1 ; [#uses=1]
+ ret %struct.btQuadWord* %2
+}
+
+; [#uses=1]
+define void @_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD1Ev(%struct..0FilteredCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0FilteredCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0FilteredCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD0Ev(%struct..0FilteredCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0FilteredCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0FilteredCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct..0FilteredCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallback28internalProcessTriangleIndexEPS2_ii(%struct..0FilteredCallback* nocapture %this, %struct.btQuadWord* %triangle, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ %4 = load float* %1, align 4 ; [#uses=4]
+ %5 = fcmp olt float %3, %4 ; [#uses=1]
+ %6 = select i1 %5, float %3, float %4 ; [#uses=2]
+ %7 = load float* %0, align 4 ; [#uses=4]
+ %8 = fcmp olt float %6, %7 ; [#uses=1]
+ %9 = select i1 %8, float %6, float %7 ; [#uses=1]
+ %10 = getelementptr inbounds %struct..0FilteredCallback* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fcmp ogt float %9, %11 ; [#uses=1]
+ br i1 %12, label %return, label %bb1.i
+
+bb1.i: ; preds = %entry
+ %13 = fcmp ogt float %3, %4 ; [#uses=1]
+ %14 = select i1 %13, float %3, float %4 ; [#uses=2]
+ %15 = fcmp ogt float %14, %7 ; [#uses=1]
+ %16 = select i1 %15, float %14, float %7 ; [#uses=1]
+ %17 = getelementptr inbounds %struct..0FilteredCallback* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fcmp olt float %16, %18 ; [#uses=1]
+ br i1 %19, label %return, label %bb4.i
+
+bb4.i: ; preds = %bb1.i
+ %20 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=4]
+ %24 = load float* %21, align 4 ; [#uses=4]
+ %25 = fcmp olt float %23, %24 ; [#uses=1]
+ %26 = select i1 %25, float %23, float %24 ; [#uses=2]
+ %27 = load float* %20, align 4 ; [#uses=4]
+ %28 = fcmp olt float %26, %27 ; [#uses=1]
+ %29 = select i1 %28, float %26, float %27 ; [#uses=1]
+ %30 = getelementptr inbounds %struct..0FilteredCallback* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = fcmp ogt float %29, %31 ; [#uses=1]
+ br i1 %32, label %return, label %bb7.i
+
+bb7.i: ; preds = %bb4.i
+ %33 = fcmp ogt float %23, %24 ; [#uses=1]
+ %34 = select i1 %33, float %23, float %24 ; [#uses=2]
+ %35 = fcmp ogt float %34, %27 ; [#uses=1]
+ %36 = select i1 %35, float %34, float %27 ; [#uses=1]
+ %37 = getelementptr inbounds %struct..0FilteredCallback* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fcmp olt float %36, %38 ; [#uses=1]
+ br i1 %39, label %return, label %bb10.i
+
+bb10.i: ; preds = %bb7.i
+ %40 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=4]
+ %44 = load float* %41, align 4 ; [#uses=4]
+ %45 = fcmp olt float %43, %44 ; [#uses=1]
+ %46 = select i1 %45, float %43, float %44 ; [#uses=2]
+ %47 = load float* %40, align 4 ; [#uses=4]
+ %48 = fcmp olt float %46, %47 ; [#uses=1]
+ %49 = select i1 %48, float %46, float %47 ; [#uses=1]
+ %50 = getelementptr inbounds %struct..0FilteredCallback* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fcmp ogt float %49, %51 ; [#uses=1]
+ br i1 %52, label %return, label %_Z24TestTriangleAgainstAabb2PK9btVector3RS0_S2_.exit
+
+_Z24TestTriangleAgainstAabb2PK9btVector3RS0_S2_.exit: ; preds = %bb10.i
+ %53 = fcmp ogt float %43, %44 ; [#uses=1]
+ %54 = select i1 %53, float %43, float %44 ; [#uses=2]
+ %55 = fcmp ogt float %54, %47 ; [#uses=1]
+ %56 = select i1 %55, float %54, float %47 ; [#uses=1]
+ %57 = getelementptr inbounds %struct..0FilteredCallback* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %phitmp = fcmp olt float %56, %58 ; [#uses=1]
+ br i1 %phitmp, label %return, label %bb
+
+bb: ; preds = %_Z24TestTriangleAgainstAabb2PK9btVector3RS0_S2_.exit
+ %59 = getelementptr inbounds %struct..0FilteredCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %60 = load %struct.btActionInterface** %59, align 4 ; [#uses=2]
+ %61 = getelementptr inbounds %struct.btActionInterface* %60, i32 0, i32 0 ; [#uses=1]
+ %62 = load i32 (...)*** %61, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds i32 (...)** %62, i32 2 ; [#uses=1]
+ %64 = load i32 (...)** %63, align 4 ; [#uses=1]
+ %65 = bitcast i32 (...)* %64 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ tail call void %65(%struct.btActionInterface* %60, %struct.btQuadWord* %triangle, i32 %partId, i32 %triangleIndex)
+ ret void
+
+return: ; preds = %_Z24TestTriangleAgainstAabb2PK9btVector3RS0_S2_.exit, %bb10.i, %bb7.i, %bb4.i, %bb1.i, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK19btTriangleMeshShape21calculateLocalInertiaEfR9btVector3(%struct.btTriangleMeshShape* nocapture %this, float %mass, %struct.btQuadWord* nocapture %inertia) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK19btTriangleMeshShape24localGetSupportingVertexERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btTriangleMeshShape* %this, %struct.btQuadWord* nocapture %vec) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %supportCallback = alloca %struct.SupportVertexCallback, align 8 ; [#uses=27]
+ %aabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV21SupportVertexCallback, i32 0, i32 2), i32 (...)*** %1, align 8
+ %2 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 4
+ %16 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %16, align 4
+ %17 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ %20 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 3 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=2]
+ %25 = fmul float %24, 0.000000e+00 ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 1 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=2]
+ %28 = fmul float %27, 0.000000e+00 ; [#uses=2]
+ %29 = fadd float %25, %28 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %vec, i32 0, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=2]
+ %32 = fadd float %29, %31 ; [#uses=1]
+ %33 = fadd float %25, %27 ; [#uses=1]
+ %34 = fmul float %31, 0.000000e+00 ; [#uses=2]
+ %35 = fadd float %33, %34 ; [#uses=1]
+ %36 = fadd float %24, %28 ; [#uses=1]
+ %37 = fadd float %36, %34 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %37, float* %38, align 8
+ %39 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %35, float* %39, align 4
+ %40 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %32, float* %40, align 8
+ %41 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %42, align 8
+ %43 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %43, align 4
+ %44 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %44, align 8
+ %45 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %45, align 4
+ %46 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %47 = load i32 (...)*** %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds i32 (...)** %47, i32 15 ; [#uses=1]
+ %49 = load i32 (...)** %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %50, align 8
+ %51 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %51, align 4
+ %52 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0xC3ABC16D60000000, float* %52, align 8
+ %53 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %53, align 4
+ %54 = bitcast i32 (...)* %49 to void (%struct.btTriangleMeshShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %55 = getelementptr inbounds %struct.SupportVertexCallback* %supportCallback, i32 0, i32 0 ; [#uses=3]
+ invoke void %54(%struct.btTriangleMeshShape* %this, %struct.btActionInterface* %55, %struct.btQuadWord* %0, %struct.btQuadWord* %aabbMax)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %56 = load float* %2, align 4 ; [#uses=1]
+ %57 = load float* %3, align 4 ; [#uses=1]
+ %58 = load float* %4, align 4 ; [#uses=1]
+ %59 = load float* %5, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %56, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %57, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %58, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %59, float* %63, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV21SupportVertexCallback, i32 0, i32 2), i32 (...)*** %1, align 8
+ call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %55)
+ ret void
+
+invcont3: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV21SupportVertexCallback, i32 0, i32 2), i32 (...)*** %1, align 8
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %55)
+ to label %invcont3 unwind label %lpad7
+
+lpad7: ; preds = %lpad
+ %eh_ptr8 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_(%struct.btTriangleMeshShape* nocapture %this, %struct.btActionInterface* %callback, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %filterCallback = alloca %struct..0FilteredCallback, align 8 ; [#uses=11]
+ %0 = getelementptr inbounds %struct..0FilteredCallback* %filterCallback, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ %1 = getelementptr inbounds %struct..0FilteredCallback* %filterCallback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %callback, %struct.btActionInterface** %1, align 4
+ %2 = getelementptr inbounds %struct..0FilteredCallback* %filterCallback, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 8
+ %5 = getelementptr inbounds %struct..0FilteredCallback* %filterCallback, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct..0FilteredCallback* %filterCallback, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 8
+ %11 = getelementptr inbounds %struct..0FilteredCallback* %filterCallback, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct..0FilteredCallback* %filterCallback, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 8
+ %17 = getelementptr inbounds %struct..0FilteredCallback* %filterCallback, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct..0FilteredCallback* %filterCallback, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 8
+ %23 = getelementptr inbounds %struct..0FilteredCallback* %filterCallback, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 3 ; [#uses=1]
+ %27 = load %struct.btStridingMeshInterface** %26, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btStridingMeshInterface* %27, i32 0, i32 0 ; [#uses=1]
+ %29 = load i32 (...)*** %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds i32 (...)** %29, i32 2 ; [#uses=1]
+ %31 = load i32 (...)** %30, align 4 ; [#uses=1]
+ %32 = bitcast i32 (...)* %31 to void (%struct.btStridingMeshInterface*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %33 = getelementptr inbounds %struct..0FilteredCallback* %filterCallback, i32 0, i32 0 ; [#uses=3]
+ invoke void %32(%struct.btStridingMeshInterface* %27, %struct.btActionInterface* %33, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ to label %bb3 unwind label %lpad
+
+invcont1: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %entry
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %33)
+ ret void
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select5 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ invoke void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %33)
+ to label %invcont1 unwind label %lpad6
+
+lpad6: ; preds = %lpad
+ %eh_ptr7 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select9 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr7, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_EN16FilteredCallbackD2Ev(%struct..0FilteredCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0FilteredCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZNK19btTriangleMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_E16FilteredCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0FilteredCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN31btInternalTriangleIndexCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN19btTriangleMeshShapeD0Ev(%struct.btTriangleMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([20 x i32 (...)*]* @_ZTV19btTriangleMeshShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ %2 = bitcast %struct.btTriangleMeshShape* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN19btTriangleMeshShapeD1Ev(%struct.btTriangleMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([20 x i32 (...)*]* @_ZTV19btTriangleMeshShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ ret void
+}
+
+; [#uses=9]
+define void @_ZN19btTriangleMeshShapeD2Ev(%struct.btTriangleMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([20 x i32 (...)*]* @_ZTV19btTriangleMeshShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleMeshShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN19btTriangleMeshShapeC1EP23btStridingMeshInterface(%struct.btTriangleMeshShape* %this, %struct.btStridingMeshInterface* %meshInterface) align 2 {
+entry:
+ tail call void @_ZN19btTriangleMeshShapeC2EP23btStridingMeshInterface(%struct.btTriangleMeshShape* %this, %struct.btStridingMeshInterface* %meshInterface)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btUniformScalingShapeC2EP13btConvexShapef(%struct.btUniformScalingShape* %this, %struct.btConvexShape* %convexChildShape, float %uniformScalingFactor) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeC2Ev(%struct.btConvexShape* %0)
+ %1 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btUniformScalingShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btConvexShape* %convexChildShape, %struct.btConvexShape** %2, align 4
+ %3 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 2 ; [#uses=1]
+ store float %uniformScalingFactor, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 14, i32* %4, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK21btUniformScalingShape7getNameEv(%struct.btUniformScalingShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([20 x i8]* @.str146, i32 0, i32 0)
+}
+
+; [#uses=1]
+define void @_ZNK21btUniformScalingShape37localGetSupportingVertexWithoutMarginERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btUniformScalingShape* nocapture %this, %struct.btQuadWord* %vec) align 2 {
+entry:
+ %memtmp = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 16 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %6(%struct.btQuadWord* noalias sret %memtmp, %struct.btConvexShape* %1, %struct.btQuadWord* %vec)
+ %7 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 8 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 8 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=3]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fmul float %10, %14 ; [#uses=1]
+ %17 = fmul float %8, %14 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %17, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %16, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %15, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK21btUniformScalingShape49batchedUnitVectorGetSupportingVertexWithoutMarginEPK9btVector3PS0_i(%struct.btUniformScalingShape* nocapture %this, %struct.btQuadWord* %vectors, %struct.btQuadWord* %supportVerticesOut, i32 %numVectors) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 17 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btConvexShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* ; [#uses=1]
+ tail call void %6(%struct.btConvexShape* %1, %struct.btQuadWord* %vectors, %struct.btQuadWord* %supportVerticesOut, i32 %numVectors)
+ %7 = icmp sgt i32 %numVectors, 0 ; [#uses=1]
+ br i1 %7, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 2 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %i.05 = phi i32 [ 0, %bb.nph ], [ %16, %bb ] ; [#uses=5]
+ %scevgep6 = getelementptr inbounds %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 0 ; [#uses=2]
+ %scevgep7 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 1 ; [#uses=2]
+ %scevgep8 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 2 ; [#uses=2]
+ %scevgep9 = getelementptr %struct.btQuadWord* %supportVerticesOut, i32 %i.05, i32 0, i32 3 ; [#uses=1]
+ %9 = load float* %scevgep8, align 4 ; [#uses=1]
+ %10 = load float* %8, align 4 ; [#uses=3]
+ %11 = fmul float %9, %10 ; [#uses=1]
+ %12 = load float* %scevgep7, align 4 ; [#uses=1]
+ %13 = fmul float %12, %10 ; [#uses=1]
+ %14 = load float* %scevgep6, align 4 ; [#uses=1]
+ %15 = fmul float %14, %10 ; [#uses=1]
+ store float %15, float* %scevgep6, align 4
+ store float %13, float* %scevgep7, align 4
+ store float %11, float* %scevgep8, align 4
+ store float 0.000000e+00, float* %scevgep9, align 4
+ %16 = add nsw i32 %i.05, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %16, %numVectors ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK21btUniformScalingShape24localGetSupportingVertexERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btUniformScalingShape* nocapture %this, %struct.btQuadWord* %vec) align 2 {
+entry:
+ %memtmp = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 15 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %6(%struct.btQuadWord* noalias sret %memtmp, %struct.btConvexShape* %1, %struct.btQuadWord* %vec)
+ %7 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 8 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %memtmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 8 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=3]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fmul float %10, %14 ; [#uses=1]
+ %17 = fmul float %8, %14 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %17, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %16, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %15, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK21btUniformScalingShape21calculateLocalInertiaEfR9btVector3(%struct.btUniformScalingShape* nocapture %this, float %mass, %struct.btQuadWord* nocapture %inertia) align 2 {
+entry:
+ %tmpInertia = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 8 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0 ; [#uses=1]
+ %7 = bitcast i32 (...)* %5 to void (%struct.btCollisionShape*, float, %struct.btQuadWord*)* ; [#uses=1]
+ call void %7(%struct.btCollisionShape* %6, float %mass, %struct.btQuadWord* %tmpInertia)
+ %8 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %tmpInertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 8 ; [#uses=1]
+ %11 = load float* %8, align 4 ; [#uses=3]
+ %12 = fmul float %10, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %tmpInertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fmul float %14, %11 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %tmpInertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 8 ; [#uses=1]
+ %18 = fmul float %17, %11 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %18, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %15, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %12, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK21btUniformScalingShape7getAabbERK11btTransformR9btVector3S4_(%struct.btUniformScalingShape* nocapture %this, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 2 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btConvexShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %6(%struct.btConvexShape* %1, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=2]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ %11 = fadd float %8, %10 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=2]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=2]
+ %15 = load float* %14, align 4 ; [#uses=2]
+ %16 = fadd float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=2]
+ %21 = fadd float %18, %20 ; [#uses=1]
+ %22 = fmul float %11, 5.000000e-01 ; [#uses=2]
+ %23 = fmul float %16, 5.000000e-01 ; [#uses=2]
+ %24 = fmul float %21, 5.000000e-01 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 2 ; [#uses=1]
+ %26 = fsub float %8, %10 ; [#uses=1]
+ %27 = fsub float %13, %15 ; [#uses=1]
+ %28 = fsub float %18, %20 ; [#uses=1]
+ %29 = fmul float %26, 5.000000e-01 ; [#uses=1]
+ %30 = fmul float %27, 5.000000e-01 ; [#uses=1]
+ %31 = fmul float %28, 5.000000e-01 ; [#uses=1]
+ %32 = load float* %25, align 4 ; [#uses=3]
+ %33 = fmul float %29, %32 ; [#uses=2]
+ %34 = fmul float %30, %32 ; [#uses=2]
+ %35 = fmul float %31, %32 ; [#uses=2]
+ %36 = fsub float %22, %33 ; [#uses=1]
+ %37 = fsub float %23, %34 ; [#uses=1]
+ %38 = fsub float %24, %35 ; [#uses=1]
+ store float %38, float* %19, align 4
+ store float %37, float* %14, align 4
+ store float %36, float* %9, align 4
+ %39 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %39, align 4
+ %40 = fadd float %22, %33 ; [#uses=1]
+ %41 = fadd float %23, %34 ; [#uses=1]
+ %42 = fadd float %24, %35 ; [#uses=1]
+ store float %42, float* %17, align 4
+ store float %41, float* %12, align 4
+ store float %40, float* %7, align 4
+ %43 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %43, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK21btUniformScalingShape11getAabbSlowERK11btTransformR9btVector3S4_(%struct.btUniformScalingShape* nocapture %this, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 18 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btConvexShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %6(%struct.btConvexShape* %1, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ %7 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=2]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ %11 = fadd float %8, %10 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=2]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=2]
+ %15 = load float* %14, align 4 ; [#uses=2]
+ %16 = fadd float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=2]
+ %21 = fadd float %18, %20 ; [#uses=1]
+ %22 = fmul float %11, 5.000000e-01 ; [#uses=2]
+ %23 = fmul float %16, 5.000000e-01 ; [#uses=2]
+ %24 = fmul float %21, 5.000000e-01 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 2 ; [#uses=1]
+ %26 = fsub float %8, %10 ; [#uses=1]
+ %27 = fsub float %13, %15 ; [#uses=1]
+ %28 = fsub float %18, %20 ; [#uses=1]
+ %29 = fmul float %26, 5.000000e-01 ; [#uses=1]
+ %30 = fmul float %27, 5.000000e-01 ; [#uses=1]
+ %31 = fmul float %28, 5.000000e-01 ; [#uses=1]
+ %32 = load float* %25, align 4 ; [#uses=3]
+ %33 = fmul float %29, %32 ; [#uses=2]
+ %34 = fmul float %30, %32 ; [#uses=2]
+ %35 = fmul float %31, %32 ; [#uses=2]
+ %36 = fsub float %22, %33 ; [#uses=1]
+ %37 = fsub float %23, %34 ; [#uses=1]
+ %38 = fsub float %24, %35 ; [#uses=1]
+ store float %38, float* %19, align 4
+ store float %37, float* %14, align 4
+ store float %36, float* %9, align 4
+ %39 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %39, align 4
+ %40 = fadd float %22, %33 ; [#uses=1]
+ %41 = fadd float %23, %34 ; [#uses=1]
+ %42 = fadd float %24, %35 ; [#uses=1]
+ store float %42, float* %17, align 4
+ store float %41, float* %12, align 4
+ store float %40, float* %7, align 4
+ %43 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %43, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btUniformScalingShape15setLocalScalingERK9btVector3(%struct.btUniformScalingShape* nocapture %this, %struct.btQuadWord* %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 6 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %6(%struct.btConvexShape* %1, %struct.btQuadWord* %scaling)
+ ret void
+}
+
+; [#uses=1]
+define %struct.btQuadWord* @_ZNK21btUniformScalingShape15getLocalScalingEv(%struct.btUniformScalingShape* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 7 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to %struct.btQuadWord* (%struct.btConvexShape*)* ; [#uses=1]
+ %7 = tail call %struct.btQuadWord* %6(%struct.btConvexShape* %1) ; [#uses=1]
+ ret %struct.btQuadWord* %7
+}
+
+; [#uses=1]
+define void @_ZN21btUniformScalingShape9setMarginEf(%struct.btUniformScalingShape* nocapture %this, float %margin) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 10 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btConvexShape*, float)* ; [#uses=1]
+ tail call void %6(%struct.btConvexShape* %1, float %margin)
+ ret void
+}
+
+; [#uses=1]
+define float @_ZNK21btUniformScalingShape9getMarginEv(%struct.btUniformScalingShape* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 11 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %7 = tail call float %6(%struct.btConvexShape* %1) ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = fmul float %7, %9 ; [#uses=1]
+ ret float %10
+}
+
+; [#uses=1]
+define i32 @_ZNK21btUniformScalingShape36getNumPreferredPenetrationDirectionsEv(%struct.btUniformScalingShape* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 19 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i32 (%struct.btConvexShape*)* ; [#uses=1]
+ %7 = tail call i32 %6(%struct.btConvexShape* %1) ; [#uses=1]
+ ret i32 %7
+}
+
+; [#uses=1]
+define void @_ZNK21btUniformScalingShape32getPreferredPenetrationDirectionEiR9btVector3(%struct.btUniformScalingShape* nocapture %this, i32 %index, %struct.btQuadWord* %penetrationVector) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btConvexShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btConvexShape* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 20 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btConvexShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %6(%struct.btConvexShape* %1, i32 %index, %struct.btQuadWord* %penetrationVector)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btUniformScalingShapeD0Ev(%struct.btUniformScalingShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btUniformScalingShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btUniformScalingShape* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btUniformScalingShapeD1Ev(%struct.btUniformScalingShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btUniformScalingShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btUniformScalingShapeD2Ev(%struct.btUniformScalingShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btUniformScalingShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btUniformScalingShapeC1EP13btConvexShapef(%struct.btUniformScalingShape* %this, %struct.btConvexShape* %convexChildShape, float %uniformScalingFactor) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeC2Ev(%struct.btConvexShape* %0)
+ %1 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btUniformScalingShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btConvexShape* %convexChildShape, %struct.btConvexShape** %2, align 4
+ %3 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 2 ; [#uses=1]
+ store float %uniformScalingFactor, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btUniformScalingShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 14, i32* %4, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN14btContactArray14merge_contactsERKS_b(%struct.btContactArray* nocapture %this, %struct.btContactArray* nocapture %contacts, i8 zeroext %normal_contact_average) align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %keycontacts = alloca %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>", align 8 ; [#uses=5]
+ %coincident_normals = alloca [8 x %struct.btQuadWord], align 8 ; [#uses=7]
+ %1 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0, i32 3 ; [#uses=8]
+ %2 = load %struct.GIM_CONTACT** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.GIM_CONTACT* %2, null ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI11GIM_CONTACTE5clearEv.exit, label %bb.i.i
+
+bb.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %6 = bitcast %struct.GIM_CONTACT* %2 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.GIM_CONTACT* null, %struct.GIM_CONTACT** %1, align 4
+ br label %_ZN20btAlignedObjectArrayI11GIM_CONTACTE5clearEv.exit
+
+_ZN20btAlignedObjectArrayI11GIM_CONTACTE5clearEv.exit: ; preds = %bb2.i.i, %entry
+ %7 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.GIM_CONTACT* null, %struct.GIM_CONTACT** %1, align 4
+ %8 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0, i32 1 ; [#uses=12]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0, i32 2 ; [#uses=3]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btContactArray* %contacts, i32 0, i32 0, i32 1 ; [#uses=2]
+ %11 = load i32* %10, align 4 ; [#uses=4]
+ switch i32 %11, label %bb3 [
+ i32 0, label %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENED1Ev.exit52
+ i32 1, label %bb1.i57
+ ]
+
+bb1.i57: ; preds = %_ZN20btAlignedObjectArrayI11GIM_CONTACTE5clearEv.exit
+ %12 = getelementptr inbounds %struct.btContactArray* %contacts, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load %struct.GIM_CONTACT** %12, align 4 ; [#uses=11]
+ %14 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI11GIM_CONTACTE7reserveEi(%"struct.btAlignedObjectArray<GIM_CONTACT>"* %14, i32 1) inlinehint
+ %.pre.i55 = load i32* %8, align 4 ; [#uses=13]
+ %.pre = load %struct.GIM_CONTACT** %1, align 4 ; [#uses=12]
+ %15 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i55 ; [#uses=1]
+ %16 = icmp eq %struct.GIM_CONTACT* %15, null ; [#uses=1]
+ br i1 %16, label %_ZN20btAlignedObjectArrayI11GIM_CONTACTE9push_backERKS0_.exit60, label %bb2.i59
+
+bb2.i59: ; preds = %bb1.i57
+ %17 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i55, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.GIM_CONTACT* %13, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i55, i32 0, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.GIM_CONTACT* %13, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i55, i32 0, i32 0, i32 2 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.GIM_CONTACT* %13, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i55, i32 0, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.GIM_CONTACT* %13, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i55, i32 1, i32 0, i32 0 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.GIM_CONTACT* %13, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i55, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.GIM_CONTACT* %13, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i55, i32 1, i32 0, i32 2 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.GIM_CONTACT* %13, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i55, i32 1, i32 0, i32 3 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.GIM_CONTACT* %13, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.GIM_CONTACT* %13, i32 0, i32 2 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i55, i32 2 ; [#uses=1]
+ store float %42, float* %43, align 4
+ %44 = getelementptr inbounds %struct.GIM_CONTACT* %13, i32 0, i32 4 ; [#uses=1]
+ %45 = load i32* %44, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i55, i32 4 ; [#uses=1]
+ store i32 %45, i32* %46, align 4
+ %47 = getelementptr inbounds %struct.GIM_CONTACT* %13, i32 0, i32 5 ; [#uses=1]
+ %48 = load i32* %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i55, i32 5 ; [#uses=1]
+ store i32 %48, i32* %49, align 4
+ %.pre5.i58 = load i32* %8, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI11GIM_CONTACTE9push_backERKS0_.exit60
+
+_ZN20btAlignedObjectArrayI11GIM_CONTACTE9push_backERKS0_.exit60: ; preds = %bb2.i59, %bb1.i57
+ %50 = phi i32 [ %.pre.i55, %bb1.i57 ], [ %.pre5.i58, %bb2.i59 ] ; [#uses=1]
+ %51 = add nsw i32 %50, 1 ; [#uses=1]
+ store i32 %51, i32* %8, align 4
+ ret void
+
+bb3: ; preds = %_ZN20btAlignedObjectArrayI11GIM_CONTACTE5clearEv.exit
+ %52 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %keycontacts, i32 0, i32 4 ; [#uses=8]
+ store i8 1, i8* %52, align 8
+ %53 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %keycontacts, i32 0, i32 3 ; [#uses=16]
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %53, align 4
+ %54 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %keycontacts, i32 0, i32 1 ; [#uses=9]
+ store i32 0, i32* %54, align 4
+ %55 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %keycontacts, i32 0, i32 2 ; [#uses=5]
+ store i32 0, i32* %55, align 8
+ %56 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %56, label %bb.i2.i, label %bb6.preheader
+
+bb.i2.i: ; preds = %bb3
+ %57 = shl i32 %11, 3 ; [#uses=1]
+ %58 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %57, i32 16)
+ to label %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE8allocateEi.exit.i unwind label %lpad ; [#uses=3]
+
+_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE8allocateEi.exit.i: ; preds = %bb.i2.i
+ %phitmp.i = bitcast i8* %58 to %struct.CONTACT_KEY_TOKEN* ; [#uses=1]
+ %59 = load i32* %54, align 4 ; [#uses=2]
+ %60 = icmp sgt i32 %59, 0 ; [#uses=1]
+ br i1 %60, label %bb.i4.i, label %_ZNK20btAlignedObjectArrayI17CONTACT_KEY_TOKENE4copyEiiPS0_.exit.i
+
+bb.i4.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE8allocateEi.exit.i
+ %indvar.i.i = phi i32 [ %indvar.next.i.i, %bb3.i.i ], [ 0, %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE8allocateEi.exit.i ] ; [#uses=4]
+ %tmp = shl i32 %indvar.i.i, 3 ; [#uses=2]
+ %scevgep133 = getelementptr i8* %58, i32 %tmp ; [#uses=2]
+ %61 = icmp eq i8* %scevgep133, null ; [#uses=1]
+ br i1 %61, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %tmp135139 = or i32 %tmp, 4 ; [#uses=1]
+ %scevgep136 = getelementptr i8* %58, i32 %tmp135139 ; [#uses=1]
+ %scevgep12.i.i = bitcast i8* %scevgep136 to i32* ; [#uses=1]
+ %scevgep10.i.i = bitcast i8* %scevgep133 to i32* ; [#uses=1]
+ %62 = load %struct.CONTACT_KEY_TOKEN** %53, align 4 ; [#uses=2]
+ %scevgep89.i.i = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %62, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %63 = load i32* %scevgep89.i.i, align 4 ; [#uses=1]
+ store i32 %63, i32* %scevgep10.i.i, align 4
+ %scevgep11.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %62, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %64 = load i32* %scevgep11.i.i, align 4 ; [#uses=1]
+ store i32 %64, i32* %scevgep12.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond129 = icmp eq i32 %indvar.next.i.i, %59 ; [#uses=1]
+ br i1 %exitcond129, label %_ZNK20btAlignedObjectArrayI17CONTACT_KEY_TOKENE4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI17CONTACT_KEY_TOKENE4copyEiiPS0_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE8allocateEi.exit.i
+ %65 = load %struct.CONTACT_KEY_TOKEN** %53, align 4 ; [#uses=2]
+ %66 = icmp eq %struct.CONTACT_KEY_TOKEN* %65, null ; [#uses=1]
+ br i1 %66, label %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE10deallocateEv.exit.i, label %bb.i.i66
+
+bb.i.i66: ; preds = %_ZNK20btAlignedObjectArrayI17CONTACT_KEY_TOKENE4copyEiiPS0_.exit.i
+ %67 = load i8* %52, align 8 ; [#uses=1]
+ %toBool.i.i65 = icmp eq i8 %67, 0 ; [#uses=1]
+ br i1 %toBool.i.i65, label %bb2.i.i68, label %bb1.i.i67
+
+bb1.i.i67: ; preds = %bb.i.i66
+ %68 = bitcast %struct.CONTACT_KEY_TOKEN* %65 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %68)
+ to label %bb2.i.i68 unwind label %lpad
+
+bb2.i.i68: ; preds = %bb1.i.i67, %bb.i.i66
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %53, align 4
+ br label %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE10deallocateEv.exit.i: ; preds = %bb2.i.i68, %_ZNK20btAlignedObjectArrayI17CONTACT_KEY_TOKENE4copyEiiPS0_.exit.i
+ store i8 1, i8* %52, align 8
+ store %struct.CONTACT_KEY_TOKEN* %phitmp.i, %struct.CONTACT_KEY_TOKEN** %53, align 4
+ store i32 %11, i32* %55, align 8
+ %.pre140.pre = load i32* %54, align 4 ; [#uses=1]
+ br label %bb6.preheader
+
+bb6.preheader: ; preds = %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE10deallocateEv.exit.i, %bb3
+ %.pre140 = phi i32 [ 0, %bb3 ], [ %.pre140.pre, %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE10deallocateEv.exit.i ] ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btContactArray* %contacts, i32 0, i32 0, i32 3 ; [#uses=3]
+ br label %bb6
+
+bb4: ; preds = %bb6
+ %70 = load %struct.GIM_CONTACT** %69, align 4 ; [#uses=3]
+ %scevgep127128 = getelementptr inbounds %struct.GIM_CONTACT* %70, i32 %115, i32 0, i32 0, i32 0 ; [#uses=1]
+ %71 = load float* %scevgep127128, align 4 ; [#uses=1]
+ %72 = fmul float %71, 1.000000e+03 ; [#uses=1]
+ %73 = fadd float %72, 1.000000e+00 ; [#uses=1]
+ %74 = fptosi float %73 to i32 ; [#uses=1]
+ %scevgep126 = getelementptr %struct.GIM_CONTACT* %70, i32 %115, i32 0, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %scevgep126, align 4 ; [#uses=1]
+ %76 = fmul float %75, 1.333000e+03 ; [#uses=1]
+ %77 = fptosi float %76 to i32 ; [#uses=1]
+ %scevgep125 = getelementptr %struct.GIM_CONTACT* %70, i32 %115, i32 0, i32 0, i32 2 ; [#uses=1]
+ %78 = load float* %scevgep125, align 4 ; [#uses=1]
+ %79 = fmul float %78, 2.133000e+03 ; [#uses=1]
+ %80 = fadd float %79, 3.000000e+00 ; [#uses=1]
+ %81 = fptosi float %80 to i32 ; [#uses=1]
+ %82 = shl i32 %77, 4 ; [#uses=1]
+ %83 = shl i32 %81, 8 ; [#uses=1]
+ %84 = add i32 %82, %74 ; [#uses=1]
+ %85 = add i32 %84, %83 ; [#uses=1]
+ %86 = load i32* %55, align 8 ; [#uses=2]
+ %87 = icmp eq i32 %86, %114 ; [#uses=1]
+ br i1 %87, label %bb.i83, label %bb1.i91
+
+bb.i83: ; preds = %bb4
+ %88 = icmp eq i32 %114, 0 ; [#uses=1]
+ %89 = shl i32 %114, 1 ; [#uses=1]
+ %iftmp.280.0.i.i = select i1 %88, i32 1, i32 %89 ; [#uses=4]
+ %90 = icmp slt i32 %86, %iftmp.280.0.i.i ; [#uses=1]
+ br i1 %90, label %bb.i.i84, label %bb1.i91
+
+bb.i.i84: ; preds = %bb.i83
+ %91 = icmp eq i32 %iftmp.280.0.i.i, 0 ; [#uses=1]
+ br i1 %91, label %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i84
+ %92 = shl i32 %iftmp.280.0.i.i, 3 ; [#uses=1]
+ %93 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %92, i32 16)
+ to label %.noexc93 unwind label %lpad ; [#uses=1]
+
+.noexc93: ; preds = %bb.i2.i.i
+ %phitmp.i.i = bitcast i8* %93 to %struct.CONTACT_KEY_TOKEN* ; [#uses=1]
+ %.pre.i85 = load i32* %54, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE8allocateEi.exit.i.i: ; preds = %.noexc93, %bb.i.i84
+ %94 = phi i32 [ %.pre.i85, %.noexc93 ], [ %114, %bb.i.i84 ] ; [#uses=2]
+ %95 = phi %struct.CONTACT_KEY_TOKEN* [ %phitmp.i.i, %.noexc93 ], [ null, %bb.i.i84 ] ; [#uses=4]
+ %96 = icmp sgt i32 %94, 0 ; [#uses=1]
+ br i1 %96, label %bb.i4.i.i, label %_ZNK20btAlignedObjectArrayI17CONTACT_KEY_TOKENE4copyEiiPS0_.exit.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE8allocateEi.exit.i.i
+ %indvar.i.i.i = phi i32 [ %indvar.next.i.i.i, %bb3.i.i.i ], [ 0, %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE8allocateEi.exit.i.i ] ; [#uses=6]
+ %scevgep.i.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %95, i32 %indvar.i.i.i ; [#uses=1]
+ %97 = icmp eq %struct.CONTACT_KEY_TOKEN* %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %97, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %scevgep12.i.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %95, i32 %indvar.i.i.i, i32 1 ; [#uses=1]
+ %scevgep10.i.i.i = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %95, i32 %indvar.i.i.i, i32 0 ; [#uses=1]
+ %98 = load %struct.CONTACT_KEY_TOKEN** %53, align 4 ; [#uses=2]
+ %scevgep89.i.i.i = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %98, i32 %indvar.i.i.i, i32 0 ; [#uses=1]
+ %99 = load i32* %scevgep89.i.i.i, align 4 ; [#uses=1]
+ store i32 %99, i32* %scevgep10.i.i.i, align 4
+ %scevgep11.i.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %98, i32 %indvar.i.i.i, i32 1 ; [#uses=1]
+ %100 = load i32* %scevgep11.i.i.i, align 4 ; [#uses=1]
+ store i32 %100, i32* %scevgep12.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond118 = icmp eq i32 %indvar.next.i.i.i, %94 ; [#uses=1]
+ br i1 %exitcond118, label %_ZNK20btAlignedObjectArrayI17CONTACT_KEY_TOKENE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayI17CONTACT_KEY_TOKENE4copyEiiPS0_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE8allocateEi.exit.i.i
+ %101 = load %struct.CONTACT_KEY_TOKEN** %53, align 4 ; [#uses=2]
+ %102 = icmp eq %struct.CONTACT_KEY_TOKEN* %101, null ; [#uses=1]
+ br i1 %102, label %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE10deallocateEv.exit.i.i, label %bb.i.i.i88
+
+bb.i.i.i88: ; preds = %_ZNK20btAlignedObjectArrayI17CONTACT_KEY_TOKENE4copyEiiPS0_.exit.i.i
+ %103 = load i8* %52, align 8 ; [#uses=1]
+ %toBool.i.i.i87 = icmp eq i8 %103, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i87, label %bb2.i.i.i90, label %bb1.i.i.i89
+
+bb1.i.i.i89: ; preds = %bb.i.i.i88
+ %104 = bitcast %struct.CONTACT_KEY_TOKEN* %101 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %104)
+ to label %bb2.i.i.i90 unwind label %lpad
+
+bb2.i.i.i90: ; preds = %bb1.i.i.i89, %bb.i.i.i88
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %53, align 4
+ br label %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i90, %_ZNK20btAlignedObjectArrayI17CONTACT_KEY_TOKENE4copyEiiPS0_.exit.i.i
+ store i8 1, i8* %52, align 8
+ store %struct.CONTACT_KEY_TOKEN* %95, %struct.CONTACT_KEY_TOKEN** %53, align 4
+ store i32 %iftmp.280.0.i.i, i32* %55, align 8
+ %.pre9.i = load i32* %54, align 4 ; [#uses=1]
+ br label %bb1.i91
+
+bb1.i91: ; preds = %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE10deallocateEv.exit.i.i, %bb.i83, %bb4
+ %105 = phi i32 [ %.pre9.i, %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE10deallocateEv.exit.i.i ], [ %114, %bb4 ], [ %114, %bb.i83 ] ; [#uses=4]
+ %106 = load %struct.CONTACT_KEY_TOKEN** %53, align 4 ; [#uses=3]
+ %107 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %106, i32 %105 ; [#uses=1]
+ %108 = icmp eq %struct.CONTACT_KEY_TOKEN* %107, null ; [#uses=1]
+ br i1 %108, label %invcont5, label %bb2.i92
+
+bb2.i92: ; preds = %bb1.i91
+ %109 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %106, i32 %105, i32 0 ; [#uses=1]
+ store i32 %85, i32* %109, align 4
+ %110 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %106, i32 %105, i32 1 ; [#uses=1]
+ store i32 %115, i32* %110, align 4
+ %.pre10.i = load i32* %54, align 4 ; [#uses=1]
+ br label %invcont5
+
+invcont5: ; preds = %bb2.i92, %bb1.i91
+ %111 = phi i32 [ %105, %bb1.i91 ], [ %.pre10.i, %bb2.i92 ] ; [#uses=1]
+ %112 = add nsw i32 %111, 1 ; [#uses=2]
+ store i32 %112, i32* %54, align 4
+ %113 = add nsw i32 %115, 1 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %invcont5, %bb6.preheader
+ %114 = phi i32 [ %112, %invcont5 ], [ %.pre140, %bb6.preheader ] ; [#uses=8]
+ %115 = phi i32 [ %113, %invcont5 ], [ 0, %bb6.preheader ] ; [#uses=6]
+ %116 = load i32* %10, align 4 ; [#uses=1]
+ %117 = icmp sgt i32 %116, %115 ; [#uses=1]
+ br i1 %117, label %bb4, label %bb8
+
+bb8: ; preds = %bb6
+ %118 = icmp sgt i32 %114, 1 ; [#uses=1]
+ br i1 %118, label %bb.i81, label %bb12
+
+bb.i81: ; preds = %bb8
+ %119 = add nsw i32 %114, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE17quickSortInternalI22CONTACT_KEY_TOKEN_COMPEEvT_ii(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %keycontacts, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 0, i32 %119) nounwind
+ br label %bb12
+
+bb12: ; preds = %bb.i81, %bb8
+ %120 = load %struct.CONTACT_KEY_TOKEN** %53, align 4 ; [#uses=2]
+ %121 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %120, i32 0, i32 0 ; [#uses=1]
+ %122 = load i32* %121, align 4 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %120, i32 0, i32 1 ; [#uses=1]
+ %124 = load i32* %123, align 4 ; [#uses=11]
+ %125 = load %struct.GIM_CONTACT** %69, align 4 ; [#uses=11]
+ %126 = load i32* %8, align 4 ; [#uses=4]
+ %127 = load i32* %9, align 4 ; [#uses=1]
+ %128 = icmp eq i32 %127, %126 ; [#uses=1]
+ br i1 %128, label %bb.i74, label %bb1.i75
+
+bb.i74: ; preds = %bb12
+ %129 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0 ; [#uses=1]
+ %130 = icmp eq i32 %126, 0 ; [#uses=1]
+ %131 = shl i32 %126, 1 ; [#uses=1]
+ %iftmp.278.0.i.i72 = select i1 %130, i32 1, i32 %131 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI11GIM_CONTACTE7reserveEi(%"struct.btAlignedObjectArray<GIM_CONTACT>"* %129, i32 %iftmp.278.0.i.i72) inlinehint
+ to label %.noexc78 unwind label %lpad
+
+.noexc78: ; preds = %bb.i74
+ %.pre.i73 = load i32* %8, align 4 ; [#uses=1]
+ br label %bb1.i75
+
+bb1.i75: ; preds = %.noexc78, %bb12
+ %132 = phi i32 [ %.pre.i73, %.noexc78 ], [ %126, %bb12 ] ; [#uses=13]
+ %133 = load %struct.GIM_CONTACT** %1, align 4 ; [#uses=13]
+ %134 = getelementptr inbounds %struct.GIM_CONTACT* %133, i32 %132 ; [#uses=1]
+ %135 = icmp eq %struct.GIM_CONTACT* %134, null ; [#uses=1]
+ br i1 %135, label %invcont13, label %bb2.i77
+
+bb2.i77: ; preds = %bb1.i75
+ %136 = getelementptr inbounds %struct.GIM_CONTACT* %133, i32 %132, i32 0, i32 0, i32 0 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.GIM_CONTACT* %125, i32 %124, i32 0, i32 0, i32 0 ; [#uses=1]
+ %138 = load float* %137, align 4 ; [#uses=1]
+ store float %138, float* %136, align 4
+ %139 = getelementptr inbounds %struct.GIM_CONTACT* %133, i32 %132, i32 0, i32 0, i32 1 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.GIM_CONTACT* %125, i32 %124, i32 0, i32 0, i32 1 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ store float %141, float* %139, align 4
+ %142 = getelementptr inbounds %struct.GIM_CONTACT* %133, i32 %132, i32 0, i32 0, i32 2 ; [#uses=1]
+ %143 = getelementptr inbounds %struct.GIM_CONTACT* %125, i32 %124, i32 0, i32 0, i32 2 ; [#uses=1]
+ %144 = load float* %143, align 4 ; [#uses=1]
+ store float %144, float* %142, align 4
+ %145 = getelementptr inbounds %struct.GIM_CONTACT* %133, i32 %132, i32 0, i32 0, i32 3 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.GIM_CONTACT* %125, i32 %124, i32 0, i32 0, i32 3 ; [#uses=1]
+ %147 = load float* %146, align 4 ; [#uses=1]
+ store float %147, float* %145, align 4
+ %148 = getelementptr inbounds %struct.GIM_CONTACT* %133, i32 %132, i32 1, i32 0, i32 0 ; [#uses=1]
+ %149 = getelementptr inbounds %struct.GIM_CONTACT* %125, i32 %124, i32 1, i32 0, i32 0 ; [#uses=1]
+ %150 = load float* %149, align 4 ; [#uses=1]
+ store float %150, float* %148, align 4
+ %151 = getelementptr inbounds %struct.GIM_CONTACT* %133, i32 %132, i32 1, i32 0, i32 1 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.GIM_CONTACT* %125, i32 %124, i32 1, i32 0, i32 1 ; [#uses=1]
+ %153 = load float* %152, align 4 ; [#uses=1]
+ store float %153, float* %151, align 4
+ %154 = getelementptr inbounds %struct.GIM_CONTACT* %133, i32 %132, i32 1, i32 0, i32 2 ; [#uses=1]
+ %155 = getelementptr inbounds %struct.GIM_CONTACT* %125, i32 %124, i32 1, i32 0, i32 2 ; [#uses=1]
+ %156 = load float* %155, align 4 ; [#uses=1]
+ store float %156, float* %154, align 4
+ %157 = getelementptr inbounds %struct.GIM_CONTACT* %133, i32 %132, i32 1, i32 0, i32 3 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.GIM_CONTACT* %125, i32 %124, i32 1, i32 0, i32 3 ; [#uses=1]
+ %159 = load float* %158, align 4 ; [#uses=1]
+ store float %159, float* %157, align 4
+ %160 = getelementptr inbounds %struct.GIM_CONTACT* %125, i32 %124, i32 2 ; [#uses=1]
+ %161 = load float* %160, align 4 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.GIM_CONTACT* %133, i32 %132, i32 2 ; [#uses=1]
+ store float %161, float* %162, align 4
+ %163 = getelementptr inbounds %struct.GIM_CONTACT* %125, i32 %124, i32 4 ; [#uses=1]
+ %164 = load i32* %163, align 4 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.GIM_CONTACT* %133, i32 %132, i32 4 ; [#uses=1]
+ store i32 %164, i32* %165, align 4
+ %166 = getelementptr inbounds %struct.GIM_CONTACT* %125, i32 %124, i32 5 ; [#uses=1]
+ %167 = load i32* %166, align 4 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.GIM_CONTACT* %133, i32 %132, i32 5 ; [#uses=1]
+ store i32 %167, i32* %168, align 4
+ %.pre5.i76 = load i32* %8, align 4 ; [#uses=1]
+ %.pre141 = load %struct.GIM_CONTACT** %1, align 4 ; [#uses=1]
+ br label %invcont13
+
+invcont13: ; preds = %bb2.i77, %bb1.i75
+ %169 = phi %struct.GIM_CONTACT* [ %133, %bb1.i75 ], [ %.pre141, %bb2.i77 ] ; [#uses=1]
+ %170 = phi i32 [ %132, %bb1.i75 ], [ %.pre5.i76, %bb2.i77 ] ; [#uses=1]
+ %171 = add nsw i32 %170, 1 ; [#uses=1]
+ store i32 %171, i32* %8, align 4
+ %toBool18 = icmp eq i8 %normal_contact_average, 0 ; [#uses=1]
+ %toBool24.not = icmp ne i8 %normal_contact_average, 0 ; [#uses=1]
+ %172 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0 ; [#uses=1]
+ br label %bb30
+
+bb14: ; preds = %bb30
+ %scevgep113114 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %277, i32 %indvar, i32 0 ; [#uses=1]
+ %173 = load i32* %scevgep113114, align 4 ; [#uses=2]
+ %scevgep112 = getelementptr %struct.CONTACT_KEY_TOKEN* %277, i32 %indvar, i32 1 ; [#uses=1]
+ %174 = load i32* %scevgep112, align 4 ; [#uses=17]
+ %175 = load %struct.GIM_CONTACT** %69, align 4 ; [#uses=17]
+ %176 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174 ; [#uses=1]
+ %177 = icmp eq i32 %last_key.0, %173 ; [#uses=1]
+ br i1 %177, label %bb15, label %bb23
+
+bb15: ; preds = %bb14
+ %178 = getelementptr inbounds %struct.GIM_CONTACT* %pcontact.1, i32 0, i32 2 ; [#uses=1]
+ %179 = load float* %178, align 4 ; [#uses=2]
+ %180 = fadd float %179, 0xBEE4F8B580000000 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 2 ; [#uses=1]
+ %182 = load float* %181, align 4 ; [#uses=2]
+ %183 = fcmp ogt float %180, %182 ; [#uses=1]
+ br i1 %183, label %bb16, label %bb17
+
+bb16: ; preds = %bb15
+ %184 = bitcast %struct.GIM_CONTACT* %pcontact.1 to i8* ; [#uses=1]
+ %185 = bitcast %struct.GIM_CONTACT* %176 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %184, i8* %185, i32 48, i32 4, i1 false)
+ br label %bb29
+
+bb17: ; preds = %bb15
+ br i1 %toBool18, label %bb29, label %bb19
+
+bb19: ; preds = %bb17
+ %186 = fsub float %179, %182 ; [#uses=1]
+ %187 = call float @fabsf(float %186) nounwind readnone ; [#uses=1]
+ %188 = fcmp olt float %187, 0x3EE4F8B580000000 ; [#uses=1]
+ %189 = icmp slt i32 %coincident_count.1, 8 ; [#uses=1]
+ %or.cond = and i1 %188, %189 ; [#uses=1]
+ br i1 %or.cond, label %bb22, label %bb29
+
+bb22: ; preds = %bb19
+ %190 = getelementptr inbounds [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %coincident_count.1, i32 0, i32 0 ; [#uses=1]
+ %191 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 1, i32 0, i32 0 ; [#uses=1]
+ %192 = load float* %191, align 4 ; [#uses=1]
+ store float %192, float* %190, align 8
+ %193 = getelementptr inbounds [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %coincident_count.1, i32 0, i32 1 ; [#uses=1]
+ %194 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 1, i32 0, i32 1 ; [#uses=1]
+ %195 = load float* %194, align 4 ; [#uses=1]
+ store float %195, float* %193, align 4
+ %196 = getelementptr inbounds [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %coincident_count.1, i32 0, i32 2 ; [#uses=1]
+ %197 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 1, i32 0, i32 2 ; [#uses=1]
+ %198 = load float* %197, align 4 ; [#uses=1]
+ store float %198, float* %196, align 8
+ %199 = getelementptr inbounds [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %coincident_count.1, i32 0, i32 3 ; [#uses=1]
+ %200 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 1, i32 0, i32 3 ; [#uses=1]
+ %201 = load float* %200, align 4 ; [#uses=1]
+ store float %201, float* %199, align 4
+ %202 = add nsw i32 %coincident_count.1, 1 ; [#uses=1]
+ br label %bb29
+
+bb23: ; preds = %bb14
+ %203 = icmp sgt i32 %coincident_count.1, 0 ; [#uses=2]
+ %or.cond47 = and i1 %toBool24.not, %203 ; [#uses=1]
+ br i1 %or.cond47, label %bb26, label %bb27
+
+bb26: ; preds = %bb23
+ %204 = getelementptr inbounds %struct.GIM_CONTACT* %pcontact.1, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %205 = load float* %204, align 4 ; [#uses=2]
+ %206 = getelementptr inbounds %struct.GIM_CONTACT* %pcontact.1, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %207 = load float* %206, align 4 ; [#uses=2]
+ %208 = getelementptr inbounds %struct.GIM_CONTACT* %pcontact.1, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %209 = load float* %208, align 4 ; [#uses=2]
+ br i1 %203, label %bb.i61, label %bb2.i62
+
+bb.i61: ; preds = %bb.i61, %bb26
+ %i.014.i = phi i32 [ %216, %bb.i61 ], [ 0, %bb26 ] ; [#uses=4]
+ %vec_sum.0.0.013.i = phi float [ %211, %bb.i61 ], [ %205, %bb26 ] ; [#uses=1]
+ %vec_sum.0.1.012.i = phi float [ %213, %bb.i61 ], [ %207, %bb26 ] ; [#uses=1]
+ %vec_sum.0.2.011.i = phi float [ %215, %bb.i61 ], [ %209, %bb26 ] ; [#uses=1]
+ %scevgep21.i = getelementptr [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %i.014.i, i32 0, i32 2 ; [#uses=1]
+ %scevgep20.i = getelementptr [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %i.014.i, i32 0, i32 1 ; [#uses=1]
+ %scevgep19.i = getelementptr [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %i.014.i, i32 0, i32 0 ; [#uses=1]
+ %210 = load float* %scevgep19.i, align 8 ; [#uses=1]
+ %211 = fadd float %vec_sum.0.0.013.i, %210 ; [#uses=2]
+ %212 = load float* %scevgep20.i, align 4 ; [#uses=1]
+ %213 = fadd float %vec_sum.0.1.012.i, %212 ; [#uses=2]
+ %214 = load float* %scevgep21.i, align 8 ; [#uses=1]
+ %215 = fadd float %vec_sum.0.2.011.i, %214 ; [#uses=2]
+ %216 = add nsw i32 %i.014.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %216, %coincident_count.1 ; [#uses=1]
+ br i1 %exitcond, label %bb2.i62, label %bb.i61
+
+bb2.i62: ; preds = %bb.i61, %bb26
+ %vec_sum.0.0.0.lcssa.i = phi float [ %205, %bb26 ], [ %211, %bb.i61 ] ; [#uses=3]
+ %vec_sum.0.1.0.lcssa.i = phi float [ %207, %bb26 ], [ %213, %bb.i61 ] ; [#uses=3]
+ %vec_sum.0.2.0.lcssa.i = phi float [ %209, %bb26 ], [ %215, %bb.i61 ] ; [#uses=3]
+ %217 = fmul float %vec_sum.0.0.0.lcssa.i, %vec_sum.0.0.0.lcssa.i ; [#uses=1]
+ %218 = fmul float %vec_sum.0.1.0.lcssa.i, %vec_sum.0.1.0.lcssa.i ; [#uses=1]
+ %219 = fadd float %217, %218 ; [#uses=1]
+ %220 = fmul float %vec_sum.0.2.0.lcssa.i, %vec_sum.0.2.0.lcssa.i ; [#uses=1]
+ %221 = fadd float %219, %220 ; [#uses=2]
+ %222 = fcmp olt float %221, 0x3EE4F8B580000000 ; [#uses=1]
+ br i1 %222, label %bb27, label %bb3.i
+
+bb3.i: ; preds = %bb2.i62
+ %223 = call float @sqrtf(float %221) nounwind readonly ; [#uses=1]
+ %224 = fdiv float 1.000000e+00, %223 ; [#uses=3]
+ %225 = fmul float %vec_sum.0.2.0.lcssa.i, %224 ; [#uses=1]
+ %226 = fmul float %vec_sum.0.1.0.lcssa.i, %224 ; [#uses=1]
+ %227 = fmul float %vec_sum.0.0.0.lcssa.i, %224 ; [#uses=1]
+ store float %227, float* %204, align 4
+ store float %226, float* %206, align 4
+ store float %225, float* %208, align 4
+ %228 = getelementptr inbounds %struct.GIM_CONTACT* %pcontact.1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %228, align 4
+ br label %bb27
+
+bb27: ; preds = %bb3.i, %bb2.i62, %bb23
+ %coincident_count.2 = phi i32 [ 0, %bb3.i ], [ %coincident_count.1, %bb23 ], [ 0, %bb2.i62 ] ; [#uses=1]
+ %229 = load i32* %8, align 4 ; [#uses=4]
+ %230 = load i32* %9, align 4 ; [#uses=1]
+ %231 = icmp eq i32 %230, %229 ; [#uses=1]
+ br i1 %231, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb27
+ %232 = icmp eq i32 %229, 0 ; [#uses=1]
+ %233 = shl i32 %229, 1 ; [#uses=1]
+ %iftmp.278.0.i.i = select i1 %232, i32 1, i32 %233 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI11GIM_CONTACTE7reserveEi(%"struct.btAlignedObjectArray<GIM_CONTACT>"* %172, i32 %iftmp.278.0.i.i) inlinehint
+ to label %.noexc53 unwind label %lpad
+
+.noexc53: ; preds = %bb.i
+ %.pre.i = load i32* %8, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %.noexc53, %bb27
+ %234 = phi i32 [ %.pre.i, %.noexc53 ], [ %229, %bb27 ] ; [#uses=13]
+ %235 = load %struct.GIM_CONTACT** %1, align 4 ; [#uses=13]
+ %236 = getelementptr inbounds %struct.GIM_CONTACT* %235, i32 %234 ; [#uses=1]
+ %237 = icmp eq %struct.GIM_CONTACT* %236, null ; [#uses=1]
+ br i1 %237, label %invcont28, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %238 = getelementptr inbounds %struct.GIM_CONTACT* %235, i32 %234, i32 0, i32 0, i32 0 ; [#uses=1]
+ %239 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 0, i32 0, i32 0 ; [#uses=1]
+ %240 = load float* %239, align 4 ; [#uses=1]
+ store float %240, float* %238, align 4
+ %241 = getelementptr inbounds %struct.GIM_CONTACT* %235, i32 %234, i32 0, i32 0, i32 1 ; [#uses=1]
+ %242 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 0, i32 0, i32 1 ; [#uses=1]
+ %243 = load float* %242, align 4 ; [#uses=1]
+ store float %243, float* %241, align 4
+ %244 = getelementptr inbounds %struct.GIM_CONTACT* %235, i32 %234, i32 0, i32 0, i32 2 ; [#uses=1]
+ %245 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 0, i32 0, i32 2 ; [#uses=1]
+ %246 = load float* %245, align 4 ; [#uses=1]
+ store float %246, float* %244, align 4
+ %247 = getelementptr inbounds %struct.GIM_CONTACT* %235, i32 %234, i32 0, i32 0, i32 3 ; [#uses=1]
+ %248 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 0, i32 0, i32 3 ; [#uses=1]
+ %249 = load float* %248, align 4 ; [#uses=1]
+ store float %249, float* %247, align 4
+ %250 = getelementptr inbounds %struct.GIM_CONTACT* %235, i32 %234, i32 1, i32 0, i32 0 ; [#uses=1]
+ %251 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 1, i32 0, i32 0 ; [#uses=1]
+ %252 = load float* %251, align 4 ; [#uses=1]
+ store float %252, float* %250, align 4
+ %253 = getelementptr inbounds %struct.GIM_CONTACT* %235, i32 %234, i32 1, i32 0, i32 1 ; [#uses=1]
+ %254 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 1, i32 0, i32 1 ; [#uses=1]
+ %255 = load float* %254, align 4 ; [#uses=1]
+ store float %255, float* %253, align 4
+ %256 = getelementptr inbounds %struct.GIM_CONTACT* %235, i32 %234, i32 1, i32 0, i32 2 ; [#uses=1]
+ %257 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 1, i32 0, i32 2 ; [#uses=1]
+ %258 = load float* %257, align 4 ; [#uses=1]
+ store float %258, float* %256, align 4
+ %259 = getelementptr inbounds %struct.GIM_CONTACT* %235, i32 %234, i32 1, i32 0, i32 3 ; [#uses=1]
+ %260 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 1, i32 0, i32 3 ; [#uses=1]
+ %261 = load float* %260, align 4 ; [#uses=1]
+ store float %261, float* %259, align 4
+ %262 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 2 ; [#uses=1]
+ %263 = load float* %262, align 4 ; [#uses=1]
+ %264 = getelementptr inbounds %struct.GIM_CONTACT* %235, i32 %234, i32 2 ; [#uses=1]
+ store float %263, float* %264, align 4
+ %265 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 4 ; [#uses=1]
+ %266 = load i32* %265, align 4 ; [#uses=1]
+ %267 = getelementptr inbounds %struct.GIM_CONTACT* %235, i32 %234, i32 4 ; [#uses=1]
+ store i32 %266, i32* %267, align 4
+ %268 = getelementptr inbounds %struct.GIM_CONTACT* %175, i32 %174, i32 5 ; [#uses=1]
+ %269 = load i32* %268, align 4 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.GIM_CONTACT* %235, i32 %234, i32 5 ; [#uses=1]
+ store i32 %269, i32* %270, align 4
+ %.pre5.i = load i32* %8, align 4 ; [#uses=1]
+ %.pre142 = load %struct.GIM_CONTACT** %1, align 4 ; [#uses=1]
+ br label %invcont28
+
+invcont28: ; preds = %bb2.i, %bb1.i
+ %271 = phi %struct.GIM_CONTACT* [ %235, %bb1.i ], [ %.pre142, %bb2.i ] ; [#uses=1]
+ %272 = phi i32 [ %234, %bb1.i ], [ %.pre5.i, %bb2.i ] ; [#uses=2]
+ %273 = add nsw i32 %272, 1 ; [#uses=1]
+ store i32 %273, i32* %8, align 4
+ %274 = getelementptr inbounds %struct.GIM_CONTACT* %271, i32 %272 ; [#uses=1]
+ br label %bb29
+
+bb29: ; preds = %invcont28, %bb22, %bb19, %bb17, %bb16
+ %coincident_count.0 = phi i32 [ 0, %bb16 ], [ %202, %bb22 ], [ %coincident_count.1, %bb19 ], [ %coincident_count.1, %bb17 ], [ %coincident_count.2, %invcont28 ] ; [#uses=1]
+ %pcontact.0 = phi %struct.GIM_CONTACT* [ %pcontact.1, %bb16 ], [ %pcontact.1, %bb22 ], [ %pcontact.1, %bb19 ], [ %pcontact.1, %bb17 ], [ %274, %invcont28 ] ; [#uses=1]
+ %phitmp = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb30
+
+bb30: ; preds = %bb29, %invcont13
+ %indvar = phi i32 [ %phitmp, %bb29 ], [ 1, %invcont13 ] ; [#uses=4]
+ %coincident_count.1 = phi i32 [ %coincident_count.0, %bb29 ], [ 0, %invcont13 ] ; [#uses=11]
+ %last_key.0 = phi i32 [ %173, %bb29 ], [ %122, %invcont13 ] ; [#uses=1]
+ %pcontact.1 = phi %struct.GIM_CONTACT* [ %pcontact.0, %bb29 ], [ %169, %invcont13 ] ; [#uses=10]
+ %275 = load i32* %54, align 4 ; [#uses=1]
+ %276 = icmp sgt i32 %275, %indvar ; [#uses=1]
+ %277 = load %struct.CONTACT_KEY_TOKEN** %53, align 4 ; [#uses=4]
+ br i1 %276, label %bb14, label %bb35
+
+invcont33: ; preds = %bb2.i.i.i, %lpad
+ store i8 1, i8* %52, align 8
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %53, align 4
+ store i32 0, i32* %54, align 4
+ store i32 0, i32* %55, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb35: ; preds = %bb30
+ %278 = icmp eq %struct.CONTACT_KEY_TOKEN* %277, null ; [#uses=1]
+ br i1 %278, label %_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENED1Ev.exit52, label %bb.i.i.i49
+
+bb.i.i.i49: ; preds = %bb35
+ %279 = load i8* %52, align 8 ; [#uses=1]
+ %toBool.i.i.i48 = icmp eq i8 %279, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i48, label %bb2.i.i.i51, label %bb1.i.i.i50
+
+bb1.i.i.i50: ; preds = %bb.i.i.i49
+ %280 = bitcast %struct.CONTACT_KEY_TOKEN* %277 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %280)
+ br label %bb2.i.i.i51
+
+bb2.i.i.i51: ; preds = %bb1.i.i.i50, %bb.i.i.i49
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %53, align 4
+ ret void
+
+_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENED1Ev.exit52: ; preds = %bb35, %_ZN20btAlignedObjectArrayI11GIM_CONTACTE5clearEv.exit
+ ret void
+
+lpad: ; preds = %bb.i, %bb.i74, %bb1.i.i.i89, %bb.i2.i.i, %bb1.i.i67, %bb.i2.i
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select38 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %281 = load %struct.CONTACT_KEY_TOKEN** %53, align 4 ; [#uses=2]
+ %282 = icmp eq %struct.CONTACT_KEY_TOKEN* %281, null ; [#uses=1]
+ br i1 %282, label %invcont33, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad
+ %283 = load i8* %52, align 8 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %283, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %284 = bitcast %struct.CONTACT_KEY_TOKEN* %281 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %284)
+ to label %bb2.i.i.i unwind label %lpad39
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %53, align 4
+ br label %invcont33
+
+lpad39: ; preds = %bb1.i.i.i
+ %eh_ptr40 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select42 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr40, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE17quickSortInternalI22CONTACT_KEY_TOKEN_COMPEEvT_ii(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* nocapture byval align 4 %CompareFunc, i32 %lo, i32 %hi) nounwind align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %1 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 3 ; [#uses=3]
+ %3 = load %struct.CONTACT_KEY_TOKEN** %2, align 4 ; [#uses=1]
+ %4 = add nsw i32 %hi, %lo ; [#uses=1]
+ %5 = sdiv i32 %4, 2 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %3, i32 %5, i32 0 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=4]
+ br label %bb1.outer
+
+bb1.outer: ; preds = %bb7, %entry
+ %i.0.ph = phi i32 [ %lo, %entry ], [ %i.1, %bb7 ] ; [#uses=3]
+ %j.1.ph = phi i32 [ %hi, %entry ], [ %j.2, %bb7 ] ; [#uses=3]
+ %8 = load %struct.CONTACT_KEY_TOKEN** %2, align 4 ; [#uses=7]
+ %9 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %i.0.ph, i32 0 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=2]
+ %11 = icmp ult i32 %10, %7 ; [#uses=1]
+ br i1 %11, label %bb.nph16, label %bb3.preheader
+
+bb.nph16: ; preds = %bb1.outer
+ %tmp24 = add i32 %i.0.ph, 1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph16
+ %indvar22 = phi i32 [ 0, %bb.nph16 ], [ %indvar.next23, %bb ] ; [#uses=2]
+ %tmp25 = add i32 %tmp24, %indvar22 ; [#uses=2]
+ %scevgep2627 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %tmp25, i32 0 ; [#uses=1]
+ %12 = load i32* %scevgep2627, align 4 ; [#uses=2]
+ %13 = icmp ult i32 %12, %7 ; [#uses=1]
+ %indvar.next23 = add i32 %indvar22, 1 ; [#uses=1]
+ br i1 %13, label %bb, label %bb3.preheader
+
+bb3.preheader: ; preds = %bb, %bb1.outer
+ %14 = phi i32 [ %10, %bb1.outer ], [ %12, %bb ] ; [#uses=1]
+ %i.0.lcssa = phi i32 [ %i.0.ph, %bb1.outer ], [ %tmp25, %bb ] ; [#uses=5]
+ %15 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %j.1.ph, i32 0 ; [#uses=1]
+ %16 = load i32* %15, align 4 ; [#uses=2]
+ %17 = icmp ult i32 %7, %16 ; [#uses=1]
+ br i1 %17, label %bb.nph, label %bb5
+
+bb.nph: ; preds = %bb3.preheader
+ %tmp18 = add i32 %j.1.ph, -1 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb2 ] ; [#uses=2]
+ %tmp19 = sub i32 %tmp18, %indvar ; [#uses=2]
+ %scevgep20 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %tmp19, i32 0 ; [#uses=1]
+ %18 = load i32* %scevgep20, align 4 ; [#uses=2]
+ %19 = icmp ult i32 %7, %18 ; [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br i1 %19, label %bb2, label %bb5
+
+bb5: ; preds = %bb2, %bb3.preheader
+ %20 = phi i32 [ %16, %bb3.preheader ], [ %18, %bb2 ] ; [#uses=1]
+ %j.0.lcssa = phi i32 [ %j.1.ph, %bb3.preheader ], [ %tmp19, %bb2 ] ; [#uses=6]
+ %21 = icmp sgt i32 %i.0.lcssa, %j.0.lcssa ; [#uses=1]
+ br i1 %21, label %bb7, label %bb6
+
+bb6: ; preds = %bb5
+ %22 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %i.0.lcssa, i32 0 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %i.0.lcssa, i32 1 ; [#uses=2]
+ %24 = load i32* %23, align 4 ; [#uses=1]
+ store i32 %20, i32* %22, align 4
+ %25 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %j.0.lcssa, i32 1 ; [#uses=1]
+ %26 = load i32* %25, align 4 ; [#uses=1]
+ store i32 %26, i32* %23, align 4
+ %27 = load %struct.CONTACT_KEY_TOKEN** %2, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %27, i32 %j.0.lcssa, i32 0 ; [#uses=1]
+ store i32 %14, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %27, i32 %j.0.lcssa, i32 1 ; [#uses=1]
+ store i32 %24, i32* %29, align 4
+ %30 = add nsw i32 %i.0.lcssa, 1 ; [#uses=1]
+ %31 = add nsw i32 %j.0.lcssa, -1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5
+ %i.1 = phi i32 [ %30, %bb6 ], [ %i.0.lcssa, %bb5 ] ; [#uses=4]
+ %j.2 = phi i32 [ %31, %bb6 ], [ %j.0.lcssa, %bb5 ] ; [#uses=4]
+ %32 = icmp sgt i32 %i.1, %j.2 ; [#uses=1]
+ br i1 %32, label %bb8, label %bb1.outer
+
+bb8: ; preds = %bb7
+ %33 = icmp sgt i32 %j.2, %lo ; [#uses=1]
+ br i1 %33, label %bb9, label %bb10
+
+bb9: ; preds = %bb8
+ call void @_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE17quickSortInternalI22CONTACT_KEY_TOKEN_COMPEEvT_ii(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %1, i32 %lo, i32 %j.2)
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb8
+ %34 = icmp slt i32 %i.1, %hi ; [#uses=1]
+ br i1 %34, label %bb11, label %return
+
+bb11: ; preds = %bb10
+ call void @_ZN20btAlignedObjectArrayI17CONTACT_KEY_TOKENE17quickSortInternalI22CONTACT_KEY_TOKEN_COMPEEvT_ii(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 %i.1, i32 %hi)
+ ret void
+
+return: ; preds = %bb10
+ ret void
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI11GIM_CONTACTE7reserveEi(%"struct.btAlignedObjectArray<GIM_CONTACT>"* nocapture %this, i32 %_Count) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_CONTACT>"* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp slt i32 %1, %_Count ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = icmp eq i32 %_Count, 0 ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI11GIM_CONTACTE8allocateEi.exit, label %bb.i2
+
+bb.i2: ; preds = %bb
+ %4 = mul i32 %_Count, 48 ; [#uses=1]
+ %5 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %4, i32 16) ; [#uses=1]
+ %phitmp = bitcast i8* %5 to %struct.GIM_CONTACT* ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI11GIM_CONTACTE8allocateEi.exit
+
+_ZN20btAlignedObjectArrayI11GIM_CONTACTE8allocateEi.exit: ; preds = %bb.i2, %bb
+ %6 = phi %struct.GIM_CONTACT* [ %phitmp, %bb.i2 ], [ null, %bb ] ; [#uses=13]
+ %7 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_CONTACT>"* %this, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = icmp sgt i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb.nph.i, label %_ZNK20btAlignedObjectArrayI11GIM_CONTACTE4copyEiiPS0_.exit
+
+bb.nph.i: ; preds = %_ZN20btAlignedObjectArrayI11GIM_CONTACTE8allocateEi.exit
+ %10 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_CONTACT>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4
+
+bb.i4: ; preds = %bb3.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb3.i ] ; [#uses=24]
+ %scevgep.i = getelementptr %struct.GIM_CONTACT* %6, i32 %indvar.i ; [#uses=1]
+ %11 = icmp eq %struct.GIM_CONTACT* %scevgep.i, null ; [#uses=1]
+ br i1 %11, label %bb3.i, label %bb1.i5
+
+bb1.i5: ; preds = %bb.i4
+ %scevgep11.i = getelementptr %struct.GIM_CONTACT* %6, i32 %indvar.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep13.i = getelementptr %struct.GIM_CONTACT* %6, i32 %indvar.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep15.i = getelementptr %struct.GIM_CONTACT* %6, i32 %indvar.i, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep17.i = getelementptr %struct.GIM_CONTACT* %6, i32 %indvar.i, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep19.i = getelementptr %struct.GIM_CONTACT* %6, i32 %indvar.i, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep21.i = getelementptr %struct.GIM_CONTACT* %6, i32 %indvar.i, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep23.i = getelementptr %struct.GIM_CONTACT* %6, i32 %indvar.i, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep26.i = getelementptr %struct.GIM_CONTACT* %6, i32 %indvar.i, i32 2 ; [#uses=1]
+ %scevgep28.i = getelementptr %struct.GIM_CONTACT* %6, i32 %indvar.i, i32 4 ; [#uses=1]
+ %scevgep30.i = getelementptr %struct.GIM_CONTACT* %6, i32 %indvar.i, i32 5 ; [#uses=1]
+ %scevgep8.i = getelementptr inbounds %struct.GIM_CONTACT* %6, i32 %indvar.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = load %struct.GIM_CONTACT** %10, align 4 ; [#uses=11]
+ %scevgep910.i = getelementptr inbounds %struct.GIM_CONTACT* %12, i32 %indvar.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %scevgep910.i, align 4 ; [#uses=1]
+ store float %13, float* %scevgep8.i, align 4
+ %scevgep12.i = getelementptr %struct.GIM_CONTACT* %12, i32 %indvar.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %scevgep12.i, align 4 ; [#uses=1]
+ store float %14, float* %scevgep11.i, align 4
+ %scevgep14.i = getelementptr %struct.GIM_CONTACT* %12, i32 %indvar.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %scevgep14.i, align 4 ; [#uses=1]
+ store float %15, float* %scevgep13.i, align 4
+ %scevgep16.i = getelementptr %struct.GIM_CONTACT* %12, i32 %indvar.i, i32 0, i32 0, i32 3 ; [#uses=1]
+ %16 = load float* %scevgep16.i, align 4 ; [#uses=1]
+ store float %16, float* %scevgep15.i, align 4
+ %scevgep18.i = getelementptr %struct.GIM_CONTACT* %12, i32 %indvar.i, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %scevgep18.i, align 4 ; [#uses=1]
+ store float %17, float* %scevgep17.i, align 4
+ %scevgep20.i = getelementptr %struct.GIM_CONTACT* %12, i32 %indvar.i, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %scevgep20.i, align 4 ; [#uses=1]
+ store float %18, float* %scevgep19.i, align 4
+ %scevgep22.i = getelementptr %struct.GIM_CONTACT* %12, i32 %indvar.i, i32 1, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %scevgep22.i, align 4 ; [#uses=1]
+ store float %19, float* %scevgep21.i, align 4
+ %scevgep24.i = getelementptr %struct.GIM_CONTACT* %12, i32 %indvar.i, i32 1, i32 0, i32 3 ; [#uses=1]
+ %20 = load float* %scevgep24.i, align 4 ; [#uses=1]
+ store float %20, float* %scevgep23.i, align 4
+ %scevgep25.i = getelementptr %struct.GIM_CONTACT* %12, i32 %indvar.i, i32 2 ; [#uses=1]
+ %21 = load float* %scevgep25.i, align 4 ; [#uses=1]
+ store float %21, float* %scevgep26.i, align 4
+ %scevgep27.i = getelementptr %struct.GIM_CONTACT* %12, i32 %indvar.i, i32 4 ; [#uses=1]
+ %22 = load i32* %scevgep27.i, align 4 ; [#uses=1]
+ store i32 %22, i32* %scevgep28.i, align 4
+ %scevgep29.i = getelementptr %struct.GIM_CONTACT* %12, i32 %indvar.i, i32 5 ; [#uses=1]
+ %23 = load i32* %scevgep29.i, align 4 ; [#uses=1]
+ store i32 %23, i32* %scevgep30.i, align 4
+ br label %bb3.i
+
+bb3.i: ; preds = %bb1.i5, %bb.i4
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %8 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI11GIM_CONTACTE4copyEiiPS0_.exit, label %bb.i4
+
+_ZNK20btAlignedObjectArrayI11GIM_CONTACTE4copyEiiPS0_.exit: ; preds = %bb3.i, %_ZN20btAlignedObjectArrayI11GIM_CONTACTE8allocateEi.exit
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_CONTACT>"* %this, i32 0, i32 3 ; [#uses=3]
+ %25 = load %struct.GIM_CONTACT** %24, align 4 ; [#uses=2]
+ %26 = icmp eq %struct.GIM_CONTACT* %25, null ; [#uses=1]
+ br i1 %26, label %_ZN20btAlignedObjectArrayI11GIM_CONTACTE10deallocateEv.exit, label %bb.i
+
+bb.i: ; preds = %_ZNK20btAlignedObjectArrayI11GIM_CONTACTE4copyEiiPS0_.exit
+ %27 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_CONTACT>"* %this, i32 0, i32 4 ; [#uses=1]
+ %28 = load i8* %27, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %28, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %29 = bitcast %struct.GIM_CONTACT* %25 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %29)
+ br label %bb2.i
+
+bb2.i: ; preds = %bb1.i, %bb.i
+ store %struct.GIM_CONTACT* null, %struct.GIM_CONTACT** %24, align 4
+ br label %_ZN20btAlignedObjectArrayI11GIM_CONTACTE10deallocateEv.exit
+
+_ZN20btAlignedObjectArrayI11GIM_CONTACTE10deallocateEv.exit: ; preds = %bb2.i, %_ZNK20btAlignedObjectArrayI11GIM_CONTACTE4copyEiiPS0_.exit
+ %30 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_CONTACT>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %30, align 4
+ store %struct.GIM_CONTACT* %6, %struct.GIM_CONTACT** %24, align 4
+ store i32 %_Count, i32* %0, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN14btContactArray21merge_contacts_uniqueERKS_(%struct.btContactArray* nocapture %this, %struct.btContactArray* nocapture %contacts) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0, i32 3 ; [#uses=4]
+ %1 = load %struct.GIM_CONTACT** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.GIM_CONTACT* %1, null ; [#uses=1]
+ br i1 %2, label %_ZN20btAlignedObjectArrayI11GIM_CONTACTE5clearEv.exit, label %bb.i.i
+
+bb.i.i: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %5 = bitcast %struct.GIM_CONTACT* %1 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %5)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.GIM_CONTACT* null, %struct.GIM_CONTACT** %0, align 4
+ br label %_ZN20btAlignedObjectArrayI11GIM_CONTACTE5clearEv.exit
+
+_ZN20btAlignedObjectArrayI11GIM_CONTACTE5clearEv.exit: ; preds = %bb2.i.i, %entry
+ %6 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %6, align 4
+ store %struct.GIM_CONTACT* null, %struct.GIM_CONTACT** %0, align 4
+ %7 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0, i32 1 ; [#uses=4]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btContactArray* %contacts, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=3]
+ %11 = icmp eq i32 %10, 0 ; [#uses=1]
+ br i1 %11, label %bb7, label %bb
+
+bb: ; preds = %_ZN20btAlignedObjectArrayI11GIM_CONTACTE5clearEv.exit
+ %12 = icmp eq i32 %10, 1 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btContactArray* %contacts, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = load %struct.GIM_CONTACT** %13, align 4 ; [#uses=11]
+ br i1 %12, label %bb1.i, label %bb5.preheader
+
+bb5.preheader: ; preds = %bb
+ %15 = icmp sgt i32 %10, 1 ; [#uses=0]
+ ret void
+
+bb1.i: ; preds = %bb
+ %16 = getelementptr inbounds %struct.btContactArray* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI11GIM_CONTACTE7reserveEi(%"struct.btAlignedObjectArray<GIM_CONTACT>"* %16, i32 1) inlinehint
+ %.pre.i = load i32* %7, align 4 ; [#uses=13]
+ %.pre = load %struct.GIM_CONTACT** %0, align 4 ; [#uses=12]
+ %17 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i ; [#uses=1]
+ %18 = icmp eq %struct.GIM_CONTACT* %17, null ; [#uses=1]
+ br i1 %18, label %_ZN20btAlignedObjectArrayI11GIM_CONTACTE9push_backERKS0_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %19 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.GIM_CONTACT* %14, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.GIM_CONTACT* %14, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.GIM_CONTACT* %14, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i, i32 0, i32 0, i32 3 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.GIM_CONTACT* %14, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i, i32 1, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.GIM_CONTACT* %14, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i, i32 1, i32 0, i32 1 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.GIM_CONTACT* %14, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i, i32 1, i32 0, i32 2 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.GIM_CONTACT* %14, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i, i32 1, i32 0, i32 3 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.GIM_CONTACT* %14, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %struct.GIM_CONTACT* %14, i32 0, i32 2 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i, i32 2 ; [#uses=1]
+ store float %44, float* %45, align 4
+ %46 = getelementptr inbounds %struct.GIM_CONTACT* %14, i32 0, i32 4 ; [#uses=1]
+ %47 = load i32* %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i, i32 4 ; [#uses=1]
+ store i32 %47, i32* %48, align 4
+ %49 = getelementptr inbounds %struct.GIM_CONTACT* %14, i32 0, i32 5 ; [#uses=1]
+ %50 = load i32* %49, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.GIM_CONTACT* %.pre, i32 %.pre.i, i32 5 ; [#uses=1]
+ store i32 %50, i32* %51, align 4
+ %.pre5.i = load i32* %7, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI11GIM_CONTACTE9push_backERKS0_.exit
+
+_ZN20btAlignedObjectArrayI11GIM_CONTACTE9push_backERKS0_.exit: ; preds = %bb2.i, %bb1.i
+ %52 = phi i32 [ %.pre.i, %bb1.i ], [ %.pre5.i, %bb2.i ] ; [#uses=1]
+ %53 = add nsw i32 %52, 1 ; [#uses=1]
+ store i32 %53, i32* %7, align 4
+ ret void
+
+bb7: ; preds = %_ZN20btAlignedObjectArrayI11GIM_CONTACTE5clearEv.exit
+ ret void
+}
+
+; [#uses=0]
+define i32 @_ZN19btGenericMemoryPool24allocate_from_free_nodesEj(%struct.btGenericMemoryPool* nocapture %this, i32 %num_elements) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 4 ; [#uses=4]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb15, label %bb1
+
+bb1: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 2 ; [#uses=3]
+ %4 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 1 ; [#uses=3]
+ br label %bb4.outer
+
+bb4.outer: ; preds = %bb2.us, %bb1
+ %ptr.0.ph = phi i32 [ -1, %bb1 ], [ %tmp22, %bb2.us ] ; [#uses=4]
+ %revindex.0.ph = phi i32 [ %1, %bb1 ], [ %tmp22, %bb2.us ] ; [#uses=1]
+ %5 = icmp eq i32 %ptr.0.ph, -1 ; [#uses=2]
+ br i1 %5, label %bb4.outer.split.us, label %bb11
+
+bb4.outer.split.us: ; preds = %bb4.outer
+ %tmp21 = add i32 %revindex.0.ph, -1 ; [#uses=1]
+ br label %bb4.us
+
+bb4.us: ; preds = %bb2.us, %bb4.outer.split.us
+ %indvar = phi i32 [ %indvar.next, %bb2.us ], [ 0, %bb4.outer.split.us ] ; [#uses=2]
+ %tmp22 = sub i32 %tmp21, %indvar ; [#uses=4]
+ %.not.us = icmp eq i32 %tmp22, -1 ; [#uses=1]
+ br i1 %.not.us, label %bb9, label %bb2.us
+
+bb2.us: ; preds = %bb4.us
+ %6 = load i32** %3, align 4 ; [#uses=1]
+ %7 = load i32** %4, align 4 ; [#uses=1]
+ %scevgep = getelementptr i32* %7, i32 %tmp22 ; [#uses=1]
+ %8 = load i32* %scevgep, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32* %6, i32 %8 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = icmp ult i32 %10, %num_elements ; [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br i1 %11, label %bb4.us, label %bb4.outer
+
+bb9: ; preds = %bb4.us
+ br i1 %5, label %bb15, label %bb11
+
+bb11: ; preds = %bb9, %bb4.outer
+ %12 = load i32** %4, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32* %12, i32 %ptr.0.ph ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=4]
+ %15 = load i32** %3, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32* %15, i32 %14 ; [#uses=2]
+ %17 = load i32* %16, align 4 ; [#uses=2]
+ store i32 %num_elements, i32* %16, align 4
+ %18 = icmp eq i32 %17, %num_elements ; [#uses=1]
+ %19 = load i32** %4, align 4 ; [#uses=3]
+ br i1 %18, label %bb13, label %bb12
+
+bb12: ; preds = %bb11
+ %20 = sub i32 %17, %num_elements ; [#uses=1]
+ %21 = add i32 %14, %num_elements ; [#uses=2]
+ %22 = getelementptr inbounds i32* %19, i32 %ptr.0.ph ; [#uses=1]
+ store i32 %21, i32* %22, align 4
+ %23 = load i32** %3, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds i32* %23, i32 %21 ; [#uses=1]
+ store i32 %20, i32* %24, align 4
+ ret i32 %14
+
+bb13: ; preds = %bb11
+ %25 = load i32* %0, align 4 ; [#uses=1]
+ %26 = add i32 %25, -1 ; [#uses=1]
+ %27 = getelementptr inbounds i32* %19, i32 %26 ; [#uses=1]
+ %28 = load i32* %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds i32* %19, i32 %ptr.0.ph ; [#uses=1]
+ store i32 %28, i32* %29, align 4
+ %30 = load i32* %0, align 4 ; [#uses=1]
+ %31 = add i32 %30, -1 ; [#uses=1]
+ store i32 %31, i32* %0, align 4
+ ret i32 %14
+
+bb15: ; preds = %bb9, %entry
+ ret i32 -1
+}
+
+; [#uses=1]
+define internal void @_GLOBAL__I__ZN19btGenericMemoryPool24allocate_from_free_nodesEj() nounwind {
+entry:
+ store i32 0, i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 4), align 4
+ store i32 8, i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 1), align 4
+ store i32 32768, i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 2), align 8
+ store i32 (...)** getelementptr inbounds ([4 x i32 (...)*]* @_ZTV22GIM_STANDARD_ALLOCATOR, i32 0, i32 2), i32 (...)*** getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 0), align 32
+ %0 = tail call i32 @__cxa_atexit(void (i8*)* @__tcf_0, i8* null, i8* bitcast (i8** @__dso_handle to i8*)) nounwind ; [#uses=0]
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN22btGenericPoolAllocatorD1Ev(%struct.btGenericPoolAllocator* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([4 x i32 (...)*]* @_ZTV22btGenericPoolAllocator, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 4 ; [#uses=2]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %return, label %bb
+
+bb: ; preds = %bb, %entry
+ %i.05 = phi i32 [ %17, %bb ], [ 0, %entry ] ; [#uses=2]
+ %scevgep = getelementptr %struct.btGenericPoolAllocator* %this, i32 0, i32 3, i32 %i.05 ; [#uses=2]
+ %4 = load %struct.btGenericMemoryPool** %scevgep, align 4 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i8** %5, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ %7 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32* %8 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %9)
+ %10 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 2 ; [#uses=1]
+ %11 = load i32** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32* %11 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %12)
+ %13 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = load %struct.btGenericMemoryPool** %scevgep, align 4 ; [#uses=1]
+ %16 = bitcast %struct.btGenericMemoryPool* %15 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %16)
+ %17 = add i32 %i.05, 1 ; [#uses=2]
+ %18 = load i32* %1, align 4 ; [#uses=1]
+ %19 = icmp ugt i32 %18, %17 ; [#uses=1]
+ br i1 %19, label %bb, label %return
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN22btGenericPoolAllocatorD0Ev(%struct.btGenericPoolAllocator* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([4 x i32 (...)*]* @_ZTV22btGenericPoolAllocator, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 4 ; [#uses=2]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb3, label %bb
+
+bb: ; preds = %bb, %entry
+ %i.05 = phi i32 [ %17, %bb ], [ 0, %entry ] ; [#uses=2]
+ %scevgep = getelementptr %struct.btGenericPoolAllocator* %this, i32 0, i32 3, i32 %i.05 ; [#uses=2]
+ %4 = load %struct.btGenericMemoryPool** %scevgep, align 4 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i8** %5, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ %7 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32* %8 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %9)
+ %10 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 2 ; [#uses=1]
+ %11 = load i32** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32* %11 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %12)
+ %13 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = load %struct.btGenericMemoryPool** %scevgep, align 4 ; [#uses=1]
+ %16 = bitcast %struct.btGenericMemoryPool* %15 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %16)
+ %17 = add i32 %i.05, 1 ; [#uses=2]
+ %18 = load i32* %1, align 4 ; [#uses=1]
+ %19 = icmp ugt i32 %18, %17 ; [#uses=1]
+ br i1 %19, label %bb, label %bb3
+
+bb3: ; preds = %bb, %entry
+ %20 = bitcast %struct.btGenericPoolAllocator* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %20) nounwind
+ ret void
+}
+
+; [#uses=0]
+define i32 @_ZN19btGenericMemoryPool18allocate_from_poolEj(%struct.btGenericMemoryPool* nocapture %this, i32 %num_elements) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 3 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=3]
+ %2 = add i32 %1, %num_elements ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 6 ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %5 = icmp ugt i32 %2, %4 ; [#uses=1]
+ br i1 %5, label %bb2, label %bb1
+
+bb1: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 2 ; [#uses=1]
+ %7 = load i32** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32* %7, i32 %1 ; [#uses=1]
+ store i32 %num_elements, i32* %8, align 4
+ %9 = load i32* %0, align 4 ; [#uses=1]
+ %10 = add i32 %9, %num_elements ; [#uses=1]
+ store i32 %10, i32* %0, align 4
+ ret i32 %1
+
+bb2: ; preds = %entry
+ ret i32 -1
+}
+
+; [#uses=7]
+define i8* @_ZN19btGenericMemoryPool8allocateEj(%struct.btGenericMemoryPool* nocapture %this, i32 %size_bytes) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 5 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = urem i32 %size_bytes, %1 ; [#uses=1]
+ %3 = udiv i32 %size_bytes, %1 ; [#uses=1]
+ %not. = icmp ne i32 %2, 0 ; [#uses=1]
+ %4 = zext i1 %not. to i32 ; [#uses=1]
+ %element_count.0 = add i32 %4, %3 ; [#uses=8]
+ %5 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 4 ; [#uses=4]
+ %6 = load i32* %5, align 4 ; [#uses=2]
+ %7 = icmp eq i32 %6, 0 ; [#uses=1]
+ br i1 %7, label %bb3, label %bb1.i
+
+bb1.i: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 2 ; [#uses=3]
+ %9 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 1 ; [#uses=3]
+ br label %bb4.outer.i
+
+bb4.outer.i: ; preds = %bb2.us.i, %bb1.i
+ %ptr.0.ph.i = phi i32 [ -1, %bb1.i ], [ %tmp22.i, %bb2.us.i ] ; [#uses=4]
+ %revindex.0.ph.i = phi i32 [ %6, %bb1.i ], [ %tmp22.i, %bb2.us.i ] ; [#uses=1]
+ %10 = icmp eq i32 %ptr.0.ph.i, -1 ; [#uses=2]
+ br i1 %10, label %bb4.outer.split.us.i, label %bb11.i
+
+bb4.outer.split.us.i: ; preds = %bb4.outer.i
+ %tmp21.i = add i32 %revindex.0.ph.i, -1 ; [#uses=1]
+ br label %bb4.us.i
+
+bb4.us.i: ; preds = %bb2.us.i, %bb4.outer.split.us.i
+ %indvar.i = phi i32 [ %indvar.next.i, %bb2.us.i ], [ 0, %bb4.outer.split.us.i ] ; [#uses=2]
+ %tmp22.i = sub i32 %tmp21.i, %indvar.i ; [#uses=4]
+ %.not.us.i = icmp eq i32 %tmp22.i, -1 ; [#uses=1]
+ br i1 %.not.us.i, label %bb9.i, label %bb2.us.i
+
+bb2.us.i: ; preds = %bb4.us.i
+ %11 = load i32** %8, align 4 ; [#uses=1]
+ %12 = load i32** %9, align 4 ; [#uses=1]
+ %scevgep.i = getelementptr i32* %12, i32 %tmp22.i ; [#uses=1]
+ %13 = load i32* %scevgep.i, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32* %11, i32 %13 ; [#uses=1]
+ %15 = load i32* %14, align 4 ; [#uses=1]
+ %16 = icmp ult i32 %15, %element_count.0 ; [#uses=1]
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=1]
+ br i1 %16, label %bb4.us.i, label %bb4.outer.i
+
+bb9.i: ; preds = %bb4.us.i
+ br i1 %10, label %bb3, label %bb11.i
+
+bb11.i: ; preds = %bb9.i, %bb4.outer.i
+ %17 = load i32** %9, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32* %17, i32 %ptr.0.ph.i ; [#uses=1]
+ %19 = load i32* %18, align 4 ; [#uses=4]
+ %20 = load i32** %8, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds i32* %20, i32 %19 ; [#uses=2]
+ %22 = load i32* %21, align 4 ; [#uses=2]
+ store i32 %element_count.0, i32* %21, align 4
+ %23 = icmp eq i32 %22, %element_count.0 ; [#uses=1]
+ %24 = load i32** %9, align 4 ; [#uses=3]
+ br i1 %23, label %bb13.i, label %bb12.i
+
+bb12.i: ; preds = %bb11.i
+ %25 = sub i32 %22, %element_count.0 ; [#uses=1]
+ %26 = add i32 %19, %element_count.0 ; [#uses=2]
+ %27 = getelementptr inbounds i32* %24, i32 %ptr.0.ph.i ; [#uses=1]
+ store i32 %26, i32* %27, align 4
+ %28 = load i32** %8, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds i32* %28, i32 %26 ; [#uses=1]
+ store i32 %25, i32* %29, align 4
+ br label %_ZN19btGenericMemoryPool24allocate_from_free_nodesEj.exit
+
+bb13.i: ; preds = %bb11.i
+ %30 = load i32* %5, align 4 ; [#uses=1]
+ %31 = add i32 %30, -1 ; [#uses=1]
+ %32 = getelementptr inbounds i32* %24, i32 %31 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds i32* %24, i32 %ptr.0.ph.i ; [#uses=1]
+ store i32 %33, i32* %34, align 4
+ %35 = load i32* %5, align 4 ; [#uses=1]
+ %36 = add i32 %35, -1 ; [#uses=1]
+ store i32 %36, i32* %5, align 4
+ br label %_ZN19btGenericMemoryPool24allocate_from_free_nodesEj.exit
+
+_ZN19btGenericMemoryPool24allocate_from_free_nodesEj.exit: ; preds = %bb13.i, %bb12.i
+ %37 = icmp eq i32 %19, -1 ; [#uses=1]
+ br i1 %37, label %bb3, label %bb2
+
+bb2: ; preds = %_ZN19btGenericMemoryPool24allocate_from_free_nodesEj.exit
+ %38 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 0 ; [#uses=1]
+ %39 = load i8** %38, align 4 ; [#uses=1]
+ %40 = load i32* %0, align 4 ; [#uses=1]
+ %41 = mul i32 %40, %19 ; [#uses=1]
+ %42 = getelementptr inbounds i8* %39, i32 %41 ; [#uses=1]
+ ret i8* %42
+
+bb3: ; preds = %_ZN19btGenericMemoryPool24allocate_from_free_nodesEj.exit, %bb9.i, %entry
+ %43 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 3 ; [#uses=3]
+ %44 = load i32* %43, align 4 ; [#uses=4]
+ %45 = add i32 %44, %element_count.0 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 6 ; [#uses=1]
+ %47 = load i32* %46, align 4 ; [#uses=1]
+ %48 = icmp ugt i32 %45, %47 ; [#uses=1]
+ br i1 %48, label %bb6, label %_ZN19btGenericMemoryPool18allocate_from_poolEj.exit
+
+_ZN19btGenericMemoryPool18allocate_from_poolEj.exit: ; preds = %bb3
+ %49 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 2 ; [#uses=1]
+ %50 = load i32** %49, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds i32* %50, i32 %44 ; [#uses=1]
+ store i32 %element_count.0, i32* %51, align 4
+ %52 = load i32* %43, align 4 ; [#uses=1]
+ %53 = add i32 %52, %element_count.0 ; [#uses=1]
+ store i32 %53, i32* %43, align 4
+ %54 = icmp eq i32 %44, -1 ; [#uses=1]
+ br i1 %54, label %bb6, label %bb5
+
+bb5: ; preds = %_ZN19btGenericMemoryPool18allocate_from_poolEj.exit
+ %55 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 0 ; [#uses=1]
+ %56 = load i8** %55, align 4 ; [#uses=1]
+ %57 = load i32* %0, align 4 ; [#uses=1]
+ %58 = mul i32 %57, %44 ; [#uses=1]
+ %59 = getelementptr inbounds i8* %56, i32 %58 ; [#uses=1]
+ ret i8* %59
+
+bb6: ; preds = %_ZN19btGenericMemoryPool18allocate_from_poolEj.exit, %bb3
+ ret i8* null
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN19btGenericMemoryPool10freeMemoryEPv(%struct.btGenericMemoryPool* nocapture %this, i8* %pointer) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load i8** %0, align 4 ; [#uses=2]
+ %2 = icmp ugt i8* %1, %pointer ; [#uses=1]
+ br i1 %2, label %bb4, label %bb1
+
+bb1: ; preds = %entry
+ %3 = ptrtoint i8* %pointer to i32 ; [#uses=1]
+ %4 = ptrtoint i8* %1 to i32 ; [#uses=1]
+ %5 = sub nsw i32 %3, %4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 5 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 6 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %10 = mul i32 %9, %7 ; [#uses=1]
+ %11 = icmp ugt i32 %10, %5 ; [#uses=1]
+ br i1 %11, label %bb3, label %bb4
+
+bb3: ; preds = %bb1
+ %12 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 1 ; [#uses=1]
+ %13 = load i32** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 4 ; [#uses=3]
+ %15 = load i32* %14, align 4 ; [#uses=1]
+ %16 = udiv i32 %5, %7 ; [#uses=1]
+ %17 = getelementptr inbounds i32* %13, i32 %15 ; [#uses=1]
+ store i32 %16, i32* %17, align 4
+ %18 = load i32* %14, align 4 ; [#uses=1]
+ %19 = add i32 %18, 1 ; [#uses=1]
+ store i32 %19, i32* %14, align 4
+ ret i8 1
+
+bb4: ; preds = %bb1, %entry
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22GIM_STANDARD_ALLOCATORD1Ev(%struct.GIM_STANDARD_ALLOCATOR* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.GIM_STANDARD_ALLOCATOR* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([4 x i32 (...)*]* @_ZTV22btGenericPoolAllocator, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.GIM_STANDARD_ALLOCATOR* %this, i32 0, i32 0, i32 4 ; [#uses=2]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %_ZN22btGenericPoolAllocatorD2Ev.exit, label %bb.i
+
+bb.i: ; preds = %bb.i, %entry
+ %i.05.i = phi i32 [ %tmp, %bb.i ], [ 0, %entry ] ; [#uses=2]
+ %tmp = add i32 %i.05.i, 1 ; [#uses=2]
+ %scevgep.i = getelementptr %struct.GIM_STANDARD_ALLOCATOR* %this, i32 0, i32 0, i32 3, i32 %i.05.i ; [#uses=2]
+ %4 = load %struct.btGenericMemoryPool** %scevgep.i, align 4 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i8** %5, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ %7 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32* %8 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %9)
+ %10 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 2 ; [#uses=1]
+ %11 = load i32** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32* %11 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %12)
+ %13 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = load %struct.btGenericMemoryPool** %scevgep.i, align 4 ; [#uses=1]
+ %16 = bitcast %struct.btGenericMemoryPool* %15 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %16)
+ %17 = load i32* %1, align 4 ; [#uses=1]
+ %18 = icmp ugt i32 %17, %tmp ; [#uses=1]
+ br i1 %18, label %bb.i, label %_ZN22btGenericPoolAllocatorD2Ev.exit
+
+_ZN22btGenericPoolAllocatorD2Ev.exit: ; preds = %bb.i, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22GIM_STANDARD_ALLOCATORD0Ev(%struct.GIM_STANDARD_ALLOCATOR* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.GIM_STANDARD_ALLOCATOR* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([4 x i32 (...)*]* @_ZTV22btGenericPoolAllocator, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.GIM_STANDARD_ALLOCATOR* %this, i32 0, i32 0, i32 4 ; [#uses=2]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %_ZN22btGenericPoolAllocatorD2Ev.exit, label %bb.i
+
+bb.i: ; preds = %bb.i, %entry
+ %i.05.i = phi i32 [ %tmp, %bb.i ], [ 0, %entry ] ; [#uses=2]
+ %tmp = add i32 %i.05.i, 1 ; [#uses=2]
+ %scevgep.i = getelementptr %struct.GIM_STANDARD_ALLOCATOR* %this, i32 0, i32 0, i32 3, i32 %i.05.i ; [#uses=2]
+ %4 = load %struct.btGenericMemoryPool** %scevgep.i, align 4 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i8** %5, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ %7 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32* %8 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %9)
+ %10 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 2 ; [#uses=1]
+ %11 = load i32** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32* %11 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %12)
+ %13 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = load %struct.btGenericMemoryPool** %scevgep.i, align 4 ; [#uses=1]
+ %16 = bitcast %struct.btGenericMemoryPool* %15 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %16)
+ %17 = load i32* %1, align 4 ; [#uses=1]
+ %18 = icmp ugt i32 %17, %tmp ; [#uses=1]
+ br i1 %18, label %bb.i, label %_ZN22btGenericPoolAllocatorD2Ev.exit
+
+_ZN22btGenericPoolAllocatorD2Ev.exit: ; preds = %bb.i, %entry
+ %19 = bitcast %struct.GIM_STANDARD_ALLOCATOR* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %19) nounwind
+ ret void
+}
+
+; [#uses=9]
+declare i32 @__cxa_atexit(void (i8*)*, i8*, i8*) nounwind
+
+; [#uses=1]
+define internal void @__tcf_0(i8* nocapture %unnamed_arg) {
+entry:
+ store i32 (...)** getelementptr inbounds ([4 x i32 (...)*]* @_ZTV22btGenericPoolAllocator, i32 0, i32 2), i32 (...)*** getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 0), align 32
+ %0 = load i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 4), align 4 ; [#uses=1]
+ %1 = icmp eq i32 %0, 0 ; [#uses=1]
+ br i1 %1, label %_ZN22GIM_STANDARD_ALLOCATORD1Ev.exit, label %bb.i.i
+
+bb.i.i: ; preds = %bb.i.i, %entry
+ %i.05.i.i = phi i32 [ %tmp.i, %bb.i.i ], [ 0, %entry ] ; [#uses=2]
+ %tmp.i = add i32 %i.05.i.i, 1 ; [#uses=2]
+ %scevgep.i.i = getelementptr %struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 3, i32 %i.05.i.i ; [#uses=2]
+ %2 = load %struct.btGenericMemoryPool** %scevgep.i.i, align 4 ; [#uses=5]
+ %3 = getelementptr inbounds %struct.btGenericMemoryPool* %2, i32 0, i32 0 ; [#uses=1]
+ %4 = load i8** %3, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %4)
+ %5 = getelementptr inbounds %struct.btGenericMemoryPool* %2, i32 0, i32 1 ; [#uses=1]
+ %6 = load i32** %5, align 4 ; [#uses=1]
+ %7 = bitcast i32* %6 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %7)
+ %8 = getelementptr inbounds %struct.btGenericMemoryPool* %2, i32 0, i32 2 ; [#uses=1]
+ %9 = load i32** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32* %9 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %10)
+ %11 = getelementptr inbounds %struct.btGenericMemoryPool* %2, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btGenericMemoryPool* %2, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %12, align 4
+ %13 = load %struct.btGenericMemoryPool** %scevgep.i.i, align 4 ; [#uses=1]
+ %14 = bitcast %struct.btGenericMemoryPool* %13 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %14)
+ %15 = load i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 4), align 4 ; [#uses=1]
+ %16 = icmp ugt i32 %15, %tmp.i ; [#uses=1]
+ br i1 %16, label %bb.i.i, label %_ZN22GIM_STANDARD_ALLOCATORD1Ev.exit
+
+_ZN22GIM_STANDARD_ALLOCATORD1Ev.exit: ; preds = %bb.i.i, %entry
+ ret void
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN22btGenericPoolAllocator13failback_freeEPv(%struct.btGenericPoolAllocator* nocapture %this, i8* %pointer) align 2 {
+entry:
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %pointer)
+ ret i8 1
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN22btGenericPoolAllocator10freeMemoryEPv(%struct.btGenericPoolAllocator* nocapture %this, i8* %pointer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 4 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb9, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %3 = ptrtoint i8* %pointer to i32 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %_ZN19btGenericMemoryPool10freeMemoryEPv.exit, %bb.nph
+ %i.015 = phi i32 [ 0, %bb.nph ], [ %tmp, %_ZN19btGenericMemoryPool10freeMemoryEPv.exit ] ; [#uses=2]
+ %scevgep = getelementptr %struct.btGenericPoolAllocator* %this, i32 0, i32 3, i32 %i.015 ; [#uses=1]
+ %tmp = add i32 %i.015, 1 ; [#uses=2]
+ %4 = load %struct.btGenericMemoryPool** %scevgep, align 4 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i8** %5, align 4 ; [#uses=2]
+ %7 = icmp ugt i8* %6, %pointer ; [#uses=1]
+ br i1 %7, label %_ZN19btGenericMemoryPool10freeMemoryEPv.exit, label %bb1.i
+
+bb1.i: ; preds = %bb
+ %8 = ptrtoint i8* %6 to i32 ; [#uses=1]
+ %9 = sub nsw i32 %3, %8 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 5 ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 6 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = mul i32 %13, %11 ; [#uses=1]
+ %15 = icmp ugt i32 %14, %9 ; [#uses=1]
+ br i1 %15, label %bb10, label %_ZN19btGenericMemoryPool10freeMemoryEPv.exit
+
+_ZN19btGenericMemoryPool10freeMemoryEPv.exit: ; preds = %bb1.i, %bb
+ %16 = load i32* %0, align 4 ; [#uses=1]
+ %17 = icmp ugt i32 %16, %tmp ; [#uses=1]
+ br i1 %17, label %bb, label %bb9
+
+bb9: ; preds = %_ZN19btGenericMemoryPool10freeMemoryEPv.exit, %entry
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %pointer)
+ ret i8 1
+
+bb10: ; preds = %bb1.i
+ %18 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 1 ; [#uses=1]
+ %19 = load i32** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 4 ; [#uses=3]
+ %21 = load i32* %20, align 4 ; [#uses=1]
+ %22 = udiv i32 %9, %11 ; [#uses=1]
+ %23 = getelementptr inbounds i32* %19, i32 %21 ; [#uses=1]
+ store i32 %22, i32* %23, align 4
+ %24 = load i32* %20, align 4 ; [#uses=1]
+ %25 = add i32 %24, 1 ; [#uses=1]
+ store i32 %25, i32* %20, align 4
+ ret i8 1
+}
+
+; [#uses=0]
+define void @_Z10btPoolFreePv(i8* %ptr) {
+entry:
+ %0 = load i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 4), align 4 ; [#uses=2]
+ %1 = icmp eq i32 %0, 0 ; [#uses=1]
+ br i1 %1, label %bb9.i, label %bb.nph.i
+
+bb.nph.i: ; preds = %entry
+ %2 = ptrtoint i8* %ptr to i32 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %_ZN19btGenericMemoryPool10freeMemoryEPv.exit.i, %bb.nph.i
+ %i.015.i = phi i32 [ 0, %bb.nph.i ], [ %tmp.i, %_ZN19btGenericMemoryPool10freeMemoryEPv.exit.i ] ; [#uses=2]
+ %tmp.i = add i32 %i.015.i, 1 ; [#uses=2]
+ %scevgep.i = getelementptr %struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 3, i32 %i.015.i ; [#uses=1]
+ %3 = load %struct.btGenericMemoryPool** %scevgep.i, align 4 ; [#uses=5]
+ %4 = getelementptr inbounds %struct.btGenericMemoryPool* %3, i32 0, i32 0 ; [#uses=1]
+ %5 = load i8** %4, align 4 ; [#uses=2]
+ %6 = icmp ugt i8* %5, %ptr ; [#uses=1]
+ br i1 %6, label %_ZN19btGenericMemoryPool10freeMemoryEPv.exit.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i
+ %7 = ptrtoint i8* %5 to i32 ; [#uses=1]
+ %8 = sub nsw i32 %2, %7 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btGenericMemoryPool* %3, i32 0, i32 5 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btGenericMemoryPool* %3, i32 0, i32 6 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %13 = mul i32 %12, %10 ; [#uses=1]
+ %14 = icmp ugt i32 %13, %8 ; [#uses=1]
+ br i1 %14, label %bb10.i, label %_ZN19btGenericMemoryPool10freeMemoryEPv.exit.i
+
+_ZN19btGenericMemoryPool10freeMemoryEPv.exit.i: ; preds = %bb1.i.i, %bb.i
+ %15 = icmp ugt i32 %0, %tmp.i ; [#uses=1]
+ br i1 %15, label %bb.i, label %bb9.i
+
+bb9.i: ; preds = %_ZN19btGenericMemoryPool10freeMemoryEPv.exit.i, %entry
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %ptr)
+ ret void
+
+bb10.i: ; preds = %bb1.i.i
+ %16 = getelementptr inbounds %struct.btGenericMemoryPool* %3, i32 0, i32 1 ; [#uses=1]
+ %17 = load i32** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btGenericMemoryPool* %3, i32 0, i32 4 ; [#uses=3]
+ %19 = load i32* %18, align 4 ; [#uses=1]
+ %20 = udiv i32 %8, %10 ; [#uses=1]
+ %21 = getelementptr inbounds i32* %17, i32 %19 ; [#uses=1]
+ store i32 %20, i32* %21, align 4
+ %22 = load i32* %18, align 4 ; [#uses=1]
+ %23 = add i32 %22, 1 ; [#uses=1]
+ store i32 %23, i32* %18, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN19btGenericMemoryPool8end_poolEv(%struct.btGenericMemoryPool* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load i8** %0, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %1)
+ %2 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load i32** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32* %3 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %4)
+ %5 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 2 ; [#uses=1]
+ %6 = load i32** %5, align 4 ; [#uses=1]
+ %7 = bitcast i32* %6 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %7)
+ %8 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN22btGenericPoolAllocatorD2Ev(%struct.btGenericPoolAllocator* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([4 x i32 (...)*]* @_ZTV22btGenericPoolAllocator, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 4 ; [#uses=2]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %return, label %bb
+
+bb: ; preds = %bb, %entry
+ %i.05 = phi i32 [ %17, %bb ], [ 0, %entry ] ; [#uses=2]
+ %scevgep = getelementptr %struct.btGenericPoolAllocator* %this, i32 0, i32 3, i32 %i.05 ; [#uses=2]
+ %4 = load %struct.btGenericMemoryPool** %scevgep, align 4 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i8** %5, align 4 ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ %7 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32* %8 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %9)
+ %10 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 2 ; [#uses=1]
+ %11 = load i32** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32* %11 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %12)
+ %13 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btGenericMemoryPool* %4, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = load %struct.btGenericMemoryPool** %scevgep, align 4 ; [#uses=1]
+ %16 = bitcast %struct.btGenericMemoryPool* %15 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %16)
+ %17 = add i32 %i.05, 1 ; [#uses=2]
+ %18 = load i32* %1, align 4 ; [#uses=1]
+ %19 = icmp ugt i32 %18, %17 ; [#uses=1]
+ br i1 %19, label %bb, label %return
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN19btGenericMemoryPool9init_poolEjj(%struct.btGenericMemoryPool* nocapture %this, i32 %element_size, i32 %element_count) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 %element_size, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 6 ; [#uses=5]
+ store i32 %element_count, i32* %3, align 4
+ %4 = mul i32 %element_size, %element_count ; [#uses=1]
+ %5 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %4, i32 16) ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 0 ; [#uses=1]
+ store i8* %5, i8** %6, align 4
+ %7 = load i32* %3, align 4 ; [#uses=1]
+ %8 = shl i32 %7, 2 ; [#uses=1]
+ %9 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %8, i32 16) ; [#uses=1]
+ %10 = bitcast i8* %9 to i32* ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 1 ; [#uses=1]
+ store i32* %10, i32** %11, align 4
+ %12 = load i32* %3, align 4 ; [#uses=1]
+ %13 = shl i32 %12, 2 ; [#uses=1]
+ %14 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %13, i32 16) ; [#uses=1]
+ %15 = bitcast i8* %14 to i32* ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btGenericMemoryPool* %this, i32 0, i32 2 ; [#uses=2]
+ store i32* %15, i32** %16, align 4
+ %17 = load i32* %3, align 4 ; [#uses=1]
+ %18 = icmp eq i32 %17, 0 ; [#uses=1]
+ br i1 %18, label %return, label %bb
+
+bb: ; preds = %bb.bb_crit_edge, %entry
+ %19 = phi i32* [ %.pre, %bb.bb_crit_edge ], [ %15, %entry ] ; [#uses=1]
+ %i.03 = phi i32 [ %20, %bb.bb_crit_edge ], [ 0, %entry ] ; [#uses=2]
+ %scevgep = getelementptr i32* %19, i32 %i.03 ; [#uses=1]
+ store i32 0, i32* %scevgep, align 4
+ %20 = add i32 %i.03, 1 ; [#uses=2]
+ %21 = load i32* %3, align 4 ; [#uses=1]
+ %22 = icmp ugt i32 %21, %20 ; [#uses=1]
+ br i1 %22, label %bb.bb_crit_edge, label %return
+
+bb.bb_crit_edge: ; preds = %bb
+ %.pre = load i32** %16, align 4 ; [#uses=1]
+ br label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=4]
+define %struct.btGenericMemoryPool* @_ZN22btGenericPoolAllocator13push_new_poolEv(%struct.btGenericPoolAllocator* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 4 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp ugt i32 %1, 15 ; [#uses=1]
+ br i1 %2, label %bb2, label %bb1
+
+bb1: ; preds = %entry
+ %3 = tail call i8* @_Z22btAlignedAllocInternalji(i32 28, i32 16) ; [#uses=1]
+ %4 = bitcast i8* %3 to %struct.btGenericMemoryPool* ; [#uses=2]
+ %5 = load i32* %0, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 3, i32 %5 ; [#uses=1]
+ store %struct.btGenericMemoryPool* %4, %struct.btGenericMemoryPool** %6, align 4
+ %7 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 2 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 1 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=2]
+ %11 = load i32* %0, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 3, i32 %11 ; [#uses=1]
+ %13 = load %struct.btGenericMemoryPool** %12, align 4 ; [#uses=7]
+ %14 = getelementptr inbounds %struct.btGenericMemoryPool* %13, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btGenericMemoryPool* %13, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btGenericMemoryPool* %13, i32 0, i32 5 ; [#uses=1]
+ store i32 %10, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btGenericMemoryPool* %13, i32 0, i32 6 ; [#uses=6]
+ store i32 %8, i32* %17, align 4
+ %18 = mul i32 %10, %8 ; [#uses=1]
+ %19 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %18, i32 16) ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btGenericMemoryPool* %13, i32 0, i32 0 ; [#uses=1]
+ store i8* %19, i8** %20, align 4
+ %21 = load i32* %17, align 4 ; [#uses=1]
+ %22 = shl i32 %21, 2 ; [#uses=1]
+ %23 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %22, i32 16) ; [#uses=1]
+ %24 = bitcast i8* %23 to i32* ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btGenericMemoryPool* %13, i32 0, i32 1 ; [#uses=1]
+ store i32* %24, i32** %25, align 4
+ %26 = load i32* %17, align 4 ; [#uses=1]
+ %27 = shl i32 %26, 2 ; [#uses=1]
+ %28 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %27, i32 16) ; [#uses=1]
+ %29 = bitcast i8* %28 to i32* ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btGenericMemoryPool* %13, i32 0, i32 2 ; [#uses=2]
+ store i32* %29, i32** %30, align 4
+ %31 = load i32* %17, align 4 ; [#uses=1]
+ %32 = icmp eq i32 %31, 0 ; [#uses=1]
+ br i1 %32, label %_ZN19btGenericMemoryPool9init_poolEjj.exit, label %bb.i.preheader
+
+bb.i.preheader: ; preds = %bb1
+ store i32 0, i32* %29, align 4
+ %33 = load i32* %17, align 4 ; [#uses=1]
+ %34 = icmp ugt i32 %33, 1 ; [#uses=1]
+ br i1 %34, label %bb.bb_crit_edge.i, label %_ZN19btGenericMemoryPool9init_poolEjj.exit
+
+bb.bb_crit_edge.i: ; preds = %bb.bb_crit_edge.i, %bb.i.preheader
+ %indvar = phi i32 [ %tmp, %bb.bb_crit_edge.i ], [ 0, %bb.i.preheader ] ; [#uses=2]
+ %tmp5 = add i32 %indvar, 2 ; [#uses=1]
+ %tmp = add i32 %indvar, 1 ; [#uses=2]
+ %.pre.i = load i32** %30, align 4 ; [#uses=1]
+ %scevgep.i = getelementptr i32* %.pre.i, i32 %tmp ; [#uses=1]
+ store i32 0, i32* %scevgep.i, align 4
+ %35 = load i32* %17, align 4 ; [#uses=1]
+ %36 = icmp ugt i32 %35, %tmp5 ; [#uses=1]
+ br i1 %36, label %bb.bb_crit_edge.i, label %_ZN19btGenericMemoryPool9init_poolEjj.exit
+
+_ZN19btGenericMemoryPool9init_poolEjj.exit: ; preds = %bb.bb_crit_edge.i, %bb.i.preheader, %bb1
+ %37 = load i32* %0, align 4 ; [#uses=1]
+ %38 = add i32 %37, 1 ; [#uses=1]
+ store i32 %38, i32* %0, align 4
+ ret %struct.btGenericMemoryPool* %4
+
+bb2: ; preds = %entry
+ ret %struct.btGenericMemoryPool* null
+}
+
+; [#uses=0]
+define i8* @_ZN22btGenericPoolAllocator14failback_allocEj(%struct.btGenericPoolAllocator* nocapture %this, i32 %size_bytes) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 2 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = mul i32 %3, %1 ; [#uses=1]
+ %5 = icmp ult i32 %4, %size_bytes ; [#uses=1]
+ br i1 %5, label %bb2, label %bb1
+
+bb1: ; preds = %entry
+ %6 = tail call %struct.btGenericMemoryPool* @_ZN22btGenericPoolAllocator13push_new_poolEv(%struct.btGenericPoolAllocator* %this) ; [#uses=2]
+ %7 = icmp eq %struct.btGenericMemoryPool* %6, null ; [#uses=1]
+ br i1 %7, label %bb2, label %bb3
+
+bb2: ; preds = %bb1, %entry
+ %8 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %size_bytes, i32 16) ; [#uses=1]
+ ret i8* %8
+
+bb3: ; preds = %bb1
+ %9 = tail call i8* @_ZN19btGenericMemoryPool8allocateEj(%struct.btGenericMemoryPool* %6, i32 %size_bytes) nounwind ; [#uses=1]
+ ret i8* %9
+}
+
+; [#uses=0]
+define i8* @_ZN22btGenericPoolAllocator8allocateEj(%struct.btGenericPoolAllocator* nocapture %this, i32 %size_bytes) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 4 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb6, label %bb
+
+bb: ; preds = %bb, %entry
+ %i.09 = phi i32 [ %5, %bb ], [ 0, %entry ] ; [#uses=2]
+ %scevgep = getelementptr %struct.btGenericPoolAllocator* %this, i32 0, i32 3, i32 %i.09 ; [#uses=1]
+ %3 = load %struct.btGenericMemoryPool** %scevgep, align 4 ; [#uses=1]
+ %4 = tail call i8* @_ZN19btGenericMemoryPool8allocateEj(%struct.btGenericMemoryPool* %3, i32 %size_bytes) nounwind ; [#uses=3]
+ %5 = add i32 %i.09, 1 ; [#uses=2]
+ %6 = load i32* %0, align 4 ; [#uses=1]
+ %7 = icmp ugt i32 %6, %5 ; [#uses=1]
+ %8 = icmp eq i8* %4, null ; [#uses=1]
+ %9 = and i1 %7, %8 ; [#uses=1]
+ br i1 %9, label %bb, label %bb4
+
+bb4: ; preds = %bb
+ %10 = icmp eq i8* %4, null ; [#uses=1]
+ br i1 %10, label %bb6, label %bb7
+
+bb6: ; preds = %bb4, %entry
+ %11 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 1 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btGenericPoolAllocator* %this, i32 0, i32 2 ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=1]
+ %15 = mul i32 %14, %12 ; [#uses=1]
+ %16 = icmp ult i32 %15, %size_bytes ; [#uses=1]
+ br i1 %16, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb6
+ %17 = tail call %struct.btGenericMemoryPool* @_ZN22btGenericPoolAllocator13push_new_poolEv(%struct.btGenericPoolAllocator* %this) ; [#uses=2]
+ %18 = icmp eq %struct.btGenericMemoryPool* %17, null ; [#uses=1]
+ br i1 %18, label %bb2.i, label %bb3.i
+
+bb2.i: ; preds = %bb1.i, %bb6
+ %19 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %size_bytes, i32 16) ; [#uses=1]
+ ret i8* %19
+
+bb3.i: ; preds = %bb1.i
+ %20 = tail call i8* @_ZN19btGenericMemoryPool8allocateEj(%struct.btGenericMemoryPool* %17, i32 %size_bytes) nounwind ; [#uses=1]
+ ret i8* %20
+
+bb7: ; preds = %bb4
+ ret i8* %4
+}
+
+; [#uses=0]
+define i8* @_Z11btPoolAllocj(i32 %size) {
+entry:
+ %0 = load i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 4), align 4 ; [#uses=1]
+ %1 = icmp eq i32 %0, 0 ; [#uses=1]
+ br i1 %1, label %bb6.i, label %bb.i
+
+bb.i: ; preds = %bb.i, %entry
+ %i.09.i = phi i32 [ %tmp, %bb.i ], [ 0, %entry ] ; [#uses=2]
+ %tmp = add i32 %i.09.i, 1 ; [#uses=2]
+ %scevgep.i = getelementptr %struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 3, i32 %i.09.i ; [#uses=1]
+ %2 = load %struct.btGenericMemoryPool** %scevgep.i, align 4 ; [#uses=1]
+ %3 = tail call i8* @_ZN19btGenericMemoryPool8allocateEj(%struct.btGenericMemoryPool* %2, i32 %size) nounwind ; [#uses=2]
+ %4 = load i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 4), align 4 ; [#uses=1]
+ %5 = icmp ugt i32 %4, %tmp ; [#uses=1]
+ %6 = icmp eq i8* %3, null ; [#uses=2]
+ %7 = and i1 %5, %6 ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb4.i
+
+bb4.i: ; preds = %bb.i
+ br i1 %6, label %bb6.i, label %_ZN22btGenericPoolAllocator8allocateEj.exit
+
+bb6.i: ; preds = %bb4.i, %entry
+ %8 = load i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 1), align 4 ; [#uses=1]
+ %9 = load i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 2), align 8 ; [#uses=1]
+ %10 = mul i32 %9, %8 ; [#uses=1]
+ %11 = icmp ult i32 %10, %size ; [#uses=1]
+ br i1 %11, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb6.i
+ %12 = tail call %struct.btGenericMemoryPool* @_ZN22btGenericPoolAllocator13push_new_poolEv(%struct.btGenericPoolAllocator* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0)) ; [#uses=2]
+ %13 = icmp eq %struct.btGenericMemoryPool* %12, null ; [#uses=1]
+ br i1 %13, label %bb2.i.i, label %bb3.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb6.i
+ %14 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %size, i32 16) ; [#uses=1]
+ ret i8* %14
+
+bb3.i.i: ; preds = %bb1.i.i
+ %15 = tail call i8* @_ZN19btGenericMemoryPool8allocateEj(%struct.btGenericMemoryPool* %12, i32 %size) nounwind ; [#uses=1]
+ ret i8* %15
+
+_ZN22btGenericPoolAllocator8allocateEj.exit: ; preds = %bb4.i
+ ret i8* %3
+}
+
+; [#uses=0]
+define i8* @_Z13btPoolReallocPvjj(i8* %ptr, i32 %oldsize, i32 %newsize) {
+entry:
+ %0 = load i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 4), align 4 ; [#uses=1]
+ %1 = icmp eq i32 %0, 0 ; [#uses=1]
+ br i1 %1, label %bb6.i.i, label %bb.i.i
+
+bb.i.i: ; preds = %bb.i.i, %entry
+ %i.09.i.i = phi i32 [ %tmp.i, %bb.i.i ], [ 0, %entry ] ; [#uses=2]
+ %tmp.i = add i32 %i.09.i.i, 1 ; [#uses=2]
+ %scevgep.i.i = getelementptr %struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 3, i32 %i.09.i.i ; [#uses=1]
+ %2 = load %struct.btGenericMemoryPool** %scevgep.i.i, align 4 ; [#uses=1]
+ %3 = tail call i8* @_ZN19btGenericMemoryPool8allocateEj(%struct.btGenericMemoryPool* %2, i32 %newsize) nounwind ; [#uses=2]
+ %4 = load i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 4), align 4 ; [#uses=1]
+ %5 = icmp ugt i32 %4, %tmp.i ; [#uses=1]
+ %6 = icmp eq i8* %3, null ; [#uses=2]
+ %7 = and i1 %5, %6 ; [#uses=1]
+ br i1 %7, label %bb.i.i, label %bb4.i.i
+
+bb4.i.i: ; preds = %bb.i.i
+ br i1 %6, label %bb6.i.i, label %_Z11btPoolAllocj.exit
+
+bb6.i.i: ; preds = %bb4.i.i, %entry
+ %8 = load i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 1), align 4 ; [#uses=1]
+ %9 = load i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 2), align 8 ; [#uses=1]
+ %10 = mul i32 %9, %8 ; [#uses=1]
+ %11 = icmp ult i32 %10, %newsize ; [#uses=1]
+ br i1 %11, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb6.i.i
+ %12 = tail call %struct.btGenericMemoryPool* @_ZN22btGenericPoolAllocator13push_new_poolEv(%struct.btGenericPoolAllocator* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0)) ; [#uses=2]
+ %13 = icmp eq %struct.btGenericMemoryPool* %12, null ; [#uses=1]
+ br i1 %13, label %bb2.i.i.i, label %bb3.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb6.i.i
+ %14 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %newsize, i32 16) ; [#uses=1]
+ br label %_Z11btPoolAllocj.exit
+
+bb3.i.i.i: ; preds = %bb1.i.i.i
+ %15 = tail call i8* @_ZN19btGenericMemoryPool8allocateEj(%struct.btGenericMemoryPool* %12, i32 %newsize) nounwind ; [#uses=1]
+ br label %_Z11btPoolAllocj.exit
+
+_Z11btPoolAllocj.exit: ; preds = %bb3.i.i.i, %bb2.i.i.i, %bb4.i.i
+ %16 = phi i8* [ %15, %bb3.i.i.i ], [ %14, %bb2.i.i.i ], [ %3, %bb4.i.i ] ; [#uses=3]
+ %17 = icmp ult i32 %oldsize, %newsize ; [#uses=1]
+ %iftmp.24.0 = select i1 %17, i32 %oldsize, i32 %newsize ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %16, i8* %ptr, i32 %iftmp.24.0, i32 1, i1 false)
+ %18 = load i32* getelementptr inbounds (%struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 4), align 4 ; [#uses=2]
+ %19 = icmp eq i32 %18, 0 ; [#uses=1]
+ br i1 %19, label %bb9.i.i, label %bb.nph.i.i
+
+bb.nph.i.i: ; preds = %_Z11btPoolAllocj.exit
+ %20 = ptrtoint i8* %ptr to i32 ; [#uses=1]
+ br label %bb.i.i5
+
+bb.i.i5: ; preds = %_ZN19btGenericMemoryPool10freeMemoryEPv.exit.i.i, %bb.nph.i.i
+ %i.015.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %tmp.i.i, %_ZN19btGenericMemoryPool10freeMemoryEPv.exit.i.i ] ; [#uses=2]
+ %tmp.i.i = add i32 %i.015.i.i, 1 ; [#uses=2]
+ %scevgep.i.i4 = getelementptr %struct.GIM_STANDARD_ALLOCATOR* @g_main_allocator, i32 0, i32 0, i32 3, i32 %i.015.i.i ; [#uses=1]
+ %21 = load %struct.btGenericMemoryPool** %scevgep.i.i4, align 4 ; [#uses=5]
+ %22 = getelementptr inbounds %struct.btGenericMemoryPool* %21, i32 0, i32 0 ; [#uses=1]
+ %23 = load i8** %22, align 4 ; [#uses=2]
+ %24 = icmp ugt i8* %23, %ptr ; [#uses=1]
+ br i1 %24, label %_ZN19btGenericMemoryPool10freeMemoryEPv.exit.i.i, label %bb1.i.i.i6
+
+bb1.i.i.i6: ; preds = %bb.i.i5
+ %25 = ptrtoint i8* %23 to i32 ; [#uses=1]
+ %26 = sub nsw i32 %20, %25 ; [#uses=2]
+ %27 = getelementptr inbounds %struct.btGenericMemoryPool* %21, i32 0, i32 5 ; [#uses=1]
+ %28 = load i32* %27, align 4 ; [#uses=2]
+ %29 = getelementptr inbounds %struct.btGenericMemoryPool* %21, i32 0, i32 6 ; [#uses=1]
+ %30 = load i32* %29, align 4 ; [#uses=1]
+ %31 = mul i32 %30, %28 ; [#uses=1]
+ %32 = icmp ugt i32 %31, %26 ; [#uses=1]
+ br i1 %32, label %bb10.i.i, label %_ZN19btGenericMemoryPool10freeMemoryEPv.exit.i.i
+
+_ZN19btGenericMemoryPool10freeMemoryEPv.exit.i.i: ; preds = %bb1.i.i.i6, %bb.i.i5
+ %33 = icmp ugt i32 %18, %tmp.i.i ; [#uses=1]
+ br i1 %33, label %bb.i.i5, label %bb9.i.i
+
+bb9.i.i: ; preds = %_ZN19btGenericMemoryPool10freeMemoryEPv.exit.i.i, %_Z11btPoolAllocj.exit
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %ptr)
+ ret i8* %16
+
+bb10.i.i: ; preds = %bb1.i.i.i6
+ %34 = getelementptr inbounds %struct.btGenericMemoryPool* %21, i32 0, i32 1 ; [#uses=1]
+ %35 = load i32** %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btGenericMemoryPool* %21, i32 0, i32 4 ; [#uses=3]
+ %37 = load i32* %36, align 4 ; [#uses=1]
+ %38 = udiv i32 %26, %28 ; [#uses=1]
+ %39 = getelementptr inbounds i32* %35, i32 %37 ; [#uses=1]
+ store i32 %38, i32* %39, align 4
+ %40 = load i32* %36, align 4 ; [#uses=1]
+ %41 = add i32 %40, 1 ; [#uses=1]
+ store i32 %41, i32* %36, align 4
+ ret i8* %16
+}
+
+; [#uses=1]
+define i32 @_ZN9btBvhTree20_calc_splitting_axisER18GIM_BVH_DATA_ARRAYii(%struct.btBvhTree* nocapture %this, %struct.GIM_BVH_DATA_ARRAY* nocapture %primitive_boxes, i32 %startIndex, i32 %endIndex) nounwind readonly align 2 {
+entry:
+ %0 = sub nsw i32 %endIndex, %startIndex ; [#uses=4]
+ %1 = icmp slt i32 %startIndex, %endIndex ; [#uses=2]
+ br i1 %1, label %bb.nph45, label %bb2.thread
+
+bb2.thread: ; preds = %entry
+ %2 = sitofp i32 %0 to float ; [#uses=1]
+ br label %bb6
+
+bb.nph45: ; preds = %entry
+ %3 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=1]
+ %4 = load %struct.GIM_AABB_DATA** %3, align 4 ; [#uses=6]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph45
+ %indvar61 = phi i32 [ 0, %bb.nph45 ], [ %indvar.next62, %bb ] ; [#uses=2]
+ %means.0.2.043 = phi float [ 0.000000e+00, %bb.nph45 ], [ %19, %bb ] ; [#uses=1]
+ %means.0.1.042 = phi float [ 0.000000e+00, %bb.nph45 ], [ %18, %bb ] ; [#uses=1]
+ %means.0.0.041 = phi float [ 0.000000e+00, %bb.nph45 ], [ %17, %bb ] ; [#uses=1]
+ %tmp65 = add i32 %indvar61, %startIndex ; [#uses=6]
+ %scevgep66 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep67 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep68 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep69 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep70 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep7172 = getelementptr inbounds %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %scevgep66, align 4 ; [#uses=1]
+ %6 = load float* %scevgep67, align 4 ; [#uses=1]
+ %7 = fadd float %5, %6 ; [#uses=1]
+ %8 = load float* %scevgep68, align 4 ; [#uses=1]
+ %9 = load float* %scevgep69, align 4 ; [#uses=1]
+ %10 = fadd float %8, %9 ; [#uses=1]
+ %11 = load float* %scevgep70, align 4 ; [#uses=1]
+ %12 = load float* %scevgep7172, align 4 ; [#uses=1]
+ %13 = fadd float %11, %12 ; [#uses=1]
+ %14 = fmul float %7, 5.000000e-01 ; [#uses=1]
+ %15 = fmul float %10, 5.000000e-01 ; [#uses=1]
+ %16 = fmul float %13, 5.000000e-01 ; [#uses=1]
+ %17 = fadd float %means.0.0.041, %16 ; [#uses=2]
+ %18 = fadd float %means.0.1.042, %15 ; [#uses=2]
+ %19 = fadd float %means.0.2.043, %14 ; [#uses=2]
+ %indvar.next62 = add i32 %indvar61, 1 ; [#uses=2]
+ %exitcond64 = icmp eq i32 %indvar.next62, %0 ; [#uses=1]
+ br i1 %exitcond64, label %bb2, label %bb
+
+bb2: ; preds = %bb
+ %20 = sitofp i32 %0 to float ; [#uses=3]
+ %21 = fdiv float 1.000000e+00, %20 ; [#uses=3]
+ %22 = fmul float %17, %21 ; [#uses=1]
+ %23 = fmul float %18, %21 ; [#uses=1]
+ %24 = fmul float %19, %21 ; [#uses=1]
+ br i1 %1, label %bb.nph, label %bb6
+
+bb.nph: ; preds = %bb2
+ %25 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=1]
+ %26 = load %struct.GIM_AABB_DATA** %25, align 4 ; [#uses=6]
+ br label %bb3
+
+bb3: ; preds = %bb3, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb3 ] ; [#uses=2]
+ %variance.0.2.037 = phi float [ 0.000000e+00, %bb.nph ], [ %47, %bb3 ] ; [#uses=1]
+ %variance.0.1.036 = phi float [ 0.000000e+00, %bb.nph ], [ %46, %bb3 ] ; [#uses=1]
+ %variance.0.0.035 = phi float [ 0.000000e+00, %bb.nph ], [ %45, %bb3 ] ; [#uses=1]
+ %tmp51 = add i32 %indvar, %startIndex ; [#uses=6]
+ %scevgep = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep52 = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep53 = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep54 = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep55 = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep5657 = getelementptr inbounds %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %scevgep, align 4 ; [#uses=1]
+ %28 = load float* %scevgep52, align 4 ; [#uses=1]
+ %29 = fadd float %27, %28 ; [#uses=1]
+ %30 = load float* %scevgep53, align 4 ; [#uses=1]
+ %31 = load float* %scevgep54, align 4 ; [#uses=1]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = load float* %scevgep55, align 4 ; [#uses=1]
+ %34 = load float* %scevgep5657, align 4 ; [#uses=1]
+ %35 = fadd float %33, %34 ; [#uses=1]
+ %36 = fmul float %29, 5.000000e-01 ; [#uses=1]
+ %37 = fmul float %32, 5.000000e-01 ; [#uses=1]
+ %38 = fmul float %35, 5.000000e-01 ; [#uses=1]
+ %39 = fsub float %36, %24 ; [#uses=2]
+ %40 = fsub float %37, %23 ; [#uses=2]
+ %41 = fsub float %38, %22 ; [#uses=2]
+ %42 = fmul float %39, %39 ; [#uses=1]
+ %43 = fmul float %40, %40 ; [#uses=1]
+ %44 = fmul float %41, %41 ; [#uses=1]
+ %45 = fadd float %variance.0.0.035, %44 ; [#uses=2]
+ %46 = fadd float %variance.0.1.036, %43 ; [#uses=2]
+ %47 = fadd float %variance.0.2.037, %42 ; [#uses=2]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %0 ; [#uses=1]
+ br i1 %exitcond, label %bb6, label %bb3
+
+bb6: ; preds = %bb3, %bb2, %bb2.thread
+ %48 = phi float [ %20, %bb2 ], [ %2, %bb2.thread ], [ %20, %bb3 ] ; [#uses=1]
+ %variance.0.2.0.lcssa = phi float [ 0.000000e+00, %bb2 ], [ 0.000000e+00, %bb2.thread ], [ %47, %bb3 ] ; [#uses=1]
+ %variance.0.1.0.lcssa = phi float [ 0.000000e+00, %bb2 ], [ 0.000000e+00, %bb2.thread ], [ %46, %bb3 ] ; [#uses=1]
+ %variance.0.0.0.lcssa = phi float [ 0.000000e+00, %bb2 ], [ 0.000000e+00, %bb2.thread ], [ %45, %bb3 ] ; [#uses=1]
+ %49 = fadd float %48, -1.000000e+00 ; [#uses=1]
+ %50 = fdiv float 1.000000e+00, %49 ; [#uses=3]
+ %51 = fmul float %variance.0.0.0.lcssa, %50 ; [#uses=2]
+ %52 = fmul float %variance.0.1.0.lcssa, %50 ; [#uses=2]
+ %53 = fmul float %variance.0.2.0.lcssa, %50 ; [#uses=2]
+ %54 = fcmp olt float %51, %52 ; [#uses=1]
+ br i1 %54, label %bb.i, label %bb4.i
+
+bb.i: ; preds = %bb6
+ %55 = fcmp olt float %52, %53 ; [#uses=1]
+ %iftmp.20.0.i = select i1 %55, i32 2, i32 1 ; [#uses=1]
+ ret i32 %iftmp.20.0.i
+
+bb4.i: ; preds = %bb6
+ %56 = fcmp olt float %51, %53 ; [#uses=1]
+ %iftmp.21.0.i = select i1 %56, i32 2, i32 0 ; [#uses=1]
+ ret i32 %iftmp.21.0.i
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN26BT_BOX_BOX_TRANSFORM_CACHE19calc_from_homogenicERK11btTransformS2_(%struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, %struct.btTransform* nocapture %trans0, %struct.btTransform* nocapture %trans1) nounwind inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=5]
+ %10 = load float* %7, align 4 ; [#uses=5]
+ %11 = load float* %6, align 4 ; [#uses=5]
+ %12 = load float* %5, align 4 ; [#uses=5]
+ %13 = load float* %4, align 4 ; [#uses=5]
+ %14 = load float* %3, align 4 ; [#uses=5]
+ %15 = load float* %2, align 4 ; [#uses=5]
+ %16 = load float* %1, align 4 ; [#uses=5]
+ %17 = load float* %0, align 4 ; [#uses=5]
+ %18 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fsub float -0.000000e+00, %19 ; [#uses=3]
+ %21 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fsub float -0.000000e+00, %22 ; [#uses=3]
+ %24 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fsub float -0.000000e+00, %25 ; [#uses=3]
+ %27 = fmul float %15, %26 ; [#uses=1]
+ %28 = fmul float %16, %23 ; [#uses=1]
+ %29 = fadd float %27, %28 ; [#uses=1]
+ %30 = fmul float %17, %20 ; [#uses=1]
+ %31 = fadd float %29, %30 ; [#uses=1]
+ %32 = fmul float %12, %26 ; [#uses=1]
+ %33 = fmul float %13, %23 ; [#uses=1]
+ %34 = fadd float %32, %33 ; [#uses=1]
+ %35 = fmul float %14, %20 ; [#uses=1]
+ %36 = fadd float %34, %35 ; [#uses=1]
+ %37 = fmul float %9, %26 ; [#uses=1]
+ %38 = fmul float %10, %23 ; [#uses=1]
+ %39 = fadd float %37, %38 ; [#uses=1]
+ %40 = fmul float %11, %20 ; [#uses=1]
+ %41 = fadd float %39, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %trans1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=3]
+ %44 = fmul float %15, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %trans1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=3]
+ %47 = fmul float %16, %46 ; [#uses=1]
+ %48 = fadd float %44, %47 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %trans1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=3]
+ %51 = fmul float %17, %50 ; [#uses=1]
+ %52 = fadd float %48, %51 ; [#uses=1]
+ %53 = fadd float %52, %31 ; [#uses=1]
+ %54 = fmul float %12, %43 ; [#uses=1]
+ %55 = fmul float %13, %46 ; [#uses=1]
+ %56 = fadd float %54, %55 ; [#uses=1]
+ %57 = fmul float %14, %50 ; [#uses=1]
+ %58 = fadd float %56, %57 ; [#uses=1]
+ %59 = fadd float %58, %36 ; [#uses=1]
+ %60 = fmul float %9, %43 ; [#uses=1]
+ %61 = fmul float %10, %46 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=1]
+ %63 = fmul float %11, %50 ; [#uses=1]
+ %64 = fadd float %62, %63 ; [#uses=1]
+ %65 = fadd float %64, %41 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btTransform* %trans1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=3]
+ %68 = fmul float %67, %15 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btTransform* %trans1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=3]
+ %71 = fmul float %70, %16 ; [#uses=1]
+ %72 = fadd float %68, %71 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btTransform* %trans1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=3]
+ %75 = fmul float %74, %17 ; [#uses=1]
+ %76 = fadd float %72, %75 ; [#uses=2]
+ %77 = getelementptr inbounds %struct.btTransform* %trans1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=3]
+ %79 = fmul float %78, %15 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btTransform* %trans1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=3]
+ %82 = fmul float %81, %16 ; [#uses=1]
+ %83 = fadd float %79, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btTransform* %trans1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=3]
+ %86 = fmul float %85, %17 ; [#uses=1]
+ %87 = fadd float %83, %86 ; [#uses=2]
+ %88 = getelementptr inbounds %struct.btTransform* %trans1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=3]
+ %90 = fmul float %89, %15 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btTransform* %trans1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=3]
+ %93 = fmul float %92, %16 ; [#uses=1]
+ %94 = fadd float %90, %93 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btTransform* %trans1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=3]
+ %97 = fmul float %96, %17 ; [#uses=1]
+ %98 = fadd float %94, %97 ; [#uses=2]
+ %99 = fmul float %67, %12 ; [#uses=1]
+ %100 = fmul float %70, %13 ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=1]
+ %102 = fmul float %74, %14 ; [#uses=1]
+ %103 = fadd float %101, %102 ; [#uses=2]
+ %104 = fmul float %78, %12 ; [#uses=1]
+ %105 = fmul float %81, %13 ; [#uses=1]
+ %106 = fadd float %104, %105 ; [#uses=1]
+ %107 = fmul float %85, %14 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=2]
+ %109 = fmul float %89, %12 ; [#uses=1]
+ %110 = fmul float %92, %13 ; [#uses=1]
+ %111 = fadd float %109, %110 ; [#uses=1]
+ %112 = fmul float %96, %14 ; [#uses=1]
+ %113 = fadd float %111, %112 ; [#uses=2]
+ %114 = fmul float %67, %9 ; [#uses=1]
+ %115 = fmul float %70, %10 ; [#uses=1]
+ %116 = fadd float %114, %115 ; [#uses=1]
+ %117 = fmul float %74, %11 ; [#uses=1]
+ %118 = fadd float %116, %117 ; [#uses=2]
+ %119 = fmul float %78, %9 ; [#uses=1]
+ %120 = fmul float %81, %10 ; [#uses=1]
+ %121 = fadd float %119, %120 ; [#uses=1]
+ %122 = fmul float %85, %11 ; [#uses=1]
+ %123 = fadd float %121, %122 ; [#uses=2]
+ %124 = fmul float %89, %9 ; [#uses=1]
+ %125 = fmul float %92, %10 ; [#uses=1]
+ %126 = fadd float %124, %125 ; [#uses=1]
+ %127 = fmul float %96, %11 ; [#uses=1]
+ %128 = fadd float %126, %127 ; [#uses=2]
+ %129 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %65, float* %129, align 4
+ %130 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %59, float* %130, align 4
+ %131 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %53, float* %131, align 4
+ %132 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %132, align 4
+ %133 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %128, float* %133, align 4
+ %134 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %123, float* %134, align 4
+ %135 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %118, float* %135, align 4
+ %136 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %136, align 4
+ %137 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %113, float* %137, align 4
+ %138 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %108, float* %138, align 4
+ %139 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %103, float* %139, align 4
+ %140 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %140, align 4
+ %141 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %98, float* %141, align 4
+ %142 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %87, float* %142, align 4
+ %143 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %76, float* %143, align 4
+ %144 = getelementptr inbounds %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %144, align 4
+ %scevgep9.i = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep9.1.i = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep9.2.i = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %145 = tail call float @fabsf(float %128) nounwind readnone ; [#uses=1]
+ %146 = fadd float %145, 0x3EB0C6F7A0000000 ; [#uses=1]
+ store float %146, float* %scevgep9.i, align 4
+ %147 = tail call float @fabsf(float %123) nounwind readnone ; [#uses=1]
+ %148 = fadd float %147, 0x3EB0C6F7A0000000 ; [#uses=1]
+ store float %148, float* %scevgep9.1.i, align 4
+ %149 = tail call float @fabsf(float %118) nounwind readnone ; [#uses=1]
+ %150 = fadd float %149, 0x3EB0C6F7A0000000 ; [#uses=1]
+ store float %150, float* %scevgep9.2.i, align 4
+ %scevgep9.118.i = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 2, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep9.1.1.i = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 2, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep9.2.1.i = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 2, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %151 = tail call float @fabsf(float %113) nounwind readnone ; [#uses=1]
+ %152 = fadd float %151, 0x3EB0C6F7A0000000 ; [#uses=1]
+ store float %152, float* %scevgep9.118.i, align 4
+ %153 = tail call float @fabsf(float %108) nounwind readnone ; [#uses=1]
+ %154 = fadd float %153, 0x3EB0C6F7A0000000 ; [#uses=1]
+ store float %154, float* %scevgep9.1.1.i, align 4
+ %155 = tail call float @fabsf(float %103) nounwind readnone ; [#uses=1]
+ %156 = fadd float %155, 0x3EB0C6F7A0000000 ; [#uses=1]
+ store float %156, float* %scevgep9.2.1.i, align 4
+ %scevgep9.221.i = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 2, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep9.1.2.i = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 2, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep9.2.2.i = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %this, i32 0, i32 2, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %157 = tail call float @fabsf(float %98) nounwind readnone ; [#uses=1]
+ %158 = fadd float %157, 0x3EB0C6F7A0000000 ; [#uses=1]
+ store float %158, float* %scevgep9.221.i, align 4
+ %159 = tail call float @fabsf(float %87) nounwind readnone ; [#uses=1]
+ %160 = fadd float %159, 0x3EB0C6F7A0000000 ; [#uses=1]
+ store float %160, float* %scevgep9.1.2.i, align 4
+ %161 = tail call float @fabsf(float %76) nounwind readnone ; [#uses=1]
+ %162 = fadd float %161, 0x3EB0C6F7A0000000 ; [#uses=1]
+ store float %162, float* %scevgep9.2.2.i, align 4
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr zeroext i8 @_ZNK6btAABB11collide_rayERK9btVector3S2_(%struct.GIM_AABB* nocapture %this, %struct.btQuadWord* nocapture %vorigin, %struct.btQuadWord* nocapture %vdir) nounwind readonly inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.GIM_AABB* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.GIM_AABB* %this, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fadd float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.GIM_AABB* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.GIM_AABB* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fadd float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.GIM_AABB* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.GIM_AABB* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fadd float %11, %13 ; [#uses=1]
+ %15 = fmul float %4, 5.000000e-01 ; [#uses=2]
+ %16 = fmul float %9, 5.000000e-01 ; [#uses=2]
+ %17 = fmul float %14, 5.000000e-01 ; [#uses=2]
+ %18 = fsub float %1, %15 ; [#uses=3]
+ %19 = fsub float %6, %16 ; [#uses=3]
+ %20 = fsub float %11, %17 ; [#uses=3]
+ %21 = getelementptr inbounds %struct.btQuadWord* %vorigin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fsub float %22, %17 ; [#uses=4]
+ %24 = tail call float @fabsf(float %23) nounwind readnone ; [#uses=1]
+ %25 = fcmp ule float %24, %20 ; [#uses=1]
+ br i1 %25, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %26 = getelementptr inbounds %struct.btQuadWord* %vdir, i32 0, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fmul float %27, %23 ; [#uses=1]
+ %29 = fcmp ult float %28, 0.000000e+00 ; [#uses=1]
+ br i1 %29, label %bb2, label %bb29
+
+bb2: ; preds = %bb, %entry
+ %30 = getelementptr inbounds %struct.btQuadWord* %vorigin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = fsub float %31, %16 ; [#uses=4]
+ %33 = tail call float @fabsf(float %32) nounwind readnone ; [#uses=1]
+ %34 = fcmp ule float %33, %19 ; [#uses=1]
+ br i1 %34, label %bb8, label %bb6
+
+bb6: ; preds = %bb2
+ %35 = getelementptr inbounds %struct.btQuadWord* %vdir, i32 0, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = fmul float %36, %32 ; [#uses=1]
+ %38 = fcmp ult float %37, 0.000000e+00 ; [#uses=1]
+ br i1 %38, label %bb8, label %bb29
+
+bb8: ; preds = %bb6, %bb2
+ %39 = getelementptr inbounds %struct.btQuadWord* %vorigin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fsub float %40, %15 ; [#uses=4]
+ %42 = tail call float @fabsf(float %41) nounwind readnone ; [#uses=1]
+ %43 = fcmp ule float %42, %18 ; [#uses=1]
+ %.phi.trans.insert = getelementptr inbounds %struct.btQuadWord* %vdir, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre = load float* %.phi.trans.insert, align 4 ; [#uses=3]
+ br i1 %43, label %bb15, label %bb13
+
+bb13: ; preds = %bb8
+ %44 = fmul float %.pre, %41 ; [#uses=1]
+ %45 = fcmp ult float %44, 0.000000e+00 ; [#uses=1]
+ br i1 %45, label %bb15, label %bb29
+
+bb15: ; preds = %bb13, %bb8
+ %46 = phi float [ %.pre, %bb13 ], [ %.pre, %bb8 ] ; [#uses=3]
+ %47 = getelementptr inbounds %struct.btQuadWord* %vdir, i32 0, i32 0, i32 1 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=3]
+ %49 = fmul float %48, %41 ; [#uses=1]
+ %50 = fmul float %46, %32 ; [#uses=1]
+ %51 = fsub float %49, %50 ; [#uses=1]
+ %52 = tail call float @fabsf(float %51) nounwind readnone ; [#uses=1]
+ %53 = tail call float @fabsf(float %46) nounwind readnone ; [#uses=2]
+ %54 = fmul float %19, %53 ; [#uses=1]
+ %55 = tail call float @fabsf(float %48) nounwind readnone ; [#uses=2]
+ %56 = fmul float %18, %55 ; [#uses=1]
+ %57 = fadd float %54, %56 ; [#uses=1]
+ %58 = fcmp ogt float %52, %57 ; [#uses=1]
+ br i1 %58, label %bb29, label %bb22
+
+bb22: ; preds = %bb15
+ %59 = fmul float %46, %23 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btQuadWord* %vdir, i32 0, i32 0, i32 0 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=3]
+ %62 = fmul float %61, %41 ; [#uses=1]
+ %63 = fsub float %59, %62 ; [#uses=1]
+ %64 = tail call float @fabsf(float %63) nounwind readnone ; [#uses=1]
+ %65 = fmul float %20, %53 ; [#uses=1]
+ %66 = tail call float @fabsf(float %61) nounwind readnone ; [#uses=2]
+ %67 = fmul float %18, %66 ; [#uses=1]
+ %68 = fadd float %65, %67 ; [#uses=1]
+ %69 = fcmp ogt float %64, %68 ; [#uses=1]
+ br i1 %69, label %bb29, label %bb25
+
+bb25: ; preds = %bb22
+ %70 = fmul float %61, %32 ; [#uses=1]
+ %71 = fmul float %48, %23 ; [#uses=1]
+ %72 = fsub float %70, %71 ; [#uses=1]
+ %73 = tail call float @fabsf(float %72) nounwind readnone ; [#uses=1]
+ %74 = fmul float %20, %55 ; [#uses=1]
+ %75 = fmul float %19, %66 ; [#uses=1]
+ %76 = fadd float %74, %75 ; [#uses=1]
+ %not. = fcmp ule float %73, %76 ; [#uses=1]
+ %retval = zext i1 %not. to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb29: ; preds = %bb22, %bb15, %bb13, %bb6, %bb
+ ret i8 0
+}
+
+; [#uses=2]
+define linkonce_odr zeroext i8 @_ZNK6btAABB23overlapping_trans_cacheERKS_RK26BT_BOX_BOX_TRANSFORM_CACHEb(%struct.GIM_AABB* nocapture %this, %struct.GIM_AABB* nocapture %box, %struct.BT_BOX_BOX_TRANSFORM_CACHE* nocapture %transcache, i8 zeroext %fulltest) nounwind readonly inlinehint align 2 {
+entry:
+ %ea = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %eb = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %ca = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %T = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %0 = getelementptr inbounds %struct.GIM_AABB* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.GIM_AABB* %this, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fadd float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.GIM_AABB* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.GIM_AABB* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fadd float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.GIM_AABB* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.GIM_AABB* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fadd float %11, %13 ; [#uses=1]
+ %15 = fmul float %4, 5.000000e-01 ; [#uses=2]
+ %16 = fmul float %9, 5.000000e-01 ; [#uses=2]
+ %17 = fmul float %14, 5.000000e-01 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btQuadWord* %ca, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %17, float* %18, align 8
+ %19 = getelementptr inbounds %struct.btQuadWord* %ca, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %16, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btQuadWord* %ca, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %15, float* %20, align 8
+ %21 = getelementptr inbounds %struct.btQuadWord* %ca, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = fsub float %1, %15 ; [#uses=2]
+ %23 = fsub float %6, %16 ; [#uses=2]
+ %24 = fsub float %11, %17 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btQuadWord* %ea, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %24, float* %25, align 8
+ %26 = getelementptr inbounds %struct.btQuadWord* %ea, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %23, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btQuadWord* %ea, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %22, float* %27, align 8
+ %28 = getelementptr inbounds %struct.btQuadWord* %ea, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=2]
+ %31 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fadd float %30, %32 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=2]
+ %36 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fadd float %35, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=2]
+ %41 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = fadd float %40, %42 ; [#uses=1]
+ %44 = fmul float %33, 5.000000e-01 ; [#uses=2]
+ %45 = fmul float %38, 5.000000e-01 ; [#uses=2]
+ %46 = fmul float %43, 5.000000e-01 ; [#uses=2]
+ %47 = fsub float %30, %44 ; [#uses=2]
+ %48 = fsub float %35, %45 ; [#uses=2]
+ %49 = fsub float %40, %46 ; [#uses=2]
+ %50 = getelementptr inbounds %struct.btQuadWord* %eb, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %49, float* %50, align 8
+ %51 = getelementptr inbounds %struct.btQuadWord* %eb, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %48, float* %51, align 4
+ %52 = getelementptr inbounds %struct.btQuadWord* %eb, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %47, float* %52, align 8
+ %53 = getelementptr inbounds %struct.btQuadWord* %eb, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %53, align 4
+ br label %bb3
+
+bb: ; preds = %bb3
+ %scevgep58 = getelementptr %struct.btQuadWord* %T, i32 0, i32 0, i32 %79 ; [#uses=1]
+ %scevgep6869 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 1, i32 0, i32 %79, i32 0, i32 0 ; [#uses=1]
+ %scevgep67 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 1, i32 0, i32 %79, i32 0, i32 1 ; [#uses=1]
+ %scevgep66 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 1, i32 0, i32 %79, i32 0, i32 2 ; [#uses=1]
+ %scevgep65 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 0, i32 0, i32 %79 ; [#uses=1]
+ %scevgep64 = getelementptr %struct.btQuadWord* %ca, i32 0, i32 0, i32 %79 ; [#uses=1]
+ %scevgep6263 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 2, i32 0, i32 %79, i32 0, i32 0 ; [#uses=1]
+ %scevgep61 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 2, i32 0, i32 %79, i32 0, i32 1 ; [#uses=1]
+ %scevgep60 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 2, i32 0, i32 %79, i32 0, i32 2 ; [#uses=1]
+ %scevgep59 = getelementptr %struct.btQuadWord* %ea, i32 0, i32 0, i32 %79 ; [#uses=1]
+ %54 = load float* %scevgep6869, align 4 ; [#uses=1]
+ %55 = fmul float %54, %46 ; [#uses=1]
+ %56 = load float* %scevgep67, align 4 ; [#uses=1]
+ %57 = fmul float %56, %45 ; [#uses=1]
+ %58 = fadd float %55, %57 ; [#uses=1]
+ %59 = load float* %scevgep66, align 4 ; [#uses=1]
+ %60 = fmul float %59, %44 ; [#uses=1]
+ %61 = fadd float %58, %60 ; [#uses=1]
+ %62 = load float* %scevgep65, align 4 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=1]
+ %64 = load float* %scevgep64, align 4 ; [#uses=1]
+ %65 = fsub float %63, %64 ; [#uses=2]
+ store float %65, float* %scevgep58, align 4
+ %66 = load float* %scevgep6263, align 4 ; [#uses=1]
+ %67 = fmul float %66, %49 ; [#uses=1]
+ %68 = load float* %scevgep61, align 4 ; [#uses=1]
+ %69 = fmul float %68, %48 ; [#uses=1]
+ %70 = fadd float %67, %69 ; [#uses=1]
+ %71 = load float* %scevgep60, align 4 ; [#uses=1]
+ %72 = fmul float %71, %47 ; [#uses=1]
+ %73 = fadd float %70, %72 ; [#uses=1]
+ %74 = load float* %scevgep59, align 4 ; [#uses=1]
+ %75 = fadd float %73, %74 ; [#uses=1]
+ %76 = call float @fabsf(float %65) nounwind readnone ; [#uses=1]
+ %77 = fcmp ogt float %76, %75 ; [#uses=1]
+ br i1 %77, label %bb34, label %bb2
+
+bb2: ; preds = %bb
+ %78 = add nsw i32 %79, 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %entry
+ %79 = phi i32 [ 0, %entry ], [ %78, %bb2 ] ; [#uses=12]
+ %80 = icmp slt i32 %79, 3 ; [#uses=1]
+ br i1 %80, label %bb, label %bb9.preheader
+
+bb9.preheader: ; preds = %bb3
+ %81 = getelementptr inbounds %struct.btQuadWord* %T, i32 0, i32 0, i32 0 ; [#uses=1]
+ %82 = load float* %81, align 8 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btQuadWord* %T, i32 0, i32 0, i32 1 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btQuadWord* %T, i32 0, i32 0, i32 2 ; [#uses=1]
+ br label %bb9
+
+bb5: ; preds = %bb9
+ %scevgep57 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 1, i32 0, i32 0, i32 0, i32 %108 ; [#uses=1]
+ %scevgep56 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 1, i32 0, i32 1, i32 0, i32 %108 ; [#uses=1]
+ %scevgep55 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 1, i32 0, i32 2, i32 0, i32 %108 ; [#uses=1]
+ %scevgep54 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 2, i32 0, i32 0, i32 0, i32 %108 ; [#uses=1]
+ %scevgep53 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 2, i32 0, i32 1, i32 0, i32 %108 ; [#uses=1]
+ %scevgep52 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 2, i32 0, i32 2, i32 0, i32 %108 ; [#uses=1]
+ %scevgep51 = getelementptr %struct.btQuadWord* %eb, i32 0, i32 0, i32 %108 ; [#uses=1]
+ %85 = load float* %scevgep57, align 4 ; [#uses=1]
+ %86 = fmul float %82, %85 ; [#uses=1]
+ %87 = load float* %83, align 4 ; [#uses=1]
+ %88 = load float* %scevgep56, align 4 ; [#uses=1]
+ %89 = fmul float %87, %88 ; [#uses=1]
+ %90 = fadd float %86, %89 ; [#uses=1]
+ %91 = load float* %84, align 8 ; [#uses=1]
+ %92 = load float* %scevgep55, align 4 ; [#uses=1]
+ %93 = fmul float %91, %92 ; [#uses=1]
+ %94 = fadd float %90, %93 ; [#uses=1]
+ %95 = load float* %scevgep54, align 4 ; [#uses=1]
+ %96 = fmul float %24, %95 ; [#uses=1]
+ %97 = load float* %scevgep53, align 4 ; [#uses=1]
+ %98 = fmul float %23, %97 ; [#uses=1]
+ %99 = fadd float %96, %98 ; [#uses=1]
+ %100 = load float* %scevgep52, align 4 ; [#uses=1]
+ %101 = fmul float %22, %100 ; [#uses=1]
+ %102 = fadd float %99, %101 ; [#uses=1]
+ %103 = load float* %scevgep51, align 4 ; [#uses=1]
+ %104 = fadd float %102, %103 ; [#uses=1]
+ %105 = call float @fabsf(float %94) nounwind readnone ; [#uses=1]
+ %106 = fcmp ogt float %105, %104 ; [#uses=1]
+ br i1 %106, label %bb34, label %bb8
+
+bb8: ; preds = %bb5
+ %107 = add nsw i32 %108, 1 ; [#uses=1]
+ br label %bb9
+
+bb9: ; preds = %bb8, %bb9.preheader
+ %108 = phi i32 [ %107, %bb8 ], [ 0, %bb9.preheader ] ; [#uses=9]
+ %109 = icmp slt i32 %108, 3 ; [#uses=1]
+ br i1 %109, label %bb5, label %bb10
+
+bb10: ; preds = %bb9
+ %toBool11 = icmp eq i8 %fulltest, 0 ; [#uses=1]
+ br i1 %toBool11, label %bb34, label %bb32
+
+bb13: ; preds = %bb32
+ %tmp46 = add i32 %149, 1 ; [#uses=2]
+ %tmp45 = add i32 %149, 2 ; [#uses=1]
+ %110 = srem i32 %tmp46, 3 ; [#uses=2]
+ %111 = srem i32 %tmp45, 3 ; [#uses=2]
+ %112 = icmp eq i32 %149, 0 ; [#uses=1]
+ %iftmp.168.0 = zext i1 %112 to i32 ; [#uses=2]
+ %113 = icmp eq i32 %149, 2 ; [#uses=1]
+ %iftmp.169.0 = select i1 %113, i32 1, i32 2 ; [#uses=2]
+ %114 = getelementptr inbounds %struct.btQuadWord* %T, i32 0, i32 0, i32 %111 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btQuadWord* %T, i32 0, i32 0, i32 %110 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btQuadWord* %ea, i32 0, i32 0, i32 %iftmp.168.0 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btQuadWord* %ea, i32 0, i32 0, i32 %iftmp.169.0 ; [#uses=1]
+ br label %bb30
+
+bb20: ; preds = %bb30
+ %scevgep44 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 1, i32 0, i32 %110, i32 0, i32 %147 ; [#uses=1]
+ %scevgep43 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 1, i32 0, i32 %111, i32 0, i32 %147 ; [#uses=1]
+ %scevgep42 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 2, i32 0, i32 %iftmp.169.0, i32 0, i32 %147 ; [#uses=1]
+ %scevgep = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 2, i32 0, i32 %iftmp.168.0, i32 0, i32 %147 ; [#uses=1]
+ %118 = icmp eq i32 %147, 2 ; [#uses=1]
+ %iftmp.170.0 = select i1 %118, i32 1, i32 2 ; [#uses=2]
+ %119 = icmp eq i32 %147, 0 ; [#uses=1]
+ %iftmp.171.0 = zext i1 %119 to i32 ; [#uses=2]
+ %120 = load float* %114, align 4 ; [#uses=1]
+ %121 = load float* %scevgep44, align 4 ; [#uses=1]
+ %122 = fmul float %120, %121 ; [#uses=1]
+ %123 = load float* %115, align 4 ; [#uses=1]
+ %124 = load float* %scevgep43, align 4 ; [#uses=1]
+ %125 = fmul float %123, %124 ; [#uses=1]
+ %126 = fsub float %122, %125 ; [#uses=1]
+ %127 = load float* %116, align 4 ; [#uses=1]
+ %128 = load float* %scevgep42, align 4 ; [#uses=1]
+ %129 = fmul float %127, %128 ; [#uses=1]
+ %130 = load float* %117, align 4 ; [#uses=1]
+ %131 = load float* %scevgep, align 4 ; [#uses=1]
+ %132 = fmul float %130, %131 ; [#uses=1]
+ %133 = fadd float %129, %132 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btQuadWord* %eb, i32 0, i32 0, i32 %iftmp.171.0 ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ %scevgep50 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 2, i32 0, i32 %149, i32 0, i32 %iftmp.170.0 ; [#uses=1]
+ %136 = load float* %scevgep50, align 4 ; [#uses=1]
+ %137 = fmul float %135, %136 ; [#uses=1]
+ %138 = fadd float %133, %137 ; [#uses=1]
+ %139 = getelementptr inbounds %struct.btQuadWord* %eb, i32 0, i32 0, i32 %iftmp.170.0 ; [#uses=1]
+ %140 = load float* %139, align 4 ; [#uses=1]
+ %scevgep49 = getelementptr %struct.BT_BOX_BOX_TRANSFORM_CACHE* %transcache, i32 0, i32 2, i32 0, i32 %149, i32 0, i32 %iftmp.171.0 ; [#uses=1]
+ %141 = load float* %scevgep49, align 4 ; [#uses=1]
+ %142 = fmul float %140, %141 ; [#uses=1]
+ %143 = fadd float %138, %142 ; [#uses=1]
+ %144 = call float @fabsf(float %126) nounwind readnone ; [#uses=1]
+ %145 = fcmp ogt float %144, %143 ; [#uses=1]
+ br i1 %145, label %bb34, label %bb29
+
+bb29: ; preds = %bb20
+ %146 = add nsw i32 %147, 1 ; [#uses=1]
+ br label %bb30
+
+bb30: ; preds = %bb29, %bb13
+ %147 = phi i32 [ 0, %bb13 ], [ %146, %bb29 ] ; [#uses=8]
+ %148 = icmp slt i32 %147, 3 ; [#uses=1]
+ br i1 %148, label %bb20, label %bb32
+
+bb32: ; preds = %bb30, %bb10
+ %149 = phi i32 [ 0, %bb10 ], [ %tmp46, %bb30 ] ; [#uses=7]
+ %150 = icmp slt i32 %149, 3 ; [#uses=1]
+ br i1 %150, label %bb13, label %bb34
+
+bb34: ; preds = %bb32, %bb20, %bb10, %bb5, %bb
+ %.0 = phi i8 [ 1, %bb10 ], [ 0, %bb20 ], [ 1, %bb32 ], [ 0, %bb5 ], [ 0, %bb ] ; [#uses=1]
+ ret i8 %.0
+}
+
+; [#uses=0]
+define void @_ZN12btGImpactBvh5refitEv(%struct.btGImpactBvh* nocapture %this) align 2 {
+entry:
+ %leafbox = alloca %struct.GIM_AABB, align 8 ; [#uses=9]
+ %bound = alloca %struct.GIM_AABB, align 8 ; [#uses=20]
+ %temp_box = alloca %struct.GIM_AABB, align 8 ; [#uses=20]
+ %0 = getelementptr inbounds %struct.btGImpactBvh* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %return, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btGImpactBvh* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 1 ; [#uses=4]
+ %6 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 2 ; [#uses=4]
+ %7 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 0 ; [#uses=4]
+ %8 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 1 ; [#uses=4]
+ %9 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 2 ; [#uses=4]
+ %10 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btGImpactBvh* %this, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %tmp49 = add i32 %1, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb7.backedge, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb7.backedge ] ; [#uses=4]
+ %nodecount.028 = sub i32 %1, %indvar ; [#uses=26]
+ %tmp50 = sub i32 %tmp49, %indvar ; [#uses=2]
+ %29 = load %struct.GIM_AABB_DATA** %3, align 4 ; [#uses=26]
+ %scevgep69 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -1 ; [#uses=1]
+ %scevgep6970 = bitcast float* %scevgep69 to i32* ; [#uses=1]
+ %30 = load i32* %scevgep6970, align 4 ; [#uses=2]
+ %toBool = icmp slt i32 %30, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %31 = load %struct.btActionInterface** %20, align 4 ; [#uses=2]
+ %32 = getelementptr inbounds %struct.btActionInterface* %31, i32 0, i32 0 ; [#uses=1]
+ %33 = load i32 (...)*** %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds i32 (...)** %33, i32 4 ; [#uses=1]
+ %35 = load i32 (...)** %34, align 4 ; [#uses=1]
+ %36 = bitcast i32 (...)* %35 to void (%struct.btActionInterface*, i32, %struct.GIM_AABB*)* ; [#uses=1]
+ call void %36(%struct.btActionInterface* %31, i32 %30, %struct.GIM_AABB* %leafbox)
+ %37 = load %struct.GIM_AABB_DATA** %3, align 4 ; [#uses=8]
+ %38 = load float* %21, align 8 ; [#uses=1]
+ %scevgep6061 = getelementptr inbounds %struct.GIM_AABB_DATA* %37, i32 %tmp50, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %38, float* %scevgep6061, align 4
+ %39 = load float* %22, align 4 ; [#uses=1]
+ %scevgep62 = getelementptr %struct.GIM_AABB_DATA* %37, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -8 ; [#uses=1]
+ store float %39, float* %scevgep62, align 4
+ %40 = load float* %23, align 8 ; [#uses=1]
+ %scevgep63 = getelementptr %struct.GIM_AABB_DATA* %37, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -7 ; [#uses=1]
+ store float %40, float* %scevgep63, align 4
+ %41 = load float* %24, align 4 ; [#uses=1]
+ %scevgep64 = getelementptr %struct.GIM_AABB_DATA* %37, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -6 ; [#uses=1]
+ store float %41, float* %scevgep64, align 4
+ %42 = load float* %25, align 8 ; [#uses=1]
+ %scevgep65 = getelementptr %struct.GIM_AABB_DATA* %37, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -5 ; [#uses=1]
+ store float %42, float* %scevgep65, align 4
+ %43 = load float* %26, align 4 ; [#uses=1]
+ %scevgep66 = getelementptr %struct.GIM_AABB_DATA* %37, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -4 ; [#uses=1]
+ store float %43, float* %scevgep66, align 4
+ %44 = load float* %27, align 8 ; [#uses=1]
+ %scevgep67 = getelementptr %struct.GIM_AABB_DATA* %37, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -3 ; [#uses=1]
+ store float %44, float* %scevgep67, align 4
+ %45 = load float* %28, align 4 ; [#uses=1]
+ %scevgep68 = getelementptr %struct.GIM_AABB_DATA* %37, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -2 ; [#uses=1]
+ store float %45, float* %scevgep68, align 4
+ br label %bb7.backedge
+
+bb7.backedge: ; preds = %bb6, %bb1
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %1 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+bb2: ; preds = %bb
+ store float 0x47EFFFFFE0000000, float* %4, align 8
+ store float 0x47EFFFFFE0000000, float* %5, align 4
+ store float 0x47EFFFFFE0000000, float* %6, align 8
+ store float 0xC7EFFFFFE0000000, float* %7, align 8
+ store float 0xC7EFFFFFE0000000, float* %8, align 4
+ store float 0xC7EFFFFFE0000000, float* %9, align 8
+ %46 = icmp eq i32 %1, %indvar ; [#uses=1]
+ br i1 %46, label %bb4, label %bb3
+
+bb3: ; preds = %bb2
+ %scevgep31 = getelementptr inbounds %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %scevgep31, align 4 ; [#uses=2]
+ store float %47, float* %12, align 8
+ %scevgep32 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %48 = load float* %scevgep32, align 4 ; [#uses=2]
+ store float %48, float* %13, align 4
+ %scevgep33 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %scevgep33, align 4 ; [#uses=2]
+ store float %49, float* %14, align 8
+ %scevgep34 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %50 = load float* %scevgep34, align 4 ; [#uses=1]
+ store float %50, float* %15, align 4
+ %scevgep35 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %scevgep35, align 4 ; [#uses=2]
+ store float %51, float* %16, align 8
+ %scevgep36 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %52 = load float* %scevgep36, align 4 ; [#uses=2]
+ store float %52, float* %17, align 4
+ %scevgep37 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %scevgep37, align 4 ; [#uses=2]
+ store float %53, float* %18, align 8
+ %scevgep38 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %54 = load float* %scevgep38, align 4 ; [#uses=1]
+ store float %54, float* %19, align 4
+ %55 = fcmp olt float %47, 0x47EFFFFFE0000000 ; [#uses=1]
+ %box.pn25.i10 = select i1 %55, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.139.0.in.i11 = getelementptr inbounds %struct.GIM_AABB* %box.pn25.i10, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %iftmp.139.0.i12 = load float* %iftmp.139.0.in.i11, align 8 ; [#uses=2]
+ store float %iftmp.139.0.i12, float* %4, align 8
+ %56 = fcmp olt float %48, 0x47EFFFFFE0000000 ; [#uses=1]
+ %box.pn24.i13 = select i1 %56, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.140.0.in.i14 = getelementptr inbounds %struct.GIM_AABB* %box.pn24.i13, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %iftmp.140.0.i15 = load float* %iftmp.140.0.in.i14, align 4 ; [#uses=2]
+ store float %iftmp.140.0.i15, float* %5, align 4
+ %57 = fcmp olt float %49, 0x47EFFFFFE0000000 ; [#uses=1]
+ %box.pn23.i16 = select i1 %57, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.141.0.in.i17 = getelementptr inbounds %struct.GIM_AABB* %box.pn23.i16, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %iftmp.141.0.i18 = load float* %iftmp.141.0.in.i17, align 8 ; [#uses=2]
+ store float %iftmp.141.0.i18, float* %6, align 8
+ %58 = fcmp ogt float %51, 0xC7EFFFFFE0000000 ; [#uses=1]
+ %box.pn22.i19 = select i1 %58, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.142.0.in.i20 = getelementptr inbounds %struct.GIM_AABB* %box.pn22.i19, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %iftmp.142.0.i21 = load float* %iftmp.142.0.in.i20, align 8 ; [#uses=2]
+ store float %iftmp.142.0.i21, float* %7, align 8
+ %59 = fcmp ogt float %52, 0xC7EFFFFFE0000000 ; [#uses=1]
+ %box.pn21.i22 = select i1 %59, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.143.0.in.i23 = getelementptr inbounds %struct.GIM_AABB* %box.pn21.i22, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %iftmp.143.0.i24 = load float* %iftmp.143.0.in.i23, align 4 ; [#uses=2]
+ store float %iftmp.143.0.i24, float* %8, align 4
+ %60 = fcmp ogt float %53, 0xC7EFFFFFE0000000 ; [#uses=1]
+ %box.pn.i25 = select i1 %60, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.144.0.in.i26 = getelementptr inbounds %struct.GIM_AABB* %box.pn.i25, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %iftmp.144.0.i27 = load float* %iftmp.144.0.in.i26, align 8 ; [#uses=2]
+ store float %iftmp.144.0.i27, float* %9, align 8
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %61 = phi float [ 0xC7EFFFFFE0000000, %bb2 ], [ %iftmp.144.0.i27, %bb3 ] ; [#uses=1]
+ %62 = phi float [ 0xC7EFFFFFE0000000, %bb2 ], [ %iftmp.143.0.i24, %bb3 ] ; [#uses=1]
+ %63 = phi float [ 0xC7EFFFFFE0000000, %bb2 ], [ %iftmp.142.0.i21, %bb3 ] ; [#uses=1]
+ %64 = phi float [ 0x47EFFFFFE0000000, %bb2 ], [ %iftmp.141.0.i18, %bb3 ] ; [#uses=1]
+ %65 = phi float [ 0x47EFFFFFE0000000, %bb2 ], [ %iftmp.140.0.i15, %bb3 ] ; [#uses=1]
+ %66 = phi float [ 0x47EFFFFFE0000000, %bb2 ], [ %iftmp.139.0.i12, %bb3 ] ; [#uses=2]
+ %scevgep39 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 1 ; [#uses=1]
+ %67 = load i32* %scevgep39, align 4 ; [#uses=2]
+ %toBool.i.i = icmp slt i32 %67, 0 ; [#uses=1]
+ %tmp = sub i32 0, %67 ; [#uses=1]
+ %.p = select i1 %toBool.i.i, i32 %tmp, i32 1 ; [#uses=2]
+ %tmp48 = sub i32 0, %nodecount.028 ; [#uses=1]
+ %68 = icmp eq i32 %.p, %tmp48 ; [#uses=1]
+ br i1 %68, label %bb6, label %bb5
+
+bb5: ; preds = %bb4
+ %tmp47 = add i32 %.p, %nodecount.028 ; [#uses=8]
+ %69 = getelementptr inbounds %struct.GIM_AABB_DATA* %29, i32 %tmp47, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=2]
+ store float %70, float* %12, align 8
+ %71 = getelementptr inbounds %struct.GIM_AABB_DATA* %29, i32 %tmp47, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=2]
+ store float %72, float* %13, align 4
+ %73 = getelementptr inbounds %struct.GIM_AABB_DATA* %29, i32 %tmp47, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=2]
+ store float %74, float* %14, align 8
+ %75 = getelementptr inbounds %struct.GIM_AABB_DATA* %29, i32 %tmp47, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ store float %76, float* %15, align 4
+ %77 = getelementptr inbounds %struct.GIM_AABB_DATA* %29, i32 %tmp47, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=2]
+ store float %78, float* %16, align 8
+ %79 = getelementptr inbounds %struct.GIM_AABB_DATA* %29, i32 %tmp47, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=2]
+ store float %80, float* %17, align 4
+ %81 = getelementptr inbounds %struct.GIM_AABB_DATA* %29, i32 %tmp47, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=2]
+ store float %82, float* %18, align 8
+ %83 = getelementptr inbounds %struct.GIM_AABB_DATA* %29, i32 %tmp47, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %19, align 4
+ %85 = fcmp ogt float %66, %70 ; [#uses=1]
+ %box.pn25.i = select i1 %85, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.139.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn25.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %iftmp.139.0.i = load float* %iftmp.139.0.in.i, align 8 ; [#uses=2]
+ store float %iftmp.139.0.i, float* %4, align 8
+ %86 = fcmp ogt float %65, %72 ; [#uses=1]
+ %box.pn24.i = select i1 %86, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.140.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn24.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %iftmp.140.0.i = load float* %iftmp.140.0.in.i, align 4 ; [#uses=1]
+ store float %iftmp.140.0.i, float* %5, align 4
+ %87 = fcmp ogt float %64, %74 ; [#uses=1]
+ %box.pn23.i = select i1 %87, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.141.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn23.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %iftmp.141.0.i = load float* %iftmp.141.0.in.i, align 8 ; [#uses=1]
+ store float %iftmp.141.0.i, float* %6, align 8
+ %88 = fcmp olt float %63, %78 ; [#uses=1]
+ %box.pn22.i = select i1 %88, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.142.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn22.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %iftmp.142.0.i = load float* %iftmp.142.0.in.i, align 8 ; [#uses=1]
+ store float %iftmp.142.0.i, float* %7, align 8
+ %89 = fcmp olt float %62, %80 ; [#uses=1]
+ %box.pn21.i = select i1 %89, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.143.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn21.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %iftmp.143.0.i = load float* %iftmp.143.0.in.i, align 4 ; [#uses=1]
+ store float %iftmp.143.0.i, float* %8, align 4
+ %90 = fcmp olt float %61, %82 ; [#uses=1]
+ %box.pn.i = select i1 %90, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.144.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %iftmp.144.0.i = load float* %iftmp.144.0.in.i, align 8 ; [#uses=1]
+ store float %iftmp.144.0.i, float* %9, align 8
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4
+ %91 = phi float [ %66, %bb4 ], [ %iftmp.139.0.i, %bb5 ] ; [#uses=1]
+ %scevgep5152 = getelementptr inbounds %struct.GIM_AABB_DATA* %29, i32 %tmp50, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %91, float* %scevgep5152, align 4
+ %92 = load float* %5, align 4 ; [#uses=1]
+ %scevgep53 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -8 ; [#uses=1]
+ store float %92, float* %scevgep53, align 4
+ %93 = load float* %6, align 8 ; [#uses=1]
+ %scevgep54 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -7 ; [#uses=1]
+ store float %93, float* %scevgep54, align 4
+ %94 = load float* %10, align 4 ; [#uses=1]
+ %scevgep55 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -6 ; [#uses=1]
+ store float %94, float* %scevgep55, align 4
+ %95 = load float* %7, align 8 ; [#uses=1]
+ %scevgep56 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -5 ; [#uses=1]
+ store float %95, float* %scevgep56, align 4
+ %96 = load float* %8, align 4 ; [#uses=1]
+ %scevgep57 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -4 ; [#uses=1]
+ store float %96, float* %scevgep57, align 4
+ %97 = load float* %9, align 8 ; [#uses=1]
+ %scevgep58 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -3 ; [#uses=1]
+ store float %97, float* %scevgep58, align 4
+ %98 = load float* %11, align 4 ; [#uses=1]
+ %scevgep59 = getelementptr %struct.GIM_AABB_DATA* %29, i32 %nodecount.028, i32 0, i32 0, i32 0, i32 -2 ; [#uses=1]
+ store float %98, float* %scevgep59, align 4
+ br label %bb7.backedge
+
+return: ; preds = %bb7.backedge, %entry
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZN9btBvhTree30_sort_and_calc_splitting_indexER18GIM_BVH_DATA_ARRAYiii(%struct.btBvhTree* nocapture %this, %struct.GIM_BVH_DATA_ARRAY* nocapture %primitive_boxes, i32 %startIndex, i32 %endIndex, i32 %splitAxis) nounwind align 2 {
+entry:
+ %means = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %center4 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = sub nsw i32 %endIndex, %startIndex ; [#uses=5]
+ %1 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float 0.000000e+00, float* %1, align 8
+ %2 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float 0.000000e+00, float* %3, align 8
+ %4 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = icmp slt i32 %startIndex, %endIndex ; [#uses=2]
+ br i1 %5, label %bb.nph30, label %bb2
+
+bb.nph30: ; preds = %entry
+ %6 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=1]
+ %7 = load %struct.GIM_AABB_DATA** %6, align 4 ; [#uses=6]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph30
+ %indvar56 = phi i32 [ 0, %bb.nph30 ], [ %indvar.next57, %bb ] ; [#uses=2]
+ %8 = phi float [ 0.000000e+00, %bb.nph30 ], [ %25, %bb ] ; [#uses=1]
+ %9 = phi float [ 0.000000e+00, %bb.nph30 ], [ %24, %bb ] ; [#uses=1]
+ %10 = phi float [ 0.000000e+00, %bb.nph30 ], [ %23, %bb ] ; [#uses=1]
+ %tmp60 = add i32 %indvar56, %startIndex ; [#uses=6]
+ %scevgep61 = getelementptr %struct.GIM_AABB_DATA* %7, i32 %tmp60, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep62 = getelementptr %struct.GIM_AABB_DATA* %7, i32 %tmp60, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep63 = getelementptr %struct.GIM_AABB_DATA* %7, i32 %tmp60, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep64 = getelementptr %struct.GIM_AABB_DATA* %7, i32 %tmp60, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep65 = getelementptr %struct.GIM_AABB_DATA* %7, i32 %tmp60, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep6667 = getelementptr inbounds %struct.GIM_AABB_DATA* %7, i32 %tmp60, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %scevgep61, align 4 ; [#uses=1]
+ %12 = load float* %scevgep62, align 4 ; [#uses=1]
+ %13 = fadd float %11, %12 ; [#uses=1]
+ %14 = load float* %scevgep63, align 4 ; [#uses=1]
+ %15 = load float* %scevgep64, align 4 ; [#uses=1]
+ %16 = fadd float %14, %15 ; [#uses=1]
+ %17 = load float* %scevgep65, align 4 ; [#uses=1]
+ %18 = load float* %scevgep6667, align 4 ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=1]
+ %20 = fmul float %13, 5.000000e-01 ; [#uses=1]
+ %21 = fmul float %16, 5.000000e-01 ; [#uses=1]
+ %22 = fmul float %19, 5.000000e-01 ; [#uses=1]
+ %23 = fadd float %10, %22 ; [#uses=3]
+ %24 = fadd float %9, %21 ; [#uses=3]
+ %25 = fadd float %8, %20 ; [#uses=3]
+ %indvar.next57 = add i32 %indvar56, 1 ; [#uses=2]
+ %exitcond59 = icmp eq i32 %indvar.next57, %0 ; [#uses=1]
+ br i1 %exitcond59, label %bb1.bb2_crit_edge, label %bb
+
+bb1.bb2_crit_edge: ; preds = %bb
+ store float %25, float* %3, align 8
+ store float %24, float* %2, align 4
+ store float %23, float* %1, align 8
+ br label %bb2
+
+bb2: ; preds = %bb1.bb2_crit_edge, %entry
+ %26 = phi float [ %25, %bb1.bb2_crit_edge ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %27 = phi float [ %24, %bb1.bb2_crit_edge ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %28 = phi float [ %23, %bb1.bb2_crit_edge ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %29 = sitofp i32 %0 to float ; [#uses=1]
+ %30 = fdiv float 1.000000e+00, %29 ; [#uses=3]
+ %31 = fmul float %28, %30 ; [#uses=1]
+ store float %31, float* %1, align 8
+ %32 = fmul float %27, %30 ; [#uses=1]
+ store float %32, float* %2, align 4
+ %33 = fmul float %26, %30 ; [#uses=1]
+ store float %33, float* %3, align 8
+ %34 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 %splitAxis ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ br i1 %5, label %bb.nph, label %bb8
+
+bb.nph: ; preds = %bb2
+ %36 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=2]
+ %37 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 1 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 2 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 3 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 %splitAxis ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb6, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb6 ] ; [#uses=2]
+ %splitIndex.128 = phi i32 [ %startIndex, %bb.nph ], [ %splitIndex.0, %bb6 ] ; [#uses=12]
+ %tmp35 = add i32 %indvar, %startIndex ; [#uses=10]
+ %42 = load %struct.GIM_AABB_DATA** %36, align 4 ; [#uses=11]
+ %scevgep47 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %43 = load float* %scevgep47, align 4 ; [#uses=2]
+ %scevgep48 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %44 = load float* %scevgep48, align 4 ; [#uses=2]
+ %45 = fadd float %43, %44 ; [#uses=1]
+ %scevgep49 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %scevgep49, align 4 ; [#uses=2]
+ %scevgep50 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %47 = load float* %scevgep50, align 4 ; [#uses=2]
+ %48 = fadd float %46, %47 ; [#uses=1]
+ %scevgep51 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %49 = load float* %scevgep51, align 4 ; [#uses=2]
+ %scevgep5253 = getelementptr inbounds %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %scevgep5253, align 4 ; [#uses=2]
+ %51 = fadd float %49, %50 ; [#uses=1]
+ %52 = fmul float %45, 5.000000e-01 ; [#uses=1]
+ %53 = fmul float %48, 5.000000e-01 ; [#uses=1]
+ %54 = fmul float %51, 5.000000e-01 ; [#uses=1]
+ store float %54, float* %37, align 8
+ store float %53, float* %38, align 4
+ store float %52, float* %39, align 8
+ store float 0.000000e+00, float* %40, align 4
+ %55 = load float* %41, align 4 ; [#uses=1]
+ %56 = fcmp ogt float %55, %35 ; [#uses=1]
+ br i1 %56, label %bb5, label %bb6
+
+bb5: ; preds = %bb3
+ %scevgep39 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %57 = load float* %scevgep39, align 4 ; [#uses=1]
+ %scevgep43 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %58 = load float* %scevgep43, align 4 ; [#uses=1]
+ %scevgep44 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 1 ; [#uses=1]
+ %59 = load i32* %scevgep44, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.GIM_AABB_DATA* %42, i32 %splitIndex.128 ; [#uses=1]
+ %61 = bitcast %struct.GIM_AABB_DATA* %60 to i8* ; [#uses=1]
+ %scevgep45 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35 ; [#uses=1]
+ %scevgep4546 = bitcast %struct.GIM_AABB_DATA* %scevgep45 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep4546, i8* %61, i32 36, i32 4, i1 false) nounwind
+ %62 = load %struct.GIM_AABB_DATA** %36, align 4 ; [#uses=9]
+ %.020.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %50, float* %.020.i, align 4
+ %.122.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %47, float* %.122.i, align 4
+ %.2.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %44, float* %.2.i, align 4
+ %.3.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %57, float* %.3.i, align 4
+ %.1813.0.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %49, float* %.1813.0.i, align 4
+ %.1813.1.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %46, float* %.1813.1.i, align 4
+ %.1813.2.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %43, float* %.1813.2.i, align 4
+ %.1813.3.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %58, float* %.1813.3.i, align 4
+ %.1.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 1 ; [#uses=1]
+ store i32 %59, i32* %.1.i, align 4
+ %63 = add nsw i32 %splitIndex.128, 1 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb3
+ %splitIndex.0 = phi i32 [ %63, %bb5 ], [ %splitIndex.128, %bb3 ] ; [#uses=2]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %0 ; [#uses=1]
+ br i1 %exitcond, label %bb8, label %bb3
+
+bb8: ; preds = %bb6, %bb2
+ %splitIndex.1.lcssa = phi i32 [ %startIndex, %bb2 ], [ %splitIndex.0, %bb6 ] ; [#uses=3]
+ %64 = sdiv i32 %0, 3 ; [#uses=2]
+ %65 = add nsw i32 %64, %startIndex ; [#uses=1]
+ %66 = icmp slt i32 %65, %splitIndex.1.lcssa ; [#uses=1]
+ br i1 %66, label %bb9, label %bb14
+
+bb9: ; preds = %bb8
+ %67 = add nsw i32 %endIndex, -1 ; [#uses=1]
+ %68 = sub i32 %67, %64 ; [#uses=1]
+ %69 = icmp sgt i32 %68, %splitIndex.1.lcssa ; [#uses=1]
+ br i1 %69, label %bb11, label %bb14
+
+bb11: ; preds = %bb9
+ ret i32 %splitIndex.1.lcssa
+
+bb14: ; preds = %bb9, %bb8
+ %70 = ashr i32 %0, 1 ; [#uses=1]
+ %71 = add nsw i32 %70, %startIndex ; [#uses=1]
+ ret i32 %71
+}
+
+; [#uses=4]
+define void @_ZN9btBvhTree15_build_sub_treeER18GIM_BVH_DATA_ARRAYii(%struct.btBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 %startIndex, i32 %endIndex) nounwind align 2 {
+entry:
+ %node_bound = alloca %struct.GIM_AABB, align 8 ; [#uses=12]
+ %0 = getelementptr inbounds %struct.btBvhTree* %this, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=18]
+ %2 = add nsw i32 %1, 1 ; [#uses=1]
+ store i32 %2, i32* %0, align 4
+ %3 = sub nsw i32 %endIndex, %startIndex ; [#uses=2]
+ %4 = icmp eq i32 %3, 1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=2]
+ %6 = load %struct.GIM_AABB_DATA** %5, align 4 ; [#uses=8]
+ %7 = getelementptr inbounds %struct.btBvhTree* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %8 = load %struct.GIM_AABB_DATA** %7, align 4 ; [#uses=8]
+ %9 = getelementptr inbounds %struct.GIM_AABB_DATA* %8, i32 %1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.GIM_AABB_DATA* %8, i32 %1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.GIM_AABB_DATA* %8, i32 %1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.GIM_AABB_DATA* %8, i32 %1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.GIM_AABB_DATA* %8, i32 %1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.GIM_AABB_DATA* %8, i32 %1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.GIM_AABB_DATA* %8, i32 %1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.GIM_AABB_DATA* %8, i32 %1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = load %struct.GIM_AABB_DATA** %5, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.GIM_AABB_DATA* %33, i32 %startIndex, i32 1 ; [#uses=1]
+ %35 = load i32* %34, align 4 ; [#uses=1]
+ %36 = load %struct.GIM_AABB_DATA** %7, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.GIM_AABB_DATA* %36, i32 %1, i32 1 ; [#uses=1]
+ store i32 %35, i32* %37, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %38 = call i32 @_ZN9btBvhTree20_calc_splitting_axisER18GIM_BVH_DATA_ARRAYii(%struct.btBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 %startIndex, i32 %endIndex) ; [#uses=1]
+ %39 = call i32 @_ZN9btBvhTree30_sort_and_calc_splitting_indexER18GIM_BVH_DATA_ARRAYiii(%struct.btBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 %startIndex, i32 %endIndex, i32 %38) ; [#uses=2]
+ %40 = getelementptr inbounds %struct.GIM_AABB* %node_bound, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %40, align 8
+ %41 = getelementptr inbounds %struct.GIM_AABB* %node_bound, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %41, align 4
+ %42 = getelementptr inbounds %struct.GIM_AABB* %node_bound, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %42, align 8
+ %43 = getelementptr inbounds %struct.GIM_AABB* %node_bound, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %43, align 8
+ %44 = getelementptr inbounds %struct.GIM_AABB* %node_bound, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %44, align 4
+ %45 = getelementptr inbounds %struct.GIM_AABB* %node_bound, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %45, align 8
+ %46 = icmp slt i32 %startIndex, %endIndex ; [#uses=1]
+ br i1 %46, label %bb.nph, label %bb4
+
+bb.nph: ; preds = %bb1
+ %47 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb.nph
+ %48 = phi float [ 0xC7EFFFFFE0000000, %bb.nph ], [ %iftmp.144.0.i, %bb2 ] ; [#uses=1]
+ %49 = phi float [ 0xC7EFFFFFE0000000, %bb.nph ], [ %iftmp.143.0.i, %bb2 ] ; [#uses=1]
+ %50 = phi float [ 0xC7EFFFFFE0000000, %bb.nph ], [ %iftmp.142.0.i, %bb2 ] ; [#uses=1]
+ %51 = phi float [ 0x47EFFFFFE0000000, %bb.nph ], [ %iftmp.141.0.i, %bb2 ] ; [#uses=1]
+ %52 = phi float [ 0x47EFFFFFE0000000, %bb.nph ], [ %iftmp.140.0.i, %bb2 ] ; [#uses=1]
+ %53 = phi float [ 0x47EFFFFFE0000000, %bb.nph ], [ %iftmp.139.0.i, %bb2 ] ; [#uses=1]
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb2 ] ; [#uses=2]
+ %tmp7 = add i32 %indvar, %startIndex ; [#uses=7]
+ %54 = load %struct.GIM_AABB_DATA** %47, align 4 ; [#uses=7]
+ %scevgep1920 = getelementptr inbounds %struct.GIM_AABB_DATA* %54, i32 %tmp7, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %55 = load float* %scevgep1920, align 4 ; [#uses=1]
+ %56 = fcmp ogt float %53, %55 ; [#uses=1]
+ %scevgep1718 = getelementptr inbounds %struct.GIM_AABB_DATA* %54, i32 %tmp7, i32 0 ; [#uses=6]
+ %box.pn25.i = select i1 %56, %struct.GIM_AABB* %scevgep1718, %struct.GIM_AABB* %node_bound ; [#uses=1]
+ %iftmp.139.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn25.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %iftmp.139.0.i = load float* %iftmp.139.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.139.0.i, float* %40, align 8
+ %scevgep21 = getelementptr %struct.GIM_AABB_DATA* %54, i32 %tmp7, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %scevgep21, align 4 ; [#uses=1]
+ %58 = fcmp ogt float %52, %57 ; [#uses=1]
+ %box.pn24.i = select i1 %58, %struct.GIM_AABB* %scevgep1718, %struct.GIM_AABB* %node_bound ; [#uses=1]
+ %iftmp.140.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn24.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %iftmp.140.0.i = load float* %iftmp.140.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.140.0.i, float* %41, align 4
+ %scevgep22 = getelementptr %struct.GIM_AABB_DATA* %54, i32 %tmp7, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %59 = load float* %scevgep22, align 4 ; [#uses=1]
+ %60 = fcmp ogt float %51, %59 ; [#uses=1]
+ %box.pn23.i = select i1 %60, %struct.GIM_AABB* %scevgep1718, %struct.GIM_AABB* %node_bound ; [#uses=1]
+ %iftmp.141.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn23.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %iftmp.141.0.i = load float* %iftmp.141.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.141.0.i, float* %42, align 8
+ %scevgep23 = getelementptr %struct.GIM_AABB_DATA* %54, i32 %tmp7, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %61 = load float* %scevgep23, align 4 ; [#uses=1]
+ %62 = fcmp olt float %50, %61 ; [#uses=1]
+ %box.pn22.i = select i1 %62, %struct.GIM_AABB* %scevgep1718, %struct.GIM_AABB* %node_bound ; [#uses=1]
+ %iftmp.142.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn22.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %iftmp.142.0.i = load float* %iftmp.142.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.142.0.i, float* %43, align 8
+ %scevgep24 = getelementptr %struct.GIM_AABB_DATA* %54, i32 %tmp7, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %63 = load float* %scevgep24, align 4 ; [#uses=1]
+ %64 = fcmp olt float %49, %63 ; [#uses=1]
+ %box.pn21.i = select i1 %64, %struct.GIM_AABB* %scevgep1718, %struct.GIM_AABB* %node_bound ; [#uses=1]
+ %iftmp.143.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn21.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %iftmp.143.0.i = load float* %iftmp.143.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.143.0.i, float* %44, align 4
+ %scevgep25 = getelementptr %struct.GIM_AABB_DATA* %54, i32 %tmp7, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %65 = load float* %scevgep25, align 4 ; [#uses=1]
+ %66 = fcmp olt float %48, %65 ; [#uses=1]
+ %box.pn.i = select i1 %66, %struct.GIM_AABB* %scevgep1718, %struct.GIM_AABB* %node_bound ; [#uses=1]
+ %iftmp.144.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %iftmp.144.0.i = load float* %iftmp.144.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.144.0.i, float* %45, align 8
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %3 ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb2
+
+bb4: ; preds = %bb2, %bb1
+ %67 = phi float [ 0xC7EFFFFFE0000000, %bb1 ], [ %iftmp.144.0.i, %bb2 ] ; [#uses=1]
+ %68 = phi float [ 0xC7EFFFFFE0000000, %bb1 ], [ %iftmp.143.0.i, %bb2 ] ; [#uses=1]
+ %69 = phi float [ 0xC7EFFFFFE0000000, %bb1 ], [ %iftmp.142.0.i, %bb2 ] ; [#uses=1]
+ %70 = phi float [ 0x47EFFFFFE0000000, %bb1 ], [ %iftmp.141.0.i, %bb2 ] ; [#uses=1]
+ %71 = phi float [ 0x47EFFFFFE0000000, %bb1 ], [ %iftmp.140.0.i, %bb2 ] ; [#uses=1]
+ %72 = phi float [ 0x47EFFFFFE0000000, %bb1 ], [ %iftmp.139.0.i, %bb2 ] ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btBvhTree* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %74 = load %struct.GIM_AABB_DATA** %73, align 4 ; [#uses=6]
+ %75 = getelementptr inbounds %struct.GIM_AABB_DATA* %74, i32 %1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %72, float* %75, align 4
+ %76 = getelementptr inbounds %struct.GIM_AABB_DATA* %74, i32 %1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %71, float* %76, align 4
+ %77 = getelementptr inbounds %struct.GIM_AABB_DATA* %74, i32 %1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %70, float* %77, align 4
+ %78 = getelementptr inbounds %struct.GIM_AABB_DATA* %74, i32 %1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %69, float* %78, align 4
+ %79 = getelementptr inbounds %struct.GIM_AABB_DATA* %74, i32 %1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %68, float* %79, align 4
+ %80 = getelementptr inbounds %struct.GIM_AABB_DATA* %74, i32 %1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %67, float* %80, align 4
+ call void @_ZN9btBvhTree15_build_sub_treeER18GIM_BVH_DATA_ARRAYii(%struct.btBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 %startIndex, i32 %39)
+ call void @_ZN9btBvhTree15_build_sub_treeER18GIM_BVH_DATA_ARRAYii(%struct.btBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 %39, i32 %endIndex)
+ %81 = load i32* %0, align 4 ; [#uses=1]
+ %82 = sub nsw i32 %1, %81 ; [#uses=1]
+ %83 = load %struct.GIM_AABB_DATA** %73, align 4 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.GIM_AABB_DATA* %83, i32 %1, i32 1 ; [#uses=1]
+ store i32 %82, i32* %84, align 4
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI8GIM_PAIRE9push_backERKS0_(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* nocapture %this, %struct.CONTACT_KEY_TOKEN* nocapture %_Val) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.289.0.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.289.0.i ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb1
+
+bb.i: ; preds = %bb
+ %8 = icmp eq i32 %iftmp.289.0.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayI8GIM_PAIRE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %9 = shl i32 %iftmp.289.0.i, 3 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %10 to %struct.CONTACT_KEY_TOKEN* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI8GIM_PAIRE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayI8GIM_PAIRE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %11 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %12 = phi %struct.CONTACT_KEY_TOKEN* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=4]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayI8GIM_PAIRE4copyEiiPS0_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayI8GIM_PAIRE8allocateEi.exit.i
+ %14 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=6]
+ %scevgep.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %12, i32 %indvar.i.i ; [#uses=1]
+ %15 = icmp eq %struct.CONTACT_KEY_TOKEN* %scevgep.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %scevgep12.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %12, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %scevgep10.i.i = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %12, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %16 = load %struct.CONTACT_KEY_TOKEN** %14, align 4 ; [#uses=2]
+ %scevgep89.i.i = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %16, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %17 = load i32* %scevgep89.i.i, align 4 ; [#uses=1]
+ store i32 %17, i32* %scevgep10.i.i, align 4
+ %scevgep11.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %16, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %18 = load i32* %scevgep11.i.i, align 4 ; [#uses=1]
+ store i32 %18, i32* %scevgep12.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI8GIM_PAIRE4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI8GIM_PAIRE4copyEiiPS0_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayI8GIM_PAIRE8allocateEi.exit.i
+ %19 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 3 ; [#uses=3]
+ %20 = load %struct.CONTACT_KEY_TOKEN** %19, align 4 ; [#uses=2]
+ %21 = icmp eq %struct.CONTACT_KEY_TOKEN* %20, null ; [#uses=1]
+ br i1 %21, label %_ZN20btAlignedObjectArrayI8GIM_PAIRE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI8GIM_PAIRE4copyEiiPS0_.exit.i
+ %22 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %24 = bitcast %struct.CONTACT_KEY_TOKEN* %20 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %24)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %19, align 4
+ br label %_ZN20btAlignedObjectArrayI8GIM_PAIRE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayI8GIM_PAIRE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI8GIM_PAIRE4copyEiiPS0_.exit.i
+ %25 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ store %struct.CONTACT_KEY_TOKEN* %12, %struct.CONTACT_KEY_TOKEN** %19, align 4
+ store i32 %iftmp.289.0.i, i32* %2, align 4
+ %.pre9 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayI8GIM_PAIRE10deallocateEv.exit.i, %bb, %entry
+ %26 = phi i32 [ %.pre9, %_ZN20btAlignedObjectArrayI8GIM_PAIRE10deallocateEv.exit.i ], [ %1, %entry ], [ %1, %bb ] ; [#uses=4]
+ %27 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 3 ; [#uses=1]
+ %28 = load %struct.CONTACT_KEY_TOKEN** %27, align 4 ; [#uses=3]
+ %29 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %28, i32 %26 ; [#uses=1]
+ %30 = icmp eq %struct.CONTACT_KEY_TOKEN* %29, null ; [#uses=1]
+ br i1 %30, label %bb4, label %bb2
+
+bb2: ; preds = %bb1
+ %31 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %_Val, i32 0, i32 0 ; [#uses=1]
+ %32 = load i32* %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %28, i32 %26, i32 0 ; [#uses=1]
+ store i32 %32, i32* %33, align 4
+ %34 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %_Val, i32 0, i32 1 ; [#uses=1]
+ %35 = load i32* %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %28, i32 %26, i32 1 ; [#uses=1]
+ store i32 %35, i32* %36, align 4
+ %.pre10 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb2, %bb1
+ %37 = phi i32 [ %26, %bb1 ], [ %.pre10, %bb2 ] ; [#uses=1]
+ %38 = add nsw i32 %37, 1 ; [#uses=1]
+ store i32 %38, i32* %0, align 4
+ ret void
+}
+
+; [#uses=9]
+define internal fastcc void @_ZL31_find_collision_pairs_recursiveP12btGImpactBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBvh* %boxset0, %struct.btGImpactBvh* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %node0, i32 %node1, i8 zeroext %complete_primitive_tests) {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %box0.i = alloca %struct.GIM_AABB, align 8 ; [#uses=9]
+ %box1.i = alloca %struct.GIM_AABB, align 8 ; [#uses=9]
+ %1 = getelementptr inbounds %struct.btGImpactBvh* %boxset0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=4]
+ %2 = load %struct.GIM_AABB_DATA** %1, align 4 ; [#uses=9]
+ %3 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.GIM_AABB_DATA* %2, i32 %node0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 8
+ %6 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.GIM_AABB_DATA* %2, i32 %node0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.GIM_AABB_DATA* %2, i32 %node0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 8
+ %12 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.GIM_AABB_DATA* %2, i32 %node0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.GIM_AABB_DATA* %2, i32 %node0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 8
+ %18 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.GIM_AABB_DATA* %2, i32 %node0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.GIM_AABB_DATA* %2, i32 %node0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 8
+ %24 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.GIM_AABB_DATA* %2, i32 %node0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btGImpactBvh* %boxset1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=4]
+ %28 = load %struct.GIM_AABB_DATA** %27, align 4 ; [#uses=9]
+ %29 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.GIM_AABB_DATA* %28, i32 %node1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 8
+ %32 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.GIM_AABB_DATA* %28, i32 %node1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.GIM_AABB_DATA* %28, i32 %node1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 8
+ %38 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.GIM_AABB_DATA* %28, i32 %node1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.GIM_AABB_DATA* %28, i32 %node1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 8
+ %44 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.GIM_AABB_DATA* %28, i32 %node1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.GIM_AABB_DATA* %28, i32 %node1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 8
+ %50 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.GIM_AABB_DATA* %28, i32 %node1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = call zeroext i8 @_ZNK6btAABB23overlapping_trans_cacheERKS_RK26BT_BOX_BOX_TRANSFORM_CACHEb(%struct.GIM_AABB* %box0.i, %struct.GIM_AABB* %box1.i, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i8 zeroext %complete_primitive_tests) nounwind ; [#uses=1]
+ %toBoolnot = icmp eq i8 %53, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %return, label %bb
+
+bb: ; preds = %entry
+ %54 = getelementptr inbounds %struct.GIM_AABB_DATA* %2, i32 %node0, i32 1 ; [#uses=1]
+ %55 = load i32* %54, align 4 ; [#uses=2]
+ %toBool3 = icmp slt i32 %55, 0 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.GIM_AABB_DATA* %28, i32 %node1, i32 1 ; [#uses=1]
+ %57 = load i32* %56, align 4 ; [#uses=2]
+ %toBool9 = icmp slt i32 %57, 0 ; [#uses=2]
+ br i1 %toBool3, label %bb8, label %bb4
+
+bb4: ; preds = %bb
+ br i1 %toBool9, label %bb7, label %bb6
+
+bb6: ; preds = %bb4
+ %58 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %0, i32 0, i32 0 ; [#uses=1]
+ store i32 %55, i32* %58, align 8
+ %59 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %0, i32 0, i32 1 ; [#uses=1]
+ store i32 %57, i32* %59, align 4
+ %60 = getelementptr inbounds %struct.btPairSet* %collision_pairs, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI8GIM_PAIRE9push_backERKS0_(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %60, %struct.CONTACT_KEY_TOKEN* %0) inlinehint
+ ret void
+
+bb7: ; preds = %bb4
+ %61 = add nsw i32 %node1, 1 ; [#uses=3]
+ call fastcc void @_ZL31_find_collision_pairs_recursiveP12btGImpactBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBvh* %boxset0, %struct.btGImpactBvh* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %node0, i32 %61, i8 zeroext 0)
+ %62 = load %struct.GIM_AABB_DATA** %27, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %61, i32 1 ; [#uses=1]
+ %64 = load i32* %63, align 4 ; [#uses=2]
+ %toBool.i.i16 = icmp slt i32 %64, 0 ; [#uses=1]
+ %65 = add nsw i32 %node1, 2 ; [#uses=1]
+ %66 = sub i32 %61, %64 ; [#uses=1]
+ %67 = select i1 %toBool.i.i16, i32 %66, i32 %65 ; [#uses=1]
+ call fastcc void @_ZL31_find_collision_pairs_recursiveP12btGImpactBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBvh* %boxset0, %struct.btGImpactBvh* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %node0, i32 %67, i8 zeroext 0)
+ ret void
+
+bb8: ; preds = %bb
+ br i1 %toBool9, label %bb11, label %bb10
+
+bb10: ; preds = %bb8
+ %68 = add nsw i32 %node0, 1 ; [#uses=3]
+ call fastcc void @_ZL31_find_collision_pairs_recursiveP12btGImpactBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBvh* %boxset0, %struct.btGImpactBvh* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %68, i32 %node1, i8 zeroext 0)
+ %69 = load %struct.GIM_AABB_DATA** %1, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.GIM_AABB_DATA* %69, i32 %68, i32 1 ; [#uses=1]
+ %71 = load i32* %70, align 4 ; [#uses=2]
+ %toBool.i.i19 = icmp slt i32 %71, 0 ; [#uses=1]
+ %72 = add nsw i32 %node0, 2 ; [#uses=1]
+ %73 = sub i32 %68, %71 ; [#uses=1]
+ %74 = select i1 %toBool.i.i19, i32 %73, i32 %72 ; [#uses=1]
+ call fastcc void @_ZL31_find_collision_pairs_recursiveP12btGImpactBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBvh* %boxset0, %struct.btGImpactBvh* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %74, i32 %node1, i8 zeroext 0)
+ ret void
+
+bb11: ; preds = %bb8
+ %75 = add nsw i32 %node1, 1 ; [#uses=6]
+ %76 = add nsw i32 %node0, 1 ; [#uses=6]
+ call fastcc void @_ZL31_find_collision_pairs_recursiveP12btGImpactBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBvh* %boxset0, %struct.btGImpactBvh* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %76, i32 %75, i8 zeroext 0)
+ %77 = load %struct.GIM_AABB_DATA** %27, align 4 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.GIM_AABB_DATA* %77, i32 %75, i32 1 ; [#uses=1]
+ %79 = load i32* %78, align 4 ; [#uses=2]
+ %toBool.i.i18 = icmp slt i32 %79, 0 ; [#uses=1]
+ %80 = add nsw i32 %node1, 2 ; [#uses=2]
+ %81 = sub i32 %75, %79 ; [#uses=1]
+ %82 = select i1 %toBool.i.i18, i32 %81, i32 %80 ; [#uses=1]
+ call fastcc void @_ZL31_find_collision_pairs_recursiveP12btGImpactBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBvh* %boxset0, %struct.btGImpactBvh* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %76, i32 %82, i8 zeroext 0)
+ %83 = load %struct.GIM_AABB_DATA** %1, align 4 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.GIM_AABB_DATA* %83, i32 %76, i32 1 ; [#uses=1]
+ %85 = load i32* %84, align 4 ; [#uses=2]
+ %toBool.i.i20 = icmp slt i32 %85, 0 ; [#uses=1]
+ %86 = add nsw i32 %node0, 2 ; [#uses=2]
+ %87 = sub i32 %76, %85 ; [#uses=1]
+ %88 = select i1 %toBool.i.i20, i32 %87, i32 %86 ; [#uses=1]
+ call fastcc void @_ZL31_find_collision_pairs_recursiveP12btGImpactBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBvh* %boxset0, %struct.btGImpactBvh* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %88, i32 %75, i8 zeroext 0)
+ %89 = load %struct.GIM_AABB_DATA** %27, align 4 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.GIM_AABB_DATA* %89, i32 %75, i32 1 ; [#uses=1]
+ %91 = load i32* %90, align 4 ; [#uses=2]
+ %toBool.i.i17 = icmp slt i32 %91, 0 ; [#uses=1]
+ %92 = sub i32 %75, %91 ; [#uses=1]
+ %93 = select i1 %toBool.i.i17, i32 %92, i32 %80 ; [#uses=1]
+ %94 = load %struct.GIM_AABB_DATA** %1, align 4 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.GIM_AABB_DATA* %94, i32 %76, i32 1 ; [#uses=1]
+ %96 = load i32* %95, align 4 ; [#uses=2]
+ %toBool.i.i = icmp slt i32 %96, 0 ; [#uses=1]
+ %97 = sub i32 %76, %96 ; [#uses=1]
+ %98 = select i1 %toBool.i.i, i32 %97, i32 %86 ; [#uses=1]
+ call fastcc void @_ZL31_find_collision_pairs_recursiveP12btGImpactBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBvh* %boxset0, %struct.btGImpactBvh* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %98, i32 %93, i8 zeroext 0)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12btGImpactBvh14find_collisionEPS_RK11btTransformS0_S3_R9btPairSet(%struct.btGImpactBvh* %boxset0, %struct.btTransform* nocapture %trans0, %struct.btGImpactBvh* %boxset1, %struct.btTransform* nocapture %trans1, %struct.btPairSet* %collision_pairs) align 2 {
+entry:
+ %trans_cache_1to0 = alloca %struct.BT_BOX_BOX_TRANSFORM_CACHE, align 8 ; [#uses=2]
+ %0 = getelementptr inbounds %struct.btGImpactBvh* %boxset0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btGImpactBvh* %boxset1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %5 = icmp eq i32 %4, 0 ; [#uses=1]
+ br i1 %5, label %return, label %bb4.critedge
+
+bb4.critedge: ; preds = %bb
+ call void @_ZN26BT_BOX_BOX_TRANSFORM_CACHE19calc_from_homogenicERK11btTransformS2_(%struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, %struct.btTransform* %trans0, %struct.btTransform* %trans1) inlinehint
+ call fastcc void @_ZL31_find_collision_pairs_recursiveP12btGImpactBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBvh* %boxset0, %struct.btGImpactBvh* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 0, i32 0, i8 zeroext 1)
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=0]
+define zeroext i8 @_ZNK12btGImpactBvh8rayQueryERK9btVector3S2_R20btAlignedObjectArrayIiE(%struct.btGImpactBvh* nocapture %this, %struct.btQuadWord* nocapture %ray_dir, %struct.btQuadWord* nocapture %ray_origin, %"struct.btAlignedObjectArray<int>"* nocapture %collided_results) align 2 {
+entry:
+ %bound = alloca %struct.GIM_AABB, align 8 ; [#uses=9]
+ %0 = getelementptr inbounds %struct.btGImpactBvh* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %bb11
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btGImpactBvh* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 1 ; [#uses=5]
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 2 ; [#uses=2]
+ %14 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 3 ; [#uses=5]
+ %15 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 4 ; [#uses=2]
+ br label %bb
+
+bb: ; preds = %bb10.backedge, %bb.nph
+ %curIndex.019 = phi i32 [ 0, %bb.nph ], [ %curIndex.0.be, %bb10.backedge ] ; [#uses=12]
+ %16 = load %struct.GIM_AABB_DATA** %3, align 4 ; [#uses=9]
+ %17 = getelementptr inbounds %struct.GIM_AABB_DATA* %16, i32 %curIndex.019, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %4, align 8
+ %19 = getelementptr inbounds %struct.GIM_AABB_DATA* %16, i32 %curIndex.019, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %5, align 4
+ %21 = getelementptr inbounds %struct.GIM_AABB_DATA* %16, i32 %curIndex.019, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %6, align 8
+ %23 = getelementptr inbounds %struct.GIM_AABB_DATA* %16, i32 %curIndex.019, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %7, align 4
+ %25 = getelementptr inbounds %struct.GIM_AABB_DATA* %16, i32 %curIndex.019, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %8, align 8
+ %27 = getelementptr inbounds %struct.GIM_AABB_DATA* %16, i32 %curIndex.019, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %9, align 4
+ %29 = getelementptr inbounds %struct.GIM_AABB_DATA* %16, i32 %curIndex.019, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %10, align 8
+ %31 = getelementptr inbounds %struct.GIM_AABB_DATA* %16, i32 %curIndex.019, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %11, align 4
+ %33 = call zeroext i8 @_ZNK6btAABB11collide_rayERK9btVector3S2_(%struct.GIM_AABB* %bound, %struct.btQuadWord* %ray_origin, %struct.btQuadWord* %ray_dir) nounwind ; [#uses=1]
+ %34 = getelementptr inbounds %struct.GIM_AABB_DATA* %16, i32 %curIndex.019, i32 1 ; [#uses=1]
+ %35 = load i32* %34, align 4 ; [#uses=2]
+ %toBool = icmp slt i32 %35, 0 ; [#uses=2]
+ %toBool2 = icmp eq i8 %33, 0 ; [#uses=2]
+ %or.cond = or i1 %toBool, %toBool2 ; [#uses=1]
+ br i1 %or.cond, label %bb4, label %bb3
+
+bb3: ; preds = %bb
+ %36 = load i32* %12, align 4 ; [#uses=6]
+ %37 = load i32* %13, align 4 ; [#uses=2]
+ %38 = icmp eq i32 %37, %36 ; [#uses=1]
+ br i1 %38, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb3
+ %39 = icmp eq i32 %36, 0 ; [#uses=1]
+ %40 = shl i32 %36, 1 ; [#uses=1]
+ %iftmp.293.0.i.i = select i1 %39, i32 1, i32 %40 ; [#uses=4]
+ %41 = icmp slt i32 %37, %iftmp.293.0.i.i ; [#uses=1]
+ br i1 %41, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %42 = icmp eq i32 %iftmp.293.0.i.i, 0 ; [#uses=1]
+ br i1 %42, label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %43 = shl i32 %iftmp.293.0.i.i, 2 ; [#uses=1]
+ %44 = call i8* @_Z22btAlignedAllocInternalji(i32 %43, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %44 to i32* ; [#uses=1]
+ %.pre.i = load i32* %12, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %45 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %36, %bb.i.i ] ; [#uses=2]
+ %46 = phi i32* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %47 = icmp sgt i32 %45, 0 ; [#uses=1]
+ br i1 %47, label %bb.i4.i.i, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %indvar.i.i.i = phi i32 [ %indvar.next.i.i.i, %bb3.i.i.i ], [ 0, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr i32* %46, i32 %indvar.i.i.i ; [#uses=2]
+ %48 = icmp eq i32* %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %48, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %49 = load i32** %14, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr i32* %49, i32 %indvar.i.i.i ; [#uses=1]
+ %50 = load i32* %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store i32 %50, i32* %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %45 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %51 = load i32** %14, align 4 ; [#uses=2]
+ %52 = icmp eq i32* %51, null ; [#uses=1]
+ br i1 %52, label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+ %53 = load i8* %15, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %53, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %54 = bitcast i32* %51 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %54)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %14, align 4
+ br label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+ store i8 1, i8* %15, align 4
+ store i32* %46, i32** %14, align 4
+ store i32 %iftmp.293.0.i.i, i32* %13, align 4
+ %.pre5.i = load i32* %12, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, %bb.i, %bb3
+ %55 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i ], [ %36, %bb3 ], [ %36, %bb.i ] ; [#uses=2]
+ %56 = load i32** %14, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds i32* %56, i32 %55 ; [#uses=2]
+ %58 = icmp eq i32* %57, null ; [#uses=1]
+ br i1 %58, label %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store i32 %35, i32* %57, align 4
+ %.pre6.i = load i32* %12, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit
+
+_ZN20btAlignedObjectArrayIiE9push_backERKi.exit: ; preds = %bb2.i, %bb1.i
+ %59 = phi i32 [ %55, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %60 = add nsw i32 %59, 1 ; [#uses=1]
+ store i32 %60, i32* %12, align 4
+ br label %bb4
+
+bb4: ; preds = %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit, %bb
+ %or.cond18 = and i1 %toBool2, %toBool ; [#uses=1]
+ br i1 %or.cond18, label %bb9, label %bb8
+
+bb8: ; preds = %bb4
+ %61 = add nsw i32 %curIndex.019, 1 ; [#uses=1]
+ br label %bb10.backedge
+
+bb10.backedge: ; preds = %bb9, %bb8
+ %curIndex.0.be = phi i32 [ %61, %bb8 ], [ %66, %bb9 ] ; [#uses=2]
+ %62 = icmp slt i32 %curIndex.0.be, %1 ; [#uses=1]
+ br i1 %62, label %bb, label %bb11
+
+bb9: ; preds = %bb4
+ %63 = load %struct.GIM_AABB_DATA** %3, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.GIM_AABB_DATA* %63, i32 %curIndex.019, i32 1 ; [#uses=1]
+ %65 = load i32* %64, align 4 ; [#uses=1]
+ %66 = sub i32 %curIndex.019, %65 ; [#uses=1]
+ br label %bb10.backedge
+
+bb11: ; preds = %bb10.backedge, %entry
+ %67 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 1 ; [#uses=1]
+ %68 = load i32* %67, align 4 ; [#uses=1]
+ %69 = icmp sgt i32 %68, 0 ; [#uses=1]
+ %.0 = zext i1 %69 to i8 ; [#uses=1]
+ ret i8 %.0
+}
+
+; [#uses=0]
+define zeroext i8 @_ZNK12btGImpactBvh8boxQueryERK6btAABBR20btAlignedObjectArrayIiE(%struct.btGImpactBvh* nocapture %this, %struct.GIM_AABB* nocapture %box, %"struct.btAlignedObjectArray<int>"* nocapture %collided_results) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactBvh* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %bb11
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btGImpactBvh* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 1 ; [#uses=5]
+ %6 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 2 ; [#uses=2]
+ %7 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 3 ; [#uses=5]
+ %8 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb10.backedge, %bb.nph
+ %curIndex.026 = phi i32 [ 0, %bb.nph ], [ %curIndex.0.be, %bb10.backedge ] ; [#uses=11]
+ %14 = load %struct.GIM_AABB_DATA** %3, align 4 ; [#uses=8]
+ %15 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %curIndex.026, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %curIndex.026, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %curIndex.026, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %curIndex.026, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %curIndex.026, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = load float* %4, align 4 ; [#uses=1]
+ %26 = fcmp ogt float %16, %25 ; [#uses=1]
+ br i1 %26, label %_ZNK6btAABB13has_collisionERKS_.exit.thread, label %bb.i19
+
+bb.i19: ; preds = %bb
+ %27 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %curIndex.026, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = load float* %9, align 4 ; [#uses=1]
+ %30 = fcmp olt float %28, %29 ; [#uses=1]
+ br i1 %30, label %_ZNK6btAABB13has_collisionERKS_.exit.thread, label %bb1.i20
+
+bb1.i20: ; preds = %bb.i19
+ %31 = load float* %10, align 4 ; [#uses=1]
+ %32 = fcmp ogt float %18, %31 ; [#uses=1]
+ br i1 %32, label %_ZNK6btAABB13has_collisionERKS_.exit.thread, label %bb2.i21
+
+bb2.i21: ; preds = %bb1.i20
+ %33 = load float* %11, align 4 ; [#uses=1]
+ %34 = fcmp olt float %22, %33 ; [#uses=1]
+ br i1 %34, label %_ZNK6btAABB13has_collisionERKS_.exit.thread, label %bb3.i
+
+bb3.i: ; preds = %bb2.i21
+ %35 = load float* %12, align 4 ; [#uses=1]
+ %36 = fcmp ogt float %20, %35 ; [#uses=1]
+ br i1 %36, label %_ZNK6btAABB13has_collisionERKS_.exit.thread, label %_ZNK6btAABB13has_collisionERKS_.exit
+
+_ZNK6btAABB13has_collisionERKS_.exit.thread: ; preds = %bb3.i, %bb2.i21, %bb1.i20, %bb.i19, %bb
+ %37 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %curIndex.026, i32 1 ; [#uses=1]
+ %38 = load i32* %37, align 4 ; [#uses=1]
+ %toBool27 = icmp slt i32 %38, 0 ; [#uses=1]
+ br label %bb4
+
+_ZNK6btAABB13has_collisionERKS_.exit: ; preds = %bb3.i
+ %39 = load float* %13, align 4 ; [#uses=1]
+ %phitmp = fcmp olt float %24, %39 ; [#uses=3]
+ %40 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %curIndex.026, i32 1 ; [#uses=1]
+ %41 = load i32* %40, align 4 ; [#uses=2]
+ %toBool = icmp slt i32 %41, 0 ; [#uses=3]
+ %or.cond = or i1 %toBool, %phitmp ; [#uses=1]
+ br i1 %or.cond, label %bb4, label %bb3
+
+bb3: ; preds = %_ZNK6btAABB13has_collisionERKS_.exit
+ %42 = load i32* %5, align 4 ; [#uses=6]
+ %43 = load i32* %6, align 4 ; [#uses=2]
+ %44 = icmp eq i32 %43, %42 ; [#uses=1]
+ br i1 %44, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb3
+ %45 = icmp eq i32 %42, 0 ; [#uses=1]
+ %46 = shl i32 %42, 1 ; [#uses=1]
+ %iftmp.293.0.i.i = select i1 %45, i32 1, i32 %46 ; [#uses=4]
+ %47 = icmp slt i32 %43, %iftmp.293.0.i.i ; [#uses=1]
+ br i1 %47, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %48 = icmp eq i32 %iftmp.293.0.i.i, 0 ; [#uses=1]
+ br i1 %48, label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %49 = shl i32 %iftmp.293.0.i.i, 2 ; [#uses=1]
+ %50 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %49, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %50 to i32* ; [#uses=1]
+ %.pre.i = load i32* %5, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %51 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %42, %bb.i.i ] ; [#uses=2]
+ %52 = phi i32* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %53 = icmp sgt i32 %51, 0 ; [#uses=1]
+ br i1 %53, label %bb.i4.i.i, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %indvar.i.i.i = phi i32 [ %indvar.next.i.i.i, %bb3.i.i.i ], [ 0, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr i32* %52, i32 %indvar.i.i.i ; [#uses=2]
+ %54 = icmp eq i32* %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %54, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %55 = load i32** %7, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr i32* %55, i32 %indvar.i.i.i ; [#uses=1]
+ %56 = load i32* %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store i32 %56, i32* %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %51 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %57 = load i32** %7, align 4 ; [#uses=2]
+ %58 = icmp eq i32* %57, null ; [#uses=1]
+ br i1 %58, label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+ %59 = load i8* %8, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %59, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %60 = bitcast i32* %57 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %60)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %7, align 4
+ br label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+ store i8 1, i8* %8, align 4
+ store i32* %52, i32** %7, align 4
+ store i32 %iftmp.293.0.i.i, i32* %6, align 4
+ %.pre5.i = load i32* %5, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, %bb.i, %bb3
+ %61 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i ], [ %42, %bb3 ], [ %42, %bb.i ] ; [#uses=2]
+ %62 = load i32** %7, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds i32* %62, i32 %61 ; [#uses=2]
+ %64 = icmp eq i32* %63, null ; [#uses=1]
+ br i1 %64, label %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store i32 %41, i32* %63, align 4
+ %.pre6.i = load i32* %5, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit
+
+_ZN20btAlignedObjectArrayIiE9push_backERKi.exit: ; preds = %bb2.i, %bb1.i
+ %65 = phi i32 [ %61, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %66 = add nsw i32 %65, 1 ; [#uses=1]
+ store i32 %66, i32* %5, align 4
+ br label %bb4
+
+bb4: ; preds = %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit, %_ZNK6btAABB13has_collisionERKS_.exit, %_ZNK6btAABB13has_collisionERKS_.exit.thread
+ %toBool29 = phi i1 [ %toBool27, %_ZNK6btAABB13has_collisionERKS_.exit.thread ], [ %toBool, %_ZNK6btAABB13has_collisionERKS_.exit ], [ %toBool, %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit ] ; [#uses=1]
+ %67 = phi i1 [ true, %_ZNK6btAABB13has_collisionERKS_.exit.thread ], [ %phitmp, %_ZNK6btAABB13has_collisionERKS_.exit ], [ %phitmp, %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit ] ; [#uses=1]
+ %or.cond18 = and i1 %67, %toBool29 ; [#uses=1]
+ br i1 %or.cond18, label %bb9, label %bb8
+
+bb8: ; preds = %bb4
+ %68 = add nsw i32 %curIndex.026, 1 ; [#uses=1]
+ br label %bb10.backedge
+
+bb10.backedge: ; preds = %bb9, %bb8
+ %curIndex.0.be = phi i32 [ %68, %bb8 ], [ %73, %bb9 ] ; [#uses=2]
+ %69 = icmp slt i32 %curIndex.0.be, %1 ; [#uses=1]
+ br i1 %69, label %bb, label %bb11
+
+bb9: ; preds = %bb4
+ %70 = load %struct.GIM_AABB_DATA** %3, align 4 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.GIM_AABB_DATA* %70, i32 %curIndex.026, i32 1 ; [#uses=1]
+ %72 = load i32* %71, align 4 ; [#uses=1]
+ %73 = sub i32 %curIndex.026, %72 ; [#uses=1]
+ br label %bb10.backedge
+
+bb11: ; preds = %bb10.backedge, %entry
+ %74 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 1 ; [#uses=1]
+ %75 = load i32* %74, align 4 ; [#uses=1]
+ %76 = icmp sgt i32 %75, 0 ; [#uses=1]
+ %.0 = zext i1 %76 to i8 ; [#uses=1]
+ ret i8 %.0
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE7reserveEi(%"struct.btAlignedObjectArray<GIM_BVH_DATA>"* nocapture %this, i32 %_Count) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp slt i32 %1, %_Count ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = icmp eq i32 %_Count, 0 ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE8allocateEi.exit, label %bb.i2
+
+bb.i2: ; preds = %bb
+ %4 = mul i32 %_Count, 36 ; [#uses=1]
+ %5 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %4, i32 16) ; [#uses=1]
+ %phitmp = bitcast i8* %5 to %struct.GIM_AABB_DATA* ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE8allocateEi.exit
+
+_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE8allocateEi.exit: ; preds = %bb.i2, %bb
+ %6 = phi %struct.GIM_AABB_DATA* [ %phitmp, %bb.i2 ], [ null, %bb ] ; [#uses=11]
+ %7 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %this, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = icmp sgt i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb.nph.i, label %_ZNK20btAlignedObjectArrayI12GIM_BVH_DATAE4copyEiiPS0_.exit
+
+bb.nph.i: ; preds = %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE8allocateEi.exit
+ %10 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4
+
+bb.i4: ; preds = %bb3.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb3.i ] ; [#uses=20]
+ %scevgep.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i ; [#uses=1]
+ %11 = icmp eq %struct.GIM_AABB_DATA* %scevgep.i, null ; [#uses=1]
+ br i1 %11, label %bb3.i, label %bb1.i5
+
+bb1.i5: ; preds = %bb.i4
+ %scevgep11.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep13.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep15.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep17.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep19.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep21.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep23.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep26.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 1 ; [#uses=1]
+ %scevgep8.i = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = load %struct.GIM_AABB_DATA** %10, align 4 ; [#uses=9]
+ %scevgep910.i = getelementptr inbounds %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %scevgep910.i, align 4 ; [#uses=1]
+ store float %13, float* %scevgep8.i, align 4
+ %scevgep12.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %scevgep12.i, align 4 ; [#uses=1]
+ store float %14, float* %scevgep11.i, align 4
+ %scevgep14.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %scevgep14.i, align 4 ; [#uses=1]
+ store float %15, float* %scevgep13.i, align 4
+ %scevgep16.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %16 = load float* %scevgep16.i, align 4 ; [#uses=1]
+ store float %16, float* %scevgep15.i, align 4
+ %scevgep18.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %scevgep18.i, align 4 ; [#uses=1]
+ store float %17, float* %scevgep17.i, align 4
+ %scevgep20.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %scevgep20.i, align 4 ; [#uses=1]
+ store float %18, float* %scevgep19.i, align 4
+ %scevgep22.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %scevgep22.i, align 4 ; [#uses=1]
+ store float %19, float* %scevgep21.i, align 4
+ %scevgep24.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %20 = load float* %scevgep24.i, align 4 ; [#uses=1]
+ store float %20, float* %scevgep23.i, align 4
+ %scevgep25.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 1 ; [#uses=1]
+ %21 = load i32* %scevgep25.i, align 4 ; [#uses=1]
+ store i32 %21, i32* %scevgep26.i, align 4
+ br label %bb3.i
+
+bb3.i: ; preds = %bb1.i5, %bb.i4
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %8 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI12GIM_BVH_DATAE4copyEiiPS0_.exit, label %bb.i4
+
+_ZNK20btAlignedObjectArrayI12GIM_BVH_DATAE4copyEiiPS0_.exit: ; preds = %bb3.i, %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE8allocateEi.exit
+ %22 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %this, i32 0, i32 3 ; [#uses=3]
+ %23 = load %struct.GIM_AABB_DATA** %22, align 4 ; [#uses=2]
+ %24 = icmp eq %struct.GIM_AABB_DATA* %23, null ; [#uses=1]
+ br i1 %24, label %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE10deallocateEv.exit, label %bb.i
+
+bb.i: ; preds = %_ZNK20btAlignedObjectArrayI12GIM_BVH_DATAE4copyEiiPS0_.exit
+ %25 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %this, i32 0, i32 4 ; [#uses=1]
+ %26 = load i8* %25, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %27 = bitcast %struct.GIM_AABB_DATA* %23 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %27)
+ br label %bb2.i
+
+bb2.i: ; preds = %bb1.i, %bb.i
+ store %struct.GIM_AABB_DATA* null, %struct.GIM_AABB_DATA** %22, align 4
+ br label %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE10deallocateEv.exit
+
+_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE10deallocateEv.exit: ; preds = %bb2.i, %_ZNK20btAlignedObjectArrayI12GIM_BVH_DATAE4copyEiiPS0_.exit
+ %28 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %28, align 4
+ store %struct.GIM_AABB_DATA* %6, %struct.GIM_AABB_DATA** %22, align 4
+ store i32 %_Count, i32* %0, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE7reserveEi(%"struct.btAlignedObjectArray<GIM_BVH_DATA>"* nocapture %this, i32 %_Count) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp slt i32 %1, %_Count ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = icmp eq i32 %_Count, 0 ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE8allocateEi.exit, label %bb.i2
+
+bb.i2: ; preds = %bb
+ %4 = mul i32 %_Count, 36 ; [#uses=1]
+ %5 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %4, i32 16) ; [#uses=1]
+ %phitmp = bitcast i8* %5 to %struct.GIM_AABB_DATA* ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE8allocateEi.exit
+
+_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE8allocateEi.exit: ; preds = %bb.i2, %bb
+ %6 = phi %struct.GIM_AABB_DATA* [ %phitmp, %bb.i2 ], [ null, %bb ] ; [#uses=11]
+ %7 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %this, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = icmp sgt i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb.nph.i, label %_ZNK20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE4copyEiiPS0_.exit
+
+bb.nph.i: ; preds = %_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE8allocateEi.exit
+ %10 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4
+
+bb.i4: ; preds = %bb3.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb3.i ] ; [#uses=20]
+ %scevgep.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i ; [#uses=1]
+ %11 = icmp eq %struct.GIM_AABB_DATA* %scevgep.i, null ; [#uses=1]
+ br i1 %11, label %bb3.i, label %bb1.i5
+
+bb1.i5: ; preds = %bb.i4
+ %scevgep11.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep13.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep15.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep17.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep19.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep21.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep23.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep26.i = getelementptr %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 1 ; [#uses=1]
+ %scevgep8.i = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %indvar.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = load %struct.GIM_AABB_DATA** %10, align 4 ; [#uses=9]
+ %scevgep910.i = getelementptr inbounds %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %scevgep910.i, align 4 ; [#uses=1]
+ store float %13, float* %scevgep8.i, align 4
+ %scevgep12.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %scevgep12.i, align 4 ; [#uses=1]
+ store float %14, float* %scevgep11.i, align 4
+ %scevgep14.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %scevgep14.i, align 4 ; [#uses=1]
+ store float %15, float* %scevgep13.i, align 4
+ %scevgep16.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %16 = load float* %scevgep16.i, align 4 ; [#uses=1]
+ store float %16, float* %scevgep15.i, align 4
+ %scevgep18.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %scevgep18.i, align 4 ; [#uses=1]
+ store float %17, float* %scevgep17.i, align 4
+ %scevgep20.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %scevgep20.i, align 4 ; [#uses=1]
+ store float %18, float* %scevgep19.i, align 4
+ %scevgep22.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %scevgep22.i, align 4 ; [#uses=1]
+ store float %19, float* %scevgep21.i, align 4
+ %scevgep24.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %20 = load float* %scevgep24.i, align 4 ; [#uses=1]
+ store float %20, float* %scevgep23.i, align 4
+ %scevgep25.i = getelementptr %struct.GIM_AABB_DATA* %12, i32 %indvar.i, i32 1 ; [#uses=1]
+ %21 = load i32* %scevgep25.i, align 4 ; [#uses=1]
+ store i32 %21, i32* %scevgep26.i, align 4
+ br label %bb3.i
+
+bb3.i: ; preds = %bb1.i5, %bb.i4
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %8 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE4copyEiiPS0_.exit, label %bb.i4
+
+_ZNK20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE4copyEiiPS0_.exit: ; preds = %bb3.i, %_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE8allocateEi.exit
+ %22 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %this, i32 0, i32 3 ; [#uses=3]
+ %23 = load %struct.GIM_AABB_DATA** %22, align 4 ; [#uses=2]
+ %24 = icmp eq %struct.GIM_AABB_DATA* %23, null ; [#uses=1]
+ br i1 %24, label %_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE10deallocateEv.exit, label %bb.i
+
+bb.i: ; preds = %_ZNK20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE4copyEiiPS0_.exit
+ %25 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %this, i32 0, i32 4 ; [#uses=1]
+ %26 = load i8* %25, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %27 = bitcast %struct.GIM_AABB_DATA* %23 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %27)
+ br label %bb2.i
+
+bb2.i: ; preds = %bb1.i, %bb.i
+ store %struct.GIM_AABB_DATA* null, %struct.GIM_AABB_DATA** %22, align 4
+ br label %_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE10deallocateEv.exit
+
+_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE10deallocateEv.exit: ; preds = %bb2.i, %_ZNK20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE4copyEiiPS0_.exit
+ %28 = getelementptr inbounds %"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %28, align 4
+ store %struct.GIM_AABB_DATA* %6, %struct.GIM_AABB_DATA** %22, align 4
+ store i32 %_Count, i32* %0, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN9btBvhTree10build_treeER18GIM_BVH_DATA_ARRAY(%struct.btBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btBvhTree* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 1 ; [#uses=2]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = shl i32 %2, 1 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btBvhTree* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=3]
+ %6 = icmp slt i32 %5, %3 ; [#uses=1]
+ br i1 %6, label %bb.nph.i, label %_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE6resizeEiRKS0_.exit
+
+bb.nph.i: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btBvhTree* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE7reserveEi(%"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %7, i32 %3) inlinehint
+ %8 = getelementptr inbounds %struct.btBvhTree* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %tmp2 = sub i32 %3, %5 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb10.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb10.i ] ; [#uses=2]
+ %tmp3 = add i32 %5, %indvar.i ; [#uses=2]
+ %9 = load %struct.GIM_AABB_DATA** %8, align 4 ; [#uses=2]
+ %scevgep.i = getelementptr %struct.GIM_AABB_DATA* %9, i32 %tmp3 ; [#uses=1]
+ %10 = icmp eq %struct.GIM_AABB_DATA* %scevgep.i, null ; [#uses=1]
+ br i1 %10, label %bb10.i, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ %scevgep27.i = getelementptr %struct.GIM_AABB_DATA* %9, i32 %tmp3, i32 1 ; [#uses=1]
+ store i32 0, i32* %scevgep27.i, align 4
+ br label %bb10.i
+
+bb10.i: ; preds = %bb8.i, %bb7.i
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %tmp2 ; [#uses=1]
+ br i1 %exitcond, label %_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE6resizeEiRKS0_.exit, label %bb7.i
+
+_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE6resizeEiRKS0_.exit: ; preds = %bb10.i, %entry
+ store i32 %3, i32* %4, align 4
+ %11 = load i32* %1, align 4 ; [#uses=1]
+ tail call void @_ZN9btBvhTree15_build_sub_treeER18GIM_BVH_DATA_ARRAYii(%struct.btBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 %11)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12btGImpactBvh8buildSetEv(%struct.btGImpactBvh* %this) align 2 {
+entry:
+ %primitive_boxes = alloca %struct.GIM_BVH_DATA_ARRAY, align 8 ; [#uses=6]
+ %0 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 4 ; [#uses=4]
+ store i8 1, i8* %0, align 8
+ %1 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=8]
+ store %struct.GIM_AABB_DATA* null, %struct.GIM_AABB_DATA** %1, align 4
+ %2 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 1 ; [#uses=6]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 2 ; [#uses=2]
+ store i32 0, i32* %3, align 8
+ %4 = getelementptr inbounds %struct.btGImpactBvh* %this, i32 0, i32 1 ; [#uses=2]
+ %5 = load %struct.btActionInterface** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btActionInterface* %5, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 3 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %11 = invoke i32 %10(%struct.btActionInterface* %5)
+ to label %invcont unwind label %lpad ; [#uses=4]
+
+invcont: ; preds = %entry
+ %12 = load i32* %2, align 4 ; [#uses=1]
+ %13 = icmp slt i32 %12, %11 ; [#uses=1]
+ br i1 %13, label %bb.nph.i, label %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE6resizeEiRKS0_.exit
+
+bb.nph.i: ; preds = %invcont
+ %14 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE7reserveEi(%"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %14, i32 %11) inlinehint
+ to label %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE6resizeEiRKS0_.exit unwind label %lpad
+
+_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE6resizeEiRKS0_.exit: ; preds = %bb.nph.i, %invcont
+ store i32 %11, i32* %2, align 4
+ br label %bb3
+
+bb: ; preds = %bb3
+ %15 = load %struct.btActionInterface** %4, align 4 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btActionInterface* %15, i32 0, i32 0 ; [#uses=1]
+ %17 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 4 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = load %struct.GIM_AABB_DATA** %1, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %19 to void (%struct.btActionInterface*, i32, %struct.GIM_AABB*)* ; [#uses=1]
+ %scevgep2930 = getelementptr inbounds %struct.GIM_AABB_DATA* %20, i32 %25, i32 0 ; [#uses=1]
+ invoke void %21(%struct.btActionInterface* %15, i32 %25, %struct.GIM_AABB* %scevgep2930)
+ to label %invcont2 unwind label %lpad
+
+invcont2: ; preds = %bb
+ %22 = load %struct.GIM_AABB_DATA** %1, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.GIM_AABB_DATA* %22, i32 %25, i32 1 ; [#uses=1]
+ store i32 %25, i32* %scevgep, align 4
+ %23 = add nsw i32 %25, 1 ; [#uses=1]
+ %.pre = load i32* %2, align 4 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %invcont2, %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE6resizeEiRKS0_.exit
+ %24 = phi i32 [ %.pre, %invcont2 ], [ %11, %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE6resizeEiRKS0_.exit ] ; [#uses=3]
+ %25 = phi i32 [ %23, %invcont2 ], [ 0, %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE6resizeEiRKS0_.exit ] ; [#uses=6]
+ %26 = icmp sgt i32 %24, %25 ; [#uses=1]
+ br i1 %26, label %bb, label %bb4
+
+bb4: ; preds = %bb3
+ %27 = getelementptr inbounds %struct.btGImpactBvh* %this, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btGImpactBvh* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = shl i32 %24, 1 ; [#uses=4]
+ %30 = getelementptr inbounds %struct.btGImpactBvh* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %31 = load i32* %30, align 4 ; [#uses=3]
+ %32 = icmp slt i32 %31, %29 ; [#uses=1]
+ br i1 %32, label %bb.nph.i.i, label %bb9
+
+bb.nph.i.i: ; preds = %bb4
+ %33 = getelementptr inbounds %struct.btGImpactBvh* %this, i32 0, i32 0, i32 1, i32 0 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI17GIM_BVH_TREE_NODEE7reserveEi(%"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %33, i32 %29) inlinehint
+ to label %.noexc25 unwind label %lpad
+
+.noexc25: ; preds = %bb.nph.i.i
+ %34 = getelementptr inbounds %struct.btGImpactBvh* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %tmp27 = sub i32 %29, %31 ; [#uses=1]
+ br label %bb7.i.i
+
+bb7.i.i: ; preds = %bb10.i.i, %.noexc25
+ %indvar.i.i = phi i32 [ 0, %.noexc25 ], [ %indvar.next.i.i, %bb10.i.i ] ; [#uses=2]
+ %tmp28 = add i32 %31, %indvar.i.i ; [#uses=2]
+ %35 = load %struct.GIM_AABB_DATA** %34, align 4 ; [#uses=2]
+ %scevgep.i.i = getelementptr %struct.GIM_AABB_DATA* %35, i32 %tmp28 ; [#uses=1]
+ %36 = icmp eq %struct.GIM_AABB_DATA* %scevgep.i.i, null ; [#uses=1]
+ br i1 %36, label %bb10.i.i, label %bb8.i.i
+
+bb8.i.i: ; preds = %bb7.i.i
+ %scevgep27.i.i = getelementptr %struct.GIM_AABB_DATA* %35, i32 %tmp28, i32 1 ; [#uses=1]
+ store i32 0, i32* %scevgep27.i.i, align 4
+ br label %bb10.i.i
+
+bb10.i.i: ; preds = %bb8.i.i, %bb7.i.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %tmp27 ; [#uses=1]
+ br i1 %exitcond, label %bb9.loopexit, label %bb7.i.i
+
+invcont7: ; preds = %bb2.i.i.i.i, %lpad
+ store i8 1, i8* %0, align 8
+ store %struct.GIM_AABB_DATA* null, %struct.GIM_AABB_DATA** %1, align 4
+ store i32 0, i32* %2, align 4
+ store i32 0, i32* %3, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb9.loopexit: ; preds = %bb10.i.i
+ %.pre32 = load i32* %2, align 4 ; [#uses=1]
+ br label %bb9
+
+bb9: ; preds = %bb9.loopexit, %bb4
+ %37 = phi i32 [ %.pre32, %bb9.loopexit ], [ %24, %bb4 ] ; [#uses=1]
+ store i32 %29, i32* %30, align 4
+ call void @_ZN9btBvhTree15_build_sub_treeER18GIM_BVH_DATA_ARRAYii(%struct.btBvhTree* %27, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 %37)
+ %38 = load %struct.GIM_AABB_DATA** %1, align 4 ; [#uses=2]
+ %39 = icmp eq %struct.GIM_AABB_DATA* %38, null ; [#uses=1]
+ br i1 %39, label %_ZN18GIM_BVH_DATA_ARRAYD1Ev.exit22, label %bb.i.i.i.i19
+
+bb.i.i.i.i19: ; preds = %bb9
+ %40 = load i8* %0, align 8 ; [#uses=1]
+ %toBool.i.i.i.i18 = icmp eq i8 %40, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i18, label %bb2.i.i.i.i21, label %bb1.i.i.i.i20
+
+bb1.i.i.i.i20: ; preds = %bb.i.i.i.i19
+ %41 = bitcast %struct.GIM_AABB_DATA* %38 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %41)
+ br label %bb2.i.i.i.i21
+
+bb2.i.i.i.i21: ; preds = %bb1.i.i.i.i20, %bb.i.i.i.i19
+ store %struct.GIM_AABB_DATA* null, %struct.GIM_AABB_DATA** %1, align 4
+ ret void
+
+_ZN18GIM_BVH_DATA_ARRAYD1Ev.exit22: ; preds = %bb9
+ ret void
+
+lpad: ; preds = %bb.nph.i.i, %bb, %bb.nph.i, %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %42 = load %struct.GIM_AABB_DATA** %1, align 4 ; [#uses=2]
+ %43 = icmp eq %struct.GIM_AABB_DATA* %42, null ; [#uses=1]
+ br i1 %43, label %invcont7, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %lpad
+ %44 = load i8* %0, align 8 ; [#uses=1]
+ %toBool.i.i.i.i = icmp eq i8 %44, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i, label %bb2.i.i.i.i, label %bb1.i.i.i.i
+
+bb1.i.i.i.i: ; preds = %bb.i.i.i.i
+ %45 = bitcast %struct.GIM_AABB_DATA* %42 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %45)
+ to label %bb2.i.i.i.i unwind label %lpad12
+
+bb2.i.i.i.i: ; preds = %bb1.i.i.i.i, %bb.i.i.i.i
+ store %struct.GIM_AABB_DATA* null, %struct.GIM_AABB_DATA** %1, align 4
+ br label %invcont7
+
+lpad12: ; preds = %bb1.i.i.i.i
+ %eh_ptr13 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN27btGImpactCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ %1 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV27btGImpactCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %2, align 4
+ %3 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btTransform* @_ZN11btTransformmLERKS_(%struct.btTransform* %this, %struct.btTransform* nocapture %t) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=4]
+ %2 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %6 = load float* %5, align 4 ; [#uses=4]
+ %7 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=4]
+ %13 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=3]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=4]
+ %19 = fmul float %18, %3 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=4]
+ %22 = fmul float %21, %8 ; [#uses=1]
+ %23 = fadd float %19, %22 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %25 = load float* %24, align 4 ; [#uses=4]
+ %26 = fmul float %25, %14 ; [#uses=1]
+ %27 = fadd float %23, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %29 = load float* %28, align 4 ; [#uses=4]
+ %30 = fmul float %29, %3 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %32 = load float* %31, align 4 ; [#uses=4]
+ %33 = fmul float %32, %8 ; [#uses=1]
+ %34 = fadd float %30, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %36 = load float* %35, align 4 ; [#uses=4]
+ %37 = fmul float %36, %14 ; [#uses=1]
+ %38 = fadd float %34, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fadd float %40, %38 ; [#uses=1]
+ store float %41, float* %39, align 4
+ %42 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fadd float %43, %27 ; [#uses=1]
+ store float %44, float* %42, align 4
+ %45 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fadd float %46, %16 ; [#uses=1]
+ store float %47, float* %45, align 4
+ %48 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=3]
+ %50 = fmul float %49, %1 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=3]
+ %53 = fmul float %52, %6 ; [#uses=1]
+ %54 = fadd float %50, %53 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=3]
+ %57 = fmul float %56, %12 ; [#uses=1]
+ %58 = fadd float %54, %57 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=3]
+ %61 = fmul float %60, %1 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=3]
+ %64 = fmul float %63, %6 ; [#uses=1]
+ %65 = fadd float %61, %64 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=3]
+ %68 = fmul float %67, %12 ; [#uses=1]
+ %69 = fadd float %65, %68 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=3]
+ %72 = fmul float %71, %1 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=3]
+ %75 = fmul float %74, %6 ; [#uses=1]
+ %76 = fadd float %72, %75 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=3]
+ %79 = fmul float %78, %12 ; [#uses=1]
+ %80 = fadd float %76, %79 ; [#uses=1]
+ %81 = fmul float %49, %18 ; [#uses=1]
+ %82 = fmul float %52, %21 ; [#uses=1]
+ %83 = fadd float %81, %82 ; [#uses=1]
+ %84 = fmul float %56, %25 ; [#uses=1]
+ %85 = fadd float %83, %84 ; [#uses=1]
+ %86 = fmul float %60, %18 ; [#uses=1]
+ %87 = fmul float %63, %21 ; [#uses=1]
+ %88 = fadd float %86, %87 ; [#uses=1]
+ %89 = fmul float %67, %25 ; [#uses=1]
+ %90 = fadd float %88, %89 ; [#uses=1]
+ %91 = fmul float %71, %18 ; [#uses=1]
+ %92 = fmul float %74, %21 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = fmul float %78, %25 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %49, %29 ; [#uses=1]
+ %97 = fmul float %52, %32 ; [#uses=1]
+ %98 = fadd float %96, %97 ; [#uses=1]
+ %99 = fmul float %56, %36 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %60, %29 ; [#uses=1]
+ %102 = fmul float %63, %32 ; [#uses=1]
+ %103 = fadd float %101, %102 ; [#uses=1]
+ %104 = fmul float %67, %36 ; [#uses=1]
+ %105 = fadd float %103, %104 ; [#uses=1]
+ %106 = fmul float %71, %29 ; [#uses=1]
+ %107 = fmul float %74, %32 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fmul float %78, %36 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ store float %110, float* %28, align 4
+ store float %105, float* %31, align 4
+ store float %100, float* %35, align 4
+ %111 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %111, align 4
+ store float %95, float* %17, align 4
+ store float %90, float* %20, align 4
+ store float %85, float* %24, align 4
+ %112 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %112, align 4
+ store float %80, float* %0, align 4
+ store float %69, float* %5, align 4
+ store float %58, float* %11, align 4
+ %113 = getelementptr inbounds %struct.btTransform* %this, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %113, align 4
+ ret %struct.btTransform* %this
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK17btTriangleShapeEx7getAabbERK11btTransformR9btVector3S4_(%struct.btTriangleShapeEx* nocapture %this, %struct.btTransform* %t, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %tv0 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %tv1 = alloca %struct.btQuadWord, align 8 ; [#uses=10]
+ %tv2 = alloca %struct.btQuadWord, align 8 ; [#uses=10]
+ %0 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=3]
+ %13 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=3]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=3]
+ %19 = fadd float %16, %18 ; [#uses=3]
+ %20 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=3]
+ %22 = fmul float %21, %3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=3]
+ %25 = fmul float %24, %8 ; [#uses=1]
+ %26 = fadd float %22, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=3]
+ %29 = fmul float %28, %14 ; [#uses=1]
+ %30 = fadd float %26, %29 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=3]
+ %33 = fadd float %30, %32 ; [#uses=3]
+ %34 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=3]
+ %36 = fmul float %35, %3 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=3]
+ %39 = fmul float %38, %8 ; [#uses=1]
+ %40 = fadd float %36, %39 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=3]
+ %43 = fmul float %42, %14 ; [#uses=1]
+ %44 = fadd float %40, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=3]
+ %47 = fadd float %44, %46 ; [#uses=3]
+ %48 = getelementptr inbounds %struct.btQuadWord* %tv0, i32 0, i32 0, i32 0 ; [#uses=7]
+ store float %47, float* %48, align 8
+ %49 = getelementptr inbounds %struct.btQuadWord* %tv0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %33, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btQuadWord* %tv0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %19, float* %50, align 8
+ %51 = getelementptr inbounds %struct.btQuadWord* %tv0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %51, align 4
+ %52 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=3]
+ %54 = fmul float %1, %53 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=3]
+ %57 = fmul float %6, %56 ; [#uses=1]
+ %58 = fadd float %54, %57 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=3]
+ %61 = fmul float %12, %60 ; [#uses=1]
+ %62 = fadd float %58, %61 ; [#uses=1]
+ %63 = fadd float %62, %18 ; [#uses=3]
+ %64 = fmul float %21, %53 ; [#uses=1]
+ %65 = fmul float %24, %56 ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=1]
+ %67 = fmul float %28, %60 ; [#uses=1]
+ %68 = fadd float %66, %67 ; [#uses=1]
+ %69 = fadd float %68, %32 ; [#uses=3]
+ %70 = fmul float %35, %53 ; [#uses=1]
+ %71 = fmul float %38, %56 ; [#uses=1]
+ %72 = fadd float %70, %71 ; [#uses=1]
+ %73 = fmul float %42, %60 ; [#uses=1]
+ %74 = fadd float %72, %73 ; [#uses=1]
+ %75 = fadd float %74, %46 ; [#uses=3]
+ %76 = getelementptr inbounds %struct.btQuadWord* %tv1, i32 0, i32 0, i32 0 ; [#uses=7]
+ store float %75, float* %76, align 8
+ %77 = getelementptr inbounds %struct.btQuadWord* %tv1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %69, float* %77, align 4
+ %78 = getelementptr inbounds %struct.btQuadWord* %tv1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %63, float* %78, align 8
+ %79 = getelementptr inbounds %struct.btQuadWord* %tv1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %79, align 4
+ %80 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=3]
+ %82 = fmul float %1, %81 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=3]
+ %85 = fmul float %6, %84 ; [#uses=1]
+ %86 = fadd float %82, %85 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=3]
+ %89 = fmul float %12, %88 ; [#uses=1]
+ %90 = fadd float %86, %89 ; [#uses=1]
+ %91 = fadd float %90, %18 ; [#uses=3]
+ %92 = fmul float %21, %81 ; [#uses=1]
+ %93 = fmul float %24, %84 ; [#uses=1]
+ %94 = fadd float %92, %93 ; [#uses=1]
+ %95 = fmul float %28, %88 ; [#uses=1]
+ %96 = fadd float %94, %95 ; [#uses=1]
+ %97 = fadd float %96, %32 ; [#uses=3]
+ %98 = fmul float %35, %81 ; [#uses=1]
+ %99 = fmul float %38, %84 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %42, %88 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fadd float %102, %46 ; [#uses=3]
+ %104 = getelementptr inbounds %struct.btQuadWord* %tv2, i32 0, i32 0, i32 0 ; [#uses=7]
+ store float %103, float* %104, align 8
+ %105 = getelementptr inbounds %struct.btQuadWord* %tv2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %97, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btQuadWord* %tv2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %91, float* %106, align 8
+ %107 = getelementptr inbounds %struct.btQuadWord* %tv2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %107, align 4
+ %108 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=6]
+ %110 = fcmp ogt float %75, %103 ; [#uses=2]
+ %V3.pn.i = select i1 %110, %struct.btQuadWord* %tv2, %struct.btQuadWord* %tv1 ; [#uses=1]
+ %iftmp.227.0.in.i = getelementptr inbounds %struct.btQuadWord* %V3.pn.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %iftmp.227.0.i = load float* %iftmp.227.0.in.i, align 8 ; [#uses=1]
+ %.not.i = fcmp ule float %47, %iftmp.227.0.i ; [#uses=2]
+ %brmerge.i = or i1 %.not.i, %110 ; [#uses=1]
+ %.mux.i = select i1 %.not.i, float* %48, float* %104 ; [#uses=1]
+ %iftmp.226.0.in.i = select i1 %brmerge.i, float* %.mux.i, float* %76 ; [#uses=1]
+ %iftmp.226.0.i = load float* %iftmp.226.0.in.i, align 8 ; [#uses=1]
+ %111 = fcmp ogt float %69, %97 ; [#uses=2]
+ %V3.pn61.i = select i1 %111, %struct.btQuadWord* %tv2, %struct.btQuadWord* %tv1 ; [#uses=1]
+ %iftmp.230.0.in.i = getelementptr inbounds %struct.btQuadWord* %V3.pn61.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %iftmp.230.0.i = load float* %iftmp.230.0.in.i, align 4 ; [#uses=1]
+ %.not66.i = fcmp ule float %33, %iftmp.230.0.i ; [#uses=2]
+ %brmerge67.i = or i1 %.not66.i, %111 ; [#uses=1]
+ %.mux68.i = select i1 %.not66.i, float* %48, float* %104 ; [#uses=1]
+ %.pn60.pn.i = select i1 %brmerge67.i, float* %.mux68.i, float* %76 ; [#uses=1]
+ %iftmp.229.0.in.i = getelementptr inbounds float* %.pn60.pn.i, i32 1 ; [#uses=1]
+ %iftmp.229.0.i = load float* %iftmp.229.0.in.i, align 4 ; [#uses=1]
+ %112 = fcmp ogt float %63, %91 ; [#uses=2]
+ %V3.pn62.i = select i1 %112, %struct.btQuadWord* %tv2, %struct.btQuadWord* %tv1 ; [#uses=1]
+ %iftmp.233.0.in.i = getelementptr inbounds %struct.btQuadWord* %V3.pn62.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %iftmp.233.0.i = load float* %iftmp.233.0.in.i, align 8 ; [#uses=1]
+ %.not69.i = fcmp ule float %19, %iftmp.233.0.i ; [#uses=2]
+ %brmerge70.i = or i1 %.not69.i, %112 ; [#uses=1]
+ %.mux71.i = select i1 %.not69.i, float* %48, float* %104 ; [#uses=1]
+ %.pn59.pn.i = select i1 %brmerge70.i, float* %.mux71.i, float* %76 ; [#uses=1]
+ %iftmp.232.0.in.i = getelementptr inbounds float* %.pn59.pn.i, i32 2 ; [#uses=1]
+ %iftmp.232.0.i = load float* %iftmp.232.0.in.i, align 8 ; [#uses=1]
+ %113 = fcmp olt float %75, %103 ; [#uses=2]
+ %V3.pn63.i = select i1 %113, %struct.btQuadWord* %tv2, %struct.btQuadWord* %tv1 ; [#uses=1]
+ %iftmp.236.0.in.i = getelementptr inbounds %struct.btQuadWord* %V3.pn63.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %iftmp.236.0.i = load float* %iftmp.236.0.in.i, align 8 ; [#uses=1]
+ %.not72.i = fcmp uge float %47, %iftmp.236.0.i ; [#uses=2]
+ %brmerge73.i = or i1 %.not72.i, %113 ; [#uses=1]
+ %.mux74.i = select i1 %.not72.i, float* %48, float* %104 ; [#uses=1]
+ %iftmp.235.0.in.i = select i1 %brmerge73.i, float* %.mux74.i, float* %76 ; [#uses=1]
+ %iftmp.235.0.i = load float* %iftmp.235.0.in.i, align 8 ; [#uses=1]
+ %114 = fcmp olt float %69, %97 ; [#uses=2]
+ %V3.pn64.i = select i1 %114, %struct.btQuadWord* %tv2, %struct.btQuadWord* %tv1 ; [#uses=1]
+ %iftmp.239.0.in.i = getelementptr inbounds %struct.btQuadWord* %V3.pn64.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %iftmp.239.0.i = load float* %iftmp.239.0.in.i, align 4 ; [#uses=1]
+ %.not75.i = fcmp uge float %33, %iftmp.239.0.i ; [#uses=2]
+ %brmerge76.i = or i1 %.not75.i, %114 ; [#uses=1]
+ %.mux77.i = select i1 %.not75.i, float* %48, float* %104 ; [#uses=1]
+ %.pn58.pn.i = select i1 %brmerge76.i, float* %.mux77.i, float* %76 ; [#uses=1]
+ %iftmp.238.0.in.i = getelementptr inbounds float* %.pn58.pn.i, i32 1 ; [#uses=1]
+ %iftmp.238.0.i = load float* %iftmp.238.0.in.i, align 4 ; [#uses=1]
+ %115 = fcmp olt float %63, %91 ; [#uses=2]
+ %V3.pn65.i = select i1 %115, %struct.btQuadWord* %tv2, %struct.btQuadWord* %tv1 ; [#uses=1]
+ %iftmp.242.0.in.i = getelementptr inbounds %struct.btQuadWord* %V3.pn65.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %iftmp.242.0.i = load float* %iftmp.242.0.in.i, align 8 ; [#uses=1]
+ %.not78.i = fcmp uge float %19, %iftmp.242.0.i ; [#uses=2]
+ %brmerge79.i = or i1 %.not78.i, %115 ; [#uses=1]
+ %.mux80.i = select i1 %.not78.i, float* %48, float* %104 ; [#uses=1]
+ %.pn57.pn.i = select i1 %brmerge79.i, float* %.mux80.i, float* %76 ; [#uses=1]
+ %iftmp.241.0.in.i = getelementptr inbounds float* %.pn57.pn.i, i32 2 ; [#uses=1]
+ %iftmp.241.0.i = load float* %iftmp.241.0.in.i, align 8 ; [#uses=1]
+ %116 = fsub float %iftmp.226.0.i, %109 ; [#uses=1]
+ %117 = fsub float %iftmp.229.0.i, %109 ; [#uses=1]
+ %118 = fsub float %iftmp.232.0.i, %109 ; [#uses=1]
+ %119 = fadd float %iftmp.235.0.i, %109 ; [#uses=1]
+ %120 = fadd float %iftmp.238.0.i, %109 ; [#uses=1]
+ %121 = fadd float %iftmp.241.0.i, %109 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %116, float* %122, align 4
+ %123 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %117, float* %123, align 4
+ %124 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %118, float* %124, align 4
+ %125 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %119, float* %125, align 4
+ %126 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %120, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %121, float* %127, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionShape* @_ZN18GIM_ShapeRetriever19ChildShapeRetriever13getChildShapeEi(%"struct.GIM_ShapeRetriever::ChildShapeRetriever"* nocapture %this, i32 %index) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.GIM_ShapeRetriever** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.GIM_ShapeRetriever* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load %struct.btGImpactShapeInterface** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btGImpactShapeInterface* %3, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 30 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to %struct.btCollisionShape* (%struct.btGImpactShapeInterface*, i32)* ; [#uses=1]
+ %9 = tail call %struct.btCollisionShape* %8(%struct.btGImpactShapeInterface* %3, i32 %index) ; [#uses=1]
+ ret %struct.btCollisionShape* %9
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionShape* @_ZN18GIM_ShapeRetriever22TriangleShapeRetriever13getChildShapeEi(%"struct.GIM_ShapeRetriever::TetraShapeRetriever"* nocapture %this, i32 %index) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.GIM_ShapeRetriever::TetraShapeRetriever"* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ %1 = load %struct.GIM_ShapeRetriever** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.GIM_ShapeRetriever* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load %struct.btGImpactShapeInterface** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btGImpactShapeInterface* %3, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 25 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.GIM_ShapeRetriever* %1, i32 0, i32 1 ; [#uses=1]
+ %9 = bitcast i32 (...)* %7 to void (%struct.btGImpactShapeInterface*, i32, %struct.btTriangleShapeEx*)* ; [#uses=1]
+ tail call void %9(%struct.btGImpactShapeInterface* %3, i32 %index, %struct.btTriangleShapeEx* %8)
+ %10 = load %struct.GIM_ShapeRetriever** %0, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.GIM_ShapeRetriever* %10, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ ret %struct.btCollisionShape* %11
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionShape* @_ZN18GIM_ShapeRetriever19TetraShapeRetriever13getChildShapeEi(%"struct.GIM_ShapeRetriever::TetraShapeRetriever"* nocapture %this, i32 %index) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.GIM_ShapeRetriever::TetraShapeRetriever"* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ %1 = load %struct.GIM_ShapeRetriever** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.GIM_ShapeRetriever* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load %struct.btGImpactShapeInterface** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btGImpactShapeInterface* %3, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 26 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.GIM_ShapeRetriever* %1, i32 0, i32 2 ; [#uses=1]
+ %9 = bitcast i32 (...)* %7 to void (%struct.btGImpactShapeInterface*, i32, %struct.btTetrahedronShapeEx*)* ; [#uses=1]
+ tail call void %9(%struct.btGImpactShapeInterface* %3, i32 %index, %struct.btTetrahedronShapeEx* %8)
+ %10 = load %struct.GIM_ShapeRetriever** %0, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.GIM_ShapeRetriever* %10, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ ret %struct.btCollisionShape* %11
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18GIM_ShapeRetriever19ChildShapeRetrieverD1Ev(%"struct.GIM_ShapeRetriever::ChildShapeRetriever"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19ChildShapeRetrieverE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18GIM_ShapeRetriever19ChildShapeRetrieverD0Ev(%"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19ChildShapeRetrieverE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18GIM_ShapeRetriever22TriangleShapeRetrieverD1Ev(%"struct.GIM_ShapeRetriever::TetraShapeRetriever"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.GIM_ShapeRetriever::TetraShapeRetriever"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever22TriangleShapeRetrieverE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18GIM_ShapeRetriever22TriangleShapeRetrieverD0Ev(%"struct.GIM_ShapeRetriever::TetraShapeRetriever"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.GIM_ShapeRetriever::TetraShapeRetriever"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever22TriangleShapeRetrieverE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.GIM_ShapeRetriever::TetraShapeRetriever"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18GIM_ShapeRetriever19TetraShapeRetrieverD1Ev(%"struct.GIM_ShapeRetriever::TetraShapeRetriever"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.GIM_ShapeRetriever::TetraShapeRetriever"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19TetraShapeRetrieverE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18GIM_ShapeRetriever19TetraShapeRetrieverD0Ev(%"struct.GIM_ShapeRetriever::TetraShapeRetriever"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.GIM_ShapeRetriever::TetraShapeRetriever"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19TetraShapeRetrieverE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.GIM_ShapeRetriever::TetraShapeRetriever"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f(%struct.btGImpactCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btQuadWord* %point, %struct.btQuadWord* %normal, float %distance) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=4]
+ %1 = load %struct.btManifoldResult** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btManifoldResult* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 2 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 6 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %5 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ tail call void %10(%struct.btManifoldResult* %1, i32 %9, i32 %7)
+ %11 = load %struct.btManifoldResult** %0, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btManifoldResult* %11, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 3 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 7 ; [#uses=1]
+ %17 = load i32* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 8 ; [#uses=1]
+ %19 = load i32* %18, align 4 ; [#uses=1]
+ %20 = bitcast i32 (...)* %15 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ tail call void %20(%struct.btManifoldResult* %11, i32 %19, i32 %17)
+ %21 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %22 = load %struct.btPersistentManifold** %21, align 4 ; [#uses=2]
+ %23 = icmp eq %struct.btPersistentManifold* %22, null ; [#uses=1]
+ br i1 %23, label %bb.i, label %_ZN27btGImpactCollisionAlgorithm13checkManifoldEP17btCollisionObjectS1_.exit
+
+bb.i: ; preds = %entry
+ %24 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %25 = load %struct.btActionInterface** %24, align 4 ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btActionInterface* %25, i32 0, i32 0 ; [#uses=1]
+ %27 = load i32 (...)*** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds i32 (...)** %27, i32 3 ; [#uses=1]
+ %29 = load i32 (...)** %28, align 4 ; [#uses=1]
+ %30 = bitcast i32 (...)* %29 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %31 = bitcast %struct.btCollisionObject* %body0 to i8* ; [#uses=1]
+ %32 = bitcast %struct.btCollisionObject* %body1 to i8* ; [#uses=1]
+ %33 = tail call %struct.btPersistentManifold* %30(%struct.btActionInterface* %25, i8* %31, i8* %32) ; [#uses=2]
+ store %struct.btPersistentManifold* %33, %struct.btPersistentManifold** %21, align 4
+ br label %_ZN27btGImpactCollisionAlgorithm13checkManifoldEP17btCollisionObjectS1_.exit
+
+_ZN27btGImpactCollisionAlgorithm13checkManifoldEP17btCollisionObjectS1_.exit: ; preds = %bb.i, %entry
+ %34 = phi %struct.btPersistentManifold* [ %33, %bb.i ], [ %22, %entry ] ; [#uses=1]
+ %35 = load %struct.btManifoldResult** %0, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btManifoldResult* %35, i32 0, i32 1 ; [#uses=1]
+ store %struct.btPersistentManifold* %34, %struct.btPersistentManifold** %36, align 4
+ %37 = load %struct.btManifoldResult** %0, align 4 ; [#uses=2]
+ %38 = getelementptr inbounds %struct.btManifoldResult* %37, i32 0, i32 0, i32 0 ; [#uses=1]
+ %39 = load i32 (...)*** %38, align 4 ; [#uses=1]
+ %40 = getelementptr inbounds i32 (...)** %39, i32 4 ; [#uses=1]
+ %41 = load i32 (...)** %40, align 4 ; [#uses=1]
+ %42 = bitcast i32 (...)* %41 to void (%struct.btManifoldResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ tail call void %42(%struct.btManifoldResult* %37, %struct.btQuadWord* %normal, %struct.btQuadWord* %point, float %distance)
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN27btGImpactCollisionAlgorithm24shape_vs_shape_collisionEP17btCollisionObjectS1_P16btCollisionShapeS3_(%struct.btGImpactCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btCollisionShape* %shape0, %struct.btCollisionShape* %shape1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 9 ; [#uses=3]
+ %1 = load %struct.btCollisionShape** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 9 ; [#uses=3]
+ %3 = load %struct.btCollisionShape** %2, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %shape0, %struct.btCollisionShape** %0, align 4
+ store %struct.btCollisionShape* %shape1, %struct.btCollisionShape** %2, align 4
+ %4 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=3]
+ %5 = load %struct.btPersistentManifold** %4, align 4 ; [#uses=2]
+ %6 = icmp eq %struct.btPersistentManifold* %5, null ; [#uses=1]
+ br i1 %6, label %bb.i.i, label %_ZN27btGImpactCollisionAlgorithm12newAlgorithmEP17btCollisionObjectS1_.exit
+
+bb.i.i: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load %struct.btActionInterface** %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btActionInterface* %8, i32 0, i32 0 ; [#uses=1]
+ %10 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i32 (...)** %10, i32 3 ; [#uses=1]
+ %12 = load i32 (...)** %11, align 4 ; [#uses=1]
+ %13 = bitcast i32 (...)* %12 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %14 = bitcast %struct.btCollisionObject* %body0 to i8* ; [#uses=1]
+ %15 = bitcast %struct.btCollisionObject* %body1 to i8* ; [#uses=1]
+ %16 = tail call %struct.btPersistentManifold* %13(%struct.btActionInterface* %8, i8* %14, i8* %15) ; [#uses=2]
+ store %struct.btPersistentManifold* %16, %struct.btPersistentManifold** %4, align 4
+ br label %_ZN27btGImpactCollisionAlgorithm12newAlgorithmEP17btCollisionObjectS1_.exit
+
+_ZN27btGImpactCollisionAlgorithm12newAlgorithmEP17btCollisionObjectS1_.exit: ; preds = %bb.i.i, %entry
+ %17 = phi %struct.btPersistentManifold* [ %16, %bb.i.i ], [ %5, %entry ] ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=4]
+ %19 = load %struct.btManifoldResult** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btManifoldResult* %19, i32 0, i32 1 ; [#uses=1]
+ store %struct.btPersistentManifold* %17, %struct.btPersistentManifold** %20, align 4
+ %21 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %22 = load %struct.btActionInterface** %21, align 4 ; [#uses=2]
+ %23 = getelementptr inbounds %struct.btActionInterface* %22, i32 0, i32 0 ; [#uses=1]
+ %24 = load i32 (...)*** %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i32 (...)** %24, i32 2 ; [#uses=1]
+ %26 = load i32 (...)** %25, align 4 ; [#uses=1]
+ %27 = load %struct.btPersistentManifold** %4, align 4 ; [#uses=1]
+ %28 = bitcast i32 (...)* %26 to %struct.btCollisionAlgorithm* (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btPersistentManifold*)* ; [#uses=1]
+ %29 = tail call %struct.btCollisionAlgorithm* %28(%struct.btActionInterface* %22, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btPersistentManifold* %27) ; [#uses=4]
+ %30 = load %struct.btManifoldResult** %18, align 4 ; [#uses=2]
+ %31 = getelementptr inbounds %struct.btManifoldResult* %30, i32 0, i32 0, i32 0 ; [#uses=1]
+ %32 = load i32 (...)*** %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32 (...)** %32, i32 2 ; [#uses=1]
+ %34 = load i32 (...)** %33, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ %36 = load i32* %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 6 ; [#uses=1]
+ %38 = load i32* %37, align 4 ; [#uses=1]
+ %39 = bitcast i32 (...)* %34 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ tail call void %39(%struct.btManifoldResult* %30, i32 %38, i32 %36)
+ %40 = load %struct.btManifoldResult** %18, align 4 ; [#uses=2]
+ %41 = getelementptr inbounds %struct.btManifoldResult* %40, i32 0, i32 0, i32 0 ; [#uses=1]
+ %42 = load i32 (...)*** %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds i32 (...)** %42, i32 3 ; [#uses=1]
+ %44 = load i32 (...)** %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 7 ; [#uses=1]
+ %46 = load i32* %45, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 8 ; [#uses=1]
+ %48 = load i32* %47, align 4 ; [#uses=1]
+ %49 = bitcast i32 (...)* %44 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ tail call void %49(%struct.btManifoldResult* %40, i32 %48, i32 %46)
+ %50 = getelementptr inbounds %struct.btCollisionAlgorithm* %29, i32 0, i32 0 ; [#uses=2]
+ %51 = load i32 (...)*** %50, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds i32 (...)** %51, i32 2 ; [#uses=1]
+ %53 = load i32 (...)** %52, align 4 ; [#uses=1]
+ %54 = load %struct.btManifoldResult** %18, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ %56 = load %struct.btDispatcherInfo** %55, align 4 ; [#uses=1]
+ %57 = bitcast i32 (...)* %53 to void (%struct.btCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* ; [#uses=1]
+ tail call void %57(%struct.btCollisionAlgorithm* %29, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btDispatcherInfo* %56, %struct.btManifoldResult* %54)
+ %58 = load i32 (...)*** %50, align 4 ; [#uses=1]
+ %59 = load i32 (...)** %58, align 4 ; [#uses=1]
+ %60 = bitcast i32 (...)* %59 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ tail call void %60(%struct.btCollisionAlgorithm* %29)
+ %61 = load %struct.btActionInterface** %21, align 4 ; [#uses=2]
+ %62 = getelementptr inbounds %struct.btActionInterface* %61, i32 0, i32 0 ; [#uses=1]
+ %63 = load i32 (...)*** %62, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds i32 (...)** %63, i32 13 ; [#uses=1]
+ %65 = load i32 (...)** %64, align 4 ; [#uses=1]
+ %66 = bitcast i32 (...)* %65 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %67 = bitcast %struct.btCollisionAlgorithm* %29 to i8* ; [#uses=1]
+ tail call void %66(%struct.btActionInterface* %61, i8* %67)
+ store %struct.btCollisionShape* %1, %struct.btCollisionShape** %0, align 4
+ store %struct.btCollisionShape* %3, %struct.btCollisionShape** %2, align 4
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN27btGImpactCollisionAlgorithm26convex_vs_convex_collisionEP17btCollisionObjectS1_P16btCollisionShapeS3_(%struct.btGImpactCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btCollisionShape* %shape0, %struct.btCollisionShape* %shape1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 9 ; [#uses=3]
+ %1 = load %struct.btCollisionShape** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 9 ; [#uses=3]
+ %3 = load %struct.btCollisionShape** %2, align 4 ; [#uses=1]
+ store %struct.btCollisionShape* %shape0, %struct.btCollisionShape** %0, align 4
+ store %struct.btCollisionShape* %shape1, %struct.btCollisionShape** %2, align 4
+ %4 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=4]
+ %5 = load %struct.btManifoldResult** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btManifoldResult* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 2 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 6 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %9 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ tail call void %14(%struct.btManifoldResult* %5, i32 %13, i32 %11)
+ %15 = load %struct.btManifoldResult** %4, align 4 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btManifoldResult* %15, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 3 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 7 ; [#uses=1]
+ %21 = load i32* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 8 ; [#uses=1]
+ %23 = load i32* %22, align 4 ; [#uses=1]
+ %24 = bitcast i32 (...)* %19 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ tail call void %24(%struct.btManifoldResult* %15, i32 %23, i32 %21)
+ %25 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=2]
+ %26 = load %struct.btCollisionAlgorithm** %25, align 4 ; [#uses=2]
+ %27 = icmp eq %struct.btCollisionAlgorithm* %26, null ; [#uses=1]
+ br i1 %27, label %bb.i, label %_ZN27btGImpactCollisionAlgorithm20checkConvexAlgorithmEP17btCollisionObjectS1_.exit
+
+bb.i: ; preds = %entry
+ %28 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=3]
+ %29 = load %struct.btPersistentManifold** %28, align 4 ; [#uses=2]
+ %30 = icmp eq %struct.btPersistentManifold* %29, null ; [#uses=1]
+ br i1 %30, label %bb.i.i.i, label %_ZN27btGImpactCollisionAlgorithm12newAlgorithmEP17btCollisionObjectS1_.exit.i
+
+bb.i.i.i: ; preds = %bb.i
+ %31 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %32 = load %struct.btActionInterface** %31, align 4 ; [#uses=2]
+ %33 = getelementptr inbounds %struct.btActionInterface* %32, i32 0, i32 0 ; [#uses=1]
+ %34 = load i32 (...)*** %33, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds i32 (...)** %34, i32 3 ; [#uses=1]
+ %36 = load i32 (...)** %35, align 4 ; [#uses=1]
+ %37 = bitcast i32 (...)* %36 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %38 = bitcast %struct.btCollisionObject* %body0 to i8* ; [#uses=1]
+ %39 = bitcast %struct.btCollisionObject* %body1 to i8* ; [#uses=1]
+ %40 = tail call %struct.btPersistentManifold* %37(%struct.btActionInterface* %32, i8* %38, i8* %39) ; [#uses=2]
+ store %struct.btPersistentManifold* %40, %struct.btPersistentManifold** %28, align 4
+ br label %_ZN27btGImpactCollisionAlgorithm12newAlgorithmEP17btCollisionObjectS1_.exit.i
+
+_ZN27btGImpactCollisionAlgorithm12newAlgorithmEP17btCollisionObjectS1_.exit.i: ; preds = %bb.i.i.i, %bb.i
+ %41 = phi %struct.btPersistentManifold* [ %40, %bb.i.i.i ], [ %29, %bb.i ] ; [#uses=1]
+ %42 = load %struct.btManifoldResult** %4, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btManifoldResult* %42, i32 0, i32 1 ; [#uses=1]
+ store %struct.btPersistentManifold* %41, %struct.btPersistentManifold** %43, align 4
+ %44 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %45 = load %struct.btActionInterface** %44, align 4 ; [#uses=2]
+ %46 = getelementptr inbounds %struct.btActionInterface* %45, i32 0, i32 0 ; [#uses=1]
+ %47 = load i32 (...)*** %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds i32 (...)** %47, i32 2 ; [#uses=1]
+ %49 = load i32 (...)** %48, align 4 ; [#uses=1]
+ %50 = load %struct.btPersistentManifold** %28, align 4 ; [#uses=1]
+ %51 = bitcast i32 (...)* %49 to %struct.btCollisionAlgorithm* (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btPersistentManifold*)* ; [#uses=1]
+ %52 = tail call %struct.btCollisionAlgorithm* %51(%struct.btActionInterface* %45, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btPersistentManifold* %50) ; [#uses=2]
+ store %struct.btCollisionAlgorithm* %52, %struct.btCollisionAlgorithm** %25, align 4
+ br label %_ZN27btGImpactCollisionAlgorithm20checkConvexAlgorithmEP17btCollisionObjectS1_.exit
+
+_ZN27btGImpactCollisionAlgorithm20checkConvexAlgorithmEP17btCollisionObjectS1_.exit: ; preds = %_ZN27btGImpactCollisionAlgorithm12newAlgorithmEP17btCollisionObjectS1_.exit.i, %entry
+ %53 = phi %struct.btCollisionAlgorithm* [ %26, %entry ], [ %52, %_ZN27btGImpactCollisionAlgorithm12newAlgorithmEP17btCollisionObjectS1_.exit.i ] ; [#uses=2]
+ %54 = getelementptr inbounds %struct.btCollisionAlgorithm* %53, i32 0, i32 0 ; [#uses=1]
+ %55 = load i32 (...)*** %54, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds i32 (...)** %55, i32 2 ; [#uses=1]
+ %57 = load i32 (...)** %56, align 4 ; [#uses=1]
+ %58 = load %struct.btManifoldResult** %4, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ %60 = load %struct.btDispatcherInfo** %59, align 4 ; [#uses=1]
+ %61 = bitcast i32 (...)* %57 to void (%struct.btCollisionAlgorithm*, %struct.btCollisionObject*, %struct.btCollisionObject*, %struct.btDispatcherInfo*, %struct.btManifoldResult*)* ; [#uses=1]
+ tail call void %61(%struct.btCollisionAlgorithm* %53, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btDispatcherInfo* %60, %struct.btManifoldResult* %58)
+ store %struct.btCollisionShape* %1, %struct.btCollisionShape** %0, align 4
+ store %struct.btCollisionShape* %3, %struct.btCollisionShape** %2, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN27btGImpactCollisionAlgorithm37gimpacttrimeshpart_vs_plane_collisionEP17btCollisionObjectS1_P22btGImpactMeshShapePartP18btStaticPlaneShapeb(%struct.btGImpactCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactMeshShapePart* %shape0, %struct.btStaticPlaneShape* %shape1, i8 zeroext %swapped) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %orgtrans0 = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %plane = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %tribox = alloca %struct.GIM_AABB, align 8 ; [#uses=8]
+ %vertex = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %1 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %1, align 8
+ %4 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 8
+ %10 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 8
+ %16 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 8
+ %22 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 8
+ %28 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %29 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %32 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 8
+ %34 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %38 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 8
+ %40 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %41 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %44 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %43, align 8
+ %46 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %74 = getelementptr inbounds %struct.btStaticPlaneShape* %shape1, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=4]
+ %76 = fmul float %50, %75 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btStaticPlaneShape* %shape1, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=4]
+ %79 = fmul float %52, %78 ; [#uses=1]
+ %80 = fadd float %76, %79 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btStaticPlaneShape* %shape1, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=4]
+ %83 = fmul float %54, %82 ; [#uses=1]
+ %84 = fadd float %80, %83 ; [#uses=1]
+ store float %84, float* %73, align 8
+ %85 = fmul float %56, %75 ; [#uses=1]
+ %86 = fmul float %58, %78 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=1]
+ %88 = fmul float %60, %82 ; [#uses=1]
+ %89 = fadd float %87, %88 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %89, float* %90, align 4
+ %91 = fmul float %62, %75 ; [#uses=1]
+ %92 = fmul float %64, %78 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = fmul float %66, %82 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %95, float* %96, align 8
+ %97 = fmul float %68, %75 ; [#uses=1]
+ %98 = fmul float %70, %78 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=1]
+ %100 = fmul float %72, %82 ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btStaticPlaneShape* %shape1, i32 0, i32 4 ; [#uses=1]
+ %103 = load float* %102, align 4 ; [#uses=1]
+ %104 = fadd float %101, %103 ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=3]
+ store float %104, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %107 = load i32 (...)*** %106, align 4 ; [#uses=1]
+ %108 = getelementptr inbounds i32 (...)** %107, i32 2 ; [#uses=1]
+ %109 = load i32 (...)** %108, align 4 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape0, i32 0, i32 0 ; [#uses=1]
+ %111 = bitcast i32 (...)* %109 to void (%struct.btGImpactShapeInterface*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %112 = getelementptr inbounds %struct.GIM_AABB* %tribox, i32 0, i32 0 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.GIM_AABB* %tribox, i32 0, i32 1 ; [#uses=1]
+ call void %111(%struct.btGImpactShapeInterface* %110, %struct.btTransform* %orgtrans0, %struct.btQuadWord* %112, %struct.btQuadWord* %113)
+ %114 = getelementptr inbounds %struct.btStaticPlaneShape* %shape1, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %115 = load i32 (...)*** %114, align 4 ; [#uses=1]
+ %116 = getelementptr inbounds i32 (...)** %115, i32 11 ; [#uses=1]
+ %117 = load i32 (...)** %116, align 4 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btStaticPlaneShape* %shape1, i32 0, i32 0 ; [#uses=2]
+ %119 = bitcast i32 (...)* %117 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %120 = call float %119(%struct.btConcaveShape* %118) ; [#uses=6]
+ %121 = getelementptr inbounds %struct.GIM_AABB* %tribox, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %122 = load float* %121, align 8 ; [#uses=1]
+ %123 = fsub float %122, %120 ; [#uses=2]
+ store float %123, float* %121, align 8
+ %124 = getelementptr inbounds %struct.GIM_AABB* %tribox, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %125 = load float* %124, align 4 ; [#uses=1]
+ %126 = fsub float %125, %120 ; [#uses=2]
+ store float %126, float* %124, align 4
+ %127 = getelementptr inbounds %struct.GIM_AABB* %tribox, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %128 = load float* %127, align 8 ; [#uses=1]
+ %129 = fsub float %128, %120 ; [#uses=2]
+ store float %129, float* %127, align 8
+ %130 = getelementptr inbounds %struct.GIM_AABB* %tribox, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %131 = load float* %130, align 8 ; [#uses=1]
+ %132 = fadd float %131, %120 ; [#uses=3]
+ store float %132, float* %130, align 8
+ %133 = getelementptr inbounds %struct.GIM_AABB* %tribox, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %134 = load float* %133, align 4 ; [#uses=1]
+ %135 = fadd float %134, %120 ; [#uses=3]
+ store float %135, float* %133, align 4
+ %136 = getelementptr inbounds %struct.GIM_AABB* %tribox, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %137 = load float* %136, align 8 ; [#uses=1]
+ %138 = fadd float %137, %120 ; [#uses=3]
+ store float %138, float* %136, align 8
+ %139 = fadd float %138, %129 ; [#uses=1]
+ %140 = fadd float %135, %126 ; [#uses=1]
+ %141 = fadd float %132, %123 ; [#uses=1]
+ %142 = fmul float %139, 5.000000e-01 ; [#uses=2]
+ %143 = fmul float %140, 5.000000e-01 ; [#uses=2]
+ %144 = fmul float %141, 5.000000e-01 ; [#uses=2]
+ %145 = fsub float %138, %142 ; [#uses=1]
+ %146 = fsub float %135, %143 ; [#uses=1]
+ %147 = fsub float %132, %144 ; [#uses=1]
+ %148 = load float* %73, align 8 ; [#uses=2]
+ %149 = fmul float %148, %144 ; [#uses=1]
+ %150 = load float* %90, align 4 ; [#uses=2]
+ %151 = fmul float %150, %143 ; [#uses=1]
+ %152 = fadd float %149, %151 ; [#uses=1]
+ %153 = load float* %96, align 8 ; [#uses=2]
+ %154 = fmul float %153, %142 ; [#uses=1]
+ %155 = fadd float %152, %154 ; [#uses=2]
+ %156 = call float @fabsf(float %153) nounwind readnone ; [#uses=1]
+ %157 = call float @fabsf(float %150) nounwind readnone ; [#uses=1]
+ %158 = call float @fabsf(float %148) nounwind readnone ; [#uses=1]
+ %159 = fmul float %147, %158 ; [#uses=1]
+ %160 = fmul float %146, %157 ; [#uses=1]
+ %161 = fadd float %159, %160 ; [#uses=1]
+ %162 = fmul float %145, %156 ; [#uses=1]
+ %163 = fadd float %161, %162 ; [#uses=2]
+ %164 = fadd float %155, %163 ; [#uses=1]
+ %165 = load float* %105, align 4 ; [#uses=2]
+ %166 = fadd float %164, 0x3EB0C6F7A0000000 ; [#uses=1]
+ %167 = fcmp ogt float %165, %166 ; [#uses=1]
+ br i1 %167, label %return, label %_ZNK6btAABB14plane_classifyERK9btVector4.exit
+
+_ZNK6btAABB14plane_classifyERK9btVector4.exit: ; preds = %entry
+ %168 = fsub float %155, %163 ; [#uses=1]
+ %169 = fadd float %165, 0x3EB0C6F7A0000000 ; [#uses=1]
+ %not. = fcmp ult float %169, %168 ; [#uses=1]
+ br i1 %not., label %return, label %bb
+
+bb: ; preds = %_ZNK6btAABB14plane_classifyERK9btVector4.exit
+ %170 = load i32 (...)*** %106, align 4 ; [#uses=1]
+ %171 = getelementptr inbounds i32 (...)** %170, i32 27 ; [#uses=1]
+ %172 = load i32 (...)** %171, align 4 ; [#uses=1]
+ %173 = bitcast i32 (...)* %172 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ call void %173(%struct.btGImpactMeshShapePart* %shape0)
+ %174 = load i32 (...)*** %106, align 4 ; [#uses=1]
+ %175 = getelementptr inbounds i32 (...)** %174, i32 11 ; [#uses=1]
+ %176 = load i32 (...)** %175, align 4 ; [#uses=1]
+ %177 = bitcast i32 (...)* %176 to float (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ %178 = call float %177(%struct.btGImpactMeshShapePart* %shape0) ; [#uses=1]
+ %179 = load i32 (...)*** %114, align 4 ; [#uses=1]
+ %180 = getelementptr inbounds i32 (...)** %179, i32 11 ; [#uses=1]
+ %181 = load i32 (...)** %180, align 4 ; [#uses=1]
+ %182 = bitcast i32 (...)* %181 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %183 = call float %182(%struct.btConcaveShape* %118) ; [#uses=1]
+ %184 = fadd float %178, %183 ; [#uses=1]
+ %185 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape0, i32 0, i32 1, i32 7 ; [#uses=1]
+ %186 = load i32* %185, align 4 ; [#uses=3]
+ %187 = icmp eq i32 %186, 0 ; [#uses=1]
+ br i1 %187, label %bb8, label %bb.nph
+
+bb.nph: ; preds = %bb
+ %188 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape0, i32 0, i32 1, i32 8 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape0, i32 0, i32 1, i32 6 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape0, i32 0, i32 1, i32 9 ; [#uses=1]
+ %191 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 0 ; [#uses=3]
+ %192 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape0, i32 0, i32 1, i32 3, i32 0, i32 0 ; [#uses=2]
+ %193 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape0, i32 0, i32 1, i32 3, i32 0, i32 1 ; [#uses=2]
+ %194 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 1 ; [#uses=3]
+ %195 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape0, i32 0, i32 1, i32 3, i32 0, i32 2 ; [#uses=2]
+ %196 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 2 ; [#uses=1]
+ %197 = getelementptr inbounds %struct.btQuadWord* %vertex, i32 0, i32 0, i32 3 ; [#uses=1]
+ %toBool3 = icmp eq i8 %swapped, 0 ; [#uses=1]
+ %198 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0 ; [#uses=1]
+ %199 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=8]
+ %200 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=2]
+ %201 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 6 ; [#uses=2]
+ %202 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 7 ; [#uses=2]
+ %203 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 8 ; [#uses=2]
+ %204 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=4]
+ %205 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %206 = bitcast %struct.btCollisionObject* %body0 to i8* ; [#uses=2]
+ %207 = bitcast %struct.btCollisionObject* %body1 to i8* ; [#uses=2]
+ %208 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %209 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %210 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %211 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %tmp19 = add i32 %186, -1 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb6.backedge, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb6.backedge ] ; [#uses=2]
+ %tmp20 = sub i32 %tmp19, %indvar ; [#uses=1]
+ %212 = load i32* %188, align 4 ; [#uses=1]
+ %213 = icmp eq i32 %212, 1 ; [#uses=1]
+ %214 = load i8** %189, align 4 ; [#uses=5]
+ %215 = load i32* %190, align 4 ; [#uses=1]
+ %216 = mul nsw i32 %215, %tmp20 ; [#uses=5]
+ %217 = getelementptr inbounds i8* %214, i32 %216 ; [#uses=2]
+ br i1 %213, label %bb.i.i12, label %bb1.i.i
+
+bb.i.i12: ; preds = %bb1
+ %218 = bitcast i8* %217 to double* ; [#uses=1]
+ %219 = load double* %218, align 4 ; [#uses=1]
+ %220 = load float* %192, align 4 ; [#uses=1]
+ %221 = fpext float %220 to double ; [#uses=1]
+ %222 = fmul double %219, %221 ; [#uses=1]
+ %223 = fptrunc double %222 to float ; [#uses=2]
+ store float %223, float* %191, align 8
+ %.sum4.i.i = add i32 %216, 8 ; [#uses=1]
+ %224 = getelementptr inbounds i8* %214, i32 %.sum4.i.i ; [#uses=1]
+ %225 = bitcast i8* %224 to double* ; [#uses=1]
+ %226 = load double* %225, align 4 ; [#uses=1]
+ %227 = load float* %193, align 4 ; [#uses=1]
+ %228 = fpext float %227 to double ; [#uses=1]
+ %229 = fmul double %226, %228 ; [#uses=1]
+ %230 = fptrunc double %229 to float ; [#uses=2]
+ store float %230, float* %194, align 4
+ %.sum5.i.i = add i32 %216, 16 ; [#uses=1]
+ %231 = getelementptr inbounds i8* %214, i32 %.sum5.i.i ; [#uses=1]
+ %232 = bitcast i8* %231 to double* ; [#uses=1]
+ %233 = load double* %232, align 4 ; [#uses=1]
+ %234 = load float* %195, align 4 ; [#uses=1]
+ %235 = fpext float %234 to double ; [#uses=1]
+ %236 = fmul double %233, %235 ; [#uses=1]
+ %237 = fptrunc double %236 to float ; [#uses=1]
+ br label %_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit
+
+bb1.i.i: ; preds = %bb1
+ %238 = bitcast i8* %217 to float* ; [#uses=1]
+ %239 = load float* %238, align 4 ; [#uses=1]
+ %240 = load float* %192, align 4 ; [#uses=1]
+ %241 = fmul float %239, %240 ; [#uses=2]
+ store float %241, float* %191, align 8
+ %.sum.i.i = add i32 %216, 4 ; [#uses=1]
+ %242 = getelementptr inbounds i8* %214, i32 %.sum.i.i ; [#uses=1]
+ %243 = bitcast i8* %242 to float* ; [#uses=1]
+ %244 = load float* %243, align 4 ; [#uses=1]
+ %245 = load float* %193, align 4 ; [#uses=1]
+ %246 = fmul float %244, %245 ; [#uses=2]
+ store float %246, float* %194, align 4
+ %.sum3.i.i = add i32 %216, 8 ; [#uses=1]
+ %247 = getelementptr inbounds i8* %214, i32 %.sum3.i.i ; [#uses=1]
+ %248 = bitcast i8* %247 to float* ; [#uses=1]
+ %249 = load float* %248, align 4 ; [#uses=1]
+ %250 = load float* %195, align 4 ; [#uses=1]
+ %251 = fmul float %249, %250 ; [#uses=1]
+ br label %_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit
+
+_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit: ; preds = %bb1.i.i, %bb.i.i12
+ %252 = phi float [ %251, %bb1.i.i ], [ %237, %bb.i.i12 ] ; [#uses=3]
+ %253 = phi float [ %246, %bb1.i.i ], [ %230, %bb.i.i12 ] ; [#uses=3]
+ %254 = phi float [ %241, %bb1.i.i ], [ %223, %bb.i.i12 ] ; [#uses=3]
+ %255 = load float* %25, align 8 ; [#uses=1]
+ %256 = fmul float %255, %254 ; [#uses=1]
+ %257 = load float* %28, align 4 ; [#uses=1]
+ %258 = fmul float %257, %253 ; [#uses=1]
+ %259 = fadd float %256, %258 ; [#uses=1]
+ %260 = load float* %31, align 8 ; [#uses=1]
+ %261 = fmul float %260, %252 ; [#uses=1]
+ %262 = fadd float %259, %261 ; [#uses=1]
+ %263 = load float* %43, align 8 ; [#uses=1]
+ %264 = fadd float %262, %263 ; [#uses=2]
+ %265 = load float* %13, align 8 ; [#uses=1]
+ %266 = fmul float %265, %254 ; [#uses=1]
+ %267 = load float* %16, align 4 ; [#uses=1]
+ %268 = fmul float %267, %253 ; [#uses=1]
+ %269 = fadd float %266, %268 ; [#uses=1]
+ %270 = load float* %19, align 8 ; [#uses=1]
+ %271 = fmul float %270, %252 ; [#uses=1]
+ %272 = fadd float %269, %271 ; [#uses=1]
+ %273 = load float* %40, align 4 ; [#uses=1]
+ %274 = fadd float %272, %273 ; [#uses=2]
+ %275 = load float* %1, align 8 ; [#uses=1]
+ %276 = fmul float %275, %254 ; [#uses=1]
+ %277 = load float* %4, align 4 ; [#uses=1]
+ %278 = fmul float %277, %253 ; [#uses=1]
+ %279 = fadd float %276, %278 ; [#uses=1]
+ %280 = load float* %7, align 8 ; [#uses=1]
+ %281 = fmul float %280, %252 ; [#uses=1]
+ %282 = fadd float %279, %281 ; [#uses=1]
+ %283 = load float* %37, align 8 ; [#uses=1]
+ %284 = fadd float %282, %283 ; [#uses=2]
+ store float %284, float* %191, align 8
+ store float %274, float* %194, align 4
+ store float %264, float* %196, align 8
+ store float 0.000000e+00, float* %197, align 4
+ %285 = load float* %73, align 8 ; [#uses=2]
+ %286 = fmul float %284, %285 ; [#uses=1]
+ %287 = load float* %90, align 4 ; [#uses=2]
+ %288 = fmul float %274, %287 ; [#uses=1]
+ %289 = fadd float %286, %288 ; [#uses=1]
+ %290 = load float* %96, align 8 ; [#uses=2]
+ %291 = fmul float %264, %290 ; [#uses=1]
+ %292 = fadd float %289, %291 ; [#uses=1]
+ %293 = load float* %105, align 4 ; [#uses=1]
+ %294 = fsub float %292, %293 ; [#uses=1]
+ %295 = fsub float %294, %184 ; [#uses=3]
+ %296 = fcmp olt float %295, 0.000000e+00 ; [#uses=1]
+ br i1 %296, label %bb2, label %bb6.backedge
+
+bb6.backedge: ; preds = %_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit, %_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit11, %_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %186 ; [#uses=1]
+ br i1 %exitcond, label %bb8, label %bb1
+
+bb2: ; preds = %_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit
+ br i1 %toBool3, label %bb5, label %bb4
+
+bb4: ; preds = %bb2
+ %297 = fsub float -0.000000e+00, %290 ; [#uses=1]
+ %298 = fsub float -0.000000e+00, %287 ; [#uses=1]
+ %299 = fsub float -0.000000e+00, %285 ; [#uses=1]
+ store float %299, float* %208, align 8
+ store float %298, float* %209, align 4
+ store float %297, float* %210, align 8
+ store float 0.000000e+00, float* %211, align 4
+ %300 = load %struct.btManifoldResult** %199, align 4 ; [#uses=2]
+ %301 = getelementptr inbounds %struct.btManifoldResult* %300, i32 0, i32 0, i32 0 ; [#uses=1]
+ %302 = load i32 (...)*** %301, align 4 ; [#uses=1]
+ %303 = getelementptr inbounds i32 (...)** %302, i32 2 ; [#uses=1]
+ %304 = load i32 (...)** %303, align 4 ; [#uses=1]
+ %305 = load i32* %200, align 4 ; [#uses=1]
+ %306 = load i32* %201, align 4 ; [#uses=1]
+ %307 = bitcast i32 (...)* %304 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ call void %307(%struct.btManifoldResult* %300, i32 %306, i32 %305)
+ %308 = load %struct.btManifoldResult** %199, align 4 ; [#uses=2]
+ %309 = getelementptr inbounds %struct.btManifoldResult* %308, i32 0, i32 0, i32 0 ; [#uses=1]
+ %310 = load i32 (...)*** %309, align 4 ; [#uses=1]
+ %311 = getelementptr inbounds i32 (...)** %310, i32 3 ; [#uses=1]
+ %312 = load i32 (...)** %311, align 4 ; [#uses=1]
+ %313 = load i32* %202, align 4 ; [#uses=1]
+ %314 = load i32* %203, align 4 ; [#uses=1]
+ %315 = bitcast i32 (...)* %312 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ call void %315(%struct.btManifoldResult* %308, i32 %314, i32 %313)
+ %316 = load %struct.btPersistentManifold** %204, align 4 ; [#uses=2]
+ %317 = icmp eq %struct.btPersistentManifold* %316, null ; [#uses=1]
+ br i1 %317, label %bb.i.i10, label %_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit11
+
+bb.i.i10: ; preds = %bb4
+ %318 = load %struct.btActionInterface** %205, align 4 ; [#uses=2]
+ %319 = getelementptr inbounds %struct.btActionInterface* %318, i32 0, i32 0 ; [#uses=1]
+ %320 = load i32 (...)*** %319, align 4 ; [#uses=1]
+ %321 = getelementptr inbounds i32 (...)** %320, i32 3 ; [#uses=1]
+ %322 = load i32 (...)** %321, align 4 ; [#uses=1]
+ %323 = bitcast i32 (...)* %322 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %324 = call %struct.btPersistentManifold* %323(%struct.btActionInterface* %318, i8* %207, i8* %206) ; [#uses=2]
+ store %struct.btPersistentManifold* %324, %struct.btPersistentManifold** %204, align 4
+ br label %_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit11
+
+_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit11: ; preds = %bb.i.i10, %bb4
+ %325 = phi %struct.btPersistentManifold* [ %324, %bb.i.i10 ], [ %316, %bb4 ] ; [#uses=1]
+ %326 = load %struct.btManifoldResult** %199, align 4 ; [#uses=1]
+ %327 = getelementptr inbounds %struct.btManifoldResult* %326, i32 0, i32 1 ; [#uses=1]
+ store %struct.btPersistentManifold* %325, %struct.btPersistentManifold** %327, align 4
+ %328 = load %struct.btManifoldResult** %199, align 4 ; [#uses=2]
+ %329 = getelementptr inbounds %struct.btManifoldResult* %328, i32 0, i32 0, i32 0 ; [#uses=1]
+ %330 = load i32 (...)*** %329, align 4 ; [#uses=1]
+ %331 = getelementptr inbounds i32 (...)** %330, i32 4 ; [#uses=1]
+ %332 = load i32 (...)** %331, align 4 ; [#uses=1]
+ %333 = bitcast i32 (...)* %332 to void (%struct.btManifoldResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %333(%struct.btManifoldResult* %328, %struct.btQuadWord* %0, %struct.btQuadWord* %vertex, float %295)
+ br label %bb6.backedge
+
+bb5: ; preds = %bb2
+ %334 = load %struct.btManifoldResult** %199, align 4 ; [#uses=2]
+ %335 = getelementptr inbounds %struct.btManifoldResult* %334, i32 0, i32 0, i32 0 ; [#uses=1]
+ %336 = load i32 (...)*** %335, align 4 ; [#uses=1]
+ %337 = getelementptr inbounds i32 (...)** %336, i32 2 ; [#uses=1]
+ %338 = load i32 (...)** %337, align 4 ; [#uses=1]
+ %339 = load i32* %200, align 4 ; [#uses=1]
+ %340 = load i32* %201, align 4 ; [#uses=1]
+ %341 = bitcast i32 (...)* %338 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ call void %341(%struct.btManifoldResult* %334, i32 %340, i32 %339)
+ %342 = load %struct.btManifoldResult** %199, align 4 ; [#uses=2]
+ %343 = getelementptr inbounds %struct.btManifoldResult* %342, i32 0, i32 0, i32 0 ; [#uses=1]
+ %344 = load i32 (...)*** %343, align 4 ; [#uses=1]
+ %345 = getelementptr inbounds i32 (...)** %344, i32 3 ; [#uses=1]
+ %346 = load i32 (...)** %345, align 4 ; [#uses=1]
+ %347 = load i32* %202, align 4 ; [#uses=1]
+ %348 = load i32* %203, align 4 ; [#uses=1]
+ %349 = bitcast i32 (...)* %346 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ call void %349(%struct.btManifoldResult* %342, i32 %348, i32 %347)
+ %350 = load %struct.btPersistentManifold** %204, align 4 ; [#uses=2]
+ %351 = icmp eq %struct.btPersistentManifold* %350, null ; [#uses=1]
+ br i1 %351, label %bb.i.i, label %_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit
+
+bb.i.i: ; preds = %bb5
+ %352 = load %struct.btActionInterface** %205, align 4 ; [#uses=2]
+ %353 = getelementptr inbounds %struct.btActionInterface* %352, i32 0, i32 0 ; [#uses=1]
+ %354 = load i32 (...)*** %353, align 4 ; [#uses=1]
+ %355 = getelementptr inbounds i32 (...)** %354, i32 3 ; [#uses=1]
+ %356 = load i32 (...)** %355, align 4 ; [#uses=1]
+ %357 = bitcast i32 (...)* %356 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %358 = call %struct.btPersistentManifold* %357(%struct.btActionInterface* %352, i8* %206, i8* %207) ; [#uses=2]
+ store %struct.btPersistentManifold* %358, %struct.btPersistentManifold** %204, align 4
+ br label %_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit
+
+_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit: ; preds = %bb.i.i, %bb5
+ %359 = phi %struct.btPersistentManifold* [ %358, %bb.i.i ], [ %350, %bb5 ] ; [#uses=1]
+ %360 = load %struct.btManifoldResult** %199, align 4 ; [#uses=1]
+ %361 = getelementptr inbounds %struct.btManifoldResult* %360, i32 0, i32 1 ; [#uses=1]
+ store %struct.btPersistentManifold* %359, %struct.btPersistentManifold** %361, align 4
+ %362 = load %struct.btManifoldResult** %199, align 4 ; [#uses=2]
+ %363 = getelementptr inbounds %struct.btManifoldResult* %362, i32 0, i32 0, i32 0 ; [#uses=1]
+ %364 = load i32 (...)*** %363, align 4 ; [#uses=1]
+ %365 = getelementptr inbounds i32 (...)** %364, i32 4 ; [#uses=1]
+ %366 = load i32 (...)** %365, align 4 ; [#uses=1]
+ %367 = bitcast i32 (...)* %366 to void (%struct.btManifoldResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %367(%struct.btManifoldResult* %362, %struct.btQuadWord* %198, %struct.btQuadWord* %vertex, float %295)
+ br label %bb6.backedge
+
+bb8: ; preds = %bb6.backedge, %bb
+ %368 = load i32 (...)*** %106, align 4 ; [#uses=1]
+ %369 = getelementptr inbounds i32 (...)** %368, i32 28 ; [#uses=1]
+ %370 = load i32 (...)** %369, align 4 ; [#uses=1]
+ %371 = bitcast i32 (...)* %370 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ call void %371(%struct.btGImpactMeshShapePart* %shape0)
+ ret void
+
+return: ; preds = %_ZNK6btAABB14plane_classifyERK9btVector4.exit, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN25btGImpactTriangleCallbackD1Ev(%struct.btGImpactTriangleCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV25btGImpactTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN25btGImpactTriangleCallbackD0Ev(%struct.btGImpactTriangleCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactTriangleCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV25btGImpactTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactTriangleCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct.btGImpactTriangleCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN25btGImpactTriangleCallback15processTriangleEP9btVector3ii(%struct.btGImpactTriangleCallback* nocapture %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %tri1 = alloca %struct.btTriangleShapeEx, align 8 ; [#uses=19]
+ %0 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %0)
+ %1 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 3 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 1, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 3 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV17btTriangleShapeEx, i32 0, i32 2), i32 (...)*** %1, align 8
+ %39 = getelementptr inbounds %struct.btGImpactTriangleCallback* %this, i32 0, i32 6 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %40, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btGImpactTriangleCallback* %this, i32 0, i32 5 ; [#uses=2]
+ %43 = load i8* %42, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %43, 0 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btGImpactTriangleCallback* %this, i32 0, i32 1 ; [#uses=4]
+ %45 = load %struct.btGImpactCollisionAlgorithm** %44, align 4 ; [#uses=2]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %46 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %45, i32 0, i32 6 ; [#uses=1]
+ store i32 %partId, i32* %46, align 4
+ %47 = load %struct.btGImpactCollisionAlgorithm** %44, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %47, i32 0, i32 5 ; [#uses=1]
+ store i32 %triangleIndex, i32* %48, align 4
+ br label %bb2
+
+bb1: ; preds = %entry
+ %49 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %45, i32 0, i32 8 ; [#uses=1]
+ store i32 %partId, i32* %49, align 4
+ %50 = load %struct.btGImpactCollisionAlgorithm** %44, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %50, i32 0, i32 7 ; [#uses=1]
+ store i32 %triangleIndex, i32* %51, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %52 = load i8* %42, align 4 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btGImpactTriangleCallback* %this, i32 0, i32 4 ; [#uses=1]
+ %54 = load %struct.btGImpactShapeInterface** %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btGImpactTriangleCallback* %this, i32 0, i32 3 ; [#uses=1]
+ %56 = load %struct.btCollisionObject** %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btGImpactTriangleCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %58 = load %struct.btCollisionObject** %57, align 4 ; [#uses=1]
+ %59 = load %struct.btGImpactCollisionAlgorithm** %44, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN27btGImpactCollisionAlgorithm16gimpact_vs_shapeEP17btCollisionObjectS1_P23btGImpactShapeInterfaceP16btCollisionShapeb(%struct.btGImpactCollisionAlgorithm* %59, %struct.btCollisionObject* %58, %struct.btCollisionObject* %56, %struct.btGImpactShapeInterface* %54, %struct.btCollisionShape* %60, i8 zeroext %52)
+ to label %bb6 unwind label %lpad
+
+invcont4: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb6: ; preds = %bb2
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 8
+ %61 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %61)
+ ret void
+
+lpad: ; preds = %bb2
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 8
+ %62 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %62)
+ to label %invcont4 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define float @_ZN27btGImpactCollisionAlgorithm21calculateTimeOfImpactEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btGImpactCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* nocapture %body0, %struct.btCollisionObject* nocapture %body1, %struct.btDispatcherInfo* nocapture %dispatchInfo, %struct.btManifoldResult* nocapture %resultOut) nounwind readnone align 2 {
+entry:
+ ret float 1.000000e+00
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN27btGImpactCollisionAlgorithm10CreateFuncD1Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN27btGImpactCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN27btGImpactCollisionAlgorithm10CreateFuncD0Ev(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN27btGImpactCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionAlgorithm* @_ZN27btGImpactCollisionAlgorithm10CreateFunc24CreateCollisionAlgorithmER36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* nocapture %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionAlgorithmConstructionInfo* %ci, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 12 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i8* (%struct.btActionInterface*, i32)* ; [#uses=1]
+ %7 = tail call i8* %6(%struct.btActionInterface* %1, i32 40) ; [#uses=6]
+ %8 = icmp eq i8* %7, null ; [#uses=1]
+ br i1 %8, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %9 = bitcast i8* %7 to %struct.btActivatingCollisionAlgorithm* ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %9, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ to label %_ZN27btGImpactCollisionAlgorithmC1ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_.exit unwind label %lpad
+
+_ZN27btGImpactCollisionAlgorithmC1ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_.exit: ; preds = %bb
+ %10 = bitcast i8* %7 to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV27btGImpactCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %10, align 4
+ %11 = getelementptr inbounds i8* %7, i32 12 ; [#uses=1]
+ %12 = bitcast i8* %11 to %struct.btPersistentManifold** ; [#uses=1]
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %12, align 4
+ %13 = getelementptr inbounds i8* %7, i32 8 ; [#uses=1]
+ %14 = bitcast i8* %13 to %struct.btCollisionAlgorithm** ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %14, align 4
+ br label %bb4
+
+bb4: ; preds = %_ZN27btGImpactCollisionAlgorithmC1ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_.exit, %entry
+ %iftmp.367.0 = bitcast i8* %7 to %struct.btCollisionAlgorithm* ; [#uses=1]
+ ret %struct.btCollisionAlgorithm* %iftmp.367.0
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN27btGImpactCollisionAlgorithm22getAllContactManifoldsER20btAlignedObjectArrayIP20btPersistentManifoldE(%struct.btGImpactCollisionAlgorithm* nocapture %this, %"struct.btAlignedObjectArray<btPersistentManifold*>"* nocapture %manifoldArray) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, %struct.btPersistentManifold** %0) inlinehint
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN27btGImpactCollisionAlgorithm17registerAlgorithmEP21btCollisionDispatcher(%struct.btCollisionDispatcher* %dispatcher) align 2 {
+entry:
+ %0 = load i8* bitcast (i64* @_ZGVZN27btGImpactCollisionAlgorithm17registerAlgorithmEP21btCollisionDispatcherE12s_gimpact_cf to i8*), align 8 ; [#uses=1]
+ %1 = icmp eq i8 %0, 0 ; [#uses=1]
+ br i1 %1, label %bb, label %bb3
+
+bb: ; preds = %entry
+ %2 = tail call i32 @__cxa_guard_acquire(i64* @_ZGVZN27btGImpactCollisionAlgorithm17registerAlgorithmEP21btCollisionDispatcherE12s_gimpact_cf) nounwind ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb3, label %bb1
+
+bb1: ; preds = %bb
+ store i8 0, i8* getelementptr inbounds (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* @_ZZN27btGImpactCollisionAlgorithm17registerAlgorithmEP21btCollisionDispatcherE12s_gimpact_cf, i32 0, i32 0, i32 1), align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN27btGImpactCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** getelementptr inbounds (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* @_ZZN27btGImpactCollisionAlgorithm17registerAlgorithmEP21btCollisionDispatcherE12s_gimpact_cf, i32 0, i32 0, i32 0), align 8
+ tail call void @__cxa_guard_release(i64* @_ZGVZN27btGImpactCollisionAlgorithm17registerAlgorithmEP21btCollisionDispatcherE12s_gimpact_cf) nounwind
+ %4 = tail call i32 @__cxa_atexit(void (i8*)* @__tcf_0150, i8* null, i8* bitcast (i8** @__dso_handle to i8*)) nounwind ; [#uses=0]
+ br label %bb3
+
+bb3: ; preds = %bb3, %bb1, %bb, %entry
+ %5 = phi i32 [ %6, %bb3 ], [ 0, %entry ], [ 0, %bb1 ], [ 0, %bb ] ; [#uses=2]
+ tail call void @_ZN21btCollisionDispatcher27registerCollisionCreateFuncEiiP30btCollisionAlgorithmCreateFunc(%struct.btCollisionDispatcher* %dispatcher, i32 25, i32 %5, %struct.btCollisionAlgorithmCreateFunc* getelementptr inbounds (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* @_ZZN27btGImpactCollisionAlgorithm17registerAlgorithmEP21btCollisionDispatcherE12s_gimpact_cf, i32 0, i32 0))
+ %6 = add nsw i32 %5, 1 ; [#uses=2]
+ %exitcond12 = icmp eq i32 %6, 36 ; [#uses=1]
+ br i1 %exitcond12, label %bb6, label %bb3
+
+bb6: ; preds = %bb6, %bb3
+ %7 = phi i32 [ %8, %bb6 ], [ 0, %bb3 ] ; [#uses=2]
+ tail call void @_ZN21btCollisionDispatcher27registerCollisionCreateFuncEiiP30btCollisionAlgorithmCreateFunc(%struct.btCollisionDispatcher* %dispatcher, i32 %7, i32 25, %struct.btCollisionAlgorithmCreateFunc* getelementptr inbounds (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* @_ZZN27btGImpactCollisionAlgorithm17registerAlgorithmEP21btCollisionDispatcherE12s_gimpact_cf, i32 0, i32 0))
+ %8 = add nsw i32 %7, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %8, 36 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb6
+
+return: ; preds = %bb6
+ ret void
+}
+
+; [#uses=1]
+define internal void @__tcf_0150(i8* nocapture %unnamed_arg) nounwind {
+entry:
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN27btGImpactCollisionAlgorithm10CreateFuncE, i32 0, i32 2), i32 (...)*** getelementptr inbounds (%"struct.btBoxBoxCollisionAlgorithm::CreateFunc"* @_ZZN27btGImpactCollisionAlgorithm17registerAlgorithmEP21btCollisionDispatcherE12s_gimpact_cf, i32 0, i32 0, i32 0), align 8
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN9btPairSetC1Ev(%struct.btPairSet* nocapture %this) align 2 {
+bb.i:
+ %0 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 4 ; [#uses=5]
+ store i8 1, i8* %0, align 4
+ %1 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 3 ; [#uses=8]
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %1, align 4
+ %2 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 1 ; [#uses=3]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btPairSet* %this, i32 0, i32 0, i32 2 ; [#uses=3]
+ store i32 0, i32* %3, align 4
+ %4 = invoke i8* @_Z22btAlignedAllocInternalji(i32 256, i32 16)
+ to label %_ZN20btAlignedObjectArrayI8GIM_PAIRE8allocateEi.exit.i unwind label %lpad ; [#uses=3]
+
+_ZN20btAlignedObjectArrayI8GIM_PAIRE8allocateEi.exit.i: ; preds = %bb.i
+ %phitmp.i = bitcast i8* %4 to %struct.CONTACT_KEY_TOKEN* ; [#uses=1]
+ %5 = load i32* %2, align 4 ; [#uses=2]
+ %6 = icmp sgt i32 %5, 0 ; [#uses=1]
+ br i1 %6, label %bb.i4.i, label %_ZNK20btAlignedObjectArrayI8GIM_PAIRE4copyEiiPS0_.exit.i
+
+bb.i4.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayI8GIM_PAIRE8allocateEi.exit.i
+ %indvar.i.i = phi i32 [ %indvar.next.i.i, %bb3.i.i ], [ 0, %_ZN20btAlignedObjectArrayI8GIM_PAIRE8allocateEi.exit.i ] ; [#uses=4]
+ %tmp = shl i32 %indvar.i.i, 3 ; [#uses=2]
+ %scevgep15 = getelementptr i8* %4, i32 %tmp ; [#uses=2]
+ %7 = icmp eq i8* %scevgep15, null ; [#uses=1]
+ br i1 %7, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %tmp1721 = or i32 %tmp, 4 ; [#uses=1]
+ %scevgep18 = getelementptr i8* %4, i32 %tmp1721 ; [#uses=1]
+ %scevgep12.i.i = bitcast i8* %scevgep18 to i32* ; [#uses=1]
+ %scevgep10.i.i = bitcast i8* %scevgep15 to i32* ; [#uses=1]
+ %8 = load %struct.CONTACT_KEY_TOKEN** %1, align 4 ; [#uses=2]
+ %scevgep89.i.i = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %8, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %9 = load i32* %scevgep89.i.i, align 4 ; [#uses=1]
+ store i32 %9, i32* %scevgep10.i.i, align 4
+ %scevgep11.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %8, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %10 = load i32* %scevgep11.i.i, align 4 ; [#uses=1]
+ store i32 %10, i32* %scevgep12.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %5 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI8GIM_PAIRE4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI8GIM_PAIRE4copyEiiPS0_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayI8GIM_PAIRE8allocateEi.exit.i
+ %11 = load %struct.CONTACT_KEY_TOKEN** %1, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.CONTACT_KEY_TOKEN* %11, null ; [#uses=1]
+ br i1 %12, label %return, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI8GIM_PAIRE4copyEiiPS0_.exit.i
+ %13 = load i8* %0, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %14 = bitcast %struct.CONTACT_KEY_TOKEN* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %14)
+ to label %bb2.i.i unwind label %lpad
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %1, align 4
+ br label %return
+
+invcont1: ; preds = %bb2.i.i.i, %lpad
+ store i8 1, i8* %0, align 4
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %1, align 4
+ store i32 0, i32* %2, align 4
+ store i32 0, i32* %3, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+return: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI8GIM_PAIRE4copyEiiPS0_.exit.i
+ store i8 1, i8* %0, align 4
+ store %struct.CONTACT_KEY_TOKEN* %phitmp.i, %struct.CONTACT_KEY_TOKEN** %1, align 4
+ store i32 32, i32* %3, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i, %bb.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select5 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %15 = load %struct.CONTACT_KEY_TOKEN** %1, align 4 ; [#uses=2]
+ %16 = icmp eq %struct.CONTACT_KEY_TOKEN* %15, null ; [#uses=1]
+ br i1 %16, label %invcont1, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad
+ %17 = load i8* %0, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %17, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %18 = bitcast %struct.CONTACT_KEY_TOKEN* %15 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %18)
+ to label %bb2.i.i.i unwind label %lpad6
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %1, align 4
+ br label %invcont1
+
+lpad6: ; preds = %bb1.i.i.i
+ %eh_ptr7 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select9 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr7, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btTriangleShapeExD0Ev(%struct.btTriangleShapeEx* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btTriangleShapeEx* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btTriangleShapeExD1Ev(%struct.btTriangleShapeEx* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btTetrahedronShapeExD0Ev(%struct.btTetrahedronShapeEx* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTetrahedronShapeEx* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTetrahedronShapeEx* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ %2 = bitcast %struct.btTetrahedronShapeEx* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %2)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btTetrahedronShapeExD1Ev(%struct.btTetrahedronShapeEx* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTetrahedronShapeEx* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTetrahedronShapeEx* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %1)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN27btGImpactCollisionAlgorithm18gimpact_vs_concaveEP17btCollisionObjectS1_P23btGImpactShapeInterfaceP14btConcaveShapeb(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactShapeInterface* %shape0, %struct.btConcaveShape* %shape1, i8 zeroext %swapped) align 2 {
+entry:
+ %tricallback = alloca %struct.btGImpactTriangleCallback, align 8 ; [#uses=9]
+ %gimpactInConcaveSpace = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %minAABB = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %maxAABB = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %0 = getelementptr inbounds %struct.btGImpactTriangleCallback* %tricallback, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV25btGImpactTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ %1 = getelementptr inbounds %struct.btGImpactTriangleCallback* %tricallback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btGImpactCollisionAlgorithm* %this, %struct.btGImpactCollisionAlgorithm** %1, align 4
+ %2 = getelementptr inbounds %struct.btGImpactTriangleCallback* %tricallback, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionObject* %body0, %struct.btCollisionObject** %2, align 8
+ %3 = getelementptr inbounds %struct.btGImpactTriangleCallback* %tricallback, i32 0, i32 3 ; [#uses=1]
+ store %struct.btCollisionObject* %body1, %struct.btCollisionObject** %3, align 4
+ %4 = getelementptr inbounds %struct.btGImpactTriangleCallback* %tricallback, i32 0, i32 4 ; [#uses=1]
+ store %struct.btGImpactShapeInterface* %shape0, %struct.btGImpactShapeInterface** %4, align 8
+ %5 = getelementptr inbounds %struct.btGImpactTriangleCallback* %tricallback, i32 0, i32 5 ; [#uses=1]
+ store i8 %swapped, i8* %5, align 4
+ %6 = getelementptr inbounds %struct.btConcaveShape* %shape1, i32 0, i32 0, i32 0 ; [#uses=2]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 11 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to float (%struct.btConcaveShape*)* ; [#uses=1]
+ %11 = invoke float %10(%struct.btConcaveShape* %shape1)
+ to label %invcont2 unwind label %lpad ; [#uses=1]
+
+invcont2: ; preds = %entry
+ %12 = getelementptr inbounds %struct.btGImpactTriangleCallback* %tricallback, i32 0, i32 6 ; [#uses=1]
+ store float %11, float* %12, align 8
+ %13 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=5]
+ %23 = load float* %20, align 4 ; [#uses=5]
+ %24 = load float* %19, align 4 ; [#uses=5]
+ %25 = load float* %18, align 4 ; [#uses=5]
+ %26 = load float* %17, align 4 ; [#uses=5]
+ %27 = load float* %16, align 4 ; [#uses=5]
+ %28 = load float* %15, align 4 ; [#uses=5]
+ %29 = load float* %14, align 4 ; [#uses=5]
+ %30 = load float* %13, align 4 ; [#uses=5]
+ %31 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fsub float -0.000000e+00, %32 ; [#uses=3]
+ %34 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fsub float -0.000000e+00, %35 ; [#uses=3]
+ %37 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fsub float -0.000000e+00, %38 ; [#uses=3]
+ %40 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=3]
+ %42 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=3]
+ %44 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=3]
+ %46 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=3]
+ %48 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=3]
+ %50 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=3]
+ %52 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=3]
+ %54 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=3]
+ %56 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=3]
+ %58 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=3]
+ %60 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=3]
+ %62 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=3]
+ %64 = fmul float %23, %43 ; [#uses=1]
+ %65 = fmul float %22, %41 ; [#uses=1]
+ %66 = fmul float %26, %43 ; [#uses=1]
+ %67 = fmul float %25, %41 ; [#uses=1]
+ %68 = fmul float %29, %43 ; [#uses=1]
+ %69 = fmul float %28, %41 ; [#uses=1]
+ %70 = fmul float %28, %39 ; [#uses=1]
+ %71 = fmul float %29, %36 ; [#uses=1]
+ %72 = fmul float %25, %39 ; [#uses=1]
+ %73 = fmul float %26, %36 ; [#uses=1]
+ %74 = fmul float %22, %39 ; [#uses=1]
+ %75 = fmul float %23, %36 ; [#uses=1]
+ %76 = fmul float %61, %23 ; [#uses=1]
+ %77 = fmul float %59, %22 ; [#uses=1]
+ %78 = fmul float %55, %23 ; [#uses=1]
+ %79 = fmul float %53, %22 ; [#uses=1]
+ %80 = fmul float %49, %23 ; [#uses=1]
+ %81 = fmul float %47, %22 ; [#uses=1]
+ %82 = fmul float %61, %26 ; [#uses=1]
+ %83 = fmul float %59, %25 ; [#uses=1]
+ %84 = fmul float %55, %26 ; [#uses=1]
+ %85 = fmul float %53, %25 ; [#uses=1]
+ %86 = fmul float %49, %26 ; [#uses=1]
+ %87 = fmul float %47, %25 ; [#uses=1]
+ %88 = fmul float %61, %29 ; [#uses=1]
+ %89 = fmul float %59, %28 ; [#uses=1]
+ %90 = fmul float %55, %29 ; [#uses=1]
+ %91 = fmul float %53, %28 ; [#uses=1]
+ %92 = fmul float %49, %29 ; [#uses=1]
+ %93 = fmul float %47, %28 ; [#uses=1]
+ %94 = fmul float %24, %45 ; [#uses=1]
+ %95 = fadd float %65, %64 ; [#uses=1]
+ %96 = fmul float %27, %45 ; [#uses=1]
+ %97 = fadd float %67, %66 ; [#uses=1]
+ %98 = fmul float %30, %45 ; [#uses=1]
+ %99 = fadd float %69, %68 ; [#uses=1]
+ %100 = fadd float %70, %71 ; [#uses=1]
+ %101 = fmul float %30, %33 ; [#uses=1]
+ %102 = fadd float %72, %73 ; [#uses=1]
+ %103 = fmul float %27, %33 ; [#uses=1]
+ %104 = fadd float %74, %75 ; [#uses=1]
+ %105 = fmul float %24, %33 ; [#uses=1]
+ %106 = fmul float %63, %24 ; [#uses=1]
+ %107 = fadd float %77, %76 ; [#uses=1]
+ %108 = fmul float %57, %24 ; [#uses=1]
+ %109 = fadd float %79, %78 ; [#uses=1]
+ %110 = fmul float %51, %24 ; [#uses=1]
+ %111 = fadd float %81, %80 ; [#uses=1]
+ %112 = fmul float %63, %27 ; [#uses=1]
+ %113 = fadd float %83, %82 ; [#uses=1]
+ %114 = fmul float %57, %27 ; [#uses=1]
+ %115 = fadd float %85, %84 ; [#uses=1]
+ %116 = fmul float %51, %27 ; [#uses=1]
+ %117 = fadd float %87, %86 ; [#uses=1]
+ %118 = fmul float %63, %30 ; [#uses=1]
+ %119 = fadd float %89, %88 ; [#uses=1]
+ %120 = fmul float %57, %30 ; [#uses=1]
+ %121 = fadd float %91, %90 ; [#uses=1]
+ %122 = fmul float %51, %30 ; [#uses=1]
+ %123 = fadd float %93, %92 ; [#uses=1]
+ %124 = fadd float %95, %94 ; [#uses=1]
+ %125 = fadd float %97, %96 ; [#uses=1]
+ %126 = fadd float %99, %98 ; [#uses=1]
+ %127 = fadd float %100, %101 ; [#uses=1]
+ %128 = fadd float %102, %103 ; [#uses=1]
+ %129 = fadd float %104, %105 ; [#uses=1]
+ %130 = fadd float %107, %106 ; [#uses=1]
+ %131 = fadd float %109, %108 ; [#uses=1]
+ %132 = fadd float %111, %110 ; [#uses=1]
+ %133 = fadd float %113, %112 ; [#uses=1]
+ %134 = fadd float %115, %114 ; [#uses=1]
+ %135 = fadd float %117, %116 ; [#uses=1]
+ %136 = fadd float %119, %118 ; [#uses=1]
+ %137 = fadd float %121, %120 ; [#uses=1]
+ %138 = fadd float %123, %122 ; [#uses=1]
+ %139 = fadd float %124, %129 ; [#uses=1]
+ %140 = fadd float %125, %128 ; [#uses=1]
+ %141 = fadd float %126, %127 ; [#uses=1]
+ %142 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %130, float* %142, align 8
+ %143 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %131, float* %143, align 4
+ %144 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %132, float* %144, align 8
+ %145 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %145, align 4
+ %146 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %133, float* %146, align 8
+ %147 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %134, float* %147, align 4
+ %148 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %135, float* %148, align 8
+ %149 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %149, align 4
+ %150 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %136, float* %150, align 8
+ %151 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %137, float* %151, align 4
+ %152 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %138, float* %152, align 8
+ %153 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %153, align 4
+ %154 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %139, float* %154, align 8
+ %155 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %140, float* %155, align 4
+ %156 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %141, float* %156, align 8
+ %157 = getelementptr inbounds %struct.btTransform* %gimpactInConcaveSpace, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %157, align 4
+ %158 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %159 = load i32 (...)*** %158, align 4 ; [#uses=1]
+ %160 = getelementptr inbounds i32 (...)** %159, i32 2 ; [#uses=1]
+ %161 = load i32 (...)** %160, align 4 ; [#uses=1]
+ %162 = bitcast i32 (...)* %161 to void (%struct.btGImpactShapeInterface*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %162(%struct.btGImpactShapeInterface* %shape0, %struct.btTransform* %gimpactInConcaveSpace, %struct.btQuadWord* %minAABB, %struct.btQuadWord* %maxAABB)
+ to label %invcont3 unwind label %lpad
+
+invcont3: ; preds = %invcont2
+ %163 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %164 = getelementptr inbounds i32 (...)** %163, i32 15 ; [#uses=1]
+ %165 = load i32 (...)** %164, align 4 ; [#uses=1]
+ %166 = bitcast i32 (...)* %165 to void (%struct.btConcaveShape*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btGImpactTriangleCallback* %tricallback, i32 0, i32 0 ; [#uses=2]
+ invoke void %166(%struct.btConcaveShape* %shape1, %struct.btActionInterface* %167, %struct.btQuadWord* %minAABB, %struct.btQuadWord* %maxAABB)
+ to label %bb7 unwind label %lpad
+
+invcont5: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb7: ; preds = %invcont3
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV25btGImpactTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %167)
+ ret void
+
+lpad: ; preds = %invcont3, %invcont2, %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select9 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV25btGImpactTriangleCallback, i32 0, i32 2), i32 (...)*** %0, align 8
+ %168 = getelementptr inbounds %struct.btGImpactTriangleCallback* %tricallback, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %168)
+ to label %invcont5 unwind label %lpad10
+
+lpad10: ; preds = %lpad
+ %eh_ptr11 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select13 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN18GIM_ShapeRetrieverC2EP23btGImpactShapeInterface(%struct.GIM_ShapeRetriever* %this, %struct.btGImpactShapeInterface* %gim_shape) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %0)
+ %1 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = bitcast float* %3 to i8* ; [#uses=1]
+ tail call void @llvm.memset.p0i8.i64(i8* %4, i8 0, i64 48, i32 4, i1 false)
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV17btTriangleShapeEx, i32 0, i32 2), i32 (...)*** %1, align 4
+ %5 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ invoke void @_ZN16btBU_Simplex1to4C2Ev(%struct.btBU_Simplex1to4* %5)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %6 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV20btTetrahedronShapeEx, i32 0, i32 2), i32 (...)*** %6, align 4
+ %7 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store i32 4, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 3, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19ChildShapeRetrieverE, i32 0, i32 2), i32 (...)*** %8, align 4
+ %9 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever22TriangleShapeRetrieverE, i32 0, i32 2), i32 (...)*** %9, align 4
+ %10 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19TetraShapeRetrieverE, i32 0, i32 2), i32 (...)*** %10, align 4
+ %11 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 0 ; [#uses=2]
+ store %struct.btGImpactShapeInterface* %gim_shape, %struct.btGImpactShapeInterface** %11, align 4
+ %12 = getelementptr inbounds %struct.btGImpactShapeInterface* %gim_shape, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 23 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to i8 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %17 = invoke zeroext i8 %16(%struct.btGImpactShapeInterface* %gim_shape)
+ to label %invcont1 unwind label %lpad27 ; [#uses=1]
+
+invcont1: ; preds = %invcont
+ %toBool = icmp eq i8 %17, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb
+
+bb: ; preds = %invcont1
+ %18 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 4, i32 0 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 6 ; [#uses=1]
+ store %"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %18, %"struct.GIM_ShapeRetriever::ChildShapeRetriever"** %19, align 4
+ br label %bb7
+
+bb2: ; preds = %invcont1
+ %20 = load %struct.btGImpactShapeInterface** %11, align 4 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btGImpactShapeInterface* %20, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = load i32 (...)*** %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds i32 (...)** %22, i32 24 ; [#uses=1]
+ %24 = load i32 (...)** %23, align 4 ; [#uses=1]
+ %25 = bitcast i32 (...)* %24 to i8 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %26 = invoke zeroext i8 %25(%struct.btGImpactShapeInterface* %20)
+ to label %invcont3 unwind label %lpad27 ; [#uses=1]
+
+invcont3: ; preds = %bb2
+ %toBool4 = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool4, label %bb6, label %bb5
+
+bb5: ; preds = %invcont3
+ %27 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 5, i32 0 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 6 ; [#uses=1]
+ store %"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %27, %"struct.GIM_ShapeRetriever::ChildShapeRetriever"** %28, align 4
+ br label %bb7
+
+bb6: ; preds = %invcont3
+ %29 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 3 ; [#uses=2]
+ %30 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 6 ; [#uses=1]
+ store %"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %29, %"struct.GIM_ShapeRetriever::ChildShapeRetriever"** %30, align 4
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5, %bb
+ %31 = phi %"struct.GIM_ShapeRetriever::ChildShapeRetriever"* [ %29, %bb6 ], [ %27, %bb5 ], [ %18, %bb ] ; [#uses=1]
+ %32 = getelementptr inbounds %"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %31, i32 0, i32 1 ; [#uses=1]
+ store %struct.GIM_ShapeRetriever* %this, %struct.GIM_ShapeRetriever** %32, align 4
+ ret void
+
+invcont23: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select26 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad27: ; preds = %bb2, %invcont
+ %eh_ptr28 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select30 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr28, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19TetraShapeRetrieverE, i32 0, i32 2), i32 (...)*** %10, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever22TriangleShapeRetrieverE, i32 0, i32 2), i32 (...)*** %9, align 4
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19ChildShapeRetrieverE, i32 0, i32 2), i32 (...)*** %8, align 4
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %6, align 4
+ %33 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %33)
+ to label %ppad unwind label %lpad31
+
+lpad31: ; preds = %lpad27
+ %eh_ptr32 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select34 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr32, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad35: ; preds = %ppad
+ %eh_ptr36 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select38 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr36, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %lpad27, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr28, %lpad27 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 4
+ %34 = getelementptr inbounds %struct.GIM_ShapeRetriever* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %34)
+ to label %invcont23 unwind label %lpad35
+}
+
+; [#uses=1]
+define void @_ZN27btGImpactCollisionAlgorithm21collide_sat_trianglesEP17btCollisionObjectS1_P22btGImpactMeshShapePartS3_PKii(%struct.btGImpactCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactMeshShapePart* %shape0, %struct.btGImpactMeshShapePart* %shape1, i32* nocapture %pairs, i32 %pair_count) align 2 {
+entry:
+ %ptri0 = alloca %struct.btPrimitiveTriangle, align 8 ; [#uses=20]
+ %ptri1 = alloca %struct.btPrimitiveTriangle, align 8 ; [#uses=20]
+ %contact_data = alloca %struct.GIM_TRIANGLE_CONTACT, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=3]
+ %12 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=3]
+ %16 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=3]
+ %18 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=3]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=3]
+ %22 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=3]
+ %24 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=3]
+ %26 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=3]
+ %28 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=3]
+ %30 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=3]
+ %32 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=3]
+ %34 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=3]
+ %36 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=3]
+ %38 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=3]
+ %40 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=3]
+ %42 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=3]
+ %44 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=3]
+ %46 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=3]
+ %48 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 2 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %48, align 8
+ %49 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 2 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %49, align 8
+ %50 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %51 = load i32 (...)*** %50, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds i32 (...)** %51, i32 27 ; [#uses=1]
+ %53 = load i32 (...)** %52, align 4 ; [#uses=1]
+ %54 = bitcast i32 (...)* %53 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ call void %54(%struct.btGImpactMeshShapePart* %shape0)
+ %55 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %56 = load i32 (...)*** %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds i32 (...)** %56, i32 27 ; [#uses=1]
+ %58 = load i32 (...)** %57, align 4 ; [#uses=1]
+ %59 = bitcast i32 (...)* %58 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ call void %59(%struct.btGImpactMeshShapePart* %shape1)
+ %60 = icmp eq i32 %pair_count, 0 ; [#uses=1]
+ br i1 %60, label %bb9, label %bb.nph19
+
+bb.nph19: ; preds = %entry
+ %61 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=2]
+ %62 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 7 ; [#uses=3]
+ %63 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape0, i32 0, i32 0 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape1, i32 0, i32 0 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %66 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %67 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %68 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %70 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %71 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %72 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %74 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %75 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %76 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %78 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %79 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %80 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %82 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %83 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %84 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %86 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %87 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %88 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri0, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btPrimitiveTriangle* %ptri1, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contact_data, i32 0, i32 1 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contact_data, i32 0, i32 0 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contact_data, i32 0, i32 2, i32 0 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=4]
+ %101 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 6 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 8 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %104 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %105 = bitcast %struct.btCollisionObject* %body0 to i8* ; [#uses=1]
+ %106 = bitcast %struct.btCollisionObject* %body1 to i8* ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb7.backedge, %bb.nph19
+ %indvar23 = phi i32 [ 0, %bb.nph19 ], [ %indvar.next24, %bb7.backedge ] ; [#uses=2]
+ %tmp26 = shl i32 %indvar23, 1 ; [#uses=2]
+ %pair_pointer.018 = getelementptr i32* %pairs, i32 %tmp26 ; [#uses=1]
+ %tmp2830 = or i32 %tmp26, 1 ; [#uses=1]
+ %scevgep29 = getelementptr i32* %pairs, i32 %tmp2830 ; [#uses=1]
+ %107 = load i32* %pair_pointer.018, align 4 ; [#uses=2]
+ store i32 %107, i32* %61, align 4
+ %108 = load i32* %scevgep29, align 4 ; [#uses=1]
+ store i32 %108, i32* %62, align 4
+ %109 = load i32 (...)*** %50, align 4 ; [#uses=1]
+ %110 = getelementptr inbounds i32 (...)** %109, i32 20 ; [#uses=1]
+ %111 = load i32 (...)** %110, align 4 ; [#uses=1]
+ %112 = bitcast i32 (...)* %111 to %struct.btActionInterface* (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %113 = call %struct.btActionInterface* %112(%struct.btGImpactShapeInterface* %63) ; [#uses=2]
+ %114 = getelementptr inbounds %struct.btActionInterface* %113, i32 0, i32 0 ; [#uses=1]
+ %115 = load i32 (...)*** %114, align 4 ; [#uses=1]
+ %116 = getelementptr inbounds i32 (...)** %115, i32 5 ; [#uses=1]
+ %117 = load i32 (...)** %116, align 4 ; [#uses=1]
+ %118 = bitcast i32 (...)* %117 to void (%struct.btActionInterface*, i32, %struct.btPrimitiveTriangle*)* ; [#uses=1]
+ call void %118(%struct.btActionInterface* %113, i32 %107, %struct.btPrimitiveTriangle* %ptri0)
+ %119 = load i32* %62, align 4 ; [#uses=1]
+ %120 = load i32 (...)*** %55, align 4 ; [#uses=1]
+ %121 = getelementptr inbounds i32 (...)** %120, i32 20 ; [#uses=1]
+ %122 = load i32 (...)** %121, align 4 ; [#uses=1]
+ %123 = bitcast i32 (...)* %122 to %struct.btActionInterface* (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %124 = call %struct.btActionInterface* %123(%struct.btGImpactShapeInterface* %64) ; [#uses=2]
+ %125 = getelementptr inbounds %struct.btActionInterface* %124, i32 0, i32 0 ; [#uses=1]
+ %126 = load i32 (...)*** %125, align 4 ; [#uses=1]
+ %127 = getelementptr inbounds i32 (...)** %126, i32 5 ; [#uses=1]
+ %128 = load i32 (...)** %127, align 4 ; [#uses=1]
+ %129 = bitcast i32 (...)* %128 to void (%struct.btActionInterface*, i32, %struct.btPrimitiveTriangle*)* ; [#uses=1]
+ call void %129(%struct.btActionInterface* %124, i32 %119, %struct.btPrimitiveTriangle* %ptri1)
+ %130 = load float* %65, align 8 ; [#uses=3]
+ %131 = fmul float %13, %130 ; [#uses=1]
+ %132 = load float* %66, align 4 ; [#uses=3]
+ %133 = fmul float %15, %132 ; [#uses=1]
+ %134 = fadd float %131, %133 ; [#uses=1]
+ %135 = load float* %67, align 8 ; [#uses=3]
+ %136 = fmul float %17, %135 ; [#uses=1]
+ %137 = fadd float %134, %136 ; [#uses=1]
+ %138 = fadd float %137, %23 ; [#uses=4]
+ %139 = fmul float %7, %130 ; [#uses=1]
+ %140 = fmul float %9, %132 ; [#uses=1]
+ %141 = fadd float %139, %140 ; [#uses=1]
+ %142 = fmul float %11, %135 ; [#uses=1]
+ %143 = fadd float %141, %142 ; [#uses=1]
+ %144 = fadd float %143, %21 ; [#uses=4]
+ %145 = fmul float %1, %130 ; [#uses=1]
+ %146 = fmul float %3, %132 ; [#uses=1]
+ %147 = fadd float %145, %146 ; [#uses=1]
+ %148 = fmul float %5, %135 ; [#uses=1]
+ %149 = fadd float %147, %148 ; [#uses=1]
+ %150 = fadd float %149, %19 ; [#uses=4]
+ store float %150, float* %65, align 8
+ store float %144, float* %66, align 4
+ store float %138, float* %67, align 8
+ store float 0.000000e+00, float* %68, align 4
+ %151 = load float* %69, align 8 ; [#uses=3]
+ %152 = fmul float %13, %151 ; [#uses=1]
+ %153 = load float* %70, align 4 ; [#uses=3]
+ %154 = fmul float %15, %153 ; [#uses=1]
+ %155 = fadd float %152, %154 ; [#uses=1]
+ %156 = load float* %71, align 8 ; [#uses=3]
+ %157 = fmul float %17, %156 ; [#uses=1]
+ %158 = fadd float %155, %157 ; [#uses=1]
+ %159 = fadd float %158, %23 ; [#uses=2]
+ %160 = fmul float %7, %151 ; [#uses=1]
+ %161 = fmul float %9, %153 ; [#uses=1]
+ %162 = fadd float %160, %161 ; [#uses=1]
+ %163 = fmul float %11, %156 ; [#uses=1]
+ %164 = fadd float %162, %163 ; [#uses=1]
+ %165 = fadd float %164, %21 ; [#uses=2]
+ %166 = fmul float %1, %151 ; [#uses=1]
+ %167 = fmul float %3, %153 ; [#uses=1]
+ %168 = fadd float %166, %167 ; [#uses=1]
+ %169 = fmul float %5, %156 ; [#uses=1]
+ %170 = fadd float %168, %169 ; [#uses=1]
+ %171 = fadd float %170, %19 ; [#uses=2]
+ store float %171, float* %69, align 8
+ store float %165, float* %70, align 4
+ store float %159, float* %71, align 8
+ store float 0.000000e+00, float* %72, align 4
+ %172 = load float* %73, align 8 ; [#uses=3]
+ %173 = fmul float %13, %172 ; [#uses=1]
+ %174 = load float* %74, align 4 ; [#uses=3]
+ %175 = fmul float %15, %174 ; [#uses=1]
+ %176 = fadd float %173, %175 ; [#uses=1]
+ %177 = load float* %75, align 8 ; [#uses=3]
+ %178 = fmul float %17, %177 ; [#uses=1]
+ %179 = fadd float %176, %178 ; [#uses=1]
+ %180 = fadd float %179, %23 ; [#uses=2]
+ %181 = fmul float %7, %172 ; [#uses=1]
+ %182 = fmul float %9, %174 ; [#uses=1]
+ %183 = fadd float %181, %182 ; [#uses=1]
+ %184 = fmul float %11, %177 ; [#uses=1]
+ %185 = fadd float %183, %184 ; [#uses=1]
+ %186 = fadd float %185, %21 ; [#uses=2]
+ %187 = fmul float %1, %172 ; [#uses=1]
+ %188 = fmul float %3, %174 ; [#uses=1]
+ %189 = fadd float %187, %188 ; [#uses=1]
+ %190 = fmul float %5, %177 ; [#uses=1]
+ %191 = fadd float %189, %190 ; [#uses=1]
+ %192 = fadd float %191, %19 ; [#uses=2]
+ store float %192, float* %73, align 8
+ store float %186, float* %74, align 4
+ store float %180, float* %75, align 8
+ store float 0.000000e+00, float* %76, align 4
+ %193 = load float* %77, align 8 ; [#uses=3]
+ %194 = fmul float %37, %193 ; [#uses=1]
+ %195 = load float* %78, align 4 ; [#uses=3]
+ %196 = fmul float %39, %195 ; [#uses=1]
+ %197 = fadd float %194, %196 ; [#uses=1]
+ %198 = load float* %79, align 8 ; [#uses=3]
+ %199 = fmul float %41, %198 ; [#uses=1]
+ %200 = fadd float %197, %199 ; [#uses=1]
+ %201 = fadd float %200, %47 ; [#uses=4]
+ %202 = fmul float %31, %193 ; [#uses=1]
+ %203 = fmul float %33, %195 ; [#uses=1]
+ %204 = fadd float %202, %203 ; [#uses=1]
+ %205 = fmul float %35, %198 ; [#uses=1]
+ %206 = fadd float %204, %205 ; [#uses=1]
+ %207 = fadd float %206, %45 ; [#uses=4]
+ %208 = fmul float %25, %193 ; [#uses=1]
+ %209 = fmul float %27, %195 ; [#uses=1]
+ %210 = fadd float %208, %209 ; [#uses=1]
+ %211 = fmul float %29, %198 ; [#uses=1]
+ %212 = fadd float %210, %211 ; [#uses=1]
+ %213 = fadd float %212, %43 ; [#uses=4]
+ store float %213, float* %77, align 8
+ store float %207, float* %78, align 4
+ store float %201, float* %79, align 8
+ store float 0.000000e+00, float* %80, align 4
+ %214 = load float* %81, align 8 ; [#uses=3]
+ %215 = fmul float %37, %214 ; [#uses=1]
+ %216 = load float* %82, align 4 ; [#uses=3]
+ %217 = fmul float %39, %216 ; [#uses=1]
+ %218 = fadd float %215, %217 ; [#uses=1]
+ %219 = load float* %83, align 8 ; [#uses=3]
+ %220 = fmul float %41, %219 ; [#uses=1]
+ %221 = fadd float %218, %220 ; [#uses=1]
+ %222 = fadd float %221, %47 ; [#uses=2]
+ %223 = fmul float %31, %214 ; [#uses=1]
+ %224 = fmul float %33, %216 ; [#uses=1]
+ %225 = fadd float %223, %224 ; [#uses=1]
+ %226 = fmul float %35, %219 ; [#uses=1]
+ %227 = fadd float %225, %226 ; [#uses=1]
+ %228 = fadd float %227, %45 ; [#uses=2]
+ %229 = fmul float %25, %214 ; [#uses=1]
+ %230 = fmul float %27, %216 ; [#uses=1]
+ %231 = fadd float %229, %230 ; [#uses=1]
+ %232 = fmul float %29, %219 ; [#uses=1]
+ %233 = fadd float %231, %232 ; [#uses=1]
+ %234 = fadd float %233, %43 ; [#uses=2]
+ store float %234, float* %81, align 8
+ store float %228, float* %82, align 4
+ store float %222, float* %83, align 8
+ store float 0.000000e+00, float* %84, align 4
+ %235 = load float* %85, align 8 ; [#uses=3]
+ %236 = fmul float %37, %235 ; [#uses=1]
+ %237 = load float* %86, align 4 ; [#uses=3]
+ %238 = fmul float %39, %237 ; [#uses=1]
+ %239 = fadd float %236, %238 ; [#uses=1]
+ %240 = load float* %87, align 8 ; [#uses=3]
+ %241 = fmul float %41, %240 ; [#uses=1]
+ %242 = fadd float %239, %241 ; [#uses=1]
+ %243 = fadd float %242, %47 ; [#uses=2]
+ %244 = fmul float %31, %235 ; [#uses=1]
+ %245 = fmul float %33, %237 ; [#uses=1]
+ %246 = fadd float %244, %245 ; [#uses=1]
+ %247 = fmul float %35, %240 ; [#uses=1]
+ %248 = fadd float %246, %247 ; [#uses=1]
+ %249 = fadd float %248, %45 ; [#uses=2]
+ %250 = fmul float %25, %235 ; [#uses=1]
+ %251 = fmul float %27, %237 ; [#uses=1]
+ %252 = fadd float %250, %251 ; [#uses=1]
+ %253 = fmul float %29, %240 ; [#uses=1]
+ %254 = fadd float %252, %253 ; [#uses=1]
+ %255 = fadd float %254, %43 ; [#uses=2]
+ store float %255, float* %85, align 8
+ store float %249, float* %86, align 4
+ store float %243, float* %87, align 8
+ store float 0.000000e+00, float* %88, align 4
+ %256 = fsub float %180, %138 ; [#uses=2]
+ %257 = fsub float %186, %144 ; [#uses=2]
+ %258 = fsub float %192, %150 ; [#uses=2]
+ %259 = fsub float %159, %138 ; [#uses=2]
+ %260 = fsub float %165, %144 ; [#uses=2]
+ %261 = fsub float %171, %150 ; [#uses=2]
+ %262 = fmul float %261, %257 ; [#uses=1]
+ %263 = fmul float %260, %258 ; [#uses=1]
+ %264 = fsub float %262, %263 ; [#uses=3]
+ %265 = fmul float %259, %258 ; [#uses=1]
+ %266 = fmul float %261, %256 ; [#uses=1]
+ %267 = fsub float %265, %266 ; [#uses=3]
+ %268 = fmul float %260, %256 ; [#uses=1]
+ %269 = fmul float %259, %257 ; [#uses=1]
+ %270 = fsub float %268, %269 ; [#uses=3]
+ %271 = fmul float %270, %270 ; [#uses=1]
+ %272 = fmul float %267, %267 ; [#uses=1]
+ %273 = fadd float %271, %272 ; [#uses=1]
+ %274 = fmul float %264, %264 ; [#uses=1]
+ %275 = fadd float %273, %274 ; [#uses=1]
+ %276 = call float @sqrtf(float %275) nounwind readonly ; [#uses=1]
+ %277 = fdiv float 1.000000e+00, %276 ; [#uses=3]
+ %278 = fmul float %270, %277 ; [#uses=2]
+ %279 = fmul float %267, %277 ; [#uses=2]
+ %280 = fmul float %264, %277 ; [#uses=2]
+ %281 = fmul float %150, %278 ; [#uses=1]
+ %282 = fmul float %144, %279 ; [#uses=1]
+ %283 = fadd float %281, %282 ; [#uses=1]
+ %284 = fmul float %138, %280 ; [#uses=1]
+ %285 = fadd float %283, %284 ; [#uses=1]
+ store float %278, float* %89, align 8
+ store float %279, float* %90, align 4
+ store float %280, float* %91, align 8
+ store float %285, float* %92, align 4
+ %286 = fsub float %243, %201 ; [#uses=2]
+ %287 = fsub float %249, %207 ; [#uses=2]
+ %288 = fsub float %255, %213 ; [#uses=2]
+ %289 = fsub float %222, %201 ; [#uses=2]
+ %290 = fsub float %228, %207 ; [#uses=2]
+ %291 = fsub float %234, %213 ; [#uses=2]
+ %292 = fmul float %291, %287 ; [#uses=1]
+ %293 = fmul float %290, %288 ; [#uses=1]
+ %294 = fsub float %292, %293 ; [#uses=3]
+ %295 = fmul float %289, %288 ; [#uses=1]
+ %296 = fmul float %291, %286 ; [#uses=1]
+ %297 = fsub float %295, %296 ; [#uses=3]
+ %298 = fmul float %290, %286 ; [#uses=1]
+ %299 = fmul float %289, %287 ; [#uses=1]
+ %300 = fsub float %298, %299 ; [#uses=3]
+ %301 = fmul float %300, %300 ; [#uses=1]
+ %302 = fmul float %297, %297 ; [#uses=1]
+ %303 = fadd float %301, %302 ; [#uses=1]
+ %304 = fmul float %294, %294 ; [#uses=1]
+ %305 = fadd float %303, %304 ; [#uses=1]
+ %306 = call float @sqrtf(float %305) nounwind readonly ; [#uses=1]
+ %307 = fdiv float 1.000000e+00, %306 ; [#uses=3]
+ %308 = fmul float %300, %307 ; [#uses=2]
+ %309 = fmul float %297, %307 ; [#uses=2]
+ %310 = fmul float %294, %307 ; [#uses=2]
+ %311 = fmul float %213, %308 ; [#uses=1]
+ %312 = fmul float %207, %309 ; [#uses=1]
+ %313 = fadd float %311, %312 ; [#uses=1]
+ %314 = fmul float %201, %310 ; [#uses=1]
+ %315 = fadd float %313, %314 ; [#uses=1]
+ store float %308, float* %93, align 8
+ store float %309, float* %94, align 4
+ store float %310, float* %95, align 8
+ store float %315, float* %96, align 4
+ %316 = call zeroext i8 @_ZN19btPrimitiveTriangle25overlap_test_conservativeERKS_(%struct.btPrimitiveTriangle* %ptri0, %struct.btPrimitiveTriangle* %ptri1) ; [#uses=1]
+ %toBool = icmp eq i8 %316, 0 ; [#uses=1]
+ br i1 %toBool, label %bb7.backedge, label %bb1
+
+bb7.backedge: ; preds = %_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit, %bb3, %bb1, %bb
+ %indvar.next24 = add i32 %indvar23, 1 ; [#uses=2]
+ %exitcond25 = icmp eq i32 %indvar.next24, %pair_count ; [#uses=1]
+ br i1 %exitcond25, label %bb9, label %bb
+
+bb1: ; preds = %bb
+ %317 = call zeroext i8 @_ZN19btPrimitiveTriangle35find_triangle_collision_clip_methodERS_R20GIM_TRIANGLE_CONTACT(%struct.btPrimitiveTriangle* %ptri0, %struct.btPrimitiveTriangle* %ptri1, %struct.GIM_TRIANGLE_CONTACT* %contact_data) ; [#uses=1]
+ %toBool2 = icmp eq i8 %317, 0 ; [#uses=1]
+ br i1 %toBool2, label %bb7.backedge, label %bb3
+
+bb3: ; preds = %bb1
+ %318 = load i32* %97, align 4 ; [#uses=3]
+ %319 = icmp eq i32 %318, 0 ; [#uses=1]
+ br i1 %319, label %bb7.backedge, label %bb.nph
+
+bb.nph: ; preds = %bb3
+ %tmp20 = shl i32 %318, 2 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit ] ; [#uses=2]
+ %tmp = mul i32 %indvar, -4 ; [#uses=1]
+ %tmp21 = add i32 %tmp20, %tmp ; [#uses=1]
+ %scevgep = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contact_data, i32 0, i32 2, i32 0, i32 0, i32 %tmp21 ; [#uses=1]
+ %scevgep22 = bitcast float* %scevgep to %struct.btQuadWord* ; [#uses=1]
+ %320 = load float* %98, align 8 ; [#uses=1]
+ %321 = fsub float -0.000000e+00, %320 ; [#uses=1]
+ %322 = load %struct.btManifoldResult** %100, align 4 ; [#uses=2]
+ %323 = getelementptr inbounds %struct.btManifoldResult* %322, i32 0, i32 0, i32 0 ; [#uses=1]
+ %324 = load i32 (...)*** %323, align 4 ; [#uses=1]
+ %325 = getelementptr inbounds i32 (...)** %324, i32 2 ; [#uses=1]
+ %326 = load i32 (...)** %325, align 4 ; [#uses=1]
+ %327 = load i32* %61, align 4 ; [#uses=1]
+ %328 = load i32* %101, align 4 ; [#uses=1]
+ %329 = bitcast i32 (...)* %326 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ call void %329(%struct.btManifoldResult* %322, i32 %328, i32 %327)
+ %330 = load %struct.btManifoldResult** %100, align 4 ; [#uses=2]
+ %331 = getelementptr inbounds %struct.btManifoldResult* %330, i32 0, i32 0, i32 0 ; [#uses=1]
+ %332 = load i32 (...)*** %331, align 4 ; [#uses=1]
+ %333 = getelementptr inbounds i32 (...)** %332, i32 3 ; [#uses=1]
+ %334 = load i32 (...)** %333, align 4 ; [#uses=1]
+ %335 = load i32* %62, align 4 ; [#uses=1]
+ %336 = load i32* %102, align 4 ; [#uses=1]
+ %337 = bitcast i32 (...)* %334 to void (%struct.btManifoldResult*, i32, i32)* ; [#uses=1]
+ call void %337(%struct.btManifoldResult* %330, i32 %336, i32 %335)
+ %338 = load %struct.btPersistentManifold** %103, align 4 ; [#uses=2]
+ %339 = icmp eq %struct.btPersistentManifold* %338, null ; [#uses=1]
+ br i1 %339, label %bb.i.i, label %_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit
+
+bb.i.i: ; preds = %bb4
+ %340 = load %struct.btActionInterface** %104, align 4 ; [#uses=2]
+ %341 = getelementptr inbounds %struct.btActionInterface* %340, i32 0, i32 0 ; [#uses=1]
+ %342 = load i32 (...)*** %341, align 4 ; [#uses=1]
+ %343 = getelementptr inbounds i32 (...)** %342, i32 3 ; [#uses=1]
+ %344 = load i32 (...)** %343, align 4 ; [#uses=1]
+ %345 = bitcast i32 (...)* %344 to %struct.btPersistentManifold* (%struct.btActionInterface*, i8*, i8*)* ; [#uses=1]
+ %346 = call %struct.btPersistentManifold* %345(%struct.btActionInterface* %340, i8* %105, i8* %106) ; [#uses=2]
+ store %struct.btPersistentManifold* %346, %struct.btPersistentManifold** %103, align 4
+ br label %_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit
+
+_ZN27btGImpactCollisionAlgorithm15addContactPointEP17btCollisionObjectS1_RK9btVector3S4_f.exit: ; preds = %bb.i.i, %bb4
+ %347 = phi %struct.btPersistentManifold* [ %346, %bb.i.i ], [ %338, %bb4 ] ; [#uses=1]
+ %348 = load %struct.btManifoldResult** %100, align 4 ; [#uses=1]
+ %349 = getelementptr inbounds %struct.btManifoldResult* %348, i32 0, i32 1 ; [#uses=1]
+ store %struct.btPersistentManifold* %347, %struct.btPersistentManifold** %349, align 4
+ %350 = load %struct.btManifoldResult** %100, align 4 ; [#uses=2]
+ %351 = getelementptr inbounds %struct.btManifoldResult* %350, i32 0, i32 0, i32 0 ; [#uses=1]
+ %352 = load i32 (...)*** %351, align 4 ; [#uses=1]
+ %353 = getelementptr inbounds i32 (...)** %352, i32 4 ; [#uses=1]
+ %354 = load i32 (...)** %353, align 4 ; [#uses=1]
+ %355 = bitcast i32 (...)* %354 to void (%struct.btManifoldResult*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %355(%struct.btManifoldResult* %350, %struct.btQuadWord* %99, %struct.btQuadWord* %scevgep22, float %321)
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %318 ; [#uses=1]
+ br i1 %exitcond, label %bb7.backedge, label %bb4
+
+bb9: ; preds = %bb7.backedge, %entry
+ %356 = load i32 (...)*** %50, align 4 ; [#uses=1]
+ %357 = getelementptr inbounds i32 (...)** %356, i32 28 ; [#uses=1]
+ %358 = load i32 (...)** %357, align 4 ; [#uses=1]
+ %359 = bitcast i32 (...)* %358 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ call void %359(%struct.btGImpactMeshShapePart* %shape0)
+ %360 = load i32 (...)*** %55, align 4 ; [#uses=1]
+ %361 = getelementptr inbounds i32 (...)** %360, i32 28 ; [#uses=1]
+ %362 = load i32 (...)** %361, align 4 ; [#uses=1]
+ %363 = bitcast i32 (...)* %362 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ call void %363(%struct.btGImpactMeshShapePart* %shape1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN27btGImpactCollisionAlgorithm21collide_gjk_trianglesEP17btCollisionObjectS1_P22btGImpactMeshShapePartS3_PKii(%struct.btGImpactCollisionAlgorithm* nocapture %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactMeshShapePart* %shape0, %struct.btGImpactMeshShapePart* %shape1, i32* nocapture %pairs, i32 %pair_count) align 2 {
+entry:
+ %tri0 = alloca %struct.btTriangleShapeEx, align 8 ; [#uses=9]
+ %tri1 = alloca %struct.btTriangleShapeEx, align 8 ; [#uses=9]
+ %0 = getelementptr inbounds %struct.btTriangleShapeEx* %tri0, i32 0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %0)
+ %1 = getelementptr inbounds %struct.btTriangleShapeEx* %tri0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btTriangleShapeEx* %tri0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btTriangleShapeEx* %tri0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = bitcast float* %3 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %4, i8 0, i64 48, i32 4, i1 false)
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV17btTriangleShapeEx, i32 0, i32 2), i32 (...)*** %1, align 8
+ %5 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %5)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %9 = bitcast float* %8 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %9, i8 0, i64 48, i32 4, i1 false)
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV17btTriangleShapeEx, i32 0, i32 2), i32 (...)*** %6, align 8
+ %10 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 27 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ invoke void %14(%struct.btGImpactMeshShapePart* %shape0)
+ to label %invcont1 unwind label %lpad26
+
+invcont1: ; preds = %invcont
+ %15 = getelementptr inbounds %struct.btGImpactMeshShapePart* %shape1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %16 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds i32 (...)** %16, i32 27 ; [#uses=1]
+ %18 = load i32 (...)** %17, align 4 ; [#uses=1]
+ %19 = bitcast i32 (...)* %18 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ invoke void %19(%struct.btGImpactMeshShapePart* %shape1)
+ to label %bb8.preheader unwind label %lpad26
+
+bb8.preheader: ; preds = %invcont1
+ %20 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 7 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btTriangleShapeEx* %tri0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %tmp44 = add i32 %pair_count, -1 ; [#uses=1]
+ br label %bb8
+
+bb: ; preds = %bb8
+ %tmp4749 = or i32 %tmp46, 1 ; [#uses=1]
+ %pair_pointer.0 = getelementptr i32* %pairs, i32 %tmp46 ; [#uses=1]
+ %scevgep = getelementptr i32* %pairs, i32 %tmp4749 ; [#uses=1]
+ %24 = load i32* %pair_pointer.0, align 4 ; [#uses=2]
+ store i32 %24, i32* %20, align 4
+ %25 = load i32* %scevgep, align 4 ; [#uses=1]
+ store i32 %25, i32* %21, align 4
+ %26 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds i32 (...)** %26, i32 25 ; [#uses=1]
+ %28 = load i32 (...)** %27, align 4 ; [#uses=1]
+ %29 = bitcast i32 (...)* %28 to void (%struct.btGImpactMeshShapePart*, i32, %struct.btTriangleShapeEx*)* ; [#uses=1]
+ invoke void %29(%struct.btGImpactMeshShapePart* %shape0, i32 %24, %struct.btTriangleShapeEx* %tri0)
+ to label %invcont3 unwind label %lpad26
+
+invcont3: ; preds = %bb
+ %30 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds i32 (...)** %30, i32 25 ; [#uses=1]
+ %32 = load i32 (...)** %31, align 4 ; [#uses=1]
+ %33 = load i32* %21, align 4 ; [#uses=1]
+ %34 = bitcast i32 (...)* %32 to void (%struct.btGImpactMeshShapePart*, i32, %struct.btTriangleShapeEx*)* ; [#uses=1]
+ invoke void %34(%struct.btGImpactMeshShapePart* %shape1, i32 %33, %struct.btTriangleShapeEx* %tri1)
+ to label %invcont4 unwind label %lpad26
+
+invcont4: ; preds = %invcont3
+ %35 = invoke zeroext i8 @_ZN17btTriangleShapeEx25overlap_test_conservativeERKS_(%struct.btTriangleShapeEx* %tri0, %struct.btTriangleShapeEx* %tri1)
+ to label %invcont5 unwind label %lpad26 ; [#uses=1]
+
+invcont5: ; preds = %invcont4
+ %toBool = icmp eq i8 %35, 0 ; [#uses=1]
+ br i1 %toBool, label %bb8.backedge, label %bb6
+
+bb6: ; preds = %invcont5
+ invoke void @_ZN27btGImpactCollisionAlgorithm26convex_vs_convex_collisionEP17btCollisionObjectS1_P16btCollisionShapeS3_(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btCollisionShape* %22, %struct.btCollisionShape* %23)
+ to label %bb8.backedge unwind label %lpad26
+
+bb8.backedge: ; preds = %bb6, %invcont5
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb8.backedge, %bb8.preheader
+ %indvar = phi i32 [ %indvar.next, %bb8.backedge ], [ 0, %bb8.preheader ] ; [#uses=3]
+ %tmp45 = sub i32 %tmp44, %indvar ; [#uses=1]
+ %tmp46 = shl i32 %indvar, 1 ; [#uses=2]
+ %36 = icmp eq i32 %tmp45, -1 ; [#uses=1]
+ br i1 %36, label %bb10, label %bb
+
+bb10: ; preds = %bb8
+ %37 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32 (...)** %37, i32 28 ; [#uses=1]
+ %39 = load i32 (...)** %38, align 4 ; [#uses=1]
+ %40 = bitcast i32 (...)* %39 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ invoke void %40(%struct.btGImpactMeshShapePart* %shape0)
+ to label %invcont11 unwind label %lpad26
+
+invcont11: ; preds = %bb10
+ %41 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds i32 (...)** %41, i32 28 ; [#uses=1]
+ %43 = load i32 (...)** %42, align 4 ; [#uses=1]
+ %44 = bitcast i32 (...)* %43 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ invoke void %44(%struct.btGImpactMeshShapePart* %shape1)
+ to label %bb16 unwind label %lpad26
+
+bb16: ; preds = %invcont11
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %6, align 8
+ %45 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %45)
+ to label %bb23 unwind label %lpad
+
+invcont21: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb23: ; preds = %bb16
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 8
+ %46 = getelementptr inbounds %struct.btTriangleShapeEx* %tri0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %46)
+ ret void
+
+lpad: ; preds = %bb16, %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select25 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad26: ; preds = %invcont11, %bb10, %bb6, %invcont4, %invcont3, %bb, %invcont1, %invcont
+ %eh_ptr27 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select29 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %6, align 8
+ %47 = getelementptr inbounds %struct.btTriangleShapeEx* %tri1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %47)
+ to label %ppad unwind label %lpad30
+
+lpad30: ; preds = %lpad26
+ %eh_ptr31 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select33 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr31, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad34: ; preds = %ppad
+ %eh_ptr35 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select37 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr35, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %lpad26, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr27, %lpad26 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 8
+ %48 = getelementptr inbounds %struct.btTriangleShapeEx* %tri0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %48)
+ to label %invcont21 unwind label %lpad34
+}
+
+; [#uses=1]
+define void @_ZN27btGImpactCollisionAlgorithm27gimpact_vs_shape_find_pairsERK11btTransformS2_P23btGImpactShapeInterfaceP16btCollisionShapeR20btAlignedObjectArrayIiE(%struct.btGImpactCollisionAlgorithm* nocapture %this, %struct.btTransform* %trans0, %struct.btTransform* %trans1, %struct.btGImpactShapeInterface* %shape0, %struct.btCollisionShape* %shape1, %"struct.btAlignedObjectArray<int>"* %collided_primitives) align 2 {
+entry:
+ %boxshape = alloca %struct.GIM_AABB, align 8 ; [#uses=11]
+ %trans1to0 = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %boxshape0 = alloca %struct.GIM_AABB, align 8 ; [#uses=8]
+ %0 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %not..i = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %not..i, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = load float* %9, align 4 ; [#uses=2]
+ %13 = load float* %8, align 4 ; [#uses=2]
+ %14 = load float* %7, align 4 ; [#uses=2]
+ %15 = load float* %6, align 4 ; [#uses=2]
+ %16 = load float* %5, align 4 ; [#uses=2]
+ %17 = load float* %4, align 4 ; [#uses=2]
+ %18 = load float* %3, align 4 ; [#uses=2]
+ %19 = load float* %2, align 4 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fsub float -0.000000e+00, %21 ; [#uses=3]
+ %23 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fsub float -0.000000e+00, %24 ; [#uses=3]
+ %26 = getelementptr inbounds %struct.btTransform* %trans0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fsub float -0.000000e+00, %27 ; [#uses=3]
+ %29 = fmul float %17, %28 ; [#uses=1]
+ %30 = fmul float %18, %25 ; [#uses=1]
+ %31 = fadd float %29, %30 ; [#uses=1]
+ %32 = fmul float %19, %22 ; [#uses=1]
+ %33 = fadd float %31, %32 ; [#uses=1]
+ %34 = fmul float %14, %28 ; [#uses=1]
+ %35 = fmul float %15, %25 ; [#uses=1]
+ %36 = fadd float %34, %35 ; [#uses=1]
+ %37 = fmul float %16, %22 ; [#uses=1]
+ %38 = fadd float %36, %37 ; [#uses=1]
+ %39 = fmul float %11, %28 ; [#uses=1]
+ %40 = fmul float %12, %25 ; [#uses=1]
+ %41 = fadd float %39, %40 ; [#uses=1]
+ %42 = fmul float %13, %22 ; [#uses=1]
+ %43 = fadd float %41, %42 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %11, float* %44, align 8
+ %45 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %12, float* %45, align 4
+ %46 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %13, float* %46, align 8
+ %47 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %47, align 4
+ %48 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %14, float* %48, align 8
+ %49 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %15, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %16, float* %50, align 8
+ %51 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %51, align 4
+ %52 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %17, float* %52, align 8
+ %53 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %18, float* %53, align 4
+ %54 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %19, float* %54, align 8
+ %55 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %55, align 4
+ %56 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %43, float* %56, align 8
+ %57 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %38, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %33, float* %58, align 8
+ %59 = getelementptr inbounds %struct.btTransform* %trans1to0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %59, align 4
+ %60 = call %struct.btTransform* @_ZN11btTransformmLERKS_(%struct.btTransform* %trans1to0, %struct.btTransform* %trans1) nounwind ; [#uses=0]
+ %61 = getelementptr inbounds %struct.btCollisionShape* %shape1, i32 0, i32 0 ; [#uses=1]
+ %62 = load i32 (...)*** %61, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds i32 (...)** %62, i32 2 ; [#uses=1]
+ %64 = load i32 (...)** %63, align 4 ; [#uses=1]
+ %65 = bitcast i32 (...)* %64 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %66 = getelementptr inbounds %struct.GIM_AABB* %boxshape, i32 0, i32 0 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.GIM_AABB* %boxshape, i32 0, i32 1 ; [#uses=1]
+ call void %65(%struct.btCollisionShape* %shape1, %struct.btTransform* %trans1to0, %struct.btQuadWord* %66, %struct.btQuadWord* %67)
+ %68 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape0, i32 0, i32 4 ; [#uses=1]
+ %69 = call zeroext i8 @_ZNK21btGImpactQuantizedBvh8boxQueryERK6btAABBR20btAlignedObjectArrayIiE(%struct.btGImpactBoxSet* %68, %struct.GIM_AABB* %boxshape, %"struct.btAlignedObjectArray<int>"* %collided_primitives) ; [#uses=0]
+ ret void
+
+bb1: ; preds = %entry
+ %70 = getelementptr inbounds %struct.btCollisionShape* %shape1, i32 0, i32 0 ; [#uses=1]
+ %71 = load i32 (...)*** %70, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds i32 (...)** %71, i32 2 ; [#uses=1]
+ %73 = load i32 (...)** %72, align 4 ; [#uses=1]
+ %74 = bitcast i32 (...)* %73 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %75 = getelementptr inbounds %struct.GIM_AABB* %boxshape, i32 0, i32 0 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.GIM_AABB* %boxshape, i32 0, i32 1 ; [#uses=1]
+ call void %74(%struct.btCollisionShape* %shape1, %struct.btTransform* %trans1, %struct.btQuadWord* %75, %struct.btQuadWord* %76)
+ %77 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %78 = load i32 (...)*** %77, align 4 ; [#uses=1]
+ %79 = getelementptr inbounds i32 (...)** %78, i32 21 ; [#uses=1]
+ %80 = load i32 (...)** %79, align 4 ; [#uses=1]
+ %81 = bitcast i32 (...)* %80 to i32 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %82 = call i32 %81(%struct.btGImpactShapeInterface* %shape0) ; [#uses=3]
+ %83 = icmp eq i32 %82, 0 ; [#uses=1]
+ br i1 %83, label %return, label %bb.nph
+
+bb.nph: ; preds = %bb1
+ %84 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 0 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 1 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.GIM_AABB* %boxshape, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.GIM_AABB* %boxshape, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.GIM_AABB* %boxshape, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.GIM_AABB* %boxshape, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.GIM_AABB* %boxshape, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.GIM_AABB* %boxshape, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %98 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_primitives, i32 0, i32 1 ; [#uses=5]
+ %99 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_primitives, i32 0, i32 2 ; [#uses=2]
+ %100 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_primitives, i32 0, i32 3 ; [#uses=5]
+ %101 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_primitives, i32 0, i32 4 ; [#uses=2]
+ %tmp13 = add i32 %82, -1 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb5.backedge, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb5.backedge ] ; [#uses=2]
+ %tmp14 = sub i32 %tmp13, %indvar ; [#uses=2]
+ %102 = load i32 (...)*** %77, align 4 ; [#uses=1]
+ %103 = getelementptr inbounds i32 (...)** %102, i32 29 ; [#uses=1]
+ %104 = load i32 (...)** %103, align 4 ; [#uses=1]
+ %105 = bitcast i32 (...)* %104 to void (%struct.btGImpactShapeInterface*, i32, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %105(%struct.btGImpactShapeInterface* %shape0, i32 %tmp14, %struct.btTransform* %trans0, %struct.btQuadWord* %84, %struct.btQuadWord* %85)
+ %106 = load float* %86, align 8 ; [#uses=1]
+ %107 = load float* %87, align 8 ; [#uses=1]
+ %108 = fcmp ogt float %106, %107 ; [#uses=1]
+ br i1 %108, label %bb5.backedge, label %bb.i8
+
+bb.i8: ; preds = %bb2
+ %109 = load float* %88, align 8 ; [#uses=1]
+ %110 = load float* %89, align 8 ; [#uses=1]
+ %111 = fcmp olt float %109, %110 ; [#uses=1]
+ br i1 %111, label %bb5.backedge, label %bb1.i9
+
+bb1.i9: ; preds = %bb.i8
+ %112 = load float* %90, align 4 ; [#uses=1]
+ %113 = load float* %91, align 4 ; [#uses=1]
+ %114 = fcmp ogt float %112, %113 ; [#uses=1]
+ br i1 %114, label %bb5.backedge, label %bb2.i10
+
+bb2.i10: ; preds = %bb1.i9
+ %115 = load float* %92, align 4 ; [#uses=1]
+ %116 = load float* %93, align 4 ; [#uses=1]
+ %117 = fcmp olt float %115, %116 ; [#uses=1]
+ br i1 %117, label %bb5.backedge, label %bb3.i
+
+bb3.i: ; preds = %bb2.i10
+ %118 = load float* %94, align 8 ; [#uses=1]
+ %119 = load float* %95, align 8 ; [#uses=1]
+ %120 = fcmp ogt float %118, %119 ; [#uses=1]
+ br i1 %120, label %bb5.backedge, label %_ZNK6btAABB13has_collisionERKS_.exit
+
+_ZNK6btAABB13has_collisionERKS_.exit: ; preds = %bb3.i
+ %121 = load float* %96, align 8 ; [#uses=1]
+ %122 = load float* %97, align 8 ; [#uses=1]
+ %phitmp = fcmp olt float %121, %122 ; [#uses=1]
+ br i1 %phitmp, label %bb5.backedge, label %bb4
+
+bb4: ; preds = %_ZNK6btAABB13has_collisionERKS_.exit
+ %123 = load i32* %98, align 4 ; [#uses=6]
+ %124 = load i32* %99, align 4 ; [#uses=2]
+ %125 = icmp eq i32 %124, %123 ; [#uses=1]
+ br i1 %125, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb4
+ %126 = icmp eq i32 %123, 0 ; [#uses=1]
+ %127 = shl i32 %123, 1 ; [#uses=1]
+ %iftmp.488.0.i.i = select i1 %126, i32 1, i32 %127 ; [#uses=4]
+ %128 = icmp slt i32 %124, %iftmp.488.0.i.i ; [#uses=1]
+ br i1 %128, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %129 = icmp eq i32 %iftmp.488.0.i.i, 0 ; [#uses=1]
+ br i1 %129, label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %130 = shl i32 %iftmp.488.0.i.i, 2 ; [#uses=1]
+ %131 = call i8* @_Z22btAlignedAllocInternalji(i32 %130, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %131 to i32* ; [#uses=1]
+ %.pre.i = load i32* %98, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %132 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %123, %bb.i.i ] ; [#uses=2]
+ %133 = phi i32* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %134 = icmp sgt i32 %132, 0 ; [#uses=1]
+ br i1 %134, label %bb.i4.i.i, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %indvar.i.i.i = phi i32 [ %indvar.next.i.i.i, %bb3.i.i.i ], [ 0, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr i32* %133, i32 %indvar.i.i.i ; [#uses=2]
+ %135 = icmp eq i32* %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %135, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %136 = load i32** %100, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr i32* %136, i32 %indvar.i.i.i ; [#uses=1]
+ %137 = load i32* %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store i32 %137, i32* %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %132 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %138 = load i32** %100, align 4 ; [#uses=2]
+ %139 = icmp eq i32* %138, null ; [#uses=1]
+ br i1 %139, label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+ %140 = load i8* %101, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %140, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %141 = bitcast i32* %138 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %141)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %100, align 4
+ br label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+ store i8 1, i8* %101, align 4
+ store i32* %133, i32** %100, align 4
+ store i32 %iftmp.488.0.i.i, i32* %99, align 4
+ %.pre5.i = load i32* %98, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, %bb.i, %bb4
+ %142 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i ], [ %123, %bb4 ], [ %123, %bb.i ] ; [#uses=2]
+ %143 = load i32** %100, align 4 ; [#uses=1]
+ %144 = getelementptr inbounds i32* %143, i32 %142 ; [#uses=2]
+ %145 = icmp eq i32* %144, null ; [#uses=1]
+ br i1 %145, label %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store i32 %tmp14, i32* %144, align 4
+ %.pre6.i = load i32* %98, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit
+
+_ZN20btAlignedObjectArrayIiE9push_backERKi.exit: ; preds = %bb2.i, %bb1.i
+ %146 = phi i32 [ %142, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %147 = add nsw i32 %146, 1 ; [#uses=1]
+ store i32 %147, i32* %98, align 4
+ br label %bb5.backedge
+
+bb5.backedge: ; preds = %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit, %_ZNK6btAABB13has_collisionERKS_.exit, %bb3.i, %bb2.i10, %bb1.i9, %bb.i8, %bb2
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond12 = icmp eq i32 %indvar.next, %82 ; [#uses=1]
+ br i1 %exitcond12, label %return, label %bb2
+
+return: ; preds = %bb5.backedge, %bb1
+ ret void
+}
+
+; [#uses=5]
+define void @_ZN27btGImpactCollisionAlgorithm16gimpact_vs_shapeEP17btCollisionObjectS1_P23btGImpactShapeInterfaceP16btCollisionShapeb(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactShapeInterface* %shape0, %struct.btCollisionShape* %shape1, i8 zeroext %swapped) align 2 {
+entry:
+ %0 = alloca %struct.btTransform, align 8 ; [#uses=13]
+ %orgtrans0 = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %orgtrans1 = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %collided_results = alloca %"struct.btAlignedObjectArray<int>", align 8 ; [#uses=5]
+ %retriever0 = alloca %struct.GIM_ShapeRetriever, align 8 ; [#uses=20]
+ %1 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape0, i32 0, i32 0, i32 0, i32 0 ; [#uses=6]
+ %2 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds i32 (...)** %2, i32 19 ; [#uses=1]
+ %4 = load i32 (...)** %3, align 4 ; [#uses=1]
+ %5 = bitcast i32 (...)* %4 to i32 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %6 = call i32 %5(%struct.btGImpactShapeInterface* %shape0) ; [#uses=1]
+ %7 = icmp eq i32 %6, 2 ; [#uses=1]
+ br i1 %7, label %bb, label %bb8
+
+bb: ; preds = %entry
+ %toBool1 = icmp eq i8 %swapped, 0 ; [#uses=1]
+ br i1 %toBool1, label %bb3, label %bb2
+
+bb2: ; preds = %bb
+ %8 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 8 ; [#uses=1]
+ br label %bb4
+
+bb3: ; preds = %bb
+ %9 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 6 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %iftmp.407.0 = phi i32* [ %8, %bb2 ], [ %9, %bb3 ] ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = bitcast i8** %10 to i32* ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %13 = add nsw i32 %12, -1 ; [#uses=3]
+ store i32 %13, i32* %iftmp.407.0, align 4
+ %14 = icmp eq i32 %13, -1 ; [#uses=1]
+ br i1 %14, label %_ZN20btAlignedObjectArrayIiED1Ev.exit87, label %bb.nph
+
+bb.nph: ; preds = %bb4
+ %15 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape0, i32 1, i32 1 ; [#uses=1]
+ %16 = bitcast %struct.GIM_AABB* %15 to %struct.btGImpactMeshShapePart*** ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb5, %bb.nph
+ %17 = phi i32 [ %13, %bb.nph ], [ %23, %bb5 ] ; [#uses=1]
+ %18 = load %struct.btGImpactMeshShapePart*** %16, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btGImpactMeshShapePart** %18, i32 %17 ; [#uses=1]
+ %20 = load %struct.btGImpactMeshShapePart** %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btGImpactMeshShapePart* %20, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN27btGImpactCollisionAlgorithm16gimpact_vs_shapeEP17btCollisionObjectS1_P23btGImpactShapeInterfaceP16btCollisionShapeb(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactShapeInterface* %21, %struct.btCollisionShape* %shape1, i8 zeroext %swapped)
+ %22 = load i32* %iftmp.407.0, align 4 ; [#uses=1]
+ %23 = add nsw i32 %22, -1 ; [#uses=3]
+ store i32 %23, i32* %iftmp.407.0, align 4
+ %24 = icmp eq i32 %23, -1 ; [#uses=1]
+ br i1 %24, label %_ZN20btAlignedObjectArrayIiED1Ev.exit87, label %bb5
+
+bb8: ; preds = %entry
+ %25 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds i32 (...)** %25, i32 19 ; [#uses=1]
+ %27 = load i32 (...)** %26, align 4 ; [#uses=1]
+ %28 = bitcast i32 (...)* %27 to i32 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %29 = call i32 %28(%struct.btGImpactShapeInterface* %shape0) ; [#uses=1]
+ %30 = icmp eq i32 %29, 1 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btCollisionShape* %shape1, i32 0, i32 1 ; [#uses=1]
+ %32 = load i32* %31, align 4 ; [#uses=3]
+ %33 = icmp eq i32 %32, 28 ; [#uses=1]
+ %or.cond = and i1 %30, %33 ; [#uses=1]
+ br i1 %or.cond, label %bb14, label %bb11
+
+bb11: ; preds = %bb8
+ %34 = icmp eq i32 %32, 31 ; [#uses=1]
+ br i1 %34, label %bb17, label %bb18
+
+bb14: ; preds = %bb8
+ %35 = bitcast %struct.btGImpactShapeInterface* %shape0 to %struct.btGImpactMeshShapePart* ; [#uses=1]
+ %36 = bitcast %struct.btCollisionShape* %shape1 to %struct.btStaticPlaneShape* ; [#uses=1]
+ call void @_ZN27btGImpactCollisionAlgorithm37gimpacttrimeshpart_vs_plane_collisionEP17btCollisionObjectS1_P22btGImpactMeshShapePartP18btStaticPlaneShapeb(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactMeshShapePart* %35, %struct.btStaticPlaneShape* %36, i8 zeroext %swapped)
+ ret void
+
+bb17: ; preds = %bb11
+ %37 = bitcast %struct.btCollisionShape* %shape1 to %struct.btCompoundShape* ; [#uses=1]
+ call void @_ZN27btGImpactCollisionAlgorithm24gimpact_vs_compoundshapeEP17btCollisionObjectS1_P23btGImpactShapeInterfaceP15btCompoundShapeb(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactShapeInterface* %shape0, %struct.btCompoundShape* %37, i8 zeroext %swapped)
+ ret void
+
+bb18: ; preds = %bb11
+ %38 = add i32 %32, -21 ; [#uses=1]
+ %39 = icmp ult i32 %38, 9 ; [#uses=1]
+ br i1 %39, label %bb20, label %bb21
+
+bb20: ; preds = %bb18
+ %40 = bitcast %struct.btCollisionShape* %shape1 to %struct.btConcaveShape* ; [#uses=1]
+ call void @_ZN27btGImpactCollisionAlgorithm18gimpact_vs_concaveEP17btCollisionObjectS1_P23btGImpactShapeInterfaceP14btConcaveShapeb(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactShapeInterface* %shape0, %struct.btConcaveShape* %40, i8 zeroext %swapped)
+ ret void
+
+bb21: ; preds = %bb18
+ %41 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %42 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 8
+ %44 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %45 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %48 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 8
+ %50 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %51 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=3]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %54 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 8
+ %56 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %57 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ store float %58, float* %56, align 4
+ %59 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %60 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %59, align 8
+ %62 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %63 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ store float %64, float* %62, align 4
+ %65 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %66 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ store float %67, float* %65, align 8
+ %68 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %69 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %72 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %71, align 8
+ %74 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %75 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=3]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ store float %76, float* %74, align 4
+ %77 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %78 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=3]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ store float %79, float* %77, align 8
+ %80 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %81 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=3]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ store float %82, float* %80, align 4
+ %83 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %84 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=3]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ store float %85, float* %83, align 8
+ %86 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %87 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=3]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ store float %88, float* %86, align 4
+ %89 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ store float %91, float* %89, align 8
+ %92 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ store float %94, float* %92, align 4
+ %95 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ store float %97, float* %95, align 8
+ %98 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %100 = load float* %99, align 4 ; [#uses=1]
+ store float %100, float* %98, align 4
+ %101 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %103 = load float* %102, align 4 ; [#uses=1]
+ store float %103, float* %101, align 8
+ %104 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %106 = load float* %105, align 4 ; [#uses=1]
+ store float %106, float* %104, align 4
+ %107 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ store float %109, float* %107, align 8
+ %110 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ store float %112, float* %110, align 4
+ %113 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=1]
+ store float %115, float* %113, align 8
+ %116 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %118 = load float* %117, align 4 ; [#uses=1]
+ store float %118, float* %116, align 4
+ %119 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %121 = load float* %120, align 4 ; [#uses=1]
+ store float %121, float* %119, align 8
+ %122 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %124 = load float* %123, align 4 ; [#uses=1]
+ store float %124, float* %122, align 4
+ %125 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %126 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %127 = load float* %126, align 4 ; [#uses=1]
+ store float %127, float* %125, align 8
+ %128 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=1]
+ store float %130, float* %128, align 4
+ %131 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %132 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %133 = load float* %132, align 4 ; [#uses=1]
+ store float %133, float* %131, align 8
+ %134 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %136 = load float* %135, align 4 ; [#uses=1]
+ store float %136, float* %134, align 4
+ %137 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 4 ; [#uses=4]
+ store i8 1, i8* %137, align 8
+ %138 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 3 ; [#uses=7]
+ store i32* null, i32** %138, align 4
+ %139 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 1 ; [#uses=4]
+ store i32 0, i32* %139, align 4
+ %140 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 2 ; [#uses=2]
+ store i32 0, i32* %140, align 8
+ invoke void @_ZN27btGImpactCollisionAlgorithm27gimpact_vs_shape_find_pairsERK11btTransformS2_P23btGImpactShapeInterfaceP16btCollisionShapeR20btAlignedObjectArrayIiE(%struct.btGImpactCollisionAlgorithm* %this, %struct.btTransform* %orgtrans0, %struct.btTransform* %orgtrans1, %struct.btGImpactShapeInterface* %shape0, %struct.btCollisionShape* %shape1, %"struct.btAlignedObjectArray<int>"* %collided_results)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb21
+ %141 = load i32* %139, align 4 ; [#uses=1]
+ %142 = icmp eq i32 %141, 0 ; [#uses=1]
+ br i1 %142, label %bb61, label %bb24
+
+bb24: ; preds = %invcont
+ %143 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %144 = getelementptr inbounds i32 (...)** %143, i32 27 ; [#uses=1]
+ %145 = load i32 (...)** %144, align 4 ; [#uses=1]
+ %146 = bitcast i32 (...)* %145 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ invoke void %146(%struct.btGImpactShapeInterface* %shape0)
+ to label %invcont25 unwind label %lpad
+
+invcont25: ; preds = %bb24
+ invoke void @_ZN18GIM_ShapeRetrieverC2EP23btGImpactShapeInterface(%struct.GIM_ShapeRetriever* %retriever0, %struct.btGImpactShapeInterface* %shape0)
+ to label %invcont26 unwind label %lpad
+
+invcont26: ; preds = %invcont25
+ %147 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %148 = getelementptr inbounds i32 (...)** %147, i32 22 ; [#uses=1]
+ %149 = load i32 (...)** %148, align 4 ; [#uses=1]
+ %150 = bitcast i32 (...)* %149 to i8 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %151 = invoke zeroext i8 %150(%struct.btGImpactShapeInterface* %shape0)
+ to label %invcont27 unwind label %lpad65 ; [#uses=1]
+
+invcont27: ; preds = %invcont26
+ %152 = load i32* %139, align 4 ; [#uses=1]
+ %toBool29 = icmp eq i8 %swapped, 0 ; [#uses=2]
+ %153 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 6 ; [#uses=1]
+ %toBool34 = icmp eq i8 %151, 0 ; [#uses=2]
+ %155 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %156 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %157 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %160 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %163 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 7 ; [#uses=1]
+ %tmp106 = add i32 %152, -1 ; [#uses=1]
+ br label %bb47
+
+bb28: ; preds = %bb47
+ %168 = load i32** %138, align 4 ; [#uses=1]
+ %scevgep = getelementptr i32* %168, i32 %tmp107 ; [#uses=1]
+ %169 = load i32* %scevgep, align 4 ; [#uses=4]
+ br i1 %toBool29, label %bb31, label %bb30
+
+bb30: ; preds = %bb28
+ store i32 %169, i32* %167, align 4
+ br label %bb32
+
+bb31: ; preds = %bb28
+ store i32 %169, i32* %153, align 4
+ br label %bb32
+
+bb32: ; preds = %bb31, %bb30
+ %170 = load %"struct.GIM_ShapeRetriever::ChildShapeRetriever"** %154, align 4 ; [#uses=2]
+ %171 = getelementptr inbounds %"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %170, i32 0, i32 0 ; [#uses=1]
+ %172 = load i32 (...)*** %171, align 4 ; [#uses=1]
+ %173 = load i32 (...)** %172, align 4 ; [#uses=1]
+ %174 = bitcast i32 (...)* %173 to %struct.btCollisionShape* (%"struct.GIM_ShapeRetriever::ChildShapeRetriever"*, i32)* ; [#uses=1]
+ %175 = invoke %struct.btCollisionShape* %174(%"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %170, i32 %169)
+ to label %invcont33 unwind label %lpad65 ; [#uses=2]
+
+invcont33: ; preds = %bb32
+ br i1 %toBool34, label %bb38, label %bb35
+
+bb35: ; preds = %invcont33
+ %176 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %177 = getelementptr inbounds i32 (...)** %176, i32 32 ; [#uses=1]
+ %178 = load i32 (...)** %177, align 4 ; [#uses=1]
+ %179 = bitcast i32 (...)* %178 to void (%struct.btTransform*, %struct.btGImpactShapeInterface*, i32)* ; [#uses=1]
+ invoke void %179(%struct.btTransform* noalias sret %0, %struct.btGImpactShapeInterface* %shape0, i32 %169)
+ to label %invcont37 unwind label %lpad65
+
+invcont37: ; preds = %bb35
+ %180 = load float* %65, align 8 ; [#uses=4]
+ %181 = load float* %155, align 8 ; [#uses=3]
+ %182 = load float* %68, align 4 ; [#uses=4]
+ %183 = load float* %156, align 4 ; [#uses=3]
+ %184 = load float* %71, align 8 ; [#uses=4]
+ %185 = load float* %157, align 8 ; [#uses=3]
+ %186 = load float* %53, align 8 ; [#uses=4]
+ %187 = load float* %56, align 4 ; [#uses=4]
+ %188 = load float* %59, align 8 ; [#uses=4]
+ %189 = load float* %41, align 8 ; [#uses=4]
+ %190 = load float* %44, align 4 ; [#uses=4]
+ %191 = load float* %47, align 8 ; [#uses=4]
+ %192 = load float* %158, align 8 ; [#uses=3]
+ %193 = load float* %159, align 8 ; [#uses=3]
+ %194 = load float* %160, align 8 ; [#uses=3]
+ %195 = load float* %161, align 4 ; [#uses=3]
+ %196 = load float* %162, align 4 ; [#uses=3]
+ %197 = load float* %163, align 4 ; [#uses=3]
+ %198 = load float* %164, align 8 ; [#uses=3]
+ %199 = load float* %165, align 8 ; [#uses=3]
+ %200 = load float* %166, align 8 ; [#uses=3]
+ %201 = fmul float %190, %183 ; [#uses=1]
+ %202 = fmul float %189, %181 ; [#uses=1]
+ %203 = fmul float %187, %183 ; [#uses=1]
+ %204 = fmul float %186, %181 ; [#uses=1]
+ %205 = fmul float %182, %183 ; [#uses=1]
+ %206 = fmul float %180, %181 ; [#uses=1]
+ %207 = fmul float %199, %190 ; [#uses=1]
+ %208 = fmul float %198, %189 ; [#uses=1]
+ %209 = fmul float %196, %190 ; [#uses=1]
+ %210 = fmul float %195, %189 ; [#uses=1]
+ %211 = fmul float %193, %190 ; [#uses=1]
+ %212 = fmul float %192, %189 ; [#uses=1]
+ %213 = fmul float %199, %187 ; [#uses=1]
+ %214 = fmul float %198, %186 ; [#uses=1]
+ %215 = fmul float %196, %187 ; [#uses=1]
+ %216 = fmul float %195, %186 ; [#uses=1]
+ %217 = fmul float %193, %187 ; [#uses=1]
+ %218 = fmul float %192, %186 ; [#uses=1]
+ %219 = fmul float %199, %182 ; [#uses=1]
+ %220 = fmul float %198, %180 ; [#uses=1]
+ %221 = fmul float %196, %182 ; [#uses=1]
+ %222 = fmul float %195, %180 ; [#uses=1]
+ %223 = fmul float %193, %182 ; [#uses=1]
+ %224 = fmul float %192, %180 ; [#uses=1]
+ %225 = fmul float %191, %185 ; [#uses=1]
+ %226 = fadd float %202, %201 ; [#uses=1]
+ %227 = fmul float %188, %185 ; [#uses=1]
+ %228 = fadd float %204, %203 ; [#uses=1]
+ %229 = fmul float %184, %185 ; [#uses=1]
+ %230 = fadd float %206, %205 ; [#uses=1]
+ %231 = fmul float %200, %191 ; [#uses=1]
+ %232 = fadd float %208, %207 ; [#uses=1]
+ %233 = fmul float %197, %191 ; [#uses=1]
+ %234 = fadd float %210, %209 ; [#uses=1]
+ %235 = fmul float %194, %191 ; [#uses=1]
+ %236 = fadd float %212, %211 ; [#uses=1]
+ %237 = fmul float %200, %188 ; [#uses=1]
+ %238 = fadd float %214, %213 ; [#uses=1]
+ %239 = fmul float %197, %188 ; [#uses=1]
+ %240 = fadd float %216, %215 ; [#uses=1]
+ %241 = fmul float %194, %188 ; [#uses=1]
+ %242 = fadd float %218, %217 ; [#uses=1]
+ %243 = fmul float %200, %184 ; [#uses=1]
+ %244 = fadd float %220, %219 ; [#uses=1]
+ %245 = fmul float %197, %184 ; [#uses=1]
+ %246 = fadd float %222, %221 ; [#uses=1]
+ %247 = fmul float %194, %184 ; [#uses=1]
+ %248 = fadd float %224, %223 ; [#uses=1]
+ %249 = load float* %77, align 8 ; [#uses=1]
+ %250 = fadd float %226, %225 ; [#uses=1]
+ %251 = load float* %80, align 4 ; [#uses=1]
+ %252 = fadd float %228, %227 ; [#uses=1]
+ %253 = load float* %83, align 8 ; [#uses=1]
+ %254 = fadd float %230, %229 ; [#uses=1]
+ %255 = fadd float %232, %231 ; [#uses=1]
+ %256 = fadd float %234, %233 ; [#uses=1]
+ %257 = fadd float %236, %235 ; [#uses=1]
+ %258 = fadd float %238, %237 ; [#uses=1]
+ %259 = fadd float %240, %239 ; [#uses=1]
+ %260 = fadd float %242, %241 ; [#uses=1]
+ %261 = fadd float %244, %243 ; [#uses=1]
+ %262 = fadd float %246, %245 ; [#uses=1]
+ %263 = fadd float %248, %247 ; [#uses=1]
+ %264 = fadd float %250, %249 ; [#uses=1]
+ %265 = fadd float %252, %251 ; [#uses=1]
+ %266 = fadd float %254, %253 ; [#uses=1]
+ store float %255, float* %42, align 4
+ store float %256, float* %45, align 4
+ store float %257, float* %48, align 4
+ store float 0.000000e+00, float* %51, align 4
+ store float %258, float* %54, align 4
+ store float %259, float* %57, align 4
+ store float %260, float* %60, align 4
+ store float 0.000000e+00, float* %63, align 4
+ store float %261, float* %66, align 4
+ store float %262, float* %69, align 4
+ store float %263, float* %72, align 4
+ store float 0.000000e+00, float* %75, align 4
+ store float %264, float* %78, align 4
+ store float %265, float* %81, align 4
+ store float %266, float* %84, align 4
+ store float 0.000000e+00, float* %87, align 4
+ br label %bb38
+
+bb38: ; preds = %invcont37, %invcont33
+ br i1 %toBool29, label %bb42, label %bb40
+
+bb40: ; preds = %bb38
+ invoke void @_ZN27btGImpactCollisionAlgorithm24shape_vs_shape_collisionEP17btCollisionObjectS1_P16btCollisionShapeS3_(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0, %struct.btCollisionShape* %shape1, %struct.btCollisionShape* %175)
+ to label %bb44 unwind label %lpad65
+
+bb42: ; preds = %bb38
+ invoke void @_ZN27btGImpactCollisionAlgorithm24shape_vs_shape_collisionEP17btCollisionObjectS1_P16btCollisionShapeS3_(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btCollisionShape* %175, %struct.btCollisionShape* %shape1)
+ to label %bb44 unwind label %lpad65
+
+bb44: ; preds = %bb42, %bb40
+ br i1 %toBool34, label %bb47.backedge, label %bb46
+
+bb46: ; preds = %bb44
+ %267 = load float* %41, align 8 ; [#uses=1]
+ store float %267, float* %42, align 4
+ %268 = load float* %44, align 4 ; [#uses=1]
+ store float %268, float* %45, align 4
+ %269 = load float* %47, align 8 ; [#uses=1]
+ store float %269, float* %48, align 4
+ %270 = load float* %50, align 4 ; [#uses=1]
+ store float %270, float* %51, align 4
+ %271 = load float* %53, align 8 ; [#uses=1]
+ store float %271, float* %54, align 4
+ %272 = load float* %56, align 4 ; [#uses=1]
+ store float %272, float* %57, align 4
+ %273 = load float* %59, align 8 ; [#uses=1]
+ store float %273, float* %60, align 4
+ %274 = load float* %62, align 4 ; [#uses=1]
+ store float %274, float* %63, align 4
+ %275 = load float* %65, align 8 ; [#uses=1]
+ store float %275, float* %66, align 4
+ %276 = load float* %68, align 4 ; [#uses=1]
+ store float %276, float* %69, align 4
+ %277 = load float* %71, align 8 ; [#uses=1]
+ store float %277, float* %72, align 4
+ %278 = load float* %74, align 4 ; [#uses=1]
+ store float %278, float* %75, align 4
+ %279 = load float* %77, align 8 ; [#uses=1]
+ store float %279, float* %78, align 4
+ %280 = load float* %80, align 4 ; [#uses=1]
+ store float %280, float* %81, align 4
+ %281 = load float* %83, align 8 ; [#uses=1]
+ store float %281, float* %84, align 4
+ %282 = load float* %86, align 4 ; [#uses=1]
+ store float %282, float* %87, align 4
+ br label %bb47.backedge
+
+bb47.backedge: ; preds = %bb46, %bb44
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb47
+
+bb47: ; preds = %bb47.backedge, %invcont27
+ %indvar = phi i32 [ %indvar.next, %bb47.backedge ], [ 0, %invcont27 ] ; [#uses=2]
+ %tmp107 = sub i32 %tmp106, %indvar ; [#uses=2]
+ %283 = icmp eq i32 %tmp107, -1 ; [#uses=1]
+ br i1 %283, label %bb49, label %bb28
+
+bb49: ; preds = %bb47
+ %284 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %285 = getelementptr inbounds i32 (...)** %284, i32 28 ; [#uses=1]
+ %286 = load i32 (...)** %285, align 4 ; [#uses=1]
+ %287 = bitcast i32 (...)* %286 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ invoke void %287(%struct.btGImpactShapeInterface* %shape0)
+ to label %bb54 unwind label %lpad65
+
+bb54: ; preds = %bb49
+ %288 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19TetraShapeRetrieverE, i32 0, i32 2), i32 (...)*** %288, align 4
+ %289 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever22TriangleShapeRetrieverE, i32 0, i32 2), i32 (...)*** %289, align 4
+ %290 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19ChildShapeRetrieverE, i32 0, i32 2), i32 (...)*** %290, align 4
+ %291 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %291, align 8
+ %292 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %292)
+ to label %bb3.i92 unwind label %lpad.i95
+
+invcont1.i91: ; preds = %lpad.i95
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i93)
+ to label %.noexc99 unwind label %lpad
+
+.noexc99: ; preds = %invcont1.i91
+ unreachable
+
+bb3.i92: ; preds = %bb54
+ %293 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %293, align 4
+ %294 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %294)
+ to label %bb61 unwind label %lpad
+
+lpad.i95: ; preds = %bb54
+ %eh_ptr.i93 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6.i94 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i93, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %295 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %295, align 4
+ %296 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %296)
+ to label %invcont1.i91 unwind label %lpad7.i98
+
+lpad7.i98: ; preds = %lpad.i95
+ %eh_ptr8.i96 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10.i97 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8.i96, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+invcont59: ; preds = %bb2.i.i.i, %ppad
+ store i8 1, i8* %137, align 8
+ store i32* null, i32** %138, align 4
+ store i32 0, i32* %139, align 4
+ store i32 0, i32* %140, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb61: ; preds = %bb3.i92, %invcont
+ %297 = load i32** %138, align 4 ; [#uses=2]
+ %298 = icmp eq i32* %297, null ; [#uses=1]
+ br i1 %298, label %_ZN20btAlignedObjectArrayIiED1Ev.exit87, label %bb.i.i.i84
+
+bb.i.i.i84: ; preds = %bb61
+ %299 = load i8* %137, align 8 ; [#uses=1]
+ %toBool.i.i.i83 = icmp eq i8 %299, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i83, label %bb2.i.i.i86, label %bb1.i.i.i85
+
+bb1.i.i.i85: ; preds = %bb.i.i.i84
+ %300 = bitcast i32* %297 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %300)
+ br label %bb2.i.i.i86
+
+bb2.i.i.i86: ; preds = %bb1.i.i.i85, %bb.i.i.i84
+ store i32* null, i32** %138, align 4
+ ret void
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit87: ; preds = %bb61, %bb5, %bb4
+ ret void
+
+lpad: ; preds = %bb3.i92, %invcont1.i91, %invcont25, %bb24, %bb21
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select64 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad65: ; preds = %bb49, %bb42, %bb40, %bb35, %bb32, %invcont26
+ %eh_ptr66 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select68 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr66, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %301 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19TetraShapeRetrieverE, i32 0, i32 2), i32 (...)*** %301, align 4
+ %302 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever22TriangleShapeRetrieverE, i32 0, i32 2), i32 (...)*** %302, align 4
+ %303 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19ChildShapeRetrieverE, i32 0, i32 2), i32 (...)*** %303, align 4
+ %304 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %304, align 8
+ %305 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %305)
+ to label %bb3.i unwind label %lpad.i
+
+invcont1.i: ; preds = %lpad.i
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ to label %.noexc81 unwind label %lpad69
+
+.noexc81: ; preds = %invcont1.i
+ unreachable
+
+bb3.i: ; preds = %lpad65
+ %306 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %306, align 4
+ %307 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %307)
+ to label %ppad unwind label %lpad69
+
+lpad.i: ; preds = %lpad65
+ %eh_ptr.i = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6.i = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %308 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %308, align 4
+ %309 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %309)
+ to label %invcont1.i unwind label %lpad7.i
+
+lpad7.i: ; preds = %lpad.i
+ %eh_ptr8.i = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10.i = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad69: ; preds = %bb3.i, %invcont1.i
+ %eh_ptr70 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select72 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr70, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad73: ; preds = %bb1.i.i.i
+ %eh_ptr74 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select76 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr74, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb3.i, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr66, %bb3.i ] ; [#uses=1]
+ %310 = load i32** %138, align 4 ; [#uses=2]
+ %311 = icmp eq i32* %310, null ; [#uses=1]
+ br i1 %311, label %invcont59, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %ppad
+ %312 = load i8* %137, align 8 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %312, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %313 = bitcast i32* %310 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %313)
+ to label %bb2.i.i.i unwind label %lpad73
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %138, align 4
+ br label %invcont59
+}
+
+; [#uses=1]
+define void @_ZN27btGImpactCollisionAlgorithm24gimpact_vs_compoundshapeEP17btCollisionObjectS1_P23btGImpactShapeInterfaceP15btCompoundShapeb(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactShapeInterface* %shape0, %struct.btCompoundShape* nocapture %shape1, i8 zeroext %swapped) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load float* %0, align 4 ; [#uses=5]
+ %2 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %3 = load float* %2, align 4 ; [#uses=5]
+ %4 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %5 = load float* %4, align 4 ; [#uses=5]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=3]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %9 = load float* %8, align 4 ; [#uses=5]
+ %10 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %11 = load float* %10, align 4 ; [#uses=5]
+ %12 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %13 = load float* %12, align 4 ; [#uses=5]
+ %14 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %17 = load float* %16, align 4 ; [#uses=5]
+ %18 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %19 = load float* %18, align 4 ; [#uses=5]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %21 = load float* %20, align 4 ; [#uses=5]
+ %22 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=3]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=3]
+ %25 = load float* %24, align 4 ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=3]
+ %27 = load float* %26, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=3]
+ %29 = load float* %28, align 4 ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=3]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btCompoundShape* %shape1, i32 0, i32 1, i32 1 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=4]
+ %34 = icmp eq i32 %33, 0 ; [#uses=1]
+ br i1 %34, label %return, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %35 = getelementptr inbounds %struct.btCompoundShape* %shape1, i32 0, i32 1, i32 3 ; [#uses=1]
+ %tmp25 = add i32 %33, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb ] ; [#uses=3]
+ %tmp13 = sub i32 %33, %indvar ; [#uses=12]
+ %tmp26 = sub i32 %tmp25, %indvar ; [#uses=1]
+ %36 = load %struct.btCompoundShapeChild** %35, align 4 ; [#uses=13]
+ %scevgep = getelementptr %struct.btCompoundShapeChild* %36, i32 %tmp13, i32 0, i32 0, i32 0, i32 -1 ; [#uses=1]
+ %scevgep14 = bitcast %struct.btQuadWord* %scevgep to %struct.btCollisionShape** ; [#uses=1]
+ %37 = load %struct.btCollisionShape** %scevgep14, align 4 ; [#uses=1]
+ %scevgep1516 = getelementptr %struct.btCompoundShapeChild* %36, i32 %tmp13, i32 0, i32 0, i32 0, i32 -2, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %scevgep1516, align 4 ; [#uses=3]
+ %39 = fmul float %17, %38 ; [#uses=1]
+ %scevgep17 = getelementptr %struct.btCompoundShapeChild* %36, i32 %tmp13, i32 0, i32 0, i32 0, i32 -1, i32 0, i32 -3 ; [#uses=1]
+ %40 = load float* %scevgep17, align 4 ; [#uses=3]
+ %41 = fmul float %19, %40 ; [#uses=1]
+ %42 = fadd float %39, %41 ; [#uses=1]
+ %scevgep18 = getelementptr %struct.btCompoundShapeChild* %36, i32 %tmp13, i32 0, i32 0, i32 0, i32 -1, i32 0, i32 -2 ; [#uses=1]
+ %43 = load float* %scevgep18, align 4 ; [#uses=3]
+ %44 = fmul float %21, %43 ; [#uses=1]
+ %45 = fadd float %42, %44 ; [#uses=1]
+ %46 = fadd float %45, %29 ; [#uses=1]
+ %47 = fmul float %9, %38 ; [#uses=1]
+ %48 = fmul float %11, %40 ; [#uses=1]
+ %49 = fadd float %47, %48 ; [#uses=1]
+ %50 = fmul float %13, %43 ; [#uses=1]
+ %51 = fadd float %49, %50 ; [#uses=1]
+ %52 = fadd float %51, %27 ; [#uses=1]
+ %53 = fmul float %1, %38 ; [#uses=1]
+ %54 = fmul float %3, %40 ; [#uses=1]
+ %55 = fadd float %53, %54 ; [#uses=1]
+ %56 = fmul float %5, %43 ; [#uses=1]
+ %57 = fadd float %55, %56 ; [#uses=1]
+ %58 = fadd float %57, %25 ; [#uses=1]
+ %scevgep19 = getelementptr %struct.btCompoundShapeChild* %36, i32 %tmp13, i32 0, i32 0, i32 0, i32 -4, i32 0, i32 -2 ; [#uses=1]
+ %59 = load float* %scevgep19, align 4 ; [#uses=3]
+ %60 = fmul float %59, %17 ; [#uses=1]
+ %scevgep20 = getelementptr %struct.btCompoundShapeChild* %36, i32 %tmp13, i32 0, i32 0, i32 0, i32 -3, i32 0, i32 -2 ; [#uses=1]
+ %61 = load float* %scevgep20, align 4 ; [#uses=3]
+ %62 = fmul float %61, %19 ; [#uses=1]
+ %63 = fadd float %60, %62 ; [#uses=1]
+ %scevgep21 = getelementptr %struct.btCompoundShapeChild* %36, i32 %tmp13, i32 0, i32 0, i32 0, i32 -2, i32 0, i32 -2 ; [#uses=1]
+ %64 = load float* %scevgep21, align 4 ; [#uses=3]
+ %65 = fmul float %64, %21 ; [#uses=1]
+ %66 = fadd float %63, %65 ; [#uses=1]
+ %scevgep22 = getelementptr %struct.btCompoundShapeChild* %36, i32 %tmp13, i32 0, i32 0, i32 0, i32 -4, i32 0, i32 -3 ; [#uses=1]
+ %67 = load float* %scevgep22, align 4 ; [#uses=3]
+ %68 = fmul float %67, %17 ; [#uses=1]
+ %scevgep23 = getelementptr %struct.btCompoundShapeChild* %36, i32 %tmp13, i32 0, i32 0, i32 0, i32 -3, i32 0, i32 -3 ; [#uses=1]
+ %69 = load float* %scevgep23, align 4 ; [#uses=3]
+ %70 = fmul float %69, %19 ; [#uses=1]
+ %71 = fadd float %68, %70 ; [#uses=1]
+ %scevgep24 = getelementptr %struct.btCompoundShapeChild* %36, i32 %tmp13, i32 0, i32 0, i32 0, i32 -2, i32 0, i32 -3 ; [#uses=1]
+ %72 = load float* %scevgep24, align 4 ; [#uses=3]
+ %73 = fmul float %72, %21 ; [#uses=1]
+ %74 = fadd float %71, %73 ; [#uses=1]
+ %scevgep2728 = getelementptr inbounds %struct.btCompoundShapeChild* %36, i32 %tmp26, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %75 = load float* %scevgep2728, align 4 ; [#uses=3]
+ %76 = fmul float %75, %17 ; [#uses=1]
+ %scevgep2930 = getelementptr %struct.btCompoundShapeChild* %36, i32 %tmp13, i32 0, i32 0, i32 0, i32 -4, i32 0, i32 0 ; [#uses=1]
+ %77 = load float* %scevgep2930, align 4 ; [#uses=3]
+ %78 = fmul float %77, %19 ; [#uses=1]
+ %79 = fadd float %76, %78 ; [#uses=1]
+ %scevgep3132 = getelementptr %struct.btCompoundShapeChild* %36, i32 %tmp13, i32 0, i32 0, i32 0, i32 -3, i32 0, i32 0 ; [#uses=1]
+ %80 = load float* %scevgep3132, align 4 ; [#uses=3]
+ %81 = fmul float %80, %21 ; [#uses=1]
+ %82 = fadd float %79, %81 ; [#uses=1]
+ %83 = fmul float %59, %9 ; [#uses=1]
+ %84 = fmul float %61, %11 ; [#uses=1]
+ %85 = fadd float %83, %84 ; [#uses=1]
+ %86 = fmul float %64, %13 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=1]
+ %88 = fmul float %67, %9 ; [#uses=1]
+ %89 = fmul float %69, %11 ; [#uses=1]
+ %90 = fadd float %88, %89 ; [#uses=1]
+ %91 = fmul float %72, %13 ; [#uses=1]
+ %92 = fadd float %90, %91 ; [#uses=1]
+ %93 = fmul float %75, %9 ; [#uses=1]
+ %94 = fmul float %77, %11 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %80, %13 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %59, %1 ; [#uses=1]
+ %99 = fmul float %61, %3 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %64, %5 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fmul float %67, %1 ; [#uses=1]
+ %104 = fmul float %69, %3 ; [#uses=1]
+ %105 = fadd float %103, %104 ; [#uses=1]
+ %106 = fmul float %72, %5 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = fmul float %75, %1 ; [#uses=1]
+ %109 = fmul float %77, %3 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = fmul float %80, %5 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=1]
+ store float %112, float* %0, align 4
+ store float %107, float* %2, align 4
+ store float %102, float* %4, align 4
+ store float 0.000000e+00, float* %6, align 4
+ store float %97, float* %8, align 4
+ store float %92, float* %10, align 4
+ store float %87, float* %12, align 4
+ store float 0.000000e+00, float* %14, align 4
+ store float %82, float* %16, align 4
+ store float %74, float* %18, align 4
+ store float %66, float* %20, align 4
+ store float 0.000000e+00, float* %22, align 4
+ store float %58, float* %24, align 4
+ store float %52, float* %26, align 4
+ store float %46, float* %28, align 4
+ store float 0.000000e+00, float* %30, align 4
+ tail call void @_ZN27btGImpactCollisionAlgorithm16gimpact_vs_shapeEP17btCollisionObjectS1_P23btGImpactShapeInterfaceP16btCollisionShapeb(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactShapeInterface* %shape0, %struct.btCollisionShape* %37, i8 zeroext %swapped)
+ store float %1, float* %0, align 4
+ store float %3, float* %2, align 4
+ store float %5, float* %4, align 4
+ store float %7, float* %6, align 4
+ store float %9, float* %8, align 4
+ store float %11, float* %10, align 4
+ store float %13, float* %12, align 4
+ store float %15, float* %14, align 4
+ store float %17, float* %16, align 4
+ store float %19, float* %18, align 4
+ store float %21, float* %20, align 4
+ store float %23, float* %22, align 4
+ store float %25, float* %24, align 4
+ store float %27, float* %26, align 4
+ store float %29, float* %28, align 4
+ store float %31, float* %30, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %33 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN27btGImpactCollisionAlgorithm29gimpact_vs_gimpact_find_pairsERK11btTransformS2_P23btGImpactShapeInterfaceS4_R9btPairSet(%struct.btGImpactCollisionAlgorithm* nocapture %this, %struct.btTransform* %trans0, %struct.btTransform* %trans1, %struct.btGImpactShapeInterface* %shape0, %struct.btGImpactShapeInterface* %shape1, %struct.btPairSet* %pairset) align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %boxshape0 = alloca %struct.GIM_AABB, align 8 ; [#uses=8]
+ %boxshape1 = alloca %struct.GIM_AABB, align 8 ; [#uses=8]
+ %1 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %not..i = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %not..i, label %bb9, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape1, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %not..i23 = icmp eq i32 %4, 0 ; [#uses=1]
+ br i1 %not..i23, label %bb9, label %bb12
+
+bb9: ; preds = %bb, %entry
+ %5 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 21 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to i32 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %10 = call i32 %9(%struct.btGImpactShapeInterface* %shape0) ; [#uses=3]
+ %11 = icmp eq i32 %10, 0 ; [#uses=1]
+ br i1 %11, label %return, label %bb.nph26
+
+bb12: ; preds = %bb
+ %12 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape1, i32 0, i32 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape0, i32 0, i32 4 ; [#uses=1]
+ call void @_ZN21btGImpactQuantizedBvh14find_collisionEPS_RK11btTransformS0_S3_R9btPairSet(%struct.btGImpactBoxSet* %13, %struct.btTransform* %trans0, %struct.btGImpactBoxSet* %12, %struct.btTransform* %trans1, %struct.btPairSet* %pairset)
+ ret void
+
+bb.nph26: ; preds = %bb9
+ %14 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape1, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.GIM_AABB* %boxshape1, i32 0, i32 0 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.GIM_AABB* %boxshape1, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.GIM_AABB* %boxshape1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.GIM_AABB* %boxshape1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.GIM_AABB* %boxshape1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.GIM_AABB* %boxshape1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.GIM_AABB* %boxshape1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.GIM_AABB* %boxshape1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.GIM_AABB* %boxshape0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %0, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %0, i32 0, i32 1 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btPairSet* %pairset, i32 0, i32 0 ; [#uses=1]
+ %tmp33 = add i32 %10, -1 ; [#uses=1]
+ br label %bb14
+
+bb14: ; preds = %bb20.loopexit, %bb.nph26
+ %indvar29 = phi i32 [ 0, %bb.nph26 ], [ %indvar.next30, %bb20.loopexit ] ; [#uses=2]
+ %tmp34 = sub i32 %tmp33, %indvar29 ; [#uses=3]
+ %34 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds i32 (...)** %34, i32 29 ; [#uses=1]
+ %36 = load i32 (...)** %35, align 4 ; [#uses=1]
+ %37 = bitcast i32 (...)* %36 to void (%struct.btGImpactShapeInterface*, i32, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %37(%struct.btGImpactShapeInterface* %shape0, i32 %tmp34, %struct.btTransform* %trans0, %struct.btQuadWord* %14, %struct.btQuadWord* %15)
+ %38 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds i32 (...)** %38, i32 21 ; [#uses=1]
+ %40 = load i32 (...)** %39, align 4 ; [#uses=1]
+ %41 = bitcast i32 (...)* %40 to i32 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %42 = call i32 %41(%struct.btGImpactShapeInterface* %shape1) ; [#uses=3]
+ %43 = icmp eq i32 %42, 0 ; [#uses=1]
+ br i1 %43, label %bb20.loopexit, label %bb.nph
+
+bb.nph: ; preds = %bb14
+ %tmp27 = add i32 %42, -1 ; [#uses=1]
+ br label %bb15
+
+bb15: ; preds = %bb18.backedge, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb18.backedge ] ; [#uses=2]
+ %tmp28 = sub i32 %tmp27, %indvar ; [#uses=1]
+ %44 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds i32 (...)** %44, i32 29 ; [#uses=1]
+ %46 = load i32 (...)** %45, align 4 ; [#uses=1]
+ %47 = bitcast i32 (...)* %46 to void (%struct.btGImpactShapeInterface*, i32, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %47(%struct.btGImpactShapeInterface* %shape1, i32 %tmp34, %struct.btTransform* %trans1, %struct.btQuadWord* %17, %struct.btQuadWord* %18)
+ %48 = load float* %19, align 8 ; [#uses=1]
+ %49 = load float* %20, align 8 ; [#uses=1]
+ %50 = fcmp ogt float %48, %49 ; [#uses=1]
+ br i1 %50, label %bb18.backedge, label %bb.i
+
+bb.i: ; preds = %bb15
+ %51 = load float* %21, align 8 ; [#uses=1]
+ %52 = load float* %22, align 8 ; [#uses=1]
+ %53 = fcmp olt float %51, %52 ; [#uses=1]
+ br i1 %53, label %bb18.backedge, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %54 = load float* %23, align 4 ; [#uses=1]
+ %55 = load float* %24, align 4 ; [#uses=1]
+ %56 = fcmp ogt float %54, %55 ; [#uses=1]
+ br i1 %56, label %bb18.backedge, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %57 = load float* %25, align 4 ; [#uses=1]
+ %58 = load float* %26, align 4 ; [#uses=1]
+ %59 = fcmp olt float %57, %58 ; [#uses=1]
+ br i1 %59, label %bb18.backedge, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %60 = load float* %27, align 8 ; [#uses=1]
+ %61 = load float* %28, align 8 ; [#uses=1]
+ %62 = fcmp ogt float %60, %61 ; [#uses=1]
+ br i1 %62, label %bb18.backedge, label %_ZNK6btAABB13has_collisionERKS_.exit
+
+_ZNK6btAABB13has_collisionERKS_.exit: ; preds = %bb3.i
+ %63 = load float* %29, align 8 ; [#uses=1]
+ %64 = load float* %30, align 8 ; [#uses=1]
+ %phitmp = fcmp olt float %63, %64 ; [#uses=1]
+ br i1 %phitmp, label %bb18.backedge, label %bb17
+
+bb17: ; preds = %_ZNK6btAABB13has_collisionERKS_.exit
+ store i32 %tmp34, i32* %31, align 8
+ store i32 %tmp28, i32* %32, align 4
+ call void @_ZN20btAlignedObjectArrayI8GIM_PAIRE9push_backERKS0_(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %33, %struct.CONTACT_KEY_TOKEN* %0) inlinehint
+ br label %bb18.backedge
+
+bb18.backedge: ; preds = %bb17, %_ZNK6btAABB13has_collisionERKS_.exit, %bb3.i, %bb2.i, %bb1.i, %bb.i, %bb15
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %42 ; [#uses=1]
+ br i1 %exitcond, label %bb20.loopexit, label %bb15
+
+bb20.loopexit: ; preds = %bb18.backedge, %bb14
+ %indvar.next30 = add i32 %indvar29, 1 ; [#uses=2]
+ %exitcond31 = icmp eq i32 %indvar.next30, %10 ; [#uses=1]
+ br i1 %exitcond31, label %return, label %bb14
+
+return: ; preds = %bb20.loopexit, %bb9
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN27btGImpactCollisionAlgorithm18gimpact_vs_gimpactEP17btCollisionObjectS1_P23btGImpactShapeInterfaceS3_(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactShapeInterface* %shape0, %struct.btGImpactShapeInterface* %shape1) align 2 {
+entry:
+ %0 = alloca %struct.btTransform, align 8 ; [#uses=13]
+ %1 = alloca %struct.btTransform, align 8 ; [#uses=13]
+ %orgtrans0 = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %orgtrans1 = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %pairset = alloca %struct.btPairSet, align 8 ; [#uses=12]
+ %retriever0 = alloca %struct.GIM_ShapeRetriever, align 8 ; [#uses=20]
+ %retriever1 = alloca %struct.GIM_ShapeRetriever, align 8 ; [#uses=20]
+ %2 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape0, i32 0, i32 0, i32 0, i32 0 ; [#uses=6]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 19 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i32 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %7 = call i32 %6(%struct.btGImpactShapeInterface* %shape0) ; [#uses=1]
+ %8 = icmp eq i32 %7, 2 ; [#uses=1]
+ br i1 %8, label %bb, label %bb4
+
+bb: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = bitcast i8** %9 to i32* ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ %12 = add nsw i32 %11, -1 ; [#uses=3]
+ %13 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 6 ; [#uses=3]
+ store i32 %12, i32* %13, align 4
+ %14 = icmp eq i32 %12, -1 ; [#uses=1]
+ br i1 %14, label %_ZN9btPairSetD1Ev.exit146, label %bb.nph172
+
+bb.nph172: ; preds = %bb
+ %15 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape0, i32 1, i32 1 ; [#uses=1]
+ %16 = bitcast %struct.GIM_AABB* %15 to %struct.btGImpactMeshShapePart*** ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb1, %bb.nph172
+ %17 = phi i32 [ %12, %bb.nph172 ], [ %23, %bb1 ] ; [#uses=1]
+ %18 = load %struct.btGImpactMeshShapePart*** %16, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btGImpactMeshShapePart** %18, i32 %17 ; [#uses=1]
+ %20 = load %struct.btGImpactMeshShapePart** %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btGImpactMeshShapePart* %20, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN27btGImpactCollisionAlgorithm18gimpact_vs_gimpactEP17btCollisionObjectS1_P23btGImpactShapeInterfaceS3_(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactShapeInterface* %21, %struct.btGImpactShapeInterface* %shape1)
+ %22 = load i32* %13, align 4 ; [#uses=1]
+ %23 = add nsw i32 %22, -1 ; [#uses=3]
+ store i32 %23, i32* %13, align 4
+ %24 = icmp eq i32 %23, -1 ; [#uses=1]
+ br i1 %24, label %_ZN9btPairSetD1Ev.exit146, label %bb1
+
+bb4: ; preds = %entry
+ %25 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape1, i32 0, i32 0, i32 0, i32 0 ; [#uses=6]
+ %26 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds i32 (...)** %26, i32 19 ; [#uses=1]
+ %28 = load i32 (...)** %27, align 4 ; [#uses=1]
+ %29 = bitcast i32 (...)* %28 to i32 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %30 = call i32 %29(%struct.btGImpactShapeInterface* %shape1) ; [#uses=1]
+ %31 = icmp eq i32 %30, 2 ; [#uses=1]
+ br i1 %31, label %bb6, label %bb10
+
+bb6: ; preds = %bb4
+ %32 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape1, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %33 = bitcast i8** %32 to i32* ; [#uses=1]
+ %34 = load i32* %33, align 4 ; [#uses=1]
+ %35 = add nsw i32 %34, -1 ; [#uses=3]
+ %36 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 8 ; [#uses=3]
+ store i32 %35, i32* %36, align 4
+ %37 = icmp eq i32 %35, -1 ; [#uses=1]
+ br i1 %37, label %_ZN9btPairSetD1Ev.exit146, label %bb.nph
+
+bb.nph: ; preds = %bb6
+ %38 = getelementptr inbounds %struct.btGImpactShapeInterface* %shape1, i32 1, i32 1 ; [#uses=1]
+ %39 = bitcast %struct.GIM_AABB* %38 to %struct.btGImpactMeshShapePart*** ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb7, %bb.nph
+ %40 = phi i32 [ %35, %bb.nph ], [ %46, %bb7 ] ; [#uses=1]
+ %41 = load %struct.btGImpactMeshShapePart*** %39, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btGImpactMeshShapePart** %41, i32 %40 ; [#uses=1]
+ %43 = load %struct.btGImpactMeshShapePart** %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btGImpactMeshShapePart* %43, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN27btGImpactCollisionAlgorithm18gimpact_vs_gimpactEP17btCollisionObjectS1_P23btGImpactShapeInterfaceS3_(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactShapeInterface* %shape0, %struct.btGImpactShapeInterface* %44)
+ %45 = load i32* %36, align 4 ; [#uses=1]
+ %46 = add nsw i32 %45, -1 ; [#uses=3]
+ store i32 %46, i32* %36, align 4
+ %47 = icmp eq i32 %46, -1 ; [#uses=1]
+ br i1 %47, label %_ZN9btPairSetD1Ev.exit146, label %bb7
+
+bb10: ; preds = %bb4
+ %48 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %49 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ store float %50, float* %48, align 8
+ %51 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %52 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ store float %53, float* %51, align 4
+ %54 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %55 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ store float %56, float* %54, align 8
+ %57 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %58 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=3]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ store float %59, float* %57, align 4
+ %60 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %61 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ store float %62, float* %60, align 8
+ %63 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %64 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ store float %65, float* %63, align 4
+ %66 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %67 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ store float %68, float* %66, align 8
+ %69 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %70 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ store float %71, float* %69, align 4
+ %72 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %73 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ store float %74, float* %72, align 8
+ %75 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %76 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ store float %77, float* %75, align 4
+ %78 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %79 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ store float %80, float* %78, align 8
+ %81 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %82 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=3]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ store float %83, float* %81, align 4
+ %84 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %85 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=3]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ store float %86, float* %84, align 8
+ %87 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %88 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=3]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ store float %89, float* %87, align 4
+ %90 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %91 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=3]
+ %92 = load float* %91, align 4 ; [#uses=1]
+ store float %92, float* %90, align 8
+ %93 = getelementptr inbounds %struct.btTransform* %orgtrans0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %94 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=3]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ store float %95, float* %93, align 4
+ %96 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %97 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ store float %98, float* %96, align 8
+ %99 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %100 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ store float %101, float* %99, align 4
+ %102 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %103 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %104 = load float* %103, align 4 ; [#uses=1]
+ store float %104, float* %102, align 8
+ %105 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %106 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=3]
+ %107 = load float* %106, align 4 ; [#uses=1]
+ store float %107, float* %105, align 4
+ %108 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %109 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %110 = load float* %109, align 4 ; [#uses=1]
+ store float %110, float* %108, align 8
+ %111 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %112 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %113 = load float* %112, align 4 ; [#uses=1]
+ store float %113, float* %111, align 4
+ %114 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %115 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %116 = load float* %115, align 4 ; [#uses=1]
+ store float %116, float* %114, align 8
+ %117 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %118 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %119 = load float* %118, align 4 ; [#uses=1]
+ store float %119, float* %117, align 4
+ %120 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %121 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %122 = load float* %121, align 4 ; [#uses=1]
+ store float %122, float* %120, align 8
+ %123 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %124 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %125 = load float* %124, align 4 ; [#uses=1]
+ store float %125, float* %123, align 4
+ %126 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %127 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %128 = load float* %127, align 4 ; [#uses=1]
+ store float %128, float* %126, align 8
+ %129 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %130 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=3]
+ %131 = load float* %130, align 4 ; [#uses=1]
+ store float %131, float* %129, align 4
+ %132 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %133 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=3]
+ %134 = load float* %133, align 4 ; [#uses=1]
+ store float %134, float* %132, align 8
+ %135 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %136 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=3]
+ %137 = load float* %136, align 4 ; [#uses=1]
+ store float %137, float* %135, align 4
+ %138 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %139 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=3]
+ %140 = load float* %139, align 4 ; [#uses=1]
+ store float %140, float* %138, align 8
+ %141 = getelementptr inbounds %struct.btTransform* %orgtrans1, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %142 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=3]
+ %143 = load float* %142, align 4 ; [#uses=1]
+ store float %143, float* %141, align 4
+ call void @_ZN9btPairSetC1Ev(%struct.btPairSet* %pairset)
+ invoke void @_ZN27btGImpactCollisionAlgorithm29gimpact_vs_gimpact_find_pairsERK11btTransformS2_P23btGImpactShapeInterfaceS4_R9btPairSet(%struct.btGImpactCollisionAlgorithm* %this, %struct.btTransform* %orgtrans0, %struct.btTransform* %orgtrans1, %struct.btGImpactShapeInterface* %shape0, %struct.btGImpactShapeInterface* %shape1, %struct.btPairSet* %pairset)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb10
+ %144 = getelementptr inbounds %struct.btPairSet* %pairset, i32 0, i32 0, i32 1 ; [#uses=3]
+ %145 = load i32* %144, align 4 ; [#uses=1]
+ %146 = icmp eq i32 %145, 0 ; [#uses=1]
+ br i1 %146, label %bb71, label %bb13
+
+bb13: ; preds = %invcont
+ %147 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %148 = getelementptr inbounds i32 (...)** %147, i32 19 ; [#uses=1]
+ %149 = load i32 (...)** %148, align 4 ; [#uses=1]
+ %150 = bitcast i32 (...)* %149 to i32 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %151 = invoke i32 %150(%struct.btGImpactShapeInterface* %shape0)
+ to label %invcont14 unwind label %lpad ; [#uses=1]
+
+invcont14: ; preds = %bb13
+ %152 = icmp eq i32 %151, 1 ; [#uses=1]
+ br i1 %152, label %bb15, label %bb18
+
+bb15: ; preds = %invcont14
+ %153 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %154 = getelementptr inbounds i32 (...)** %153, i32 19 ; [#uses=1]
+ %155 = load i32 (...)** %154, align 4 ; [#uses=1]
+ %156 = bitcast i32 (...)* %155 to i32 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %157 = invoke i32 %156(%struct.btGImpactShapeInterface* %shape1)
+ to label %invcont16 unwind label %lpad ; [#uses=1]
+
+invcont16: ; preds = %bb15
+ %158 = icmp eq i32 %157, 1 ; [#uses=1]
+ br i1 %158, label %bb21, label %bb18
+
+bb18: ; preds = %invcont16, %invcont14
+ %159 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %160 = getelementptr inbounds i32 (...)** %159, i32 27 ; [#uses=1]
+ %161 = load i32 (...)** %160, align 4 ; [#uses=1]
+ %162 = bitcast i32 (...)* %161 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ invoke void %162(%struct.btGImpactShapeInterface* %shape0)
+ to label %invcont24 unwind label %lpad
+
+bb21: ; preds = %invcont16
+ %163 = bitcast %struct.btGImpactShapeInterface* %shape0 to %struct.btGImpactMeshShapePart* ; [#uses=1]
+ %164 = bitcast %struct.btGImpactShapeInterface* %shape1 to %struct.btGImpactMeshShapePart* ; [#uses=1]
+ %165 = load i32* %144, align 4 ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btPairSet* %pairset, i32 0, i32 0, i32 3 ; [#uses=1]
+ %167 = load %struct.CONTACT_KEY_TOKEN** %166, align 4 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %167, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN27btGImpactCollisionAlgorithm21collide_sat_trianglesEP17btCollisionObjectS1_P22btGImpactMeshShapePartS3_PKii(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactMeshShapePart* %163, %struct.btGImpactMeshShapePart* %164, i32* %168, i32 %165)
+ to label %bb71 unwind label %lpad
+
+invcont24: ; preds = %bb18
+ %169 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %170 = getelementptr inbounds i32 (...)** %169, i32 27 ; [#uses=1]
+ %171 = load i32 (...)** %170, align 4 ; [#uses=1]
+ %172 = bitcast i32 (...)* %171 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ invoke void %172(%struct.btGImpactShapeInterface* %shape1)
+ to label %invcont25 unwind label %lpad
+
+invcont25: ; preds = %invcont24
+ invoke void @_ZN18GIM_ShapeRetrieverC2EP23btGImpactShapeInterface(%struct.GIM_ShapeRetriever* %retriever0, %struct.btGImpactShapeInterface* %shape0)
+ to label %invcont26 unwind label %lpad
+
+invcont26: ; preds = %invcont25
+ invoke void @_ZN18GIM_ShapeRetrieverC2EP23btGImpactShapeInterface(%struct.GIM_ShapeRetriever* %retriever1, %struct.btGImpactShapeInterface* %shape1)
+ to label %invcont27 unwind label %lpad75
+
+invcont27: ; preds = %invcont26
+ %173 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %174 = getelementptr inbounds i32 (...)** %173, i32 22 ; [#uses=1]
+ %175 = load i32 (...)** %174, align 4 ; [#uses=1]
+ %176 = bitcast i32 (...)* %175 to i8 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %177 = invoke zeroext i8 %176(%struct.btGImpactShapeInterface* %shape0)
+ to label %invcont28 unwind label %lpad79 ; [#uses=1]
+
+invcont28: ; preds = %invcont27
+ %178 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %179 = getelementptr inbounds i32 (...)** %178, i32 22 ; [#uses=1]
+ %180 = load i32 (...)** %179, align 4 ; [#uses=1]
+ %181 = bitcast i32 (...)* %180 to i8 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %182 = invoke zeroext i8 %181(%struct.btGImpactShapeInterface* %shape1)
+ to label %invcont29 unwind label %lpad79 ; [#uses=1]
+
+invcont29: ; preds = %invcont28
+ %183 = load i32* %144, align 4 ; [#uses=2]
+ %184 = getelementptr inbounds %struct.btPairSet* %pairset, i32 0, i32 0, i32 3 ; [#uses=1]
+ %185 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=2]
+ %186 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 7 ; [#uses=3]
+ %187 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 6 ; [#uses=1]
+ %188 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 6 ; [#uses=1]
+ %toBool33 = icmp eq i8 %177, 0 ; [#uses=2]
+ %toBool38 = icmp eq i8 %182, 0 ; [#uses=2]
+ %189 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %191 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %192 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %193 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %194 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %195 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %196 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %197 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %198 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %199 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %200 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %201 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %202 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %203 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %205 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %206 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %207 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %209 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %210 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %211 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %212 = getelementptr inbounds %struct.btTransform* %1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %tmp175 = add i32 %183, -1 ; [#uses=1]
+ br label %bb49
+
+bb30: ; preds = %bb49
+ %tmp173 = sub i32 %183, %indvar ; [#uses=1]
+ %213 = load %struct.CONTACT_KEY_TOKEN** %184, align 4 ; [#uses=2]
+ %scevgep177178 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %213, i32 %tmp176, i32 0 ; [#uses=1]
+ %214 = load i32* %scevgep177178, align 4 ; [#uses=2]
+ store i32 %214, i32* %185, align 4
+ %scevgep = getelementptr %struct.CONTACT_KEY_TOKEN* %213, i32 %tmp173, i32 0 ; [#uses=1]
+ %scevgep174 = getelementptr i32* %scevgep, i32 -1 ; [#uses=1]
+ %215 = load i32* %scevgep174, align 4 ; [#uses=1]
+ store i32 %215, i32* %186, align 4
+ %216 = load %"struct.GIM_ShapeRetriever::ChildShapeRetriever"** %187, align 4 ; [#uses=2]
+ %217 = getelementptr inbounds %"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %216, i32 0, i32 0 ; [#uses=1]
+ %218 = load i32 (...)*** %217, align 4 ; [#uses=1]
+ %219 = load i32 (...)** %218, align 4 ; [#uses=1]
+ %220 = bitcast i32 (...)* %219 to %struct.btCollisionShape* (%"struct.GIM_ShapeRetriever::ChildShapeRetriever"*, i32)* ; [#uses=1]
+ %221 = invoke %struct.btCollisionShape* %220(%"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %216, i32 %214)
+ to label %invcont31 unwind label %lpad79 ; [#uses=1]
+
+invcont31: ; preds = %bb30
+ %222 = load i32* %186, align 4 ; [#uses=1]
+ %223 = load %"struct.GIM_ShapeRetriever::ChildShapeRetriever"** %188, align 4 ; [#uses=2]
+ %224 = getelementptr inbounds %"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %223, i32 0, i32 0 ; [#uses=1]
+ %225 = load i32 (...)*** %224, align 4 ; [#uses=1]
+ %226 = load i32 (...)** %225, align 4 ; [#uses=1]
+ %227 = bitcast i32 (...)* %226 to %struct.btCollisionShape* (%"struct.GIM_ShapeRetriever::ChildShapeRetriever"*, i32)* ; [#uses=1]
+ %228 = invoke %struct.btCollisionShape* %227(%"struct.GIM_ShapeRetriever::ChildShapeRetriever"* %223, i32 %222)
+ to label %invcont32 unwind label %lpad79 ; [#uses=1]
+
+invcont32: ; preds = %invcont31
+ br i1 %toBool33, label %bb37, label %bb34
+
+bb34: ; preds = %invcont32
+ %229 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %230 = getelementptr inbounds i32 (...)** %229, i32 32 ; [#uses=1]
+ %231 = load i32 (...)** %230, align 4 ; [#uses=1]
+ %232 = load i32* %185, align 4 ; [#uses=1]
+ %233 = bitcast i32 (...)* %231 to void (%struct.btTransform*, %struct.btGImpactShapeInterface*, i32)* ; [#uses=1]
+ invoke void %233(%struct.btTransform* noalias sret %1, %struct.btGImpactShapeInterface* %shape0, i32 %232)
+ to label %invcont36 unwind label %lpad79
+
+invcont36: ; preds = %bb34
+ %234 = load float* %72, align 8 ; [#uses=4]
+ %235 = load float* %201, align 8 ; [#uses=3]
+ %236 = load float* %75, align 4 ; [#uses=4]
+ %237 = load float* %202, align 4 ; [#uses=3]
+ %238 = load float* %78, align 8 ; [#uses=4]
+ %239 = load float* %203, align 8 ; [#uses=3]
+ %240 = load float* %60, align 8 ; [#uses=4]
+ %241 = load float* %63, align 4 ; [#uses=4]
+ %242 = load float* %66, align 8 ; [#uses=4]
+ %243 = load float* %48, align 8 ; [#uses=4]
+ %244 = load float* %51, align 4 ; [#uses=4]
+ %245 = load float* %54, align 8 ; [#uses=4]
+ %246 = load float* %204, align 8 ; [#uses=3]
+ %247 = load float* %205, align 8 ; [#uses=3]
+ %248 = load float* %206, align 8 ; [#uses=3]
+ %249 = load float* %207, align 4 ; [#uses=3]
+ %250 = load float* %208, align 4 ; [#uses=3]
+ %251 = load float* %209, align 4 ; [#uses=3]
+ %252 = load float* %210, align 8 ; [#uses=3]
+ %253 = load float* %211, align 8 ; [#uses=3]
+ %254 = load float* %212, align 8 ; [#uses=3]
+ %255 = fmul float %244, %237 ; [#uses=1]
+ %256 = fmul float %243, %235 ; [#uses=1]
+ %257 = fmul float %241, %237 ; [#uses=1]
+ %258 = fmul float %240, %235 ; [#uses=1]
+ %259 = fmul float %236, %237 ; [#uses=1]
+ %260 = fmul float %234, %235 ; [#uses=1]
+ %261 = fmul float %253, %244 ; [#uses=1]
+ %262 = fmul float %252, %243 ; [#uses=1]
+ %263 = fmul float %250, %244 ; [#uses=1]
+ %264 = fmul float %249, %243 ; [#uses=1]
+ %265 = fmul float %247, %244 ; [#uses=1]
+ %266 = fmul float %246, %243 ; [#uses=1]
+ %267 = fmul float %253, %241 ; [#uses=1]
+ %268 = fmul float %252, %240 ; [#uses=1]
+ %269 = fmul float %250, %241 ; [#uses=1]
+ %270 = fmul float %249, %240 ; [#uses=1]
+ %271 = fmul float %247, %241 ; [#uses=1]
+ %272 = fmul float %246, %240 ; [#uses=1]
+ %273 = fmul float %253, %236 ; [#uses=1]
+ %274 = fmul float %252, %234 ; [#uses=1]
+ %275 = fmul float %250, %236 ; [#uses=1]
+ %276 = fmul float %249, %234 ; [#uses=1]
+ %277 = fmul float %247, %236 ; [#uses=1]
+ %278 = fmul float %246, %234 ; [#uses=1]
+ %279 = fmul float %245, %239 ; [#uses=1]
+ %280 = fadd float %256, %255 ; [#uses=1]
+ %281 = fmul float %242, %239 ; [#uses=1]
+ %282 = fadd float %258, %257 ; [#uses=1]
+ %283 = fmul float %238, %239 ; [#uses=1]
+ %284 = fadd float %260, %259 ; [#uses=1]
+ %285 = fmul float %254, %245 ; [#uses=1]
+ %286 = fadd float %262, %261 ; [#uses=1]
+ %287 = fmul float %251, %245 ; [#uses=1]
+ %288 = fadd float %264, %263 ; [#uses=1]
+ %289 = fmul float %248, %245 ; [#uses=1]
+ %290 = fadd float %266, %265 ; [#uses=1]
+ %291 = fmul float %254, %242 ; [#uses=1]
+ %292 = fadd float %268, %267 ; [#uses=1]
+ %293 = fmul float %251, %242 ; [#uses=1]
+ %294 = fadd float %270, %269 ; [#uses=1]
+ %295 = fmul float %248, %242 ; [#uses=1]
+ %296 = fadd float %272, %271 ; [#uses=1]
+ %297 = fmul float %254, %238 ; [#uses=1]
+ %298 = fadd float %274, %273 ; [#uses=1]
+ %299 = fmul float %251, %238 ; [#uses=1]
+ %300 = fadd float %276, %275 ; [#uses=1]
+ %301 = fmul float %248, %238 ; [#uses=1]
+ %302 = fadd float %278, %277 ; [#uses=1]
+ %303 = load float* %84, align 8 ; [#uses=1]
+ %304 = fadd float %280, %279 ; [#uses=1]
+ %305 = load float* %87, align 4 ; [#uses=1]
+ %306 = fadd float %282, %281 ; [#uses=1]
+ %307 = load float* %90, align 8 ; [#uses=1]
+ %308 = fadd float %284, %283 ; [#uses=1]
+ %309 = fadd float %286, %285 ; [#uses=1]
+ %310 = fadd float %288, %287 ; [#uses=1]
+ %311 = fadd float %290, %289 ; [#uses=1]
+ %312 = fadd float %292, %291 ; [#uses=1]
+ %313 = fadd float %294, %293 ; [#uses=1]
+ %314 = fadd float %296, %295 ; [#uses=1]
+ %315 = fadd float %298, %297 ; [#uses=1]
+ %316 = fadd float %300, %299 ; [#uses=1]
+ %317 = fadd float %302, %301 ; [#uses=1]
+ %318 = fadd float %304, %303 ; [#uses=1]
+ %319 = fadd float %306, %305 ; [#uses=1]
+ %320 = fadd float %308, %307 ; [#uses=1]
+ store float %309, float* %49, align 4
+ store float %310, float* %52, align 4
+ store float %311, float* %55, align 4
+ store float 0.000000e+00, float* %58, align 4
+ store float %312, float* %61, align 4
+ store float %313, float* %64, align 4
+ store float %314, float* %67, align 4
+ store float 0.000000e+00, float* %70, align 4
+ store float %315, float* %73, align 4
+ store float %316, float* %76, align 4
+ store float %317, float* %79, align 4
+ store float 0.000000e+00, float* %82, align 4
+ store float %318, float* %85, align 4
+ store float %319, float* %88, align 4
+ store float %320, float* %91, align 4
+ store float 0.000000e+00, float* %94, align 4
+ br label %bb37
+
+bb37: ; preds = %invcont36, %invcont32
+ br i1 %toBool38, label %bb42, label %bb39
+
+bb39: ; preds = %bb37
+ %321 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %322 = getelementptr inbounds i32 (...)** %321, i32 32 ; [#uses=1]
+ %323 = load i32 (...)** %322, align 4 ; [#uses=1]
+ %324 = load i32* %186, align 4 ; [#uses=1]
+ %325 = bitcast i32 (...)* %323 to void (%struct.btTransform*, %struct.btGImpactShapeInterface*, i32)* ; [#uses=1]
+ invoke void %325(%struct.btTransform* noalias sret %0, %struct.btGImpactShapeInterface* %shape1, i32 %324)
+ to label %invcont41 unwind label %lpad79
+
+invcont41: ; preds = %bb39
+ %326 = load float* %120, align 8 ; [#uses=4]
+ %327 = load float* %189, align 8 ; [#uses=3]
+ %328 = load float* %123, align 4 ; [#uses=4]
+ %329 = load float* %190, align 4 ; [#uses=3]
+ %330 = load float* %126, align 8 ; [#uses=4]
+ %331 = load float* %191, align 8 ; [#uses=3]
+ %332 = load float* %108, align 8 ; [#uses=4]
+ %333 = load float* %111, align 4 ; [#uses=4]
+ %334 = load float* %114, align 8 ; [#uses=4]
+ %335 = load float* %96, align 8 ; [#uses=4]
+ %336 = load float* %99, align 4 ; [#uses=4]
+ %337 = load float* %102, align 8 ; [#uses=4]
+ %338 = load float* %192, align 8 ; [#uses=3]
+ %339 = load float* %193, align 8 ; [#uses=3]
+ %340 = load float* %194, align 8 ; [#uses=3]
+ %341 = load float* %195, align 4 ; [#uses=3]
+ %342 = load float* %196, align 4 ; [#uses=3]
+ %343 = load float* %197, align 4 ; [#uses=3]
+ %344 = load float* %198, align 8 ; [#uses=3]
+ %345 = load float* %199, align 8 ; [#uses=3]
+ %346 = load float* %200, align 8 ; [#uses=3]
+ %347 = fmul float %336, %329 ; [#uses=1]
+ %348 = fmul float %335, %327 ; [#uses=1]
+ %349 = fmul float %333, %329 ; [#uses=1]
+ %350 = fmul float %332, %327 ; [#uses=1]
+ %351 = fmul float %328, %329 ; [#uses=1]
+ %352 = fmul float %326, %327 ; [#uses=1]
+ %353 = fmul float %345, %336 ; [#uses=1]
+ %354 = fmul float %344, %335 ; [#uses=1]
+ %355 = fmul float %342, %336 ; [#uses=1]
+ %356 = fmul float %341, %335 ; [#uses=1]
+ %357 = fmul float %339, %336 ; [#uses=1]
+ %358 = fmul float %338, %335 ; [#uses=1]
+ %359 = fmul float %345, %333 ; [#uses=1]
+ %360 = fmul float %344, %332 ; [#uses=1]
+ %361 = fmul float %342, %333 ; [#uses=1]
+ %362 = fmul float %341, %332 ; [#uses=1]
+ %363 = fmul float %339, %333 ; [#uses=1]
+ %364 = fmul float %338, %332 ; [#uses=1]
+ %365 = fmul float %345, %328 ; [#uses=1]
+ %366 = fmul float %344, %326 ; [#uses=1]
+ %367 = fmul float %342, %328 ; [#uses=1]
+ %368 = fmul float %341, %326 ; [#uses=1]
+ %369 = fmul float %339, %328 ; [#uses=1]
+ %370 = fmul float %338, %326 ; [#uses=1]
+ %371 = fmul float %337, %331 ; [#uses=1]
+ %372 = fadd float %348, %347 ; [#uses=1]
+ %373 = fmul float %334, %331 ; [#uses=1]
+ %374 = fadd float %350, %349 ; [#uses=1]
+ %375 = fmul float %330, %331 ; [#uses=1]
+ %376 = fadd float %352, %351 ; [#uses=1]
+ %377 = fmul float %346, %337 ; [#uses=1]
+ %378 = fadd float %354, %353 ; [#uses=1]
+ %379 = fmul float %343, %337 ; [#uses=1]
+ %380 = fadd float %356, %355 ; [#uses=1]
+ %381 = fmul float %340, %337 ; [#uses=1]
+ %382 = fadd float %358, %357 ; [#uses=1]
+ %383 = fmul float %346, %334 ; [#uses=1]
+ %384 = fadd float %360, %359 ; [#uses=1]
+ %385 = fmul float %343, %334 ; [#uses=1]
+ %386 = fadd float %362, %361 ; [#uses=1]
+ %387 = fmul float %340, %334 ; [#uses=1]
+ %388 = fadd float %364, %363 ; [#uses=1]
+ %389 = fmul float %346, %330 ; [#uses=1]
+ %390 = fadd float %366, %365 ; [#uses=1]
+ %391 = fmul float %343, %330 ; [#uses=1]
+ %392 = fadd float %368, %367 ; [#uses=1]
+ %393 = fmul float %340, %330 ; [#uses=1]
+ %394 = fadd float %370, %369 ; [#uses=1]
+ %395 = load float* %132, align 8 ; [#uses=1]
+ %396 = fadd float %372, %371 ; [#uses=1]
+ %397 = load float* %135, align 4 ; [#uses=1]
+ %398 = fadd float %374, %373 ; [#uses=1]
+ %399 = load float* %138, align 8 ; [#uses=1]
+ %400 = fadd float %376, %375 ; [#uses=1]
+ %401 = fadd float %378, %377 ; [#uses=1]
+ %402 = fadd float %380, %379 ; [#uses=1]
+ %403 = fadd float %382, %381 ; [#uses=1]
+ %404 = fadd float %384, %383 ; [#uses=1]
+ %405 = fadd float %386, %385 ; [#uses=1]
+ %406 = fadd float %388, %387 ; [#uses=1]
+ %407 = fadd float %390, %389 ; [#uses=1]
+ %408 = fadd float %392, %391 ; [#uses=1]
+ %409 = fadd float %394, %393 ; [#uses=1]
+ %410 = fadd float %396, %395 ; [#uses=1]
+ %411 = fadd float %398, %397 ; [#uses=1]
+ %412 = fadd float %400, %399 ; [#uses=1]
+ store float %401, float* %97, align 4
+ store float %402, float* %100, align 4
+ store float %403, float* %103, align 4
+ store float 0.000000e+00, float* %106, align 4
+ store float %404, float* %109, align 4
+ store float %405, float* %112, align 4
+ store float %406, float* %115, align 4
+ store float 0.000000e+00, float* %118, align 4
+ store float %407, float* %121, align 4
+ store float %408, float* %124, align 4
+ store float %409, float* %127, align 4
+ store float 0.000000e+00, float* %130, align 4
+ store float %410, float* %133, align 4
+ store float %411, float* %136, align 4
+ store float %412, float* %139, align 4
+ store float 0.000000e+00, float* %142, align 4
+ br label %bb42
+
+bb42: ; preds = %invcont41, %bb37
+ invoke void @_ZN27btGImpactCollisionAlgorithm26convex_vs_convex_collisionEP17btCollisionObjectS1_P16btCollisionShapeS3_(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btCollisionShape* %221, %struct.btCollisionShape* %228)
+ to label %invcont43 unwind label %lpad79
+
+invcont43: ; preds = %bb42
+ br i1 %toBool33, label %bb46, label %bb45
+
+bb45: ; preds = %invcont43
+ %413 = load float* %48, align 8 ; [#uses=1]
+ store float %413, float* %49, align 4
+ %414 = load float* %51, align 4 ; [#uses=1]
+ store float %414, float* %52, align 4
+ %415 = load float* %54, align 8 ; [#uses=1]
+ store float %415, float* %55, align 4
+ %416 = load float* %57, align 4 ; [#uses=1]
+ store float %416, float* %58, align 4
+ %417 = load float* %60, align 8 ; [#uses=1]
+ store float %417, float* %61, align 4
+ %418 = load float* %63, align 4 ; [#uses=1]
+ store float %418, float* %64, align 4
+ %419 = load float* %66, align 8 ; [#uses=1]
+ store float %419, float* %67, align 4
+ %420 = load float* %69, align 4 ; [#uses=1]
+ store float %420, float* %70, align 4
+ %421 = load float* %72, align 8 ; [#uses=1]
+ store float %421, float* %73, align 4
+ %422 = load float* %75, align 4 ; [#uses=1]
+ store float %422, float* %76, align 4
+ %423 = load float* %78, align 8 ; [#uses=1]
+ store float %423, float* %79, align 4
+ %424 = load float* %81, align 4 ; [#uses=1]
+ store float %424, float* %82, align 4
+ %425 = load float* %84, align 8 ; [#uses=1]
+ store float %425, float* %85, align 4
+ %426 = load float* %87, align 4 ; [#uses=1]
+ store float %426, float* %88, align 4
+ %427 = load float* %90, align 8 ; [#uses=1]
+ store float %427, float* %91, align 4
+ %428 = load float* %93, align 4 ; [#uses=1]
+ store float %428, float* %94, align 4
+ br label %bb46
+
+bb46: ; preds = %bb45, %invcont43
+ br i1 %toBool38, label %bb49.backedge, label %bb48
+
+bb48: ; preds = %bb46
+ %429 = load float* %96, align 8 ; [#uses=1]
+ store float %429, float* %97, align 4
+ %430 = load float* %99, align 4 ; [#uses=1]
+ store float %430, float* %100, align 4
+ %431 = load float* %102, align 8 ; [#uses=1]
+ store float %431, float* %103, align 4
+ %432 = load float* %105, align 4 ; [#uses=1]
+ store float %432, float* %106, align 4
+ %433 = load float* %108, align 8 ; [#uses=1]
+ store float %433, float* %109, align 4
+ %434 = load float* %111, align 4 ; [#uses=1]
+ store float %434, float* %112, align 4
+ %435 = load float* %114, align 8 ; [#uses=1]
+ store float %435, float* %115, align 4
+ %436 = load float* %117, align 4 ; [#uses=1]
+ store float %436, float* %118, align 4
+ %437 = load float* %120, align 8 ; [#uses=1]
+ store float %437, float* %121, align 4
+ %438 = load float* %123, align 4 ; [#uses=1]
+ store float %438, float* %124, align 4
+ %439 = load float* %126, align 8 ; [#uses=1]
+ store float %439, float* %127, align 4
+ %440 = load float* %129, align 4 ; [#uses=1]
+ store float %440, float* %130, align 4
+ %441 = load float* %132, align 8 ; [#uses=1]
+ store float %441, float* %133, align 4
+ %442 = load float* %135, align 4 ; [#uses=1]
+ store float %442, float* %136, align 4
+ %443 = load float* %138, align 8 ; [#uses=1]
+ store float %443, float* %139, align 4
+ %444 = load float* %141, align 4 ; [#uses=1]
+ store float %444, float* %142, align 4
+ br label %bb49.backedge
+
+bb49.backedge: ; preds = %bb48, %bb46
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb49
+
+bb49: ; preds = %bb49.backedge, %invcont29
+ %indvar = phi i32 [ %indvar.next, %bb49.backedge ], [ 0, %invcont29 ] ; [#uses=3]
+ %tmp176 = sub i32 %tmp175, %indvar ; [#uses=2]
+ %445 = icmp eq i32 %tmp176, -1 ; [#uses=1]
+ br i1 %445, label %bb51, label %bb30
+
+bb51: ; preds = %bb49
+ %446 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %447 = getelementptr inbounds i32 (...)** %446, i32 28 ; [#uses=1]
+ %448 = load i32 (...)** %447, align 4 ; [#uses=1]
+ %449 = bitcast i32 (...)* %448 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ invoke void %449(%struct.btGImpactShapeInterface* %shape0)
+ to label %invcont52 unwind label %lpad79
+
+invcont52: ; preds = %bb51
+ %450 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %451 = getelementptr inbounds i32 (...)** %450, i32 28 ; [#uses=1]
+ %452 = load i32 (...)** %451, align 4 ; [#uses=1]
+ %453 = bitcast i32 (...)* %452 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ invoke void %453(%struct.btGImpactShapeInterface* %shape1)
+ to label %bb57 unwind label %lpad79
+
+bb57: ; preds = %invcont52
+ %454 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19TetraShapeRetrieverE, i32 0, i32 2), i32 (...)*** %454, align 4
+ %455 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever22TriangleShapeRetrieverE, i32 0, i32 2), i32 (...)*** %455, align 4
+ %456 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19ChildShapeRetrieverE, i32 0, i32 2), i32 (...)*** %456, align 4
+ %457 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %457, align 8
+ %458 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %458)
+ to label %bb3.i121 unwind label %lpad.i124
+
+invcont1.i120: ; preds = %lpad.i124
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i122)
+ to label %.noexc128 unwind label %lpad75
+
+.noexc128: ; preds = %invcont1.i120
+ unreachable
+
+bb3.i121: ; preds = %bb57
+ %459 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %459, align 4
+ %460 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %460)
+ to label %bb64 unwind label %lpad75
+
+lpad.i124: ; preds = %bb57
+ %eh_ptr.i122 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6.i123 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i122, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %461 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %461, align 4
+ %462 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %462)
+ to label %invcont1.i120 unwind label %lpad7.i127
+
+lpad7.i127: ; preds = %lpad.i124
+ %eh_ptr8.i125 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10.i126 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8.i125, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+bb64: ; preds = %bb3.i121
+ %463 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19TetraShapeRetrieverE, i32 0, i32 2), i32 (...)*** %463, align 4
+ %464 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever22TriangleShapeRetrieverE, i32 0, i32 2), i32 (...)*** %464, align 4
+ %465 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19ChildShapeRetrieverE, i32 0, i32 2), i32 (...)*** %465, align 4
+ %466 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %466, align 8
+ %467 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %467)
+ to label %bb3.i132 unwind label %lpad.i135
+
+invcont1.i131: ; preds = %lpad.i135
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i133)
+ to label %.noexc139 unwind label %lpad
+
+.noexc139: ; preds = %invcont1.i131
+ unreachable
+
+bb3.i132: ; preds = %bb64
+ %468 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %468, align 4
+ %469 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %469)
+ to label %bb71 unwind label %lpad
+
+lpad.i135: ; preds = %bb64
+ %eh_ptr.i133 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6.i134 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i133, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %470 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %470, align 4
+ %471 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %471)
+ to label %invcont1.i131 unwind label %lpad7.i138
+
+lpad7.i138: ; preds = %lpad.i135
+ %eh_ptr8.i136 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10.i137 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8.i136, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+invcont69: ; preds = %bb2.i.i.i.i, %ppad
+ %472 = getelementptr inbounds %struct.btPairSet* %pairset, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %472, align 8
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %490, align 4
+ %473 = getelementptr inbounds %struct.btPairSet* %pairset, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %473, align 4
+ %474 = getelementptr inbounds %struct.btPairSet* %pairset, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %474, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.1)
+ unreachable
+
+bb71: ; preds = %bb3.i132, %bb21, %invcont
+ %475 = getelementptr inbounds %struct.btPairSet* %pairset, i32 0, i32 0, i32 3 ; [#uses=2]
+ %476 = load %struct.CONTACT_KEY_TOKEN** %475, align 4 ; [#uses=2]
+ %477 = icmp eq %struct.CONTACT_KEY_TOKEN* %476, null ; [#uses=1]
+ br i1 %477, label %_ZN9btPairSetD1Ev.exit146, label %bb.i.i.i.i143
+
+bb.i.i.i.i143: ; preds = %bb71
+ %478 = getelementptr inbounds %struct.btPairSet* %pairset, i32 0, i32 0, i32 4 ; [#uses=1]
+ %479 = load i8* %478, align 8 ; [#uses=1]
+ %toBool.i.i.i.i142 = icmp eq i8 %479, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i142, label %bb2.i.i.i.i145, label %bb1.i.i.i.i144
+
+bb1.i.i.i.i144: ; preds = %bb.i.i.i.i143
+ %480 = bitcast %struct.CONTACT_KEY_TOKEN* %476 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %480)
+ br label %bb2.i.i.i.i145
+
+bb2.i.i.i.i145: ; preds = %bb1.i.i.i.i144, %bb.i.i.i.i143
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %475, align 4
+ ret void
+
+_ZN9btPairSetD1Ev.exit146: ; preds = %bb71, %bb7, %bb6, %bb1, %bb
+ ret void
+
+lpad: ; preds = %bb3.i132, %invcont1.i131, %invcont25, %invcont24, %bb21, %bb18, %bb15, %bb13, %bb10
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select74 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad75: ; preds = %bb3.i121, %invcont1.i120, %invcont26
+ %eh_ptr76 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select78 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr76, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad95
+
+lpad79: ; preds = %invcont52, %bb51, %bb42, %bb39, %bb34, %invcont31, %bb30, %invcont28, %invcont27
+ %eh_ptr80 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select82 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr80, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %481 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19TetraShapeRetrieverE, i32 0, i32 2), i32 (...)*** %481, align 4
+ %482 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever22TriangleShapeRetrieverE, i32 0, i32 2), i32 (...)*** %482, align 4
+ %483 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19ChildShapeRetrieverE, i32 0, i32 2), i32 (...)*** %483, align 4
+ %484 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %484, align 8
+ %485 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %485)
+ to label %bb3.i104 unwind label %lpad.i107
+
+invcont1.i103: ; preds = %lpad.i107
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i105)
+ to label %.noexc111 unwind label %lpad83
+
+.noexc111: ; preds = %invcont1.i103
+ unreachable
+
+bb3.i104: ; preds = %lpad79
+ %486 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %486, align 4
+ %487 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %487)
+ to label %ppad95 unwind label %lpad83
+
+lpad.i107: ; preds = %lpad79
+ %eh_ptr.i105 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6.i106 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i105, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %488 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %488, align 4
+ %489 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %489)
+ to label %invcont1.i103 unwind label %lpad7.i110
+
+lpad7.i110: ; preds = %lpad.i107
+ %eh_ptr8.i108 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10.i109 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8.i108, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad83: ; preds = %bb3.i104, %invcont1.i103
+ %eh_ptr84 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select86 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr84, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad87: ; preds = %bb3.i, %invcont1.i
+ %eh_ptr88 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select90 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr88, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad91: ; preds = %bb1.i.i.i.i
+ %eh_ptr92 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select94 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr92, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb3.i, %lpad
+ %eh_exception.1 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.0, %bb3.i ] ; [#uses=1]
+ %490 = getelementptr inbounds %struct.btPairSet* %pairset, i32 0, i32 0, i32 3 ; [#uses=3]
+ %491 = load %struct.CONTACT_KEY_TOKEN** %490, align 4 ; [#uses=2]
+ %492 = icmp eq %struct.CONTACT_KEY_TOKEN* %491, null ; [#uses=1]
+ br i1 %492, label %invcont69, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %ppad
+ %493 = getelementptr inbounds %struct.btPairSet* %pairset, i32 0, i32 0, i32 4 ; [#uses=1]
+ %494 = load i8* %493, align 8 ; [#uses=1]
+ %toBool.i.i.i.i = icmp eq i8 %494, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i, label %bb2.i.i.i.i, label %bb1.i.i.i.i
+
+bb1.i.i.i.i: ; preds = %bb.i.i.i.i
+ %495 = bitcast %struct.CONTACT_KEY_TOKEN* %491 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %495)
+ to label %bb2.i.i.i.i unwind label %lpad91
+
+bb2.i.i.i.i: ; preds = %bb1.i.i.i.i, %bb.i.i.i.i
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %490, align 4
+ br label %invcont69
+
+ppad95: ; preds = %bb3.i104, %lpad75
+ %eh_exception.0 = phi i8* [ %eh_ptr76, %lpad75 ], [ %eh_ptr80, %bb3.i104 ] ; [#uses=1]
+ %496 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19TetraShapeRetrieverE, i32 0, i32 2), i32 (...)*** %496, align 4
+ %497 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever22TriangleShapeRetrieverE, i32 0, i32 2), i32 (...)*** %497, align 4
+ %498 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN18GIM_ShapeRetriever19ChildShapeRetrieverE, i32 0, i32 2), i32 (...)*** %498, align 4
+ %499 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %499, align 8
+ %500 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %500)
+ to label %bb3.i unwind label %lpad.i
+
+invcont1.i: ; preds = %lpad.i
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ to label %.noexc unwind label %lpad87
+
+.noexc: ; preds = %invcont1.i
+ unreachable
+
+bb3.i: ; preds = %ppad95
+ %501 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %501, align 4
+ %502 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %502)
+ to label %ppad unwind label %lpad87
+
+lpad.i: ; preds = %ppad95
+ %eh_ptr.i = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6.i = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %503 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %503, align 4
+ %504 = getelementptr inbounds %struct.GIM_ShapeRetriever* %retriever0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %504)
+ to label %invcont1.i unwind label %lpad7.i
+
+lpad7.i: ; preds = %lpad.i
+ %eh_ptr8.i = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select10.i = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr8.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN27btGImpactCollisionAlgorithm16processCollisionEP17btCollisionObjectS1_RK16btDispatcherInfoP16btManifoldResult(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btDispatcherInfo* %dispatchInfo, %struct.btManifoldResult* %resultOut) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load %struct.btPersistentManifold** %0, align 4 ; [#uses=2]
+ %2 = icmp eq %struct.btPersistentManifold* %1, null ; [#uses=1]
+ br i1 %2, label %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load %struct.btActionInterface** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btActionInterface* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 4 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ tail call void %9(%struct.btActionInterface* %4, %struct.btPersistentManifold* %1)
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %0, align 4
+ br label %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i
+
+_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i: ; preds = %bb.i.i, %entry
+ %10 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=3]
+ %11 = load %struct.btCollisionAlgorithm** %10, align 4 ; [#uses=3]
+ %12 = icmp eq %struct.btCollisionAlgorithm* %11, null ; [#uses=1]
+ br i1 %12, label %_ZN27btGImpactCollisionAlgorithm10clearCacheEv.exit, label %bb.i1.i
+
+bb.i1.i: ; preds = %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i
+ %13 = getelementptr inbounds %struct.btCollisionAlgorithm* %11, i32 0, i32 0 ; [#uses=1]
+ %14 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ tail call void %16(%struct.btCollisionAlgorithm* %11)
+ %17 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load %struct.btActionInterface** %17, align 4 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btActionInterface* %18, i32 0, i32 0 ; [#uses=1]
+ %20 = load i32 (...)*** %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds i32 (...)** %20, i32 13 ; [#uses=1]
+ %22 = load i32 (...)** %21, align 4 ; [#uses=1]
+ %23 = load %struct.btCollisionAlgorithm** %10, align 4 ; [#uses=1]
+ %24 = bitcast i32 (...)* %22 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %25 = bitcast %struct.btCollisionAlgorithm* %23 to i8* ; [#uses=1]
+ tail call void %24(%struct.btActionInterface* %18, i8* %25)
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %10, align 4
+ br label %_ZN27btGImpactCollisionAlgorithm10clearCacheEv.exit
+
+_ZN27btGImpactCollisionAlgorithm10clearCacheEv.exit: ; preds = %bb.i1.i, %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i
+ %26 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 -1, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 -1, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 -1, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 8 ; [#uses=1]
+ store i32 -1, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btManifoldResult* %resultOut, %struct.btManifoldResult** %30, align 4
+ %31 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btDispatcherInfo* %dispatchInfo, %struct.btDispatcherInfo** %31, align 4
+ %32 = getelementptr inbounds %struct.btCollisionObject* %body0, i32 0, i32 9 ; [#uses=1]
+ %33 = load %struct.btCollisionShape** %32, align 4 ; [#uses=3]
+ %34 = getelementptr inbounds %struct.btCollisionShape* %33, i32 0, i32 1 ; [#uses=1]
+ %35 = load i32* %34, align 4 ; [#uses=1]
+ %36 = icmp eq i32 %35, 25 ; [#uses=1]
+ br i1 %36, label %bb, label %bb4
+
+bb: ; preds = %_ZN27btGImpactCollisionAlgorithm10clearCacheEv.exit
+ %37 = bitcast %struct.btCollisionShape* %33 to %struct.btGImpactShapeInterface* ; [#uses=2]
+ %38 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 9 ; [#uses=1]
+ %39 = load %struct.btCollisionShape** %38, align 4 ; [#uses=3]
+ %40 = getelementptr inbounds %struct.btCollisionShape* %39, i32 0, i32 1 ; [#uses=1]
+ %41 = load i32* %40, align 4 ; [#uses=1]
+ %42 = icmp eq i32 %41, 25 ; [#uses=1]
+ br i1 %42, label %bb2, label %bb3
+
+bb2: ; preds = %bb
+ %43 = bitcast %struct.btCollisionShape* %39 to %struct.btGImpactShapeInterface* ; [#uses=1]
+ tail call void @_ZN27btGImpactCollisionAlgorithm18gimpact_vs_gimpactEP17btCollisionObjectS1_P23btGImpactShapeInterfaceS3_(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactShapeInterface* %37, %struct.btGImpactShapeInterface* %43)
+ ret void
+
+bb3: ; preds = %bb
+ tail call void @_ZN27btGImpactCollisionAlgorithm16gimpact_vs_shapeEP17btCollisionObjectS1_P23btGImpactShapeInterfaceP16btCollisionShapeb(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1, %struct.btGImpactShapeInterface* %37, %struct.btCollisionShape* %39, i8 zeroext 0)
+ ret void
+
+bb4: ; preds = %_ZN27btGImpactCollisionAlgorithm10clearCacheEv.exit
+ %44 = getelementptr inbounds %struct.btCollisionObject* %body1, i32 0, i32 9 ; [#uses=1]
+ %45 = load %struct.btCollisionShape** %44, align 4 ; [#uses=2]
+ %46 = getelementptr inbounds %struct.btCollisionShape* %45, i32 0, i32 1 ; [#uses=1]
+ %47 = load i32* %46, align 4 ; [#uses=1]
+ %48 = icmp eq i32 %47, 25 ; [#uses=1]
+ br i1 %48, label %bb6, label %return
+
+bb6: ; preds = %bb4
+ %49 = bitcast %struct.btCollisionShape* %45 to %struct.btGImpactShapeInterface* ; [#uses=1]
+ tail call void @_ZN27btGImpactCollisionAlgorithm16gimpact_vs_shapeEP17btCollisionObjectS1_P23btGImpactShapeInterfaceP16btCollisionShapeb(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionObject* %body1, %struct.btCollisionObject* %body0, %struct.btGImpactShapeInterface* %49, %struct.btCollisionShape* %33, i8 zeroext 1)
+ ret void
+
+return: ; preds = %bb4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN27btGImpactCollisionAlgorithmD0Ev(%struct.btGImpactCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV27btGImpactCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %2 = load %struct.btPersistentManifold** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btPersistentManifold* %2, null ; [#uses=1]
+ br i1 %3, label %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load %struct.btActionInterface** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btActionInterface* %5, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 4 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %10(%struct.btActionInterface* %5, %struct.btPersistentManifold* %2)
+ to label %.noexc unwind label %lpad
+
+.noexc: ; preds = %bb.i.i
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %1, align 4
+ br label %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i
+
+_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i: ; preds = %.noexc, %entry
+ %11 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=3]
+ %12 = load %struct.btCollisionAlgorithm** %11, align 4 ; [#uses=3]
+ %13 = icmp eq %struct.btCollisionAlgorithm* %12, null ; [#uses=1]
+ br i1 %13, label %bb3, label %bb.i1.i
+
+bb.i1.i: ; preds = %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i
+ %14 = getelementptr inbounds %struct.btCollisionAlgorithm* %12, i32 0, i32 0 ; [#uses=1]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ invoke void %17(%struct.btCollisionAlgorithm* %12)
+ to label %.noexc15 unwind label %lpad
+
+.noexc15: ; preds = %bb.i1.i
+ %18 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load %struct.btActionInterface** %18, align 4 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btActionInterface* %19, i32 0, i32 0 ; [#uses=1]
+ %21 = load i32 (...)*** %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds i32 (...)** %21, i32 13 ; [#uses=1]
+ %23 = load i32 (...)** %22, align 4 ; [#uses=1]
+ %24 = load %struct.btCollisionAlgorithm** %11, align 4 ; [#uses=1]
+ %25 = bitcast i32 (...)* %23 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %26 = bitcast %struct.btCollisionAlgorithm* %24 to i8* ; [#uses=1]
+ invoke void %25(%struct.btActionInterface* %19, i8* %26)
+ to label %.noexc16 unwind label %lpad
+
+.noexc16: ; preds = %.noexc15
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %11, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %.noexc16, %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i
+ %27 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 -1, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 -1, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 -1, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 8 ; [#uses=1]
+ store i32 -1, i32* %30, align 4
+ %31 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %31)
+ %32 = bitcast %struct.btGImpactCollisionAlgorithm* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %32) nounwind
+ ret void
+
+lpad: ; preds = %.noexc15, %bb.i1.i, %bb.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %33 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %33)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN27btGImpactCollisionAlgorithmD1Ev(%struct.btGImpactCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV27btGImpactCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %2 = load %struct.btPersistentManifold** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btPersistentManifold* %2, null ; [#uses=1]
+ br i1 %3, label %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load %struct.btActionInterface** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btActionInterface* %5, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 4 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %10(%struct.btActionInterface* %5, %struct.btPersistentManifold* %2)
+ to label %.noexc unwind label %lpad
+
+.noexc: ; preds = %bb.i.i
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %1, align 4
+ br label %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i
+
+_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i: ; preds = %.noexc, %entry
+ %11 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=3]
+ %12 = load %struct.btCollisionAlgorithm** %11, align 4 ; [#uses=3]
+ %13 = icmp eq %struct.btCollisionAlgorithm* %12, null ; [#uses=1]
+ br i1 %13, label %bb3, label %bb.i1.i
+
+bb.i1.i: ; preds = %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i
+ %14 = getelementptr inbounds %struct.btCollisionAlgorithm* %12, i32 0, i32 0 ; [#uses=1]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ invoke void %17(%struct.btCollisionAlgorithm* %12)
+ to label %.noexc15 unwind label %lpad
+
+.noexc15: ; preds = %bb.i1.i
+ %18 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load %struct.btActionInterface** %18, align 4 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btActionInterface* %19, i32 0, i32 0 ; [#uses=1]
+ %21 = load i32 (...)*** %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds i32 (...)** %21, i32 13 ; [#uses=1]
+ %23 = load i32 (...)** %22, align 4 ; [#uses=1]
+ %24 = load %struct.btCollisionAlgorithm** %11, align 4 ; [#uses=1]
+ %25 = bitcast i32 (...)* %23 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %26 = bitcast %struct.btCollisionAlgorithm* %24 to i8* ; [#uses=1]
+ invoke void %25(%struct.btActionInterface* %19, i8* %26)
+ to label %.noexc16 unwind label %lpad
+
+.noexc16: ; preds = %.noexc15
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %11, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %.noexc16, %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i
+ %27 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 -1, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 -1, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 -1, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 8 ; [#uses=1]
+ store i32 -1, i32* %30, align 4
+ %31 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %31)
+ ret void
+
+lpad: ; preds = %.noexc15, %bb.i1.i, %bb.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %32 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %32)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN27btGImpactCollisionAlgorithmD2Ev(%struct.btGImpactCollisionAlgorithm* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV27btGImpactCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=2]
+ %2 = load %struct.btPersistentManifold** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btPersistentManifold* %2, null ; [#uses=1]
+ br i1 %3, label %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load %struct.btActionInterface** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btActionInterface* %5, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 4 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to void (%struct.btActionInterface*, %struct.btPersistentManifold*)* ; [#uses=1]
+ invoke void %10(%struct.btActionInterface* %5, %struct.btPersistentManifold* %2)
+ to label %.noexc unwind label %lpad
+
+.noexc: ; preds = %bb.i.i
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %1, align 4
+ br label %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i
+
+_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i: ; preds = %.noexc, %entry
+ %11 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=3]
+ %12 = load %struct.btCollisionAlgorithm** %11, align 4 ; [#uses=3]
+ %13 = icmp eq %struct.btCollisionAlgorithm* %12, null ; [#uses=1]
+ br i1 %13, label %bb3, label %bb.i1.i
+
+bb.i1.i: ; preds = %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i
+ %14 = getelementptr inbounds %struct.btCollisionAlgorithm* %12, i32 0, i32 0 ; [#uses=1]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to void (%struct.btCollisionAlgorithm*)* ; [#uses=1]
+ invoke void %17(%struct.btCollisionAlgorithm* %12)
+ to label %.noexc15 unwind label %lpad
+
+.noexc15: ; preds = %bb.i1.i
+ %18 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load %struct.btActionInterface** %18, align 4 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btActionInterface* %19, i32 0, i32 0 ; [#uses=1]
+ %21 = load i32 (...)*** %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds i32 (...)** %21, i32 13 ; [#uses=1]
+ %23 = load i32 (...)** %22, align 4 ; [#uses=1]
+ %24 = load %struct.btCollisionAlgorithm** %11, align 4 ; [#uses=1]
+ %25 = bitcast i32 (...)* %23 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %26 = bitcast %struct.btCollisionAlgorithm* %24 to i8* ; [#uses=1]
+ invoke void %25(%struct.btActionInterface* %19, i8* %26)
+ to label %.noexc16 unwind label %lpad
+
+.noexc16: ; preds = %.noexc15
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %11, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %.noexc16, %_ZN27btGImpactCollisionAlgorithm23destroyContactManifoldsEv.exit.i
+ %27 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 5 ; [#uses=1]
+ store i32 -1, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 -1, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 -1, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 8 ; [#uses=1]
+ store i32 -1, i32* %30, align 4
+ %31 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %31)
+ ret void
+
+lpad: ; preds = %.noexc15, %bb.i1.i, %bb.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %32 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN30btActivatingCollisionAlgorithmD2Ev(%struct.btActivatingCollisionAlgorithm* %32)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN27btGImpactCollisionAlgorithmC1ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btGImpactCollisionAlgorithm* %this, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN30btActivatingCollisionAlgorithmC2ERK36btCollisionAlgorithmConstructionInfoP17btCollisionObjectS4_(%struct.btActivatingCollisionAlgorithm* %0, %struct.btCollisionAlgorithmConstructionInfo* %ci, %struct.btCollisionObject* %body0, %struct.btCollisionObject* %body1)
+ %1 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV27btGImpactCollisionAlgorithm, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %2, align 4
+ %3 = getelementptr inbounds %struct.btGImpactCollisionAlgorithm* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btCollisionAlgorithm* null, %struct.btCollisionAlgorithm** %3, align 4
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN18btQuantizedBvhTree17calc_quantizationER18GIM_BVH_DATA_ARRAYf(%struct.btQuantizedBvhTree* nocapture %this, %struct.GIM_BVH_DATA_ARRAY* nocapture %primitive_boxes, float %boundMargin) nounwind align 2 {
+entry:
+ %global_bound = alloca %struct.GIM_AABB, align 8 ; [#uses=12]
+ %0 = getelementptr inbounds %struct.GIM_AABB* %global_bound, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %0, align 8
+ %1 = getelementptr inbounds %struct.GIM_AABB* %global_bound, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %1, align 4
+ %2 = getelementptr inbounds %struct.GIM_AABB* %global_bound, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %2, align 8
+ %3 = getelementptr inbounds %struct.GIM_AABB* %global_bound, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %3, align 8
+ %4 = getelementptr inbounds %struct.GIM_AABB* %global_bound, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %4, align 4
+ %5 = getelementptr inbounds %struct.GIM_AABB* %global_bound, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %5, align 8
+ %6 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=2]
+ %8 = icmp sgt i32 %7, 0 ; [#uses=1]
+ br i1 %8, label %bb.nph, label %bb2
+
+bb.nph: ; preds = %entry
+ %9 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %10 = phi float [ 0xC7EFFFFFE0000000, %bb.nph ], [ %iftmp.144.0.i, %bb ] ; [#uses=1]
+ %11 = phi float [ 0xC7EFFFFFE0000000, %bb.nph ], [ %iftmp.143.0.i, %bb ] ; [#uses=1]
+ %12 = phi float [ 0xC7EFFFFFE0000000, %bb.nph ], [ %iftmp.142.0.i, %bb ] ; [#uses=1]
+ %13 = phi float [ 0x47EFFFFFE0000000, %bb.nph ], [ %iftmp.141.0.i, %bb ] ; [#uses=1]
+ %14 = phi float [ 0x47EFFFFFE0000000, %bb.nph ], [ %iftmp.140.0.i, %bb ] ; [#uses=1]
+ %15 = phi float [ 0x47EFFFFFE0000000, %bb.nph ], [ %iftmp.139.0.i, %bb ] ; [#uses=1]
+ %i.03 = phi i32 [ 0, %bb.nph ], [ %29, %bb ] ; [#uses=8]
+ %16 = load %struct.GIM_AABB_DATA** %9, align 4 ; [#uses=7]
+ %scevgep1516 = getelementptr inbounds %struct.GIM_AABB_DATA* %16, i32 %i.03, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %scevgep1516, align 4 ; [#uses=1]
+ %18 = fcmp ogt float %15, %17 ; [#uses=1]
+ %scevgep1314 = getelementptr inbounds %struct.GIM_AABB_DATA* %16, i32 %i.03, i32 0 ; [#uses=6]
+ %box.pn25.i = select i1 %18, %struct.GIM_AABB* %scevgep1314, %struct.GIM_AABB* %global_bound ; [#uses=1]
+ %iftmp.139.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn25.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %iftmp.139.0.i = load float* %iftmp.139.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.139.0.i, float* %0, align 8
+ %scevgep17 = getelementptr %struct.GIM_AABB_DATA* %16, i32 %i.03, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %scevgep17, align 4 ; [#uses=1]
+ %20 = fcmp ogt float %14, %19 ; [#uses=1]
+ %box.pn24.i = select i1 %20, %struct.GIM_AABB* %scevgep1314, %struct.GIM_AABB* %global_bound ; [#uses=1]
+ %iftmp.140.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn24.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %iftmp.140.0.i = load float* %iftmp.140.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.140.0.i, float* %1, align 4
+ %scevgep18 = getelementptr %struct.GIM_AABB_DATA* %16, i32 %i.03, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %scevgep18, align 4 ; [#uses=1]
+ %22 = fcmp ogt float %13, %21 ; [#uses=1]
+ %box.pn23.i = select i1 %22, %struct.GIM_AABB* %scevgep1314, %struct.GIM_AABB* %global_bound ; [#uses=1]
+ %iftmp.141.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn23.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %iftmp.141.0.i = load float* %iftmp.141.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.141.0.i, float* %2, align 8
+ %scevgep19 = getelementptr %struct.GIM_AABB_DATA* %16, i32 %i.03, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %scevgep19, align 4 ; [#uses=1]
+ %24 = fcmp olt float %12, %23 ; [#uses=1]
+ %box.pn22.i = select i1 %24, %struct.GIM_AABB* %scevgep1314, %struct.GIM_AABB* %global_bound ; [#uses=1]
+ %iftmp.142.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn22.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %iftmp.142.0.i = load float* %iftmp.142.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.142.0.i, float* %3, align 8
+ %scevgep20 = getelementptr %struct.GIM_AABB_DATA* %16, i32 %i.03, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %scevgep20, align 4 ; [#uses=1]
+ %26 = fcmp olt float %11, %25 ; [#uses=1]
+ %box.pn21.i = select i1 %26, %struct.GIM_AABB* %scevgep1314, %struct.GIM_AABB* %global_bound ; [#uses=1]
+ %iftmp.143.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn21.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %iftmp.143.0.i = load float* %iftmp.143.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.143.0.i, float* %4, align 4
+ %scevgep21 = getelementptr %struct.GIM_AABB_DATA* %16, i32 %i.03, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %scevgep21, align 4 ; [#uses=1]
+ %28 = fcmp olt float %10, %27 ; [#uses=1]
+ %box.pn.i = select i1 %28, %struct.GIM_AABB* %scevgep1314, %struct.GIM_AABB* %global_bound ; [#uses=1]
+ %iftmp.144.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %iftmp.144.0.i = load float* %iftmp.144.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.144.0.i, float* %5, align 8
+ %29 = add nsw i32 %i.03, 1 ; [#uses=2]
+ %30 = icmp sgt i32 %7, %29 ; [#uses=1]
+ br i1 %30, label %bb, label %bb2
+
+bb2: ; preds = %bb, %entry
+ %31 = phi float [ 0xC7EFFFFFE0000000, %entry ], [ %iftmp.142.0.i, %bb ] ; [#uses=1]
+ %32 = phi float [ 0xC7EFFFFFE0000000, %entry ], [ %iftmp.143.0.i, %bb ] ; [#uses=1]
+ %33 = phi float [ 0xC7EFFFFFE0000000, %entry ], [ %iftmp.144.0.i, %bb ] ; [#uses=1]
+ %34 = phi float [ 0x47EFFFFFE0000000, %entry ], [ %iftmp.139.0.i, %bb ] ; [#uses=1]
+ %35 = phi float [ 0x47EFFFFFE0000000, %entry ], [ %iftmp.140.0.i, %bb ] ; [#uses=1]
+ %36 = phi float [ 0x47EFFFFFE0000000, %entry ], [ %iftmp.141.0.i, %bb ] ; [#uses=1]
+ %37 = fsub float %36, %boundMargin ; [#uses=2]
+ %38 = fsub float %35, %boundMargin ; [#uses=2]
+ %39 = fsub float %34, %boundMargin ; [#uses=2]
+ %40 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %39, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %38, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %37, float* %42, align 4
+ %43 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %43, align 4
+ %44 = fadd float %33, %boundMargin ; [#uses=2]
+ %45 = fadd float %32, %boundMargin ; [#uses=2]
+ %46 = fadd float %31, %boundMargin ; [#uses=2]
+ %47 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %46, float* %47, align 4
+ %48 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %45, float* %48, align 4
+ %49 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %44, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %50, align 4
+ %51 = fsub float %44, %37 ; [#uses=1]
+ %52 = fsub float %45, %38 ; [#uses=1]
+ %53 = fsub float %46, %39 ; [#uses=1]
+ %54 = fdiv float 6.553500e+04, %51 ; [#uses=1]
+ %55 = fdiv float 6.553500e+04, %52 ; [#uses=1]
+ %56 = fdiv float 6.553500e+04, %53 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %56, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %55, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %54, float* %59, align 4
+ %60 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btGImpactQuantizedBvh5refitEv(%struct.btGImpactBoxSet* %this) align 2 {
+entry:
+ %leafbox = alloca %struct.GIM_AABB, align 8 ; [#uses=7]
+ %bound = alloca %struct.GIM_AABB, align 8 ; [#uses=18]
+ %temp_box = alloca %struct.GIM_AABB, align 8 ; [#uses=20]
+ %0 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %return, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %7 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 0 ; [#uses=4]
+ %8 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 1 ; [#uses=4]
+ %9 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 2 ; [#uses=4]
+ %10 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=6]
+ %11 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=6]
+ %12 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=6]
+ %13 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=4]
+ %14 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=4]
+ %15 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=4]
+ %16 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=6]
+ %17 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=6]
+ %18 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=6]
+ %19 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %23 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %24 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %26 = getelementptr inbounds %struct.GIM_AABB* %temp_box, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %27 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 1 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.GIM_AABB* %leafbox, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %tmp57 = add i32 %1, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb7.backedge, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb7.backedge ] ; [#uses=4]
+ %nodecount.040 = sub i32 %1, %indvar ; [#uses=20]
+ %tmp58 = sub i32 %tmp57, %indvar ; [#uses=2]
+ %34 = load %struct.BT_QUANTIZED_BVH_NODE** %3, align 4 ; [#uses=17]
+ %scevgep73 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %nodecount.040, i32 0, i32 -2 ; [#uses=1]
+ %scevgep7374 = bitcast i16* %scevgep73 to i32* ; [#uses=1]
+ %35 = load i32* %scevgep7374, align 4 ; [#uses=2]
+ %toBool = icmp slt i32 %35, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %36 = load %struct.btActionInterface** %27, align 4 ; [#uses=2]
+ %37 = getelementptr inbounds %struct.btActionInterface* %36, i32 0, i32 0 ; [#uses=1]
+ %38 = load i32 (...)*** %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds i32 (...)** %38, i32 4 ; [#uses=1]
+ %40 = load i32 (...)** %39, align 4 ; [#uses=1]
+ %41 = bitcast i32 (...)* %40 to void (%struct.btActionInterface*, i32, %struct.GIM_AABB*)* ; [#uses=1]
+ call void %41(%struct.btActionInterface* %36, i32 %35, %struct.GIM_AABB* %leafbox)
+ %42 = load %struct.BT_QUANTIZED_BVH_NODE** %3, align 4 ; [#uses=3]
+ %43 = load float* %28, align 8 ; [#uses=2]
+ %44 = load float* %29, align 4 ; [#uses=2]
+ %45 = load float* %30, align 8 ; [#uses=2]
+ %46 = load float* %10, align 4 ; [#uses=3]
+ %47 = fcmp olt float %43, %46 ; [#uses=1]
+ %clampedPoint.0.0.0.i1.i.i28 = select i1 %47, float %46, float %43 ; [#uses=2]
+ %48 = load float* %11, align 4 ; [#uses=3]
+ %49 = fcmp olt float %44, %48 ; [#uses=1]
+ %clampedPoint.0.1.0.i2.i.i29 = select i1 %49, float %48, float %44 ; [#uses=2]
+ %50 = load float* %12, align 4 ; [#uses=3]
+ %51 = fcmp olt float %45, %50 ; [#uses=1]
+ %clampedPoint.0.2.0.i3.i.i30 = select i1 %51, float %50, float %45 ; [#uses=2]
+ %52 = load float* %13, align 4 ; [#uses=2]
+ %53 = fcmp olt float %52, %clampedPoint.0.0.0.i1.i.i28 ; [#uses=1]
+ %clampedPoint.0.0.1.i4.i.i31 = select i1 %53, float %52, float %clampedPoint.0.0.0.i1.i.i28 ; [#uses=1]
+ %54 = load float* %14, align 4 ; [#uses=2]
+ %55 = fcmp olt float %54, %clampedPoint.0.1.0.i2.i.i29 ; [#uses=1]
+ %clampedPoint.0.1.1.i5.i.i32 = select i1 %55, float %54, float %clampedPoint.0.1.0.i2.i.i29 ; [#uses=1]
+ %56 = load float* %15, align 4 ; [#uses=2]
+ %57 = fcmp olt float %56, %clampedPoint.0.2.0.i3.i.i30 ; [#uses=1]
+ %clampedPoint.0.2.1.i6.i.i33 = select i1 %57, float %56, float %clampedPoint.0.2.0.i3.i.i30 ; [#uses=1]
+ %58 = fsub float %clampedPoint.0.2.1.i6.i.i33, %50 ; [#uses=1]
+ %59 = fsub float %clampedPoint.0.1.1.i5.i.i32, %48 ; [#uses=1]
+ %60 = fsub float %clampedPoint.0.0.1.i4.i.i31, %46 ; [#uses=1]
+ %61 = load float* %16, align 4 ; [#uses=1]
+ %62 = fmul float %58, %61 ; [#uses=1]
+ %63 = load float* %17, align 4 ; [#uses=1]
+ %64 = fmul float %59, %63 ; [#uses=1]
+ %65 = load float* %18, align 4 ; [#uses=1]
+ %66 = fmul float %60, %65 ; [#uses=1]
+ %67 = fadd float %66, 5.000000e-01 ; [#uses=1]
+ %68 = fptoui float %67 to i16 ; [#uses=1]
+ %scevgep6667 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %42, i32 %tmp58, i32 0, i32 0 ; [#uses=1]
+ store i16 %68, i16* %scevgep6667, align 2
+ %69 = fadd float %64, 5.000000e-01 ; [#uses=1]
+ %70 = fptoui float %69 to i16 ; [#uses=1]
+ %scevgep68 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %42, i32 %nodecount.040, i32 0, i32 -7 ; [#uses=1]
+ store i16 %70, i16* %scevgep68, align 2
+ %71 = fadd float %62, 5.000000e-01 ; [#uses=1]
+ %72 = fptoui float %71 to i16 ; [#uses=1]
+ %scevgep69 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %42, i32 %nodecount.040, i32 0, i32 -6 ; [#uses=1]
+ store i16 %72, i16* %scevgep69, align 2
+ %73 = load %struct.BT_QUANTIZED_BVH_NODE** %3, align 4 ; [#uses=3]
+ %74 = load float* %31, align 8 ; [#uses=2]
+ %75 = load float* %32, align 4 ; [#uses=2]
+ %76 = load float* %33, align 8 ; [#uses=2]
+ %77 = load float* %10, align 4 ; [#uses=3]
+ %78 = fcmp olt float %74, %77 ; [#uses=1]
+ %clampedPoint.0.0.0.i.i.i34 = select i1 %78, float %77, float %74 ; [#uses=2]
+ %79 = load float* %11, align 4 ; [#uses=3]
+ %80 = fcmp olt float %75, %79 ; [#uses=1]
+ %clampedPoint.0.1.0.i.i.i35 = select i1 %80, float %79, float %75 ; [#uses=2]
+ %81 = load float* %12, align 4 ; [#uses=3]
+ %82 = fcmp olt float %76, %81 ; [#uses=1]
+ %clampedPoint.0.2.0.i.i.i36 = select i1 %82, float %81, float %76 ; [#uses=2]
+ %83 = load float* %13, align 4 ; [#uses=2]
+ %84 = fcmp olt float %83, %clampedPoint.0.0.0.i.i.i34 ; [#uses=1]
+ %clampedPoint.0.0.1.i.i.i37 = select i1 %84, float %83, float %clampedPoint.0.0.0.i.i.i34 ; [#uses=1]
+ %85 = load float* %14, align 4 ; [#uses=2]
+ %86 = fcmp olt float %85, %clampedPoint.0.1.0.i.i.i35 ; [#uses=1]
+ %clampedPoint.0.1.1.i.i.i38 = select i1 %86, float %85, float %clampedPoint.0.1.0.i.i.i35 ; [#uses=1]
+ %87 = load float* %15, align 4 ; [#uses=2]
+ %88 = fcmp olt float %87, %clampedPoint.0.2.0.i.i.i36 ; [#uses=1]
+ %clampedPoint.0.2.1.i.i.i39 = select i1 %88, float %87, float %clampedPoint.0.2.0.i.i.i36 ; [#uses=1]
+ %89 = fsub float %clampedPoint.0.2.1.i.i.i39, %81 ; [#uses=1]
+ %90 = fsub float %clampedPoint.0.1.1.i.i.i38, %79 ; [#uses=1]
+ %91 = fsub float %clampedPoint.0.0.1.i.i.i37, %77 ; [#uses=1]
+ %92 = load float* %16, align 4 ; [#uses=1]
+ %93 = fmul float %89, %92 ; [#uses=1]
+ %94 = load float* %17, align 4 ; [#uses=1]
+ %95 = fmul float %90, %94 ; [#uses=1]
+ %96 = load float* %18, align 4 ; [#uses=1]
+ %97 = fmul float %91, %96 ; [#uses=1]
+ %98 = fadd float %97, 5.000000e-01 ; [#uses=1]
+ %99 = fptoui float %98 to i16 ; [#uses=1]
+ %scevgep70 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %73, i32 %nodecount.040, i32 0, i32 -5 ; [#uses=1]
+ store i16 %99, i16* %scevgep70, align 2
+ %100 = fadd float %95, 5.000000e-01 ; [#uses=1]
+ %101 = fptoui float %100 to i16 ; [#uses=1]
+ %scevgep71 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %73, i32 %nodecount.040, i32 0, i32 -4 ; [#uses=1]
+ store i16 %101, i16* %scevgep71, align 2
+ %102 = fadd float %93, 5.000000e-01 ; [#uses=1]
+ %103 = fptoui float %102 to i16 ; [#uses=1]
+ %scevgep72 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %73, i32 %nodecount.040, i32 0, i32 -3 ; [#uses=1]
+ store i16 %103, i16* %scevgep72, align 2
+ br label %bb7.backedge
+
+bb7.backedge: ; preds = %bb6, %bb1
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %1 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+bb2: ; preds = %bb
+ store float 0x47EFFFFFE0000000, float* %4, align 8
+ store float 0x47EFFFFFE0000000, float* %5, align 4
+ store float 0x47EFFFFFE0000000, float* %6, align 8
+ store float 0xC7EFFFFFE0000000, float* %7, align 8
+ store float 0xC7EFFFFFE0000000, float* %8, align 4
+ store float 0xC7EFFFFFE0000000, float* %9, align 8
+ %104 = icmp eq i32 %1, %indvar ; [#uses=1]
+ br i1 %104, label %bb4, label %bb3
+
+bb3: ; preds = %bb2
+ %scevgep44 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %nodecount.040, i32 0, i32 2 ; [#uses=1]
+ %105 = load i16* %scevgep44, align 2 ; [#uses=1]
+ %106 = uitofp i16 %105 to float ; [#uses=1]
+ %107 = load float* %16, align 4 ; [#uses=2]
+ %108 = fdiv float %106, %107 ; [#uses=1]
+ %scevgep45 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %nodecount.040, i32 0, i32 1 ; [#uses=1]
+ %109 = load i16* %scevgep45, align 2 ; [#uses=1]
+ %110 = uitofp i16 %109 to float ; [#uses=1]
+ %111 = load float* %17, align 4 ; [#uses=2]
+ %112 = fdiv float %110, %111 ; [#uses=1]
+ %scevgep43 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %nodecount.040, i32 0, i32 0 ; [#uses=1]
+ %113 = load i16* %scevgep43, align 2 ; [#uses=1]
+ %114 = uitofp i16 %113 to float ; [#uses=1]
+ %115 = load float* %18, align 4 ; [#uses=2]
+ %116 = fdiv float %114, %115 ; [#uses=1]
+ %117 = load float* %10, align 4 ; [#uses=2]
+ %118 = fadd float %116, %117 ; [#uses=2]
+ %119 = load float* %11, align 4 ; [#uses=2]
+ %120 = fadd float %112, %119 ; [#uses=2]
+ %121 = load float* %12, align 4 ; [#uses=2]
+ %122 = fadd float %108, %121 ; [#uses=2]
+ store float %118, float* %19, align 8
+ store float %120, float* %20, align 4
+ store float %122, float* %21, align 8
+ store float 0.000000e+00, float* %22, align 4
+ %scevgep47 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %nodecount.040, i32 1, i32 2 ; [#uses=1]
+ %123 = load i16* %scevgep47, align 2 ; [#uses=1]
+ %124 = uitofp i16 %123 to float ; [#uses=1]
+ %125 = fdiv float %124, %107 ; [#uses=1]
+ %scevgep48 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %nodecount.040, i32 1, i32 1 ; [#uses=1]
+ %126 = load i16* %scevgep48, align 2 ; [#uses=1]
+ %127 = uitofp i16 %126 to float ; [#uses=1]
+ %128 = fdiv float %127, %111 ; [#uses=1]
+ %scevgep46 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %nodecount.040, i32 1, i32 0 ; [#uses=1]
+ %129 = load i16* %scevgep46, align 2 ; [#uses=1]
+ %130 = uitofp i16 %129 to float ; [#uses=1]
+ %131 = fdiv float %130, %115 ; [#uses=1]
+ %132 = fadd float %131, %117 ; [#uses=2]
+ %133 = fadd float %128, %119 ; [#uses=2]
+ %134 = fadd float %125, %121 ; [#uses=2]
+ store float %132, float* %23, align 8
+ store float %133, float* %24, align 4
+ store float %134, float* %25, align 8
+ store float 0.000000e+00, float* %26, align 4
+ %135 = fcmp olt float %118, 0x47EFFFFFE0000000 ; [#uses=1]
+ %box.pn25.i10 = select i1 %135, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.139.0.in.i11 = getelementptr inbounds %struct.GIM_AABB* %box.pn25.i10, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %iftmp.139.0.i12 = load float* %iftmp.139.0.in.i11, align 8 ; [#uses=2]
+ store float %iftmp.139.0.i12, float* %4, align 8
+ %136 = fcmp olt float %120, 0x47EFFFFFE0000000 ; [#uses=1]
+ %box.pn24.i13 = select i1 %136, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.140.0.in.i14 = getelementptr inbounds %struct.GIM_AABB* %box.pn24.i13, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %iftmp.140.0.i15 = load float* %iftmp.140.0.in.i14, align 4 ; [#uses=2]
+ store float %iftmp.140.0.i15, float* %5, align 4
+ %137 = fcmp olt float %122, 0x47EFFFFFE0000000 ; [#uses=1]
+ %box.pn23.i16 = select i1 %137, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.141.0.in.i17 = getelementptr inbounds %struct.GIM_AABB* %box.pn23.i16, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %iftmp.141.0.i18 = load float* %iftmp.141.0.in.i17, align 8 ; [#uses=2]
+ store float %iftmp.141.0.i18, float* %6, align 8
+ %138 = fcmp ogt float %132, 0xC7EFFFFFE0000000 ; [#uses=1]
+ %box.pn22.i19 = select i1 %138, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.142.0.in.i20 = getelementptr inbounds %struct.GIM_AABB* %box.pn22.i19, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %iftmp.142.0.i21 = load float* %iftmp.142.0.in.i20, align 8 ; [#uses=2]
+ store float %iftmp.142.0.i21, float* %7, align 8
+ %139 = fcmp ogt float %133, 0xC7EFFFFFE0000000 ; [#uses=1]
+ %box.pn21.i22 = select i1 %139, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.143.0.in.i23 = getelementptr inbounds %struct.GIM_AABB* %box.pn21.i22, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %iftmp.143.0.i24 = load float* %iftmp.143.0.in.i23, align 4 ; [#uses=2]
+ store float %iftmp.143.0.i24, float* %8, align 4
+ %140 = fcmp ogt float %134, 0xC7EFFFFFE0000000 ; [#uses=1]
+ %box.pn.i25 = select i1 %140, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.144.0.in.i26 = getelementptr inbounds %struct.GIM_AABB* %box.pn.i25, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %iftmp.144.0.i27 = load float* %iftmp.144.0.in.i26, align 8 ; [#uses=2]
+ store float %iftmp.144.0.i27, float* %9, align 8
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %141 = phi float [ 0xC7EFFFFFE0000000, %bb2 ], [ %iftmp.144.0.i27, %bb3 ] ; [#uses=1]
+ %142 = phi float [ 0xC7EFFFFFE0000000, %bb2 ], [ %iftmp.143.0.i24, %bb3 ] ; [#uses=1]
+ %143 = phi float [ 0xC7EFFFFFE0000000, %bb2 ], [ %iftmp.142.0.i21, %bb3 ] ; [#uses=1]
+ %144 = phi float [ 0x47EFFFFFE0000000, %bb2 ], [ %iftmp.141.0.i18, %bb3 ] ; [#uses=2]
+ %145 = phi float [ 0x47EFFFFFE0000000, %bb2 ], [ %iftmp.140.0.i15, %bb3 ] ; [#uses=2]
+ %146 = phi float [ 0x47EFFFFFE0000000, %bb2 ], [ %iftmp.139.0.i12, %bb3 ] ; [#uses=2]
+ %scevgep49 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %nodecount.040, i32 2 ; [#uses=1]
+ %147 = load i32* %scevgep49, align 4 ; [#uses=2]
+ %toBool.i.i = icmp slt i32 %147, 0 ; [#uses=1]
+ %tmp = sub i32 0, %147 ; [#uses=1]
+ %.p = select i1 %toBool.i.i, i32 %tmp, i32 1 ; [#uses=2]
+ %tmp56 = sub i32 0, %nodecount.040 ; [#uses=1]
+ %148 = icmp eq i32 %.p, %tmp56 ; [#uses=1]
+ br i1 %148, label %bb4.bb6_crit_edge, label %bb5
+
+bb4.bb6_crit_edge: ; preds = %bb4
+ %.pre = load float* %10, align 4 ; [#uses=1]
+ %.pre77 = load float* %11, align 4 ; [#uses=1]
+ %.pre78 = load float* %12, align 4 ; [#uses=1]
+ %.pre79 = load float* %16, align 4 ; [#uses=1]
+ %.pre80 = load float* %17, align 4 ; [#uses=1]
+ %.pre81 = load float* %18, align 4 ; [#uses=1]
+ br label %bb6
+
+bb5: ; preds = %bb4
+ %tmp55 = add i32 %.p, %nodecount.040 ; [#uses=6]
+ %149 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %tmp55, i32 0, i32 0 ; [#uses=1]
+ %150 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %tmp55, i32 0, i32 2 ; [#uses=1]
+ %151 = load i16* %150, align 2 ; [#uses=1]
+ %152 = uitofp i16 %151 to float ; [#uses=1]
+ %153 = load float* %16, align 4 ; [#uses=3]
+ %154 = fdiv float %152, %153 ; [#uses=1]
+ %155 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %tmp55, i32 0, i32 1 ; [#uses=1]
+ %156 = load i16* %155, align 2 ; [#uses=1]
+ %157 = uitofp i16 %156 to float ; [#uses=1]
+ %158 = load float* %17, align 4 ; [#uses=3]
+ %159 = fdiv float %157, %158 ; [#uses=1]
+ %160 = load i16* %149, align 2 ; [#uses=1]
+ %161 = uitofp i16 %160 to float ; [#uses=1]
+ %162 = load float* %18, align 4 ; [#uses=3]
+ %163 = fdiv float %161, %162 ; [#uses=1]
+ %164 = load float* %10, align 4 ; [#uses=3]
+ %165 = fadd float %163, %164 ; [#uses=2]
+ %166 = load float* %11, align 4 ; [#uses=3]
+ %167 = fadd float %159, %166 ; [#uses=2]
+ %168 = load float* %12, align 4 ; [#uses=3]
+ %169 = fadd float %154, %168 ; [#uses=2]
+ store float %165, float* %19, align 8
+ store float %167, float* %20, align 4
+ store float %169, float* %21, align 8
+ store float 0.000000e+00, float* %22, align 4
+ %170 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %tmp55, i32 1, i32 0 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %tmp55, i32 1, i32 2 ; [#uses=1]
+ %172 = load i16* %171, align 2 ; [#uses=1]
+ %173 = uitofp i16 %172 to float ; [#uses=1]
+ %174 = fdiv float %173, %153 ; [#uses=1]
+ %175 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %tmp55, i32 1, i32 1 ; [#uses=1]
+ %176 = load i16* %175, align 2 ; [#uses=1]
+ %177 = uitofp i16 %176 to float ; [#uses=1]
+ %178 = fdiv float %177, %158 ; [#uses=1]
+ %179 = load i16* %170, align 2 ; [#uses=1]
+ %180 = uitofp i16 %179 to float ; [#uses=1]
+ %181 = fdiv float %180, %162 ; [#uses=1]
+ %182 = fadd float %181, %164 ; [#uses=2]
+ %183 = fadd float %178, %166 ; [#uses=2]
+ %184 = fadd float %174, %168 ; [#uses=2]
+ store float %182, float* %23, align 8
+ store float %183, float* %24, align 4
+ store float %184, float* %25, align 8
+ store float 0.000000e+00, float* %26, align 4
+ %185 = fcmp ogt float %146, %165 ; [#uses=1]
+ %box.pn25.i = select i1 %185, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.139.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn25.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %iftmp.139.0.i = load float* %iftmp.139.0.in.i, align 8 ; [#uses=2]
+ store float %iftmp.139.0.i, float* %4, align 8
+ %186 = fcmp ogt float %145, %167 ; [#uses=1]
+ %box.pn24.i = select i1 %186, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.140.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn24.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %iftmp.140.0.i = load float* %iftmp.140.0.in.i, align 4 ; [#uses=2]
+ store float %iftmp.140.0.i, float* %5, align 4
+ %187 = fcmp ogt float %144, %169 ; [#uses=1]
+ %box.pn23.i = select i1 %187, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.141.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn23.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %iftmp.141.0.i = load float* %iftmp.141.0.in.i, align 8 ; [#uses=2]
+ store float %iftmp.141.0.i, float* %6, align 8
+ %188 = fcmp olt float %143, %182 ; [#uses=1]
+ %box.pn22.i = select i1 %188, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.142.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn22.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %iftmp.142.0.i = load float* %iftmp.142.0.in.i, align 8 ; [#uses=1]
+ store float %iftmp.142.0.i, float* %7, align 8
+ %189 = fcmp olt float %142, %183 ; [#uses=1]
+ %box.pn21.i = select i1 %189, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.143.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn21.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %iftmp.143.0.i = load float* %iftmp.143.0.in.i, align 4 ; [#uses=1]
+ store float %iftmp.143.0.i, float* %8, align 4
+ %190 = fcmp olt float %141, %184 ; [#uses=1]
+ %box.pn.i = select i1 %190, %struct.GIM_AABB* %temp_box, %struct.GIM_AABB* %bound ; [#uses=1]
+ %iftmp.144.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %iftmp.144.0.i = load float* %iftmp.144.0.in.i, align 8 ; [#uses=1]
+ store float %iftmp.144.0.i, float* %9, align 8
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4.bb6_crit_edge
+ %191 = phi float [ %.pre81, %bb4.bb6_crit_edge ], [ %162, %bb5 ] ; [#uses=1]
+ %192 = phi float [ %.pre80, %bb4.bb6_crit_edge ], [ %158, %bb5 ] ; [#uses=1]
+ %193 = phi float [ %.pre79, %bb4.bb6_crit_edge ], [ %153, %bb5 ] ; [#uses=1]
+ %194 = phi float [ %.pre78, %bb4.bb6_crit_edge ], [ %168, %bb5 ] ; [#uses=3]
+ %195 = phi float [ %.pre77, %bb4.bb6_crit_edge ], [ %166, %bb5 ] ; [#uses=3]
+ %196 = phi float [ %.pre, %bb4.bb6_crit_edge ], [ %164, %bb5 ] ; [#uses=3]
+ %197 = phi float [ %144, %bb4.bb6_crit_edge ], [ %iftmp.141.0.i, %bb5 ] ; [#uses=2]
+ %198 = phi float [ %145, %bb4.bb6_crit_edge ], [ %iftmp.140.0.i, %bb5 ] ; [#uses=2]
+ %199 = phi float [ %146, %bb4.bb6_crit_edge ], [ %iftmp.139.0.i, %bb5 ] ; [#uses=2]
+ %200 = fcmp olt float %199, %196 ; [#uses=1]
+ %clampedPoint.0.0.0.i1.i.i = select i1 %200, float %196, float %199 ; [#uses=2]
+ %201 = fcmp olt float %198, %195 ; [#uses=1]
+ %clampedPoint.0.1.0.i2.i.i = select i1 %201, float %195, float %198 ; [#uses=2]
+ %202 = fcmp olt float %197, %194 ; [#uses=1]
+ %clampedPoint.0.2.0.i3.i.i = select i1 %202, float %194, float %197 ; [#uses=2]
+ %203 = load float* %13, align 4 ; [#uses=2]
+ %204 = fcmp olt float %203, %clampedPoint.0.0.0.i1.i.i ; [#uses=1]
+ %clampedPoint.0.0.1.i4.i.i = select i1 %204, float %203, float %clampedPoint.0.0.0.i1.i.i ; [#uses=1]
+ %205 = load float* %14, align 4 ; [#uses=2]
+ %206 = fcmp olt float %205, %clampedPoint.0.1.0.i2.i.i ; [#uses=1]
+ %clampedPoint.0.1.1.i5.i.i = select i1 %206, float %205, float %clampedPoint.0.1.0.i2.i.i ; [#uses=1]
+ %207 = load float* %15, align 4 ; [#uses=2]
+ %208 = fcmp olt float %207, %clampedPoint.0.2.0.i3.i.i ; [#uses=1]
+ %clampedPoint.0.2.1.i6.i.i = select i1 %208, float %207, float %clampedPoint.0.2.0.i3.i.i ; [#uses=1]
+ %209 = fsub float %clampedPoint.0.2.1.i6.i.i, %194 ; [#uses=1]
+ %210 = fsub float %clampedPoint.0.1.1.i5.i.i, %195 ; [#uses=1]
+ %211 = fsub float %clampedPoint.0.0.1.i4.i.i, %196 ; [#uses=1]
+ %212 = fmul float %209, %193 ; [#uses=1]
+ %213 = fmul float %210, %192 ; [#uses=1]
+ %214 = fmul float %211, %191 ; [#uses=1]
+ %215 = fadd float %214, 5.000000e-01 ; [#uses=1]
+ %216 = fptoui float %215 to i16 ; [#uses=1]
+ %scevgep5960 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %tmp58, i32 0, i32 0 ; [#uses=1]
+ store i16 %216, i16* %scevgep5960, align 2
+ %217 = fadd float %213, 5.000000e-01 ; [#uses=1]
+ %218 = fptoui float %217 to i16 ; [#uses=1]
+ %scevgep61 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %nodecount.040, i32 0, i32 -7 ; [#uses=1]
+ store i16 %218, i16* %scevgep61, align 2
+ %219 = fadd float %212, 5.000000e-01 ; [#uses=1]
+ %220 = fptoui float %219 to i16 ; [#uses=1]
+ %scevgep62 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %34, i32 %nodecount.040, i32 0, i32 -6 ; [#uses=1]
+ store i16 %220, i16* %scevgep62, align 2
+ %221 = load %struct.BT_QUANTIZED_BVH_NODE** %3, align 4 ; [#uses=3]
+ %222 = load float* %7, align 8 ; [#uses=2]
+ %223 = load float* %8, align 4 ; [#uses=2]
+ %224 = load float* %9, align 8 ; [#uses=2]
+ %225 = load float* %10, align 4 ; [#uses=3]
+ %226 = fcmp olt float %222, %225 ; [#uses=1]
+ %clampedPoint.0.0.0.i.i.i = select i1 %226, float %225, float %222 ; [#uses=2]
+ %227 = load float* %11, align 4 ; [#uses=3]
+ %228 = fcmp olt float %223, %227 ; [#uses=1]
+ %clampedPoint.0.1.0.i.i.i = select i1 %228, float %227, float %223 ; [#uses=2]
+ %229 = load float* %12, align 4 ; [#uses=3]
+ %230 = fcmp olt float %224, %229 ; [#uses=1]
+ %clampedPoint.0.2.0.i.i.i = select i1 %230, float %229, float %224 ; [#uses=2]
+ %231 = load float* %13, align 4 ; [#uses=2]
+ %232 = fcmp olt float %231, %clampedPoint.0.0.0.i.i.i ; [#uses=1]
+ %clampedPoint.0.0.1.i.i.i = select i1 %232, float %231, float %clampedPoint.0.0.0.i.i.i ; [#uses=1]
+ %233 = load float* %14, align 4 ; [#uses=2]
+ %234 = fcmp olt float %233, %clampedPoint.0.1.0.i.i.i ; [#uses=1]
+ %clampedPoint.0.1.1.i.i.i = select i1 %234, float %233, float %clampedPoint.0.1.0.i.i.i ; [#uses=1]
+ %235 = load float* %15, align 4 ; [#uses=2]
+ %236 = fcmp olt float %235, %clampedPoint.0.2.0.i.i.i ; [#uses=1]
+ %clampedPoint.0.2.1.i.i.i = select i1 %236, float %235, float %clampedPoint.0.2.0.i.i.i ; [#uses=1]
+ %237 = fsub float %clampedPoint.0.2.1.i.i.i, %229 ; [#uses=1]
+ %238 = fsub float %clampedPoint.0.1.1.i.i.i, %227 ; [#uses=1]
+ %239 = fsub float %clampedPoint.0.0.1.i.i.i, %225 ; [#uses=1]
+ %240 = load float* %16, align 4 ; [#uses=1]
+ %241 = fmul float %237, %240 ; [#uses=1]
+ %242 = load float* %17, align 4 ; [#uses=1]
+ %243 = fmul float %238, %242 ; [#uses=1]
+ %244 = load float* %18, align 4 ; [#uses=1]
+ %245 = fmul float %239, %244 ; [#uses=1]
+ %246 = fadd float %245, 5.000000e-01 ; [#uses=1]
+ %247 = fptoui float %246 to i16 ; [#uses=1]
+ %scevgep63 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %221, i32 %nodecount.040, i32 0, i32 -5 ; [#uses=1]
+ store i16 %247, i16* %scevgep63, align 2
+ %248 = fadd float %243, 5.000000e-01 ; [#uses=1]
+ %249 = fptoui float %248 to i16 ; [#uses=1]
+ %scevgep64 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %221, i32 %nodecount.040, i32 0, i32 -4 ; [#uses=1]
+ store i16 %249, i16* %scevgep64, align 2
+ %250 = fadd float %241, 5.000000e-01 ; [#uses=1]
+ %251 = fptoui float %250 to i16 ; [#uses=1]
+ %scevgep65 = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %221, i32 %nodecount.040, i32 0, i32 -3 ; [#uses=1]
+ store i16 %251, i16* %scevgep65, align 2
+ br label %bb7.backedge
+
+return: ; preds = %bb7.backedge, %entry
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZN18btQuantizedBvhTree20_calc_splitting_axisER18GIM_BVH_DATA_ARRAYii(%struct.btQuantizedBvhTree* nocapture %this, %struct.GIM_BVH_DATA_ARRAY* nocapture %primitive_boxes, i32 %startIndex, i32 %endIndex) nounwind readonly align 2 {
+entry:
+ %0 = sub nsw i32 %endIndex, %startIndex ; [#uses=4]
+ %1 = icmp slt i32 %startIndex, %endIndex ; [#uses=2]
+ br i1 %1, label %bb.nph45, label %bb2.thread
+
+bb2.thread: ; preds = %entry
+ %2 = sitofp i32 %0 to float ; [#uses=1]
+ br label %bb6
+
+bb.nph45: ; preds = %entry
+ %3 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=1]
+ %4 = load %struct.GIM_AABB_DATA** %3, align 4 ; [#uses=6]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph45
+ %indvar61 = phi i32 [ 0, %bb.nph45 ], [ %indvar.next62, %bb ] ; [#uses=2]
+ %means.0.2.043 = phi float [ 0.000000e+00, %bb.nph45 ], [ %19, %bb ] ; [#uses=1]
+ %means.0.1.042 = phi float [ 0.000000e+00, %bb.nph45 ], [ %18, %bb ] ; [#uses=1]
+ %means.0.0.041 = phi float [ 0.000000e+00, %bb.nph45 ], [ %17, %bb ] ; [#uses=1]
+ %tmp65 = add i32 %indvar61, %startIndex ; [#uses=6]
+ %scevgep66 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep67 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep68 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep69 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep70 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep7172 = getelementptr inbounds %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %scevgep66, align 4 ; [#uses=1]
+ %6 = load float* %scevgep67, align 4 ; [#uses=1]
+ %7 = fadd float %5, %6 ; [#uses=1]
+ %8 = load float* %scevgep68, align 4 ; [#uses=1]
+ %9 = load float* %scevgep69, align 4 ; [#uses=1]
+ %10 = fadd float %8, %9 ; [#uses=1]
+ %11 = load float* %scevgep70, align 4 ; [#uses=1]
+ %12 = load float* %scevgep7172, align 4 ; [#uses=1]
+ %13 = fadd float %11, %12 ; [#uses=1]
+ %14 = fmul float %7, 5.000000e-01 ; [#uses=1]
+ %15 = fmul float %10, 5.000000e-01 ; [#uses=1]
+ %16 = fmul float %13, 5.000000e-01 ; [#uses=1]
+ %17 = fadd float %means.0.0.041, %16 ; [#uses=2]
+ %18 = fadd float %means.0.1.042, %15 ; [#uses=2]
+ %19 = fadd float %means.0.2.043, %14 ; [#uses=2]
+ %indvar.next62 = add i32 %indvar61, 1 ; [#uses=2]
+ %exitcond64 = icmp eq i32 %indvar.next62, %0 ; [#uses=1]
+ br i1 %exitcond64, label %bb2, label %bb
+
+bb2: ; preds = %bb
+ %20 = sitofp i32 %0 to float ; [#uses=3]
+ %21 = fdiv float 1.000000e+00, %20 ; [#uses=3]
+ %22 = fmul float %17, %21 ; [#uses=1]
+ %23 = fmul float %18, %21 ; [#uses=1]
+ %24 = fmul float %19, %21 ; [#uses=1]
+ br i1 %1, label %bb.nph, label %bb6
+
+bb.nph: ; preds = %bb2
+ %25 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=1]
+ %26 = load %struct.GIM_AABB_DATA** %25, align 4 ; [#uses=6]
+ br label %bb3
+
+bb3: ; preds = %bb3, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb3 ] ; [#uses=2]
+ %variance.0.2.037 = phi float [ 0.000000e+00, %bb.nph ], [ %47, %bb3 ] ; [#uses=1]
+ %variance.0.1.036 = phi float [ 0.000000e+00, %bb.nph ], [ %46, %bb3 ] ; [#uses=1]
+ %variance.0.0.035 = phi float [ 0.000000e+00, %bb.nph ], [ %45, %bb3 ] ; [#uses=1]
+ %tmp51 = add i32 %indvar, %startIndex ; [#uses=6]
+ %scevgep = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep52 = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep53 = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep54 = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep55 = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep5657 = getelementptr inbounds %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %scevgep, align 4 ; [#uses=1]
+ %28 = load float* %scevgep52, align 4 ; [#uses=1]
+ %29 = fadd float %27, %28 ; [#uses=1]
+ %30 = load float* %scevgep53, align 4 ; [#uses=1]
+ %31 = load float* %scevgep54, align 4 ; [#uses=1]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = load float* %scevgep55, align 4 ; [#uses=1]
+ %34 = load float* %scevgep5657, align 4 ; [#uses=1]
+ %35 = fadd float %33, %34 ; [#uses=1]
+ %36 = fmul float %29, 5.000000e-01 ; [#uses=1]
+ %37 = fmul float %32, 5.000000e-01 ; [#uses=1]
+ %38 = fmul float %35, 5.000000e-01 ; [#uses=1]
+ %39 = fsub float %36, %24 ; [#uses=2]
+ %40 = fsub float %37, %23 ; [#uses=2]
+ %41 = fsub float %38, %22 ; [#uses=2]
+ %42 = fmul float %39, %39 ; [#uses=1]
+ %43 = fmul float %40, %40 ; [#uses=1]
+ %44 = fmul float %41, %41 ; [#uses=1]
+ %45 = fadd float %variance.0.0.035, %44 ; [#uses=2]
+ %46 = fadd float %variance.0.1.036, %43 ; [#uses=2]
+ %47 = fadd float %variance.0.2.037, %42 ; [#uses=2]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %0 ; [#uses=1]
+ br i1 %exitcond, label %bb6, label %bb3
+
+bb6: ; preds = %bb3, %bb2, %bb2.thread
+ %48 = phi float [ %20, %bb2 ], [ %2, %bb2.thread ], [ %20, %bb3 ] ; [#uses=1]
+ %variance.0.2.0.lcssa = phi float [ 0.000000e+00, %bb2 ], [ 0.000000e+00, %bb2.thread ], [ %47, %bb3 ] ; [#uses=1]
+ %variance.0.1.0.lcssa = phi float [ 0.000000e+00, %bb2 ], [ 0.000000e+00, %bb2.thread ], [ %46, %bb3 ] ; [#uses=1]
+ %variance.0.0.0.lcssa = phi float [ 0.000000e+00, %bb2 ], [ 0.000000e+00, %bb2.thread ], [ %45, %bb3 ] ; [#uses=1]
+ %49 = fadd float %48, -1.000000e+00 ; [#uses=1]
+ %50 = fdiv float 1.000000e+00, %49 ; [#uses=3]
+ %51 = fmul float %variance.0.0.0.lcssa, %50 ; [#uses=2]
+ %52 = fmul float %variance.0.1.0.lcssa, %50 ; [#uses=2]
+ %53 = fmul float %variance.0.2.0.lcssa, %50 ; [#uses=2]
+ %54 = fcmp olt float %51, %52 ; [#uses=1]
+ br i1 %54, label %bb.i, label %bb4.i
+
+bb.i: ; preds = %bb6
+ %55 = fcmp olt float %52, %53 ; [#uses=1]
+ %iftmp.20.0.i = select i1 %55, i32 2, i32 1 ; [#uses=1]
+ ret i32 %iftmp.20.0.i
+
+bb4.i: ; preds = %bb6
+ %56 = fcmp olt float %51, %53 ; [#uses=1]
+ %iftmp.21.0.i = select i1 %56, i32 2, i32 0 ; [#uses=1]
+ ret i32 %iftmp.21.0.i
+}
+
+; [#uses=1]
+define i32 @_ZN18btQuantizedBvhTree30_sort_and_calc_splitting_indexER18GIM_BVH_DATA_ARRAYiii(%struct.btQuantizedBvhTree* nocapture %this, %struct.GIM_BVH_DATA_ARRAY* nocapture %primitive_boxes, i32 %startIndex, i32 %endIndex, i32 %splitAxis) nounwind align 2 {
+entry:
+ %means = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %center4 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = sub nsw i32 %endIndex, %startIndex ; [#uses=5]
+ %1 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float 0.000000e+00, float* %1, align 8
+ %2 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float 0.000000e+00, float* %3, align 8
+ %4 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = icmp slt i32 %startIndex, %endIndex ; [#uses=2]
+ br i1 %5, label %bb.nph30, label %bb2
+
+bb.nph30: ; preds = %entry
+ %6 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=1]
+ %7 = load %struct.GIM_AABB_DATA** %6, align 4 ; [#uses=6]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph30
+ %indvar56 = phi i32 [ 0, %bb.nph30 ], [ %indvar.next57, %bb ] ; [#uses=2]
+ %8 = phi float [ 0.000000e+00, %bb.nph30 ], [ %25, %bb ] ; [#uses=1]
+ %9 = phi float [ 0.000000e+00, %bb.nph30 ], [ %24, %bb ] ; [#uses=1]
+ %10 = phi float [ 0.000000e+00, %bb.nph30 ], [ %23, %bb ] ; [#uses=1]
+ %tmp60 = add i32 %indvar56, %startIndex ; [#uses=6]
+ %scevgep61 = getelementptr %struct.GIM_AABB_DATA* %7, i32 %tmp60, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep62 = getelementptr %struct.GIM_AABB_DATA* %7, i32 %tmp60, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep63 = getelementptr %struct.GIM_AABB_DATA* %7, i32 %tmp60, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep64 = getelementptr %struct.GIM_AABB_DATA* %7, i32 %tmp60, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep65 = getelementptr %struct.GIM_AABB_DATA* %7, i32 %tmp60, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep6667 = getelementptr inbounds %struct.GIM_AABB_DATA* %7, i32 %tmp60, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %scevgep61, align 4 ; [#uses=1]
+ %12 = load float* %scevgep62, align 4 ; [#uses=1]
+ %13 = fadd float %11, %12 ; [#uses=1]
+ %14 = load float* %scevgep63, align 4 ; [#uses=1]
+ %15 = load float* %scevgep64, align 4 ; [#uses=1]
+ %16 = fadd float %14, %15 ; [#uses=1]
+ %17 = load float* %scevgep65, align 4 ; [#uses=1]
+ %18 = load float* %scevgep6667, align 4 ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=1]
+ %20 = fmul float %13, 5.000000e-01 ; [#uses=1]
+ %21 = fmul float %16, 5.000000e-01 ; [#uses=1]
+ %22 = fmul float %19, 5.000000e-01 ; [#uses=1]
+ %23 = fadd float %10, %22 ; [#uses=3]
+ %24 = fadd float %9, %21 ; [#uses=3]
+ %25 = fadd float %8, %20 ; [#uses=3]
+ %indvar.next57 = add i32 %indvar56, 1 ; [#uses=2]
+ %exitcond59 = icmp eq i32 %indvar.next57, %0 ; [#uses=1]
+ br i1 %exitcond59, label %bb1.bb2_crit_edge, label %bb
+
+bb1.bb2_crit_edge: ; preds = %bb
+ store float %25, float* %3, align 8
+ store float %24, float* %2, align 4
+ store float %23, float* %1, align 8
+ br label %bb2
+
+bb2: ; preds = %bb1.bb2_crit_edge, %entry
+ %26 = phi float [ %25, %bb1.bb2_crit_edge ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %27 = phi float [ %24, %bb1.bb2_crit_edge ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %28 = phi float [ %23, %bb1.bb2_crit_edge ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %29 = sitofp i32 %0 to float ; [#uses=1]
+ %30 = fdiv float 1.000000e+00, %29 ; [#uses=3]
+ %31 = fmul float %28, %30 ; [#uses=1]
+ store float %31, float* %1, align 8
+ %32 = fmul float %27, %30 ; [#uses=1]
+ store float %32, float* %2, align 4
+ %33 = fmul float %26, %30 ; [#uses=1]
+ store float %33, float* %3, align 8
+ %34 = getelementptr inbounds %struct.btQuadWord* %means, i32 0, i32 0, i32 %splitAxis ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ br i1 %5, label %bb.nph, label %bb8
+
+bb.nph: ; preds = %bb2
+ %36 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=2]
+ %37 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 1 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 2 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 3 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %center4, i32 0, i32 0, i32 %splitAxis ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb6, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb6 ] ; [#uses=2]
+ %splitIndex.128 = phi i32 [ %startIndex, %bb.nph ], [ %splitIndex.0, %bb6 ] ; [#uses=12]
+ %tmp35 = add i32 %indvar, %startIndex ; [#uses=10]
+ %42 = load %struct.GIM_AABB_DATA** %36, align 4 ; [#uses=11]
+ %scevgep47 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %43 = load float* %scevgep47, align 4 ; [#uses=2]
+ %scevgep48 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %44 = load float* %scevgep48, align 4 ; [#uses=2]
+ %45 = fadd float %43, %44 ; [#uses=1]
+ %scevgep49 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %scevgep49, align 4 ; [#uses=2]
+ %scevgep50 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %47 = load float* %scevgep50, align 4 ; [#uses=2]
+ %48 = fadd float %46, %47 ; [#uses=1]
+ %scevgep51 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %49 = load float* %scevgep51, align 4 ; [#uses=2]
+ %scevgep5253 = getelementptr inbounds %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %scevgep5253, align 4 ; [#uses=2]
+ %51 = fadd float %49, %50 ; [#uses=1]
+ %52 = fmul float %45, 5.000000e-01 ; [#uses=1]
+ %53 = fmul float %48, 5.000000e-01 ; [#uses=1]
+ %54 = fmul float %51, 5.000000e-01 ; [#uses=1]
+ store float %54, float* %37, align 8
+ store float %53, float* %38, align 4
+ store float %52, float* %39, align 8
+ store float 0.000000e+00, float* %40, align 4
+ %55 = load float* %41, align 4 ; [#uses=1]
+ %56 = fcmp ogt float %55, %35 ; [#uses=1]
+ br i1 %56, label %bb5, label %bb6
+
+bb5: ; preds = %bb3
+ %scevgep39 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %57 = load float* %scevgep39, align 4 ; [#uses=1]
+ %scevgep43 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %58 = load float* %scevgep43, align 4 ; [#uses=1]
+ %scevgep44 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35, i32 1 ; [#uses=1]
+ %59 = load i32* %scevgep44, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.GIM_AABB_DATA* %42, i32 %splitIndex.128 ; [#uses=1]
+ %61 = bitcast %struct.GIM_AABB_DATA* %60 to i8* ; [#uses=1]
+ %scevgep45 = getelementptr %struct.GIM_AABB_DATA* %42, i32 %tmp35 ; [#uses=1]
+ %scevgep4546 = bitcast %struct.GIM_AABB_DATA* %scevgep45 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep4546, i8* %61, i32 36, i32 4, i1 false) nounwind
+ %62 = load %struct.GIM_AABB_DATA** %36, align 4 ; [#uses=9]
+ %.020.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %50, float* %.020.i, align 4
+ %.122.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %47, float* %.122.i, align 4
+ %.2.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %44, float* %.2.i, align 4
+ %.3.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %57, float* %.3.i, align 4
+ %.1813.0.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %49, float* %.1813.0.i, align 4
+ %.1813.1.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %46, float* %.1813.1.i, align 4
+ %.1813.2.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %43, float* %.1813.2.i, align 4
+ %.1813.3.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %58, float* %.1813.3.i, align 4
+ %.1.i = getelementptr inbounds %struct.GIM_AABB_DATA* %62, i32 %splitIndex.128, i32 1 ; [#uses=1]
+ store i32 %59, i32* %.1.i, align 4
+ %63 = add nsw i32 %splitIndex.128, 1 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb3
+ %splitIndex.0 = phi i32 [ %63, %bb5 ], [ %splitIndex.128, %bb3 ] ; [#uses=2]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %0 ; [#uses=1]
+ br i1 %exitcond, label %bb8, label %bb3
+
+bb8: ; preds = %bb6, %bb2
+ %splitIndex.1.lcssa = phi i32 [ %startIndex, %bb2 ], [ %splitIndex.0, %bb6 ] ; [#uses=3]
+ %64 = sdiv i32 %0, 3 ; [#uses=2]
+ %65 = add nsw i32 %64, %startIndex ; [#uses=1]
+ %66 = icmp slt i32 %65, %splitIndex.1.lcssa ; [#uses=1]
+ br i1 %66, label %bb9, label %bb14
+
+bb9: ; preds = %bb8
+ %67 = add nsw i32 %endIndex, -1 ; [#uses=1]
+ %68 = sub i32 %67, %64 ; [#uses=1]
+ %69 = icmp sgt i32 %68, %splitIndex.1.lcssa ; [#uses=1]
+ br i1 %69, label %bb11, label %bb14
+
+bb11: ; preds = %bb9
+ ret i32 %splitIndex.1.lcssa
+
+bb14: ; preds = %bb9, %bb8
+ %70 = ashr i32 %0, 1 ; [#uses=1]
+ %71 = add nsw i32 %70, %startIndex ; [#uses=1]
+ ret i32 %71
+}
+
+; [#uses=4]
+define void @_ZN18btQuantizedBvhTree15_build_sub_treeER18GIM_BVH_DATA_ARRAYii(%struct.btQuantizedBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 %startIndex, i32 %endIndex) nounwind align 2 {
+entry:
+ %node_bound = alloca %struct.GIM_AABB, align 8 ; [#uses=12]
+ %0 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=16]
+ %2 = add nsw i32 %1, 1 ; [#uses=1]
+ store i32 %2, i32* %0, align 4
+ %3 = sub nsw i32 %endIndex, %startIndex ; [#uses=2]
+ %4 = icmp eq i32 %3, 1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=2]
+ %6 = load %struct.GIM_AABB_DATA** %5, align 4 ; [#uses=6]
+ %7 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %8 = load %struct.BT_QUANTIZED_BVH_NODE** %7, align 4 ; [#uses=3]
+ %9 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %8, i32 %1, i32 0, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=2]
+ %17 = load float* %16, align 4 ; [#uses=3]
+ %18 = fcmp olt float %11, %17 ; [#uses=1]
+ %clampedPoint.0.0.0.i1.i = select i1 %18, float %17, float %11 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ %21 = fcmp olt float %13, %20 ; [#uses=1]
+ %clampedPoint.0.1.0.i2.i = select i1 %21, float %20, float %13 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=2]
+ %23 = load float* %22, align 4 ; [#uses=3]
+ %24 = fcmp olt float %15, %23 ; [#uses=1]
+ %clampedPoint.0.2.0.i3.i = select i1 %24, float %23, float %15 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=2]
+ %26 = load float* %25, align 4 ; [#uses=2]
+ %27 = fcmp olt float %26, %clampedPoint.0.0.0.i1.i ; [#uses=1]
+ %clampedPoint.0.0.1.i4.i = select i1 %27, float %26, float %clampedPoint.0.0.0.i1.i ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=2]
+ %29 = load float* %28, align 4 ; [#uses=2]
+ %30 = fcmp olt float %29, %clampedPoint.0.1.0.i2.i ; [#uses=1]
+ %clampedPoint.0.1.1.i5.i = select i1 %30, float %29, float %clampedPoint.0.1.0.i2.i ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=2]
+ %32 = load float* %31, align 4 ; [#uses=2]
+ %33 = fcmp olt float %32, %clampedPoint.0.2.0.i3.i ; [#uses=1]
+ %clampedPoint.0.2.1.i6.i = select i1 %33, float %32, float %clampedPoint.0.2.0.i3.i ; [#uses=1]
+ %34 = fsub float %clampedPoint.0.2.1.i6.i, %23 ; [#uses=1]
+ %35 = fsub float %clampedPoint.0.1.1.i5.i, %20 ; [#uses=1]
+ %36 = fsub float %clampedPoint.0.0.1.i4.i, %17 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fmul float %34, %38 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = fmul float %35, %41 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = fmul float %36, %44 ; [#uses=1]
+ %46 = fadd float %45, 5.000000e-01 ; [#uses=1]
+ %47 = fptoui float %46 to i16 ; [#uses=1]
+ store i16 %47, i16* %9, align 2
+ %48 = fadd float %42, 5.000000e-01 ; [#uses=1]
+ %49 = fptoui float %48 to i16 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %8, i32 %1, i32 0, i32 1 ; [#uses=1]
+ store i16 %49, i16* %50, align 2
+ %51 = fadd float %39, 5.000000e-01 ; [#uses=1]
+ %52 = fptoui float %51 to i16 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %8, i32 %1, i32 0, i32 2 ; [#uses=1]
+ store i16 %52, i16* %53, align 2
+ %54 = load %struct.BT_QUANTIZED_BVH_NODE** %7, align 4 ; [#uses=3]
+ %55 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %54, i32 %1, i32 1, i32 0 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=2]
+ %58 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=2]
+ %60 = getelementptr inbounds %struct.GIM_AABB_DATA* %6, i32 %startIndex, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=2]
+ %62 = load float* %16, align 4 ; [#uses=3]
+ %63 = fcmp olt float %57, %62 ; [#uses=1]
+ %clampedPoint.0.0.0.i.i = select i1 %63, float %62, float %57 ; [#uses=2]
+ %64 = load float* %19, align 4 ; [#uses=3]
+ %65 = fcmp olt float %59, %64 ; [#uses=1]
+ %clampedPoint.0.1.0.i.i = select i1 %65, float %64, float %59 ; [#uses=2]
+ %66 = load float* %22, align 4 ; [#uses=3]
+ %67 = fcmp olt float %61, %66 ; [#uses=1]
+ %clampedPoint.0.2.0.i.i = select i1 %67, float %66, float %61 ; [#uses=2]
+ %68 = load float* %25, align 4 ; [#uses=2]
+ %69 = fcmp olt float %68, %clampedPoint.0.0.0.i.i ; [#uses=1]
+ %clampedPoint.0.0.1.i.i = select i1 %69, float %68, float %clampedPoint.0.0.0.i.i ; [#uses=1]
+ %70 = load float* %28, align 4 ; [#uses=2]
+ %71 = fcmp olt float %70, %clampedPoint.0.1.0.i.i ; [#uses=1]
+ %clampedPoint.0.1.1.i.i = select i1 %71, float %70, float %clampedPoint.0.1.0.i.i ; [#uses=1]
+ %72 = load float* %31, align 4 ; [#uses=2]
+ %73 = fcmp olt float %72, %clampedPoint.0.2.0.i.i ; [#uses=1]
+ %clampedPoint.0.2.1.i.i = select i1 %73, float %72, float %clampedPoint.0.2.0.i.i ; [#uses=1]
+ %74 = fsub float %clampedPoint.0.2.1.i.i, %66 ; [#uses=1]
+ %75 = fsub float %clampedPoint.0.1.1.i.i, %64 ; [#uses=1]
+ %76 = fsub float %clampedPoint.0.0.1.i.i, %62 ; [#uses=1]
+ %77 = load float* %37, align 4 ; [#uses=1]
+ %78 = fmul float %74, %77 ; [#uses=1]
+ %79 = load float* %40, align 4 ; [#uses=1]
+ %80 = fmul float %75, %79 ; [#uses=1]
+ %81 = load float* %43, align 4 ; [#uses=1]
+ %82 = fmul float %76, %81 ; [#uses=1]
+ %83 = fadd float %82, 5.000000e-01 ; [#uses=1]
+ %84 = fptoui float %83 to i16 ; [#uses=1]
+ store i16 %84, i16* %55, align 2
+ %85 = fadd float %80, 5.000000e-01 ; [#uses=1]
+ %86 = fptoui float %85 to i16 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %54, i32 %1, i32 1, i32 1 ; [#uses=1]
+ store i16 %86, i16* %87, align 2
+ %88 = fadd float %78, 5.000000e-01 ; [#uses=1]
+ %89 = fptoui float %88 to i16 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %54, i32 %1, i32 1, i32 2 ; [#uses=1]
+ store i16 %89, i16* %90, align 2
+ %91 = load %struct.GIM_AABB_DATA** %5, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.GIM_AABB_DATA* %91, i32 %startIndex, i32 1 ; [#uses=1]
+ %93 = load i32* %92, align 4 ; [#uses=1]
+ %94 = load %struct.BT_QUANTIZED_BVH_NODE** %7, align 4 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %94, i32 %1, i32 2 ; [#uses=1]
+ store i32 %93, i32* %95, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %96 = call i32 @_ZN18btQuantizedBvhTree20_calc_splitting_axisER18GIM_BVH_DATA_ARRAYii(%struct.btQuantizedBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 %startIndex, i32 %endIndex) ; [#uses=1]
+ %97 = call i32 @_ZN18btQuantizedBvhTree30_sort_and_calc_splitting_indexER18GIM_BVH_DATA_ARRAYiii(%struct.btQuantizedBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 %startIndex, i32 %endIndex, i32 %96) ; [#uses=2]
+ %98 = getelementptr inbounds %struct.GIM_AABB* %node_bound, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %98, align 8
+ %99 = getelementptr inbounds %struct.GIM_AABB* %node_bound, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %99, align 4
+ %100 = getelementptr inbounds %struct.GIM_AABB* %node_bound, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %100, align 8
+ %101 = getelementptr inbounds %struct.GIM_AABB* %node_bound, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %101, align 8
+ %102 = getelementptr inbounds %struct.GIM_AABB* %node_bound, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %102, align 4
+ %103 = getelementptr inbounds %struct.GIM_AABB* %node_bound, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %103, align 8
+ %104 = icmp slt i32 %startIndex, %endIndex ; [#uses=1]
+ br i1 %104, label %bb.nph, label %bb4
+
+bb.nph: ; preds = %bb1
+ %105 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb.nph
+ %106 = phi float [ 0xC7EFFFFFE0000000, %bb.nph ], [ %iftmp.144.0.i, %bb2 ] ; [#uses=1]
+ %107 = phi float [ 0xC7EFFFFFE0000000, %bb.nph ], [ %iftmp.143.0.i, %bb2 ] ; [#uses=1]
+ %108 = phi float [ 0xC7EFFFFFE0000000, %bb.nph ], [ %iftmp.142.0.i, %bb2 ] ; [#uses=1]
+ %109 = phi float [ 0x47EFFFFFE0000000, %bb.nph ], [ %iftmp.141.0.i, %bb2 ] ; [#uses=1]
+ %110 = phi float [ 0x47EFFFFFE0000000, %bb.nph ], [ %iftmp.140.0.i, %bb2 ] ; [#uses=1]
+ %111 = phi float [ 0x47EFFFFFE0000000, %bb.nph ], [ %iftmp.139.0.i, %bb2 ] ; [#uses=1]
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb2 ] ; [#uses=2]
+ %tmp19 = add i32 %indvar, %startIndex ; [#uses=7]
+ %112 = load %struct.GIM_AABB_DATA** %105, align 4 ; [#uses=7]
+ %scevgep3132 = getelementptr inbounds %struct.GIM_AABB_DATA* %112, i32 %tmp19, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %113 = load float* %scevgep3132, align 4 ; [#uses=1]
+ %114 = fcmp ogt float %111, %113 ; [#uses=1]
+ %scevgep2930 = getelementptr inbounds %struct.GIM_AABB_DATA* %112, i32 %tmp19, i32 0 ; [#uses=6]
+ %box.pn25.i = select i1 %114, %struct.GIM_AABB* %scevgep2930, %struct.GIM_AABB* %node_bound ; [#uses=1]
+ %iftmp.139.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn25.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %iftmp.139.0.i = load float* %iftmp.139.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.139.0.i, float* %98, align 8
+ %scevgep33 = getelementptr %struct.GIM_AABB_DATA* %112, i32 %tmp19, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %115 = load float* %scevgep33, align 4 ; [#uses=1]
+ %116 = fcmp ogt float %110, %115 ; [#uses=1]
+ %box.pn24.i = select i1 %116, %struct.GIM_AABB* %scevgep2930, %struct.GIM_AABB* %node_bound ; [#uses=1]
+ %iftmp.140.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn24.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %iftmp.140.0.i = load float* %iftmp.140.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.140.0.i, float* %99, align 4
+ %scevgep34 = getelementptr %struct.GIM_AABB_DATA* %112, i32 %tmp19, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %117 = load float* %scevgep34, align 4 ; [#uses=1]
+ %118 = fcmp ogt float %109, %117 ; [#uses=1]
+ %box.pn23.i = select i1 %118, %struct.GIM_AABB* %scevgep2930, %struct.GIM_AABB* %node_bound ; [#uses=1]
+ %iftmp.141.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn23.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %iftmp.141.0.i = load float* %iftmp.141.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.141.0.i, float* %100, align 8
+ %scevgep35 = getelementptr %struct.GIM_AABB_DATA* %112, i32 %tmp19, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %119 = load float* %scevgep35, align 4 ; [#uses=1]
+ %120 = fcmp olt float %108, %119 ; [#uses=1]
+ %box.pn22.i = select i1 %120, %struct.GIM_AABB* %scevgep2930, %struct.GIM_AABB* %node_bound ; [#uses=1]
+ %iftmp.142.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn22.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %iftmp.142.0.i = load float* %iftmp.142.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.142.0.i, float* %101, align 8
+ %scevgep36 = getelementptr %struct.GIM_AABB_DATA* %112, i32 %tmp19, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %121 = load float* %scevgep36, align 4 ; [#uses=1]
+ %122 = fcmp olt float %107, %121 ; [#uses=1]
+ %box.pn21.i = select i1 %122, %struct.GIM_AABB* %scevgep2930, %struct.GIM_AABB* %node_bound ; [#uses=1]
+ %iftmp.143.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn21.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %iftmp.143.0.i = load float* %iftmp.143.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.143.0.i, float* %102, align 4
+ %scevgep37 = getelementptr %struct.GIM_AABB_DATA* %112, i32 %tmp19, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %123 = load float* %scevgep37, align 4 ; [#uses=1]
+ %124 = fcmp olt float %106, %123 ; [#uses=1]
+ %box.pn.i = select i1 %124, %struct.GIM_AABB* %scevgep2930, %struct.GIM_AABB* %node_bound ; [#uses=1]
+ %iftmp.144.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %iftmp.144.0.i = load float* %iftmp.144.0.in.i, align 4 ; [#uses=3]
+ store float %iftmp.144.0.i, float* %103, align 8
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %3 ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb2
+
+bb4: ; preds = %bb2, %bb1
+ %125 = phi float [ 0xC7EFFFFFE0000000, %bb1 ], [ %iftmp.144.0.i, %bb2 ] ; [#uses=2]
+ %126 = phi float [ 0xC7EFFFFFE0000000, %bb1 ], [ %iftmp.143.0.i, %bb2 ] ; [#uses=2]
+ %127 = phi float [ 0xC7EFFFFFE0000000, %bb1 ], [ %iftmp.142.0.i, %bb2 ] ; [#uses=2]
+ %128 = phi float [ 0x47EFFFFFE0000000, %bb1 ], [ %iftmp.141.0.i, %bb2 ] ; [#uses=2]
+ %129 = phi float [ 0x47EFFFFFE0000000, %bb1 ], [ %iftmp.140.0.i, %bb2 ] ; [#uses=2]
+ %130 = phi float [ 0x47EFFFFFE0000000, %bb1 ], [ %iftmp.139.0.i, %bb2 ] ; [#uses=2]
+ %131 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %132 = load %struct.BT_QUANTIZED_BVH_NODE** %131, align 4 ; [#uses=3]
+ %133 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %132, i32 %1, i32 0, i32 0 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=2]
+ %135 = load float* %134, align 4 ; [#uses=3]
+ %136 = fcmp olt float %130, %135 ; [#uses=1]
+ %clampedPoint.0.0.0.i1.i6 = select i1 %136, float %135, float %130 ; [#uses=2]
+ %137 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=2]
+ %138 = load float* %137, align 4 ; [#uses=3]
+ %139 = fcmp olt float %129, %138 ; [#uses=1]
+ %clampedPoint.0.1.0.i2.i7 = select i1 %139, float %138, float %129 ; [#uses=2]
+ %140 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=2]
+ %141 = load float* %140, align 4 ; [#uses=3]
+ %142 = fcmp olt float %128, %141 ; [#uses=1]
+ %clampedPoint.0.2.0.i3.i8 = select i1 %142, float %141, float %128 ; [#uses=2]
+ %143 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=2]
+ %144 = load float* %143, align 4 ; [#uses=2]
+ %145 = fcmp olt float %144, %clampedPoint.0.0.0.i1.i6 ; [#uses=1]
+ %clampedPoint.0.0.1.i4.i9 = select i1 %145, float %144, float %clampedPoint.0.0.0.i1.i6 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=2]
+ %147 = load float* %146, align 4 ; [#uses=2]
+ %148 = fcmp olt float %147, %clampedPoint.0.1.0.i2.i7 ; [#uses=1]
+ %clampedPoint.0.1.1.i5.i10 = select i1 %148, float %147, float %clampedPoint.0.1.0.i2.i7 ; [#uses=1]
+ %149 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=2]
+ %150 = load float* %149, align 4 ; [#uses=2]
+ %151 = fcmp olt float %150, %clampedPoint.0.2.0.i3.i8 ; [#uses=1]
+ %clampedPoint.0.2.1.i6.i11 = select i1 %151, float %150, float %clampedPoint.0.2.0.i3.i8 ; [#uses=1]
+ %152 = fsub float %clampedPoint.0.2.1.i6.i11, %141 ; [#uses=1]
+ %153 = fsub float %clampedPoint.0.1.1.i5.i10, %138 ; [#uses=1]
+ %154 = fsub float %clampedPoint.0.0.1.i4.i9, %135 ; [#uses=1]
+ %155 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %156 = load float* %155, align 4 ; [#uses=1]
+ %157 = fmul float %152, %156 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %159 = load float* %158, align 4 ; [#uses=1]
+ %160 = fmul float %153, %159 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ %163 = fmul float %154, %162 ; [#uses=1]
+ %164 = fadd float %163, 5.000000e-01 ; [#uses=1]
+ %165 = fptoui float %164 to i16 ; [#uses=1]
+ store i16 %165, i16* %133, align 2
+ %166 = fadd float %160, 5.000000e-01 ; [#uses=1]
+ %167 = fptoui float %166 to i16 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %132, i32 %1, i32 0, i32 1 ; [#uses=1]
+ store i16 %167, i16* %168, align 2
+ %169 = fadd float %157, 5.000000e-01 ; [#uses=1]
+ %170 = fptoui float %169 to i16 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %132, i32 %1, i32 0, i32 2 ; [#uses=1]
+ store i16 %170, i16* %171, align 2
+ %172 = load %struct.BT_QUANTIZED_BVH_NODE** %131, align 4 ; [#uses=3]
+ %173 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %172, i32 %1, i32 1, i32 0 ; [#uses=1]
+ %174 = load float* %134, align 4 ; [#uses=3]
+ %175 = fcmp olt float %127, %174 ; [#uses=1]
+ %clampedPoint.0.0.0.i.i12 = select i1 %175, float %174, float %127 ; [#uses=2]
+ %176 = load float* %137, align 4 ; [#uses=3]
+ %177 = fcmp olt float %126, %176 ; [#uses=1]
+ %clampedPoint.0.1.0.i.i13 = select i1 %177, float %176, float %126 ; [#uses=2]
+ %178 = load float* %140, align 4 ; [#uses=3]
+ %179 = fcmp olt float %125, %178 ; [#uses=1]
+ %clampedPoint.0.2.0.i.i14 = select i1 %179, float %178, float %125 ; [#uses=2]
+ %180 = load float* %143, align 4 ; [#uses=2]
+ %181 = fcmp olt float %180, %clampedPoint.0.0.0.i.i12 ; [#uses=1]
+ %clampedPoint.0.0.1.i.i15 = select i1 %181, float %180, float %clampedPoint.0.0.0.i.i12 ; [#uses=1]
+ %182 = load float* %146, align 4 ; [#uses=2]
+ %183 = fcmp olt float %182, %clampedPoint.0.1.0.i.i13 ; [#uses=1]
+ %clampedPoint.0.1.1.i.i16 = select i1 %183, float %182, float %clampedPoint.0.1.0.i.i13 ; [#uses=1]
+ %184 = load float* %149, align 4 ; [#uses=2]
+ %185 = fcmp olt float %184, %clampedPoint.0.2.0.i.i14 ; [#uses=1]
+ %clampedPoint.0.2.1.i.i17 = select i1 %185, float %184, float %clampedPoint.0.2.0.i.i14 ; [#uses=1]
+ %186 = fsub float %clampedPoint.0.2.1.i.i17, %178 ; [#uses=1]
+ %187 = fsub float %clampedPoint.0.1.1.i.i16, %176 ; [#uses=1]
+ %188 = fsub float %clampedPoint.0.0.1.i.i15, %174 ; [#uses=1]
+ %189 = load float* %155, align 4 ; [#uses=1]
+ %190 = fmul float %186, %189 ; [#uses=1]
+ %191 = load float* %158, align 4 ; [#uses=1]
+ %192 = fmul float %187, %191 ; [#uses=1]
+ %193 = load float* %161, align 4 ; [#uses=1]
+ %194 = fmul float %188, %193 ; [#uses=1]
+ %195 = fadd float %194, 5.000000e-01 ; [#uses=1]
+ %196 = fptoui float %195 to i16 ; [#uses=1]
+ store i16 %196, i16* %173, align 2
+ %197 = fadd float %192, 5.000000e-01 ; [#uses=1]
+ %198 = fptoui float %197 to i16 ; [#uses=1]
+ %199 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %172, i32 %1, i32 1, i32 1 ; [#uses=1]
+ store i16 %198, i16* %199, align 2
+ %200 = fadd float %190, 5.000000e-01 ; [#uses=1]
+ %201 = fptoui float %200 to i16 ; [#uses=1]
+ %202 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %172, i32 %1, i32 1, i32 2 ; [#uses=1]
+ store i16 %201, i16* %202, align 2
+ call void @_ZN18btQuantizedBvhTree15_build_sub_treeER18GIM_BVH_DATA_ARRAYii(%struct.btQuantizedBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 %startIndex, i32 %97)
+ call void @_ZN18btQuantizedBvhTree15_build_sub_treeER18GIM_BVH_DATA_ARRAYii(%struct.btQuantizedBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 %97, i32 %endIndex)
+ %203 = load i32* %0, align 4 ; [#uses=1]
+ %204 = sub nsw i32 %1, %203 ; [#uses=1]
+ %205 = load %struct.BT_QUANTIZED_BVH_NODE** %131, align 4 ; [#uses=1]
+ %206 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %205, i32 %1, i32 2 ; [#uses=1]
+ store i32 %204, i32* %206, align 4
+ ret void
+}
+
+; [#uses=9]
+define internal fastcc void @_ZL41_find_quantized_collision_pairs_recursiveP21btGImpactQuantizedBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBoxSet* %boxset0, %struct.btGImpactBoxSet* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %node0, i32 %node1, i8 zeroext %complete_primitive_tests) {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %box0.i = alloca %struct.GIM_AABB, align 8 ; [#uses=9]
+ %box1.i = alloca %struct.GIM_AABB, align 8 ; [#uses=9]
+ %1 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=4]
+ %2 = load %struct.BT_QUANTIZED_BVH_NODE** %1, align 4 ; [#uses=7]
+ %3 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %2, i32 %node0, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %2, i32 %node0, i32 0, i32 2 ; [#uses=1]
+ %5 = load i16* %4, align 2 ; [#uses=1]
+ %6 = uitofp i16 %5 to float ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset0, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fdiv float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %2, i32 %node0, i32 0, i32 1 ; [#uses=1]
+ %11 = load i16* %10, align 2 ; [#uses=1]
+ %12 = uitofp i16 %11 to float ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset0, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = fdiv float %12, %14 ; [#uses=1]
+ %16 = load i16* %3, align 2 ; [#uses=1]
+ %17 = uitofp i16 %16 to float ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset0, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=2]
+ %20 = fdiv float %17, %19 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset0, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ %23 = fadd float %20, %22 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset0, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=2]
+ %26 = fadd float %15, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset0, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=2]
+ %29 = fadd float %9, %28 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %23, float* %30, align 8
+ %31 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %26, float* %31, align 4
+ %32 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %29, float* %32, align 8
+ %33 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %2, i32 %node0, i32 1, i32 0 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %2, i32 %node0, i32 1, i32 2 ; [#uses=1]
+ %36 = load i16* %35, align 2 ; [#uses=1]
+ %37 = uitofp i16 %36 to float ; [#uses=1]
+ %38 = fdiv float %37, %8 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %2, i32 %node0, i32 1, i32 1 ; [#uses=1]
+ %40 = load i16* %39, align 2 ; [#uses=1]
+ %41 = uitofp i16 %40 to float ; [#uses=1]
+ %42 = fdiv float %41, %14 ; [#uses=1]
+ %43 = load i16* %34, align 2 ; [#uses=1]
+ %44 = uitofp i16 %43 to float ; [#uses=1]
+ %45 = fdiv float %44, %19 ; [#uses=1]
+ %46 = fadd float %45, %22 ; [#uses=1]
+ %47 = fadd float %42, %25 ; [#uses=1]
+ %48 = fadd float %38, %28 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %46, float* %49, align 8
+ %50 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %47, float* %50, align 4
+ %51 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %48, float* %51, align 8
+ %52 = getelementptr inbounds %struct.GIM_AABB* %box0.i, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=4]
+ %54 = load %struct.BT_QUANTIZED_BVH_NODE** %53, align 4 ; [#uses=7]
+ %55 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %54, i32 %node1, i32 0, i32 0 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %54, i32 %node1, i32 0, i32 2 ; [#uses=1]
+ %57 = load i16* %56, align 2 ; [#uses=1]
+ %58 = uitofp i16 %57 to float ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset1, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=2]
+ %61 = fdiv float %58, %60 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %54, i32 %node1, i32 0, i32 1 ; [#uses=1]
+ %63 = load i16* %62, align 2 ; [#uses=1]
+ %64 = uitofp i16 %63 to float ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset1, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=2]
+ %67 = fdiv float %64, %66 ; [#uses=1]
+ %68 = load i16* %55, align 2 ; [#uses=1]
+ %69 = uitofp i16 %68 to float ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset1, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=2]
+ %72 = fdiv float %69, %71 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset1, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=2]
+ %75 = fadd float %72, %74 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset1, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=2]
+ %78 = fadd float %67, %77 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset1, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=2]
+ %81 = fadd float %61, %80 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %75, float* %82, align 8
+ %83 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %78, float* %83, align 4
+ %84 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %81, float* %84, align 8
+ %85 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %85, align 4
+ %86 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %54, i32 %node1, i32 1, i32 0 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %54, i32 %node1, i32 1, i32 2 ; [#uses=1]
+ %88 = load i16* %87, align 2 ; [#uses=1]
+ %89 = uitofp i16 %88 to float ; [#uses=1]
+ %90 = fdiv float %89, %60 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %54, i32 %node1, i32 1, i32 1 ; [#uses=1]
+ %92 = load i16* %91, align 2 ; [#uses=1]
+ %93 = uitofp i16 %92 to float ; [#uses=1]
+ %94 = fdiv float %93, %66 ; [#uses=1]
+ %95 = load i16* %86, align 2 ; [#uses=1]
+ %96 = uitofp i16 %95 to float ; [#uses=1]
+ %97 = fdiv float %96, %71 ; [#uses=1]
+ %98 = fadd float %97, %74 ; [#uses=1]
+ %99 = fadd float %94, %77 ; [#uses=1]
+ %100 = fadd float %90, %80 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %98, float* %101, align 8
+ %102 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %99, float* %102, align 4
+ %103 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %100, float* %103, align 8
+ %104 = getelementptr inbounds %struct.GIM_AABB* %box1.i, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %104, align 4
+ %105 = call zeroext i8 @_ZNK6btAABB23overlapping_trans_cacheERKS_RK26BT_BOX_BOX_TRANSFORM_CACHEb(%struct.GIM_AABB* %box0.i, %struct.GIM_AABB* %box1.i, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i8 zeroext %complete_primitive_tests) nounwind ; [#uses=1]
+ %toBoolnot = icmp eq i8 %105, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %return, label %bb
+
+bb: ; preds = %entry
+ %106 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %2, i32 %node0, i32 2 ; [#uses=1]
+ %107 = load i32* %106, align 4 ; [#uses=2]
+ %toBool3 = icmp slt i32 %107, 0 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %54, i32 %node1, i32 2 ; [#uses=1]
+ %109 = load i32* %108, align 4 ; [#uses=2]
+ %toBool9 = icmp slt i32 %109, 0 ; [#uses=2]
+ br i1 %toBool3, label %bb8, label %bb4
+
+bb4: ; preds = %bb
+ br i1 %toBool9, label %bb7, label %bb6
+
+bb6: ; preds = %bb4
+ %110 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %0, i32 0, i32 0 ; [#uses=1]
+ store i32 %107, i32* %110, align 8
+ %111 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %0, i32 0, i32 1 ; [#uses=1]
+ store i32 %109, i32* %111, align 4
+ %112 = getelementptr inbounds %struct.btPairSet* %collision_pairs, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI8GIM_PAIRE9push_backERKS0_(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %112, %struct.CONTACT_KEY_TOKEN* %0) inlinehint
+ ret void
+
+bb7: ; preds = %bb4
+ %113 = add nsw i32 %node1, 1 ; [#uses=3]
+ call fastcc void @_ZL41_find_quantized_collision_pairs_recursiveP21btGImpactQuantizedBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBoxSet* %boxset0, %struct.btGImpactBoxSet* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %node0, i32 %113, i8 zeroext 0)
+ %114 = load %struct.BT_QUANTIZED_BVH_NODE** %53, align 4 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %114, i32 %113, i32 2 ; [#uses=1]
+ %116 = load i32* %115, align 4 ; [#uses=2]
+ %toBool.i.i16 = icmp slt i32 %116, 0 ; [#uses=1]
+ %117 = add nsw i32 %node1, 2 ; [#uses=1]
+ %118 = sub i32 %113, %116 ; [#uses=1]
+ %119 = select i1 %toBool.i.i16, i32 %118, i32 %117 ; [#uses=1]
+ call fastcc void @_ZL41_find_quantized_collision_pairs_recursiveP21btGImpactQuantizedBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBoxSet* %boxset0, %struct.btGImpactBoxSet* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %node0, i32 %119, i8 zeroext 0)
+ ret void
+
+bb8: ; preds = %bb
+ br i1 %toBool9, label %bb11, label %bb10
+
+bb10: ; preds = %bb8
+ %120 = add nsw i32 %node0, 1 ; [#uses=3]
+ call fastcc void @_ZL41_find_quantized_collision_pairs_recursiveP21btGImpactQuantizedBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBoxSet* %boxset0, %struct.btGImpactBoxSet* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %120, i32 %node1, i8 zeroext 0)
+ %121 = load %struct.BT_QUANTIZED_BVH_NODE** %1, align 4 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %121, i32 %120, i32 2 ; [#uses=1]
+ %123 = load i32* %122, align 4 ; [#uses=2]
+ %toBool.i.i19 = icmp slt i32 %123, 0 ; [#uses=1]
+ %124 = add nsw i32 %node0, 2 ; [#uses=1]
+ %125 = sub i32 %120, %123 ; [#uses=1]
+ %126 = select i1 %toBool.i.i19, i32 %125, i32 %124 ; [#uses=1]
+ call fastcc void @_ZL41_find_quantized_collision_pairs_recursiveP21btGImpactQuantizedBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBoxSet* %boxset0, %struct.btGImpactBoxSet* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %126, i32 %node1, i8 zeroext 0)
+ ret void
+
+bb11: ; preds = %bb8
+ %127 = add nsw i32 %node1, 1 ; [#uses=6]
+ %128 = add nsw i32 %node0, 1 ; [#uses=6]
+ call fastcc void @_ZL41_find_quantized_collision_pairs_recursiveP21btGImpactQuantizedBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBoxSet* %boxset0, %struct.btGImpactBoxSet* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %128, i32 %127, i8 zeroext 0)
+ %129 = load %struct.BT_QUANTIZED_BVH_NODE** %53, align 4 ; [#uses=1]
+ %130 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %129, i32 %127, i32 2 ; [#uses=1]
+ %131 = load i32* %130, align 4 ; [#uses=2]
+ %toBool.i.i18 = icmp slt i32 %131, 0 ; [#uses=1]
+ %132 = add nsw i32 %node1, 2 ; [#uses=2]
+ %133 = sub i32 %127, %131 ; [#uses=1]
+ %134 = select i1 %toBool.i.i18, i32 %133, i32 %132 ; [#uses=1]
+ call fastcc void @_ZL41_find_quantized_collision_pairs_recursiveP21btGImpactQuantizedBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBoxSet* %boxset0, %struct.btGImpactBoxSet* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %128, i32 %134, i8 zeroext 0)
+ %135 = load %struct.BT_QUANTIZED_BVH_NODE** %1, align 4 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %135, i32 %128, i32 2 ; [#uses=1]
+ %137 = load i32* %136, align 4 ; [#uses=2]
+ %toBool.i.i20 = icmp slt i32 %137, 0 ; [#uses=1]
+ %138 = add nsw i32 %node0, 2 ; [#uses=2]
+ %139 = sub i32 %128, %137 ; [#uses=1]
+ %140 = select i1 %toBool.i.i20, i32 %139, i32 %138 ; [#uses=1]
+ call fastcc void @_ZL41_find_quantized_collision_pairs_recursiveP21btGImpactQuantizedBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBoxSet* %boxset0, %struct.btGImpactBoxSet* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %140, i32 %127, i8 zeroext 0)
+ %141 = load %struct.BT_QUANTIZED_BVH_NODE** %53, align 4 ; [#uses=1]
+ %142 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %141, i32 %127, i32 2 ; [#uses=1]
+ %143 = load i32* %142, align 4 ; [#uses=2]
+ %toBool.i.i17 = icmp slt i32 %143, 0 ; [#uses=1]
+ %144 = sub i32 %127, %143 ; [#uses=1]
+ %145 = select i1 %toBool.i.i17, i32 %144, i32 %132 ; [#uses=1]
+ %146 = load %struct.BT_QUANTIZED_BVH_NODE** %1, align 4 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %146, i32 %128, i32 2 ; [#uses=1]
+ %148 = load i32* %147, align 4 ; [#uses=2]
+ %toBool.i.i = icmp slt i32 %148, 0 ; [#uses=1]
+ %149 = sub i32 %128, %148 ; [#uses=1]
+ %150 = select i1 %toBool.i.i, i32 %149, i32 %138 ; [#uses=1]
+ call fastcc void @_ZL41_find_quantized_collision_pairs_recursiveP21btGImpactQuantizedBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBoxSet* %boxset0, %struct.btGImpactBoxSet* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 %150, i32 %145, i8 zeroext 0)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btGImpactQuantizedBvh14find_collisionEPS_RK11btTransformS0_S3_R9btPairSet(%struct.btGImpactBoxSet* %boxset0, %struct.btTransform* nocapture %trans0, %struct.btGImpactBoxSet* %boxset1, %struct.btTransform* nocapture %trans1, %struct.btPairSet* %collision_pairs) align 2 {
+entry:
+ %trans_cache_1to0 = alloca %struct.BT_BOX_BOX_TRANSFORM_CACHE, align 8 ; [#uses=2]
+ %0 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btGImpactBoxSet* %boxset1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %5 = icmp eq i32 %4, 0 ; [#uses=1]
+ br i1 %5, label %return, label %bb4.critedge
+
+bb4.critedge: ; preds = %bb
+ call void @_ZN26BT_BOX_BOX_TRANSFORM_CACHE19calc_from_homogenicERK11btTransformS2_(%struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, %struct.btTransform* %trans0, %struct.btTransform* %trans1) inlinehint
+ call fastcc void @_ZL41_find_quantized_collision_pairs_recursiveP21btGImpactQuantizedBvhS0_P9btPairSetRK26BT_BOX_BOX_TRANSFORM_CACHEiib(%struct.btGImpactBoxSet* %boxset0, %struct.btGImpactBoxSet* %boxset1, %struct.btPairSet* %collision_pairs, %struct.BT_BOX_BOX_TRANSFORM_CACHE* %trans_cache_1to0, i32 0, i32 0, i8 zeroext 1)
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=0]
+define zeroext i8 @_ZNK21btGImpactQuantizedBvh8rayQueryERK9btVector3S2_R20btAlignedObjectArrayIiE(%struct.btGImpactBoxSet* nocapture %this, %struct.btQuadWord* nocapture %ray_dir, %struct.btQuadWord* nocapture %ray_origin, %"struct.btAlignedObjectArray<int>"* nocapture %collided_results) align 2 {
+entry:
+ %bound = alloca %struct.GIM_AABB, align 8 ; [#uses=9]
+ %0 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %bb11
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.GIM_AABB* %bound, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %18 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 1 ; [#uses=5]
+ %19 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 2 ; [#uses=2]
+ %20 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 3 ; [#uses=5]
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 4 ; [#uses=2]
+ br label %bb
+
+bb: ; preds = %bb10.backedge, %bb.nph
+ %curIndex.019 = phi i32 [ 0, %bb.nph ], [ %curIndex.0.be, %bb10.backedge ] ; [#uses=10]
+ %22 = load %struct.BT_QUANTIZED_BVH_NODE** %3, align 4 ; [#uses=7]
+ %23 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %22, i32 %curIndex.019, i32 0, i32 0 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %22, i32 %curIndex.019, i32 0, i32 2 ; [#uses=1]
+ %25 = load i16* %24, align 2 ; [#uses=1]
+ %26 = uitofp i16 %25 to float ; [#uses=1]
+ %27 = load float* %4, align 4 ; [#uses=2]
+ %28 = fdiv float %26, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %22, i32 %curIndex.019, i32 0, i32 1 ; [#uses=1]
+ %30 = load i16* %29, align 2 ; [#uses=1]
+ %31 = uitofp i16 %30 to float ; [#uses=1]
+ %32 = load float* %5, align 4 ; [#uses=2]
+ %33 = fdiv float %31, %32 ; [#uses=1]
+ %34 = load i16* %23, align 2 ; [#uses=1]
+ %35 = uitofp i16 %34 to float ; [#uses=1]
+ %36 = load float* %6, align 4 ; [#uses=2]
+ %37 = fdiv float %35, %36 ; [#uses=1]
+ %38 = load float* %7, align 4 ; [#uses=2]
+ %39 = fadd float %37, %38 ; [#uses=1]
+ %40 = load float* %8, align 4 ; [#uses=2]
+ %41 = fadd float %33, %40 ; [#uses=1]
+ %42 = load float* %9, align 4 ; [#uses=2]
+ %43 = fadd float %28, %42 ; [#uses=1]
+ store float %39, float* %10, align 8
+ store float %41, float* %11, align 4
+ store float %43, float* %12, align 8
+ store float 0.000000e+00, float* %13, align 4
+ %44 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %22, i32 %curIndex.019, i32 1, i32 0 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %22, i32 %curIndex.019, i32 1, i32 2 ; [#uses=1]
+ %46 = load i16* %45, align 2 ; [#uses=1]
+ %47 = uitofp i16 %46 to float ; [#uses=1]
+ %48 = fdiv float %47, %27 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %22, i32 %curIndex.019, i32 1, i32 1 ; [#uses=1]
+ %50 = load i16* %49, align 2 ; [#uses=1]
+ %51 = uitofp i16 %50 to float ; [#uses=1]
+ %52 = fdiv float %51, %32 ; [#uses=1]
+ %53 = load i16* %44, align 2 ; [#uses=1]
+ %54 = uitofp i16 %53 to float ; [#uses=1]
+ %55 = fdiv float %54, %36 ; [#uses=1]
+ %56 = fadd float %55, %38 ; [#uses=1]
+ %57 = fadd float %52, %40 ; [#uses=1]
+ %58 = fadd float %48, %42 ; [#uses=1]
+ store float %56, float* %14, align 8
+ store float %57, float* %15, align 4
+ store float %58, float* %16, align 8
+ store float 0.000000e+00, float* %17, align 4
+ %59 = call zeroext i8 @_ZNK6btAABB11collide_rayERK9btVector3S2_(%struct.GIM_AABB* %bound, %struct.btQuadWord* %ray_origin, %struct.btQuadWord* %ray_dir) nounwind ; [#uses=1]
+ %60 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %22, i32 %curIndex.019, i32 2 ; [#uses=1]
+ %61 = load i32* %60, align 4 ; [#uses=2]
+ %toBool = icmp slt i32 %61, 0 ; [#uses=2]
+ %toBool2 = icmp eq i8 %59, 0 ; [#uses=2]
+ %or.cond = or i1 %toBool, %toBool2 ; [#uses=1]
+ br i1 %or.cond, label %bb4, label %bb3
+
+bb3: ; preds = %bb
+ %62 = load i32* %18, align 4 ; [#uses=6]
+ %63 = load i32* %19, align 4 ; [#uses=2]
+ %64 = icmp eq i32 %63, %62 ; [#uses=1]
+ br i1 %64, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb3
+ %65 = icmp eq i32 %62, 0 ; [#uses=1]
+ %66 = shl i32 %62, 1 ; [#uses=1]
+ %iftmp.299.0.i.i = select i1 %65, i32 1, i32 %66 ; [#uses=4]
+ %67 = icmp slt i32 %63, %iftmp.299.0.i.i ; [#uses=1]
+ br i1 %67, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %68 = icmp eq i32 %iftmp.299.0.i.i, 0 ; [#uses=1]
+ br i1 %68, label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %69 = shl i32 %iftmp.299.0.i.i, 2 ; [#uses=1]
+ %70 = call i8* @_Z22btAlignedAllocInternalji(i32 %69, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %70 to i32* ; [#uses=1]
+ %.pre.i = load i32* %18, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %71 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %62, %bb.i.i ] ; [#uses=2]
+ %72 = phi i32* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %73 = icmp sgt i32 %71, 0 ; [#uses=1]
+ br i1 %73, label %bb.i4.i.i, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %indvar.i.i.i = phi i32 [ %indvar.next.i.i.i, %bb3.i.i.i ], [ 0, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr i32* %72, i32 %indvar.i.i.i ; [#uses=2]
+ %74 = icmp eq i32* %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %74, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %75 = load i32** %20, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr i32* %75, i32 %indvar.i.i.i ; [#uses=1]
+ %76 = load i32* %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store i32 %76, i32* %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %71 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %77 = load i32** %20, align 4 ; [#uses=2]
+ %78 = icmp eq i32* %77, null ; [#uses=1]
+ br i1 %78, label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+ %79 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %79, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %80 = bitcast i32* %77 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %80)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %20, align 4
+ br label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+ store i8 1, i8* %21, align 4
+ store i32* %72, i32** %20, align 4
+ store i32 %iftmp.299.0.i.i, i32* %19, align 4
+ %.pre5.i = load i32* %18, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, %bb.i, %bb3
+ %81 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i ], [ %62, %bb3 ], [ %62, %bb.i ] ; [#uses=2]
+ %82 = load i32** %20, align 4 ; [#uses=1]
+ %83 = getelementptr inbounds i32* %82, i32 %81 ; [#uses=2]
+ %84 = icmp eq i32* %83, null ; [#uses=1]
+ br i1 %84, label %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store i32 %61, i32* %83, align 4
+ %.pre6.i = load i32* %18, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit
+
+_ZN20btAlignedObjectArrayIiE9push_backERKi.exit: ; preds = %bb2.i, %bb1.i
+ %85 = phi i32 [ %81, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %86 = add nsw i32 %85, 1 ; [#uses=1]
+ store i32 %86, i32* %18, align 4
+ br label %bb4
+
+bb4: ; preds = %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit, %bb
+ %or.cond18 = and i1 %toBool2, %toBool ; [#uses=1]
+ br i1 %or.cond18, label %bb9, label %bb8
+
+bb8: ; preds = %bb4
+ %87 = add nsw i32 %curIndex.019, 1 ; [#uses=1]
+ br label %bb10.backedge
+
+bb10.backedge: ; preds = %bb9, %bb8
+ %curIndex.0.be = phi i32 [ %87, %bb8 ], [ %92, %bb9 ] ; [#uses=2]
+ %88 = icmp slt i32 %curIndex.0.be, %1 ; [#uses=1]
+ br i1 %88, label %bb, label %bb11
+
+bb9: ; preds = %bb4
+ %89 = load %struct.BT_QUANTIZED_BVH_NODE** %3, align 4 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %89, i32 %curIndex.019, i32 2 ; [#uses=1]
+ %91 = load i32* %90, align 4 ; [#uses=1]
+ %92 = sub i32 %curIndex.019, %91 ; [#uses=1]
+ br label %bb10.backedge
+
+bb11: ; preds = %bb10.backedge, %entry
+ %93 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 1 ; [#uses=1]
+ %94 = load i32* %93, align 4 ; [#uses=1]
+ %95 = icmp sgt i32 %94, 0 ; [#uses=1]
+ %.0 = zext i1 %95 to i8 ; [#uses=1]
+ ret i8 %.0
+}
+
+; [#uses=2]
+define zeroext i8 @_ZNK21btGImpactQuantizedBvh8boxQueryERK6btAABBR20btAlignedObjectArrayIiE(%struct.btGImpactBoxSet* nocapture %this, %struct.GIM_AABB* nocapture %box, %"struct.btAlignedObjectArray<int>"* nocapture %collided_results) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=6]
+ %10 = fcmp olt float %3, %9 ; [#uses=1]
+ %clampedPoint.0.0.0.i.i = select i1 %10, float %9, float %3 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=6]
+ %13 = fcmp olt float %5, %12 ; [#uses=1]
+ %clampedPoint.0.1.0.i.i = select i1 %13, float %12, float %5 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=6]
+ %16 = fcmp olt float %7, %15 ; [#uses=1]
+ %clampedPoint.0.2.0.i.i = select i1 %16, float %15, float %7 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=4]
+ %19 = fcmp olt float %18, %clampedPoint.0.0.0.i.i ; [#uses=1]
+ %clampedPoint.0.0.1.i.i = select i1 %19, float %18, float %clampedPoint.0.0.0.i.i ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=4]
+ %22 = fcmp olt float %21, %clampedPoint.0.1.0.i.i ; [#uses=1]
+ %clampedPoint.0.1.1.i.i = select i1 %22, float %21, float %clampedPoint.0.1.0.i.i ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=4]
+ %25 = fcmp olt float %24, %clampedPoint.0.2.0.i.i ; [#uses=1]
+ %clampedPoint.0.2.1.i.i = select i1 %25, float %24, float %clampedPoint.0.2.0.i.i ; [#uses=1]
+ %26 = fsub float %clampedPoint.0.2.1.i.i, %15 ; [#uses=1]
+ %27 = fsub float %clampedPoint.0.1.1.i.i, %12 ; [#uses=1]
+ %28 = fsub float %clampedPoint.0.0.1.i.i, %9 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=2]
+ %31 = fmul float %26, %30 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=2]
+ %34 = fmul float %27, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = fmul float %28, %36 ; [#uses=1]
+ %38 = fadd float %37, 5.000000e-01 ; [#uses=1]
+ %39 = fptoui float %38 to i16 ; [#uses=1]
+ %40 = fadd float %34, 5.000000e-01 ; [#uses=1]
+ %41 = fptoui float %40 to i16 ; [#uses=1]
+ %42 = fadd float %31, 5.000000e-01 ; [#uses=1]
+ %43 = fptoui float %42 to i16 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=2]
+ %46 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=2]
+ %48 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=2]
+ %50 = fcmp olt float %45, %9 ; [#uses=1]
+ %clampedPoint.0.0.0.i.i19 = select i1 %50, float %9, float %45 ; [#uses=2]
+ %51 = fcmp olt float %47, %12 ; [#uses=1]
+ %clampedPoint.0.1.0.i.i20 = select i1 %51, float %12, float %47 ; [#uses=2]
+ %52 = fcmp olt float %49, %15 ; [#uses=1]
+ %clampedPoint.0.2.0.i.i21 = select i1 %52, float %15, float %49 ; [#uses=2]
+ %53 = fcmp olt float %18, %clampedPoint.0.0.0.i.i19 ; [#uses=1]
+ %clampedPoint.0.0.1.i.i22 = select i1 %53, float %18, float %clampedPoint.0.0.0.i.i19 ; [#uses=1]
+ %54 = fcmp olt float %21, %clampedPoint.0.1.0.i.i20 ; [#uses=1]
+ %clampedPoint.0.1.1.i.i23 = select i1 %54, float %21, float %clampedPoint.0.1.0.i.i20 ; [#uses=1]
+ %55 = fcmp olt float %24, %clampedPoint.0.2.0.i.i21 ; [#uses=1]
+ %clampedPoint.0.2.1.i.i24 = select i1 %55, float %24, float %clampedPoint.0.2.0.i.i21 ; [#uses=1]
+ %56 = fsub float %clampedPoint.0.2.1.i.i24, %15 ; [#uses=1]
+ %57 = fsub float %clampedPoint.0.1.1.i.i23, %12 ; [#uses=1]
+ %58 = fsub float %clampedPoint.0.0.1.i.i22, %9 ; [#uses=1]
+ %59 = fmul float %56, %30 ; [#uses=1]
+ %60 = fmul float %57, %33 ; [#uses=1]
+ %61 = fmul float %58, %36 ; [#uses=1]
+ %62 = fadd float %61, 5.000000e-01 ; [#uses=1]
+ %63 = fptoui float %62 to i16 ; [#uses=1]
+ %64 = fadd float %60, 5.000000e-01 ; [#uses=1]
+ %65 = fptoui float %64 to i16 ; [#uses=1]
+ %66 = fadd float %59, 5.000000e-01 ; [#uses=1]
+ %67 = fptoui float %66 to i16 ; [#uses=1]
+ %68 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %68, label %bb.nph, label %bb11
+
+bb.nph: ; preds = %entry
+ %69 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %70 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 1 ; [#uses=5]
+ %71 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 2 ; [#uses=2]
+ %72 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 3 ; [#uses=5]
+ %73 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 4 ; [#uses=2]
+ br label %bb
+
+bb: ; preds = %bb10.backedge, %bb.nph
+ %curIndex.026 = phi i32 [ 0, %bb.nph ], [ %curIndex.0.be, %bb10.backedge ] ; [#uses=11]
+ %74 = load %struct.BT_QUANTIZED_BVH_NODE** %69, align 4 ; [#uses=8]
+ %75 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %74, i32 %curIndex.026, i32 0, i32 0 ; [#uses=1]
+ %76 = load i16* %75, align 2 ; [#uses=1]
+ %77 = icmp ugt i16 %76, %63 ; [#uses=1]
+ br i1 %77, label %_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit.thread, label %bb.i.i25
+
+bb.i.i25: ; preds = %bb
+ %78 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %74, i32 %curIndex.026, i32 1, i32 0 ; [#uses=1]
+ %79 = load i16* %78, align 2 ; [#uses=1]
+ %80 = icmp ult i16 %79, %39 ; [#uses=1]
+ br i1 %80, label %_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit.thread, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i25
+ %81 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %74, i32 %curIndex.026, i32 0, i32 1 ; [#uses=1]
+ %82 = load i16* %81, align 2 ; [#uses=1]
+ %83 = icmp ugt i16 %82, %65 ; [#uses=1]
+ br i1 %83, label %_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit.thread, label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i
+ %84 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %74, i32 %curIndex.026, i32 1, i32 1 ; [#uses=1]
+ %85 = load i16* %84, align 2 ; [#uses=1]
+ %86 = icmp ult i16 %85, %41 ; [#uses=1]
+ br i1 %86, label %_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit.thread, label %bb3.i.i
+
+bb3.i.i: ; preds = %bb2.i.i
+ %87 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %74, i32 %curIndex.026, i32 0, i32 2 ; [#uses=1]
+ %88 = load i16* %87, align 2 ; [#uses=1]
+ %89 = icmp ugt i16 %88, %67 ; [#uses=1]
+ br i1 %89, label %_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit.thread, label %_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit
+
+_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit.thread: ; preds = %bb3.i.i, %bb2.i.i, %bb1.i.i, %bb.i.i25, %bb
+ %90 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %74, i32 %curIndex.026, i32 2 ; [#uses=1]
+ %91 = load i32* %90, align 4 ; [#uses=1]
+ %toBool27 = icmp slt i32 %91, 0 ; [#uses=1]
+ br label %bb4
+
+_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit: ; preds = %bb3.i.i
+ %92 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %74, i32 %curIndex.026, i32 1, i32 2 ; [#uses=1]
+ %93 = load i16* %92, align 2 ; [#uses=1]
+ %phitmp = icmp ult i16 %93, %43 ; [#uses=3]
+ %94 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %74, i32 %curIndex.026, i32 2 ; [#uses=1]
+ %95 = load i32* %94, align 4 ; [#uses=2]
+ %toBool = icmp slt i32 %95, 0 ; [#uses=3]
+ %or.cond = or i1 %toBool, %phitmp ; [#uses=1]
+ br i1 %or.cond, label %bb4, label %bb3
+
+bb3: ; preds = %_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit
+ %96 = load i32* %70, align 4 ; [#uses=6]
+ %97 = load i32* %71, align 4 ; [#uses=2]
+ %98 = icmp eq i32 %97, %96 ; [#uses=1]
+ br i1 %98, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb3
+ %99 = icmp eq i32 %96, 0 ; [#uses=1]
+ %100 = shl i32 %96, 1 ; [#uses=1]
+ %iftmp.299.0.i.i = select i1 %99, i32 1, i32 %100 ; [#uses=4]
+ %101 = icmp slt i32 %97, %iftmp.299.0.i.i ; [#uses=1]
+ br i1 %101, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %102 = icmp eq i32 %iftmp.299.0.i.i, 0 ; [#uses=1]
+ br i1 %102, label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %103 = shl i32 %iftmp.299.0.i.i, 2 ; [#uses=1]
+ %104 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %103, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %104 to i32* ; [#uses=1]
+ %.pre.i = load i32* %70, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %105 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %96, %bb.i.i ] ; [#uses=2]
+ %106 = phi i32* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %107 = icmp sgt i32 %105, 0 ; [#uses=1]
+ br i1 %107, label %bb.i4.i.i, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %indvar.i.i.i = phi i32 [ %indvar.next.i.i.i, %bb3.i.i.i ], [ 0, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr i32* %106, i32 %indvar.i.i.i ; [#uses=2]
+ %108 = icmp eq i32* %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %108, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %109 = load i32** %72, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr i32* %109, i32 %indvar.i.i.i ; [#uses=1]
+ %110 = load i32* %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store i32 %110, i32* %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %105 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %111 = load i32** %72, align 4 ; [#uses=2]
+ %112 = icmp eq i32* %111, null ; [#uses=1]
+ br i1 %112, label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+ %113 = load i8* %73, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %113, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %114 = bitcast i32* %111 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %114)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %72, align 4
+ br label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+ store i8 1, i8* %73, align 4
+ store i32* %106, i32** %72, align 4
+ store i32 %iftmp.299.0.i.i, i32* %71, align 4
+ %.pre5.i = load i32* %70, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, %bb.i, %bb3
+ %115 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i ], [ %96, %bb3 ], [ %96, %bb.i ] ; [#uses=2]
+ %116 = load i32** %72, align 4 ; [#uses=1]
+ %117 = getelementptr inbounds i32* %116, i32 %115 ; [#uses=2]
+ %118 = icmp eq i32* %117, null ; [#uses=1]
+ br i1 %118, label %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store i32 %95, i32* %117, align 4
+ %.pre6.i = load i32* %70, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit
+
+_ZN20btAlignedObjectArrayIiE9push_backERKi.exit: ; preds = %bb2.i, %bb1.i
+ %119 = phi i32 [ %115, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %120 = add nsw i32 %119, 1 ; [#uses=1]
+ store i32 %120, i32* %70, align 4
+ br label %bb4
+
+bb4: ; preds = %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit, %_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit, %_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit.thread
+ %toBool29 = phi i1 [ %toBool27, %_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit.thread ], [ %toBool, %_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit ], [ %toBool, %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit ] ; [#uses=1]
+ %121 = phi i1 [ true, %_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit.thread ], [ %phitmp, %_ZNK18btQuantizedBvhTree24testQuantizedBoxOverlappEiPtS0_.exit ], [ %phitmp, %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit ] ; [#uses=1]
+ %or.cond18 = and i1 %121, %toBool29 ; [#uses=1]
+ br i1 %or.cond18, label %bb9, label %bb8
+
+bb8: ; preds = %bb4
+ %122 = add nsw i32 %curIndex.026, 1 ; [#uses=1]
+ br label %bb10.backedge
+
+bb10.backedge: ; preds = %bb9, %bb8
+ %curIndex.0.be = phi i32 [ %122, %bb8 ], [ %127, %bb9 ] ; [#uses=2]
+ %123 = icmp slt i32 %curIndex.0.be, %1 ; [#uses=1]
+ br i1 %123, label %bb, label %bb11
+
+bb9: ; preds = %bb4
+ %124 = load %struct.BT_QUANTIZED_BVH_NODE** %69, align 4 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %124, i32 %curIndex.026, i32 2 ; [#uses=1]
+ %126 = load i32* %125, align 4 ; [#uses=1]
+ %127 = sub i32 %curIndex.026, %126 ; [#uses=1]
+ br label %bb10.backedge
+
+bb11: ; preds = %bb10.backedge, %entry
+ %128 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided_results, i32 0, i32 1 ; [#uses=1]
+ %129 = load i32* %128, align 4 ; [#uses=1]
+ %130 = icmp sgt i32 %129, 0 ; [#uses=1]
+ %.0 = zext i1 %130 to i8 ; [#uses=1]
+ ret i8 %.0
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE7reserveEi(%struct.QuantizedNodeArray* nocapture %this, i32 %_Count) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.QuantizedNodeArray* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp slt i32 %1, %_Count ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = icmp eq i32 %_Count, 0 ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE8allocateEi.exit, label %bb.i2
+
+bb.i2: ; preds = %bb
+ %4 = shl i32 %_Count, 4 ; [#uses=1]
+ %5 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %4, i32 16) ; [#uses=1]
+ %phitmp = bitcast i8* %5 to %struct.BT_QUANTIZED_BVH_NODE* ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE8allocateEi.exit
+
+_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE8allocateEi.exit: ; preds = %bb.i2, %bb
+ %6 = phi %struct.BT_QUANTIZED_BVH_NODE* [ %phitmp, %bb.i2 ], [ null, %bb ] ; [#uses=9]
+ %7 = getelementptr inbounds %struct.QuantizedNodeArray* %this, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = icmp sgt i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb.nph.i, label %_ZNK20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE4copyEiiPS0_.exit
+
+bb.nph.i: ; preds = %_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE8allocateEi.exit
+ %10 = getelementptr inbounds %struct.QuantizedNodeArray* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4
+
+bb.i4: ; preds = %bb3.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb3.i ] ; [#uses=16]
+ %scevgep.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i ; [#uses=1]
+ %11 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %scevgep.i, null ; [#uses=1]
+ br i1 %11, label %bb3.i, label %bb1.i5
+
+bb1.i5: ; preds = %bb.i4
+ %scevgep17.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 0, i32 1 ; [#uses=1]
+ %scevgep18.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 0, i32 2 ; [#uses=1]
+ %scevgep19.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 1, i32 0 ; [#uses=1]
+ %scevgep20.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 1, i32 1 ; [#uses=1]
+ %scevgep21.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 1, i32 2 ; [#uses=1]
+ %scevgep22.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 2 ; [#uses=1]
+ %scevgep16.i = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %6, i32 %indvar.i, i32 0, i32 0 ; [#uses=1]
+ %12 = load %struct.BT_QUANTIZED_BVH_NODE** %10, align 4 ; [#uses=7]
+ %scevgep89.i = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %12, i32 %indvar.i, i32 0, i32 0 ; [#uses=1]
+ %13 = load i16* %scevgep89.i, align 4 ; [#uses=1]
+ store i16 %13, i16* %scevgep16.i, align 4
+ %scevgep10.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %12, i32 %indvar.i, i32 0, i32 1 ; [#uses=1]
+ %14 = load i16* %scevgep10.i, align 2 ; [#uses=1]
+ store i16 %14, i16* %scevgep17.i, align 2
+ %scevgep11.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %12, i32 %indvar.i, i32 0, i32 2 ; [#uses=1]
+ %15 = load i16* %scevgep11.i, align 4 ; [#uses=1]
+ store i16 %15, i16* %scevgep18.i, align 4
+ %scevgep12.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %12, i32 %indvar.i, i32 1, i32 0 ; [#uses=1]
+ %16 = load i16* %scevgep12.i, align 2 ; [#uses=1]
+ store i16 %16, i16* %scevgep19.i, align 2
+ %scevgep13.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %12, i32 %indvar.i, i32 1, i32 1 ; [#uses=1]
+ %17 = load i16* %scevgep13.i, align 2 ; [#uses=1]
+ store i16 %17, i16* %scevgep20.i, align 2
+ %scevgep14.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %12, i32 %indvar.i, i32 1, i32 2 ; [#uses=1]
+ %18 = load i16* %scevgep14.i, align 2 ; [#uses=1]
+ store i16 %18, i16* %scevgep21.i, align 2
+ %scevgep15.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %12, i32 %indvar.i, i32 2 ; [#uses=1]
+ %19 = load i32* %scevgep15.i, align 4 ; [#uses=1]
+ store i32 %19, i32* %scevgep22.i, align 4
+ br label %bb3.i
+
+bb3.i: ; preds = %bb1.i5, %bb.i4
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %8 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE4copyEiiPS0_.exit, label %bb.i4
+
+_ZNK20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE4copyEiiPS0_.exit: ; preds = %bb3.i, %_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE8allocateEi.exit
+ %20 = getelementptr inbounds %struct.QuantizedNodeArray* %this, i32 0, i32 3 ; [#uses=3]
+ %21 = load %struct.BT_QUANTIZED_BVH_NODE** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %21, null ; [#uses=1]
+ br i1 %22, label %_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE10deallocateEv.exit, label %bb.i
+
+bb.i: ; preds = %_ZNK20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE4copyEiiPS0_.exit
+ %23 = getelementptr inbounds %struct.QuantizedNodeArray* %this, i32 0, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %25 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %21 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %25)
+ br label %bb2.i
+
+bb2.i: ; preds = %bb1.i, %bb.i
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %20, align 4
+ br label %_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE10deallocateEv.exit
+
+_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE10deallocateEv.exit: ; preds = %bb2.i, %_ZNK20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE4copyEiiPS0_.exit
+ %26 = getelementptr inbounds %struct.QuantizedNodeArray* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %26, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* %6, %struct.BT_QUANTIZED_BVH_NODE** %20, align 4
+ store i32 %_Count, i32* %0, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN18btQuantizedBvhTree10build_treeER18GIM_BVH_DATA_ARRAY(%struct.btQuantizedBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes) align 2 {
+entry:
+ tail call void @_ZN18btQuantizedBvhTree17calc_quantizationER18GIM_BVH_DATA_ARRAYf(%struct.btQuantizedBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, float 1.000000e+00)
+ %0 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 1 ; [#uses=2]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = shl i32 %2, 1 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=3]
+ %6 = icmp slt i32 %5, %3 ; [#uses=1]
+ br i1 %6, label %bb.nph.i, label %_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE6resizeEiRKS0_.exit
+
+bb.nph.i: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE7reserveEi(%struct.QuantizedNodeArray* %7, i32 %3) inlinehint
+ %8 = getelementptr inbounds %struct.btQuantizedBvhTree* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %tmp3 = sub i32 %3, %5 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb10.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb10.i ] ; [#uses=2]
+ %tmp4 = add i32 %5, %indvar.i ; [#uses=2]
+ %9 = load %struct.BT_QUANTIZED_BVH_NODE** %8, align 4 ; [#uses=2]
+ %scevgep.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %9, i32 %tmp4 ; [#uses=1]
+ %10 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %scevgep.i, null ; [#uses=1]
+ br i1 %10, label %bb10.i, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ %scevgep25.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %9, i32 %tmp4, i32 2 ; [#uses=1]
+ store i32 0, i32* %scevgep25.i, align 4
+ br label %bb10.i
+
+bb10.i: ; preds = %bb8.i, %bb7.i
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %tmp3 ; [#uses=1]
+ br i1 %exitcond, label %_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE6resizeEiRKS0_.exit, label %bb7.i
+
+_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE6resizeEiRKS0_.exit: ; preds = %bb10.i, %entry
+ store i32 %3, i32* %4, align 4
+ %11 = load i32* %1, align 4 ; [#uses=1]
+ tail call void @_ZN18btQuantizedBvhTree15_build_sub_treeER18GIM_BVH_DATA_ARRAYii(%struct.btQuantizedBvhTree* %this, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 %11)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btGImpactQuantizedBvh8buildSetEv(%struct.btGImpactBoxSet* %this) align 2 {
+entry:
+ %primitive_boxes = alloca %struct.GIM_BVH_DATA_ARRAY, align 8 ; [#uses=7]
+ %0 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 4 ; [#uses=4]
+ store i8 1, i8* %0, align 8
+ %1 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 3 ; [#uses=8]
+ store %struct.GIM_AABB_DATA* null, %struct.GIM_AABB_DATA** %1, align 4
+ %2 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 1 ; [#uses=7]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0, i32 2 ; [#uses=2]
+ store i32 0, i32* %3, align 8
+ %4 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 1 ; [#uses=2]
+ %5 = load %struct.btActionInterface** %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btActionInterface* %5, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 3 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %11 = invoke i32 %10(%struct.btActionInterface* %5)
+ to label %invcont unwind label %lpad ; [#uses=4]
+
+invcont: ; preds = %entry
+ %12 = load i32* %2, align 4 ; [#uses=1]
+ %13 = icmp slt i32 %12, %11 ; [#uses=1]
+ br i1 %13, label %bb.nph.i, label %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE6resizeEiRKS0_.exit
+
+bb.nph.i: ; preds = %invcont
+ %14 = getelementptr inbounds %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE7reserveEi(%"struct.btAlignedObjectArray<GIM_BVH_DATA>"* %14, i32 %11) inlinehint
+ to label %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE6resizeEiRKS0_.exit unwind label %lpad
+
+_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE6resizeEiRKS0_.exit: ; preds = %bb.nph.i, %invcont
+ store i32 %11, i32* %2, align 4
+ br label %bb3
+
+bb: ; preds = %bb3
+ %15 = load %struct.btActionInterface** %4, align 4 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btActionInterface* %15, i32 0, i32 0 ; [#uses=1]
+ %17 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 4 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = load %struct.GIM_AABB_DATA** %1, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %19 to void (%struct.btActionInterface*, i32, %struct.GIM_AABB*)* ; [#uses=1]
+ %scevgep2930 = getelementptr inbounds %struct.GIM_AABB_DATA* %20, i32 %25, i32 0 ; [#uses=1]
+ invoke void %21(%struct.btActionInterface* %15, i32 %25, %struct.GIM_AABB* %scevgep2930)
+ to label %invcont2 unwind label %lpad
+
+invcont2: ; preds = %bb
+ %22 = load %struct.GIM_AABB_DATA** %1, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.GIM_AABB_DATA* %22, i32 %25, i32 1 ; [#uses=1]
+ store i32 %25, i32* %scevgep, align 4
+ %23 = add nsw i32 %25, 1 ; [#uses=1]
+ %.pre = load i32* %2, align 4 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %invcont2, %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE6resizeEiRKS0_.exit
+ %24 = phi i32 [ %.pre, %invcont2 ], [ %11, %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE6resizeEiRKS0_.exit ] ; [#uses=1]
+ %25 = phi i32 [ %23, %invcont2 ], [ 0, %_ZN20btAlignedObjectArrayI12GIM_BVH_DATAE6resizeEiRKS0_.exit ] ; [#uses=6]
+ %26 = icmp sgt i32 %24, %25 ; [#uses=1]
+ br i1 %26, label %bb, label %bb4
+
+bb4: ; preds = %bb3
+ %27 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0 ; [#uses=2]
+ call void @_ZN18btQuantizedBvhTree17calc_quantizationER18GIM_BVH_DATA_ARRAYf(%struct.btQuantizedBvhTree* %27, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, float 1.000000e+00)
+ %28 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = load i32* %2, align 4 ; [#uses=2]
+ %30 = shl i32 %29, 1 ; [#uses=4]
+ %31 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %32 = load i32* %31, align 4 ; [#uses=3]
+ %33 = icmp slt i32 %32, %30 ; [#uses=1]
+ br i1 %33, label %bb.nph.i.i, label %bb9
+
+bb.nph.i.i: ; preds = %bb4
+ %34 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 1, i32 0 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI21BT_QUANTIZED_BVH_NODEE7reserveEi(%struct.QuantizedNodeArray* %34, i32 %30) inlinehint
+ to label %.noexc25 unwind label %lpad
+
+.noexc25: ; preds = %bb.nph.i.i
+ %35 = getelementptr inbounds %struct.btGImpactBoxSet* %this, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %tmp27 = sub i32 %30, %32 ; [#uses=1]
+ br label %bb7.i.i
+
+bb7.i.i: ; preds = %bb10.i.i, %.noexc25
+ %indvar.i.i = phi i32 [ 0, %.noexc25 ], [ %indvar.next.i.i, %bb10.i.i ] ; [#uses=2]
+ %tmp28 = add i32 %32, %indvar.i.i ; [#uses=2]
+ %36 = load %struct.BT_QUANTIZED_BVH_NODE** %35, align 4 ; [#uses=2]
+ %scevgep.i.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %36, i32 %tmp28 ; [#uses=1]
+ %37 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %scevgep.i.i, null ; [#uses=1]
+ br i1 %37, label %bb10.i.i, label %bb8.i.i
+
+bb8.i.i: ; preds = %bb7.i.i
+ %scevgep25.i.i = getelementptr %struct.BT_QUANTIZED_BVH_NODE* %36, i32 %tmp28, i32 2 ; [#uses=1]
+ store i32 0, i32* %scevgep25.i.i, align 4
+ br label %bb10.i.i
+
+bb10.i.i: ; preds = %bb8.i.i, %bb7.i.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %tmp27 ; [#uses=1]
+ br i1 %exitcond, label %bb9.loopexit, label %bb7.i.i
+
+invcont7: ; preds = %bb2.i.i.i.i, %lpad
+ store i8 1, i8* %0, align 8
+ store %struct.GIM_AABB_DATA* null, %struct.GIM_AABB_DATA** %1, align 4
+ store i32 0, i32* %2, align 4
+ store i32 0, i32* %3, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb9.loopexit: ; preds = %bb10.i.i
+ %.pre32 = load i32* %2, align 4 ; [#uses=1]
+ br label %bb9
+
+bb9: ; preds = %bb9.loopexit, %bb4
+ %38 = phi i32 [ %.pre32, %bb9.loopexit ], [ %29, %bb4 ] ; [#uses=1]
+ store i32 %30, i32* %31, align 4
+ call void @_ZN18btQuantizedBvhTree15_build_sub_treeER18GIM_BVH_DATA_ARRAYii(%struct.btQuantizedBvhTree* %27, %struct.GIM_BVH_DATA_ARRAY* %primitive_boxes, i32 0, i32 %38)
+ %39 = load %struct.GIM_AABB_DATA** %1, align 4 ; [#uses=2]
+ %40 = icmp eq %struct.GIM_AABB_DATA* %39, null ; [#uses=1]
+ br i1 %40, label %_ZN18GIM_BVH_DATA_ARRAYD1Ev.exit22, label %bb.i.i.i.i19
+
+bb.i.i.i.i19: ; preds = %bb9
+ %41 = load i8* %0, align 8 ; [#uses=1]
+ %toBool.i.i.i.i18 = icmp eq i8 %41, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i18, label %bb2.i.i.i.i21, label %bb1.i.i.i.i20
+
+bb1.i.i.i.i20: ; preds = %bb.i.i.i.i19
+ %42 = bitcast %struct.GIM_AABB_DATA* %39 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %42)
+ br label %bb2.i.i.i.i21
+
+bb2.i.i.i.i21: ; preds = %bb1.i.i.i.i20, %bb.i.i.i.i19
+ store %struct.GIM_AABB_DATA* null, %struct.GIM_AABB_DATA** %1, align 4
+ ret void
+
+_ZN18GIM_BVH_DATA_ARRAYD1Ev.exit22: ; preds = %bb9
+ ret void
+
+lpad: ; preds = %bb.nph.i.i, %bb, %bb.nph.i, %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select11 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %43 = load %struct.GIM_AABB_DATA** %1, align 4 ; [#uses=2]
+ %44 = icmp eq %struct.GIM_AABB_DATA* %43, null ; [#uses=1]
+ br i1 %44, label %invcont7, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %lpad
+ %45 = load i8* %0, align 8 ; [#uses=1]
+ %toBool.i.i.i.i = icmp eq i8 %45, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i, label %bb2.i.i.i.i, label %bb1.i.i.i.i
+
+bb1.i.i.i.i: ; preds = %bb.i.i.i.i
+ %46 = bitcast %struct.GIM_AABB_DATA* %43 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %46)
+ to label %bb2.i.i.i.i unwind label %lpad12
+
+bb2.i.i.i.i: ; preds = %bb1.i.i.i.i, %bb.i.i.i.i
+ store %struct.GIM_AABB_DATA* null, %struct.GIM_AABB_DATA** %1, align 4
+ br label %invcont7
+
+lpad12: ; preds = %bb1.i.i.i.i
+ %eh_ptr13 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select15 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZNK22btGImpactCompoundShape21calculateLocalInertiaEfR9btVector3(%struct.btGImpactCompoundShape* %this, float %mass, %struct.btQuadWord* nocapture %inertia) align 2 {
+entry:
+ %temp_inertia = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 27 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0 ; [#uses=2]
+ %5 = bitcast i32 (...)* %3 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ call void %5(%struct.btGImpactShapeInterface* %4)
+ %6 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=4]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=4]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=4]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i32 (...)** %10, i32 21 ; [#uses=1]
+ %12 = load i32 (...)** %11, align 4 ; [#uses=1]
+ %13 = bitcast i32 (...)* %12 to i32 (%struct.btGImpactCompoundShape*)* ; [#uses=1]
+ %14 = call i32 %13(%struct.btGImpactCompoundShape* %this) ; [#uses=5]
+ %15 = sitofp i32 %14 to float ; [#uses=1]
+ %16 = fdiv float %mass, %15 ; [#uses=1]
+ %17 = icmp eq i32 %14, 0 ; [#uses=1]
+ br i1 %17, label %bb6, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %18 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %temp_inertia, i32 0, i32 0, i32 2 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btQuadWord* %temp_inertia, i32 0, i32 0, i32 1 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btQuadWord* %temp_inertia, i32 0, i32 0, i32 0 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %tmp11 = add i32 %14, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb4.backedge, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb4.backedge ] ; [#uses=3]
+ %tmp12 = sub i32 %tmp11, %indvar ; [#uses=2]
+ %tmp13 = sub i32 %14, %indvar ; [#uses=11]
+ %23 = load %struct.btCollisionShape*** %18, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionShape** %23, i32 %tmp12 ; [#uses=1]
+ %24 = load %struct.btCollisionShape** %scevgep, align 4 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btCollisionShape* %24, i32 0, i32 0 ; [#uses=1]
+ %26 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds i32 (...)** %26, i32 8 ; [#uses=1]
+ %28 = load i32 (...)** %27, align 4 ; [#uses=1]
+ %29 = bitcast i32 (...)* %28 to void (%struct.btCollisionShape*, float, %struct.btQuadWord*)* ; [#uses=1]
+ call void %29(%struct.btCollisionShape* %24, float %16, %struct.btQuadWord* %temp_inertia)
+ %30 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds i32 (...)** %30, i32 22 ; [#uses=1]
+ %32 = load i32 (...)** %31, align 4 ; [#uses=1]
+ %33 = bitcast i32 (...)* %32 to i8 (%struct.btGImpactCompoundShape*)* ; [#uses=1]
+ %34 = call zeroext i8 %33(%struct.btGImpactCompoundShape* %this) ; [#uses=1]
+ %toBool = icmp eq i8 %34, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %35 = load %struct.btTransform** %22, align 4 ; [#uses=12]
+ %scevgep2425 = getelementptr inbounds %struct.btTransform* %35, i32 %tmp12, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %scevgep2425, align 4 ; [#uses=2]
+ %scevgep2223 = getelementptr %struct.btTransform* %35, i32 %tmp13, i32 0, i32 0, i32 -3, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %scevgep2223, align 4 ; [#uses=2]
+ %scevgep2021 = getelementptr %struct.btTransform* %35, i32 %tmp13, i32 0, i32 0, i32 -2, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %scevgep2021, align 4 ; [#uses=2]
+ %scevgep19 = getelementptr %struct.btTransform* %35, i32 %tmp13, i32 0, i32 0, i32 -3, i32 0, i32 -3 ; [#uses=1]
+ %39 = load float* %scevgep19, align 4 ; [#uses=2]
+ %scevgep18 = getelementptr %struct.btTransform* %35, i32 %tmp13, i32 0, i32 0, i32 -2, i32 0, i32 -3 ; [#uses=1]
+ %40 = load float* %scevgep18, align 4 ; [#uses=2]
+ %scevgep17 = getelementptr %struct.btTransform* %35, i32 %tmp13, i32 0, i32 0, i32 -1, i32 0, i32 -3 ; [#uses=1]
+ %41 = load float* %scevgep17, align 4 ; [#uses=2]
+ %scevgep16 = getelementptr %struct.btTransform* %35, i32 %tmp13, i32 0, i32 0, i32 -3, i32 0, i32 -2 ; [#uses=1]
+ %42 = load float* %scevgep16, align 4 ; [#uses=2]
+ %scevgep15 = getelementptr %struct.btTransform* %35, i32 %tmp13, i32 0, i32 0, i32 -2, i32 0, i32 -2 ; [#uses=1]
+ %43 = load float* %scevgep15, align 4 ; [#uses=2]
+ %scevgep14 = getelementptr %struct.btTransform* %35, i32 %tmp13, i32 0, i32 0, i32 -1, i32 0, i32 -2 ; [#uses=1]
+ %44 = load float* %scevgep14, align 4 ; [#uses=2]
+ %45 = load float* %19, align 8 ; [#uses=3]
+ %46 = fmul float %44, %45 ; [#uses=1]
+ %47 = load float* %20, align 4 ; [#uses=3]
+ %48 = fmul float %41, %47 ; [#uses=1]
+ %49 = load float* %21, align 8 ; [#uses=3]
+ %50 = fmul float %38, %49 ; [#uses=1]
+ %51 = fmul float %43, %45 ; [#uses=1]
+ %52 = fmul float %40, %47 ; [#uses=1]
+ %53 = fmul float %37, %49 ; [#uses=1]
+ %54 = fmul float %42, %45 ; [#uses=1]
+ %55 = fmul float %39, %47 ; [#uses=1]
+ %56 = fmul float %36, %49 ; [#uses=1]
+ %57 = fmul float %38, %50 ; [#uses=1]
+ %58 = fmul float %41, %48 ; [#uses=1]
+ %59 = fadd float %57, %58 ; [#uses=1]
+ %60 = fmul float %44, %46 ; [#uses=1]
+ %61 = fadd float %59, %60 ; [#uses=1]
+ %62 = fmul float %37, %53 ; [#uses=1]
+ %63 = fmul float %40, %52 ; [#uses=1]
+ %64 = fadd float %62, %63 ; [#uses=1]
+ %65 = fmul float %43, %51 ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=1]
+ %67 = fmul float %36, %56 ; [#uses=1]
+ %68 = fmul float %39, %55 ; [#uses=1]
+ %69 = fadd float %67, %68 ; [#uses=1]
+ %70 = fmul float %42, %54 ; [#uses=1]
+ %71 = fadd float %69, %70 ; [#uses=1]
+ %scevgep2627 = getelementptr %struct.btTransform* %35, i32 %tmp13, i32 0, i32 0, i32 -1, i32 0, i32 0 ; [#uses=1]
+ %72 = load float* %scevgep2627, align 4 ; [#uses=2]
+ %73 = fmul float %72, %72 ; [#uses=2]
+ %scevgep28 = getelementptr %struct.btTransform* %35, i32 %tmp13, i32 0, i32 0, i32 0, i32 0, i32 -3 ; [#uses=1]
+ %74 = load float* %scevgep28, align 4 ; [#uses=2]
+ %75 = fmul float %74, %74 ; [#uses=2]
+ %scevgep29 = getelementptr %struct.btTransform* %35, i32 %tmp13, i32 0, i32 0, i32 0, i32 0, i32 -2 ; [#uses=1]
+ %76 = load float* %scevgep29, align 4 ; [#uses=2]
+ %77 = fmul float %76, %76 ; [#uses=2]
+ %78 = fadd float %75, %77 ; [#uses=1]
+ %79 = fmul float %71, %78 ; [#uses=1]
+ %80 = fadd float %73, %77 ; [#uses=1]
+ %81 = fmul float %66, %80 ; [#uses=1]
+ %82 = fadd float %73, %75 ; [#uses=1]
+ %83 = fmul float %61, %82 ; [#uses=1]
+ %84 = load float* %8, align 4 ; [#uses=1]
+ %85 = fadd float %84, %83 ; [#uses=1]
+ %86 = load float* %7, align 4 ; [#uses=1]
+ %87 = fadd float %86, %81 ; [#uses=1]
+ %88 = load float* %6, align 4 ; [#uses=1]
+ %89 = fadd float %88, %79 ; [#uses=1]
+ br label %bb4.backedge
+
+bb4.backedge: ; preds = %bb2, %bb1
+ %storemerge31 = phi float [ %144, %bb2 ], [ %89, %bb1 ] ; [#uses=1]
+ %storemerge30 = phi float [ %142, %bb2 ], [ %87, %bb1 ] ; [#uses=1]
+ %storemerge = phi float [ %140, %bb2 ], [ %85, %bb1 ] ; [#uses=1]
+ store float %storemerge31, float* %6, align 4
+ store float %storemerge30, float* %7, align 4
+ store float %storemerge, float* %8, align 4
+ store float 0.000000e+00, float* %9, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %14 ; [#uses=1]
+ br i1 %exitcond, label %bb6, label %bb
+
+bb2: ; preds = %bb
+ %90 = call %struct.btTransform* @_ZN11btTransform11getIdentityEv() ; [#uses=0]
+ %91 = load float* getelementptr inbounds (%struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0), align 32 ; [#uses=2]
+ %92 = load float* getelementptr inbounds (%struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0), align 16 ; [#uses=2]
+ %93 = load float* getelementptr inbounds (%struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0), align 32 ; [#uses=2]
+ %94 = load float* getelementptr inbounds (%struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1), align 4 ; [#uses=2]
+ %95 = load float* getelementptr inbounds (%struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1), align 4 ; [#uses=2]
+ %96 = load float* getelementptr inbounds (%struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1), align 4 ; [#uses=2]
+ %97 = load float* getelementptr inbounds (%struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2), align 8 ; [#uses=2]
+ %98 = load float* getelementptr inbounds (%struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2), align 8 ; [#uses=2]
+ %99 = load float* getelementptr inbounds (%struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2), align 8 ; [#uses=2]
+ %100 = load float* %19, align 8 ; [#uses=3]
+ %101 = fmul float %99, %100 ; [#uses=1]
+ %102 = load float* %20, align 4 ; [#uses=3]
+ %103 = fmul float %96, %102 ; [#uses=1]
+ %104 = load float* %21, align 8 ; [#uses=3]
+ %105 = fmul float %93, %104 ; [#uses=1]
+ %106 = fmul float %98, %100 ; [#uses=1]
+ %107 = fmul float %95, %102 ; [#uses=1]
+ %108 = fmul float %92, %104 ; [#uses=1]
+ %109 = fmul float %97, %100 ; [#uses=1]
+ %110 = fmul float %94, %102 ; [#uses=1]
+ %111 = fmul float %91, %104 ; [#uses=1]
+ %112 = fmul float %93, %105 ; [#uses=1]
+ %113 = fmul float %96, %103 ; [#uses=1]
+ %114 = fadd float %112, %113 ; [#uses=1]
+ %115 = fmul float %99, %101 ; [#uses=1]
+ %116 = fadd float %114, %115 ; [#uses=1]
+ %117 = fmul float %92, %108 ; [#uses=1]
+ %118 = fmul float %95, %107 ; [#uses=1]
+ %119 = fadd float %117, %118 ; [#uses=1]
+ %120 = fmul float %98, %106 ; [#uses=1]
+ %121 = fadd float %119, %120 ; [#uses=1]
+ %122 = fmul float %91, %111 ; [#uses=1]
+ %123 = fmul float %94, %110 ; [#uses=1]
+ %124 = fadd float %122, %123 ; [#uses=1]
+ %125 = fmul float %97, %109 ; [#uses=1]
+ %126 = fadd float %124, %125 ; [#uses=1]
+ %127 = load float* getelementptr inbounds (%struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i32 0, i32 1, i32 0, i32 0), align 16 ; [#uses=2]
+ %128 = fmul float %127, %127 ; [#uses=2]
+ %129 = load float* getelementptr inbounds (%struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i32 0, i32 1, i32 0, i32 1), align 4 ; [#uses=2]
+ %130 = fmul float %129, %129 ; [#uses=2]
+ %131 = load float* getelementptr inbounds (%struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i32 0, i32 1, i32 0, i32 2), align 8 ; [#uses=2]
+ %132 = fmul float %131, %131 ; [#uses=2]
+ %133 = fadd float %130, %132 ; [#uses=1]
+ %134 = fmul float %126, %133 ; [#uses=1]
+ %135 = fadd float %128, %132 ; [#uses=1]
+ %136 = fmul float %121, %135 ; [#uses=1]
+ %137 = fadd float %128, %130 ; [#uses=1]
+ %138 = fmul float %116, %137 ; [#uses=1]
+ %139 = load float* %8, align 4 ; [#uses=1]
+ %140 = fadd float %139, %138 ; [#uses=1]
+ %141 = load float* %7, align 4 ; [#uses=1]
+ %142 = fadd float %141, %136 ; [#uses=1]
+ %143 = load float* %6, align 4 ; [#uses=1]
+ %144 = fadd float %143, %134 ; [#uses=1]
+ br label %bb4.backedge
+
+bb6: ; preds = %bb4.backedge, %entry
+ %145 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %146 = getelementptr inbounds i32 (...)** %145, i32 28 ; [#uses=1]
+ %147 = load i32 (...)** %146, align 4 ; [#uses=1]
+ %148 = bitcast i32 (...)* %147 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ call void %148(%struct.btGImpactShapeInterface* %4)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK23btGImpactShapeInterface7getAabbERK11btTransformR9btVector3S4_(%struct.btGImpactShapeInterface* nocapture %this, %struct.btTransform* nocapture %t, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = fadd float %11, %5 ; [#uses=1]
+ %13 = fadd float %9, %3 ; [#uses=1]
+ %14 = fadd float %7, %1 ; [#uses=1]
+ %15 = fmul float %12, 5.000000e-01 ; [#uses=4]
+ %16 = fmul float %13, 5.000000e-01 ; [#uses=4]
+ %17 = fmul float %14, 5.000000e-01 ; [#uses=4]
+ %18 = fsub float %11, %15 ; [#uses=3]
+ %19 = fsub float %9, %16 ; [#uses=3]
+ %20 = fsub float %7, %17 ; [#uses=3]
+ %21 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ %23 = fmul float %22, %17 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=2]
+ %26 = fmul float %25, %16 ; [#uses=1]
+ %27 = fadd float %23, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=2]
+ %30 = fmul float %29, %15 ; [#uses=1]
+ %31 = fadd float %27, %30 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fadd float %31, %33 ; [#uses=2]
+ %35 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = fmul float %36, %17 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=2]
+ %40 = fmul float %39, %16 ; [#uses=1]
+ %41 = fadd float %37, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=2]
+ %44 = fmul float %43, %15 ; [#uses=1]
+ %45 = fadd float %41, %44 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = fadd float %45, %47 ; [#uses=2]
+ %49 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=2]
+ %51 = fmul float %50, %17 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=2]
+ %54 = fmul float %53, %16 ; [#uses=1]
+ %55 = fadd float %51, %54 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=2]
+ %58 = fmul float %57, %15 ; [#uses=1]
+ %59 = fadd float %55, %58 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fadd float %59, %61 ; [#uses=2]
+ %63 = tail call float @fabsf(float %29) nounwind readnone ; [#uses=1]
+ %64 = tail call float @fabsf(float %25) nounwind readnone ; [#uses=1]
+ %65 = tail call float @fabsf(float %22) nounwind readnone ; [#uses=1]
+ %66 = fmul float %20, %65 ; [#uses=1]
+ %67 = fmul float %19, %64 ; [#uses=1]
+ %68 = fadd float %66, %67 ; [#uses=1]
+ %69 = fmul float %18, %63 ; [#uses=1]
+ %70 = fadd float %68, %69 ; [#uses=2]
+ %71 = tail call float @fabsf(float %43) nounwind readnone ; [#uses=1]
+ %72 = tail call float @fabsf(float %39) nounwind readnone ; [#uses=1]
+ %73 = tail call float @fabsf(float %36) nounwind readnone ; [#uses=1]
+ %74 = fmul float %20, %73 ; [#uses=1]
+ %75 = fmul float %19, %72 ; [#uses=1]
+ %76 = fadd float %74, %75 ; [#uses=1]
+ %77 = fmul float %18, %71 ; [#uses=1]
+ %78 = fadd float %76, %77 ; [#uses=2]
+ %79 = tail call float @fabsf(float %57) nounwind readnone ; [#uses=1]
+ %80 = tail call float @fabsf(float %53) nounwind readnone ; [#uses=1]
+ %81 = tail call float @fabsf(float %50) nounwind readnone ; [#uses=1]
+ %82 = fmul float %20, %81 ; [#uses=1]
+ %83 = fmul float %19, %80 ; [#uses=1]
+ %84 = fadd float %82, %83 ; [#uses=1]
+ %85 = fmul float %18, %79 ; [#uses=1]
+ %86 = fadd float %84, %85 ; [#uses=2]
+ %87 = fsub float %34, %70 ; [#uses=1]
+ %88 = fsub float %48, %78 ; [#uses=1]
+ %89 = fsub float %62, %86 ; [#uses=1]
+ %90 = fadd float %34, %70 ; [#uses=1]
+ %91 = fadd float %48, %78 ; [#uses=1]
+ %92 = fadd float %62, %86 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %89, float* %93, align 4
+ %94 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %88, float* %94, align 4
+ %95 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %87, float* %95, align 4
+ %96 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %96, align 4
+ %97 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %92, float* %97, align 4
+ %98 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %91, float* %98, align 4
+ %99 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %90, float* %99, align 4
+ %100 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %100, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btGImpactShapeInterface10postUpdateEv(%struct.btGImpactShapeInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 2 ; [#uses=1]
+ store i8 1, i8* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK23btGImpactShapeInterface12getShapeTypeEv(%struct.btGImpactShapeInterface* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 25
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btGImpactShapeInterface15setLocalScalingERK9btVector3(%struct.btGImpactShapeInterface* %this, %struct.btQuadWord* nocapture %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 17 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ tail call void %16(%struct.btGImpactShapeInterface* %this)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btQuadWord* @_ZNK23btGImpactShapeInterface15getLocalScalingEv(%struct.btGImpactShapeInterface* %this) nounwind readnone align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 3 ; [#uses=1]
+ ret %struct.btQuadWord* %0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btGImpactShapeInterface9setMarginEf(%struct.btGImpactShapeInterface* %this, float %margin) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %margin, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %2 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds i32 (...)** %2, i32 21 ; [#uses=1]
+ %4 = load i32 (...)** %3, align 4 ; [#uses=1]
+ %5 = bitcast i32 (...)* %4 to i32 (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %6 = tail call i32 %5(%struct.btGImpactShapeInterface* %this) ; [#uses=3]
+ %7 = icmp eq i32 %6, 0 ; [#uses=1]
+ br i1 %7, label %bb2, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %tmp3 = add i32 %6, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb ] ; [#uses=2]
+ %tmp4 = sub i32 %tmp3, %indvar ; [#uses=1]
+ %8 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 30 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = bitcast i32 (...)* %10 to %struct.btCollisionShape* (%struct.btGImpactShapeInterface*, i32)* ; [#uses=1]
+ %12 = tail call %struct.btCollisionShape* %11(%struct.btGImpactShapeInterface* %this, i32 %tmp4) ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btCollisionShape* %12, i32 0, i32 0 ; [#uses=1]
+ %14 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds i32 (...)** %14, i32 10 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to void (%struct.btCollisionShape*, float)* ; [#uses=1]
+ tail call void %17(%struct.btCollisionShape* %12, float %margin)
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %6 ; [#uses=1]
+ br i1 %exitcond, label %bb2, label %bb
+
+bb2: ; preds = %bb, %entry
+ %18 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 2 ; [#uses=1]
+ store i8 1, i8* %18, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK23btGImpactShapeInterface15lockChildShapesEv(%struct.btGImpactShapeInterface* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK23btGImpactShapeInterface17unlockChildShapesEv(%struct.btGImpactShapeInterface* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK23btGImpactShapeInterface12getChildAabbEiRK11btTransformR9btVector3S4_(%struct.btGImpactShapeInterface* %this, i32 %child_index, %struct.btTransform* nocapture %t, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %child_aabb = alloca %struct.GIM_AABB, align 8 ; [#uses=7]
+ %0 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 20 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to %struct.btActionInterface* (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %5 = call %struct.btActionInterface* %4(%struct.btGImpactShapeInterface* %this) ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btActionInterface* %5, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 4 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to void (%struct.btActionInterface*, i32, %struct.GIM_AABB*)* ; [#uses=1]
+ call void %10(%struct.btActionInterface* %5, i32 %child_index, %struct.GIM_AABB* %child_aabb)
+ %11 = getelementptr inbounds %struct.GIM_AABB* %child_aabb, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 8 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.GIM_AABB* %child_aabb, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 8 ; [#uses=1]
+ %15 = fadd float %12, %14 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.GIM_AABB* %child_aabb, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.GIM_AABB* %child_aabb, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fadd float %17, %19 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.GIM_AABB* %child_aabb, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 8 ; [#uses=2]
+ %23 = getelementptr inbounds %struct.GIM_AABB* %child_aabb, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %23, align 8 ; [#uses=1]
+ %25 = fadd float %22, %24 ; [#uses=1]
+ %26 = fmul float %15, 5.000000e-01 ; [#uses=4]
+ %27 = fmul float %20, 5.000000e-01 ; [#uses=4]
+ %28 = fmul float %25, 5.000000e-01 ; [#uses=4]
+ %29 = fsub float %12, %26 ; [#uses=3]
+ %30 = fsub float %17, %27 ; [#uses=3]
+ %31 = fsub float %22, %28 ; [#uses=3]
+ %32 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=2]
+ %34 = fmul float %33, %28 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = fmul float %36, %27 ; [#uses=1]
+ %38 = fadd float %34, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=2]
+ %41 = fmul float %40, %26 ; [#uses=1]
+ %42 = fadd float %38, %41 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = fadd float %42, %44 ; [#uses=2]
+ %46 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=2]
+ %48 = fmul float %47, %28 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=2]
+ %51 = fmul float %50, %27 ; [#uses=1]
+ %52 = fadd float %48, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=2]
+ %55 = fmul float %54, %26 ; [#uses=1]
+ %56 = fadd float %52, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = fadd float %56, %58 ; [#uses=2]
+ %60 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=2]
+ %62 = fmul float %61, %28 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=2]
+ %65 = fmul float %64, %27 ; [#uses=1]
+ %66 = fadd float %62, %65 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=2]
+ %69 = fmul float %68, %26 ; [#uses=1]
+ %70 = fadd float %66, %69 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fadd float %70, %72 ; [#uses=2]
+ %74 = call float @fabsf(float %40) nounwind readnone ; [#uses=1]
+ %75 = call float @fabsf(float %36) nounwind readnone ; [#uses=1]
+ %76 = call float @fabsf(float %33) nounwind readnone ; [#uses=1]
+ %77 = fmul float %31, %76 ; [#uses=1]
+ %78 = fmul float %30, %75 ; [#uses=1]
+ %79 = fadd float %77, %78 ; [#uses=1]
+ %80 = fmul float %29, %74 ; [#uses=1]
+ %81 = fadd float %79, %80 ; [#uses=2]
+ %82 = call float @fabsf(float %54) nounwind readnone ; [#uses=1]
+ %83 = call float @fabsf(float %50) nounwind readnone ; [#uses=1]
+ %84 = call float @fabsf(float %47) nounwind readnone ; [#uses=1]
+ %85 = fmul float %31, %84 ; [#uses=1]
+ %86 = fmul float %30, %83 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=1]
+ %88 = fmul float %29, %82 ; [#uses=1]
+ %89 = fadd float %87, %88 ; [#uses=2]
+ %90 = call float @fabsf(float %68) nounwind readnone ; [#uses=1]
+ %91 = call float @fabsf(float %64) nounwind readnone ; [#uses=1]
+ %92 = call float @fabsf(float %61) nounwind readnone ; [#uses=1]
+ %93 = fmul float %31, %92 ; [#uses=1]
+ %94 = fmul float %30, %91 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %29, %90 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=2]
+ %98 = fsub float %45, %81 ; [#uses=1]
+ %99 = fsub float %59, %89 ; [#uses=1]
+ %100 = fsub float %73, %97 ; [#uses=1]
+ %101 = fadd float %45, %81 ; [#uses=1]
+ %102 = fadd float %59, %89 ; [#uses=1]
+ %103 = fadd float %73, %97 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %100, float* %104, align 4
+ %105 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %99, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %98, float* %106, align 4
+ %107 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %107, align 4
+ %108 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %103, float* %108, align 4
+ %109 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %102, float* %109, align 4
+ %110 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %101, float* %110, align 4
+ %111 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %111, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK23btGImpactShapeInterface7rayTestERK9btVector3S2_RN16btCollisionWorld17RayResultCallbackE(%struct.btGImpactShapeInterface* nocapture %this, %struct.btQuadWord* nocapture %rayFrom, %struct.btQuadWord* nocapture %rayTo, %"struct.btCollisionWorld::RayResultCallback"* nocapture %resultCallback) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK23btGImpactShapeInterface19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_(%struct.btGImpactShapeInterface* nocapture %this, %struct.btActionInterface* nocapture %callback, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK22btGImpactCompoundShape24CompoundPrimitiveManager10is_trimeshEv(%"struct.btGImpactCompoundShape::CompoundPrimitiveManager"* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK22btGImpactCompoundShape24CompoundPrimitiveManager19get_primitive_countEv(%"struct.btGImpactCompoundShape::CompoundPrimitiveManager"* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btGImpactCompoundShape::CompoundPrimitiveManager"* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btGImpactCompoundShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btGImpactCompoundShape* %1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 21 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to i32 (%struct.btGImpactCompoundShape*)* ; [#uses=1]
+ %7 = tail call i32 %6(%struct.btGImpactCompoundShape* %1) ; [#uses=1]
+ ret i32 %7
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactCompoundShape24CompoundPrimitiveManager17get_primitive_boxEiR6btAABB(%"struct.btGImpactCompoundShape::CompoundPrimitiveManager"* nocapture %this, i32 %prim_index, %struct.GIM_AABB* %primbox) align 2 {
+entry:
+ %0 = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %prim_trans = alloca %struct.btTransform, align 8 ; [#uses=33]
+ %1 = getelementptr inbounds %"struct.btGImpactCompoundShape::CompoundPrimitiveManager"* %this, i32 0, i32 1 ; [#uses=3]
+ %2 = load %struct.btGImpactCompoundShape** %1, align 4 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btGImpactCompoundShape* %2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load i32 (...)*** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds i32 (...)** %4, i32 22 ; [#uses=1]
+ %6 = load i32 (...)** %5, align 4 ; [#uses=1]
+ %7 = bitcast i32 (...)* %6 to i8 (%struct.btGImpactCompoundShape*)* ; [#uses=1]
+ %8 = call zeroext i8 %7(%struct.btGImpactCompoundShape* %2) ; [#uses=1]
+ %toBool = icmp eq i8 %8, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %9 = load %struct.btGImpactCompoundShape** %1, align 4 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btGImpactCompoundShape* %9, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 32 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to void (%struct.btTransform*, %struct.btGImpactCompoundShape*, i32)* ; [#uses=1]
+ call void %14(%struct.btTransform* noalias sret %0, %struct.btGImpactCompoundShape* %9, i32 %prim_index)
+ %15 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 8 ; [#uses=1]
+ store float %17, float* %15, align 8
+ %18 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 8 ; [#uses=1]
+ store float %23, float* %21, align 8
+ %24 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 8 ; [#uses=1]
+ store float %29, float* %27, align 8
+ %30 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 8 ; [#uses=1]
+ store float %35, float* %33, align 8
+ %36 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 8 ; [#uses=1]
+ store float %41, float* %39, align 8
+ %42 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ store float %44, float* %42, align 4
+ %45 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 8 ; [#uses=1]
+ store float %47, float* %45, align 8
+ %48 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ store float %50, float* %48, align 4
+ %51 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %53 = load float* %52, align 8 ; [#uses=1]
+ store float %53, float* %51, align 8
+ %54 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ store float %56, float* %54, align 4
+ %57 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %59 = load float* %58, align 8 ; [#uses=1]
+ store float %59, float* %57, align 8
+ %60 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ store float %62, float* %60, align 4
+ br label %bb2
+
+bb1: ; preds = %entry
+ %63 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %63, align 8
+ %64 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %64, align 4
+ %65 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %65, align 8
+ %66 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %66, align 4
+ %67 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %67, align 8
+ %68 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %68, align 4
+ %69 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %69, align 8
+ %70 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %70, align 4
+ %71 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %71, align 8
+ %72 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %72, align 4
+ %73 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %73, align 8
+ %74 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %74, align 4
+ %75 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %75, align 8
+ %76 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %76, align 4
+ %77 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %77, align 8
+ %78 = getelementptr inbounds %struct.btTransform* %prim_trans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %78, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %79 = load %struct.btGImpactCompoundShape** %1, align 4 ; [#uses=2]
+ %80 = getelementptr inbounds %struct.btGImpactCompoundShape* %79, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %81 = load i32 (...)*** %80, align 4 ; [#uses=1]
+ %82 = getelementptr inbounds i32 (...)** %81, i32 30 ; [#uses=1]
+ %83 = load i32 (...)** %82, align 4 ; [#uses=1]
+ %84 = bitcast i32 (...)* %83 to %struct.btCollisionShape* (%struct.btGImpactCompoundShape*, i32)* ; [#uses=1]
+ %85 = call %struct.btCollisionShape* %84(%struct.btGImpactCompoundShape* %79, i32 %prim_index) ; [#uses=2]
+ %86 = getelementptr inbounds %struct.btCollisionShape* %85, i32 0, i32 0 ; [#uses=1]
+ %87 = load i32 (...)*** %86, align 4 ; [#uses=1]
+ %88 = getelementptr inbounds i32 (...)** %87, i32 2 ; [#uses=1]
+ %89 = load i32 (...)** %88, align 4 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.GIM_AABB* %primbox, i32 0, i32 1 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.GIM_AABB* %primbox, i32 0, i32 0 ; [#uses=1]
+ %92 = bitcast i32 (...)* %89 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %92(%struct.btCollisionShape* %85, %struct.btTransform* %prim_trans, %struct.btQuadWord* %91, %struct.btQuadWord* %90)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactCompoundShape24CompoundPrimitiveManager22get_primitive_triangleEiR19btPrimitiveTriangle(%"struct.btGImpactCompoundShape::CompoundPrimitiveManager"* nocapture %this, i32 %prim_index, %struct.btPrimitiveTriangle* nocapture %triangle) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btActionInterface* @_ZNK22btGImpactCompoundShape19getPrimitiveManagerEv(%struct.btGImpactCompoundShape* %this) nounwind readnone align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ ret %struct.btActionInterface* %0
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK22btGImpactCompoundShape22needsRetrieveTrianglesEv(%struct.btGImpactCompoundShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK22btGImpactCompoundShape25needsRetrieveTetrahedronsEv(%struct.btGImpactCompoundShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactCompoundShape17getBulletTriangleEiR17btTriangleShapeEx(%struct.btGImpactCompoundShape* nocapture %this, i32 %prim_index, %struct.btTriangleShapeEx* nocapture %triangle) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactCompoundShape20getBulletTetrahedronEiR20btTetrahedronShapeEx(%struct.btGImpactCompoundShape* nocapture %this, i32 %prim_index, %struct.btTetrahedronShapeEx* nocapture %tetrahedron) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK22btGImpactCompoundShape7getNameEv(%struct.btGImpactCompoundShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([16 x i8]* @.str153, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK22btGImpactCompoundShape19getGImpactShapeTypeEv(%struct.btGImpactCompoundShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10is_trimeshEv(%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8 1
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager19get_primitive_countEv(%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 12 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager22get_primitive_triangleEiR19btPrimitiveTriangle(%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 %prim_index, %struct.btPrimitiveTriangle* nocapture %triangle) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 13 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 3 ; [#uses=1]
+ %3 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 10 ; [#uses=1]
+ %4 = load i8** %3, align 4 ; [#uses=5]
+ %5 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 11 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = mul nsw i32 %6, %prim_index ; [#uses=5]
+ %8 = getelementptr inbounds i8* %4, i32 %7 ; [#uses=2]
+ br i1 %2, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %entry
+ %9 = bitcast i8* %8 to i16* ; [#uses=1]
+ %10 = load i16* %9, align 2 ; [#uses=1]
+ %11 = sext i16 %10 to i32 ; [#uses=1]
+ %.sum4.i = add i32 %7, 2 ; [#uses=1]
+ %12 = getelementptr inbounds i8* %4, i32 %.sum4.i ; [#uses=1]
+ %13 = bitcast i8* %12 to i16* ; [#uses=1]
+ %14 = load i16* %13, align 2 ; [#uses=1]
+ %15 = sext i16 %14 to i32 ; [#uses=1]
+ %.sum5.i = add i32 %7, 4 ; [#uses=1]
+ %16 = getelementptr inbounds i8* %4, i32 %.sum5.i ; [#uses=1]
+ %17 = bitcast i8* %16 to i16* ; [#uses=1]
+ %18 = load i16* %17, align 2 ; [#uses=1]
+ %19 = sext i16 %18 to i32 ; [#uses=1]
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager11get_indicesEiRiS1_S1_.exit
+
+bb1.i: ; preds = %entry
+ %20 = bitcast i8* %8 to i32* ; [#uses=1]
+ %21 = load i32* %20, align 4 ; [#uses=1]
+ %.sum.i = add i32 %7, 4 ; [#uses=1]
+ %22 = getelementptr inbounds i8* %4, i32 %.sum.i ; [#uses=1]
+ %23 = bitcast i8* %22 to i32* ; [#uses=1]
+ %24 = load i32* %23, align 4 ; [#uses=1]
+ %.sum3.i = add i32 %7, 8 ; [#uses=1]
+ %25 = getelementptr inbounds i8* %4, i32 %.sum3.i ; [#uses=1]
+ %26 = bitcast i8* %25 to i32* ; [#uses=1]
+ %27 = load i32* %26, align 4 ; [#uses=1]
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager11get_indicesEiRiS1_S1_.exit
+
+_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager11get_indicesEiRiS1_S1_.exit: ; preds = %bb1.i, %bb.i
+ %indices.2.0 = phi i32 [ %19, %bb.i ], [ %27, %bb1.i ] ; [#uses=1]
+ %indices.1.0 = phi i32 [ %15, %bb.i ], [ %24, %bb1.i ] ; [#uses=1]
+ %indices.0.0 = phi i32 [ %11, %bb.i ], [ %21, %bb1.i ] ; [#uses=1]
+ %28 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 8 ; [#uses=3]
+ %29 = load i32* %28, align 4 ; [#uses=1]
+ %30 = icmp eq i32 %29, 1 ; [#uses=1]
+ %31 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 6 ; [#uses=3]
+ %32 = load i8** %31, align 4 ; [#uses=5]
+ %33 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 9 ; [#uses=3]
+ %34 = load i32* %33, align 4 ; [#uses=1]
+ %35 = mul nsw i32 %34, %indices.0.0 ; [#uses=5]
+ %36 = getelementptr inbounds i8* %32, i32 %35 ; [#uses=2]
+ br i1 %30, label %bb.i16, label %bb1.i19
+
+bb.i16: ; preds = %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager11get_indicesEiRiS1_S1_.exit
+ %37 = bitcast i8* %36 to double* ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %39 = load double* %37, align 4 ; [#uses=1]
+ %40 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = fpext float %41 to double ; [#uses=1]
+ %43 = fmul double %39, %42 ; [#uses=1]
+ %44 = fptrunc double %43 to float ; [#uses=1]
+ store float %44, float* %38, align 4
+ %.sum4.i14 = add i32 %35, 8 ; [#uses=1]
+ %45 = getelementptr inbounds i8* %32, i32 %.sum4.i14 ; [#uses=1]
+ %46 = bitcast i8* %45 to double* ; [#uses=1]
+ %47 = load double* %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fpext float %49 to double ; [#uses=1]
+ %51 = fmul double %47, %50 ; [#uses=1]
+ %52 = fptrunc double %51 to float ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %52, float* %53, align 4
+ %.sum5.i15 = add i32 %35, 16 ; [#uses=1]
+ %54 = getelementptr inbounds i8* %32, i32 %.sum5.i15 ; [#uses=1]
+ %55 = bitcast i8* %54 to double* ; [#uses=1]
+ %56 = load double* %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = fpext float %58 to double ; [#uses=1]
+ %60 = fmul double %56, %59 ; [#uses=1]
+ %61 = fptrunc double %60 to float ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %61, float* %62, align 4
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit20
+
+bb1.i19: ; preds = %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager11get_indicesEiRiS1_S1_.exit
+ %63 = bitcast i8* %36 to float* ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %65 = load float* %63, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = fmul float %65, %67 ; [#uses=1]
+ store float %68, float* %64, align 4
+ %.sum.i17 = add i32 %35, 4 ; [#uses=1]
+ %69 = getelementptr inbounds i8* %32, i32 %.sum.i17 ; [#uses=1]
+ %70 = bitcast i8* %69 to float* ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ %74 = fmul float %71, %73 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %74, float* %75, align 4
+ %.sum3.i18 = add i32 %35, 8 ; [#uses=1]
+ %76 = getelementptr inbounds i8* %32, i32 %.sum3.i18 ; [#uses=1]
+ %77 = bitcast i8* %76 to float* ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ %79 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fmul float %78, %80 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %81, float* %82, align 4
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit20
+
+_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit20: ; preds = %bb1.i19, %bb.i16
+ %83 = load i32* %28, align 4 ; [#uses=1]
+ %84 = icmp eq i32 %83, 1 ; [#uses=1]
+ %85 = load i8** %31, align 4 ; [#uses=5]
+ %86 = load i32* %33, align 4 ; [#uses=1]
+ %87 = mul nsw i32 %86, %indices.1.0 ; [#uses=5]
+ %88 = getelementptr inbounds i8* %85, i32 %87 ; [#uses=2]
+ br i1 %84, label %bb.i9, label %bb1.i12
+
+bb.i9: ; preds = %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit20
+ %89 = bitcast i8* %88 to double* ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %91 = load double* %89, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ %94 = fpext float %93 to double ; [#uses=1]
+ %95 = fmul double %91, %94 ; [#uses=1]
+ %96 = fptrunc double %95 to float ; [#uses=1]
+ store float %96, float* %90, align 4
+ %.sum4.i7 = add i32 %87, 8 ; [#uses=1]
+ %97 = getelementptr inbounds i8* %85, i32 %.sum4.i7 ; [#uses=1]
+ %98 = bitcast i8* %97 to double* ; [#uses=1]
+ %99 = load double* %98, align 4 ; [#uses=1]
+ %100 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ %102 = fpext float %101 to double ; [#uses=1]
+ %103 = fmul double %99, %102 ; [#uses=1]
+ %104 = fptrunc double %103 to float ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %104, float* %105, align 4
+ %.sum5.i8 = add i32 %87, 16 ; [#uses=1]
+ %106 = getelementptr inbounds i8* %85, i32 %.sum5.i8 ; [#uses=1]
+ %107 = bitcast i8* %106 to double* ; [#uses=1]
+ %108 = load double* %107, align 4 ; [#uses=1]
+ %109 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %110 = load float* %109, align 4 ; [#uses=1]
+ %111 = fpext float %110 to double ; [#uses=1]
+ %112 = fmul double %108, %111 ; [#uses=1]
+ %113 = fptrunc double %112 to float ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %113, float* %114, align 4
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit13
+
+bb1.i12: ; preds = %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit20
+ %115 = bitcast i8* %88 to float* ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %117 = load float* %115, align 4 ; [#uses=1]
+ %118 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %119 = load float* %118, align 4 ; [#uses=1]
+ %120 = fmul float %117, %119 ; [#uses=1]
+ store float %120, float* %116, align 4
+ %.sum.i10 = add i32 %87, 4 ; [#uses=1]
+ %121 = getelementptr inbounds i8* %85, i32 %.sum.i10 ; [#uses=1]
+ %122 = bitcast i8* %121 to float* ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=1]
+ %124 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %125 = load float* %124, align 4 ; [#uses=1]
+ %126 = fmul float %123, %125 ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %126, float* %127, align 4
+ %.sum3.i11 = add i32 %87, 8 ; [#uses=1]
+ %128 = getelementptr inbounds i8* %85, i32 %.sum3.i11 ; [#uses=1]
+ %129 = bitcast i8* %128 to float* ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=1]
+ %131 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %132 = load float* %131, align 4 ; [#uses=1]
+ %133 = fmul float %130, %132 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %133, float* %134, align 4
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit13
+
+_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit13: ; preds = %bb1.i12, %bb.i9
+ %135 = load i32* %28, align 4 ; [#uses=1]
+ %136 = icmp eq i32 %135, 1 ; [#uses=1]
+ %137 = load i8** %31, align 4 ; [#uses=5]
+ %138 = load i32* %33, align 4 ; [#uses=1]
+ %139 = mul nsw i32 %138, %indices.2.0 ; [#uses=5]
+ %140 = getelementptr inbounds i8* %137, i32 %139 ; [#uses=2]
+ br i1 %136, label %bb.i3, label %bb1.i6
+
+bb.i3: ; preds = %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit13
+ %141 = bitcast i8* %140 to double* ; [#uses=1]
+ %142 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %143 = load double* %141, align 4 ; [#uses=1]
+ %144 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ %146 = fpext float %145 to double ; [#uses=1]
+ %147 = fmul double %143, %146 ; [#uses=1]
+ %148 = fptrunc double %147 to float ; [#uses=1]
+ store float %148, float* %142, align 4
+ %.sum4.i1 = add i32 %139, 8 ; [#uses=1]
+ %149 = getelementptr inbounds i8* %137, i32 %.sum4.i1 ; [#uses=1]
+ %150 = bitcast i8* %149 to double* ; [#uses=1]
+ %151 = load double* %150, align 4 ; [#uses=1]
+ %152 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %153 = load float* %152, align 4 ; [#uses=1]
+ %154 = fpext float %153 to double ; [#uses=1]
+ %155 = fmul double %151, %154 ; [#uses=1]
+ %156 = fptrunc double %155 to float ; [#uses=1]
+ %157 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %156, float* %157, align 4
+ %.sum5.i2 = add i32 %139, 16 ; [#uses=1]
+ %158 = getelementptr inbounds i8* %137, i32 %.sum5.i2 ; [#uses=1]
+ %159 = bitcast i8* %158 to double* ; [#uses=1]
+ %160 = load double* %159, align 4 ; [#uses=1]
+ %161 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ %163 = fpext float %162 to double ; [#uses=1]
+ %164 = fmul double %160, %163 ; [#uses=1]
+ %165 = fptrunc double %164 to float ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %165, float* %166, align 4
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit
+
+bb1.i6: ; preds = %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit13
+ %167 = bitcast i8* %140 to float* ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %169 = load float* %167, align 4 ; [#uses=1]
+ %170 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %171 = load float* %170, align 4 ; [#uses=1]
+ %172 = fmul float %169, %171 ; [#uses=1]
+ store float %172, float* %168, align 4
+ %.sum.i4 = add i32 %139, 4 ; [#uses=1]
+ %173 = getelementptr inbounds i8* %137, i32 %.sum.i4 ; [#uses=1]
+ %174 = bitcast i8* %173 to float* ; [#uses=1]
+ %175 = load float* %174, align 4 ; [#uses=1]
+ %176 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %177 = load float* %176, align 4 ; [#uses=1]
+ %178 = fmul float %175, %177 ; [#uses=1]
+ %179 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %178, float* %179, align 4
+ %.sum3.i5 = add i32 %139, 8 ; [#uses=1]
+ %180 = getelementptr inbounds i8* %137, i32 %.sum3.i5 ; [#uses=1]
+ %181 = bitcast i8* %180 to float* ; [#uses=1]
+ %182 = load float* %181, align 4 ; [#uses=1]
+ %183 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %184 = load float* %183, align 4 ; [#uses=1]
+ %185 = fmul float %182, %184 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %185, float* %186, align 4
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit
+
+_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit: ; preds = %bb1.i6, %bb.i3
+ %187 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 1 ; [#uses=1]
+ %188 = load float* %187, align 4 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 2 ; [#uses=1]
+ store float %188, float* %189, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager19get_bullet_triangleEiR17btTriangleShapeEx(%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 %prim_index, %struct.btTriangleShapeEx* %triangle) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 13 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 3 ; [#uses=1]
+ %3 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 10 ; [#uses=1]
+ %4 = load i8** %3, align 4 ; [#uses=5]
+ %5 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 11 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = mul nsw i32 %6, %prim_index ; [#uses=5]
+ %8 = getelementptr inbounds i8* %4, i32 %7 ; [#uses=2]
+ br i1 %2, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %entry
+ %9 = bitcast i8* %8 to i16* ; [#uses=1]
+ %10 = load i16* %9, align 2 ; [#uses=1]
+ %11 = sext i16 %10 to i32 ; [#uses=1]
+ %.sum4.i = add i32 %7, 2 ; [#uses=1]
+ %12 = getelementptr inbounds i8* %4, i32 %.sum4.i ; [#uses=1]
+ %13 = bitcast i8* %12 to i16* ; [#uses=1]
+ %14 = load i16* %13, align 2 ; [#uses=1]
+ %15 = sext i16 %14 to i32 ; [#uses=1]
+ %.sum5.i = add i32 %7, 4 ; [#uses=1]
+ %16 = getelementptr inbounds i8* %4, i32 %.sum5.i ; [#uses=1]
+ %17 = bitcast i8* %16 to i16* ; [#uses=1]
+ %18 = load i16* %17, align 2 ; [#uses=1]
+ %19 = sext i16 %18 to i32 ; [#uses=1]
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager11get_indicesEiRiS1_S1_.exit
+
+bb1.i: ; preds = %entry
+ %20 = bitcast i8* %8 to i32* ; [#uses=1]
+ %21 = load i32* %20, align 4 ; [#uses=1]
+ %.sum.i = add i32 %7, 4 ; [#uses=1]
+ %22 = getelementptr inbounds i8* %4, i32 %.sum.i ; [#uses=1]
+ %23 = bitcast i8* %22 to i32* ; [#uses=1]
+ %24 = load i32* %23, align 4 ; [#uses=1]
+ %.sum3.i = add i32 %7, 8 ; [#uses=1]
+ %25 = getelementptr inbounds i8* %4, i32 %.sum3.i ; [#uses=1]
+ %26 = bitcast i8* %25 to i32* ; [#uses=1]
+ %27 = load i32* %26, align 4 ; [#uses=1]
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager11get_indicesEiRiS1_S1_.exit
+
+_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager11get_indicesEiRiS1_S1_.exit: ; preds = %bb1.i, %bb.i
+ %indices.2.0 = phi i32 [ %19, %bb.i ], [ %27, %bb1.i ] ; [#uses=1]
+ %indices.1.0 = phi i32 [ %15, %bb.i ], [ %24, %bb1.i ] ; [#uses=1]
+ %indices.0.0 = phi i32 [ %11, %bb.i ], [ %21, %bb1.i ] ; [#uses=1]
+ %28 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 8 ; [#uses=3]
+ %29 = load i32* %28, align 4 ; [#uses=1]
+ %30 = icmp eq i32 %29, 1 ; [#uses=1]
+ %31 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 6 ; [#uses=3]
+ %32 = load i8** %31, align 4 ; [#uses=5]
+ %33 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 9 ; [#uses=3]
+ %34 = load i32* %33, align 4 ; [#uses=1]
+ %35 = mul nsw i32 %34, %indices.0.0 ; [#uses=5]
+ %36 = getelementptr inbounds i8* %32, i32 %35 ; [#uses=2]
+ br i1 %30, label %bb.i3, label %bb1.i6
+
+bb.i3: ; preds = %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager11get_indicesEiRiS1_S1_.exit
+ %37 = bitcast i8* %36 to double* ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %39 = load double* %37, align 4 ; [#uses=1]
+ %40 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = fpext float %41 to double ; [#uses=1]
+ %43 = fmul double %39, %42 ; [#uses=1]
+ %44 = fptrunc double %43 to float ; [#uses=1]
+ store float %44, float* %38, align 4
+ %.sum4.i1 = add i32 %35, 8 ; [#uses=1]
+ %45 = getelementptr inbounds i8* %32, i32 %.sum4.i1 ; [#uses=1]
+ %46 = bitcast i8* %45 to double* ; [#uses=1]
+ %47 = load double* %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fpext float %49 to double ; [#uses=1]
+ %51 = fmul double %47, %50 ; [#uses=1]
+ %52 = fptrunc double %51 to float ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %52, float* %53, align 4
+ %.sum5.i2 = add i32 %35, 16 ; [#uses=1]
+ %54 = getelementptr inbounds i8* %32, i32 %.sum5.i2 ; [#uses=1]
+ %55 = bitcast i8* %54 to double* ; [#uses=1]
+ %56 = load double* %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = fpext float %58 to double ; [#uses=1]
+ %60 = fmul double %56, %59 ; [#uses=1]
+ %61 = fptrunc double %60 to float ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %61, float* %62, align 4
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit
+
+bb1.i6: ; preds = %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager11get_indicesEiRiS1_S1_.exit
+ %63 = bitcast i8* %36 to float* ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %65 = load float* %63, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = fmul float %65, %67 ; [#uses=1]
+ store float %68, float* %64, align 4
+ %.sum.i4 = add i32 %35, 4 ; [#uses=1]
+ %69 = getelementptr inbounds i8* %32, i32 %.sum.i4 ; [#uses=1]
+ %70 = bitcast i8* %69 to float* ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ %74 = fmul float %71, %73 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %74, float* %75, align 4
+ %.sum3.i5 = add i32 %35, 8 ; [#uses=1]
+ %76 = getelementptr inbounds i8* %32, i32 %.sum3.i5 ; [#uses=1]
+ %77 = bitcast i8* %76 to float* ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ %79 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fmul float %78, %80 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %81, float* %82, align 4
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit
+
+_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit: ; preds = %bb1.i6, %bb.i3
+ %83 = load i32* %28, align 4 ; [#uses=1]
+ %84 = icmp eq i32 %83, 1 ; [#uses=1]
+ %85 = load i8** %31, align 4 ; [#uses=5]
+ %86 = load i32* %33, align 4 ; [#uses=1]
+ %87 = mul nsw i32 %86, %indices.1.0 ; [#uses=5]
+ %88 = getelementptr inbounds i8* %85, i32 %87 ; [#uses=2]
+ br i1 %84, label %bb.i16, label %bb1.i19
+
+bb.i16: ; preds = %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit
+ %89 = bitcast i8* %88 to double* ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %91 = load double* %89, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ %94 = fpext float %93 to double ; [#uses=1]
+ %95 = fmul double %91, %94 ; [#uses=1]
+ %96 = fptrunc double %95 to float ; [#uses=1]
+ store float %96, float* %90, align 4
+ %.sum4.i14 = add i32 %87, 8 ; [#uses=1]
+ %97 = getelementptr inbounds i8* %85, i32 %.sum4.i14 ; [#uses=1]
+ %98 = bitcast i8* %97 to double* ; [#uses=1]
+ %99 = load double* %98, align 4 ; [#uses=1]
+ %100 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ %102 = fpext float %101 to double ; [#uses=1]
+ %103 = fmul double %99, %102 ; [#uses=1]
+ %104 = fptrunc double %103 to float ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %104, float* %105, align 4
+ %.sum5.i15 = add i32 %87, 16 ; [#uses=1]
+ %106 = getelementptr inbounds i8* %85, i32 %.sum5.i15 ; [#uses=1]
+ %107 = bitcast i8* %106 to double* ; [#uses=1]
+ %108 = load double* %107, align 4 ; [#uses=1]
+ %109 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %110 = load float* %109, align 4 ; [#uses=1]
+ %111 = fpext float %110 to double ; [#uses=1]
+ %112 = fmul double %108, %111 ; [#uses=1]
+ %113 = fptrunc double %112 to float ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %113, float* %114, align 4
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit20
+
+bb1.i19: ; preds = %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit
+ %115 = bitcast i8* %88 to float* ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %117 = load float* %115, align 4 ; [#uses=1]
+ %118 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %119 = load float* %118, align 4 ; [#uses=1]
+ %120 = fmul float %117, %119 ; [#uses=1]
+ store float %120, float* %116, align 4
+ %.sum.i17 = add i32 %87, 4 ; [#uses=1]
+ %121 = getelementptr inbounds i8* %85, i32 %.sum.i17 ; [#uses=1]
+ %122 = bitcast i8* %121 to float* ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=1]
+ %124 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %125 = load float* %124, align 4 ; [#uses=1]
+ %126 = fmul float %123, %125 ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %126, float* %127, align 4
+ %.sum3.i18 = add i32 %87, 8 ; [#uses=1]
+ %128 = getelementptr inbounds i8* %85, i32 %.sum3.i18 ; [#uses=1]
+ %129 = bitcast i8* %128 to float* ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=1]
+ %131 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %132 = load float* %131, align 4 ; [#uses=1]
+ %133 = fmul float %130, %132 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %133, float* %134, align 4
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit20
+
+_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit20: ; preds = %bb1.i19, %bb.i16
+ %135 = load i32* %28, align 4 ; [#uses=1]
+ %136 = icmp eq i32 %135, 1 ; [#uses=1]
+ %137 = load i8** %31, align 4 ; [#uses=5]
+ %138 = load i32* %33, align 4 ; [#uses=1]
+ %139 = mul nsw i32 %138, %indices.2.0 ; [#uses=5]
+ %140 = getelementptr inbounds i8* %137, i32 %139 ; [#uses=2]
+ br i1 %136, label %bb.i9, label %bb1.i12
+
+bb.i9: ; preds = %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit20
+ %141 = bitcast i8* %140 to double* ; [#uses=1]
+ %142 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %143 = load double* %141, align 4 ; [#uses=1]
+ %144 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ %146 = fpext float %145 to double ; [#uses=1]
+ %147 = fmul double %143, %146 ; [#uses=1]
+ %148 = fptrunc double %147 to float ; [#uses=1]
+ store float %148, float* %142, align 4
+ %.sum4.i7 = add i32 %139, 8 ; [#uses=1]
+ %149 = getelementptr inbounds i8* %137, i32 %.sum4.i7 ; [#uses=1]
+ %150 = bitcast i8* %149 to double* ; [#uses=1]
+ %151 = load double* %150, align 4 ; [#uses=1]
+ %152 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %153 = load float* %152, align 4 ; [#uses=1]
+ %154 = fpext float %153 to double ; [#uses=1]
+ %155 = fmul double %151, %154 ; [#uses=1]
+ %156 = fptrunc double %155 to float ; [#uses=1]
+ %157 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %156, float* %157, align 4
+ %.sum5.i8 = add i32 %139, 16 ; [#uses=1]
+ %158 = getelementptr inbounds i8* %137, i32 %.sum5.i8 ; [#uses=1]
+ %159 = bitcast i8* %158 to double* ; [#uses=1]
+ %160 = load double* %159, align 4 ; [#uses=1]
+ %161 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ %163 = fpext float %162 to double ; [#uses=1]
+ %164 = fmul double %160, %163 ; [#uses=1]
+ %165 = fptrunc double %164 to float ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %165, float* %166, align 4
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit13
+
+bb1.i12: ; preds = %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit20
+ %167 = bitcast i8* %140 to float* ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %169 = load float* %167, align 4 ; [#uses=1]
+ %170 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %171 = load float* %170, align 4 ; [#uses=1]
+ %172 = fmul float %169, %171 ; [#uses=1]
+ store float %172, float* %168, align 4
+ %.sum.i10 = add i32 %139, 4 ; [#uses=1]
+ %173 = getelementptr inbounds i8* %137, i32 %.sum.i10 ; [#uses=1]
+ %174 = bitcast i8* %173 to float* ; [#uses=1]
+ %175 = load float* %174, align 4 ; [#uses=1]
+ %176 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %177 = load float* %176, align 4 ; [#uses=1]
+ %178 = fmul float %175, %177 ; [#uses=1]
+ %179 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %178, float* %179, align 4
+ %.sum3.i11 = add i32 %139, 8 ; [#uses=1]
+ %180 = getelementptr inbounds i8* %137, i32 %.sum3.i11 ; [#uses=1]
+ %181 = bitcast i8* %180 to float* ; [#uses=1]
+ %182 = load float* %181, align 4 ; [#uses=1]
+ %183 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %184 = load float* %183, align 4 ; [#uses=1]
+ %185 = fmul float %182, %184 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %185, float* %186, align 4
+ br label %_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit13
+
+_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager10get_vertexEiR9btVector3.exit13: ; preds = %bb1.i12, %bb.i9
+ %187 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %188 = load i32 (...)*** %187, align 4 ; [#uses=1]
+ %189 = getelementptr inbounds i32 (...)** %188, i32 10 ; [#uses=1]
+ %190 = load i32 (...)** %189, align 4 ; [#uses=1]
+ %191 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 1 ; [#uses=1]
+ %192 = load float* %191, align 4 ; [#uses=1]
+ %193 = getelementptr inbounds %struct.btTriangleShapeEx* %triangle, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %194 = bitcast i32 (...)* %190 to void (%struct.btConvexInternalShape*, float)* ; [#uses=1]
+ tail call void %194(%struct.btConvexInternalShape* %193, float %192)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK22btGImpactMeshShapePart20childrenHasTransformEv(%struct.btGImpactMeshShapePart* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactMeshShapePart15lockChildShapesEv(%struct.btGImpactMeshShapePart* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 4, i32 1 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=13]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 8 ; [#uses=1]
+ %3 = bitcast %struct.btActionInterface* %2 to i32* ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=2]
+ %5 = icmp sgt i32 %4, 0 ; [#uses=1]
+ br i1 %5, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %entry
+ %6 = add nsw i32 %4, 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btActionInterface* %1, i32 8, i32 0 ; [#uses=1]
+ %.c = inttoptr i32 %6 to i32 (...)** ; [#uses=1]
+ store i32 (...)** %.c, i32 (...)*** %7, align 4
+ ret void
+
+bb1.i: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btActionInterface* %1, i32 2 ; [#uses=1]
+ %9 = bitcast %struct.btActionInterface* %8 to %struct.btStridingMeshInterface** ; [#uses=1]
+ %10 = load %struct.btStridingMeshInterface** %9, align 4 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btStridingMeshInterface* %10, i32 0, i32 0 ; [#uses=1]
+ %12 = load i32 (...)*** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 4 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btActionInterface* %1, i32 7 ; [#uses=1]
+ %16 = bitcast %struct.btActionInterface* %15 to i32* ; [#uses=1]
+ %17 = load i32* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btActionInterface* %1, i32 16 ; [#uses=1]
+ %19 = bitcast %struct.btActionInterface* %18 to i32* ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btActionInterface* %1, i32 15 ; [#uses=1]
+ %21 = bitcast %struct.btActionInterface* %20 to i32* ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btActionInterface* %1, i32 14 ; [#uses=1]
+ %23 = bitcast %struct.btActionInterface* %22 to i32* ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btActionInterface* %1, i32 13 ; [#uses=1]
+ %25 = bitcast %struct.btActionInterface* %24 to i8** ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btActionInterface* %1, i32 12 ; [#uses=1]
+ %27 = bitcast %struct.btActionInterface* %26 to i32* ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btActionInterface* %1, i32 11 ; [#uses=1]
+ %29 = bitcast %struct.btActionInterface* %28 to i32* ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btActionInterface* %1, i32 10 ; [#uses=1]
+ %31 = bitcast %struct.btActionInterface* %30 to i32* ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btActionInterface* %1, i32 9 ; [#uses=1]
+ %33 = bitcast %struct.btActionInterface* %32 to i8** ; [#uses=1]
+ %34 = bitcast i32 (...)* %14 to void (%struct.btStridingMeshInterface*, i8**, i32*, i32*, i32*, i8**, i32*, i32*, i32*, i32)* ; [#uses=1]
+ tail call void %34(%struct.btStridingMeshInterface* %10, i8** %33, i32* %31, i32* %29, i32* %27, i8** %25, i32* %23, i32* %21, i32* %19, i32 %17)
+ %35 = getelementptr inbounds %struct.btActionInterface* %1, i32 8, i32 0 ; [#uses=1]
+ store i32 (...)** inttoptr (i32 1 to i32 (...)**), i32 (...)*** %35, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactMeshShapePart17unlockChildShapesEv(%struct.btGImpactMeshShapePart* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 4, i32 1 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 8 ; [#uses=1]
+ %3 = bitcast %struct.btActionInterface* %2 to i32* ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=3]
+ %5 = icmp eq i32 %4, 0 ; [#uses=1]
+ br i1 %5, label %_ZN22btGImpactMeshShapePart23TrimeshPrimitiveManager6unlockEv.exit, label %bb.i
+
+bb.i: ; preds = %entry
+ %6 = icmp sgt i32 %4, 1 ; [#uses=1]
+ br i1 %6, label %bb1.i, label %bb2.i
+
+bb1.i: ; preds = %bb.i
+ %7 = add nsw i32 %4, -1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btActionInterface* %1, i32 8, i32 0 ; [#uses=1]
+ %.c = inttoptr i32 %7 to i32 (...)** ; [#uses=1]
+ store i32 (...)** %.c, i32 (...)*** %8, align 4
+ ret void
+
+bb2.i: ; preds = %bb.i
+ %9 = getelementptr inbounds %struct.btActionInterface* %1, i32 2 ; [#uses=1]
+ %10 = bitcast %struct.btActionInterface* %9 to %struct.btStridingMeshInterface** ; [#uses=1]
+ %11 = load %struct.btStridingMeshInterface** %10, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btStridingMeshInterface* %11, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 6 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btActionInterface* %1, i32 7 ; [#uses=1]
+ %17 = bitcast %struct.btActionInterface* %16 to i32* ; [#uses=1]
+ %18 = load i32* %17, align 4 ; [#uses=1]
+ %19 = bitcast i32 (...)* %15 to void (%struct.btStridingMeshInterface*, i32)* ; [#uses=1]
+ tail call void %19(%struct.btStridingMeshInterface* %11, i32 %18)
+ %20 = getelementptr inbounds %struct.btActionInterface* %1, i32 9, i32 0 ; [#uses=1]
+ store i32 (...)** null, i32 (...)*** %20, align 4
+ %21 = getelementptr inbounds %struct.btActionInterface* %1, i32 8, i32 0 ; [#uses=1]
+ store i32 (...)** null, i32 (...)*** %21, align 4
+ ret void
+
+_ZN22btGImpactMeshShapePart23TrimeshPrimitiveManager6unlockEv.exit: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK22btGImpactMeshShapePart17getNumChildShapesEv(%struct.btGImpactMeshShapePart* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 12 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=1]
+define linkonce_odr noalias %struct.btCollisionShape* @_ZN22btGImpactMeshShapePart13getChildShapeEi(%struct.btGImpactMeshShapePart* nocapture %this, i32 %index) nounwind readnone align 2 {
+entry:
+ ret %struct.btCollisionShape* null
+}
+
+; [#uses=1]
+define linkonce_odr noalias %struct.btCollisionShape* @_ZNK22btGImpactMeshShapePart13getChildShapeEi(%struct.btGImpactMeshShapePart* nocapture %this, i32 %index) nounwind readnone align 2 {
+entry:
+ ret %struct.btCollisionShape* null
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactMeshShapePart17getChildTransformEi(%struct.btTransform* noalias nocapture sret %agg.result, %struct.btGImpactMeshShapePart* nocapture %this, i32 %index) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btGImpactMeshShapePart17setChildTransformEiRK11btTransform(%struct.btGImpactMeshShapePart* nocapture %this, i32 %index, %struct.btTransform* nocapture %transform) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btActionInterface* @_ZNK22btGImpactMeshShapePart19getPrimitiveManagerEv(%struct.btGImpactMeshShapePart* %this) nounwind readnone align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ ret %struct.btActionInterface* %0
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK22btGImpactMeshShapePart7getNameEv(%struct.btGImpactMeshShapePart* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([21 x i8]* @.str1154, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK22btGImpactMeshShapePart19getGImpactShapeTypeEv(%struct.btGImpactMeshShapePart* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 1
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK22btGImpactMeshShapePart22needsRetrieveTrianglesEv(%struct.btGImpactMeshShapePart* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8 1
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK22btGImpactMeshShapePart25needsRetrieveTetrahedronsEv(%struct.btGImpactMeshShapePart* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactMeshShapePart17getBulletTriangleEiR17btTriangleShapeEx(%struct.btGImpactMeshShapePart* %this, i32 %prim_index, %struct.btTriangleShapeEx* %triangle) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager19get_bullet_triangleEiR17btTriangleShapeEx(%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %0, i32 %prim_index, %struct.btTriangleShapeEx* %triangle) inlinehint
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactMeshShapePart20getBulletTetrahedronEiR20btTetrahedronShapeEx(%struct.btGImpactMeshShapePart* nocapture %this, i32 %prim_index, %struct.btTetrahedronShapeEx* nocapture %tetrahedron) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btGImpactMeshShapePart9setMarginEf(%struct.btGImpactMeshShapePart* %this, float %margin) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store float %margin, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds i32 (...)** %2, i32 17 ; [#uses=1]
+ %4 = load i32 (...)** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0 ; [#uses=1]
+ %6 = bitcast i32 (...)* %4 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ tail call void %6(%struct.btGImpactShapeInterface* %5)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr float @_ZNK22btGImpactMeshShapePart9getMarginEv(%struct.btGImpactMeshShapePart* nocapture %this) nounwind readonly inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ ret float %1
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btGImpactMeshShapePart15setLocalScalingERK9btVector3(%struct.btGImpactMeshShapePart* %this, %struct.btQuadWord* nocapture %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 3, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 3, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 3, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 3, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 17 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0 ; [#uses=1]
+ %17 = bitcast i32 (...)* %15 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ tail call void %17(%struct.btGImpactShapeInterface* %16)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btQuadWord* @_ZNK22btGImpactMeshShapePart15getLocalScalingEv(%struct.btGImpactMeshShapePart* %this) nounwind readnone align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ ret %struct.btQuadWord* %0
+}
+
+; [#uses=1]
+define linkonce_odr noalias %struct.btActionInterface* @_ZNK18btGImpactMeshShape19getPrimitiveManagerEv(%struct.btGImpactMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret %struct.btActionInterface* null
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK18btGImpactMeshShape17getNumChildShapesEv(%struct.btGImpactMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK18btGImpactMeshShape20childrenHasTransformEv(%struct.btGImpactMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK18btGImpactMeshShape22needsRetrieveTrianglesEv(%struct.btGImpactMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK18btGImpactMeshShape25needsRetrieveTetrahedronsEv(%struct.btGImpactMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK18btGImpactMeshShape17getBulletTriangleEiR17btTriangleShapeEx(%struct.btGImpactMeshShape* nocapture %this, i32 %prim_index, %struct.btTriangleShapeEx* nocapture %triangle) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK18btGImpactMeshShape20getBulletTetrahedronEiR20btTetrahedronShapeEx(%struct.btGImpactMeshShape* nocapture %this, i32 %prim_index, %struct.btTetrahedronShapeEx* nocapture %tetrahedron) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK18btGImpactMeshShape15lockChildShapesEv(%struct.btGImpactMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK18btGImpactMeshShape17unlockChildShapesEv(%struct.btGImpactMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK18btGImpactMeshShape12getChildAabbEiRK11btTransformR9btVector3S4_(%struct.btGImpactMeshShape* nocapture %this, i32 %child_index, %struct.btTransform* nocapture %t, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr noalias %struct.btCollisionShape* @_ZN18btGImpactMeshShape13getChildShapeEi(%struct.btGImpactMeshShape* nocapture %this, i32 %index) nounwind readnone align 2 {
+entry:
+ ret %struct.btCollisionShape* null
+}
+
+; [#uses=1]
+define linkonce_odr noalias %struct.btCollisionShape* @_ZNK18btGImpactMeshShape13getChildShapeEi(%struct.btGImpactMeshShape* nocapture %this, i32 %index) nounwind readnone align 2 {
+entry:
+ ret %struct.btCollisionShape* null
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK18btGImpactMeshShape17getChildTransformEi(%struct.btTransform* noalias nocapture sret %agg.result, %struct.btGImpactMeshShape* nocapture %this, i32 %index) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btGImpactMeshShape17setChildTransformEiRK11btTransform(%struct.btGImpactMeshShape* nocapture %this, i32 %index, %struct.btTransform* nocapture %transform) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK18btGImpactMeshShape19getGImpactShapeTypeEv(%struct.btGImpactMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 2
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK18btGImpactMeshShape7getNameEv(%struct.btGImpactMeshShape* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i8* getelementptr inbounds ([12 x i8]* @.str2155, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK18btGImpactMeshShape28calculateSerializeBufferSizeEv(%struct.btGImpactMeshShape* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 64
+}
+
+; [#uses=1]
+define void @_ZNK22btGImpactMeshShapePart21calculateLocalInertiaEfR9btVector3(%struct.btGImpactMeshShapePart* %this, float %mass, %struct.btQuadWord* nocapture %inertia) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 27 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ tail call void %4(%struct.btGImpactMeshShapePart* %this)
+ %5 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 7 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=4]
+ %11 = sitofp i32 %10 to float ; [#uses=1]
+ %12 = fdiv float %mass, %11 ; [#uses=3]
+ %13 = icmp eq i32 %10, 0 ; [#uses=1]
+ br i1 %13, label %bb2, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %14 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 8 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 6 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 9 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 3, i32 0, i32 0 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 3, i32 0, i32 1 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 3, i32 0, i32 2 ; [#uses=2]
+ %tmp10 = add i32 %10, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit, %bb.nph
+ %20 = phi float [ 0.000000e+00, %bb.nph ], [ %74, %_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit ] ; [#uses=1]
+ %21 = phi float [ 0.000000e+00, %bb.nph ], [ %73, %_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit ] ; [#uses=1]
+ %22 = phi float [ 0.000000e+00, %bb.nph ], [ %72, %_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit ] ; [#uses=1]
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit ] ; [#uses=2]
+ %tmp11 = sub i32 %tmp10, %indvar ; [#uses=1]
+ %23 = load i32* %14, align 4 ; [#uses=1]
+ %24 = icmp eq i32 %23, 1 ; [#uses=1]
+ %25 = load i8** %15, align 4 ; [#uses=5]
+ %26 = load i32* %16, align 4 ; [#uses=1]
+ %27 = mul nsw i32 %26, %tmp11 ; [#uses=5]
+ %28 = getelementptr inbounds i8* %25, i32 %27 ; [#uses=2]
+ br i1 %24, label %bb.i.i, label %bb1.i.i
+
+bb.i.i: ; preds = %bb
+ %29 = bitcast i8* %28 to double* ; [#uses=1]
+ %30 = load double* %29, align 4 ; [#uses=1]
+ %31 = load float* %17, align 4 ; [#uses=1]
+ %32 = fpext float %31 to double ; [#uses=1]
+ %33 = fmul double %30, %32 ; [#uses=1]
+ %34 = fptrunc double %33 to float ; [#uses=1]
+ %.sum4.i.i = add i32 %27, 8 ; [#uses=1]
+ %35 = getelementptr inbounds i8* %25, i32 %.sum4.i.i ; [#uses=1]
+ %36 = bitcast i8* %35 to double* ; [#uses=1]
+ %37 = load double* %36, align 4 ; [#uses=1]
+ %38 = load float* %18, align 4 ; [#uses=1]
+ %39 = fpext float %38 to double ; [#uses=1]
+ %40 = fmul double %37, %39 ; [#uses=1]
+ %41 = fptrunc double %40 to float ; [#uses=1]
+ %.sum5.i.i = add i32 %27, 16 ; [#uses=1]
+ %42 = getelementptr inbounds i8* %25, i32 %.sum5.i.i ; [#uses=1]
+ %43 = bitcast i8* %42 to double* ; [#uses=1]
+ %44 = load double* %43, align 4 ; [#uses=1]
+ %45 = load float* %19, align 4 ; [#uses=1]
+ %46 = fpext float %45 to double ; [#uses=1]
+ %47 = fmul double %44, %46 ; [#uses=1]
+ %48 = fptrunc double %47 to float ; [#uses=1]
+ br label %_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit
+
+bb1.i.i: ; preds = %bb
+ %49 = bitcast i8* %28 to float* ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = load float* %17, align 4 ; [#uses=1]
+ %52 = fmul float %50, %51 ; [#uses=1]
+ %.sum.i.i = add i32 %27, 4 ; [#uses=1]
+ %53 = getelementptr inbounds i8* %25, i32 %.sum.i.i ; [#uses=1]
+ %54 = bitcast i8* %53 to float* ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = load float* %18, align 4 ; [#uses=1]
+ %57 = fmul float %55, %56 ; [#uses=1]
+ %.sum3.i.i = add i32 %27, 8 ; [#uses=1]
+ %58 = getelementptr inbounds i8* %25, i32 %.sum3.i.i ; [#uses=1]
+ %59 = bitcast i8* %58 to float* ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ %61 = load float* %19, align 4 ; [#uses=1]
+ %62 = fmul float %60, %61 ; [#uses=1]
+ br label %_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit
+
+_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit: ; preds = %bb1.i.i, %bb.i.i
+ %pointintertia.0.2.0 = phi float [ %48, %bb.i.i ], [ %62, %bb1.i.i ] ; [#uses=2]
+ %pointintertia.0.1.0 = phi float [ %41, %bb.i.i ], [ %57, %bb1.i.i ] ; [#uses=2]
+ %pointintertia.0.0.0 = phi float [ %34, %bb.i.i ], [ %52, %bb1.i.i ] ; [#uses=2]
+ %63 = fmul float %pointintertia.0.0.0, %pointintertia.0.0.0 ; [#uses=2]
+ %64 = fmul float %pointintertia.0.1.0, %pointintertia.0.1.0 ; [#uses=2]
+ %65 = fmul float %pointintertia.0.2.0, %pointintertia.0.2.0 ; [#uses=2]
+ %66 = fadd float %63, %64 ; [#uses=1]
+ %67 = fmul float %66, %12 ; [#uses=1]
+ %68 = fadd float %63, %65 ; [#uses=1]
+ %69 = fmul float %68, %12 ; [#uses=1]
+ %70 = fadd float %64, %65 ; [#uses=1]
+ %71 = fmul float %70, %12 ; [#uses=1]
+ %72 = fadd float %22, %71 ; [#uses=2]
+ store float %72, float* %5, align 4
+ %73 = fadd float %21, %69 ; [#uses=2]
+ store float %73, float* %6, align 4
+ %74 = fadd float %20, %67 ; [#uses=2]
+ store float %74, float* %7, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %10 ; [#uses=1]
+ br i1 %exitcond, label %bb2, label %bb
+
+bb2: ; preds = %_ZNK22btGImpactMeshShapePart9getVertexEiR9btVector3.exit, %entry
+ %75 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %76 = getelementptr inbounds i32 (...)** %75, i32 28 ; [#uses=1]
+ %77 = load i32 (...)** %76, align 4 ; [#uses=1]
+ %78 = bitcast i32 (...)* %77 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ tail call void %78(%struct.btGImpactMeshShapePart* %this)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK18btGImpactMeshShape7rayTestERK9btVector3S2_RN16btCollisionWorld17RayResultCallbackE(%struct.btGImpactMeshShape* nocapture %this, %struct.btQuadWord* nocapture %rayFrom, %struct.btQuadWord* nocapture %rayTo, %"struct.btCollisionWorld::RayResultCallback"* nocapture %resultCallback) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK22btGImpactCompoundShape20childrenHasTransformEv(%struct.btGImpactCompoundShape* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %not. = icmp ne i32 %1, 0 ; [#uses=1]
+ %.0 = zext i1 %not. to i8 ; [#uses=1]
+ ret i8 %.0
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK22btGImpactCompoundShape17getNumChildShapesEv(%struct.btGImpactCompoundShape* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionShape* @_ZN22btGImpactCompoundShape13getChildShapeEi(%struct.btGImpactCompoundShape* nocapture %this, i32 %index) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %1 = load %struct.btCollisionShape*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCollisionShape** %1, i32 %index ; [#uses=1]
+ %3 = load %struct.btCollisionShape** %2, align 4 ; [#uses=1]
+ ret %struct.btCollisionShape* %3
+}
+
+; [#uses=1]
+define linkonce_odr %struct.btCollisionShape* @_ZNK22btGImpactCompoundShape13getChildShapeEi(%struct.btGImpactCompoundShape* nocapture %this, i32 %index) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %1 = load %struct.btCollisionShape*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btCollisionShape** %1, i32 %index ; [#uses=1]
+ %3 = load %struct.btCollisionShape** %2, align 4 ; [#uses=1]
+ ret %struct.btCollisionShape* %3
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactCompoundShape17getChildTransformEi(%struct.btTransform* noalias nocapture sret %agg.result, %struct.btGImpactCompoundShape* nocapture %this, i32 %index) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %1 = load %struct.btTransform** %0, align 4 ; [#uses=16]
+ %2 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btTransform* %agg.result, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactCompoundShape12getChildAabbEiRK11btTransformR9btVector3S4_(%struct.btGImpactCompoundShape* %this, i32 %child_index, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %1 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds i32 (...)** %2, i32 22 ; [#uses=1]
+ %4 = load i32 (...)** %3, align 4 ; [#uses=1]
+ %5 = bitcast i32 (...)* %4 to i8 (%struct.btGImpactCompoundShape*)* ; [#uses=1]
+ %6 = call zeroext i8 %5(%struct.btGImpactCompoundShape* %this) ; [#uses=1]
+ %toBool = icmp eq i8 %6, 0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %8 = load %struct.btCollisionShape*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btCollisionShape** %8, i32 %child_index ; [#uses=1]
+ %10 = load %struct.btCollisionShape** %9, align 4 ; [#uses=3]
+ %11 = getelementptr inbounds %struct.btCollisionShape* %10, i32 0, i32 0 ; [#uses=1]
+ %12 = load i32 (...)*** %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 2 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=2]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %15 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %16 = load %struct.btTransform** %15, align 4 ; [#uses=12]
+ %17 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=4]
+ %19 = getelementptr inbounds %struct.btTransform* %16, i32 %child_index, i32 1, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ %21 = fmul float %18, %20 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=4]
+ %24 = getelementptr inbounds %struct.btTransform* %16, i32 %child_index, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=3]
+ %26 = fmul float %23, %25 ; [#uses=1]
+ %27 = fadd float %21, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=4]
+ %30 = getelementptr inbounds %struct.btTransform* %16, i32 %child_index, i32 1, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=3]
+ %32 = fmul float %29, %31 ; [#uses=1]
+ %33 = fadd float %27, %32 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fadd float %33, %35 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=4]
+ %39 = fmul float %38, %20 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=4]
+ %42 = fmul float %41, %25 ; [#uses=1]
+ %43 = fadd float %39, %42 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=4]
+ %46 = fmul float %45, %31 ; [#uses=1]
+ %47 = fadd float %43, %46 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fadd float %47, %49 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=4]
+ %53 = fmul float %52, %20 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=4]
+ %56 = fmul float %55, %25 ; [#uses=1]
+ %57 = fadd float %53, %56 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=4]
+ %60 = fmul float %59, %31 ; [#uses=1]
+ %61 = fadd float %57, %60 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btTransform* %t, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ %64 = fadd float %61, %63 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btTransform* %16, i32 %child_index, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=3]
+ %67 = fmul float %66, %18 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btTransform* %16, i32 %child_index, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=3]
+ %70 = fmul float %69, %23 ; [#uses=1]
+ %71 = fadd float %67, %70 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btTransform* %16, i32 %child_index, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=3]
+ %74 = fmul float %73, %29 ; [#uses=1]
+ %75 = fadd float %71, %74 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btTransform* %16, i32 %child_index, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=3]
+ %78 = fmul float %77, %18 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btTransform* %16, i32 %child_index, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=3]
+ %81 = fmul float %80, %23 ; [#uses=1]
+ %82 = fadd float %78, %81 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btTransform* %16, i32 %child_index, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=3]
+ %85 = fmul float %84, %29 ; [#uses=1]
+ %86 = fadd float %82, %85 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btTransform* %16, i32 %child_index, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=3]
+ %89 = fmul float %88, %18 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btTransform* %16, i32 %child_index, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=3]
+ %92 = fmul float %91, %23 ; [#uses=1]
+ %93 = fadd float %89, %92 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btTransform* %16, i32 %child_index, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=3]
+ %96 = fmul float %95, %29 ; [#uses=1]
+ %97 = fadd float %93, %96 ; [#uses=1]
+ %98 = fmul float %66, %38 ; [#uses=1]
+ %99 = fmul float %69, %41 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %73, %45 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fmul float %77, %38 ; [#uses=1]
+ %104 = fmul float %80, %41 ; [#uses=1]
+ %105 = fadd float %103, %104 ; [#uses=1]
+ %106 = fmul float %84, %45 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = fmul float %88, %38 ; [#uses=1]
+ %109 = fmul float %91, %41 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = fmul float %95, %45 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=1]
+ %113 = fmul float %66, %52 ; [#uses=1]
+ %114 = fmul float %69, %55 ; [#uses=1]
+ %115 = fadd float %113, %114 ; [#uses=1]
+ %116 = fmul float %73, %59 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=1]
+ %118 = fmul float %77, %52 ; [#uses=1]
+ %119 = fmul float %80, %55 ; [#uses=1]
+ %120 = fadd float %118, %119 ; [#uses=1]
+ %121 = fmul float %84, %59 ; [#uses=1]
+ %122 = fadd float %120, %121 ; [#uses=1]
+ %123 = fmul float %88, %52 ; [#uses=1]
+ %124 = fmul float %91, %55 ; [#uses=1]
+ %125 = fadd float %123, %124 ; [#uses=1]
+ %126 = fmul float %95, %59 ; [#uses=1]
+ %127 = fadd float %125, %126 ; [#uses=1]
+ %128 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %127, float* %128, align 8
+ %129 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %122, float* %129, align 4
+ %130 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %117, float* %130, align 8
+ %131 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %131, align 4
+ %132 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %112, float* %132, align 8
+ %133 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %107, float* %133, align 4
+ %134 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %102, float* %134, align 8
+ %135 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %135, align 4
+ %136 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %97, float* %136, align 8
+ %137 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %86, float* %137, align 4
+ %138 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %75, float* %138, align 8
+ %139 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %139, align 4
+ %140 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %64, float* %140, align 8
+ %141 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %50, float* %141, align 4
+ %142 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %36, float* %142, align 8
+ %143 = getelementptr inbounds %struct.btTransform* %0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %143, align 4
+ %144 = bitcast i32 (...)* %14 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %144(%struct.btCollisionShape* %10, %struct.btTransform* %0, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ ret void
+
+bb1: ; preds = %entry
+ %145 = bitcast i32 (...)* %14 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %145(%struct.btCollisionShape* %10, %struct.btTransform* %t, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btGImpactCompoundShape17setChildTransformEiRK11btTransform(%struct.btGImpactCompoundShape* %this, i32 %index, %struct.btTransform* nocapture %transform) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %1 = load %struct.btTransform** %0, align 4 ; [#uses=16]
+ %2 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btTransform* %1, i32 %index, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %transform, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = load i32 (...)*** %50, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds i32 (...)** %51, i32 17 ; [#uses=1]
+ %53 = load i32 (...)** %52, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0 ; [#uses=1]
+ %55 = bitcast i32 (...)* %53 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ tail call void %55(%struct.btGImpactShapeInterface* %54)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK22btGImpactMeshShapePart23TrimeshPrimitiveManager17get_primitive_boxEiR6btAABB(%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 %prim_index, %struct.GIM_AABB* nocapture %primbox) align 2 {
+entry:
+ %triangle = alloca %struct.btPrimitiveTriangle, align 8 ; [#uses=13]
+ %0 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 2 ; [#uses=2]
+ store float 0x3F847AE140000000, float* %0, align 8
+ %1 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds i32 (...)** %2, i32 5 ; [#uses=1]
+ %4 = load i32 (...)** %3, align 4 ; [#uses=1]
+ %5 = bitcast i32 (...)* %4 to void (%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"*, i32, %struct.btPrimitiveTriangle*)* ; [#uses=1]
+ call void %5(%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 %prim_index, %struct.btPrimitiveTriangle* %triangle)
+ %6 = load float* %0, align 8 ; [#uses=6]
+ %7 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 1 ; [#uses=6]
+ %8 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 2 ; [#uses=6]
+ %9 = getelementptr inbounds %struct.GIM_AABB* %primbox, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=7]
+ %11 = load float* %10, align 8 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=7]
+ %13 = load float* %12, align 8 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=7]
+ %15 = load float* %14, align 8 ; [#uses=2]
+ %16 = fcmp ogt float %13, %15 ; [#uses=2]
+ %V3.pn.i = select i1 %16, %struct.btQuadWord* %8, %struct.btQuadWord* %7 ; [#uses=1]
+ %iftmp.380.0.in.i = getelementptr inbounds %struct.btQuadWord* %V3.pn.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %iftmp.380.0.i = load float* %iftmp.380.0.in.i, align 8 ; [#uses=1]
+ %.not.i = fcmp ule float %11, %iftmp.380.0.i ; [#uses=2]
+ %brmerge.i = or i1 %.not.i, %16 ; [#uses=1]
+ %.mux.i = select i1 %.not.i, float* %10, float* %14 ; [#uses=1]
+ %iftmp.379.0.in.i = select i1 %brmerge.i, float* %.mux.i, float* %12 ; [#uses=1]
+ %iftmp.379.0.i = load float* %iftmp.379.0.in.i, align 8 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ %23 = fcmp ogt float %20, %22 ; [#uses=2]
+ %V3.pn61.i = select i1 %23, %struct.btQuadWord* %8, %struct.btQuadWord* %7 ; [#uses=1]
+ %iftmp.383.0.in.i = getelementptr inbounds %struct.btQuadWord* %V3.pn61.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %iftmp.383.0.i = load float* %iftmp.383.0.in.i, align 4 ; [#uses=1]
+ %.not66.i = fcmp ule float %18, %iftmp.383.0.i ; [#uses=2]
+ %brmerge67.i = or i1 %.not66.i, %23 ; [#uses=1]
+ %.mux68.i = select i1 %.not66.i, float* %10, float* %14 ; [#uses=1]
+ %.pn60.pn.i = select i1 %brmerge67.i, float* %.mux68.i, float* %12 ; [#uses=1]
+ %iftmp.382.0.in.i = getelementptr inbounds float* %.pn60.pn.i, i32 1 ; [#uses=1]
+ %iftmp.382.0.i = load float* %iftmp.382.0.in.i, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.GIM_AABB* %primbox, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 8 ; [#uses=2]
+ %27 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 8 ; [#uses=2]
+ %29 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 8 ; [#uses=2]
+ %31 = fcmp ogt float %28, %30 ; [#uses=2]
+ %V3.pn62.i = select i1 %31, %struct.btQuadWord* %8, %struct.btQuadWord* %7 ; [#uses=1]
+ %iftmp.386.0.in.i = getelementptr inbounds %struct.btQuadWord* %V3.pn62.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %iftmp.386.0.i = load float* %iftmp.386.0.in.i, align 8 ; [#uses=1]
+ %.not69.i = fcmp ule float %26, %iftmp.386.0.i ; [#uses=2]
+ %brmerge70.i = or i1 %.not69.i, %31 ; [#uses=1]
+ %.mux71.i = select i1 %.not69.i, float* %10, float* %14 ; [#uses=1]
+ %.pn59.pn.i = select i1 %brmerge70.i, float* %.mux71.i, float* %12 ; [#uses=1]
+ %iftmp.385.0.in.i = getelementptr inbounds float* %.pn59.pn.i, i32 2 ; [#uses=1]
+ %iftmp.385.0.i = load float* %iftmp.385.0.in.i, align 8 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.GIM_AABB* %primbox, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.GIM_AABB* %primbox, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %34 = fcmp olt float %13, %15 ; [#uses=2]
+ %V3.pn63.i = select i1 %34, %struct.btQuadWord* %8, %struct.btQuadWord* %7 ; [#uses=1]
+ %iftmp.389.0.in.i = getelementptr inbounds %struct.btQuadWord* %V3.pn63.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %iftmp.389.0.i = load float* %iftmp.389.0.in.i, align 8 ; [#uses=1]
+ %.not72.i = fcmp uge float %11, %iftmp.389.0.i ; [#uses=2]
+ %brmerge73.i = or i1 %.not72.i, %34 ; [#uses=1]
+ %.mux74.i = select i1 %.not72.i, float* %10, float* %14 ; [#uses=1]
+ %iftmp.388.0.in.i = select i1 %brmerge73.i, float* %.mux74.i, float* %12 ; [#uses=1]
+ %iftmp.388.0.i = load float* %iftmp.388.0.in.i, align 8 ; [#uses=1]
+ %35 = fcmp olt float %20, %22 ; [#uses=2]
+ %V3.pn64.i = select i1 %35, %struct.btQuadWord* %8, %struct.btQuadWord* %7 ; [#uses=1]
+ %iftmp.392.0.in.i = getelementptr inbounds %struct.btQuadWord* %V3.pn64.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %iftmp.392.0.i = load float* %iftmp.392.0.in.i, align 4 ; [#uses=1]
+ %.not75.i = fcmp uge float %18, %iftmp.392.0.i ; [#uses=2]
+ %brmerge76.i = or i1 %.not75.i, %35 ; [#uses=1]
+ %.mux77.i = select i1 %.not75.i, float* %10, float* %14 ; [#uses=1]
+ %.pn58.pn.i = select i1 %brmerge76.i, float* %.mux77.i, float* %12 ; [#uses=1]
+ %iftmp.391.0.in.i = getelementptr inbounds float* %.pn58.pn.i, i32 1 ; [#uses=1]
+ %iftmp.391.0.i = load float* %iftmp.391.0.in.i, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.GIM_AABB* %primbox, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %37 = fcmp olt float %28, %30 ; [#uses=2]
+ %V3.pn65.i = select i1 %37, %struct.btQuadWord* %8, %struct.btQuadWord* %7 ; [#uses=1]
+ %iftmp.395.0.in.i = getelementptr inbounds %struct.btQuadWord* %V3.pn65.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %iftmp.395.0.i = load float* %iftmp.395.0.in.i, align 8 ; [#uses=1]
+ %.not78.i = fcmp uge float %26, %iftmp.395.0.i ; [#uses=2]
+ %brmerge79.i = or i1 %.not78.i, %37 ; [#uses=1]
+ %.mux80.i = select i1 %.not78.i, float* %10, float* %14 ; [#uses=1]
+ %.pn57.pn.i = select i1 %brmerge79.i, float* %.mux80.i, float* %12 ; [#uses=1]
+ %iftmp.394.0.in.i = getelementptr inbounds float* %.pn57.pn.i, i32 2 ; [#uses=1]
+ %iftmp.394.0.i = load float* %iftmp.394.0.in.i, align 8 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.GIM_AABB* %primbox, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %39 = fsub float %iftmp.379.0.i, %6 ; [#uses=1]
+ store float %39, float* %9, align 4
+ %40 = fsub float %iftmp.382.0.i, %6 ; [#uses=1]
+ store float %40, float* %24, align 4
+ %41 = fsub float %iftmp.385.0.i, %6 ; [#uses=1]
+ store float %41, float* %32, align 4
+ %42 = fadd float %iftmp.388.0.i, %6 ; [#uses=1]
+ store float %42, float* %33, align 4
+ %43 = fadd float %iftmp.391.0.i, %6 ; [#uses=1]
+ store float %43, float* %36, align 4
+ %44 = fadd float %iftmp.394.0.i, %6 ; [#uses=1]
+ store float %44, float* %38, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btGImpactMeshShape10postUpdateEv(%struct.btGImpactMeshShape* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=3]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb2, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %tmp3 = add i32 %1, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb ] ; [#uses=2]
+ %tmp4 = sub i32 %tmp3, %indvar ; [#uses=1]
+ %4 = load %struct.btGImpactMeshShapePart*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btGImpactMeshShapePart** %4, i32 %tmp4 ; [#uses=1]
+ %5 = load %struct.btGImpactMeshShapePart** %scevgep, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btGImpactMeshShapePart* %5, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 17 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btGImpactMeshShapePart* %5, i32 0, i32 0 ; [#uses=1]
+ %11 = bitcast i32 (...)* %9 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ tail call void %11(%struct.btGImpactShapeInterface* %10)
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %1 ; [#uses=1]
+ br i1 %exitcond, label %bb2, label %bb
+
+bb2: ; preds = %bb, %entry
+ %12 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i8 1, i8* %12, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btGImpactMeshShape13calcLocalAABBEv(%struct.btGImpactMeshShape* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float 0x47EFFFFFE0000000, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float 0x47EFFFFFE0000000, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float 0x47EFFFFFE0000000, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=3]
+ store float 0xC7EFFFFFE0000000, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=3]
+ store float 0xC7EFFFFFE0000000, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=3]
+ store float 0xC7EFFFFFE0000000, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=3]
+ %8 = icmp eq i32 %7, 0 ; [#uses=1]
+ br i1 %8, label %return, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 3 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 1 ; [#uses=6]
+ %tmp3 = add i32 %7, -1 ; [#uses=1]
+ %.pre = load %struct.btGImpactMeshShapePart*** %9, align 4 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %_ZN23btGImpactShapeInterface11updateBoundEv.exit, %bb.nph
+ %11 = phi float [ 0xC7EFFFFFE0000000, %bb.nph ], [ %iftmp.245.0.i, %_ZN23btGImpactShapeInterface11updateBoundEv.exit ] ; [#uses=1]
+ %12 = phi float [ 0xC7EFFFFFE0000000, %bb.nph ], [ %iftmp.244.0.i, %_ZN23btGImpactShapeInterface11updateBoundEv.exit ] ; [#uses=1]
+ %13 = phi float [ 0xC7EFFFFFE0000000, %bb.nph ], [ %iftmp.243.0.i, %_ZN23btGImpactShapeInterface11updateBoundEv.exit ] ; [#uses=1]
+ %14 = phi float [ 0x47EFFFFFE0000000, %bb.nph ], [ %iftmp.242.0.i, %_ZN23btGImpactShapeInterface11updateBoundEv.exit ] ; [#uses=1]
+ %15 = phi float [ 0x47EFFFFFE0000000, %bb.nph ], [ %iftmp.241.0.i, %_ZN23btGImpactShapeInterface11updateBoundEv.exit ] ; [#uses=1]
+ %16 = phi float [ 0x47EFFFFFE0000000, %bb.nph ], [ %iftmp.240.0.i, %_ZN23btGImpactShapeInterface11updateBoundEv.exit ] ; [#uses=1]
+ %17 = phi %struct.btGImpactMeshShapePart** [ %.pre, %bb.nph ], [ %33, %_ZN23btGImpactShapeInterface11updateBoundEv.exit ] ; [#uses=1]
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %_ZN23btGImpactShapeInterface11updateBoundEv.exit ] ; [#uses=2]
+ %tmp4 = sub i32 %tmp3, %indvar ; [#uses=2]
+ %scevgep5 = getelementptr %struct.btGImpactMeshShapePart** %17, i32 %tmp4 ; [#uses=1]
+ %18 = load %struct.btGImpactMeshShapePart** %scevgep5, align 4 ; [#uses=3]
+ %19 = getelementptr inbounds %struct.btGImpactMeshShapePart* %18, i32 0, i32 0, i32 2 ; [#uses=2]
+ %20 = load i8* %19, align 4 ; [#uses=1]
+ %toBoolnot.i = icmp eq i8 %20, 0 ; [#uses=1]
+ br i1 %toBoolnot.i, label %_ZN23btGImpactShapeInterface11updateBoundEv.exit, label %bb.i
+
+bb.i: ; preds = %bb
+ %21 = getelementptr inbounds %struct.btGImpactMeshShapePart* %18, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btGImpactMeshShapePart* %18, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = load i32 (...)*** %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds i32 (...)** %23, i32 16 ; [#uses=1]
+ %25 = load i32 (...)** %24, align 4 ; [#uses=1]
+ %26 = bitcast i32 (...)* %25 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ tail call void %26(%struct.btGImpactShapeInterface* %21)
+ store i8 0, i8* %19, align 4
+ %.pre6 = load float* %0, align 4 ; [#uses=1]
+ %.pre7 = load float* %1, align 4 ; [#uses=1]
+ %.pre8 = load float* %2, align 4 ; [#uses=1]
+ %.pre9 = load float* %3, align 4 ; [#uses=1]
+ %.pre10 = load float* %4, align 4 ; [#uses=1]
+ %.pre11 = load float* %5, align 4 ; [#uses=1]
+ br label %_ZN23btGImpactShapeInterface11updateBoundEv.exit
+
+_ZN23btGImpactShapeInterface11updateBoundEv.exit: ; preds = %bb.i, %bb
+ %27 = phi float [ %11, %bb ], [ %.pre11, %bb.i ] ; [#uses=1]
+ %28 = phi float [ %12, %bb ], [ %.pre10, %bb.i ] ; [#uses=1]
+ %29 = phi float [ %13, %bb ], [ %.pre9, %bb.i ] ; [#uses=1]
+ %30 = phi float [ %14, %bb ], [ %.pre8, %bb.i ] ; [#uses=1]
+ %31 = phi float [ %15, %bb ], [ %.pre7, %bb.i ] ; [#uses=1]
+ %32 = phi float [ %16, %bb ], [ %.pre6, %bb.i ] ; [#uses=1]
+ %33 = load %struct.btGImpactMeshShapePart*** %9, align 4 ; [#uses=2]
+ %scevgep = getelementptr %struct.btGImpactMeshShapePart** %33, i32 %tmp4 ; [#uses=1]
+ %34 = load %struct.btGImpactMeshShapePart** %scevgep, align 4 ; [#uses=7]
+ %35 = getelementptr inbounds %struct.btGImpactMeshShapePart* %34, i32 0, i32 0, i32 1 ; [#uses=6]
+ %36 = getelementptr inbounds %struct.btGImpactMeshShapePart* %34, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fcmp ogt float %32, %37 ; [#uses=1]
+ %box.pn25.i = select i1 %38, %struct.GIM_AABB* %35, %struct.GIM_AABB* %10 ; [#uses=1]
+ %iftmp.240.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn25.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %iftmp.240.0.i = load float* %iftmp.240.0.in.i, align 4 ; [#uses=2]
+ store float %iftmp.240.0.i, float* %0, align 4
+ %39 = getelementptr inbounds %struct.btGImpactMeshShapePart* %34, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fcmp ogt float %31, %40 ; [#uses=1]
+ %box.pn24.i = select i1 %41, %struct.GIM_AABB* %35, %struct.GIM_AABB* %10 ; [#uses=1]
+ %iftmp.241.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn24.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %iftmp.241.0.i = load float* %iftmp.241.0.in.i, align 4 ; [#uses=2]
+ store float %iftmp.241.0.i, float* %1, align 4
+ %42 = getelementptr inbounds %struct.btGImpactMeshShapePart* %34, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fcmp ogt float %30, %43 ; [#uses=1]
+ %box.pn23.i = select i1 %44, %struct.GIM_AABB* %35, %struct.GIM_AABB* %10 ; [#uses=1]
+ %iftmp.242.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn23.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %iftmp.242.0.i = load float* %iftmp.242.0.in.i, align 4 ; [#uses=2]
+ store float %iftmp.242.0.i, float* %2, align 4
+ %45 = getelementptr inbounds %struct.btGImpactMeshShapePart* %34, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fcmp olt float %29, %46 ; [#uses=1]
+ %box.pn22.i = select i1 %47, %struct.GIM_AABB* %35, %struct.GIM_AABB* %10 ; [#uses=1]
+ %iftmp.243.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn22.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %iftmp.243.0.i = load float* %iftmp.243.0.in.i, align 4 ; [#uses=2]
+ store float %iftmp.243.0.i, float* %3, align 4
+ %48 = getelementptr inbounds %struct.btGImpactMeshShapePart* %34, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fcmp olt float %28, %49 ; [#uses=1]
+ %box.pn21.i = select i1 %50, %struct.GIM_AABB* %35, %struct.GIM_AABB* %10 ; [#uses=1]
+ %iftmp.244.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn21.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %iftmp.244.0.i = load float* %iftmp.244.0.in.i, align 4 ; [#uses=2]
+ store float %iftmp.244.0.i, float* %4, align 4
+ %51 = getelementptr inbounds %struct.btGImpactMeshShapePart* %34, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = fcmp olt float %27, %52 ; [#uses=1]
+ %box.pn.i = select i1 %53, %struct.GIM_AABB* %35, %struct.GIM_AABB* %10 ; [#uses=1]
+ %iftmp.245.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %iftmp.245.0.i = load float* %iftmp.245.0.in.i, align 4 ; [#uses=2]
+ store float %iftmp.245.0.i, float* %5, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %7 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %_ZN23btGImpactShapeInterface11updateBoundEv.exit, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btGImpactMeshShape9setMarginEf(%struct.btGImpactMeshShape* nocapture %this, float %margin) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %margin, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %2 = load i32* %1, align 4 ; [#uses=3]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb2, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %tmp3 = add i32 %2, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb ] ; [#uses=2]
+ %tmp4 = sub i32 %tmp3, %indvar ; [#uses=1]
+ %5 = load %struct.btGImpactMeshShapePart*** %4, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btGImpactMeshShapePart** %5, i32 %tmp4 ; [#uses=1]
+ %6 = load %struct.btGImpactMeshShapePart** %scevgep, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btGImpactMeshShapePart* %6, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 10 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = bitcast i32 (...)* %10 to void (%struct.btGImpactMeshShapePart*, float)* ; [#uses=1]
+ tail call void %11(%struct.btGImpactMeshShapePart* %6, float %margin)
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %2 ; [#uses=1]
+ br i1 %exitcond, label %bb2, label %bb
+
+bb2: ; preds = %bb, %entry
+ %12 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i8 1, i8* %12, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btGImpactMeshShape15setLocalScalingERK9btVector3(%struct.btGImpactMeshShape* nocapture %this, %struct.btQuadWord* %scaling) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=3]
+ %14 = icmp eq i32 %13, 0 ; [#uses=1]
+ br i1 %14, label %bb2, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %15 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %tmp3 = add i32 %13, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb ] ; [#uses=2]
+ %tmp4 = sub i32 %tmp3, %indvar ; [#uses=1]
+ %16 = load %struct.btGImpactMeshShapePart*** %15, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btGImpactMeshShapePart** %16, i32 %tmp4 ; [#uses=1]
+ %17 = load %struct.btGImpactMeshShapePart** %scevgep, align 4 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btGImpactMeshShapePart* %17, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %19 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i32 (...)** %19, i32 6 ; [#uses=1]
+ %21 = load i32 (...)** %20, align 4 ; [#uses=1]
+ %22 = bitcast i32 (...)* %21 to void (%struct.btGImpactMeshShapePart*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %22(%struct.btGImpactMeshShapePart* %17, %struct.btQuadWord* %scaling)
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %13 ; [#uses=1]
+ br i1 %exitcond, label %bb2, label %bb
+
+bb2: ; preds = %bb, %entry
+ %23 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store i8 1, i8* %23, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK18btGImpactMeshShape19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_(%struct.btGImpactMeshShape* nocapture %this, %struct.btActionInterface* %callback, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=3]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %return, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %tmp3 = add i32 %1, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb ] ; [#uses=2]
+ %tmp4 = sub i32 %tmp3, %indvar ; [#uses=1]
+ %4 = load %struct.btGImpactMeshShapePart*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btGImpactMeshShapePart** %4, i32 %tmp4 ; [#uses=1]
+ %5 = load %struct.btGImpactMeshShapePart** %scevgep, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btGImpactMeshShapePart* %5, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 15 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to void (%struct.btGImpactMeshShapePart*, %struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %10(%struct.btGImpactMeshShapePart* %5, %struct.btActionInterface* %callback, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %1 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK18btGImpactMeshShape21calculateLocalInertiaEfR9btVector3(%struct.btGImpactMeshShape* nocapture %this, float %mass, %struct.btQuadWord* nocapture %inertia) align 2 {
+entry:
+ %partinertia = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=4]
+ %6 = sitofp i32 %5 to float ; [#uses=1]
+ %7 = fdiv float %mass, %6 ; [#uses=1]
+ %8 = icmp eq i32 %5, 0 ; [#uses=1]
+ br i1 %8, label %return, label %bb.nph
+
+bb.nph: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %partinertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %partinertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %partinertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ %tmp3 = add i32 %5, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb ] ; [#uses=2]
+ %tmp4 = sub i32 %tmp3, %indvar ; [#uses=1]
+ %13 = load %struct.btGImpactMeshShapePart*** %9, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btGImpactMeshShapePart** %13, i32 %tmp4 ; [#uses=1]
+ %14 = load %struct.btGImpactMeshShapePart** %scevgep, align 4 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btGImpactMeshShapePart* %14, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds i32 (...)** %16, i32 8 ; [#uses=1]
+ %18 = load i32 (...)** %17, align 4 ; [#uses=1]
+ %19 = bitcast i32 (...)* %18 to void (%struct.btGImpactMeshShapePart*, float, %struct.btQuadWord*)* ; [#uses=1]
+ call void %19(%struct.btGImpactMeshShapePart* %14, float %7, %struct.btQuadWord* %partinertia)
+ %20 = load float* %0, align 4 ; [#uses=1]
+ %21 = load float* %10, align 8 ; [#uses=1]
+ %22 = fadd float %20, %21 ; [#uses=1]
+ store float %22, float* %0, align 4
+ %23 = load float* %1, align 4 ; [#uses=1]
+ %24 = load float* %11, align 4 ; [#uses=1]
+ %25 = fadd float %23, %24 ; [#uses=1]
+ store float %25, float* %1, align 4
+ %26 = load float* %2, align 4 ; [#uses=1]
+ %27 = load float* %12, align 8 ; [#uses=1]
+ %28 = fadd float %26, %27 ; [#uses=1]
+ store float %28, float* %2, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %5 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define i8* @_ZNK18btGImpactMeshShape9serializeEPvP12btSerializer(%struct.btGImpactMeshShape* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK16btCollisionShape9serializeEPvP12btSerializer(%struct.btCollisionShape* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load %struct.btStridingMeshInterface** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btStridingMeshInterface* %3, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 14 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i8* %dataBuffer, i32 12 ; [#uses=1]
+ %9 = bitcast i32 (...)* %7 to i8* (%struct.btStridingMeshInterface*, i8*, %struct.btActionInterface*)* ; [#uses=1]
+ %10 = tail call i8* %9(%struct.btStridingMeshInterface* %3, i8* %8, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %11 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i8* %dataBuffer, i32 56 ; [#uses=1]
+ %14 = bitcast i8* %13 to float* ; [#uses=1]
+ store float %12, float* %14, align 4
+ %15 = getelementptr inbounds i8* %dataBuffer, i32 40 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i = bitcast i8* %15 to float* ; [#uses=1]
+ %16 = load float* %scevgep.i, align 4 ; [#uses=1]
+ store float %16, float* %scevgep4.i, align 4
+ %scevgep.1.i = getelementptr %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i = getelementptr i8* %dataBuffer, i32 44 ; [#uses=1]
+ %17 = bitcast i8* %scevgep4.1.i to float* ; [#uses=1]
+ %18 = load float* %scevgep.1.i, align 4 ; [#uses=1]
+ store float %18, float* %17, align 4
+ %scevgep.2.i = getelementptr %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i = getelementptr i8* %dataBuffer, i32 48 ; [#uses=1]
+ %19 = bitcast i8* %scevgep4.2.i to float* ; [#uses=1]
+ %20 = load float* %scevgep.2.i, align 4 ; [#uses=1]
+ store float %20, float* %19, align 4
+ %scevgep.3.i = getelementptr %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i = getelementptr i8* %dataBuffer, i32 52 ; [#uses=1]
+ %21 = bitcast i8* %scevgep4.3.i to float* ; [#uses=1]
+ %22 = load float* %scevgep.3.i, align 4 ; [#uses=1]
+ store float %22, float* %21, align 4
+ %23 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %24 = load i32 (...)*** %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds i32 (...)** %24, i32 19 ; [#uses=1]
+ %26 = load i32 (...)** %25, align 4 ; [#uses=1]
+ %27 = bitcast i32 (...)* %26 to i32 (%struct.btGImpactMeshShape*)* ; [#uses=1]
+ %28 = tail call i32 %27(%struct.btGImpactMeshShape* %this) ; [#uses=1]
+ %29 = getelementptr inbounds i8* %dataBuffer, i32 60 ; [#uses=1]
+ %30 = bitcast i8* %29 to i32* ; [#uses=1]
+ store i32 %28, i32* %30, align 4
+ ret i8* getelementptr inbounds ([23 x i8]* @.str3156, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btGImpactCompoundShape24CompoundPrimitiveManagerD1Ev(%"struct.btGImpactCompoundShape::CompoundPrimitiveManager"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btGImpactCompoundShape::CompoundPrimitiveManager"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTVN22btGImpactCompoundShape24CompoundPrimitiveManagerE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btGImpactCompoundShape24CompoundPrimitiveManagerD0Ev(%"struct.btGImpactCompoundShape::CompoundPrimitiveManager"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btGImpactCompoundShape::CompoundPrimitiveManager"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTVN22btGImpactCompoundShape24CompoundPrimitiveManagerE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btGImpactCompoundShape::CompoundPrimitiveManager"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btGImpactMeshShapePart23TrimeshPrimitiveManagerD1Ev(%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTVN22btGImpactMeshShapePart23TrimeshPrimitiveManagerE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btGImpactMeshShapePart23TrimeshPrimitiveManagerD0Ev(%"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTVN22btGImpactMeshShapePart23TrimeshPrimitiveManagerE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btGImpactMeshShapePart::TrimeshPrimitiveManager"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btGImpactShapeInterfaceD1Ev(%struct.btGImpactShapeInterface* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV23btGImpactShapeInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %2 = load %struct.BT_QUANTIZED_BVH_NODE** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i.i.i.i
+
+bb.i.i.i.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i.i.i, label %bb2.i.i.i.i.i.i, label %bb1.i.i.i.i.i.i
+
+bb1.i.i.i.i.i.i: ; preds = %bb.i.i.i.i.i.i
+ %6 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i.i.i.i unwind label %lpad
+
+bb2.i.i.i.i.i.i: ; preds = %bb1.i.i.i.i.i.i, %bb.i.i.i.i.i.i
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %1, align 4
+ %8 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %10)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %11 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %11)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btGImpactShapeInterfaceD0Ev(%struct.btGImpactShapeInterface* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV23btGImpactShapeInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %2 = load %struct.BT_QUANTIZED_BVH_NODE** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i.i.i.i
+
+bb.i.i.i.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i.i.i, label %bb2.i.i.i.i.i.i, label %bb1.i.i.i.i.i.i
+
+bb1.i.i.i.i.i.i: ; preds = %bb.i.i.i.i.i.i
+ %6 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i.i.i.i unwind label %lpad
+
+bb2.i.i.i.i.i.i: ; preds = %bb1.i.i.i.i.i.i, %bb.i.i.i.i.i.i
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %1, align 4
+ %8 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %10)
+ %11 = bitcast %struct.btGImpactShapeInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %11) nounwind
+ ret void
+
+lpad: ; preds = %bb1.i.i.i.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %12 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %12)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btGImpactShapeInterface13calcLocalAABBEv(%struct.btGImpactShapeInterface* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 27 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ tail call void %4(%struct.btGImpactShapeInterface* %this)
+ %5 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = icmp eq i32 %6, 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4 ; [#uses=2]
+ br i1 %7, label %bb, label %bb1
+
+bb: ; preds = %entry
+ tail call void @_ZN21btGImpactQuantizedBvh8buildSetEv(%struct.btGImpactBoxSet* %8)
+ br label %bb2
+
+bb1: ; preds = %entry
+ tail call void @_ZN21btGImpactQuantizedBvh5refitEv(%struct.btGImpactBoxSet* %8)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %9 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 28 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = bitcast i32 (...)* %11 to void (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ tail call void %12(%struct.btGImpactShapeInterface* %this)
+ %13 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %14 = load %struct.BT_QUANTIZED_BVH_NODE** %13, align 4 ; [#uses=6]
+ %15 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %14, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %14, i32 0, i32 0, i32 2 ; [#uses=1]
+ %17 = load i16* %16, align 2 ; [#uses=1]
+ %18 = uitofp i16 %17 to float ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=2]
+ %21 = fdiv float %18, %20 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %14, i32 0, i32 0, i32 1 ; [#uses=1]
+ %23 = load i16* %22, align 2 ; [#uses=1]
+ %24 = uitofp i16 %23 to float ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=2]
+ %27 = fdiv float %24, %26 ; [#uses=1]
+ %28 = load i16* %15, align 2 ; [#uses=1]
+ %29 = uitofp i16 %28 to float ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=2]
+ %32 = fdiv float %29, %31 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ %35 = fadd float %32, %34 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=2]
+ %38 = fadd float %27, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 4, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=2]
+ %41 = fadd float %21, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %14, i32 0, i32 1, i32 0 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %14, i32 0, i32 1, i32 2 ; [#uses=1]
+ %44 = load i16* %43, align 2 ; [#uses=1]
+ %45 = uitofp i16 %44 to float ; [#uses=1]
+ %46 = fdiv float %45, %20 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.BT_QUANTIZED_BVH_NODE* %14, i32 0, i32 1, i32 1 ; [#uses=1]
+ %48 = load i16* %47, align 2 ; [#uses=1]
+ %49 = uitofp i16 %48 to float ; [#uses=1]
+ %50 = fdiv float %49, %26 ; [#uses=1]
+ %51 = load i16* %42, align 2 ; [#uses=1]
+ %52 = uitofp i16 %51 to float ; [#uses=1]
+ %53 = fdiv float %52, %31 ; [#uses=1]
+ %54 = fadd float %53, %34 ; [#uses=1]
+ %55 = fadd float %50, %37 ; [#uses=1]
+ %56 = fadd float %46, %40 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %35, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %38, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %41, float* %59, align 4
+ %60 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %54, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %55, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %56, float* %63, align 4
+ %64 = getelementptr inbounds %struct.btGImpactShapeInterface* %this, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %64, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btGImpactCompoundShapeD0Ev(%struct.btGImpactCompoundShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV22btGImpactCompoundShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %2 = load %struct.btCollisionShape*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btCollisionShape** %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btCollisionShape** %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad23
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionShape** null, %struct.btCollisionShape*** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btCollisionShape** null, %struct.btCollisionShape*** %1, align 4
+ %8 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %11 = load %struct.btTransform** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btTransform* %11, null ; [#uses=1]
+ br i1 %12, label %bb8, label %bb.i.i.i41
+
+bb.i.i.i41: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i40 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i40, label %bb2.i.i.i43, label %bb1.i.i.i42
+
+bb1.i.i.i42: ; preds = %bb.i.i.i41
+ %15 = bitcast %struct.btTransform* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i43 unwind label %lpad
+
+bb2.i.i.i43: ; preds = %bb1.i.i.i42, %bb.i.i.i41
+ store %struct.btTransform* null, %struct.btTransform** %10, align 4
+ br label %bb8
+
+bb8: ; preds = %bb2.i.i.i43, %bb3
+ %16 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btTransform* null, %struct.btTransform** %10, align 4
+ %17 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTVN22btGImpactCompoundShape24CompoundPrimitiveManagerE, i32 0, i32 2), i32 (...)*** %19, align 4
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV23btGImpactShapeInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %20 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %21 = load %struct.BT_QUANTIZED_BVH_NODE** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %21, null ; [#uses=1]
+ br i1 %22, label %_ZN23btGImpactShapeInterfaceD2Ev.exit59, label %bb.i.i.i.i.i.i.i48
+
+bb.i.i.i.i.i.i.i48: ; preds = %bb8
+ %23 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i.i.i.i.i.i47 = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i.i.i.i47, label %bb2.i.i.i.i.i.i.i50, label %bb1.i.i.i.i.i.i.i49
+
+bb1.i.i.i.i.i.i.i49: ; preds = %bb.i.i.i.i.i.i.i48
+ %25 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %21 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %25)
+ to label %bb2.i.i.i.i.i.i.i50 unwind label %lpad.i55
+
+bb2.i.i.i.i.i.i.i50: ; preds = %bb1.i.i.i.i.i.i.i49, %bb.i.i.i.i.i.i.i48
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %20, align 4
+ br label %_ZN23btGImpactShapeInterfaceD2Ev.exit59
+
+invcont1.i51: ; preds = %lpad.i55
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i53)
+ unreachable
+
+lpad.i55: ; preds = %bb1.i.i.i.i.i.i.i49
+ %eh_ptr.i53 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i54 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i53, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %26 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %26)
+ to label %invcont1.i51 unwind label %lpad9.i58
+
+lpad9.i58: ; preds = %lpad.i55
+ %eh_ptr10.i56 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i57 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i56, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN23btGImpactShapeInterfaceD2Ev.exit59: ; preds = %bb2.i.i.i.i.i.i.i50, %bb8
+ %27 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %27, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %20, align 4
+ %28 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %30)
+ %31 = bitcast %struct.btGImpactCompoundShape* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %31) nounwind
+ ret void
+
+invcont16: ; preds = %bb3.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+lpad: ; preds = %bb1.i.i.i42
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select22 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad35
+
+lpad23: ; preds = %bb1.i.i.i
+ %eh_ptr24 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select26 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr24, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %32 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %33 = load %struct.btTransform** %32, align 4 ; [#uses=2]
+ %34 = icmp eq %struct.btTransform* %33, null ; [#uses=1]
+ br i1 %34, label %_ZN20btAlignedObjectArrayI11btTransformED1Ev.exit65, label %bb.i.i.i61
+
+bb.i.i.i61: ; preds = %lpad23
+ %35 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %36 = load i8* %35, align 4 ; [#uses=1]
+ %toBool.i.i.i60 = icmp eq i8 %36, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i60, label %bb2.i.i.i63, label %bb1.i.i.i62
+
+bb1.i.i.i62: ; preds = %bb.i.i.i61
+ %37 = bitcast %struct.btTransform* %33 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %37)
+ to label %bb2.i.i.i63 unwind label %lpad27
+
+bb2.i.i.i63: ; preds = %bb1.i.i.i62, %bb.i.i.i61
+ store %struct.btTransform* null, %struct.btTransform** %32, align 4
+ br label %_ZN20btAlignedObjectArrayI11btTransformED1Ev.exit65
+
+_ZN20btAlignedObjectArrayI11btTransformED1Ev.exit65: ; preds = %bb2.i.i.i63, %lpad23
+ %38 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %38, align 4
+ store %struct.btTransform* null, %struct.btTransform** %32, align 4
+ %39 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %39, align 4
+ %40 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %40, align 4
+ br label %ppad35
+
+lpad27: ; preds = %bb1.i.i.i62
+ %eh_ptr28 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select30 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr28, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad31: ; preds = %bb3.i, %invcont1.i
+ %eh_ptr32 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select34 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr32, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad35: ; preds = %_ZN20btAlignedObjectArrayI11btTransformED1Ev.exit65, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr24, %_ZN20btAlignedObjectArrayI11btTransformED1Ev.exit65 ] ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTVN22btGImpactCompoundShape24CompoundPrimitiveManagerE, i32 0, i32 2), i32 (...)*** %41, align 4
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV23btGImpactShapeInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %42 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %43 = load %struct.BT_QUANTIZED_BVH_NODE** %42, align 4 ; [#uses=2]
+ %44 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %43, null ; [#uses=1]
+ br i1 %44, label %bb3.i, label %bb.i.i.i.i.i.i.i
+
+bb.i.i.i.i.i.i.i: ; preds = %ppad35
+ %45 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ %46 = load i8* %45, align 4 ; [#uses=1]
+ %toBool.i.i.i.i.i.i.i = icmp eq i8 %46, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i.i.i.i, label %bb2.i.i.i.i.i.i.i, label %bb1.i.i.i.i.i.i.i
+
+bb1.i.i.i.i.i.i.i: ; preds = %bb.i.i.i.i.i.i.i
+ %47 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %43 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %47)
+ to label %bb2.i.i.i.i.i.i.i unwind label %lpad.i
+
+bb2.i.i.i.i.i.i.i: ; preds = %bb1.i.i.i.i.i.i.i, %bb.i.i.i.i.i.i.i
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %42, align 4
+ br label %bb3.i
+
+invcont1.i: ; preds = %lpad.i
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ to label %.noexc45 unwind label %lpad31
+
+.noexc45: ; preds = %invcont1.i
+ unreachable
+
+bb3.i: ; preds = %bb2.i.i.i.i.i.i.i, %ppad35
+ %48 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %48, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %42, align 4
+ %49 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %49, align 4
+ %50 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %50, align 4
+ %51 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %51)
+ to label %invcont16 unwind label %lpad31
+
+lpad.i: ; preds = %bb1.i.i.i.i.i.i.i
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %52 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %52)
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btGImpactCompoundShapeD1Ev(%struct.btGImpactCompoundShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV22btGImpactCompoundShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %2 = load %struct.btCollisionShape*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btCollisionShape** %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btCollisionShape** %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad23
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btCollisionShape** null, %struct.btCollisionShape*** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btCollisionShape** null, %struct.btCollisionShape*** %1, align 4
+ %8 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %11 = load %struct.btTransform** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btTransform* %11, null ; [#uses=1]
+ br i1 %12, label %bb8, label %bb.i.i.i41
+
+bb.i.i.i41: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i40 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i40, label %bb2.i.i.i43, label %bb1.i.i.i42
+
+bb1.i.i.i42: ; preds = %bb.i.i.i41
+ %15 = bitcast %struct.btTransform* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i43 unwind label %lpad
+
+bb2.i.i.i43: ; preds = %bb1.i.i.i42, %bb.i.i.i41
+ store %struct.btTransform* null, %struct.btTransform** %10, align 4
+ br label %bb8
+
+bb8: ; preds = %bb2.i.i.i43, %bb3
+ %16 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btTransform* null, %struct.btTransform** %10, align 4
+ %17 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTVN22btGImpactCompoundShape24CompoundPrimitiveManagerE, i32 0, i32 2), i32 (...)*** %19, align 4
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV23btGImpactShapeInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %20 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %21 = load %struct.BT_QUANTIZED_BVH_NODE** %20, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %21, null ; [#uses=1]
+ br i1 %22, label %_ZN23btGImpactShapeInterfaceD2Ev.exit59, label %bb.i.i.i.i.i.i.i48
+
+bb.i.i.i.i.i.i.i48: ; preds = %bb8
+ %23 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ %24 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i.i.i.i.i.i47 = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i.i.i.i47, label %bb2.i.i.i.i.i.i.i50, label %bb1.i.i.i.i.i.i.i49
+
+bb1.i.i.i.i.i.i.i49: ; preds = %bb.i.i.i.i.i.i.i48
+ %25 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %21 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %25)
+ to label %bb2.i.i.i.i.i.i.i50 unwind label %lpad.i55
+
+bb2.i.i.i.i.i.i.i50: ; preds = %bb1.i.i.i.i.i.i.i49, %bb.i.i.i.i.i.i.i48
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %20, align 4
+ br label %_ZN23btGImpactShapeInterfaceD2Ev.exit59
+
+invcont1.i51: ; preds = %lpad.i55
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i53)
+ unreachable
+
+lpad.i55: ; preds = %bb1.i.i.i.i.i.i.i49
+ %eh_ptr.i53 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i54 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i53, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %26 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %26)
+ to label %invcont1.i51 unwind label %lpad9.i58
+
+lpad9.i58: ; preds = %lpad.i55
+ %eh_ptr10.i56 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i57 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i56, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN23btGImpactShapeInterfaceD2Ev.exit59: ; preds = %bb2.i.i.i.i.i.i.i50, %bb8
+ %27 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %27, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %20, align 4
+ %28 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %30)
+ ret void
+
+invcont16: ; preds = %bb3.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+lpad: ; preds = %bb1.i.i.i42
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select22 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad35
+
+lpad23: ; preds = %bb1.i.i.i
+ %eh_ptr24 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select26 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr24, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %31 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %32 = load %struct.btTransform** %31, align 4 ; [#uses=2]
+ %33 = icmp eq %struct.btTransform* %32, null ; [#uses=1]
+ br i1 %33, label %_ZN20btAlignedObjectArrayI11btTransformED1Ev.exit65, label %bb.i.i.i61
+
+bb.i.i.i61: ; preds = %lpad23
+ %34 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %35 = load i8* %34, align 4 ; [#uses=1]
+ %toBool.i.i.i60 = icmp eq i8 %35, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i60, label %bb2.i.i.i63, label %bb1.i.i.i62
+
+bb1.i.i.i62: ; preds = %bb.i.i.i61
+ %36 = bitcast %struct.btTransform* %32 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %36)
+ to label %bb2.i.i.i63 unwind label %lpad27
+
+bb2.i.i.i63: ; preds = %bb1.i.i.i62, %bb.i.i.i61
+ store %struct.btTransform* null, %struct.btTransform** %31, align 4
+ br label %_ZN20btAlignedObjectArrayI11btTransformED1Ev.exit65
+
+_ZN20btAlignedObjectArrayI11btTransformED1Ev.exit65: ; preds = %bb2.i.i.i63, %lpad23
+ %37 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %37, align 4
+ store %struct.btTransform* null, %struct.btTransform** %31, align 4
+ %38 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ %39 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %39, align 4
+ br label %ppad35
+
+lpad27: ; preds = %bb1.i.i.i62
+ %eh_ptr28 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select30 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr28, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad31: ; preds = %bb3.i, %invcont1.i
+ %eh_ptr32 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select34 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr32, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad35: ; preds = %_ZN20btAlignedObjectArrayI11btTransformED1Ev.exit65, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr24, %_ZN20btAlignedObjectArrayI11btTransformED1Ev.exit65 ] ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTVN22btGImpactCompoundShape24CompoundPrimitiveManagerE, i32 0, i32 2), i32 (...)*** %40, align 4
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV23btGImpactShapeInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %41 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %42 = load %struct.BT_QUANTIZED_BVH_NODE** %41, align 4 ; [#uses=2]
+ %43 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %42, null ; [#uses=1]
+ br i1 %43, label %bb3.i, label %bb.i.i.i.i.i.i.i
+
+bb.i.i.i.i.i.i.i: ; preds = %ppad35
+ %44 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ %45 = load i8* %44, align 4 ; [#uses=1]
+ %toBool.i.i.i.i.i.i.i = icmp eq i8 %45, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i.i.i.i, label %bb2.i.i.i.i.i.i.i, label %bb1.i.i.i.i.i.i.i
+
+bb1.i.i.i.i.i.i.i: ; preds = %bb.i.i.i.i.i.i.i
+ %46 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %42 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %46)
+ to label %bb2.i.i.i.i.i.i.i unwind label %lpad.i
+
+bb2.i.i.i.i.i.i.i: ; preds = %bb1.i.i.i.i.i.i.i, %bb.i.i.i.i.i.i.i
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %41, align 4
+ br label %bb3.i
+
+invcont1.i: ; preds = %lpad.i
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ to label %.noexc45 unwind label %lpad31
+
+.noexc45: ; preds = %invcont1.i
+ unreachable
+
+bb3.i: ; preds = %bb2.i.i.i.i.i.i.i, %ppad35
+ %47 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %47, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %41, align 4
+ %48 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %48, align 4
+ %49 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %49, align 4
+ %50 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %50)
+ to label %invcont16 unwind label %lpad31
+
+lpad.i: ; preds = %bb1.i.i.i.i.i.i.i
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %51 = getelementptr inbounds %struct.btGImpactCompoundShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %51)
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btGImpactMeshShapePartD0Ev(%struct.btGImpactMeshShapePart* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTVN22btGImpactMeshShapePart23TrimeshPrimitiveManagerE, i32 0, i32 2), i32 (...)*** %1, align 4
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV23btGImpactShapeInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %2 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %3 = load %struct.BT_QUANTIZED_BVH_NODE** %2, align 4 ; [#uses=2]
+ %4 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %3, null ; [#uses=1]
+ br i1 %4, label %_ZN23btGImpactShapeInterfaceD2Ev.exit, label %bb.i.i.i.i.i.i.i
+
+bb.i.i.i.i.i.i.i: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ %6 = load i8* %5, align 4 ; [#uses=1]
+ %toBool.i.i.i.i.i.i.i = icmp eq i8 %6, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i.i.i.i, label %bb2.i.i.i.i.i.i.i, label %bb1.i.i.i.i.i.i.i
+
+bb1.i.i.i.i.i.i.i: ; preds = %bb.i.i.i.i.i.i.i
+ %7 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %3 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %7)
+ to label %bb2.i.i.i.i.i.i.i unwind label %lpad.i
+
+bb2.i.i.i.i.i.i.i: ; preds = %bb1.i.i.i.i.i.i.i, %bb.i.i.i.i.i.i.i
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %2, align 4
+ br label %_ZN23btGImpactShapeInterfaceD2Ev.exit
+
+invcont1.i: ; preds = %lpad.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ unreachable
+
+lpad.i: ; preds = %bb1.i.i.i.i.i.i.i
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %8 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %8)
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN23btGImpactShapeInterfaceD2Ev.exit: ; preds = %bb2.i.i.i.i.i.i.i, %entry
+ %9 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %9, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %2, align 4
+ %10 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %12)
+ %13 = bitcast %struct.btGImpactMeshShapePart* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %13) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btGImpactMeshShapePartD1Ev(%struct.btGImpactMeshShapePart* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTVN22btGImpactMeshShapePart23TrimeshPrimitiveManagerE, i32 0, i32 2), i32 (...)*** %1, align 4
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV23btGImpactShapeInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %2 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %3 = load %struct.BT_QUANTIZED_BVH_NODE** %2, align 4 ; [#uses=2]
+ %4 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %3, null ; [#uses=1]
+ br i1 %4, label %_ZN23btGImpactShapeInterfaceD2Ev.exit, label %bb.i.i.i.i.i.i.i
+
+bb.i.i.i.i.i.i.i: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ %6 = load i8* %5, align 4 ; [#uses=1]
+ %toBool.i.i.i.i.i.i.i = icmp eq i8 %6, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i.i.i.i, label %bb2.i.i.i.i.i.i.i, label %bb1.i.i.i.i.i.i.i
+
+bb1.i.i.i.i.i.i.i: ; preds = %bb.i.i.i.i.i.i.i
+ %7 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %3 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %7)
+ to label %bb2.i.i.i.i.i.i.i unwind label %lpad.i
+
+bb2.i.i.i.i.i.i.i: ; preds = %bb1.i.i.i.i.i.i.i, %bb.i.i.i.i.i.i.i
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %2, align 4
+ br label %_ZN23btGImpactShapeInterfaceD2Ev.exit
+
+invcont1.i: ; preds = %lpad.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ unreachable
+
+lpad.i: ; preds = %bb1.i.i.i.i.i.i.i
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %8 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %8)
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN23btGImpactShapeInterfaceD2Ev.exit: ; preds = %bb2.i.i.i.i.i.i.i, %entry
+ %9 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %9, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %2, align 4
+ %10 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %12)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZNK22btGImpactMeshShapePart19processAllTrianglesEP18btTriangleCallbackRK9btVector3S4_(%struct.btGImpactMeshShapePart* %this, %struct.btActionInterface* %callback, %struct.btQuadWord* nocapture %aabbMin, %struct.btQuadWord* nocapture %aabbMax) align 2 {
+entry:
+ %box = alloca %struct.GIM_AABB, align 8 ; [#uses=9]
+ %collided = alloca %"struct.btAlignedObjectArray<int>", align 8 ; [#uses=5]
+ %triangle = alloca %struct.btPrimitiveTriangle, align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 27 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ call void %4(%struct.btGImpactMeshShapePart* %this)
+ %5 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 8
+ %8 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 8
+ %14 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %aabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 8
+ %20 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 8
+ %26 = getelementptr inbounds %struct.GIM_AABB* %box, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %aabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided, i32 0, i32 4 ; [#uses=4]
+ store i8 1, i8* %29, align 8
+ %30 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided, i32 0, i32 3 ; [#uses=8]
+ store i32* null, i32** %30, align 4
+ %31 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided, i32 0, i32 1 ; [#uses=3]
+ store i32 0, i32* %31, align 4
+ %32 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %collided, i32 0, i32 2 ; [#uses=2]
+ store i32 0, i32* %32, align 8
+ %33 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %34 = invoke zeroext i8 @_ZNK21btGImpactQuantizedBvh8boxQueryERK6btAABBR20btAlignedObjectArrayIiE(%struct.btGImpactBoxSet* %33, %struct.GIM_AABB* %box, %"struct.btAlignedObjectArray<int>"* %collided)
+ to label %invcont unwind label %lpad ; [#uses=0]
+
+invcont: ; preds = %entry
+ %35 = load i32* %31, align 4 ; [#uses=2]
+ %36 = icmp eq i32 %35, 0 ; [#uses=1]
+ br i1 %36, label %bb, label %bb2
+
+bb: ; preds = %invcont
+ %37 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32 (...)** %37, i32 28 ; [#uses=1]
+ %39 = load i32 (...)** %38, align 4 ; [#uses=1]
+ %40 = bitcast i32 (...)* %39 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ invoke void %40(%struct.btGImpactMeshShapePart* %this)
+ to label %bb13 unwind label %lpad
+
+bb2: ; preds = %invcont
+ %41 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %42 = load i32* %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 2 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %43, align 8
+ %44 = getelementptr inbounds %struct.btGImpactMeshShapePart* %this, i32 0, i32 0 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btActionInterface* %callback, i32 0, i32 0 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btPrimitiveTriangle* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %tmp29 = add i32 %35, -1 ; [#uses=1]
+ br label %bb6
+
+bb3: ; preds = %bb6
+ %47 = load i32** %30, align 4 ; [#uses=1]
+ %scevgep = getelementptr i32* %47, i32 %tmp30 ; [#uses=1]
+ %48 = load i32* %scevgep, align 4 ; [#uses=1]
+ %49 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds i32 (...)** %49, i32 20 ; [#uses=1]
+ %51 = load i32 (...)** %50, align 4 ; [#uses=1]
+ %52 = bitcast i32 (...)* %51 to %struct.btActionInterface* (%struct.btGImpactShapeInterface*)* ; [#uses=1]
+ %53 = invoke %struct.btActionInterface* %52(%struct.btGImpactShapeInterface* %44)
+ to label %.noexc27 unwind label %lpad ; [#uses=2]
+
+.noexc27: ; preds = %bb3
+ %54 = getelementptr inbounds %struct.btActionInterface* %53, i32 0, i32 0 ; [#uses=1]
+ %55 = load i32 (...)*** %54, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds i32 (...)** %55, i32 5 ; [#uses=1]
+ %57 = load i32 (...)** %56, align 4 ; [#uses=1]
+ %58 = bitcast i32 (...)* %57 to void (%struct.btActionInterface*, i32, %struct.btPrimitiveTriangle*)* ; [#uses=1]
+ invoke void %58(%struct.btActionInterface* %53, i32 %48, %struct.btPrimitiveTriangle* %triangle)
+ to label %invcont4 unwind label %lpad
+
+invcont4: ; preds = %.noexc27
+ %59 = load i32 (...)*** %45, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds i32 (...)** %59, i32 2 ; [#uses=1]
+ %61 = load i32 (...)** %60, align 4 ; [#uses=1]
+ %62 = load i32** %30, align 4 ; [#uses=1]
+ %scevgep31 = getelementptr i32* %62, i32 %tmp30 ; [#uses=1]
+ %63 = load i32* %scevgep31, align 4 ; [#uses=1]
+ %64 = bitcast i32 (...)* %61 to void (%struct.btActionInterface*, %struct.btQuadWord*, i32, i32)* ; [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ invoke void %64(%struct.btActionInterface* %callback, %struct.btQuadWord* %46, i32 %42, i32 %63)
+ to label %bb6 unwind label %lpad
+
+bb6: ; preds = %invcont4, %bb2
+ %indvar = phi i32 [ %indvar.next, %invcont4 ], [ 0, %bb2 ] ; [#uses=2]
+ %tmp30 = sub i32 %tmp29, %indvar ; [#uses=3]
+ %65 = icmp eq i32 %tmp30, -1 ; [#uses=1]
+ br i1 %65, label %bb8, label %bb3
+
+bb8: ; preds = %bb6
+ %66 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %67 = getelementptr inbounds i32 (...)** %66, i32 28 ; [#uses=1]
+ %68 = load i32 (...)** %67, align 4 ; [#uses=1]
+ %69 = bitcast i32 (...)* %68 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ invoke void %69(%struct.btGImpactMeshShapePart* %this)
+ to label %bb13 unwind label %lpad
+
+invcont11: ; preds = %bb2.i.i.i, %lpad
+ store i8 1, i8* %29, align 8
+ store i32* null, i32** %30, align 4
+ store i32 0, i32* %31, align 4
+ store i32 0, i32* %32, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb13: ; preds = %bb8, %bb
+ %70 = load i32** %30, align 4 ; [#uses=2]
+ %71 = icmp eq i32* %70, null ; [#uses=1]
+ br i1 %71, label %_ZN20btAlignedObjectArrayIiED1Ev.exit26, label %bb.i.i.i23
+
+bb.i.i.i23: ; preds = %bb13
+ %72 = load i8* %29, align 8 ; [#uses=1]
+ %toBool.i.i.i22 = icmp eq i8 %72, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i22, label %bb2.i.i.i25, label %bb1.i.i.i24
+
+bb1.i.i.i24: ; preds = %bb.i.i.i23
+ %73 = bitcast i32* %70 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %73)
+ br label %bb2.i.i.i25
+
+bb2.i.i.i25: ; preds = %bb1.i.i.i24, %bb.i.i.i23
+ store i32* null, i32** %30, align 4
+ ret void
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit26: ; preds = %bb13
+ ret void
+
+lpad: ; preds = %bb8, %invcont4, %.noexc27, %bb3, %bb, %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select15 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %74 = load i32** %30, align 4 ; [#uses=2]
+ %75 = icmp eq i32* %74, null ; [#uses=1]
+ br i1 %75, label %invcont11, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad
+ %76 = load i8* %29, align 8 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %76, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %77 = bitcast i32* %74 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %77)
+ to label %bb2.i.i.i unwind label %lpad16
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %30, align 4
+ br label %invcont11
+
+lpad16: ; preds = %bb1.i.i.i
+ %eh_ptr17 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select19 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr17, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btGImpactMeshShapeD0Ev(%struct.btGImpactMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV18btGImpactMeshShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 1 ; [#uses=3]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 3 ; [#uses=6]
+ %tmp66 = add i32 %2, -1 ; [#uses=1]
+ br label %bb2
+
+bb: ; preds = %bb2
+ %scevgep = getelementptr %struct.btGImpactMeshShapePart** %12, i32 %tmp67 ; [#uses=1]
+ %4 = load %struct.btGImpactMeshShapePart** %scevgep, align 4 ; [#uses=3]
+ %5 = icmp eq %struct.btGImpactMeshShapePart* %4, null ; [#uses=1]
+ br i1 %5, label %bb2.backedge, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btGImpactMeshShapePart* %4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 1 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ invoke void %10(%struct.btGImpactMeshShapePart* %4)
+ to label %bb2.backedge unwind label %lpad24
+
+bb2.backedge: ; preds = %bb1, %bb
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb2.backedge, %entry
+ %indvar = phi i32 [ %indvar.next, %bb2.backedge ], [ 0, %entry ] ; [#uses=2]
+ %tmp67 = sub i32 %tmp66, %indvar ; [#uses=2]
+ %11 = icmp eq i32 %tmp67, -1 ; [#uses=1]
+ %12 = load %struct.btGImpactMeshShapePart*** %3, align 4 ; [#uses=3]
+ br i1 %11, label %bb3, label %bb
+
+bb3: ; preds = %bb2
+ %13 = icmp eq %struct.btGImpactMeshShapePart** %12, null ; [#uses=1]
+ br i1 %13, label %bb15, label %bb.i.i
+
+bb.i.i: ; preds = %bb3
+ %14 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %15 = load i8* %14, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %15, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %16 = bitcast %struct.btGImpactMeshShapePart** %12 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %16)
+ to label %bb2.i.i unwind label %lpad24
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btGImpactMeshShapePart** null, %struct.btGImpactMeshShapePart*** %3, align 4
+ br label %bb15
+
+invcont13: ; preds = %bb3.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr25)
+ unreachable
+
+bb15: ; preds = %bb2.i.i, %bb3
+ %17 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i8 1, i8* %17, align 4
+ store %struct.btGImpactMeshShapePart** null, %struct.btGImpactMeshShapePart*** %3, align 4
+ store i32 0, i32* %1, align 4
+ store i32 0, i32* %18, align 4
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV23btGImpactShapeInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %19 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %20 = load %struct.BT_QUANTIZED_BVH_NODE** %19, align 4 ; [#uses=2]
+ %21 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %20, null ; [#uses=1]
+ br i1 %21, label %_ZN23btGImpactShapeInterfaceD2Ev.exit55, label %bb.i.i.i.i.i.i.i44
+
+bb.i.i.i.i.i.i.i44: ; preds = %bb15
+ %22 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i.i.i.i.i.i43 = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i.i.i.i43, label %bb2.i.i.i.i.i.i.i46, label %bb1.i.i.i.i.i.i.i45
+
+bb1.i.i.i.i.i.i.i45: ; preds = %bb.i.i.i.i.i.i.i44
+ %24 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %20 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %24)
+ to label %bb2.i.i.i.i.i.i.i46 unwind label %lpad.i51
+
+bb2.i.i.i.i.i.i.i46: ; preds = %bb1.i.i.i.i.i.i.i45, %bb.i.i.i.i.i.i.i44
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %19, align 4
+ br label %_ZN23btGImpactShapeInterfaceD2Ev.exit55
+
+invcont1.i47: ; preds = %lpad.i51
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i49)
+ unreachable
+
+lpad.i51: ; preds = %bb1.i.i.i.i.i.i.i45
+ %eh_ptr.i49 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i50 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i49, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %25 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %25)
+ to label %invcont1.i47 unwind label %lpad9.i54
+
+lpad9.i54: ; preds = %lpad.i51
+ %eh_ptr10.i52 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i53 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i52, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN23btGImpactShapeInterfaceD2Ev.exit55: ; preds = %bb2.i.i.i.i.i.i.i46, %bb15
+ %26 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %26, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %19, align 4
+ %27 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %29)
+ %30 = bitcast %struct.btGImpactMeshShape* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %30) nounwind
+ ret void
+
+lpad24: ; preds = %bb1.i.i, %bb1
+ %eh_ptr25 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select27 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr25, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %31 = load %struct.btGImpactMeshShapePart*** %3, align 4 ; [#uses=2]
+ %32 = icmp eq %struct.btGImpactMeshShapePart** %31, null ; [#uses=1]
+ br i1 %32, label %ppad, label %bb.i.i.i57
+
+bb.i.i.i57: ; preds = %lpad24
+ %33 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %34 = load i8* %33, align 4 ; [#uses=1]
+ %toBool.i.i.i56 = icmp eq i8 %34, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i56, label %bb2.i.i.i59, label %bb1.i.i.i58
+
+bb1.i.i.i58: ; preds = %bb.i.i.i57
+ %35 = bitcast %struct.btGImpactMeshShapePart** %31 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %35)
+ to label %bb2.i.i.i59 unwind label %lpad28
+
+bb2.i.i.i59: ; preds = %bb1.i.i.i58, %bb.i.i.i57
+ store %struct.btGImpactMeshShapePart** null, %struct.btGImpactMeshShapePart*** %3, align 4
+ br label %ppad
+
+lpad28: ; preds = %bb1.i.i.i58
+ %eh_ptr29 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select31 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr29, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad32: ; preds = %bb3.i, %invcont1.i
+ %eh_ptr33 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select35 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr33, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i59, %lpad24
+ %36 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %36, align 4
+ store %struct.btGImpactMeshShapePart** null, %struct.btGImpactMeshShapePart*** %3, align 4
+ store i32 0, i32* %1, align 4
+ %37 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %37, align 4
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV23btGImpactShapeInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %38 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %39 = load %struct.BT_QUANTIZED_BVH_NODE** %38, align 4 ; [#uses=2]
+ %40 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %39, null ; [#uses=1]
+ br i1 %40, label %bb3.i, label %bb.i.i.i.i.i.i.i
+
+bb.i.i.i.i.i.i.i: ; preds = %ppad
+ %41 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ %42 = load i8* %41, align 4 ; [#uses=1]
+ %toBool.i.i.i.i.i.i.i = icmp eq i8 %42, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i.i.i.i, label %bb2.i.i.i.i.i.i.i, label %bb1.i.i.i.i.i.i.i
+
+bb1.i.i.i.i.i.i.i: ; preds = %bb.i.i.i.i.i.i.i
+ %43 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %39 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %43)
+ to label %bb2.i.i.i.i.i.i.i unwind label %lpad.i
+
+bb2.i.i.i.i.i.i.i: ; preds = %bb1.i.i.i.i.i.i.i, %bb.i.i.i.i.i.i.i
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %38, align 4
+ br label %bb3.i
+
+invcont1.i: ; preds = %lpad.i
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ to label %.noexc unwind label %lpad32
+
+.noexc: ; preds = %invcont1.i
+ unreachable
+
+bb3.i: ; preds = %bb2.i.i.i.i.i.i.i, %ppad
+ %44 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %44, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %38, align 4
+ %45 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %45, align 4
+ %46 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %46, align 4
+ %47 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %47)
+ to label %invcont13 unwind label %lpad32
+
+lpad.i: ; preds = %bb1.i.i.i.i.i.i.i
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %48 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %48)
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btGImpactMeshShapeD1Ev(%struct.btGImpactMeshShape* %this) align 2 {
+entry:
+ tail call void @_ZN18btGImpactMeshShapeD2Ev(%struct.btGImpactMeshShape* %this)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btGImpactMeshShapeD2Ev(%struct.btGImpactMeshShape* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV18btGImpactMeshShape, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 1 ; [#uses=3]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 3 ; [#uses=6]
+ %tmp66 = add i32 %2, -1 ; [#uses=1]
+ br label %bb2
+
+bb: ; preds = %bb2
+ %scevgep = getelementptr %struct.btGImpactMeshShapePart** %12, i32 %tmp67 ; [#uses=1]
+ %4 = load %struct.btGImpactMeshShapePart** %scevgep, align 4 ; [#uses=3]
+ %5 = icmp eq %struct.btGImpactMeshShapePart* %4, null ; [#uses=1]
+ br i1 %5, label %bb2.backedge, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btGImpactMeshShapePart* %4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 1 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to void (%struct.btGImpactMeshShapePart*)* ; [#uses=1]
+ invoke void %10(%struct.btGImpactMeshShapePart* %4)
+ to label %bb2.backedge unwind label %lpad24
+
+bb2.backedge: ; preds = %bb1, %bb
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb2.backedge, %entry
+ %indvar = phi i32 [ %indvar.next, %bb2.backedge ], [ 0, %entry ] ; [#uses=2]
+ %tmp67 = sub i32 %tmp66, %indvar ; [#uses=2]
+ %11 = icmp eq i32 %tmp67, -1 ; [#uses=1]
+ %12 = load %struct.btGImpactMeshShapePart*** %3, align 4 ; [#uses=3]
+ br i1 %11, label %bb3, label %bb
+
+bb3: ; preds = %bb2
+ %13 = icmp eq %struct.btGImpactMeshShapePart** %12, null ; [#uses=1]
+ br i1 %13, label %bb15, label %bb.i.i
+
+bb.i.i: ; preds = %bb3
+ %14 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %15 = load i8* %14, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %15, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %16 = bitcast %struct.btGImpactMeshShapePart** %12 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %16)
+ to label %bb2.i.i unwind label %lpad24
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btGImpactMeshShapePart** null, %struct.btGImpactMeshShapePart*** %3, align 4
+ br label %bb15
+
+invcont13: ; preds = %bb3.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr25)
+ unreachable
+
+bb15: ; preds = %bb2.i.i, %bb3
+ %17 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i8 1, i8* %17, align 4
+ store %struct.btGImpactMeshShapePart** null, %struct.btGImpactMeshShapePart*** %3, align 4
+ store i32 0, i32* %1, align 4
+ store i32 0, i32* %18, align 4
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV23btGImpactShapeInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %19 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %20 = load %struct.BT_QUANTIZED_BVH_NODE** %19, align 4 ; [#uses=2]
+ %21 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %20, null ; [#uses=1]
+ br i1 %21, label %_ZN23btGImpactShapeInterfaceD2Ev.exit55, label %bb.i.i.i.i.i.i.i44
+
+bb.i.i.i.i.i.i.i44: ; preds = %bb15
+ %22 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i.i.i.i.i.i43 = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i.i.i.i43, label %bb2.i.i.i.i.i.i.i46, label %bb1.i.i.i.i.i.i.i45
+
+bb1.i.i.i.i.i.i.i45: ; preds = %bb.i.i.i.i.i.i.i44
+ %24 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %20 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %24)
+ to label %bb2.i.i.i.i.i.i.i46 unwind label %lpad.i51
+
+bb2.i.i.i.i.i.i.i46: ; preds = %bb1.i.i.i.i.i.i.i45, %bb.i.i.i.i.i.i.i44
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %19, align 4
+ br label %_ZN23btGImpactShapeInterfaceD2Ev.exit55
+
+invcont1.i47: ; preds = %lpad.i51
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i49)
+ unreachable
+
+lpad.i51: ; preds = %bb1.i.i.i.i.i.i.i45
+ %eh_ptr.i49 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i50 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i49, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %25 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %25)
+ to label %invcont1.i47 unwind label %lpad9.i54
+
+lpad9.i54: ; preds = %lpad.i51
+ %eh_ptr10.i52 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i53 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i52, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN23btGImpactShapeInterfaceD2Ev.exit55: ; preds = %bb2.i.i.i.i.i.i.i46, %bb15
+ %26 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %26, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %19, align 4
+ %27 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %29)
+ ret void
+
+lpad24: ; preds = %bb1.i.i, %bb1
+ %eh_ptr25 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select27 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr25, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %30 = load %struct.btGImpactMeshShapePart*** %3, align 4 ; [#uses=2]
+ %31 = icmp eq %struct.btGImpactMeshShapePart** %30, null ; [#uses=1]
+ br i1 %31, label %ppad, label %bb.i.i.i57
+
+bb.i.i.i57: ; preds = %lpad24
+ %32 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %33 = load i8* %32, align 4 ; [#uses=1]
+ %toBool.i.i.i56 = icmp eq i8 %33, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i56, label %bb2.i.i.i59, label %bb1.i.i.i58
+
+bb1.i.i.i58: ; preds = %bb.i.i.i57
+ %34 = bitcast %struct.btGImpactMeshShapePart** %30 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %34)
+ to label %bb2.i.i.i59 unwind label %lpad28
+
+bb2.i.i.i59: ; preds = %bb1.i.i.i58, %bb.i.i.i57
+ store %struct.btGImpactMeshShapePart** null, %struct.btGImpactMeshShapePart*** %3, align 4
+ br label %ppad
+
+lpad28: ; preds = %bb1.i.i.i58
+ %eh_ptr29 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select31 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr29, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad32: ; preds = %bb3.i, %invcont1.i
+ %eh_ptr33 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select35 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr33, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i59, %lpad24
+ %35 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %35, align 4
+ store %struct.btGImpactMeshShapePart** null, %struct.btGImpactMeshShapePart*** %3, align 4
+ store i32 0, i32* %1, align 4
+ %36 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %36, align 4
+ store i32 (...)** getelementptr inbounds ([37 x i32 (...)*]* @_ZTV23btGImpactShapeInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %37 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %38 = load %struct.BT_QUANTIZED_BVH_NODE** %37, align 4 ; [#uses=2]
+ %39 = icmp eq %struct.BT_QUANTIZED_BVH_NODE* %38, null ; [#uses=1]
+ br i1 %39, label %bb3.i, label %bb.i.i.i.i.i.i.i
+
+bb.i.i.i.i.i.i.i: ; preds = %ppad
+ %40 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ %41 = load i8* %40, align 4 ; [#uses=1]
+ %toBool.i.i.i.i.i.i.i = icmp eq i8 %41, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i.i.i.i, label %bb2.i.i.i.i.i.i.i, label %bb1.i.i.i.i.i.i.i
+
+bb1.i.i.i.i.i.i.i: ; preds = %bb.i.i.i.i.i.i.i
+ %42 = bitcast %struct.BT_QUANTIZED_BVH_NODE* %38 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %42)
+ to label %bb2.i.i.i.i.i.i.i unwind label %lpad.i
+
+bb2.i.i.i.i.i.i.i: ; preds = %bb1.i.i.i.i.i.i.i, %bb.i.i.i.i.i.i.i
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %37, align 4
+ br label %bb3.i
+
+invcont1.i: ; preds = %lpad.i
+ invoke void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ to label %.noexc unwind label %lpad32
+
+.noexc: ; preds = %invcont1.i
+ unreachable
+
+bb3.i: ; preds = %bb2.i.i.i.i.i.i.i, %ppad
+ %43 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %43, align 4
+ store %struct.BT_QUANTIZED_BVH_NODE* null, %struct.BT_QUANTIZED_BVH_NODE** %37, align 4
+ %44 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %44, align 4
+ %45 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 4, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store i32 0, i32* %45, align 4
+ %46 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %46)
+ to label %invcont13 unwind label %lpad32
+
+lpad.i: ; preds = %bb1.i.i.i.i.i.i.i
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %47 = getelementptr inbounds %struct.btGImpactMeshShape* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN14btConcaveShapeD2Ev(%struct.btConcaveShape* %47)
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=2]
+define void @_ZN20GIM_TRIANGLE_CONTACT12merge_pointsERK9btVector4fPK9btVector3i(%struct.GIM_TRIANGLE_CONTACT* nocapture %this, %struct.btQuaternion* nocapture %plane, float %margin, %struct.btQuadWord* nocapture %points, i32 %point_count) nounwind align 2 {
+entry:
+ %point_indices = alloca [16 x i32], align 4 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 1 ; [#uses=4]
+ store i32 0, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 0 ; [#uses=2]
+ store float -1.000000e+03, float* %1, align 4
+ %2 = icmp sgt i32 %point_count, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph13, label %return
+
+bb.nph13: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %7 = getelementptr inbounds [16 x i32]* %point_indices, i32 0, i32 0 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb5, %bb.nph13
+ %8 = phi i32 [ 0, %bb.nph13 ], [ %31, %bb5 ] ; [#uses=4]
+ %9 = phi float [ -1.000000e+03, %bb.nph13 ], [ %32, %bb5 ] ; [#uses=5]
+ %10 = phi i32 [ 0, %bb.nph13 ], [ %33, %bb5 ] ; [#uses=6]
+ %scevgep1920 = getelementptr inbounds %struct.btQuadWord* %points, i32 %10, i32 0, i32 0 ; [#uses=1]
+ %scevgep21 = getelementptr %struct.btQuadWord* %points, i32 %10, i32 0, i32 1 ; [#uses=1]
+ %scevgep22 = getelementptr %struct.btQuadWord* %points, i32 %10, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %scevgep1920, align 4 ; [#uses=1]
+ %12 = load float* %3, align 4 ; [#uses=1]
+ %13 = fmul float %11, %12 ; [#uses=1]
+ %14 = load float* %scevgep21, align 4 ; [#uses=1]
+ %15 = load float* %4, align 4 ; [#uses=1]
+ %16 = fmul float %14, %15 ; [#uses=1]
+ %17 = fadd float %13, %16 ; [#uses=1]
+ %18 = load float* %scevgep22, align 4 ; [#uses=1]
+ %19 = load float* %5, align 4 ; [#uses=1]
+ %20 = fmul float %18, %19 ; [#uses=1]
+ %21 = fadd float %17, %20 ; [#uses=1]
+ %22 = load float* %6, align 4 ; [#uses=1]
+ %23 = fsub float %21, %22 ; [#uses=1]
+ %24 = fsub float %margin, %23 ; [#uses=5]
+ %25 = fcmp ult float %24, 0.000000e+00 ; [#uses=1]
+ br i1 %25, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %26 = fcmp olt float %9, %24 ; [#uses=1]
+ br i1 %26, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ store float %24, float* %1, align 4
+ store i32 %10, i32* %7, align 4
+ store i32 1, i32* %0, align 4
+ br label %bb5
+
+bb3: ; preds = %bb1
+ %27 = fadd float %24, 0x3E80000000000000 ; [#uses=1]
+ %28 = fcmp ult float %27, %9 ; [#uses=1]
+ br i1 %28, label %bb5, label %bb4
+
+bb4: ; preds = %bb3
+ %29 = getelementptr inbounds [16 x i32]* %point_indices, i32 0, i32 %8 ; [#uses=1]
+ store i32 %10, i32* %29, align 4
+ %30 = add nsw i32 %8, 1 ; [#uses=2]
+ store i32 %30, i32* %0, align 4
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3, %bb2, %bb
+ %31 = phi i32 [ %8, %bb3 ], [ %8, %bb ], [ %30, %bb4 ], [ 1, %bb2 ] ; [#uses=2]
+ %32 = phi float [ %9, %bb3 ], [ %9, %bb ], [ %9, %bb4 ], [ %24, %bb2 ] ; [#uses=1]
+ %33 = add nsw i32 %10, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %33, %point_count ; [#uses=1]
+ br i1 %exitcond, label %bb9.preheader, label %bb
+
+bb9.preheader: ; preds = %bb5
+ %34 = icmp sgt i32 %31, 0 ; [#uses=1]
+ br i1 %34, label %bb8, label %return
+
+bb8: ; preds = %bb8, %bb9.preheader
+ %_k.111 = phi i32 [ 0, %bb9.preheader ], [ %44, %bb8 ] ; [#uses=6]
+ %scevgep = getelementptr [16 x i32]* %point_indices, i32 0, i32 %_k.111 ; [#uses=1]
+ %scevgep1415 = getelementptr %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 3, i32 %_k.111, i32 0, i32 0 ; [#uses=1]
+ %scevgep16 = getelementptr %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 3, i32 %_k.111, i32 0, i32 1 ; [#uses=1]
+ %scevgep17 = getelementptr %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 3, i32 %_k.111, i32 0, i32 2 ; [#uses=1]
+ %scevgep18 = getelementptr %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 3, i32 %_k.111, i32 0, i32 3 ; [#uses=1]
+ %35 = load i32* %scevgep, align 4 ; [#uses=4]
+ %36 = getelementptr inbounds %struct.btQuadWord* %points, i32 %35, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %scevgep1415, align 4
+ %38 = getelementptr inbounds %struct.btQuadWord* %points, i32 %35, i32 0, i32 1 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %scevgep16, align 4
+ %40 = getelementptr inbounds %struct.btQuadWord* %points, i32 %35, i32 0, i32 2 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ store float %41, float* %scevgep17, align 4
+ %42 = getelementptr inbounds %struct.btQuadWord* %points, i32 %35, i32 0, i32 3 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %scevgep18, align 4
+ %44 = add nsw i32 %_k.111, 1 ; [#uses=2]
+ %45 = load i32* %0, align 4 ; [#uses=1]
+ %46 = icmp sgt i32 %45, %44 ; [#uses=1]
+ br i1 %46, label %bb8, label %return
+
+return: ; preds = %bb8, %bb9.preheader, %entry
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr i32 @_Z21bt_plane_clip_polygonRK9btVector4PK9btVector3iPS2_(%struct.btQuaternion* nocapture %plane, %struct.btQuadWord* nocapture %polygon_points, i32 %polygon_point_count, %struct.btQuadWord* nocapture %clipped) nounwind inlinehint {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 0, i32 0, i32 1 ; [#uses=4]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 0, i32 0, i32 2 ; [#uses=4]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fsub float %16, %18 ; [#uses=5]
+ %20 = fcmp ule float %19, 0x3E80000000000000 ; [#uses=1]
+ br i1 %20, label %bb, label %bb3.preheader
+
+bb: ; preds = %entry
+ %21 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %5, align 4 ; [#uses=1]
+ store float %23, float* %22, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %11, align 4 ; [#uses=1]
+ store float %25, float* %24, align 4
+ %26 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 0, i32 0, i32 3 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ br label %bb3.preheader
+
+bb3.preheader: ; preds = %bb, %entry
+ %clipped_count.0.ph = phi i32 [ 0, %entry ], [ 1, %bb ] ; [#uses=2]
+ %29 = icmp sgt i32 %polygon_point_count, 1 ; [#uses=1]
+ br i1 %29, label %bb.nph, label %bb4
+
+bb.nph: ; preds = %bb3.preheader
+ %tmp = add i32 %polygon_point_count, -1 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit10, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %tmp15, %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit10 ] ; [#uses=4]
+ %olddist.012 = phi float [ %19, %bb.nph ], [ %42, %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit10 ] ; [#uses=3]
+ %clipped_count.011 = phi i32 [ %clipped_count.0.ph, %bb.nph ], [ %clipped_count.4, %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit10 ] ; [#uses=6]
+ %tmp15 = add i32 %indvar, 1 ; [#uses=6]
+ %scevgep16 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 %tmp15, i32 0, i32 0 ; [#uses=2]
+ %scevgep17 = getelementptr %struct.btQuadWord* %polygon_points, i32 %tmp15, i32 0, i32 1 ; [#uses=2]
+ %scevgep18 = getelementptr %struct.btQuadWord* %polygon_points, i32 %tmp15, i32 0, i32 2 ; [#uses=2]
+ %scevgep19 = getelementptr %struct.btQuadWord* %polygon_points, i32 %tmp15, i32 0, i32 3 ; [#uses=1]
+ %30 = load float* %scevgep16, align 4 ; [#uses=2]
+ %31 = load float* %2, align 4 ; [#uses=1]
+ %32 = fmul float %30, %31 ; [#uses=1]
+ %33 = load float* %scevgep17, align 4 ; [#uses=2]
+ %34 = load float* %7, align 4 ; [#uses=1]
+ %35 = fmul float %33, %34 ; [#uses=1]
+ %36 = fadd float %32, %35 ; [#uses=1]
+ %37 = load float* %scevgep18, align 4 ; [#uses=2]
+ %38 = load float* %13, align 4 ; [#uses=1]
+ %39 = fmul float %37, %38 ; [#uses=1]
+ %40 = fadd float %36, %39 ; [#uses=1]
+ %41 = load float* %17, align 4 ; [#uses=1]
+ %42 = fsub float %40, %41 ; [#uses=4]
+ %43 = fcmp ogt float %olddist.012, 0x3E80000000000000 ; [#uses=1]
+ %44 = fcmp ogt float %42, 0x3E80000000000000 ; [#uses=2]
+ %45 = xor i1 %44, %43 ; [#uses=1]
+ br i1 %45, label %bb.i6, label %bb1.i7
+
+bb.i6: ; preds = %bb2
+ %scevgep23 = getelementptr %struct.btQuadWord* %polygon_points, i32 %indvar, i32 0, i32 2 ; [#uses=1]
+ %scevgep22 = getelementptr %struct.btQuadWord* %polygon_points, i32 %indvar, i32 0, i32 1 ; [#uses=1]
+ %scevgep2021 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 %indvar, i32 0, i32 0 ; [#uses=1]
+ %46 = fsub float -0.000000e+00, %olddist.012 ; [#uses=1]
+ %47 = fsub float %42, %olddist.012 ; [#uses=1]
+ %48 = fdiv float %46, %47 ; [#uses=4]
+ %49 = fmul float %37, %48 ; [#uses=1]
+ %50 = fmul float %33, %48 ; [#uses=1]
+ %51 = fmul float %30, %48 ; [#uses=1]
+ %52 = fsub float 1.000000e+00, %48 ; [#uses=3]
+ %53 = load float* %scevgep23, align 4 ; [#uses=1]
+ %54 = fmul float %53, %52 ; [#uses=1]
+ %55 = load float* %scevgep22, align 4 ; [#uses=1]
+ %56 = fmul float %55, %52 ; [#uses=1]
+ %57 = load float* %scevgep2021, align 4 ; [#uses=1]
+ %58 = fmul float %57, %52 ; [#uses=1]
+ %59 = fadd float %54, %49 ; [#uses=1]
+ %60 = fadd float %56, %50 ; [#uses=1]
+ %61 = fadd float %58, %51 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.011, i32 0, i32 0 ; [#uses=1]
+ store float %61, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.011, i32 0, i32 1 ; [#uses=1]
+ store float %60, float* %63, align 4
+ %64 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.011, i32 0, i32 2 ; [#uses=1]
+ store float %59, float* %64, align 4
+ %65 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.011, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %65, align 4
+ %66 = add nsw i32 %clipped_count.011, 1 ; [#uses=1]
+ br label %bb1.i7
+
+bb1.i7: ; preds = %bb.i6, %bb2
+ %clipped_count.3 = phi i32 [ %66, %bb.i6 ], [ %clipped_count.011, %bb2 ] ; [#uses=6]
+ br i1 %44, label %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit10, label %bb5.i8
+
+bb5.i8: ; preds = %bb1.i7
+ %67 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 0 ; [#uses=1]
+ %68 = load float* %scevgep16, align 4 ; [#uses=1]
+ store float %68, float* %67, align 4
+ %69 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 1 ; [#uses=1]
+ %70 = load float* %scevgep17, align 4 ; [#uses=1]
+ store float %70, float* %69, align 4
+ %71 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %scevgep18, align 4 ; [#uses=1]
+ store float %72, float* %71, align 4
+ %73 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 3 ; [#uses=1]
+ %74 = load float* %scevgep19, align 4 ; [#uses=1]
+ store float %74, float* %73, align 4
+ %75 = add nsw i32 %clipped_count.3, 1 ; [#uses=1]
+ br label %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit10
+
+_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit10: ; preds = %bb5.i8, %bb1.i7
+ %clipped_count.4 = phi i32 [ %75, %bb5.i8 ], [ %clipped_count.3, %bb1.i7 ] ; [#uses=2]
+ %exitcond = icmp eq i32 %tmp15, %tmp ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb2
+
+bb4: ; preds = %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit10, %bb3.preheader
+ %olddist.0.lcssa = phi float [ %19, %bb3.preheader ], [ %42, %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit10 ] ; [#uses=3]
+ %clipped_count.0.lcssa = phi i32 [ %clipped_count.0.ph, %bb3.preheader ], [ %clipped_count.4, %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit10 ] ; [#uses=6]
+ %76 = add nsw i32 %polygon_point_count, -1 ; [#uses=3]
+ %77 = fcmp ogt float %olddist.0.lcssa, 0x3E80000000000000 ; [#uses=1]
+ %78 = fcmp ogt float %19, 0x3E80000000000000 ; [#uses=2]
+ %79 = xor i1 %78, %77 ; [#uses=1]
+ br i1 %79, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb4
+ %80 = fsub float -0.000000e+00, %olddist.0.lcssa ; [#uses=1]
+ %81 = fsub float %19, %olddist.0.lcssa ; [#uses=1]
+ %82 = fdiv float %80, %81 ; [#uses=4]
+ %83 = load float* %11, align 4 ; [#uses=1]
+ %84 = fmul float %83, %82 ; [#uses=1]
+ %85 = load float* %5, align 4 ; [#uses=1]
+ %86 = fmul float %85, %82 ; [#uses=1]
+ %87 = load float* %0, align 4 ; [#uses=1]
+ %88 = fmul float %87, %82 ; [#uses=1]
+ %89 = fsub float 1.000000e+00, %82 ; [#uses=3]
+ %90 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 %76, i32 0, i32 2 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = fmul float %91, %89 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 %76, i32 0, i32 1 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = fmul float %94, %89 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 %76, i32 0, i32 0 ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ %98 = fmul float %97, %89 ; [#uses=1]
+ %99 = fadd float %92, %84 ; [#uses=1]
+ %100 = fadd float %95, %86 ; [#uses=1]
+ %101 = fadd float %98, %88 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0.lcssa, i32 0, i32 0 ; [#uses=1]
+ store float %101, float* %102, align 4
+ %103 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0.lcssa, i32 0, i32 1 ; [#uses=1]
+ store float %100, float* %103, align 4
+ %104 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0.lcssa, i32 0, i32 2 ; [#uses=1]
+ store float %99, float* %104, align 4
+ %105 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0.lcssa, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %105, align 4
+ %106 = add nsw i32 %clipped_count.0.lcssa, 1 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %bb.i, %bb4
+ %clipped_count.1 = phi i32 [ %106, %bb.i ], [ %clipped_count.0.lcssa, %bb4 ] ; [#uses=6]
+ br i1 %78, label %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit, label %bb5.i
+
+bb5.i: ; preds = %bb1.i
+ %107 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 0 ; [#uses=1]
+ %108 = load float* %0, align 4 ; [#uses=1]
+ store float %108, float* %107, align 4
+ %109 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 1 ; [#uses=1]
+ %110 = load float* %5, align 4 ; [#uses=1]
+ store float %110, float* %109, align 4
+ %111 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 2 ; [#uses=1]
+ %112 = load float* %11, align 4 ; [#uses=1]
+ store float %112, float* %111, align 4
+ %113 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 3 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 0, i32 0, i32 3 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=1]
+ store float %115, float* %113, align 4
+ %116 = add nsw i32 %clipped_count.1, 1 ; [#uses=1]
+ ret i32 %116
+
+_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit: ; preds = %bb1.i
+ ret i32 %clipped_count.1
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_Z22bt_plane_clip_triangleRK9btVector4RK9btVector3S4_S4_PS2_(%struct.btQuaternion* nocapture %plane, %struct.btQuadWord* nocapture %point0, %struct.btQuadWord* nocapture %point1, %struct.btQuadWord* nocapture %point2, %struct.btQuadWord* %clipped) nounwind inlinehint {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %point0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %point0, i32 0, i32 0, i32 1 ; [#uses=5]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %point0, i32 0, i32 0, i32 2 ; [#uses=5]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=3]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ %19 = fsub float %16, %18 ; [#uses=5]
+ %20 = fcmp ule float %19, 0x3E80000000000000 ; [#uses=1]
+ br i1 %20, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %21 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %5, align 4 ; [#uses=1]
+ store float %23, float* %22, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %11, align 4 ; [#uses=1]
+ store float %25, float* %24, align 4
+ %26 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %point0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %.pre = load float* %2, align 4 ; [#uses=1]
+ %.pre13 = load float* %7, align 4 ; [#uses=1]
+ %.pre14 = load float* %13, align 4 ; [#uses=1]
+ %.pre15 = load float* %17, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %29 = phi float [ %.pre15, %bb ], [ %18, %entry ] ; [#uses=1]
+ %30 = phi float [ %.pre14, %bb ], [ %14, %entry ] ; [#uses=1]
+ %31 = phi float [ %.pre13, %bb ], [ %8, %entry ] ; [#uses=1]
+ %32 = phi float [ %.pre, %bb ], [ %3, %entry ] ; [#uses=1]
+ %clipped_count.0 = phi i32 [ 1, %bb ], [ 0, %entry ] ; [#uses=6]
+ %33 = getelementptr inbounds %struct.btQuadWord* %point1, i32 0, i32 0, i32 0 ; [#uses=3]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ %35 = fmul float %34, %32 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuadWord* %point1, i32 0, i32 0, i32 1 ; [#uses=3]
+ %37 = load float* %36, align 4 ; [#uses=2]
+ %38 = fmul float %37, %31 ; [#uses=1]
+ %39 = fadd float %35, %38 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuadWord* %point1, i32 0, i32 0, i32 2 ; [#uses=3]
+ %41 = load float* %40, align 4 ; [#uses=2]
+ %42 = fmul float %41, %30 ; [#uses=1]
+ %43 = fadd float %39, %42 ; [#uses=1]
+ %44 = fsub float %43, %29 ; [#uses=4]
+ %45 = fcmp ogt float %19, 0x3E80000000000000 ; [#uses=4]
+ %46 = fcmp ogt float %44, 0x3E80000000000000 ; [#uses=3]
+ %47 = xor i1 %46, %45 ; [#uses=1]
+ br i1 %47, label %bb.i8, label %bb1.i9
+
+bb.i8: ; preds = %bb1
+ %48 = fsub float -0.000000e+00, %19 ; [#uses=1]
+ %49 = fsub float %44, %19 ; [#uses=1]
+ %50 = fdiv float %48, %49 ; [#uses=4]
+ %51 = fmul float %41, %50 ; [#uses=1]
+ %52 = fmul float %37, %50 ; [#uses=1]
+ %53 = fmul float %34, %50 ; [#uses=1]
+ %54 = fsub float 1.000000e+00, %50 ; [#uses=3]
+ %55 = load float* %11, align 4 ; [#uses=1]
+ %56 = fmul float %55, %54 ; [#uses=1]
+ %57 = load float* %5, align 4 ; [#uses=1]
+ %58 = fmul float %57, %54 ; [#uses=1]
+ %59 = load float* %0, align 4 ; [#uses=1]
+ %60 = fmul float %59, %54 ; [#uses=1]
+ %61 = fadd float %56, %51 ; [#uses=1]
+ %62 = fadd float %58, %52 ; [#uses=1]
+ %63 = fadd float %60, %53 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0, i32 0, i32 0 ; [#uses=1]
+ store float %63, float* %64, align 4
+ %65 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0, i32 0, i32 1 ; [#uses=1]
+ store float %62, float* %65, align 4
+ %66 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0, i32 0, i32 2 ; [#uses=1]
+ store float %61, float* %66, align 4
+ %67 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %67, align 4
+ %68 = add nsw i32 %clipped_count.0, 1 ; [#uses=1]
+ br label %bb1.i9
+
+bb1.i9: ; preds = %bb.i8, %bb1
+ %clipped_count.5 = phi i32 [ %68, %bb.i8 ], [ %clipped_count.0, %bb1 ] ; [#uses=6]
+ br i1 %46, label %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit12, label %bb5.i10
+
+bb5.i10: ; preds = %bb1.i9
+ %69 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.5, i32 0, i32 0 ; [#uses=1]
+ %70 = load float* %33, align 4 ; [#uses=1]
+ store float %70, float* %69, align 4
+ %71 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.5, i32 0, i32 1 ; [#uses=1]
+ %72 = load float* %36, align 4 ; [#uses=1]
+ store float %72, float* %71, align 4
+ %73 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.5, i32 0, i32 2 ; [#uses=1]
+ %74 = load float* %40, align 4 ; [#uses=1]
+ store float %74, float* %73, align 4
+ %75 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.5, i32 0, i32 3 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btQuadWord* %point1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ store float %77, float* %75, align 4
+ %78 = add nsw i32 %clipped_count.5, 1 ; [#uses=1]
+ br label %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit12
+
+_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit12: ; preds = %bb5.i10, %bb1.i9
+ %clipped_count.6 = phi i32 [ %78, %bb5.i10 ], [ %clipped_count.5, %bb1.i9 ] ; [#uses=6]
+ %79 = getelementptr inbounds %struct.btQuadWord* %point2, i32 0, i32 0, i32 0 ; [#uses=3]
+ %80 = load float* %79, align 4 ; [#uses=2]
+ %81 = load float* %2, align 4 ; [#uses=1]
+ %82 = fmul float %80, %81 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btQuadWord* %point2, i32 0, i32 0, i32 1 ; [#uses=3]
+ %84 = load float* %83, align 4 ; [#uses=2]
+ %85 = load float* %7, align 4 ; [#uses=1]
+ %86 = fmul float %84, %85 ; [#uses=1]
+ %87 = fadd float %82, %86 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btQuadWord* %point2, i32 0, i32 0, i32 2 ; [#uses=3]
+ %89 = load float* %88, align 4 ; [#uses=2]
+ %90 = load float* %13, align 4 ; [#uses=1]
+ %91 = fmul float %89, %90 ; [#uses=1]
+ %92 = fadd float %87, %91 ; [#uses=1]
+ %93 = load float* %17, align 4 ; [#uses=1]
+ %94 = fsub float %92, %93 ; [#uses=4]
+ %95 = fcmp ogt float %94, 0x3E80000000000000 ; [#uses=4]
+ %96 = xor i1 %95, %46 ; [#uses=1]
+ br i1 %96, label %bb.i3, label %bb1.i4
+
+bb.i3: ; preds = %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit12
+ %97 = fsub float -0.000000e+00, %44 ; [#uses=1]
+ %98 = fsub float %94, %44 ; [#uses=1]
+ %99 = fdiv float %97, %98 ; [#uses=4]
+ %100 = fmul float %89, %99 ; [#uses=1]
+ %101 = fmul float %84, %99 ; [#uses=1]
+ %102 = fmul float %80, %99 ; [#uses=1]
+ %103 = fsub float 1.000000e+00, %99 ; [#uses=3]
+ %104 = load float* %40, align 4 ; [#uses=1]
+ %105 = fmul float %104, %103 ; [#uses=1]
+ %106 = load float* %36, align 4 ; [#uses=1]
+ %107 = fmul float %106, %103 ; [#uses=1]
+ %108 = load float* %33, align 4 ; [#uses=1]
+ %109 = fmul float %108, %103 ; [#uses=1]
+ %110 = fadd float %105, %100 ; [#uses=1]
+ %111 = fadd float %107, %101 ; [#uses=1]
+ %112 = fadd float %109, %102 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.6, i32 0, i32 0 ; [#uses=1]
+ store float %112, float* %113, align 4
+ %114 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.6, i32 0, i32 1 ; [#uses=1]
+ store float %111, float* %114, align 4
+ %115 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.6, i32 0, i32 2 ; [#uses=1]
+ store float %110, float* %115, align 4
+ %116 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.6, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %116, align 4
+ %117 = add nsw i32 %clipped_count.6, 1 ; [#uses=1]
+ br label %bb1.i4
+
+bb1.i4: ; preds = %bb.i3, %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit12
+ %clipped_count.3 = phi i32 [ %117, %bb.i3 ], [ %clipped_count.6, %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit12 ] ; [#uses=7]
+ br i1 %95, label %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit7, label %bb5.i5
+
+bb5.i5: ; preds = %bb1.i4
+ %118 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 0 ; [#uses=1]
+ %119 = load float* %79, align 4 ; [#uses=1]
+ store float %119, float* %118, align 4
+ %120 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 1 ; [#uses=1]
+ %121 = load float* %83, align 4 ; [#uses=1]
+ store float %121, float* %120, align 4
+ %122 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 2 ; [#uses=1]
+ %123 = load float* %88, align 4 ; [#uses=1]
+ store float %123, float* %122, align 4
+ %124 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 3 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btQuadWord* %point2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %126 = load float* %125, align 4 ; [#uses=1]
+ store float %126, float* %124, align 4
+ %127 = add nsw i32 %clipped_count.3, 1 ; [#uses=2]
+ %128 = xor i1 %45, %95 ; [#uses=1]
+ br i1 %128, label %bb.i, label %bb1.i
+
+_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit7: ; preds = %bb1.i4
+ %129 = xor i1 %45, %95 ; [#uses=1]
+ br i1 %129, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit7, %bb5.i5
+ %clipped_count.416 = phi i32 [ %127, %bb5.i5 ], [ %clipped_count.3, %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit7 ] ; [#uses=5]
+ %130 = fsub float -0.000000e+00, %94 ; [#uses=1]
+ %131 = fsub float %19, %94 ; [#uses=1]
+ %132 = fdiv float %130, %131 ; [#uses=4]
+ %133 = load float* %11, align 4 ; [#uses=1]
+ %134 = fmul float %133, %132 ; [#uses=1]
+ %135 = load float* %5, align 4 ; [#uses=1]
+ %136 = fmul float %135, %132 ; [#uses=1]
+ %137 = load float* %0, align 4 ; [#uses=1]
+ %138 = fmul float %137, %132 ; [#uses=1]
+ %139 = fsub float 1.000000e+00, %132 ; [#uses=3]
+ %140 = load float* %88, align 4 ; [#uses=1]
+ %141 = fmul float %140, %139 ; [#uses=1]
+ %142 = load float* %83, align 4 ; [#uses=1]
+ %143 = fmul float %142, %139 ; [#uses=1]
+ %144 = load float* %79, align 4 ; [#uses=1]
+ %145 = fmul float %144, %139 ; [#uses=1]
+ %146 = fadd float %141, %134 ; [#uses=1]
+ %147 = fadd float %143, %136 ; [#uses=1]
+ %148 = fadd float %145, %138 ; [#uses=1]
+ %149 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.416, i32 0, i32 0 ; [#uses=1]
+ store float %148, float* %149, align 4
+ %150 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.416, i32 0, i32 1 ; [#uses=1]
+ store float %147, float* %150, align 4
+ %151 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.416, i32 0, i32 2 ; [#uses=1]
+ store float %146, float* %151, align 4
+ %152 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.416, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %152, align 4
+ %153 = add nsw i32 %clipped_count.416, 1 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %bb.i, %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit7, %bb5.i5
+ %clipped_count.1 = phi i32 [ %153, %bb.i ], [ %clipped_count.3, %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit7 ], [ %127, %bb5.i5 ] ; [#uses=6]
+ br i1 %45, label %_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit, label %bb5.i
+
+bb5.i: ; preds = %bb1.i
+ %154 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 0 ; [#uses=1]
+ %155 = load float* %0, align 4 ; [#uses=1]
+ store float %155, float* %154, align 4
+ %156 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 1 ; [#uses=1]
+ %157 = load float* %5, align 4 ; [#uses=1]
+ store float %157, float* %156, align 4
+ %158 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 2 ; [#uses=1]
+ %159 = load float* %11, align 4 ; [#uses=1]
+ store float %159, float* %158, align 4
+ %160 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 3 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btQuadWord* %point0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ store float %162, float* %160, align 4
+ %163 = add nsw i32 %clipped_count.1, 1 ; [#uses=1]
+ ret i32 %163
+
+_Z29bt_plane_clip_polygon_collectRK9btVector3S1_ffPS_Ri.exit: ; preds = %bb1.i
+ ret i32 %clipped_count.1
+}
+
+; [#uses=1]
+define zeroext i8 @_ZN19btPrimitiveTriangle25overlap_test_conservativeERKS_(%struct.btPrimitiveTriangle* nocapture %this, %struct.btPrimitiveTriangle* nocapture %other) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fadd float %1, %3 ; [#uses=6]
+ %5 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = fmul float %11, %13 ; [#uses=1]
+ %15 = fadd float %9, %14 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=3]
+ %20 = fmul float %17, %19 ; [#uses=1]
+ %21 = fadd float %15, %20 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=3]
+ %24 = fsub float %21, %23 ; [#uses=1]
+ %25 = fsub float %24, %4 ; [#uses=1]
+ %26 = fcmp ogt float %25, 0.000000e+00 ; [#uses=1]
+ br i1 %26, label %bb, label %bb3
+
+bb: ; preds = %entry
+ %27 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %27, align 4 ; [#uses=1]
+ %31 = load float* %28, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %29, align 4 ; [#uses=1]
+ %35 = fmul float %30, %13 ; [#uses=1]
+ %36 = fmul float %31, %8 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %32, align 4 ; [#uses=1]
+ %39 = load float* %33, align 4 ; [#uses=1]
+ %40 = fmul float %34, %19 ; [#uses=1]
+ %41 = fadd float %36, %35 ; [#uses=1]
+ %42 = load float* %37, align 4 ; [#uses=1]
+ %43 = fmul float %38, %13 ; [#uses=1]
+ %44 = fmul float %39, %8 ; [#uses=1]
+ %45 = fadd float %41, %40 ; [#uses=1]
+ %46 = fmul float %42, %19 ; [#uses=1]
+ %47 = fadd float %44, %43 ; [#uses=1]
+ %48 = fsub float %45, %23 ; [#uses=1]
+ %49 = fadd float %47, %46 ; [#uses=1]
+ %50 = fsub float %48, %4 ; [#uses=1]
+ %51 = fsub float %49, %23 ; [#uses=1]
+ %52 = fsub float %51, %4 ; [#uses=1]
+ %53 = fcmp ogt float %52, 0.000000e+00 ; [#uses=1]
+ %54 = fcmp ogt float %50, 0.000000e+00 ; [#uses=1]
+ %or.cond = and i1 %53, %54 ; [#uses=1]
+ br i1 %or.cond, label %bb8, label %bb3
+
+bb3: ; preds = %bb, %entry
+ %55 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=3]
+ %59 = fmul float %56, %58 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=3]
+ %64 = fmul float %61, %63 ; [#uses=1]
+ %65 = fadd float %59, %64 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=3]
+ %70 = fmul float %67, %69 ; [#uses=1]
+ %71 = fadd float %65, %70 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=3]
+ %74 = fsub float %71, %73 ; [#uses=1]
+ %75 = fsub float %74, %4 ; [#uses=1]
+ %76 = fcmp ogt float %75, 0.000000e+00 ; [#uses=1]
+ br i1 %76, label %bb4, label %bb7
+
+bb4: ; preds = %bb3
+ %77 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %80 = load float* %77, align 4 ; [#uses=1]
+ %81 = load float* %78, align 4 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %84 = load float* %79, align 4 ; [#uses=1]
+ %85 = fmul float %80, %63 ; [#uses=1]
+ %86 = fmul float %81, %58 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %88 = load float* %82, align 4 ; [#uses=1]
+ %89 = load float* %83, align 4 ; [#uses=1]
+ %90 = fmul float %84, %69 ; [#uses=1]
+ %91 = fadd float %86, %85 ; [#uses=1]
+ %92 = load float* %87, align 4 ; [#uses=1]
+ %93 = fmul float %88, %63 ; [#uses=1]
+ %94 = fmul float %89, %58 ; [#uses=1]
+ %95 = fadd float %91, %90 ; [#uses=1]
+ %96 = fmul float %92, %69 ; [#uses=1]
+ %97 = fadd float %94, %93 ; [#uses=1]
+ %98 = fsub float %95, %73 ; [#uses=1]
+ %99 = fadd float %97, %96 ; [#uses=1]
+ %100 = fsub float %98, %4 ; [#uses=1]
+ %101 = fsub float %99, %73 ; [#uses=1]
+ %102 = fsub float %101, %4 ; [#uses=1]
+ %103 = fcmp ogt float %102, 0.000000e+00 ; [#uses=1]
+ %104 = fcmp ogt float %100, 0.000000e+00 ; [#uses=1]
+ %or.cond11 = and i1 %103, %104 ; [#uses=1]
+ %105 = zext i1 %or.cond11 to i8 ; [#uses=1]
+ %retval = xor i8 %105, 1 ; [#uses=1]
+ ret i8 %retval
+
+bb7: ; preds = %bb3
+ ret i8 1
+
+bb8: ; preds = %bb
+ ret i8 0
+}
+
+; [#uses=1]
+define zeroext i8 @_ZN17btTriangleShapeEx25overlap_test_conservativeERKS_(%struct.btTriangleShapeEx* %this, %struct.btTriangleShapeEx* %other) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 11 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = bitcast i32 (...)* %3 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %6 = tail call float %5(%struct.btConvexInternalShape* %4) ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTriangleShapeEx* %other, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = load i32 (...)*** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 11 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTriangleShapeEx* %other, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = bitcast i32 (...)* %10 to float (%struct.btConvexInternalShape*)* ; [#uses=1]
+ %13 = tail call float %12(%struct.btConvexInternalShape* %11) ; [#uses=1]
+ %14 = fadd float %6, %13 ; [#uses=6]
+ %15 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=4]
+ %19 = fsub float %16, %18 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=4]
+ %24 = fsub float %21, %23 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=2]
+ %27 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=4]
+ %29 = fsub float %26, %28 ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=2]
+ %32 = fsub float %31, %18 ; [#uses=2]
+ %33 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ %35 = fsub float %34, %23 ; [#uses=2]
+ %36 = getelementptr inbounds %struct.btTriangleShapeEx* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=2]
+ %38 = fsub float %37, %28 ; [#uses=2]
+ %39 = fmul float %38, %24 ; [#uses=1]
+ %40 = fmul float %35, %29 ; [#uses=1]
+ %41 = fsub float %39, %40 ; [#uses=3]
+ %42 = fmul float %32, %29 ; [#uses=1]
+ %43 = fmul float %38, %19 ; [#uses=1]
+ %44 = fsub float %42, %43 ; [#uses=3]
+ %45 = fmul float %35, %19 ; [#uses=1]
+ %46 = fmul float %32, %24 ; [#uses=1]
+ %47 = fsub float %45, %46 ; [#uses=3]
+ %48 = fmul float %47, %47 ; [#uses=1]
+ %49 = fmul float %44, %44 ; [#uses=1]
+ %50 = fadd float %48, %49 ; [#uses=1]
+ %51 = fmul float %41, %41 ; [#uses=1]
+ %52 = fadd float %50, %51 ; [#uses=1]
+ %53 = tail call float @sqrtf(float %52) nounwind readonly ; [#uses=1]
+ %54 = fdiv float 1.000000e+00, %53 ; [#uses=3]
+ %55 = fmul float %47, %54 ; [#uses=4]
+ %56 = fmul float %44, %54 ; [#uses=4]
+ %57 = fmul float %41, %54 ; [#uses=4]
+ %58 = fmul float %28, %55 ; [#uses=1]
+ %59 = fmul float %23, %56 ; [#uses=1]
+ %60 = fadd float %58, %59 ; [#uses=1]
+ %61 = fmul float %18, %57 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=3]
+ %63 = getelementptr inbounds %struct.btTriangleShapeEx* %other, i32 0, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=2]
+ %65 = getelementptr inbounds %struct.btTriangleShapeEx* %other, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=4]
+ %67 = fsub float %64, %66 ; [#uses=2]
+ %68 = getelementptr inbounds %struct.btTriangleShapeEx* %other, i32 0, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=2]
+ %70 = getelementptr inbounds %struct.btTriangleShapeEx* %other, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=4]
+ %72 = fsub float %69, %71 ; [#uses=2]
+ %73 = getelementptr inbounds %struct.btTriangleShapeEx* %other, i32 0, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=2]
+ %75 = getelementptr inbounds %struct.btTriangleShapeEx* %other, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=4]
+ %77 = fsub float %74, %76 ; [#uses=2]
+ %78 = getelementptr inbounds %struct.btTriangleShapeEx* %other, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=2]
+ %80 = fsub float %79, %66 ; [#uses=2]
+ %81 = getelementptr inbounds %struct.btTriangleShapeEx* %other, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=2]
+ %83 = fsub float %82, %71 ; [#uses=2]
+ %84 = getelementptr inbounds %struct.btTriangleShapeEx* %other, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=2]
+ %86 = fsub float %85, %76 ; [#uses=2]
+ %87 = fmul float %86, %72 ; [#uses=1]
+ %88 = fmul float %83, %77 ; [#uses=1]
+ %89 = fsub float %87, %88 ; [#uses=3]
+ %90 = fmul float %80, %77 ; [#uses=1]
+ %91 = fmul float %86, %67 ; [#uses=1]
+ %92 = fsub float %90, %91 ; [#uses=3]
+ %93 = fmul float %83, %67 ; [#uses=1]
+ %94 = fmul float %80, %72 ; [#uses=1]
+ %95 = fsub float %93, %94 ; [#uses=3]
+ %96 = fmul float %95, %95 ; [#uses=1]
+ %97 = fmul float %92, %92 ; [#uses=1]
+ %98 = fadd float %96, %97 ; [#uses=1]
+ %99 = fmul float %89, %89 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = tail call float @sqrtf(float %100) nounwind readonly ; [#uses=1]
+ %102 = fdiv float 1.000000e+00, %101 ; [#uses=3]
+ %103 = fmul float %95, %102 ; [#uses=4]
+ %104 = fmul float %92, %102 ; [#uses=4]
+ %105 = fmul float %89, %102 ; [#uses=4]
+ %106 = fmul float %76, %103 ; [#uses=1]
+ %107 = fmul float %71, %104 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fmul float %66, %105 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=3]
+ %111 = fmul float %76, %55 ; [#uses=1]
+ %112 = fmul float %71, %56 ; [#uses=1]
+ %113 = fadd float %111, %112 ; [#uses=1]
+ %114 = fmul float %66, %57 ; [#uses=1]
+ %115 = fadd float %113, %114 ; [#uses=1]
+ %116 = fsub float %115, %62 ; [#uses=1]
+ %117 = fsub float %116, %14 ; [#uses=1]
+ %118 = fcmp ogt float %117, 0.000000e+00 ; [#uses=1]
+ br i1 %118, label %bb, label %bb3
+
+bb: ; preds = %entry
+ %119 = fmul float %69, %56 ; [#uses=1]
+ %120 = fmul float %74, %55 ; [#uses=1]
+ %121 = fmul float %64, %57 ; [#uses=1]
+ %122 = fadd float %120, %119 ; [#uses=1]
+ %123 = fmul float %82, %56 ; [#uses=1]
+ %124 = fmul float %85, %55 ; [#uses=1]
+ %125 = fadd float %122, %121 ; [#uses=1]
+ %126 = fmul float %79, %57 ; [#uses=1]
+ %127 = fadd float %124, %123 ; [#uses=1]
+ %128 = fsub float %125, %62 ; [#uses=1]
+ %129 = fadd float %127, %126 ; [#uses=1]
+ %130 = fsub float %128, %14 ; [#uses=1]
+ %131 = fsub float %129, %62 ; [#uses=1]
+ %132 = fsub float %131, %14 ; [#uses=1]
+ %133 = fcmp ogt float %132, 0.000000e+00 ; [#uses=1]
+ %134 = fcmp ogt float %130, 0.000000e+00 ; [#uses=1]
+ %or.cond = and i1 %133, %134 ; [#uses=1]
+ br i1 %or.cond, label %bb8, label %bb3
+
+bb3: ; preds = %bb, %entry
+ %135 = fmul float %28, %103 ; [#uses=1]
+ %136 = fmul float %23, %104 ; [#uses=1]
+ %137 = fadd float %135, %136 ; [#uses=1]
+ %138 = fmul float %18, %105 ; [#uses=1]
+ %139 = fadd float %137, %138 ; [#uses=1]
+ %140 = fsub float %139, %110 ; [#uses=1]
+ %141 = fsub float %140, %14 ; [#uses=1]
+ %142 = fcmp ogt float %141, 0.000000e+00 ; [#uses=1]
+ br i1 %142, label %bb4, label %bb7
+
+bb4: ; preds = %bb3
+ %143 = fmul float %21, %104 ; [#uses=1]
+ %144 = fmul float %26, %103 ; [#uses=1]
+ %145 = fmul float %16, %105 ; [#uses=1]
+ %146 = fadd float %144, %143 ; [#uses=1]
+ %147 = fmul float %34, %104 ; [#uses=1]
+ %148 = fmul float %37, %103 ; [#uses=1]
+ %149 = fadd float %146, %145 ; [#uses=1]
+ %150 = fmul float %31, %105 ; [#uses=1]
+ %151 = fadd float %148, %147 ; [#uses=1]
+ %152 = fsub float %149, %110 ; [#uses=1]
+ %153 = fadd float %151, %150 ; [#uses=1]
+ %154 = fsub float %152, %14 ; [#uses=1]
+ %155 = fsub float %153, %110 ; [#uses=1]
+ %156 = fsub float %155, %14 ; [#uses=1]
+ %157 = fcmp ogt float %156, 0.000000e+00 ; [#uses=1]
+ %158 = fcmp ogt float %154, 0.000000e+00 ; [#uses=1]
+ %or.cond11 = and i1 %157, %158 ; [#uses=1]
+ %159 = zext i1 %or.cond11 to i8 ; [#uses=1]
+ %retval = xor i8 %159, 1 ; [#uses=1]
+ ret i8 %retval
+
+bb7: ; preds = %bb3
+ ret i8 1
+
+bb8: ; preds = %bb
+ ret i8 0
+}
+
+; [#uses=2]
+define i32 @_ZN19btPrimitiveTriangle13clip_triangleERS_P9btVector3(%struct.btPrimitiveTriangle* %this, %struct.btPrimitiveTriangle* nocapture %other, %struct.btQuadWord* nocapture %clipped_points) nounwind align 2 {
+bb2:
+ %temp_points = alloca [16 x %struct.btQuadWord], align 8 ; [#uses=1]
+ %edgeplane = alloca %struct.btQuaternion, align 8 ; [#uses=7]
+ %temp_points1 = alloca [16 x %struct.btQuadWord], align 8 ; [#uses=1]
+ %0 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fsub float %1, %3 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fsub float %6, %8 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fsub float %11, %13 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=3]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = fmul float %14, %16 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=3]
+ %19 = load float* %18, align 4 ; [#uses=2]
+ %20 = fmul float %9, %19 ; [#uses=1]
+ %21 = fsub float %17, %20 ; [#uses=3]
+ %22 = fmul float %4, %19 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=3]
+ %24 = load float* %23, align 4 ; [#uses=2]
+ %25 = fmul float %14, %24 ; [#uses=1]
+ %26 = fsub float %22, %25 ; [#uses=3]
+ %27 = fmul float %9, %24 ; [#uses=1]
+ %28 = fmul float %4, %16 ; [#uses=1]
+ %29 = fsub float %27, %28 ; [#uses=3]
+ %30 = fmul float %29, %29 ; [#uses=1]
+ %31 = fmul float %26, %26 ; [#uses=1]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = fmul float %21, %21 ; [#uses=1]
+ %34 = fadd float %32, %33 ; [#uses=1]
+ %35 = call float @sqrtf(float %34) nounwind readonly ; [#uses=1]
+ %36 = fdiv float 1.000000e+00, %35 ; [#uses=3]
+ %37 = fmul float %29, %36 ; [#uses=2]
+ %38 = fmul float %26, %36 ; [#uses=2]
+ %39 = fmul float %21, %36 ; [#uses=2]
+ %40 = fmul float %11, %37 ; [#uses=1]
+ %41 = fmul float %6, %38 ; [#uses=1]
+ %42 = fadd float %40, %41 ; [#uses=1]
+ %43 = fmul float %1, %39 ; [#uses=1]
+ %44 = fadd float %42, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btQuaternion* %edgeplane, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %37, float* %45, align 8
+ %46 = getelementptr inbounds %struct.btQuaternion* %edgeplane, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %38, float* %46, align 4
+ %47 = getelementptr inbounds %struct.btQuaternion* %edgeplane, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %39, float* %47, align 8
+ %48 = getelementptr inbounds %struct.btQuaternion* %edgeplane, i32 0, i32 0, i32 0, i32 3 ; [#uses=3]
+ store float %44, float* %48, align 4
+ %49 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 0, i32 2 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 0, i32 1 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 0, i32 0 ; [#uses=1]
+ %52 = getelementptr inbounds [16 x %struct.btQuadWord]* %temp_points, i32 0, i32 0 ; [#uses=2]
+ %53 = call i32 @_Z22bt_plane_clip_triangleRK9btVector4RK9btVector3S4_S4_PS2_(%struct.btQuaternion* %edgeplane, %struct.btQuadWord* %51, %struct.btQuadWord* %50, %struct.btQuadWord* %49, %struct.btQuadWord* %52) nounwind ; [#uses=2]
+ %54 = icmp eq i32 %53, 0 ; [#uses=1]
+ br i1 %54, label %bb10, label %bb7
+
+bb7: ; preds = %bb2
+ %55 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %56 = load float* %55, align 4 ; [#uses=2]
+ %57 = load float* %0, align 4 ; [#uses=1]
+ %58 = fsub float %56, %57 ; [#uses=2]
+ %59 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %60 = load float* %59, align 4 ; [#uses=2]
+ %61 = load float* %5, align 4 ; [#uses=1]
+ %62 = fsub float %60, %61 ; [#uses=2]
+ %63 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %64 = load float* %63, align 4 ; [#uses=2]
+ %65 = load float* %10, align 4 ; [#uses=1]
+ %66 = fsub float %64, %65 ; [#uses=2]
+ %67 = load float* %15, align 4 ; [#uses=2]
+ %68 = fmul float %66, %67 ; [#uses=1]
+ %69 = load float* %18, align 4 ; [#uses=2]
+ %70 = fmul float %62, %69 ; [#uses=1]
+ %71 = fsub float %68, %70 ; [#uses=3]
+ %72 = fmul float %58, %69 ; [#uses=1]
+ %73 = load float* %23, align 4 ; [#uses=2]
+ %74 = fmul float %66, %73 ; [#uses=1]
+ %75 = fsub float %72, %74 ; [#uses=3]
+ %76 = fmul float %62, %73 ; [#uses=1]
+ %77 = fmul float %58, %67 ; [#uses=1]
+ %78 = fsub float %76, %77 ; [#uses=3]
+ %79 = fmul float %78, %78 ; [#uses=1]
+ %80 = fmul float %75, %75 ; [#uses=1]
+ %81 = fadd float %79, %80 ; [#uses=1]
+ %82 = fmul float %71, %71 ; [#uses=1]
+ %83 = fadd float %81, %82 ; [#uses=1]
+ %84 = call float @sqrtf(float %83) nounwind readonly ; [#uses=1]
+ %85 = fdiv float 1.000000e+00, %84 ; [#uses=3]
+ %86 = fmul float %78, %85 ; [#uses=2]
+ %87 = fmul float %75, %85 ; [#uses=2]
+ %88 = fmul float %71, %85 ; [#uses=2]
+ %89 = fmul float %64, %86 ; [#uses=1]
+ %90 = fmul float %60, %87 ; [#uses=1]
+ %91 = fadd float %89, %90 ; [#uses=1]
+ %92 = fmul float %56, %88 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ store float %86, float* %45, align 8
+ store float %87, float* %46, align 4
+ store float %88, float* %47, align 8
+ store float %93, float* %48, align 4
+ %94 = getelementptr inbounds [16 x %struct.btQuadWord]* %temp_points1, i32 0, i32 0 ; [#uses=2]
+ %95 = call i32 @_Z21bt_plane_clip_polygonRK9btVector4PK9btVector3iPS2_(%struct.btQuaternion* %edgeplane, %struct.btQuadWord* %52, i32 %53, %struct.btQuadWord* %94) nounwind ; [#uses=2]
+ %96 = icmp eq i32 %95, 0 ; [#uses=1]
+ br i1 %96, label %bb10, label %bb9
+
+bb9: ; preds = %bb7
+ %97 = load float* %2, align 4 ; [#uses=2]
+ %98 = load float* %55, align 4 ; [#uses=1]
+ %99 = fsub float %97, %98 ; [#uses=2]
+ %100 = load float* %7, align 4 ; [#uses=2]
+ %101 = load float* %59, align 4 ; [#uses=1]
+ %102 = fsub float %100, %101 ; [#uses=2]
+ %103 = load float* %12, align 4 ; [#uses=2]
+ %104 = load float* %63, align 4 ; [#uses=1]
+ %105 = fsub float %103, %104 ; [#uses=2]
+ %106 = load float* %15, align 4 ; [#uses=2]
+ %107 = fmul float %105, %106 ; [#uses=1]
+ %108 = load float* %18, align 4 ; [#uses=2]
+ %109 = fmul float %102, %108 ; [#uses=1]
+ %110 = fsub float %107, %109 ; [#uses=3]
+ %111 = fmul float %99, %108 ; [#uses=1]
+ %112 = load float* %23, align 4 ; [#uses=2]
+ %113 = fmul float %105, %112 ; [#uses=1]
+ %114 = fsub float %111, %113 ; [#uses=3]
+ %115 = fmul float %102, %112 ; [#uses=1]
+ %116 = fmul float %99, %106 ; [#uses=1]
+ %117 = fsub float %115, %116 ; [#uses=3]
+ %118 = fmul float %117, %117 ; [#uses=1]
+ %119 = fmul float %114, %114 ; [#uses=1]
+ %120 = fadd float %118, %119 ; [#uses=1]
+ %121 = fmul float %110, %110 ; [#uses=1]
+ %122 = fadd float %120, %121 ; [#uses=1]
+ %123 = call float @sqrtf(float %122) nounwind readonly ; [#uses=1]
+ %124 = fdiv float 1.000000e+00, %123 ; [#uses=3]
+ %125 = fmul float %117, %124 ; [#uses=2]
+ %126 = fmul float %114, %124 ; [#uses=2]
+ %127 = fmul float %110, %124 ; [#uses=2]
+ %128 = fmul float %103, %125 ; [#uses=1]
+ %129 = fmul float %100, %126 ; [#uses=1]
+ %130 = fadd float %128, %129 ; [#uses=1]
+ %131 = fmul float %97, %127 ; [#uses=1]
+ %132 = fadd float %130, %131 ; [#uses=1]
+ store float %125, float* %45, align 8
+ store float %126, float* %46, align 4
+ store float %127, float* %47, align 8
+ store float %132, float* %48, align 4
+ %133 = call i32 @_Z21bt_plane_clip_polygonRK9btVector4PK9btVector3iPS2_(%struct.btQuaternion* %edgeplane, %struct.btQuadWord* %94, i32 %95, %struct.btQuadWord* %clipped_points) nounwind ; [#uses=1]
+ ret i32 %133
+
+bb10: ; preds = %bb7, %bb2
+ ret i32 0
+}
+
+; [#uses=1]
+define zeroext i8 @_ZN19btPrimitiveTriangle35find_triangle_collision_clip_methodERS_R20GIM_TRIANGLE_CONTACT(%struct.btPrimitiveTriangle* %this, %struct.btPrimitiveTriangle* %other, %struct.GIM_TRIANGLE_CONTACT* nocapture %contacts) nounwind align 2 {
+bb2:
+ %clipped_points = alloca [16 x %struct.btQuadWord], align 8 ; [#uses=1]
+ %contacts1 = alloca %struct.GIM_TRIANGLE_CONTACT, align 8 ; [#uses=12]
+ %contacts2 = alloca %struct.GIM_TRIANGLE_CONTACT, align 8 ; [#uses=12]
+ %0 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fadd float %1, %3 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts1, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 8
+ %8 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts1, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=3]
+ %9 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts1, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=3]
+ %12 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 8
+ %14 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts1, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btPrimitiveTriangle* %this, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds [16 x %struct.btQuadWord]* %clipped_points, i32 0, i32 0 ; [#uses=4]
+ %18 = call i32 @_ZN19btPrimitiveTriangle13clip_triangleERS_P9btVector3(%struct.btPrimitiveTriangle* %this, %struct.btPrimitiveTriangle* %other, %struct.btQuadWord* %17) nounwind ; [#uses=2]
+ %19 = icmp eq i32 %18, 0 ; [#uses=1]
+ br i1 %19, label %bb14, label %bb4
+
+bb4: ; preds = %bb2
+ %20 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts1, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN20GIM_TRIANGLE_CONTACT12merge_pointsERK9btVector4fPK9btVector3i(%struct.GIM_TRIANGLE_CONTACT* %contacts1, %struct.btQuaternion* %20, float %4, %struct.btQuadWord* %17, i32 %18) nounwind
+ %21 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts1, i32 0, i32 1 ; [#uses=1]
+ %22 = load i32* %21, align 4 ; [#uses=4]
+ %23 = icmp eq i32 %22, 0 ; [#uses=1]
+ br i1 %23, label %bb14, label %bb6
+
+bb6: ; preds = %bb4
+ %24 = load float* %5, align 8 ; [#uses=1]
+ %25 = fmul float %24, -1.000000e+00 ; [#uses=2]
+ store float %25, float* %5, align 8
+ %26 = load float* %8, align 4 ; [#uses=1]
+ %27 = fmul float %26, -1.000000e+00 ; [#uses=2]
+ store float %27, float* %8, align 4
+ %28 = load float* %11, align 8 ; [#uses=1]
+ %29 = fmul float %28, -1.000000e+00 ; [#uses=2]
+ store float %29, float* %11, align 8
+ %30 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts2, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=2]
+ %31 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 8
+ %33 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts2, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=2]
+ %34 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts2, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=2]
+ %37 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 8
+ %39 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts2, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=2]
+ %40 = getelementptr inbounds %struct.btPrimitiveTriangle* %other, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ store float %41, float* %39, align 4
+ %42 = call i32 @_ZN19btPrimitiveTriangle13clip_triangleERS_P9btVector3(%struct.btPrimitiveTriangle* %other, %struct.btPrimitiveTriangle* %this, %struct.btQuadWord* %17) nounwind ; [#uses=2]
+ %43 = icmp eq i32 %42, 0 ; [#uses=1]
+ br i1 %43, label %bb14, label %bb8
+
+bb8: ; preds = %bb6
+ %44 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts2, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN20GIM_TRIANGLE_CONTACT12merge_pointsERK9btVector4fPK9btVector3i(%struct.GIM_TRIANGLE_CONTACT* %contacts2, %struct.btQuaternion* %44, float %4, %struct.btQuadWord* %17, i32 %42) nounwind
+ %45 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts2, i32 0, i32 1 ; [#uses=1]
+ %46 = load i32* %45, align 4 ; [#uses=4]
+ %47 = icmp eq i32 %46, 0 ; [#uses=1]
+ br i1 %47, label %bb14, label %bb10
+
+bb10: ; preds = %bb8
+ %48 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts2, i32 0, i32 0 ; [#uses=1]
+ %49 = load float* %48, align 8 ; [#uses=2]
+ %50 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts1, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %50, align 8 ; [#uses=2]
+ %52 = fcmp olt float %49, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 0 ; [#uses=2]
+ br i1 %52, label %bb.nph.i23, label %bb.nph.i
+
+bb.nph.i23: ; preds = %bb10
+ store float %49, float* %53, align 4
+ %54 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %55 = load float* %30, align 8 ; [#uses=1]
+ store float %55, float* %54, align 4
+ %56 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %33, align 4 ; [#uses=1]
+ store float %57, float* %56, align 4
+ %58 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %59 = load float* %36, align 8 ; [#uses=1]
+ store float %59, float* %58, align 4
+ %60 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %61 = load float* %39, align 4 ; [#uses=1]
+ store float %61, float* %60, align 4
+ %62 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 1 ; [#uses=1]
+ store i32 %46, i32* %62, align 4
+ %tmp54 = shl i32 %46, 2 ; [#uses=4]
+ %tmp5566 = or i32 %tmp54, 3 ; [#uses=1]
+ %tmp5767 = or i32 %tmp54, 2 ; [#uses=1]
+ %tmp5968 = or i32 %tmp54, 1 ; [#uses=1]
+ br label %bb.i40
+
+bb.i40: ; preds = %bb.i40, %bb.nph.i23
+ %indvar.i24 = phi i32 [ 0, %bb.nph.i23 ], [ %indvar.next.i38, %bb.i40 ] ; [#uses=2]
+ %tmp53 = mul i32 %indvar.i24, -4 ; [#uses=4]
+ %tmp56 = add i32 %tmp5566, %tmp53 ; [#uses=2]
+ %scevgep17.i37 = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts2, i32 0, i32 2, i32 0, i32 0, i32 %tmp56 ; [#uses=1]
+ %scevgep16.i36 = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 %tmp56 ; [#uses=1]
+ %tmp58 = add i32 %tmp5767, %tmp53 ; [#uses=2]
+ %scevgep13.i34 = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts2, i32 0, i32 2, i32 0, i32 0, i32 %tmp58 ; [#uses=1]
+ %scevgep12.i33 = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 %tmp58 ; [#uses=1]
+ %tmp60 = add i32 %tmp5968, %tmp53 ; [#uses=2]
+ %scevgep9.i31 = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts2, i32 0, i32 2, i32 0, i32 0, i32 %tmp60 ; [#uses=1]
+ %scevgep8.i30 = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 %tmp60 ; [#uses=1]
+ %tmp61 = add i32 %tmp54, %tmp53 ; [#uses=2]
+ %scevgep5.i28 = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts2, i32 0, i32 2, i32 0, i32 0, i32 %tmp61 ; [#uses=1]
+ %scevgep.i27 = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 %tmp61 ; [#uses=1]
+ %63 = load float* %scevgep5.i28, align 8 ; [#uses=1]
+ store float %63, float* %scevgep.i27, align 4
+ %64 = load float* %scevgep9.i31, align 4 ; [#uses=1]
+ store float %64, float* %scevgep8.i30, align 4
+ %65 = load float* %scevgep13.i34, align 8 ; [#uses=1]
+ store float %65, float* %scevgep12.i33, align 4
+ %66 = load float* %scevgep17.i37, align 4 ; [#uses=1]
+ store float %66, float* %scevgep16.i36, align 4
+ %indvar.next.i38 = add i32 %indvar.i24, 1 ; [#uses=2]
+ %exitcond52 = icmp eq i32 %indvar.next.i38, %46 ; [#uses=1]
+ br i1 %exitcond52, label %_ZN20GIM_TRIANGLE_CONTACT9copy_fromERKS_.exit41, label %bb.i40
+
+_ZN20GIM_TRIANGLE_CONTACT9copy_fromERKS_.exit41: ; preds = %bb.i, %bb.i40
+ ret i8 1
+
+bb.nph.i: ; preds = %bb10
+ store float %51, float* %53, align 4
+ %67 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %25, float* %67, align 4
+ %68 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %27, float* %68, align 4
+ %69 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %29, float* %69, align 4
+ %70 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %71 = load float* %14, align 4 ; [#uses=1]
+ store float %71, float* %70, align 4
+ %72 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 1 ; [#uses=1]
+ store i32 %22, i32* %72, align 4
+ %tmp44 = shl i32 %22, 2 ; [#uses=4]
+ %tmp4563 = or i32 %tmp44, 3 ; [#uses=1]
+ %tmp4764 = or i32 %tmp44, 2 ; [#uses=1]
+ %tmp4965 = or i32 %tmp44, 1 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %bb.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb.i ] ; [#uses=2]
+ %tmp = mul i32 %indvar.i, -4 ; [#uses=4]
+ %tmp46 = add i32 %tmp4563, %tmp ; [#uses=2]
+ %scevgep17.i = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts1, i32 0, i32 2, i32 0, i32 0, i32 %tmp46 ; [#uses=1]
+ %scevgep16.i = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 %tmp46 ; [#uses=1]
+ %tmp48 = add i32 %tmp4764, %tmp ; [#uses=2]
+ %scevgep13.i = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts1, i32 0, i32 2, i32 0, i32 0, i32 %tmp48 ; [#uses=1]
+ %scevgep12.i = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 %tmp48 ; [#uses=1]
+ %tmp50 = add i32 %tmp4965, %tmp ; [#uses=2]
+ %scevgep9.i = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts1, i32 0, i32 2, i32 0, i32 0, i32 %tmp50 ; [#uses=1]
+ %scevgep8.i = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 %tmp50 ; [#uses=1]
+ %tmp51 = add i32 %tmp44, %tmp ; [#uses=2]
+ %scevgep5.i = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts1, i32 0, i32 2, i32 0, i32 0, i32 %tmp51 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 %tmp51 ; [#uses=1]
+ %73 = load float* %scevgep5.i, align 8 ; [#uses=1]
+ store float %73, float* %scevgep.i, align 4
+ %74 = load float* %scevgep9.i, align 4 ; [#uses=1]
+ store float %74, float* %scevgep8.i, align 4
+ %75 = load float* %scevgep13.i, align 8 ; [#uses=1]
+ store float %75, float* %scevgep12.i, align 4
+ %76 = load float* %scevgep17.i, align 4 ; [#uses=1]
+ store float %76, float* %scevgep16.i, align 4
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %22 ; [#uses=1]
+ br i1 %exitcond, label %_ZN20GIM_TRIANGLE_CONTACT9copy_fromERKS_.exit41, label %bb.i
+
+bb14: ; preds = %bb8, %bb6, %bb4, %bb2
+ ret i8 0
+}
+
+; [#uses=1]
+define i32 @_ZN12GIM_BOX_TREE20_calc_splitting_axisER9gim_arrayI13GIM_AABB_DATAEjj(%struct.GIM_BOX_TREE* nocapture %this, %"struct.gim_array<GIM_AABB_DATA>"* nocapture %primitive_boxes, i32 %startIndex, i32 %endIndex) nounwind readonly align 2 {
+entry:
+ %0 = sub i32 %endIndex, %startIndex ; [#uses=4]
+ %1 = icmp ult i32 %startIndex, %endIndex ; [#uses=2]
+ br i1 %1, label %bb.nph45, label %bb2.thread
+
+bb2.thread: ; preds = %entry
+ %2 = uitofp i32 %0 to float ; [#uses=1]
+ br label %bb6
+
+bb.nph45: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.GIM_AABB_DATA** %3, align 4 ; [#uses=6]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph45
+ %indvar61 = phi i32 [ 0, %bb.nph45 ], [ %indvar.next62, %bb ] ; [#uses=2]
+ %means.0.2.043 = phi float [ 0.000000e+00, %bb.nph45 ], [ %19, %bb ] ; [#uses=1]
+ %means.0.1.042 = phi float [ 0.000000e+00, %bb.nph45 ], [ %18, %bb ] ; [#uses=1]
+ %means.0.0.041 = phi float [ 0.000000e+00, %bb.nph45 ], [ %17, %bb ] ; [#uses=1]
+ %tmp65 = add i32 %indvar61, %startIndex ; [#uses=6]
+ %scevgep66 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep67 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep68 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep69 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep70 = getelementptr %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep7172 = getelementptr inbounds %struct.GIM_AABB_DATA* %4, i32 %tmp65, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %scevgep66, align 4 ; [#uses=1]
+ %6 = load float* %scevgep67, align 4 ; [#uses=1]
+ %7 = fadd float %5, %6 ; [#uses=1]
+ %8 = load float* %scevgep68, align 4 ; [#uses=1]
+ %9 = load float* %scevgep69, align 4 ; [#uses=1]
+ %10 = fadd float %8, %9 ; [#uses=1]
+ %11 = load float* %scevgep70, align 4 ; [#uses=1]
+ %12 = load float* %scevgep7172, align 4 ; [#uses=1]
+ %13 = fadd float %11, %12 ; [#uses=1]
+ %14 = fmul float %7, 5.000000e-01 ; [#uses=1]
+ %15 = fmul float %10, 5.000000e-01 ; [#uses=1]
+ %16 = fmul float %13, 5.000000e-01 ; [#uses=1]
+ %17 = fadd float %means.0.0.041, %16 ; [#uses=2]
+ %18 = fadd float %means.0.1.042, %15 ; [#uses=2]
+ %19 = fadd float %means.0.2.043, %14 ; [#uses=2]
+ %indvar.next62 = add i32 %indvar61, 1 ; [#uses=2]
+ %exitcond64 = icmp eq i32 %indvar.next62, %0 ; [#uses=1]
+ br i1 %exitcond64, label %bb2, label %bb
+
+bb2: ; preds = %bb
+ %20 = uitofp i32 %0 to float ; [#uses=3]
+ %21 = fdiv float 1.000000e+00, %20 ; [#uses=3]
+ %22 = fmul float %17, %21 ; [#uses=1]
+ %23 = fmul float %18, %21 ; [#uses=1]
+ %24 = fmul float %19, %21 ; [#uses=1]
+ br i1 %1, label %bb.nph, label %bb6
+
+bb.nph: ; preds = %bb2
+ %25 = getelementptr inbounds %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes, i32 0, i32 0 ; [#uses=1]
+ %26 = load %struct.GIM_AABB_DATA** %25, align 4 ; [#uses=6]
+ br label %bb3
+
+bb3: ; preds = %bb3, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb3 ] ; [#uses=2]
+ %variance.0.2.037 = phi float [ 0.000000e+00, %bb.nph ], [ %47, %bb3 ] ; [#uses=1]
+ %variance.0.1.036 = phi float [ 0.000000e+00, %bb.nph ], [ %46, %bb3 ] ; [#uses=1]
+ %variance.0.0.035 = phi float [ 0.000000e+00, %bb.nph ], [ %45, %bb3 ] ; [#uses=1]
+ %tmp51 = add i32 %indvar, %startIndex ; [#uses=6]
+ %scevgep = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep52 = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep53 = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep54 = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep55 = getelementptr %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep5657 = getelementptr inbounds %struct.GIM_AABB_DATA* %26, i32 %tmp51, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %scevgep, align 4 ; [#uses=1]
+ %28 = load float* %scevgep52, align 4 ; [#uses=1]
+ %29 = fadd float %27, %28 ; [#uses=1]
+ %30 = load float* %scevgep53, align 4 ; [#uses=1]
+ %31 = load float* %scevgep54, align 4 ; [#uses=1]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = load float* %scevgep55, align 4 ; [#uses=1]
+ %34 = load float* %scevgep5657, align 4 ; [#uses=1]
+ %35 = fadd float %33, %34 ; [#uses=1]
+ %36 = fmul float %29, 5.000000e-01 ; [#uses=1]
+ %37 = fmul float %32, 5.000000e-01 ; [#uses=1]
+ %38 = fmul float %35, 5.000000e-01 ; [#uses=1]
+ %39 = fsub float %36, %24 ; [#uses=2]
+ %40 = fsub float %37, %23 ; [#uses=2]
+ %41 = fsub float %38, %22 ; [#uses=2]
+ %42 = fmul float %39, %39 ; [#uses=1]
+ %43 = fmul float %40, %40 ; [#uses=1]
+ %44 = fmul float %41, %41 ; [#uses=1]
+ %45 = fadd float %variance.0.0.035, %44 ; [#uses=2]
+ %46 = fadd float %variance.0.1.036, %43 ; [#uses=2]
+ %47 = fadd float %variance.0.2.037, %42 ; [#uses=2]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %0 ; [#uses=1]
+ br i1 %exitcond, label %bb6, label %bb3
+
+bb6: ; preds = %bb3, %bb2, %bb2.thread
+ %48 = phi float [ %20, %bb2 ], [ %2, %bb2.thread ], [ %20, %bb3 ] ; [#uses=1]
+ %variance.0.2.0.lcssa = phi float [ 0.000000e+00, %bb2 ], [ 0.000000e+00, %bb2.thread ], [ %47, %bb3 ] ; [#uses=1]
+ %variance.0.1.0.lcssa = phi float [ 0.000000e+00, %bb2 ], [ 0.000000e+00, %bb2.thread ], [ %46, %bb3 ] ; [#uses=1]
+ %variance.0.0.0.lcssa = phi float [ 0.000000e+00, %bb2 ], [ 0.000000e+00, %bb2.thread ], [ %45, %bb3 ] ; [#uses=1]
+ %49 = fadd float %48, -1.000000e+00 ; [#uses=1]
+ %50 = fdiv float 1.000000e+00, %49 ; [#uses=3]
+ %51 = fmul float %variance.0.0.0.lcssa, %50 ; [#uses=2]
+ %52 = fmul float %variance.0.1.0.lcssa, %50 ; [#uses=2]
+ %53 = fmul float %variance.0.2.0.lcssa, %50 ; [#uses=2]
+ %54 = fcmp olt float %51, %52 ; [#uses=1]
+ br i1 %54, label %bb.i, label %bb4.i
+
+bb.i: ; preds = %bb6
+ %55 = fcmp olt float %52, %53 ; [#uses=1]
+ %iftmp.30.0.i = select i1 %55, i32 2, i32 1 ; [#uses=1]
+ ret i32 %iftmp.30.0.i
+
+bb4.i: ; preds = %bb6
+ %56 = fcmp olt float %51, %53 ; [#uses=1]
+ %iftmp.31.0.i = select i1 %56, i32 2, i32 0 ; [#uses=1]
+ ret i32 %iftmp.31.0.i
+}
+
+; [#uses=1]
+define i32 @_ZN12GIM_BOX_TREE30_sort_and_calc_splitting_indexER9gim_arrayI13GIM_AABB_DATAEjjj(%struct.GIM_BOX_TREE* nocapture %this, %"struct.gim_array<GIM_AABB_DATA>"* nocapture %primitive_boxes, i32 %startIndex, i32 %endIndex, i32 %splitAxis) nounwind align 2 {
+entry:
+ %0 = sub i32 %endIndex, %startIndex ; [#uses=5]
+ %1 = icmp ult i32 %startIndex, %endIndex ; [#uses=2]
+ br i1 %1, label %bb.nph19, label %bb7
+
+bb.nph19: ; preds = %entry
+ %2 = getelementptr inbounds %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes, i32 0, i32 0 ; [#uses=1]
+ %3 = load %struct.GIM_AABB_DATA** %2, align 4 ; [#uses=2]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph19
+ %indvar35 = phi i32 [ 0, %bb.nph19 ], [ %indvar.next36, %bb ] ; [#uses=2]
+ %splitValue.018 = phi float [ 0.000000e+00, %bb.nph19 ], [ %8, %bb ] ; [#uses=1]
+ %tmp39 = add i32 %indvar35, %startIndex ; [#uses=2]
+ %scevgep40 = getelementptr %struct.GIM_AABB_DATA* %3, i32 %tmp39, i32 0, i32 1, i32 0, i32 %splitAxis ; [#uses=1]
+ %scevgep41 = getelementptr %struct.GIM_AABB_DATA* %3, i32 %tmp39, i32 0, i32 0, i32 0, i32 %splitAxis ; [#uses=1]
+ %4 = load float* %scevgep40, align 4 ; [#uses=1]
+ %5 = load float* %scevgep41, align 4 ; [#uses=1]
+ %6 = fadd float %4, %5 ; [#uses=1]
+ %7 = fmul float %6, 5.000000e-01 ; [#uses=1]
+ %8 = fadd float %7, %splitValue.018 ; [#uses=2]
+ %indvar.next36 = add i32 %indvar35, 1 ; [#uses=2]
+ %exitcond38 = icmp eq i32 %indvar.next36, %0 ; [#uses=1]
+ br i1 %exitcond38, label %bb2, label %bb
+
+bb2: ; preds = %bb
+ %9 = uitofp i32 %0 to float ; [#uses=1]
+ %10 = fdiv float %8, %9 ; [#uses=1]
+ br i1 %1, label %bb.nph, label %bb7
+
+bb.nph: ; preds = %bb2
+ %11 = getelementptr inbounds %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes, i32 0, i32 0 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb5, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb5 ] ; [#uses=2]
+ %splitIndex.116 = phi i32 [ %startIndex, %bb.nph ], [ %splitIndex.0, %bb5 ] ; [#uses=12]
+ %tmp21 = add i32 %indvar, %startIndex ; [#uses=12]
+ %12 = load %struct.GIM_AABB_DATA** %11, align 4 ; [#uses=22]
+ %scevgep33 = getelementptr %struct.GIM_AABB_DATA* %12, i32 %tmp21, i32 0, i32 1, i32 0, i32 %splitAxis ; [#uses=1]
+ %13 = load float* %scevgep33, align 4 ; [#uses=1]
+ %scevgep34 = getelementptr %struct.GIM_AABB_DATA* %12, i32 %tmp21, i32 0, i32 0, i32 0, i32 %splitAxis ; [#uses=1]
+ %14 = load float* %scevgep34, align 4 ; [#uses=1]
+ %15 = fadd float %13, %14 ; [#uses=1]
+ %16 = fmul float %15, 5.000000e-01 ; [#uses=1]
+ %17 = fcmp ogt float %16, %10 ; [#uses=1]
+ br i1 %17, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ %scevgep22 = getelementptr inbounds %struct.GIM_AABB_DATA* %12, i32 %tmp21, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %scevgep22, align 4 ; [#uses=1]
+ %scevgep23 = getelementptr %struct.GIM_AABB_DATA* %12, i32 %tmp21, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %scevgep23, align 4 ; [#uses=1]
+ %scevgep24 = getelementptr %struct.GIM_AABB_DATA* %12, i32 %tmp21, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %scevgep24, align 4 ; [#uses=1]
+ %scevgep25 = getelementptr %struct.GIM_AABB_DATA* %12, i32 %tmp21, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %21 = load float* %scevgep25, align 4 ; [#uses=1]
+ %scevgep26 = getelementptr %struct.GIM_AABB_DATA* %12, i32 %tmp21, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %scevgep26, align 4 ; [#uses=1]
+ %scevgep27 = getelementptr %struct.GIM_AABB_DATA* %12, i32 %tmp21, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %scevgep27, align 4 ; [#uses=1]
+ %scevgep28 = getelementptr %struct.GIM_AABB_DATA* %12, i32 %tmp21, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %scevgep28, align 4 ; [#uses=1]
+ %scevgep29 = getelementptr %struct.GIM_AABB_DATA* %12, i32 %tmp21, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %scevgep29, align 4 ; [#uses=1]
+ %scevgep30 = getelementptr %struct.GIM_AABB_DATA* %12, i32 %tmp21, i32 1 ; [#uses=1]
+ %26 = load i32* %scevgep30, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.GIM_AABB_DATA* %12, i32 %splitIndex.116 ; [#uses=1]
+ %28 = bitcast %struct.GIM_AABB_DATA* %27 to i8* ; [#uses=1]
+ %scevgep31 = getelementptr %struct.GIM_AABB_DATA* %12, i32 %tmp21 ; [#uses=1]
+ %scevgep3132 = bitcast %struct.GIM_AABB_DATA* %scevgep31 to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep3132, i8* %28, i32 36, i32 4, i1 false) nounwind
+ %.020.i.i = getelementptr inbounds %struct.GIM_AABB_DATA* %12, i32 %splitIndex.116, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %18, float* %.020.i.i, align 4
+ %.122.i.i = getelementptr inbounds %struct.GIM_AABB_DATA* %12, i32 %splitIndex.116, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %19, float* %.122.i.i, align 4
+ %.2.i.i = getelementptr inbounds %struct.GIM_AABB_DATA* %12, i32 %splitIndex.116, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %20, float* %.2.i.i, align 4
+ %.3.i.i = getelementptr inbounds %struct.GIM_AABB_DATA* %12, i32 %splitIndex.116, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %21, float* %.3.i.i, align 4
+ %.1813.0.i.i = getelementptr inbounds %struct.GIM_AABB_DATA* %12, i32 %splitIndex.116, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %22, float* %.1813.0.i.i, align 4
+ %.1813.1.i.i = getelementptr inbounds %struct.GIM_AABB_DATA* %12, i32 %splitIndex.116, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %23, float* %.1813.1.i.i, align 4
+ %.1813.2.i.i = getelementptr inbounds %struct.GIM_AABB_DATA* %12, i32 %splitIndex.116, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %24, float* %.1813.2.i.i, align 4
+ %.1813.3.i.i = getelementptr inbounds %struct.GIM_AABB_DATA* %12, i32 %splitIndex.116, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %25, float* %.1813.3.i.i, align 4
+ %.1.i.i = getelementptr inbounds %struct.GIM_AABB_DATA* %12, i32 %splitIndex.116, i32 1 ; [#uses=1]
+ store i32 %26, i32* %.1.i.i, align 4
+ %29 = add i32 %splitIndex.116, 1 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ %splitIndex.0 = phi i32 [ %29, %bb4 ], [ %splitIndex.116, %bb3 ] ; [#uses=2]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %0 ; [#uses=1]
+ br i1 %exitcond, label %bb7, label %bb3
+
+bb7: ; preds = %bb5, %bb2, %entry
+ %splitIndex.1.lcssa = phi i32 [ %startIndex, %bb2 ], [ %splitIndex.0, %bb5 ], [ %startIndex, %entry ] ; [#uses=3]
+ %30 = udiv i32 %0, 3 ; [#uses=2]
+ %31 = add i32 %30, %startIndex ; [#uses=1]
+ %32 = icmp ult i32 %31, %splitIndex.1.lcssa ; [#uses=1]
+ br i1 %32, label %bb8, label %bb12
+
+bb8: ; preds = %bb7
+ %33 = add i32 %endIndex, -1 ; [#uses=1]
+ %34 = sub i32 %33, %30 ; [#uses=1]
+ %35 = icmp ugt i32 %34, %splitIndex.1.lcssa ; [#uses=1]
+ br i1 %35, label %bb10, label %bb12
+
+bb10: ; preds = %bb8
+ ret i32 %splitIndex.1.lcssa
+
+bb12: ; preds = %bb8, %bb7
+ %36 = lshr i32 %0, 1 ; [#uses=1]
+ %37 = add i32 %36, %startIndex ; [#uses=1]
+ ret i32 %37
+}
+
+; [#uses=3]
+define void @_ZN12GIM_BOX_TREE15_build_sub_treeER9gim_arrayI13GIM_AABB_DATAEjj(%struct.GIM_BOX_TREE* %this, %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes, i32 %startIndex, i32 %endIndex) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.GIM_BOX_TREE* %this, i32 0, i32 0 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=30]
+ %2 = add i32 %1, 1 ; [#uses=1]
+ store i32 %2, i32* %0, align 4
+ %3 = sub i32 %endIndex, %startIndex ; [#uses=2]
+ %4 = icmp eq i32 %3, 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.GIM_BOX_TREE* %this, i32 0, i32 1, i32 0 ; [#uses=9]
+ %6 = load %struct.GIM_BOX_TREE_NODE** %5, align 4 ; [#uses=7]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %7 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %6, i32 %1, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = load %struct.GIM_BOX_TREE_NODE** %5, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %8, i32 %1, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = load %struct.GIM_BOX_TREE_NODE** %5, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %10, i32 %1, i32 3 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = load %struct.GIM_BOX_TREE_NODE** %5, align 4 ; [#uses=8]
+ %13 = getelementptr inbounds %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes, i32 0, i32 0 ; [#uses=2]
+ %14 = load %struct.GIM_AABB_DATA** %13, align 4 ; [#uses=8]
+ %15 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %12, i32 %1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %startIndex, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %12, i32 %1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %startIndex, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %12, i32 %1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %startIndex, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %12, i32 %1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %startIndex, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %12, i32 %1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %startIndex, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %12, i32 %1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %startIndex, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %12, i32 %1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %startIndex, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %12, i32 %1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.GIM_AABB_DATA* %14, i32 %startIndex, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = load %struct.GIM_BOX_TREE_NODE** %5, align 4 ; [#uses=1]
+ %40 = load %struct.GIM_AABB_DATA** %13, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.GIM_AABB_DATA* %40, i32 %startIndex, i32 1 ; [#uses=1]
+ %42 = load i32* %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %39, i32 %1, i32 4 ; [#uses=1]
+ store i32 %42, i32* %43, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %44 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %6, i32 %1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %44, align 4
+ %45 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %6, i32 %1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %45, align 4
+ %46 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %6, i32 %1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %46, align 4
+ %47 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %6, i32 %1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %47, align 4
+ %48 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %6, i32 %1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %48, align 4
+ %49 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %6, i32 %1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %49, align 4
+ %50 = icmp ult i32 %startIndex, %endIndex ; [#uses=1]
+ br i1 %50, label %bb.nph, label %bb4
+
+bb.nph: ; preds = %bb1
+ %51 = getelementptr inbounds %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes, i32 0, i32 0 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb2 ] ; [#uses=2]
+ %tmp7 = add i32 %indvar, %startIndex ; [#uses=7]
+ %52 = load %struct.GIM_AABB_DATA** %51, align 4 ; [#uses=7]
+ %53 = load %struct.GIM_BOX_TREE_NODE** %5, align 4 ; [#uses=7]
+ %54 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %53, i32 %1, i32 0 ; [#uses=6]
+ %55 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %53, i32 %1, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %scevgep1920 = getelementptr inbounds %struct.GIM_AABB_DATA* %52, i32 %tmp7, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %57 = load float* %scevgep1920, align 4 ; [#uses=1]
+ %58 = fcmp ogt float %56, %57 ; [#uses=1]
+ %scevgep1718 = getelementptr inbounds %struct.GIM_AABB_DATA* %52, i32 %tmp7, i32 0 ; [#uses=6]
+ %box.pn25.i = select i1 %58, %struct.GIM_AABB* %scevgep1718, %struct.GIM_AABB* %54 ; [#uses=1]
+ %iftmp.151.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn25.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %iftmp.151.0.i = load float* %iftmp.151.0.in.i, align 4 ; [#uses=1]
+ store float %iftmp.151.0.i, float* %55, align 4
+ %59 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %53, i32 %1, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ %scevgep21 = getelementptr %struct.GIM_AABB_DATA* %52, i32 %tmp7, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %61 = load float* %scevgep21, align 4 ; [#uses=1]
+ %62 = fcmp ogt float %60, %61 ; [#uses=1]
+ %box.pn24.i = select i1 %62, %struct.GIM_AABB* %scevgep1718, %struct.GIM_AABB* %54 ; [#uses=1]
+ %iftmp.152.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn24.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %iftmp.152.0.i = load float* %iftmp.152.0.in.i, align 4 ; [#uses=1]
+ store float %iftmp.152.0.i, float* %59, align 4
+ %63 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %53, i32 %1, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %scevgep22 = getelementptr %struct.GIM_AABB_DATA* %52, i32 %tmp7, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %65 = load float* %scevgep22, align 4 ; [#uses=1]
+ %66 = fcmp ogt float %64, %65 ; [#uses=1]
+ %box.pn23.i = select i1 %66, %struct.GIM_AABB* %scevgep1718, %struct.GIM_AABB* %54 ; [#uses=1]
+ %iftmp.153.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn23.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %iftmp.153.0.i = load float* %iftmp.153.0.in.i, align 4 ; [#uses=1]
+ store float %iftmp.153.0.i, float* %63, align 4
+ %67 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %53, i32 %1, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %scevgep23 = getelementptr %struct.GIM_AABB_DATA* %52, i32 %tmp7, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %69 = load float* %scevgep23, align 4 ; [#uses=1]
+ %70 = fcmp olt float %68, %69 ; [#uses=1]
+ %box.pn22.i = select i1 %70, %struct.GIM_AABB* %scevgep1718, %struct.GIM_AABB* %54 ; [#uses=1]
+ %iftmp.154.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn22.i, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %iftmp.154.0.i = load float* %iftmp.154.0.in.i, align 4 ; [#uses=1]
+ store float %iftmp.154.0.i, float* %67, align 4
+ %71 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %53, i32 %1, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %scevgep24 = getelementptr %struct.GIM_AABB_DATA* %52, i32 %tmp7, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %73 = load float* %scevgep24, align 4 ; [#uses=1]
+ %74 = fcmp olt float %72, %73 ; [#uses=1]
+ %box.pn21.i = select i1 %74, %struct.GIM_AABB* %scevgep1718, %struct.GIM_AABB* %54 ; [#uses=1]
+ %iftmp.155.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn21.i, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %iftmp.155.0.i = load float* %iftmp.155.0.in.i, align 4 ; [#uses=1]
+ store float %iftmp.155.0.i, float* %71, align 4
+ %75 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %53, i32 %1, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ %scevgep25 = getelementptr %struct.GIM_AABB_DATA* %52, i32 %tmp7, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %77 = load float* %scevgep25, align 4 ; [#uses=1]
+ %78 = fcmp olt float %76, %77 ; [#uses=1]
+ %box.pn.i = select i1 %78, %struct.GIM_AABB* %scevgep1718, %struct.GIM_AABB* %54 ; [#uses=1]
+ %iftmp.156.0.in.i = getelementptr inbounds %struct.GIM_AABB* %box.pn.i, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %iftmp.156.0.i = load float* %iftmp.156.0.in.i, align 4 ; [#uses=1]
+ store float %iftmp.156.0.i, float* %75, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %3 ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb2
+
+bb4: ; preds = %bb2, %bb1
+ %79 = tail call i32 @_ZN12GIM_BOX_TREE20_calc_splitting_axisER9gim_arrayI13GIM_AABB_DATAEjj(%struct.GIM_BOX_TREE* %this, %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes, i32 %startIndex, i32 %endIndex) ; [#uses=1]
+ %80 = tail call i32 @_ZN12GIM_BOX_TREE30_sort_and_calc_splitting_indexER9gim_arrayI13GIM_AABB_DATAEjjj(%struct.GIM_BOX_TREE* %this, %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes, i32 %startIndex, i32 %endIndex, i32 %79) ; [#uses=2]
+ %81 = load %struct.GIM_BOX_TREE_NODE** %5, align 4 ; [#uses=1]
+ %82 = load i32* %0, align 4 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %81, i32 %1, i32 1 ; [#uses=1]
+ store i32 %82, i32* %83, align 4
+ tail call void @_ZN12GIM_BOX_TREE15_build_sub_treeER9gim_arrayI13GIM_AABB_DATAEjj(%struct.GIM_BOX_TREE* %this, %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes, i32 %startIndex, i32 %80)
+ %84 = load %struct.GIM_BOX_TREE_NODE** %5, align 4 ; [#uses=1]
+ %85 = load i32* %0, align 4 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %84, i32 %1, i32 2 ; [#uses=1]
+ store i32 %85, i32* %86, align 4
+ tail call void @_ZN12GIM_BOX_TREE15_build_sub_treeER9gim_arrayI13GIM_AABB_DATAEjj(%struct.GIM_BOX_TREE* %this, %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes, i32 %80, i32 %endIndex)
+ %87 = load %struct.GIM_BOX_TREE_NODE** %5, align 4 ; [#uses=1]
+ %88 = load i32* %0, align 4 ; [#uses=1]
+ %89 = sub i32 %88, %1 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %87, i32 %1, i32 3 ; [#uses=1]
+ store i32 %89, i32* %90, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN9gim_arrayI17GIM_BOX_TREE_NODEE6resizeEjb(%"struct.gim_array<GIM_BOX_TREE_NODE>"* nocapture %this, i32 %size, i8 zeroext %call_constructor) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.gim_array<GIM_BOX_TREE_NODE>"* %this, i32 0, i32 1 ; [#uses=7]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = icmp ult i32 %1, %size ; [#uses=1]
+ br i1 %2, label %bb, label %bb6
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.gim_array<GIM_BOX_TREE_NODE>"* %this, i32 0, i32 2 ; [#uses=3]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %5 = icmp ult i32 %4, %size ; [#uses=1]
+ br i1 %5, label %bb1.i, label %_ZN9gim_arrayI17GIM_BOX_TREE_NODEE7reserveEj.exit
+
+bb1.i: ; preds = %bb
+ %6 = icmp eq i32 %size, 0 ; [#uses=1]
+ br i1 %6, label %bb.i.i, label %bb1.i.i
+
+bb.i.i: ; preds = %bb1.i
+ store i32 0, i32* %3, align 4
+ %7 = getelementptr inbounds %"struct.gim_array<GIM_BOX_TREE_NODE>"* %this, i32 0, i32 0 ; [#uses=2]
+ %8 = load %struct.GIM_BOX_TREE_NODE** %7, align 4 ; [#uses=2]
+ %9 = icmp eq %struct.GIM_BOX_TREE_NODE* %8, null ; [#uses=1]
+ br i1 %9, label %_ZN9gim_arrayI17GIM_BOX_TREE_NODEE7reserveEj.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb.i.i
+ %10 = bitcast %struct.GIM_BOX_TREE_NODE* %8 to i8* ; [#uses=1]
+ tail call void @_Z8gim_freePv(i8* %10)
+ store %struct.GIM_BOX_TREE_NODE* null, %struct.GIM_BOX_TREE_NODE** %7, align 4
+ br label %_ZN9gim_arrayI17GIM_BOX_TREE_NODEE7reserveEj.exit
+
+bb1.i.i: ; preds = %bb1.i
+ %11 = icmp eq i32 %1, 0 ; [#uses=1]
+ %12 = mul i32 %size, 48 ; [#uses=2]
+ br i1 %11, label %bb3.i.i, label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i
+ %13 = mul i32 %1, 48 ; [#uses=1]
+ %14 = getelementptr inbounds %"struct.gim_array<GIM_BOX_TREE_NODE>"* %this, i32 0, i32 0 ; [#uses=2]
+ %15 = load %struct.GIM_BOX_TREE_NODE** %14, align 4 ; [#uses=1]
+ %16 = bitcast %struct.GIM_BOX_TREE_NODE* %15 to i8* ; [#uses=1]
+ %17 = tail call i8* @_Z11gim_reallocPvjj(i8* %16, i32 %13, i32 %12) ; [#uses=1]
+ %18 = bitcast i8* %17 to %struct.GIM_BOX_TREE_NODE* ; [#uses=1]
+ store %struct.GIM_BOX_TREE_NODE* %18, %struct.GIM_BOX_TREE_NODE** %14, align 4
+ br label %bb4.i.i
+
+bb3.i.i: ; preds = %bb1.i.i
+ %19 = tail call i8* @_Z9gim_allocj(i32 %12) ; [#uses=1]
+ %20 = bitcast i8* %19 to %struct.GIM_BOX_TREE_NODE* ; [#uses=1]
+ %21 = getelementptr inbounds %"struct.gim_array<GIM_BOX_TREE_NODE>"* %this, i32 0, i32 0 ; [#uses=1]
+ store %struct.GIM_BOX_TREE_NODE* %20, %struct.GIM_BOX_TREE_NODE** %21, align 4
+ br label %bb4.i.i
+
+bb4.i.i: ; preds = %bb3.i.i, %bb2.i.i
+ store i32 %size, i32* %3, align 4
+ br label %_ZN9gim_arrayI17GIM_BOX_TREE_NODEE7reserveEj.exit
+
+_ZN9gim_arrayI17GIM_BOX_TREE_NODEE7reserveEj.exit: ; preds = %bb4.i.i, %bb.i.i.i, %bb.i.i, %bb
+ %toBool = icmp eq i8 %call_constructor, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb4.preheader
+
+bb4.preheader: ; preds = %_ZN9gim_arrayI17GIM_BOX_TREE_NODEE7reserveEj.exit
+ %22 = load i32* %0, align 4 ; [#uses=2]
+ %23 = icmp ult i32 %22, %size ; [#uses=1]
+ br i1 %23, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb4.preheader
+ %24 = getelementptr inbounds %"struct.gim_array<GIM_BOX_TREE_NODE>"* %this, i32 0, i32 0 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb.nph
+ %25 = phi i32 [ %22, %bb.nph ], [ %28, %bb2 ] ; [#uses=4]
+ %26 = load %struct.GIM_BOX_TREE_NODE** %24, align 4 ; [#uses=4]
+ %.1 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %26, i32 %25, i32 1 ; [#uses=1]
+ store i32 0, i32* %.1, align 4
+ %.2 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %26, i32 %25, i32 2 ; [#uses=1]
+ store i32 0, i32* %.2, align 4
+ %.3 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %26, i32 %25, i32 3 ; [#uses=1]
+ store i32 0, i32* %.3, align 4
+ %.4 = getelementptr inbounds %struct.GIM_BOX_TREE_NODE* %26, i32 %25, i32 4 ; [#uses=1]
+ store i32 0, i32* %.4, align 4
+ %27 = load i32* %0, align 4 ; [#uses=1]
+ %28 = add i32 %27, 1 ; [#uses=3]
+ store i32 %28, i32* %0, align 4
+ %29 = icmp ult i32 %28, %size ; [#uses=1]
+ br i1 %29, label %bb2, label %return
+
+bb5: ; preds = %_ZN9gim_arrayI17GIM_BOX_TREE_NODEE7reserveEj.exit
+ store i32 %size, i32* %0, align 4
+ ret void
+
+bb6: ; preds = %entry
+ %30 = icmp ugt i32 %1, %size ; [#uses=1]
+ br i1 %30, label %bb7, label %return
+
+bb7: ; preds = %bb6
+ %toBool8 = icmp eq i8 %call_constructor, 0 ; [#uses=1]
+ br i1 %toBool8, label %bb10, label %bb.nph.i
+
+bb.nph.i: ; preds = %bb7
+ %tmp.i = sub i32 0, %1 ; [#uses=2]
+ %tmp3.i = xor i32 %size, -1 ; [#uses=2]
+ %tmp4.i = icmp ugt i32 %tmp.i, %tmp3.i ; [#uses=1]
+ %umax.i = select i1 %tmp4.i, i32 %tmp.i, i32 %tmp3.i ; [#uses=1]
+ %tmp5.i = xor i32 %umax.i, -1 ; [#uses=1]
+ store i32 %tmp5.i, i32* %0, align 4
+ br label %bb10
+
+bb10: ; preds = %bb.nph.i, %bb7
+ store i32 %size, i32* %0, align 4
+ ret void
+
+return: ; preds = %bb6, %bb2, %bb4.preheader
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12GIM_BOX_TREE10build_treeER9gim_arrayI13GIM_AABB_DATAE(%struct.GIM_BOX_TREE* %this, %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.GIM_BOX_TREE* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %0, align 4
+ %1 = getelementptr inbounds %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes, i32 0, i32 1 ; [#uses=2]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = shl i32 %2, 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.GIM_BOX_TREE* %this, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN9gim_arrayI17GIM_BOX_TREE_NODEE6resizeEjb(%"struct.gim_array<GIM_BOX_TREE_NODE>"* %4, i32 %3, i8 zeroext 1)
+ %5 = load i32* %1, align 4 ; [#uses=1]
+ tail call void @_ZN12GIM_BOX_TREE15_build_sub_treeER9gim_arrayI13GIM_AABB_DATAEjj(%struct.GIM_BOX_TREE* %this, %"struct.gim_array<GIM_AABB_DATA>"* %primitive_boxes, i32 0, i32 %5)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17gim_contact_array14merge_contactsERKS_b(%struct.gim_contact_array* nocapture %this, %struct.gim_contact_array* nocapture %contacts, i8 zeroext %normal_contact_average) align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %coincident_normals = alloca [8 x %struct.btQuadWord], align 8 ; [#uses=7]
+ %1 = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 1 ; [#uses=16]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %_ZN9gim_arrayI11GIM_CONTACTE5clearEv.exit, label %bb.nph.i.i
+
+bb.nph.i.i: ; preds = %entry
+ store i32 0, i32* %1, align 4
+ br label %_ZN9gim_arrayI11GIM_CONTACTE5clearEv.exit
+
+_ZN9gim_arrayI11GIM_CONTACTE5clearEv.exit: ; preds = %bb.nph.i.i, %entry
+ %4 = getelementptr inbounds %struct.gim_contact_array* %contacts, i32 0, i32 0, i32 1 ; [#uses=4]
+ %5 = load i32* %4, align 4 ; [#uses=4]
+ switch i32 %5, label %_ZN9gim_arrayI15GIM_RSORT_TOKENEC1Ej.exit [
+ i32 1, label %bb
+ i32 0, label %bb9
+ ]
+
+bb: ; preds = %_ZN9gim_arrayI11GIM_CONTACTE5clearEv.exit
+ %6 = getelementptr inbounds %struct.gim_contact_array* %contacts, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load %struct.GIM_CONTACT** %6, align 4 ; [#uses=1]
+ %8 = add i32 %5, -1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.GIM_CONTACT* %7, i32 %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 2 ; [#uses=2]
+ %11 = load i32* %10, align 4 ; [#uses=2]
+ %12 = icmp ugt i32 %11, 0 ; [#uses=1]
+ br i1 %12, label %entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i56, label %bb1.i.i.i60
+
+entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i56: ; preds = %bb
+ %.phi.trans.insert.i54 = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre.i55 = load %struct.GIM_CONTACT** %.phi.trans.insert.i54, align 4 ; [#uses=1]
+ br label %_ZN9gim_arrayI11GIM_CONTACTE9push_backERKS0_.exit64
+
+bb1.i.i.i60: ; preds = %bb
+ store i32 %11, i32* %1, align 4
+ %13 = call i8* @_Z9gim_allocj(i32 192) ; [#uses=1]
+ %14 = bitcast i8* %13 to %struct.GIM_CONTACT* ; [#uses=2]
+ %15 = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store %struct.GIM_CONTACT* %14, %struct.GIM_CONTACT** %15, align 4
+ store i32 4, i32* %10, align 4
+ br label %_ZN9gim_arrayI11GIM_CONTACTE9push_backERKS0_.exit64
+
+_ZN9gim_arrayI11GIM_CONTACTE9push_backERKS0_.exit64: ; preds = %bb1.i.i.i60, %entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i56
+ %16 = phi %struct.GIM_CONTACT* [ %.pre.i55, %entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i56 ], [ %14, %bb1.i.i.i60 ] ; [#uses=1]
+ %17 = load i32* %1, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.GIM_CONTACT* %16, i32 %17 ; [#uses=1]
+ %19 = bitcast %struct.GIM_CONTACT* %18 to i8* ; [#uses=1]
+ %20 = bitcast %struct.GIM_CONTACT* %9 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %19, i8* %20, i32 48, i32 4, i1 false)
+ %21 = load i32* %1, align 4 ; [#uses=1]
+ %22 = add i32 %21, 1 ; [#uses=1]
+ store i32 %22, i32* %1, align 4
+ ret void
+
+_ZN9gim_arrayI15GIM_RSORT_TOKENEC1Ej.exit: ; preds = %_ZN9gim_arrayI11GIM_CONTACTE5clearEv.exit
+ %23 = shl i32 %5, 3 ; [#uses=1]
+ %24 = call i8* @_Z9gim_allocj(i32 %23) ; [#uses=1]
+ %25 = bitcast i8* %24 to %struct.CONTACT_KEY_TOKEN* ; [#uses=3]
+ %.pre = load i32* %4, align 4 ; [#uses=5]
+ %26 = icmp eq i32 %.pre, 0 ; [#uses=1]
+ br i1 %26, label %bb9, label %bb.i
+
+bb.i: ; preds = %_ZN9gim_arrayI15GIM_RSORT_TOKENEC1Ej.exit
+ %27 = icmp ult i32 %5, %.pre ; [#uses=1]
+ br i1 %27, label %bb3.i.i.i70, label %bb.nph101
+
+bb3.i.i.i70: ; preds = %bb.i
+ %28 = shl i32 %.pre, 3 ; [#uses=1]
+ %29 = invoke i8* @_Z9gim_allocj(i32 %28)
+ to label %_ZN9gim_arrayI15GIM_RSORT_TOKENE6resizeEjb.exit unwind label %lpad.thread ; [#uses=1]
+
+lpad.thread: ; preds = %bb3.i.i.i70
+ %eh_ptr93 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select3594 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr93, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %_ZN9gim_arrayI15GIM_RSORT_TOKENE5clearEv.exit.i.i
+
+_ZN9gim_arrayI15GIM_RSORT_TOKENE6resizeEjb.exit: ; preds = %bb3.i.i.i70
+ %30 = bitcast i8* %29 to %struct.CONTACT_KEY_TOKEN* ; [#uses=2]
+ %.pre118 = load i32* %4, align 4 ; [#uses=1]
+ %31 = icmp eq i32 %.pre118, 0 ; [#uses=1]
+ br i1 %31, label %bb9, label %bb.nph101
+
+bb.nph101: ; preds = %_ZN9gim_arrayI15GIM_RSORT_TOKENE6resizeEjb.exit, %bb.i
+ %keycontacts.0.2123 = phi %struct.CONTACT_KEY_TOKEN* [ %30, %_ZN9gim_arrayI15GIM_RSORT_TOKENE6resizeEjb.exit ], [ %25, %bb.i ] ; [#uses=3]
+ %32 = getelementptr inbounds %struct.gim_contact_array* %contacts, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb.nph101
+ %33 = phi i32 [ 0, %bb.nph101 ], [ %50, %bb2 ] ; [#uses=7]
+ %scevgep115116 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %keycontacts.0.2123, i32 %33, i32 0 ; [#uses=1]
+ %scevgep117 = getelementptr %struct.CONTACT_KEY_TOKEN* %keycontacts.0.2123, i32 %33, i32 1 ; [#uses=1]
+ %34 = load %struct.GIM_CONTACT** %32, align 4 ; [#uses=3]
+ %scevgep111112 = getelementptr inbounds %struct.GIM_CONTACT* %34, i32 %33, i32 0, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %scevgep111112, align 4 ; [#uses=1]
+ %36 = fmul float %35, 1.000000e+03 ; [#uses=1]
+ %37 = fadd float %36, 1.000000e+00 ; [#uses=1]
+ %38 = fptosi float %37 to i32 ; [#uses=1]
+ %scevgep113 = getelementptr %struct.GIM_CONTACT* %34, i32 %33, i32 0, i32 0, i32 1 ; [#uses=1]
+ %39 = load float* %scevgep113, align 4 ; [#uses=1]
+ %40 = fmul float %39, 1.333000e+03 ; [#uses=1]
+ %41 = fptosi float %40 to i32 ; [#uses=1]
+ %scevgep114 = getelementptr %struct.GIM_CONTACT* %34, i32 %33, i32 0, i32 0, i32 2 ; [#uses=1]
+ %42 = load float* %scevgep114, align 4 ; [#uses=1]
+ %43 = fmul float %42, 2.133000e+03 ; [#uses=1]
+ %44 = fadd float %43, 3.000000e+00 ; [#uses=1]
+ %45 = fptosi float %44 to i32 ; [#uses=1]
+ %46 = shl i32 %41, 4 ; [#uses=1]
+ %47 = shl i32 %45, 8 ; [#uses=1]
+ %48 = add i32 %46, %38 ; [#uses=1]
+ %49 = add i32 %48, %47 ; [#uses=1]
+ store i32 %49, i32* %scevgep115116, align 4
+ store i32 %33, i32* %scevgep117, align 4
+ %50 = add i32 %33, 1 ; [#uses=2]
+ %51 = load i32* %4, align 4 ; [#uses=1]
+ %52 = icmp ugt i32 %51, %50 ; [#uses=1]
+ br i1 %52, label %bb2, label %bb9
+
+bb9: ; preds = %bb2, %_ZN9gim_arrayI15GIM_RSORT_TOKENE6resizeEjb.exit, %_ZN9gim_arrayI15GIM_RSORT_TOKENEC1Ej.exit, %_ZN9gim_arrayI11GIM_CONTACTE5clearEv.exit
+ %keycontacts.0.2120 = phi %struct.CONTACT_KEY_TOKEN* [ %30, %_ZN9gim_arrayI15GIM_RSORT_TOKENE6resizeEjb.exit ], [ %keycontacts.0.2123, %bb2 ], [ %25, %_ZN9gim_arrayI15GIM_RSORT_TOKENEC1Ej.exit ], [ null, %_ZN9gim_arrayI11GIM_CONTACTE5clearEv.exit ] ; [#uses=8]
+ %keycontacts.1.0119 = phi i32 [ %.pre, %_ZN9gim_arrayI15GIM_RSORT_TOKENE6resizeEjb.exit ], [ %.pre, %bb2 ], [ 0, %_ZN9gim_arrayI15GIM_RSORT_TOKENEC1Ej.exit ], [ 0, %_ZN9gim_arrayI11GIM_CONTACTE5clearEv.exit ] ; [#uses=2]
+ call void @_Z13gim_heap_sortI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jT0_(%struct.CONTACT_KEY_TOKEN* %keycontacts.0.2120, i32 %keycontacts.1.0119, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0)
+ %53 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %keycontacts.0.2120, i32 0, i32 0 ; [#uses=1]
+ %54 = load i32* %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %keycontacts.0.2120, i32 0, i32 1 ; [#uses=1]
+ %56 = load i32* %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.gim_contact_array* %contacts, i32 0, i32 0, i32 0 ; [#uses=2]
+ %58 = load %struct.GIM_CONTACT** %57, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.GIM_CONTACT* %58, i32 %56 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 2 ; [#uses=6]
+ %61 = load i32* %60, align 4 ; [#uses=4]
+ %62 = load i32* %1, align 4 ; [#uses=2]
+ %63 = icmp ugt i32 %61, %62 ; [#uses=1]
+ br i1 %63, label %entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i81, label %bb.i.i82
+
+entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i81: ; preds = %bb9
+ %.phi.trans.insert.i79 = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre.i80 = load %struct.GIM_CONTACT** %.phi.trans.insert.i79, align 4 ; [#uses=1]
+ br label %invcont10
+
+bb.i.i82: ; preds = %bb9
+ store i32 %61, i32* %1, align 4
+ %64 = shl i32 %62, 1 ; [#uses=1]
+ %65 = add i32 %64, 4 ; [#uses=3]
+ %66 = icmp eq i32 %65, 0 ; [#uses=1]
+ br i1 %66, label %bb.i.i.i83, label %bb1.i.i.i85
+
+bb.i.i.i83: ; preds = %bb.i.i82
+ store i32 0, i32* %60, align 4
+ %67 = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ %68 = load %struct.GIM_CONTACT** %67, align 4 ; [#uses=2]
+ %69 = icmp eq %struct.GIM_CONTACT* %68, null ; [#uses=1]
+ br i1 %69, label %invcont10, label %bb.i.i.i.i84
+
+bb.i.i.i.i84: ; preds = %bb.i.i.i83
+ %70 = bitcast %struct.GIM_CONTACT* %68 to i8* ; [#uses=1]
+ invoke void @_Z8gim_freePv(i8* %70)
+ to label %.noexc89 unwind label %lpad
+
+.noexc89: ; preds = %bb.i.i.i.i84
+ store %struct.GIM_CONTACT* null, %struct.GIM_CONTACT** %67, align 4
+ br label %invcont10
+
+bb1.i.i.i85: ; preds = %bb.i.i82
+ %71 = icmp eq i32 %61, 0 ; [#uses=1]
+ %72 = mul i32 %65, 48 ; [#uses=2]
+ br i1 %71, label %bb3.i.i.i87, label %bb2.i.i.i86
+
+bb2.i.i.i86: ; preds = %bb1.i.i.i85
+ %73 = mul i32 %61, 48 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ %75 = load %struct.GIM_CONTACT** %74, align 4 ; [#uses=1]
+ %76 = bitcast %struct.GIM_CONTACT* %75 to i8* ; [#uses=1]
+ %77 = invoke i8* @_Z11gim_reallocPvjj(i8* %76, i32 %73, i32 %72)
+ to label %.noexc90 unwind label %lpad ; [#uses=1]
+
+.noexc90: ; preds = %bb2.i.i.i86
+ %78 = bitcast i8* %77 to %struct.GIM_CONTACT* ; [#uses=2]
+ store %struct.GIM_CONTACT* %78, %struct.GIM_CONTACT** %74, align 4
+ br label %bb4.i.i.i88
+
+bb3.i.i.i87: ; preds = %bb1.i.i.i85
+ %79 = invoke i8* @_Z9gim_allocj(i32 %72)
+ to label %.noexc91 unwind label %lpad ; [#uses=1]
+
+.noexc91: ; preds = %bb3.i.i.i87
+ %80 = bitcast i8* %79 to %struct.GIM_CONTACT* ; [#uses=2]
+ %81 = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store %struct.GIM_CONTACT* %80, %struct.GIM_CONTACT** %81, align 4
+ br label %bb4.i.i.i88
+
+bb4.i.i.i88: ; preds = %.noexc91, %.noexc90
+ %82 = phi %struct.GIM_CONTACT* [ %80, %.noexc91 ], [ %78, %.noexc90 ] ; [#uses=1]
+ store i32 %65, i32* %60, align 4
+ br label %invcont10
+
+invcont10: ; preds = %bb4.i.i.i88, %.noexc89, %bb.i.i.i83, %entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i81
+ %83 = phi %struct.GIM_CONTACT* [ %.pre.i80, %entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i81 ], [ null, %bb.i.i.i83 ], [ null, %.noexc89 ], [ %82, %bb4.i.i.i88 ] ; [#uses=1]
+ %84 = load i32* %1, align 4 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.GIM_CONTACT* %83, i32 %84 ; [#uses=1]
+ %86 = bitcast %struct.GIM_CONTACT* %85 to i8* ; [#uses=1]
+ %87 = bitcast %struct.GIM_CONTACT* %59 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %86, i8* %87, i32 48, i32 4, i1 false)
+ %88 = load i32* %1, align 4 ; [#uses=2]
+ %89 = add i32 %88, 1 ; [#uses=1]
+ store i32 %89, i32* %1, align 4
+ %90 = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 0 ; [#uses=7]
+ %91 = load %struct.GIM_CONTACT** %90, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.GIM_CONTACT* %91, i32 %88 ; [#uses=1]
+ %toBool15 = icmp eq i8 %normal_contact_average, 0 ; [#uses=2]
+ br label %bb27
+
+bb11: ; preds = %bb27
+ %scevgep106107 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %keycontacts.0.2120, i32 %indvar, i32 0 ; [#uses=1]
+ %scevgep105 = getelementptr %struct.CONTACT_KEY_TOKEN* %keycontacts.0.2120, i32 %indvar, i32 1 ; [#uses=1]
+ %93 = load i32* %scevgep106107, align 4 ; [#uses=2]
+ %94 = load i32* %scevgep105, align 4 ; [#uses=6]
+ %95 = load %struct.GIM_CONTACT** %57, align 4 ; [#uses=6]
+ %96 = getelementptr inbounds %struct.GIM_CONTACT* %95, i32 %94 ; [#uses=2]
+ %97 = icmp eq i32 %last_key.0, %93 ; [#uses=1]
+ br i1 %97, label %bb12, label %bb20
+
+bb12: ; preds = %bb11
+ %98 = getelementptr inbounds %struct.GIM_CONTACT* %pcontact.1, i32 0, i32 2 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=2]
+ %100 = fadd float %99, 0xBEE4F8B580000000 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.GIM_CONTACT* %95, i32 %94, i32 2 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=2]
+ %103 = fcmp ogt float %100, %102 ; [#uses=1]
+ br i1 %103, label %bb13, label %bb14
+
+bb13: ; preds = %bb12
+ %104 = bitcast %struct.GIM_CONTACT* %pcontact.1 to i8* ; [#uses=1]
+ %105 = bitcast %struct.GIM_CONTACT* %96 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %104, i8* %105, i32 48, i32 4, i1 false)
+ br label %bb26
+
+bb14: ; preds = %bb12
+ br i1 %toBool15, label %bb26, label %bb16
+
+bb16: ; preds = %bb14
+ %106 = fsub float %99, %102 ; [#uses=1]
+ %107 = call float @fabsf(float %106) nounwind readnone ; [#uses=1]
+ %108 = fcmp olt float %107, 0x3EE4F8B580000000 ; [#uses=1]
+ %109 = icmp ult i32 %coincident_count.1, 8 ; [#uses=1]
+ %or.cond = and i1 %108, %109 ; [#uses=1]
+ br i1 %or.cond, label %bb19, label %bb26
+
+bb19: ; preds = %bb16
+ %110 = getelementptr inbounds [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %coincident_count.1, i32 0, i32 0 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.GIM_CONTACT* %95, i32 %94, i32 1, i32 0, i32 0 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ store float %112, float* %110, align 8
+ %113 = getelementptr inbounds [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %coincident_count.1, i32 0, i32 1 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.GIM_CONTACT* %95, i32 %94, i32 1, i32 0, i32 1 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=1]
+ store float %115, float* %113, align 4
+ %116 = getelementptr inbounds [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %coincident_count.1, i32 0, i32 2 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.GIM_CONTACT* %95, i32 %94, i32 1, i32 0, i32 2 ; [#uses=1]
+ %118 = load float* %117, align 4 ; [#uses=1]
+ store float %118, float* %116, align 8
+ %119 = getelementptr inbounds [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %coincident_count.1, i32 0, i32 3 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.GIM_CONTACT* %95, i32 %94, i32 1, i32 0, i32 3 ; [#uses=1]
+ %121 = load float* %120, align 4 ; [#uses=1]
+ store float %121, float* %119, align 4
+ %122 = add i32 %coincident_count.1, 1 ; [#uses=1]
+ br label %bb26
+
+bb20: ; preds = %bb11
+ %123 = icmp eq i32 %coincident_count.1, 0 ; [#uses=2]
+ %or.cond44 = or i1 %toBool15, %123 ; [#uses=1]
+ br i1 %or.cond44, label %bb24, label %bb23
+
+bb23: ; preds = %bb20
+ %124 = getelementptr inbounds %struct.GIM_CONTACT* %pcontact.1, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %125 = load float* %124, align 4 ; [#uses=2]
+ %126 = getelementptr inbounds %struct.GIM_CONTACT* %pcontact.1, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %127 = load float* %126, align 4 ; [#uses=2]
+ %128 = getelementptr inbounds %struct.GIM_CONTACT* %pcontact.1, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %129 = load float* %128, align 4 ; [#uses=2]
+ br i1 %123, label %bb2.i, label %bb.i76
+
+bb.i76: ; preds = %bb.i76, %bb23
+ %i.031.i = phi i32 [ %136, %bb.i76 ], [ 0, %bb23 ] ; [#uses=4]
+ %vec_sum.0.0.030.i = phi float [ %131, %bb.i76 ], [ %125, %bb23 ] ; [#uses=1]
+ %vec_sum.0.1.029.i = phi float [ %133, %bb.i76 ], [ %127, %bb23 ] ; [#uses=1]
+ %vec_sum.0.2.028.i = phi float [ %135, %bb.i76 ], [ %129, %bb23 ] ; [#uses=1]
+ %scevgep38.i = getelementptr [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %i.031.i, i32 0, i32 2 ; [#uses=1]
+ %scevgep37.i = getelementptr [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %i.031.i, i32 0, i32 1 ; [#uses=1]
+ %scevgep36.i = getelementptr [8 x %struct.btQuadWord]* %coincident_normals, i32 0, i32 %i.031.i, i32 0, i32 0 ; [#uses=1]
+ %130 = load float* %scevgep36.i, align 8 ; [#uses=1]
+ %131 = fadd float %vec_sum.0.0.030.i, %130 ; [#uses=2]
+ %132 = load float* %scevgep37.i, align 4 ; [#uses=1]
+ %133 = fadd float %vec_sum.0.1.029.i, %132 ; [#uses=2]
+ %134 = load float* %scevgep38.i, align 8 ; [#uses=1]
+ %135 = fadd float %vec_sum.0.2.028.i, %134 ; [#uses=2]
+ %136 = add i32 %i.031.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %136, %coincident_count.1 ; [#uses=1]
+ br i1 %exitcond, label %bb2.i, label %bb.i76
+
+bb2.i: ; preds = %bb.i76, %bb23
+ %vec_sum.0.0.0.lcssa.i = phi float [ %125, %bb23 ], [ %131, %bb.i76 ] ; [#uses=3]
+ %vec_sum.0.1.0.lcssa.i = phi float [ %127, %bb23 ], [ %133, %bb.i76 ] ; [#uses=3]
+ %vec_sum.0.2.0.lcssa.i = phi float [ %129, %bb23 ], [ %135, %bb.i76 ] ; [#uses=3]
+ %137 = fmul float %vec_sum.0.0.0.lcssa.i, %vec_sum.0.0.0.lcssa.i ; [#uses=1]
+ %138 = fmul float %vec_sum.0.1.0.lcssa.i, %vec_sum.0.1.0.lcssa.i ; [#uses=1]
+ %139 = fadd float %137, %138 ; [#uses=1]
+ %140 = fmul float %vec_sum.0.2.0.lcssa.i, %vec_sum.0.2.0.lcssa.i ; [#uses=1]
+ %141 = fadd float %139, %140 ; [#uses=4]
+ %tmp22.i = bitcast float %141 to i32 ; [#uses=1]
+ %142 = fcmp olt float %141, 0x3EE4F8B580000000 ; [#uses=1]
+ br i1 %142, label %bb24, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %143 = fcmp ugt float %141, 0x3E7AD7F2A0000000 ; [#uses=1]
+ br i1 %143, label %bb5.i77, label %bb10.i
+
+bb5.i77: ; preds = %bb3.i
+ %144 = fmul float %141, 5.000000e-01 ; [#uses=1]
+ %145 = lshr i32 %tmp22.i, 1 ; [#uses=1]
+ %146 = sub i32 1597463007, %145 ; [#uses=1]
+ %tmp12.i = bitcast i32 %146 to float ; [#uses=3]
+ %147 = fmul float %144, %tmp12.i ; [#uses=1]
+ %148 = fmul float %147, %tmp12.i ; [#uses=1]
+ %149 = fsub float 1.500000e+00, %148 ; [#uses=1]
+ %150 = fmul float %149, %tmp12.i ; [#uses=1]
+ br label %bb10.i
+
+bb10.i: ; preds = %bb5.i77, %bb3.i
+ %storemerge.i = phi float [ %150, %bb5.i77 ], [ 0x47EFFFFFE0000000, %bb3.i ] ; [#uses=3]
+ %151 = fmul float %vec_sum.0.2.0.lcssa.i, %storemerge.i ; [#uses=1]
+ %152 = fmul float %vec_sum.0.1.0.lcssa.i, %storemerge.i ; [#uses=1]
+ %153 = fmul float %vec_sum.0.0.0.lcssa.i, %storemerge.i ; [#uses=1]
+ store float %153, float* %124, align 4
+ store float %152, float* %126, align 4
+ store float %151, float* %128, align 4
+ %154 = getelementptr inbounds %struct.GIM_CONTACT* %pcontact.1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %154, align 4
+ br label %bb24
+
+bb24: ; preds = %bb10.i, %bb2.i, %bb20
+ %coincident_count.2 = phi i32 [ 0, %bb10.i ], [ %coincident_count.1, %bb20 ], [ 0, %bb2.i ] ; [#uses=1]
+ %155 = load i32* %60, align 4 ; [#uses=4]
+ %156 = load i32* %1, align 4 ; [#uses=2]
+ %157 = icmp ugt i32 %155, %156 ; [#uses=1]
+ br i1 %157, label %entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i, label %bb.i.i
+
+entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i: ; preds = %bb24
+ %.pre.i = load %struct.GIM_CONTACT** %90, align 4 ; [#uses=1]
+ br label %invcont25
+
+bb.i.i: ; preds = %bb24
+ store i32 %155, i32* %1, align 4
+ %158 = shl i32 %156, 1 ; [#uses=1]
+ %159 = add i32 %158, 4 ; [#uses=3]
+ %160 = icmp eq i32 %159, 0 ; [#uses=1]
+ br i1 %160, label %bb.i.i.i50, label %bb1.i.i.i
+
+bb.i.i.i50: ; preds = %bb.i.i
+ store i32 0, i32* %60, align 4
+ %161 = load %struct.GIM_CONTACT** %90, align 4 ; [#uses=2]
+ %162 = icmp eq %struct.GIM_CONTACT* %161, null ; [#uses=1]
+ br i1 %162, label %invcont25, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %bb.i.i.i50
+ %163 = bitcast %struct.GIM_CONTACT* %161 to i8* ; [#uses=1]
+ invoke void @_Z8gim_freePv(i8* %163)
+ to label %.noexc51 unwind label %lpad
+
+.noexc51: ; preds = %bb.i.i.i.i
+ store %struct.GIM_CONTACT* null, %struct.GIM_CONTACT** %90, align 4
+ br label %invcont25
+
+bb1.i.i.i: ; preds = %bb.i.i
+ %164 = icmp eq i32 %155, 0 ; [#uses=1]
+ %165 = mul i32 %159, 48 ; [#uses=2]
+ br i1 %164, label %bb3.i.i.i, label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i
+ %166 = mul i32 %155, 48 ; [#uses=1]
+ %167 = load %struct.GIM_CONTACT** %90, align 4 ; [#uses=1]
+ %168 = bitcast %struct.GIM_CONTACT* %167 to i8* ; [#uses=1]
+ %169 = invoke i8* @_Z11gim_reallocPvjj(i8* %168, i32 %166, i32 %165)
+ to label %.noexc52 unwind label %lpad ; [#uses=1]
+
+.noexc52: ; preds = %bb2.i.i.i
+ %170 = bitcast i8* %169 to %struct.GIM_CONTACT* ; [#uses=1]
+ br label %bb4.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i.i.i
+ %171 = invoke i8* @_Z9gim_allocj(i32 %165)
+ to label %.noexc53 unwind label %lpad ; [#uses=1]
+
+.noexc53: ; preds = %bb3.i.i.i
+ %172 = bitcast i8* %171 to %struct.GIM_CONTACT* ; [#uses=1]
+ br label %bb4.i.i.i
+
+bb4.i.i.i: ; preds = %.noexc53, %.noexc52
+ %storemerge = phi %struct.GIM_CONTACT* [ %170, %.noexc52 ], [ %172, %.noexc53 ] ; [#uses=2]
+ store %struct.GIM_CONTACT* %storemerge, %struct.GIM_CONTACT** %90, align 4
+ store i32 %159, i32* %60, align 4
+ br label %invcont25
+
+invcont25: ; preds = %bb4.i.i.i, %.noexc51, %bb.i.i.i50, %entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i
+ %173 = phi %struct.GIM_CONTACT* [ %.pre.i, %entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i ], [ null, %bb.i.i.i50 ], [ null, %.noexc51 ], [ %storemerge, %bb4.i.i.i ] ; [#uses=1]
+ %174 = load i32* %1, align 4 ; [#uses=1]
+ %175 = getelementptr inbounds %struct.GIM_CONTACT* %173, i32 %174 ; [#uses=1]
+ %176 = bitcast %struct.GIM_CONTACT* %175 to i8* ; [#uses=1]
+ %177 = bitcast %struct.GIM_CONTACT* %96 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %176, i8* %177, i32 48, i32 4, i1 false)
+ %178 = load i32* %1, align 4 ; [#uses=2]
+ %179 = add i32 %178, 1 ; [#uses=1]
+ store i32 %179, i32* %1, align 4
+ %180 = load %struct.GIM_CONTACT** %90, align 4 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.GIM_CONTACT* %180, i32 %178 ; [#uses=1]
+ br label %bb26
+
+bb26: ; preds = %invcont25, %bb19, %bb16, %bb14, %bb13
+ %coincident_count.0 = phi i32 [ 0, %bb13 ], [ %122, %bb19 ], [ %coincident_count.1, %bb16 ], [ %coincident_count.1, %bb14 ], [ %coincident_count.2, %invcont25 ] ; [#uses=1]
+ %pcontact.0 = phi %struct.GIM_CONTACT* [ %pcontact.1, %bb13 ], [ %pcontact.1, %bb19 ], [ %pcontact.1, %bb16 ], [ %pcontact.1, %bb14 ], [ %181, %invcont25 ] ; [#uses=1]
+ %phitmp = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb27
+
+bb27: ; preds = %bb26, %invcont10
+ %indvar = phi i32 [ %phitmp, %bb26 ], [ 1, %invcont10 ] ; [#uses=4]
+ %coincident_count.1 = phi i32 [ %coincident_count.0, %bb26 ], [ 0, %invcont10 ] ; [#uses=11]
+ %last_key.0 = phi i32 [ %93, %bb26 ], [ %54, %invcont10 ] ; [#uses=1]
+ %pcontact.1 = phi %struct.GIM_CONTACT* [ %pcontact.0, %bb26 ], [ %92, %invcont10 ] ; [#uses=10]
+ %182 = icmp ugt i32 %keycontacts.1.0119, %indvar ; [#uses=1]
+ br i1 %182, label %bb11, label %bb32
+
+invcont30: ; preds = %bb.i.i.i, %_ZN9gim_arrayI15GIM_RSORT_TOKENE5clearEv.exit.i.i
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr96)
+ unreachable
+
+bb32: ; preds = %bb27
+ %183 = icmp eq %struct.CONTACT_KEY_TOKEN* %keycontacts.0.2120, null ; [#uses=1]
+ br i1 %183, label %_ZN9gim_arrayI15GIM_RSORT_TOKENED1Ev.exit49, label %bb.i.i.i47
+
+bb.i.i.i47: ; preds = %bb32
+ %184 = bitcast %struct.CONTACT_KEY_TOKEN* %keycontacts.0.2120 to i8* ; [#uses=1]
+ call void @_Z8gim_freePv(i8* %184)
+ ret void
+
+_ZN9gim_arrayI15GIM_RSORT_TOKENED1Ev.exit49: ; preds = %bb32
+ ret void
+
+lpad: ; preds = %bb3.i.i.i, %bb2.i.i.i, %bb.i.i.i.i, %bb3.i.i.i87, %bb2.i.i.i86, %bb.i.i.i.i84
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select35 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %_ZN9gim_arrayI15GIM_RSORT_TOKENE5clearEv.exit.i.i
+
+_ZN9gim_arrayI15GIM_RSORT_TOKENE5clearEv.exit.i.i: ; preds = %lpad, %lpad.thread
+ %eh_ptr96 = phi i8* [ %eh_ptr93, %lpad.thread ], [ %eh_ptr, %lpad ] ; [#uses=1]
+ %keycontacts.0.395 = phi %struct.CONTACT_KEY_TOKEN* [ %25, %lpad.thread ], [ %keycontacts.0.2120, %lpad ] ; [#uses=2]
+ %185 = icmp eq %struct.CONTACT_KEY_TOKEN* %keycontacts.0.395, null ; [#uses=1]
+ br i1 %185, label %invcont30, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZN9gim_arrayI15GIM_RSORT_TOKENE5clearEv.exit.i.i
+ %186 = bitcast %struct.CONTACT_KEY_TOKEN* %keycontacts.0.395 to i8* ; [#uses=1]
+ invoke void @_Z8gim_freePv(i8* %186)
+ to label %invcont30 unwind label %lpad36
+
+lpad36: ; preds = %bb.i.i.i
+ %eh_ptr37 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select39 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr37, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_Z13gim_heap_sortI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jT0_(%struct.CONTACT_KEY_TOKEN* %pArr, i32 %element_count, %struct.CONTACT_KEY_TOKEN_COMP* nocapture byval align 4 %CompareFunc) nounwind {
+entry:
+ %0 = icmp ult i32 %element_count, 2 ; [#uses=1]
+ br i1 %0, label %return, label %bb.nph27
+
+bb.nph27: ; preds = %entry
+ %1 = lshr i32 %element_count, 1 ; [#uses=4]
+ %tmp41 = add i32 %1, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %_Z13gim_down_heapI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jjT0_.exit, %bb.nph27
+ %indvar34 = phi i32 [ 0, %bb.nph27 ], [ %indvar.next35, %_Z13gim_down_heapI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jjT0_.exit ] ; [#uses=3]
+ %k.026 = sub i32 %1, %indvar34 ; [#uses=2]
+ %scevgep39 = getelementptr %struct.CONTACT_KEY_TOKEN* %pArr, i32 %k.026, i32 0 ; [#uses=1]
+ %scevgep40 = getelementptr i32* %scevgep39, i32 -1 ; [#uses=1]
+ %tmp42 = sub i32 %tmp41, %indvar34 ; [#uses=1]
+ %scevgep4344 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %tmp42, i32 0 ; [#uses=1]
+ %2 = load i32* %scevgep4344, align 4 ; [#uses=2]
+ %3 = load i32* %scevgep40, align 4 ; [#uses=1]
+ br label %bb9.i
+
+bb.i: ; preds = %bb9.i
+ %4 = shl i32 %k_addr.0.i, 1 ; [#uses=5]
+ %5 = icmp slt i32 %4, %element_count ; [#uses=1]
+ br i1 %5, label %bb1.i, label %bb6.i
+
+bb1.i: ; preds = %bb.i
+ %6 = add nsw i32 %4, -1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %6, i32 0 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %4, i32 0 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = sub i32 %8, %10 ; [#uses=1]
+ %.lobit.i = lshr i32 %11, 31 ; [#uses=1]
+ %..i = or i32 %.lobit.i, %4 ; [#uses=1]
+ br label %bb6.i
+
+bb6.i: ; preds = %bb1.i, %bb.i
+ %child.0.i = phi i32 [ %4, %bb.i ], [ %..i, %bb1.i ] ; [#uses=2]
+ %12 = add nsw i32 %child.0.i, -1 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %12, i32 0 ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=2]
+ %15 = sub i32 %2, %14 ; [#uses=1]
+ %toBool7.i = icmp slt i32 %15, 0 ; [#uses=1]
+ br i1 %toBool7.i, label %bb8.i, label %_Z13gim_down_heapI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jjT0_.exit
+
+bb8.i: ; preds = %bb6.i
+ %16 = add i32 %k_addr.0.i, -1 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %16, i32 0 ; [#uses=1]
+ store i32 %14, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %16, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %12, i32 1 ; [#uses=1]
+ %20 = load i32* %19, align 4 ; [#uses=1]
+ store i32 %20, i32* %18, align 4
+ br label %bb9.i
+
+bb9.i: ; preds = %bb8.i, %bb
+ %k_addr.0.i = phi i32 [ %k.026, %bb ], [ %child.0.i, %bb8.i ] ; [#uses=4]
+ %21 = icmp ult i32 %1, %k_addr.0.i ; [#uses=1]
+ br i1 %21, label %_Z13gim_down_heapI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jjT0_.exit, label %bb.i
+
+_Z13gim_down_heapI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jjT0_.exit: ; preds = %bb9.i, %bb6.i
+ %22 = add i32 %k_addr.0.i, -1 ; [#uses=2]
+ %23 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %22, i32 0 ; [#uses=1]
+ store i32 %2, i32* %23, align 4
+ %24 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %22, i32 1 ; [#uses=1]
+ store i32 %3, i32* %24, align 4
+ %indvar.next35 = add i32 %indvar34, 1 ; [#uses=2]
+ %exitcond36 = icmp eq i32 %indvar.next35, %1 ; [#uses=1]
+ br i1 %exitcond36, label %bb3.preheader, label %bb
+
+bb3.preheader: ; preds = %_Z13gim_down_heapI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jjT0_.exit
+ %25 = icmp ugt i32 %element_count, 1 ; [#uses=1]
+ br i1 %25, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb3.preheader
+ %26 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 0, i32 0 ; [#uses=3]
+ %27 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 0, i32 1 ; [#uses=3]
+ %tmp = add i32 %element_count, -1 ; [#uses=2]
+ br label %bb2
+
+bb2: ; preds = %_Z13gim_down_heapI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jjT0_.exit20, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %_Z13gim_down_heapI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jjT0_.exit20 ] ; [#uses=3]
+ %tmp29 = sub i32 %element_count, %indvar ; [#uses=1]
+ %scevgep = getelementptr %struct.CONTACT_KEY_TOKEN* %pArr, i32 %tmp29, i32 0 ; [#uses=1]
+ %scevgep30 = getelementptr i32* %scevgep, i32 -1 ; [#uses=2]
+ %tmp31 = sub i32 %tmp, %indvar ; [#uses=3]
+ %scevgep3233 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %tmp31, i32 0 ; [#uses=2]
+ %28 = load i32* %26, align 4 ; [#uses=1]
+ %29 = load i32* %27, align 4 ; [#uses=1]
+ %30 = load i32* %scevgep3233, align 4 ; [#uses=1]
+ store i32 %30, i32* %26, align 4
+ %31 = load i32* %scevgep30, align 4 ; [#uses=1]
+ store i32 %31, i32* %27, align 4
+ store i32 %28, i32* %scevgep3233, align 4
+ store i32 %29, i32* %scevgep30, align 4
+ %32 = load i32* %26, align 4 ; [#uses=2]
+ %33 = load i32* %27, align 4 ; [#uses=1]
+ %34 = lshr i32 %tmp31, 1 ; [#uses=1]
+ br label %bb9.i19
+
+bb.i10: ; preds = %bb9.i19
+ %35 = shl i32 %k_addr.0.i18, 1 ; [#uses=5]
+ %36 = icmp slt i32 %35, %tmp31 ; [#uses=1]
+ br i1 %36, label %bb1.i13, label %bb6.i16
+
+bb1.i13: ; preds = %bb.i10
+ %37 = add nsw i32 %35, -1 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %37, i32 0 ; [#uses=1]
+ %39 = load i32* %38, align 4 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %35, i32 0 ; [#uses=1]
+ %41 = load i32* %40, align 4 ; [#uses=1]
+ %42 = sub i32 %39, %41 ; [#uses=1]
+ %.lobit.i11 = lshr i32 %42, 31 ; [#uses=1]
+ %..i12 = or i32 %.lobit.i11, %35 ; [#uses=1]
+ br label %bb6.i16
+
+bb6.i16: ; preds = %bb1.i13, %bb.i10
+ %child.0.i14 = phi i32 [ %35, %bb.i10 ], [ %..i12, %bb1.i13 ] ; [#uses=2]
+ %43 = add nsw i32 %child.0.i14, -1 ; [#uses=2]
+ %44 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %43, i32 0 ; [#uses=1]
+ %45 = load i32* %44, align 4 ; [#uses=2]
+ %46 = sub i32 %32, %45 ; [#uses=1]
+ %toBool7.i15 = icmp slt i32 %46, 0 ; [#uses=1]
+ br i1 %toBool7.i15, label %bb8.i17, label %_Z13gim_down_heapI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jjT0_.exit20
+
+bb8.i17: ; preds = %bb6.i16
+ %47 = add i32 %k_addr.0.i18, -1 ; [#uses=2]
+ %48 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %47, i32 0 ; [#uses=1]
+ store i32 %45, i32* %48, align 4
+ %49 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %47, i32 1 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %43, i32 1 ; [#uses=1]
+ %51 = load i32* %50, align 4 ; [#uses=1]
+ store i32 %51, i32* %49, align 4
+ br label %bb9.i19
+
+bb9.i19: ; preds = %bb8.i17, %bb2
+ %k_addr.0.i18 = phi i32 [ 1, %bb2 ], [ %child.0.i14, %bb8.i17 ] ; [#uses=4]
+ %52 = icmp ult i32 %34, %k_addr.0.i18 ; [#uses=1]
+ br i1 %52, label %_Z13gim_down_heapI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jjT0_.exit20, label %bb.i10
+
+_Z13gim_down_heapI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jjT0_.exit20: ; preds = %bb9.i19, %bb6.i16
+ %53 = add i32 %k_addr.0.i18, -1 ; [#uses=2]
+ %54 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %53, i32 0 ; [#uses=1]
+ store i32 %32, i32* %54, align 4
+ %55 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %pArr, i32 %53, i32 1 ; [#uses=1]
+ store i32 %33, i32* %55, align 4
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb2
+
+return: ; preds = %_Z13gim_down_heapI15GIM_RSORT_TOKEN26GIM_RSORT_TOKEN_COMPARATOREvPT_jjT0_.exit20, %bb3.preheader, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17gim_contact_array21merge_contacts_uniqueERKS_(%struct.gim_contact_array* nocapture %this, %struct.gim_contact_array* nocapture %contacts) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 1 ; [#uses=6]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %_ZN9gim_arrayI11GIM_CONTACTE5clearEv.exit, label %bb.nph.i.i
+
+bb.nph.i.i: ; preds = %entry
+ store i32 0, i32* %0, align 4
+ br label %_ZN9gim_arrayI11GIM_CONTACTE5clearEv.exit
+
+_ZN9gim_arrayI11GIM_CONTACTE5clearEv.exit: ; preds = %bb.nph.i.i, %entry
+ %3 = getelementptr inbounds %struct.gim_contact_array* %contacts, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=3]
+ %5 = icmp eq i32 %4, 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.gim_contact_array* %contacts, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load %struct.GIM_CONTACT** %6, align 4 ; [#uses=1]
+ %8 = add i32 %4, -1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.GIM_CONTACT* %7, i32 %8 ; [#uses=1]
+ br i1 %5, label %bb, label %bb3.preheader
+
+bb3.preheader: ; preds = %_ZN9gim_arrayI11GIM_CONTACTE5clearEv.exit
+ %10 = icmp ugt i32 %4, 1 ; [#uses=0]
+ ret void
+
+bb: ; preds = %_ZN9gim_arrayI11GIM_CONTACTE5clearEv.exit
+ %11 = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 2 ; [#uses=2]
+ %12 = load i32* %11, align 4 ; [#uses=2]
+ %13 = icmp ugt i32 %12, 0 ; [#uses=1]
+ br i1 %13, label %entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i, label %bb1.i.i.i
+
+entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i: ; preds = %bb
+ %.phi.trans.insert.i = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre.i = load %struct.GIM_CONTACT** %.phi.trans.insert.i, align 4 ; [#uses=1]
+ br label %_ZN9gim_arrayI11GIM_CONTACTE9push_backERKS0_.exit
+
+bb1.i.i.i: ; preds = %bb
+ store i32 %12, i32* %0, align 4
+ %14 = tail call i8* @_Z9gim_allocj(i32 192) ; [#uses=1]
+ %15 = bitcast i8* %14 to %struct.GIM_CONTACT* ; [#uses=2]
+ %16 = getelementptr inbounds %struct.gim_contact_array* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store %struct.GIM_CONTACT* %15, %struct.GIM_CONTACT** %16, align 4
+ store i32 4, i32* %11, align 4
+ br label %_ZN9gim_arrayI11GIM_CONTACTE9push_backERKS0_.exit
+
+_ZN9gim_arrayI11GIM_CONTACTE9push_backERKS0_.exit: ; preds = %bb1.i.i.i, %entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i
+ %17 = phi %struct.GIM_CONTACT* [ %.pre.i, %entry._ZN9gim_arrayI11GIM_CONTACTE12growingCheckEv.exit_crit_edge.i ], [ %15, %bb1.i.i.i ] ; [#uses=1]
+ %18 = load i32* %0, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.GIM_CONTACT* %17, i32 %18 ; [#uses=1]
+ %20 = bitcast %struct.GIM_CONTACT* %19 to i8* ; [#uses=1]
+ %21 = bitcast %struct.GIM_CONTACT* %9 to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %20, i8* %21, i32 48, i32 4, i1 false)
+ %22 = load i32* %0, align 4 ; [#uses=1]
+ %23 = add i32 %22, 1 ; [#uses=1]
+ store i32 %23, i32* %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_Z21gim_set_alloc_handlerPFPvjE(i8* (i32)* %fn) nounwind {
+entry:
+ store i8* (i32)* %fn, i8* (i32)** @_ZL9g_allocfn, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_Z22gim_set_alloca_handlerPFPvjE(i8* (i32)* %fn) nounwind {
+entry:
+ store i8* (i32)* %fn, i8* (i32)** @_ZL10g_allocafn, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_Z23gim_set_realloc_handlerPFPvS_jjE(i8* (i8*, i32, i32)* %fn) nounwind {
+entry:
+ store i8* (i8*, i32, i32)* %fn, i8* (i8*, i32, i32)** @_ZL11g_reallocfn, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_Z20gim_set_free_handlerPFvPvE(void (i8*)* %fn) nounwind {
+entry:
+ store void (i8*)* %fn, void (i8*)** @_ZL8g_freefn, align 4
+ ret void
+}
+
+; [#uses=0]
+define i8* (i32)* @_Z21gim_get_alloc_handlerv() nounwind readonly {
+entry:
+ %0 = load i8* (i32)** @_ZL9g_allocfn, align 4 ; [#uses=1]
+ ret i8* (i32)* %0
+}
+
+; [#uses=0]
+define i8* (i32)* @_Z22gim_get_alloca_handlerv() nounwind readonly {
+entry:
+ %0 = load i8* (i32)** @_ZL10g_allocafn, align 4 ; [#uses=1]
+ ret i8* (i32)* %0
+}
+
+; [#uses=0]
+define i8* (i8*, i32, i32)* @_Z23gim_get_realloc_handlerv() nounwind readonly {
+entry:
+ %0 = load i8* (i8*, i32, i32)** @_ZL11g_reallocfn, align 4 ; [#uses=1]
+ ret i8* (i8*, i32, i32)* %0
+}
+
+; [#uses=0]
+define void (i8*)* @_Z20gim_get_free_handlerv() nounwind readonly {
+entry:
+ %0 = load void (i8*)** @_ZL8g_freefn, align 4 ; [#uses=1]
+ ret void (i8*)* %0
+}
+
+; [#uses=5]
+define void @_Z8gim_freePv(i8* %ptr) {
+entry:
+ %0 = icmp eq i8* %ptr, null ; [#uses=1]
+ br i1 %0, label %return, label %bb
+
+bb: ; preds = %entry
+ %1 = load void (i8*)** @_ZL8g_freefn, align 4 ; [#uses=2]
+ %2 = icmp eq void (i8*)* %1, null ; [#uses=1]
+ br i1 %2, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ tail call void %1(i8* %ptr)
+ ret void
+
+bb2: ; preds = %bb
+ tail call void @free(i8* %ptr) nounwind
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=3]
+declare void @free(i8* nocapture) nounwind
+
+; [#uses=7]
+define i8* @_Z9gim_allocj(i32 %size) {
+entry:
+ %0 = load i8* (i32)** @_ZL9g_allocfn, align 4 ; [#uses=2]
+ %1 = icmp eq i8* (i32)* %0, null ; [#uses=1]
+ br i1 %1, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %2 = tail call i8* %0(i32 %size) ; [#uses=1]
+ ret i8* %2
+
+bb1: ; preds = %entry
+ %3 = tail call noalias i8* @malloc(i32 %size) nounwind ; [#uses=1]
+ ret i8* %3
+}
+
+; [#uses=4]
+declare noalias i8* @malloc(i32) nounwind
+
+; [#uses=3]
+define i8* @_Z11gim_reallocPvjj(i8* %ptr, i32 %oldsize, i32 %newsize) {
+entry:
+ %0 = load i8* (i32)** @_ZL9g_allocfn, align 4 ; [#uses=2]
+ %1 = icmp eq i8* (i32)* %0, null ; [#uses=1]
+ br i1 %1, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %entry
+ %2 = tail call i8* %0(i32 %newsize) ; [#uses=1]
+ br label %_Z9gim_allocj.exit
+
+bb1.i: ; preds = %entry
+ %3 = tail call noalias i8* @malloc(i32 %newsize) nounwind ; [#uses=1]
+ br label %_Z9gim_allocj.exit
+
+_Z9gim_allocj.exit: ; preds = %bb1.i, %bb.i
+ %4 = phi i8* [ %2, %bb.i ], [ %3, %bb1.i ] ; [#uses=4]
+ %5 = icmp ult i32 %oldsize, %newsize ; [#uses=1]
+ %iftmp.25.0 = select i1 %5, i32 %oldsize, i32 %newsize ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %4, i8* %ptr, i32 %iftmp.25.0, i32 1, i1 false) nounwind
+ %6 = icmp eq i8* %ptr, null ; [#uses=1]
+ br i1 %6, label %_Z8gim_freePv.exit, label %bb.i4
+
+bb.i4: ; preds = %_Z9gim_allocj.exit
+ %7 = load void (i8*)** @_ZL8g_freefn, align 4 ; [#uses=2]
+ %8 = icmp eq void (i8*)* %7, null ; [#uses=1]
+ br i1 %8, label %bb2.i, label %bb1.i5
+
+bb1.i5: ; preds = %bb.i4
+ tail call void %7(i8* %ptr)
+ ret i8* %4
+
+bb2.i: ; preds = %bb.i4
+ tail call void @free(i8* %ptr) nounwind
+ ret i8* %4
+
+_Z8gim_freePv.exit: ; preds = %_Z9gim_allocj.exit
+ ret i8* %4
+}
+
+; [#uses=0]
+define i8* @_Z10gim_allocaj(i32 %size) {
+entry:
+ %0 = load i8* (i32)** @_ZL10g_allocafn, align 4 ; [#uses=2]
+ %1 = icmp eq i8* (i32)* %0, null ; [#uses=1]
+ br i1 %1, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %2 = tail call i8* %0(i32 %size) ; [#uses=1]
+ ret i8* %2
+
+bb1: ; preds = %entry
+ %3 = load i8* (i32)** @_ZL9g_allocfn, align 4 ; [#uses=2]
+ %4 = icmp eq i8* (i32)* %3, null ; [#uses=1]
+ br i1 %4, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %bb1
+ %5 = tail call i8* %3(i32 %size) ; [#uses=1]
+ ret i8* %5
+
+bb1.i: ; preds = %bb1
+ %6 = tail call noalias i8* @malloc(i32 %size) nounwind ; [#uses=1]
+ ret i8* %6
+}
+
+; [#uses=0]
+define zeroext i8 @_ZNK12GIM_TRIANGLE26collide_triangle_hard_testERKS_R25GIM_TRIANGLE_CONTACT_DATA(%struct.GIM_TRIANGLE* nocapture %this, %struct.GIM_TRIANGLE* nocapture %other, %struct.GIM_TRIANGLE_CONTACT* nocapture %contact_data) nounwind align 2 {
+entry:
+ %calc_cache = alloca %struct.GIM_TRIANGLE_CALCULATION_CACHE, align 8 ; [#uses=1]
+ %0 = getelementptr inbounds %struct.GIM_TRIANGLE* %other, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.GIM_TRIANGLE* %other, i32 0, i32 1, i32 2 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.GIM_TRIANGLE* %other, i32 0, i32 1, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.GIM_TRIANGLE* %other, i32 0, i32 1, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.GIM_TRIANGLE* %this, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.GIM_TRIANGLE* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.GIM_TRIANGLE* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.GIM_TRIANGLE* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %10 = call zeroext i8 @_ZN30GIM_TRIANGLE_CALCULATION_CACHE18triangle_collisionERK9btVector3S2_S2_fS2_S2_S2_fR25GIM_TRIANGLE_CONTACT_DATA(%struct.GIM_TRIANGLE_CALCULATION_CACHE* %calc_cache, %struct.btQuadWord* %9, %struct.btQuadWord* %8, %struct.btQuadWord* %7, float %6, %struct.btQuadWord* %4, %struct.btQuadWord* %3, %struct.btQuadWord* %2, float %1, %struct.GIM_TRIANGLE_CONTACT* %contact_data) ; [#uses=1]
+ ret i8 %10
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN25GIM_TRIANGLE_CONTACT_DATA12merge_pointsERK9btVector4fPK9btVector3j(%struct.GIM_TRIANGLE_CONTACT* nocapture %this, %struct.btQuaternion* nocapture %plane, float %margin, %struct.btQuadWord* nocapture %points, i32 %point_count) nounwind inlinehint align 2 {
+entry:
+ %point_indices.i = alloca [16 x i32], align 4 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 1 ; [#uses=4]
+ store i32 0, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 0 ; [#uses=2]
+ store float -1.000000e+03, float* %13, align 4
+ %14 = icmp eq i32 %point_count, 0 ; [#uses=1]
+ br i1 %14, label %_ZN25GIM_TRIANGLE_CONTACT_DATA19mergepoints_genericI22DISTANCE_PLANE_3D_FUNC9btVector4EEvRKT0_fPK9btVector3jT_.exit, label %bb.nph13.i
+
+bb.nph13.i: ; preds = %entry
+ %15 = getelementptr inbounds [16 x i32]* %point_indices.i, i32 0, i32 0 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %bb5.i, %bb.nph13.i
+ %16 = phi i32 [ 0, %bb.nph13.i ], [ %39, %bb5.i ] ; [#uses=4]
+ %17 = phi float [ -1.000000e+03, %bb.nph13.i ], [ %40, %bb5.i ] ; [#uses=5]
+ %18 = phi i32 [ 0, %bb.nph13.i ], [ %41, %bb5.i ] ; [#uses=6]
+ %scevgep22.i = getelementptr %struct.btQuadWord* %points, i32 %18, i32 0, i32 2 ; [#uses=1]
+ %scevgep21.i = getelementptr %struct.btQuadWord* %points, i32 %18, i32 0, i32 1 ; [#uses=1]
+ %scevgep1920.i = getelementptr inbounds %struct.btQuadWord* %points, i32 %18, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %1, align 4 ; [#uses=1]
+ %20 = load float* %scevgep1920.i, align 4 ; [#uses=1]
+ %21 = fmul float %19, %20 ; [#uses=1]
+ %22 = load float* %4, align 4 ; [#uses=1]
+ %23 = load float* %scevgep21.i, align 4 ; [#uses=1]
+ %24 = fmul float %22, %23 ; [#uses=1]
+ %25 = fadd float %21, %24 ; [#uses=1]
+ %26 = load float* %7, align 4 ; [#uses=1]
+ %27 = load float* %scevgep22.i, align 4 ; [#uses=1]
+ %28 = fmul float %26, %27 ; [#uses=1]
+ %29 = fadd float %25, %28 ; [#uses=1]
+ %30 = load float* %10, align 4 ; [#uses=1]
+ %31 = fsub float %29, %30 ; [#uses=1]
+ %32 = fsub float %margin, %31 ; [#uses=5]
+ %33 = fcmp ult float %32, 0.000000e+00 ; [#uses=1]
+ br i1 %33, label %bb5.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %34 = fcmp olt float %17, %32 ; [#uses=1]
+ br i1 %34, label %bb2.i, label %bb3.i
+
+bb2.i: ; preds = %bb1.i
+ store float %32, float* %13, align 4
+ store i32 %18, i32* %15, align 4
+ store i32 1, i32* %12, align 4
+ br label %bb5.i
+
+bb3.i: ; preds = %bb1.i
+ %35 = fadd float %32, 0x3E80000000000000 ; [#uses=1]
+ %36 = fcmp ult float %35, %17 ; [#uses=1]
+ br i1 %36, label %bb5.i, label %bb4.i
+
+bb4.i: ; preds = %bb3.i
+ %37 = getelementptr inbounds [16 x i32]* %point_indices.i, i32 0, i32 %16 ; [#uses=1]
+ store i32 %18, i32* %37, align 4
+ %38 = add i32 %16, 1 ; [#uses=2]
+ store i32 %38, i32* %12, align 4
+ br label %bb5.i
+
+bb5.i: ; preds = %bb4.i, %bb3.i, %bb2.i, %bb.i
+ %39 = phi i32 [ %16, %bb3.i ], [ %16, %bb.i ], [ %38, %bb4.i ], [ 1, %bb2.i ] ; [#uses=2]
+ %40 = phi float [ %17, %bb3.i ], [ %17, %bb.i ], [ %17, %bb4.i ], [ %32, %bb2.i ] ; [#uses=1]
+ %41 = add i32 %18, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %41, %point_count ; [#uses=1]
+ br i1 %exitcond, label %bb9.preheader.i, label %bb.i
+
+bb9.preheader.i: ; preds = %bb5.i
+ %42 = icmp eq i32 %39, 0 ; [#uses=1]
+ br i1 %42, label %_ZN25GIM_TRIANGLE_CONTACT_DATA19mergepoints_genericI22DISTANCE_PLANE_3D_FUNC9btVector4EEvRKT0_fPK9btVector3jT_.exit, label %bb8.i
+
+bb8.i: ; preds = %bb8.i, %bb9.preheader.i
+ %_k.111.i = phi i32 [ 0, %bb9.preheader.i ], [ %tmp, %bb8.i ] ; [#uses=6]
+ %tmp = add i32 %_k.111.i, 1 ; [#uses=2]
+ %scevgep18.i = getelementptr %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 3, i32 %_k.111.i, i32 0, i32 3 ; [#uses=1]
+ %scevgep17.i = getelementptr %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 3, i32 %_k.111.i, i32 0, i32 2 ; [#uses=1]
+ %scevgep16.i = getelementptr %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 3, i32 %_k.111.i, i32 0, i32 1 ; [#uses=1]
+ %scevgep1415.i = getelementptr %struct.GIM_TRIANGLE_CONTACT* %this, i32 0, i32 3, i32 %_k.111.i, i32 0, i32 0 ; [#uses=1]
+ %scevgep.i = getelementptr [16 x i32]* %point_indices.i, i32 0, i32 %_k.111.i ; [#uses=1]
+ %43 = load i32* %scevgep.i, align 4 ; [#uses=4]
+ %44 = getelementptr inbounds %struct.btQuadWord* %points, i32 %43, i32 0, i32 0 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %scevgep1415.i, align 4
+ %46 = getelementptr inbounds %struct.btQuadWord* %points, i32 %43, i32 0, i32 1 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ store float %47, float* %scevgep16.i, align 4
+ %48 = getelementptr inbounds %struct.btQuadWord* %points, i32 %43, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %scevgep17.i, align 4
+ %50 = getelementptr inbounds %struct.btQuadWord* %points, i32 %43, i32 0, i32 3 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %scevgep18.i, align 4
+ %52 = load i32* %12, align 4 ; [#uses=1]
+ %53 = icmp ugt i32 %52, %tmp ; [#uses=1]
+ br i1 %53, label %bb8.i, label %_ZN25GIM_TRIANGLE_CONTACT_DATA19mergepoints_genericI22DISTANCE_PLANE_3D_FUNC9btVector4EEvRKT0_fPK9btVector3jT_.exit
+
+_ZN25GIM_TRIANGLE_CONTACT_DATA19mergepoints_genericI22DISTANCE_PLANE_3D_FUNC9btVector4EEvRKT0_fPK9btVector3jT_.exit: ; preds = %bb8.i, %bb9.preheader.i, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_Z27PLANE_CLIP_TRIANGLE_GENERICI9btVector39btVector422DISTANCE_PLANE_3D_FUNCEjRKT0_RKT_S8_S8_PS6_T1_(%struct.btQuaternion* nocapture %plane, %struct.btQuadWord* nocapture %point0, %struct.btQuadWord* nocapture %point1, %struct.btQuadWord* nocapture %point2, %struct.btQuadWord* %clipped, %struct.CONTACT_KEY_TOKEN_COMP* nocapture byval align 4 %distance_func) nounwind inlinehint {
+entry:
+ %0 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btQuadWord* %point0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btQuadWord* %point0, i32 0, i32 0, i32 1 ; [#uses=5]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %12 = load float* %11, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btQuadWord* %point0, i32 0, i32 0, i32 2 ; [#uses=5]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=3]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ %19 = fsub float %16, %18 ; [#uses=5]
+ %20 = fcmp ule float %19, 0x3E80000000000000 ; [#uses=1]
+ br i1 %20, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %21 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %3, float* %21, align 4
+ %22 = load float* %7, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %22, float* %23, align 4
+ %24 = load float* %13, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %24, float* %25, align 4
+ %.pre = load float* %0, align 4 ; [#uses=1]
+ %.pre13 = load float* %5, align 4 ; [#uses=1]
+ %.pre14 = load float* %11, align 4 ; [#uses=1]
+ %.pre15 = load float* %17, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %26 = phi float [ %.pre15, %bb ], [ %18, %entry ] ; [#uses=1]
+ %27 = phi float [ %.pre14, %bb ], [ %12, %entry ] ; [#uses=1]
+ %28 = phi float [ %.pre13, %bb ], [ %6, %entry ] ; [#uses=1]
+ %29 = phi float [ %.pre, %bb ], [ %1, %entry ] ; [#uses=1]
+ %clipped_count.0 = phi i32 [ 1, %bb ], [ 0, %entry ] ; [#uses=5]
+ %30 = getelementptr inbounds %struct.btQuadWord* %point1, i32 0, i32 0, i32 0 ; [#uses=3]
+ %31 = load float* %30, align 4 ; [#uses=2]
+ %32 = fmul float %29, %31 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %point1, i32 0, i32 0, i32 1 ; [#uses=4]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fmul float %28, %34 ; [#uses=1]
+ %36 = fadd float %32, %35 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %point1, i32 0, i32 0, i32 2 ; [#uses=4]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fmul float %27, %38 ; [#uses=1]
+ %40 = fadd float %36, %39 ; [#uses=1]
+ %41 = fsub float %40, %26 ; [#uses=4]
+ %42 = fcmp ogt float %19, 0x3E80000000000000 ; [#uses=4]
+ %43 = fcmp ogt float %41, 0x3E80000000000000 ; [#uses=3]
+ %44 = xor i1 %43, %42 ; [#uses=1]
+ br i1 %44, label %bb.i8, label %bb1.i9
+
+bb.i8: ; preds = %bb1
+ %45 = fsub float -0.000000e+00, %19 ; [#uses=1]
+ %46 = fsub float %41, %19 ; [#uses=1]
+ %47 = fdiv float %45, %46 ; [#uses=4]
+ %48 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0, i32 0, i32 0 ; [#uses=1]
+ %49 = fsub float 1.000000e+00, %47 ; [#uses=3]
+ %50 = load float* %2, align 4 ; [#uses=1]
+ %51 = fmul float %49, %50 ; [#uses=1]
+ %52 = fmul float %31, %47 ; [#uses=1]
+ %53 = fadd float %51, %52 ; [#uses=1]
+ store float %53, float* %48, align 4
+ %54 = load float* %7, align 4 ; [#uses=1]
+ %55 = fmul float %49, %54 ; [#uses=1]
+ %56 = load float* %33, align 4 ; [#uses=1]
+ %57 = fmul float %56, %47 ; [#uses=1]
+ %58 = fadd float %55, %57 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0, i32 0, i32 1 ; [#uses=1]
+ store float %58, float* %59, align 4
+ %60 = load float* %13, align 4 ; [#uses=1]
+ %61 = fmul float %49, %60 ; [#uses=1]
+ %62 = load float* %37, align 4 ; [#uses=1]
+ %63 = fmul float %62, %47 ; [#uses=1]
+ %64 = fadd float %61, %63 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0, i32 0, i32 2 ; [#uses=1]
+ store float %64, float* %65, align 4
+ %66 = add i32 %clipped_count.0, 1 ; [#uses=1]
+ br label %bb1.i9
+
+bb1.i9: ; preds = %bb.i8, %bb1
+ %clipped_count.5 = phi i32 [ %66, %bb.i8 ], [ %clipped_count.0, %bb1 ] ; [#uses=5]
+ br i1 %43, label %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit12, label %bb2.i10
+
+bb2.i10: ; preds = %bb1.i9
+ %67 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.5, i32 0, i32 0 ; [#uses=1]
+ %68 = load float* %30, align 4 ; [#uses=1]
+ store float %68, float* %67, align 4
+ %69 = load float* %33, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.5, i32 0, i32 1 ; [#uses=1]
+ store float %69, float* %70, align 4
+ %71 = load float* %37, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.5, i32 0, i32 2 ; [#uses=1]
+ store float %71, float* %72, align 4
+ %73 = add i32 %clipped_count.5, 1 ; [#uses=1]
+ br label %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit12
+
+_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit12: ; preds = %bb2.i10, %bb1.i9
+ %clipped_count.6 = phi i32 [ %73, %bb2.i10 ], [ %clipped_count.5, %bb1.i9 ] ; [#uses=5]
+ %74 = load float* %0, align 4 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btQuadWord* %point2, i32 0, i32 0, i32 0 ; [#uses=3]
+ %76 = load float* %75, align 4 ; [#uses=2]
+ %77 = fmul float %74, %76 ; [#uses=1]
+ %78 = load float* %5, align 4 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btQuadWord* %point2, i32 0, i32 0, i32 1 ; [#uses=4]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fmul float %78, %80 ; [#uses=1]
+ %82 = fadd float %77, %81 ; [#uses=1]
+ %83 = load float* %11, align 4 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btQuadWord* %point2, i32 0, i32 0, i32 2 ; [#uses=4]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = fmul float %83, %85 ; [#uses=1]
+ %87 = fadd float %82, %86 ; [#uses=1]
+ %88 = load float* %17, align 4 ; [#uses=1]
+ %89 = fsub float %87, %88 ; [#uses=4]
+ %90 = fcmp ogt float %89, 0x3E80000000000000 ; [#uses=4]
+ %91 = xor i1 %90, %43 ; [#uses=1]
+ br i1 %91, label %bb.i3, label %bb1.i4
+
+bb.i3: ; preds = %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit12
+ %92 = fsub float -0.000000e+00, %41 ; [#uses=1]
+ %93 = fsub float %89, %41 ; [#uses=1]
+ %94 = fdiv float %92, %93 ; [#uses=4]
+ %95 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.6, i32 0, i32 0 ; [#uses=1]
+ %96 = fsub float 1.000000e+00, %94 ; [#uses=3]
+ %97 = load float* %30, align 4 ; [#uses=1]
+ %98 = fmul float %96, %97 ; [#uses=1]
+ %99 = fmul float %76, %94 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ store float %100, float* %95, align 4
+ %101 = load float* %33, align 4 ; [#uses=1]
+ %102 = fmul float %96, %101 ; [#uses=1]
+ %103 = load float* %79, align 4 ; [#uses=1]
+ %104 = fmul float %103, %94 ; [#uses=1]
+ %105 = fadd float %102, %104 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.6, i32 0, i32 1 ; [#uses=1]
+ store float %105, float* %106, align 4
+ %107 = load float* %37, align 4 ; [#uses=1]
+ %108 = fmul float %96, %107 ; [#uses=1]
+ %109 = load float* %84, align 4 ; [#uses=1]
+ %110 = fmul float %109, %94 ; [#uses=1]
+ %111 = fadd float %108, %110 ; [#uses=1]
+ %112 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.6, i32 0, i32 2 ; [#uses=1]
+ store float %111, float* %112, align 4
+ %113 = add i32 %clipped_count.6, 1 ; [#uses=1]
+ br label %bb1.i4
+
+bb1.i4: ; preds = %bb.i3, %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit12
+ %clipped_count.3 = phi i32 [ %113, %bb.i3 ], [ %clipped_count.6, %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit12 ] ; [#uses=6]
+ br i1 %90, label %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit7, label %bb2.i5
+
+bb2.i5: ; preds = %bb1.i4
+ %114 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 0 ; [#uses=1]
+ %115 = load float* %75, align 4 ; [#uses=1]
+ store float %115, float* %114, align 4
+ %116 = load float* %79, align 4 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 1 ; [#uses=1]
+ store float %116, float* %117, align 4
+ %118 = load float* %84, align 4 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 2 ; [#uses=1]
+ store float %118, float* %119, align 4
+ %120 = add i32 %clipped_count.3, 1 ; [#uses=2]
+ %121 = xor i1 %42, %90 ; [#uses=1]
+ br i1 %121, label %bb.i, label %bb1.i
+
+_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit7: ; preds = %bb1.i4
+ %122 = xor i1 %42, %90 ; [#uses=1]
+ br i1 %122, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit7, %bb2.i5
+ %clipped_count.416 = phi i32 [ %120, %bb2.i5 ], [ %clipped_count.3, %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit7 ] ; [#uses=4]
+ %123 = fsub float -0.000000e+00, %89 ; [#uses=1]
+ %124 = fsub float %19, %89 ; [#uses=1]
+ %125 = fdiv float %123, %124 ; [#uses=4]
+ %126 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.416, i32 0, i32 0 ; [#uses=1]
+ %127 = fsub float 1.000000e+00, %125 ; [#uses=3]
+ %128 = load float* %75, align 4 ; [#uses=1]
+ %129 = fmul float %127, %128 ; [#uses=1]
+ %130 = load float* %2, align 4 ; [#uses=1]
+ %131 = fmul float %130, %125 ; [#uses=1]
+ %132 = fadd float %129, %131 ; [#uses=1]
+ store float %132, float* %126, align 4
+ %133 = load float* %79, align 4 ; [#uses=1]
+ %134 = fmul float %127, %133 ; [#uses=1]
+ %135 = load float* %7, align 4 ; [#uses=1]
+ %136 = fmul float %135, %125 ; [#uses=1]
+ %137 = fadd float %134, %136 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.416, i32 0, i32 1 ; [#uses=1]
+ store float %137, float* %138, align 4
+ %139 = load float* %84, align 4 ; [#uses=1]
+ %140 = fmul float %127, %139 ; [#uses=1]
+ %141 = load float* %13, align 4 ; [#uses=1]
+ %142 = fmul float %141, %125 ; [#uses=1]
+ %143 = fadd float %140, %142 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.416, i32 0, i32 2 ; [#uses=1]
+ store float %143, float* %144, align 4
+ %145 = add i32 %clipped_count.416, 1 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %bb.i, %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit7, %bb2.i5
+ %clipped_count.1 = phi i32 [ %145, %bb.i ], [ %clipped_count.3, %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit7 ], [ %120, %bb2.i5 ] ; [#uses=5]
+ br i1 %42, label %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %146 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 0 ; [#uses=1]
+ %147 = load float* %2, align 4 ; [#uses=1]
+ store float %147, float* %146, align 4
+ %148 = load float* %7, align 4 ; [#uses=1]
+ %149 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 1 ; [#uses=1]
+ store float %148, float* %149, align 4
+ %150 = load float* %13, align 4 ; [#uses=1]
+ %151 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 2 ; [#uses=1]
+ store float %150, float* %151, align 4
+ %152 = add i32 %clipped_count.1, 1 ; [#uses=1]
+ ret i32 %152
+
+_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit: ; preds = %bb1.i
+ ret i32 %clipped_count.1
+}
+
+; [#uses=2]
+define linkonce_odr i32 @_Z26PLANE_CLIP_POLYGON_GENERICI9btVector39btVector422DISTANCE_PLANE_3D_FUNCEjRKT0_PKT_jPS6_T1_(%struct.btQuaternion* nocapture %plane, %struct.btQuadWord* nocapture %polygon_points, i32 %polygon_point_count, %struct.btQuadWord* nocapture %clipped, %struct.CONTACT_KEY_TOKEN_COMP* nocapture byval align 4 %distance_func) nounwind inlinehint {
+entry:
+ %0 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 0, i32 0, i32 0 ; [#uses=3]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 0, i32 0, i32 1 ; [#uses=4]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 0, i32 0, i32 2 ; [#uses=4]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuaternion* %plane, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fsub float %16, %18 ; [#uses=5]
+ %20 = fcmp ule float %19, 0x3E80000000000000 ; [#uses=1]
+ br i1 %20, label %bb, label %bb3.preheader
+
+bb: ; preds = %entry
+ %21 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %3, float* %21, align 4
+ %22 = load float* %7, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %22, float* %23, align 4
+ %24 = load float* %13, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %24, float* %25, align 4
+ br label %bb3.preheader
+
+bb3.preheader: ; preds = %bb, %entry
+ %clipped_count.0.ph = phi i32 [ 0, %entry ], [ 1, %bb ] ; [#uses=2]
+ %26 = icmp ugt i32 %polygon_point_count, 1 ; [#uses=1]
+ br i1 %26, label %bb.nph, label %bb4
+
+bb.nph: ; preds = %bb3.preheader
+ %tmp = add i32 %polygon_point_count, -1 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit10, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %tmp15, %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit10 ] ; [#uses=4]
+ %olddist.012 = phi float [ %19, %bb.nph ], [ %39, %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit10 ] ; [#uses=3]
+ %clipped_count.011 = phi i32 [ %clipped_count.0.ph, %bb.nph ], [ %clipped_count.4, %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit10 ] ; [#uses=5]
+ %tmp15 = add i32 %indvar, 1 ; [#uses=5]
+ %scevgep16 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 %tmp15, i32 0, i32 0 ; [#uses=2]
+ %scevgep17 = getelementptr %struct.btQuadWord* %polygon_points, i32 %tmp15, i32 0, i32 1 ; [#uses=3]
+ %scevgep18 = getelementptr %struct.btQuadWord* %polygon_points, i32 %tmp15, i32 0, i32 2 ; [#uses=3]
+ %27 = load float* %0, align 4 ; [#uses=1]
+ %28 = load float* %scevgep16, align 4 ; [#uses=2]
+ %29 = fmul float %27, %28 ; [#uses=1]
+ %30 = load float* %5, align 4 ; [#uses=1]
+ %31 = load float* %scevgep17, align 4 ; [#uses=1]
+ %32 = fmul float %30, %31 ; [#uses=1]
+ %33 = fadd float %29, %32 ; [#uses=1]
+ %34 = load float* %11, align 4 ; [#uses=1]
+ %35 = load float* %scevgep18, align 4 ; [#uses=1]
+ %36 = fmul float %34, %35 ; [#uses=1]
+ %37 = fadd float %33, %36 ; [#uses=1]
+ %38 = load float* %17, align 4 ; [#uses=1]
+ %39 = fsub float %37, %38 ; [#uses=4]
+ %40 = fcmp ogt float %olddist.012, 0x3E80000000000000 ; [#uses=1]
+ %41 = fcmp ogt float %39, 0x3E80000000000000 ; [#uses=2]
+ %42 = xor i1 %41, %40 ; [#uses=1]
+ br i1 %42, label %bb.i6, label %bb1.i7
+
+bb.i6: ; preds = %bb2
+ %scevgep2122 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 %indvar, i32 0, i32 0 ; [#uses=1]
+ %scevgep20 = getelementptr %struct.btQuadWord* %polygon_points, i32 %indvar, i32 0, i32 1 ; [#uses=1]
+ %scevgep19 = getelementptr %struct.btQuadWord* %polygon_points, i32 %indvar, i32 0, i32 2 ; [#uses=1]
+ %43 = fsub float -0.000000e+00, %olddist.012 ; [#uses=1]
+ %44 = fsub float %39, %olddist.012 ; [#uses=1]
+ %45 = fdiv float %43, %44 ; [#uses=4]
+ %46 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.011, i32 0, i32 0 ; [#uses=1]
+ %47 = fsub float 1.000000e+00, %45 ; [#uses=3]
+ %48 = load float* %scevgep2122, align 4 ; [#uses=1]
+ %49 = fmul float %47, %48 ; [#uses=1]
+ %50 = fmul float %28, %45 ; [#uses=1]
+ %51 = fadd float %49, %50 ; [#uses=1]
+ store float %51, float* %46, align 4
+ %52 = load float* %scevgep20, align 4 ; [#uses=1]
+ %53 = fmul float %47, %52 ; [#uses=1]
+ %54 = load float* %scevgep17, align 4 ; [#uses=1]
+ %55 = fmul float %54, %45 ; [#uses=1]
+ %56 = fadd float %53, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.011, i32 0, i32 1 ; [#uses=1]
+ store float %56, float* %57, align 4
+ %58 = load float* %scevgep19, align 4 ; [#uses=1]
+ %59 = fmul float %47, %58 ; [#uses=1]
+ %60 = load float* %scevgep18, align 4 ; [#uses=1]
+ %61 = fmul float %60, %45 ; [#uses=1]
+ %62 = fadd float %59, %61 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.011, i32 0, i32 2 ; [#uses=1]
+ store float %62, float* %63, align 4
+ %64 = add i32 %clipped_count.011, 1 ; [#uses=1]
+ br label %bb1.i7
+
+bb1.i7: ; preds = %bb.i6, %bb2
+ %clipped_count.3 = phi i32 [ %64, %bb.i6 ], [ %clipped_count.011, %bb2 ] ; [#uses=5]
+ br i1 %41, label %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit10, label %bb2.i8
+
+bb2.i8: ; preds = %bb1.i7
+ %65 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %scevgep16, align 4 ; [#uses=1]
+ store float %66, float* %65, align 4
+ %67 = load float* %scevgep17, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 1 ; [#uses=1]
+ store float %67, float* %68, align 4
+ %69 = load float* %scevgep18, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.3, i32 0, i32 2 ; [#uses=1]
+ store float %69, float* %70, align 4
+ %71 = add i32 %clipped_count.3, 1 ; [#uses=1]
+ br label %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit10
+
+_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit10: ; preds = %bb2.i8, %bb1.i7
+ %clipped_count.4 = phi i32 [ %71, %bb2.i8 ], [ %clipped_count.3, %bb1.i7 ] ; [#uses=2]
+ %exitcond = icmp eq i32 %tmp15, %tmp ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb2
+
+bb4: ; preds = %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit10, %bb3.preheader
+ %olddist.0.lcssa = phi float [ %19, %bb3.preheader ], [ %39, %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit10 ] ; [#uses=3]
+ %clipped_count.0.lcssa = phi i32 [ %clipped_count.0.ph, %bb3.preheader ], [ %clipped_count.4, %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit10 ] ; [#uses=5]
+ %72 = add i32 %polygon_point_count, -1 ; [#uses=3]
+ %73 = fcmp ogt float %olddist.0.lcssa, 0x3E80000000000000 ; [#uses=1]
+ %74 = fcmp ogt float %19, 0x3E80000000000000 ; [#uses=2]
+ %75 = xor i1 %74, %73 ; [#uses=1]
+ br i1 %75, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb4
+ %76 = fsub float -0.000000e+00, %olddist.0.lcssa ; [#uses=1]
+ %77 = fsub float %19, %olddist.0.lcssa ; [#uses=1]
+ %78 = fdiv float %76, %77 ; [#uses=4]
+ %79 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0.lcssa, i32 0, i32 0 ; [#uses=1]
+ %80 = fsub float 1.000000e+00, %78 ; [#uses=3]
+ %81 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 %72, i32 0, i32 0 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ %83 = fmul float %80, %82 ; [#uses=1]
+ %84 = load float* %2, align 4 ; [#uses=1]
+ %85 = fmul float %84, %78 ; [#uses=1]
+ %86 = fadd float %83, %85 ; [#uses=1]
+ store float %86, float* %79, align 4
+ %87 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 %72, i32 0, i32 1 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = fmul float %80, %88 ; [#uses=1]
+ %90 = load float* %7, align 4 ; [#uses=1]
+ %91 = fmul float %90, %78 ; [#uses=1]
+ %92 = fadd float %89, %91 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0.lcssa, i32 0, i32 1 ; [#uses=1]
+ store float %92, float* %93, align 4
+ %94 = getelementptr inbounds %struct.btQuadWord* %polygon_points, i32 %72, i32 0, i32 2 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ %96 = fmul float %80, %95 ; [#uses=1]
+ %97 = load float* %13, align 4 ; [#uses=1]
+ %98 = fmul float %97, %78 ; [#uses=1]
+ %99 = fadd float %96, %98 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.0.lcssa, i32 0, i32 2 ; [#uses=1]
+ store float %99, float* %100, align 4
+ %101 = add i32 %clipped_count.0.lcssa, 1 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %bb.i, %bb4
+ %clipped_count.1 = phi i32 [ %101, %bb.i ], [ %clipped_count.0.lcssa, %bb4 ] ; [#uses=5]
+ br i1 %74, label %_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %102 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 0 ; [#uses=1]
+ %103 = load float* %2, align 4 ; [#uses=1]
+ store float %103, float* %102, align 4
+ %104 = load float* %7, align 4 ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 1 ; [#uses=1]
+ store float %104, float* %105, align 4
+ %106 = load float* %13, align 4 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btQuadWord* %clipped, i32 %clipped_count.1, i32 0, i32 2 ; [#uses=1]
+ store float %106, float* %107, align 4
+ %108 = add i32 %clipped_count.1, 1 ; [#uses=1]
+ ret i32 %108
+
+_Z26PLANE_CLIP_POLYGON_COLLECTI9btVector3EvRKT_S3_ffPS1_Rj.exit: ; preds = %bb1.i
+ ret i32 %clipped_count.1
+}
+
+; [#uses=2]
+define linkonce_odr i32 @_ZN30GIM_TRIANGLE_CALCULATION_CACHE13clip_triangleERK9btVector4PK9btVector3S5_PS3_(%struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, %struct.btQuaternion* nocapture %tri_plane, %struct.btQuadWord* %tripoints, %struct.btQuadWord* nocapture %srcpoints, %struct.btQuadWord* nocapture %clip_points) nounwind inlinehint align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %1 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %2 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %edgeplane = alloca %struct.btQuaternion, align 8 ; [#uses=7]
+ %3 = getelementptr inbounds %struct.btQuadWord* %tripoints, i32 1, i32 0, i32 0 ; [#uses=2]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %tripoints, i32 0, i32 0, i32 0 ; [#uses=2]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = fsub float %4, %6 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btQuadWord* %tripoints, i32 1, i32 0, i32 1 ; [#uses=2]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %tripoints, i32 0, i32 0, i32 1 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = fsub float %9, %11 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btQuadWord* %tripoints, i32 1, i32 0, i32 2 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %tripoints, i32 0, i32 0, i32 2 ; [#uses=2]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = fsub float %14, %16 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btQuaternion* %edgeplane, i32 0, i32 0, i32 0, i32 0 ; [#uses=6]
+ %19 = getelementptr inbounds %struct.btQuaternion* %tri_plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %20 = load float* %19, align 4 ; [#uses=2]
+ %21 = fmul float %12, %20 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuaternion* %tri_plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %23 = load float* %22, align 4 ; [#uses=2]
+ %24 = fmul float %17, %23 ; [#uses=1]
+ %25 = fsub float %21, %24 ; [#uses=6]
+ store float %25, float* %18, align 8
+ %26 = getelementptr inbounds %struct.btQuaternion* %tri_plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %27 = load float* %26, align 4 ; [#uses=2]
+ %28 = fmul float %17, %27 ; [#uses=1]
+ %29 = fmul float %7, %20 ; [#uses=1]
+ %30 = fsub float %28, %29 ; [#uses=6]
+ %31 = getelementptr inbounds %struct.btQuaternion* %edgeplane, i32 0, i32 0, i32 0, i32 1 ; [#uses=6]
+ store float %30, float* %31, align 4
+ %32 = fmul float %7, %23 ; [#uses=1]
+ %33 = fmul float %12, %27 ; [#uses=1]
+ %34 = fsub float %32, %33 ; [#uses=6]
+ %35 = getelementptr inbounds %struct.btQuaternion* %edgeplane, i32 0, i32 0, i32 0, i32 2 ; [#uses=6]
+ store float %34, float* %35, align 8
+ %36 = fmul float %25, %25 ; [#uses=1]
+ %37 = fmul float %30, %30 ; [#uses=1]
+ %38 = fadd float %36, %37 ; [#uses=1]
+ %39 = fmul float %34, %34 ; [#uses=1]
+ %40 = fadd float %38, %39 ; [#uses=3]
+ %41 = fcmp ugt float %40, 0x3E7AD7F2A0000000 ; [#uses=1]
+ br i1 %41, label %bb6, label %bb8
+
+bb6: ; preds = %entry
+ %tmp65 = bitcast float %40 to i32 ; [#uses=1]
+ %42 = fmul float %40, 5.000000e-01 ; [#uses=1]
+ %43 = lshr i32 %tmp65, 1 ; [#uses=1]
+ %44 = sub i32 1597463007, %43 ; [#uses=1]
+ %tmp59 = bitcast i32 %44 to float ; [#uses=3]
+ %45 = fmul float %42, %tmp59 ; [#uses=1]
+ %46 = fmul float %45, %tmp59 ; [#uses=1]
+ %47 = fsub float 1.500000e+00, %46 ; [#uses=1]
+ %48 = fmul float %47, %tmp59 ; [#uses=4]
+ %49 = fcmp olt float %48, 0x47EFFFFFE0000000 ; [#uses=1]
+ br i1 %49, label %bb7, label %bb8
+
+bb7: ; preds = %bb6
+ %50 = fmul float %25, %48 ; [#uses=2]
+ store float %50, float* %18, align 8
+ %51 = fmul float %30, %48 ; [#uses=2]
+ store float %51, float* %31, align 4
+ %52 = fmul float %34, %48 ; [#uses=2]
+ store float %52, float* %35, align 8
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb6, %entry
+ %53 = phi float [ %34, %entry ], [ %52, %bb7 ], [ %34, %bb6 ] ; [#uses=1]
+ %54 = phi float [ %30, %entry ], [ %51, %bb7 ], [ %30, %bb6 ] ; [#uses=1]
+ %55 = phi float [ %25, %entry ], [ %50, %bb7 ], [ %25, %bb6 ] ; [#uses=1]
+ %56 = fmul float %6, %55 ; [#uses=1]
+ %57 = fmul float %11, %54 ; [#uses=1]
+ %58 = fadd float %56, %57 ; [#uses=1]
+ %59 = fmul float %16, %53 ; [#uses=1]
+ %60 = fadd float %58, %59 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btQuaternion* %edgeplane, i32 0, i32 0, i32 0, i32 3 ; [#uses=3]
+ store float %60, float* %61, align 4
+ %62 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 15, i32 0 ; [#uses=2]
+ %63 = getelementptr inbounds %struct.btQuadWord* %srcpoints, i32 2 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btQuadWord* %srcpoints, i32 1 ; [#uses=1]
+ %65 = call i32 @_Z27PLANE_CLIP_TRIANGLE_GENERICI9btVector39btVector422DISTANCE_PLANE_3D_FUNCEjRKT0_RKT_S8_S8_PS6_T1_(%struct.btQuaternion* %edgeplane, %struct.btQuadWord* %srcpoints, %struct.btQuadWord* %64, %struct.btQuadWord* %63, %struct.btQuadWord* %62, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0) nounwind ; [#uses=2]
+ %66 = icmp eq i32 %65, 0 ; [#uses=1]
+ br i1 %66, label %bb41, label %bb10
+
+bb10: ; preds = %bb8
+ %67 = getelementptr inbounds %struct.btQuadWord* %tripoints, i32 2, i32 0, i32 0 ; [#uses=2]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = load float* %3, align 4 ; [#uses=2]
+ %70 = fsub float %68, %69 ; [#uses=2]
+ %71 = getelementptr inbounds %struct.btQuadWord* %tripoints, i32 2, i32 0, i32 1 ; [#uses=2]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = load float* %8, align 4 ; [#uses=2]
+ %74 = fsub float %72, %73 ; [#uses=2]
+ %75 = getelementptr inbounds %struct.btQuadWord* %tripoints, i32 2, i32 0, i32 2 ; [#uses=2]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ %77 = load float* %13, align 4 ; [#uses=2]
+ %78 = fsub float %76, %77 ; [#uses=2]
+ %79 = load float* %19, align 4 ; [#uses=2]
+ %80 = fmul float %74, %79 ; [#uses=1]
+ %81 = load float* %22, align 4 ; [#uses=2]
+ %82 = fmul float %78, %81 ; [#uses=1]
+ %83 = fsub float %80, %82 ; [#uses=6]
+ store float %83, float* %18, align 8
+ %84 = load float* %26, align 4 ; [#uses=2]
+ %85 = fmul float %78, %84 ; [#uses=1]
+ %86 = fmul float %70, %79 ; [#uses=1]
+ %87 = fsub float %85, %86 ; [#uses=6]
+ store float %87, float* %31, align 4
+ %88 = fmul float %70, %81 ; [#uses=1]
+ %89 = fmul float %74, %84 ; [#uses=1]
+ %90 = fsub float %88, %89 ; [#uses=6]
+ store float %90, float* %35, align 8
+ %91 = fmul float %83, %83 ; [#uses=1]
+ %92 = fmul float %87, %87 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = fmul float %90, %90 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=3]
+ %96 = fcmp ugt float %95, 0x3E7AD7F2A0000000 ; [#uses=1]
+ br i1 %96, label %bb22, label %bb24
+
+bb22: ; preds = %bb10
+ %tmp57 = bitcast float %95 to i32 ; [#uses=1]
+ %97 = fmul float %95, 5.000000e-01 ; [#uses=1]
+ %98 = lshr i32 %tmp57, 1 ; [#uses=1]
+ %99 = sub i32 1597463007, %98 ; [#uses=1]
+ %tmp51 = bitcast i32 %99 to float ; [#uses=3]
+ %100 = fmul float %97, %tmp51 ; [#uses=1]
+ %101 = fmul float %100, %tmp51 ; [#uses=1]
+ %102 = fsub float 1.500000e+00, %101 ; [#uses=1]
+ %103 = fmul float %102, %tmp51 ; [#uses=4]
+ %104 = fcmp olt float %103, 0x47EFFFFFE0000000 ; [#uses=1]
+ br i1 %104, label %bb23, label %bb24
+
+bb23: ; preds = %bb22
+ %105 = fmul float %83, %103 ; [#uses=2]
+ store float %105, float* %18, align 8
+ %106 = fmul float %87, %103 ; [#uses=2]
+ store float %106, float* %31, align 4
+ %107 = fmul float %90, %103 ; [#uses=2]
+ store float %107, float* %35, align 8
+ br label %bb24
+
+bb24: ; preds = %bb23, %bb22, %bb10
+ %108 = phi float [ %90, %bb10 ], [ %107, %bb23 ], [ %90, %bb22 ] ; [#uses=1]
+ %109 = phi float [ %87, %bb10 ], [ %106, %bb23 ], [ %87, %bb22 ] ; [#uses=1]
+ %110 = phi float [ %83, %bb10 ], [ %105, %bb23 ], [ %83, %bb22 ] ; [#uses=1]
+ %111 = fmul float %69, %110 ; [#uses=1]
+ %112 = fmul float %73, %109 ; [#uses=1]
+ %113 = fadd float %111, %112 ; [#uses=1]
+ %114 = fmul float %77, %108 ; [#uses=1]
+ %115 = fadd float %113, %114 ; [#uses=1]
+ store float %115, float* %61, align 4
+ %116 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 16, i32 0 ; [#uses=2]
+ %117 = call i32 @_Z26PLANE_CLIP_POLYGON_GENERICI9btVector39btVector422DISTANCE_PLANE_3D_FUNCEjRKT0_PKT_jPS6_T1_(%struct.btQuaternion* %edgeplane, %struct.btQuadWord* %62, i32 %65, %struct.btQuadWord* %116, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %1) nounwind ; [#uses=2]
+ %118 = icmp eq i32 %117, 0 ; [#uses=1]
+ br i1 %118, label %bb41, label %bb26
+
+bb26: ; preds = %bb24
+ %119 = load float* %5, align 4 ; [#uses=1]
+ %120 = load float* %67, align 4 ; [#uses=2]
+ %121 = fsub float %119, %120 ; [#uses=2]
+ %122 = load float* %10, align 4 ; [#uses=1]
+ %123 = load float* %71, align 4 ; [#uses=2]
+ %124 = fsub float %122, %123 ; [#uses=2]
+ %125 = load float* %15, align 4 ; [#uses=1]
+ %126 = load float* %75, align 4 ; [#uses=2]
+ %127 = fsub float %125, %126 ; [#uses=2]
+ %128 = load float* %19, align 4 ; [#uses=2]
+ %129 = fmul float %124, %128 ; [#uses=1]
+ %130 = load float* %22, align 4 ; [#uses=2]
+ %131 = fmul float %127, %130 ; [#uses=1]
+ %132 = fsub float %129, %131 ; [#uses=6]
+ store float %132, float* %18, align 8
+ %133 = load float* %26, align 4 ; [#uses=2]
+ %134 = fmul float %127, %133 ; [#uses=1]
+ %135 = fmul float %121, %128 ; [#uses=1]
+ %136 = fsub float %134, %135 ; [#uses=6]
+ store float %136, float* %31, align 4
+ %137 = fmul float %121, %130 ; [#uses=1]
+ %138 = fmul float %124, %133 ; [#uses=1]
+ %139 = fsub float %137, %138 ; [#uses=6]
+ store float %139, float* %35, align 8
+ %140 = fmul float %132, %132 ; [#uses=1]
+ %141 = fmul float %136, %136 ; [#uses=1]
+ %142 = fadd float %140, %141 ; [#uses=1]
+ %143 = fmul float %139, %139 ; [#uses=1]
+ %144 = fadd float %142, %143 ; [#uses=3]
+ %145 = fcmp ugt float %144, 0x3E7AD7F2A0000000 ; [#uses=1]
+ br i1 %145, label %bb38, label %bb40
+
+bb38: ; preds = %bb26
+ %tmp49 = bitcast float %144 to i32 ; [#uses=1]
+ %146 = fmul float %144, 5.000000e-01 ; [#uses=1]
+ %147 = lshr i32 %tmp49, 1 ; [#uses=1]
+ %148 = sub i32 1597463007, %147 ; [#uses=1]
+ %tmp43 = bitcast i32 %148 to float ; [#uses=3]
+ %149 = fmul float %146, %tmp43 ; [#uses=1]
+ %150 = fmul float %149, %tmp43 ; [#uses=1]
+ %151 = fsub float 1.500000e+00, %150 ; [#uses=1]
+ %152 = fmul float %151, %tmp43 ; [#uses=4]
+ %153 = fcmp olt float %152, 0x47EFFFFFE0000000 ; [#uses=1]
+ br i1 %153, label %bb39, label %bb40
+
+bb39: ; preds = %bb38
+ %154 = fmul float %132, %152 ; [#uses=2]
+ store float %154, float* %18, align 8
+ %155 = fmul float %136, %152 ; [#uses=2]
+ store float %155, float* %31, align 4
+ %156 = fmul float %139, %152 ; [#uses=2]
+ store float %156, float* %35, align 8
+ br label %bb40
+
+bb40: ; preds = %bb39, %bb38, %bb26
+ %157 = phi float [ %139, %bb26 ], [ %156, %bb39 ], [ %139, %bb38 ] ; [#uses=1]
+ %158 = phi float [ %136, %bb26 ], [ %155, %bb39 ], [ %136, %bb38 ] ; [#uses=1]
+ %159 = phi float [ %132, %bb26 ], [ %154, %bb39 ], [ %132, %bb38 ] ; [#uses=1]
+ %160 = fmul float %120, %159 ; [#uses=1]
+ %161 = fmul float %123, %158 ; [#uses=1]
+ %162 = fadd float %160, %161 ; [#uses=1]
+ %163 = fmul float %126, %157 ; [#uses=1]
+ %164 = fadd float %162, %163 ; [#uses=1]
+ store float %164, float* %61, align 4
+ %165 = call i32 @_Z26PLANE_CLIP_POLYGON_GENERICI9btVector39btVector422DISTANCE_PLANE_3D_FUNCEjRKT0_PKT_jPS6_T1_(%struct.btQuaternion* %edgeplane, %struct.btQuadWord* %116, i32 %117, %struct.btQuadWord* %clip_points, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %2) nounwind ; [#uses=1]
+ ret i32 %165
+
+bb41: ; preds = %bb24, %bb8
+ ret i32 0
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZN30GIM_TRIANGLE_CALCULATION_CACHE18triangle_collisionERK9btVector3S2_S2_fS2_S2_S2_fR25GIM_TRIANGLE_CONTACT_DATA(%struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, %struct.btQuadWord* nocapture %u0, %struct.btQuadWord* nocapture %u1, %struct.btQuadWord* nocapture %u2, float %margin_u, %struct.btQuadWord* nocapture %v0, %struct.btQuadWord* nocapture %v1, %struct.btQuadWord* nocapture %v2, float %margin_v, %struct.GIM_TRIANGLE_CONTACT* nocapture %contacts) nounwind inlinehint align 2 {
+entry:
+ %0 = fadd float %margin_u, %margin_v ; [#uses=5]
+ %1 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 0 ; [#uses=3]
+ store float %0, float* %1, align 4
+ %2 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=3]
+ %3 = getelementptr inbounds %struct.btQuadWord* %u0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=7]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btQuadWord* %u0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=7]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=3]
+ %9 = getelementptr inbounds %struct.btQuadWord* %u0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=7]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %u0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=3]
+ %15 = getelementptr inbounds %struct.btQuadWord* %u1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=7]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=3]
+ %18 = getelementptr inbounds %struct.btQuadWord* %u1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=7]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=3]
+ %21 = getelementptr inbounds %struct.btQuadWord* %u1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=7]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %u1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %u2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=3]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %u2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=3]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %u2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=3]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuadWord* %u2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=3]
+ %39 = getelementptr inbounds %struct.btQuadWord* %v0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=8]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=3]
+ %42 = getelementptr inbounds %struct.btQuadWord* %v0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=8]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=3]
+ %45 = getelementptr inbounds %struct.btQuadWord* %v0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=8]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btQuadWord* %v0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=3]
+ %51 = getelementptr inbounds %struct.btQuadWord* %v1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=8]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=3]
+ %54 = getelementptr inbounds %struct.btQuadWord* %v1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=8]
+ store float %55, float* %53, align 4
+ %56 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=3]
+ %57 = getelementptr inbounds %struct.btQuadWord* %v1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=8]
+ store float %58, float* %56, align 4
+ %59 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btQuadWord* %v1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %59, align 4
+ %62 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 2, i32 0, i32 0 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btQuadWord* %v2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=3]
+ store float %64, float* %62, align 4
+ %65 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 2, i32 0, i32 1 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btQuadWord* %v2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=3]
+ store float %67, float* %65, align 4
+ %68 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 2, i32 0, i32 2 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btQuadWord* %v2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=3]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 2, i32 0, i32 3 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btQuadWord* %v2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %71, align 4
+ %74 = fsub float %52, %40 ; [#uses=2]
+ %75 = fsub float %55, %43 ; [#uses=2]
+ %76 = fsub float %58, %46 ; [#uses=2]
+ %77 = fsub float %64, %40 ; [#uses=2]
+ %78 = fsub float %67, %43 ; [#uses=2]
+ %79 = fsub float %70, %46 ; [#uses=2]
+ %80 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 4, i32 0, i32 0, i32 0 ; [#uses=4]
+ %81 = fmul float %75, %79 ; [#uses=1]
+ %82 = fmul float %76, %78 ; [#uses=1]
+ %83 = fsub float %81, %82 ; [#uses=6]
+ store float %83, float* %80, align 4
+ %84 = fmul float %76, %77 ; [#uses=1]
+ %85 = fmul float %74, %79 ; [#uses=1]
+ %86 = fsub float %84, %85 ; [#uses=6]
+ %87 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 4, i32 0, i32 0, i32 1 ; [#uses=4]
+ store float %86, float* %87, align 4
+ %88 = fmul float %74, %78 ; [#uses=1]
+ %89 = fmul float %75, %77 ; [#uses=1]
+ %90 = fsub float %88, %89 ; [#uses=6]
+ %91 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 4, i32 0, i32 0, i32 2 ; [#uses=4]
+ store float %90, float* %91, align 4
+ %92 = fmul float %83, %83 ; [#uses=1]
+ %93 = fmul float %86, %86 ; [#uses=1]
+ %94 = fadd float %92, %93 ; [#uses=1]
+ %95 = fmul float %90, %90 ; [#uses=1]
+ %96 = fadd float %94, %95 ; [#uses=3]
+ %97 = fcmp ugt float %96, 0x3E7AD7F2A0000000 ; [#uses=1]
+ br i1 %97, label %bb6, label %bb8
+
+bb6: ; preds = %entry
+ %tmp157 = bitcast float %96 to i32 ; [#uses=1]
+ %98 = fmul float %96, 5.000000e-01 ; [#uses=1]
+ %99 = lshr i32 %tmp157, 1 ; [#uses=1]
+ %100 = sub i32 1597463007, %99 ; [#uses=1]
+ %tmp151 = bitcast i32 %100 to float ; [#uses=3]
+ %101 = fmul float %98, %tmp151 ; [#uses=1]
+ %102 = fmul float %101, %tmp151 ; [#uses=1]
+ %103 = fsub float 1.500000e+00, %102 ; [#uses=1]
+ %104 = fmul float %103, %tmp151 ; [#uses=4]
+ %105 = fcmp olt float %104, 0x47EFFFFFE0000000 ; [#uses=1]
+ br i1 %105, label %bb7, label %bb8
+
+bb7: ; preds = %bb6
+ %106 = fmul float %83, %104 ; [#uses=2]
+ store float %106, float* %80, align 4
+ %107 = fmul float %86, %104 ; [#uses=2]
+ store float %107, float* %87, align 4
+ %108 = fmul float %90, %104 ; [#uses=2]
+ store float %108, float* %91, align 4
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb6, %entry
+ %109 = phi float [ %90, %entry ], [ %108, %bb7 ], [ %90, %bb6 ] ; [#uses=6]
+ %110 = phi float [ %86, %entry ], [ %107, %bb7 ], [ %86, %bb6 ] ; [#uses=6]
+ %111 = phi float [ %83, %entry ], [ %106, %bb7 ], [ %83, %bb6 ] ; [#uses=6]
+ %112 = fmul float %40, %111 ; [#uses=1]
+ %113 = fmul float %43, %110 ; [#uses=1]
+ %114 = fadd float %112, %113 ; [#uses=1]
+ %115 = fmul float %46, %109 ; [#uses=1]
+ %116 = fadd float %114, %115 ; [#uses=6]
+ %117 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 4, i32 0, i32 0, i32 3 ; [#uses=3]
+ store float %116, float* %117, align 4
+ %118 = fmul float %111, %4 ; [#uses=1]
+ %119 = fmul float %110, %7 ; [#uses=1]
+ %120 = fadd float %118, %119 ; [#uses=1]
+ %121 = fmul float %109, %10 ; [#uses=1]
+ %122 = fadd float %120, %121 ; [#uses=1]
+ %123 = fsub float %122, %116 ; [#uses=9]
+ %124 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 9, i32 0 ; [#uses=5]
+ store float %123, float* %124, align 4
+ %125 = fmul float %111, %16 ; [#uses=1]
+ %126 = fmul float %110, %19 ; [#uses=1]
+ %127 = fadd float %125, %126 ; [#uses=1]
+ %128 = fmul float %109, %22 ; [#uses=1]
+ %129 = fadd float %127, %128 ; [#uses=1]
+ %130 = fsub float %129, %116 ; [#uses=11]
+ %131 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 9, i32 1 ; [#uses=5]
+ store float %130, float* %131, align 4
+ %132 = fmul float %111, %28 ; [#uses=1]
+ %133 = fmul float %110, %31 ; [#uses=1]
+ %134 = fadd float %132, %133 ; [#uses=1]
+ %135 = fmul float %109, %34 ; [#uses=1]
+ %136 = fadd float %134, %135 ; [#uses=1]
+ %137 = fsub float %136, %116 ; [#uses=11]
+ %138 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 9, i32 2 ; [#uses=5]
+ store float %137, float* %138, align 4
+ %139 = fmul float %123, %130 ; [#uses=2]
+ %140 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 10 ; [#uses=1]
+ store float %139, float* %140, align 4
+ %141 = fmul float %123, %137 ; [#uses=2]
+ %142 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 11 ; [#uses=1]
+ store float %141, float* %142, align 4
+ %143 = fcmp ule float %139, 0.000000e+00 ; [#uses=1]
+ %144 = fcmp ule float %141, 0.000000e+00 ; [#uses=1]
+ %or.cond = or i1 %143, %144 ; [#uses=1]
+ br i1 %or.cond, label %bb35, label %bb10
+
+bb10: ; preds = %bb8
+ %145 = fcmp olt float %123, 0.000000e+00 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 8, i32 0, i32 0 ; [#uses=2]
+ br i1 %145, label %bb11, label %bb23
+
+bb11: ; preds = %bb10
+ %147 = fcmp olt float %130, %137 ; [#uses=2]
+ %iftmp.291.0 = select i1 %147, float %137, float %130 ; [#uses=1]
+ %148 = fcmp olt float %123, %iftmp.291.0 ; [#uses=1]
+ %.not = xor i1 %148, true ; [#uses=2]
+ %brmerge = or i1 %.not, %147 ; [#uses=1]
+ %.mux = select i1 %.not, float* %124, float* %138 ; [#uses=1]
+ %iftmp.290.0.in = select i1 %brmerge, float* %.mux, float* %131 ; [#uses=1]
+ %iftmp.290.0 = load float* %iftmp.290.0.in, align 4 ; [#uses=1]
+ %149 = fsub float -0.000000e+00, %iftmp.290.0 ; [#uses=3]
+ store float %149, float* %146, align 4
+ %150 = fcmp olt float %0, %149 ; [#uses=1]
+ br i1 %150, label %bb140, label %bb22
+
+bb22: ; preds = %bb11
+ %151 = fadd float %40, %52 ; [#uses=2]
+ %152 = fsub float %151, %52 ; [#uses=3]
+ store float %152, float* %50, align 4
+ %153 = fsub float %151, %152 ; [#uses=2]
+ store float %153, float* %38, align 4
+ %154 = fadd float %43, %55 ; [#uses=2]
+ %155 = fsub float %154, %55 ; [#uses=3]
+ store float %155, float* %53, align 4
+ %156 = fsub float %154, %155 ; [#uses=2]
+ store float %156, float* %41, align 4
+ %157 = fadd float %46, %58 ; [#uses=2]
+ %158 = fsub float %157, %58 ; [#uses=3]
+ store float %158, float* %56, align 4
+ %159 = fsub float %157, %158 ; [#uses=2]
+ store float %159, float* %44, align 4
+ %160 = fsub float -0.000000e+00, %111 ; [#uses=1]
+ store float %160, float* %80, align 4
+ %161 = fsub float -0.000000e+00, %110 ; [#uses=1]
+ store float %161, float* %87, align 4
+ %162 = fsub float -0.000000e+00, %109 ; [#uses=1]
+ store float %162, float* %91, align 4
+ %163 = fsub float -0.000000e+00, %116 ; [#uses=1]
+ store float %163, float* %117, align 4
+ br label %bb57
+
+bb23: ; preds = %bb10
+ %164 = fcmp ogt float %130, %137 ; [#uses=2]
+ %iftmp.295.0 = select i1 %164, float %137, float %130 ; [#uses=1]
+ %165 = fcmp ogt float %123, %iftmp.295.0 ; [#uses=1]
+ %.not166 = xor i1 %165, true ; [#uses=2]
+ %brmerge167 = or i1 %.not166, %164 ; [#uses=1]
+ %.mux168 = select i1 %.not166, float* %124, float* %138 ; [#uses=1]
+ %iftmp.294.0.in = select i1 %brmerge167, float* %.mux168, float* %131 ; [#uses=1]
+ %iftmp.294.0 = load float* %iftmp.294.0.in, align 4 ; [#uses=3]
+ store float %iftmp.294.0, float* %146, align 4
+ %166 = fcmp ogt float %iftmp.294.0, %0 ; [#uses=1]
+ br i1 %166, label %bb140, label %bb57
+
+bb35: ; preds = %bb8
+ %167 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 8, i32 0, i32 0 ; [#uses=3]
+ %168 = fadd float %123, %130 ; [#uses=1]
+ %169 = fadd float %168, %137 ; [#uses=1]
+ %170 = fdiv float %169, 3.000000e+00 ; [#uses=2]
+ store float %170, float* %167, align 4
+ %171 = fcmp olt float %170, 0.000000e+00 ; [#uses=1]
+ br i1 %171, label %bb37, label %bb47
+
+bb37: ; preds = %bb35
+ %172 = fadd float %40, %52 ; [#uses=2]
+ %173 = fsub float %172, %52 ; [#uses=3]
+ store float %173, float* %50, align 4
+ %174 = fsub float %172, %173 ; [#uses=2]
+ store float %174, float* %38, align 4
+ %175 = fadd float %43, %55 ; [#uses=2]
+ %176 = fsub float %175, %55 ; [#uses=3]
+ store float %176, float* %53, align 4
+ %177 = fsub float %175, %176 ; [#uses=2]
+ store float %177, float* %41, align 4
+ %178 = fadd float %46, %58 ; [#uses=2]
+ %179 = fsub float %178, %58 ; [#uses=3]
+ store float %179, float* %56, align 4
+ %180 = fsub float %178, %179 ; [#uses=2]
+ store float %180, float* %44, align 4
+ %181 = fsub float -0.000000e+00, %111 ; [#uses=1]
+ store float %181, float* %80, align 4
+ %182 = fsub float -0.000000e+00, %110 ; [#uses=1]
+ store float %182, float* %87, align 4
+ %183 = fsub float -0.000000e+00, %109 ; [#uses=1]
+ store float %183, float* %91, align 4
+ %184 = fsub float -0.000000e+00, %116 ; [#uses=1]
+ store float %184, float* %117, align 4
+ %185 = fcmp olt float %130, %137 ; [#uses=2]
+ %iftmp.300.0 = select i1 %185, float %137, float %130 ; [#uses=1]
+ %186 = fcmp olt float %123, %iftmp.300.0 ; [#uses=1]
+ %.not169 = xor i1 %186, true ; [#uses=2]
+ %brmerge170 = or i1 %.not169, %185 ; [#uses=1]
+ %.mux171 = select i1 %.not169, float* %124, float* %138 ; [#uses=1]
+ %iftmp.299.0.in = select i1 %brmerge170, float* %.mux171, float* %131 ; [#uses=1]
+ %iftmp.299.0 = load float* %iftmp.299.0.in, align 4 ; [#uses=1]
+ %187 = fsub float -0.000000e+00, %iftmp.299.0 ; [#uses=2]
+ store float %187, float* %167, align 4
+ br label %bb57
+
+bb47: ; preds = %bb35
+ %188 = fcmp ogt float %130, %137 ; [#uses=2]
+ %iftmp.303.0 = select i1 %188, float %137, float %130 ; [#uses=1]
+ %189 = fcmp ogt float %123, %iftmp.303.0 ; [#uses=1]
+ %.not172 = xor i1 %189, true ; [#uses=2]
+ %brmerge173 = or i1 %.not172, %188 ; [#uses=1]
+ %.mux174 = select i1 %.not172, float* %124, float* %138 ; [#uses=1]
+ %iftmp.302.0.in = select i1 %brmerge173, float* %.mux174, float* %131 ; [#uses=1]
+ %iftmp.302.0 = load float* %iftmp.302.0.in, align 4 ; [#uses=2]
+ store float %iftmp.302.0, float* %167, align 4
+ br label %bb57
+
+bb57: ; preds = %bb47, %bb37, %bb23, %bb22
+ %190 = phi float [ %iftmp.302.0, %bb47 ], [ %187, %bb37 ], [ %iftmp.294.0, %bb23 ], [ %149, %bb22 ] ; [#uses=1]
+ %191 = phi float [ %58, %bb47 ], [ %179, %bb37 ], [ %58, %bb23 ], [ %158, %bb22 ] ; [#uses=1]
+ %192 = phi float [ %55, %bb47 ], [ %176, %bb37 ], [ %55, %bb23 ], [ %155, %bb22 ] ; [#uses=1]
+ %193 = phi float [ %52, %bb47 ], [ %173, %bb37 ], [ %52, %bb23 ], [ %152, %bb22 ] ; [#uses=1]
+ %194 = phi float [ %46, %bb47 ], [ %180, %bb37 ], [ %46, %bb23 ], [ %159, %bb22 ] ; [#uses=1]
+ %195 = phi float [ %43, %bb47 ], [ %177, %bb37 ], [ %43, %bb23 ], [ %156, %bb22 ] ; [#uses=1]
+ %196 = phi float [ %40, %bb47 ], [ %174, %bb37 ], [ %40, %bb23 ], [ %153, %bb22 ] ; [#uses=1]
+ %197 = fsub float %16, %4 ; [#uses=2]
+ %198 = fsub float %19, %7 ; [#uses=2]
+ %199 = fsub float %22, %10 ; [#uses=2]
+ %200 = fsub float %28, %4 ; [#uses=2]
+ %201 = fsub float %31, %7 ; [#uses=2]
+ %202 = fsub float %34, %10 ; [#uses=2]
+ %203 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 3, i32 0, i32 0, i32 0 ; [#uses=4]
+ %204 = fmul float %198, %202 ; [#uses=1]
+ %205 = fmul float %199, %201 ; [#uses=1]
+ %206 = fsub float %204, %205 ; [#uses=6]
+ store float %206, float* %203, align 4
+ %207 = fmul float %199, %200 ; [#uses=1]
+ %208 = fmul float %197, %202 ; [#uses=1]
+ %209 = fsub float %207, %208 ; [#uses=6]
+ %210 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 3, i32 0, i32 0, i32 1 ; [#uses=4]
+ store float %209, float* %210, align 4
+ %211 = fmul float %197, %201 ; [#uses=1]
+ %212 = fmul float %198, %200 ; [#uses=1]
+ %213 = fsub float %211, %212 ; [#uses=6]
+ %214 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 3, i32 0, i32 0, i32 2 ; [#uses=4]
+ store float %213, float* %214, align 4
+ %215 = fmul float %206, %206 ; [#uses=1]
+ %216 = fmul float %209, %209 ; [#uses=1]
+ %217 = fadd float %215, %216 ; [#uses=1]
+ %218 = fmul float %213, %213 ; [#uses=1]
+ %219 = fadd float %217, %218 ; [#uses=3]
+ %220 = fcmp ugt float %219, 0x3E7AD7F2A0000000 ; [#uses=1]
+ br i1 %220, label %bb70, label %bb72
+
+bb70: ; preds = %bb57
+ %tmp149 = bitcast float %219 to i32 ; [#uses=1]
+ %221 = fmul float %219, 5.000000e-01 ; [#uses=1]
+ %222 = lshr i32 %tmp149, 1 ; [#uses=1]
+ %223 = sub i32 1597463007, %222 ; [#uses=1]
+ %tmp143 = bitcast i32 %223 to float ; [#uses=3]
+ %224 = fmul float %221, %tmp143 ; [#uses=1]
+ %225 = fmul float %224, %tmp143 ; [#uses=1]
+ %226 = fsub float 1.500000e+00, %225 ; [#uses=1]
+ %227 = fmul float %226, %tmp143 ; [#uses=4]
+ %228 = fcmp olt float %227, 0x47EFFFFFE0000000 ; [#uses=1]
+ br i1 %228, label %bb71, label %bb72
+
+bb71: ; preds = %bb70
+ %229 = fmul float %206, %227 ; [#uses=2]
+ store float %229, float* %203, align 4
+ %230 = fmul float %209, %227 ; [#uses=2]
+ store float %230, float* %210, align 4
+ %231 = fmul float %213, %227 ; [#uses=2]
+ store float %231, float* %214, align 4
+ br label %bb72
+
+bb72: ; preds = %bb71, %bb70, %bb57
+ %232 = phi float [ %213, %bb57 ], [ %231, %bb71 ], [ %213, %bb70 ] ; [#uses=6]
+ %233 = phi float [ %209, %bb57 ], [ %230, %bb71 ], [ %209, %bb70 ] ; [#uses=6]
+ %234 = phi float [ %206, %bb57 ], [ %229, %bb71 ], [ %206, %bb70 ] ; [#uses=6]
+ %235 = fmul float %4, %234 ; [#uses=1]
+ %236 = fmul float %7, %233 ; [#uses=1]
+ %237 = fadd float %235, %236 ; [#uses=1]
+ %238 = fmul float %10, %232 ; [#uses=1]
+ %239 = fadd float %237, %238 ; [#uses=6]
+ %240 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 3, i32 0, i32 0, i32 3 ; [#uses=3]
+ store float %239, float* %240, align 4
+ %241 = fmul float %234, %196 ; [#uses=1]
+ %242 = fmul float %233, %195 ; [#uses=1]
+ %243 = fadd float %241, %242 ; [#uses=1]
+ %244 = fmul float %232, %194 ; [#uses=1]
+ %245 = fadd float %243, %244 ; [#uses=1]
+ %246 = fsub float %245, %239 ; [#uses=9]
+ %247 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 12, i32 0 ; [#uses=5]
+ store float %246, float* %247, align 4
+ %248 = fmul float %234, %193 ; [#uses=1]
+ %249 = fmul float %233, %192 ; [#uses=1]
+ %250 = fadd float %248, %249 ; [#uses=1]
+ %251 = fmul float %232, %191 ; [#uses=1]
+ %252 = fadd float %250, %251 ; [#uses=1]
+ %253 = fsub float %252, %239 ; [#uses=11]
+ %254 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 12, i32 1 ; [#uses=5]
+ store float %253, float* %254, align 4
+ %255 = fmul float %234, %64 ; [#uses=1]
+ %256 = fmul float %233, %67 ; [#uses=1]
+ %257 = fadd float %255, %256 ; [#uses=1]
+ %258 = fmul float %232, %70 ; [#uses=1]
+ %259 = fadd float %257, %258 ; [#uses=1]
+ %260 = fsub float %259, %239 ; [#uses=11]
+ %261 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 12, i32 2 ; [#uses=5]
+ store float %260, float* %261, align 4
+ %262 = fmul float %246, %253 ; [#uses=2]
+ %263 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 13 ; [#uses=1]
+ store float %262, float* %263, align 4
+ %264 = fmul float %246, %260 ; [#uses=2]
+ %265 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 14 ; [#uses=1]
+ store float %264, float* %265, align 4
+ %266 = fcmp ule float %262, 0.000000e+00 ; [#uses=1]
+ %267 = fcmp ule float %264, 0.000000e+00 ; [#uses=1]
+ %or.cond175 = or i1 %266, %267 ; [#uses=1]
+ br i1 %or.cond175, label %bb100, label %bb74
+
+bb74: ; preds = %bb72
+ %268 = fcmp olt float %246, 0.000000e+00 ; [#uses=1]
+ br i1 %268, label %bb75, label %bb88
+
+bb75: ; preds = %bb74
+ %269 = fcmp olt float %253, %260 ; [#uses=2]
+ %iftmp.310.0 = select i1 %269, float %260, float %253 ; [#uses=1]
+ %270 = fcmp olt float %246, %iftmp.310.0 ; [#uses=1]
+ %.not176 = xor i1 %270, true ; [#uses=2]
+ %brmerge177 = or i1 %.not176, %269 ; [#uses=1]
+ %.mux178 = select i1 %.not176, float* %247, float* %261 ; [#uses=1]
+ %iftmp.309.0.in = select i1 %brmerge177, float* %.mux178, float* %254 ; [#uses=1]
+ %iftmp.309.0 = load float* %iftmp.309.0.in, align 4 ; [#uses=1]
+ %271 = fsub float -0.000000e+00, %iftmp.309.0 ; [#uses=3]
+ %272 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ store float %271, float* %272, align 4
+ %273 = fcmp olt float %0, %271 ; [#uses=1]
+ br i1 %273, label %bb140, label %bb87
+
+bb87: ; preds = %bb75
+ %274 = fadd float %4, %16 ; [#uses=2]
+ %275 = fsub float %274, %16 ; [#uses=2]
+ store float %275, float* %14, align 4
+ %276 = fsub float %274, %275 ; [#uses=1]
+ store float %276, float* %2, align 4
+ %277 = fadd float %7, %19 ; [#uses=2]
+ %278 = fsub float %277, %19 ; [#uses=2]
+ store float %278, float* %17, align 4
+ %279 = fsub float %277, %278 ; [#uses=1]
+ store float %279, float* %5, align 4
+ %280 = fadd float %10, %22 ; [#uses=2]
+ %281 = fsub float %280, %22 ; [#uses=2]
+ store float %281, float* %20, align 4
+ %282 = fsub float %280, %281 ; [#uses=1]
+ store float %282, float* %8, align 4
+ %283 = fsub float -0.000000e+00, %234 ; [#uses=1]
+ store float %283, float* %203, align 4
+ %284 = fsub float -0.000000e+00, %233 ; [#uses=1]
+ store float %284, float* %210, align 4
+ %285 = fsub float -0.000000e+00, %232 ; [#uses=1]
+ store float %285, float* %214, align 4
+ %286 = fsub float -0.000000e+00, %239 ; [#uses=1]
+ store float %286, float* %240, align 4
+ br label %bb122
+
+bb88: ; preds = %bb74
+ %287 = fcmp ogt float %253, %260 ; [#uses=2]
+ %iftmp.314.0 = select i1 %287, float %260, float %253 ; [#uses=1]
+ %288 = fcmp ogt float %246, %iftmp.314.0 ; [#uses=1]
+ %.not179 = xor i1 %288, true ; [#uses=2]
+ %brmerge180 = or i1 %.not179, %287 ; [#uses=1]
+ %.mux181 = select i1 %.not179, float* %247, float* %261 ; [#uses=1]
+ %iftmp.313.0.in = select i1 %brmerge180, float* %.mux181, float* %254 ; [#uses=1]
+ %iftmp.313.0 = load float* %iftmp.313.0.in, align 4 ; [#uses=3]
+ %289 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ store float %iftmp.313.0, float* %289, align 4
+ %290 = fcmp ogt float %iftmp.313.0, %0 ; [#uses=1]
+ br i1 %290, label %bb140, label %bb122
+
+bb100: ; preds = %bb72
+ %291 = fadd float %246, %253 ; [#uses=1]
+ %292 = fadd float %291, %260 ; [#uses=1]
+ %293 = fdiv float %292, 3.000000e+00 ; [#uses=2]
+ %294 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 8, i32 0, i32 1 ; [#uses=3]
+ store float %293, float* %294, align 4
+ %295 = fcmp olt float %293, 0.000000e+00 ; [#uses=1]
+ br i1 %295, label %bb102, label %bb112
+
+bb102: ; preds = %bb100
+ %296 = fadd float %4, %16 ; [#uses=2]
+ %297 = fsub float %296, %16 ; [#uses=2]
+ store float %297, float* %14, align 4
+ %298 = fsub float %296, %297 ; [#uses=1]
+ store float %298, float* %2, align 4
+ %299 = fadd float %7, %19 ; [#uses=2]
+ %300 = fsub float %299, %19 ; [#uses=2]
+ store float %300, float* %17, align 4
+ %301 = fsub float %299, %300 ; [#uses=1]
+ store float %301, float* %5, align 4
+ %302 = fadd float %10, %22 ; [#uses=2]
+ %303 = fsub float %302, %22 ; [#uses=2]
+ store float %303, float* %20, align 4
+ %304 = fsub float %302, %303 ; [#uses=1]
+ store float %304, float* %8, align 4
+ %305 = fsub float -0.000000e+00, %234 ; [#uses=1]
+ store float %305, float* %203, align 4
+ %306 = fsub float -0.000000e+00, %233 ; [#uses=1]
+ store float %306, float* %210, align 4
+ %307 = fsub float -0.000000e+00, %232 ; [#uses=1]
+ store float %307, float* %214, align 4
+ %308 = fsub float -0.000000e+00, %239 ; [#uses=1]
+ store float %308, float* %240, align 4
+ %309 = fcmp olt float %253, %260 ; [#uses=2]
+ %iftmp.319.0 = select i1 %309, float %260, float %253 ; [#uses=1]
+ %310 = fcmp olt float %246, %iftmp.319.0 ; [#uses=1]
+ %.not182 = xor i1 %310, true ; [#uses=2]
+ %brmerge183 = or i1 %.not182, %309 ; [#uses=1]
+ %.mux184 = select i1 %.not182, float* %247, float* %261 ; [#uses=1]
+ %iftmp.318.0.in = select i1 %brmerge183, float* %.mux184, float* %254 ; [#uses=1]
+ %iftmp.318.0 = load float* %iftmp.318.0.in, align 4 ; [#uses=1]
+ %311 = fsub float -0.000000e+00, %iftmp.318.0 ; [#uses=2]
+ store float %311, float* %294, align 4
+ br label %bb122
+
+bb112: ; preds = %bb100
+ %312 = fcmp ogt float %253, %260 ; [#uses=2]
+ %iftmp.322.0 = select i1 %312, float %260, float %253 ; [#uses=1]
+ %313 = fcmp ogt float %246, %iftmp.322.0 ; [#uses=1]
+ %.not185 = xor i1 %313, true ; [#uses=2]
+ %brmerge186 = or i1 %.not185, %312 ; [#uses=1]
+ %.mux187 = select i1 %.not185, float* %247, float* %261 ; [#uses=1]
+ %iftmp.321.0.in = select i1 %brmerge186, float* %.mux187, float* %254 ; [#uses=1]
+ %iftmp.321.0 = load float* %iftmp.321.0.in, align 4 ; [#uses=2]
+ store float %iftmp.321.0, float* %294, align 4
+ br label %bb122
+
+bb122: ; preds = %bb112, %bb102, %bb88, %bb87
+ %314 = phi float [ %iftmp.321.0, %bb112 ], [ %311, %bb102 ], [ %iftmp.313.0, %bb88 ], [ %271, %bb87 ] ; [#uses=1]
+ %315 = fcmp olt float %190, %314 ; [#uses=1]
+ %316 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 17, i32 0 ; [#uses=4]
+ br i1 %315, label %bb134, label %bb131
+
+bb131: ; preds = %bb122
+ %317 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %318 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ %319 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 4 ; [#uses=2]
+ %320 = tail call i32 @_ZN30GIM_TRIANGLE_CALCULATION_CACHE13clip_triangleERK9btVector4PK9btVector3S5_PS3_(%struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, %struct.btQuaternion* %319, %struct.btQuadWord* %318, %struct.btQuadWord* %317, %struct.btQuadWord* %316) inlinehint ; [#uses=2]
+ %321 = icmp eq i32 %320, 0 ; [#uses=1]
+ br i1 %321, label %bb140, label %bb133
+
+bb133: ; preds = %bb131
+ %322 = load float* %1, align 4 ; [#uses=1]
+ tail call void @_ZN25GIM_TRIANGLE_CONTACT_DATA12merge_pointsERK9btVector4fPK9btVector3j(%struct.GIM_TRIANGLE_CONTACT* %contacts, %struct.btQuaternion* %319, float %322, %struct.btQuadWord* %316, i32 %320) inlinehint
+ br label %bb137
+
+bb134: ; preds = %bb122
+ %323 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ %324 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %325 = getelementptr inbounds %struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, i32 0, i32 3 ; [#uses=2]
+ %326 = tail call i32 @_ZN30GIM_TRIANGLE_CALCULATION_CACHE13clip_triangleERK9btVector4PK9btVector3S5_PS3_(%struct.GIM_TRIANGLE_CALCULATION_CACHE* %this, %struct.btQuaternion* %325, %struct.btQuadWord* %324, %struct.btQuadWord* %323, %struct.btQuadWord* %316) inlinehint ; [#uses=2]
+ %327 = icmp eq i32 %326, 0 ; [#uses=1]
+ br i1 %327, label %bb140, label %bb136
+
+bb136: ; preds = %bb134
+ %328 = load float* %1, align 4 ; [#uses=1]
+ tail call void @_ZN25GIM_TRIANGLE_CONTACT_DATA12merge_pointsERK9btVector4fPK9btVector3j(%struct.GIM_TRIANGLE_CONTACT* %contacts, %struct.btQuaternion* %325, float %328, %struct.btQuadWord* %316, i32 %326) inlinehint
+ %329 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=2]
+ %330 = load float* %329, align 4 ; [#uses=1]
+ %331 = fmul float %330, -1.000000e+00 ; [#uses=1]
+ store float %331, float* %329, align 4
+ %332 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=2]
+ %333 = load float* %332, align 4 ; [#uses=1]
+ %334 = fmul float %333, -1.000000e+00 ; [#uses=1]
+ store float %334, float* %332, align 4
+ %335 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=2]
+ %336 = load float* %335, align 4 ; [#uses=1]
+ %337 = fmul float %336, -1.000000e+00 ; [#uses=1]
+ store float %337, float* %335, align 4
+ br label %bb137
+
+bb137: ; preds = %bb136, %bb133
+ %338 = getelementptr inbounds %struct.GIM_TRIANGLE_CONTACT* %contacts, i32 0, i32 1 ; [#uses=1]
+ %339 = load i32* %338, align 4 ; [#uses=1]
+ %not. = icmp ne i32 %339, 0 ; [#uses=1]
+ %retval = zext i1 %not. to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb140: ; preds = %bb134, %bb131, %bb88, %bb75, %bb23, %bb11
+ ret i8 0
+}
+
+; [#uses=0]
+define void @_ZN27btContinuousConvexCollisionC2EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btContinuousConvexCollision* nocapture %this, %struct.btConvexShape* %convexA, %struct.btConvexShape* %convexB, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %penetrationDepthSolver) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV27btContinuousConvexCollision, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %1, align 4
+ %2 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %penetrationDepthSolver, %struct.btActionInterface** %2, align 4
+ %3 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConvexShape* %convexA, %struct.btConvexShape** %3, align 4
+ %4 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btConvexShape* %convexB, %struct.btConvexShape** %4, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btPointCollectorD1Ev(%struct..0btIntermediateResult* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btPointCollectorD0Ev(%struct..0btIntermediateResult* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..0btIntermediateResult* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btPointCollector20setShapeIdentifiersAEii(%struct..0btIntermediateResult* nocapture %this, i32 %partId0, i32 %index0) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btPointCollector20setShapeIdentifiersBEii(%struct..0btIntermediateResult* nocapture %this, i32 %partId1, i32 %index1) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btPointCollector15addContactPointERK9btVector3S2_f(%struct..0btIntermediateResult* nocapture %this, %struct.btQuadWord* nocapture %normalOnBInWorld, %struct.btQuadWord* nocapture %pointInWorld, float %depth) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 3 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = fcmp ogt float %1, %depth ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %3, align 4
+ %4 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ store float %depth, float* %0, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN27btContinuousConvexCollisionD1Ev(%struct.btContinuousConvexCollision* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV27btContinuousConvexCollision, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN27btContinuousConvexCollisionD0Ev(%struct.btContinuousConvexCollision* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV27btContinuousConvexCollision, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct.btContinuousConvexCollision* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=2]
+define zeroext i8 @_ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(%struct.btContinuousConvexCollision* nocapture %this, %struct.btTransform* %fromA, %struct.btTransform* nocapture %toA, %struct.btTransform* %fromB, %struct.btTransform* nocapture %toB, %"struct.btConvexCast::CastResult"* %result) align 2 {
+entry:
+ %axis.i70 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %angle.i71 = alloca float, align 4 ; [#uses=2]
+ %axis.i = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %angle.i = alloca float, align 4 ; [#uses=2]
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %linVelA = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %angVelA = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %linVelB = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %angVelB = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %c = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %raySphere = alloca %struct.btPolyhedralConvexShape, align 8 ; [#uses=7]
+ %pointCollector1 = alloca %struct..0btIntermediateResult, align 8 ; [#uses=12]
+ %gjk = alloca %struct.btGjkPairDetector, align 8 ; [#uses=2]
+ %input = alloca %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput", align 8 ; [#uses=35]
+ %interpolatedTransA = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %interpolatedTransB = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %pointCollector = alloca %struct..0btIntermediateResult, align 8 ; [#uses=12]
+ %gjk7 = alloca %struct.btGjkPairDetector, align 8 ; [#uses=2]
+ %input8 = alloca %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput", align 8 ; [#uses=35]
+ %2 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 1 ; [#uses=3]
+ %3 = load %struct.btVoronoiSimplexSolver** %2, align 4 ; [#uses=1]
+ call void @_ZN22btVoronoiSimplexSolver5resetEv(%struct.btVoronoiSimplexSolver* %3)
+ %4 = getelementptr inbounds %struct.btTransform* %toA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = fsub float %5, %7 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btTransform* %toA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = fsub float %10, %12 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btTransform* %toA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fsub float %15, %17 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btQuadWord* %linVelA, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %18, float* %19, align 8
+ %20 = getelementptr inbounds %struct.btQuadWord* %linVelA, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %13, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %linVelA, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %8, float* %21, align 8
+ %22 = getelementptr inbounds %struct.btQuadWord* %linVelA, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ call void @_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(%struct.btTransform* %fromA, %struct.btTransform* %toA, %struct.btQuadWord* %axis.i, float* %angle.i) nounwind
+ %23 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 8 ; [#uses=1]
+ %25 = load float* %angle.i, align 4 ; [#uses=3]
+ %26 = fmul float %24, %25 ; [#uses=3]
+ %27 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fmul float %28, %25 ; [#uses=3]
+ %30 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 8 ; [#uses=1]
+ %32 = fmul float %31, %25 ; [#uses=3]
+ %33 = getelementptr inbounds %struct.btQuadWord* %angVelA, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %32, float* %33, align 8
+ %34 = getelementptr inbounds %struct.btQuadWord* %angVelA, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %29, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btQuadWord* %angVelA, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %26, float* %35, align 8
+ %36 = getelementptr inbounds %struct.btQuadWord* %angVelA, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 4
+ %37 = getelementptr inbounds %struct.btTransform* %toB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fsub float %38, %40 ; [#uses=2]
+ %42 = getelementptr inbounds %struct.btTransform* %toB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fsub float %43, %45 ; [#uses=2]
+ %47 = getelementptr inbounds %struct.btTransform* %toB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fsub float %48, %50 ; [#uses=2]
+ %52 = getelementptr inbounds %struct.btQuadWord* %linVelB, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %51, float* %52, align 8
+ %53 = getelementptr inbounds %struct.btQuadWord* %linVelB, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %46, float* %53, align 4
+ %54 = getelementptr inbounds %struct.btQuadWord* %linVelB, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %41, float* %54, align 8
+ %55 = getelementptr inbounds %struct.btQuadWord* %linVelB, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %55, align 4
+ call void @_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(%struct.btTransform* %fromB, %struct.btTransform* %toB, %struct.btQuadWord* %axis.i70, float* %angle.i71) nounwind
+ %56 = getelementptr inbounds %struct.btQuadWord* %axis.i70, i32 0, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %56, align 8 ; [#uses=1]
+ %58 = load float* %angle.i71, align 4 ; [#uses=3]
+ %59 = fmul float %57, %58 ; [#uses=3]
+ %60 = getelementptr inbounds %struct.btQuadWord* %axis.i70, i32 0, i32 0, i32 1 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fmul float %61, %58 ; [#uses=3]
+ %63 = getelementptr inbounds %struct.btQuadWord* %axis.i70, i32 0, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 8 ; [#uses=1]
+ %65 = fmul float %64, %58 ; [#uses=3]
+ %66 = getelementptr inbounds %struct.btQuadWord* %angVelB, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %65, float* %66, align 8
+ %67 = getelementptr inbounds %struct.btQuadWord* %angVelB, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %62, float* %67, align 4
+ %68 = getelementptr inbounds %struct.btQuadWord* %angVelB, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %59, float* %68, align 8
+ %69 = getelementptr inbounds %struct.btQuadWord* %angVelB, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %69, align 4
+ %70 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 3 ; [#uses=4]
+ %71 = load %struct.btConvexShape** %70, align 4 ; [#uses=2]
+ %72 = getelementptr inbounds %struct.btConvexShape* %71, i32 0, i32 0, i32 0 ; [#uses=1]
+ %73 = load i32 (...)*** %72, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds i32 (...)** %73, i32 4 ; [#uses=1]
+ %75 = load i32 (...)** %74, align 4 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btConvexShape* %71, i32 0, i32 0 ; [#uses=1]
+ %77 = bitcast i32 (...)* %75 to float (%struct.btCollisionShape*)* ; [#uses=1]
+ %78 = call float %77(%struct.btCollisionShape* %76) ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 4 ; [#uses=4]
+ %80 = load %struct.btConvexShape** %79, align 4 ; [#uses=2]
+ %81 = getelementptr inbounds %struct.btConvexShape* %80, i32 0, i32 0, i32 0 ; [#uses=1]
+ %82 = load i32 (...)*** %81, align 4 ; [#uses=1]
+ %83 = getelementptr inbounds i32 (...)** %82, i32 4 ; [#uses=1]
+ %84 = load i32 (...)** %83, align 4 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btConvexShape* %80, i32 0, i32 0 ; [#uses=1]
+ %86 = bitcast i32 (...)* %84 to float (%struct.btCollisionShape*)* ; [#uses=1]
+ %87 = call float %86(%struct.btCollisionShape* %85) ; [#uses=1]
+ %88 = fmul float %32, %32 ; [#uses=1]
+ %89 = fmul float %29, %29 ; [#uses=1]
+ %90 = fadd float %88, %89 ; [#uses=1]
+ %91 = fmul float %26, %26 ; [#uses=1]
+ %92 = fadd float %90, %91 ; [#uses=1]
+ %93 = call float @sqrtf(float %92) nounwind readonly ; [#uses=1]
+ %94 = fmul float %93, %78 ; [#uses=1]
+ %95 = fmul float %65, %65 ; [#uses=1]
+ %96 = fmul float %62, %62 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %59, %59 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=1]
+ %100 = call float @sqrtf(float %99) nounwind readonly ; [#uses=1]
+ %101 = fmul float %100, %87 ; [#uses=1]
+ %102 = fadd float %94, %101 ; [#uses=3]
+ %103 = fsub float %41, %8 ; [#uses=4]
+ %104 = fsub float %46, %13 ; [#uses=4]
+ %105 = fsub float %51, %18 ; [#uses=4]
+ %106 = fmul float %105, %105 ; [#uses=1]
+ %107 = fmul float %104, %104 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fmul float %103, %103 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = call float @sqrtf(float %110) nounwind readonly ; [#uses=1]
+ %112 = fadd float %111, %102 ; [#uses=1]
+ %113 = fcmp oeq float %112, 0.000000e+00 ; [#uses=1]
+ br i1 %113, label %bb52, label %bb1
+
+bb1: ; preds = %entry
+ %114 = getelementptr inbounds %struct.btPolyhedralConvexShape* %raySphere, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %114)
+ %115 = getelementptr inbounds %struct.btPolyhedralConvexShape* %raySphere, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btSphereShape, i32 0, i32 2), i32 (...)*** %115, align 8
+ %116 = getelementptr inbounds %struct.btPolyhedralConvexShape* %raySphere, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 8, i32* %116, align 4
+ %117 = getelementptr inbounds %struct.btPolyhedralConvexShape* %raySphere, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %117, align 4
+ %118 = getelementptr inbounds %struct.btPolyhedralConvexShape* %raySphere, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %118, align 4
+ %119 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector1, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %119, align 8
+ %120 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector1, i32 0, i32 3 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %120, align 4
+ %121 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector1, i32 0, i32 4 ; [#uses=2]
+ store i8 0, i8* %121, align 8
+ %122 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 2 ; [#uses=2]
+ %123 = load %struct.btActionInterface** %122, align 4 ; [#uses=1]
+ %124 = load %struct.btVoronoiSimplexSolver** %2, align 4 ; [#uses=1]
+ %125 = load %struct.btConvexShape** %79, align 4 ; [#uses=2]
+ %126 = getelementptr inbounds %struct.btConvexShape* %125, i32 0, i32 0, i32 0 ; [#uses=1]
+ %127 = load i32 (...)*** %126, align 4 ; [#uses=1]
+ %128 = getelementptr inbounds i32 (...)** %127, i32 11 ; [#uses=1]
+ %129 = load i32 (...)** %128, align 4 ; [#uses=1]
+ %130 = bitcast i32 (...)* %129 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %131 = invoke float %130(%struct.btConvexShape* %125)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb1
+ %132 = load %struct.btConvexShape** %70, align 4 ; [#uses=2]
+ %133 = getelementptr inbounds %struct.btConvexShape* %132, i32 0, i32 0, i32 0 ; [#uses=1]
+ %134 = load i32 (...)*** %133, align 4 ; [#uses=1]
+ %135 = getelementptr inbounds i32 (...)** %134, i32 11 ; [#uses=1]
+ %136 = load i32 (...)** %135, align 4 ; [#uses=1]
+ %137 = bitcast i32 (...)* %136 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %138 = invoke float %137(%struct.btConvexShape* %132)
+ to label %invcont2 unwind label %lpad ; [#uses=1]
+
+invcont2: ; preds = %invcont
+ %139 = load %struct.btConvexShape** %79, align 4 ; [#uses=2]
+ %140 = getelementptr inbounds %struct.btConvexShape* %139, i32 0, i32 0, i32 1 ; [#uses=1]
+ %141 = load i32* %140, align 4 ; [#uses=1]
+ %142 = load %struct.btConvexShape** %70, align 4 ; [#uses=2]
+ %143 = getelementptr inbounds %struct.btConvexShape* %142, i32 0, i32 0, i32 1 ; [#uses=1]
+ %144 = load i32* %143, align 4 ; [#uses=1]
+ invoke void @_ZN17btGjkPairDetectorC1EPK13btConvexShapeS2_iiffP22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btGjkPairDetector* %gjk, %struct.btConvexShape* %142, %struct.btConvexShape* %139, i32 %144, i32 %141, float %138, float %131, %struct.btVoronoiSimplexSolver* %124, %struct.btActionInterface* %123)
+ to label %invcont3 unwind label %lpad
+
+invcont3: ; preds = %invcont2
+ %145 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 2 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %145, align 8
+ %146 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 3 ; [#uses=1]
+ store %struct.btStackAlloc* null, %struct.btStackAlloc** %146, align 4
+ %147 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %149 = load float* %148, align 4 ; [#uses=1]
+ store float %149, float* %147, align 8
+ %150 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %151 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %152 = load float* %151, align 4 ; [#uses=1]
+ store float %152, float* %150, align 4
+ %153 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %155 = load float* %154, align 4 ; [#uses=1]
+ store float %155, float* %153, align 8
+ %156 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %157 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %158 = load float* %157, align 4 ; [#uses=1]
+ store float %158, float* %156, align 4
+ %159 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %160 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %161 = load float* %160, align 4 ; [#uses=1]
+ store float %161, float* %159, align 8
+ %162 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %163 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %164 = load float* %163, align 4 ; [#uses=1]
+ store float %164, float* %162, align 4
+ %165 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %167 = load float* %166, align 4 ; [#uses=1]
+ store float %167, float* %165, align 8
+ %168 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %169 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %170 = load float* %169, align 4 ; [#uses=1]
+ store float %170, float* %168, align 4
+ %171 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %172 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %173 = load float* %172, align 4 ; [#uses=1]
+ store float %173, float* %171, align 8
+ %174 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %175 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %176 = load float* %175, align 4 ; [#uses=1]
+ store float %176, float* %174, align 4
+ %177 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %178 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %179 = load float* %178, align 4 ; [#uses=1]
+ store float %179, float* %177, align 8
+ %180 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %182 = load float* %181, align 4 ; [#uses=1]
+ store float %182, float* %180, align 4
+ %183 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %184 = load float* %16, align 4 ; [#uses=1]
+ store float %184, float* %183, align 8
+ %185 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %186 = load float* %11, align 4 ; [#uses=1]
+ store float %186, float* %185, align 4
+ %187 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %188 = load float* %6, align 4 ; [#uses=1]
+ store float %188, float* %187, align 8
+ %189 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %191 = load float* %190, align 4 ; [#uses=1]
+ store float %191, float* %189, align 4
+ %192 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %193 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %194 = load float* %193, align 4 ; [#uses=1]
+ store float %194, float* %192, align 8
+ %195 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %196 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %197 = load float* %196, align 4 ; [#uses=1]
+ store float %197, float* %195, align 4
+ %198 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %199 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %200 = load float* %199, align 4 ; [#uses=1]
+ store float %200, float* %198, align 8
+ %201 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %202 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %203 = load float* %202, align 4 ; [#uses=1]
+ store float %203, float* %201, align 4
+ %204 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %205 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %206 = load float* %205, align 4 ; [#uses=1]
+ store float %206, float* %204, align 8
+ %207 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %209 = load float* %208, align 4 ; [#uses=1]
+ store float %209, float* %207, align 4
+ %210 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %211 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %212 = load float* %211, align 4 ; [#uses=1]
+ store float %212, float* %210, align 8
+ %213 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %214 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %215 = load float* %214, align 4 ; [#uses=1]
+ store float %215, float* %213, align 4
+ %216 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %217 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %218 = load float* %217, align 4 ; [#uses=1]
+ store float %218, float* %216, align 8
+ %219 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %220 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %221 = load float* %220, align 4 ; [#uses=1]
+ store float %221, float* %219, align 4
+ %222 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %223 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %224 = load float* %223, align 4 ; [#uses=1]
+ store float %224, float* %222, align 8
+ %225 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %226 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %227 = load float* %226, align 4 ; [#uses=1]
+ store float %227, float* %225, align 4
+ %228 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %229 = load float* %49, align 4 ; [#uses=1]
+ store float %229, float* %228, align 8
+ %230 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %231 = load float* %44, align 4 ; [#uses=1]
+ store float %231, float* %230, align 4
+ %232 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %233 = load float* %39, align 4 ; [#uses=1]
+ store float %233, float* %232, align 8
+ %234 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %235 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %236 = load float* %235, align 4 ; [#uses=1]
+ store float %236, float* %234, align 4
+ %237 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector1, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.btGjkPairDetector* %gjk, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, %struct.btActionInterface* %237, %struct.btActionInterface* null, i8 zeroext 0)
+ to label %invcont4 unwind label %lpad
+
+invcont4: ; preds = %invcont3
+ %238 = load i8* %121, align 8 ; [#uses=1]
+ %239 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 0 ; [#uses=2]
+ %240 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %241 = load float* %240, align 4 ; [#uses=2]
+ store float %241, float* %239, align 8
+ %242 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 1 ; [#uses=2]
+ %243 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %244 = load float* %243, align 4 ; [#uses=2]
+ store float %244, float* %242, align 4
+ %245 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 2 ; [#uses=2]
+ %246 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %247 = load float* %246, align 4 ; [#uses=2]
+ store float %247, float* %245, align 8
+ %248 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 3 ; [#uses=2]
+ %249 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector1, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %250 = load float* %249, align 4 ; [#uses=2]
+ store float %250, float* %248, align 4
+ %toBool = icmp eq i8 %238, 0 ; [#uses=1]
+ br i1 %toBool, label %bb46, label %bb5
+
+bb5: ; preds = %invcont4
+ %251 = load float* %120, align 4 ; [#uses=1]
+ %252 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %253 = load float* %252, align 4 ; [#uses=2]
+ %254 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %255 = load float* %254, align 4 ; [#uses=2]
+ %256 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %257 = load float* %256, align 4 ; [#uses=2]
+ %258 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %259 = load float* %258, align 4 ; [#uses=1]
+ %260 = fmul float %105, %253 ; [#uses=1]
+ %261 = fmul float %104, %255 ; [#uses=1]
+ %262 = fadd float %260, %261 ; [#uses=1]
+ %263 = fmul float %103, %257 ; [#uses=1]
+ %264 = fadd float %262, %263 ; [#uses=1]
+ %265 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 6 ; [#uses=2]
+ %266 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 0 ; [#uses=1]
+ %267 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 0, i32 0 ; [#uses=4]
+ %268 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 3 ; [#uses=2]
+ %269 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 4 ; [#uses=2]
+ %270 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 2 ; [#uses=1]
+ %271 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 3 ; [#uses=1]
+ %272 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %273 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %274 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %275 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %276 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %277 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %278 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %279 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %280 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %281 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %282 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %283 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %284 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %285 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %286 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %287 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %288 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %289 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %290 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %291 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %292 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %293 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %294 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %295 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %296 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %297 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %298 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %299 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %300 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %301 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %302 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %303 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %304 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %305 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %306 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %307 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %308 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %309 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %310 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %311 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %312 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %313 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %314 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %315 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %316 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %317 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %318 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %319 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %320 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %321 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %322 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %323 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %324 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %325 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %326 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %327 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %328 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %329 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %330 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %331 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %332 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %333 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %334 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %335 = getelementptr inbounds %struct.btTransform* %interpolatedTransB, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %336 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 0 ; [#uses=1]
+ %337 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %338 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %339 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %340 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %341 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %342 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %343 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %344 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %345 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %346 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %347 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %348 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %349 = getelementptr inbounds %struct.btTransform* %interpolatedTransA, i32 0, i32 1 ; [#uses=1]
+ %350 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %351 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %352 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %353 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb38
+
+bb6: ; preds = %bb38
+ %354 = load %struct.btActionInterface** %265, align 4 ; [#uses=3]
+ %355 = icmp eq %struct.btActionInterface* %354, null ; [#uses=1]
+ br i1 %355, label %bb11, label %bb9
+
+bb9: ; preds = %bb6
+ %356 = getelementptr inbounds %struct.btActionInterface* %354, i32 0, i32 0 ; [#uses=1]
+ %357 = load i32 (...)*** %356, align 4 ; [#uses=1]
+ %358 = getelementptr inbounds i32 (...)** %357, i32 5 ; [#uses=1]
+ %359 = load i32 (...)** %358, align 4 ; [#uses=1]
+ store float 1.000000e+00, float* %350, align 8
+ store float 1.000000e+00, float* %351, align 4
+ store float 1.000000e+00, float* %352, align 8
+ store float 0.000000e+00, float* %353, align 4
+ %360 = bitcast i32 (...)* %359 to void (%struct.btActionInterface*, %struct.btQuadWord*, float, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %360(%struct.btActionInterface* %354, %struct.btQuadWord* %c, float 0x3FC99999A0000000, %struct.btQuadWord* %1)
+ to label %bb11 unwind label %lpad
+
+bb11: ; preds = %bb9, %bb6
+ %361 = icmp sgt i32 %indvar, 64 ; [#uses=1]
+ br i1 %361, label %bb46, label %bb13
+
+bb13: ; preds = %bb11
+ %362 = fmul float %105, %n.0.0.1 ; [#uses=1]
+ %363 = fmul float %104, %n.0.1.1 ; [#uses=1]
+ %364 = fadd float %362, %363 ; [#uses=1]
+ %365 = fmul float %103, %n.0.2.1 ; [#uses=1]
+ %366 = fadd float %364, %365 ; [#uses=2]
+ %367 = fadd float %366, %102 ; [#uses=2]
+ %368 = fcmp ugt float %367, 0x3E80000000000000 ; [#uses=1]
+ br i1 %368, label %bb15, label %bb46
+
+bb15: ; preds = %bb13
+ %369 = fdiv float %dist.1, %367 ; [#uses=1]
+ %370 = fadd float %lambda.0, %369 ; [#uses=8]
+ %notlhs = fcmp ule float %370, 1.000000e+00 ; [#uses=1]
+ %notrhs = fcmp uge float %370, 0.000000e+00 ; [#uses=1]
+ %or.cond.not = and i1 %notrhs, %notlhs ; [#uses=1]
+ %371 = fcmp ugt float %370, %lambda.0 ; [#uses=1]
+ %or.cond69 = and i1 %or.cond.not, %371 ; [#uses=1]
+ br i1 %or.cond69, label %invcont24, label %bb46
+
+invcont24: ; preds = %bb15
+ call void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(%struct.btTransform* %fromA, %struct.btQuadWord* %linVelA, %struct.btQuadWord* %angVelA, float %370, %struct.btTransform* %interpolatedTransA)
+ call void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(%struct.btTransform* %fromB, %struct.btQuadWord* %linVelB, %struct.btQuadWord* %angVelB, float %370, %struct.btTransform* %interpolatedTransB)
+ %372 = load %struct.btActionInterface** %265, align 4 ; [#uses=3]
+ %373 = icmp eq %struct.btActionInterface* %372, null ; [#uses=1]
+ br i1 %373, label %bb27, label %bb25
+
+bb25: ; preds = %invcont24
+ %374 = getelementptr inbounds %struct.btActionInterface* %372, i32 0, i32 0 ; [#uses=1]
+ %375 = load i32 (...)*** %374, align 4 ; [#uses=1]
+ %376 = getelementptr inbounds i32 (...)** %375, i32 5 ; [#uses=1]
+ %377 = load i32 (...)** %376, align 4 ; [#uses=1]
+ store float 1.000000e+00, float* %345, align 8
+ store float 0.000000e+00, float* %346, align 4
+ store float 0.000000e+00, float* %347, align 8
+ store float 0.000000e+00, float* %348, align 4
+ %378 = bitcast i32 (...)* %377 to void (%struct.btActionInterface*, %struct.btQuadWord*, float, %struct.btQuadWord*)* ; [#uses=1]
+ invoke void %378(%struct.btActionInterface* %372, %struct.btQuadWord* %349, float 0x3FC99999A0000000, %struct.btQuadWord* %0)
+ to label %bb27 unwind label %lpad
+
+bb27: ; preds = %bb25, %invcont24
+ %379 = load i32 (...)*** %266, align 4 ; [#uses=1]
+ %380 = load i32 (...)** %379, align 4 ; [#uses=1]
+ %381 = bitcast i32 (...)* %380 to void (%"struct.btConvexCast::CastResult"*, float)* ; [#uses=1]
+ invoke void %381(%"struct.btConvexCast::CastResult"* %result, float %370)
+ to label %invcont28 unwind label %lpad
+
+invcont28: ; preds = %bb27
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %267, align 8
+ store float 0x43ABC16D60000000, float* %268, align 4
+ store i8 0, i8* %269, align 8
+ %382 = load %struct.btActionInterface** %122, align 4 ; [#uses=1]
+ %383 = load %struct.btVoronoiSimplexSolver** %2, align 4 ; [#uses=1]
+ %384 = load %struct.btConvexShape** %79, align 4 ; [#uses=1]
+ %385 = load %struct.btConvexShape** %70, align 4 ; [#uses=1]
+ invoke void @_ZN17btGjkPairDetectorC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btGjkPairDetector* %gjk7, %struct.btConvexShape* %385, %struct.btConvexShape* %384, %struct.btVoronoiSimplexSolver* %383, %struct.btActionInterface* %382)
+ to label %invcont29 unwind label %lpad57
+
+invcont29: ; preds = %invcont28
+ store float 0x43ABC16D60000000, float* %270, align 8
+ store %struct.btStackAlloc* null, %struct.btStackAlloc** %271, align 4
+ %386 = load float* %273, align 8 ; [#uses=1]
+ store float %386, float* %272, align 8
+ %387 = load float* %275, align 4 ; [#uses=1]
+ store float %387, float* %274, align 4
+ %388 = load float* %277, align 8 ; [#uses=1]
+ store float %388, float* %276, align 8
+ %389 = load float* %279, align 4 ; [#uses=1]
+ store float %389, float* %278, align 4
+ %390 = load float* %281, align 8 ; [#uses=1]
+ store float %390, float* %280, align 8
+ %391 = load float* %283, align 4 ; [#uses=1]
+ store float %391, float* %282, align 4
+ %392 = load float* %285, align 8 ; [#uses=1]
+ store float %392, float* %284, align 8
+ %393 = load float* %287, align 4 ; [#uses=1]
+ store float %393, float* %286, align 4
+ %394 = load float* %289, align 8 ; [#uses=1]
+ store float %394, float* %288, align 8
+ %395 = load float* %291, align 4 ; [#uses=1]
+ store float %395, float* %290, align 4
+ %396 = load float* %293, align 8 ; [#uses=1]
+ store float %396, float* %292, align 8
+ %397 = load float* %295, align 4 ; [#uses=1]
+ store float %397, float* %294, align 4
+ %398 = load float* %297, align 8 ; [#uses=1]
+ store float %398, float* %296, align 8
+ %399 = load float* %299, align 4 ; [#uses=1]
+ store float %399, float* %298, align 4
+ %400 = load float* %301, align 8 ; [#uses=1]
+ store float %400, float* %300, align 8
+ %401 = load float* %303, align 4 ; [#uses=1]
+ store float %401, float* %302, align 4
+ %402 = load float* %305, align 8 ; [#uses=1]
+ store float %402, float* %304, align 8
+ %403 = load float* %307, align 4 ; [#uses=1]
+ store float %403, float* %306, align 4
+ %404 = load float* %309, align 8 ; [#uses=1]
+ store float %404, float* %308, align 8
+ %405 = load float* %311, align 4 ; [#uses=1]
+ store float %405, float* %310, align 4
+ %406 = load float* %313, align 8 ; [#uses=1]
+ store float %406, float* %312, align 8
+ %407 = load float* %315, align 4 ; [#uses=1]
+ store float %407, float* %314, align 4
+ %408 = load float* %317, align 8 ; [#uses=1]
+ store float %408, float* %316, align 8
+ %409 = load float* %319, align 4 ; [#uses=1]
+ store float %409, float* %318, align 4
+ %410 = load float* %321, align 8 ; [#uses=1]
+ store float %410, float* %320, align 8
+ %411 = load float* %323, align 4 ; [#uses=1]
+ store float %411, float* %322, align 4
+ %412 = load float* %325, align 8 ; [#uses=1]
+ store float %412, float* %324, align 8
+ %413 = load float* %327, align 4 ; [#uses=1]
+ store float %413, float* %326, align 4
+ %414 = load float* %329, align 8 ; [#uses=1]
+ store float %414, float* %328, align 8
+ %415 = load float* %331, align 4 ; [#uses=1]
+ store float %415, float* %330, align 4
+ %416 = load float* %333, align 8 ; [#uses=1]
+ store float %416, float* %332, align 8
+ %417 = load float* %335, align 4 ; [#uses=1]
+ store float %417, float* %334, align 4
+ invoke void @_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.btGjkPairDetector* %gjk7, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input8, %struct.btActionInterface* %336, %struct.btActionInterface* null, i8 zeroext 0)
+ to label %invcont30 unwind label %lpad57
+
+invcont30: ; preds = %invcont29
+ %418 = load i8* %269, align 8 ; [#uses=1]
+ %toBool31 = icmp eq i8 %418, 0 ; [#uses=1]
+ br i1 %toBool31, label %bb37.thread, label %bb32
+
+bb32: ; preds = %invcont30
+ %419 = load float* %268, align 4 ; [#uses=2]
+ %420 = fcmp olt float %419, 0.000000e+00 ; [#uses=1]
+ br i1 %420, label %bb33, label %bb37
+
+bb33: ; preds = %bb32
+ %421 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 5 ; [#uses=1]
+ store float %370, float* %421, align 4
+ %422 = load float* %341, align 4 ; [#uses=1]
+ %423 = load float* %342, align 4 ; [#uses=1]
+ %424 = load float* %343, align 4 ; [#uses=1]
+ %425 = load float* %344, align 4 ; [#uses=1]
+ %426 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %422, float* %426, align 4
+ %427 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %423, float* %427, align 4
+ %428 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %424, float* %428, align 4
+ %429 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float %425, float* %429, align 4
+ %430 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %431 = load float* %337, align 4 ; [#uses=1]
+ store float %431, float* %430, align 4
+ %432 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %433 = load float* %338, align 4 ; [#uses=1]
+ store float %433, float* %432, align 4
+ %434 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %435 = load float* %339, align 4 ; [#uses=1]
+ store float %435, float* %434, align 4
+ %436 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %437 = load float* %340, align 4 ; [#uses=1]
+ store float %437, float* %436, align 4
+ br label %bb37.thread
+
+bb37.thread: ; preds = %bb33, %invcont30
+ %.2.ph = phi i8 [ 1, %bb33 ], [ 0, %invcont30 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %267, align 8
+ br label %bb46
+
+bb37: ; preds = %bb32
+ %438 = load float* %337, align 4 ; [#uses=2]
+ store float %438, float* %239, align 8
+ %439 = load float* %338, align 4 ; [#uses=2]
+ store float %439, float* %242, align 4
+ %440 = load float* %339, align 4 ; [#uses=2]
+ store float %440, float* %245, align 8
+ %441 = load float* %340, align 4 ; [#uses=2]
+ store float %441, float* %248, align 4
+ %442 = load float* %341, align 4 ; [#uses=1]
+ %443 = load float* %342, align 4 ; [#uses=1]
+ %444 = load float* %343, align 4 ; [#uses=1]
+ %445 = load float* %344, align 4 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %267, align 8
+ %phitmp = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb38
+
+bb38: ; preds = %bb37, %bb5
+ %446 = phi float [ %441, %bb37 ], [ %250, %bb5 ] ; [#uses=1]
+ %447 = phi float [ %440, %bb37 ], [ %247, %bb5 ] ; [#uses=1]
+ %448 = phi float [ %439, %bb37 ], [ %244, %bb5 ] ; [#uses=1]
+ %449 = phi float [ %438, %bb37 ], [ %241, %bb5 ] ; [#uses=1]
+ %indvar = phi i32 [ %phitmp, %bb37 ], [ 1, %bb5 ] ; [#uses=2]
+ %n.0.0.1 = phi float [ %442, %bb37 ], [ %253, %bb5 ] ; [#uses=2]
+ %n.0.1.1 = phi float [ %443, %bb37 ], [ %255, %bb5 ] ; [#uses=2]
+ %n.0.2.1 = phi float [ %444, %bb37 ], [ %257, %bb5 ] ; [#uses=2]
+ %n.0.3.1 = phi float [ %445, %bb37 ], [ %259, %bb5 ] ; [#uses=1]
+ %lambda.0 = phi float [ %370, %bb37 ], [ 0.000000e+00, %bb5 ] ; [#uses=3]
+ %dist.1 = phi float [ %419, %bb37 ], [ %251, %bb5 ] ; [#uses=2]
+ %projectedLinearVelocity.0 = phi float [ %366, %bb37 ], [ %264, %bb5 ] ; [#uses=1]
+ %450 = fcmp ogt float %dist.1, 0x3F50624DE0000000 ; [#uses=1]
+ br i1 %450, label %bb6, label %bb39
+
+bb39: ; preds = %bb38
+ %451 = fadd float %projectedLinearVelocity.0, %102 ; [#uses=1]
+ %452 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 7 ; [#uses=1]
+ %453 = load float* %452, align 4 ; [#uses=1]
+ %454 = fcmp ugt float %451, %453 ; [#uses=1]
+ br i1 %454, label %bb41, label %bb46
+
+bb41: ; preds = %bb39
+ %455 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 5 ; [#uses=1]
+ store float %lambda.0, float* %455, align 4
+ %456 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %n.0.0.1, float* %456, align 4
+ %457 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %n.0.1.1, float* %457, align 4
+ %458 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %n.0.2.1, float* %458, align 4
+ %459 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float %n.0.3.1, float* %459, align 4
+ %460 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %449, float* %460, align 4
+ %461 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %448, float* %461, align 4
+ %462 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %447, float* %462, align 4
+ %463 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float %446, float* %463, align 4
+ br label %bb46
+
+bb46: ; preds = %bb41, %bb39, %bb37.thread, %bb15, %bb13, %bb11, %invcont4
+ %.1 = phi i8 [ 1, %bb41 ], [ 0, %bb39 ], [ 0, %invcont4 ], [ %.2.ph, %bb37.thread ], [ 0, %bb11 ], [ 0, %bb13 ], [ 0, %bb15 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %119, align 8
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %115, align 8
+ %464 = getelementptr inbounds %struct.btPolyhedralConvexShape* %raySphere, i32 0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %464)
+ ret i8 %.1
+
+invcont50: ; preds = %ppad65
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb52: ; preds = %entry
+ ret i8 0
+
+lpad: ; preds = %bb27, %bb25, %bb9, %invcont3, %invcont2, %invcont, %bb1
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select56 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad65
+
+lpad57: ; preds = %invcont29, %invcont28
+ %eh_ptr58 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select60 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr58, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %267, align 8
+ br label %ppad65
+
+lpad61: ; preds = %ppad65
+ %eh_ptr62 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select64 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr62, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad65: ; preds = %lpad57, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr58, %lpad57 ], [ %eh_ptr, %lpad ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %119, align 8
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %115, align 8
+ %465 = getelementptr inbounds %struct.btPolyhedralConvexShape* %raySphere, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %465)
+ to label %invcont50 unwind label %lpad61
+}
+
+; [#uses=2]
+define void @_ZN27btContinuousConvexCollisionC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btContinuousConvexCollision* nocapture %this, %struct.btConvexShape* %convexA, %struct.btConvexShape* %convexB, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %penetrationDepthSolver) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV27btContinuousConvexCollision, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %1, align 4
+ %2 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %penetrationDepthSolver, %struct.btActionInterface** %2, align 4
+ %3 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConvexShape* %convexA, %struct.btConvexShape** %3, align 4
+ %4 = getelementptr inbounds %struct.btContinuousConvexCollision* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btConvexShape* %convexB, %struct.btConvexShape** %4, align 4
+ ret void
+}
+
+; [#uses=9]
+define linkonce_odr void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(%struct.btTransform* %curTrans, %struct.btQuadWord* nocapture %linvel, %struct.btQuadWord* nocapture %angvel, float %timeStep, %struct.btTransform* nocapture %predictedTransform) nounwind {
+entry:
+ %orn0 = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btQuadWord* %linvel, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = fmul float %1, %timeStep ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %linvel, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = fmul float %4, %timeStep ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %linvel, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = fmul float %7, %timeStep ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %curTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fadd float %10, %2 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %curTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fadd float %13, %5 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %curTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fadd float %16, %8 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %17, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %14, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %11, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %angvel, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=3]
+ %24 = fmul float %23, %23 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %angvel, i32 0, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=3]
+ %27 = fmul float %26, %26 ; [#uses=1]
+ %28 = fadd float %24, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuadWord* %angvel, i32 0, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=3]
+ %31 = fmul float %30, %30 ; [#uses=1]
+ %32 = fadd float %28, %31 ; [#uses=1]
+ %33 = call float @sqrtf(float %32) nounwind readonly ; [#uses=2]
+ %34 = fmul float %33, %timeStep ; [#uses=1]
+ %35 = fcmp ogt float %34, 0x3FE921FB60000000 ; [#uses=1]
+ br i1 %35, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %36 = fdiv float 0x3FE921FB60000000, %timeStep ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %fAngle.0 = phi float [ %36, %bb ], [ %33, %entry ] ; [#uses=6]
+ %37 = fcmp olt float %fAngle.0, 0x3F50624DE0000000 ; [#uses=1]
+ br i1 %37, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ %38 = fmul float %timeStep, 5.000000e-01 ; [#uses=1]
+ %39 = fmul float %timeStep, %timeStep ; [#uses=1]
+ %40 = fmul float %39, %timeStep ; [#uses=1]
+ %41 = fmul float %40, 0xBF95555560000000 ; [#uses=1]
+ %42 = fmul float %41, %fAngle.0 ; [#uses=1]
+ %43 = fmul float %42, %fAngle.0 ; [#uses=1]
+ %44 = fadd float %38, %43 ; [#uses=1]
+ br label %bb5
+
+bb3: ; preds = %bb1
+ %45 = fmul float %fAngle.0, 5.000000e-01 ; [#uses=1]
+ %46 = fmul float %45, %timeStep ; [#uses=1]
+ %47 = call float @sinf(float %46) nounwind readonly ; [#uses=1]
+ %48 = fdiv float %47, %fAngle.0 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb3, %bb2
+ %.pn = phi float [ %44, %bb2 ], [ %48, %bb3 ] ; [#uses=3]
+ %axis.0.2.0 = fmul float %30, %.pn ; [#uses=4]
+ %axis.0.1.0 = fmul float %26, %.pn ; [#uses=4]
+ %axis.0.0.0 = fmul float %23, %.pn ; [#uses=4]
+ %49 = fmul float %fAngle.0, %timeStep ; [#uses=1]
+ %50 = fmul float %49, 5.000000e-01 ; [#uses=1]
+ %51 = call float @cosf(float %50) nounwind readonly ; [#uses=4]
+ %52 = getelementptr inbounds %struct.btTransform* %curTrans, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %52, %struct.btQuaternion* %orn0) nounwind
+ %53 = getelementptr inbounds %struct.btQuaternion* %orn0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=4]
+ %55 = fmul float %51, %54 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btQuaternion* %orn0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %57 = load float* %56, align 8 ; [#uses=4]
+ %58 = fmul float %axis.0.0.0, %57 ; [#uses=1]
+ %59 = fsub float %55, %58 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btQuaternion* %orn0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=4]
+ %62 = fmul float %axis.0.1.0, %61 ; [#uses=1]
+ %63 = fsub float %59, %62 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btQuaternion* %orn0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %65 = load float* %64, align 8 ; [#uses=4]
+ %66 = fmul float %axis.0.2.0, %65 ; [#uses=1]
+ %67 = fsub float %63, %66 ; [#uses=3]
+ %68 = fmul float %51, %65 ; [#uses=1]
+ %69 = fmul float %axis.0.2.0, %54 ; [#uses=1]
+ %70 = fadd float %68, %69 ; [#uses=1]
+ %71 = fmul float %axis.0.0.0, %61 ; [#uses=1]
+ %72 = fadd float %70, %71 ; [#uses=1]
+ %73 = fmul float %axis.0.1.0, %57 ; [#uses=1]
+ %74 = fsub float %72, %73 ; [#uses=3]
+ %75 = fmul float %51, %61 ; [#uses=1]
+ %76 = fmul float %axis.0.1.0, %54 ; [#uses=1]
+ %77 = fadd float %75, %76 ; [#uses=1]
+ %78 = fmul float %axis.0.2.0, %57 ; [#uses=1]
+ %79 = fadd float %77, %78 ; [#uses=1]
+ %80 = fmul float %axis.0.0.0, %65 ; [#uses=1]
+ %81 = fsub float %79, %80 ; [#uses=3]
+ %82 = fmul float %51, %57 ; [#uses=1]
+ %83 = fmul float %axis.0.0.0, %54 ; [#uses=1]
+ %84 = fadd float %82, %83 ; [#uses=1]
+ %85 = fmul float %axis.0.1.0, %65 ; [#uses=1]
+ %86 = fadd float %84, %85 ; [#uses=1]
+ %87 = fmul float %axis.0.2.0, %61 ; [#uses=1]
+ %88 = fsub float %86, %87 ; [#uses=3]
+ %89 = fmul float %88, %88 ; [#uses=1]
+ %90 = fmul float %81, %81 ; [#uses=1]
+ %91 = fadd float %89, %90 ; [#uses=1]
+ %92 = fmul float %74, %74 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = fmul float %67, %67 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = call float @sqrtf(float %95) nounwind readonly ; [#uses=1]
+ %97 = fdiv float 1.000000e+00, %96 ; [#uses=4]
+ %98 = fmul float %88, %97 ; [#uses=6]
+ %99 = fmul float %81, %97 ; [#uses=5]
+ %100 = fmul float %74, %97 ; [#uses=4]
+ %101 = fmul float %67, %97 ; [#uses=5]
+ %102 = fmul float %98, %98 ; [#uses=1]
+ %103 = fmul float %99, %99 ; [#uses=1]
+ %104 = fadd float %102, %103 ; [#uses=1]
+ %105 = fmul float %100, %100 ; [#uses=1]
+ %106 = fadd float %104, %105 ; [#uses=1]
+ %107 = fmul float %101, %101 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fdiv float 2.000000e+00, %108 ; [#uses=3]
+ %110 = fmul float %98, %109 ; [#uses=2]
+ %111 = fmul float %99, %109 ; [#uses=3]
+ %112 = fmul float %100, %109 ; [#uses=4]
+ %113 = fmul float %101, %110 ; [#uses=2]
+ %114 = fmul float %101, %111 ; [#uses=2]
+ %115 = fmul float %101, %112 ; [#uses=2]
+ %116 = fmul float %98, %110 ; [#uses=2]
+ %117 = fmul float %98, %111 ; [#uses=2]
+ %118 = fmul float %98, %112 ; [#uses=2]
+ %119 = fmul float %99, %111 ; [#uses=2]
+ %120 = fmul float %99, %112 ; [#uses=2]
+ %121 = fmul float %100, %112 ; [#uses=2]
+ %122 = fadd float %116, %119 ; [#uses=1]
+ %123 = fsub float 1.000000e+00, %122 ; [#uses=1]
+ %124 = fadd float %120, %113 ; [#uses=1]
+ %125 = fsub float %118, %114 ; [#uses=1]
+ %126 = fsub float %120, %113 ; [#uses=1]
+ %127 = fadd float %116, %121 ; [#uses=1]
+ %128 = fsub float 1.000000e+00, %127 ; [#uses=1]
+ %129 = fadd float %117, %115 ; [#uses=1]
+ %130 = fadd float %118, %114 ; [#uses=1]
+ %131 = fsub float %117, %115 ; [#uses=1]
+ %132 = fadd float %119, %121 ; [#uses=1]
+ %133 = fsub float 1.000000e+00, %132 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %133, float* %134, align 4
+ %135 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %131, float* %135, align 4
+ %136 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %130, float* %136, align 4
+ %137 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %137, align 4
+ %138 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %129, float* %138, align 4
+ %139 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %128, float* %139, align 4
+ %140 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %126, float* %140, align 4
+ %141 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %141, align 4
+ %142 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %125, float* %142, align 4
+ %143 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %124, float* %143, align 4
+ %144 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %123, float* %144, align 4
+ %145 = getelementptr inbounds %struct.btTransform* %predictedTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %145, align 4
+ ret void
+}
+
+; [#uses=22]
+define void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV12btConvexCast, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN12btConvexCastD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV12btConvexCast, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN12btConvexCastD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV12btConvexCast, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN15btGjkConvexCastC2EPK13btConvexShapeS2_P22btVoronoiSimplexSolver(%struct.btGjkConvexCast* nocapture %this, %struct.btConvexShape* %convexA, %struct.btConvexShape* %convexB, %struct.btVoronoiSimplexSolver* %simplexSolver) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV15btGjkConvexCast, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %1, align 4
+ %2 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btConvexShape* %convexA, %struct.btConvexShape** %2, align 4
+ %3 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConvexShape* %convexB, %struct.btConvexShape** %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btGjkConvexCastD1Ev(%struct.btGjkConvexCast* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV15btGjkConvexCast, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btGjkConvexCastD0Ev(%struct.btGjkConvexCast* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV15btGjkConvexCast, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct.btGjkConvexCast* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=5]
+define zeroext i8 @_ZN15btGjkConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(%struct.btGjkConvexCast* nocapture %this, %struct.btTransform* nocapture %fromA, %struct.btTransform* nocapture %toA, %struct.btTransform* nocapture %fromB, %struct.btTransform* nocapture %toB, %"struct.btConvexCast::CastResult"* %result) align 2 {
+entry:
+ %pointCollector = alloca %struct..0btIntermediateResult, align 8 ; [#uses=12]
+ %gjk = alloca %struct.btGjkPairDetector, align 8 ; [#uses=3]
+ %input = alloca %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput", align 8 ; [#uses=36]
+ %0 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 1 ; [#uses=2]
+ %1 = load %struct.btVoronoiSimplexSolver** %0, align 4 ; [#uses=1]
+ call void @_ZN22btVoronoiSimplexSolver5resetEv(%struct.btVoronoiSimplexSolver* %1)
+ %2 = getelementptr inbounds %struct.btTransform* %toA, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fsub float %3, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %toA, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fsub float %8, %10 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %toA, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fsub float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %toB, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fsub float %18, %20 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTransform* %toB, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fsub float %23, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %toB, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fsub float %28, %30 ; [#uses=1]
+ %32 = fsub float %6, %21 ; [#uses=2]
+ %33 = fsub float %11, %26 ; [#uses=2]
+ %34 = fsub float %16, %31 ; [#uses=2]
+ %35 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %35, align 8
+ %36 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 3 ; [#uses=3]
+ store float 0x43ABC16D60000000, float* %36, align 4
+ %37 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 4 ; [#uses=3]
+ store i8 0, i8* %37, align 8
+ %38 = load %struct.btVoronoiSimplexSolver** %0, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 3 ; [#uses=1]
+ %40 = load %struct.btConvexShape** %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 2 ; [#uses=1]
+ %42 = load %struct.btConvexShape** %41, align 4 ; [#uses=1]
+ invoke void @_ZN17btGjkPairDetectorC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btGjkPairDetector* %gjk, %struct.btConvexShape* %42, %struct.btConvexShape* %40, %struct.btVoronoiSimplexSolver* %38, %struct.btActionInterface* null)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %43 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 2 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %43, align 8
+ %44 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 3 ; [#uses=1]
+ store %struct.btStackAlloc* null, %struct.btStackAlloc** %44, align 4
+ %45 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ store float %47, float* %45, align 8
+ %48 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ store float %50, float* %48, align 4
+ %51 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ store float %53, float* %51, align 8
+ %54 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ store float %56, float* %54, align 4
+ %57 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ store float %59, float* %57, align 8
+ %60 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ store float %62, float* %60, align 4
+ %63 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ store float %65, float* %63, align 8
+ %66 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ store float %68, float* %66, align 4
+ %69 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ store float %71, float* %69, align 8
+ %72 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ store float %74, float* %72, align 4
+ %75 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ store float %77, float* %75, align 8
+ %78 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ store float %80, float* %78, align 4
+ %81 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %82 = load float* %14, align 4 ; [#uses=1]
+ store float %82, float* %81, align 8
+ %83 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %84 = load float* %9, align 4 ; [#uses=1]
+ store float %84, float* %83, align 4
+ %85 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %86 = load float* %4, align 4 ; [#uses=1]
+ store float %86, float* %85, align 8
+ %87 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ store float %89, float* %87, align 4
+ %90 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=1]
+ store float %92, float* %90, align 8
+ %93 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ store float %95, float* %93, align 4
+ %96 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ store float %98, float* %96, align 8
+ %99 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ store float %101, float* %99, align 4
+ %102 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %104 = load float* %103, align 4 ; [#uses=1]
+ store float %104, float* %102, align 8
+ %105 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %107 = load float* %106, align 4 ; [#uses=1]
+ store float %107, float* %105, align 4
+ %108 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %110 = load float* %109, align 4 ; [#uses=1]
+ store float %110, float* %108, align 8
+ %111 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %112 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %113 = load float* %112, align 4 ; [#uses=1]
+ store float %113, float* %111, align 4
+ %114 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %116 = load float* %115, align 4 ; [#uses=1]
+ store float %116, float* %114, align 8
+ %117 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %119 = load float* %118, align 4 ; [#uses=1]
+ store float %119, float* %117, align 4
+ %120 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %121 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %122 = load float* %121, align 4 ; [#uses=1]
+ store float %122, float* %120, align 8
+ %123 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %124 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %125 = load float* %124, align 4 ; [#uses=1]
+ store float %125, float* %123, align 4
+ %126 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=2]
+ %127 = load float* %29, align 4 ; [#uses=1]
+ store float %127, float* %126, align 8
+ %128 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=2]
+ %129 = load float* %24, align 4 ; [#uses=1]
+ store float %129, float* %128, align 4
+ %130 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=2]
+ %131 = load float* %19, align 4 ; [#uses=1]
+ store float %131, float* %130, align 8
+ %132 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %133 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %134 = load float* %133, align 4 ; [#uses=1]
+ store float %134, float* %132, align 4
+ %135 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 0 ; [#uses=2]
+ invoke void @_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.btGjkPairDetector* %gjk, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, %struct.btActionInterface* %135, %struct.btActionInterface* null, i8 zeroext 0)
+ to label %invcont2 unwind label %lpad
+
+invcont2: ; preds = %invcont
+ %136 = load i8* %37, align 8 ; [#uses=1]
+ %toBool = icmp eq i8 %136, 0 ; [#uses=1]
+ br i1 %toBool, label %bb31, label %bb
+
+bb: ; preds = %invcont2
+ %137 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 2, i32 0, i32 3 ; [#uses=3]
+ %138 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %139 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %140 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %141 = load float* %137, align 4 ; [#uses=1]
+ %142 = load float* %138, align 4 ; [#uses=1]
+ %143 = load float* %139, align 4 ; [#uses=1]
+ %144 = load float* %140, align 4 ; [#uses=1]
+ %145 = load float* %36, align 4 ; [#uses=1]
+ %146 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %147 = load float* %146, align 4 ; [#uses=1]
+ %148 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %149 = load float* %148, align 4 ; [#uses=1]
+ %150 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %151 = load float* %150, align 4 ; [#uses=1]
+ %152 = getelementptr inbounds %struct..0btIntermediateResult* %pointCollector, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %153 = load float* %152, align 4 ; [#uses=1]
+ %154 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 0 ; [#uses=1]
+ br label %bb22
+
+bb4: ; preds = %bb22
+ %155 = icmp sgt i32 %indvar, 32 ; [#uses=1]
+ br i1 %155, label %bb31, label %bb8
+
+bb8: ; preds = %bb4
+ %156 = fmul float %34, %n.0.0.0 ; [#uses=1]
+ %157 = fmul float %33, %n.0.1.0 ; [#uses=1]
+ %158 = fadd float %156, %157 ; [#uses=1]
+ %159 = fmul float %32, %n.0.2.0 ; [#uses=1]
+ %160 = fadd float %158, %159 ; [#uses=1]
+ %161 = fdiv float %dist.0, %160 ; [#uses=1]
+ %162 = fsub float %lambda.0, %161 ; [#uses=13]
+ %notlhs = fcmp ule float %162, 1.000000e+00 ; [#uses=1]
+ %notrhs = fcmp uge float %162, 0.000000e+00 ; [#uses=1]
+ %or.cond.not = and i1 %notrhs, %notlhs ; [#uses=1]
+ %163 = fcmp ugt float %162, %lambda.0 ; [#uses=1]
+ %or.cond37 = and i1 %or.cond.not, %163 ; [#uses=1]
+ br i1 %or.cond37, label %bb14, label %bb31
+
+bb14: ; preds = %bb8
+ %164 = load i32 (...)*** %154, align 4 ; [#uses=1]
+ %165 = load i32 (...)** %164, align 4 ; [#uses=1]
+ %166 = bitcast i32 (...)* %165 to void (%"struct.btConvexCast::CastResult"*, float)* ; [#uses=1]
+ invoke void %166(%"struct.btConvexCast::CastResult"* %result, float %162)
+ to label %invcont15 unwind label %lpad
+
+invcont15: ; preds = %bb14
+ %167 = fsub float 1.000000e+00, %162 ; [#uses=6]
+ %168 = load float* %14, align 4 ; [#uses=1]
+ %169 = fmul float %168, %167 ; [#uses=1]
+ %170 = load float* %12, align 4 ; [#uses=1]
+ %171 = fmul float %170, %162 ; [#uses=1]
+ %172 = fadd float %169, %171 ; [#uses=1]
+ store float %172, float* %81, align 8
+ %173 = load float* %9, align 4 ; [#uses=1]
+ %174 = fmul float %173, %167 ; [#uses=1]
+ %175 = load float* %7, align 4 ; [#uses=1]
+ %176 = fmul float %175, %162 ; [#uses=1]
+ %177 = fadd float %174, %176 ; [#uses=1]
+ store float %177, float* %83, align 4
+ %178 = load float* %4, align 4 ; [#uses=1]
+ %179 = fmul float %178, %167 ; [#uses=1]
+ %180 = load float* %2, align 4 ; [#uses=1]
+ %181 = fmul float %180, %162 ; [#uses=1]
+ %182 = fadd float %179, %181 ; [#uses=1]
+ store float %182, float* %85, align 8
+ %183 = load float* %29, align 4 ; [#uses=1]
+ %184 = fmul float %183, %167 ; [#uses=1]
+ %185 = load float* %27, align 4 ; [#uses=1]
+ %186 = fmul float %185, %162 ; [#uses=1]
+ %187 = fadd float %184, %186 ; [#uses=1]
+ store float %187, float* %126, align 8
+ %188 = load float* %24, align 4 ; [#uses=1]
+ %189 = fmul float %188, %167 ; [#uses=1]
+ %190 = load float* %22, align 4 ; [#uses=1]
+ %191 = fmul float %190, %162 ; [#uses=1]
+ %192 = fadd float %189, %191 ; [#uses=1]
+ store float %192, float* %128, align 4
+ %193 = load float* %19, align 4 ; [#uses=1]
+ %194 = fmul float %193, %167 ; [#uses=1]
+ %195 = load float* %17, align 4 ; [#uses=1]
+ %196 = fmul float %195, %162 ; [#uses=1]
+ %197 = fadd float %194, %196 ; [#uses=1]
+ store float %197, float* %130, align 8
+ invoke void @_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.btGjkPairDetector* %gjk, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, %struct.btActionInterface* %135, %struct.btActionInterface* null, i8 zeroext 0)
+ to label %invcont16 unwind label %lpad
+
+invcont16: ; preds = %invcont15
+ %198 = load i8* %37, align 8 ; [#uses=1]
+ %toBool17 = icmp eq i8 %198, 0 ; [#uses=1]
+ br i1 %toBool17, label %bb31, label %bb18
+
+bb18: ; preds = %invcont16
+ %199 = load float* %36, align 4 ; [#uses=2]
+ %200 = fcmp olt float %199, 0.000000e+00 ; [#uses=1]
+ br i1 %200, label %bb19, label %bb20
+
+bb19: ; preds = %bb18
+ %201 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 5 ; [#uses=1]
+ store float %162, float* %201, align 4
+ %202 = load float* %146, align 4 ; [#uses=1]
+ %203 = load float* %148, align 4 ; [#uses=1]
+ %204 = load float* %150, align 4 ; [#uses=1]
+ %205 = load float* %152, align 4 ; [#uses=1]
+ %206 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %202, float* %206, align 4
+ %207 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %203, float* %207, align 4
+ %208 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %204, float* %208, align 4
+ %209 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float %205, float* %209, align 4
+ %210 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %211 = load float* %140, align 4 ; [#uses=1]
+ store float %211, float* %210, align 4
+ %212 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %213 = load float* %139, align 4 ; [#uses=1]
+ store float %213, float* %212, align 4
+ %214 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %215 = load float* %138, align 4 ; [#uses=1]
+ store float %215, float* %214, align 4
+ %216 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %217 = load float* %137, align 4 ; [#uses=1]
+ store float %217, float* %216, align 4
+ ret i8 1
+
+bb20: ; preds = %bb18
+ %218 = load float* %140, align 4 ; [#uses=1]
+ %219 = load float* %139, align 4 ; [#uses=1]
+ %220 = load float* %138, align 4 ; [#uses=1]
+ %221 = load float* %137, align 4 ; [#uses=1]
+ %222 = load float* %146, align 4 ; [#uses=1]
+ %223 = load float* %148, align 4 ; [#uses=1]
+ %224 = load float* %150, align 4 ; [#uses=1]
+ %225 = load float* %152, align 4 ; [#uses=1]
+ %phitmp = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb22
+
+bb22: ; preds = %bb20, %bb
+ %indvar = phi i32 [ %phitmp, %bb20 ], [ 1, %bb ] ; [#uses=2]
+ %n.0.0.0 = phi float [ %222, %bb20 ], [ %147, %bb ] ; [#uses=3]
+ %n.0.1.0 = phi float [ %223, %bb20 ], [ %149, %bb ] ; [#uses=3]
+ %n.0.2.0 = phi float [ %224, %bb20 ], [ %151, %bb ] ; [#uses=3]
+ %n.0.3.0 = phi float [ %225, %bb20 ], [ %153, %bb ] ; [#uses=1]
+ %c.0.0.0 = phi float [ %218, %bb20 ], [ %144, %bb ] ; [#uses=1]
+ %c.0.1.0 = phi float [ %219, %bb20 ], [ %143, %bb ] ; [#uses=1]
+ %c.0.2.0 = phi float [ %220, %bb20 ], [ %142, %bb ] ; [#uses=1]
+ %c.0.3.0 = phi float [ %221, %bb20 ], [ %141, %bb ] ; [#uses=1]
+ %lambda.0 = phi float [ %162, %bb20 ], [ 0.000000e+00, %bb ] ; [#uses=3]
+ %dist.0 = phi float [ %199, %bb20 ], [ %145, %bb ] ; [#uses=2]
+ %226 = fcmp ogt float %dist.0, 0x3F50624DE0000000 ; [#uses=1]
+ br i1 %226, label %bb4, label %bb23
+
+bb23: ; preds = %bb22
+ %227 = fmul float %n.0.0.0, %34 ; [#uses=1]
+ %228 = fmul float %n.0.1.0, %33 ; [#uses=1]
+ %229 = fadd float %227, %228 ; [#uses=1]
+ %230 = fmul float %n.0.2.0, %32 ; [#uses=1]
+ %231 = fadd float %229, %230 ; [#uses=1]
+ %232 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 7 ; [#uses=1]
+ %233 = load float* %232, align 4 ; [#uses=1]
+ %234 = fsub float -0.000000e+00, %233 ; [#uses=1]
+ %235 = fcmp ult float %231, %234 ; [#uses=1]
+ br i1 %235, label %bb26, label %bb31
+
+bb26: ; preds = %bb23
+ %236 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 5 ; [#uses=1]
+ store float %lambda.0, float* %236, align 4
+ %237 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %n.0.0.0, float* %237, align 4
+ %238 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %n.0.1.0, float* %238, align 4
+ %239 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %n.0.2.0, float* %239, align 4
+ %240 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float %n.0.3.0, float* %240, align 4
+ %241 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %c.0.0.0, float* %241, align 4
+ %242 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %c.0.1.0, float* %242, align 4
+ %243 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %c.0.2.0, float* %243, align 4
+ %244 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float %c.0.3.0, float* %244, align 4
+ ret i8 1
+
+bb31: ; preds = %bb23, %invcont16, %bb8, %bb4, %invcont2
+ ret i8 0
+
+lpad: ; preds = %invcont15, %bb14, %invcont, %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select35 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %35, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=4]
+define void @_ZN15btGjkConvexCastC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolver(%struct.btGjkConvexCast* nocapture %this, %struct.btConvexShape* %convexA, %struct.btConvexShape* %convexB, %struct.btVoronoiSimplexSolver* %simplexSolver) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV15btGjkConvexCast, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %1, align 4
+ %2 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btConvexShape* %convexA, %struct.btConvexShape** %2, align 4
+ %3 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConvexShape* %convexB, %struct.btConvexShape** %3, align 4
+ ret void
+}
+
+; [#uses=0]
+define i32 @_ZN15btGjkEpaSolver220StackSizeRequirementEv() nounwind readnone align 2 {
+entry:
+ ret i32 10188
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %"struct.gjkepa2_impl::MinkowskiDiff"* nocapture %this, %struct.btQuadWord* nocapture %d) inlinehint align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %2 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ %3 = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %2, align 4 ; [#uses=2]
+ %4 = ptrtoint void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* %3 to i32 ; [#uses=2]
+ %5 = and i32 %4, 1 ; [#uses=1]
+ %toBool = icmp eq i32 %5, 0 ; [#uses=1]
+ %.phi.trans.insert = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre = load %struct.btConvexShape** %.phi.trans.insert, align 4 ; [#uses=4]
+ %.phi.trans.insert4 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ %.pre5 = load i32* %.phi.trans.insert4, align 4 ; [#uses=4]
+ br i1 %toBool, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %6 = ptrtoint %struct.btConvexShape* %.pre to i32 ; [#uses=1]
+ %7 = add i32 %6, %.pre5 ; [#uses=1]
+ %8 = inttoptr i32 %7 to %struct.btConvexShape* ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btConvexShape* %8, i32 0, i32 0, i32 0 ; [#uses=1]
+ %10 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %11 = ptrtoint i32 (...)** %10 to i32 ; [#uses=1]
+ %12 = add nsw i32 %11, -1 ; [#uses=1]
+ %13 = add i32 %12, %4 ; [#uses=1]
+ %14 = inttoptr i32 %13 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** ; [#uses=1]
+ %iftmp.135.0.pre = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %14, align 4 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb, %entry
+ %15 = phi i32 [ %.pre5, %bb ], [ %.pre5, %entry ] ; [#uses=0]
+ %16 = phi %struct.btConvexShape* [ %.pre, %bb ], [ %.pre, %entry ] ; [#uses=0]
+ %iftmp.135.0 = phi void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* [ %iftmp.135.0.pre, %bb ], [ %3, %entry ] ; [#uses=1]
+ %17 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ %21 = fmul float %18, %20 ; [#uses=1]
+ %22 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=3]
+ %26 = fmul float %23, %25 ; [#uses=1]
+ %27 = fadd float %21, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=3]
+ %32 = fmul float %29, %31 ; [#uses=1]
+ %33 = fadd float %27, %32 ; [#uses=1]
+ %34 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fmul float %35, %20 ; [#uses=1]
+ %37 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fmul float %38, %25 ; [#uses=1]
+ %40 = fadd float %36, %39 ; [#uses=1]
+ %41 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = fmul float %42, %31 ; [#uses=1]
+ %44 = fadd float %40, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fmul float %46, %20 ; [#uses=1]
+ %48 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fmul float %49, %25 ; [#uses=1]
+ %51 = fadd float %47, %50 ; [#uses=1]
+ %52 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ %54 = fmul float %53, %31 ; [#uses=1]
+ %55 = fadd float %51, %54 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %55, float* %56, align 8
+ %57 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %44, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %33, float* %58, align 8
+ %59 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %59, align 4
+ %60 = ptrtoint %struct.btConvexShape* %.pre to i32 ; [#uses=1]
+ %61 = add i32 %60, %.pre5 ; [#uses=1]
+ %62 = inttoptr i32 %61 to %struct.btConvexShape* ; [#uses=1]
+ call void %iftmp.135.0(%struct.btQuadWord* noalias sret %1, %struct.btConvexShape* %62, %struct.btQuadWord* %0)
+ %63 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %65, align 8 ; [#uses=3]
+ %67 = fmul float %64, %66 ; [#uses=1]
+ %68 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=3]
+ %72 = fmul float %69, %71 ; [#uses=1]
+ %73 = fadd float %67, %72 ; [#uses=1]
+ %74 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %77 = load float* %76, align 8 ; [#uses=3]
+ %78 = fmul float %75, %77 ; [#uses=1]
+ %79 = fadd float %73, %78 ; [#uses=1]
+ %80 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ %82 = fadd float %79, %81 ; [#uses=1]
+ %83 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ %85 = fmul float %84, %66 ; [#uses=1]
+ %86 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ %88 = fmul float %87, %71 ; [#uses=1]
+ %89 = fadd float %85, %88 ; [#uses=1]
+ %90 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = fmul float %91, %77 ; [#uses=1]
+ %93 = fadd float %89, %92 ; [#uses=1]
+ %94 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ %96 = fadd float %93, %95 ; [#uses=1]
+ %97 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ %99 = fmul float %98, %66 ; [#uses=1]
+ %100 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ %102 = fmul float %101, %71 ; [#uses=1]
+ %103 = fadd float %99, %102 ; [#uses=1]
+ %104 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ %106 = fmul float %105, %77 ; [#uses=1]
+ %107 = fadd float %103, %106 ; [#uses=1]
+ %108 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ %110 = fadd float %107, %109 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %110, float* %111, align 4
+ %112 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %96, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %82, float* %113, align 4
+ %114 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %114, align 4
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr float @_ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_PfRj(%struct.btQuadWord* nocapture %a, %struct.btQuadWord* nocapture %b, float* nocapture %w, i32* nocapture %m) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 2 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 2 ; [#uses=3]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fsub float %1, %3 ; [#uses=4]
+ %5 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 1 ; [#uses=2]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 1 ; [#uses=3]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fsub float %6, %8 ; [#uses=4]
+ %10 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 0 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 0 ; [#uses=3]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fsub float %11, %13 ; [#uses=4]
+ %15 = fmul float %14, %14 ; [#uses=1]
+ %16 = fmul float %9, %9 ; [#uses=1]
+ %17 = fadd float %15, %16 ; [#uses=1]
+ %18 = fmul float %4, %4 ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=2]
+ %20 = fcmp ogt float %19, 0.000000e+00 ; [#uses=1]
+ br i1 %20, label %bb3, label %bb9
+
+bb3: ; preds = %entry
+ %21 = fmul float %13, %14 ; [#uses=1]
+ %22 = fmul float %8, %9 ; [#uses=1]
+ %23 = fadd float %21, %22 ; [#uses=1]
+ %24 = fmul float %3, %4 ; [#uses=1]
+ %25 = fadd float %23, %24 ; [#uses=1]
+ %26 = fsub float -0.000000e+00, %25 ; [#uses=1]
+ %27 = fdiv float %26, %19 ; [#uses=7]
+ %28 = fcmp ult float %27, 1.000000e+00 ; [#uses=1]
+ br i1 %28, label %bb5, label %bb4
+
+bb4: ; preds = %bb3
+ store float 0.000000e+00, float* %w, align 4
+ %29 = getelementptr inbounds float* %w, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %29, align 4
+ store i32 2, i32* %m, align 4
+ %30 = load float* %10, align 4 ; [#uses=2]
+ %31 = fmul float %30, %30 ; [#uses=1]
+ %32 = load float* %5, align 4 ; [#uses=2]
+ %33 = fmul float %32, %32 ; [#uses=1]
+ %34 = fadd float %31, %33 ; [#uses=1]
+ %35 = load float* %0, align 4 ; [#uses=2]
+ %36 = fmul float %35, %35 ; [#uses=1]
+ %37 = fadd float %34, %36 ; [#uses=1]
+ ret float %37
+
+bb5: ; preds = %bb3
+ %38 = fcmp ugt float %27, 0.000000e+00 ; [#uses=1]
+ br i1 %38, label %bb7, label %bb6
+
+bb6: ; preds = %bb5
+ store float 1.000000e+00, float* %w, align 4
+ %39 = getelementptr inbounds float* %w, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %39, align 4
+ store i32 1, i32* %m, align 4
+ %40 = load float* %12, align 4 ; [#uses=2]
+ %41 = fmul float %40, %40 ; [#uses=1]
+ %42 = load float* %7, align 4 ; [#uses=2]
+ %43 = fmul float %42, %42 ; [#uses=1]
+ %44 = fadd float %41, %43 ; [#uses=1]
+ %45 = load float* %2, align 4 ; [#uses=2]
+ %46 = fmul float %45, %45 ; [#uses=1]
+ %47 = fadd float %44, %46 ; [#uses=1]
+ ret float %47
+
+bb7: ; preds = %bb5
+ %48 = getelementptr inbounds float* %w, i32 1 ; [#uses=1]
+ store float %27, float* %48, align 4
+ %49 = fsub float 1.000000e+00, %27 ; [#uses=1]
+ store float %49, float* %w, align 4
+ store i32 3, i32* %m, align 4
+ %50 = fmul float %4, %27 ; [#uses=1]
+ %51 = fmul float %9, %27 ; [#uses=1]
+ %52 = fmul float %14, %27 ; [#uses=1]
+ %53 = load float* %2, align 4 ; [#uses=1]
+ %54 = fadd float %53, %50 ; [#uses=2]
+ %55 = load float* %7, align 4 ; [#uses=1]
+ %56 = fadd float %55, %51 ; [#uses=2]
+ %57 = load float* %12, align 4 ; [#uses=1]
+ %58 = fadd float %57, %52 ; [#uses=2]
+ %59 = fmul float %58, %58 ; [#uses=1]
+ %60 = fmul float %56, %56 ; [#uses=1]
+ %61 = fadd float %59, %60 ; [#uses=1]
+ %62 = fmul float %54, %54 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=1]
+ ret float %63
+
+bb9: ; preds = %entry
+ ret float -1.000000e+00
+}
+
+; [#uses=3]
+define internal fastcc void @_ZN12gjkepa2_implL10InitializeEPK13btConvexShapeRK11btTransformS2_S5_RN15btGjkEpaSolver28sResultsERNS_13MinkowskiDiffEb(%struct.btConvexShape* %shape0, %struct.btTransform* nocapture %wtrs0, %struct.btConvexShape* %shape1, %struct.btTransform* nocapture %wtrs1, %"struct.btGjkEpaSolver2::sResults"* nocapture %results, %"struct.gjkepa2_impl::MinkowskiDiff"* nocapture %shape, i8 zeroext %withmargins) nounwind {
+entry:
+ %0 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = bitcast %"struct.btGjkEpaSolver2::sResults"* %results to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %1, i8 0, i64 36, i32 4, i1 false)
+ store %struct.btConvexShape* %shape0, %struct.btConvexShape** %0, align 4
+ %2 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 0, i32 1 ; [#uses=1]
+ store %struct.btConvexShape* %shape1, %struct.btConvexShape** %2, align 4
+ %3 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %4 = load float* %3, align 4 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %6 = load float* %5, align 4 ; [#uses=3]
+ %7 = fmul float %4, %6 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %9 = load float* %8, align 4 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=3]
+ %12 = fmul float %9, %11 ; [#uses=1]
+ %13 = fadd float %7, %12 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %15 = load float* %14, align 4 ; [#uses=3]
+ %16 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %17 = load float* %16, align 4 ; [#uses=3]
+ %18 = fmul float %15, %17 ; [#uses=1]
+ %19 = fadd float %13, %18 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=3]
+ %22 = fmul float %4, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=3]
+ %25 = fmul float %9, %24 ; [#uses=1]
+ %26 = fadd float %22, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %28 = load float* %27, align 4 ; [#uses=3]
+ %29 = fmul float %15, %28 ; [#uses=1]
+ %30 = fadd float %26, %29 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %32 = load float* %31, align 4 ; [#uses=3]
+ %33 = fmul float %4, %32 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %35 = load float* %34, align 4 ; [#uses=3]
+ %36 = fmul float %9, %35 ; [#uses=1]
+ %37 = fadd float %33, %36 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %39 = load float* %38, align 4 ; [#uses=3]
+ %40 = fmul float %15, %39 ; [#uses=1]
+ %41 = fadd float %37, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %43 = load float* %42, align 4 ; [#uses=3]
+ %44 = fmul float %43, %6 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %46 = load float* %45, align 4 ; [#uses=3]
+ %47 = fmul float %46, %11 ; [#uses=1]
+ %48 = fadd float %44, %47 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %50 = load float* %49, align 4 ; [#uses=3]
+ %51 = fmul float %50, %17 ; [#uses=1]
+ %52 = fadd float %48, %51 ; [#uses=1]
+ %53 = fmul float %43, %21 ; [#uses=1]
+ %54 = fmul float %46, %24 ; [#uses=1]
+ %55 = fadd float %53, %54 ; [#uses=1]
+ %56 = fmul float %50, %28 ; [#uses=1]
+ %57 = fadd float %55, %56 ; [#uses=1]
+ %58 = fmul float %43, %32 ; [#uses=1]
+ %59 = fmul float %46, %35 ; [#uses=1]
+ %60 = fadd float %58, %59 ; [#uses=1]
+ %61 = fmul float %50, %39 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %64 = load float* %63, align 4 ; [#uses=3]
+ %65 = fmul float %64, %6 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %67 = load float* %66, align 4 ; [#uses=3]
+ %68 = fmul float %67, %11 ; [#uses=1]
+ %69 = fadd float %65, %68 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %71 = load float* %70, align 4 ; [#uses=3]
+ %72 = fmul float %71, %17 ; [#uses=1]
+ %73 = fadd float %69, %72 ; [#uses=1]
+ %74 = fmul float %64, %21 ; [#uses=1]
+ %75 = fmul float %67, %24 ; [#uses=1]
+ %76 = fadd float %74, %75 ; [#uses=1]
+ %77 = fmul float %71, %28 ; [#uses=1]
+ %78 = fadd float %76, %77 ; [#uses=1]
+ %79 = fmul float %64, %32 ; [#uses=1]
+ %80 = fmul float %67, %35 ; [#uses=1]
+ %81 = fadd float %79, %80 ; [#uses=1]
+ %82 = fmul float %71, %39 ; [#uses=1]
+ %83 = fadd float %81, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %83, float* %84, align 4
+ %85 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %78, float* %85, align 4
+ %86 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %73, float* %86, align 4
+ %87 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %87, align 4
+ %88 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %62, float* %88, align 4
+ %89 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %57, float* %89, align 4
+ %90 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %52, float* %90, align 4
+ %91 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %91, align 4
+ %92 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %41, float* %92, align 4
+ %93 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %30, float* %93, align 4
+ %94 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %19, float* %94, align 4
+ %95 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %95, align 4
+ %96 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ %100 = fsub float %97, %99 ; [#uses=3]
+ %101 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %104 = load float* %103, align 4 ; [#uses=1]
+ %105 = fsub float %102, %104 ; [#uses=3]
+ %106 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %107 = load float* %106, align 4 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ %110 = fsub float %107, %109 ; [#uses=3]
+ %111 = load float* %5, align 4 ; [#uses=4]
+ %112 = fmul float %111, %110 ; [#uses=1]
+ %113 = load float* %10, align 4 ; [#uses=4]
+ %114 = fmul float %113, %105 ; [#uses=1]
+ %115 = fadd float %112, %114 ; [#uses=1]
+ %116 = load float* %16, align 4 ; [#uses=4]
+ %117 = fmul float %116, %100 ; [#uses=1]
+ %118 = fadd float %115, %117 ; [#uses=1]
+ %119 = load float* %20, align 4 ; [#uses=4]
+ %120 = fmul float %119, %110 ; [#uses=1]
+ %121 = load float* %23, align 4 ; [#uses=4]
+ %122 = fmul float %121, %105 ; [#uses=1]
+ %123 = fadd float %120, %122 ; [#uses=1]
+ %124 = load float* %27, align 4 ; [#uses=4]
+ %125 = fmul float %124, %100 ; [#uses=1]
+ %126 = fadd float %123, %125 ; [#uses=1]
+ %127 = load float* %31, align 4 ; [#uses=4]
+ %128 = fmul float %127, %110 ; [#uses=1]
+ %129 = load float* %34, align 4 ; [#uses=4]
+ %130 = fmul float %129, %105 ; [#uses=1]
+ %131 = fadd float %128, %130 ; [#uses=1]
+ %132 = load float* %38, align 4 ; [#uses=4]
+ %133 = fmul float %132, %100 ; [#uses=1]
+ %134 = fadd float %131, %133 ; [#uses=1]
+ %135 = load float* %3, align 4 ; [#uses=3]
+ %136 = fmul float %111, %135 ; [#uses=1]
+ %137 = load float* %8, align 4 ; [#uses=3]
+ %138 = fmul float %113, %137 ; [#uses=1]
+ %139 = fadd float %136, %138 ; [#uses=1]
+ %140 = load float* %14, align 4 ; [#uses=3]
+ %141 = fmul float %116, %140 ; [#uses=1]
+ %142 = fadd float %139, %141 ; [#uses=1]
+ %143 = load float* %42, align 4 ; [#uses=3]
+ %144 = fmul float %111, %143 ; [#uses=1]
+ %145 = load float* %45, align 4 ; [#uses=3]
+ %146 = fmul float %113, %145 ; [#uses=1]
+ %147 = fadd float %144, %146 ; [#uses=1]
+ %148 = load float* %49, align 4 ; [#uses=3]
+ %149 = fmul float %116, %148 ; [#uses=1]
+ %150 = fadd float %147, %149 ; [#uses=1]
+ %151 = load float* %63, align 4 ; [#uses=3]
+ %152 = fmul float %111, %151 ; [#uses=1]
+ %153 = load float* %66, align 4 ; [#uses=3]
+ %154 = fmul float %113, %153 ; [#uses=1]
+ %155 = fadd float %152, %154 ; [#uses=1]
+ %156 = load float* %70, align 4 ; [#uses=3]
+ %157 = fmul float %116, %156 ; [#uses=1]
+ %158 = fadd float %155, %157 ; [#uses=1]
+ %159 = fmul float %119, %135 ; [#uses=1]
+ %160 = fmul float %121, %137 ; [#uses=1]
+ %161 = fadd float %159, %160 ; [#uses=1]
+ %162 = fmul float %124, %140 ; [#uses=1]
+ %163 = fadd float %161, %162 ; [#uses=1]
+ %164 = fmul float %119, %143 ; [#uses=1]
+ %165 = fmul float %121, %145 ; [#uses=1]
+ %166 = fadd float %164, %165 ; [#uses=1]
+ %167 = fmul float %124, %148 ; [#uses=1]
+ %168 = fadd float %166, %167 ; [#uses=1]
+ %169 = fmul float %119, %151 ; [#uses=1]
+ %170 = fmul float %121, %153 ; [#uses=1]
+ %171 = fadd float %169, %170 ; [#uses=1]
+ %172 = fmul float %124, %156 ; [#uses=1]
+ %173 = fadd float %171, %172 ; [#uses=1]
+ %174 = fmul float %127, %135 ; [#uses=1]
+ %175 = fmul float %129, %137 ; [#uses=1]
+ %176 = fadd float %174, %175 ; [#uses=1]
+ %177 = fmul float %132, %140 ; [#uses=1]
+ %178 = fadd float %176, %177 ; [#uses=1]
+ %179 = fmul float %127, %143 ; [#uses=1]
+ %180 = fmul float %129, %145 ; [#uses=1]
+ %181 = fadd float %179, %180 ; [#uses=1]
+ %182 = fmul float %132, %148 ; [#uses=1]
+ %183 = fadd float %181, %182 ; [#uses=1]
+ %184 = fmul float %127, %151 ; [#uses=1]
+ %185 = fmul float %129, %153 ; [#uses=1]
+ %186 = fadd float %184, %185 ; [#uses=1]
+ %187 = fmul float %132, %156 ; [#uses=1]
+ %188 = fadd float %186, %187 ; [#uses=1]
+ %189 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %188, float* %189, align 4
+ %190 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %183, float* %190, align 4
+ %191 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %178, float* %191, align 4
+ %192 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %192, align 4
+ %193 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %173, float* %193, align 4
+ %194 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %168, float* %194, align 4
+ %195 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %163, float* %195, align 4
+ %196 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %196, align 4
+ %197 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %158, float* %197, align 4
+ %198 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %150, float* %198, align 4
+ %199 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %142, float* %199, align 4
+ %200 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %200, align 4
+ %201 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %134, float* %201, align 4
+ %202 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %126, float* %202, align 4
+ %203 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %118, float* %203, align 4
+ %204 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %204, align 4
+ %toBool.i = icmp eq i8 %withmargins, 0 ; [#uses=1]
+ %205 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 3, i32 0 ; [#uses=2]
+ br i1 %toBool.i, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %entry
+ store void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* @_ZNK13btConvexShape31localGetSupportVertexNonVirtualERK9btVector3, void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %205, align 4
+ %206 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %206, align 4
+ ret void
+
+bb1.i: ; preds = %entry
+ store void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* @_ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3, void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %205, align 4
+ %207 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %207, align 4
+ ret void
+}
+
+; [#uses=9]
+define linkonce_odr void @_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(%"struct.gjkepa2_impl::GJK"* nocapture %this, %struct.btQuadWord* nocapture %d, %struct.GIM_AABB* %sv) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %3 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=3]
+ %5 = fmul float %4, %4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = fmul float %7, %7 ; [#uses=1]
+ %9 = fadd float %5, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=3]
+ %12 = fmul float %11, %11 ; [#uses=1]
+ %13 = fadd float %9, %12 ; [#uses=1]
+ %14 = call float @sqrtf(float %13) nounwind readonly ; [#uses=1]
+ %15 = fdiv float 1.000000e+00, %14 ; [#uses=3]
+ %16 = fmul float %11, %15 ; [#uses=2]
+ %17 = fmul float %7, %15 ; [#uses=2]
+ %18 = fmul float %4, %15 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.GIM_AABB* %sv, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %18, float* %19, align 4
+ %20 = getelementptr inbounds %struct.GIM_AABB* %sv, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %17, float* %20, align 4
+ %21 = getelementptr inbounds %struct.GIM_AABB* %sv, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %16, float* %21, align 4
+ %22 = getelementptr inbounds %struct.GIM_AABB* %sv, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.GIM_AABB* %sv, i32 0, i32 0 ; [#uses=1]
+ %24 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0 ; [#uses=1]
+ %25 = fsub float -0.000000e+00, %16 ; [#uses=1]
+ %26 = fsub float -0.000000e+00, %17 ; [#uses=1]
+ %27 = fsub float -0.000000e+00, %18 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %27, float* %28, align 8
+ %29 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %26, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %25, float* %30, align 8
+ %31 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ call void @_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3(%struct.btQuadWord* noalias sret %2, %"struct.gjkepa2_impl::MinkowskiDiff"* %24, %struct.btQuadWord* %1)
+ %32 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 3, i32 0 ; [#uses=1]
+ %33 = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %32, align 4 ; [#uses=2]
+ %34 = ptrtoint void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* %33 to i32 ; [#uses=2]
+ %35 = and i32 %34, 1 ; [#uses=1]
+ %toBool.i.i = icmp eq i32 %35, 0 ; [#uses=1]
+ %.phi.trans.insert.i.i = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre.i.i = load %struct.btConvexShape** %.phi.trans.insert.i.i, align 4 ; [#uses=2]
+ %.phi.trans.insert4.i.i = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 3, i32 1 ; [#uses=1]
+ %.pre5.i.i = load i32* %.phi.trans.insert4.i.i, align 4 ; [#uses=2]
+ br i1 %toBool.i.i, label %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3.exit, label %bb.i.i
+
+bb.i.i: ; preds = %entry
+ %36 = ptrtoint %struct.btConvexShape* %.pre.i.i to i32 ; [#uses=1]
+ %37 = add i32 %36, %.pre5.i.i ; [#uses=1]
+ %38 = inttoptr i32 %37 to %struct.btConvexShape* ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btConvexShape* %38, i32 0, i32 0, i32 0 ; [#uses=1]
+ %40 = load i32 (...)*** %39, align 4 ; [#uses=1]
+ %41 = ptrtoint i32 (...)** %40 to i32 ; [#uses=1]
+ %42 = add nsw i32 %34, -1 ; [#uses=1]
+ %43 = add i32 %42, %41 ; [#uses=1]
+ %44 = inttoptr i32 %43 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** ; [#uses=1]
+ %iftmp.134.0.pre.i.i = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %44, align 4 ; [#uses=1]
+ br label %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3.exit
+
+_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3.exit: ; preds = %bb.i.i, %entry
+ %iftmp.134.0.i.i = phi void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* [ %iftmp.134.0.pre.i.i, %bb.i.i ], [ %33, %entry ] ; [#uses=1]
+ %45 = ptrtoint %struct.btConvexShape* %.pre.i.i to i32 ; [#uses=1]
+ %46 = add i32 %45, %.pre5.i.i ; [#uses=1]
+ %47 = inttoptr i32 %46 to %struct.btConvexShape* ; [#uses=1]
+ call void %iftmp.134.0.i.i(%struct.btQuadWord* noalias sret %0, %struct.btConvexShape* %47, %struct.btQuadWord* %23)
+ %48 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 8 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 8 ; [#uses=1]
+ %52 = fsub float %49, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = fsub float %54, %56 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 8 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %61 = load float* %60, align 8 ; [#uses=1]
+ %62 = fsub float %59, %61 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.GIM_AABB* %sv, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %62, float* %63, align 4
+ %64 = getelementptr inbounds %struct.GIM_AABB* %sv, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %57, float* %64, align 4
+ %65 = getelementptr inbounds %struct.GIM_AABB* %sv, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %52, float* %65, align 4
+ %66 = getelementptr inbounds %struct.GIM_AABB* %sv, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %66, align 4
+ ret void
+}
+
+; [#uses=7]
+define linkonce_odr zeroext i8 @_ZN12gjkepa2_impl3GJK13EncloseOriginEv(%"struct.gjkepa2_impl::GJK"* %this) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %axis = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %axis11 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %p = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %n = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %3 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 8 ; [#uses=12]
+ %4 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %3, align 4 ; [#uses=13]
+ %5 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %4, i32 0, i32 2 ; [#uses=4]
+ %6 = load i32* %5, align 4 ; [#uses=2]
+ switch i32 %6, label %bb34 [
+ i32 1, label %bb7.preheader
+ i32 2, label %bb8
+ i32 3, label %bb22
+ i32 4, label %bb31
+ ]
+
+bb7.preheader: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 0 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 1 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 2 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 6 ; [#uses=8]
+ %12 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb7
+
+bb1: ; preds = %bb7
+ %scevgep68 = getelementptr %struct.btQuadWord* %axis, i32 0, i32 0, i32 %71 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 8
+ store float 0.000000e+00, float* %8, align 4
+ store float 0.000000e+00, float* %9, align 8
+ store float 0.000000e+00, float* %10, align 4
+ store float 1.000000e+00, float* %scevgep68, align 4
+ %16 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %3, align 4 ; [#uses=4]
+ %17 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %16, i32 0, i32 2 ; [#uses=4]
+ %18 = load i32* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %16, i32 0, i32 1, i32 %18 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ %20 = load i32* %17, align 4 ; [#uses=1]
+ %21 = load i32* %11, align 4 ; [#uses=1]
+ %22 = add i32 %21, -1 ; [#uses=2]
+ store i32 %22, i32* %11, align 4
+ %23 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %22 ; [#uses=1]
+ %24 = load %struct.GIM_AABB** %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %16, i32 0, i32 0, i32 %20 ; [#uses=1]
+ store %struct.GIM_AABB* %24, %struct.GIM_AABB** %25, align 4
+ %26 = load i32* %17, align 4 ; [#uses=2]
+ %27 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %16, i32 0, i32 0, i32 %26 ; [#uses=1]
+ %28 = load %struct.GIM_AABB** %27, align 4 ; [#uses=1]
+ %29 = add i32 %26, 1 ; [#uses=1]
+ store i32 %29, i32* %17, align 4
+ call void @_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(%"struct.gjkepa2_impl::GJK"* %this, %struct.btQuadWord* %axis, %struct.GIM_AABB* %28)
+ %30 = call zeroext i8 @_ZN12gjkepa2_impl3GJK13EncloseOriginEv(%"struct.gjkepa2_impl::GJK"* %this) ; [#uses=1]
+ %toBool = icmp eq i8 %30, 0 ; [#uses=1]
+ br i1 %toBool, label %bb3, label %bb35
+
+bb3: ; preds = %bb1
+ %31 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %3, align 4 ; [#uses=2]
+ %32 = load i32* %11, align 4 ; [#uses=2]
+ %33 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %31, i32 0, i32 2 ; [#uses=2]
+ %34 = load i32* %33, align 4 ; [#uses=1]
+ %35 = add i32 %34, -1 ; [#uses=2]
+ store i32 %35, i32* %33, align 4
+ %36 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %31, i32 0, i32 0, i32 %35 ; [#uses=1]
+ %37 = load %struct.GIM_AABB** %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %32 ; [#uses=1]
+ store %struct.GIM_AABB* %37, %struct.GIM_AABB** %38, align 4
+ %39 = add i32 %32, 1 ; [#uses=1]
+ store i32 %39, i32* %11, align 4
+ %40 = load float* %9, align 8 ; [#uses=1]
+ %41 = fsub float -0.000000e+00, %40 ; [#uses=1]
+ %42 = load float* %8, align 4 ; [#uses=1]
+ %43 = fsub float -0.000000e+00, %42 ; [#uses=1]
+ %44 = load float* %7, align 8 ; [#uses=1]
+ %45 = fsub float -0.000000e+00, %44 ; [#uses=1]
+ store float %45, float* %12, align 8
+ store float %43, float* %13, align 4
+ store float %41, float* %14, align 8
+ store float 0.000000e+00, float* %15, align 4
+ %46 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %3, align 4 ; [#uses=4]
+ %47 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %46, i32 0, i32 2 ; [#uses=4]
+ %48 = load i32* %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %46, i32 0, i32 1, i32 %48 ; [#uses=1]
+ store float 0.000000e+00, float* %49, align 4
+ %50 = load i32* %47, align 4 ; [#uses=1]
+ %51 = load i32* %11, align 4 ; [#uses=1]
+ %52 = add i32 %51, -1 ; [#uses=2]
+ store i32 %52, i32* %11, align 4
+ %53 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %52 ; [#uses=1]
+ %54 = load %struct.GIM_AABB** %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %46, i32 0, i32 0, i32 %50 ; [#uses=1]
+ store %struct.GIM_AABB* %54, %struct.GIM_AABB** %55, align 4
+ %56 = load i32* %47, align 4 ; [#uses=2]
+ %57 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %46, i32 0, i32 0, i32 %56 ; [#uses=1]
+ %58 = load %struct.GIM_AABB** %57, align 4 ; [#uses=1]
+ %59 = add i32 %56, 1 ; [#uses=1]
+ store i32 %59, i32* %47, align 4
+ call void @_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(%"struct.gjkepa2_impl::GJK"* %this, %struct.btQuadWord* %2, %struct.GIM_AABB* %58)
+ %60 = call zeroext i8 @_ZN12gjkepa2_impl3GJK13EncloseOriginEv(%"struct.gjkepa2_impl::GJK"* %this) ; [#uses=1]
+ %toBool4 = icmp eq i8 %60, 0 ; [#uses=1]
+ br i1 %toBool4, label %bb6, label %bb35
+
+bb6: ; preds = %bb3
+ %61 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %3, align 4 ; [#uses=2]
+ %62 = load i32* %11, align 4 ; [#uses=2]
+ %63 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %61, i32 0, i32 2 ; [#uses=2]
+ %64 = load i32* %63, align 4 ; [#uses=1]
+ %65 = add i32 %64, -1 ; [#uses=2]
+ store i32 %65, i32* %63, align 4
+ %66 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %61, i32 0, i32 0, i32 %65 ; [#uses=1]
+ %67 = load %struct.GIM_AABB** %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %62 ; [#uses=1]
+ store %struct.GIM_AABB* %67, %struct.GIM_AABB** %68, align 4
+ %69 = add i32 %62, 1 ; [#uses=1]
+ store i32 %69, i32* %11, align 4
+ %70 = add i32 %71, 1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb7.preheader
+ %71 = phi i32 [ %70, %bb6 ], [ 0, %bb7.preheader ] ; [#uses=3]
+ %72 = icmp ult i32 %71, 3 ; [#uses=1]
+ br i1 %72, label %bb1, label %bb34
+
+bb8: ; preds = %entry
+ %73 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %74 = load %struct.GIM_AABB** %73, align 4 ; [#uses=3]
+ %75 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ %76 = load %struct.GIM_AABB** %75, align 4 ; [#uses=3]
+ %77 = getelementptr inbounds %struct.GIM_AABB* %76, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.GIM_AABB* %74, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fsub float %78, %80 ; [#uses=2]
+ %82 = getelementptr inbounds %struct.GIM_AABB* %76, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.GIM_AABB* %74, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = fsub float %83, %85 ; [#uses=2]
+ %87 = getelementptr inbounds %struct.GIM_AABB* %76, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.GIM_AABB* %74, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ %91 = fsub float %88, %90 ; [#uses=2]
+ %92 = getelementptr inbounds %struct.btQuadWord* %axis11, i32 0, i32 0, i32 0 ; [#uses=2]
+ %93 = getelementptr inbounds %struct.btQuadWord* %axis11, i32 0, i32 0, i32 1 ; [#uses=2]
+ %94 = getelementptr inbounds %struct.btQuadWord* %axis11, i32 0, i32 0, i32 2 ; [#uses=2]
+ %95 = getelementptr inbounds %struct.btQuadWord* %axis11, i32 0, i32 0, i32 3 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=2]
+ %97 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=2]
+ %98 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=2]
+ %99 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 3 ; [#uses=1]
+ %100 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 6 ; [#uses=8]
+ %101 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb21
+
+bb10: ; preds = %bb21
+ %scevgep = getelementptr %struct.btQuadWord* %axis11, i32 0, i32 0, i32 %178 ; [#uses=1]
+ store float 0.000000e+00, float* %92, align 8
+ store float 0.000000e+00, float* %93, align 4
+ store float 0.000000e+00, float* %94, align 8
+ store float 0.000000e+00, float* %95, align 4
+ store float 1.000000e+00, float* %scevgep, align 4
+ %105 = load float* %93, align 4 ; [#uses=2]
+ %106 = fmul float %91, %105 ; [#uses=1]
+ %107 = load float* %92, align 8 ; [#uses=2]
+ %108 = fmul float %86, %107 ; [#uses=1]
+ %109 = fsub float %106, %108 ; [#uses=3]
+ %110 = fmul float %81, %107 ; [#uses=1]
+ %111 = load float* %94, align 8 ; [#uses=2]
+ %112 = fmul float %91, %111 ; [#uses=1]
+ %113 = fsub float %110, %112 ; [#uses=3]
+ %114 = fmul float %86, %111 ; [#uses=1]
+ %115 = fmul float %81, %105 ; [#uses=1]
+ %116 = fsub float %114, %115 ; [#uses=3]
+ store float %116, float* %96, align 8
+ store float %113, float* %97, align 4
+ store float %109, float* %98, align 8
+ store float 0.000000e+00, float* %99, align 4
+ %117 = fmul float %116, %116 ; [#uses=1]
+ %118 = fmul float %113, %113 ; [#uses=1]
+ %119 = fadd float %117, %118 ; [#uses=1]
+ %120 = fmul float %109, %109 ; [#uses=1]
+ %121 = fadd float %119, %120 ; [#uses=1]
+ %122 = fcmp ogt float %121, 0.000000e+00 ; [#uses=1]
+ br i1 %122, label %bb13, label %bb20
+
+bb13: ; preds = %bb10
+ %123 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %3, align 4 ; [#uses=4]
+ %124 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %123, i32 0, i32 2 ; [#uses=4]
+ %125 = load i32* %124, align 4 ; [#uses=1]
+ %126 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %123, i32 0, i32 1, i32 %125 ; [#uses=1]
+ store float 0.000000e+00, float* %126, align 4
+ %127 = load i32* %124, align 4 ; [#uses=1]
+ %128 = load i32* %100, align 4 ; [#uses=1]
+ %129 = add i32 %128, -1 ; [#uses=2]
+ store i32 %129, i32* %100, align 4
+ %130 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %129 ; [#uses=1]
+ %131 = load %struct.GIM_AABB** %130, align 4 ; [#uses=1]
+ %132 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %123, i32 0, i32 0, i32 %127 ; [#uses=1]
+ store %struct.GIM_AABB* %131, %struct.GIM_AABB** %132, align 4
+ %133 = load i32* %124, align 4 ; [#uses=2]
+ %134 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %123, i32 0, i32 0, i32 %133 ; [#uses=1]
+ %135 = load %struct.GIM_AABB** %134, align 4 ; [#uses=1]
+ %136 = add i32 %133, 1 ; [#uses=1]
+ store i32 %136, i32* %124, align 4
+ call void @_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(%"struct.gjkepa2_impl::GJK"* %this, %struct.btQuadWord* %p, %struct.GIM_AABB* %135)
+ %137 = call zeroext i8 @_ZN12gjkepa2_impl3GJK13EncloseOriginEv(%"struct.gjkepa2_impl::GJK"* %this) ; [#uses=1]
+ %toBool14 = icmp eq i8 %137, 0 ; [#uses=1]
+ br i1 %toBool14, label %bb16, label %bb35
+
+bb16: ; preds = %bb13
+ %138 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %3, align 4 ; [#uses=2]
+ %139 = load i32* %100, align 4 ; [#uses=2]
+ %140 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %138, i32 0, i32 2 ; [#uses=2]
+ %141 = load i32* %140, align 4 ; [#uses=1]
+ %142 = add i32 %141, -1 ; [#uses=2]
+ store i32 %142, i32* %140, align 4
+ %143 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %138, i32 0, i32 0, i32 %142 ; [#uses=1]
+ %144 = load %struct.GIM_AABB** %143, align 4 ; [#uses=1]
+ %145 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %139 ; [#uses=1]
+ store %struct.GIM_AABB* %144, %struct.GIM_AABB** %145, align 4
+ %146 = add i32 %139, 1 ; [#uses=1]
+ store i32 %146, i32* %100, align 4
+ %147 = load float* %98, align 8 ; [#uses=1]
+ %148 = fsub float -0.000000e+00, %147 ; [#uses=1]
+ %149 = load float* %97, align 4 ; [#uses=1]
+ %150 = fsub float -0.000000e+00, %149 ; [#uses=1]
+ %151 = load float* %96, align 8 ; [#uses=1]
+ %152 = fsub float -0.000000e+00, %151 ; [#uses=1]
+ store float %152, float* %101, align 8
+ store float %150, float* %102, align 4
+ store float %148, float* %103, align 8
+ store float 0.000000e+00, float* %104, align 4
+ %153 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %3, align 4 ; [#uses=4]
+ %154 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %153, i32 0, i32 2 ; [#uses=4]
+ %155 = load i32* %154, align 4 ; [#uses=1]
+ %156 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %153, i32 0, i32 1, i32 %155 ; [#uses=1]
+ store float 0.000000e+00, float* %156, align 4
+ %157 = load i32* %154, align 4 ; [#uses=1]
+ %158 = load i32* %100, align 4 ; [#uses=1]
+ %159 = add i32 %158, -1 ; [#uses=2]
+ store i32 %159, i32* %100, align 4
+ %160 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %159 ; [#uses=1]
+ %161 = load %struct.GIM_AABB** %160, align 4 ; [#uses=1]
+ %162 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %153, i32 0, i32 0, i32 %157 ; [#uses=1]
+ store %struct.GIM_AABB* %161, %struct.GIM_AABB** %162, align 4
+ %163 = load i32* %154, align 4 ; [#uses=2]
+ %164 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %153, i32 0, i32 0, i32 %163 ; [#uses=1]
+ %165 = load %struct.GIM_AABB** %164, align 4 ; [#uses=1]
+ %166 = add i32 %163, 1 ; [#uses=1]
+ store i32 %166, i32* %154, align 4
+ call void @_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(%"struct.gjkepa2_impl::GJK"* %this, %struct.btQuadWord* %1, %struct.GIM_AABB* %165)
+ %167 = call zeroext i8 @_ZN12gjkepa2_impl3GJK13EncloseOriginEv(%"struct.gjkepa2_impl::GJK"* %this) ; [#uses=1]
+ %toBool17 = icmp eq i8 %167, 0 ; [#uses=1]
+ br i1 %toBool17, label %bb19, label %bb35
+
+bb19: ; preds = %bb16
+ %168 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %3, align 4 ; [#uses=2]
+ %169 = load i32* %100, align 4 ; [#uses=2]
+ %170 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %168, i32 0, i32 2 ; [#uses=2]
+ %171 = load i32* %170, align 4 ; [#uses=1]
+ %172 = add i32 %171, -1 ; [#uses=2]
+ store i32 %172, i32* %170, align 4
+ %173 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %168, i32 0, i32 0, i32 %172 ; [#uses=1]
+ %174 = load %struct.GIM_AABB** %173, align 4 ; [#uses=1]
+ %175 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %169 ; [#uses=1]
+ store %struct.GIM_AABB* %174, %struct.GIM_AABB** %175, align 4
+ %176 = add i32 %169, 1 ; [#uses=1]
+ store i32 %176, i32* %100, align 4
+ br label %bb20
+
+bb20: ; preds = %bb19, %bb10
+ %177 = add i32 %178, 1 ; [#uses=1]
+ br label %bb21
+
+bb21: ; preds = %bb20, %bb8
+ %178 = phi i32 [ 0, %bb8 ], [ %177, %bb20 ] ; [#uses=3]
+ %179 = icmp ult i32 %178, 3 ; [#uses=1]
+ br i1 %179, label %bb10, label %bb34
+
+bb22: ; preds = %entry
+ %180 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %181 = load %struct.GIM_AABB** %180, align 4 ; [#uses=3]
+ %182 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %4, i32 0, i32 0, i32 2 ; [#uses=1]
+ %183 = load %struct.GIM_AABB** %182, align 4 ; [#uses=3]
+ %184 = getelementptr inbounds %struct.GIM_AABB* %183, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %185 = load float* %184, align 4 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.GIM_AABB* %181, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %187 = load float* %186, align 4 ; [#uses=2]
+ %188 = fsub float %185, %187 ; [#uses=2]
+ %189 = getelementptr inbounds %struct.GIM_AABB* %183, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %190 = load float* %189, align 4 ; [#uses=1]
+ %191 = getelementptr inbounds %struct.GIM_AABB* %181, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %192 = load float* %191, align 4 ; [#uses=2]
+ %193 = fsub float %190, %192 ; [#uses=2]
+ %194 = getelementptr inbounds %struct.GIM_AABB* %183, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %195 = load float* %194, align 4 ; [#uses=1]
+ %196 = getelementptr inbounds %struct.GIM_AABB* %181, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %197 = load float* %196, align 4 ; [#uses=2]
+ %198 = fsub float %195, %197 ; [#uses=2]
+ %199 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ %200 = load %struct.GIM_AABB** %199, align 4 ; [#uses=3]
+ %201 = getelementptr inbounds %struct.GIM_AABB* %200, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %202 = load float* %201, align 4 ; [#uses=1]
+ %203 = fsub float %202, %187 ; [#uses=2]
+ %204 = getelementptr inbounds %struct.GIM_AABB* %200, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %205 = load float* %204, align 4 ; [#uses=1]
+ %206 = fsub float %205, %192 ; [#uses=2]
+ %207 = getelementptr inbounds %struct.GIM_AABB* %200, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %208 = load float* %207, align 4 ; [#uses=1]
+ %209 = fsub float %208, %197 ; [#uses=2]
+ %210 = fmul float %209, %193 ; [#uses=1]
+ %211 = fmul float %206, %198 ; [#uses=1]
+ %212 = fsub float %210, %211 ; [#uses=3]
+ %213 = fmul float %203, %198 ; [#uses=1]
+ %214 = fmul float %209, %188 ; [#uses=1]
+ %215 = fsub float %213, %214 ; [#uses=3]
+ %216 = fmul float %206, %188 ; [#uses=1]
+ %217 = fmul float %203, %193 ; [#uses=1]
+ %218 = fsub float %216, %217 ; [#uses=3]
+ %219 = getelementptr inbounds %struct.btQuadWord* %n, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %218, float* %219, align 8
+ %220 = getelementptr inbounds %struct.btQuadWord* %n, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %215, float* %220, align 4
+ %221 = getelementptr inbounds %struct.btQuadWord* %n, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %212, float* %221, align 8
+ %222 = getelementptr inbounds %struct.btQuadWord* %n, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %222, align 4
+ %223 = fmul float %218, %218 ; [#uses=1]
+ %224 = fmul float %215, %215 ; [#uses=1]
+ %225 = fadd float %223, %224 ; [#uses=1]
+ %226 = fmul float %212, %212 ; [#uses=1]
+ %227 = fadd float %225, %226 ; [#uses=1]
+ %228 = fcmp ogt float %227, 0.000000e+00 ; [#uses=1]
+ br i1 %228, label %bb24, label %bb34
+
+bb24: ; preds = %bb22
+ %229 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %4, i32 0, i32 1, i32 %6 ; [#uses=1]
+ store float 0.000000e+00, float* %229, align 4
+ %230 = load i32* %5, align 4 ; [#uses=1]
+ %231 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 6 ; [#uses=8]
+ %232 = load i32* %231, align 4 ; [#uses=1]
+ %233 = add i32 %232, -1 ; [#uses=2]
+ store i32 %233, i32* %231, align 4
+ %234 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %233 ; [#uses=1]
+ %235 = load %struct.GIM_AABB** %234, align 4 ; [#uses=1]
+ %236 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %4, i32 0, i32 0, i32 %230 ; [#uses=1]
+ store %struct.GIM_AABB* %235, %struct.GIM_AABB** %236, align 4
+ %237 = load i32* %5, align 4 ; [#uses=2]
+ %238 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %4, i32 0, i32 0, i32 %237 ; [#uses=1]
+ %239 = load %struct.GIM_AABB** %238, align 4 ; [#uses=1]
+ %240 = add i32 %237, 1 ; [#uses=1]
+ store i32 %240, i32* %5, align 4
+ call void @_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(%"struct.gjkepa2_impl::GJK"* %this, %struct.btQuadWord* %n, %struct.GIM_AABB* %239)
+ %241 = call zeroext i8 @_ZN12gjkepa2_impl3GJK13EncloseOriginEv(%"struct.gjkepa2_impl::GJK"* %this) ; [#uses=1]
+ %toBool25 = icmp eq i8 %241, 0 ; [#uses=1]
+ br i1 %toBool25, label %bb27, label %bb35
+
+bb27: ; preds = %bb24
+ %242 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %3, align 4 ; [#uses=2]
+ %243 = load i32* %231, align 4 ; [#uses=2]
+ %244 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %242, i32 0, i32 2 ; [#uses=2]
+ %245 = load i32* %244, align 4 ; [#uses=1]
+ %246 = add i32 %245, -1 ; [#uses=2]
+ store i32 %246, i32* %244, align 4
+ %247 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %242, i32 0, i32 0, i32 %246 ; [#uses=1]
+ %248 = load %struct.GIM_AABB** %247, align 4 ; [#uses=1]
+ %249 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %243 ; [#uses=1]
+ store %struct.GIM_AABB* %248, %struct.GIM_AABB** %249, align 4
+ %250 = add i32 %243, 1 ; [#uses=1]
+ store i32 %250, i32* %231, align 4
+ %251 = load float* %221, align 8 ; [#uses=1]
+ %252 = fsub float -0.000000e+00, %251 ; [#uses=1]
+ %253 = load float* %220, align 4 ; [#uses=1]
+ %254 = fsub float -0.000000e+00, %253 ; [#uses=1]
+ %255 = load float* %219, align 8 ; [#uses=1]
+ %256 = fsub float -0.000000e+00, %255 ; [#uses=1]
+ %257 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %256, float* %257, align 8
+ %258 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %254, float* %258, align 4
+ %259 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %252, float* %259, align 8
+ %260 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %260, align 4
+ %261 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %3, align 4 ; [#uses=4]
+ %262 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %261, i32 0, i32 2 ; [#uses=4]
+ %263 = load i32* %262, align 4 ; [#uses=1]
+ %264 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %261, i32 0, i32 1, i32 %263 ; [#uses=1]
+ store float 0.000000e+00, float* %264, align 4
+ %265 = load i32* %262, align 4 ; [#uses=1]
+ %266 = load i32* %231, align 4 ; [#uses=1]
+ %267 = add i32 %266, -1 ; [#uses=2]
+ store i32 %267, i32* %231, align 4
+ %268 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %267 ; [#uses=1]
+ %269 = load %struct.GIM_AABB** %268, align 4 ; [#uses=1]
+ %270 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %261, i32 0, i32 0, i32 %265 ; [#uses=1]
+ store %struct.GIM_AABB* %269, %struct.GIM_AABB** %270, align 4
+ %271 = load i32* %262, align 4 ; [#uses=2]
+ %272 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %261, i32 0, i32 0, i32 %271 ; [#uses=1]
+ %273 = load %struct.GIM_AABB** %272, align 4 ; [#uses=1]
+ %274 = add i32 %271, 1 ; [#uses=1]
+ store i32 %274, i32* %262, align 4
+ call void @_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(%"struct.gjkepa2_impl::GJK"* %this, %struct.btQuadWord* %0, %struct.GIM_AABB* %273)
+ %275 = call zeroext i8 @_ZN12gjkepa2_impl3GJK13EncloseOriginEv(%"struct.gjkepa2_impl::GJK"* %this) ; [#uses=1]
+ %toBool28 = icmp eq i8 %275, 0 ; [#uses=1]
+ br i1 %toBool28, label %bb30, label %bb35
+
+bb30: ; preds = %bb27
+ %276 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %3, align 4 ; [#uses=2]
+ %277 = load i32* %231, align 4 ; [#uses=2]
+ %278 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %276, i32 0, i32 2 ; [#uses=2]
+ %279 = load i32* %278, align 4 ; [#uses=1]
+ %280 = add i32 %279, -1 ; [#uses=2]
+ store i32 %280, i32* %278, align 4
+ %281 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %276, i32 0, i32 0, i32 %280 ; [#uses=1]
+ %282 = load %struct.GIM_AABB** %281, align 4 ; [#uses=1]
+ %283 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %277 ; [#uses=1]
+ store %struct.GIM_AABB* %282, %struct.GIM_AABB** %283, align 4
+ %284 = add i32 %277, 1 ; [#uses=1]
+ store i32 %284, i32* %231, align 4
+ ret i8 0
+
+bb31: ; preds = %entry
+ %285 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %4, i32 0, i32 0, i32 3 ; [#uses=1]
+ %286 = load %struct.GIM_AABB** %285, align 4 ; [#uses=3]
+ %287 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %4, i32 0, i32 0, i32 2 ; [#uses=1]
+ %288 = load %struct.GIM_AABB** %287, align 4 ; [#uses=3]
+ %289 = getelementptr inbounds %struct.GIM_AABB* %288, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %290 = load float* %289, align 4 ; [#uses=1]
+ %291 = getelementptr inbounds %struct.GIM_AABB* %286, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %292 = load float* %291, align 4 ; [#uses=3]
+ %293 = fsub float %290, %292 ; [#uses=2]
+ %294 = getelementptr inbounds %struct.GIM_AABB* %288, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %295 = load float* %294, align 4 ; [#uses=1]
+ %296 = getelementptr inbounds %struct.GIM_AABB* %286, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %297 = load float* %296, align 4 ; [#uses=3]
+ %298 = fsub float %295, %297 ; [#uses=2]
+ %299 = getelementptr inbounds %struct.GIM_AABB* %288, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %300 = load float* %299, align 4 ; [#uses=1]
+ %301 = getelementptr inbounds %struct.GIM_AABB* %286, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %302 = load float* %301, align 4 ; [#uses=3]
+ %303 = fsub float %300, %302 ; [#uses=2]
+ %304 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ %305 = load %struct.GIM_AABB** %304, align 4 ; [#uses=3]
+ %306 = getelementptr inbounds %struct.GIM_AABB* %305, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %307 = load float* %306, align 4 ; [#uses=1]
+ %308 = fsub float %307, %292 ; [#uses=2]
+ %309 = getelementptr inbounds %struct.GIM_AABB* %305, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %310 = load float* %309, align 4 ; [#uses=1]
+ %311 = fsub float %310, %297 ; [#uses=2]
+ %312 = getelementptr inbounds %struct.GIM_AABB* %305, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %313 = load float* %312, align 4 ; [#uses=1]
+ %314 = fsub float %313, %302 ; [#uses=2]
+ %315 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %316 = load %struct.GIM_AABB** %315, align 4 ; [#uses=3]
+ %317 = getelementptr inbounds %struct.GIM_AABB* %316, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %318 = load float* %317, align 4 ; [#uses=1]
+ %319 = fsub float %318, %292 ; [#uses=2]
+ %320 = getelementptr inbounds %struct.GIM_AABB* %316, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %321 = load float* %320, align 4 ; [#uses=1]
+ %322 = fsub float %321, %297 ; [#uses=2]
+ %323 = getelementptr inbounds %struct.GIM_AABB* %316, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %324 = load float* %323, align 4 ; [#uses=1]
+ %325 = fsub float %324, %302 ; [#uses=2]
+ %326 = fmul float %322, %308 ; [#uses=1]
+ %327 = fmul float %326, %303 ; [#uses=1]
+ %328 = fmul float %319, %314 ; [#uses=1]
+ %329 = fmul float %328, %298 ; [#uses=1]
+ %330 = fadd float %327, %329 ; [#uses=1]
+ %331 = fmul float %325, %308 ; [#uses=1]
+ %332 = fmul float %331, %298 ; [#uses=1]
+ %333 = fsub float %330, %332 ; [#uses=1]
+ %334 = fmul float %322, %314 ; [#uses=1]
+ %335 = fmul float %334, %293 ; [#uses=1]
+ %336 = fsub float %333, %335 ; [#uses=1]
+ %337 = fmul float %325, %311 ; [#uses=1]
+ %338 = fmul float %337, %293 ; [#uses=1]
+ %339 = fadd float %336, %338 ; [#uses=1]
+ %340 = fmul float %319, %311 ; [#uses=1]
+ %341 = fmul float %340, %303 ; [#uses=1]
+ %342 = fsub float %339, %341 ; [#uses=1]
+ %343 = call float @fabsf(float %342) nounwind readnone ; [#uses=1]
+ %344 = fcmp ogt float %343, 0.000000e+00 ; [#uses=1]
+ %retval = zext i1 %344 to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb34: ; preds = %bb22, %bb21, %bb7, %entry
+ ret i8 0
+
+bb35: ; preds = %bb27, %bb24, %bb16, %bb13, %bb3, %bb1
+ ret i8 1
+}
+
+; [#uses=2]
+define linkonce_odr float @_ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRj(%struct.btQuadWord* %a, %struct.btQuadWord* %b, %struct.btQuadWord* %c, float* nocapture %w, i32* nocapture %m) nounwind {
+entry:
+ %vt = alloca [3 x %struct.btQuadWord*], align 4 ; [#uses=5]
+ %dl = alloca [3 x %struct.btQuadWord], align 8 ; [#uses=15]
+ %subw = alloca [2 x float], align 4 ; [#uses=2]
+ %subm = alloca i32, align 4 ; [#uses=3]
+ %0 = getelementptr inbounds [3 x %struct.btQuadWord*]* %vt, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds [3 x %struct.btQuadWord*]* %vt, i32 0, i32 1 ; [#uses=1]
+ %2 = getelementptr inbounds [3 x %struct.btQuadWord*]* %vt, i32 0, i32 2 ; [#uses=1]
+ store %struct.btQuadWord* %a, %struct.btQuadWord** %0, align 4
+ store %struct.btQuadWord* %b, %struct.btQuadWord** %1, align 4
+ store %struct.btQuadWord* %c, %struct.btQuadWord** %2, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 2 ; [#uses=2]
+ %4 = load float* %3, align 4 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 2 ; [#uses=2]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = fsub float %4, %6 ; [#uses=4]
+ %8 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 1 ; [#uses=2]
+ %9 = load float* %8, align 4 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 1 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = fsub float %9, %11 ; [#uses=4]
+ %13 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 0 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=3]
+ %15 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 0 ; [#uses=2]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = fsub float %14, %16 ; [#uses=4]
+ %18 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %17, float* %18, align 8
+ %19 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %12, float* %19, align 4
+ %20 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %7, float* %20, align 8
+ %21 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 2 ; [#uses=2]
+ %23 = load float* %22, align 4 ; [#uses=2]
+ %24 = fsub float %6, %23 ; [#uses=5]
+ %25 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 1 ; [#uses=2]
+ %26 = load float* %25, align 4 ; [#uses=2]
+ %27 = fsub float %11, %26 ; [#uses=5]
+ %28 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 0 ; [#uses=2]
+ %29 = load float* %28, align 4 ; [#uses=2]
+ %30 = fsub float %16, %29 ; [#uses=5]
+ %31 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %30, float* %31, align 8
+ %32 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %27, float* %32, align 4
+ %33 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %24, float* %33, align 8
+ %34 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %34, align 4
+ %35 = fsub float %23, %4 ; [#uses=3]
+ %36 = fsub float %26, %9 ; [#uses=3]
+ %37 = fsub float %29, %14 ; [#uses=3]
+ %38 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %37, float* %38, align 8
+ %39 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %36, float* %39, align 4
+ %40 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %35, float* %40, align 8
+ %41 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 4
+ %42 = fmul float %17, %27 ; [#uses=1]
+ %43 = fmul float %12, %30 ; [#uses=1]
+ %44 = fsub float %42, %43 ; [#uses=6]
+ %45 = fmul float %7, %30 ; [#uses=1]
+ %46 = fmul float %17, %24 ; [#uses=1]
+ %47 = fsub float %45, %46 ; [#uses=6]
+ %48 = fmul float %12, %24 ; [#uses=1]
+ %49 = fmul float %7, %27 ; [#uses=1]
+ %50 = fsub float %48, %49 ; [#uses=6]
+ %51 = fmul float %50, %50 ; [#uses=1]
+ %52 = fmul float %47, %47 ; [#uses=1]
+ %53 = fadd float %51, %52 ; [#uses=1]
+ %54 = fmul float %44, %44 ; [#uses=1]
+ %55 = fadd float %53, %54 ; [#uses=3]
+ %56 = fcmp ogt float %55, 0.000000e+00 ; [#uses=1]
+ br i1 %56, label %bb.nph, label %bb18
+
+bb.nph: ; preds = %entry
+ %57 = getelementptr inbounds [2 x float]* %subw, i32 0, i32 0 ; [#uses=3]
+ store float 0.000000e+00, float* %57, align 4
+ %58 = getelementptr inbounds [2 x float]* %subw, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %58, align 4
+ store i32 0, i32* %subm, align 4
+ br label %bb1
+
+bb1: ; preds = %bb12.bb1_crit_edge, %bb.nph
+ %59 = phi float [ %4, %bb.nph ], [ %.pre59, %bb12.bb1_crit_edge ] ; [#uses=1]
+ %60 = phi float [ %9, %bb.nph ], [ %.pre57, %bb12.bb1_crit_edge ] ; [#uses=1]
+ %61 = phi float [ %14, %bb.nph ], [ %.pre55, %bb12.bb1_crit_edge ] ; [#uses=1]
+ %62 = phi %struct.btQuadWord* [ %a, %bb.nph ], [ %.pre54, %bb12.bb1_crit_edge ] ; [#uses=1]
+ %63 = phi float [ %7, %bb.nph ], [ %.pre53, %bb12.bb1_crit_edge ] ; [#uses=2]
+ %64 = phi float [ %12, %bb.nph ], [ %.pre52, %bb12.bb1_crit_edge ] ; [#uses=2]
+ %65 = phi float [ %17, %bb.nph ], [ %.pre, %bb12.bb1_crit_edge ] ; [#uses=2]
+ %66 = phi i32 [ 0, %bb.nph ], [ %101, %bb12.bb1_crit_edge ] ; [#uses=4]
+ %mindist.144 = phi float [ -1.000000e+00, %bb.nph ], [ %mindist.0, %bb12.bb1_crit_edge ] ; [#uses=4]
+ %scevgep47 = getelementptr float* %w, i32 %66 ; [#uses=1]
+ %67 = fmul float %65, %47 ; [#uses=1]
+ %68 = fmul float %64, %50 ; [#uses=1]
+ %69 = fsub float %67, %68 ; [#uses=1]
+ %70 = fmul float %63, %50 ; [#uses=1]
+ %71 = fmul float %65, %44 ; [#uses=1]
+ %72 = fsub float %70, %71 ; [#uses=1]
+ %73 = fmul float %64, %44 ; [#uses=1]
+ %74 = fmul float %63, %47 ; [#uses=1]
+ %75 = fsub float %73, %74 ; [#uses=1]
+ %76 = fmul float %61, %75 ; [#uses=1]
+ %77 = fmul float %60, %72 ; [#uses=1]
+ %78 = fadd float %76, %77 ; [#uses=1]
+ %79 = fmul float %59, %69 ; [#uses=1]
+ %80 = fadd float %78, %79 ; [#uses=1]
+ %81 = fcmp ogt float %80, 0.000000e+00 ; [#uses=1]
+ br i1 %81, label %bb2, label %bb12
+
+bb2: ; preds = %bb1
+ %scevgep46 = getelementptr [3 x i32]* @_ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRjE4imd3, i32 0, i32 %66 ; [#uses=1]
+ %82 = load i32* %scevgep46, align 4 ; [#uses=4]
+ %83 = getelementptr inbounds [3 x %struct.btQuadWord*]* %vt, i32 0, i32 %82 ; [#uses=1]
+ %84 = load %struct.btQuadWord** %83, align 4 ; [#uses=1]
+ %85 = call float @_ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_PfRj(%struct.btQuadWord* %62, %struct.btQuadWord* %84, float* %57, i32* %subm) nounwind ; [#uses=2]
+ %86 = fcmp olt float %mindist.144, 0.000000e+00 ; [#uses=1]
+ %87 = fcmp olt float %85, %mindist.144 ; [#uses=1]
+ %or.cond = or i1 %86, %87 ; [#uses=1]
+ br i1 %or.cond, label %bb4, label %bb12
+
+bb4: ; preds = %bb2
+ %88 = load i32* %subm, align 4 ; [#uses=2]
+ %89 = and i32 %88, 1 ; [#uses=1]
+ %toBool5 = icmp eq i32 %89, 0 ; [#uses=1]
+ %90 = shl i32 1, %66 ; [#uses=1]
+ %iftmp.176.0 = select i1 %toBool5, i32 0, i32 %90 ; [#uses=1]
+ %91 = and i32 %88, 2 ; [#uses=1]
+ %92 = icmp eq i32 %91, 0 ; [#uses=1]
+ %93 = shl i32 1, %82 ; [#uses=1]
+ %iftmp.179.0 = select i1 %92, i32 0, i32 %93 ; [#uses=1]
+ %94 = add nsw i32 %iftmp.176.0, %iftmp.179.0 ; [#uses=1]
+ store i32 %94, i32* %m, align 4
+ %95 = load float* %57, align 4 ; [#uses=1]
+ store float %95, float* %scevgep47, align 4
+ %96 = load float* %58, align 4 ; [#uses=1]
+ %97 = getelementptr inbounds float* %w, i32 %82 ; [#uses=1]
+ store float %96, float* %97, align 4
+ %98 = getelementptr inbounds [3 x i32]* @_ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRjE4imd3, i32 0, i32 %82 ; [#uses=1]
+ %99 = load i32* %98, align 4 ; [#uses=1]
+ %100 = getelementptr inbounds float* %w, i32 %99 ; [#uses=1]
+ store float 0.000000e+00, float* %100, align 4
+ br label %bb12
+
+bb12: ; preds = %bb4, %bb2, %bb1
+ %mindist.0 = phi float [ %85, %bb4 ], [ %mindist.144, %bb1 ], [ %mindist.144, %bb2 ] ; [#uses=3]
+ %101 = add i32 %66, 1 ; [#uses=6]
+ %exitcond = icmp eq i32 %101, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb14, label %bb12.bb1_crit_edge
+
+bb12.bb1_crit_edge: ; preds = %bb12
+ %scevgep4849.phi.trans.insert = getelementptr [3 x %struct.btQuadWord]* %dl, i32 0, i32 %101, i32 0, i32 0 ; [#uses=1]
+ %.pre = load float* %scevgep4849.phi.trans.insert, align 8 ; [#uses=1]
+ %scevgep50.phi.trans.insert = getelementptr [3 x %struct.btQuadWord]* %dl, i32 0, i32 %101, i32 0, i32 1 ; [#uses=1]
+ %.pre52 = load float* %scevgep50.phi.trans.insert, align 4 ; [#uses=1]
+ %scevgep51.phi.trans.insert = getelementptr [3 x %struct.btQuadWord]* %dl, i32 0, i32 %101, i32 0, i32 2 ; [#uses=1]
+ %.pre53 = load float* %scevgep51.phi.trans.insert, align 8 ; [#uses=1]
+ %scevgep.phi.trans.insert = getelementptr [3 x %struct.btQuadWord*]* %vt, i32 0, i32 %101 ; [#uses=1]
+ %.pre54 = load %struct.btQuadWord** %scevgep.phi.trans.insert, align 4 ; [#uses=4]
+ %.phi.trans.insert = getelementptr inbounds %struct.btQuadWord* %.pre54, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre55 = load float* %.phi.trans.insert, align 4 ; [#uses=1]
+ %.phi.trans.insert56 = getelementptr inbounds %struct.btQuadWord* %.pre54, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre57 = load float* %.phi.trans.insert56, align 4 ; [#uses=1]
+ %.phi.trans.insert58 = getelementptr inbounds %struct.btQuadWord* %.pre54, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre59 = load float* %.phi.trans.insert58, align 4 ; [#uses=1]
+ br label %bb1
+
+bb14: ; preds = %bb12
+ %102 = fcmp olt float %mindist.0, 0.000000e+00 ; [#uses=1]
+ br i1 %102, label %bb15, label %bb18
+
+bb15: ; preds = %bb14
+ %103 = load float* %13, align 4 ; [#uses=1]
+ %104 = fmul float %103, %50 ; [#uses=1]
+ %105 = load float* %8, align 4 ; [#uses=1]
+ %106 = fmul float %105, %47 ; [#uses=1]
+ %107 = fadd float %104, %106 ; [#uses=1]
+ %108 = load float* %3, align 4 ; [#uses=1]
+ %109 = fmul float %108, %44 ; [#uses=1]
+ %110 = fadd float %107, %109 ; [#uses=1]
+ %111 = call float @sqrtf(float %55) nounwind readonly ; [#uses=2]
+ %112 = fdiv float %110, %55 ; [#uses=3]
+ %113 = fmul float %44, %112 ; [#uses=4]
+ %114 = fmul float %47, %112 ; [#uses=4]
+ %115 = fmul float %50, %112 ; [#uses=4]
+ %116 = fmul float %115, %115 ; [#uses=1]
+ %117 = fmul float %114, %114 ; [#uses=1]
+ %118 = fadd float %116, %117 ; [#uses=1]
+ %119 = fmul float %113, %113 ; [#uses=1]
+ %120 = fadd float %118, %119 ; [#uses=1]
+ store i32 7, i32* %m, align 4
+ %121 = load float* %5, align 4 ; [#uses=1]
+ %122 = fsub float %121, %113 ; [#uses=2]
+ %123 = load float* %10, align 4 ; [#uses=1]
+ %124 = fsub float %123, %114 ; [#uses=2]
+ %125 = load float* %15, align 4 ; [#uses=1]
+ %126 = fsub float %125, %115 ; [#uses=2]
+ %127 = fmul float %30, %124 ; [#uses=1]
+ %128 = fmul float %27, %126 ; [#uses=1]
+ %129 = fsub float %127, %128 ; [#uses=2]
+ %130 = fmul float %24, %126 ; [#uses=1]
+ %131 = fmul float %30, %122 ; [#uses=1]
+ %132 = fsub float %130, %131 ; [#uses=2]
+ %133 = fmul float %27, %122 ; [#uses=1]
+ %134 = fmul float %24, %124 ; [#uses=1]
+ %135 = fsub float %133, %134 ; [#uses=2]
+ %136 = fmul float %135, %135 ; [#uses=1]
+ %137 = fmul float %132, %132 ; [#uses=1]
+ %138 = fadd float %136, %137 ; [#uses=1]
+ %139 = fmul float %129, %129 ; [#uses=1]
+ %140 = fadd float %138, %139 ; [#uses=1]
+ %141 = call float @sqrtf(float %140) nounwind readonly ; [#uses=1]
+ %142 = fdiv float %141, %111 ; [#uses=2]
+ store float %142, float* %w, align 4
+ %143 = load float* %22, align 4 ; [#uses=1]
+ %144 = fsub float %143, %113 ; [#uses=2]
+ %145 = load float* %25, align 4 ; [#uses=1]
+ %146 = fsub float %145, %114 ; [#uses=2]
+ %147 = load float* %28, align 4 ; [#uses=1]
+ %148 = fsub float %147, %115 ; [#uses=2]
+ %149 = fmul float %37, %146 ; [#uses=1]
+ %150 = fmul float %36, %148 ; [#uses=1]
+ %151 = fsub float %149, %150 ; [#uses=2]
+ %152 = fmul float %35, %148 ; [#uses=1]
+ %153 = fmul float %37, %144 ; [#uses=1]
+ %154 = fsub float %152, %153 ; [#uses=2]
+ %155 = fmul float %36, %144 ; [#uses=1]
+ %156 = fmul float %35, %146 ; [#uses=1]
+ %157 = fsub float %155, %156 ; [#uses=2]
+ %158 = fmul float %157, %157 ; [#uses=1]
+ %159 = fmul float %154, %154 ; [#uses=1]
+ %160 = fadd float %158, %159 ; [#uses=1]
+ %161 = fmul float %151, %151 ; [#uses=1]
+ %162 = fadd float %160, %161 ; [#uses=1]
+ %163 = call float @sqrtf(float %162) nounwind readonly ; [#uses=1]
+ %164 = fdiv float %163, %111 ; [#uses=2]
+ %165 = getelementptr inbounds float* %w, i32 1 ; [#uses=1]
+ store float %164, float* %165, align 4
+ %166 = fadd float %142, %164 ; [#uses=1]
+ %167 = fsub float 1.000000e+00, %166 ; [#uses=1]
+ %168 = getelementptr inbounds float* %w, i32 2 ; [#uses=1]
+ store float %167, float* %168, align 4
+ ret float %120
+
+bb18: ; preds = %bb14, %entry
+ %.0 = phi float [ %mindist.0, %bb14 ], [ -1.000000e+00, %entry ] ; [#uses=1]
+ ret float %.0
+}
+
+; [#uses=1]
+define linkonce_odr float @_ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_S3_PfRj(%struct.btQuadWord* %a, %struct.btQuadWord* %b, %struct.btQuadWord* %c, %struct.btQuadWord* %d, float* nocapture %w, i32* nocapture %m) nounwind {
+entry:
+ %vt = alloca [4 x %struct.btQuadWord*], align 4 ; [#uses=6]
+ %dl = alloca [3 x %struct.btQuadWord], align 8 ; [#uses=18]
+ %subw = alloca [3 x float], align 4 ; [#uses=3]
+ %subm = alloca i32, align 4 ; [#uses=3]
+ %0 = getelementptr inbounds [4 x %struct.btQuadWord*]* %vt, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds [4 x %struct.btQuadWord*]* %vt, i32 0, i32 1 ; [#uses=1]
+ %2 = getelementptr inbounds [4 x %struct.btQuadWord*]* %vt, i32 0, i32 2 ; [#uses=1]
+ %3 = getelementptr inbounds [4 x %struct.btQuadWord*]* %vt, i32 0, i32 3 ; [#uses=1]
+ store %struct.btQuadWord* %a, %struct.btQuadWord** %0, align 4
+ store %struct.btQuadWord* %b, %struct.btQuadWord** %1, align 4
+ store %struct.btQuadWord* %c, %struct.btQuadWord** %2, align 4
+ store %struct.btQuadWord* %d, %struct.btQuadWord** %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 2 ; [#uses=3]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 2 ; [#uses=5]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = fsub float %5, %7 ; [#uses=4]
+ %9 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 1 ; [#uses=3]
+ %10 = load float* %9, align 4 ; [#uses=3]
+ %11 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 1 ; [#uses=5]
+ %12 = load float* %11, align 4 ; [#uses=3]
+ %13 = fsub float %10, %12 ; [#uses=4]
+ %14 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 0 ; [#uses=3]
+ %15 = load float* %14, align 4 ; [#uses=3]
+ %16 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 0 ; [#uses=5]
+ %17 = load float* %16, align 4 ; [#uses=3]
+ %18 = fsub float %15, %17 ; [#uses=4]
+ %19 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %18, float* %19, align 8
+ %20 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %13, float* %20, align 4
+ %21 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %8, float* %21, align 8
+ %22 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 2 ; [#uses=3]
+ %24 = load float* %23, align 4 ; [#uses=3]
+ %25 = fsub float %24, %7 ; [#uses=3]
+ %26 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 1 ; [#uses=3]
+ %27 = load float* %26, align 4 ; [#uses=3]
+ %28 = fsub float %27, %12 ; [#uses=3]
+ %29 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 0 ; [#uses=3]
+ %30 = load float* %29, align 4 ; [#uses=3]
+ %31 = fsub float %30, %17 ; [#uses=3]
+ %32 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %31, float* %32, align 8
+ %33 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %28, float* %33, align 4
+ %34 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %25, float* %34, align 8
+ %35 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 2 ; [#uses=3]
+ %37 = load float* %36, align 4 ; [#uses=2]
+ %38 = fsub float %37, %7 ; [#uses=3]
+ %39 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 1 ; [#uses=3]
+ %40 = load float* %39, align 4 ; [#uses=2]
+ %41 = fsub float %40, %12 ; [#uses=3]
+ %42 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 0 ; [#uses=3]
+ %43 = load float* %42, align 4 ; [#uses=2]
+ %44 = fsub float %43, %17 ; [#uses=3]
+ %45 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %44, float* %45, align 8
+ %46 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %41, float* %46, align 4
+ %47 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %38, float* %47, align 8
+ %48 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %48, align 4
+ %49 = fmul float %13, %25 ; [#uses=1]
+ %50 = fmul float %49, %44 ; [#uses=1]
+ %51 = fmul float %8, %31 ; [#uses=1]
+ %52 = fmul float %51, %41 ; [#uses=1]
+ %53 = fadd float %50, %52 ; [#uses=1]
+ %54 = fmul float %18, %25 ; [#uses=1]
+ %55 = fmul float %54, %41 ; [#uses=1]
+ %56 = fsub float %53, %55 ; [#uses=1]
+ %57 = fmul float %13, %31 ; [#uses=1]
+ %58 = fmul float %57, %38 ; [#uses=1]
+ %59 = fsub float %56, %58 ; [#uses=1]
+ %60 = fmul float %18, %28 ; [#uses=1]
+ %61 = fmul float %60, %38 ; [#uses=1]
+ %62 = fadd float %59, %61 ; [#uses=1]
+ %63 = fmul float %8, %28 ; [#uses=1]
+ %64 = fmul float %63, %44 ; [#uses=1]
+ %65 = fsub float %62, %64 ; [#uses=6]
+ %66 = fsub float %5, %24 ; [#uses=2]
+ %67 = fsub float %10, %27 ; [#uses=2]
+ %68 = fsub float %15, %30 ; [#uses=2]
+ %69 = fsub float %24, %37 ; [#uses=2]
+ %70 = fsub float %27, %40 ; [#uses=2]
+ %71 = fsub float %30, %43 ; [#uses=2]
+ %72 = fmul float %71, %67 ; [#uses=1]
+ %73 = fmul float %70, %68 ; [#uses=1]
+ %74 = fsub float %72, %73 ; [#uses=1]
+ %75 = fmul float %69, %68 ; [#uses=1]
+ %76 = fmul float %71, %66 ; [#uses=1]
+ %77 = fsub float %75, %76 ; [#uses=1]
+ %78 = fmul float %70, %66 ; [#uses=1]
+ %79 = fmul float %69, %67 ; [#uses=1]
+ %80 = fsub float %78, %79 ; [#uses=1]
+ %81 = fmul float %15, %80 ; [#uses=1]
+ %82 = fmul float %10, %77 ; [#uses=1]
+ %83 = fadd float %81, %82 ; [#uses=1]
+ %84 = fmul float %5, %74 ; [#uses=1]
+ %85 = fadd float %83, %84 ; [#uses=1]
+ %86 = fmul float %85, %65 ; [#uses=1]
+ %toBoolnot = fcmp ugt float %86, 0.000000e+00 ; [#uses=1]
+ br i1 %toBoolnot, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %87 = call float @fabsf(float %65) nounwind readnone ; [#uses=1]
+ %88 = fcmp ule float %87, 0.000000e+00 ; [#uses=1]
+ br i1 %88, label %bb5, label %bb.nph
+
+bb5: ; preds = %bb, %entry
+ ret float -1.000000e+00
+
+bb.nph: ; preds = %bb
+ %89 = getelementptr inbounds [3 x float]* %subw, i32 0, i32 0 ; [#uses=3]
+ store float 0.000000e+00, float* %89, align 4
+ %90 = getelementptr inbounds [3 x float]* %subw, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %90, align 4
+ %91 = getelementptr inbounds [3 x float]* %subw, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %91, align 4
+ store i32 0, i32* %subm, align 4
+ %92 = getelementptr inbounds float* %w, i32 3 ; [#uses=1]
+ br label %bb9
+
+bb9: ; preds = %bb23.bb9_crit_edge, %bb.nph
+ %93 = phi float [ %8, %bb.nph ], [ %.pre60, %bb23.bb9_crit_edge ] ; [#uses=2]
+ %94 = phi float [ %13, %bb.nph ], [ %.pre59, %bb23.bb9_crit_edge ] ; [#uses=2]
+ %95 = phi float [ %18, %bb.nph ], [ %.pre, %bb23.bb9_crit_edge ] ; [#uses=2]
+ %96 = phi i32 [ 0, %bb.nph ], [ %146, %bb23.bb9_crit_edge ] ; [#uses=5]
+ %mindist.151 = phi float [ -1.000000e+00, %bb.nph ], [ %mindist.0, %bb23.bb9_crit_edge ] ; [#uses=4]
+ %scevgep = getelementptr [3 x i32]* @_ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_S3_PfRjE4imd3, i32 0, i32 %96 ; [#uses=1]
+ %scevgep54 = getelementptr float* %w, i32 %96 ; [#uses=1]
+ %97 = load i32* %scevgep, align 4 ; [#uses=7]
+ %98 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 %97, i32 0, i32 1 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=2]
+ %100 = fmul float %95, %99 ; [#uses=1]
+ %101 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 %97, i32 0, i32 0 ; [#uses=1]
+ %102 = load float* %101, align 8 ; [#uses=2]
+ %103 = fmul float %94, %102 ; [#uses=1]
+ %104 = fsub float %100, %103 ; [#uses=1]
+ %105 = fmul float %93, %102 ; [#uses=1]
+ %106 = getelementptr inbounds [3 x %struct.btQuadWord]* %dl, i32 0, i32 %97, i32 0, i32 2 ; [#uses=1]
+ %107 = load float* %106, align 8 ; [#uses=2]
+ %108 = fmul float %95, %107 ; [#uses=1]
+ %109 = fsub float %105, %108 ; [#uses=1]
+ %110 = fmul float %94, %107 ; [#uses=1]
+ %111 = fmul float %93, %99 ; [#uses=1]
+ %112 = fsub float %110, %111 ; [#uses=1]
+ %113 = load float* %16, align 4 ; [#uses=1]
+ %114 = fmul float %113, %112 ; [#uses=1]
+ %115 = load float* %11, align 4 ; [#uses=1]
+ %116 = fmul float %115, %109 ; [#uses=1]
+ %117 = fadd float %114, %116 ; [#uses=1]
+ %118 = load float* %6, align 4 ; [#uses=1]
+ %119 = fmul float %118, %104 ; [#uses=1]
+ %120 = fadd float %117, %119 ; [#uses=1]
+ %121 = fmul float %120, %65 ; [#uses=1]
+ %122 = fcmp ogt float %121, 0.000000e+00 ; [#uses=1]
+ br i1 %122, label %bb10, label %bb23
+
+bb10: ; preds = %bb9
+ %scevgep53 = getelementptr [4 x %struct.btQuadWord*]* %vt, i32 0, i32 %96 ; [#uses=1]
+ %123 = getelementptr inbounds [4 x %struct.btQuadWord*]* %vt, i32 0, i32 %97 ; [#uses=1]
+ %124 = load %struct.btQuadWord** %123, align 4 ; [#uses=1]
+ %125 = load %struct.btQuadWord** %scevgep53, align 4 ; [#uses=1]
+ %126 = call float @_ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRj(%struct.btQuadWord* %125, %struct.btQuadWord* %124, %struct.btQuadWord* %d, float* %89, i32* %subm) nounwind ; [#uses=2]
+ %127 = fcmp olt float %mindist.151, 0.000000e+00 ; [#uses=1]
+ %128 = fcmp olt float %126, %mindist.151 ; [#uses=1]
+ %or.cond = or i1 %127, %128 ; [#uses=1]
+ br i1 %or.cond, label %bb12, label %bb23
+
+bb12: ; preds = %bb10
+ %129 = load i32* %subm, align 4 ; [#uses=3]
+ %130 = and i32 %129, 1 ; [#uses=1]
+ %toBool13 = icmp eq i32 %130, 0 ; [#uses=1]
+ %131 = shl i32 1, %96 ; [#uses=1]
+ %iftmp.192.0 = select i1 %toBool13, i32 0, i32 %131 ; [#uses=1]
+ %132 = and i32 %129, 2 ; [#uses=1]
+ %133 = icmp eq i32 %132, 0 ; [#uses=1]
+ %134 = shl i32 1, %97 ; [#uses=1]
+ %iftmp.195.0 = select i1 %133, i32 0, i32 %134 ; [#uses=1]
+ %135 = and i32 %129, 4 ; [#uses=1]
+ %136 = icmp eq i32 %135, 0 ; [#uses=1]
+ %iftmp.198.0 = select i1 %136, i32 0, i32 8 ; [#uses=1]
+ %137 = add nsw i32 %iftmp.192.0, %iftmp.195.0 ; [#uses=1]
+ %138 = add nsw i32 %137, %iftmp.198.0 ; [#uses=1]
+ store i32 %138, i32* %m, align 4
+ %139 = load float* %89, align 4 ; [#uses=1]
+ store float %139, float* %scevgep54, align 4
+ %140 = load float* %90, align 4 ; [#uses=1]
+ %141 = getelementptr inbounds float* %w, i32 %97 ; [#uses=1]
+ store float %140, float* %141, align 4
+ %142 = getelementptr inbounds [3 x i32]* @_ZZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_S3_PfRjE4imd3, i32 0, i32 %97 ; [#uses=1]
+ %143 = load i32* %142, align 4 ; [#uses=1]
+ %144 = getelementptr inbounds float* %w, i32 %143 ; [#uses=1]
+ store float 0.000000e+00, float* %144, align 4
+ %145 = load float* %91, align 4 ; [#uses=1]
+ store float %145, float* %92, align 4
+ br label %bb23
+
+bb23: ; preds = %bb12, %bb10, %bb9
+ %mindist.0 = phi float [ %126, %bb12 ], [ %mindist.151, %bb9 ], [ %mindist.151, %bb10 ] ; [#uses=3]
+ %146 = add i32 %96, 1 ; [#uses=5]
+ %exitcond = icmp eq i32 %146, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb25, label %bb23.bb9_crit_edge
+
+bb23.bb9_crit_edge: ; preds = %bb23
+ %scevgep5556.phi.trans.insert = getelementptr [3 x %struct.btQuadWord]* %dl, i32 0, i32 %146, i32 0, i32 0 ; [#uses=1]
+ %.pre = load float* %scevgep5556.phi.trans.insert, align 8 ; [#uses=1]
+ %scevgep57.phi.trans.insert = getelementptr [3 x %struct.btQuadWord]* %dl, i32 0, i32 %146, i32 0, i32 1 ; [#uses=1]
+ %.pre59 = load float* %scevgep57.phi.trans.insert, align 4 ; [#uses=1]
+ %scevgep58.phi.trans.insert = getelementptr [3 x %struct.btQuadWord]* %dl, i32 0, i32 %146, i32 0, i32 2 ; [#uses=1]
+ %.pre60 = load float* %scevgep58.phi.trans.insert, align 8 ; [#uses=1]
+ br label %bb9
+
+bb25: ; preds = %bb23
+ %147 = fcmp olt float %mindist.0, 0.000000e+00 ; [#uses=1]
+ br i1 %147, label %bb26, label %bb29
+
+bb26: ; preds = %bb25
+ store i32 15, i32* %m, align 4
+ %148 = load float* %39, align 4 ; [#uses=2]
+ %149 = load float* %23, align 4 ; [#uses=2]
+ %150 = fmul float %148, %149 ; [#uses=1]
+ %151 = load float* %16, align 4 ; [#uses=2]
+ %152 = fmul float %150, %151 ; [#uses=1]
+ %153 = load float* %36, align 4 ; [#uses=2]
+ %154 = load float* %29, align 4 ; [#uses=2]
+ %155 = fmul float %153, %154 ; [#uses=1]
+ %156 = load float* %11, align 4 ; [#uses=2]
+ %157 = fmul float %155, %156 ; [#uses=1]
+ %158 = fadd float %152, %157 ; [#uses=1]
+ %159 = load float* %42, align 4 ; [#uses=2]
+ %160 = fmul float %159, %149 ; [#uses=1]
+ %161 = fmul float %160, %156 ; [#uses=1]
+ %162 = fsub float %158, %161 ; [#uses=1]
+ %163 = fmul float %148, %154 ; [#uses=1]
+ %164 = load float* %6, align 4 ; [#uses=2]
+ %165 = fmul float %163, %164 ; [#uses=1]
+ %166 = fsub float %162, %165 ; [#uses=1]
+ %167 = load float* %26, align 4 ; [#uses=2]
+ %168 = fmul float %159, %167 ; [#uses=1]
+ %169 = fmul float %168, %164 ; [#uses=1]
+ %170 = fadd float %166, %169 ; [#uses=1]
+ %171 = fmul float %153, %167 ; [#uses=1]
+ %172 = fmul float %171, %151 ; [#uses=1]
+ %173 = fsub float %170, %172 ; [#uses=1]
+ %174 = fdiv float %173, %65 ; [#uses=2]
+ store float %174, float* %w, align 4
+ %175 = load float* %9, align 4 ; [#uses=2]
+ %176 = load float* %36, align 4 ; [#uses=2]
+ %177 = fmul float %175, %176 ; [#uses=1]
+ %178 = load float* %16, align 4 ; [#uses=2]
+ %179 = fmul float %177, %178 ; [#uses=1]
+ %180 = load float* %4, align 4 ; [#uses=2]
+ %181 = load float* %42, align 4 ; [#uses=2]
+ %182 = fmul float %180, %181 ; [#uses=1]
+ %183 = load float* %11, align 4 ; [#uses=2]
+ %184 = fmul float %182, %183 ; [#uses=1]
+ %185 = fadd float %179, %184 ; [#uses=1]
+ %186 = load float* %14, align 4 ; [#uses=2]
+ %187 = fmul float %186, %176 ; [#uses=1]
+ %188 = fmul float %187, %183 ; [#uses=1]
+ %189 = fsub float %185, %188 ; [#uses=1]
+ %190 = fmul float %175, %181 ; [#uses=1]
+ %191 = load float* %6, align 4 ; [#uses=2]
+ %192 = fmul float %190, %191 ; [#uses=1]
+ %193 = fsub float %189, %192 ; [#uses=1]
+ %194 = load float* %39, align 4 ; [#uses=2]
+ %195 = fmul float %186, %194 ; [#uses=1]
+ %196 = fmul float %195, %191 ; [#uses=1]
+ %197 = fadd float %193, %196 ; [#uses=1]
+ %198 = fmul float %180, %194 ; [#uses=1]
+ %199 = fmul float %198, %178 ; [#uses=1]
+ %200 = fsub float %197, %199 ; [#uses=1]
+ %201 = fdiv float %200, %65 ; [#uses=2]
+ %202 = getelementptr inbounds float* %w, i32 1 ; [#uses=1]
+ store float %201, float* %202, align 4
+ %203 = load float* %26, align 4 ; [#uses=2]
+ %204 = load float* %4, align 4 ; [#uses=2]
+ %205 = fmul float %203, %204 ; [#uses=1]
+ %206 = load float* %16, align 4 ; [#uses=2]
+ %207 = fmul float %205, %206 ; [#uses=1]
+ %208 = load float* %23, align 4 ; [#uses=2]
+ %209 = load float* %14, align 4 ; [#uses=2]
+ %210 = fmul float %208, %209 ; [#uses=1]
+ %211 = load float* %11, align 4 ; [#uses=2]
+ %212 = fmul float %210, %211 ; [#uses=1]
+ %213 = fadd float %207, %212 ; [#uses=1]
+ %214 = load float* %29, align 4 ; [#uses=2]
+ %215 = fmul float %214, %204 ; [#uses=1]
+ %216 = fmul float %215, %211 ; [#uses=1]
+ %217 = fsub float %213, %216 ; [#uses=1]
+ %218 = fmul float %203, %209 ; [#uses=1]
+ %219 = load float* %6, align 4 ; [#uses=2]
+ %220 = fmul float %218, %219 ; [#uses=1]
+ %221 = fsub float %217, %220 ; [#uses=1]
+ %222 = load float* %9, align 4 ; [#uses=2]
+ %223 = fmul float %214, %222 ; [#uses=1]
+ %224 = fmul float %223, %219 ; [#uses=1]
+ %225 = fadd float %221, %224 ; [#uses=1]
+ %226 = fmul float %208, %222 ; [#uses=1]
+ %227 = fmul float %226, %206 ; [#uses=1]
+ %228 = fsub float %225, %227 ; [#uses=1]
+ %229 = fdiv float %228, %65 ; [#uses=2]
+ %230 = getelementptr inbounds float* %w, i32 2 ; [#uses=1]
+ store float %229, float* %230, align 4
+ %231 = fadd float %174, %201 ; [#uses=1]
+ %232 = fadd float %231, %229 ; [#uses=1]
+ %233 = fsub float 1.000000e+00, %232 ; [#uses=1]
+ %234 = getelementptr inbounds float* %w, i32 3 ; [#uses=1]
+ store float %233, float* %234, align 4
+ ret float 0.000000e+00
+
+bb29: ; preds = %bb25
+ ret float %mindist.0
+}
+
+; [#uses=3]
+define linkonce_odr i32 @_ZN12gjkepa2_impl3GJK8EvaluateERKNS_13MinkowskiDiffERK9btVector3(%"struct.gjkepa2_impl::GJK"* %this, %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, %struct.btQuadWord* nocapture %guess) align 2 {
+bb2:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=9]
+ %alpha = alloca float, align 4 ; [#uses=7]
+ %lastw = alloca [4 x %struct.btQuadWord], align 8 ; [#uses=23]
+ %weights = alloca [4 x float], align 4 ; [#uses=2]
+ %mask = alloca i32, align 4 ; [#uses=5]
+ store float 0.000000e+00, float* %alpha, align 4
+ %2 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 4, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 0 ; [#uses=1]
+ store %struct.GIM_AABB* %2, %struct.GIM_AABB** %3, align 4
+ %4 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store %struct.GIM_AABB* %4, %struct.GIM_AABB** %5, align 4
+ %6 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store %struct.GIM_AABB* %6, %struct.GIM_AABB** %7, align 4
+ %8 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %9 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ store %struct.GIM_AABB* %8, %struct.GIM_AABB** %9, align 4
+ %10 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 6 ; [#uses=12]
+ store i32 4, i32* %10, align 4
+ %11 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 7 ; [#uses=7]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 9 ; [#uses=6]
+ store i32 0, i32* %12, align 4
+ %13 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load %struct.btConvexShape** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = load %struct.btConvexShape** %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store %struct.btConvexShape* %14, %struct.btConvexShape** %17, align 4
+ %18 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store %struct.btConvexShape* %16, %struct.btConvexShape** %18, align 4
+ %19 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %20 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %23 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %26 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %29 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %35 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %38 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %41 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %44 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %47 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %50 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 4
+ %52 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 1, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %53 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 1, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ %55 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %56 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ store float %57, float* %55, align 4
+ %58 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %59 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ store float %60, float* %58, align 4
+ %61 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %62 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ store float %63, float* %61, align 4
+ %64 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %65 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %64, align 4
+ %67 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %68 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ store float %69, float* %67, align 4
+ %70 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %71 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %70, align 4
+ %73 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %74 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ store float %75, float* %73, align 4
+ %76 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %77 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ store float %78, float* %76, align 4
+ %79 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %80 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ store float %81, float* %79, align 4
+ %82 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %83 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %82, align 4
+ %85 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %86 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ store float %87, float* %85, align 4
+ %88 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %89 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ store float %90, float* %88, align 4
+ %91 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %92 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ store float %93, float* %91, align 4
+ %94 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %95 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %94, align 4
+ %97 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %98 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ store float %99, float* %97, align 4
+ %100 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %101 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ store float %102, float* %100, align 4
+ %103 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 3, i32 0 ; [#uses=1]
+ %104 = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %103, align 4 ; [#uses=1]
+ %105 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shapearg, i32 0, i32 3, i32 1 ; [#uses=1]
+ %106 = load i32* %105, align 4 ; [#uses=1]
+ %107 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 3, i32 0 ; [#uses=1]
+ store void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* %104, void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %107, align 4
+ %108 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 %106, i32* %108, align 4
+ %109 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 2 ; [#uses=3]
+ store float 0.000000e+00, float* %109, align 4
+ %110 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ store i32 0, i32* %110, align 4
+ %111 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=8]
+ %112 = getelementptr inbounds %struct.btQuadWord* %guess, i32 0, i32 0, i32 0 ; [#uses=1]
+ %113 = load float* %112, align 4 ; [#uses=4]
+ store float %113, float* %111, align 4
+ %114 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=8]
+ %115 = getelementptr inbounds %struct.btQuadWord* %guess, i32 0, i32 0, i32 1 ; [#uses=1]
+ %116 = load float* %115, align 4 ; [#uses=4]
+ store float %116, float* %114, align 4
+ %117 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=8]
+ %118 = getelementptr inbounds %struct.btQuadWord* %guess, i32 0, i32 0, i32 2 ; [#uses=1]
+ %119 = load float* %118, align 4 ; [#uses=4]
+ store float %119, float* %117, align 4
+ %120 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ %121 = getelementptr inbounds %struct.btQuadWord* %guess, i32 0, i32 0, i32 3 ; [#uses=1]
+ %122 = load float* %121, align 4 ; [#uses=1]
+ store float %122, float* %120, align 4
+ %123 = fmul float %113, %113 ; [#uses=1]
+ %124 = fmul float %116, %116 ; [#uses=1]
+ %125 = fadd float %123, %124 ; [#uses=1]
+ %126 = fmul float %119, %119 ; [#uses=1]
+ %127 = fadd float %125, %126 ; [#uses=2]
+ %128 = fcmp ogt float %127, 0.000000e+00 ; [#uses=1]
+ br i1 %128, label %bb3, label %bb4
+
+bb3: ; preds = %bb2
+ %129 = fsub float -0.000000e+00, %119 ; [#uses=1]
+ %130 = fsub float -0.000000e+00, %116 ; [#uses=1]
+ %131 = fsub float -0.000000e+00, %113 ; [#uses=1]
+ %132 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %131, float* %132, align 8
+ %133 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %130, float* %133, align 4
+ %134 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %129, float* %134, align 8
+ %135 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %135, align 4
+ br label %bb5
+
+bb4: ; preds = %bb2
+ %136 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %136, align 8
+ %137 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %137, align 4
+ %138 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %138, align 8
+ %139 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %139, align 4
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ %140 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 0, i32 1, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %140, align 4
+ store i32 3, i32* %10, align 4
+ %141 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ %142 = load %struct.GIM_AABB** %141, align 4 ; [#uses=2]
+ %143 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 0, i32 0, i32 0 ; [#uses=2]
+ store %struct.GIM_AABB* %142, %struct.GIM_AABB** %143, align 4
+ store i32 1, i32* %110, align 4
+ call void @_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(%"struct.gjkepa2_impl::GJK"* %this, %struct.btQuadWord* %1, %struct.GIM_AABB* %142)
+ store float 1.000000e+00, float* %140, align 4
+ %144 = load %struct.GIM_AABB** %143, align 4 ; [#uses=4]
+ %145 = getelementptr inbounds %struct.GIM_AABB* %144, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %146 = load float* %145, align 4 ; [#uses=6]
+ store float %146, float* %111, align 4
+ %147 = getelementptr inbounds %struct.GIM_AABB* %144, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %148 = load float* %147, align 4 ; [#uses=6]
+ store float %148, float* %114, align 4
+ %149 = getelementptr inbounds %struct.GIM_AABB* %144, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %150 = load float* %149, align 4 ; [#uses=6]
+ store float %150, float* %117, align 4
+ %151 = getelementptr inbounds %struct.GIM_AABB* %144, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %152 = load float* %151, align 4 ; [#uses=5]
+ store float %152, float* %120, align 4
+ %153 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %146, float* %153, align 8
+ %154 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %148, float* %154, align 4
+ %155 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %150, float* %155, align 8
+ %156 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float %152, float* %156, align 4
+ %157 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %146, float* %157, align 8
+ %158 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %148, float* %158, align 4
+ %159 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %150, float* %159, align 8
+ %160 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %152, float* %160, align 4
+ %161 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %146, float* %161, align 8
+ %162 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %148, float* %162, align 4
+ %163 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %150, float* %163, align 8
+ %164 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %152, float* %164, align 4
+ %165 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %146, float* %165, align 8
+ %166 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %148, float* %166, align 4
+ %167 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %150, float* %167, align 8
+ %168 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %152, float* %168, align 4
+ %169 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %170 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %172 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %173 = getelementptr inbounds [4 x float]* %weights, i32 0, i32 0 ; [#uses=3]
+ br label %bb6
+
+bb6: ; preds = %bb36.bb6_crit_edge, %bb5
+ %174 = phi float [ %150, %bb5 ], [ %.pre82, %bb36.bb6_crit_edge ] ; [#uses=3]
+ %175 = phi float [ %148, %bb5 ], [ %.pre81, %bb36.bb6_crit_edge ] ; [#uses=3]
+ %176 = phi float [ %146, %bb5 ], [ %.pre, %bb36.bb6_crit_edge ] ; [#uses=3]
+ %177 = phi float [ 0.000000e+00, %bb5 ], [ %259, %bb36.bb6_crit_edge ] ; [#uses=4]
+ %iterations.0 = phi i32 [ 1, %bb5 ], [ %phitmp, %bb36.bb6_crit_edge ] ; [#uses=2]
+ %sqdist.1 = phi float [ %127, %bb5 ], [ %sqdist.0, %bb36.bb6_crit_edge ] ; [#uses=1]
+ %clastw.0 = phi i32 [ 1, %bb5 ], [ %phitmp85, %bb36.bb6_crit_edge ] ; [#uses=5]
+ %178 = load i32* %11, align 4 ; [#uses=16]
+ %179 = sub i32 1, %178 ; [#uses=4]
+ %180 = fmul float %176, %176 ; [#uses=1]
+ %181 = fmul float %175, %175 ; [#uses=1]
+ %182 = fadd float %180, %181 ; [#uses=1]
+ %183 = fmul float %174, %174 ; [#uses=1]
+ %184 = fadd float %182, %183 ; [#uses=1]
+ %185 = call float @sqrtf(float %184) nounwind readonly ; [#uses=4]
+ %186 = fcmp olt float %185, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %186, label %bb7, label %bb8
+
+bb7: ; preds = %bb6
+ store float %177, float* %alpha, align 4
+ store i32 1, i32* %12, align 4
+ br label %bb37
+
+bb8: ; preds = %bb6
+ %187 = fsub float -0.000000e+00, %174 ; [#uses=1]
+ %188 = fsub float -0.000000e+00, %175 ; [#uses=1]
+ %189 = fsub float -0.000000e+00, %176 ; [#uses=1]
+ store float %189, float* %169, align 8
+ store float %188, float* %170, align 4
+ store float %187, float* %171, align 8
+ store float 0.000000e+00, float* %172, align 4
+ %190 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 2 ; [#uses=6]
+ %191 = load i32* %190, align 4 ; [#uses=1]
+ %192 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 1, i32 %191 ; [#uses=1]
+ store float 0.000000e+00, float* %192, align 4
+ %193 = load i32* %190, align 4 ; [#uses=1]
+ %194 = load i32* %10, align 4 ; [#uses=1]
+ %195 = add i32 %194, -1 ; [#uses=2]
+ store i32 %195, i32* %10, align 4
+ %196 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %195 ; [#uses=1]
+ %197 = load %struct.GIM_AABB** %196, align 4 ; [#uses=1]
+ %198 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 0, i32 %193 ; [#uses=1]
+ store %struct.GIM_AABB* %197, %struct.GIM_AABB** %198, align 4
+ %199 = load i32* %190, align 4 ; [#uses=2]
+ %200 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 0, i32 %199 ; [#uses=1]
+ %201 = load %struct.GIM_AABB** %200, align 4 ; [#uses=1]
+ %202 = add i32 %199, 1 ; [#uses=1]
+ store i32 %202, i32* %190, align 4
+ call void @_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(%"struct.gjkepa2_impl::GJK"* %this, %struct.btQuadWord* %0, %struct.GIM_AABB* %201)
+ %203 = load i32* %190, align 4 ; [#uses=2]
+ %204 = add i32 %203, -1 ; [#uses=1]
+ %205 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 0, i32 %204 ; [#uses=1]
+ %206 = load %struct.GIM_AABB** %205, align 4 ; [#uses=4]
+ %207 = getelementptr inbounds %struct.GIM_AABB* %206, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %208 = getelementptr inbounds %struct.GIM_AABB* %206, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %209 = getelementptr inbounds %struct.GIM_AABB* %206, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ br label %bb12
+
+bb9: ; preds = %bb12
+ %scevgep68 = getelementptr [4 x %struct.btQuadWord]* %lastw, i32 0, i32 %226, i32 0, i32 2 ; [#uses=1]
+ %scevgep67 = getelementptr [4 x %struct.btQuadWord]* %lastw, i32 0, i32 %226, i32 0, i32 1 ; [#uses=1]
+ %scevgep66 = getelementptr [4 x %struct.btQuadWord]* %lastw, i32 0, i32 %226, i32 0, i32 0 ; [#uses=1]
+ %210 = load float* %207, align 4 ; [#uses=1]
+ %211 = load float* %scevgep68, align 8 ; [#uses=1]
+ %212 = fsub float %210, %211 ; [#uses=2]
+ %213 = load float* %208, align 4 ; [#uses=1]
+ %214 = load float* %scevgep67, align 4 ; [#uses=1]
+ %215 = fsub float %213, %214 ; [#uses=2]
+ %216 = load float* %209, align 4 ; [#uses=1]
+ %217 = load float* %scevgep66, align 8 ; [#uses=1]
+ %218 = fsub float %216, %217 ; [#uses=2]
+ %219 = fmul float %218, %218 ; [#uses=1]
+ %220 = fmul float %215, %215 ; [#uses=1]
+ %221 = fadd float %219, %220 ; [#uses=1]
+ %222 = fmul float %212, %212 ; [#uses=1]
+ %223 = fadd float %221, %222 ; [#uses=1]
+ %224 = fcmp olt float %223, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %224, label %bb15, label %bb11
+
+bb11: ; preds = %bb9
+ %225 = add i32 %226, 1 ; [#uses=1]
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb8
+ %226 = phi i32 [ 0, %bb8 ], [ %225, %bb11 ] ; [#uses=5]
+ %227 = icmp ult i32 %226, 4 ; [#uses=1]
+ br i1 %227, label %bb9, label %bb16
+
+bb15: ; preds = %bb9
+ store float %177, float* %alpha, align 4
+ %228 = load i32* %11, align 4 ; [#uses=2]
+ %229 = load i32* %10, align 4 ; [#uses=2]
+ %230 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %228, i32 2 ; [#uses=2]
+ %231 = load i32* %230, align 4 ; [#uses=1]
+ %232 = add i32 %231, -1 ; [#uses=2]
+ store i32 %232, i32* %230, align 4
+ %233 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %228, i32 0, i32 %232 ; [#uses=1]
+ %234 = load %struct.GIM_AABB** %233, align 4 ; [#uses=1]
+ %235 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %229 ; [#uses=1]
+ store %struct.GIM_AABB* %234, %struct.GIM_AABB** %235, align 4
+ %236 = add i32 %229, 1 ; [#uses=1]
+ store i32 %236, i32* %10, align 4
+ br label %bb37
+
+bb16: ; preds = %bb12
+ %237 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 %clastw.0, i32 0, i32 0 ; [#uses=1]
+ %238 = load float* %209, align 4 ; [#uses=1]
+ store float %238, float* %237, align 8
+ %239 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 %clastw.0, i32 0, i32 1 ; [#uses=1]
+ %240 = load float* %208, align 4 ; [#uses=1]
+ store float %240, float* %239, align 4
+ %241 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 %clastw.0, i32 0, i32 2 ; [#uses=1]
+ %242 = load float* %207, align 4 ; [#uses=1]
+ store float %242, float* %241, align 8
+ %243 = getelementptr inbounds [4 x %struct.btQuadWord]* %lastw, i32 0, i32 %clastw.0, i32 0, i32 3 ; [#uses=1]
+ %244 = getelementptr inbounds %struct.GIM_AABB* %206, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %245 = load float* %244, align 4 ; [#uses=1]
+ store float %245, float* %243, align 4
+ %246 = load float* %111, align 4 ; [#uses=1]
+ %247 = load float* %209, align 4 ; [#uses=1]
+ %248 = fmul float %246, %247 ; [#uses=1]
+ %249 = load float* %114, align 4 ; [#uses=1]
+ %250 = load float* %208, align 4 ; [#uses=1]
+ %251 = fmul float %249, %250 ; [#uses=1]
+ %252 = fadd float %248, %251 ; [#uses=1]
+ %253 = load float* %117, align 4 ; [#uses=1]
+ %254 = load float* %207, align 4 ; [#uses=1]
+ %255 = fmul float %253, %254 ; [#uses=1]
+ %256 = fadd float %252, %255 ; [#uses=1]
+ %257 = fdiv float %256, %185 ; [#uses=2]
+ %258 = fcmp ogt float %257, %177 ; [#uses=1]
+ %259 = select i1 %258, float %257, float %177 ; [#uses=6]
+ %260 = fsub float %185, %259 ; [#uses=1]
+ %261 = fmul float %185, 0xBF1A36E2E0000000 ; [#uses=1]
+ %262 = fadd float %260, %261 ; [#uses=1]
+ %263 = fcmp ugt float %262, 0.000000e+00 ; [#uses=1]
+ br i1 %263, label %bb18, label %bb17
+
+bb17: ; preds = %bb16
+ store float %259, float* %alpha, align 4
+ %264 = load i32* %11, align 4 ; [#uses=2]
+ %265 = load i32* %10, align 4 ; [#uses=2]
+ %266 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %264, i32 2 ; [#uses=2]
+ %267 = load i32* %266, align 4 ; [#uses=1]
+ %268 = add i32 %267, -1 ; [#uses=2]
+ store i32 %268, i32* %266, align 4
+ %269 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %264, i32 0, i32 %268 ; [#uses=1]
+ %270 = load %struct.GIM_AABB** %269, align 4 ; [#uses=1]
+ %271 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %265 ; [#uses=1]
+ store %struct.GIM_AABB* %270, %struct.GIM_AABB** %271, align 4
+ %272 = add i32 %265, 1 ; [#uses=1]
+ store i32 %272, i32* %10, align 4
+ br label %bb37
+
+bb18: ; preds = %bb16
+ store i32 0, i32* %mask, align 4
+ switch i32 %203, label %bb22 [
+ i32 2, label %bb19
+ i32 3, label %bb20
+ i32 4, label %bb21
+ ]
+
+bb19: ; preds = %bb18
+ %273 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 0, i32 1 ; [#uses=1]
+ %274 = load %struct.GIM_AABB** %273, align 4 ; [#uses=1]
+ %275 = getelementptr inbounds %struct.GIM_AABB* %274, i32 0, i32 1 ; [#uses=1]
+ %276 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 0, i32 0 ; [#uses=1]
+ %277 = load %struct.GIM_AABB** %276, align 4 ; [#uses=1]
+ %278 = getelementptr inbounds %struct.GIM_AABB* %277, i32 0, i32 1 ; [#uses=1]
+ %279 = call float @_ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_PfRj(%struct.btQuadWord* %278, %struct.btQuadWord* %275, float* %173, i32* %mask) nounwind ; [#uses=1]
+ br label %bb22
+
+bb20: ; preds = %bb18
+ %280 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 0, i32 2 ; [#uses=1]
+ %281 = load %struct.GIM_AABB** %280, align 4 ; [#uses=1]
+ %282 = getelementptr inbounds %struct.GIM_AABB* %281, i32 0, i32 1 ; [#uses=1]
+ %283 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 0, i32 1 ; [#uses=1]
+ %284 = load %struct.GIM_AABB** %283, align 4 ; [#uses=1]
+ %285 = getelementptr inbounds %struct.GIM_AABB* %284, i32 0, i32 1 ; [#uses=1]
+ %286 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 0, i32 0 ; [#uses=1]
+ %287 = load %struct.GIM_AABB** %286, align 4 ; [#uses=1]
+ %288 = getelementptr inbounds %struct.GIM_AABB* %287, i32 0, i32 1 ; [#uses=1]
+ %289 = call float @_ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_PfRj(%struct.btQuadWord* %288, %struct.btQuadWord* %285, %struct.btQuadWord* %282, float* %173, i32* %mask) nounwind ; [#uses=1]
+ br label %bb22
+
+bb21: ; preds = %bb18
+ %290 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 0, i32 3 ; [#uses=1]
+ %291 = load %struct.GIM_AABB** %290, align 4 ; [#uses=1]
+ %292 = getelementptr inbounds %struct.GIM_AABB* %291, i32 0, i32 1 ; [#uses=1]
+ %293 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 0, i32 2 ; [#uses=1]
+ %294 = load %struct.GIM_AABB** %293, align 4 ; [#uses=1]
+ %295 = getelementptr inbounds %struct.GIM_AABB* %294, i32 0, i32 1 ; [#uses=1]
+ %296 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 0, i32 1 ; [#uses=1]
+ %297 = load %struct.GIM_AABB** %296, align 4 ; [#uses=1]
+ %298 = getelementptr inbounds %struct.GIM_AABB* %297, i32 0, i32 1 ; [#uses=1]
+ %299 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 0, i32 0 ; [#uses=1]
+ %300 = load %struct.GIM_AABB** %299, align 4 ; [#uses=1]
+ %301 = getelementptr inbounds %struct.GIM_AABB* %300, i32 0, i32 1 ; [#uses=1]
+ %302 = call float @_ZN12gjkepa2_impl3GJK13projectoriginERK9btVector3S3_S3_S3_PfRj(%struct.btQuadWord* %301, %struct.btQuadWord* %298, %struct.btQuadWord* %295, %struct.btQuadWord* %292, float* %173, i32* %mask) nounwind ; [#uses=1]
+ br label %bb22
+
+bb22: ; preds = %bb21, %bb20, %bb19, %bb18
+ %sqdist.0 = phi float [ %sqdist.1, %bb18 ], [ %302, %bb21 ], [ %289, %bb20 ], [ %279, %bb19 ] ; [#uses=2]
+ %303 = fcmp ult float %sqdist.0, 0.000000e+00 ; [#uses=1]
+ br i1 %303, label %bb32, label %bb23
+
+bb23: ; preds = %bb22
+ %304 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %179, i32 2 ; [#uses=4]
+ store i32 0, i32* %304, align 4
+ store float 0.000000e+00, float* %111, align 4
+ store float 0.000000e+00, float* %114, align 4
+ store float 0.000000e+00, float* %117, align 4
+ store float 0.000000e+00, float* %120, align 4
+ store i32 %179, i32* %11, align 4
+ %305 = load i32* %190, align 4 ; [#uses=2]
+ %306 = icmp eq i32 %305, 0 ; [#uses=1]
+ %.pre83 = load i32* %mask, align 4 ; [#uses=3]
+ br i1 %306, label %bb30, label %bb25
+
+bb25: ; preds = %bb28, %bb23
+ %307 = phi i32 [ %338, %bb28 ], [ 0, %bb23 ] ; [#uses=4]
+ %scevgep70 = getelementptr %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %178, i32 0, i32 %307 ; [#uses=3]
+ %308 = shl i32 1, %307 ; [#uses=1]
+ %309 = and i32 %.pre83, %308 ; [#uses=1]
+ %310 = icmp eq i32 %309, 0 ; [#uses=1]
+ br i1 %310, label %bb27, label %bb26
+
+bb26: ; preds = %bb25
+ %scevgep69 = getelementptr [4 x float]* %weights, i32 0, i32 %307 ; [#uses=1]
+ %311 = load i32* %304, align 4 ; [#uses=1]
+ %312 = load %struct.GIM_AABB** %scevgep70, align 4 ; [#uses=1]
+ %313 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %179, i32 0, i32 %311 ; [#uses=1]
+ store %struct.GIM_AABB* %312, %struct.GIM_AABB** %313, align 4
+ %314 = load i32* %304, align 4 ; [#uses=2]
+ %315 = load float* %scevgep69, align 4 ; [#uses=4]
+ %316 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %179, i32 1, i32 %314 ; [#uses=1]
+ store float %315, float* %316, align 4
+ %317 = add i32 %314, 1 ; [#uses=1]
+ store i32 %317, i32* %304, align 4
+ %318 = load %struct.GIM_AABB** %scevgep70, align 4 ; [#uses=3]
+ %319 = getelementptr inbounds %struct.GIM_AABB* %318, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %320 = load float* %319, align 4 ; [#uses=1]
+ %321 = fmul float %320, %315 ; [#uses=1]
+ %322 = getelementptr inbounds %struct.GIM_AABB* %318, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %323 = load float* %322, align 4 ; [#uses=1]
+ %324 = fmul float %323, %315 ; [#uses=1]
+ %325 = getelementptr inbounds %struct.GIM_AABB* %318, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %326 = load float* %325, align 4 ; [#uses=1]
+ %327 = fmul float %326, %315 ; [#uses=1]
+ %328 = load float* %111, align 4 ; [#uses=1]
+ %329 = fadd float %328, %327 ; [#uses=1]
+ store float %329, float* %111, align 4
+ %330 = load float* %114, align 4 ; [#uses=1]
+ %331 = fadd float %330, %324 ; [#uses=1]
+ store float %331, float* %114, align 4
+ %332 = load float* %117, align 4 ; [#uses=1]
+ %333 = fadd float %332, %321 ; [#uses=1]
+ store float %333, float* %117, align 4
+ br label %bb28
+
+bb27: ; preds = %bb25
+ %334 = load i32* %10, align 4 ; [#uses=2]
+ %335 = load %struct.GIM_AABB** %scevgep70, align 4 ; [#uses=1]
+ %336 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %334 ; [#uses=1]
+ store %struct.GIM_AABB* %335, %struct.GIM_AABB** %336, align 4
+ %337 = add i32 %334, 1 ; [#uses=1]
+ store i32 %337, i32* %10, align 4
+ br label %bb28
+
+bb28: ; preds = %bb27, %bb26
+ %338 = add i32 %307, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %338, %305 ; [#uses=1]
+ br i1 %exitcond, label %bb30, label %bb25
+
+bb30: ; preds = %bb28, %bb23
+ %339 = phi i32 [ %.pre83, %bb28 ], [ %.pre83, %bb23 ] ; [#uses=1]
+ %340 = icmp eq i32 %339, 15 ; [#uses=1]
+ br i1 %340, label %bb31, label %bb33
+
+bb31: ; preds = %bb30
+ store i32 1, i32* %12, align 4
+ br label %bb33
+
+bb32: ; preds = %bb22
+ store float %259, float* %alpha, align 4
+ %341 = load i32* %11, align 4 ; [#uses=2]
+ %342 = load i32* %10, align 4 ; [#uses=2]
+ %343 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %341, i32 2 ; [#uses=2]
+ %344 = load i32* %343, align 4 ; [#uses=1]
+ %345 = add i32 %344, -1 ; [#uses=2]
+ store i32 %345, i32* %343, align 4
+ %346 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %341, i32 0, i32 %345 ; [#uses=1]
+ %347 = load %struct.GIM_AABB** %346, align 4 ; [#uses=1]
+ %348 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 5, i32 %342 ; [#uses=1]
+ store %struct.GIM_AABB* %347, %struct.GIM_AABB** %348, align 4
+ %349 = add i32 %342, 1 ; [#uses=1]
+ store i32 %349, i32* %10, align 4
+ br label %bb37
+
+bb33: ; preds = %bb31, %bb30
+ %350 = icmp ult i32 %iterations.0, 128 ; [#uses=1]
+ br i1 %350, label %bb36, label %bb36.thread
+
+bb36.thread: ; preds = %bb33
+ store float %259, float* %alpha, align 4
+ store i32 2, i32* %12, align 4
+ br label %bb37
+
+bb36: ; preds = %bb33
+ %351 = load i32* %12, align 4 ; [#uses=1]
+ %352 = icmp eq i32 %351, 0 ; [#uses=1]
+ br i1 %352, label %bb36.bb6_crit_edge, label %bb37.loopexit
+
+bb36.bb6_crit_edge: ; preds = %bb36
+ %.pre = load float* %111, align 4 ; [#uses=1]
+ %.pre81 = load float* %114, align 4 ; [#uses=1]
+ %.pre82 = load float* %117, align 4 ; [#uses=1]
+ %phitmp = add i32 %iterations.0, 1 ; [#uses=1]
+ %phitmp84 = add i32 %clastw.0, 1 ; [#uses=1]
+ %phitmp85 = and i32 %phitmp84, 3 ; [#uses=1]
+ br label %bb6
+
+bb37.loopexit: ; preds = %bb36
+ store float %259, float* %alpha, align 4
+ br label %bb37
+
+bb37: ; preds = %bb37.loopexit, %bb36.thread, %bb32, %bb17, %bb15, %bb7
+ %353 = load i32* %11, align 4 ; [#uses=1]
+ %354 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 3, i32 %353 ; [#uses=1]
+ %355 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %this, i32 0, i32 8 ; [#uses=1]
+ store %"struct.gjkepa2_impl::GJK::sSimplex"* %354, %"struct.gjkepa2_impl::GJK::sSimplex"** %355, align 4
+ %356 = load i32* %12, align 4 ; [#uses=4]
+ switch i32 %356, label %bb40 [
+ i32 0, label %bb38
+ i32 1, label %bb39
+ ]
+
+bb38: ; preds = %bb37
+ %357 = load float* %111, align 4 ; [#uses=2]
+ %358 = fmul float %357, %357 ; [#uses=1]
+ %359 = load float* %114, align 4 ; [#uses=2]
+ %360 = fmul float %359, %359 ; [#uses=1]
+ %361 = fadd float %358, %360 ; [#uses=1]
+ %362 = load float* %117, align 4 ; [#uses=2]
+ %363 = fmul float %362, %362 ; [#uses=1]
+ %364 = fadd float %361, %363 ; [#uses=1]
+ %365 = call float @sqrtf(float %364) nounwind readonly ; [#uses=1]
+ store float %365, float* %109, align 4
+ ret i32 %356
+
+bb39: ; preds = %bb37
+ store float 0.000000e+00, float* %109, align 4
+ ret i32 %356
+
+bb40: ; preds = %bb37
+ ret i32 %356
+}
+
+; [#uses=5]
+define linkonce_odr %"struct.gjkepa2_impl::EPA::sFace"* @_ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(%"struct.gjkepa2_impl::EPA"* nocapture %this, %struct.GIM_AABB* %a, %struct.GIM_AABB* %b, %struct.GIM_AABB* %c, i8 zeroext %forced) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 8, i32 0 ; [#uses=6]
+ %1 = load %"struct.gjkepa2_impl::EPA::sFace"** %0, align 4 ; [#uses=21]
+ %2 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %1, null ; [#uses=1]
+ br i1 %2, label %bb18, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %1, i32 0, i32 5, i32 1 ; [#uses=8]
+ %4 = load %"struct.gjkepa2_impl::EPA::sFace"** %3, align 4 ; [#uses=2]
+ %5 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %4, null ; [#uses=1]
+ br i1 %5, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %bb
+ %6 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %1, i32 0, i32 5, i32 0 ; [#uses=1]
+ %7 = load %"struct.gjkepa2_impl::EPA::sFace"** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %4, i32 0, i32 5, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %7, %"struct.gjkepa2_impl::EPA::sFace"** %8, align 4
+ br label %bb1.i
+
+bb1.i: ; preds = %bb.i, %bb
+ %9 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %1, i32 0, i32 5, i32 0 ; [#uses=5]
+ %10 = load %"struct.gjkepa2_impl::EPA::sFace"** %9, align 4 ; [#uses=2]
+ %11 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %10, null ; [#uses=1]
+ br i1 %11, label %bb3.i, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %12 = load %"struct.gjkepa2_impl::EPA::sFace"** %3, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %10, i32 0, i32 5, i32 1 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %12, %"struct.gjkepa2_impl::EPA::sFace"** %13, align 4
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb1.i
+ %14 = load %"struct.gjkepa2_impl::EPA::sFace"** %0, align 4 ; [#uses=1]
+ %15 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %14, %1 ; [#uses=1]
+ br i1 %15, label %bb4.i, label %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit
+
+bb4.i: ; preds = %bb3.i
+ %16 = load %"struct.gjkepa2_impl::EPA::sFace"** %3, align 4 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %16, %"struct.gjkepa2_impl::EPA::sFace"** %0, align 4
+ br label %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit
+
+_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit: ; preds = %bb4.i, %bb3.i
+ %17 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 8, i32 1 ; [#uses=4]
+ %18 = load i32* %17, align 4 ; [#uses=1]
+ %19 = add i32 %18, -1 ; [#uses=1]
+ store i32 %19, i32* %17, align 4
+ store %"struct.gjkepa2_impl::EPA::sFace"* null, %"struct.gjkepa2_impl::EPA::sFace"** %9, align 4
+ %20 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 7, i32 0 ; [#uses=5]
+ %21 = load %"struct.gjkepa2_impl::EPA::sFace"** %20, align 4 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %21, %"struct.gjkepa2_impl::EPA::sFace"** %3, align 4
+ %22 = load %"struct.gjkepa2_impl::EPA::sFace"** %20, align 4 ; [#uses=2]
+ %23 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %22, null ; [#uses=1]
+ br i1 %23, label %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit32, label %bb.i30
+
+bb.i30: ; preds = %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit
+ %24 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %22, i32 0, i32 5, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %1, %"struct.gjkepa2_impl::EPA::sFace"** %24, align 4
+ br label %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit32
+
+_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit32: ; preds = %bb.i30, %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit
+ store %"struct.gjkepa2_impl::EPA::sFace"* %1, %"struct.gjkepa2_impl::EPA::sFace"** %20, align 4
+ %25 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 7, i32 1 ; [#uses=4]
+ %26 = load i32* %25, align 4 ; [#uses=1]
+ %27 = add i32 %26, 1 ; [#uses=1]
+ store i32 %27, i32* %25, align 4
+ %28 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %1, i32 0, i32 7 ; [#uses=1]
+ store i8 0, i8* %28, align 1
+ %29 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %1, i32 0, i32 3, i32 0 ; [#uses=1]
+ store %struct.GIM_AABB* %a, %struct.GIM_AABB** %29, align 4
+ %30 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %1, i32 0, i32 3, i32 1 ; [#uses=1]
+ store %struct.GIM_AABB* %b, %struct.GIM_AABB** %30, align 4
+ %31 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %1, i32 0, i32 3, i32 2 ; [#uses=1]
+ store %struct.GIM_AABB* %c, %struct.GIM_AABB** %31, align 4
+ %32 = getelementptr inbounds %struct.GIM_AABB* %c, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.GIM_AABB* %a, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %35 = load float* %34, align 4 ; [#uses=2]
+ %36 = fsub float %33, %35 ; [#uses=2]
+ %37 = getelementptr inbounds %struct.GIM_AABB* %c, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.GIM_AABB* %a, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %40 = load float* %39, align 4 ; [#uses=2]
+ %41 = fsub float %38, %40 ; [#uses=2]
+ %42 = getelementptr inbounds %struct.GIM_AABB* %c, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.GIM_AABB* %a, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %45 = load float* %44, align 4 ; [#uses=2]
+ %46 = fsub float %43, %45 ; [#uses=2]
+ %47 = getelementptr inbounds %struct.GIM_AABB* %b, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = fsub float %48, %35 ; [#uses=2]
+ %50 = getelementptr inbounds %struct.GIM_AABB* %b, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fsub float %51, %40 ; [#uses=2]
+ %53 = getelementptr inbounds %struct.GIM_AABB* %b, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = fsub float %54, %45 ; [#uses=2]
+ %56 = fmul float %55, %41 ; [#uses=1]
+ %57 = fmul float %52, %46 ; [#uses=1]
+ %58 = fsub float %56, %57 ; [#uses=11]
+ %59 = fmul float %49, %46 ; [#uses=1]
+ %60 = fmul float %55, %36 ; [#uses=1]
+ %61 = fsub float %59, %60 ; [#uses=11]
+ %62 = fmul float %52, %36 ; [#uses=1]
+ %63 = fmul float %49, %41 ; [#uses=1]
+ %64 = fsub float %62, %63 ; [#uses=11]
+ %65 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %1, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %64, float* %65, align 4
+ %66 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %1, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %61, float* %66, align 4
+ %67 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %1, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %58, float* %67, align 4
+ %68 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %68, align 4
+ %69 = fmul float %64, %64 ; [#uses=1]
+ %70 = fmul float %61, %61 ; [#uses=1]
+ %71 = fadd float %69, %70 ; [#uses=1]
+ %72 = fmul float %58, %58 ; [#uses=1]
+ %73 = fadd float %71, %72 ; [#uses=1]
+ %74 = call float @sqrtf(float %73) nounwind readonly ; [#uses=4]
+ %75 = fcmp ogt float %74, 0x3F1A36E2E0000000 ; [#uses=2]
+ %76 = load float* %32, align 4 ; [#uses=3]
+ %77 = load float* %34, align 4 ; [#uses=3]
+ %78 = fsub float %76, %77 ; [#uses=2]
+ %79 = load float* %37, align 4 ; [#uses=3]
+ %80 = load float* %39, align 4 ; [#uses=3]
+ %81 = fsub float %79, %80 ; [#uses=2]
+ %82 = load float* %42, align 4 ; [#uses=3]
+ %83 = load float* %44, align 4 ; [#uses=3]
+ %84 = fsub float %82, %83 ; [#uses=2]
+ %85 = fmul float %64, %81 ; [#uses=1]
+ %86 = fmul float %61, %84 ; [#uses=1]
+ %87 = fsub float %85, %86 ; [#uses=1]
+ %88 = fmul float %58, %84 ; [#uses=1]
+ %89 = fmul float %64, %78 ; [#uses=1]
+ %90 = fsub float %88, %89 ; [#uses=1]
+ %91 = fmul float %61, %78 ; [#uses=1]
+ %92 = fmul float %58, %81 ; [#uses=1]
+ %93 = fsub float %91, %92 ; [#uses=1]
+ %94 = fmul float %82, %93 ; [#uses=1]
+ %95 = fmul float %79, %90 ; [#uses=1]
+ %96 = fadd float %94, %95 ; [#uses=1]
+ %97 = fmul float %76, %87 ; [#uses=1]
+ %98 = fadd float %96, %97 ; [#uses=2]
+ %99 = load float* %47, align 4 ; [#uses=3]
+ %100 = fsub float %99, %76 ; [#uses=2]
+ %101 = load float* %50, align 4 ; [#uses=3]
+ %102 = fsub float %101, %79 ; [#uses=2]
+ %103 = load float* %53, align 4 ; [#uses=3]
+ %104 = fsub float %103, %82 ; [#uses=2]
+ %105 = fmul float %64, %102 ; [#uses=1]
+ %106 = fmul float %61, %104 ; [#uses=1]
+ %107 = fsub float %105, %106 ; [#uses=1]
+ %108 = fmul float %58, %104 ; [#uses=1]
+ %109 = fmul float %64, %100 ; [#uses=1]
+ %110 = fsub float %108, %109 ; [#uses=1]
+ %111 = fmul float %61, %100 ; [#uses=1]
+ %112 = fmul float %58, %102 ; [#uses=1]
+ %113 = fsub float %111, %112 ; [#uses=1]
+ %114 = fmul float %103, %113 ; [#uses=1]
+ %115 = fmul float %101, %110 ; [#uses=1]
+ %116 = fadd float %114, %115 ; [#uses=1]
+ %117 = fmul float %99, %107 ; [#uses=1]
+ %118 = fadd float %116, %117 ; [#uses=2]
+ %119 = fsub float %77, %99 ; [#uses=2]
+ %120 = fsub float %80, %101 ; [#uses=2]
+ %121 = fsub float %83, %103 ; [#uses=2]
+ %122 = fmul float %64, %120 ; [#uses=1]
+ %123 = fmul float %61, %121 ; [#uses=1]
+ %124 = fsub float %122, %123 ; [#uses=1]
+ %125 = fmul float %58, %121 ; [#uses=1]
+ %126 = fmul float %64, %119 ; [#uses=1]
+ %127 = fsub float %125, %126 ; [#uses=1]
+ %128 = fmul float %61, %119 ; [#uses=1]
+ %129 = fmul float %58, %120 ; [#uses=1]
+ %130 = fsub float %128, %129 ; [#uses=1]
+ %131 = fmul float %83, %130 ; [#uses=1]
+ %132 = fmul float %80, %127 ; [#uses=1]
+ %133 = fadd float %131, %132 ; [#uses=1]
+ %134 = fmul float %77, %124 ; [#uses=1]
+ %135 = fadd float %133, %134 ; [#uses=2]
+ %136 = fcmp olt float %135, %118 ; [#uses=1]
+ %137 = select i1 %136, float %135, float %118 ; [#uses=2]
+ %138 = fcmp olt float %137, %98 ; [#uses=1]
+ %139 = select i1 %138, float %137, float %98 ; [#uses=1]
+ %iftmp.214.0 = select i1 %75, float %74, float 1.000000e+00 ; [#uses=1]
+ %140 = fdiv float %139, %iftmp.214.0 ; [#uses=3]
+ %141 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %1, i32 0, i32 2 ; [#uses=2]
+ store float %140, float* %141, align 4
+ %142 = fcmp ult float %140, 0xBF847AE140000000 ; [#uses=1]
+ %iftmp.215.0 = select i1 %142, float %140, float 0.000000e+00 ; [#uses=1]
+ store float %iftmp.215.0, float* %141, align 4
+ br i1 %75, label %bb8, label %bb13
+
+bb8: ; preds = %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit32
+ %143 = load float* %44, align 4 ; [#uses=1]
+ %144 = fmul float %143, %64 ; [#uses=1]
+ %145 = load float* %39, align 4 ; [#uses=1]
+ %146 = fmul float %145, %61 ; [#uses=1]
+ %147 = fadd float %144, %146 ; [#uses=1]
+ %148 = load float* %34, align 4 ; [#uses=1]
+ %149 = fmul float %148, %58 ; [#uses=1]
+ %150 = fadd float %147, %149 ; [#uses=1]
+ %151 = fdiv float %150, %74 ; [#uses=2]
+ %152 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %1, i32 0, i32 1 ; [#uses=1]
+ store float %151, float* %152, align 4
+ %153 = fdiv float 1.000000e+00, %74 ; [#uses=3]
+ %154 = fmul float %64, %153 ; [#uses=1]
+ store float %154, float* %65, align 4
+ %155 = fmul float %61, %153 ; [#uses=1]
+ store float %155, float* %66, align 4
+ %156 = fmul float %58, %153 ; [#uses=1]
+ store float %156, float* %67, align 4
+ %toBool9 = icmp eq i8 %forced, 0 ; [#uses=1]
+ %157 = fcmp ult float %151, 0xBEE4F8B580000000 ; [#uses=1]
+ %or.cond = and i1 %toBool9, %157 ; [#uses=1]
+ br i1 %or.cond, label %bb12, label %bb19
+
+bb12: ; preds = %bb8
+ %158 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 3, i32* %158, align 4
+ br label %bb14
+
+bb13: ; preds = %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit32
+ %159 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 2, i32* %159, align 4
+ br label %bb14
+
+bb14: ; preds = %bb13, %bb12
+ %160 = load %"struct.gjkepa2_impl::EPA::sFace"** %3, align 4 ; [#uses=2]
+ %161 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %160, null ; [#uses=1]
+ br i1 %161, label %bb1.i24, label %bb.i23
+
+bb.i23: ; preds = %bb14
+ %162 = load %"struct.gjkepa2_impl::EPA::sFace"** %9, align 4 ; [#uses=1]
+ %163 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %160, i32 0, i32 5, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %162, %"struct.gjkepa2_impl::EPA::sFace"** %163, align 4
+ br label %bb1.i24
+
+bb1.i24: ; preds = %bb.i23, %bb14
+ %164 = load %"struct.gjkepa2_impl::EPA::sFace"** %9, align 4 ; [#uses=2]
+ %165 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %164, null ; [#uses=1]
+ br i1 %165, label %bb3.i26, label %bb2.i25
+
+bb2.i25: ; preds = %bb1.i24
+ %166 = load %"struct.gjkepa2_impl::EPA::sFace"** %3, align 4 ; [#uses=1]
+ %167 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %164, i32 0, i32 5, i32 1 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %166, %"struct.gjkepa2_impl::EPA::sFace"** %167, align 4
+ br label %bb3.i26
+
+bb3.i26: ; preds = %bb2.i25, %bb1.i24
+ %168 = load %"struct.gjkepa2_impl::EPA::sFace"** %20, align 4 ; [#uses=1]
+ %169 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %168, %1 ; [#uses=1]
+ br i1 %169, label %bb4.i27, label %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit28
+
+bb4.i27: ; preds = %bb3.i26
+ %170 = load %"struct.gjkepa2_impl::EPA::sFace"** %3, align 4 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %170, %"struct.gjkepa2_impl::EPA::sFace"** %20, align 4
+ br label %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit28
+
+_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit28: ; preds = %bb4.i27, %bb3.i26
+ %171 = load i32* %25, align 4 ; [#uses=1]
+ %172 = add i32 %171, -1 ; [#uses=1]
+ store i32 %172, i32* %25, align 4
+ store %"struct.gjkepa2_impl::EPA::sFace"* null, %"struct.gjkepa2_impl::EPA::sFace"** %9, align 4
+ %173 = load %"struct.gjkepa2_impl::EPA::sFace"** %0, align 4 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %173, %"struct.gjkepa2_impl::EPA::sFace"** %3, align 4
+ %174 = load %"struct.gjkepa2_impl::EPA::sFace"** %0, align 4 ; [#uses=2]
+ %175 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %174, null ; [#uses=1]
+ br i1 %175, label %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit, label %bb.i21
+
+bb.i21: ; preds = %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit28
+ %176 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %174, i32 0, i32 5, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %1, %"struct.gjkepa2_impl::EPA::sFace"** %176, align 4
+ br label %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit
+
+_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit: ; preds = %bb.i21, %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit28
+ store %"struct.gjkepa2_impl::EPA::sFace"* %1, %"struct.gjkepa2_impl::EPA::sFace"** %0, align 4
+ %177 = load i32* %17, align 4 ; [#uses=1]
+ %178 = add i32 %177, 1 ; [#uses=1]
+ store i32 %178, i32* %17, align 4
+ ret %"struct.gjkepa2_impl::EPA::sFace"* null
+
+bb18: ; preds = %entry
+ %179 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 5, i32* %179, align 4
+ ret %"struct.gjkepa2_impl::EPA::sFace"* null
+
+bb19: ; preds = %bb8
+ ret %"struct.gjkepa2_impl::EPA::sFace"* %1
+}
+
+; [#uses=3]
+define linkonce_odr zeroext i8 @_ZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonE(%"struct.gjkepa2_impl::EPA"* %this, i32 %pass, %struct.GIM_AABB* %w, %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 %e, %"struct.gjkepa2_impl::EPA::sHorizon"* %horizon) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 7 ; [#uses=2]
+ %1 = load i8* %0, align 1 ; [#uses=1]
+ %2 = zext i8 %1 to i32 ; [#uses=1]
+ %3 = icmp eq i32 %2, %pass ; [#uses=1]
+ br i1 %3, label %bb17, label %bb
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds [3 x i32]* @_ZZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonEE4i1m3, i32 0, i32 %e ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.GIM_AABB* %w, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = fmul float %7, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.GIM_AABB* %w, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.GIM_AABB* %w, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fmul float %18, %20 ; [#uses=1]
+ %22 = fadd float %16, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 1 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fsub float %22, %24 ; [#uses=1]
+ %26 = fcmp olt float %25, 0xBEE4F8B580000000 ; [#uses=1]
+ br i1 %26, label %bb1, label %bb6
+
+bb1: ; preds = %bb
+ %27 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 3, i32 %e ; [#uses=1]
+ %28 = load %struct.GIM_AABB** %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 3, i32 %5 ; [#uses=1]
+ %30 = load %struct.GIM_AABB** %29, align 4 ; [#uses=1]
+ %31 = tail call %"struct.gjkepa2_impl::EPA::sFace"* @_ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(%"struct.gjkepa2_impl::EPA"* %this, %struct.GIM_AABB* %30, %struct.GIM_AABB* %28, %struct.GIM_AABB* %w, i8 zeroext 0) ; [#uses=9]
+ %32 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %31, null ; [#uses=1]
+ br i1 %32, label %bb17, label %bb2
+
+bb2: ; preds = %bb1
+ %33 = trunc i32 %e to i8 ; [#uses=1]
+ %34 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %31, i32 0, i32 6, i32 0 ; [#uses=1]
+ store i8 %33, i8* %34, align 1
+ %35 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %31, i32 0, i32 4, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %f, %"struct.gjkepa2_impl::EPA::sFace"** %35, align 4
+ %36 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 6, i32 %e ; [#uses=1]
+ store i8 0, i8* %36, align 1
+ %37 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 4, i32 %e ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %31, %"struct.gjkepa2_impl::EPA::sFace"** %37, align 4
+ %38 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sHorizon"* %horizon, i32 0, i32 0 ; [#uses=2]
+ %39 = load %"struct.gjkepa2_impl::EPA::sFace"** %38, align 4 ; [#uses=4]
+ %40 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %39, null ; [#uses=1]
+ br i1 %40, label %bb4, label %bb3
+
+bb3: ; preds = %bb2
+ %41 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %39, i32 0, i32 6, i32 1 ; [#uses=1]
+ store i8 2, i8* %41, align 1
+ %42 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %39, i32 0, i32 4, i32 1 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %31, %"struct.gjkepa2_impl::EPA::sFace"** %42, align 4
+ %43 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %31, i32 0, i32 6, i32 2 ; [#uses=1]
+ store i8 1, i8* %43, align 1
+ %44 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %31, i32 0, i32 4, i32 2 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %39, %"struct.gjkepa2_impl::EPA::sFace"** %44, align 4
+ br label %bb5
+
+bb4: ; preds = %bb2
+ %45 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sHorizon"* %horizon, i32 0, i32 1 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %31, %"struct.gjkepa2_impl::EPA::sFace"** %45, align 4
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ store %"struct.gjkepa2_impl::EPA::sFace"* %31, %"struct.gjkepa2_impl::EPA::sFace"** %38, align 4
+ %46 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sHorizon"* %horizon, i32 0, i32 2 ; [#uses=2]
+ %47 = load i32* %46, align 4 ; [#uses=1]
+ %48 = add i32 %47, 1 ; [#uses=1]
+ store i32 %48, i32* %46, align 4
+ ret i8 1
+
+bb6: ; preds = %bb
+ %49 = getelementptr inbounds [3 x i32]* @_ZZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonEE4i2m3, i32 0, i32 %e ; [#uses=1]
+ %50 = load i32* %49, align 4 ; [#uses=2]
+ %51 = trunc i32 %pass to i8 ; [#uses=1]
+ store i8 %51, i8* %0, align 1
+ %52 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 6, i32 %5 ; [#uses=1]
+ %53 = load i8* %52, align 1 ; [#uses=1]
+ %54 = zext i8 %53 to i32 ; [#uses=1]
+ %55 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 4, i32 %5 ; [#uses=1]
+ %56 = load %"struct.gjkepa2_impl::EPA::sFace"** %55, align 4 ; [#uses=1]
+ %57 = tail call zeroext i8 @_ZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonE(%"struct.gjkepa2_impl::EPA"* %this, i32 %pass, %struct.GIM_AABB* %w, %"struct.gjkepa2_impl::EPA::sFace"* %56, i32 %54, %"struct.gjkepa2_impl::EPA::sHorizon"* %horizon) ; [#uses=1]
+ %toBool7not = icmp eq i8 %57, 0 ; [#uses=1]
+ br i1 %toBool7not, label %bb17, label %bb11
+
+bb11: ; preds = %bb6
+ %58 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 6, i32 %50 ; [#uses=1]
+ %59 = load i8* %58, align 1 ; [#uses=1]
+ %60 = zext i8 %59 to i32 ; [#uses=1]
+ %61 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 4, i32 %50 ; [#uses=1]
+ %62 = load %"struct.gjkepa2_impl::EPA::sFace"** %61, align 4 ; [#uses=1]
+ %63 = tail call zeroext i8 @_ZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonE(%"struct.gjkepa2_impl::EPA"* %this, i32 %pass, %struct.GIM_AABB* %w, %"struct.gjkepa2_impl::EPA::sFace"* %62, i32 %60, %"struct.gjkepa2_impl::EPA::sHorizon"* %horizon) ; [#uses=1]
+ %toBool12not = icmp eq i8 %63, 0 ; [#uses=1]
+ br i1 %toBool12not, label %bb17, label %bb20
+
+bb17: ; preds = %bb11, %bb6, %bb1, %entry
+ ret i8 0
+
+bb20: ; preds = %bb11
+ %64 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 5, i32 1 ; [#uses=4]
+ %65 = load %"struct.gjkepa2_impl::EPA::sFace"** %64, align 4 ; [#uses=2]
+ %66 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %65, null ; [#uses=1]
+ br i1 %66, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %bb20
+ %67 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 5, i32 0 ; [#uses=1]
+ %68 = load %"struct.gjkepa2_impl::EPA::sFace"** %67, align 4 ; [#uses=1]
+ %69 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %65, i32 0, i32 5, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %68, %"struct.gjkepa2_impl::EPA::sFace"** %69, align 4
+ br label %bb1.i
+
+bb1.i: ; preds = %bb.i, %bb20
+ %70 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f, i32 0, i32 5, i32 0 ; [#uses=2]
+ %71 = load %"struct.gjkepa2_impl::EPA::sFace"** %70, align 4 ; [#uses=2]
+ %72 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %71, null ; [#uses=1]
+ br i1 %72, label %bb3.i, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %73 = load %"struct.gjkepa2_impl::EPA::sFace"** %64, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %71, i32 0, i32 5, i32 1 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %73, %"struct.gjkepa2_impl::EPA::sFace"** %74, align 4
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb1.i
+ %75 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 7, i32 0 ; [#uses=2]
+ %76 = load %"struct.gjkepa2_impl::EPA::sFace"** %75, align 4 ; [#uses=1]
+ %77 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %76, %f ; [#uses=1]
+ br i1 %77, label %bb4.i, label %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit
+
+bb4.i: ; preds = %bb3.i
+ %78 = load %"struct.gjkepa2_impl::EPA::sFace"** %64, align 4 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %78, %"struct.gjkepa2_impl::EPA::sFace"** %75, align 4
+ br label %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit
+
+_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit: ; preds = %bb4.i, %bb3.i
+ %79 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 7, i32 1 ; [#uses=2]
+ %80 = load i32* %79, align 4 ; [#uses=1]
+ %81 = add i32 %80, -1 ; [#uses=1]
+ store i32 %81, i32* %79, align 4
+ store %"struct.gjkepa2_impl::EPA::sFace"* null, %"struct.gjkepa2_impl::EPA::sFace"** %70, align 4
+ %82 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 8, i32 0 ; [#uses=3]
+ %83 = load %"struct.gjkepa2_impl::EPA::sFace"** %82, align 4 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %83, %"struct.gjkepa2_impl::EPA::sFace"** %64, align 4
+ %84 = load %"struct.gjkepa2_impl::EPA::sFace"** %82, align 4 ; [#uses=2]
+ %85 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %84, null ; [#uses=1]
+ br i1 %85, label %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit, label %bb.i25
+
+bb.i25: ; preds = %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit
+ %86 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %84, i32 0, i32 5, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %f, %"struct.gjkepa2_impl::EPA::sFace"** %86, align 4
+ br label %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit
+
+_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit: ; preds = %bb.i25, %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit
+ store %"struct.gjkepa2_impl::EPA::sFace"* %f, %"struct.gjkepa2_impl::EPA::sFace"** %82, align 4
+ %87 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 8, i32 1 ; [#uses=2]
+ %88 = load i32* %87, align 4 ; [#uses=1]
+ %89 = add i32 %88, 1 ; [#uses=1]
+ store i32 %89, i32* %87, align 4
+ ret i8 1
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZN12gjkepa2_impl3EPA8EvaluateERNS_3GJKERK9btVector3(%"struct.gjkepa2_impl::EPA"* %this, %"struct.gjkepa2_impl::GJK"* %gjk, %struct.btQuadWord* nocapture %guess) align 2 {
+entry:
+ %horizon = alloca %"struct.gjkepa2_impl::EPA::sHorizon", align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 8 ; [#uses=1]
+ %1 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %0, align 4 ; [#uses=8]
+ %2 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %1, i32 0, i32 2 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = icmp ult i32 %3, 2 ; [#uses=1]
+ br i1 %4, label %bb38, label %bb
+
+bb: ; preds = %entry
+ %5 = call zeroext i8 @_ZN12gjkepa2_impl3GJK13EncloseOriginEv(%"struct.gjkepa2_impl::GJK"* %gjk) ; [#uses=1]
+ %toBoolnot = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb38, label %bb9.preheader
+
+bb9.preheader: ; preds = %bb
+ %6 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 7, i32 0 ; [#uses=8]
+ %7 = load %"struct.gjkepa2_impl::EPA::sFace"** %6, align 4 ; [#uses=2]
+ %8 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %7, null ; [#uses=1]
+ br i1 %8, label %bb10, label %bb.nph231
+
+bb.nph231: ; preds = %bb9.preheader
+ %9 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 7, i32 1 ; [#uses=2]
+ %10 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 8, i32 0 ; [#uses=3]
+ %11 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 8, i32 1 ; [#uses=2]
+ br label %bb8
+
+bb8: ; preds = %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit, %bb.nph231
+ %12 = phi %"struct.gjkepa2_impl::EPA::sFace"* [ %7, %bb.nph231 ], [ %35, %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit ] ; [#uses=6]
+ %13 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %12, i32 0, i32 5, i32 1 ; [#uses=4]
+ %14 = load %"struct.gjkepa2_impl::EPA::sFace"** %13, align 4 ; [#uses=2]
+ %15 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %14, null ; [#uses=1]
+ br i1 %15, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %bb8
+ %16 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %12, i32 0, i32 5, i32 0 ; [#uses=1]
+ %17 = load %"struct.gjkepa2_impl::EPA::sFace"** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %14, i32 0, i32 5, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %17, %"struct.gjkepa2_impl::EPA::sFace"** %18, align 4
+ br label %bb1.i
+
+bb1.i: ; preds = %bb.i, %bb8
+ %19 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %12, i32 0, i32 5, i32 0 ; [#uses=2]
+ %20 = load %"struct.gjkepa2_impl::EPA::sFace"** %19, align 4 ; [#uses=2]
+ %21 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %20, null ; [#uses=1]
+ br i1 %21, label %bb3.i, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %22 = load %"struct.gjkepa2_impl::EPA::sFace"** %13, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %20, i32 0, i32 5, i32 1 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %22, %"struct.gjkepa2_impl::EPA::sFace"** %23, align 4
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb1.i
+ %24 = load %"struct.gjkepa2_impl::EPA::sFace"** %6, align 4 ; [#uses=1]
+ %25 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %24, %12 ; [#uses=1]
+ br i1 %25, label %bb4.i, label %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit
+
+bb4.i: ; preds = %bb3.i
+ %26 = load %"struct.gjkepa2_impl::EPA::sFace"** %13, align 4 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %26, %"struct.gjkepa2_impl::EPA::sFace"** %6, align 4
+ br label %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit
+
+_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit: ; preds = %bb4.i, %bb3.i
+ %27 = load i32* %9, align 4 ; [#uses=1]
+ %28 = add i32 %27, -1 ; [#uses=1]
+ store i32 %28, i32* %9, align 4
+ store %"struct.gjkepa2_impl::EPA::sFace"* null, %"struct.gjkepa2_impl::EPA::sFace"** %19, align 4
+ %29 = load %"struct.gjkepa2_impl::EPA::sFace"** %10, align 4 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %29, %"struct.gjkepa2_impl::EPA::sFace"** %13, align 4
+ %30 = load %"struct.gjkepa2_impl::EPA::sFace"** %10, align 4 ; [#uses=2]
+ %31 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %30, null ; [#uses=1]
+ br i1 %31, label %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit, label %bb.i45
+
+bb.i45: ; preds = %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit
+ %32 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %30, i32 0, i32 5, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %12, %"struct.gjkepa2_impl::EPA::sFace"** %32, align 4
+ br label %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit
+
+_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit: ; preds = %bb.i45, %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit
+ store %"struct.gjkepa2_impl::EPA::sFace"* %12, %"struct.gjkepa2_impl::EPA::sFace"** %10, align 4
+ %33 = load i32* %11, align 4 ; [#uses=1]
+ %34 = add i32 %33, 1 ; [#uses=1]
+ store i32 %34, i32* %11, align 4
+ %35 = load %"struct.gjkepa2_impl::EPA::sFace"** %6, align 4 ; [#uses=2]
+ %36 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %35, null ; [#uses=1]
+ br i1 %36, label %bb10, label %bb8
+
+bb10: ; preds = %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit, %bb9.preheader
+ %37 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 0 ; [#uses=6]
+ store i32 0, i32* %37, align 4
+ %38 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 6 ; [#uses=3]
+ store i32 0, i32* %38, align 4
+ %39 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %1, i32 0, i32 0, i32 3 ; [#uses=4]
+ %40 = load %struct.GIM_AABB** %39, align 4 ; [#uses=3]
+ %41 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %1, i32 0, i32 0, i32 2 ; [#uses=3]
+ %42 = load %struct.GIM_AABB** %41, align 4 ; [#uses=4]
+ %43 = getelementptr inbounds %struct.GIM_AABB* %42, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.GIM_AABB* %40, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=3]
+ %47 = fsub float %44, %46 ; [#uses=2]
+ %48 = getelementptr inbounds %struct.GIM_AABB* %42, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.GIM_AABB* %40, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=3]
+ %52 = fsub float %49, %51 ; [#uses=2]
+ %53 = getelementptr inbounds %struct.GIM_AABB* %42, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.GIM_AABB* %40, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=3]
+ %57 = fsub float %54, %56 ; [#uses=2]
+ %58 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %1, i32 0, i32 0, i32 1 ; [#uses=4]
+ %59 = load %struct.GIM_AABB** %58, align 4 ; [#uses=6]
+ %60 = getelementptr inbounds %struct.GIM_AABB* %59, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fsub float %61, %46 ; [#uses=2]
+ %63 = getelementptr inbounds %struct.GIM_AABB* %59, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %65 = fsub float %64, %51 ; [#uses=2]
+ %66 = getelementptr inbounds %struct.GIM_AABB* %59, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = fsub float %67, %56 ; [#uses=2]
+ %69 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %1, i32 0, i32 0, i32 0 ; [#uses=4]
+ %70 = load %struct.GIM_AABB** %69, align 4 ; [#uses=6]
+ %71 = getelementptr inbounds %struct.GIM_AABB* %70, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fsub float %72, %46 ; [#uses=2]
+ %74 = getelementptr inbounds %struct.GIM_AABB* %70, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = fsub float %75, %51 ; [#uses=2]
+ %77 = getelementptr inbounds %struct.GIM_AABB* %70, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ %79 = fsub float %78, %56 ; [#uses=2]
+ %80 = fmul float %76, %62 ; [#uses=1]
+ %81 = fmul float %80, %57 ; [#uses=1]
+ %82 = fmul float %73, %68 ; [#uses=1]
+ %83 = fmul float %82, %52 ; [#uses=1]
+ %84 = fadd float %81, %83 ; [#uses=1]
+ %85 = fmul float %79, %62 ; [#uses=1]
+ %86 = fmul float %85, %52 ; [#uses=1]
+ %87 = fsub float %84, %86 ; [#uses=1]
+ %88 = fmul float %76, %68 ; [#uses=1]
+ %89 = fmul float %88, %47 ; [#uses=1]
+ %90 = fsub float %87, %89 ; [#uses=1]
+ %91 = fmul float %79, %65 ; [#uses=1]
+ %92 = fmul float %91, %47 ; [#uses=1]
+ %93 = fadd float %90, %92 ; [#uses=1]
+ %94 = fmul float %73, %65 ; [#uses=1]
+ %95 = fmul float %94, %57 ; [#uses=1]
+ %96 = fsub float %93, %95 ; [#uses=1]
+ %97 = fcmp olt float %96, 0.000000e+00 ; [#uses=1]
+ br i1 %97, label %bb12, label %bb13
+
+bb12: ; preds = %bb10
+ store %struct.GIM_AABB* %59, %struct.GIM_AABB** %69, align 4
+ store %struct.GIM_AABB* %70, %struct.GIM_AABB** %58, align 4
+ %98 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %1, i32 0, i32 1, i32 1 ; [#uses=2]
+ %99 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %1, i32 0, i32 1, i32 0 ; [#uses=2]
+ %100 = load float* %99, align 4 ; [#uses=1]
+ %101 = load float* %98, align 4 ; [#uses=1]
+ store float %101, float* %99, align 4
+ store float %100, float* %98, align 4
+ br label %bb13
+
+bb13: ; preds = %bb12, %bb10
+ %102 = phi %struct.GIM_AABB* [ %59, %bb12 ], [ %70, %bb10 ] ; [#uses=1]
+ %103 = phi %struct.GIM_AABB* [ %70, %bb12 ], [ %59, %bb10 ] ; [#uses=1]
+ %104 = call %"struct.gjkepa2_impl::EPA::sFace"* @_ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(%"struct.gjkepa2_impl::EPA"* %this, %struct.GIM_AABB* %102, %struct.GIM_AABB* %103, %struct.GIM_AABB* %42, i8 zeroext 1) ; [#uses=9]
+ %105 = load %struct.GIM_AABB** %39, align 4 ; [#uses=1]
+ %106 = load %struct.GIM_AABB** %69, align 4 ; [#uses=1]
+ %107 = load %struct.GIM_AABB** %58, align 4 ; [#uses=1]
+ %108 = call %"struct.gjkepa2_impl::EPA::sFace"* @_ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(%"struct.gjkepa2_impl::EPA"* %this, %struct.GIM_AABB* %107, %struct.GIM_AABB* %106, %struct.GIM_AABB* %105, i8 zeroext 1) ; [#uses=9]
+ %109 = load %struct.GIM_AABB** %39, align 4 ; [#uses=1]
+ %110 = load %struct.GIM_AABB** %58, align 4 ; [#uses=1]
+ %111 = load %struct.GIM_AABB** %41, align 4 ; [#uses=1]
+ %112 = call %"struct.gjkepa2_impl::EPA::sFace"* @_ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(%"struct.gjkepa2_impl::EPA"* %this, %struct.GIM_AABB* %111, %struct.GIM_AABB* %110, %struct.GIM_AABB* %109, i8 zeroext 1) ; [#uses=9]
+ %113 = load %struct.GIM_AABB** %39, align 4 ; [#uses=1]
+ %114 = load %struct.GIM_AABB** %41, align 4 ; [#uses=1]
+ %115 = load %struct.GIM_AABB** %69, align 4 ; [#uses=1]
+ %116 = call %"struct.gjkepa2_impl::EPA::sFace"* @_ZN12gjkepa2_impl3EPA7newfaceEPNS_3GJK3sSVES3_S3_b(%"struct.gjkepa2_impl::EPA"* %this, %struct.GIM_AABB* %115, %struct.GIM_AABB* %114, %struct.GIM_AABB* %113, i8 zeroext 1) ; [#uses=9]
+ %117 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 7, i32 1 ; [#uses=3]
+ %118 = load i32* %117, align 4 ; [#uses=1]
+ %119 = icmp eq i32 %118, 4 ; [#uses=1]
+ br i1 %119, label %bb14, label %bb38
+
+bb14: ; preds = %bb13
+ %120 = load %"struct.gjkepa2_impl::EPA::sFace"** %6, align 4 ; [#uses=3]
+ %121 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %120, i32 0, i32 1 ; [#uses=1]
+ %122 = load float* %121, align 4 ; [#uses=2]
+ %123 = fmul float %122, %122 ; [#uses=1]
+ %maxp.1.ph.in.phi.trans.insert.i58 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %120, i32 0, i32 2 ; [#uses=1]
+ %maxp.1.ph.pre.i59 = load float* %maxp.1.ph.in.phi.trans.insert.i58, align 4 ; [#uses=1]
+ br label %bb4.outer.i66
+
+bb.i62: ; preds = %bb4.i70
+ %124 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f.0.i69, i32 0, i32 1 ; [#uses=1]
+ %125 = load float* %124, align 4 ; [#uses=2]
+ %126 = fmul float %125, %125 ; [#uses=2]
+ %127 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f.0.i69, i32 0, i32 2 ; [#uses=1]
+ %128 = load float* %127, align 4 ; [#uses=2]
+ %.not.i60 = fcmp oge float %128, %maxp.1.ph.i63 ; [#uses=1]
+ %129 = fcmp olt float %126, %mind.1.ph.i65 ; [#uses=1]
+ %or.cond.i61 = and i1 %.not.i60, %129 ; [#uses=1]
+ br i1 %or.cond.i61, label %bb4.outer.i66, label %bb4.i70
+
+bb4.outer.i66: ; preds = %bb.i62, %bb14
+ %maxp.1.ph.i63 = phi float [ %maxp.1.ph.pre.i59, %bb14 ], [ %128, %bb.i62 ] ; [#uses=1]
+ %minf.1.ph.i64 = phi %"struct.gjkepa2_impl::EPA::sFace"* [ %120, %bb14 ], [ %f.0.i69, %bb.i62 ] ; [#uses=11]
+ %mind.1.ph.i65 = phi float [ %123, %bb14 ], [ %126, %bb.i62 ] ; [#uses=1]
+ br label %bb4.i70
+
+bb4.i70: ; preds = %bb4.outer.i66, %bb.i62
+ %.pn.i67 = phi %"struct.gjkepa2_impl::EPA::sFace"* [ %f.0.i69, %bb.i62 ], [ %minf.1.ph.i64, %bb4.outer.i66 ] ; [#uses=1]
+ %f.0.in.i68 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %.pn.i67, i32 0, i32 5, i32 1 ; [#uses=1]
+ %f.0.i69 = load %"struct.gjkepa2_impl::EPA::sFace"** %f.0.in.i68, align 4 ; [#uses=5]
+ %130 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %f.0.i69, null ; [#uses=1]
+ br i1 %130, label %_ZN12gjkepa2_impl3EPA8findbestEv.exit71, label %bb.i62
+
+_ZN12gjkepa2_impl3EPA8findbestEv.exit71: ; preds = %bb4.i70
+ %minf.1.ph.i64146.0 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i64, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %tmp147 = load float* %minf.1.ph.i64146.0, align 4 ; [#uses=1]
+ %minf.1.ph.i64146.1 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i64, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %tmp148 = load float* %minf.1.ph.i64146.1, align 4 ; [#uses=1]
+ %minf.1.ph.i64146.2 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i64, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %tmp149 = load float* %minf.1.ph.i64146.2, align 4 ; [#uses=1]
+ %minf.1.ph.i64146.3 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i64, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %tmp150 = load float* %minf.1.ph.i64146.3, align 4 ; [#uses=1]
+ %minf.1.ph.i64.1 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i64, i32 0, i32 1 ; [#uses=1]
+ %tmp101 = load float* %minf.1.ph.i64.1, align 4 ; [#uses=1]
+ %minf.1.ph.i64.2 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i64, i32 0, i32 2 ; [#uses=1]
+ %tmp102 = load float* %minf.1.ph.i64.2, align 4 ; [#uses=1]
+ %minf.1.ph.i64.3.0 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i64, i32 0, i32 3, i32 0 ; [#uses=1]
+ %tmp128 = load %struct.GIM_AABB** %minf.1.ph.i64.3.0, align 4 ; [#uses=1]
+ %minf.1.ph.i64.3.1 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i64, i32 0, i32 3, i32 1 ; [#uses=1]
+ %tmp129 = load %struct.GIM_AABB** %minf.1.ph.i64.3.1, align 4 ; [#uses=1]
+ %minf.1.ph.i64.3.2 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i64, i32 0, i32 3, i32 2 ; [#uses=1]
+ %tmp130 = load %struct.GIM_AABB** %minf.1.ph.i64.3.2, align 4 ; [#uses=1]
+ %131 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %104, i32 0, i32 6, i32 0 ; [#uses=1]
+ store i8 0, i8* %131, align 1
+ %132 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %104, i32 0, i32 4, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %108, %"struct.gjkepa2_impl::EPA::sFace"** %132, align 4
+ %133 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %108, i32 0, i32 6, i32 0 ; [#uses=1]
+ store i8 0, i8* %133, align 1
+ %134 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %108, i32 0, i32 4, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %104, %"struct.gjkepa2_impl::EPA::sFace"** %134, align 4
+ %135 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %104, i32 0, i32 6, i32 1 ; [#uses=1]
+ store i8 0, i8* %135, align 1
+ %136 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %104, i32 0, i32 4, i32 1 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %112, %"struct.gjkepa2_impl::EPA::sFace"** %136, align 4
+ %137 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %112, i32 0, i32 6, i32 0 ; [#uses=1]
+ store i8 1, i8* %137, align 1
+ %138 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %112, i32 0, i32 4, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %104, %"struct.gjkepa2_impl::EPA::sFace"** %138, align 4
+ %139 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %104, i32 0, i32 6, i32 2 ; [#uses=1]
+ store i8 0, i8* %139, align 1
+ %140 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %104, i32 0, i32 4, i32 2 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %116, %"struct.gjkepa2_impl::EPA::sFace"** %140, align 4
+ %141 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %116, i32 0, i32 6, i32 0 ; [#uses=1]
+ store i8 2, i8* %141, align 1
+ %142 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %116, i32 0, i32 4, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %104, %"struct.gjkepa2_impl::EPA::sFace"** %142, align 4
+ %143 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %108, i32 0, i32 6, i32 1 ; [#uses=1]
+ store i8 2, i8* %143, align 1
+ %144 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %108, i32 0, i32 4, i32 1 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %116, %"struct.gjkepa2_impl::EPA::sFace"** %144, align 4
+ %145 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %116, i32 0, i32 6, i32 2 ; [#uses=1]
+ store i8 1, i8* %145, align 1
+ %146 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %116, i32 0, i32 4, i32 2 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %108, %"struct.gjkepa2_impl::EPA::sFace"** %146, align 4
+ %147 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %108, i32 0, i32 6, i32 2 ; [#uses=1]
+ store i8 1, i8* %147, align 1
+ %148 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %108, i32 0, i32 4, i32 2 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %112, %"struct.gjkepa2_impl::EPA::sFace"** %148, align 4
+ %149 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %112, i32 0, i32 6, i32 1 ; [#uses=1]
+ store i8 2, i8* %149, align 1
+ %150 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %112, i32 0, i32 4, i32 1 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %108, %"struct.gjkepa2_impl::EPA::sFace"** %150, align 4
+ %151 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %112, i32 0, i32 6, i32 2 ; [#uses=1]
+ store i8 1, i8* %151, align 1
+ %152 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %112, i32 0, i32 4, i32 2 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %116, %"struct.gjkepa2_impl::EPA::sFace"** %152, align 4
+ %153 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %116, i32 0, i32 6, i32 1 ; [#uses=1]
+ store i8 2, i8* %153, align 1
+ %154 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %116, i32 0, i32 4, i32 1 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %112, %"struct.gjkepa2_impl::EPA::sFace"** %154, align 4
+ store i32 0, i32* %37, align 4
+ %155 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sHorizon"* %horizon, i32 0, i32 0 ; [#uses=2]
+ %156 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sHorizon"* %horizon, i32 0, i32 1 ; [#uses=2]
+ %157 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sHorizon"* %horizon, i32 0, i32 2 ; [#uses=2]
+ %158 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 8, i32 0 ; [#uses=3]
+ %159 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 8, i32 1 ; [#uses=2]
+ br label %bb36
+
+bb16: ; preds = %bb36
+ %160 = load i32* %38, align 4 ; [#uses=6]
+ %161 = icmp ult i32 %160, 64 ; [#uses=1]
+ br i1 %161, label %bb17, label %bb34
+
+bb17: ; preds = %bb16
+ store %"struct.gjkepa2_impl::EPA::sFace"* null, %"struct.gjkepa2_impl::EPA::sFace"** %155, align 8
+ store %"struct.gjkepa2_impl::EPA::sFace"* null, %"struct.gjkepa2_impl::EPA::sFace"** %156, align 4
+ store i32 0, i32* %157, align 8
+ %162 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 4, i32 %160 ; [#uses=2]
+ %163 = add i32 %160, 1 ; [#uses=1]
+ store i32 %163, i32* %38, align 4
+ %164 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %best.0, i32 0, i32 7 ; [#uses=1]
+ store i8 %tmp271, i8* %164, align 1
+ %165 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %best.0, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK12gjkepa2_impl3GJK10getsupportERK9btVector3RNS0_3sSVE(%"struct.gjkepa2_impl::GJK"* %gjk, %struct.btQuadWord* %165, %struct.GIM_AABB* %162)
+ %166 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %best.0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %167 = load float* %166, align 4 ; [#uses=1]
+ %168 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 4, i32 %160, i32 1, i32 0, i32 0 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=1]
+ %170 = fmul float %167, %169 ; [#uses=1]
+ %171 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %best.0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %172 = load float* %171, align 4 ; [#uses=1]
+ %173 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 4, i32 %160, i32 1, i32 0, i32 1 ; [#uses=1]
+ %174 = load float* %173, align 4 ; [#uses=1]
+ %175 = fmul float %172, %174 ; [#uses=1]
+ %176 = fadd float %170, %175 ; [#uses=1]
+ %177 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %best.0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %178 = load float* %177, align 4 ; [#uses=1]
+ %179 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 4, i32 %160, i32 1, i32 0, i32 2 ; [#uses=1]
+ %180 = load float* %179, align 4 ; [#uses=1]
+ %181 = fmul float %178, %180 ; [#uses=1]
+ %182 = fadd float %176, %181 ; [#uses=1]
+ %183 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %best.0, i32 0, i32 1 ; [#uses=1]
+ %184 = load float* %183, align 4 ; [#uses=1]
+ %185 = fsub float %182, %184 ; [#uses=1]
+ %186 = fcmp ogt float %185, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %186, label %bb19, label %bb33
+
+bb19: ; preds = %bb19, %bb17
+ %j.0193 = phi i32 [ %192, %bb19 ], [ 0, %bb17 ] ; [#uses=3]
+ %valid.0192 = phi i8 [ %191, %bb19 ], [ 1, %bb17 ] ; [#uses=1]
+ %scevgep = getelementptr %"struct.gjkepa2_impl::EPA::sFace"* %best.0, i32 0, i32 6, i32 %j.0193 ; [#uses=1]
+ %scevgep233 = getelementptr %"struct.gjkepa2_impl::EPA::sFace"* %best.0, i32 0, i32 4, i32 %j.0193 ; [#uses=1]
+ %187 = load i8* %scevgep, align 1 ; [#uses=1]
+ %188 = zext i8 %187 to i32 ; [#uses=1]
+ %189 = load %"struct.gjkepa2_impl::EPA::sFace"** %scevgep233, align 4 ; [#uses=1]
+ %190 = call zeroext i8 @_ZN12gjkepa2_impl3EPA6expandEjPNS_3GJK3sSVEPNS0_5sFaceEjRNS0_8sHorizonE(%"struct.gjkepa2_impl::EPA"* %this, i32 %pass.0, %struct.GIM_AABB* %162, %"struct.gjkepa2_impl::EPA::sFace"* %189, i32 %188, %"struct.gjkepa2_impl::EPA::sHorizon"* %horizon) ; [#uses=1]
+ %191 = and i8 %190, %valid.0192 ; [#uses=3]
+ %192 = add i32 %j.0193, 1 ; [#uses=2]
+ %193 = icmp ugt i32 %192, 2 ; [#uses=1]
+ %toBool22 = icmp eq i8 %191, 0 ; [#uses=1]
+ %or.cond = or i1 %193, %toBool22 ; [#uses=1]
+ br i1 %or.cond, label %bb23, label %bb19
+
+bb23: ; preds = %bb19
+ %phitmp232 = icmp eq i8 %191, 1 ; [#uses=1]
+ br i1 %phitmp232, label %bb28, label %bb32
+
+bb28: ; preds = %bb23
+ %194 = load i32* %157, align 8 ; [#uses=1]
+ %195 = icmp ult i32 %194, 3 ; [#uses=1]
+ br i1 %195, label %bb32, label %bb29
+
+bb29: ; preds = %bb28
+ %196 = load %"struct.gjkepa2_impl::EPA::sFace"** %156, align 4 ; [#uses=3]
+ %197 = load %"struct.gjkepa2_impl::EPA::sFace"** %155, align 8 ; [#uses=3]
+ %198 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %197, i32 0, i32 6, i32 1 ; [#uses=1]
+ store i8 2, i8* %198, align 1
+ %199 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %197, i32 0, i32 4, i32 1 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %196, %"struct.gjkepa2_impl::EPA::sFace"** %199, align 4
+ %200 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %196, i32 0, i32 6, i32 2 ; [#uses=1]
+ store i8 1, i8* %200, align 1
+ %201 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %196, i32 0, i32 4, i32 2 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %197, %"struct.gjkepa2_impl::EPA::sFace"** %201, align 4
+ %202 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %best.0, i32 0, i32 5, i32 1 ; [#uses=4]
+ %203 = load %"struct.gjkepa2_impl::EPA::sFace"** %202, align 4 ; [#uses=2]
+ %204 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %203, null ; [#uses=1]
+ br i1 %204, label %bb1.i53, label %bb.i52
+
+bb.i52: ; preds = %bb29
+ %205 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %best.0, i32 0, i32 5, i32 0 ; [#uses=1]
+ %206 = load %"struct.gjkepa2_impl::EPA::sFace"** %205, align 4 ; [#uses=1]
+ %207 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %203, i32 0, i32 5, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %206, %"struct.gjkepa2_impl::EPA::sFace"** %207, align 4
+ br label %bb1.i53
+
+bb1.i53: ; preds = %bb.i52, %bb29
+ %208 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %best.0, i32 0, i32 5, i32 0 ; [#uses=2]
+ %209 = load %"struct.gjkepa2_impl::EPA::sFace"** %208, align 4 ; [#uses=2]
+ %210 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %209, null ; [#uses=1]
+ br i1 %210, label %bb3.i55, label %bb2.i54
+
+bb2.i54: ; preds = %bb1.i53
+ %211 = load %"struct.gjkepa2_impl::EPA::sFace"** %202, align 4 ; [#uses=1]
+ %212 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %209, i32 0, i32 5, i32 1 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %211, %"struct.gjkepa2_impl::EPA::sFace"** %212, align 4
+ br label %bb3.i55
+
+bb3.i55: ; preds = %bb2.i54, %bb1.i53
+ %213 = load %"struct.gjkepa2_impl::EPA::sFace"** %6, align 4 ; [#uses=1]
+ %214 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %213, %best.0 ; [#uses=1]
+ br i1 %214, label %bb4.i56, label %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit57
+
+bb4.i56: ; preds = %bb3.i55
+ %215 = load %"struct.gjkepa2_impl::EPA::sFace"** %202, align 4 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %215, %"struct.gjkepa2_impl::EPA::sFace"** %6, align 4
+ br label %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit57
+
+_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit57: ; preds = %bb4.i56, %bb3.i55
+ %216 = load i32* %117, align 4 ; [#uses=1]
+ %217 = add i32 %216, -1 ; [#uses=1]
+ store i32 %217, i32* %117, align 4
+ store %"struct.gjkepa2_impl::EPA::sFace"* null, %"struct.gjkepa2_impl::EPA::sFace"** %208, align 4
+ %218 = load %"struct.gjkepa2_impl::EPA::sFace"** %158, align 4 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %218, %"struct.gjkepa2_impl::EPA::sFace"** %202, align 4
+ %219 = load %"struct.gjkepa2_impl::EPA::sFace"** %158, align 4 ; [#uses=2]
+ %220 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %219, null ; [#uses=1]
+ br i1 %220, label %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit51, label %bb.i49
+
+bb.i49: ; preds = %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit57
+ %221 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %219, i32 0, i32 5, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %best.0, %"struct.gjkepa2_impl::EPA::sFace"** %221, align 4
+ br label %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit51
+
+_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit51: ; preds = %bb.i49, %_ZN12gjkepa2_impl3EPA6removeERNS0_5sListEPNS0_5sFaceE.exit57
+ store %"struct.gjkepa2_impl::EPA::sFace"* %best.0, %"struct.gjkepa2_impl::EPA::sFace"** %158, align 4
+ %222 = load i32* %159, align 4 ; [#uses=1]
+ %223 = add i32 %222, 1 ; [#uses=1]
+ store i32 %223, i32* %159, align 4
+ %224 = load %"struct.gjkepa2_impl::EPA::sFace"** %6, align 4 ; [#uses=3]
+ %225 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %224, i32 0, i32 1 ; [#uses=1]
+ %226 = load float* %225, align 4 ; [#uses=2]
+ %227 = fmul float %226, %226 ; [#uses=1]
+ %maxp.1.ph.in.phi.trans.insert.i = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %224, i32 0, i32 2 ; [#uses=1]
+ %maxp.1.ph.pre.i = load float* %maxp.1.ph.in.phi.trans.insert.i, align 4 ; [#uses=1]
+ br label %bb4.outer.i
+
+bb.i47: ; preds = %bb4.i48
+ %228 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f.0.i, i32 0, i32 1 ; [#uses=1]
+ %229 = load float* %228, align 4 ; [#uses=2]
+ %230 = fmul float %229, %229 ; [#uses=2]
+ %231 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %f.0.i, i32 0, i32 2 ; [#uses=1]
+ %232 = load float* %231, align 4 ; [#uses=2]
+ %.not.i = fcmp oge float %232, %maxp.1.ph.i ; [#uses=1]
+ %233 = fcmp olt float %230, %mind.1.ph.i ; [#uses=1]
+ %or.cond.i = and i1 %.not.i, %233 ; [#uses=1]
+ br i1 %or.cond.i, label %bb4.outer.i, label %bb4.i48
+
+bb4.outer.i: ; preds = %bb.i47, %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit51
+ %maxp.1.ph.i = phi float [ %maxp.1.ph.pre.i, %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit51 ], [ %232, %bb.i47 ] ; [#uses=1]
+ %minf.1.ph.i = phi %"struct.gjkepa2_impl::EPA::sFace"* [ %224, %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit51 ], [ %f.0.i, %bb.i47 ] ; [#uses=12]
+ %mind.1.ph.i = phi float [ %227, %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit51 ], [ %230, %bb.i47 ] ; [#uses=1]
+ br label %bb4.i48
+
+bb4.i48: ; preds = %bb4.outer.i, %bb.i47
+ %.pn.i = phi %"struct.gjkepa2_impl::EPA::sFace"* [ %f.0.i, %bb.i47 ], [ %minf.1.ph.i, %bb4.outer.i ] ; [#uses=1]
+ %f.0.in.i = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %.pn.i, i32 0, i32 5, i32 1 ; [#uses=1]
+ %f.0.i = load %"struct.gjkepa2_impl::EPA::sFace"** %f.0.in.i, align 4 ; [#uses=5]
+ %234 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %f.0.i, null ; [#uses=1]
+ br i1 %234, label %_ZN12gjkepa2_impl3EPA8findbestEv.exit, label %bb.i47
+
+_ZN12gjkepa2_impl3EPA8findbestEv.exit: ; preds = %bb4.i48
+ %235 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i, i32 0, i32 2 ; [#uses=1]
+ %236 = load float* %235, align 4 ; [#uses=2]
+ %237 = fcmp ult float %236, %outer.2.1 ; [#uses=1]
+ br i1 %237, label %bb36, label %bb30
+
+bb30: ; preds = %_ZN12gjkepa2_impl3EPA8findbestEv.exit
+ %minf.1.ph.i141.0 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %tmp142 = load float* %minf.1.ph.i141.0, align 4 ; [#uses=1]
+ %minf.1.ph.i141.1 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %tmp143 = load float* %minf.1.ph.i141.1, align 4 ; [#uses=1]
+ %minf.1.ph.i141.2 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %tmp144 = load float* %minf.1.ph.i141.2, align 4 ; [#uses=1]
+ %minf.1.ph.i141.3 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %tmp145 = load float* %minf.1.ph.i141.3, align 4 ; [#uses=1]
+ %minf.1.ph.i.1 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i, i32 0, i32 1 ; [#uses=1]
+ %tmp = load float* %minf.1.ph.i.1, align 4 ; [#uses=1]
+ %minf.1.ph.i.3.0 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i, i32 0, i32 3, i32 0 ; [#uses=1]
+ %tmp131 = load %struct.GIM_AABB** %minf.1.ph.i.3.0, align 4 ; [#uses=1]
+ %minf.1.ph.i.3.1 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i, i32 0, i32 3, i32 1 ; [#uses=1]
+ %tmp132 = load %struct.GIM_AABB** %minf.1.ph.i.3.1, align 4 ; [#uses=1]
+ %minf.1.ph.i.3.2 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %minf.1.ph.i, i32 0, i32 3, i32 2 ; [#uses=1]
+ %tmp133 = load %struct.GIM_AABB** %minf.1.ph.i.3.2, align 4 ; [#uses=1]
+ br label %bb36
+
+bb32: ; preds = %bb28, %bb23
+ store i32 4, i32* %37, align 4
+ br label %bb37
+
+bb33: ; preds = %bb17
+ store i32 7, i32* %37, align 4
+ br label %bb37
+
+bb34: ; preds = %bb16
+ store i32 6, i32* %37, align 4
+ br label %bb37
+
+bb36: ; preds = %bb30, %_ZN12gjkepa2_impl3EPA8findbestEv.exit, %_ZN12gjkepa2_impl3EPA8findbestEv.exit71
+ %outer.0.0.0.1 = phi float [ %tmp147, %_ZN12gjkepa2_impl3EPA8findbestEv.exit71 ], [ %outer.0.0.0.1, %_ZN12gjkepa2_impl3EPA8findbestEv.exit ], [ %tmp142, %bb30 ] ; [#uses=3]
+ %outer.0.0.1.1 = phi float [ %tmp148, %_ZN12gjkepa2_impl3EPA8findbestEv.exit71 ], [ %outer.0.0.1.1, %_ZN12gjkepa2_impl3EPA8findbestEv.exit ], [ %tmp143, %bb30 ] ; [#uses=3]
+ %outer.0.0.2.1 = phi float [ %tmp149, %_ZN12gjkepa2_impl3EPA8findbestEv.exit71 ], [ %outer.0.0.2.1, %_ZN12gjkepa2_impl3EPA8findbestEv.exit ], [ %tmp144, %bb30 ] ; [#uses=3]
+ %outer.0.0.3.1 = phi float [ %tmp150, %_ZN12gjkepa2_impl3EPA8findbestEv.exit71 ], [ %outer.0.0.3.1, %_ZN12gjkepa2_impl3EPA8findbestEv.exit ], [ %tmp145, %bb30 ] ; [#uses=2]
+ %outer.1.1 = phi float [ %tmp101, %_ZN12gjkepa2_impl3EPA8findbestEv.exit71 ], [ %outer.1.1, %_ZN12gjkepa2_impl3EPA8findbestEv.exit ], [ %tmp, %bb30 ] ; [#uses=5]
+ %outer.2.1 = phi float [ %tmp102, %_ZN12gjkepa2_impl3EPA8findbestEv.exit71 ], [ %outer.2.1, %_ZN12gjkepa2_impl3EPA8findbestEv.exit ], [ %236, %bb30 ] ; [#uses=2]
+ %outer.3.0.1 = phi %struct.GIM_AABB* [ %tmp128, %_ZN12gjkepa2_impl3EPA8findbestEv.exit71 ], [ %outer.3.0.1, %_ZN12gjkepa2_impl3EPA8findbestEv.exit ], [ %tmp131, %bb30 ] ; [#uses=5]
+ %outer.3.1.1 = phi %struct.GIM_AABB* [ %tmp129, %_ZN12gjkepa2_impl3EPA8findbestEv.exit71 ], [ %outer.3.1.1, %_ZN12gjkepa2_impl3EPA8findbestEv.exit ], [ %tmp132, %bb30 ] ; [#uses=5]
+ %outer.3.2.1 = phi %struct.GIM_AABB* [ %tmp130, %_ZN12gjkepa2_impl3EPA8findbestEv.exit71 ], [ %outer.3.2.1, %_ZN12gjkepa2_impl3EPA8findbestEv.exit ], [ %tmp133, %bb30 ] ; [#uses=5]
+ %best.0 = phi %"struct.gjkepa2_impl::EPA::sFace"* [ %minf.1.ph.i64, %_ZN12gjkepa2_impl3EPA8findbestEv.exit71 ], [ %minf.1.ph.i, %_ZN12gjkepa2_impl3EPA8findbestEv.exit ], [ %minf.1.ph.i, %bb30 ] ; [#uses=14]
+ %238 = phi i32 [ 0, %_ZN12gjkepa2_impl3EPA8findbestEv.exit71 ], [ %pass.0, %_ZN12gjkepa2_impl3EPA8findbestEv.exit ], [ %pass.0, %bb30 ] ; [#uses=2]
+ %pass.0 = add i32 %238, 1 ; [#uses=4]
+ %tmp271 = trunc i32 %pass.0 to i8 ; [#uses=1]
+ %239 = icmp ult i32 %238, 255 ; [#uses=1]
+ br i1 %239, label %bb16, label %bb37.loopexit
+
+bb37.loopexit: ; preds = %bb36
+ %.0.pre.pre = load i32* %37, align 4 ; [#uses=1]
+ br label %bb37
+
+bb37: ; preds = %bb37.loopexit, %bb34, %bb33, %bb32
+ %.0.pre = phi i32 [ %.0.pre.pre, %bb37.loopexit ], [ 6, %bb34 ], [ 7, %bb33 ], [ 4, %bb32 ] ; [#uses=1]
+ %240 = fmul float %outer.0.0.2.1, %outer.1.1 ; [#uses=6]
+ %241 = fmul float %outer.0.0.1.1, %outer.1.1 ; [#uses=6]
+ %242 = fmul float %outer.0.0.0.1, %outer.1.1 ; [#uses=6]
+ %243 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %outer.0.0.0.1, float* %243, align 4
+ %244 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %outer.0.0.1.1, float* %244, align 4
+ %245 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %outer.0.0.2.1, float* %245, align 4
+ %246 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %outer.0.0.3.1, float* %246, align 4
+ %247 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 3 ; [#uses=1]
+ store float %outer.1.1, float* %247, align 4
+ %248 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 3, i32* %248, align 4
+ %249 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store %struct.GIM_AABB* %outer.3.0.1, %struct.GIM_AABB** %249, align 4
+ %250 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store %struct.GIM_AABB* %outer.3.1.1, %struct.GIM_AABB** %250, align 4
+ %251 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store %struct.GIM_AABB* %outer.3.2.1, %struct.GIM_AABB** %251, align 4
+ %252 = getelementptr inbounds %struct.GIM_AABB* %outer.3.2.1, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %253 = load float* %252, align 4 ; [#uses=1]
+ %254 = fsub float %253, %240 ; [#uses=2]
+ %255 = getelementptr inbounds %struct.GIM_AABB* %outer.3.2.1, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %256 = load float* %255, align 4 ; [#uses=1]
+ %257 = fsub float %256, %241 ; [#uses=2]
+ %258 = getelementptr inbounds %struct.GIM_AABB* %outer.3.2.1, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %259 = load float* %258, align 4 ; [#uses=1]
+ %260 = fsub float %259, %242 ; [#uses=2]
+ %261 = getelementptr inbounds %struct.GIM_AABB* %outer.3.1.1, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %262 = load float* %261, align 4 ; [#uses=1]
+ %263 = fsub float %262, %240 ; [#uses=2]
+ %264 = getelementptr inbounds %struct.GIM_AABB* %outer.3.1.1, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %265 = load float* %264, align 4 ; [#uses=1]
+ %266 = fsub float %265, %241 ; [#uses=2]
+ %267 = getelementptr inbounds %struct.GIM_AABB* %outer.3.1.1, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %268 = load float* %267, align 4 ; [#uses=1]
+ %269 = fsub float %268, %242 ; [#uses=2]
+ %270 = fmul float %269, %257 ; [#uses=1]
+ %271 = fmul float %266, %260 ; [#uses=1]
+ %272 = fsub float %270, %271 ; [#uses=2]
+ %273 = fmul float %263, %260 ; [#uses=1]
+ %274 = fmul float %269, %254 ; [#uses=1]
+ %275 = fsub float %273, %274 ; [#uses=2]
+ %276 = fmul float %266, %254 ; [#uses=1]
+ %277 = fmul float %263, %257 ; [#uses=1]
+ %278 = fsub float %276, %277 ; [#uses=2]
+ %279 = fmul float %278, %278 ; [#uses=1]
+ %280 = fmul float %275, %275 ; [#uses=1]
+ %281 = fadd float %279, %280 ; [#uses=1]
+ %282 = fmul float %272, %272 ; [#uses=1]
+ %283 = fadd float %281, %282 ; [#uses=1]
+ %284 = call float @sqrtf(float %283) nounwind readonly ; [#uses=3]
+ %285 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 1, i32 1, i32 0 ; [#uses=2]
+ store float %284, float* %285, align 4
+ %286 = getelementptr inbounds %struct.GIM_AABB* %outer.3.0.1, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %287 = load float* %286, align 4 ; [#uses=1]
+ %288 = fsub float %287, %240 ; [#uses=2]
+ %289 = getelementptr inbounds %struct.GIM_AABB* %outer.3.0.1, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %290 = load float* %289, align 4 ; [#uses=1]
+ %291 = fsub float %290, %241 ; [#uses=2]
+ %292 = getelementptr inbounds %struct.GIM_AABB* %outer.3.0.1, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %293 = load float* %292, align 4 ; [#uses=1]
+ %294 = fsub float %293, %242 ; [#uses=2]
+ %295 = load float* %252, align 4 ; [#uses=1]
+ %296 = fsub float %295, %240 ; [#uses=2]
+ %297 = load float* %255, align 4 ; [#uses=1]
+ %298 = fsub float %297, %241 ; [#uses=2]
+ %299 = load float* %258, align 4 ; [#uses=1]
+ %300 = fsub float %299, %242 ; [#uses=2]
+ %301 = fmul float %300, %291 ; [#uses=1]
+ %302 = fmul float %298, %294 ; [#uses=1]
+ %303 = fsub float %301, %302 ; [#uses=2]
+ %304 = fmul float %296, %294 ; [#uses=1]
+ %305 = fmul float %300, %288 ; [#uses=1]
+ %306 = fsub float %304, %305 ; [#uses=2]
+ %307 = fmul float %298, %288 ; [#uses=1]
+ %308 = fmul float %296, %291 ; [#uses=1]
+ %309 = fsub float %307, %308 ; [#uses=2]
+ %310 = fmul float %309, %309 ; [#uses=1]
+ %311 = fmul float %306, %306 ; [#uses=1]
+ %312 = fadd float %310, %311 ; [#uses=1]
+ %313 = fmul float %303, %303 ; [#uses=1]
+ %314 = fadd float %312, %313 ; [#uses=1]
+ %315 = call float @sqrtf(float %314) nounwind readonly ; [#uses=3]
+ %316 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 1, i32 1, i32 1 ; [#uses=2]
+ store float %315, float* %316, align 4
+ %317 = load float* %261, align 4 ; [#uses=1]
+ %318 = fsub float %317, %240 ; [#uses=2]
+ %319 = load float* %264, align 4 ; [#uses=1]
+ %320 = fsub float %319, %241 ; [#uses=2]
+ %321 = load float* %267, align 4 ; [#uses=1]
+ %322 = fsub float %321, %242 ; [#uses=2]
+ %323 = load float* %286, align 4 ; [#uses=1]
+ %324 = fsub float %323, %240 ; [#uses=2]
+ %325 = load float* %289, align 4 ; [#uses=1]
+ %326 = fsub float %325, %241 ; [#uses=2]
+ %327 = load float* %292, align 4 ; [#uses=1]
+ %328 = fsub float %327, %242 ; [#uses=2]
+ %329 = fmul float %328, %320 ; [#uses=1]
+ %330 = fmul float %326, %322 ; [#uses=1]
+ %331 = fsub float %329, %330 ; [#uses=2]
+ %332 = fmul float %324, %322 ; [#uses=1]
+ %333 = fmul float %328, %318 ; [#uses=1]
+ %334 = fsub float %332, %333 ; [#uses=2]
+ %335 = fmul float %326, %318 ; [#uses=1]
+ %336 = fmul float %324, %320 ; [#uses=1]
+ %337 = fsub float %335, %336 ; [#uses=2]
+ %338 = fmul float %337, %337 ; [#uses=1]
+ %339 = fmul float %334, %334 ; [#uses=1]
+ %340 = fadd float %338, %339 ; [#uses=1]
+ %341 = fmul float %331, %331 ; [#uses=1]
+ %342 = fadd float %340, %341 ; [#uses=1]
+ %343 = call float @sqrtf(float %342) nounwind readonly ; [#uses=2]
+ %344 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 1, i32 1, i32 2 ; [#uses=1]
+ %345 = fadd float %284, %315 ; [#uses=1]
+ %346 = fadd float %345, %343 ; [#uses=3]
+ %347 = fdiv float %284, %346 ; [#uses=1]
+ store float %347, float* %285, align 4
+ %348 = fdiv float %315, %346 ; [#uses=1]
+ store float %348, float* %316, align 4
+ %349 = fdiv float %343, %346 ; [#uses=1]
+ store float %349, float* %344, align 4
+ ret i32 %.0.pre
+
+bb38: ; preds = %bb13, %bb, %entry
+ %350 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 8, i32* %350, align 4
+ %351 = getelementptr inbounds %struct.btQuadWord* %guess, i32 0, i32 0, i32 2 ; [#uses=1]
+ %352 = load float* %351, align 4 ; [#uses=3]
+ %353 = fsub float -0.000000e+00, %352 ; [#uses=2]
+ %354 = getelementptr inbounds %struct.btQuadWord* %guess, i32 0, i32 0, i32 1 ; [#uses=1]
+ %355 = load float* %354, align 4 ; [#uses=3]
+ %356 = fsub float -0.000000e+00, %355 ; [#uses=2]
+ %357 = getelementptr inbounds %struct.btQuadWord* %guess, i32 0, i32 0, i32 0 ; [#uses=1]
+ %358 = load float* %357, align 4 ; [#uses=3]
+ %359 = fsub float -0.000000e+00, %358 ; [#uses=2]
+ %360 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ store float %359, float* %360, align 4
+ %361 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ store float %356, float* %361, align 4
+ %362 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ store float %353, float* %362, align 4
+ %363 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %363, align 4
+ %364 = fmul float %358, %358 ; [#uses=1]
+ %365 = fmul float %355, %355 ; [#uses=1]
+ %366 = fadd float %364, %365 ; [#uses=1]
+ %367 = fmul float %352, %352 ; [#uses=1]
+ %368 = fadd float %366, %367 ; [#uses=1]
+ %369 = call float @sqrtf(float %368) nounwind readonly ; [#uses=2]
+ %370 = fcmp ogt float %369, 0.000000e+00 ; [#uses=1]
+ br i1 %370, label %bb39, label %bb42
+
+bb39: ; preds = %bb38
+ %371 = fdiv float 1.000000e+00, %369 ; [#uses=3]
+ %372 = fmul float %371, %353 ; [#uses=1]
+ %373 = fmul float %371, %356 ; [#uses=1]
+ %374 = fmul float %371, %359 ; [#uses=1]
+ br label %bb42
+
+bb42: ; preds = %bb39, %bb38
+ %storemerge278 = phi float [ %374, %bb39 ], [ 1.000000e+00, %bb38 ] ; [#uses=1]
+ %storemerge277 = phi float [ %373, %bb39 ], [ 0.000000e+00, %bb38 ] ; [#uses=1]
+ %storemerge = phi float [ %372, %bb39 ], [ 0.000000e+00, %bb38 ] ; [#uses=1]
+ store float %storemerge278, float* %360, align 4
+ store float %storemerge277, float* %361, align 4
+ store float %storemerge, float* %362, align 4
+ store float 0.000000e+00, float* %363, align 4
+ %375 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %375, align 4
+ %376 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 1, i32* %376, align 4
+ %377 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %378 = load %struct.GIM_AABB** %377, align 4 ; [#uses=1]
+ %379 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store %struct.GIM_AABB* %378, %struct.GIM_AABB** %379, align 4
+ %380 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %this, i32 0, i32 1, i32 1, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %380, align 4
+ ret i32 8
+}
+
+; [#uses=3]
+define zeroext i8 @_ZN15btGjkEpaSolver211PenetrationEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsEb(%struct.btConvexShape* %shape0, %struct.btTransform* %wtrs0, %struct.btConvexShape* %shape1, %struct.btTransform* nocapture %wtrs1, %struct.btQuadWord* nocapture %guess, %"struct.btGjkEpaSolver2::sResults"* nocapture %results, i8 zeroext %usemargins) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %shape = alloca %"struct.gjkepa2_impl::MinkowskiDiff", align 8 ; [#uses=5]
+ %gjk = alloca %"struct.gjkepa2_impl::GJK", align 8 ; [#uses=10]
+ %epa = alloca %"struct.gjkepa2_impl::EPA", align 8 ; [#uses=18]
+ call fastcc void @_ZN12gjkepa2_implL10InitializeEPK13btConvexShapeRK11btTransformS2_S5_RN15btGjkEpaSolver28sResultsERNS_13MinkowskiDiffEb(%struct.btConvexShape* %shape0, %struct.btTransform* %wtrs0, %struct.btConvexShape* %shape1, %struct.btTransform* %wtrs1, %"struct.btGjkEpaSolver2::sResults"* %results, %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i8 zeroext %usemargins)
+ %3 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 8
+ %4 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 8
+ %6 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 6 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 9 ; [#uses=1]
+ store i32 2, i32* %8, align 8
+ %9 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 7 ; [#uses=1]
+ store i32 0, i32* %9, align 8
+ %10 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 8
+ %11 = getelementptr inbounds %struct.btQuadWord* %guess, i32 0, i32 0, i32 2 ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = fsub float -0.000000e+00, %12 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %guess, i32 0, i32 0, i32 1 ; [#uses=2]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fsub float -0.000000e+00, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %guess, i32 0, i32 0, i32 0 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fsub float -0.000000e+00, %18 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %19, float* %20, align 8
+ %21 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %16, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %13, float* %22, align 8
+ %23 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 4
+ %24 = call i32 @_ZN12gjkepa2_impl3GJK8EvaluateERKNS_13MinkowskiDiffERK9btVector3(%"struct.gjkepa2_impl::GJK"* %gjk, %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, %struct.btQuadWord* %2) ; [#uses=1]
+ switch i32 %24, label %bb10 [
+ i32 1, label %bb
+ i32 2, label %bb8
+ ]
+
+bb: ; preds = %entry
+ %25 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 7, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* null, %"struct.gjkepa2_impl::EPA::sFace"** %25, align 8
+ %26 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 7, i32 1 ; [#uses=1]
+ store i32 0, i32* %26, align 4
+ %27 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 8, i32 0 ; [#uses=2]
+ store %"struct.gjkepa2_impl::EPA::sFace"* null, %"struct.gjkepa2_impl::EPA::sFace"** %27, align 8
+ %28 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 8, i32 1 ; [#uses=3]
+ store i32 0, i32* %28, align 4
+ %29 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 0 ; [#uses=1]
+ store i32 9, i32* %29, align 8
+ %30 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %30, align 8
+ %31 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %32, align 8
+ %33 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %34, align 8
+ %35 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 6 ; [#uses=1]
+ store i32 0, i32* %35, align 4
+ br label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit.i.i.i, %bb
+ %36 = phi i32 [ 0, %bb ], [ %41, %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit.i.i.i ] ; [#uses=1]
+ %37 = phi %"struct.gjkepa2_impl::EPA::sFace"* [ null, %bb ], [ %scevgep8.i.i.i, %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit.i.i.i ] ; [#uses=3]
+ %i.05.i.i.i = phi i32 [ 0, %bb ], [ %42, %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit.i.i.i ] ; [#uses=2]
+ %tmp48 = sub i32 127, %i.05.i.i.i ; [#uses=3]
+ %scevgep8.i.i.i = getelementptr %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 5, i32 %tmp48 ; [#uses=3]
+ %scevgep7.i.i.i = getelementptr %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 5, i32 %tmp48, i32 5, i32 0 ; [#uses=1]
+ %scevgep.i.i.i = getelementptr %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 5, i32 %tmp48, i32 5, i32 1 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* null, %"struct.gjkepa2_impl::EPA::sFace"** %scevgep7.i.i.i, align 4
+ store %"struct.gjkepa2_impl::EPA::sFace"* %37, %"struct.gjkepa2_impl::EPA::sFace"** %scevgep.i.i.i, align 4
+ %38 = icmp eq %"struct.gjkepa2_impl::EPA::sFace"* %37, null ; [#uses=1]
+ br i1 %38, label %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit.i.i.i, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %bb.i.i.i
+ %39 = getelementptr inbounds %"struct.gjkepa2_impl::EPA::sFace"* %37, i32 0, i32 5, i32 0 ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %scevgep8.i.i.i, %"struct.gjkepa2_impl::EPA::sFace"** %39, align 4
+ %.pre.i.i13 = load i32* %28, align 4 ; [#uses=1]
+ br label %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit.i.i.i
+
+_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit.i.i.i: ; preds = %bb.i.i.i.i, %bb.i.i.i
+ %40 = phi i32 [ %.pre.i.i13, %bb.i.i.i.i ], [ %36, %bb.i.i.i ] ; [#uses=1]
+ store %"struct.gjkepa2_impl::EPA::sFace"* %scevgep8.i.i.i, %"struct.gjkepa2_impl::EPA::sFace"** %27, align 8
+ %41 = add i32 %40, 1 ; [#uses=2]
+ store i32 %41, i32* %28, align 4
+ %42 = add i32 %i.05.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %42, 128 ; [#uses=1]
+ br i1 %exitcond, label %_ZN12gjkepa2_impl3EPAC1Ev.exit, label %bb.i.i.i
+
+_ZN12gjkepa2_impl3EPAC1Ev.exit: ; preds = %_ZN12gjkepa2_impl3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit.i.i.i
+ %43 = load float* %11, align 4 ; [#uses=1]
+ %44 = fsub float -0.000000e+00, %43 ; [#uses=1]
+ %45 = load float* %14, align 4 ; [#uses=1]
+ %46 = fsub float -0.000000e+00, %45 ; [#uses=1]
+ %47 = load float* %17, align 4 ; [#uses=1]
+ %48 = fsub float -0.000000e+00, %47 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %48, float* %49, align 8
+ %50 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %46, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %44, float* %51, align 8
+ %52 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %52, align 4
+ %53 = call i32 @_ZN12gjkepa2_impl3EPA8EvaluateERNS_3GJKERK9btVector3(%"struct.gjkepa2_impl::EPA"* %epa, %"struct.gjkepa2_impl::GJK"* %gjk, %struct.btQuadWord* %1) ; [#uses=1]
+ %54 = icmp eq i32 %53, 9 ; [#uses=1]
+ br i1 %54, label %bb7, label %bb3.preheader
+
+bb3.preheader: ; preds = %_ZN12gjkepa2_impl3EPAC1Ev.exit
+ %55 = getelementptr inbounds %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 1, i32 2 ; [#uses=2]
+ %56 = load i32* %55, align 4 ; [#uses=1]
+ %57 = icmp eq i32 %56, 0 ; [#uses=1]
+ br i1 %57, label %bb4, label %bb.nph
+
+bb.nph: ; preds = %bb3.preheader
+ %58 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 3, i32 0 ; [#uses=1]
+ %.phi.trans.insert.i.i = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.phi.trans.insert4.i.i = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 3, i32 1 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit, %bb.nph
+ %i.041 = phi i32 [ 0, %bb.nph ], [ %tmp, %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit ] ; [#uses=3]
+ %w0.0.2.040 = phi float [ 0.000000e+00, %bb.nph ], [ %88, %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit ] ; [#uses=1]
+ %w0.0.1.039 = phi float [ 0.000000e+00, %bb.nph ], [ %87, %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit ] ; [#uses=1]
+ %w0.0.0.038 = phi float [ 0.000000e+00, %bb.nph ], [ %86, %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit ] ; [#uses=1]
+ %scevgep = getelementptr %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 1, i32 1, i32 %i.041 ; [#uses=1]
+ %scevgep46 = getelementptr %"struct.gjkepa2_impl::EPA"* %epa, i32 0, i32 1, i32 0, i32 %i.041 ; [#uses=1]
+ %tmp = add i32 %i.041, 1 ; [#uses=2]
+ %62 = load %struct.GIM_AABB** %scevgep46, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.GIM_AABB* %62, i32 0, i32 0 ; [#uses=1]
+ %64 = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %58, align 8 ; [#uses=2]
+ %65 = ptrtoint void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* %64 to i32 ; [#uses=2]
+ %66 = and i32 %65, 1 ; [#uses=1]
+ %toBool.i.i = icmp eq i32 %66, 0 ; [#uses=1]
+ %.pre.i.i = load %struct.btConvexShape** %.phi.trans.insert.i.i, align 8 ; [#uses=2]
+ %.pre5.i.i = load i32* %.phi.trans.insert4.i.i, align 4 ; [#uses=2]
+ br i1 %toBool.i.i, label %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit, label %bb.i.i
+
+bb.i.i: ; preds = %bb2
+ %67 = ptrtoint %struct.btConvexShape* %.pre.i.i to i32 ; [#uses=1]
+ %68 = add i32 %67, %.pre5.i.i ; [#uses=1]
+ %69 = inttoptr i32 %68 to %struct.btConvexShape* ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btConvexShape* %69, i32 0, i32 0, i32 0 ; [#uses=1]
+ %71 = load i32 (...)*** %70, align 4 ; [#uses=1]
+ %72 = ptrtoint i32 (...)** %71 to i32 ; [#uses=1]
+ %73 = add nsw i32 %65, -1 ; [#uses=1]
+ %74 = add i32 %73, %72 ; [#uses=1]
+ %75 = inttoptr i32 %74 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** ; [#uses=1]
+ %iftmp.134.0.pre.i.i = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %75, align 4 ; [#uses=1]
+ br label %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit
+
+_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit: ; preds = %bb.i.i, %bb2
+ %iftmp.134.0.i.i = phi void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* [ %iftmp.134.0.pre.i.i, %bb.i.i ], [ %64, %bb2 ] ; [#uses=1]
+ %76 = ptrtoint %struct.btConvexShape* %.pre.i.i to i32 ; [#uses=1]
+ %77 = add i32 %76, %.pre5.i.i ; [#uses=1]
+ %78 = inttoptr i32 %77 to %struct.btConvexShape* ; [#uses=1]
+ call void %iftmp.134.0.i.i(%struct.btQuadWord* noalias sret %0, %struct.btConvexShape* %78, %struct.btQuadWord* %63)
+ %79 = load float* %59, align 8 ; [#uses=1]
+ %80 = load float* %scevgep, align 4 ; [#uses=3]
+ %81 = fmul float %79, %80 ; [#uses=1]
+ %82 = load float* %60, align 4 ; [#uses=1]
+ %83 = fmul float %82, %80 ; [#uses=1]
+ %84 = load float* %61, align 8 ; [#uses=1]
+ %85 = fmul float %84, %80 ; [#uses=1]
+ %86 = fadd float %w0.0.0.038, %85 ; [#uses=2]
+ %87 = fadd float %w0.0.1.039, %83 ; [#uses=2]
+ %88 = fadd float %w0.0.2.040, %81 ; [#uses=2]
+ %89 = load i32* %55, align 4 ; [#uses=1]
+ %90 = icmp ugt i32 %89, %tmp ; [#uses=1]
+ br i1 %90, label %bb2, label %bb4
+
+bb4: ; preds = %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit, %bb3.preheader
+ %w0.0.2.0.lcssa = phi float [ 0.000000e+00, %bb3.preheader ], [ %88, %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit ] ; [#uses=4]
+ %w0.0.1.0.lcssa = phi float [ 0.000000e+00, %bb3.preheader ], [ %87, %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit ] ; [#uses=4]
+ %w0.0.0.0.lcssa = phi float [ 0.000000e+00, %bb3.preheader ], [ %86, %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit ] ; [#uses=4]
+ %91 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 0 ; [#uses=1]
+ store i32 1, i32* %91, align 4
+ %92 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ %94 = fmul float %93, %w0.0.0.0.lcssa ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ %97 = fmul float %96, %w0.0.1.0.lcssa ; [#uses=1]
+ %98 = fadd float %94, %97 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %100 = load float* %99, align 4 ; [#uses=1]
+ %101 = fmul float %100, %w0.0.2.0.lcssa ; [#uses=1]
+ %102 = fadd float %98, %101 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %104 = load float* %103, align 4 ; [#uses=1]
+ %105 = fadd float %102, %104 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %107 = load float* %106, align 4 ; [#uses=1]
+ %108 = fmul float %107, %w0.0.0.0.lcssa ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %110 = load float* %109, align 4 ; [#uses=1]
+ %111 = fmul float %110, %w0.0.1.0.lcssa ; [#uses=1]
+ %112 = fadd float %108, %111 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %114 = load float* %113, align 4 ; [#uses=1]
+ %115 = fmul float %114, %w0.0.2.0.lcssa ; [#uses=1]
+ %116 = fadd float %112, %115 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %118 = load float* %117, align 4 ; [#uses=1]
+ %119 = fadd float %116, %118 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %121 = load float* %120, align 4 ; [#uses=1]
+ %122 = fmul float %121, %w0.0.0.0.lcssa ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %124 = load float* %123, align 4 ; [#uses=1]
+ %125 = fmul float %124, %w0.0.1.0.lcssa ; [#uses=1]
+ %126 = fadd float %122, %125 ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %128 = load float* %127, align 4 ; [#uses=1]
+ %129 = fmul float %128, %w0.0.2.0.lcssa ; [#uses=1]
+ %130 = fadd float %126, %129 ; [#uses=1]
+ %131 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %132 = load float* %131, align 4 ; [#uses=1]
+ %133 = fadd float %130, %132 ; [#uses=1]
+ %134 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %133, float* %134, align 4
+ %135 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %119, float* %135, align 4
+ %136 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %105, float* %136, align 4
+ %137 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %137, align 4
+ %138 = load float* %32, align 8 ; [#uses=2]
+ %139 = load float* %34, align 8 ; [#uses=4]
+ %140 = fmul float %138, %139 ; [#uses=1]
+ %141 = load float* %31, align 4 ; [#uses=2]
+ %142 = fmul float %141, %139 ; [#uses=1]
+ %143 = load float* %30, align 8 ; [#uses=2]
+ %144 = fmul float %143, %139 ; [#uses=1]
+ %145 = fsub float %w0.0.2.0.lcssa, %140 ; [#uses=3]
+ %146 = fsub float %w0.0.1.0.lcssa, %142 ; [#uses=3]
+ %147 = fsub float %w0.0.0.0.lcssa, %144 ; [#uses=3]
+ %148 = load float* %92, align 4 ; [#uses=1]
+ %149 = fmul float %148, %147 ; [#uses=1]
+ %150 = load float* %95, align 4 ; [#uses=1]
+ %151 = fmul float %150, %146 ; [#uses=1]
+ %152 = fadd float %149, %151 ; [#uses=1]
+ %153 = load float* %99, align 4 ; [#uses=1]
+ %154 = fmul float %153, %145 ; [#uses=1]
+ %155 = fadd float %152, %154 ; [#uses=1]
+ %156 = load float* %103, align 4 ; [#uses=1]
+ %157 = fadd float %155, %156 ; [#uses=1]
+ %158 = load float* %106, align 4 ; [#uses=1]
+ %159 = fmul float %158, %147 ; [#uses=1]
+ %160 = load float* %109, align 4 ; [#uses=1]
+ %161 = fmul float %160, %146 ; [#uses=1]
+ %162 = fadd float %159, %161 ; [#uses=1]
+ %163 = load float* %113, align 4 ; [#uses=1]
+ %164 = fmul float %163, %145 ; [#uses=1]
+ %165 = fadd float %162, %164 ; [#uses=1]
+ %166 = load float* %117, align 4 ; [#uses=1]
+ %167 = fadd float %165, %166 ; [#uses=1]
+ %168 = load float* %120, align 4 ; [#uses=1]
+ %169 = fmul float %168, %147 ; [#uses=1]
+ %170 = load float* %123, align 4 ; [#uses=1]
+ %171 = fmul float %170, %146 ; [#uses=1]
+ %172 = fadd float %169, %171 ; [#uses=1]
+ %173 = load float* %127, align 4 ; [#uses=1]
+ %174 = fmul float %173, %145 ; [#uses=1]
+ %175 = fadd float %172, %174 ; [#uses=1]
+ %176 = load float* %131, align 4 ; [#uses=1]
+ %177 = fadd float %175, %176 ; [#uses=1]
+ %178 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %177, float* %178, align 4
+ %179 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %167, float* %179, align 4
+ %180 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %157, float* %180, align 4
+ %181 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %181, align 4
+ %182 = fsub float -0.000000e+00, %138 ; [#uses=1]
+ %183 = fsub float -0.000000e+00, %141 ; [#uses=1]
+ %184 = fsub float -0.000000e+00, %143 ; [#uses=1]
+ %185 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %184, float* %185, align 4
+ %186 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %183, float* %186, align 4
+ %187 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %182, float* %187, align 4
+ %188 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %188, align 4
+ %189 = fsub float -0.000000e+00, %139 ; [#uses=1]
+ %190 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 3 ; [#uses=1]
+ store float %189, float* %190, align 4
+ ret i8 1
+
+bb7: ; preds = %_ZN12gjkepa2_impl3EPAC1Ev.exit
+ %191 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 0 ; [#uses=1]
+ store i32 3, i32* %191, align 4
+ ret i8 0
+
+bb8: ; preds = %entry
+ %192 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 0 ; [#uses=1]
+ store i32 2, i32* %192, align 4
+ ret i8 0
+
+bb10: ; preds = %entry
+ ret i8 0
+}
+
+; [#uses=2]
+define zeroext i8 @_ZN15btGjkEpaSolver28DistanceEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsE(%struct.btConvexShape* %shape0, %struct.btTransform* %wtrs0, %struct.btConvexShape* %shape1, %struct.btTransform* nocapture %wtrs1, %struct.btQuadWord* nocapture %guess, %"struct.btGjkEpaSolver2::sResults"* nocapture %results) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %shape = alloca %"struct.gjkepa2_impl::MinkowskiDiff", align 8 ; [#uses=27]
+ %gjk = alloca %"struct.gjkepa2_impl::GJK", align 8 ; [#uses=10]
+ call fastcc void @_ZN12gjkepa2_implL10InitializeEPK13btConvexShapeRK11btTransformS2_S5_RN15btGjkEpaSolver28sResultsERNS_13MinkowskiDiffEb(%struct.btConvexShape* %shape0, %struct.btTransform* %wtrs0, %struct.btConvexShape* %shape1, %struct.btTransform* %wtrs1, %"struct.btGjkEpaSolver2::sResults"* %results, %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i8 zeroext 0)
+ %3 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 8
+ %4 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 8
+ %6 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 6 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 9 ; [#uses=1]
+ store i32 2, i32* %8, align 8
+ %9 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 7 ; [#uses=1]
+ store i32 0, i32* %9, align 8
+ %10 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 8
+ %11 = call i32 @_ZN12gjkepa2_impl3GJK8EvaluateERKNS_13MinkowskiDiffERK9btVector3(%"struct.gjkepa2_impl::GJK"* %gjk, %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, %struct.btQuadWord* %guess) ; [#uses=1]
+ switch i32 %11, label %bb11 [
+ i32 0, label %bb2.preheader
+ i32 1, label %bb12
+ ]
+
+bb2.preheader: ; preds = %entry
+ %12 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 8 ; [#uses=3]
+ %13 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %12, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %13, i32 0, i32 2 ; [#uses=1]
+ %15 = load i32* %14, align 4 ; [#uses=1]
+ %16 = icmp eq i32 %15, 0 ; [#uses=1]
+ br i1 %16, label %bb3, label %bb.nph
+
+bb.nph: ; preds = %bb2.preheader
+ %17 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 3, i32 0 ; [#uses=2]
+ %.phi.trans.insert.i.i = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.phi.trans.insert4.i.i = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 3, i32 1 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.phi.trans.insert.i = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %23 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %24 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %25 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %26 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %27 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %29 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %34 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %36 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %38 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %40 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %41 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %42 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %44 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %45 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %46 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %47 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %48 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit, %bb.nph
+ %49 = phi %"struct.gjkepa2_impl::GJK::sSimplex"* [ %13, %bb.nph ], [ %166, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=2]
+ %i.056 = phi i32 [ 0, %bb.nph ], [ %tmp, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=4]
+ %w1.0.2.055 = phi float [ 0.000000e+00, %bb.nph ], [ %165, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=1]
+ %w1.0.1.054 = phi float [ 0.000000e+00, %bb.nph ], [ %164, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=1]
+ %w1.0.0.053 = phi float [ 0.000000e+00, %bb.nph ], [ %163, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=1]
+ %w0.0.2.052 = phi float [ 0.000000e+00, %bb.nph ], [ %76, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=1]
+ %w0.0.1.051 = phi float [ 0.000000e+00, %bb.nph ], [ %75, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=1]
+ %w0.0.0.050 = phi float [ 0.000000e+00, %bb.nph ], [ %74, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=1]
+ %tmp = add i32 %i.056, 1 ; [#uses=2]
+ %scevgep = getelementptr %"struct.gjkepa2_impl::GJK::sSimplex"* %49, i32 0, i32 1, i32 %i.056 ; [#uses=1]
+ %50 = load float* %scevgep, align 4 ; [#uses=6]
+ %scevgep67 = getelementptr %"struct.gjkepa2_impl::GJK::sSimplex"* %49, i32 0, i32 0, i32 %i.056 ; [#uses=1]
+ %51 = load %struct.GIM_AABB** %scevgep67, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.GIM_AABB* %51, i32 0, i32 0 ; [#uses=1]
+ %53 = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %17, align 8 ; [#uses=2]
+ %54 = ptrtoint void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* %53 to i32 ; [#uses=2]
+ %55 = and i32 %54, 1 ; [#uses=1]
+ %toBool.i.i = icmp eq i32 %55, 0 ; [#uses=1]
+ %.pre.i.i = load %struct.btConvexShape** %.phi.trans.insert.i.i, align 8 ; [#uses=2]
+ %.pre5.i.i = load i32* %.phi.trans.insert4.i.i, align 4 ; [#uses=2]
+ br i1 %toBool.i.i, label %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit, label %bb.i.i
+
+bb.i.i: ; preds = %bb1
+ %56 = ptrtoint %struct.btConvexShape* %.pre.i.i to i32 ; [#uses=1]
+ %57 = add i32 %56, %.pre5.i.i ; [#uses=1]
+ %58 = inttoptr i32 %57 to %struct.btConvexShape* ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btConvexShape* %58, i32 0, i32 0, i32 0 ; [#uses=1]
+ %60 = load i32 (...)*** %59, align 4 ; [#uses=1]
+ %61 = ptrtoint i32 (...)** %60 to i32 ; [#uses=1]
+ %62 = add nsw i32 %54, -1 ; [#uses=1]
+ %63 = add i32 %62, %61 ; [#uses=1]
+ %64 = inttoptr i32 %63 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** ; [#uses=1]
+ %iftmp.134.0.pre.i.i = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %64, align 4 ; [#uses=1]
+ br label %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit
+
+_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit: ; preds = %bb.i.i, %bb1
+ %iftmp.134.0.i.i = phi void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* [ %iftmp.134.0.pre.i.i, %bb.i.i ], [ %53, %bb1 ] ; [#uses=1]
+ %65 = ptrtoint %struct.btConvexShape* %.pre.i.i to i32 ; [#uses=1]
+ %66 = add i32 %65, %.pre5.i.i ; [#uses=1]
+ %67 = inttoptr i32 %66 to %struct.btConvexShape* ; [#uses=1]
+ call void %iftmp.134.0.i.i(%struct.btQuadWord* noalias sret %2, %struct.btConvexShape* %67, %struct.btQuadWord* %52)
+ %68 = load float* %18, align 8 ; [#uses=1]
+ %69 = fmul float %68, %50 ; [#uses=1]
+ %70 = load float* %19, align 4 ; [#uses=1]
+ %71 = fmul float %70, %50 ; [#uses=1]
+ %72 = load float* %20, align 8 ; [#uses=1]
+ %73 = fmul float %72, %50 ; [#uses=1]
+ %74 = fadd float %w0.0.0.050, %73 ; [#uses=2]
+ %75 = fadd float %w0.0.1.051, %71 ; [#uses=2]
+ %76 = fadd float %w0.0.2.052, %69 ; [#uses=2]
+ %77 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %12, align 4 ; [#uses=1]
+ %scevgep68 = getelementptr %"struct.gjkepa2_impl::GJK::sSimplex"* %77, i32 0, i32 0, i32 %i.056 ; [#uses=1]
+ %78 = load %struct.GIM_AABB** %scevgep68, align 4 ; [#uses=3]
+ %79 = getelementptr inbounds %struct.GIM_AABB* %78, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fsub float -0.000000e+00, %80 ; [#uses=3]
+ %82 = getelementptr inbounds %struct.GIM_AABB* %78, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = fsub float -0.000000e+00, %83 ; [#uses=3]
+ %85 = getelementptr inbounds %struct.GIM_AABB* %78, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ %87 = fsub float -0.000000e+00, %86 ; [#uses=3]
+ %88 = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %17, align 8 ; [#uses=2]
+ %89 = ptrtoint void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* %88 to i32 ; [#uses=2]
+ %90 = and i32 %89, 1 ; [#uses=1]
+ %toBool.i = icmp eq i32 %90, 0 ; [#uses=1]
+ %.pre.i = load %struct.btConvexShape** %.phi.trans.insert.i, align 4 ; [#uses=2]
+ %.pre5.i = load i32* %.phi.trans.insert4.i.i, align 4 ; [#uses=2]
+ br i1 %toBool.i, label %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit, label %bb.i
+
+bb.i: ; preds = %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit
+ %91 = ptrtoint %struct.btConvexShape* %.pre.i to i32 ; [#uses=1]
+ %92 = add i32 %91, %.pre5.i ; [#uses=1]
+ %93 = inttoptr i32 %92 to %struct.btConvexShape* ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btConvexShape* %93, i32 0, i32 0, i32 0 ; [#uses=1]
+ %95 = load i32 (...)*** %94, align 4 ; [#uses=1]
+ %96 = ptrtoint i32 (...)** %95 to i32 ; [#uses=1]
+ %97 = add nsw i32 %89, -1 ; [#uses=1]
+ %98 = add i32 %97, %96 ; [#uses=1]
+ %99 = inttoptr i32 %98 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** ; [#uses=1]
+ %iftmp.135.0.pre.i = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %99, align 4 ; [#uses=1]
+ br label %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit
+
+_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit: ; preds = %bb.i, %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit
+ %iftmp.135.0.i = phi void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* [ %iftmp.135.0.pre.i, %bb.i ], [ %88, %_ZNK12gjkepa2_impl13MinkowskiDiff7SupportERK9btVector3j.exit ] ; [#uses=1]
+ %100 = load float* %21, align 8 ; [#uses=1]
+ %101 = fmul float %100, %87 ; [#uses=1]
+ %102 = load float* %22, align 4 ; [#uses=1]
+ %103 = fmul float %102, %84 ; [#uses=1]
+ %104 = fadd float %101, %103 ; [#uses=1]
+ %105 = load float* %23, align 8 ; [#uses=1]
+ %106 = fmul float %105, %81 ; [#uses=1]
+ %107 = fadd float %104, %106 ; [#uses=1]
+ %108 = load float* %24, align 8 ; [#uses=1]
+ %109 = fmul float %108, %87 ; [#uses=1]
+ %110 = load float* %25, align 4 ; [#uses=1]
+ %111 = fmul float %110, %84 ; [#uses=1]
+ %112 = fadd float %109, %111 ; [#uses=1]
+ %113 = load float* %26, align 8 ; [#uses=1]
+ %114 = fmul float %113, %81 ; [#uses=1]
+ %115 = fadd float %112, %114 ; [#uses=1]
+ %116 = load float* %27, align 8 ; [#uses=1]
+ %117 = fmul float %116, %87 ; [#uses=1]
+ %118 = load float* %28, align 4 ; [#uses=1]
+ %119 = fmul float %118, %84 ; [#uses=1]
+ %120 = fadd float %117, %119 ; [#uses=1]
+ %121 = load float* %29, align 8 ; [#uses=1]
+ %122 = fmul float %121, %81 ; [#uses=1]
+ %123 = fadd float %120, %122 ; [#uses=1]
+ store float %123, float* %30, align 8
+ store float %115, float* %31, align 4
+ store float %107, float* %32, align 8
+ store float 0.000000e+00, float* %33, align 4
+ %124 = ptrtoint %struct.btConvexShape* %.pre.i to i32 ; [#uses=1]
+ %125 = add i32 %124, %.pre5.i ; [#uses=1]
+ %126 = inttoptr i32 %125 to %struct.btConvexShape* ; [#uses=1]
+ call void %iftmp.135.0.i(%struct.btQuadWord* noalias sret %1, %struct.btConvexShape* %126, %struct.btQuadWord* %0)
+ %127 = load float* %34, align 8 ; [#uses=1]
+ %128 = load float* %35, align 8 ; [#uses=3]
+ %129 = fmul float %127, %128 ; [#uses=1]
+ %130 = load float* %36, align 4 ; [#uses=1]
+ %131 = load float* %37, align 4 ; [#uses=3]
+ %132 = fmul float %130, %131 ; [#uses=1]
+ %133 = fadd float %129, %132 ; [#uses=1]
+ %134 = load float* %38, align 8 ; [#uses=1]
+ %135 = load float* %39, align 8 ; [#uses=3]
+ %136 = fmul float %134, %135 ; [#uses=1]
+ %137 = fadd float %133, %136 ; [#uses=1]
+ %138 = load float* %40, align 8 ; [#uses=1]
+ %139 = fadd float %137, %138 ; [#uses=1]
+ %140 = load float* %41, align 8 ; [#uses=1]
+ %141 = fmul float %140, %128 ; [#uses=1]
+ %142 = load float* %42, align 4 ; [#uses=1]
+ %143 = fmul float %142, %131 ; [#uses=1]
+ %144 = fadd float %141, %143 ; [#uses=1]
+ %145 = load float* %43, align 8 ; [#uses=1]
+ %146 = fmul float %145, %135 ; [#uses=1]
+ %147 = fadd float %144, %146 ; [#uses=1]
+ %148 = load float* %44, align 4 ; [#uses=1]
+ %149 = fadd float %147, %148 ; [#uses=1]
+ %150 = load float* %45, align 8 ; [#uses=1]
+ %151 = fmul float %150, %128 ; [#uses=1]
+ %152 = load float* %46, align 4 ; [#uses=1]
+ %153 = fmul float %152, %131 ; [#uses=1]
+ %154 = fadd float %151, %153 ; [#uses=1]
+ %155 = load float* %47, align 8 ; [#uses=1]
+ %156 = fmul float %155, %135 ; [#uses=1]
+ %157 = fadd float %154, %156 ; [#uses=1]
+ %158 = load float* %48, align 8 ; [#uses=1]
+ %159 = fadd float %157, %158 ; [#uses=1]
+ %160 = fmul float %139, %50 ; [#uses=1]
+ %161 = fmul float %149, %50 ; [#uses=1]
+ %162 = fmul float %159, %50 ; [#uses=1]
+ %163 = fadd float %w1.0.0.053, %162 ; [#uses=2]
+ %164 = fadd float %w1.0.1.054, %161 ; [#uses=2]
+ %165 = fadd float %w1.0.2.055, %160 ; [#uses=2]
+ %166 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %12, align 4 ; [#uses=2]
+ %167 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %166, i32 0, i32 2 ; [#uses=1]
+ %168 = load i32* %167, align 4 ; [#uses=1]
+ %169 = icmp ugt i32 %168, %tmp ; [#uses=1]
+ br i1 %169, label %bb1, label %bb3
+
+bb3: ; preds = %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit, %bb2.preheader
+ %w1.0.2.0.lcssa = phi float [ 0.000000e+00, %bb2.preheader ], [ %165, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=4]
+ %w1.0.1.0.lcssa = phi float [ 0.000000e+00, %bb2.preheader ], [ %164, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=4]
+ %w1.0.0.0.lcssa = phi float [ 0.000000e+00, %bb2.preheader ], [ %163, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=4]
+ %w0.0.2.0.lcssa = phi float [ 0.000000e+00, %bb2.preheader ], [ %76, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=4]
+ %w0.0.1.0.lcssa = phi float [ 0.000000e+00, %bb2.preheader ], [ %75, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=4]
+ %w0.0.0.0.lcssa = phi float [ 0.000000e+00, %bb2.preheader ], [ %74, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support1ERK9btVector3.exit ] ; [#uses=4]
+ %170 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %171 = load float* %170, align 4 ; [#uses=1]
+ %172 = fmul float %171, %w0.0.0.0.lcssa ; [#uses=1]
+ %173 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %174 = load float* %173, align 4 ; [#uses=1]
+ %175 = fmul float %174, %w0.0.1.0.lcssa ; [#uses=1]
+ %176 = fadd float %172, %175 ; [#uses=1]
+ %177 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %178 = load float* %177, align 4 ; [#uses=1]
+ %179 = fmul float %178, %w0.0.2.0.lcssa ; [#uses=1]
+ %180 = fadd float %176, %179 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %182 = load float* %181, align 4 ; [#uses=1]
+ %183 = fadd float %180, %182 ; [#uses=1]
+ %184 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %185 = load float* %184, align 4 ; [#uses=1]
+ %186 = fmul float %185, %w0.0.0.0.lcssa ; [#uses=1]
+ %187 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %188 = load float* %187, align 4 ; [#uses=1]
+ %189 = fmul float %188, %w0.0.1.0.lcssa ; [#uses=1]
+ %190 = fadd float %186, %189 ; [#uses=1]
+ %191 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %192 = load float* %191, align 4 ; [#uses=1]
+ %193 = fmul float %192, %w0.0.2.0.lcssa ; [#uses=1]
+ %194 = fadd float %190, %193 ; [#uses=1]
+ %195 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %196 = load float* %195, align 4 ; [#uses=1]
+ %197 = fadd float %194, %196 ; [#uses=1]
+ %198 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %199 = load float* %198, align 4 ; [#uses=1]
+ %200 = fmul float %199, %w0.0.0.0.lcssa ; [#uses=1]
+ %201 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %202 = load float* %201, align 4 ; [#uses=1]
+ %203 = fmul float %202, %w0.0.1.0.lcssa ; [#uses=1]
+ %204 = fadd float %200, %203 ; [#uses=1]
+ %205 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %206 = load float* %205, align 4 ; [#uses=1]
+ %207 = fmul float %206, %w0.0.2.0.lcssa ; [#uses=1]
+ %208 = fadd float %204, %207 ; [#uses=1]
+ %209 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %210 = load float* %209, align 4 ; [#uses=1]
+ %211 = fadd float %208, %210 ; [#uses=1]
+ %212 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %211, float* %212, align 4
+ %213 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %197, float* %213, align 4
+ %214 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %183, float* %214, align 4
+ %215 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %215, align 4
+ %216 = load float* %170, align 4 ; [#uses=1]
+ %217 = fmul float %216, %w1.0.0.0.lcssa ; [#uses=1]
+ %218 = load float* %173, align 4 ; [#uses=1]
+ %219 = fmul float %218, %w1.0.1.0.lcssa ; [#uses=1]
+ %220 = fadd float %217, %219 ; [#uses=1]
+ %221 = load float* %177, align 4 ; [#uses=1]
+ %222 = fmul float %221, %w1.0.2.0.lcssa ; [#uses=1]
+ %223 = fadd float %220, %222 ; [#uses=1]
+ %224 = load float* %181, align 4 ; [#uses=1]
+ %225 = fadd float %223, %224 ; [#uses=1]
+ %226 = load float* %184, align 4 ; [#uses=1]
+ %227 = fmul float %226, %w1.0.0.0.lcssa ; [#uses=1]
+ %228 = load float* %187, align 4 ; [#uses=1]
+ %229 = fmul float %228, %w1.0.1.0.lcssa ; [#uses=1]
+ %230 = fadd float %227, %229 ; [#uses=1]
+ %231 = load float* %191, align 4 ; [#uses=1]
+ %232 = fmul float %231, %w1.0.2.0.lcssa ; [#uses=1]
+ %233 = fadd float %230, %232 ; [#uses=1]
+ %234 = load float* %195, align 4 ; [#uses=1]
+ %235 = fadd float %233, %234 ; [#uses=1]
+ %236 = load float* %198, align 4 ; [#uses=1]
+ %237 = fmul float %236, %w1.0.0.0.lcssa ; [#uses=1]
+ %238 = load float* %201, align 4 ; [#uses=1]
+ %239 = fmul float %238, %w1.0.1.0.lcssa ; [#uses=1]
+ %240 = fadd float %237, %239 ; [#uses=1]
+ %241 = load float* %205, align 4 ; [#uses=1]
+ %242 = fmul float %241, %w1.0.2.0.lcssa ; [#uses=1]
+ %243 = fadd float %240, %242 ; [#uses=1]
+ %244 = load float* %209, align 4 ; [#uses=1]
+ %245 = fadd float %243, %244 ; [#uses=1]
+ %246 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %245, float* %246, align 4
+ %247 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %235, float* %247, align 4
+ %248 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %225, float* %248, align 4
+ %249 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %249, align 4
+ %250 = fsub float %w0.0.2.0.lcssa, %w1.0.2.0.lcssa ; [#uses=4]
+ %251 = fsub float %w0.0.1.0.lcssa, %w1.0.1.0.lcssa ; [#uses=4]
+ %252 = fsub float %w0.0.0.0.lcssa, %w1.0.0.0.lcssa ; [#uses=4]
+ %253 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ store float %252, float* %253, align 4
+ %254 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ store float %251, float* %254, align 4
+ %255 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ store float %250, float* %255, align 4
+ %256 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %256, align 4
+ %257 = fmul float %252, %252 ; [#uses=1]
+ %258 = fmul float %251, %251 ; [#uses=1]
+ %259 = fadd float %257, %258 ; [#uses=1]
+ %260 = fmul float %250, %250 ; [#uses=1]
+ %261 = fadd float %259, %260 ; [#uses=1]
+ %262 = call float @sqrtf(float %261) nounwind readonly ; [#uses=3]
+ %263 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 3 ; [#uses=1]
+ store float %262, float* %263, align 4
+ %264 = fcmp ogt float %262, 0x3F1A36E2E0000000 ; [#uses=1]
+ %iftmp.232.0 = select i1 %264, float %262, float 1.000000e+00 ; [#uses=1]
+ %265 = fdiv float 1.000000e+00, %iftmp.232.0 ; [#uses=3]
+ %266 = fmul float %252, %265 ; [#uses=1]
+ store float %266, float* %253, align 4
+ %267 = fmul float %251, %265 ; [#uses=1]
+ store float %267, float* %254, align 4
+ %268 = fmul float %250, %265 ; [#uses=1]
+ store float %268, float* %255, align 4
+ ret i8 1
+
+bb11: ; preds = %entry
+ br label %bb12
+
+bb12: ; preds = %bb11, %entry
+ %iftmp.233.0 = phi i32 [ 2, %bb11 ], [ 1, %entry ] ; [#uses=1]
+ %269 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 0 ; [#uses=1]
+ store i32 %iftmp.233.0, i32* %269, align 4
+ ret i8 0
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN15btGjkEpaSolver214SignedDistanceEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsE(%struct.btConvexShape* %shape0, %struct.btTransform* %wtrs0, %struct.btConvexShape* %shape1, %struct.btTransform* nocapture %wtrs1, %struct.btQuadWord* nocapture %guess, %"struct.btGjkEpaSolver2::sResults"* nocapture %results) align 2 {
+entry:
+ %0 = tail call zeroext i8 @_ZN15btGjkEpaSolver28DistanceEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsE(%struct.btConvexShape* %shape0, %struct.btTransform* %wtrs0, %struct.btConvexShape* %shape1, %struct.btTransform* %wtrs1, %struct.btQuadWord* %guess, %"struct.btGjkEpaSolver2::sResults"* %results) ; [#uses=1]
+ %toBoolnot = icmp eq i8 %0, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb, label %bb4
+
+bb: ; preds = %entry
+ %1 = tail call zeroext i8 @_ZN15btGjkEpaSolver211PenetrationEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsEb(%struct.btConvexShape* %shape0, %struct.btTransform* %wtrs0, %struct.btConvexShape* %shape1, %struct.btTransform* %wtrs1, %struct.btQuadWord* %guess, %"struct.btGjkEpaSolver2::sResults"* %results, i8 zeroext 0) ; [#uses=1]
+ ret i8 %1
+
+bb4: ; preds = %entry
+ ret i8 1
+}
+
+; [#uses=0]
+define float @_ZN15btGjkEpaSolver214SignedDistanceERK9btVector3fPK13btConvexShapeRK11btTransformRNS_8sResultsE(%struct.btQuadWord* nocapture %position, float %margin, %struct.btConvexShape* %shape0, %struct.btTransform* %wtrs0, %"struct.btGjkEpaSolver2::sResults"* %results) align 2 {
+invcont2:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %3 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %shape = alloca %"struct.gjkepa2_impl::MinkowskiDiff", align 8 ; [#uses=27]
+ %shape1 = alloca %struct.btPolyhedralConvexShape, align 8 ; [#uses=6]
+ %wtrs1 = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %gjk = alloca %"struct.gjkepa2_impl::GJK", align 8 ; [#uses=11]
+ %4 = getelementptr inbounds %struct.btPolyhedralConvexShape* %shape1, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %4)
+ %5 = getelementptr inbounds %struct.btPolyhedralConvexShape* %shape1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btSphereShape, i32 0, i32 2), i32 (...)*** %5, align 8
+ %6 = getelementptr inbounds %struct.btPolyhedralConvexShape* %shape1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 8, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.btPolyhedralConvexShape* %shape1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %margin, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btPolyhedralConvexShape* %shape1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %margin, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %9, align 8
+ %10 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 8
+ %12 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 8
+ %14 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 8
+ %16 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 8
+ %18 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %19, align 8
+ %20 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %position, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 8
+ %24 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %position, i32 0, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %position, i32 0, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ store float %29, float* %27, align 8
+ %30 = getelementptr inbounds %struct.btTransform* %wtrs1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %position, i32 0, i32 0, i32 3 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btPolyhedralConvexShape* %shape1, i32 0, i32 0, i32 0 ; [#uses=5]
+ call fastcc void @_ZN12gjkepa2_implL10InitializeEPK13btConvexShapeRK11btTransformS2_S5_RN15btGjkEpaSolver28sResultsERNS_13MinkowskiDiffEb(%struct.btConvexShape* %shape0, %struct.btTransform* %wtrs0, %struct.btConvexShape* %33, %struct.btTransform* %wtrs1, %"struct.btGjkEpaSolver2::sResults"* %results, %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i8 zeroext 0)
+ %34 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %34, align 8
+ %35 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 8
+ %37 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 4
+ %38 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 6 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ %39 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 9 ; [#uses=1]
+ store i32 2, i32* %39, align 8
+ %40 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 7 ; [#uses=1]
+ store i32 0, i32* %40, align 8
+ %41 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 8
+ %42 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %42, align 8
+ %43 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %43, align 4
+ %44 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %44, align 8
+ %45 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %45, align 4
+ %46 = invoke i32 @_ZN12gjkepa2_impl3GJK8EvaluateERKNS_13MinkowskiDiffERK9btVector3(%"struct.gjkepa2_impl::GJK"* %gjk, %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, %struct.btQuadWord* %3)
+ to label %invcont3 unwind label %lpad ; [#uses=1]
+
+invcont3: ; preds = %invcont2
+ switch i32 %46, label %bb31 [
+ i32 0, label %bb8.preheader
+ i32 1, label %bb15
+ ]
+
+bb8.preheader: ; preds = %invcont3
+ %47 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 8 ; [#uses=2]
+ %48 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 3, i32 0 ; [#uses=2]
+ %.phi.trans.insert.i.i = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.phi.trans.insert4.i.i = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 3, i32 1 ; [#uses=2]
+ %49 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.phi.trans.insert.i = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 0, i32 1 ; [#uses=1]
+ %52 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %53 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %54 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %55 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %56 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %57 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %58 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %59 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %60 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %65 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %67 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %69 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %71 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %72 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %73 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %74 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %75 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %76 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %77 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %78 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %79 = getelementptr inbounds %"struct.gjkepa2_impl::MinkowskiDiff"* %shape, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ br label %bb8
+
+bb5: ; preds = %bb8
+ %scevgep93 = getelementptr %"struct.gjkepa2_impl::GJK::sSimplex"* %198, i32 0, i32 1, i32 %197 ; [#uses=1]
+ %80 = load float* %scevgep93, align 4 ; [#uses=6]
+ %scevgep92 = getelementptr %"struct.gjkepa2_impl::GJK::sSimplex"* %198, i32 0, i32 0, i32 %197 ; [#uses=1]
+ %81 = load %struct.GIM_AABB** %scevgep92, align 4 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.GIM_AABB* %81, i32 0, i32 0 ; [#uses=1]
+ %83 = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %48, align 8 ; [#uses=2]
+ %84 = ptrtoint void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* %83 to i32 ; [#uses=2]
+ %85 = and i32 %84, 1 ; [#uses=1]
+ %toBool.i.i = icmp eq i32 %85, 0 ; [#uses=1]
+ %.pre.i.i = load %struct.btConvexShape** %.phi.trans.insert.i.i, align 8 ; [#uses=2]
+ %.pre5.i.i = load i32* %.phi.trans.insert4.i.i, align 4 ; [#uses=2]
+ br i1 %toBool.i.i, label %_ZNK12gjkepa2_impl13MinkowskiDiff8Support0ERK9btVector3.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %bb5
+ %86 = ptrtoint %struct.btConvexShape* %.pre.i.i to i32 ; [#uses=1]
+ %87 = add i32 %86, %.pre5.i.i ; [#uses=1]
+ %88 = inttoptr i32 %87 to %struct.btConvexShape* ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btConvexShape* %88, i32 0, i32 0, i32 0 ; [#uses=1]
+ %90 = load i32 (...)*** %89, align 4 ; [#uses=1]
+ %91 = ptrtoint i32 (...)** %90 to i32 ; [#uses=1]
+ %92 = add nsw i32 %84, -1 ; [#uses=1]
+ %93 = add i32 %92, %91 ; [#uses=1]
+ %94 = inttoptr i32 %93 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** ; [#uses=1]
+ %iftmp.134.0.pre.i.i = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %94, align 4 ; [#uses=1]
+ br label %_ZNK12gjkepa2_impl13MinkowskiDiff8Support0ERK9btVector3.exit.i
+
+_ZNK12gjkepa2_impl13MinkowskiDiff8Support0ERK9btVector3.exit.i: ; preds = %bb.i.i, %bb5
+ %iftmp.134.0.i.i = phi void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* [ %iftmp.134.0.pre.i.i, %bb.i.i ], [ %83, %bb5 ] ; [#uses=1]
+ %95 = ptrtoint %struct.btConvexShape* %.pre.i.i to i32 ; [#uses=1]
+ %96 = add i32 %95, %.pre5.i.i ; [#uses=1]
+ %97 = inttoptr i32 %96 to %struct.btConvexShape* ; [#uses=1]
+ invoke void %iftmp.134.0.i.i(%struct.btQuadWord* noalias sret %2, %struct.btConvexShape* %97, %struct.btQuadWord* %82)
+ to label %invcont6 unwind label %lpad
+
+invcont6: ; preds = %_ZNK12gjkepa2_impl13MinkowskiDiff8Support0ERK9btVector3.exit.i
+ %98 = load float* %49, align 8 ; [#uses=1]
+ %99 = fmul float %98, %80 ; [#uses=1]
+ %100 = load float* %50, align 4 ; [#uses=1]
+ %101 = fmul float %100, %80 ; [#uses=1]
+ %102 = load float* %51, align 8 ; [#uses=1]
+ %103 = fmul float %102, %80 ; [#uses=1]
+ %104 = fadd float %w0.0.0.0, %103 ; [#uses=1]
+ %105 = fadd float %w0.0.1.0, %101 ; [#uses=1]
+ %106 = fadd float %w0.0.2.0, %99 ; [#uses=1]
+ %107 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %47, align 4 ; [#uses=1]
+ %scevgep = getelementptr %"struct.gjkepa2_impl::GJK::sSimplex"* %107, i32 0, i32 0, i32 %197 ; [#uses=1]
+ %108 = load %struct.GIM_AABB** %scevgep, align 4 ; [#uses=3]
+ %109 = getelementptr inbounds %struct.GIM_AABB* %108, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %110 = load float* %109, align 4 ; [#uses=1]
+ %111 = fsub float -0.000000e+00, %110 ; [#uses=3]
+ %112 = getelementptr inbounds %struct.GIM_AABB* %108, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %113 = load float* %112, align 4 ; [#uses=1]
+ %114 = fsub float -0.000000e+00, %113 ; [#uses=3]
+ %115 = getelementptr inbounds %struct.GIM_AABB* %108, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %116 = load float* %115, align 4 ; [#uses=1]
+ %117 = fsub float -0.000000e+00, %116 ; [#uses=3]
+ %118 = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %48, align 8 ; [#uses=2]
+ %119 = ptrtoint void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* %118 to i32 ; [#uses=2]
+ %120 = and i32 %119, 1 ; [#uses=1]
+ %toBool.i = icmp eq i32 %120, 0 ; [#uses=1]
+ %.pre.i = load %struct.btConvexShape** %.phi.trans.insert.i, align 4 ; [#uses=2]
+ %.pre5.i = load i32* %.phi.trans.insert4.i.i, align 4 ; [#uses=2]
+ br i1 %toBool.i, label %bb2.i, label %bb.i
+
+bb.i: ; preds = %invcont6
+ %121 = ptrtoint %struct.btConvexShape* %.pre.i to i32 ; [#uses=1]
+ %122 = add i32 %121, %.pre5.i ; [#uses=1]
+ %123 = inttoptr i32 %122 to %struct.btConvexShape* ; [#uses=1]
+ %124 = getelementptr inbounds %struct.btConvexShape* %123, i32 0, i32 0, i32 0 ; [#uses=1]
+ %125 = load i32 (...)*** %124, align 4 ; [#uses=1]
+ %126 = ptrtoint i32 (...)** %125 to i32 ; [#uses=1]
+ %127 = add nsw i32 %119, -1 ; [#uses=1]
+ %128 = add i32 %127, %126 ; [#uses=1]
+ %129 = inttoptr i32 %128 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** ; [#uses=1]
+ %iftmp.135.0.pre.i = load void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)** %129, align 4 ; [#uses=1]
+ br label %bb2.i
+
+bb2.i: ; preds = %bb.i, %invcont6
+ %iftmp.135.0.i = phi void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* [ %iftmp.135.0.pre.i, %bb.i ], [ %118, %invcont6 ] ; [#uses=1]
+ %130 = load float* %52, align 8 ; [#uses=1]
+ %131 = fmul float %130, %117 ; [#uses=1]
+ %132 = load float* %53, align 4 ; [#uses=1]
+ %133 = fmul float %132, %114 ; [#uses=1]
+ %134 = fadd float %131, %133 ; [#uses=1]
+ %135 = load float* %54, align 8 ; [#uses=1]
+ %136 = fmul float %135, %111 ; [#uses=1]
+ %137 = fadd float %134, %136 ; [#uses=1]
+ %138 = load float* %55, align 8 ; [#uses=1]
+ %139 = fmul float %138, %117 ; [#uses=1]
+ %140 = load float* %56, align 4 ; [#uses=1]
+ %141 = fmul float %140, %114 ; [#uses=1]
+ %142 = fadd float %139, %141 ; [#uses=1]
+ %143 = load float* %57, align 8 ; [#uses=1]
+ %144 = fmul float %143, %111 ; [#uses=1]
+ %145 = fadd float %142, %144 ; [#uses=1]
+ %146 = load float* %58, align 8 ; [#uses=1]
+ %147 = fmul float %146, %117 ; [#uses=1]
+ %148 = load float* %59, align 4 ; [#uses=1]
+ %149 = fmul float %148, %114 ; [#uses=1]
+ %150 = fadd float %147, %149 ; [#uses=1]
+ %151 = load float* %60, align 8 ; [#uses=1]
+ %152 = fmul float %151, %111 ; [#uses=1]
+ %153 = fadd float %150, %152 ; [#uses=1]
+ store float %153, float* %61, align 8
+ store float %145, float* %62, align 4
+ store float %137, float* %63, align 8
+ store float 0.000000e+00, float* %64, align 4
+ %154 = ptrtoint %struct.btConvexShape* %.pre.i to i32 ; [#uses=1]
+ %155 = add i32 %154, %.pre5.i ; [#uses=1]
+ %156 = inttoptr i32 %155 to %struct.btConvexShape* ; [#uses=1]
+ invoke void %iftmp.135.0.i(%struct.btQuadWord* noalias sret %1, %struct.btConvexShape* %156, %struct.btQuadWord* %0)
+ to label %invcont7 unwind label %lpad
+
+invcont7: ; preds = %bb2.i
+ %157 = load float* %65, align 8 ; [#uses=1]
+ %158 = load float* %66, align 8 ; [#uses=3]
+ %159 = fmul float %157, %158 ; [#uses=1]
+ %160 = load float* %67, align 4 ; [#uses=1]
+ %161 = load float* %68, align 4 ; [#uses=3]
+ %162 = fmul float %160, %161 ; [#uses=1]
+ %163 = fadd float %159, %162 ; [#uses=1]
+ %164 = load float* %69, align 8 ; [#uses=1]
+ %165 = load float* %70, align 8 ; [#uses=3]
+ %166 = fmul float %164, %165 ; [#uses=1]
+ %167 = fadd float %163, %166 ; [#uses=1]
+ %168 = load float* %71, align 8 ; [#uses=1]
+ %169 = fadd float %167, %168 ; [#uses=1]
+ %170 = load float* %72, align 8 ; [#uses=1]
+ %171 = fmul float %170, %158 ; [#uses=1]
+ %172 = load float* %73, align 4 ; [#uses=1]
+ %173 = fmul float %172, %161 ; [#uses=1]
+ %174 = fadd float %171, %173 ; [#uses=1]
+ %175 = load float* %74, align 8 ; [#uses=1]
+ %176 = fmul float %175, %165 ; [#uses=1]
+ %177 = fadd float %174, %176 ; [#uses=1]
+ %178 = load float* %75, align 4 ; [#uses=1]
+ %179 = fadd float %177, %178 ; [#uses=1]
+ %180 = load float* %76, align 8 ; [#uses=1]
+ %181 = fmul float %180, %158 ; [#uses=1]
+ %182 = load float* %77, align 4 ; [#uses=1]
+ %183 = fmul float %182, %161 ; [#uses=1]
+ %184 = fadd float %181, %183 ; [#uses=1]
+ %185 = load float* %78, align 8 ; [#uses=1]
+ %186 = fmul float %185, %165 ; [#uses=1]
+ %187 = fadd float %184, %186 ; [#uses=1]
+ %188 = load float* %79, align 8 ; [#uses=1]
+ %189 = fadd float %187, %188 ; [#uses=1]
+ %190 = fmul float %169, %80 ; [#uses=1]
+ %191 = fmul float %179, %80 ; [#uses=1]
+ %192 = fmul float %189, %80 ; [#uses=1]
+ %193 = fadd float %w1.0.0.0, %192 ; [#uses=1]
+ %194 = fadd float %w1.0.1.0, %191 ; [#uses=1]
+ %195 = fadd float %w1.0.2.0, %190 ; [#uses=1]
+ %196 = add i32 %197, 1 ; [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %invcont7, %bb8.preheader
+ %w0.0.0.0 = phi float [ %104, %invcont7 ], [ 0.000000e+00, %bb8.preheader ] ; [#uses=4]
+ %w0.0.1.0 = phi float [ %105, %invcont7 ], [ 0.000000e+00, %bb8.preheader ] ; [#uses=4]
+ %w0.0.2.0 = phi float [ %106, %invcont7 ], [ 0.000000e+00, %bb8.preheader ] ; [#uses=4]
+ %w1.0.0.0 = phi float [ %193, %invcont7 ], [ 0.000000e+00, %bb8.preheader ] ; [#uses=4]
+ %w1.0.1.0 = phi float [ %194, %invcont7 ], [ 0.000000e+00, %bb8.preheader ] ; [#uses=4]
+ %w1.0.2.0 = phi float [ %195, %invcont7 ], [ 0.000000e+00, %bb8.preheader ] ; [#uses=4]
+ %197 = phi i32 [ %196, %invcont7 ], [ 0, %bb8.preheader ] ; [#uses=5]
+ %198 = load %"struct.gjkepa2_impl::GJK::sSimplex"** %47, align 4 ; [#uses=3]
+ %199 = getelementptr inbounds %"struct.gjkepa2_impl::GJK::sSimplex"* %198, i32 0, i32 2 ; [#uses=1]
+ %200 = load i32* %199, align 4 ; [#uses=1]
+ %201 = icmp ugt i32 %200, %197 ; [#uses=1]
+ br i1 %201, label %bb5, label %bb9
+
+bb9: ; preds = %bb8
+ %202 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %203 = load float* %202, align 4 ; [#uses=1]
+ %204 = fmul float %203, %w0.0.0.0 ; [#uses=1]
+ %205 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %206 = load float* %205, align 4 ; [#uses=1]
+ %207 = fmul float %206, %w0.0.1.0 ; [#uses=1]
+ %208 = fadd float %204, %207 ; [#uses=1]
+ %209 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %210 = load float* %209, align 4 ; [#uses=1]
+ %211 = fmul float %210, %w0.0.2.0 ; [#uses=1]
+ %212 = fadd float %208, %211 ; [#uses=1]
+ %213 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %214 = load float* %213, align 4 ; [#uses=1]
+ %215 = fadd float %212, %214 ; [#uses=2]
+ %216 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %217 = load float* %216, align 4 ; [#uses=1]
+ %218 = fmul float %217, %w0.0.0.0 ; [#uses=1]
+ %219 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %220 = load float* %219, align 4 ; [#uses=1]
+ %221 = fmul float %220, %w0.0.1.0 ; [#uses=1]
+ %222 = fadd float %218, %221 ; [#uses=1]
+ %223 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %224 = load float* %223, align 4 ; [#uses=1]
+ %225 = fmul float %224, %w0.0.2.0 ; [#uses=1]
+ %226 = fadd float %222, %225 ; [#uses=1]
+ %227 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %228 = load float* %227, align 4 ; [#uses=1]
+ %229 = fadd float %226, %228 ; [#uses=2]
+ %230 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %231 = load float* %230, align 4 ; [#uses=1]
+ %232 = fmul float %231, %w0.0.0.0 ; [#uses=1]
+ %233 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %234 = load float* %233, align 4 ; [#uses=1]
+ %235 = fmul float %234, %w0.0.1.0 ; [#uses=1]
+ %236 = fadd float %232, %235 ; [#uses=1]
+ %237 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %238 = load float* %237, align 4 ; [#uses=1]
+ %239 = fmul float %238, %w0.0.2.0 ; [#uses=1]
+ %240 = fadd float %236, %239 ; [#uses=1]
+ %241 = getelementptr inbounds %struct.btTransform* %wtrs0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %242 = load float* %241, align 4 ; [#uses=1]
+ %243 = fadd float %240, %242 ; [#uses=2]
+ %244 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %243, float* %244, align 4
+ %245 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %229, float* %245, align 4
+ %246 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %215, float* %246, align 4
+ %247 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %247, align 4
+ %248 = load float* %202, align 4 ; [#uses=1]
+ %249 = fmul float %248, %w1.0.0.0 ; [#uses=1]
+ %250 = load float* %205, align 4 ; [#uses=1]
+ %251 = fmul float %250, %w1.0.1.0 ; [#uses=1]
+ %252 = fadd float %249, %251 ; [#uses=1]
+ %253 = load float* %209, align 4 ; [#uses=1]
+ %254 = fmul float %253, %w1.0.2.0 ; [#uses=1]
+ %255 = fadd float %252, %254 ; [#uses=1]
+ %256 = load float* %213, align 4 ; [#uses=1]
+ %257 = fadd float %255, %256 ; [#uses=2]
+ %258 = load float* %216, align 4 ; [#uses=1]
+ %259 = fmul float %258, %w1.0.0.0 ; [#uses=1]
+ %260 = load float* %219, align 4 ; [#uses=1]
+ %261 = fmul float %260, %w1.0.1.0 ; [#uses=1]
+ %262 = fadd float %259, %261 ; [#uses=1]
+ %263 = load float* %223, align 4 ; [#uses=1]
+ %264 = fmul float %263, %w1.0.2.0 ; [#uses=1]
+ %265 = fadd float %262, %264 ; [#uses=1]
+ %266 = load float* %227, align 4 ; [#uses=1]
+ %267 = fadd float %265, %266 ; [#uses=2]
+ %268 = load float* %230, align 4 ; [#uses=1]
+ %269 = fmul float %268, %w1.0.0.0 ; [#uses=1]
+ %270 = load float* %233, align 4 ; [#uses=1]
+ %271 = fmul float %270, %w1.0.1.0 ; [#uses=1]
+ %272 = fadd float %269, %271 ; [#uses=1]
+ %273 = load float* %237, align 4 ; [#uses=1]
+ %274 = fmul float %273, %w1.0.2.0 ; [#uses=1]
+ %275 = fadd float %272, %274 ; [#uses=1]
+ %276 = load float* %241, align 4 ; [#uses=1]
+ %277 = fadd float %275, %276 ; [#uses=2]
+ %278 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %277, float* %278, align 4
+ %279 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %267, float* %279, align 4
+ %280 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %257, float* %280, align 4
+ %281 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %281, align 4
+ %282 = fsub float %257, %215 ; [#uses=3]
+ %283 = fsub float %267, %229 ; [#uses=3]
+ %284 = fsub float %277, %243 ; [#uses=3]
+ %285 = invoke float @_ZNK13btConvexShape19getMarginNonVirtualEv(%struct.btConvexShape* %shape0)
+ to label %invcont11 unwind label %lpad ; [#uses=1]
+
+invcont11: ; preds = %bb9
+ %286 = invoke float @_ZNK13btConvexShape19getMarginNonVirtualEv(%struct.btConvexShape* %33)
+ to label %invcont12 unwind label %lpad ; [#uses=1]
+
+invcont12: ; preds = %invcont11
+ %287 = fadd float %285, %286 ; [#uses=4]
+ %288 = fmul float %284, %284 ; [#uses=1]
+ %289 = fmul float %283, %283 ; [#uses=1]
+ %290 = fadd float %288, %289 ; [#uses=1]
+ %291 = fmul float %282, %282 ; [#uses=1]
+ %292 = fadd float %290, %291 ; [#uses=1]
+ %293 = call float @sqrtf(float %292) nounwind readonly ; [#uses=2]
+ %294 = fdiv float 1.000000e+00, %293 ; [#uses=3]
+ %295 = fmul float %282, %294 ; [#uses=2]
+ %296 = fmul float %283, %294 ; [#uses=2]
+ %297 = fmul float %284, %294 ; [#uses=2]
+ %298 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %297, float* %298, align 4
+ %299 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %296, float* %299, align 4
+ %300 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %295, float* %300, align 4
+ %301 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %301, align 4
+ %302 = fmul float %295, %287 ; [#uses=1]
+ %303 = fmul float %296, %287 ; [#uses=1]
+ %304 = fmul float %297, %287 ; [#uses=1]
+ %305 = load float* %244, align 4 ; [#uses=1]
+ %306 = fadd float %305, %304 ; [#uses=1]
+ store float %306, float* %244, align 4
+ %307 = load float* %245, align 4 ; [#uses=1]
+ %308 = fadd float %307, %303 ; [#uses=1]
+ store float %308, float* %245, align 4
+ %309 = load float* %246, align 4 ; [#uses=1]
+ %310 = fadd float %309, %302 ; [#uses=1]
+ store float %310, float* %246, align 4
+ %311 = fsub float %293, %287 ; [#uses=1]
+ br label %bb31
+
+bb15: ; preds = %invcont3
+ %312 = getelementptr inbounds %"struct.gjkepa2_impl::GJK"* %gjk, i32 0, i32 1 ; [#uses=1]
+ %313 = invoke zeroext i8 @_ZN15btGjkEpaSolver211PenetrationEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsEb(%struct.btConvexShape* %shape0, %struct.btTransform* %wtrs0, %struct.btConvexShape* %33, %struct.btTransform* %wtrs1, %struct.btQuadWord* %312, %"struct.btGjkEpaSolver2::sResults"* %results, i8 zeroext 1)
+ to label %invcont16 unwind label %lpad ; [#uses=1]
+
+invcont16: ; preds = %bb15
+ %toBool = icmp eq i8 %313, 0 ; [#uses=1]
+ br i1 %toBool, label %bb31, label %bb17
+
+bb17: ; preds = %invcont16
+ %314 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %315 = load float* %314, align 4 ; [#uses=1]
+ %316 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %317 = load float* %316, align 4 ; [#uses=1]
+ %318 = fsub float %315, %317 ; [#uses=3]
+ %319 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %320 = load float* %319, align 4 ; [#uses=1]
+ %321 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %322 = load float* %321, align 4 ; [#uses=1]
+ %323 = fsub float %320, %322 ; [#uses=3]
+ %324 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %325 = load float* %324, align 4 ; [#uses=1]
+ %326 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %327 = load float* %326, align 4 ; [#uses=1]
+ %328 = fsub float %325, %327 ; [#uses=3]
+ %329 = fmul float %328, %328 ; [#uses=1]
+ %330 = fmul float %323, %323 ; [#uses=1]
+ %331 = fadd float %329, %330 ; [#uses=1]
+ %332 = fmul float %318, %318 ; [#uses=1]
+ %333 = fadd float %331, %332 ; [#uses=1]
+ %334 = call float @sqrtf(float %333) nounwind readonly ; [#uses=3]
+ %335 = fcmp ult float %334, 0x3E80000000000000 ; [#uses=1]
+ br i1 %335, label %bb24, label %bb22
+
+bb22: ; preds = %bb17
+ %336 = fdiv float 1.000000e+00, %334 ; [#uses=3]
+ %337 = fmul float %318, %336 ; [#uses=1]
+ %338 = fmul float %323, %336 ; [#uses=1]
+ %339 = fmul float %328, %336 ; [#uses=1]
+ %340 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %339, float* %340, align 4
+ %341 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %338, float* %341, align 4
+ %342 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %337, float* %342, align 4
+ %343 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %343, align 4
+ br label %bb24
+
+bb24: ; preds = %bb22, %bb17
+ %344 = fsub float -0.000000e+00, %334 ; [#uses=1]
+ br label %bb31
+
+invcont29: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb31: ; preds = %bb24, %invcont16, %invcont12, %invcont3
+ %.0 = phi float [ %311, %invcont12 ], [ %344, %bb24 ], [ 0x47EFFFFFE0000000, %invcont3 ], [ 0x47EFFFFFE0000000, %invcont16 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %5, align 8
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %33)
+ ret float %.0
+
+lpad: ; preds = %bb15, %invcont11, %bb9, %bb2.i, %_ZNK12gjkepa2_impl13MinkowskiDiff8Support0ERK9btVector3.exit.i, %invcont2
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select34 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %5, align 8
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %33)
+ to label %invcont29 unwind label %lpad35
+
+lpad35: ; preds = %lpad
+ %eh_ptr36 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select38 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr36, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define zeroext i8 @_ZN30btGjkEpaPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAlloc(%struct..0btMultiSapOverlapFilterCallback* nocapture %this, %struct.btVoronoiSimplexSolver* nocapture %simplexSolver, %struct.btConvexShape* %pConvexA, %struct.btConvexShape* %pConvexB, %struct.btTransform* %transformA, %struct.btTransform* %transformB, %struct.btQuadWord* nocapture %v, %struct.btQuadWord* nocapture %wWitnessOnA, %struct.btQuadWord* nocapture %wWitnessOnB, %struct.btActionInterface* nocapture %debugDraw, %struct.btStackAlloc* nocapture %stackAlloc) align 2 {
+entry:
+ %guessVector = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %results = alloca %"struct.btGjkEpaSolver2::sResults", align 8 ; [#uses=26]
+ %0 = getelementptr inbounds %struct.btTransform* %transformA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTransform* %transformB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fsub float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %transformA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %transformB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fsub float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btTransform* %transformA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %transformB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fsub float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %guessVector, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %14, float* %15, align 8
+ %16 = getelementptr inbounds %struct.btQuadWord* %guessVector, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %9, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btQuadWord* %guessVector, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %4, float* %17, align 8
+ %18 = getelementptr inbounds %struct.btQuadWord* %guessVector, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = call zeroext i8 @_ZN15btGjkEpaSolver211PenetrationEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsEb(%struct.btConvexShape* %pConvexA, %struct.btTransform* %transformA, %struct.btConvexShape* %pConvexB, %struct.btTransform* %transformB, %struct.btQuadWord* %guessVector, %"struct.btGjkEpaSolver2::sResults"* %results, i8 zeroext 1) ; [#uses=1]
+ %toBool = icmp eq i8 %19, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %20 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %21 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %24 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %27 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnA, i32 0, i32 0, i32 3 ; [#uses=1]
+ %30 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %33 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %36 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %39 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnB, i32 0, i32 0, i32 3 ; [#uses=1]
+ %42 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 0 ; [#uses=1]
+ %45 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 1 ; [#uses=1]
+ %48 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 2 ; [#uses=1]
+ %51 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 3 ; [#uses=1]
+ %54 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ ret i8 1
+
+bb1: ; preds = %entry
+ %56 = call zeroext i8 @_ZN15btGjkEpaSolver28DistanceEPK13btConvexShapeRK11btTransformS2_S5_RK9btVector3RNS_8sResultsE(%struct.btConvexShape* %pConvexA, %struct.btTransform* %transformA, %struct.btConvexShape* %pConvexB, %struct.btTransform* %transformB, %struct.btQuadWord* %guessVector, %"struct.btGjkEpaSolver2::sResults"* %results) ; [#uses=1]
+ %toBool2 = icmp eq i8 %56, 0 ; [#uses=1]
+ br i1 %toBool2, label %bb5, label %bb3
+
+bb3: ; preds = %bb1
+ %57 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %58 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ store float %59, float* %57, align 4
+ %60 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %61 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ store float %62, float* %60, align 4
+ %63 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %64 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ store float %65, float* %63, align 4
+ %66 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnA, i32 0, i32 0, i32 3 ; [#uses=1]
+ %67 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ store float %68, float* %66, align 4
+ %69 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %70 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ store float %71, float* %69, align 4
+ %72 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %73 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ store float %74, float* %72, align 4
+ %75 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %76 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ store float %77, float* %75, align 4
+ %78 = getelementptr inbounds %struct.btQuadWord* %wWitnessOnB, i32 0, i32 0, i32 3 ; [#uses=1]
+ %79 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ store float %80, float* %78, align 4
+ %81 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 0 ; [#uses=1]
+ %82 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ store float %83, float* %81, align 4
+ %84 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 1 ; [#uses=1]
+ %85 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ store float %86, float* %84, align 4
+ %87 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 2 ; [#uses=1]
+ %88 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ store float %89, float* %87, align 4
+ %90 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 3 ; [#uses=1]
+ %91 = getelementptr inbounds %"struct.btGjkEpaSolver2::sResults"* %results, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=1]
+ store float %92, float* %90, align 4
+ ret i8 0
+
+bb5: ; preds = %bb1
+ ret i8 0
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN30btGjkEpaPenetrationDepthSolverD0Ev(%struct..0btMultiSapOverlapFilterCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btGjkEpaPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..0btMultiSapOverlapFilterCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN30btGjkEpaPenetrationDepthSolverD1Ev(%struct..0btMultiSapOverlapFilterCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btGjkEpaPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17btGjkPairDetectorC2EPK13btConvexShapeS2_iiffP22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btGjkPairDetector* nocapture %this, %struct.btConvexShape* %objectA, %struct.btConvexShape* %objectB, i32 %shapeTypeA, i32 %shapeTypeB, float %marginA, float %marginB, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %penetrationDepthSolver) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV17btGjkPairDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %penetrationDepthSolver, %struct.btActionInterface** %5, align 4
+ %6 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %6, align 4
+ %7 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btConvexShape* %objectA, %struct.btConvexShape** %7, align 4
+ %8 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btConvexShape* %objectB, %struct.btConvexShape** %8, align 4
+ %9 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 %shapeTypeA, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 %shapeTypeB, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 8 ; [#uses=1]
+ store float %marginA, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 9 ; [#uses=1]
+ store float %marginB, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 10 ; [#uses=1]
+ store i8 0, i8* %13, align 4
+ %14 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 12 ; [#uses=1]
+ store i32 -1, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 1, i32* %15, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btGjkPairDetectorD1Ev(%struct.btGjkPairDetector* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV17btGjkPairDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btGjkPairDetectorD0Ev(%struct.btGjkPairDetector* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV17btGjkPairDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btGjkPairDetector* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=10]
+define void @_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.btGjkPairDetector* %this, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* nocapture %input, %struct.btActionInterface* %output, %struct.btActionInterface* %debugDraw, i8 zeroext %swapResults) align 2 {
+entry:
+ tail call void @_ZN17btGjkPairDetector26getClosestPointsNonVirtualERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDraw(%struct.btGjkPairDetector* %this, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, %struct.btActionInterface* %output, %struct.btActionInterface* %debugDraw)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btGjkPairDetectorC1EPK13btConvexShapeS2_iiffP22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btGjkPairDetector* nocapture %this, %struct.btConvexShape* %objectA, %struct.btConvexShape* %objectB, i32 %shapeTypeA, i32 %shapeTypeB, float %marginA, float %marginB, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %penetrationDepthSolver) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV17btGjkPairDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %penetrationDepthSolver, %struct.btActionInterface** %5, align 4
+ %6 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %6, align 4
+ %7 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btConvexShape* %objectA, %struct.btConvexShape** %7, align 4
+ %8 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btConvexShape* %objectB, %struct.btConvexShape** %8, align 4
+ %9 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 %shapeTypeA, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 %shapeTypeB, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 8 ; [#uses=1]
+ store float %marginA, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 9 ; [#uses=1]
+ store float %marginB, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 10 ; [#uses=1]
+ store i8 0, i8* %13, align 4
+ %14 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 12 ; [#uses=1]
+ store i32 -1, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 1, i32* %15, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17btGjkPairDetectorC2EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btGjkPairDetector* nocapture %this, %struct.btConvexShape* %objectA, %struct.btConvexShape* %objectB, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %penetrationDepthSolver) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV17btGjkPairDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %penetrationDepthSolver, %struct.btActionInterface** %5, align 4
+ %6 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %6, align 4
+ %7 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btConvexShape* %objectA, %struct.btConvexShape** %7, align 4
+ %8 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btConvexShape* %objectB, %struct.btConvexShape** %8, align 4
+ %9 = getelementptr inbounds %struct.btConvexShape* %objectA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 %10, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btConvexShape* %objectB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 %13, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btConvexShape* %objectA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds i32 (...)** %16, i32 11 ; [#uses=1]
+ %18 = load i32 (...)** %17, align 4 ; [#uses=1]
+ %19 = bitcast i32 (...)* %18 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %20 = invoke float %19(%struct.btConvexShape* %objectA)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %entry
+ %21 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 8 ; [#uses=1]
+ store float %20, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btConvexShape* %objectB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = load i32 (...)*** %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds i32 (...)** %23, i32 11 ; [#uses=1]
+ %25 = load i32 (...)** %24, align 4 ; [#uses=1]
+ %26 = bitcast i32 (...)* %25 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %27 = invoke float %26(%struct.btConvexShape* %objectB)
+ to label %invcont1 unwind label %lpad ; [#uses=1]
+
+invcont1: ; preds = %invcont
+ %28 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 9 ; [#uses=1]
+ store float %27, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 10 ; [#uses=1]
+ store i8 0, i8* %29, align 4
+ %30 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 12 ; [#uses=1]
+ store i32 -1, i32* %30, align 4
+ %31 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 1, i32* %31, align 4
+ ret void
+
+lpad: ; preds = %invcont, %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select3 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV36btDiscreteCollisionDetectorInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=6]
+define void @_ZN17btGjkPairDetectorC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btGjkPairDetector* nocapture %this, %struct.btConvexShape* %objectA, %struct.btConvexShape* %objectB, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %penetrationDepthSolver) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV17btGjkPairDetector, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %penetrationDepthSolver, %struct.btActionInterface** %5, align 4
+ %6 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %6, align 4
+ %7 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 4 ; [#uses=1]
+ store %struct.btConvexShape* %objectA, %struct.btConvexShape** %7, align 4
+ %8 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btConvexShape* %objectB, %struct.btConvexShape** %8, align 4
+ %9 = getelementptr inbounds %struct.btConvexShape* %objectA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 6 ; [#uses=1]
+ store i32 %10, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btConvexShape* %objectB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 %13, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btConvexShape* %objectA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds i32 (...)** %16, i32 11 ; [#uses=1]
+ %18 = load i32 (...)** %17, align 4 ; [#uses=1]
+ %19 = bitcast i32 (...)* %18 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %20 = invoke float %19(%struct.btConvexShape* %objectA)
+ to label %invcont.i unwind label %lpad.i ; [#uses=1]
+
+invcont.i: ; preds = %entry
+ %21 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 8 ; [#uses=1]
+ store float %20, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btConvexShape* %objectB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = load i32 (...)*** %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds i32 (...)** %23, i32 11 ; [#uses=1]
+ %25 = load i32 (...)** %24, align 4 ; [#uses=1]
+ %26 = bitcast i32 (...)* %25 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %27 = invoke float %26(%struct.btConvexShape* %objectB)
+ to label %_ZN17btGjkPairDetectorC2EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver.exit unwind label %lpad.i ; [#uses=1]
+
+lpad.i: ; preds = %invcont.i, %entry
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select3.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV36btDiscreteCollisionDetectorInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ unreachable
+
+_ZN17btGjkPairDetectorC2EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver.exit: ; preds = %invcont.i
+ %28 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 9 ; [#uses=1]
+ store float %27, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 10 ; [#uses=1]
+ store i8 0, i8* %29, align 4
+ %30 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 12 ; [#uses=1]
+ store i32 -1, i32* %30, align 4
+ %31 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 1, i32* %31, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btGjkPairDetector26getClosestPointsNonVirtualERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDraw(%struct.btGjkPairDetector* %this, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* nocapture %input, %struct.btActionInterface* %output, %struct.btActionInterface* %debugDraw) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %normalInB = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %pointOnA = alloca %struct.btQuadWord, align 8 ; [#uses=12]
+ %pointOnB = alloca %struct.btQuadWord, align 8 ; [#uses=15]
+ %localTransA = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %localTransB = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %seperatingAxisInA = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %seperatingAxisInB = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %pInA = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %qInB = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %pWorld = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %qWorld = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %w = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %newCachedSeparatingAxis = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %tmpPointOnA = alloca %struct.btQuadWord, align 8 ; [#uses=9]
+ %tmpPointOnB = alloca %struct.btQuadWord, align 8 ; [#uses=9]
+ %1 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 11 ; [#uses=2]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %normalInB, i32 0, i32 0, i32 0 ; [#uses=7]
+ store float 0.000000e+00, float* %2, align 8
+ %3 = getelementptr inbounds %struct.btQuadWord* %normalInB, i32 0, i32 0, i32 1 ; [#uses=7]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %normalInB, i32 0, i32 0, i32 2 ; [#uses=7]
+ store float 0.000000e+00, float* %4, align 8
+ %5 = getelementptr inbounds %struct.btQuadWord* %normalInB, i32 0, i32 0, i32 3 ; [#uses=5]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %7 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 8
+ %9 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %10 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %13 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 8
+ %15 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %16 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %19 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 8
+ %21 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %22 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %25 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 8
+ %27 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %28 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %31 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 8
+ %33 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %34 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %37 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 8
+ %39 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %40 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ store float %41, float* %39, align 4
+ %42 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %43 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=2]
+ %45 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %46 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=2]
+ %48 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %49 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=2]
+ %51 = getelementptr inbounds %struct.btTransform* %localTransA, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %52 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ store float %53, float* %51, align 4
+ %54 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %55 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ store float %56, float* %54, align 8
+ %57 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %58 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ store float %59, float* %57, align 4
+ %60 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %61 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ store float %62, float* %60, align 8
+ %63 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %64 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ store float %65, float* %63, align 4
+ %66 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %67 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ store float %68, float* %66, align 8
+ %69 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %70 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ store float %71, float* %69, align 4
+ %72 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %73 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ store float %74, float* %72, align 8
+ %75 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %76 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ store float %77, float* %75, align 4
+ %78 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %79 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ store float %80, float* %78, align 8
+ %81 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %82 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ store float %83, float* %81, align 4
+ %84 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %85 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ store float %86, float* %84, align 8
+ %87 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %88 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ store float %89, float* %87, align 4
+ %90 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %91 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=2]
+ %93 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %94 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=2]
+ %96 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %97 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=2]
+ %99 = getelementptr inbounds %struct.btTransform* %localTransB, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %100 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ store float %101, float* %99, align 4
+ %102 = fadd float %50, %98 ; [#uses=1]
+ %103 = fadd float %47, %95 ; [#uses=1]
+ %104 = fadd float %44, %92 ; [#uses=1]
+ %105 = fmul float %102, 5.000000e-01 ; [#uses=3]
+ %106 = fmul float %103, 5.000000e-01 ; [#uses=3]
+ %107 = fmul float %104, 5.000000e-01 ; [#uses=3]
+ %108 = fsub float %44, %107 ; [#uses=1]
+ store float %108, float* %42, align 8
+ %109 = fsub float %47, %106 ; [#uses=1]
+ store float %109, float* %45, align 4
+ %110 = fsub float %50, %105 ; [#uses=1]
+ store float %110, float* %48, align 8
+ %111 = fsub float %92, %107 ; [#uses=1]
+ store float %111, float* %90, align 8
+ %112 = fsub float %95, %106 ; [#uses=1]
+ store float %112, float* %93, align 4
+ %113 = fsub float %98, %105 ; [#uses=1]
+ store float %113, float* %96, align 8
+ %114 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 4 ; [#uses=3]
+ %115 = load %struct.btConvexShape** %114, align 4 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btConvexShape* %115, i32 0, i32 0, i32 1 ; [#uses=1]
+ %117 = load i32* %116, align 4 ; [#uses=1]
+ %118 = add i32 %117, -17 ; [#uses=1]
+ %119 = icmp ult i32 %118, 2 ; [#uses=1]
+ br i1 %119, label %bb, label %bb9
+
+bb: ; preds = %entry
+ %120 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 5 ; [#uses=2]
+ %121 = load %struct.btConvexShape** %120, align 4 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btConvexShape* %121, i32 0, i32 0, i32 1 ; [#uses=1]
+ %123 = load i32* %122, align 4 ; [#uses=1]
+ %124 = add i32 %123, -17 ; [#uses=1]
+ %125 = icmp ult i32 %124, 2 ; [#uses=1]
+ br i1 %125, label %bb10, label %bb9
+
+bb9: ; preds = %bb, %entry
+ %.pre208 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 5 ; [#uses=1]
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb
+ %.pre-phi = phi %struct.btConvexShape** [ %120, %bb ], [ %.pre208, %bb9 ] ; [#uses=2]
+ %iftmp.117.0 = phi i1 [ false, %bb ], [ true, %bb9 ] ; [#uses=1]
+ %126 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 8 ; [#uses=1]
+ %127 = load float* %126, align 4 ; [#uses=1]
+ %128 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 9 ; [#uses=1]
+ %129 = load float* %128, align 4 ; [#uses=1]
+ %130 = load i32* @gNumGjkChecks, align 4 ; [#uses=1]
+ %131 = add nsw i32 %130, 1 ; [#uses=1]
+ store i32 %131, i32* @gNumGjkChecks, align 4
+ %132 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 10 ; [#uses=1]
+ %133 = load i8* %132, align 4 ; [#uses=1]
+ %toBool11 = icmp eq i8 %133, 0 ; [#uses=2]
+ %marginA.0 = select i1 %toBool11, float %127, float 0.000000e+00 ; [#uses=5]
+ %marginB.0 = select i1 %toBool11, float %129, float 0.000000e+00 ; [#uses=5]
+ %134 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 13 ; [#uses=3]
+ store i32 0, i32* %134, align 4
+ %135 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=9]
+ store float 0.000000e+00, float* %135, align 4
+ %136 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=9]
+ store float 1.000000e+00, float* %136, align 4
+ %137 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=9]
+ store float 0.000000e+00, float* %137, align 4
+ %138 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=6]
+ store float 0.000000e+00, float* %138, align 4
+ %139 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 14 ; [#uses=10]
+ store i32 0, i32* %139, align 4
+ %140 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 12 ; [#uses=8]
+ store i32 -1, i32* %140, align 4
+ %141 = fadd float %marginA.0, %marginB.0 ; [#uses=3]
+ %142 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 3 ; [#uses=8]
+ %143 = load %struct.btVoronoiSimplexSolver** %142, align 4 ; [#uses=1]
+ call void @_ZN22btVoronoiSimplexSolver5resetEv(%struct.btVoronoiSimplexSolver* %143)
+ %144 = getelementptr inbounds %struct.btQuadWord* %seperatingAxisInA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %145 = getelementptr inbounds %struct.btQuadWord* %seperatingAxisInA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btQuadWord* %seperatingAxisInA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btQuadWord* %seperatingAxisInA, i32 0, i32 0, i32 3 ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btQuadWord* %seperatingAxisInB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %149 = getelementptr inbounds %struct.btQuadWord* %seperatingAxisInB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %150 = getelementptr inbounds %struct.btQuadWord* %seperatingAxisInB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %151 = getelementptr inbounds %struct.btQuadWord* %seperatingAxisInB, i32 0, i32 0, i32 3 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btQuadWord* %pInA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %153 = getelementptr inbounds %struct.btQuadWord* %pInA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.btQuadWord* %pInA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %155 = getelementptr inbounds %struct.btQuadWord* %pWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %156 = getelementptr inbounds %struct.btQuadWord* %pWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %157 = getelementptr inbounds %struct.btQuadWord* %pWorld, i32 0, i32 0, i32 2 ; [#uses=2]
+ %158 = getelementptr inbounds %struct.btQuadWord* %pWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btQuadWord* %qInB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %160 = getelementptr inbounds %struct.btQuadWord* %qInB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btQuadWord* %qInB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btQuadWord* %qWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %163 = getelementptr inbounds %struct.btQuadWord* %qWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btQuadWord* %qWorld, i32 0, i32 0, i32 2 ; [#uses=2]
+ %165 = getelementptr inbounds %struct.btQuadWord* %qWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 0 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 1 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 2 ; [#uses=1]
+ %169 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 3 ; [#uses=1]
+ %170 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 2 ; [#uses=2]
+ %171 = getelementptr inbounds %struct.btQuadWord* %newCachedSeparatingAxis, i32 0, i32 0, i32 0 ; [#uses=1]
+ %172 = getelementptr inbounds %struct.btQuadWord* %newCachedSeparatingAxis, i32 0, i32 0, i32 1 ; [#uses=1]
+ %173 = getelementptr inbounds %struct.btQuadWord* %newCachedSeparatingAxis, i32 0, i32 0, i32 2 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btQuadWord* %newCachedSeparatingAxis, i32 0, i32 0, i32 3 ; [#uses=1]
+ %.pre = load float* %137, align 4 ; [#uses=1]
+ %.pre205 = load float* %136, align 4 ; [#uses=1]
+ %.pre206 = load float* %135, align 4 ; [#uses=1]
+ br label %bb14
+
+bb14: ; preds = %bb40, %bb10
+ %175 = phi float [ %.pre206, %bb10 ], [ %324, %bb40 ] ; [#uses=4]
+ %176 = phi float [ %.pre205, %bb10 ], [ %326, %bb40 ] ; [#uses=4]
+ %177 = phi float [ %.pre, %bb10 ], [ %329, %bb40 ] ; [#uses=4]
+ %squaredDistance.0 = phi float [ 0x43ABC16D60000000, %bb10 ], [ %331, %bb40 ] ; [#uses=10]
+ %178 = fsub float -0.000000e+00, %177 ; [#uses=3]
+ %179 = fsub float -0.000000e+00, %176 ; [#uses=3]
+ %180 = fsub float -0.000000e+00, %175 ; [#uses=3]
+ %181 = load float* %13, align 4 ; [#uses=1]
+ %182 = fmul float %181, %180 ; [#uses=1]
+ %183 = load float* %25, align 4 ; [#uses=1]
+ %184 = fmul float %183, %179 ; [#uses=1]
+ %185 = fadd float %182, %184 ; [#uses=1]
+ %186 = load float* %37, align 4 ; [#uses=1]
+ %187 = fmul float %186, %178 ; [#uses=1]
+ %188 = fadd float %185, %187 ; [#uses=1]
+ %189 = load float* %10, align 4 ; [#uses=1]
+ %190 = fmul float %189, %180 ; [#uses=1]
+ %191 = load float* %22, align 4 ; [#uses=1]
+ %192 = fmul float %191, %179 ; [#uses=1]
+ %193 = fadd float %190, %192 ; [#uses=1]
+ %194 = load float* %34, align 4 ; [#uses=1]
+ %195 = fmul float %194, %178 ; [#uses=1]
+ %196 = fadd float %193, %195 ; [#uses=1]
+ %197 = load float* %7, align 4 ; [#uses=1]
+ %198 = fmul float %197, %180 ; [#uses=1]
+ %199 = load float* %19, align 4 ; [#uses=1]
+ %200 = fmul float %199, %179 ; [#uses=1]
+ %201 = fadd float %198, %200 ; [#uses=1]
+ %202 = load float* %31, align 4 ; [#uses=1]
+ %203 = fmul float %202, %178 ; [#uses=1]
+ %204 = fadd float %201, %203 ; [#uses=1]
+ store float %204, float* %144, align 8
+ store float %196, float* %145, align 4
+ store float %188, float* %146, align 8
+ store float 0.000000e+00, float* %147, align 4
+ %205 = load float* %61, align 4 ; [#uses=1]
+ %206 = fmul float %205, %175 ; [#uses=1]
+ %207 = load float* %73, align 4 ; [#uses=1]
+ %208 = fmul float %207, %176 ; [#uses=1]
+ %209 = fadd float %206, %208 ; [#uses=1]
+ %210 = load float* %85, align 4 ; [#uses=1]
+ %211 = fmul float %210, %177 ; [#uses=1]
+ %212 = fadd float %209, %211 ; [#uses=1]
+ %213 = load float* %58, align 4 ; [#uses=1]
+ %214 = fmul float %213, %175 ; [#uses=1]
+ %215 = load float* %70, align 4 ; [#uses=1]
+ %216 = fmul float %215, %176 ; [#uses=1]
+ %217 = fadd float %214, %216 ; [#uses=1]
+ %218 = load float* %82, align 4 ; [#uses=1]
+ %219 = fmul float %218, %177 ; [#uses=1]
+ %220 = fadd float %217, %219 ; [#uses=1]
+ %221 = load float* %55, align 4 ; [#uses=1]
+ %222 = fmul float %221, %175 ; [#uses=1]
+ %223 = load float* %67, align 4 ; [#uses=1]
+ %224 = fmul float %223, %176 ; [#uses=1]
+ %225 = fadd float %222, %224 ; [#uses=1]
+ %226 = load float* %79, align 4 ; [#uses=1]
+ %227 = fmul float %226, %177 ; [#uses=1]
+ %228 = fadd float %225, %227 ; [#uses=1]
+ store float %228, float* %148, align 8
+ store float %220, float* %149, align 4
+ store float %212, float* %150, align 8
+ store float 0.000000e+00, float* %151, align 4
+ %229 = load %struct.btConvexShape** %114, align 4 ; [#uses=1]
+ call void @_ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(%struct.btQuadWord* noalias sret %pInA, %struct.btConvexShape* %229, %struct.btQuadWord* %seperatingAxisInA)
+ %230 = load %struct.btConvexShape** %.pre-phi, align 4 ; [#uses=1]
+ call void @_ZNK13btConvexShape44localGetSupportVertexWithoutMarginNonVirtualERK9btVector3(%struct.btQuadWord* noalias sret %qInB, %struct.btConvexShape* %230, %struct.btQuadWord* %seperatingAxisInB)
+ %231 = load float* %30, align 8 ; [#uses=1]
+ %232 = load float* %152, align 8 ; [#uses=3]
+ %233 = fmul float %231, %232 ; [#uses=1]
+ %234 = load float* %33, align 4 ; [#uses=1]
+ %235 = load float* %153, align 4 ; [#uses=3]
+ %236 = fmul float %234, %235 ; [#uses=1]
+ %237 = fadd float %233, %236 ; [#uses=1]
+ %238 = load float* %36, align 8 ; [#uses=1]
+ %239 = load float* %154, align 8 ; [#uses=3]
+ %240 = fmul float %238, %239 ; [#uses=1]
+ %241 = fadd float %237, %240 ; [#uses=1]
+ %242 = load float* %48, align 8 ; [#uses=1]
+ %243 = fadd float %241, %242 ; [#uses=2]
+ %244 = load float* %18, align 8 ; [#uses=1]
+ %245 = fmul float %244, %232 ; [#uses=1]
+ %246 = load float* %21, align 4 ; [#uses=1]
+ %247 = fmul float %246, %235 ; [#uses=1]
+ %248 = fadd float %245, %247 ; [#uses=1]
+ %249 = load float* %24, align 8 ; [#uses=1]
+ %250 = fmul float %249, %239 ; [#uses=1]
+ %251 = fadd float %248, %250 ; [#uses=1]
+ %252 = load float* %45, align 4 ; [#uses=1]
+ %253 = fadd float %251, %252 ; [#uses=2]
+ %254 = load float* %6, align 8 ; [#uses=1]
+ %255 = fmul float %254, %232 ; [#uses=1]
+ %256 = load float* %9, align 4 ; [#uses=1]
+ %257 = fmul float %256, %235 ; [#uses=1]
+ %258 = fadd float %255, %257 ; [#uses=1]
+ %259 = load float* %12, align 8 ; [#uses=1]
+ %260 = fmul float %259, %239 ; [#uses=1]
+ %261 = fadd float %258, %260 ; [#uses=1]
+ %262 = load float* %42, align 8 ; [#uses=1]
+ %263 = fadd float %261, %262 ; [#uses=2]
+ store float %263, float* %155, align 8
+ store float %253, float* %156, align 4
+ store float %243, float* %157, align 8
+ store float 0.000000e+00, float* %158, align 4
+ %264 = load float* %78, align 8 ; [#uses=1]
+ %265 = load float* %159, align 8 ; [#uses=3]
+ %266 = fmul float %264, %265 ; [#uses=1]
+ %267 = load float* %81, align 4 ; [#uses=1]
+ %268 = load float* %160, align 4 ; [#uses=3]
+ %269 = fmul float %267, %268 ; [#uses=1]
+ %270 = fadd float %266, %269 ; [#uses=1]
+ %271 = load float* %84, align 8 ; [#uses=1]
+ %272 = load float* %161, align 8 ; [#uses=3]
+ %273 = fmul float %271, %272 ; [#uses=1]
+ %274 = fadd float %270, %273 ; [#uses=1]
+ %275 = load float* %96, align 8 ; [#uses=1]
+ %276 = fadd float %274, %275 ; [#uses=2]
+ %277 = load float* %66, align 8 ; [#uses=1]
+ %278 = fmul float %277, %265 ; [#uses=1]
+ %279 = load float* %69, align 4 ; [#uses=1]
+ %280 = fmul float %279, %268 ; [#uses=1]
+ %281 = fadd float %278, %280 ; [#uses=1]
+ %282 = load float* %72, align 8 ; [#uses=1]
+ %283 = fmul float %282, %272 ; [#uses=1]
+ %284 = fadd float %281, %283 ; [#uses=1]
+ %285 = load float* %93, align 4 ; [#uses=1]
+ %286 = fadd float %284, %285 ; [#uses=2]
+ %287 = load float* %54, align 8 ; [#uses=1]
+ %288 = fmul float %287, %265 ; [#uses=1]
+ %289 = load float* %57, align 4 ; [#uses=1]
+ %290 = fmul float %289, %268 ; [#uses=1]
+ %291 = fadd float %288, %290 ; [#uses=1]
+ %292 = load float* %60, align 8 ; [#uses=1]
+ %293 = fmul float %292, %272 ; [#uses=1]
+ %294 = fadd float %291, %293 ; [#uses=1]
+ %295 = load float* %90, align 8 ; [#uses=1]
+ %296 = fadd float %294, %295 ; [#uses=2]
+ store float %296, float* %162, align 8
+ store float %286, float* %163, align 4
+ store float %276, float* %164, align 8
+ store float 0.000000e+00, float* %165, align 4
+ br i1 %iftmp.117.0, label %bb17, label %bb16
+
+bb16: ; preds = %bb14
+ store float 0.000000e+00, float* %157, align 8
+ store float 0.000000e+00, float* %164, align 8
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb14
+ %297 = phi float [ %276, %bb14 ], [ 0.000000e+00, %bb16 ] ; [#uses=1]
+ %298 = phi float [ %243, %bb14 ], [ 0.000000e+00, %bb16 ] ; [#uses=1]
+ %299 = fsub float %298, %297 ; [#uses=2]
+ %300 = fsub float %253, %286 ; [#uses=2]
+ %301 = fsub float %263, %296 ; [#uses=2]
+ store float %301, float* %166, align 8
+ store float %300, float* %167, align 4
+ store float %299, float* %168, align 8
+ store float 0.000000e+00, float* %169, align 4
+ %302 = load float* %135, align 4 ; [#uses=1]
+ %303 = fmul float %302, %301 ; [#uses=1]
+ %304 = load float* %136, align 4 ; [#uses=1]
+ %305 = fmul float %304, %300 ; [#uses=1]
+ %306 = fadd float %303, %305 ; [#uses=1]
+ %307 = load float* %137, align 4 ; [#uses=1]
+ %308 = fmul float %307, %299 ; [#uses=1]
+ %309 = fadd float %306, %308 ; [#uses=4]
+ %310 = fcmp ogt float %309, 0.000000e+00 ; [#uses=1]
+ br i1 %310, label %bb18, label %bb20
+
+bb18: ; preds = %bb17
+ %311 = fmul float %309, %309 ; [#uses=1]
+ %312 = load float* %170, align 4 ; [#uses=1]
+ %313 = fmul float %312, %squaredDistance.0 ; [#uses=1]
+ %314 = fcmp ogt float %311, %313 ; [#uses=1]
+ br i1 %314, label %bb19, label %bb20
+
+bb19: ; preds = %bb18
+ store i32 10, i32* %139, align 4
+ br label %bb50
+
+bb20: ; preds = %bb18, %bb17
+ %315 = load %struct.btVoronoiSimplexSolver** %142, align 4 ; [#uses=1]
+ %316 = call zeroext i8 @_ZN22btVoronoiSimplexSolver9inSimplexERK9btVector3(%struct.btVoronoiSimplexSolver* %315, %struct.btQuadWord* %w) ; [#uses=1]
+ %toBool21 = icmp eq i8 %316, 0 ; [#uses=1]
+ br i1 %toBool21, label %bb23, label %bb22
+
+bb22: ; preds = %bb20
+ store i32 1, i32* %139, align 4
+ br label %bb50
+
+bb23: ; preds = %bb20
+ %317 = fsub float %squaredDistance.0, %309 ; [#uses=2]
+ %318 = fmul float %squaredDistance.0, 0x3EB0C6F7A0000000 ; [#uses=1]
+ %319 = fcmp ugt float %317, %318 ; [#uses=1]
+ br i1 %319, label %bb28, label %bb24
+
+bb24: ; preds = %bb23
+ %320 = fcmp ugt float %317, 0.000000e+00 ; [#uses=1]
+ %storemerge = select i1 %320, i32 11, i32 2 ; [#uses=1]
+ store i32 %storemerge, i32* %139, align 4
+ br label %bb50
+
+bb28: ; preds = %bb23
+ %321 = load %struct.btVoronoiSimplexSolver** %142, align 4 ; [#uses=1]
+ call void @_ZN22btVoronoiSimplexSolver9addVertexERK9btVector3S2_S2_(%struct.btVoronoiSimplexSolver* %321, %struct.btQuadWord* %w, %struct.btQuadWord* %pWorld, %struct.btQuadWord* %qWorld)
+ %322 = load %struct.btVoronoiSimplexSolver** %142, align 4 ; [#uses=1]
+ %323 = call zeroext i8 @_ZN22btVoronoiSimplexSolver7closestER9btVector3(%struct.btVoronoiSimplexSolver* %322, %struct.btQuadWord* %newCachedSeparatingAxis) ; [#uses=1]
+ %toBool29not = icmp eq i8 %323, 0 ; [#uses=1]
+ br i1 %toBool29not, label %bb32, label %bb33
+
+bb32: ; preds = %bb28
+ store i32 3, i32* %139, align 4
+ br label %bb50
+
+bb33: ; preds = %bb28
+ %324 = load float* %171, align 8 ; [#uses=4]
+ %325 = fmul float %324, %324 ; [#uses=1]
+ %326 = load float* %172, align 4 ; [#uses=4]
+ %327 = fmul float %326, %326 ; [#uses=1]
+ %328 = fadd float %325, %327 ; [#uses=1]
+ %329 = load float* %173, align 8 ; [#uses=4]
+ %330 = fmul float %329, %329 ; [#uses=1]
+ %331 = fadd float %328, %330 ; [#uses=4]
+ %332 = fcmp olt float %331, 0x3EB0C6F7A0000000 ; [#uses=1]
+ store float %324, float* %135, align 4
+ store float %326, float* %136, align 4
+ store float %329, float* %137, align 4
+ %333 = load float* %174, align 4 ; [#uses=1]
+ store float %333, float* %138, align 4
+ br i1 %332, label %bb35, label %bb36
+
+bb35: ; preds = %bb33
+ store i32 6, i32* %139, align 4
+ br label %bb50
+
+bb36: ; preds = %bb33
+ %334 = fsub float %squaredDistance.0, %331 ; [#uses=1]
+ %335 = fmul float %squaredDistance.0, 0x3E80000000000000 ; [#uses=1]
+ %336 = fcmp ugt float %334, %335 ; [#uses=1]
+ br i1 %336, label %bb38, label %bb37
+
+bb37: ; preds = %bb36
+ %337 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1 ; [#uses=1]
+ %338 = load %struct.btVoronoiSimplexSolver** %142, align 4 ; [#uses=1]
+ call void @_ZN22btVoronoiSimplexSolver14backup_closestER9btVector3(%struct.btVoronoiSimplexSolver* %338, %struct.btQuadWord* %337)
+ store i32 12, i32* %139, align 4
+ br label %bb50
+
+bb38: ; preds = %bb36
+ %339 = load i32* %134, align 4 ; [#uses=2]
+ %340 = icmp sgt i32 %339, 1000 ; [#uses=1]
+ %341 = add nsw i32 %339, 1 ; [#uses=1]
+ store i32 %341, i32* %134, align 4
+ br i1 %340, label %bb57, label %bb40
+
+bb40: ; preds = %bb38
+ %342 = load %struct.btVoronoiSimplexSolver** %142, align 4 ; [#uses=2]
+ %343 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %342, i32 0, i32 0 ; [#uses=1]
+ %344 = load i32* %343, align 4 ; [#uses=1]
+ %345 = icmp eq i32 %344, 4 ; [#uses=1]
+ br i1 %345, label %bb47, label %bb14
+
+bb47: ; preds = %bb40
+ %346 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1 ; [#uses=1]
+ call void @_ZN22btVoronoiSimplexSolver14backup_closestER9btVector3(%struct.btVoronoiSimplexSolver* %342, %struct.btQuadWord* %346)
+ store i32 13, i32* %139, align 4
+ br label %bb57
+
+bb50: ; preds = %bb37, %bb35, %bb32, %bb24, %bb22, %bb19
+ %squaredDistance.1.ph = phi float [ %squaredDistance.0, %bb19 ], [ %squaredDistance.0, %bb22 ], [ %squaredDistance.0, %bb24 ], [ %squaredDistance.0, %bb32 ], [ %squaredDistance.0, %bb35 ], [ %331, %bb37 ] ; [#uses=1]
+ %347 = load %struct.btVoronoiSimplexSolver** %142, align 4 ; [#uses=1]
+ call void @_ZN22btVoronoiSimplexSolver14compute_pointsER9btVector3S1_(%struct.btVoronoiSimplexSolver* %347, %struct.btQuadWord* %pointOnA, %struct.btQuadWord* %pointOnB)
+ %348 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 2 ; [#uses=2]
+ %349 = load float* %348, align 8 ; [#uses=2]
+ %350 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 2 ; [#uses=2]
+ %351 = load float* %350, align 8 ; [#uses=2]
+ %352 = fsub float %349, %351 ; [#uses=2]
+ %353 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 1 ; [#uses=2]
+ %354 = load float* %353, align 4 ; [#uses=2]
+ %355 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 1 ; [#uses=2]
+ %356 = load float* %355, align 4 ; [#uses=2]
+ %357 = fsub float %354, %356 ; [#uses=2]
+ %358 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 0 ; [#uses=2]
+ %359 = load float* %358, align 8 ; [#uses=2]
+ %360 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 0 ; [#uses=2]
+ %361 = load float* %360, align 8 ; [#uses=2]
+ %362 = fsub float %359, %361 ; [#uses=2]
+ store float %362, float* %2, align 8
+ store float %357, float* %3, align 4
+ store float %352, float* %4, align 8
+ store float 0.000000e+00, float* %5, align 4
+ %363 = load float* %135, align 4 ; [#uses=4]
+ %364 = fmul float %363, %363 ; [#uses=1]
+ %365 = load float* %136, align 4 ; [#uses=4]
+ %366 = fmul float %365, %365 ; [#uses=1]
+ %367 = fadd float %364, %366 ; [#uses=1]
+ %368 = load float* %137, align 4 ; [#uses=4]
+ %369 = fmul float %368, %368 ; [#uses=1]
+ %370 = fadd float %367, %369 ; [#uses=3]
+ %371 = fpext float %370 to double ; [#uses=1]
+ %372 = fcmp olt double %371, 1.000000e-04 ; [#uses=1]
+ br i1 %372, label %bb51, label %bb52
+
+bb51: ; preds = %bb50
+ store i32 5, i32* %139, align 4
+ br label %bb52
+
+bb52: ; preds = %bb51, %bb50
+ %373 = fcmp ogt float %370, 0x3D10000000000000 ; [#uses=1]
+ br i1 %373, label %bb53, label %bb56
+
+bb53: ; preds = %bb52
+ %374 = call float @sqrtf(float %370) nounwind readonly ; [#uses=1]
+ %375 = fdiv float 1.000000e+00, %374 ; [#uses=4]
+ %376 = fmul float %362, %375 ; [#uses=1]
+ store float %376, float* %2, align 8
+ %377 = fmul float %357, %375 ; [#uses=1]
+ store float %377, float* %3, align 4
+ %378 = fmul float %352, %375 ; [#uses=1]
+ store float %378, float* %4, align 8
+ %379 = call float @sqrtf(float %squaredDistance.1.ph) nounwind readonly ; [#uses=2]
+ %380 = fdiv float %marginA.0, %379 ; [#uses=3]
+ %381 = fmul float %368, %380 ; [#uses=1]
+ %382 = fmul float %365, %380 ; [#uses=1]
+ %383 = fmul float %363, %380 ; [#uses=1]
+ %384 = fsub float %359, %383 ; [#uses=1]
+ store float %384, float* %358, align 8
+ %385 = fsub float %354, %382 ; [#uses=1]
+ store float %385, float* %353, align 4
+ %386 = fsub float %349, %381 ; [#uses=1]
+ store float %386, float* %348, align 8
+ %387 = fdiv float %marginB.0, %379 ; [#uses=3]
+ %388 = fmul float %368, %387 ; [#uses=1]
+ %389 = fmul float %365, %387 ; [#uses=1]
+ %390 = fmul float %363, %387 ; [#uses=1]
+ %391 = fadd float %361, %390 ; [#uses=1]
+ store float %391, float* %360, align 8
+ %392 = fadd float %356, %389 ; [#uses=1]
+ store float %392, float* %355, align 4
+ %393 = fadd float %351, %388 ; [#uses=1]
+ store float %393, float* %350, align 8
+ %394 = fdiv float 1.000000e+00, %375 ; [#uses=1]
+ %395 = fsub float %394, %141 ; [#uses=1]
+ store i32 1, i32* %140, align 4
+ br label %bb57
+
+bb56: ; preds = %bb52
+ store i32 2, i32* %140, align 4
+ br label %bb57
+
+bb57: ; preds = %bb56, %bb53, %bb47, %bb38
+ %distance.0 = phi float [ %395, %bb53 ], [ 0.000000e+00, %bb56 ], [ 0.000000e+00, %bb47 ], [ 0.000000e+00, %bb38 ] ; [#uses=6]
+ %isValid.0 = phi i8 [ 1, %bb53 ], [ 0, %bb56 ], [ 0, %bb47 ], [ 0, %bb38 ] ; [#uses=5]
+ %396 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 15 ; [#uses=1]
+ %397 = load i32* %396, align 4 ; [#uses=1]
+ %398 = icmp eq i32 %397, 0 ; [#uses=1]
+ br i1 %398, label %bb65, label %bb58
+
+bb58: ; preds = %bb57
+ %399 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 2 ; [#uses=1]
+ %400 = load %struct.btActionInterface** %399, align 4 ; [#uses=1]
+ %401 = icmp eq %struct.btActionInterface* %400, null ; [#uses=1]
+ br i1 %401, label %bb65, label %bb59
+
+bb59: ; preds = %bb58
+ %402 = load i32* %139, align 4 ; [#uses=1]
+ %403 = icmp eq i32 %402, 0 ; [#uses=1]
+ br i1 %403, label %bb65, label %bb60
+
+bb60: ; preds = %bb59
+ %404 = fadd float %distance.0, %141 ; [#uses=1]
+ %405 = fpext float %404 to double ; [#uses=1]
+ %406 = fcmp uge double %405, 1.000000e-02 ; [#uses=1]
+ %toBool69 = icmp eq i8 %isValid.0, 1 ; [#uses=1]
+ %or.cond = and i1 %406, %toBool69 ; [#uses=1]
+ br i1 %or.cond, label %bb108, label %bb73
+
+bb65: ; preds = %bb59, %bb58, %bb57
+ %toBool69.old = icmp eq i8 %isValid.0, 1 ; [#uses=1]
+ br i1 %toBool69.old, label %bb108, label %bb72
+
+bb72: ; preds = %bb65
+ %.phi.trans.insert = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 2 ; [#uses=1]
+ %.pre207 = load %struct.btActionInterface** %.phi.trans.insert, align 4 ; [#uses=1]
+ %407 = icmp eq %struct.btActionInterface* %.pre207, null ; [#uses=1]
+ br i1 %407, label %bb106, label %bb73
+
+bb73: ; preds = %bb72, %bb60
+ %408 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 2 ; [#uses=1]
+ %409 = load i32* @gNumDeepPenetrationChecks, align 4 ; [#uses=1]
+ %410 = add nsw i32 %409, 1 ; [#uses=1]
+ store i32 %410, i32* @gNumDeepPenetrationChecks, align 4
+ store float 0.000000e+00, float* %135, align 4
+ store float 0.000000e+00, float* %136, align 4
+ store float 0.000000e+00, float* %137, align 4
+ store float 0.000000e+00, float* %138, align 4
+ %411 = load %struct.btActionInterface** %408, align 4 ; [#uses=2]
+ %412 = getelementptr inbounds %struct.btActionInterface* %411, i32 0, i32 0 ; [#uses=1]
+ %413 = load i32 (...)*** %412, align 4 ; [#uses=1]
+ %414 = getelementptr inbounds i32 (...)** %413, i32 2 ; [#uses=1]
+ %415 = load i32 (...)** %414, align 4 ; [#uses=1]
+ %416 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 3 ; [#uses=1]
+ %417 = load %struct.btStackAlloc** %416, align 4 ; [#uses=1]
+ %418 = getelementptr inbounds %struct.btGjkPairDetector* %this, i32 0, i32 1 ; [#uses=1]
+ %419 = load %struct.btConvexShape** %.pre-phi, align 4 ; [#uses=1]
+ %420 = load %struct.btConvexShape** %114, align 4 ; [#uses=1]
+ %421 = load %struct.btVoronoiSimplexSolver** %142, align 4 ; [#uses=1]
+ %422 = bitcast i32 (...)* %415 to i8 (%struct.btActionInterface*, %struct.btVoronoiSimplexSolver*, %struct.btConvexShape*, %struct.btConvexShape*, %struct.btTransform*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*, %struct.btStackAlloc*)* ; [#uses=1]
+ %423 = call zeroext i8 %422(%struct.btActionInterface* %411, %struct.btVoronoiSimplexSolver* %421, %struct.btConvexShape* %420, %struct.btConvexShape* %419, %struct.btTransform* %localTransA, %struct.btTransform* %localTransB, %struct.btQuadWord* %418, %struct.btQuadWord* %tmpPointOnA, %struct.btQuadWord* %tmpPointOnB, %struct.btActionInterface* %debugDraw, %struct.btStackAlloc* %417) ; [#uses=1]
+ %toBool77 = icmp eq i8 %423, 0 ; [#uses=1]
+ br i1 %toBool77, label %bb94, label %bb78
+
+bb78: ; preds = %bb73
+ %424 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %425 = load float* %424, align 8 ; [#uses=3]
+ %426 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %427 = load float* %426, align 8 ; [#uses=3]
+ %428 = fsub float %425, %427 ; [#uses=3]
+ %429 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %430 = load float* %429, align 4 ; [#uses=3]
+ %431 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %432 = load float* %431, align 4 ; [#uses=3]
+ %433 = fsub float %430, %432 ; [#uses=3]
+ %434 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %435 = load float* %434, align 8 ; [#uses=3]
+ %436 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %437 = load float* %436, align 8 ; [#uses=3]
+ %438 = fsub float %435, %437 ; [#uses=3]
+ %439 = fmul float %438, %438 ; [#uses=1]
+ %440 = fmul float %433, %433 ; [#uses=1]
+ %441 = fadd float %439, %440 ; [#uses=1]
+ %442 = fmul float %428, %428 ; [#uses=1]
+ %443 = fadd float %441, %442 ; [#uses=2]
+ %444 = fcmp ugt float %443, 0x3D10000000000000 ; [#uses=1]
+ br i1 %444, label %bb83, label %bb82
+
+bb82: ; preds = %bb78
+ %445 = load float* %135, align 4 ; [#uses=3]
+ %446 = load float* %136, align 4 ; [#uses=3]
+ %447 = load float* %137, align 4 ; [#uses=3]
+ %448 = load float* %138, align 4 ; [#uses=1]
+ %449 = fmul float %445, %445 ; [#uses=1]
+ %450 = fmul float %446, %446 ; [#uses=1]
+ %451 = fadd float %449, %450 ; [#uses=1]
+ %452 = fmul float %447, %447 ; [#uses=1]
+ %453 = fadd float %451, %452 ; [#uses=1]
+ br label %bb83
+
+bb83: ; preds = %bb82, %bb78
+ %tmpNormalInB.0.0.0 = phi float [ %438, %bb78 ], [ %445, %bb82 ] ; [#uses=1]
+ %tmpNormalInB.0.1.0 = phi float [ %433, %bb78 ], [ %446, %bb82 ] ; [#uses=1]
+ %tmpNormalInB.0.2.0 = phi float [ %428, %bb78 ], [ %447, %bb82 ] ; [#uses=1]
+ %tmpNormalInB.0.3.0 = phi float [ 0.000000e+00, %bb78 ], [ %448, %bb82 ] ; [#uses=1]
+ %lenSqr81.0 = phi float [ %443, %bb78 ], [ %453, %bb82 ] ; [#uses=2]
+ %454 = fcmp ogt float %lenSqr81.0, 0x3D10000000000000 ; [#uses=1]
+ br i1 %454, label %bb84, label %bb93
+
+bb84: ; preds = %bb83
+ %455 = call float @sqrtf(float %lenSqr81.0) nounwind readonly ; [#uses=1]
+ %456 = fdiv float 1.000000e+00, %455 ; [#uses=3]
+ %457 = fsub float %427, %425 ; [#uses=2]
+ %458 = fsub float %432, %430 ; [#uses=2]
+ %459 = fsub float %437, %435 ; [#uses=2]
+ %460 = fmul float %459, %459 ; [#uses=1]
+ %461 = fmul float %458, %458 ; [#uses=1]
+ %462 = fadd float %460, %461 ; [#uses=1]
+ %463 = fmul float %457, %457 ; [#uses=1]
+ %464 = fadd float %462, %463 ; [#uses=1]
+ %465 = call float @sqrtf(float %464) nounwind readonly ; [#uses=1]
+ %466 = fsub float -0.000000e+00, %465 ; [#uses=2]
+ %toBool89.not = icmp ne i8 %isValid.0, 1 ; [#uses=1]
+ %467 = fcmp ogt float %distance.0, %466 ; [#uses=1]
+ %or.cond112 = or i1 %toBool89.not, %467 ; [#uses=1]
+ br i1 %or.cond112, label %bb91, label %bb92
+
+bb91: ; preds = %bb84
+ %468 = fmul float %tmpNormalInB.0.2.0, %456 ; [#uses=1]
+ %469 = fmul float %tmpNormalInB.0.1.0, %456 ; [#uses=1]
+ %470 = fmul float %tmpNormalInB.0.0.0, %456 ; [#uses=1]
+ %471 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %437, float* %471, align 8
+ %472 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %432, float* %472, align 4
+ %473 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %427, float* %473, align 8
+ %474 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 3 ; [#uses=1]
+ %475 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnA, i32 0, i32 0, i32 3 ; [#uses=1]
+ %476 = load float* %475, align 4 ; [#uses=1]
+ store float %476, float* %474, align 4
+ %477 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %435, float* %477, align 8
+ %478 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %430, float* %478, align 4
+ %479 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %425, float* %479, align 8
+ %480 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 3 ; [#uses=1]
+ %481 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnB, i32 0, i32 0, i32 3 ; [#uses=1]
+ %482 = load float* %481, align 4 ; [#uses=1]
+ store float %482, float* %480, align 4
+ store float %470, float* %2, align 8
+ store float %469, float* %3, align 4
+ store float %468, float* %4, align 8
+ store float %tmpNormalInB.0.3.0, float* %5, align 4
+ store i32 3, i32* %140, align 4
+ br label %bb108
+
+bb92: ; preds = %bb84
+ store i32 8, i32* %140, align 4
+ br label %bb106
+
+bb93: ; preds = %bb83
+ store i32 9, i32* %140, align 4
+ br label %bb106
+
+bb94: ; preds = %bb73
+ %483 = load float* %135, align 4 ; [#uses=6]
+ %484 = fmul float %483, %483 ; [#uses=1]
+ %485 = load float* %136, align 4 ; [#uses=6]
+ %486 = fmul float %485, %485 ; [#uses=1]
+ %487 = fadd float %484, %486 ; [#uses=1]
+ %488 = load float* %137, align 4 ; [#uses=6]
+ %489 = fmul float %488, %488 ; [#uses=1]
+ %490 = fadd float %487, %489 ; [#uses=2]
+ %491 = fcmp ogt float %490, 0.000000e+00 ; [#uses=1]
+ br i1 %491, label %bb96, label %bb106
+
+bb96: ; preds = %bb94
+ %492 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %493 = load float* %492, align 8 ; [#uses=2]
+ %494 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %495 = load float* %494, align 8 ; [#uses=2]
+ %496 = fsub float %493, %495 ; [#uses=2]
+ %497 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %498 = load float* %497, align 4 ; [#uses=2]
+ %499 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %500 = load float* %499, align 4 ; [#uses=2]
+ %501 = fsub float %498, %500 ; [#uses=2]
+ %502 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %503 = load float* %502, align 8 ; [#uses=2]
+ %504 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %505 = load float* %504, align 8 ; [#uses=2]
+ %506 = fsub float %503, %505 ; [#uses=2]
+ %507 = fmul float %506, %506 ; [#uses=1]
+ %508 = fmul float %501, %501 ; [#uses=1]
+ %509 = fadd float %507, %508 ; [#uses=1]
+ %510 = fmul float %496, %496 ; [#uses=1]
+ %511 = fadd float %509, %510 ; [#uses=1]
+ %512 = call float @sqrtf(float %511) nounwind readonly ; [#uses=1]
+ %513 = fsub float %512, %141 ; [#uses=2]
+ %toBool102.not = icmp ne i8 %isValid.0, 1 ; [#uses=1]
+ %514 = fcmp olt float %513, %distance.0 ; [#uses=1]
+ %or.cond113 = or i1 %toBool102.not, %514 ; [#uses=1]
+ br i1 %or.cond113, label %bb104, label %bb105
+
+bb104: ; preds = %bb96
+ %515 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %516 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %517 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %518 = getelementptr inbounds %struct.btQuadWord* %pointOnA, i32 0, i32 0, i32 3 ; [#uses=1]
+ %519 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnA, i32 0, i32 0, i32 3 ; [#uses=1]
+ %520 = load float* %519, align 4 ; [#uses=1]
+ store float %520, float* %518, align 4
+ %521 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %522 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %523 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %524 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 3 ; [#uses=1]
+ %525 = getelementptr inbounds %struct.btQuadWord* %tmpPointOnB, i32 0, i32 0, i32 3 ; [#uses=1]
+ %526 = load float* %525, align 4 ; [#uses=1]
+ store float %526, float* %524, align 4
+ %527 = fmul float %488, %marginA.0 ; [#uses=1]
+ %528 = fmul float %485, %marginA.0 ; [#uses=1]
+ %529 = fmul float %483, %marginA.0 ; [#uses=1]
+ %530 = fsub float %503, %529 ; [#uses=1]
+ store float %530, float* %515, align 8
+ %531 = fsub float %498, %528 ; [#uses=1]
+ store float %531, float* %516, align 4
+ %532 = fsub float %493, %527 ; [#uses=1]
+ store float %532, float* %517, align 8
+ %533 = fmul float %488, %marginB.0 ; [#uses=1]
+ %534 = fmul float %485, %marginB.0 ; [#uses=1]
+ %535 = fmul float %483, %marginB.0 ; [#uses=1]
+ %536 = fadd float %505, %535 ; [#uses=1]
+ store float %536, float* %521, align 8
+ %537 = fadd float %500, %534 ; [#uses=1]
+ store float %537, float* %522, align 4
+ %538 = fadd float %495, %533 ; [#uses=1]
+ store float %538, float* %523, align 8
+ store float %483, float* %2, align 8
+ store float %485, float* %3, align 4
+ store float %488, float* %4, align 8
+ %539 = load float* %138, align 4 ; [#uses=1]
+ store float %539, float* %5, align 4
+ %540 = call float @sqrtf(float %490) nounwind readonly ; [#uses=1]
+ %541 = fdiv float 1.000000e+00, %540 ; [#uses=3]
+ %542 = fmul float %483, %541 ; [#uses=1]
+ store float %542, float* %2, align 8
+ %543 = fmul float %485, %541 ; [#uses=1]
+ store float %543, float* %3, align 4
+ %544 = fmul float %488, %541 ; [#uses=1]
+ store float %544, float* %4, align 8
+ store i32 6, i32* %140, align 4
+ br label %bb108
+
+bb105: ; preds = %bb96
+ store i32 5, i32* %140, align 4
+ br label %bb106
+
+bb106: ; preds = %bb105, %bb94, %bb93, %bb92, %bb72
+ %toBool107 = icmp eq i8 %isValid.0, 0 ; [#uses=1]
+ br i1 %toBool107, label %return, label %bb108
+
+bb108: ; preds = %bb106, %bb104, %bb91, %bb65, %bb60
+ %distance.1174 = phi float [ %distance.0, %bb106 ], [ %466, %bb91 ], [ %513, %bb104 ], [ %distance.0, %bb65 ], [ %distance.0, %bb60 ] ; [#uses=5]
+ %545 = fcmp olt float %distance.1174, 0.000000e+00 ; [#uses=1]
+ br i1 %545, label %bb110, label %bb109
+
+bb109: ; preds = %bb108
+ %546 = fmul float %distance.1174, %distance.1174 ; [#uses=1]
+ %547 = load float* %170, align 4 ; [#uses=1]
+ %548 = fcmp olt float %546, %547 ; [#uses=1]
+ br i1 %548, label %bb110, label %return
+
+bb110: ; preds = %bb109, %bb108
+ %549 = load float* %2, align 8 ; [#uses=1]
+ store float %549, float* %135, align 4
+ %550 = load float* %3, align 4 ; [#uses=1]
+ store float %550, float* %136, align 4
+ %551 = load float* %4, align 8 ; [#uses=1]
+ store float %551, float* %137, align 4
+ %552 = load float* %5, align 4 ; [#uses=1]
+ store float %552, float* %138, align 4
+ store float %distance.1174, float* %1, align 4
+ %553 = getelementptr inbounds %struct.btActionInterface* %output, i32 0, i32 0 ; [#uses=1]
+ %554 = load i32 (...)*** %553, align 4 ; [#uses=1]
+ %555 = getelementptr inbounds i32 (...)** %554, i32 4 ; [#uses=1]
+ %556 = load i32 (...)** %555, align 4 ; [#uses=1]
+ %557 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %558 = load float* %557, align 8 ; [#uses=1]
+ %559 = fadd float %558, %105 ; [#uses=1]
+ %560 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %561 = load float* %560, align 4 ; [#uses=1]
+ %562 = fadd float %561, %106 ; [#uses=1]
+ %563 = getelementptr inbounds %struct.btQuadWord* %pointOnB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %564 = load float* %563, align 8 ; [#uses=1]
+ %565 = fadd float %564, %107 ; [#uses=1]
+ %566 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %565, float* %566, align 8
+ %567 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %562, float* %567, align 4
+ %568 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %559, float* %568, align 8
+ %569 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %569, align 4
+ %570 = bitcast i32 (...)* %556 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %570(%struct.btActionInterface* %output, %struct.btQuadWord* %normalInB, %struct.btQuadWord* %0, float %distance.1174)
+ ret void
+
+return: ; preds = %bb109, %bb106
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocEN20btIntermediateResultD2Ev(%struct..0btIntermediateResult* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTVZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocE20btIntermediateResult, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocEN20btIntermediateResultD1Ev(%struct..0btIntermediateResult* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTVZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocE20btIntermediateResult, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocEN20btIntermediateResultD0Ev(%struct..0btIntermediateResult* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTVZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocE20btIntermediateResult, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..0btIntermediateResult* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocEN20btIntermediateResult20setShapeIdentifiersAEii(%struct..0btIntermediateResult* nocapture %this, i32 %partId0, i32 %index0) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocEN20btIntermediateResult20setShapeIdentifiersBEii(%struct..0btIntermediateResult* nocapture %this, i32 %partId1, i32 %index1) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define internal void @_ZZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocEN20btIntermediateResult15addContactPointERKS8_SG_f(%struct..0btIntermediateResult* nocapture %this, %struct.btQuadWord* nocapture %normalOnBInWorld, %struct.btQuadWord* nocapture %pointInWorld, float %depth) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %normalOnBInWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %pointInWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 3 ; [#uses=1]
+ store float %depth, float* %24, align 4
+ %25 = getelementptr inbounds %struct..0btIntermediateResult* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN33btMinkowskiPenetrationDepthSolverD0Ev(%struct..0btMultiSapOverlapFilterCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV33btMinkowskiPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..0btMultiSapOverlapFilterCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN33btMinkowskiPenetrationDepthSolverD1Ev(%struct..0btMultiSapOverlapFilterCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV33btMinkowskiPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define zeroext i8 @_ZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAlloc(%struct..0btMultiSapOverlapFilterCallback* nocapture %this, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btConvexShape* %convexA, %struct.btConvexShape* %convexB, %struct.btTransform* %transA, %struct.btTransform* %transB, %struct.btQuadWord* nocapture %v, %struct.btQuadWord* nocapture %pa, %struct.btQuadWord* nocapture %pb, %struct.btActionInterface* %debugDraw, %struct.btStackAlloc* nocapture %stackAlloc) align 2 {
+entry:
+ %supportVerticesABatch = alloca [62 x %struct.btQuadWord], align 8 ; [#uses=4]
+ %supportVerticesBBatch = alloca [62 x %struct.btQuadWord], align 8 ; [#uses=4]
+ %seperatingAxisInABatch = alloca [62 x %struct.btQuadWord], align 8 ; [#uses=13]
+ %seperatingAxisInBBatch = alloca [62 x %struct.btQuadWord], align 8 ; [#uses=13]
+ %gjkdet = alloca %struct.btGjkPairDetector, align 8 ; [#uses=6]
+ %input = alloca %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput", align 8 ; [#uses=35]
+ %res = alloca %struct..0btIntermediateResult, align 8 ; [#uses=8]
+ %norm33 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %norm45 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btConvexShape* %convexA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = add i32 %1, -17 ; [#uses=1]
+ %3 = icmp ult i32 %2, 2 ; [#uses=1]
+ br i1 %3, label %bb, label %bb9
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btConvexShape* %convexB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = add i32 %5, -17 ; [#uses=1]
+ %7 = icmp ult i32 %6, 2 ; [#uses=1]
+ br i1 %7, label %bb.nph210, label %bb9
+
+bb9: ; preds = %bb, %entry
+ br label %bb.nph210
+
+bb.nph210: ; preds = %bb9, %bb
+ %iftmp.120.0 = phi i8 [ 0, %bb9 ], [ 1, %bb ] ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ br label %bb23
+
+bb23: ; preds = %bb23, %bb.nph210
+ %i.0209 = phi i32 [ 0, %bb.nph210 ], [ %81, %bb23 ] ; [#uses=12]
+ %scevgep267268 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInABatch, i32 0, i32 %i.0209, i32 0, i32 0 ; [#uses=1]
+ %scevgep269 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInABatch, i32 0, i32 %i.0209, i32 0, i32 1 ; [#uses=1]
+ %scevgep270 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInABatch, i32 0, i32 %i.0209, i32 0, i32 2 ; [#uses=1]
+ %scevgep271 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInABatch, i32 0, i32 %i.0209, i32 0, i32 3 ; [#uses=1]
+ %scevgep272273 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInBBatch, i32 0, i32 %i.0209, i32 0, i32 0 ; [#uses=1]
+ %scevgep274 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInBBatch, i32 0, i32 %i.0209, i32 0, i32 1 ; [#uses=1]
+ %scevgep275 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInBBatch, i32 0, i32 %i.0209, i32 0, i32 2 ; [#uses=1]
+ %scevgep276 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInBBatch, i32 0, i32 %i.0209, i32 0, i32 3 ; [#uses=1]
+ %scevgep277278 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %i.0209, i32 0, i32 0 ; [#uses=1]
+ %scevgep279 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %i.0209, i32 0, i32 1 ; [#uses=1]
+ %scevgep280 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %i.0209, i32 0, i32 2 ; [#uses=1]
+ %26 = call %struct.btQuadWord* @_ZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEv() nounwind ; [#uses=0]
+ %27 = load float* %scevgep277278, align 16 ; [#uses=4]
+ %28 = load float* %scevgep279, align 4 ; [#uses=4]
+ %29 = load float* %scevgep280, align 8 ; [#uses=4]
+ %30 = fsub float -0.000000e+00, %29 ; [#uses=3]
+ %31 = fsub float -0.000000e+00, %28 ; [#uses=3]
+ %32 = fsub float -0.000000e+00, %27 ; [#uses=3]
+ %33 = load float* %8, align 4 ; [#uses=1]
+ %34 = fmul float %33, %32 ; [#uses=1]
+ %35 = load float* %9, align 4 ; [#uses=1]
+ %36 = fmul float %35, %31 ; [#uses=1]
+ %37 = fadd float %34, %36 ; [#uses=1]
+ %38 = load float* %10, align 4 ; [#uses=1]
+ %39 = fmul float %38, %30 ; [#uses=1]
+ %40 = fadd float %37, %39 ; [#uses=1]
+ %41 = load float* %11, align 4 ; [#uses=1]
+ %42 = fmul float %41, %32 ; [#uses=1]
+ %43 = load float* %12, align 4 ; [#uses=1]
+ %44 = fmul float %43, %31 ; [#uses=1]
+ %45 = fadd float %42, %44 ; [#uses=1]
+ %46 = load float* %13, align 4 ; [#uses=1]
+ %47 = fmul float %46, %30 ; [#uses=1]
+ %48 = fadd float %45, %47 ; [#uses=1]
+ %49 = load float* %14, align 4 ; [#uses=1]
+ %50 = fmul float %49, %32 ; [#uses=1]
+ %51 = load float* %15, align 4 ; [#uses=1]
+ %52 = fmul float %51, %31 ; [#uses=1]
+ %53 = fadd float %50, %52 ; [#uses=1]
+ %54 = load float* %16, align 4 ; [#uses=1]
+ %55 = fmul float %54, %30 ; [#uses=1]
+ %56 = fadd float %53, %55 ; [#uses=1]
+ store float %56, float* %scevgep267268, align 8
+ store float %48, float* %scevgep269, align 4
+ store float %40, float* %scevgep270, align 8
+ store float 0.000000e+00, float* %scevgep271, align 4
+ %57 = load float* %17, align 4 ; [#uses=1]
+ %58 = fmul float %57, %27 ; [#uses=1]
+ %59 = load float* %18, align 4 ; [#uses=1]
+ %60 = fmul float %59, %28 ; [#uses=1]
+ %61 = fadd float %58, %60 ; [#uses=1]
+ %62 = load float* %19, align 4 ; [#uses=1]
+ %63 = fmul float %62, %29 ; [#uses=1]
+ %64 = fadd float %61, %63 ; [#uses=1]
+ %65 = load float* %20, align 4 ; [#uses=1]
+ %66 = fmul float %65, %27 ; [#uses=1]
+ %67 = load float* %21, align 4 ; [#uses=1]
+ %68 = fmul float %67, %28 ; [#uses=1]
+ %69 = fadd float %66, %68 ; [#uses=1]
+ %70 = load float* %22, align 4 ; [#uses=1]
+ %71 = fmul float %70, %29 ; [#uses=1]
+ %72 = fadd float %69, %71 ; [#uses=1]
+ %73 = load float* %23, align 4 ; [#uses=1]
+ %74 = fmul float %73, %27 ; [#uses=1]
+ %75 = load float* %24, align 4 ; [#uses=1]
+ %76 = fmul float %75, %28 ; [#uses=1]
+ %77 = fadd float %74, %76 ; [#uses=1]
+ %78 = load float* %25, align 4 ; [#uses=1]
+ %79 = fmul float %78, %29 ; [#uses=1]
+ %80 = fadd float %77, %79 ; [#uses=1]
+ store float %80, float* %scevgep272273, align 8
+ store float %72, float* %scevgep274, align 4
+ store float %64, float* %scevgep275, align 8
+ store float 0.000000e+00, float* %scevgep276, align 4
+ %81 = add nsw i32 %i.0209, 1 ; [#uses=2]
+ %exitcond266 = icmp eq i32 %81, 42 ; [#uses=1]
+ br i1 %exitcond266, label %bb26, label %bb23
+
+bb26: ; preds = %bb23
+ %82 = getelementptr inbounds %struct.btConvexShape* %convexA, i32 0, i32 0, i32 0 ; [#uses=3]
+ %83 = load i32 (...)*** %82, align 4 ; [#uses=1]
+ %84 = getelementptr inbounds i32 (...)** %83, i32 19 ; [#uses=1]
+ %85 = load i32 (...)** %84, align 4 ; [#uses=1]
+ %86 = bitcast i32 (...)* %85 to i32 (%struct.btConvexShape*)* ; [#uses=1]
+ %87 = call i32 %86(%struct.btConvexShape* %convexA) ; [#uses=4]
+ %88 = icmp eq i32 %87, 0 ; [#uses=1]
+ %.not = xor i1 %88, true ; [#uses=1]
+ %89 = icmp sgt i32 %87, 0 ; [#uses=1]
+ %or.cond = and i1 %.not, %89 ; [#uses=1]
+ br i1 %or.cond, label %bb.nph, label %bb38
+
+bb.nph: ; preds = %bb26
+ %90 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %91 = getelementptr inbounds %struct.btQuadWord* %norm33, i32 0, i32 0, i32 0 ; [#uses=3]
+ %92 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %93 = getelementptr inbounds %struct.btQuadWord* %norm33, i32 0, i32 0, i32 1 ; [#uses=3]
+ %94 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %95 = getelementptr inbounds %struct.btQuadWord* %norm33, i32 0, i32 0, i32 2 ; [#uses=3]
+ %96 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %97 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %98 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %99 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %100 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %101 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %102 = getelementptr inbounds %struct.btQuadWord* %norm33, i32 0, i32 0, i32 3 ; [#uses=2]
+ %103 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ br label %bb31
+
+bb31: ; preds = %bb31, %bb.nph
+ %112 = phi i32 [ 0, %bb.nph ], [ %200, %bb31 ] ; [#uses=3]
+ %tmp219 = add i32 %112, 42 ; [#uses=12]
+ %scevgep220 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInABatch, i32 0, i32 %tmp219, i32 0, i32 0 ; [#uses=1]
+ %scevgep221 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInABatch, i32 0, i32 %tmp219, i32 0, i32 1 ; [#uses=1]
+ %scevgep222 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInABatch, i32 0, i32 %tmp219, i32 0, i32 2 ; [#uses=1]
+ %scevgep223 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInABatch, i32 0, i32 %tmp219, i32 0, i32 3 ; [#uses=1]
+ %scevgep224225 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInBBatch, i32 0, i32 %tmp219, i32 0, i32 0 ; [#uses=1]
+ %scevgep226 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInBBatch, i32 0, i32 %tmp219, i32 0, i32 1 ; [#uses=1]
+ %scevgep227 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInBBatch, i32 0, i32 %tmp219, i32 0, i32 2 ; [#uses=1]
+ %scevgep228 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInBBatch, i32 0, i32 %tmp219, i32 0, i32 3 ; [#uses=1]
+ %scevgep229230 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %tmp219, i32 0, i32 0 ; [#uses=1]
+ %scevgep231 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %tmp219, i32 0, i32 1 ; [#uses=1]
+ %scevgep232 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %tmp219, i32 0, i32 2 ; [#uses=1]
+ %scevgep233 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %tmp219, i32 0, i32 3 ; [#uses=1]
+ %113 = load i32 (...)*** %82, align 4 ; [#uses=1]
+ %114 = getelementptr inbounds i32 (...)** %113, i32 20 ; [#uses=1]
+ %115 = load i32 (...)** %114, align 4 ; [#uses=1]
+ %116 = bitcast i32 (...)* %115 to void (%struct.btConvexShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ call void %116(%struct.btConvexShape* %convexA, i32 %112, %struct.btQuadWord* %norm33)
+ %117 = load float* %90, align 4 ; [#uses=1]
+ %118 = load float* %91, align 8 ; [#uses=3]
+ %119 = fmul float %117, %118 ; [#uses=1]
+ %120 = load float* %92, align 4 ; [#uses=1]
+ %121 = load float* %93, align 4 ; [#uses=3]
+ %122 = fmul float %120, %121 ; [#uses=1]
+ %123 = fadd float %119, %122 ; [#uses=1]
+ %124 = load float* %94, align 4 ; [#uses=1]
+ %125 = load float* %95, align 8 ; [#uses=3]
+ %126 = fmul float %124, %125 ; [#uses=1]
+ %127 = fadd float %123, %126 ; [#uses=1]
+ %128 = load float* %96, align 4 ; [#uses=1]
+ %129 = fmul float %128, %118 ; [#uses=1]
+ %130 = load float* %97, align 4 ; [#uses=1]
+ %131 = fmul float %130, %121 ; [#uses=1]
+ %132 = fadd float %129, %131 ; [#uses=1]
+ %133 = load float* %98, align 4 ; [#uses=1]
+ %134 = fmul float %133, %125 ; [#uses=1]
+ %135 = fadd float %132, %134 ; [#uses=1]
+ %136 = load float* %99, align 4 ; [#uses=1]
+ %137 = fmul float %136, %118 ; [#uses=1]
+ %138 = load float* %100, align 4 ; [#uses=1]
+ %139 = fmul float %138, %121 ; [#uses=1]
+ %140 = fadd float %137, %139 ; [#uses=1]
+ %141 = load float* %101, align 4 ; [#uses=1]
+ %142 = fmul float %141, %125 ; [#uses=1]
+ %143 = fadd float %140, %142 ; [#uses=1]
+ store float %143, float* %91, align 8
+ store float %135, float* %93, align 4
+ store float %127, float* %95, align 8
+ store float 0.000000e+00, float* %102, align 4
+ %144 = call %struct.btQuadWord* @_ZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEv() nounwind ; [#uses=0]
+ %145 = load float* %91, align 8 ; [#uses=5]
+ store float %145, float* %scevgep229230, align 16
+ %146 = load float* %93, align 4 ; [#uses=5]
+ store float %146, float* %scevgep231, align 4
+ %147 = load float* %95, align 8 ; [#uses=5]
+ store float %147, float* %scevgep232, align 8
+ %148 = load float* %102, align 4 ; [#uses=1]
+ store float %148, float* %scevgep233, align 4
+ %149 = fsub float -0.000000e+00, %147 ; [#uses=3]
+ %150 = fsub float -0.000000e+00, %146 ; [#uses=3]
+ %151 = fsub float -0.000000e+00, %145 ; [#uses=3]
+ %152 = load float* %101, align 4 ; [#uses=1]
+ %153 = fmul float %152, %151 ; [#uses=1]
+ %154 = load float* %98, align 4 ; [#uses=1]
+ %155 = fmul float %154, %150 ; [#uses=1]
+ %156 = fadd float %153, %155 ; [#uses=1]
+ %157 = load float* %94, align 4 ; [#uses=1]
+ %158 = fmul float %157, %149 ; [#uses=1]
+ %159 = fadd float %156, %158 ; [#uses=1]
+ %160 = load float* %100, align 4 ; [#uses=1]
+ %161 = fmul float %160, %151 ; [#uses=1]
+ %162 = load float* %97, align 4 ; [#uses=1]
+ %163 = fmul float %162, %150 ; [#uses=1]
+ %164 = fadd float %161, %163 ; [#uses=1]
+ %165 = load float* %92, align 4 ; [#uses=1]
+ %166 = fmul float %165, %149 ; [#uses=1]
+ %167 = fadd float %164, %166 ; [#uses=1]
+ %168 = load float* %99, align 4 ; [#uses=1]
+ %169 = fmul float %168, %151 ; [#uses=1]
+ %170 = load float* %96, align 4 ; [#uses=1]
+ %171 = fmul float %170, %150 ; [#uses=1]
+ %172 = fadd float %169, %171 ; [#uses=1]
+ %173 = load float* %90, align 4 ; [#uses=1]
+ %174 = fmul float %173, %149 ; [#uses=1]
+ %175 = fadd float %172, %174 ; [#uses=1]
+ store float %175, float* %scevgep220, align 8
+ store float %167, float* %scevgep221, align 4
+ store float %159, float* %scevgep222, align 8
+ store float 0.000000e+00, float* %scevgep223, align 4
+ %176 = load float* %103, align 4 ; [#uses=1]
+ %177 = fmul float %176, %145 ; [#uses=1]
+ %178 = load float* %104, align 4 ; [#uses=1]
+ %179 = fmul float %178, %146 ; [#uses=1]
+ %180 = fadd float %177, %179 ; [#uses=1]
+ %181 = load float* %105, align 4 ; [#uses=1]
+ %182 = fmul float %181, %147 ; [#uses=1]
+ %183 = fadd float %180, %182 ; [#uses=1]
+ %184 = load float* %106, align 4 ; [#uses=1]
+ %185 = fmul float %184, %145 ; [#uses=1]
+ %186 = load float* %107, align 4 ; [#uses=1]
+ %187 = fmul float %186, %146 ; [#uses=1]
+ %188 = fadd float %185, %187 ; [#uses=1]
+ %189 = load float* %108, align 4 ; [#uses=1]
+ %190 = fmul float %189, %147 ; [#uses=1]
+ %191 = fadd float %188, %190 ; [#uses=1]
+ %192 = load float* %109, align 4 ; [#uses=1]
+ %193 = fmul float %192, %145 ; [#uses=1]
+ %194 = load float* %110, align 4 ; [#uses=1]
+ %195 = fmul float %194, %146 ; [#uses=1]
+ %196 = fadd float %193, %195 ; [#uses=1]
+ %197 = load float* %111, align 4 ; [#uses=1]
+ %198 = fmul float %197, %147 ; [#uses=1]
+ %199 = fadd float %196, %198 ; [#uses=1]
+ store float %199, float* %scevgep224225, align 8
+ store float %191, float* %scevgep226, align 4
+ store float %183, float* %scevgep227, align 8
+ store float 0.000000e+00, float* %scevgep228, align 4
+ %200 = add nsw i32 %112, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %200, %87 ; [#uses=1]
+ br i1 %exitcond, label %bb37.bb38.loopexit_crit_edge, label %bb31
+
+bb37.bb38.loopexit_crit_edge: ; preds = %bb31
+ %tmp = add i32 %87, 42 ; [#uses=1]
+ br label %bb38
+
+bb38: ; preds = %bb37.bb38.loopexit_crit_edge, %bb26
+ %numSampleDirections.1 = phi i32 [ 42, %bb26 ], [ %tmp, %bb37.bb38.loopexit_crit_edge ] ; [#uses=3]
+ %201 = getelementptr inbounds %struct.btConvexShape* %convexB, i32 0, i32 0, i32 0 ; [#uses=3]
+ %202 = load i32 (...)*** %201, align 4 ; [#uses=1]
+ %203 = getelementptr inbounds i32 (...)** %202, i32 19 ; [#uses=1]
+ %204 = load i32 (...)** %203, align 4 ; [#uses=1]
+ %205 = bitcast i32 (...)* %204 to i32 (%struct.btConvexShape*)* ; [#uses=1]
+ %206 = call i32 %205(%struct.btConvexShape* %convexB) ; [#uses=4]
+ %207 = icmp eq i32 %206, 0 ; [#uses=1]
+ %.not285 = xor i1 %207, true ; [#uses=1]
+ %208 = icmp sgt i32 %206, 0 ; [#uses=1]
+ %or.cond286 = and i1 %.not285, %208 ; [#uses=1]
+ br i1 %or.cond286, label %bb.nph189, label %bb50
+
+bb.nph189: ; preds = %bb38
+ %209 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %210 = getelementptr inbounds %struct.btQuadWord* %norm45, i32 0, i32 0, i32 0 ; [#uses=3]
+ %211 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %212 = getelementptr inbounds %struct.btQuadWord* %norm45, i32 0, i32 0, i32 1 ; [#uses=3]
+ %213 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %214 = getelementptr inbounds %struct.btQuadWord* %norm45, i32 0, i32 0, i32 2 ; [#uses=3]
+ %215 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %216 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %217 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %218 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %219 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %220 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %221 = getelementptr inbounds %struct.btQuadWord* %norm45, i32 0, i32 0, i32 3 ; [#uses=2]
+ %222 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %223 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %224 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %225 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %226 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %227 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %228 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %229 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %230 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ br label %bb43
+
+bb43: ; preds = %bb43, %bb.nph189
+ %231 = phi i32 [ 0, %bb.nph189 ], [ %319, %bb43 ] ; [#uses=3]
+ %tmp236 = add i32 %numSampleDirections.1, %231 ; [#uses=12]
+ %scevgep237238 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInABatch, i32 0, i32 %tmp236, i32 0, i32 0 ; [#uses=1]
+ %scevgep239 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInABatch, i32 0, i32 %tmp236, i32 0, i32 1 ; [#uses=1]
+ %scevgep240 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInABatch, i32 0, i32 %tmp236, i32 0, i32 2 ; [#uses=1]
+ %scevgep241 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInABatch, i32 0, i32 %tmp236, i32 0, i32 3 ; [#uses=1]
+ %scevgep242243 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInBBatch, i32 0, i32 %tmp236, i32 0, i32 0 ; [#uses=1]
+ %scevgep244 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInBBatch, i32 0, i32 %tmp236, i32 0, i32 1 ; [#uses=1]
+ %scevgep245 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInBBatch, i32 0, i32 %tmp236, i32 0, i32 2 ; [#uses=1]
+ %scevgep246 = getelementptr [62 x %struct.btQuadWord]* %seperatingAxisInBBatch, i32 0, i32 %tmp236, i32 0, i32 3 ; [#uses=1]
+ %scevgep247248 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %tmp236, i32 0, i32 0 ; [#uses=1]
+ %scevgep249 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %tmp236, i32 0, i32 1 ; [#uses=1]
+ %scevgep250 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %tmp236, i32 0, i32 2 ; [#uses=1]
+ %scevgep251 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %tmp236, i32 0, i32 3 ; [#uses=1]
+ %232 = load i32 (...)*** %201, align 4 ; [#uses=1]
+ %233 = getelementptr inbounds i32 (...)** %232, i32 20 ; [#uses=1]
+ %234 = load i32 (...)** %233, align 4 ; [#uses=1]
+ %235 = bitcast i32 (...)* %234 to void (%struct.btConvexShape*, i32, %struct.btQuadWord*)* ; [#uses=1]
+ call void %235(%struct.btConvexShape* %convexB, i32 %231, %struct.btQuadWord* %norm45)
+ %236 = load float* %209, align 4 ; [#uses=1]
+ %237 = load float* %210, align 8 ; [#uses=3]
+ %238 = fmul float %236, %237 ; [#uses=1]
+ %239 = load float* %211, align 4 ; [#uses=1]
+ %240 = load float* %212, align 4 ; [#uses=3]
+ %241 = fmul float %239, %240 ; [#uses=1]
+ %242 = fadd float %238, %241 ; [#uses=1]
+ %243 = load float* %213, align 4 ; [#uses=1]
+ %244 = load float* %214, align 8 ; [#uses=3]
+ %245 = fmul float %243, %244 ; [#uses=1]
+ %246 = fadd float %242, %245 ; [#uses=1]
+ %247 = load float* %215, align 4 ; [#uses=1]
+ %248 = fmul float %247, %237 ; [#uses=1]
+ %249 = load float* %216, align 4 ; [#uses=1]
+ %250 = fmul float %249, %240 ; [#uses=1]
+ %251 = fadd float %248, %250 ; [#uses=1]
+ %252 = load float* %217, align 4 ; [#uses=1]
+ %253 = fmul float %252, %244 ; [#uses=1]
+ %254 = fadd float %251, %253 ; [#uses=1]
+ %255 = load float* %218, align 4 ; [#uses=1]
+ %256 = fmul float %255, %237 ; [#uses=1]
+ %257 = load float* %219, align 4 ; [#uses=1]
+ %258 = fmul float %257, %240 ; [#uses=1]
+ %259 = fadd float %256, %258 ; [#uses=1]
+ %260 = load float* %220, align 4 ; [#uses=1]
+ %261 = fmul float %260, %244 ; [#uses=1]
+ %262 = fadd float %259, %261 ; [#uses=1]
+ store float %262, float* %210, align 8
+ store float %254, float* %212, align 4
+ store float %246, float* %214, align 8
+ store float 0.000000e+00, float* %221, align 4
+ %263 = call %struct.btQuadWord* @_ZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEv() nounwind ; [#uses=0]
+ %264 = load float* %210, align 8 ; [#uses=5]
+ store float %264, float* %scevgep247248, align 16
+ %265 = load float* %212, align 4 ; [#uses=5]
+ store float %265, float* %scevgep249, align 4
+ %266 = load float* %214, align 8 ; [#uses=5]
+ store float %266, float* %scevgep250, align 8
+ %267 = load float* %221, align 4 ; [#uses=1]
+ store float %267, float* %scevgep251, align 4
+ %268 = fsub float -0.000000e+00, %266 ; [#uses=3]
+ %269 = fsub float -0.000000e+00, %265 ; [#uses=3]
+ %270 = fsub float -0.000000e+00, %264 ; [#uses=3]
+ %271 = load float* %222, align 4 ; [#uses=1]
+ %272 = fmul float %271, %270 ; [#uses=1]
+ %273 = load float* %223, align 4 ; [#uses=1]
+ %274 = fmul float %273, %269 ; [#uses=1]
+ %275 = fadd float %272, %274 ; [#uses=1]
+ %276 = load float* %224, align 4 ; [#uses=1]
+ %277 = fmul float %276, %268 ; [#uses=1]
+ %278 = fadd float %275, %277 ; [#uses=1]
+ %279 = load float* %225, align 4 ; [#uses=1]
+ %280 = fmul float %279, %270 ; [#uses=1]
+ %281 = load float* %226, align 4 ; [#uses=1]
+ %282 = fmul float %281, %269 ; [#uses=1]
+ %283 = fadd float %280, %282 ; [#uses=1]
+ %284 = load float* %227, align 4 ; [#uses=1]
+ %285 = fmul float %284, %268 ; [#uses=1]
+ %286 = fadd float %283, %285 ; [#uses=1]
+ %287 = load float* %228, align 4 ; [#uses=1]
+ %288 = fmul float %287, %270 ; [#uses=1]
+ %289 = load float* %229, align 4 ; [#uses=1]
+ %290 = fmul float %289, %269 ; [#uses=1]
+ %291 = fadd float %288, %290 ; [#uses=1]
+ %292 = load float* %230, align 4 ; [#uses=1]
+ %293 = fmul float %292, %268 ; [#uses=1]
+ %294 = fadd float %291, %293 ; [#uses=1]
+ store float %294, float* %scevgep237238, align 8
+ store float %286, float* %scevgep239, align 4
+ store float %278, float* %scevgep240, align 8
+ store float 0.000000e+00, float* %scevgep241, align 4
+ %295 = load float* %220, align 4 ; [#uses=1]
+ %296 = fmul float %295, %264 ; [#uses=1]
+ %297 = load float* %217, align 4 ; [#uses=1]
+ %298 = fmul float %297, %265 ; [#uses=1]
+ %299 = fadd float %296, %298 ; [#uses=1]
+ %300 = load float* %213, align 4 ; [#uses=1]
+ %301 = fmul float %300, %266 ; [#uses=1]
+ %302 = fadd float %299, %301 ; [#uses=1]
+ %303 = load float* %219, align 4 ; [#uses=1]
+ %304 = fmul float %303, %264 ; [#uses=1]
+ %305 = load float* %216, align 4 ; [#uses=1]
+ %306 = fmul float %305, %265 ; [#uses=1]
+ %307 = fadd float %304, %306 ; [#uses=1]
+ %308 = load float* %211, align 4 ; [#uses=1]
+ %309 = fmul float %308, %266 ; [#uses=1]
+ %310 = fadd float %307, %309 ; [#uses=1]
+ %311 = load float* %218, align 4 ; [#uses=1]
+ %312 = fmul float %311, %264 ; [#uses=1]
+ %313 = load float* %215, align 4 ; [#uses=1]
+ %314 = fmul float %313, %265 ; [#uses=1]
+ %315 = fadd float %312, %314 ; [#uses=1]
+ %316 = load float* %209, align 4 ; [#uses=1]
+ %317 = fmul float %316, %266 ; [#uses=1]
+ %318 = fadd float %315, %317 ; [#uses=1]
+ store float %318, float* %scevgep242243, align 8
+ store float %310, float* %scevgep244, align 4
+ store float %302, float* %scevgep245, align 8
+ store float 0.000000e+00, float* %scevgep246, align 4
+ %319 = add nsw i32 %231, 1 ; [#uses=2]
+ %exitcond235 = icmp eq i32 %319, %206 ; [#uses=1]
+ br i1 %exitcond235, label %bb49.bb50.loopexit_crit_edge, label %bb43
+
+bb49.bb50.loopexit_crit_edge: ; preds = %bb43
+ %tmp234 = add i32 %206, %numSampleDirections.1 ; [#uses=1]
+ br label %bb50
+
+bb50: ; preds = %bb49.bb50.loopexit_crit_edge, %bb38
+ %numSampleDirections.3 = phi i32 [ %numSampleDirections.1, %bb38 ], [ %tmp234, %bb49.bb50.loopexit_crit_edge ] ; [#uses=4]
+ %320 = load i32 (...)*** %82, align 4 ; [#uses=1]
+ %321 = getelementptr inbounds i32 (...)** %320, i32 17 ; [#uses=1]
+ %322 = load i32 (...)** %321, align 4 ; [#uses=1]
+ %323 = bitcast i32 (...)* %322 to void (%struct.btConvexShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* ; [#uses=1]
+ %324 = getelementptr inbounds [62 x %struct.btQuadWord]* %seperatingAxisInABatch, i32 0, i32 0 ; [#uses=1]
+ %325 = getelementptr inbounds [62 x %struct.btQuadWord]* %supportVerticesABatch, i32 0, i32 0 ; [#uses=1]
+ call void %323(%struct.btConvexShape* %convexA, %struct.btQuadWord* %324, %struct.btQuadWord* %325, i32 %numSampleDirections.3)
+ %326 = load i32 (...)*** %201, align 4 ; [#uses=1]
+ %327 = getelementptr inbounds i32 (...)** %326, i32 17 ; [#uses=1]
+ %328 = load i32 (...)** %327, align 4 ; [#uses=1]
+ %329 = bitcast i32 (...)* %328 to void (%struct.btConvexShape*, %struct.btQuadWord*, %struct.btQuadWord*, i32)* ; [#uses=1]
+ %330 = getelementptr inbounds [62 x %struct.btQuadWord]* %seperatingAxisInBBatch, i32 0, i32 0 ; [#uses=1]
+ %331 = getelementptr inbounds [62 x %struct.btQuadWord]* %supportVerticesBBatch, i32 0, i32 0 ; [#uses=1]
+ call void %329(%struct.btConvexShape* %convexB, %struct.btQuadWord* %330, %struct.btQuadWord* %331, i32 %numSampleDirections.3)
+ %332 = icmp sgt i32 %numSampleDirections.3, 0 ; [#uses=1]
+ br i1 %332, label %bb.nph203, label %bb69
+
+bb.nph203: ; preds = %bb50
+ %toBool54 = icmp eq i8 %iftmp.120.0, 0 ; [#uses=3]
+ %333 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %334 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %335 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %336 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %337 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %338 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %339 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %340 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %341 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %342 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %343 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %344 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %345 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %346 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %347 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %348 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %349 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %350 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %351 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %352 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %353 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %354 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %355 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %356 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ br label %bb51
+
+bb51: ; preds = %bb67, %bb.nph203
+ %i.1202 = phi i32 [ 0, %bb.nph203 ], [ %444, %bb67 ] ; [#uses=11]
+ %minProj.1201 = phi float [ 0x43ABC16D60000000, %bb.nph203 ], [ %minProj.0, %bb67 ] ; [#uses=3]
+ %minNorm.0.3.1194 = phi float [ 0.000000e+00, %bb.nph203 ], [ %minNorm.0.3.0, %bb67 ] ; [#uses=2]
+ %minNorm.0.2.1193 = phi float [ 0.000000e+00, %bb.nph203 ], [ %minNorm.0.2.0, %bb67 ] ; [#uses=2]
+ %minNorm.0.1.1192 = phi float [ 0.000000e+00, %bb.nph203 ], [ %minNorm.0.1.0, %bb67 ] ; [#uses=2]
+ %minNorm.0.0.1191 = phi float [ 0.000000e+00, %bb.nph203 ], [ %minNorm.0.0.0, %bb67 ] ; [#uses=2]
+ %scevgep261262 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %i.1202, i32 0, i32 0 ; [#uses=1]
+ %scevgep263 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %i.1202, i32 0, i32 1 ; [#uses=1]
+ %scevgep264 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %i.1202, i32 0, i32 2 ; [#uses=1]
+ %scevgep265 = getelementptr [62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 %i.1202, i32 0, i32 3 ; [#uses=1]
+ %357 = call %struct.btQuadWord* @_ZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEv() nounwind ; [#uses=0]
+ %358 = load float* %scevgep261262, align 16 ; [#uses=4]
+ %359 = load float* %scevgep263, align 4 ; [#uses=4]
+ %360 = load float* %scevgep264, align 8 ; [#uses=1]
+ %361 = load float* %scevgep265, align 4 ; [#uses=1]
+ %norm53.0.2.0 = select i1 %toBool54, float %360, float 0.000000e+00 ; [#uses=4]
+ %362 = fmul float %358, %358 ; [#uses=1]
+ %363 = fmul float %359, %359 ; [#uses=1]
+ %364 = fadd float %362, %363 ; [#uses=1]
+ %365 = fmul float %norm53.0.2.0, %norm53.0.2.0 ; [#uses=1]
+ %366 = fadd float %364, %365 ; [#uses=1]
+ %367 = fpext float %366 to double ; [#uses=1]
+ %368 = fcmp ogt double %367, 1.000000e-02 ; [#uses=1]
+ br i1 %368, label %bb58, label %bb67
+
+bb58: ; preds = %bb51
+ %scevgep260 = getelementptr [62 x %struct.btQuadWord]* %supportVerticesBBatch, i32 0, i32 %i.1202, i32 0, i32 2 ; [#uses=1]
+ %scevgep259 = getelementptr [62 x %struct.btQuadWord]* %supportVerticesBBatch, i32 0, i32 %i.1202, i32 0, i32 1 ; [#uses=1]
+ %scevgep257258 = getelementptr [62 x %struct.btQuadWord]* %supportVerticesBBatch, i32 0, i32 %i.1202, i32 0, i32 0 ; [#uses=1]
+ %scevgep256 = getelementptr [62 x %struct.btQuadWord]* %supportVerticesABatch, i32 0, i32 %i.1202, i32 0, i32 2 ; [#uses=1]
+ %scevgep255 = getelementptr [62 x %struct.btQuadWord]* %supportVerticesABatch, i32 0, i32 %i.1202, i32 0, i32 1 ; [#uses=1]
+ %scevgep253254 = getelementptr [62 x %struct.btQuadWord]* %supportVerticesABatch, i32 0, i32 %i.1202, i32 0, i32 0 ; [#uses=1]
+ %369 = load float* %scevgep253254, align 8 ; [#uses=3]
+ %370 = load float* %scevgep255, align 4 ; [#uses=3]
+ %371 = load float* %scevgep256, align 8 ; [#uses=3]
+ %372 = load float* %scevgep257258, align 8 ; [#uses=3]
+ %373 = load float* %scevgep259, align 4 ; [#uses=3]
+ %374 = load float* %scevgep260, align 8 ; [#uses=3]
+ %375 = load float* %333, align 4 ; [#uses=1]
+ %376 = fmul float %375, %369 ; [#uses=1]
+ %377 = load float* %334, align 4 ; [#uses=1]
+ %378 = fmul float %377, %370 ; [#uses=1]
+ %379 = fadd float %376, %378 ; [#uses=1]
+ %380 = load float* %335, align 4 ; [#uses=1]
+ %381 = fmul float %380, %371 ; [#uses=1]
+ %382 = fadd float %379, %381 ; [#uses=1]
+ %383 = load float* %336, align 4 ; [#uses=1]
+ %384 = fadd float %382, %383 ; [#uses=1]
+ %385 = load float* %337, align 4 ; [#uses=1]
+ %386 = fmul float %385, %369 ; [#uses=1]
+ %387 = load float* %338, align 4 ; [#uses=1]
+ %388 = fmul float %387, %370 ; [#uses=1]
+ %389 = fadd float %386, %388 ; [#uses=1]
+ %390 = load float* %339, align 4 ; [#uses=1]
+ %391 = fmul float %390, %371 ; [#uses=1]
+ %392 = fadd float %389, %391 ; [#uses=1]
+ %393 = load float* %340, align 4 ; [#uses=1]
+ %394 = fadd float %392, %393 ; [#uses=1]
+ %395 = load float* %341, align 4 ; [#uses=1]
+ %396 = fmul float %395, %369 ; [#uses=1]
+ %397 = load float* %342, align 4 ; [#uses=1]
+ %398 = fmul float %397, %370 ; [#uses=1]
+ %399 = fadd float %396, %398 ; [#uses=1]
+ %400 = load float* %343, align 4 ; [#uses=1]
+ %401 = fmul float %400, %371 ; [#uses=1]
+ %402 = fadd float %399, %401 ; [#uses=1]
+ %403 = load float* %344, align 4 ; [#uses=1]
+ %404 = fadd float %402, %403 ; [#uses=1]
+ %405 = load float* %345, align 4 ; [#uses=1]
+ %406 = fmul float %405, %372 ; [#uses=1]
+ %407 = load float* %346, align 4 ; [#uses=1]
+ %408 = fmul float %407, %373 ; [#uses=1]
+ %409 = fadd float %406, %408 ; [#uses=1]
+ %410 = load float* %347, align 4 ; [#uses=1]
+ %411 = fmul float %410, %374 ; [#uses=1]
+ %412 = fadd float %409, %411 ; [#uses=1]
+ %413 = load float* %348, align 4 ; [#uses=1]
+ %414 = fadd float %412, %413 ; [#uses=1]
+ %415 = load float* %349, align 4 ; [#uses=1]
+ %416 = fmul float %415, %372 ; [#uses=1]
+ %417 = load float* %350, align 4 ; [#uses=1]
+ %418 = fmul float %417, %373 ; [#uses=1]
+ %419 = fadd float %416, %418 ; [#uses=1]
+ %420 = load float* %351, align 4 ; [#uses=1]
+ %421 = fmul float %420, %374 ; [#uses=1]
+ %422 = fadd float %419, %421 ; [#uses=1]
+ %423 = load float* %352, align 4 ; [#uses=1]
+ %424 = fadd float %422, %423 ; [#uses=1]
+ %425 = load float* %353, align 4 ; [#uses=1]
+ %426 = fmul float %425, %372 ; [#uses=1]
+ %427 = load float* %354, align 4 ; [#uses=1]
+ %428 = fmul float %427, %373 ; [#uses=1]
+ %429 = fadd float %426, %428 ; [#uses=1]
+ %430 = load float* %355, align 4 ; [#uses=1]
+ %431 = fmul float %430, %374 ; [#uses=1]
+ %432 = fadd float %429, %431 ; [#uses=1]
+ %433 = load float* %356, align 4 ; [#uses=1]
+ %434 = fadd float %432, %433 ; [#uses=1]
+ %pWorld.0.2.0 = select i1 %toBool54, float %384, float 0.000000e+00 ; [#uses=1]
+ %qWorld.0.2.0 = select i1 %toBool54, float %414, float 0.000000e+00 ; [#uses=1]
+ %435 = fsub float %qWorld.0.2.0, %pWorld.0.2.0 ; [#uses=1]
+ %436 = fsub float %424, %394 ; [#uses=1]
+ %437 = fsub float %434, %404 ; [#uses=1]
+ %438 = fmul float %358, %437 ; [#uses=1]
+ %439 = fmul float %359, %436 ; [#uses=1]
+ %440 = fadd float %438, %439 ; [#uses=1]
+ %441 = fmul float %norm53.0.2.0, %435 ; [#uses=1]
+ %442 = fadd float %440, %441 ; [#uses=2]
+ %443 = fcmp olt float %442, %minProj.1201 ; [#uses=1]
+ br i1 %443, label %bb66, label %bb67
+
+bb66: ; preds = %bb58
+ br label %bb67
+
+bb67: ; preds = %bb66, %bb58, %bb51
+ %minNorm.0.0.0 = phi float [ %358, %bb66 ], [ %minNorm.0.0.1191, %bb58 ], [ %minNorm.0.0.1191, %bb51 ] ; [#uses=2]
+ %minNorm.0.1.0 = phi float [ %359, %bb66 ], [ %minNorm.0.1.1192, %bb58 ], [ %minNorm.0.1.1192, %bb51 ] ; [#uses=2]
+ %minNorm.0.2.0 = phi float [ %norm53.0.2.0, %bb66 ], [ %minNorm.0.2.1193, %bb58 ], [ %minNorm.0.2.1193, %bb51 ] ; [#uses=2]
+ %minNorm.0.3.0 = phi float [ %361, %bb66 ], [ %minNorm.0.3.1194, %bb58 ], [ %minNorm.0.3.1194, %bb51 ] ; [#uses=2]
+ %minProj.0 = phi float [ %442, %bb66 ], [ %minProj.1201, %bb58 ], [ %minProj.1201, %bb51 ] ; [#uses=2]
+ %444 = add nsw i32 %i.1202, 1 ; [#uses=2]
+ %exitcond252 = icmp eq i32 %444, %numSampleDirections.3 ; [#uses=1]
+ br i1 %exitcond252, label %bb69, label %bb51
+
+bb69: ; preds = %bb67, %bb50
+ %minProj.1.lcssa = phi float [ 0x43ABC16D60000000, %bb50 ], [ %minProj.0, %bb67 ] ; [#uses=2]
+ %minNorm.0.3.1.lcssa = phi float [ 0.000000e+00, %bb50 ], [ %minNorm.0.3.0, %bb67 ] ; [#uses=1]
+ %minNorm.0.2.1.lcssa = phi float [ 0.000000e+00, %bb50 ], [ %minNorm.0.2.0, %bb67 ] ; [#uses=4]
+ %minNorm.0.1.1.lcssa = phi float [ 0.000000e+00, %bb50 ], [ %minNorm.0.1.0, %bb67 ] ; [#uses=4]
+ %minNorm.0.0.1.lcssa = phi float [ 0.000000e+00, %bb50 ], [ %minNorm.0.0.0, %bb67 ] ; [#uses=4]
+ %445 = call float @_ZNK13btConvexShape19getMarginNonVirtualEv(%struct.btConvexShape* %convexA) ; [#uses=0]
+ %446 = call float @_ZNK13btConvexShape19getMarginNonVirtualEv(%struct.btConvexShape* %convexB) ; [#uses=0]
+ %447 = fcmp olt float %minProj.1.lcssa, 0.000000e+00 ; [#uses=1]
+ br i1 %447, label %bb79, label %bb71
+
+bb71: ; preds = %bb69
+ %448 = call float @_ZNK13btConvexShape19getMarginNonVirtualEv(%struct.btConvexShape* %convexA) ; [#uses=1]
+ %449 = call float @_ZNK13btConvexShape19getMarginNonVirtualEv(%struct.btConvexShape* %convexB) ; [#uses=1]
+ %450 = fadd float %448, %449 ; [#uses=1]
+ %451 = fadd float %450, 5.000000e-01 ; [#uses=1]
+ %452 = fadd float %451, %minProj.1.lcssa ; [#uses=4]
+ call void @_ZN17btGjkPairDetectorC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btGjkPairDetector* %gjkdet, %struct.btConvexShape* %convexA, %struct.btConvexShape* %convexB, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* null)
+ %453 = fmul float %minNorm.0.2.1.lcssa, %452 ; [#uses=1]
+ %454 = fmul float %minNorm.0.1.1.lcssa, %452 ; [#uses=1]
+ %455 = fmul float %minNorm.0.0.1.lcssa, %452 ; [#uses=1]
+ %456 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 2 ; [#uses=1]
+ %457 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 3 ; [#uses=1]
+ store %struct.btStackAlloc* null, %struct.btStackAlloc** %457, align 4
+ %458 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %459 = load float* %458, align 4 ; [#uses=1]
+ %460 = fadd float %459, %453 ; [#uses=1]
+ %461 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %462 = load float* %461, align 4 ; [#uses=1]
+ %463 = fadd float %462, %454 ; [#uses=1]
+ %464 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %465 = load float* %464, align 4 ; [#uses=1]
+ %466 = fadd float %465, %455 ; [#uses=1]
+ %467 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %468 = load float* %467, align 4 ; [#uses=1]
+ %469 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %470 = load float* %469, align 4 ; [#uses=1]
+ %471 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %472 = load float* %471, align 4 ; [#uses=1]
+ %473 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %474 = load float* %473, align 4 ; [#uses=1]
+ %475 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %476 = load float* %475, align 4 ; [#uses=1]
+ %477 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %478 = load float* %477, align 4 ; [#uses=1]
+ %479 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %480 = load float* %479, align 4 ; [#uses=1]
+ %481 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %482 = load float* %481, align 4 ; [#uses=1]
+ %483 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %484 = load float* %483, align 4 ; [#uses=1]
+ %485 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %486 = load float* %485, align 4 ; [#uses=1]
+ %487 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %488 = load float* %487, align 4 ; [#uses=1]
+ %489 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %490 = load float* %489, align 4 ; [#uses=1]
+ %491 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %468, float* %491, align 8
+ %492 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %470, float* %492, align 4
+ %493 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %472, float* %493, align 8
+ %494 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %474, float* %494, align 4
+ %495 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %476, float* %495, align 8
+ %496 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %478, float* %496, align 4
+ %497 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %480, float* %497, align 8
+ %498 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %482, float* %498, align 4
+ %499 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %484, float* %499, align 8
+ %500 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %486, float* %500, align 4
+ %501 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %488, float* %501, align 8
+ %502 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %490, float* %502, align 4
+ %503 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %466, float* %503, align 8
+ %504 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %463, float* %504, align 4
+ %505 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %460, float* %505, align 8
+ %506 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %506, align 4
+ %507 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %508 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %509 = load float* %508, align 4 ; [#uses=1]
+ store float %509, float* %507, align 8
+ %510 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %511 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %512 = load float* %511, align 4 ; [#uses=1]
+ store float %512, float* %510, align 4
+ %513 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %514 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %515 = load float* %514, align 4 ; [#uses=1]
+ store float %515, float* %513, align 8
+ %516 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %517 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %518 = load float* %517, align 4 ; [#uses=1]
+ store float %518, float* %516, align 4
+ %519 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %520 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %521 = load float* %520, align 4 ; [#uses=1]
+ store float %521, float* %519, align 8
+ %522 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %523 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %524 = load float* %523, align 4 ; [#uses=1]
+ store float %524, float* %522, align 4
+ %525 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %526 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %527 = load float* %526, align 4 ; [#uses=1]
+ store float %527, float* %525, align 8
+ %528 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %529 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %530 = load float* %529, align 4 ; [#uses=1]
+ store float %530, float* %528, align 4
+ %531 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %532 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %533 = load float* %532, align 4 ; [#uses=1]
+ store float %533, float* %531, align 8
+ %534 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %535 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %536 = load float* %535, align 4 ; [#uses=1]
+ store float %536, float* %534, align 4
+ %537 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %538 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %539 = load float* %538, align 4 ; [#uses=1]
+ store float %539, float* %537, align 8
+ %540 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %541 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %542 = load float* %541, align 4 ; [#uses=1]
+ store float %542, float* %540, align 4
+ %543 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %544 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %545 = load float* %544, align 4 ; [#uses=1]
+ store float %545, float* %543, align 8
+ %546 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %547 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %548 = load float* %547, align 4 ; [#uses=1]
+ store float %548, float* %546, align 4
+ %549 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %550 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %551 = load float* %550, align 4 ; [#uses=1]
+ store float %551, float* %549, align 8
+ %552 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %553 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %554 = load float* %553, align 4 ; [#uses=1]
+ store float %554, float* %552, align 4
+ store float 0x43ABC16D60000000, float* %456, align 8
+ %555 = getelementptr inbounds %struct..0btIntermediateResult* %res, i32 0, i32 0, i32 0 ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTVZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocE20btIntermediateResult, i32 0, i32 2), i32 (...)*** %555, align 8
+ %556 = getelementptr inbounds %struct..0btIntermediateResult* %res, i32 0, i32 4 ; [#uses=2]
+ store i8 0, i8* %556, align 8
+ %557 = fsub float -0.000000e+00, %minNorm.0.2.1.lcssa ; [#uses=1]
+ %558 = fsub float -0.000000e+00, %minNorm.0.1.1.lcssa ; [#uses=1]
+ %559 = fsub float -0.000000e+00, %minNorm.0.0.1.lcssa ; [#uses=1]
+ %560 = getelementptr inbounds %struct.btGjkPairDetector* %gjkdet, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %559, float* %560, align 4
+ %561 = getelementptr inbounds %struct.btGjkPairDetector* %gjkdet, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %558, float* %561, align 4
+ %562 = getelementptr inbounds %struct.btGjkPairDetector* %gjkdet, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %557, float* %562, align 4
+ %563 = getelementptr inbounds %struct.btGjkPairDetector* %gjkdet, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %563, align 4
+ %564 = getelementptr inbounds %struct..0btIntermediateResult* %res, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.btGjkPairDetector* %gjkdet, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, %struct.btActionInterface* %564, %struct.btActionInterface* %debugDraw, i8 zeroext 0)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb71
+ %565 = getelementptr inbounds %struct..0btIntermediateResult* %res, i32 0, i32 3 ; [#uses=1]
+ %566 = load float* %565, align 4 ; [#uses=1]
+ %567 = fsub float %452, %566 ; [#uses=3]
+ %568 = load i8* %556, align 8 ; [#uses=3]
+ %toBool72 = icmp eq i8 %568, 0 ; [#uses=1]
+ br i1 %toBool72, label %bb75, label %bb73
+
+bb73: ; preds = %invcont
+ %569 = fmul float %minNorm.0.2.1.lcssa, %567 ; [#uses=1]
+ %570 = fmul float %minNorm.0.1.1.lcssa, %567 ; [#uses=1]
+ %571 = fmul float %minNorm.0.0.1.lcssa, %567 ; [#uses=1]
+ %572 = getelementptr inbounds %struct..0btIntermediateResult* %res, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %573 = load float* %572, align 4 ; [#uses=2]
+ %574 = fsub float %573, %569 ; [#uses=1]
+ %575 = getelementptr inbounds %struct..0btIntermediateResult* %res, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %576 = load float* %575, align 4 ; [#uses=2]
+ %577 = fsub float %576, %570 ; [#uses=1]
+ %578 = getelementptr inbounds %struct..0btIntermediateResult* %res, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %579 = load float* %578, align 4 ; [#uses=2]
+ %580 = fsub float %579, %571 ; [#uses=1]
+ %581 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %580, float* %581, align 4
+ %582 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %577, float* %582, align 4
+ %583 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %574, float* %583, align 4
+ %584 = getelementptr inbounds %struct.btQuadWord* %pa, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %584, align 4
+ %585 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %579, float* %585, align 4
+ %586 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %576, float* %586, align 4
+ %587 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %573, float* %587, align 4
+ %588 = getelementptr inbounds %struct.btQuadWord* %pb, i32 0, i32 0, i32 3 ; [#uses=1]
+ %589 = getelementptr inbounds %struct..0btIntermediateResult* %res, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %590 = load float* %589, align 4 ; [#uses=1]
+ store float %590, float* %588, align 4
+ %591 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %minNorm.0.0.1.lcssa, float* %591, align 4
+ %592 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %minNorm.0.1.1.lcssa, float* %592, align 4
+ %593 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %minNorm.0.2.1.lcssa, float* %593, align 4
+ %594 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %minNorm.0.3.1.lcssa, float* %594, align 4
+ ret i8 %568
+
+bb75: ; preds = %invcont
+ ret i8 %568
+
+bb79: ; preds = %bb69
+ ret i8 0
+
+lpad: ; preds = %bb71
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select83 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTVZN33btMinkowskiPenetrationDepthSolver12calcPenDepthER22btVoronoiSimplexSolverPK13btConvexShapeS4_RK11btTransformS7_R9btVector3S9_S9_P12btIDebugDrawP12btStackAllocE20btIntermediateResult, i32 0, i32 2), i32 (...)*** %555, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=4]
+define %struct.btQuadWord* @_ZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEv() nounwind align 2 {
+entry:
+ %0 = load i8* bitcast (i64* @_ZGVZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections to i8*), align 8 ; [#uses=1]
+ %1 = icmp eq i8 %0, 0 ; [#uses=1]
+ br i1 %1, label %bb, label %bb5
+
+bb: ; preds = %entry
+ %2 = tail call i32 @__cxa_guard_acquire(i64* @_ZGVZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections) nounwind ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb5, label %bb4
+
+bb4: ; preds = %bb
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 0, i32 0, i32 0), align 32
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 0, i32 0, i32 1), align 4
+ store float -1.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 0, i32 0, i32 3), align 4
+ store float 0x3FE727CC00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 1, i32 0, i32 0), align 16
+ store float 0xBFE0D2BD40000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 1, i32 0, i32 1), align 4
+ store float 0xBFDC9F3C80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 1, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 1, i32 0, i32 3), align 4
+ store float 0xBFD1B05740000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 2, i32 0, i32 0), align 32
+ store float 0xBFEB388440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 2, i32 0, i32 1), align 4
+ store float 0xBFDC9F3C80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 2, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 2, i32 0, i32 3), align 4
+ store float 0xBFEC9F2340000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 3, i32 0, i32 0), align 16
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 3, i32 0, i32 1), align 4
+ store float 0xBFDC9F2FE0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 3, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 3, i32 0, i32 3), align 4
+ store float 0xBFD1B05740000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 4, i32 0, i32 0), align 32
+ store float 0x3FEB388440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 4, i32 0, i32 1), align 4
+ store float 0xBFDC9F40A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 4, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 4, i32 0, i32 3), align 4
+ store float 0x3FE727CC00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 5, i32 0, i32 0), align 16
+ store float 0x3FE0D2BD40000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 5, i32 0, i32 1), align 4
+ store float 0xBFDC9F3C80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 5, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 5, i32 0, i32 3), align 4
+ store float 0x3FD1B05740000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 6, i32 0, i32 0), align 32
+ store float 0xBFEB388440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 6, i32 0, i32 1), align 4
+ store float 0x3FDC9F40A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 6, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 6, i32 0, i32 3), align 4
+ store float 0xBFE727CC00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 7, i32 0, i32 0), align 16
+ store float 0xBFE0D2BD40000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 7, i32 0, i32 1), align 4
+ store float 0x3FDC9F3C80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 7, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 7, i32 0, i32 3), align 4
+ store float 0xBFE727CC00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 8, i32 0, i32 0), align 32
+ store float 0x3FE0D2BD40000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 8, i32 0, i32 1), align 4
+ store float 0x3FDC9F3C80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 8, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 8, i32 0, i32 3), align 4
+ store float 0x3FD1B05740000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 9, i32 0, i32 0), align 16
+ store float 0x3FEB388440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 9, i32 0, i32 1), align 4
+ store float 0x3FDC9F3C80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 9, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 9, i32 0, i32 3), align 4
+ store float 0x3FEC9F2340000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 10, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 10, i32 0, i32 1), align 4
+ store float 0x3FDC9F2FE0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 10, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 10, i32 0, i32 3), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 11, i32 0, i32 0), align 16
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 11, i32 0, i32 1), align 4
+ store float 1.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 11, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 11, i32 0, i32 3), align 4
+ store float 0x3FDB387E00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 12, i32 0, i32 0), align 32
+ store float 0xBFD3C6D620000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 12, i32 0, i32 1), align 4
+ store float 0xBFEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 12, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 12, i32 0, i32 3), align 4
+ store float 0xBFC4CB5BC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 13, i32 0, i32 0), align 16
+ store float 0xBFDFFFEB00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 13, i32 0, i32 1), align 4
+ store float 0xBFEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 13, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 13, i32 0, i32 3), align 4
+ store float 0x3FD0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 14, i32 0, i32 0), align 32
+ store float 0xBFE9E36D20000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 14, i32 0, i32 1), align 4
+ store float 0xBFE0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 14, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 14, i32 0, i32 3), align 4
+ store float 0x3FDB387E00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 15, i32 0, i32 0), align 16
+ store float 0x3FD3C6D620000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 15, i32 0, i32 1), align 4
+ store float 0xBFEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 15, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 15, i32 0, i32 3), align 4
+ store float 0x3FEB388220000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 16, i32 0, i32 0), align 32
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 16, i32 0, i32 1), align 4
+ store float 0xBFE0D2D440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 16, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 16, i32 0, i32 3), align 4
+ store float 0xBFE0D2C7C0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 17, i32 0, i32 0), align 16
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 17, i32 0, i32 1), align 4
+ store float 0xBFEB388A80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 17, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 17, i32 0, i32 3), align 4
+ store float 0xBFE605A700000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 18, i32 0, i32 0), align 32
+ store float 0xBFDFFFF360000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 18, i32 0, i32 1), align 4
+ store float 0xBFE0D2D440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 18, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 18, i32 0, i32 3), align 4
+ store float 0xBFC4CB5BC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 19, i32 0, i32 0), align 16
+ store float 0x3FDFFFEB00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 19, i32 0, i32 1), align 4
+ store float 0xBFEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 19, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 19, i32 0, i32 3), align 4
+ store float 0xBFE605A700000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 20, i32 0, i32 0), align 32
+ store float 0x3FDFFFF360000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 20, i32 0, i32 1), align 4
+ store float 0xBFE0D2D440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 20, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 20, i32 0, i32 3), align 4
+ store float 0x3FD0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 21, i32 0, i32 0), align 16
+ store float 0x3FE9E36D20000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 21, i32 0, i32 1), align 4
+ store float 0xBFE0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 21, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 21, i32 0, i32 3), align 4
+ store float 0x3FEE6F1120000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 22, i32 0, i32 0), align 32
+ store float 0x3FD3C6DE80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 22, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 22, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 22, i32 0, i32 3), align 4
+ store float 0x3FEE6F1120000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 23, i32 0, i32 0), align 16
+ store float 0xBFD3C6DE80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 23, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 23, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 23, i32 0, i32 3), align 4
+ store float 0x3FE2CF24A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 24, i32 0, i32 0), align 32
+ store float 0xBFE9E377A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 24, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 24, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 24, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 25, i32 0, i32 0), align 16
+ store float -1.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 25, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 25, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 25, i32 0, i32 3), align 4
+ store float 0xBFE2CF24A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 26, i32 0, i32 0), align 32
+ store float 0xBFE9E377A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 26, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 26, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 26, i32 0, i32 3), align 4
+ store float 0xBFEE6F1120000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 27, i32 0, i32 0), align 16
+ store float 0xBFD3C6DE80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 27, i32 0, i32 1), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 27, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 27, i32 0, i32 3), align 4
+ store float 0xBFEE6F1120000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 28, i32 0, i32 0), align 32
+ store float 0x3FD3C6DE80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 28, i32 0, i32 1), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 28, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 28, i32 0, i32 3), align 4
+ store float 0xBFE2CF24A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 29, i32 0, i32 0), align 16
+ store float 0x3FE9E377A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 29, i32 0, i32 1), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 29, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 29, i32 0, i32 3), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 30, i32 0, i32 0), align 32
+ store float 1.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 30, i32 0, i32 1), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 30, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 30, i32 0, i32 3), align 4
+ store float 0x3FE2CF24A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 31, i32 0, i32 0), align 16
+ store float 0x3FE9E377A0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 31, i32 0, i32 1), align 4
+ store float -0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 31, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 31, i32 0, i32 3), align 4
+ store float 0x3FE605A700000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 32, i32 0, i32 0), align 32
+ store float 0xBFDFFFF360000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 32, i32 0, i32 1), align 4
+ store float 0x3FE0D2D440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 32, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 32, i32 0, i32 3), align 4
+ store float 0xBFD0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 33, i32 0, i32 0), align 16
+ store float 0xBFE9E36D20000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 33, i32 0, i32 1), align 4
+ store float 0x3FE0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 33, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 33, i32 0, i32 3), align 4
+ store float 0xBFEB388220000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 34, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 34, i32 0, i32 1), align 4
+ store float 0x3FE0D2D440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 34, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 34, i32 0, i32 3), align 4
+ store float 0xBFD0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 35, i32 0, i32 0), align 16
+ store float 0x3FE9E36D20000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 35, i32 0, i32 1), align 4
+ store float 0x3FE0D2D880000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 35, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 35, i32 0, i32 3), align 4
+ store float 0x3FE605A700000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 36, i32 0, i32 0), align 32
+ store float 0x3FDFFFF360000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 36, i32 0, i32 1), align 4
+ store float 0x3FE0D2D440000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 36, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 36, i32 0, i32 3), align 4
+ store float 0x3FE0D2C7C0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 37, i32 0, i32 0), align 16
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 37, i32 0, i32 1), align 4
+ store float 0x3FEB388A80000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 37, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 37, i32 0, i32 3), align 4
+ store float 0x3FC4CB5BC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 38, i32 0, i32 0), align 32
+ store float 0xBFDFFFEB00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 38, i32 0, i32 1), align 4
+ store float 0x3FEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 38, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 38, i32 0, i32 3), align 4
+ store float 0xBFDB387E00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 39, i32 0, i32 0), align 16
+ store float 0xBFD3C6D620000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 39, i32 0, i32 1), align 4
+ store float 0x3FEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 39, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 39, i32 0, i32 3), align 4
+ store float 0xBFDB387E00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 40, i32 0, i32 0), align 32
+ store float 0x3FD3C6D620000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 40, i32 0, i32 1), align 4
+ store float 0x3FEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 40, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 40, i32 0, i32 3), align 4
+ store float 0x3FC4CB5BC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 41, i32 0, i32 0), align 16
+ store float 0x3FDFFFEB00000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 41, i32 0, i32 1), align 4
+ store float 0x3FEB388EC0000000, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 41, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 41, i32 0, i32 3), align 4
+ tail call void @__cxa_guard_release(i64* @_ZGVZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections) nounwind
+ ret %struct.btQuadWord* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 0)
+
+bb5: ; preds = %bb, %entry
+ ret %struct.btQuadWord* getelementptr inbounds ([62 x %struct.btQuadWord]* @_ZZN33btMinkowskiPenetrationDepthSolver24getPenetrationDirectionsEvE22sPenetrationDirections, i32 0, i32 0)
+}
+
+; [#uses=0]
+define void @_ZN20btPersistentManifoldC2Ev(%struct.btPersistentManifold* nocapture %this) nounwind align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 1, i32* %0, align 4
+ %scevgep = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 12 ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 13 ; [#uses=1]
+ %scevgep7 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 14 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 15 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 16 ; [#uses=1]
+ %scevgep10 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 17 ; [#uses=1]
+ %scevgep11 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 18 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 19 ; [#uses=1]
+ %scevgep13 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 20 ; [#uses=1]
+ %scevgep14 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 21 ; [#uses=1]
+ store i8* null, i8** %scevgep, align 4
+ store float 0.000000e+00, float* %scevgep6, align 4
+ store i8 0, i8* %scevgep7, align 4
+ store float 0.000000e+00, float* %scevgep8, align 4
+ store float 0.000000e+00, float* %scevgep9, align 4
+ store float 0.000000e+00, float* %scevgep10, align 4
+ store float 0.000000e+00, float* %scevgep11, align 4
+ store float 0.000000e+00, float* %scevgep12, align 4
+ store float 0.000000e+00, float* %scevgep13, align 4
+ store i32 0, i32* %scevgep14, align 4
+ %scevgep.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 12 ; [#uses=1]
+ %scevgep6.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 13 ; [#uses=1]
+ %scevgep7.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 14 ; [#uses=1]
+ %scevgep8.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 15 ; [#uses=1]
+ %scevgep9.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 16 ; [#uses=1]
+ %scevgep10.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 17 ; [#uses=1]
+ %scevgep11.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 18 ; [#uses=1]
+ %scevgep12.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 19 ; [#uses=1]
+ %scevgep13.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 20 ; [#uses=1]
+ %scevgep14.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 21 ; [#uses=1]
+ store i8* null, i8** %scevgep.1, align 4
+ store float 0.000000e+00, float* %scevgep6.1, align 4
+ store i8 0, i8* %scevgep7.1, align 4
+ store float 0.000000e+00, float* %scevgep8.1, align 4
+ store float 0.000000e+00, float* %scevgep9.1, align 4
+ store float 0.000000e+00, float* %scevgep10.1, align 4
+ store float 0.000000e+00, float* %scevgep11.1, align 4
+ store float 0.000000e+00, float* %scevgep12.1, align 4
+ store float 0.000000e+00, float* %scevgep13.1, align 4
+ store i32 0, i32* %scevgep14.1, align 4
+ %scevgep.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 12 ; [#uses=1]
+ %scevgep6.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 13 ; [#uses=1]
+ %scevgep7.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 14 ; [#uses=1]
+ %scevgep8.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 15 ; [#uses=1]
+ %scevgep9.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 16 ; [#uses=1]
+ %scevgep10.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 17 ; [#uses=1]
+ %scevgep11.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 18 ; [#uses=1]
+ %scevgep12.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 19 ; [#uses=1]
+ %scevgep13.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 20 ; [#uses=1]
+ %scevgep14.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 21 ; [#uses=1]
+ store i8* null, i8** %scevgep.2, align 4
+ store float 0.000000e+00, float* %scevgep6.2, align 4
+ store i8 0, i8* %scevgep7.2, align 4
+ store float 0.000000e+00, float* %scevgep8.2, align 4
+ store float 0.000000e+00, float* %scevgep9.2, align 4
+ store float 0.000000e+00, float* %scevgep10.2, align 4
+ store float 0.000000e+00, float* %scevgep11.2, align 4
+ store float 0.000000e+00, float* %scevgep12.2, align 4
+ store float 0.000000e+00, float* %scevgep13.2, align 4
+ store i32 0, i32* %scevgep14.2, align 4
+ %scevgep.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 12 ; [#uses=1]
+ %scevgep6.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 13 ; [#uses=1]
+ %scevgep7.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 14 ; [#uses=1]
+ %scevgep8.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 15 ; [#uses=1]
+ %scevgep9.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 16 ; [#uses=1]
+ %scevgep10.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 17 ; [#uses=1]
+ %scevgep11.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 18 ; [#uses=1]
+ %scevgep12.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 19 ; [#uses=1]
+ %scevgep13.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 20 ; [#uses=1]
+ %scevgep14.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 21 ; [#uses=1]
+ store i8* null, i8** %scevgep.3, align 4
+ store float 0.000000e+00, float* %scevgep6.3, align 4
+ store i8 0, i8* %scevgep7.3, align 4
+ store float 0.000000e+00, float* %scevgep8.3, align 4
+ store float 0.000000e+00, float* %scevgep9.3, align 4
+ store float 0.000000e+00, float* %scevgep10.3, align 4
+ store float 0.000000e+00, float* %scevgep11.3, align 4
+ store float 0.000000e+00, float* %scevgep12.3, align 4
+ store float 0.000000e+00, float* %scevgep13.3, align 4
+ store i32 0, i32* %scevgep14.3, align 4
+ %1 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 2 ; [#uses=1]
+ store i8* null, i8** %1, align 4
+ %2 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 3 ; [#uses=1]
+ store i8* null, i8** %2, align 4
+ %3 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 9 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN20btPersistentManifoldC1Ev(%struct.btPersistentManifold* nocapture %this) nounwind align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 1, i32* %0, align 4
+ %scevgep = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 12 ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 13 ; [#uses=1]
+ %scevgep7 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 14 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 15 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 16 ; [#uses=1]
+ %scevgep10 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 17 ; [#uses=1]
+ %scevgep11 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 18 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 19 ; [#uses=1]
+ %scevgep13 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 20 ; [#uses=1]
+ %scevgep14 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 21 ; [#uses=1]
+ store i8* null, i8** %scevgep, align 4
+ store float 0.000000e+00, float* %scevgep6, align 4
+ store i8 0, i8* %scevgep7, align 4
+ store float 0.000000e+00, float* %scevgep8, align 4
+ store float 0.000000e+00, float* %scevgep9, align 4
+ store float 0.000000e+00, float* %scevgep10, align 4
+ store float 0.000000e+00, float* %scevgep11, align 4
+ store float 0.000000e+00, float* %scevgep12, align 4
+ store float 0.000000e+00, float* %scevgep13, align 4
+ store i32 0, i32* %scevgep14, align 4
+ %scevgep.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 12 ; [#uses=1]
+ %scevgep6.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 13 ; [#uses=1]
+ %scevgep7.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 14 ; [#uses=1]
+ %scevgep8.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 15 ; [#uses=1]
+ %scevgep9.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 16 ; [#uses=1]
+ %scevgep10.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 17 ; [#uses=1]
+ %scevgep11.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 18 ; [#uses=1]
+ %scevgep12.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 19 ; [#uses=1]
+ %scevgep13.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 20 ; [#uses=1]
+ %scevgep14.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 21 ; [#uses=1]
+ store i8* null, i8** %scevgep.1, align 4
+ store float 0.000000e+00, float* %scevgep6.1, align 4
+ store i8 0, i8* %scevgep7.1, align 4
+ store float 0.000000e+00, float* %scevgep8.1, align 4
+ store float 0.000000e+00, float* %scevgep9.1, align 4
+ store float 0.000000e+00, float* %scevgep10.1, align 4
+ store float 0.000000e+00, float* %scevgep11.1, align 4
+ store float 0.000000e+00, float* %scevgep12.1, align 4
+ store float 0.000000e+00, float* %scevgep13.1, align 4
+ store i32 0, i32* %scevgep14.1, align 4
+ %scevgep.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 12 ; [#uses=1]
+ %scevgep6.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 13 ; [#uses=1]
+ %scevgep7.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 14 ; [#uses=1]
+ %scevgep8.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 15 ; [#uses=1]
+ %scevgep9.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 16 ; [#uses=1]
+ %scevgep10.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 17 ; [#uses=1]
+ %scevgep11.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 18 ; [#uses=1]
+ %scevgep12.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 19 ; [#uses=1]
+ %scevgep13.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 20 ; [#uses=1]
+ %scevgep14.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 21 ; [#uses=1]
+ store i8* null, i8** %scevgep.2, align 4
+ store float 0.000000e+00, float* %scevgep6.2, align 4
+ store i8 0, i8* %scevgep7.2, align 4
+ store float 0.000000e+00, float* %scevgep8.2, align 4
+ store float 0.000000e+00, float* %scevgep9.2, align 4
+ store float 0.000000e+00, float* %scevgep10.2, align 4
+ store float 0.000000e+00, float* %scevgep11.2, align 4
+ store float 0.000000e+00, float* %scevgep12.2, align 4
+ store float 0.000000e+00, float* %scevgep13.2, align 4
+ store i32 0, i32* %scevgep14.2, align 4
+ %scevgep.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 12 ; [#uses=1]
+ %scevgep6.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 13 ; [#uses=1]
+ %scevgep7.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 14 ; [#uses=1]
+ %scevgep8.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 15 ; [#uses=1]
+ %scevgep9.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 16 ; [#uses=1]
+ %scevgep10.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 17 ; [#uses=1]
+ %scevgep11.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 18 ; [#uses=1]
+ %scevgep12.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 19 ; [#uses=1]
+ %scevgep13.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 20 ; [#uses=1]
+ %scevgep14.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 21 ; [#uses=1]
+ store i8* null, i8** %scevgep.3, align 4
+ store float 0.000000e+00, float* %scevgep6.3, align 4
+ store i8 0, i8* %scevgep7.3, align 4
+ store float 0.000000e+00, float* %scevgep8.3, align 4
+ store float 0.000000e+00, float* %scevgep9.3, align 4
+ store float 0.000000e+00, float* %scevgep10.3, align 4
+ store float 0.000000e+00, float* %scevgep11.3, align 4
+ store float 0.000000e+00, float* %scevgep12.3, align 4
+ store float 0.000000e+00, float* %scevgep13.3, align 4
+ store i32 0, i32* %scevgep14.3, align 4
+ %1 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 2 ; [#uses=1]
+ store i8* null, i8** %1, align 4
+ %2 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 3 ; [#uses=1]
+ store i8* null, i8** %2, align 4
+ %3 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 9 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint(%struct.btPersistentManifold* nocapture %this, %struct.btManifoldPoint* nocapture %pt) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btManifoldPoint* %pt, i32 0, i32 12 ; [#uses=2]
+ %1 = load i8** %0, align 4 ; [#uses=2]
+ %2 = icmp eq i8* %1, null ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = load i8 (i8*)** @gContactDestroyedCallback, align 4 ; [#uses=2]
+ %4 = icmp ne i8 (i8*)* %3, null ; [#uses=1]
+ br i1 %4, label %bb2, label %return
+
+bb2: ; preds = %bb
+ %5 = tail call zeroext i8 %3(i8* %1) ; [#uses=0]
+ store i8* null, i8** %0, align 4
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZN20btPersistentManifold16sortCachedPointsERK15btManifoldPoint(%struct.btPersistentManifold* nocapture %this, %struct.btManifoldPoint* nocapture %pt) nounwind readonly align 2 {
+bb.nph:
+ %0 = getelementptr inbounds %struct.btManifoldPoint* %pt, i32 0, i32 5 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %scevgep = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 5 ; [#uses=1]
+ %2 = load float* %scevgep, align 4 ; [#uses=2]
+ %3 = fcmp olt float %2, %1 ; [#uses=2]
+ %maxPenetrationIndex.0 = select i1 %3, i32 0, i32 -1 ; [#uses=1]
+ %maxPenetration.0 = select i1 %3, float %2, float %1 ; [#uses=2]
+ %scevgep.1 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 5 ; [#uses=1]
+ %4 = load float* %scevgep.1, align 4 ; [#uses=2]
+ %5 = fcmp olt float %4, %maxPenetration.0 ; [#uses=2]
+ %maxPenetrationIndex.0.1 = select i1 %5, i32 1, i32 %maxPenetrationIndex.0 ; [#uses=1]
+ %maxPenetration.0.1 = select i1 %5, float %4, float %maxPenetration.0 ; [#uses=2]
+ %scevgep.2 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 5 ; [#uses=1]
+ %6 = load float* %scevgep.2, align 4 ; [#uses=2]
+ %7 = fcmp olt float %6, %maxPenetration.0.1 ; [#uses=2]
+ %maxPenetrationIndex.0.2 = select i1 %7, i32 2, i32 %maxPenetrationIndex.0.1 ; [#uses=2]
+ %maxPenetration.0.2 = select i1 %7, float %6, float %maxPenetration.0.1 ; [#uses=1]
+ %scevgep.3 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 5 ; [#uses=1]
+ %8 = load float* %scevgep.3, align 4 ; [#uses=1]
+ %9 = fcmp olt float %8, %maxPenetration.0.2 ; [#uses=1]
+ br i1 %9, label %bb5, label %bb4
+
+bb4: ; preds = %bb.nph
+ %cond = icmp eq i32 %maxPenetrationIndex.0.2, 0 ; [#uses=1]
+ br i1 %cond, label %bb4.bb7_crit_edge, label %bb5
+
+bb4.bb7_crit_edge: ; preds = %bb4
+ %.phi.trans.insert = getelementptr inbounds %struct.btManifoldPoint* %pt, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre = load float* %.phi.trans.insert, align 4 ; [#uses=1]
+ %.phi.trans.insert49 = getelementptr inbounds %struct.btManifoldPoint* %pt, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre50 = load float* %.phi.trans.insert49, align 4 ; [#uses=1]
+ %.phi.trans.insert51 = getelementptr inbounds %struct.btManifoldPoint* %pt, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre52 = load float* %.phi.trans.insert51, align 4 ; [#uses=1]
+ %.phi.trans.insert53 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre54 = load float* %.phi.trans.insert53, align 4 ; [#uses=1]
+ %.phi.trans.insert55 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre56 = load float* %.phi.trans.insert55, align 4 ; [#uses=1]
+ %.phi.trans.insert57 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre58 = load float* %.phi.trans.insert57, align 4 ; [#uses=1]
+ %.phi.trans.insert59 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre60 = load float* %.phi.trans.insert59, align 4 ; [#uses=1]
+ %.phi.trans.insert61 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre62 = load float* %.phi.trans.insert61, align 4 ; [#uses=1]
+ %.phi.trans.insert63 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre64 = load float* %.phi.trans.insert63, align 4 ; [#uses=1]
+ br label %bb7
+
+bb5: ; preds = %bb4, %bb.nph
+ %maxPenetrationIndex.0.3109 = phi i32 [ %maxPenetrationIndex.0.2, %bb4 ], [ 3, %bb.nph ] ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btManifoldPoint* %pt, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=3]
+ %12 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fsub float %11, %13 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btManifoldPoint* %pt, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=3]
+ %17 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ %19 = fsub float %16, %18 ; [#uses=2]
+ %20 = getelementptr inbounds %struct.btManifoldPoint* %pt, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=3]
+ %22 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=2]
+ %24 = fsub float %21, %23 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=3]
+ %27 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=3]
+ %29 = fsub float %26, %28 ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=3]
+ %32 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=3]
+ %34 = fsub float %31, %33 ; [#uses=2]
+ %35 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=3]
+ %37 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=3]
+ %39 = fsub float %36, %38 ; [#uses=2]
+ %40 = fmul float %24, %34 ; [#uses=1]
+ %41 = fmul float %19, %39 ; [#uses=1]
+ %42 = fsub float %40, %41 ; [#uses=2]
+ %43 = fmul float %14, %39 ; [#uses=1]
+ %44 = fmul float %24, %29 ; [#uses=1]
+ %45 = fsub float %43, %44 ; [#uses=2]
+ %46 = fmul float %19, %29 ; [#uses=1]
+ %47 = fmul float %14, %34 ; [#uses=1]
+ %48 = fsub float %46, %47 ; [#uses=2]
+ %49 = fmul float %48, %48 ; [#uses=1]
+ %50 = fmul float %45, %45 ; [#uses=1]
+ %51 = fadd float %49, %50 ; [#uses=1]
+ %52 = fmul float %42, %42 ; [#uses=1]
+ %53 = fadd float %51, %52 ; [#uses=2]
+ %cond17 = icmp eq i32 %maxPenetrationIndex.0.3109, 1 ; [#uses=1]
+ br i1 %cond17, label %bb5.bb10_crit_edge, label %bb7
+
+bb5.bb10_crit_edge: ; preds = %bb5
+ %.phi.trans.insert71 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre72 = load float* %.phi.trans.insert71, align 4 ; [#uses=1]
+ %.phi.trans.insert73 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre74 = load float* %.phi.trans.insert73, align 4 ; [#uses=1]
+ %.phi.trans.insert75 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre76 = load float* %.phi.trans.insert75, align 4 ; [#uses=1]
+ br label %bb10
+
+bb7: ; preds = %bb5, %bb4.bb7_crit_edge
+ %maxPenetrationIndex.0.3108 = phi i32 [ 0, %bb4.bb7_crit_edge ], [ %maxPenetrationIndex.0.3109, %bb5 ] ; [#uses=2]
+ %54 = phi float [ %.pre64, %bb4.bb7_crit_edge ], [ %38, %bb5 ] ; [#uses=3]
+ %55 = phi float [ %.pre62, %bb4.bb7_crit_edge ], [ %36, %bb5 ] ; [#uses=2]
+ %56 = phi float [ %.pre60, %bb4.bb7_crit_edge ], [ %33, %bb5 ] ; [#uses=3]
+ %57 = phi float [ %.pre58, %bb4.bb7_crit_edge ], [ %31, %bb5 ] ; [#uses=2]
+ %58 = phi float [ %.pre56, %bb4.bb7_crit_edge ], [ %28, %bb5 ] ; [#uses=3]
+ %59 = phi float [ %.pre54, %bb4.bb7_crit_edge ], [ %26, %bb5 ] ; [#uses=2]
+ %60 = phi float [ %.pre52, %bb4.bb7_crit_edge ], [ %21, %bb5 ] ; [#uses=3]
+ %61 = phi float [ %.pre50, %bb4.bb7_crit_edge ], [ %16, %bb5 ] ; [#uses=3]
+ %62 = phi float [ %.pre, %bb4.bb7_crit_edge ], [ %11, %bb5 ] ; [#uses=3]
+ %res0.0 = phi float [ 0.000000e+00, %bb4.bb7_crit_edge ], [ %53, %bb5 ] ; [#uses=2]
+ %63 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=3]
+ %65 = fsub float %62, %64 ; [#uses=2]
+ %66 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=3]
+ %68 = fsub float %61, %67 ; [#uses=2]
+ %69 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=3]
+ %71 = fsub float %60, %70 ; [#uses=2]
+ %72 = fsub float %59, %58 ; [#uses=2]
+ %73 = fsub float %57, %56 ; [#uses=2]
+ %74 = fsub float %55, %54 ; [#uses=2]
+ %75 = fmul float %71, %73 ; [#uses=1]
+ %76 = fmul float %68, %74 ; [#uses=1]
+ %77 = fsub float %75, %76 ; [#uses=2]
+ %78 = fmul float %65, %74 ; [#uses=1]
+ %79 = fmul float %71, %72 ; [#uses=1]
+ %80 = fsub float %78, %79 ; [#uses=2]
+ %81 = fmul float %68, %72 ; [#uses=1]
+ %82 = fmul float %65, %73 ; [#uses=1]
+ %83 = fsub float %81, %82 ; [#uses=2]
+ %84 = fmul float %83, %83 ; [#uses=1]
+ %85 = fmul float %80, %80 ; [#uses=1]
+ %86 = fadd float %84, %85 ; [#uses=1]
+ %87 = fmul float %77, %77 ; [#uses=1]
+ %88 = fadd float %86, %87 ; [#uses=2]
+ %cond18 = icmp eq i32 %maxPenetrationIndex.0.3108, 2 ; [#uses=1]
+ %.phi.trans.insert65 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre66 = load float* %.phi.trans.insert65, align 4 ; [#uses=2]
+ %.phi.trans.insert67 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre68 = load float* %.phi.trans.insert67, align 4 ; [#uses=2]
+ %.phi.trans.insert69 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre70 = load float* %.phi.trans.insert69, align 4 ; [#uses=2]
+ br i1 %cond18, label %bb13, label %bb10
+
+bb10: ; preds = %bb7, %bb5.bb10_crit_edge
+ %maxPenetrationIndex.0.3107 = phi i32 [ 1, %bb5.bb10_crit_edge ], [ %maxPenetrationIndex.0.3108, %bb7 ] ; [#uses=1]
+ %89 = phi float [ %23, %bb5.bb10_crit_edge ], [ %.pre70, %bb7 ] ; [#uses=2]
+ %90 = phi float [ %18, %bb5.bb10_crit_edge ], [ %.pre68, %bb7 ] ; [#uses=2]
+ %91 = phi float [ %13, %bb5.bb10_crit_edge ], [ %.pre66, %bb7 ] ; [#uses=2]
+ %92 = phi float [ %.pre76, %bb5.bb10_crit_edge ], [ %70, %bb7 ] ; [#uses=2]
+ %93 = phi float [ %.pre74, %bb5.bb10_crit_edge ], [ %67, %bb7 ] ; [#uses=2]
+ %94 = phi float [ %.pre72, %bb5.bb10_crit_edge ], [ %64, %bb7 ] ; [#uses=2]
+ %95 = phi float [ %36, %bb5.bb10_crit_edge ], [ %55, %bb7 ] ; [#uses=1]
+ %96 = phi float [ %31, %bb5.bb10_crit_edge ], [ %57, %bb7 ] ; [#uses=1]
+ %97 = phi float [ %26, %bb5.bb10_crit_edge ], [ %59, %bb7 ] ; [#uses=1]
+ %98 = phi float [ %21, %bb5.bb10_crit_edge ], [ %60, %bb7 ] ; [#uses=2]
+ %99 = phi float [ %16, %bb5.bb10_crit_edge ], [ %61, %bb7 ] ; [#uses=2]
+ %100 = phi float [ %11, %bb5.bb10_crit_edge ], [ %62, %bb7 ] ; [#uses=2]
+ %101 = phi float [ %38, %bb5.bb10_crit_edge ], [ %54, %bb7 ] ; [#uses=1]
+ %102 = phi float [ %33, %bb5.bb10_crit_edge ], [ %56, %bb7 ] ; [#uses=1]
+ %103 = phi float [ %28, %bb5.bb10_crit_edge ], [ %58, %bb7 ] ; [#uses=1]
+ %res1.0 = phi float [ 0.000000e+00, %bb5.bb10_crit_edge ], [ %88, %bb7 ] ; [#uses=2]
+ %res0.1 = phi float [ %53, %bb5.bb10_crit_edge ], [ %res0.0, %bb7 ] ; [#uses=2]
+ %104 = fsub float %100, %94 ; [#uses=2]
+ %105 = fsub float %99, %93 ; [#uses=2]
+ %106 = fsub float %98, %92 ; [#uses=2]
+ %107 = fsub float %97, %91 ; [#uses=2]
+ %108 = fsub float %96, %90 ; [#uses=2]
+ %109 = fsub float %95, %89 ; [#uses=2]
+ %110 = fmul float %106, %108 ; [#uses=1]
+ %111 = fmul float %105, %109 ; [#uses=1]
+ %112 = fsub float %110, %111 ; [#uses=2]
+ %113 = fmul float %104, %109 ; [#uses=1]
+ %114 = fmul float %106, %107 ; [#uses=1]
+ %115 = fsub float %113, %114 ; [#uses=2]
+ %116 = fmul float %105, %107 ; [#uses=1]
+ %117 = fmul float %104, %108 ; [#uses=1]
+ %118 = fsub float %116, %117 ; [#uses=2]
+ %119 = fmul float %118, %118 ; [#uses=1]
+ %120 = fmul float %115, %115 ; [#uses=1]
+ %121 = fadd float %119, %120 ; [#uses=1]
+ %122 = fmul float %112, %112 ; [#uses=1]
+ %123 = fadd float %121, %122 ; [#uses=2]
+ %124 = icmp eq i32 %maxPenetrationIndex.0.3107, 3 ; [#uses=1]
+ br i1 %124, label %bb15, label %bb13
+
+bb13: ; preds = %bb10, %bb7
+ %125 = phi float [ %89, %bb10 ], [ %.pre70, %bb7 ] ; [#uses=1]
+ %126 = phi float [ %90, %bb10 ], [ %.pre68, %bb7 ] ; [#uses=1]
+ %127 = phi float [ %91, %bb10 ], [ %.pre66, %bb7 ] ; [#uses=1]
+ %128 = phi float [ %101, %bb10 ], [ %54, %bb7 ] ; [#uses=1]
+ %129 = phi float [ %102, %bb10 ], [ %56, %bb7 ] ; [#uses=1]
+ %130 = phi float [ %103, %bb10 ], [ %58, %bb7 ] ; [#uses=1]
+ %131 = phi float [ %92, %bb10 ], [ %70, %bb7 ] ; [#uses=1]
+ %132 = phi float [ %98, %bb10 ], [ %60, %bb7 ] ; [#uses=1]
+ %133 = phi float [ %93, %bb10 ], [ %67, %bb7 ] ; [#uses=1]
+ %134 = phi float [ %99, %bb10 ], [ %61, %bb7 ] ; [#uses=1]
+ %135 = phi float [ %94, %bb10 ], [ %64, %bb7 ] ; [#uses=1]
+ %136 = phi float [ %100, %bb10 ], [ %62, %bb7 ] ; [#uses=1]
+ %res2.0 = phi float [ %123, %bb10 ], [ 0.000000e+00, %bb7 ] ; [#uses=1]
+ %res1.1 = phi float [ %res1.0, %bb10 ], [ %88, %bb7 ] ; [#uses=1]
+ %res0.2 = phi float [ %res0.1, %bb10 ], [ %res0.0, %bb7 ] ; [#uses=1]
+ %137 = fsub float %136, %135 ; [#uses=2]
+ %138 = fsub float %134, %133 ; [#uses=2]
+ %139 = fsub float %132, %131 ; [#uses=2]
+ %140 = fsub float %130, %127 ; [#uses=2]
+ %141 = fsub float %129, %126 ; [#uses=2]
+ %142 = fsub float %128, %125 ; [#uses=2]
+ %143 = fmul float %139, %141 ; [#uses=1]
+ %144 = fmul float %138, %142 ; [#uses=1]
+ %145 = fsub float %143, %144 ; [#uses=2]
+ %146 = fmul float %137, %142 ; [#uses=1]
+ %147 = fmul float %139, %140 ; [#uses=1]
+ %148 = fsub float %146, %147 ; [#uses=2]
+ %149 = fmul float %138, %140 ; [#uses=1]
+ %150 = fmul float %137, %141 ; [#uses=1]
+ %151 = fsub float %149, %150 ; [#uses=2]
+ %152 = fmul float %151, %151 ; [#uses=1]
+ %153 = fmul float %148, %148 ; [#uses=1]
+ %154 = fadd float %152, %153 ; [#uses=1]
+ %155 = fmul float %145, %145 ; [#uses=1]
+ %156 = fadd float %154, %155 ; [#uses=1]
+ br label %bb15
+
+bb15: ; preds = %bb13, %bb10
+ %res3.0 = phi float [ %156, %bb13 ], [ 0.000000e+00, %bb10 ] ; [#uses=1]
+ %res2.1 = phi float [ %res2.0, %bb13 ], [ %123, %bb10 ] ; [#uses=1]
+ %res1.2 = phi float [ %res1.1, %bb13 ], [ %res1.0, %bb10 ] ; [#uses=1]
+ %res0.3 = phi float [ %res0.2, %bb13 ], [ %res0.1, %bb10 ] ; [#uses=1]
+ %157 = tail call float @fabsf(float %res3.0) nounwind readnone ; [#uses=1]
+ %158 = tail call float @fabsf(float %res2.1) nounwind readnone ; [#uses=2]
+ %159 = tail call float @fabsf(float %res1.2) nounwind readnone ; [#uses=2]
+ %160 = tail call float @fabsf(float %res0.3) nounwind readnone ; [#uses=2]
+ %161 = fcmp ogt float %160, 0xC3ABC16D60000000 ; [#uses=2]
+ %not..i = xor i1 %161, true ; [#uses=1]
+ %maxIndex.0.i.i = sext i1 %not..i to i32 ; [#uses=1]
+ %maxVal.0.i.i = select i1 %161, float %160, float 0xC3ABC16D60000000 ; [#uses=2]
+ %162 = fcmp ogt float %159, %maxVal.0.i.i ; [#uses=2]
+ %maxIndex.1.i.i = select i1 %162, i32 1, i32 %maxIndex.0.i.i ; [#uses=1]
+ %maxVal.1.i.i = select i1 %162, float %159, float %maxVal.0.i.i ; [#uses=2]
+ %163 = fcmp ogt float %158, %maxVal.1.i.i ; [#uses=2]
+ %maxIndex.2.i.i = select i1 %163, i32 2, i32 %maxIndex.1.i.i ; [#uses=1]
+ %maxVal.2.i.i = select i1 %163, float %158, float %maxVal.1.i.i ; [#uses=1]
+ %164 = fcmp ogt float %157, %maxVal.2.i.i ; [#uses=1]
+ %maxIndex.3.i.i = select i1 %164, i32 3, i32 %maxIndex.2.i.i ; [#uses=1]
+ ret i32 %maxIndex.3.i.i
+}
+
+; [#uses=1]
+define i32 @_ZN20btPersistentManifold16addManifoldPointERK15btManifoldPoint(%struct.btPersistentManifold* nocapture %this, %struct.btManifoldPoint* nocapture %newPoint) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 4 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=3]
+ %2 = icmp eq i32 %1, 4 ; [#uses=1]
+ br i1 %2, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %3 = tail call i32 @_ZN20btPersistentManifold16sortCachedPointsERK15btManifoldPoint(%struct.btPersistentManifold* %this, %struct.btManifoldPoint* %newPoint) nounwind ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %3, i32 12 ; [#uses=2]
+ %5 = load i8** %4, align 4 ; [#uses=2]
+ %6 = icmp eq i8* %5, null ; [#uses=1]
+ br i1 %6, label %bb2, label %bb.i
+
+bb.i: ; preds = %bb
+ %7 = load i8 (i8*)** @gContactDestroyedCallback, align 4 ; [#uses=2]
+ %8 = icmp eq i8 (i8*)* %7, null ; [#uses=1]
+ br i1 %8, label %bb2, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %9 = tail call zeroext i8 %7(i8* %5) ; [#uses=0]
+ store i8* null, i8** %4, align 4
+ br label %bb2
+
+bb1: ; preds = %entry
+ %10 = add nsw i32 %1, 1 ; [#uses=1]
+ store i32 %10, i32* %0, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb2.i, %bb.i, %bb
+ %insertIndex.0 = phi i32 [ %1, %bb1 ], [ %3, %bb ], [ %3, %bb.i ], [ %3, %bb2.i ] ; [#uses=2]
+ %11 = icmp slt i32 %insertIndex.0, 0 ; [#uses=1]
+ %insertIndex.1 = select i1 %11, i32 0, i32 %insertIndex.0 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %insertIndex.1 ; [#uses=1]
+ %13 = bitcast %struct.btManifoldPoint* %12 to i8* ; [#uses=1]
+ %14 = bitcast %struct.btManifoldPoint* %newPoint to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %13, i8* %14, i32 276, i32 4, i1 false)
+ ret i32 %insertIndex.1
+}
+
+; [#uses=6]
+define float @_ZNK20btPersistentManifold27getContactBreakingThresholdEv(%struct.btPersistentManifold* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 5 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ ret float %1
+}
+
+; [#uses=1]
+define i32 @_ZNK20btPersistentManifold13getCacheEntryERK15btManifoldPoint(%struct.btPersistentManifold* nocapture %this, %struct.btManifoldPoint* nocapture %newPoint) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 5 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 4 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp sgt i32 %3, 0 ; [#uses=1]
+ br i1 %4, label %bb.nph, label %bb4
+
+bb.nph: ; preds = %entry
+ %5 = fmul float %1, %1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btManifoldPoint* %newPoint, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btManifoldPoint* %newPoint, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btManifoldPoint* %newPoint, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %12 = phi i32 [ 0, %bb.nph ], [ %25, %bb ] ; [#uses=5]
+ %nearestPoint.110 = phi i32 [ -1, %bb.nph ], [ %nearestPoint.0, %bb ] ; [#uses=1]
+ %shortestDist.19 = phi float [ %5, %bb.nph ], [ %shortestDist.0, %bb ] ; [#uses=2]
+ %scevgep = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %12, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %12, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep1314 = getelementptr %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %12, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %scevgep, align 4 ; [#uses=1]
+ %14 = fsub float %13, %7 ; [#uses=2]
+ %15 = load float* %scevgep12, align 4 ; [#uses=1]
+ %16 = fsub float %15, %9 ; [#uses=2]
+ %17 = load float* %scevgep1314, align 4 ; [#uses=1]
+ %18 = fsub float %17, %11 ; [#uses=2]
+ %19 = fmul float %18, %18 ; [#uses=1]
+ %20 = fmul float %16, %16 ; [#uses=1]
+ %21 = fadd float %19, %20 ; [#uses=1]
+ %22 = fmul float %14, %14 ; [#uses=1]
+ %23 = fadd float %21, %22 ; [#uses=2]
+ %24 = fcmp olt float %23, %shortestDist.19 ; [#uses=2]
+ %nearestPoint.0 = select i1 %24, i32 %12, i32 %nearestPoint.110 ; [#uses=2]
+ %25 = add nsw i32 %12, 1 ; [#uses=2]
+ %shortestDist.0 = select i1 %24, float %23, float %shortestDist.19 ; [#uses=1]
+ %exitcond = icmp eq i32 %25, %3 ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb
+
+bb4: ; preds = %bb, %entry
+ %nearestPoint.1.lcssa = phi i32 [ -1, %entry ], [ %nearestPoint.0, %bb ] ; [#uses=1]
+ ret i32 %nearestPoint.1.lcssa
+}
+
+; [#uses=24]
+define void @_ZN20btPersistentManifold20refreshContactPointsERK11btTransformS2_(%struct.btPersistentManifold* %this, %struct.btTransform* nocapture %trA, %struct.btTransform* nocapture %trB) align 2 {
+entry:
+ %this52 = bitcast %struct.btPersistentManifold* %this to i8* ; [#uses=31]
+ %0 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 4 ; [#uses=8]
+ %1 = load i32* %0, align 4 ; [#uses=4]
+ %i.049 = add i32 %1, -1 ; [#uses=1]
+ %2 = icmp sgt i32 %i.049, -1 ; [#uses=1]
+ br i1 %2, label %bb.nph51, label %bb3
+
+bb.nph51: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btTransform* %trA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTransform* %trA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %trA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %trA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %trA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTransform* %trA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %trA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btTransform* %trA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %trA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %trA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btTransform* %trA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %trA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %trB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btTransform* %trB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %trB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTransform* %trB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %trB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %trB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btTransform* %trB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTransform* %trB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %trB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %trB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btTransform* %trB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btTransform* %trB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %tmp108 = mul i32 %1, 276 ; [#uses=19]
+ %tmp109 = add i32 %tmp108, -128 ; [#uses=1]
+ %tmp113 = add i32 %tmp108, -192 ; [#uses=1]
+ %tmp117 = add i32 %tmp108, -228 ; [#uses=1]
+ %tmp121 = add i32 %tmp108, -232 ; [#uses=1]
+ %tmp125 = add i32 %tmp108, -236 ; [#uses=1]
+ %tmp129 = add i32 %tmp108, -240 ; [#uses=1]
+ %tmp133 = add i32 %tmp108, -212 ; [#uses=1]
+ %tmp137 = add i32 %tmp108, -216 ; [#uses=1]
+ %tmp141 = add i32 %tmp108, -220 ; [#uses=1]
+ %tmp145 = add i32 %tmp108, -224 ; [#uses=1]
+ %tmp149 = add i32 %tmp108, -272 ; [#uses=1]
+ %tmp153 = add i32 %tmp108, -268 ; [#uses=1]
+ %tmp157 = add i32 %tmp108, -264 ; [#uses=1]
+ %tmp161 = add i32 %tmp108, -256 ; [#uses=1]
+ %tmp165 = add i32 %tmp108, -252 ; [#uses=1]
+ %tmp169 = add i32 %tmp108, -248 ; [#uses=1]
+ %tmp173 = add i32 %tmp108, -208 ; [#uses=1]
+ %tmp177 = add i32 %tmp108, -204 ; [#uses=1]
+ %tmp181 = add i32 %tmp108, -200 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph51
+ %indvar104 = phi i32 [ 0, %bb.nph51 ], [ %indvar.next105, %bb ] ; [#uses=2]
+ %tmp107 = mul i32 %indvar104, -276 ; [#uses=19]
+ %tmp110 = add i32 %tmp109, %tmp107 ; [#uses=1]
+ %uglygep111 = getelementptr i8* %this52, i32 %tmp110 ; [#uses=1]
+ %uglygep111112 = bitcast i8* %uglygep111 to i32* ; [#uses=2]
+ %tmp114 = add i32 %tmp113, %tmp107 ; [#uses=1]
+ %uglygep115 = getelementptr i8* %this52, i32 %tmp114 ; [#uses=1]
+ %uglygep115116 = bitcast i8* %uglygep115 to float* ; [#uses=1]
+ %tmp118 = add i32 %tmp117, %tmp107 ; [#uses=1]
+ %uglygep119 = getelementptr i8* %this52, i32 %tmp118 ; [#uses=1]
+ %uglygep119120 = bitcast i8* %uglygep119 to float* ; [#uses=1]
+ %tmp122 = add i32 %tmp121, %tmp107 ; [#uses=1]
+ %uglygep123 = getelementptr i8* %this52, i32 %tmp122 ; [#uses=1]
+ %uglygep123124 = bitcast i8* %uglygep123 to float* ; [#uses=2]
+ %tmp126 = add i32 %tmp125, %tmp107 ; [#uses=1]
+ %uglygep127 = getelementptr i8* %this52, i32 %tmp126 ; [#uses=1]
+ %uglygep127128 = bitcast i8* %uglygep127 to float* ; [#uses=2]
+ %tmp130 = add i32 %tmp129, %tmp107 ; [#uses=1]
+ %uglygep131 = getelementptr i8* %this52, i32 %tmp130 ; [#uses=1]
+ %uglygep131132 = bitcast i8* %uglygep131 to float* ; [#uses=2]
+ %tmp134 = add i32 %tmp133, %tmp107 ; [#uses=1]
+ %uglygep135 = getelementptr i8* %this52, i32 %tmp134 ; [#uses=1]
+ %uglygep135136 = bitcast i8* %uglygep135 to float* ; [#uses=1]
+ %tmp138 = add i32 %tmp137, %tmp107 ; [#uses=1]
+ %uglygep139 = getelementptr i8* %this52, i32 %tmp138 ; [#uses=1]
+ %uglygep139140 = bitcast i8* %uglygep139 to float* ; [#uses=2]
+ %tmp142 = add i32 %tmp141, %tmp107 ; [#uses=1]
+ %uglygep143 = getelementptr i8* %this52, i32 %tmp142 ; [#uses=1]
+ %uglygep143144 = bitcast i8* %uglygep143 to float* ; [#uses=2]
+ %tmp146 = add i32 %tmp145, %tmp107 ; [#uses=1]
+ %uglygep147 = getelementptr i8* %this52, i32 %tmp146 ; [#uses=1]
+ %uglygep147148 = bitcast i8* %uglygep147 to float* ; [#uses=2]
+ %tmp150 = add i32 %tmp149, %tmp107 ; [#uses=1]
+ %uglygep151 = getelementptr i8* %this52, i32 %tmp150 ; [#uses=1]
+ %uglygep151152 = bitcast i8* %uglygep151 to float* ; [#uses=1]
+ %tmp154 = add i32 %tmp153, %tmp107 ; [#uses=1]
+ %uglygep155 = getelementptr i8* %this52, i32 %tmp154 ; [#uses=1]
+ %uglygep155156 = bitcast i8* %uglygep155 to float* ; [#uses=1]
+ %tmp158 = add i32 %tmp157, %tmp107 ; [#uses=1]
+ %uglygep159 = getelementptr i8* %this52, i32 %tmp158 ; [#uses=1]
+ %uglygep159160 = bitcast i8* %uglygep159 to float* ; [#uses=1]
+ %tmp162 = add i32 %tmp161, %tmp107 ; [#uses=1]
+ %uglygep163 = getelementptr i8* %this52, i32 %tmp162 ; [#uses=1]
+ %uglygep163164 = bitcast i8* %uglygep163 to float* ; [#uses=1]
+ %tmp166 = add i32 %tmp165, %tmp107 ; [#uses=1]
+ %uglygep167 = getelementptr i8* %this52, i32 %tmp166 ; [#uses=1]
+ %uglygep167168 = bitcast i8* %uglygep167 to float* ; [#uses=1]
+ %tmp170 = add i32 %tmp169, %tmp107 ; [#uses=1]
+ %uglygep171 = getelementptr i8* %this52, i32 %tmp170 ; [#uses=1]
+ %uglygep171172 = bitcast i8* %uglygep171 to float* ; [#uses=1]
+ %tmp174 = add i32 %tmp173, %tmp107 ; [#uses=1]
+ %uglygep175 = getelementptr i8* %this52, i32 %tmp174 ; [#uses=1]
+ %uglygep175176 = bitcast i8* %uglygep175 to float* ; [#uses=1]
+ %tmp178 = add i32 %tmp177, %tmp107 ; [#uses=1]
+ %uglygep179 = getelementptr i8* %this52, i32 %tmp178 ; [#uses=1]
+ %uglygep179180 = bitcast i8* %uglygep179 to float* ; [#uses=1]
+ %tmp182 = add i32 %tmp181, %tmp107 ; [#uses=1]
+ %uglygep183 = getelementptr i8* %this52, i32 %tmp182 ; [#uses=1]
+ %uglygep183184 = bitcast i8* %uglygep183 to float* ; [#uses=1]
+ %27 = load float* %3, align 4 ; [#uses=1]
+ %28 = load float* %uglygep151152, align 4 ; [#uses=3]
+ %29 = fmul float %27, %28 ; [#uses=1]
+ %30 = load float* %4, align 4 ; [#uses=1]
+ %31 = load float* %uglygep155156, align 4 ; [#uses=3]
+ %32 = fmul float %30, %31 ; [#uses=1]
+ %33 = fadd float %29, %32 ; [#uses=1]
+ %34 = load float* %5, align 4 ; [#uses=1]
+ %35 = load float* %uglygep159160, align 4 ; [#uses=3]
+ %36 = fmul float %34, %35 ; [#uses=1]
+ %37 = fadd float %33, %36 ; [#uses=1]
+ %38 = load float* %6, align 4 ; [#uses=1]
+ %39 = fadd float %37, %38 ; [#uses=1]
+ %40 = load float* %7, align 4 ; [#uses=1]
+ %41 = fmul float %40, %28 ; [#uses=1]
+ %42 = load float* %8, align 4 ; [#uses=1]
+ %43 = fmul float %42, %31 ; [#uses=1]
+ %44 = fadd float %41, %43 ; [#uses=1]
+ %45 = load float* %9, align 4 ; [#uses=1]
+ %46 = fmul float %45, %35 ; [#uses=1]
+ %47 = fadd float %44, %46 ; [#uses=1]
+ %48 = load float* %10, align 4 ; [#uses=1]
+ %49 = fadd float %47, %48 ; [#uses=1]
+ %50 = load float* %11, align 4 ; [#uses=1]
+ %51 = fmul float %50, %28 ; [#uses=1]
+ %52 = load float* %12, align 4 ; [#uses=1]
+ %53 = fmul float %52, %31 ; [#uses=1]
+ %54 = fadd float %51, %53 ; [#uses=1]
+ %55 = load float* %13, align 4 ; [#uses=1]
+ %56 = fmul float %55, %35 ; [#uses=1]
+ %57 = fadd float %54, %56 ; [#uses=1]
+ %58 = load float* %14, align 4 ; [#uses=1]
+ %59 = fadd float %57, %58 ; [#uses=1]
+ store float %59, float* %uglygep147148, align 4
+ store float %49, float* %uglygep143144, align 4
+ store float %39, float* %uglygep139140, align 4
+ store float 0.000000e+00, float* %uglygep135136, align 4
+ %60 = load float* %15, align 4 ; [#uses=1]
+ %61 = load float* %uglygep163164, align 4 ; [#uses=3]
+ %62 = fmul float %60, %61 ; [#uses=1]
+ %63 = load float* %16, align 4 ; [#uses=1]
+ %64 = load float* %uglygep167168, align 4 ; [#uses=3]
+ %65 = fmul float %63, %64 ; [#uses=1]
+ %66 = fadd float %62, %65 ; [#uses=1]
+ %67 = load float* %17, align 4 ; [#uses=1]
+ %68 = load float* %uglygep171172, align 4 ; [#uses=3]
+ %69 = fmul float %67, %68 ; [#uses=1]
+ %70 = fadd float %66, %69 ; [#uses=1]
+ %71 = load float* %18, align 4 ; [#uses=1]
+ %72 = fadd float %70, %71 ; [#uses=1]
+ %73 = load float* %19, align 4 ; [#uses=1]
+ %74 = fmul float %73, %61 ; [#uses=1]
+ %75 = load float* %20, align 4 ; [#uses=1]
+ %76 = fmul float %75, %64 ; [#uses=1]
+ %77 = fadd float %74, %76 ; [#uses=1]
+ %78 = load float* %21, align 4 ; [#uses=1]
+ %79 = fmul float %78, %68 ; [#uses=1]
+ %80 = fadd float %77, %79 ; [#uses=1]
+ %81 = load float* %22, align 4 ; [#uses=1]
+ %82 = fadd float %80, %81 ; [#uses=1]
+ %83 = load float* %23, align 4 ; [#uses=1]
+ %84 = fmul float %83, %61 ; [#uses=1]
+ %85 = load float* %24, align 4 ; [#uses=1]
+ %86 = fmul float %85, %64 ; [#uses=1]
+ %87 = fadd float %84, %86 ; [#uses=1]
+ %88 = load float* %25, align 4 ; [#uses=1]
+ %89 = fmul float %88, %68 ; [#uses=1]
+ %90 = fadd float %87, %89 ; [#uses=1]
+ %91 = load float* %26, align 4 ; [#uses=1]
+ %92 = fadd float %90, %91 ; [#uses=1]
+ store float %92, float* %uglygep131132, align 4
+ store float %82, float* %uglygep127128, align 4
+ store float %72, float* %uglygep123124, align 4
+ store float 0.000000e+00, float* %uglygep119120, align 4
+ %93 = load float* %uglygep139140, align 4 ; [#uses=1]
+ %94 = load float* %uglygep123124, align 4 ; [#uses=1]
+ %95 = fsub float %93, %94 ; [#uses=1]
+ %96 = load float* %uglygep143144, align 4 ; [#uses=1]
+ %97 = load float* %uglygep127128, align 4 ; [#uses=1]
+ %98 = fsub float %96, %97 ; [#uses=1]
+ %99 = load float* %uglygep147148, align 4 ; [#uses=1]
+ %100 = load float* %uglygep131132, align 4 ; [#uses=1]
+ %101 = fsub float %99, %100 ; [#uses=1]
+ %102 = load float* %uglygep175176, align 4 ; [#uses=1]
+ %103 = fmul float %101, %102 ; [#uses=1]
+ %104 = load float* %uglygep179180, align 4 ; [#uses=1]
+ %105 = fmul float %98, %104 ; [#uses=1]
+ %106 = fadd float %103, %105 ; [#uses=1]
+ %107 = load float* %uglygep183184, align 4 ; [#uses=1]
+ %108 = fmul float %95, %107 ; [#uses=1]
+ %109 = fadd float %106, %108 ; [#uses=1]
+ store float %109, float* %uglygep115116, align 4
+ %110 = load i32* %uglygep111112, align 4 ; [#uses=1]
+ %111 = add nsw i32 %110, 1 ; [#uses=1]
+ store i32 %111, i32* %uglygep111112, align 4
+ %indvar.next105 = add i32 %indvar104, 1 ; [#uses=2]
+ %exitcond106 = icmp eq i32 %indvar.next105, %1 ; [#uses=1]
+ br i1 %exitcond106, label %bb2.bb3_crit_edge, label %bb
+
+bb2.bb3_crit_edge: ; preds = %bb
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2.bb3_crit_edge, %entry
+ %112 = phi i32 [ %.pre, %bb2.bb3_crit_edge ], [ %1, %entry ] ; [#uses=3]
+ %i.147 = add i32 %112, -1 ; [#uses=2]
+ %113 = icmp sgt i32 %i.147, -1 ; [#uses=1]
+ br i1 %113, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb3
+ %114 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 5 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 3 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 2 ; [#uses=1]
+ %tmp53 = mul i32 %112, 276 ; [#uses=12]
+ %tmp54 = add i32 %tmp53, -192 ; [#uses=1]
+ %tmp57 = add i32 %tmp53, -272 ; [#uses=1]
+ %tmp61 = add i32 %tmp53, -164 ; [#uses=1]
+ %tmp68 = add i32 %tmp53, -200 ; [#uses=1]
+ %tmp72 = add i32 %tmp53, -204 ; [#uses=1]
+ %tmp76 = add i32 %tmp53, -208 ; [#uses=1]
+ %tmp80 = add i32 %tmp53, -216 ; [#uses=1]
+ %tmp84 = add i32 %tmp53, -220 ; [#uses=1]
+ %tmp88 = add i32 %tmp53, -224 ; [#uses=1]
+ %tmp92 = add i32 %tmp53, -232 ; [#uses=1]
+ %tmp96 = add i32 %tmp53, -236 ; [#uses=1]
+ %tmp100 = add i32 %tmp53, -240 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb18.backedge, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb18.backedge ] ; [#uses=3]
+ %tmp = mul i32 %indvar, -276 ; [#uses=12]
+ %tmp55 = add i32 %tmp54, %tmp ; [#uses=1]
+ %uglygep = getelementptr i8* %this52, i32 %tmp55 ; [#uses=1]
+ %uglygep56 = bitcast i8* %uglygep to float* ; [#uses=1]
+ %tmp58 = add i32 %tmp57, %tmp ; [#uses=1]
+ %uglygep59 = getelementptr i8* %this52, i32 %tmp58 ; [#uses=3]
+ %uglygep5960 = bitcast i8* %uglygep59 to %struct.btManifoldPoint* ; [#uses=1]
+ %tmp62 = add i32 %tmp61, %tmp ; [#uses=1]
+ %uglygep63 = getelementptr i8* %this52, i32 %tmp62 ; [#uses=1]
+ %uglygep6364 = bitcast i8* %uglygep63 to i8** ; [#uses=4]
+ %i.148 = sub i32 %i.147, %indvar ; [#uses=2]
+ %117 = load float* %uglygep56, align 4 ; [#uses=4]
+ %118 = load float* %114, align 4 ; [#uses=3]
+ %119 = fcmp ugt float %117, %118 ; [#uses=1]
+ br i1 %119, label %bb9, label %bb10
+
+bb9: ; preds = %bb4
+ %120 = load i8** %uglygep6364, align 4 ; [#uses=2]
+ %121 = icmp eq i8* %120, null ; [#uses=1]
+ br i1 %121, label %_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i22, label %bb.i.i20
+
+bb.i.i20: ; preds = %bb9
+ %122 = load i8 (i8*)** @gContactDestroyedCallback, align 4 ; [#uses=2]
+ %123 = icmp eq i8 (i8*)* %122, null ; [#uses=1]
+ br i1 %123, label %_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i22, label %bb2.i.i21
+
+bb2.i.i21: ; preds = %bb.i.i20
+ %124 = tail call zeroext i8 %122(i8* %120) ; [#uses=0]
+ store i8* null, i8** %uglygep6364, align 4
+ br label %_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i22
+
+_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i22: ; preds = %bb2.i.i21, %bb.i.i20, %bb9
+ %125 = load i32* %0, align 4 ; [#uses=2]
+ %126 = add nsw i32 %125, -1 ; [#uses=11]
+ %127 = icmp eq i32 %126, %i.148 ; [#uses=1]
+ br i1 %127, label %_ZN20btPersistentManifold18removeContactPointEi.exit25, label %bb.i24
+
+bb.i24: ; preds = %_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i22
+ %128 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %126 ; [#uses=1]
+ %129 = bitcast %struct.btManifoldPoint* %128 to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %uglygep59, i8* %129, i32 276, i32 4, i1 false)
+ %130 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %126, i32 12 ; [#uses=1]
+ store i8* null, i8** %130, align 4
+ %131 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %126, i32 24, i32 0, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %131, align 4
+ %132 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %126, i32 24, i32 1, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %132, align 4
+ %133 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %126, i32 24, i32 2, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %133, align 4
+ %134 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %126, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %134, align 4
+ %135 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %126, i32 14 ; [#uses=1]
+ store i8 0, i8* %135, align 4
+ %136 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %126, i32 15 ; [#uses=1]
+ store float 0.000000e+00, float* %136, align 4
+ %137 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %126, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %137, align 4
+ %138 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %126, i32 21 ; [#uses=1]
+ store i32 0, i32* %138, align 4
+ %.pre.i23 = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btPersistentManifold18removeContactPointEi.exit25
+
+_ZN20btPersistentManifold18removeContactPointEi.exit25: ; preds = %bb.i24, %_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i22
+ %139 = phi i32 [ %125, %_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i22 ], [ %.pre.i23, %bb.i24 ] ; [#uses=1]
+ %140 = add nsw i32 %139, -1 ; [#uses=1]
+ store i32 %140, i32* %0, align 4
+ br label %bb18.backedge
+
+bb10: ; preds = %bb4
+ %tmp101 = add i32 %tmp100, %tmp ; [#uses=1]
+ %tmp97 = add i32 %tmp96, %tmp ; [#uses=1]
+ %tmp93 = add i32 %tmp92, %tmp ; [#uses=1]
+ %tmp89 = add i32 %tmp88, %tmp ; [#uses=1]
+ %tmp85 = add i32 %tmp84, %tmp ; [#uses=1]
+ %tmp81 = add i32 %tmp80, %tmp ; [#uses=1]
+ %tmp77 = add i32 %tmp76, %tmp ; [#uses=1]
+ %tmp73 = add i32 %tmp72, %tmp ; [#uses=1]
+ %tmp69 = add i32 %tmp68, %tmp ; [#uses=1]
+ %uglygep102 = getelementptr i8* %this52, i32 %tmp101 ; [#uses=1]
+ %uglygep98 = getelementptr i8* %this52, i32 %tmp97 ; [#uses=1]
+ %uglygep94 = getelementptr i8* %this52, i32 %tmp93 ; [#uses=1]
+ %uglygep90 = getelementptr i8* %this52, i32 %tmp89 ; [#uses=1]
+ %uglygep86 = getelementptr i8* %this52, i32 %tmp85 ; [#uses=1]
+ %uglygep82 = getelementptr i8* %this52, i32 %tmp81 ; [#uses=1]
+ %uglygep78 = getelementptr i8* %this52, i32 %tmp77 ; [#uses=1]
+ %uglygep74 = getelementptr i8* %this52, i32 %tmp73 ; [#uses=1]
+ %uglygep70 = getelementptr i8* %this52, i32 %tmp69 ; [#uses=1]
+ %uglygep102103 = bitcast i8* %uglygep102 to float* ; [#uses=1]
+ %uglygep9899 = bitcast i8* %uglygep98 to float* ; [#uses=1]
+ %uglygep9495 = bitcast i8* %uglygep94 to float* ; [#uses=1]
+ %uglygep9091 = bitcast i8* %uglygep90 to float* ; [#uses=1]
+ %uglygep8687 = bitcast i8* %uglygep86 to float* ; [#uses=1]
+ %uglygep8283 = bitcast i8* %uglygep82 to float* ; [#uses=1]
+ %uglygep7879 = bitcast i8* %uglygep78 to float* ; [#uses=1]
+ %uglygep7475 = bitcast i8* %uglygep74 to float* ; [#uses=1]
+ %uglygep7071 = bitcast i8* %uglygep70 to float* ; [#uses=1]
+ %141 = load float* %uglygep7071, align 4 ; [#uses=1]
+ %142 = fmul float %141, %117 ; [#uses=1]
+ %143 = load float* %uglygep7475, align 4 ; [#uses=1]
+ %144 = fmul float %143, %117 ; [#uses=1]
+ %145 = load float* %uglygep7879, align 4 ; [#uses=1]
+ %146 = fmul float %145, %117 ; [#uses=1]
+ %147 = load float* %uglygep8283, align 4 ; [#uses=1]
+ %148 = fsub float %147, %142 ; [#uses=1]
+ %149 = load float* %uglygep8687, align 4 ; [#uses=1]
+ %150 = fsub float %149, %144 ; [#uses=1]
+ %151 = load float* %uglygep9091, align 4 ; [#uses=1]
+ %152 = fsub float %151, %146 ; [#uses=1]
+ %153 = load float* %uglygep9495, align 4 ; [#uses=1]
+ %154 = fsub float %153, %148 ; [#uses=2]
+ %155 = load float* %uglygep9899, align 4 ; [#uses=1]
+ %156 = fsub float %155, %150 ; [#uses=2]
+ %157 = load float* %uglygep102103, align 4 ; [#uses=1]
+ %158 = fsub float %157, %152 ; [#uses=2]
+ %159 = fmul float %158, %158 ; [#uses=1]
+ %160 = fmul float %156, %156 ; [#uses=1]
+ %161 = fadd float %159, %160 ; [#uses=1]
+ %162 = fmul float %154, %154 ; [#uses=1]
+ %163 = fadd float %161, %162 ; [#uses=1]
+ %164 = fmul float %118, %118 ; [#uses=1]
+ %165 = fcmp olt float %164, %163 ; [#uses=1]
+ br i1 %165, label %bb14, label %bb15
+
+bb14: ; preds = %bb10
+ %166 = load i8** %uglygep6364, align 4 ; [#uses=2]
+ %167 = icmp eq i8* %166, null ; [#uses=1]
+ br i1 %167, label %_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %bb14
+ %168 = load i8 (i8*)** @gContactDestroyedCallback, align 4 ; [#uses=2]
+ %169 = icmp eq i8 (i8*)* %168, null ; [#uses=1]
+ br i1 %169, label %_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i, label %bb2.i.i
+
+bb2.i.i: ; preds = %bb.i.i
+ %170 = tail call zeroext i8 %168(i8* %166) ; [#uses=0]
+ store i8* null, i8** %uglygep6364, align 4
+ br label %_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i
+
+_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i: ; preds = %bb2.i.i, %bb.i.i, %bb14
+ %171 = load i32* %0, align 4 ; [#uses=2]
+ %172 = add nsw i32 %171, -1 ; [#uses=11]
+ %173 = icmp eq i32 %172, %i.148 ; [#uses=1]
+ br i1 %173, label %_ZN20btPersistentManifold18removeContactPointEi.exit, label %bb.i
+
+bb.i: ; preds = %_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i
+ %174 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %172 ; [#uses=1]
+ %175 = bitcast %struct.btManifoldPoint* %174 to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %uglygep59, i8* %175, i32 276, i32 4, i1 false)
+ %176 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %172, i32 12 ; [#uses=1]
+ store i8* null, i8** %176, align 4
+ %177 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %172, i32 24, i32 0, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %177, align 4
+ %178 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %172, i32 24, i32 1, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %178, align 4
+ %179 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %172, i32 24, i32 2, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %179, align 4
+ %180 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %172, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %180, align 4
+ %181 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %172, i32 14 ; [#uses=1]
+ store i8 0, i8* %181, align 4
+ %182 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %172, i32 15 ; [#uses=1]
+ store float 0.000000e+00, float* %182, align 4
+ %183 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %172, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %183, align 4
+ %184 = getelementptr inbounds %struct.btPersistentManifold* %this, i32 0, i32 1, i32 %172, i32 21 ; [#uses=1]
+ store i32 0, i32* %184, align 4
+ %.pre.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btPersistentManifold18removeContactPointEi.exit
+
+_ZN20btPersistentManifold18removeContactPointEi.exit: ; preds = %bb.i, %_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i
+ %185 = phi i32 [ %171, %_ZN20btPersistentManifold14clearUserCacheER15btManifoldPoint.exit.i ], [ %.pre.i, %bb.i ] ; [#uses=1]
+ %186 = add nsw i32 %185, -1 ; [#uses=1]
+ store i32 %186, i32* %0, align 4
+ br label %bb18.backedge
+
+bb15: ; preds = %bb10
+ %187 = load i8 (%struct.btManifoldPoint*, i8*, i8*)** @gContactProcessedCallback, align 4 ; [#uses=2]
+ %188 = icmp eq i8 (%struct.btManifoldPoint*, i8*, i8*)* %187, null ; [#uses=1]
+ br i1 %188, label %bb18.backedge, label %bb16
+
+bb18.backedge: ; preds = %bb16, %bb15, %_ZN20btPersistentManifold18removeContactPointEi.exit, %_ZN20btPersistentManifold18removeContactPointEi.exit25
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %112 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb4
+
+bb16: ; preds = %bb15
+ %189 = load i8** %115, align 4 ; [#uses=1]
+ %190 = load i8** %116, align 4 ; [#uses=1]
+ %191 = tail call zeroext i8 %187(%struct.btManifoldPoint* %uglygep5960, i8* %190, i8* %189) ; [#uses=0]
+ br label %bb18.backedge
+
+return: ; preds = %bb18.backedge, %bb3
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN25btTriangleRaycastCallbackC2ERK9btVector3S2_j(%struct.btTriangleRaycastCallback* nocapture %this, %struct.btQuadWord* nocapture %from, %struct.btQuadWord* nocapture %to, i32 %flags) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %1, align 4
+ %4 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 %flags, i32* %25, align 4
+ %26 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 4 ; [#uses=1]
+ store float 1.000000e+00, float* %26, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN25btTriangleRaycastCallbackD1Ev(%struct.btTriangleRaycastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN25btTriangleRaycastCallbackD0Ev(%struct.btTriangleRaycastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct.btTriangleRaycastCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btTriangleRaycastCallback15processTriangleEP9btVector3ii(%struct.btTriangleRaycastCallback* %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %triangleNormal = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=4]
+ %5 = fsub float %2, %4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=4]
+ %10 = fsub float %7, %9 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=4]
+ %15 = fsub float %12, %14 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=2]
+ %18 = fsub float %17, %4 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=2]
+ %21 = fsub float %20, %9 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=2]
+ %24 = fsub float %23, %14 ; [#uses=2]
+ %25 = fmul float %15, %21 ; [#uses=1]
+ %26 = fmul float %10, %24 ; [#uses=1]
+ %27 = fsub float %25, %26 ; [#uses=10]
+ %28 = fmul float %5, %24 ; [#uses=1]
+ %29 = fmul float %15, %18 ; [#uses=1]
+ %30 = fsub float %28, %29 ; [#uses=10]
+ %31 = fmul float %10, %18 ; [#uses=1]
+ %32 = fmul float %5, %21 ; [#uses=1]
+ %33 = fsub float %31, %32 ; [#uses=10]
+ %34 = getelementptr inbounds %struct.btQuadWord* %triangleNormal, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %33, float* %34, align 8
+ %35 = getelementptr inbounds %struct.btQuadWord* %triangleNormal, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %30, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btQuadWord* %triangleNormal, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %27, float* %36, align 8
+ %37 = getelementptr inbounds %struct.btQuadWord* %triangleNormal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 4
+ %38 = fmul float %14, %33 ; [#uses=1]
+ %39 = fmul float %9, %30 ; [#uses=1]
+ %40 = fadd float %38, %39 ; [#uses=1]
+ %41 = fmul float %4, %27 ; [#uses=1]
+ %42 = fadd float %40, %41 ; [#uses=2]
+ %43 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=2]
+ %45 = fmul float %33, %44 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=2]
+ %48 = fmul float %30, %47 ; [#uses=1]
+ %49 = fadd float %45, %48 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=2]
+ %52 = fmul float %27, %51 ; [#uses=1]
+ %53 = fadd float %49, %52 ; [#uses=1]
+ %54 = fsub float %53, %42 ; [#uses=5]
+ %55 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=2]
+ %57 = fmul float %33, %56 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=2]
+ %60 = fmul float %30, %59 ; [#uses=1]
+ %61 = fadd float %57, %60 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=2]
+ %64 = fmul float %27, %63 ; [#uses=1]
+ %65 = fadd float %61, %64 ; [#uses=1]
+ %66 = fsub float %65, %42 ; [#uses=2]
+ %67 = fmul float %54, %66 ; [#uses=1]
+ %68 = fcmp ult float %67, 0.000000e+00 ; [#uses=1]
+ br i1 %68, label %bb, label %return
+
+bb: ; preds = %entry
+ %69 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 3 ; [#uses=1]
+ %70 = load i32* %69, align 4 ; [#uses=2]
+ %71 = and i32 %70, 1 ; [#uses=1]
+ %toBool.not = icmp ne i32 %71, 0 ; [#uses=1]
+ %72 = fcmp ogt float %54, 0.000000e+00 ; [#uses=1]
+ %or.cond = and i1 %toBool.not, %72 ; [#uses=1]
+ br i1 %or.cond, label %return, label %bb4
+
+bb4: ; preds = %bb
+ %73 = fsub float %54, %66 ; [#uses=1]
+ %74 = fdiv float %54, %73 ; [#uses=7]
+ %75 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 4 ; [#uses=3]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ %77 = fcmp ogt float %76, %74 ; [#uses=1]
+ br i1 %77, label %bb5, label %return
+
+bb5: ; preds = %bb4
+ %78 = fmul float %33, %33 ; [#uses=1]
+ %79 = fmul float %30, %30 ; [#uses=1]
+ %80 = fadd float %78, %79 ; [#uses=1]
+ %81 = fmul float %27, %27 ; [#uses=1]
+ %82 = fadd float %80, %81 ; [#uses=2]
+ %83 = fmul float %82, 0xBF1A36E2E0000000 ; [#uses=3]
+ %84 = fsub float 1.000000e+00, %74 ; [#uses=3]
+ %85 = fmul float %44, %84 ; [#uses=1]
+ %86 = fmul float %56, %74 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=3]
+ %88 = fmul float %47, %84 ; [#uses=1]
+ %89 = fmul float %59, %74 ; [#uses=1]
+ %90 = fadd float %88, %89 ; [#uses=3]
+ %91 = fmul float %51, %84 ; [#uses=1]
+ %92 = fmul float %63, %74 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=3]
+ %94 = fsub float %4, %93 ; [#uses=4]
+ %95 = fsub float %9, %90 ; [#uses=4]
+ %96 = fsub float %14, %87 ; [#uses=4]
+ %97 = fsub float %2, %93 ; [#uses=4]
+ %98 = fsub float %7, %90 ; [#uses=4]
+ %99 = fsub float %12, %87 ; [#uses=4]
+ %100 = fmul float %96, %98 ; [#uses=1]
+ %101 = fmul float %95, %99 ; [#uses=1]
+ %102 = fsub float %100, %101 ; [#uses=1]
+ %103 = fmul float %94, %99 ; [#uses=1]
+ %104 = fmul float %96, %97 ; [#uses=1]
+ %105 = fsub float %103, %104 ; [#uses=1]
+ %106 = fmul float %95, %97 ; [#uses=1]
+ %107 = fmul float %94, %98 ; [#uses=1]
+ %108 = fsub float %106, %107 ; [#uses=1]
+ %109 = fmul float %108, %33 ; [#uses=1]
+ %110 = fmul float %105, %30 ; [#uses=1]
+ %111 = fadd float %109, %110 ; [#uses=1]
+ %112 = fmul float %102, %27 ; [#uses=1]
+ %113 = fadd float %111, %112 ; [#uses=1]
+ %114 = fcmp ult float %113, %83 ; [#uses=1]
+ br i1 %114, label %return, label %bb15
+
+bb15: ; preds = %bb5
+ %115 = fsub float %17, %93 ; [#uses=4]
+ %116 = fsub float %20, %90 ; [#uses=4]
+ %117 = fsub float %23, %87 ; [#uses=4]
+ %118 = fmul float %99, %116 ; [#uses=1]
+ %119 = fmul float %98, %117 ; [#uses=1]
+ %120 = fsub float %118, %119 ; [#uses=1]
+ %121 = fmul float %97, %117 ; [#uses=1]
+ %122 = fmul float %99, %115 ; [#uses=1]
+ %123 = fsub float %121, %122 ; [#uses=1]
+ %124 = fmul float %98, %115 ; [#uses=1]
+ %125 = fmul float %97, %116 ; [#uses=1]
+ %126 = fsub float %124, %125 ; [#uses=1]
+ %127 = fmul float %126, %33 ; [#uses=1]
+ %128 = fmul float %123, %30 ; [#uses=1]
+ %129 = fadd float %127, %128 ; [#uses=1]
+ %130 = fmul float %120, %27 ; [#uses=1]
+ %131 = fadd float %129, %130 ; [#uses=1]
+ %132 = fcmp ult float %131, %83 ; [#uses=1]
+ br i1 %132, label %return, label %bb21
+
+bb21: ; preds = %bb15
+ %133 = fmul float %117, %95 ; [#uses=1]
+ %134 = fmul float %116, %96 ; [#uses=1]
+ %135 = fsub float %133, %134 ; [#uses=1]
+ %136 = fmul float %115, %96 ; [#uses=1]
+ %137 = fmul float %117, %94 ; [#uses=1]
+ %138 = fsub float %136, %137 ; [#uses=1]
+ %139 = fmul float %116, %94 ; [#uses=1]
+ %140 = fmul float %115, %95 ; [#uses=1]
+ %141 = fsub float %139, %140 ; [#uses=1]
+ %142 = fmul float %141, %33 ; [#uses=1]
+ %143 = fmul float %138, %30 ; [#uses=1]
+ %144 = fadd float %142, %143 ; [#uses=1]
+ %145 = fmul float %135, %27 ; [#uses=1]
+ %146 = fadd float %144, %145 ; [#uses=1]
+ %147 = fcmp ult float %146, %83 ; [#uses=1]
+ br i1 %147, label %return, label %bb25
+
+bb25: ; preds = %bb21
+ %148 = call float @sqrtf(float %82) nounwind readonly ; [#uses=1]
+ %149 = fdiv float 1.000000e+00, %148 ; [#uses=3]
+ %150 = fmul float %33, %149 ; [#uses=2]
+ store float %150, float* %34, align 8
+ %151 = fmul float %30, %149 ; [#uses=2]
+ store float %151, float* %35, align 4
+ %152 = fmul float %27, %149 ; [#uses=2]
+ store float %152, float* %36, align 8
+ %153 = and i32 %70, 2 ; [#uses=1]
+ %154 = icmp eq i32 %153, 0 ; [#uses=1]
+ %155 = fcmp ugt float %54, 0.000000e+00 ; [#uses=1]
+ %or.cond30 = and i1 %154, %155 ; [#uses=1]
+ %156 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %157 = load i32 (...)*** %156, align 4 ; [#uses=1]
+ %158 = getelementptr inbounds i32 (...)** %157, i32 3 ; [#uses=1]
+ %159 = load i32 (...)** %158, align 4 ; [#uses=2]
+ br i1 %or.cond30, label %bb28, label %bb27
+
+bb27: ; preds = %bb25
+ %160 = fsub float -0.000000e+00, %152 ; [#uses=1]
+ %161 = fsub float -0.000000e+00, %151 ; [#uses=1]
+ %162 = fsub float -0.000000e+00, %150 ; [#uses=1]
+ %163 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %162, float* %163, align 8
+ %164 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %161, float* %164, align 4
+ %165 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %160, float* %165, align 8
+ %166 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %166, align 4
+ %167 = bitcast i32 (...)* %159 to float (%struct.btTriangleRaycastCallback*, %struct.btQuadWord*, float, i32, i32)* ; [#uses=1]
+ %168 = call float %167(%struct.btTriangleRaycastCallback* %this, %struct.btQuadWord* %0, float %74, i32 %partId, i32 %triangleIndex) ; [#uses=1]
+ store float %168, float* %75, align 4
+ ret void
+
+bb28: ; preds = %bb25
+ %169 = bitcast i32 (...)* %159 to float (%struct.btTriangleRaycastCallback*, %struct.btQuadWord*, float, i32, i32)* ; [#uses=1]
+ %170 = call float %169(%struct.btTriangleRaycastCallback* %this, %struct.btQuadWord* %triangleNormal, float %74, i32 %partId, i32 %triangleIndex) ; [#uses=1]
+ store float %170, float* %75, align 4
+ ret void
+
+return: ; preds = %bb21, %bb15, %bb5, %bb4, %bb, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN25btTriangleRaycastCallbackC1ERK9btVector3S2_j(%struct.btTriangleRaycastCallback* nocapture %this, %struct.btQuadWord* nocapture %from, %struct.btQuadWord* nocapture %to, i32 %flags) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV25btTriangleRaycastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %1, align 4
+ %4 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 %flags, i32* %25, align 4
+ %26 = getelementptr inbounds %struct.btTriangleRaycastCallback* %this, i32 0, i32 4 ; [#uses=1]
+ store float 1.000000e+00, float* %26, align 4
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN28btTriangleConvexcastCallbackC2EPK13btConvexShapeRK11btTransformS5_S5_f(%struct.btTriangleConvexcastCallback* nocapture %this, %struct.btConvexShape* %convexShape, %struct.btTransform* nocapture %convexShapeFrom, %struct.btTransform* nocapture %convexShapeTo, %struct.btTransform* nocapture %triangleToWorld, float %triangleCollisionMargin) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV28btTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btConvexShape* %convexShape, %struct.btConvexShape** %1, align 4
+ %2 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %convexShapeFrom, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ %56 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ store float %58, float* %56, align 4
+ %59 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %59, align 4
+ %62 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ store float %64, float* %62, align 4
+ %65 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ store float %67, float* %65, align 4
+ %68 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %71, align 4
+ %74 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ store float %76, float* %74, align 4
+ %77 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ store float %79, float* %77, align 4
+ %80 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ store float %82, float* %80, align 4
+ %83 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ store float %85, float* %83, align 4
+ %86 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ store float %88, float* %86, align 4
+ %89 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ store float %91, float* %89, align 4
+ %92 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ store float %94, float* %92, align 4
+ %95 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btTransform* %convexShapeTo, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ store float %97, float* %95, align 4
+ %98 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %100 = load float* %99, align 4 ; [#uses=1]
+ store float %100, float* %98, align 4
+ %101 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %103 = load float* %102, align 4 ; [#uses=1]
+ store float %103, float* %101, align 4
+ %104 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %106 = load float* %105, align 4 ; [#uses=1]
+ store float %106, float* %104, align 4
+ %107 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ store float %109, float* %107, align 4
+ %110 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ store float %112, float* %110, align 4
+ %113 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=1]
+ store float %115, float* %113, align 4
+ %116 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %118 = load float* %117, align 4 ; [#uses=1]
+ store float %118, float* %116, align 4
+ %119 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %121 = load float* %120, align 4 ; [#uses=1]
+ store float %121, float* %119, align 4
+ %122 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %124 = load float* %123, align 4 ; [#uses=1]
+ store float %124, float* %122, align 4
+ %125 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %126 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %127 = load float* %126, align 4 ; [#uses=1]
+ store float %127, float* %125, align 4
+ %128 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=1]
+ store float %130, float* %128, align 4
+ %131 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %132 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %133 = load float* %132, align 4 ; [#uses=1]
+ store float %133, float* %131, align 4
+ %134 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %136 = load float* %135, align 4 ; [#uses=1]
+ store float %136, float* %134, align 4
+ %137 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %139 = load float* %138, align 4 ; [#uses=1]
+ store float %139, float* %137, align 4
+ %140 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %142 = load float* %141, align 4 ; [#uses=1]
+ store float %142, float* %140, align 4
+ %143 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btTransform* %triangleToWorld, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ store float %145, float* %143, align 4
+ %146 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 5 ; [#uses=1]
+ store float 1.000000e+00, float* %146, align 4
+ %147 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 6 ; [#uses=1]
+ store float %triangleCollisionMargin, float* %147, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN28btTriangleConvexcastCallbackD1Ev(%struct.btTriangleConvexcastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV28btTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN28btTriangleConvexcastCallbackD0Ev(%struct.btTriangleConvexcastCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV28btTriangleConvexcastCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN18btTriangleCallbackD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct.btTriangleConvexcastCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN28btTriangleConvexcastCallback15processTriangleEP9btVector3ii(%struct.btTriangleConvexcastCallback* %this, %struct.btQuadWord* nocapture %triangle, i32 %partId, i32 %triangleIndex) align 2 {
+invcont:
+ %triangleShape = alloca %struct.btTriangleShape, align 8 ; [#uses=17]
+ %simplexSolver = alloca %struct.btVoronoiSimplexSolver, align 8 ; [#uses=3]
+ %gjkEpaPenetrationSolver = alloca %struct..0btMultiSapOverlapFilterCallback, align 8 ; [#uses=2]
+ %convexCaster = alloca %struct.btContinuousConvexCollision, align 8 ; [#uses=6]
+ %castResult = alloca %"struct.btConvexCast::CastResult", align 8 ; [#uses=10]
+ %0 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %0)
+ %1 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV15btTriangleShape, i32 0, i32 2), i32 (...)*** %1, align 8
+ %2 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 1, i32 0, i32 3 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 1, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %triangle, i32 2, i32 0, i32 3 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 6 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %40, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %simplexSolver, i32 0, i32 8 ; [#uses=1]
+ store float 0x3F1A36E2E0000000, float* %42, align 4
+ %43 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %simplexSolver, i32 0, i32 10, i32 1, i32 0 ; [#uses=2]
+ %44 = load i8* %43, align 4 ; [#uses=1]
+ %45 = and i8 %44, -16 ; [#uses=1]
+ store i8 %45, i8* %43, align 4
+ %46 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %gjkEpaPenetrationSolver, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btGjkEpaPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** %46, align 8
+ %47 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %48 = load %struct.btConvexShape** %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTriangleShape* %triangleShape, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %50 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %gjkEpaPenetrationSolver, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN27btContinuousConvexCollisionC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btContinuousConvexCollision* %convexCaster, %struct.btConvexShape* %48, %struct.btConvexShape* %49, %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btActionInterface* %50)
+ to label %invcont1 unwind label %lpad23
+
+invcont1: ; preds = %invcont
+ %51 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN12btConvexCast10CastResultE, i32 0, i32 2), i32 (...)*** %51, align 8
+ %52 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 5 ; [#uses=2]
+ %53 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 6 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %53, align 8
+ %54 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %54, align 4
+ store float 1.000000e+00, float* %52, align 4
+ %55 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 4 ; [#uses=2]
+ %56 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 3 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %58 = invoke zeroext i8 @_ZN27btContinuousConvexCollision16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(%struct.btContinuousConvexCollision* %convexCaster, %struct.btTransform* %57, %struct.btTransform* %56, %struct.btTransform* %55, %struct.btTransform* %55, %"struct.btConvexCast::CastResult"* %castResult)
+ to label %invcont2 unwind label %lpad27 ; [#uses=1]
+
+invcont2: ; preds = %invcont1
+ %toBool = icmp eq i8 %58, 0 ; [#uses=1]
+ br i1 %toBool, label %bb10, label %bb
+
+bb: ; preds = %invcont2
+ %59 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %60 = load float* %59, align 4 ; [#uses=3]
+ %61 = fmul float %60, %60 ; [#uses=1]
+ %62 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %63 = load float* %62, align 4 ; [#uses=3]
+ %64 = fmul float %63, %63 ; [#uses=1]
+ %65 = fadd float %61, %64 ; [#uses=1]
+ %66 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %67 = load float* %66, align 4 ; [#uses=3]
+ %68 = fmul float %67, %67 ; [#uses=1]
+ %69 = fadd float %65, %68 ; [#uses=2]
+ %70 = fcmp ogt float %69, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %70, label %bb4, label %bb10
+
+bb4: ; preds = %bb
+ %71 = load float* %52, align 4 ; [#uses=2]
+ %72 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 5 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ %74 = fcmp olt float %71, %73 ; [#uses=1]
+ br i1 %74, label %bb5, label %bb10
+
+bb5: ; preds = %bb4
+ %75 = call float @sqrtf(float %69) nounwind readonly ; [#uses=1]
+ %76 = fdiv float 1.000000e+00, %75 ; [#uses=3]
+ %77 = fmul float %60, %76 ; [#uses=1]
+ store float %77, float* %59, align 4
+ %78 = fmul float %63, %76 ; [#uses=1]
+ store float %78, float* %62, align 4
+ %79 = fmul float %67, %76 ; [#uses=1]
+ store float %79, float* %66, align 4
+ %80 = getelementptr inbounds %struct.btTriangleConvexcastCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %81 = load i32 (...)*** %80, align 4 ; [#uses=1]
+ %82 = getelementptr inbounds i32 (...)** %81, i32 3 ; [#uses=1]
+ %83 = load i32 (...)** %82, align 4 ; [#uses=1]
+ %84 = bitcast i32 (...)* %83 to float (%struct.btTriangleConvexcastCallback*, %struct.btQuadWord*, %struct.btQuadWord*, float, i32, i32)* ; [#uses=1]
+ %85 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 3 ; [#uses=1]
+ %86 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %castResult, i32 0, i32 4 ; [#uses=1]
+ %87 = invoke float %84(%struct.btTriangleConvexcastCallback* %this, %struct.btQuadWord* %85, %struct.btQuadWord* %86, float %71, i32 %partId, i32 %triangleIndex)
+ to label %bb10 unwind label %lpad27 ; [#uses=0]
+
+bb10: ; preds = %bb5, %bb4, %bb, %invcont2
+ %88 = getelementptr inbounds %struct.btContinuousConvexCollision* %convexCaster, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV27btContinuousConvexCollision, i32 0, i32 2), i32 (...)*** %88, align 8
+ %89 = getelementptr inbounds %struct.btContinuousConvexCollision* %convexCaster, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %89)
+ to label %bb15 unwind label %lpad23
+
+bb15: ; preds = %bb10
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btGjkEpaPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** %46, align 8
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 8
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %49)
+ ret void
+
+invcont19: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+lpad23: ; preds = %bb10, %invcont
+ %eh_ptr24 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select26 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr24, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad27: ; preds = %bb5, %invcont1
+ %eh_ptr28 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select30 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr28, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %90 = getelementptr inbounds %struct.btContinuousConvexCollision* %convexCaster, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV27btContinuousConvexCollision, i32 0, i32 2), i32 (...)*** %90, align 8
+ %91 = getelementptr inbounds %struct.btContinuousConvexCollision* %convexCaster, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %91)
+ to label %ppad unwind label %lpad31
+
+lpad31: ; preds = %lpad27
+ %eh_ptr32 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select34 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr32, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad35: ; preds = %ppad
+ %eh_ptr36 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select38 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr36, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %lpad27, %lpad23
+ %eh_exception.0 = phi i8* [ %eh_ptr24, %lpad23 ], [ %eh_ptr28, %lpad27 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btGjkEpaPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** %46, align 8
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %1, align 8
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %49)
+ to label %invcont19 unwind label %lpad35
+}
+
+; [#uses=0]
+define void @_ZN28btTriangleConvexcastCallbackC1EPK13btConvexShapeRK11btTransformS5_S5_f(%struct.btTriangleConvexcastCallback* nocapture %this, %struct.btConvexShape* %convexShape, %struct.btTransform* nocapture %convexShapeFrom, %struct.btTransform* nocapture %convexShapeTo, %struct.btTransform* nocapture %triangleToWorld, float %triangleCollisionMargin) nounwind align 2 {
+entry:
+ tail call void @_ZN28btTriangleConvexcastCallbackC2EPK13btConvexShapeRK11btTransformS5_S5_f(%struct.btTriangleConvexcastCallback* %this, %struct.btConvexShape* %convexShape, %struct.btTransform* %convexShapeFrom, %struct.btTransform* %convexShapeTo, %struct.btTransform* %triangleToWorld, float %triangleCollisionMargin)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN22btSubsimplexConvexCastC2EPK13btConvexShapeS2_P22btVoronoiSimplexSolver(%struct.btGjkConvexCast* nocapture %this, %struct.btConvexShape* %convexA, %struct.btConvexShape* %convexB, %struct.btVoronoiSimplexSolver* %simplexSolver) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV22btSubsimplexConvexCast, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %1, align 4
+ %2 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btConvexShape* %convexA, %struct.btConvexShape** %2, align 4
+ %3 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConvexShape* %convexB, %struct.btConvexShape** %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btSubsimplexConvexCastD1Ev(%struct.btGjkConvexCast* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV22btSubsimplexConvexCast, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN22btSubsimplexConvexCastD0Ev(%struct.btGjkConvexCast* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV22btSubsimplexConvexCast, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN12btConvexCastD2Ev(%struct.btActionInterface* %1)
+ %2 = bitcast %struct.btGjkConvexCast* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=3]
+define zeroext i8 @_ZN22btSubsimplexConvexCast16calcTimeOfImpactERK11btTransformS2_S2_S2_RN12btConvexCast10CastResultE(%struct.btGjkConvexCast* nocapture %this, %struct.btTransform* %fromA, %struct.btTransform* nocapture %toA, %struct.btTransform* %fromB, %struct.btTransform* nocapture %toB, %"struct.btConvexCast::CastResult"* nocapture %result) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %3 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %4 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %5 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %6 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %7 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %v = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %supVertexA = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %supVertexB = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %w = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %hitA = alloca %struct.btQuadWord, align 8 ; [#uses=1]
+ %hitB = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %8 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 1 ; [#uses=5]
+ %9 = load %struct.btVoronoiSimplexSolver** %8, align 4 ; [#uses=1]
+ call void @_ZN22btVoronoiSimplexSolver5resetEv(%struct.btVoronoiSimplexSolver* %9)
+ %10 = getelementptr inbounds %struct.btTransform* %toA, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fsub float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %toA, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ %19 = fsub float %16, %18 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %toA, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %23 = load float* %22, align 4 ; [#uses=2]
+ %24 = fsub float %21, %23 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btTransform* %toB, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %28 = load float* %27, align 4 ; [#uses=2]
+ %29 = fsub float %26, %28 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btTransform* %toB, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %33 = load float* %32, align 4 ; [#uses=2]
+ %34 = fsub float %31, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTransform* %toB, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %38 = load float* %37, align 4 ; [#uses=2]
+ %39 = fsub float %36, %38 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %41 = load float* %40, align 4 ; [#uses=3]
+ %42 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %43 = load float* %42, align 4 ; [#uses=3]
+ %44 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %45 = load float* %44, align 4 ; [#uses=3]
+ %46 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %47 = load float* %46, align 4 ; [#uses=3]
+ %48 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %49 = load float* %48, align 4 ; [#uses=3]
+ %50 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %51 = load float* %50, align 4 ; [#uses=3]
+ %52 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %53 = load float* %52, align 4 ; [#uses=3]
+ %54 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %55 = load float* %54, align 4 ; [#uses=3]
+ %56 = getelementptr inbounds %struct.btTransform* %fromA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %57 = load float* %56, align 4 ; [#uses=3]
+ %58 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %59 = load float* %58, align 4 ; [#uses=2]
+ %60 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ %61 = load float* %60, align 4 ; [#uses=2]
+ %62 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %63 = load float* %62, align 4 ; [#uses=2]
+ %64 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ %65 = load float* %64, align 4 ; [#uses=2]
+ %66 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ %67 = load float* %66, align 4 ; [#uses=2]
+ %68 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ %69 = load float* %68, align 4 ; [#uses=2]
+ %70 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %71 = load float* %70, align 4 ; [#uses=2]
+ %72 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %73 = load float* %72, align 4 ; [#uses=2]
+ %74 = getelementptr inbounds %struct.btTransform* %fromB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %75 = load float* %74, align 4 ; [#uses=2]
+ %76 = fsub float %14, %29 ; [#uses=6]
+ %77 = fsub float %19, %34 ; [#uses=6]
+ %78 = fsub float %24, %39 ; [#uses=6]
+ %79 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 2 ; [#uses=2]
+ %80 = load %struct.btConvexShape** %79, align 4 ; [#uses=2]
+ %81 = getelementptr inbounds %struct.btConvexShape* %80, i32 0, i32 0, i32 0 ; [#uses=1]
+ %82 = load i32 (...)*** %81, align 4 ; [#uses=1]
+ %83 = getelementptr inbounds i32 (...)** %82, i32 15 ; [#uses=1]
+ %84 = load i32 (...)** %83, align 4 ; [#uses=1]
+ %85 = fsub float -0.000000e+00, %76 ; [#uses=3]
+ %86 = fsub float -0.000000e+00, %77 ; [#uses=3]
+ %87 = fsub float -0.000000e+00, %78 ; [#uses=3]
+ %88 = fmul float %45, %87 ; [#uses=1]
+ %89 = fmul float %51, %86 ; [#uses=1]
+ %90 = fadd float %88, %89 ; [#uses=1]
+ %91 = fmul float %57, %85 ; [#uses=1]
+ %92 = fadd float %90, %91 ; [#uses=1]
+ %93 = fmul float %43, %87 ; [#uses=1]
+ %94 = fmul float %49, %86 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %55, %85 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %41, %87 ; [#uses=1]
+ %99 = fmul float %47, %86 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %53, %85 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %102, float* %103, align 8
+ %104 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %97, float* %104, align 4
+ %105 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %92, float* %105, align 8
+ %106 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %106, align 4
+ %107 = bitcast i32 (...)* %84 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %107(%struct.btQuadWord* noalias sret %7, %struct.btConvexShape* %80, %struct.btQuadWord* %6)
+ %108 = load float* %52, align 4 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0, i32 0 ; [#uses=1]
+ %110 = load float* %109, align 8 ; [#uses=3]
+ %111 = fmul float %108, %110 ; [#uses=1]
+ %112 = load float* %54, align 4 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0, i32 1 ; [#uses=1]
+ %114 = load float* %113, align 4 ; [#uses=3]
+ %115 = fmul float %112, %114 ; [#uses=1]
+ %116 = fadd float %111, %115 ; [#uses=1]
+ %117 = load float* %56, align 4 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0, i32 2 ; [#uses=1]
+ %119 = load float* %118, align 8 ; [#uses=3]
+ %120 = fmul float %117, %119 ; [#uses=1]
+ %121 = fadd float %116, %120 ; [#uses=1]
+ %122 = load float* %12, align 4 ; [#uses=1]
+ %123 = fadd float %121, %122 ; [#uses=1]
+ %124 = load float* %46, align 4 ; [#uses=1]
+ %125 = fmul float %124, %110 ; [#uses=1]
+ %126 = load float* %48, align 4 ; [#uses=1]
+ %127 = fmul float %126, %114 ; [#uses=1]
+ %128 = fadd float %125, %127 ; [#uses=1]
+ %129 = load float* %50, align 4 ; [#uses=1]
+ %130 = fmul float %129, %119 ; [#uses=1]
+ %131 = fadd float %128, %130 ; [#uses=1]
+ %132 = load float* %17, align 4 ; [#uses=1]
+ %133 = fadd float %131, %132 ; [#uses=1]
+ %134 = load float* %40, align 4 ; [#uses=1]
+ %135 = fmul float %134, %110 ; [#uses=1]
+ %136 = load float* %42, align 4 ; [#uses=1]
+ %137 = fmul float %136, %114 ; [#uses=1]
+ %138 = fadd float %135, %137 ; [#uses=1]
+ %139 = load float* %44, align 4 ; [#uses=1]
+ %140 = fmul float %139, %119 ; [#uses=1]
+ %141 = fadd float %138, %140 ; [#uses=1]
+ %142 = load float* %22, align 4 ; [#uses=1]
+ %143 = fadd float %141, %142 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btQuadWord* %supVertexA, i32 0, i32 0, i32 0 ; [#uses=4]
+ store float %143, float* %144, align 8
+ %145 = getelementptr inbounds %struct.btQuadWord* %supVertexA, i32 0, i32 0, i32 1 ; [#uses=4]
+ store float %133, float* %145, align 4
+ %146 = getelementptr inbounds %struct.btQuadWord* %supVertexA, i32 0, i32 0, i32 2 ; [#uses=4]
+ store float %123, float* %146, align 8
+ %147 = getelementptr inbounds %struct.btQuadWord* %supVertexA, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %147, align 4
+ %148 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 3 ; [#uses=2]
+ %149 = load %struct.btConvexShape** %148, align 4 ; [#uses=2]
+ %150 = getelementptr inbounds %struct.btConvexShape* %149, i32 0, i32 0, i32 0 ; [#uses=1]
+ %151 = load i32 (...)*** %150, align 4 ; [#uses=1]
+ %152 = getelementptr inbounds i32 (...)** %151, i32 15 ; [#uses=1]
+ %153 = load i32 (...)** %152, align 4 ; [#uses=1]
+ %154 = load float* %62, align 4 ; [#uses=1]
+ %155 = fmul float %154, %78 ; [#uses=1]
+ %156 = load float* %68, align 4 ; [#uses=1]
+ %157 = fmul float %156, %77 ; [#uses=1]
+ %158 = fadd float %155, %157 ; [#uses=1]
+ %159 = load float* %74, align 4 ; [#uses=1]
+ %160 = fmul float %159, %76 ; [#uses=1]
+ %161 = fadd float %158, %160 ; [#uses=1]
+ %162 = load float* %60, align 4 ; [#uses=1]
+ %163 = fmul float %162, %78 ; [#uses=1]
+ %164 = load float* %66, align 4 ; [#uses=1]
+ %165 = fmul float %164, %77 ; [#uses=1]
+ %166 = fadd float %163, %165 ; [#uses=1]
+ %167 = load float* %72, align 4 ; [#uses=1]
+ %168 = fmul float %167, %76 ; [#uses=1]
+ %169 = fadd float %166, %168 ; [#uses=1]
+ %170 = load float* %58, align 4 ; [#uses=1]
+ %171 = fmul float %170, %78 ; [#uses=1]
+ %172 = load float* %64, align 4 ; [#uses=1]
+ %173 = fmul float %172, %77 ; [#uses=1]
+ %174 = fadd float %171, %173 ; [#uses=1]
+ %175 = load float* %70, align 4 ; [#uses=1]
+ %176 = fmul float %175, %76 ; [#uses=1]
+ %177 = fadd float %174, %176 ; [#uses=1]
+ %178 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %177, float* %178, align 8
+ %179 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %169, float* %179, align 4
+ %180 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %161, float* %180, align 8
+ %181 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %181, align 4
+ %182 = bitcast i32 (...)* %153 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %182(%struct.btQuadWord* noalias sret %5, %struct.btConvexShape* %149, %struct.btQuadWord* %4)
+ %183 = load float* %70, align 4 ; [#uses=1]
+ %184 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %185 = load float* %184, align 8 ; [#uses=3]
+ %186 = fmul float %183, %185 ; [#uses=1]
+ %187 = load float* %72, align 4 ; [#uses=1]
+ %188 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 1 ; [#uses=1]
+ %189 = load float* %188, align 4 ; [#uses=3]
+ %190 = fmul float %187, %189 ; [#uses=1]
+ %191 = fadd float %186, %190 ; [#uses=1]
+ %192 = load float* %74, align 4 ; [#uses=1]
+ %193 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 2 ; [#uses=1]
+ %194 = load float* %193, align 8 ; [#uses=3]
+ %195 = fmul float %192, %194 ; [#uses=1]
+ %196 = fadd float %191, %195 ; [#uses=1]
+ %197 = load float* %27, align 4 ; [#uses=1]
+ %198 = fadd float %196, %197 ; [#uses=2]
+ %199 = load float* %64, align 4 ; [#uses=1]
+ %200 = fmul float %199, %185 ; [#uses=1]
+ %201 = load float* %66, align 4 ; [#uses=1]
+ %202 = fmul float %201, %189 ; [#uses=1]
+ %203 = fadd float %200, %202 ; [#uses=1]
+ %204 = load float* %68, align 4 ; [#uses=1]
+ %205 = fmul float %204, %194 ; [#uses=1]
+ %206 = fadd float %203, %205 ; [#uses=1]
+ %207 = load float* %32, align 4 ; [#uses=1]
+ %208 = fadd float %206, %207 ; [#uses=2]
+ %209 = load float* %58, align 4 ; [#uses=1]
+ %210 = fmul float %209, %185 ; [#uses=1]
+ %211 = load float* %60, align 4 ; [#uses=1]
+ %212 = fmul float %211, %189 ; [#uses=1]
+ %213 = fadd float %210, %212 ; [#uses=1]
+ %214 = load float* %62, align 4 ; [#uses=1]
+ %215 = fmul float %214, %194 ; [#uses=1]
+ %216 = fadd float %213, %215 ; [#uses=1]
+ %217 = load float* %37, align 4 ; [#uses=1]
+ %218 = fadd float %216, %217 ; [#uses=2]
+ %219 = getelementptr inbounds %struct.btQuadWord* %supVertexB, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %218, float* %219, align 8
+ %220 = getelementptr inbounds %struct.btQuadWord* %supVertexB, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %208, float* %220, align 4
+ %221 = getelementptr inbounds %struct.btQuadWord* %supVertexB, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %198, float* %221, align 8
+ %222 = getelementptr inbounds %struct.btQuadWord* %supVertexB, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %222, align 4
+ %223 = load float* %146, align 8 ; [#uses=1]
+ %224 = fsub float %223, %198 ; [#uses=3]
+ %225 = load float* %145, align 4 ; [#uses=1]
+ %226 = fsub float %225, %208 ; [#uses=3]
+ %227 = load float* %144, align 8 ; [#uses=1]
+ %228 = fsub float %227, %218 ; [#uses=3]
+ %229 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 0 ; [#uses=5]
+ store float %228, float* %229, align 8
+ %230 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 1 ; [#uses=5]
+ store float %226, float* %230, align 4
+ %231 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 2 ; [#uses=5]
+ store float %224, float* %231, align 8
+ %232 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %232, align 4
+ %233 = fmul float %228, %228 ; [#uses=1]
+ %234 = fmul float %226, %226 ; [#uses=1]
+ %235 = fadd float %233, %234 ; [#uses=1]
+ %236 = fmul float %224, %224 ; [#uses=1]
+ %237 = fadd float %235, %236 ; [#uses=1]
+ %238 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %239 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %240 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %241 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %242 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %243 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %244 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %245 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %246 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %247 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %248 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %249 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %250 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %251 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %252 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 0 ; [#uses=2]
+ %253 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 1 ; [#uses=2]
+ %254 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 2 ; [#uses=2]
+ %255 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 3 ; [#uses=2]
+ br label %bb21
+
+bb: ; preds = %bb22
+ %256 = load %struct.btConvexShape** %79, align 4 ; [#uses=2]
+ %257 = getelementptr inbounds %struct.btConvexShape* %256, i32 0, i32 0, i32 0 ; [#uses=1]
+ %258 = load i32 (...)*** %257, align 4 ; [#uses=1]
+ %259 = getelementptr inbounds i32 (...)** %258, i32 15 ; [#uses=1]
+ %260 = load i32 (...)** %259, align 4 ; [#uses=1]
+ %261 = load float* %231, align 8 ; [#uses=1]
+ %262 = fsub float -0.000000e+00, %261 ; [#uses=3]
+ %263 = load float* %230, align 4 ; [#uses=1]
+ %264 = fsub float -0.000000e+00, %263 ; [#uses=3]
+ %265 = load float* %229, align 8 ; [#uses=1]
+ %266 = fsub float -0.000000e+00, %265 ; [#uses=3]
+ %267 = fmul float %45, %266 ; [#uses=1]
+ %268 = fmul float %51, %264 ; [#uses=1]
+ %269 = fadd float %267, %268 ; [#uses=1]
+ %270 = fmul float %57, %262 ; [#uses=1]
+ %271 = fadd float %269, %270 ; [#uses=1]
+ %272 = fmul float %43, %266 ; [#uses=1]
+ %273 = fmul float %49, %264 ; [#uses=1]
+ %274 = fadd float %272, %273 ; [#uses=1]
+ %275 = fmul float %55, %262 ; [#uses=1]
+ %276 = fadd float %274, %275 ; [#uses=1]
+ %277 = fmul float %41, %266 ; [#uses=1]
+ %278 = fmul float %47, %264 ; [#uses=1]
+ %279 = fadd float %277, %278 ; [#uses=1]
+ %280 = fmul float %53, %262 ; [#uses=1]
+ %281 = fadd float %279, %280 ; [#uses=1]
+ store float %281, float* %238, align 8
+ store float %276, float* %239, align 4
+ store float %271, float* %240, align 8
+ store float 0.000000e+00, float* %241, align 4
+ %282 = bitcast i32 (...)* %260 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %282(%struct.btQuadWord* noalias sret %3, %struct.btConvexShape* %256, %struct.btQuadWord* %2)
+ %283 = load float* %242, align 8 ; [#uses=3]
+ %284 = fmul float %53, %283 ; [#uses=1]
+ %285 = load float* %243, align 4 ; [#uses=3]
+ %286 = fmul float %55, %285 ; [#uses=1]
+ %287 = fadd float %284, %286 ; [#uses=1]
+ %288 = load float* %244, align 8 ; [#uses=3]
+ %289 = fmul float %57, %288 ; [#uses=1]
+ %290 = fadd float %287, %289 ; [#uses=1]
+ %291 = fadd float %290, %interpolatedTransA.1.0.2.1 ; [#uses=1]
+ %292 = fmul float %47, %283 ; [#uses=1]
+ %293 = fmul float %49, %285 ; [#uses=1]
+ %294 = fadd float %292, %293 ; [#uses=1]
+ %295 = fmul float %51, %288 ; [#uses=1]
+ %296 = fadd float %294, %295 ; [#uses=1]
+ %297 = fadd float %296, %interpolatedTransA.1.0.1.1 ; [#uses=1]
+ %298 = fmul float %41, %283 ; [#uses=1]
+ %299 = fmul float %43, %285 ; [#uses=1]
+ %300 = fadd float %298, %299 ; [#uses=1]
+ %301 = fmul float %45, %288 ; [#uses=1]
+ %302 = fadd float %300, %301 ; [#uses=1]
+ %303 = fadd float %302, %interpolatedTransA.1.0.0.1 ; [#uses=1]
+ store float %303, float* %144, align 8
+ store float %297, float* %145, align 4
+ store float %291, float* %146, align 8
+ store float 0.000000e+00, float* %147, align 4
+ %304 = load %struct.btConvexShape** %148, align 4 ; [#uses=2]
+ %305 = getelementptr inbounds %struct.btConvexShape* %304, i32 0, i32 0, i32 0 ; [#uses=1]
+ %306 = load i32 (...)*** %305, align 4 ; [#uses=1]
+ %307 = getelementptr inbounds i32 (...)** %306, i32 15 ; [#uses=1]
+ %308 = load i32 (...)** %307, align 4 ; [#uses=1]
+ %309 = load float* %229, align 8 ; [#uses=3]
+ %310 = fmul float %63, %309 ; [#uses=1]
+ %311 = load float* %230, align 4 ; [#uses=3]
+ %312 = fmul float %69, %311 ; [#uses=1]
+ %313 = fadd float %310, %312 ; [#uses=1]
+ %314 = load float* %231, align 8 ; [#uses=3]
+ %315 = fmul float %75, %314 ; [#uses=1]
+ %316 = fadd float %313, %315 ; [#uses=1]
+ %317 = fmul float %61, %309 ; [#uses=1]
+ %318 = fmul float %67, %311 ; [#uses=1]
+ %319 = fadd float %317, %318 ; [#uses=1]
+ %320 = fmul float %73, %314 ; [#uses=1]
+ %321 = fadd float %319, %320 ; [#uses=1]
+ %322 = fmul float %59, %309 ; [#uses=1]
+ %323 = fmul float %65, %311 ; [#uses=1]
+ %324 = fadd float %322, %323 ; [#uses=1]
+ %325 = fmul float %71, %314 ; [#uses=1]
+ %326 = fadd float %324, %325 ; [#uses=1]
+ store float %326, float* %245, align 8
+ store float %321, float* %246, align 4
+ store float %316, float* %247, align 8
+ store float 0.000000e+00, float* %248, align 4
+ %327 = bitcast i32 (...)* %308 to void (%struct.btQuadWord*, %struct.btConvexShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %327(%struct.btQuadWord* noalias sret %1, %struct.btConvexShape* %304, %struct.btQuadWord* %0)
+ %328 = load float* %249, align 8 ; [#uses=3]
+ %329 = fmul float %71, %328 ; [#uses=1]
+ %330 = load float* %250, align 4 ; [#uses=3]
+ %331 = fmul float %73, %330 ; [#uses=1]
+ %332 = fadd float %329, %331 ; [#uses=1]
+ %333 = load float* %251, align 8 ; [#uses=3]
+ %334 = fmul float %75, %333 ; [#uses=1]
+ %335 = fadd float %332, %334 ; [#uses=1]
+ %336 = fadd float %335, %interpolatedTransB.1.0.2.1 ; [#uses=2]
+ %337 = fmul float %65, %328 ; [#uses=1]
+ %338 = fmul float %67, %330 ; [#uses=1]
+ %339 = fadd float %337, %338 ; [#uses=1]
+ %340 = fmul float %69, %333 ; [#uses=1]
+ %341 = fadd float %339, %340 ; [#uses=1]
+ %342 = fadd float %341, %interpolatedTransB.1.0.1.1 ; [#uses=2]
+ %343 = fmul float %59, %328 ; [#uses=1]
+ %344 = fmul float %61, %330 ; [#uses=1]
+ %345 = fadd float %343, %344 ; [#uses=1]
+ %346 = fmul float %63, %333 ; [#uses=1]
+ %347 = fadd float %345, %346 ; [#uses=1]
+ %348 = fadd float %347, %interpolatedTransB.1.0.0.1 ; [#uses=2]
+ store float %348, float* %219, align 8
+ store float %342, float* %220, align 4
+ store float %336, float* %221, align 8
+ store float 0.000000e+00, float* %222, align 4
+ %349 = load float* %146, align 8 ; [#uses=1]
+ %350 = fsub float %349, %336 ; [#uses=3]
+ %351 = load float* %145, align 4 ; [#uses=1]
+ %352 = fsub float %351, %342 ; [#uses=3]
+ %353 = load float* %144, align 8 ; [#uses=1]
+ %354 = fsub float %353, %348 ; [#uses=3]
+ store float %354, float* %252, align 8
+ store float %352, float* %253, align 4
+ store float %350, float* %254, align 8
+ store float 0.000000e+00, float* %255, align 4
+ %355 = load float* %229, align 8 ; [#uses=3]
+ %356 = fmul float %355, %354 ; [#uses=1]
+ %357 = load float* %230, align 4 ; [#uses=3]
+ %358 = fmul float %357, %352 ; [#uses=1]
+ %359 = fadd float %356, %358 ; [#uses=1]
+ %360 = load float* %231, align 8 ; [#uses=3]
+ %361 = fmul float %360, %350 ; [#uses=1]
+ %362 = fadd float %359, %361 ; [#uses=2]
+ %363 = fcmp ogt float %lambda.1, 1.000000e+00 ; [#uses=1]
+ br i1 %363, label %bb36, label %bb8
+
+bb8: ; preds = %bb
+ %364 = fcmp ogt float %362, 0.000000e+00 ; [#uses=1]
+ br i1 %364, label %bb9, label %bb13
+
+bb9: ; preds = %bb8
+ %365 = fmul float %355, %78 ; [#uses=1]
+ %366 = fmul float %357, %77 ; [#uses=1]
+ %367 = fadd float %365, %366 ; [#uses=1]
+ %368 = fmul float %360, %76 ; [#uses=1]
+ %369 = fadd float %367, %368 ; [#uses=2]
+ %370 = fcmp ult float %369, 0xBD10000000000000 ; [#uses=1]
+ br i1 %370, label %bb11, label %bb36
+
+bb11: ; preds = %bb9
+ %371 = fdiv float %362, %369 ; [#uses=1]
+ %372 = fsub float %lambda.1, %371 ; [#uses=8]
+ %373 = fsub float 1.000000e+00, %372 ; [#uses=6]
+ %374 = load float* %22, align 4 ; [#uses=1]
+ %375 = fmul float %374, %373 ; [#uses=1]
+ %376 = load float* %20, align 4 ; [#uses=1]
+ %377 = fmul float %376, %372 ; [#uses=1]
+ %378 = fadd float %375, %377 ; [#uses=1]
+ %379 = load float* %17, align 4 ; [#uses=1]
+ %380 = fmul float %379, %373 ; [#uses=1]
+ %381 = load float* %15, align 4 ; [#uses=1]
+ %382 = fmul float %381, %372 ; [#uses=1]
+ %383 = fadd float %380, %382 ; [#uses=1]
+ %384 = load float* %12, align 4 ; [#uses=1]
+ %385 = fmul float %384, %373 ; [#uses=1]
+ %386 = load float* %10, align 4 ; [#uses=1]
+ %387 = fmul float %386, %372 ; [#uses=1]
+ %388 = fadd float %385, %387 ; [#uses=1]
+ %389 = load float* %37, align 4 ; [#uses=1]
+ %390 = fmul float %389, %373 ; [#uses=1]
+ %391 = load float* %35, align 4 ; [#uses=1]
+ %392 = fmul float %391, %372 ; [#uses=1]
+ %393 = fadd float %390, %392 ; [#uses=1]
+ %394 = load float* %32, align 4 ; [#uses=1]
+ %395 = fmul float %394, %373 ; [#uses=1]
+ %396 = load float* %30, align 4 ; [#uses=1]
+ %397 = fmul float %396, %372 ; [#uses=1]
+ %398 = fadd float %395, %397 ; [#uses=1]
+ %399 = load float* %27, align 4 ; [#uses=1]
+ %400 = fmul float %399, %373 ; [#uses=1]
+ %401 = load float* %25, align 4 ; [#uses=1]
+ %402 = fmul float %401, %372 ; [#uses=1]
+ %403 = fadd float %400, %402 ; [#uses=1]
+ store float %354, float* %252, align 8
+ store float %352, float* %253, align 4
+ store float %350, float* %254, align 8
+ store float 0.000000e+00, float* %255, align 4
+ br label %bb13
+
+bb13: ; preds = %bb11, %bb8
+ %interpolatedTransA.1.0.0.0 = phi float [ %378, %bb11 ], [ %interpolatedTransA.1.0.0.1, %bb8 ] ; [#uses=1]
+ %interpolatedTransA.1.0.1.0 = phi float [ %383, %bb11 ], [ %interpolatedTransA.1.0.1.1, %bb8 ] ; [#uses=1]
+ %interpolatedTransA.1.0.2.0 = phi float [ %388, %bb11 ], [ %interpolatedTransA.1.0.2.1, %bb8 ] ; [#uses=1]
+ %interpolatedTransB.1.0.0.0 = phi float [ %393, %bb11 ], [ %interpolatedTransB.1.0.0.1, %bb8 ] ; [#uses=1]
+ %interpolatedTransB.1.0.1.0 = phi float [ %398, %bb11 ], [ %interpolatedTransB.1.0.1.1, %bb8 ] ; [#uses=1]
+ %interpolatedTransB.1.0.2.0 = phi float [ %403, %bb11 ], [ %interpolatedTransB.1.0.2.1, %bb8 ] ; [#uses=1]
+ %n.0.0.0 = phi float [ %355, %bb11 ], [ %n.0.0.1, %bb8 ] ; [#uses=1]
+ %n.0.1.0 = phi float [ %357, %bb11 ], [ %n.0.1.1, %bb8 ] ; [#uses=1]
+ %n.0.2.0 = phi float [ %360, %bb11 ], [ %n.0.2.1, %bb8 ] ; [#uses=1]
+ %lambda.0 = phi float [ %372, %bb11 ], [ %lambda.1, %bb8 ] ; [#uses=1]
+ %404 = load %struct.btVoronoiSimplexSolver** %8, align 4 ; [#uses=1]
+ %405 = call zeroext i8 @_ZN22btVoronoiSimplexSolver9inSimplexERK9btVector3(%struct.btVoronoiSimplexSolver* %404, %struct.btQuadWord* %w) ; [#uses=1]
+ %toBoolnot = icmp eq i8 %405, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb16, label %bb17
+
+bb16: ; preds = %bb13
+ %406 = load %struct.btVoronoiSimplexSolver** %8, align 4 ; [#uses=1]
+ call void @_ZN22btVoronoiSimplexSolver9addVertexERK9btVector3S2_S2_(%struct.btVoronoiSimplexSolver* %406, %struct.btQuadWord* %w, %struct.btQuadWord* %supVertexA, %struct.btQuadWord* %supVertexB)
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb13
+ %407 = load %struct.btVoronoiSimplexSolver** %8, align 4 ; [#uses=1]
+ %408 = call zeroext i8 @_ZN22btVoronoiSimplexSolver7closestER9btVector3(%struct.btVoronoiSimplexSolver* %407, %struct.btQuadWord* %v) ; [#uses=1]
+ %toBool18 = icmp eq i8 %408, 0 ; [#uses=1]
+ br i1 %toBool18, label %bb21.backedge, label %bb19
+
+bb19: ; preds = %bb17
+ %409 = load float* %229, align 8 ; [#uses=2]
+ %410 = fmul float %409, %409 ; [#uses=1]
+ %411 = load float* %230, align 4 ; [#uses=2]
+ %412 = fmul float %411, %411 ; [#uses=1]
+ %413 = fadd float %410, %412 ; [#uses=1]
+ %414 = load float* %231, align 8 ; [#uses=2]
+ %415 = fmul float %414, %414 ; [#uses=1]
+ %416 = fadd float %413, %415 ; [#uses=1]
+ br label %bb21.backedge
+
+bb21.backedge: ; preds = %bb19, %bb17
+ %dist2.0.be = phi float [ 0.000000e+00, %bb17 ], [ %416, %bb19 ] ; [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb21
+
+bb21: ; preds = %bb21.backedge, %entry
+ %indvar = phi i32 [ %indvar.next, %bb21.backedge ], [ 0, %entry ] ; [#uses=2]
+ %interpolatedTransA.1.0.0.1 = phi float [ %interpolatedTransA.1.0.0.0, %bb21.backedge ], [ %23, %entry ] ; [#uses=2]
+ %interpolatedTransA.1.0.1.1 = phi float [ %interpolatedTransA.1.0.1.0, %bb21.backedge ], [ %18, %entry ] ; [#uses=2]
+ %interpolatedTransA.1.0.2.1 = phi float [ %interpolatedTransA.1.0.2.0, %bb21.backedge ], [ %13, %entry ] ; [#uses=2]
+ %interpolatedTransB.1.0.0.1 = phi float [ %interpolatedTransB.1.0.0.0, %bb21.backedge ], [ %38, %entry ] ; [#uses=2]
+ %interpolatedTransB.1.0.1.1 = phi float [ %interpolatedTransB.1.0.1.0, %bb21.backedge ], [ %33, %entry ] ; [#uses=2]
+ %interpolatedTransB.1.0.2.1 = phi float [ %interpolatedTransB.1.0.2.0, %bb21.backedge ], [ %28, %entry ] ; [#uses=2]
+ %n.0.0.1 = phi float [ %n.0.0.0, %bb21.backedge ], [ 0.000000e+00, %entry ] ; [#uses=4]
+ %n.0.1.1 = phi float [ %n.0.1.0, %bb21.backedge ], [ 0.000000e+00, %entry ] ; [#uses=4]
+ %n.0.2.1 = phi float [ %n.0.2.0, %bb21.backedge ], [ 0.000000e+00, %entry ] ; [#uses=4]
+ %lambda.1 = phi float [ %lambda.0, %bb21.backedge ], [ 0.000000e+00, %entry ] ; [#uses=4]
+ %dist2.0 = phi float [ %dist2.0.be, %bb21.backedge ], [ %237, %entry ] ; [#uses=1]
+ %417 = fcmp ule float %dist2.0, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %417, label %bb27, label %bb22
+
+bb22: ; preds = %bb21
+ %maxIter.2 = sub i32 31, %indvar ; [#uses=1]
+ %418 = icmp eq i32 %maxIter.2, -1 ; [#uses=1]
+ br i1 %418, label %bb27, label %bb
+
+bb27: ; preds = %bb22, %bb21
+ %419 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 5 ; [#uses=1]
+ store float %lambda.1, float* %419, align 4
+ %420 = fmul float %n.0.0.1, %n.0.0.1 ; [#uses=1]
+ %421 = fmul float %n.0.1.1, %n.0.1.1 ; [#uses=1]
+ %422 = fadd float %420, %421 ; [#uses=1]
+ %423 = fmul float %n.0.2.1, %n.0.2.1 ; [#uses=1]
+ %424 = fadd float %422, %423 ; [#uses=2]
+ %425 = fcmp ult float %424, 0x3D10000000000000 ; [#uses=1]
+ br i1 %425, label %bb31, label %bb29
+
+bb29: ; preds = %bb27
+ %426 = call float @sqrtf(float %424) nounwind readonly ; [#uses=1]
+ %427 = fdiv float 1.000000e+00, %426 ; [#uses=3]
+ %428 = fmul float %n.0.2.1, %427 ; [#uses=2]
+ %429 = fmul float %n.0.1.1, %427 ; [#uses=2]
+ %430 = fmul float %n.0.0.1, %427 ; [#uses=2]
+ %431 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %430, float* %431, align 4
+ %432 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %429, float* %432, align 4
+ %433 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %428, float* %433, align 4
+ %434 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %434, align 4
+ br label %bb32
+
+bb31: ; preds = %bb27
+ %435 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %435, align 4
+ %436 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %436, align 4
+ %437 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %437, align 4
+ %438 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %438, align 4
+ br label %bb32
+
+bb32: ; preds = %bb31, %bb29
+ %439 = phi float [ 0.000000e+00, %bb31 ], [ %428, %bb29 ] ; [#uses=1]
+ %440 = phi float [ 0.000000e+00, %bb31 ], [ %429, %bb29 ] ; [#uses=1]
+ %441 = phi float [ 0.000000e+00, %bb31 ], [ %430, %bb29 ] ; [#uses=1]
+ %442 = fmul float %441, %78 ; [#uses=1]
+ %443 = fmul float %440, %77 ; [#uses=1]
+ %444 = fadd float %442, %443 ; [#uses=1]
+ %445 = fmul float %439, %76 ; [#uses=1]
+ %446 = fadd float %444, %445 ; [#uses=1]
+ %447 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 7 ; [#uses=1]
+ %448 = load float* %447, align 4 ; [#uses=1]
+ %449 = fsub float -0.000000e+00, %448 ; [#uses=1]
+ %450 = fcmp ult float %446, %449 ; [#uses=1]
+ br i1 %450, label %bb35, label %bb36
+
+bb35: ; preds = %bb32
+ %451 = load %struct.btVoronoiSimplexSolver** %8, align 4 ; [#uses=1]
+ call void @_ZN22btVoronoiSimplexSolver14compute_pointsER9btVector3S1_(%struct.btVoronoiSimplexSolver* %451, %struct.btQuadWord* %hitA, %struct.btQuadWord* %hitB)
+ %452 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %453 = getelementptr inbounds %struct.btQuadWord* %hitB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %454 = load float* %453, align 8 ; [#uses=1]
+ store float %454, float* %452, align 4
+ %455 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %456 = getelementptr inbounds %struct.btQuadWord* %hitB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %457 = load float* %456, align 4 ; [#uses=1]
+ store float %457, float* %455, align 4
+ %458 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %459 = getelementptr inbounds %struct.btQuadWord* %hitB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %460 = load float* %459, align 8 ; [#uses=1]
+ store float %460, float* %458, align 4
+ %461 = getelementptr inbounds %"struct.btConvexCast::CastResult"* %result, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %462 = getelementptr inbounds %struct.btQuadWord* %hitB, i32 0, i32 0, i32 3 ; [#uses=1]
+ %463 = load float* %462, align 4 ; [#uses=1]
+ store float %463, float* %461, align 4
+ ret i8 1
+
+bb36: ; preds = %bb32, %bb9, %bb
+ ret i8 0
+}
+
+; [#uses=2]
+define void @_ZN22btSubsimplexConvexCastC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolver(%struct.btGjkConvexCast* nocapture %this, %struct.btConvexShape* %convexA, %struct.btConvexShape* %convexB, %struct.btVoronoiSimplexSolver* %simplexSolver) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV22btSubsimplexConvexCast, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btVoronoiSimplexSolver* %simplexSolver, %struct.btVoronoiSimplexSolver** %1, align 4
+ %2 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btConvexShape* %convexA, %struct.btConvexShape** %2, align 4
+ %3 = getelementptr inbounds %struct.btGjkConvexCast* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConvexShape* %convexB, %struct.btConvexShape** %3, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN22btVoronoiSimplexSolver12removeVertexEi(%struct.btVoronoiSimplexSolver* %this, i32 %index) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 0 ; [#uses=4]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = add nsw i32 %1, -1 ; [#uses=5]
+ store i32 %2, i32* %0, align 4
+ %3 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %index, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %2, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %index, i32 0, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %2, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %index, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %2, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %index, i32 0, i32 3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %2, i32 0, i32 3 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = load i32* %0, align 4 ; [#uses=4]
+ %16 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %index, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %15, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %index, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %15, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %index, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %15, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %index, i32 0, i32 3 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %15, i32 0, i32 3 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = load i32* %0, align 4 ; [#uses=4]
+ %29 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %index, i32 0, i32 0 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %28, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %index, i32 0, i32 1 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %28, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %index, i32 0, i32 2 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %28, i32 0, i32 2 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %index, i32 0, i32 3 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %28, i32 0, i32 3 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN22btVoronoiSimplexSolver14reduceVerticesERK15btUsageBitfield(%struct.btVoronoiSimplexSolver* %this, %struct.btUsageBitfield* nocapture %usedVerts) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 0 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=9]
+ %2 = icmp slt i32 %1, 4 ; [#uses=1]
+ br i1 %2, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btUsageBitfield* %usedVerts, i32 0, i32 0 ; [#uses=1]
+ %4 = load i8* %3, align 2 ; [#uses=1]
+ %tmp = and i8 %4, 8 ; [#uses=1]
+ %5 = icmp eq i8 %tmp, 0 ; [#uses=1]
+ br i1 %5, label %bb4, label %bb6
+
+bb4: ; preds = %bb
+ %6 = add nsw i32 %1, -1 ; [#uses=14]
+ store i32 %6, i32* %0, align 4
+ %7 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 3, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %6, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 3, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %6, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 3, i32 0, i32 2 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %6, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 3, i32 0, i32 3 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %6, i32 0, i32 3 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 3, i32 0, i32 0 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %6, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 3, i32 0, i32 1 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %6, i32 0, i32 1 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 3, i32 0, i32 2 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %6, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 3, i32 0, i32 3 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %6, i32 0, i32 3 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 3, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %6, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 3, i32 0, i32 1 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %6, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 3, i32 0, i32 2 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %6, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 3, i32 0, i32 3 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %6, i32 0, i32 3 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ br label %bb6
+
+bb5: ; preds = %entry
+ %43 = icmp slt i32 %1, 3 ; [#uses=1]
+ br i1 %43, label %bb12, label %bb6
+
+bb6: ; preds = %bb5, %bb4, %bb
+ %44 = phi i32 [ %1, %bb5 ], [ %1, %bb ], [ %6, %bb4 ] ; [#uses=2]
+ %45 = getelementptr inbounds %struct.btUsageBitfield* %usedVerts, i32 0, i32 0 ; [#uses=1]
+ %46 = load i8* %45, align 2 ; [#uses=1]
+ %tmp27 = and i8 %46, 4 ; [#uses=1]
+ %47 = icmp eq i8 %tmp27, 0 ; [#uses=1]
+ br i1 %47, label %bb11, label %bb13
+
+bb11: ; preds = %bb6
+ %48 = add nsw i32 %44, -1 ; [#uses=14]
+ store i32 %48, i32* %0, align 4
+ %49 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %48, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 4
+ %52 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %48, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ store float %54, float* %52, align 4
+ %55 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %48, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ store float %57, float* %55, align 4
+ %58 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 2, i32 0, i32 3 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %48, i32 0, i32 3 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ store float %60, float* %58, align 4
+ %61 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 2, i32 0, i32 0 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %48, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ store float %63, float* %61, align 4
+ %64 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 2, i32 0, i32 1 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %48, i32 0, i32 1 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %64, align 4
+ %67 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 2, i32 0, i32 2 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %48, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ store float %69, float* %67, align 4
+ %70 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 2, i32 0, i32 3 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %48, i32 0, i32 3 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %70, align 4
+ %73 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 2, i32 0, i32 0 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %48, i32 0, i32 0 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ store float %75, float* %73, align 4
+ %76 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 2, i32 0, i32 1 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %48, i32 0, i32 1 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ store float %78, float* %76, align 4
+ %79 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 2, i32 0, i32 2 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %48, i32 0, i32 2 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ store float %81, float* %79, align 4
+ %82 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 2, i32 0, i32 3 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %48, i32 0, i32 3 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %82, align 4
+ br label %bb13
+
+bb12: ; preds = %bb5
+ %85 = icmp slt i32 %1, 2 ; [#uses=1]
+ br i1 %85, label %bb19, label %bb13
+
+bb13: ; preds = %bb12, %bb11, %bb6
+ %86 = phi i32 [ %1, %bb12 ], [ %44, %bb6 ], [ %48, %bb11 ] ; [#uses=2]
+ %87 = getelementptr inbounds %struct.btUsageBitfield* %usedVerts, i32 0, i32 0 ; [#uses=1]
+ %88 = load i8* %87, align 2 ; [#uses=1]
+ %tmp28 = and i8 %88, 2 ; [#uses=1]
+ %89 = icmp eq i8 %tmp28, 0 ; [#uses=1]
+ br i1 %89, label %bb18, label %bb20
+
+bb18: ; preds = %bb13
+ %90 = add nsw i32 %86, -1 ; [#uses=14]
+ store i32 %90, i32* %0, align 4
+ %91 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %90, i32 0, i32 0 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ store float %93, float* %91, align 4
+ %94 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %90, i32 0, i32 1 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %94, align 4
+ %97 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %90, i32 0, i32 2 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ store float %99, float* %97, align 4
+ %100 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %90, i32 0, i32 3 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ store float %102, float* %100, align 4
+ %103 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %90, i32 0, i32 0 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ store float %105, float* %103, align 4
+ %106 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %90, i32 0, i32 1 ; [#uses=1]
+ %108 = load float* %107, align 4 ; [#uses=1]
+ store float %108, float* %106, align 4
+ %109 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %90, i32 0, i32 2 ; [#uses=1]
+ %111 = load float* %110, align 4 ; [#uses=1]
+ store float %111, float* %109, align 4
+ %112 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %90, i32 0, i32 3 ; [#uses=1]
+ %114 = load float* %113, align 4 ; [#uses=1]
+ store float %114, float* %112, align 4
+ %115 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %90, i32 0, i32 0 ; [#uses=1]
+ %117 = load float* %116, align 4 ; [#uses=1]
+ store float %117, float* %115, align 4
+ %118 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %90, i32 0, i32 1 ; [#uses=1]
+ %120 = load float* %119, align 4 ; [#uses=1]
+ store float %120, float* %118, align 4
+ %121 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %90, i32 0, i32 2 ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=1]
+ store float %123, float* %121, align 4
+ %124 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %90, i32 0, i32 3 ; [#uses=1]
+ %126 = load float* %125, align 4 ; [#uses=1]
+ store float %126, float* %124, align 4
+ br label %bb20
+
+bb19: ; preds = %bb12
+ %127 = icmp slt i32 %1, 1 ; [#uses=1]
+ br i1 %127, label %bb22, label %bb20
+
+bb20: ; preds = %bb19, %bb18, %bb13
+ %128 = phi i32 [ %1, %bb19 ], [ %86, %bb13 ], [ %90, %bb18 ] ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btUsageBitfield* %usedVerts, i32 0, i32 0 ; [#uses=1]
+ %130 = load i8* %129, align 2 ; [#uses=1]
+ %tmp29 = and i8 %130, 1 ; [#uses=1]
+ %131 = icmp eq i8 %tmp29, 0 ; [#uses=1]
+ br i1 %131, label %bb25, label %bb22
+
+bb22: ; preds = %bb20, %bb19
+ ret void
+
+bb25: ; preds = %bb20
+ %132 = add nsw i32 %128, -1 ; [#uses=13]
+ store i32 %132, i32* %0, align 4
+ %133 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %132, i32 0, i32 0 ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ store float %135, float* %133, align 4
+ %136 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %132, i32 0, i32 1 ; [#uses=1]
+ %138 = load float* %137, align 4 ; [#uses=1]
+ store float %138, float* %136, align 4
+ %139 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %132, i32 0, i32 2 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ store float %141, float* %139, align 4
+ %142 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %143 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %132, i32 0, i32 3 ; [#uses=1]
+ %144 = load float* %143, align 4 ; [#uses=1]
+ store float %144, float* %142, align 4
+ %145 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %132, i32 0, i32 0 ; [#uses=1]
+ %147 = load float* %146, align 4 ; [#uses=1]
+ store float %147, float* %145, align 4
+ %148 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %149 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %132, i32 0, i32 1 ; [#uses=1]
+ %150 = load float* %149, align 4 ; [#uses=1]
+ store float %150, float* %148, align 4
+ %151 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %132, i32 0, i32 2 ; [#uses=1]
+ %153 = load float* %152, align 4 ; [#uses=1]
+ store float %153, float* %151, align 4
+ %154 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %155 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %132, i32 0, i32 3 ; [#uses=1]
+ %156 = load float* %155, align 4 ; [#uses=1]
+ store float %156, float* %154, align 4
+ %157 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %132, i32 0, i32 0 ; [#uses=1]
+ %159 = load float* %158, align 4 ; [#uses=1]
+ store float %159, float* %157, align 4
+ %160 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %132, i32 0, i32 1 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ store float %162, float* %160, align 4
+ %163 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %132, i32 0, i32 2 ; [#uses=1]
+ %165 = load float* %164, align 4 ; [#uses=1]
+ store float %165, float* %163, align 4
+ %166 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 3 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %132, i32 0, i32 3 ; [#uses=1]
+ %168 = load float* %167, align 4 ; [#uses=1]
+ store float %168, float* %166, align 4
+ ret void
+}
+
+; [#uses=5]
+define void @_ZN22btVoronoiSimplexSolver5resetEv(%struct.btVoronoiSimplexSolver* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 9 ; [#uses=1]
+ store i8 0, i8* %0, align 4
+ %1 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 11 ; [#uses=1]
+ store i8 1, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 7, i32 0, i32 0 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 7, i32 0, i32 1 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 7, i32 0, i32 2 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 7, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ store i8 0, i8* %7, align 4
+ %8 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 2, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 2, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 2, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 2, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 1, i32 0 ; [#uses=2]
+ %13 = load i8* %12, align 2 ; [#uses=1]
+ %14 = and i8 %13, -16 ; [#uses=1]
+ store i8 %14, i8* %12, align 2
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN22btVoronoiSimplexSolver9addVertexERK9btVector3S2_S2_(%struct.btVoronoiSimplexSolver* %this, %struct.btQuadWord* nocapture %w, %struct.btQuadWord* nocapture %p, %struct.btQuadWord* nocapture %q) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 7, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 0 ; [#uses=2]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 7, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 1 ; [#uses=2]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 7, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 2 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 7, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 3 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 11 ; [#uses=1]
+ store i8 1, i8* %12, align 4
+ %13 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 0 ; [#uses=5]
+ %14 = load i32* %13, align 4 ; [#uses=4]
+ %15 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %14, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %1, align 4 ; [#uses=1]
+ store float %16, float* %15, align 4
+ %17 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %14, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %4, align 4 ; [#uses=1]
+ store float %18, float* %17, align 4
+ %19 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %14, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %7, align 4 ; [#uses=1]
+ store float %20, float* %19, align 4
+ %21 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %14, i32 0, i32 3 ; [#uses=1]
+ %22 = load float* %10, align 4 ; [#uses=1]
+ store float %22, float* %21, align 4
+ %23 = load i32* %13, align 4 ; [#uses=4]
+ %24 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %23, i32 0, i32 0 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %23, i32 0, i32 1 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %23, i32 0, i32 2 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %23, i32 0, i32 3 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 3 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = load i32* %13, align 4 ; [#uses=4]
+ %37 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %36, i32 0, i32 0 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %36, i32 0, i32 1 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %36, i32 0, i32 2 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 2 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %36, i32 0, i32 3 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 3 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 4
+ %49 = load i32* %13, align 4 ; [#uses=1]
+ %50 = add nsw i32 %49, 1 ; [#uses=1]
+ store i32 %50, i32* %13, align 4
+ ret void
+}
+
+; [#uses=0]
+define float @_ZN22btVoronoiSimplexSolver9maxVertexEv(%struct.btVoronoiSimplexSolver* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb, label %bb4
+
+bb: ; preds = %bb, %entry
+ %maxV.17 = phi float [ %maxV.0, %bb ], [ 0.000000e+00, %entry ] ; [#uses=2]
+ %i.06 = phi i32 [ %12, %bb ], [ 0, %entry ] ; [#uses=4]
+ %scevgep8 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %i.06, i32 0, i32 0 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %i.06, i32 0, i32 1 ; [#uses=1]
+ %scevgep10 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %i.06, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %scevgep8, align 4 ; [#uses=2]
+ %4 = fmul float %3, %3 ; [#uses=1]
+ %5 = load float* %scevgep9, align 4 ; [#uses=2]
+ %6 = fmul float %5, %5 ; [#uses=1]
+ %7 = fadd float %4, %6 ; [#uses=1]
+ %8 = load float* %scevgep10, align 4 ; [#uses=2]
+ %9 = fmul float %8, %8 ; [#uses=1]
+ %10 = fadd float %7, %9 ; [#uses=2]
+ %11 = fcmp olt float %maxV.17, %10 ; [#uses=1]
+ %maxV.0 = select i1 %11, float %10, float %maxV.17 ; [#uses=2]
+ %12 = add nsw i32 %i.06, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %12, %1 ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb
+
+bb4: ; preds = %bb, %entry
+ %maxV.1.lcssa = phi float [ 0.000000e+00, %entry ], [ %maxV.0, %bb ] ; [#uses=1]
+ ret float %maxV.1.lcssa
+}
+
+; [#uses=0]
+define i32 @_ZNK22btVoronoiSimplexSolver10getSimplexEP9btVector3S1_S1_(%struct.btVoronoiSimplexSolver* nocapture %this, %struct.btQuadWord* nocapture %pBuf, %struct.btQuadWord* nocapture %qBuf, %struct.btQuadWord* nocapture %yBuf) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb, label %bb2
+
+bb: ; preds = %bb, %entry
+ %i.04 = phi i32 [ %15, %bb ], [ 0, %entry ] ; [#uses=25]
+ %scevgep5 = getelementptr inbounds %struct.btQuadWord* %yBuf, i32 %i.04, i32 0, i32 0 ; [#uses=1]
+ %scevgep67 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %i.04, i32 0, i32 0 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btQuadWord* %yBuf, i32 %i.04, i32 0, i32 1 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %i.04, i32 0, i32 1 ; [#uses=1]
+ %scevgep10 = getelementptr %struct.btQuadWord* %yBuf, i32 %i.04, i32 0, i32 2 ; [#uses=1]
+ %scevgep11 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %i.04, i32 0, i32 2 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btQuadWord* %yBuf, i32 %i.04, i32 0, i32 3 ; [#uses=1]
+ %scevgep13 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %i.04, i32 0, i32 3 ; [#uses=1]
+ %scevgep1415 = getelementptr inbounds %struct.btQuadWord* %pBuf, i32 %i.04, i32 0, i32 0 ; [#uses=1]
+ %scevgep1617 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %i.04, i32 0, i32 0 ; [#uses=1]
+ %scevgep18 = getelementptr %struct.btQuadWord* %pBuf, i32 %i.04, i32 0, i32 1 ; [#uses=1]
+ %scevgep19 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %i.04, i32 0, i32 1 ; [#uses=1]
+ %scevgep20 = getelementptr %struct.btQuadWord* %pBuf, i32 %i.04, i32 0, i32 2 ; [#uses=1]
+ %scevgep21 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %i.04, i32 0, i32 2 ; [#uses=1]
+ %scevgep22 = getelementptr %struct.btQuadWord* %pBuf, i32 %i.04, i32 0, i32 3 ; [#uses=1]
+ %scevgep23 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 %i.04, i32 0, i32 3 ; [#uses=1]
+ %scevgep2425 = getelementptr inbounds %struct.btQuadWord* %qBuf, i32 %i.04, i32 0, i32 0 ; [#uses=1]
+ %scevgep2627 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %i.04, i32 0, i32 0 ; [#uses=1]
+ %scevgep28 = getelementptr %struct.btQuadWord* %qBuf, i32 %i.04, i32 0, i32 1 ; [#uses=1]
+ %scevgep29 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %i.04, i32 0, i32 1 ; [#uses=1]
+ %scevgep30 = getelementptr %struct.btQuadWord* %qBuf, i32 %i.04, i32 0, i32 2 ; [#uses=1]
+ %scevgep31 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %i.04, i32 0, i32 2 ; [#uses=1]
+ %scevgep32 = getelementptr %struct.btQuadWord* %qBuf, i32 %i.04, i32 0, i32 3 ; [#uses=1]
+ %scevgep33 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 %i.04, i32 0, i32 3 ; [#uses=1]
+ %3 = load float* %scevgep67, align 4 ; [#uses=1]
+ store float %3, float* %scevgep5, align 4
+ %4 = load float* %scevgep9, align 4 ; [#uses=1]
+ store float %4, float* %scevgep8, align 4
+ %5 = load float* %scevgep11, align 4 ; [#uses=1]
+ store float %5, float* %scevgep10, align 4
+ %6 = load float* %scevgep13, align 4 ; [#uses=1]
+ store float %6, float* %scevgep12, align 4
+ %7 = load float* %scevgep1617, align 4 ; [#uses=1]
+ store float %7, float* %scevgep1415, align 4
+ %8 = load float* %scevgep19, align 4 ; [#uses=1]
+ store float %8, float* %scevgep18, align 4
+ %9 = load float* %scevgep21, align 4 ; [#uses=1]
+ store float %9, float* %scevgep20, align 4
+ %10 = load float* %scevgep23, align 4 ; [#uses=1]
+ store float %10, float* %scevgep22, align 4
+ %11 = load float* %scevgep2627, align 4 ; [#uses=1]
+ store float %11, float* %scevgep2425, align 4
+ %12 = load float* %scevgep29, align 4 ; [#uses=1]
+ store float %12, float* %scevgep28, align 4
+ %13 = load float* %scevgep31, align 4 ; [#uses=1]
+ store float %13, float* %scevgep30, align 4
+ %14 = load float* %scevgep33, align 4 ; [#uses=1]
+ store float %14, float* %scevgep32, align 4
+ %15 = add nsw i32 %i.04, 1 ; [#uses=2]
+ %16 = load i32* %0, align 4 ; [#uses=2]
+ %17 = icmp sgt i32 %16, %15 ; [#uses=1]
+ br i1 %17, label %bb, label %bb2
+
+bb2: ; preds = %bb, %entry
+ %18 = phi i32 [ %1, %entry ], [ %16, %bb ] ; [#uses=1]
+ ret i32 %18
+}
+
+; [#uses=2]
+define zeroext i8 @_ZN22btVoronoiSimplexSolver9inSimplexERK9btVector3(%struct.btVoronoiSimplexSolver* nocapture %this, %struct.btQuadWord* nocapture %w) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %bb4
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 2 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 8 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %i.013 = phi i32 [ 0, %bb.nph ], [ %23, %bb ] ; [#uses=4]
+ %found.112 = phi i8 [ 0, %bb.nph ], [ %found.0, %bb ] ; [#uses=1]
+ %scevgep = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %i.013, i32 0, i32 2 ; [#uses=1]
+ %scevgep14 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %i.013, i32 0, i32 1 ; [#uses=1]
+ %scevgep1516 = getelementptr %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 %i.013, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %scevgep, align 4 ; [#uses=1]
+ %12 = fsub float %4, %11 ; [#uses=2]
+ %13 = load float* %scevgep14, align 4 ; [#uses=1]
+ %14 = fsub float %6, %13 ; [#uses=2]
+ %15 = load float* %scevgep1516, align 4 ; [#uses=1]
+ %16 = fsub float %8, %15 ; [#uses=2]
+ %17 = fmul float %16, %16 ; [#uses=1]
+ %18 = fmul float %14, %14 ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=1]
+ %20 = fmul float %12, %12 ; [#uses=1]
+ %21 = fadd float %19, %20 ; [#uses=1]
+ %22 = fcmp ugt float %21, %10 ; [#uses=1]
+ %found.0 = select i1 %22, i8 %found.112, i8 1 ; [#uses=2]
+ %23 = add nsw i32 %i.013, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %23, %1 ; [#uses=1]
+ br i1 %exitcond, label %bb4, label %bb
+
+bb4: ; preds = %bb, %entry
+ %found.1.lcssa = phi i8 [ 0, %entry ], [ %found.0, %bb ] ; [#uses=2]
+ %24 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 7, i32 0, i32 3 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fcmp une float %25, %27 ; [#uses=1]
+ br i1 %28, label %_ZNK9btVector3eqERKS_.exit, label %bb.i
+
+bb.i: ; preds = %bb4
+ %29 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 7, i32 0, i32 2 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fcmp une float %30, %32 ; [#uses=1]
+ br i1 %33, label %_ZNK9btVector3eqERKS_.exit, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %34 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 7, i32 0, i32 1 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fcmp une float %35, %37 ; [#uses=1]
+ br i1 %38, label %_ZNK9btVector3eqERKS_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %39 = getelementptr inbounds %struct.btQuadWord* %w, i32 0, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 7, i32 0, i32 0 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %phitmp = fcmp une float %40, %42 ; [#uses=1]
+ %phitmp11 = select i1 %phitmp, i8 %found.1.lcssa, i8 1 ; [#uses=1]
+ ret i8 %phitmp11
+
+_ZNK9btVector3eqERKS_.exit: ; preds = %bb1.i, %bb.i, %bb4
+ ret i8 %found.1.lcssa
+}
+
+; [#uses=2]
+define void @_ZN22btVoronoiSimplexSolver14backup_closestER9btVector3(%struct.btVoronoiSimplexSolver* nocapture %this, %struct.btQuadWord* nocapture %v) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ ret void
+}
+
+; [#uses=0]
+define zeroext i8 @_ZNK22btVoronoiSimplexSolver12emptySimplexEv(%struct.btVoronoiSimplexSolver* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ %retval12 = zext i1 %2 to i8 ; [#uses=1]
+ ret i8 %retval12
+}
+
+; [#uses=5]
+define zeroext i8 @_ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(%struct.btVoronoiSimplexSolver* nocapture %this, %struct.btQuadWord* nocapture %p, %struct.btQuadWord* %a, %struct.btQuadWord* nocapture %b, %struct.btQuadWord* nocapture %c, %struct.btSubSimplexClosestResult* %result) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 1, i32 0 ; [#uses=9]
+ %1 = load i8* %0, align 2 ; [#uses=1]
+ %2 = and i8 %1, -16 ; [#uses=8]
+ store i8 %2, i8* %0, align 2
+ %3 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 2 ; [#uses=2]
+ %4 = load float* %3, align 4 ; [#uses=4]
+ %5 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 2 ; [#uses=2]
+ %6 = load float* %5, align 4 ; [#uses=6]
+ %7 = fsub float %4, %6 ; [#uses=5]
+ %8 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 1 ; [#uses=2]
+ %9 = load float* %8, align 4 ; [#uses=4]
+ %10 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 1 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=6]
+ %12 = fsub float %9, %11 ; [#uses=5]
+ %13 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=5]
+ %15 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=7]
+ %17 = fsub float %14, %16 ; [#uses=5]
+ %18 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 2 ; [#uses=2]
+ %19 = load float* %18, align 4 ; [#uses=3]
+ %20 = fsub float %19, %6 ; [#uses=5]
+ %21 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 1 ; [#uses=2]
+ %22 = load float* %21, align 4 ; [#uses=3]
+ %23 = fsub float %22, %11 ; [#uses=5]
+ %24 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=4]
+ %26 = fsub float %25, %16 ; [#uses=5]
+ %27 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=3]
+ %29 = fsub float %28, %6 ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=3]
+ %32 = fsub float %31, %11 ; [#uses=2]
+ %33 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=3]
+ %35 = fsub float %34, %16 ; [#uses=2]
+ %36 = fmul float %17, %35 ; [#uses=1]
+ %37 = fmul float %12, %32 ; [#uses=1]
+ %38 = fadd float %36, %37 ; [#uses=1]
+ %39 = fmul float %7, %29 ; [#uses=1]
+ %40 = fadd float %38, %39 ; [#uses=6]
+ %41 = fmul float %26, %35 ; [#uses=1]
+ %42 = fmul float %23, %32 ; [#uses=1]
+ %43 = fadd float %41, %42 ; [#uses=1]
+ %44 = fmul float %20, %29 ; [#uses=1]
+ %45 = fadd float %43, %44 ; [#uses=6]
+ %46 = fcmp ugt float %40, 0.000000e+00 ; [#uses=1]
+ %47 = fcmp ugt float %45, 0.000000e+00 ; [#uses=1]
+ %or.cond = or i1 %46, %47 ; [#uses=1]
+ br i1 %or.cond, label %bb2, label %bb1
+
+bb1: ; preds = %entry
+ %48 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %16, float* %48, align 4
+ %49 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %10, align 4 ; [#uses=1]
+ store float %50, float* %49, align 4
+ %51 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %52 = load float* %5, align 4 ; [#uses=1]
+ store float %52, float* %51, align 4
+ %53 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 3 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ %56 = or i8 %2, 1 ; [#uses=1]
+ store i8 %56, i8* %0, align 4
+ %57 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %59, align 4
+ %60 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 4
+ ret i8 1
+
+bb2: ; preds = %entry
+ %61 = fsub float %28, %4 ; [#uses=2]
+ %62 = fsub float %31, %9 ; [#uses=2]
+ %63 = fsub float %34, %14 ; [#uses=2]
+ %64 = fmul float %17, %63 ; [#uses=1]
+ %65 = fmul float %12, %62 ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=1]
+ %67 = fmul float %7, %61 ; [#uses=1]
+ %68 = fadd float %66, %67 ; [#uses=7]
+ %69 = fmul float %26, %63 ; [#uses=1]
+ %70 = fmul float %23, %62 ; [#uses=1]
+ %71 = fadd float %69, %70 ; [#uses=1]
+ %72 = fmul float %20, %61 ; [#uses=1]
+ %73 = fadd float %71, %72 ; [#uses=4]
+ %74 = fcmp ult float %68, 0.000000e+00 ; [#uses=1]
+ %75 = fcmp ugt float %73, %68 ; [#uses=1]
+ %or.cond32 = or i1 %74, %75 ; [#uses=1]
+ br i1 %or.cond32, label %bb5, label %bb4
+
+bb4: ; preds = %bb2
+ %76 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %14, float* %76, align 4
+ %77 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %78 = load float* %8, align 4 ; [#uses=1]
+ store float %78, float* %77, align 4
+ %79 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %80 = load float* %3, align 4 ; [#uses=1]
+ store float %80, float* %79, align 4
+ %81 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 3 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ store float %83, float* %81, align 4
+ %84 = or i8 %2, 2 ; [#uses=1]
+ store i8 %84, i8* %0, align 4
+ %85 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %85, align 4
+ %86 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %86, align 4
+ %87 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %87, align 4
+ %88 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %88, align 4
+ ret i8 1
+
+bb5: ; preds = %bb2
+ %89 = fmul float %40, %73 ; [#uses=1]
+ %90 = fmul float %68, %45 ; [#uses=1]
+ %91 = fsub float %89, %90 ; [#uses=3]
+ %92 = fcmp ugt float %91, 0.000000e+00 ; [#uses=1]
+ %93 = fcmp ult float %40, 0.000000e+00 ; [#uses=1]
+ %or.cond33 = or i1 %92, %93 ; [#uses=1]
+ %94 = fcmp ugt float %68, 0.000000e+00 ; [#uses=1]
+ %or.cond34 = or i1 %or.cond33, %94 ; [#uses=1]
+ br i1 %or.cond34, label %bb10, label %bb8
+
+bb8: ; preds = %bb5
+ %95 = fsub float %40, %68 ; [#uses=1]
+ %96 = fdiv float %40, %95 ; [#uses=5]
+ %97 = fmul float %7, %96 ; [#uses=1]
+ %98 = fmul float %12, %96 ; [#uses=1]
+ %99 = fmul float %17, %96 ; [#uses=1]
+ %100 = fadd float %6, %97 ; [#uses=1]
+ %101 = fadd float %11, %98 ; [#uses=1]
+ %102 = fadd float %16, %99 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %102, float* %103, align 4
+ %104 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %101, float* %104, align 4
+ %105 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %100, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %106, align 4
+ %107 = or i8 %2, 3 ; [#uses=1]
+ store i8 %107, i8* %0, align 4
+ %108 = fsub float 1.000000e+00, %96 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 0 ; [#uses=1]
+ store float %108, float* %109, align 4
+ %110 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 1 ; [#uses=1]
+ store float %96, float* %110, align 4
+ %111 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %111, align 4
+ %112 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %112, align 4
+ ret i8 1
+
+bb10: ; preds = %bb5
+ %113 = fsub float %28, %19 ; [#uses=2]
+ %114 = fsub float %31, %22 ; [#uses=2]
+ %115 = fsub float %34, %25 ; [#uses=2]
+ %116 = fmul float %17, %115 ; [#uses=1]
+ %117 = fmul float %12, %114 ; [#uses=1]
+ %118 = fadd float %116, %117 ; [#uses=1]
+ %119 = fmul float %7, %113 ; [#uses=1]
+ %120 = fadd float %118, %119 ; [#uses=4]
+ %121 = fmul float %26, %115 ; [#uses=1]
+ %122 = fmul float %23, %114 ; [#uses=1]
+ %123 = fadd float %121, %122 ; [#uses=1]
+ %124 = fmul float %20, %113 ; [#uses=1]
+ %125 = fadd float %123, %124 ; [#uses=7]
+ %126 = fcmp ult float %125, 0.000000e+00 ; [#uses=1]
+ %127 = fcmp ugt float %120, %125 ; [#uses=1]
+ %or.cond35 = or i1 %126, %127 ; [#uses=1]
+ br i1 %or.cond35, label %bb13, label %bb12
+
+bb12: ; preds = %bb10
+ %128 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %25, float* %128, align 4
+ %129 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %130 = load float* %21, align 4 ; [#uses=1]
+ store float %130, float* %129, align 4
+ %131 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %132 = load float* %18, align 4 ; [#uses=1]
+ store float %132, float* %131, align 4
+ %133 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 3 ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ store float %135, float* %133, align 4
+ %136 = or i8 %2, 4 ; [#uses=1]
+ store i8 %136, i8* %0, align 4
+ %137 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %137, align 4
+ %138 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %138, align 4
+ %139 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %139, align 4
+ %140 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %140, align 4
+ ret i8 1
+
+bb13: ; preds = %bb10
+ %141 = fmul float %120, %45 ; [#uses=1]
+ %142 = fmul float %40, %125 ; [#uses=1]
+ %143 = fsub float %141, %142 ; [#uses=3]
+ %144 = fcmp ugt float %143, 0.000000e+00 ; [#uses=1]
+ %145 = fcmp ult float %45, 0.000000e+00 ; [#uses=1]
+ %or.cond36 = or i1 %144, %145 ; [#uses=1]
+ %146 = fcmp ugt float %125, 0.000000e+00 ; [#uses=1]
+ %or.cond37 = or i1 %or.cond36, %146 ; [#uses=1]
+ br i1 %or.cond37, label %bb20, label %bb16
+
+bb16: ; preds = %bb13
+ %147 = fsub float %45, %125 ; [#uses=1]
+ %148 = fdiv float %45, %147 ; [#uses=5]
+ %149 = fmul float %20, %148 ; [#uses=1]
+ %150 = fmul float %23, %148 ; [#uses=1]
+ %151 = fmul float %26, %148 ; [#uses=1]
+ %152 = fadd float %6, %149 ; [#uses=1]
+ %153 = fadd float %11, %150 ; [#uses=1]
+ %154 = fadd float %16, %151 ; [#uses=1]
+ %155 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %154, float* %155, align 4
+ %156 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %153, float* %156, align 4
+ %157 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %152, float* %157, align 4
+ %158 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %158, align 4
+ %159 = or i8 %2, 5 ; [#uses=1]
+ store i8 %159, i8* %0, align 4
+ %160 = fsub float 1.000000e+00, %148 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 0 ; [#uses=1]
+ store float %160, float* %161, align 4
+ %162 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %162, align 4
+ %163 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 2 ; [#uses=1]
+ store float %148, float* %163, align 4
+ %164 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %164, align 4
+ ret i8 1
+
+bb20: ; preds = %bb13
+ %165 = fmul float %68, %125 ; [#uses=1]
+ %166 = fmul float %120, %73 ; [#uses=1]
+ %167 = fsub float %165, %166 ; [#uses=2]
+ %168 = fcmp ugt float %167, 0.000000e+00 ; [#uses=1]
+ %169 = fsub float %73, %68 ; [#uses=3]
+ %170 = fcmp ult float %169, 0.000000e+00 ; [#uses=1]
+ %or.cond39 = or i1 %168, %170 ; [#uses=1]
+ br i1 %or.cond39, label %bb27, label %bb22
+
+bb22: ; preds = %bb20
+ %171 = fsub float %120, %125 ; [#uses=2]
+ %172 = fcmp ult float %171, 0.000000e+00 ; [#uses=1]
+ br i1 %172, label %bb27, label %bb23
+
+bb23: ; preds = %bb22
+ %173 = fadd float %169, %171 ; [#uses=1]
+ %174 = fdiv float %169, %173 ; [#uses=5]
+ %175 = fsub float %19, %4 ; [#uses=1]
+ %176 = fsub float %22, %9 ; [#uses=1]
+ %177 = fsub float %25, %14 ; [#uses=1]
+ %178 = fmul float %175, %174 ; [#uses=1]
+ %179 = fmul float %176, %174 ; [#uses=1]
+ %180 = fmul float %177, %174 ; [#uses=1]
+ %181 = fadd float %4, %178 ; [#uses=1]
+ %182 = fadd float %9, %179 ; [#uses=1]
+ %183 = fadd float %14, %180 ; [#uses=1]
+ %184 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %183, float* %184, align 4
+ %185 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %182, float* %185, align 4
+ %186 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %181, float* %186, align 4
+ %187 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %187, align 4
+ %188 = or i8 %2, 6 ; [#uses=1]
+ store i8 %188, i8* %0, align 4
+ %189 = fsub float 1.000000e+00, %174 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %190, align 4
+ %191 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 1 ; [#uses=1]
+ store float %189, float* %191, align 4
+ %192 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 2 ; [#uses=1]
+ store float %174, float* %192, align 4
+ %193 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %193, align 4
+ ret i8 1
+
+bb27: ; preds = %bb22, %bb20
+ %194 = fadd float %167, %143 ; [#uses=1]
+ %195 = fadd float %194, %91 ; [#uses=1]
+ %196 = fdiv float 1.000000e+00, %195 ; [#uses=2]
+ %197 = fmul float %143, %196 ; [#uses=5]
+ %198 = fmul float %91, %196 ; [#uses=5]
+ %199 = fmul float %20, %198 ; [#uses=1]
+ %200 = fmul float %23, %198 ; [#uses=1]
+ %201 = fmul float %26, %198 ; [#uses=1]
+ %202 = fmul float %7, %197 ; [#uses=1]
+ %203 = fmul float %12, %197 ; [#uses=1]
+ %204 = fmul float %17, %197 ; [#uses=1]
+ %205 = fadd float %6, %202 ; [#uses=1]
+ %206 = fadd float %11, %203 ; [#uses=1]
+ %207 = fadd float %16, %204 ; [#uses=1]
+ %208 = fadd float %205, %199 ; [#uses=1]
+ %209 = fadd float %206, %200 ; [#uses=1]
+ %210 = fadd float %207, %201 ; [#uses=1]
+ %211 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %210, float* %211, align 4
+ %212 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %209, float* %212, align 4
+ %213 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %208, float* %213, align 4
+ %214 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %214, align 4
+ %215 = or i8 %2, 7 ; [#uses=1]
+ store i8 %215, i8* %0, align 4
+ %216 = fsub float 1.000000e+00, %197 ; [#uses=1]
+ %217 = fsub float %216, %198 ; [#uses=1]
+ %218 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 0 ; [#uses=1]
+ store float %217, float* %218, align 4
+ %219 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 1 ; [#uses=1]
+ store float %197, float* %219, align 4
+ %220 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 2 ; [#uses=1]
+ store float %198, float* %220, align 4
+ %221 = getelementptr inbounds %struct.btSubSimplexClosestResult* %result, i32 0, i32 2, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %221, align 4
+ ret i8 1
+}
+
+; [#uses=0]
+define i32 @_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_(%struct.btVoronoiSimplexSolver* nocapture %this, %struct.btQuadWord* nocapture %p, %struct.btQuadWord* nocapture %a, %struct.btQuadWord* nocapture %b, %struct.btQuadWord* nocapture %c, %struct.btQuadWord* nocapture %d) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ %4 = fsub float %1, %3 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=4]
+ %9 = fsub float %6, %8 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=4]
+ %14 = fsub float %11, %13 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fsub float %16, %3 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fsub float %19, %8 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fsub float %22, %13 ; [#uses=2]
+ %24 = fmul float %23, %9 ; [#uses=1]
+ %25 = fmul float %20, %14 ; [#uses=1]
+ %26 = fsub float %24, %25 ; [#uses=2]
+ %27 = fmul float %17, %14 ; [#uses=1]
+ %28 = fmul float %23, %4 ; [#uses=1]
+ %29 = fsub float %27, %28 ; [#uses=2]
+ %30 = fmul float %20, %4 ; [#uses=1]
+ %31 = fmul float %17, %9 ; [#uses=1]
+ %32 = fsub float %30, %31 ; [#uses=2]
+ %33 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fsub float %34, %3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 1 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fsub float %37, %8 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fsub float %40, %13 ; [#uses=1]
+ %42 = fmul float %41, %32 ; [#uses=1]
+ %43 = fmul float %38, %29 ; [#uses=1]
+ %44 = fadd float %42, %43 ; [#uses=1]
+ %45 = fmul float %35, %26 ; [#uses=1]
+ %46 = fadd float %44, %45 ; [#uses=3]
+ %47 = fmul float %46, %46 ; [#uses=1]
+ %48 = fcmp olt float %47, 0x3E45798EC0000000 ; [#uses=1]
+ br i1 %48, label %bb2, label %bb1
+
+bb1: ; preds = %entry
+ %49 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=1]
+ %51 = load float* %49, align 4 ; [#uses=1]
+ %52 = load float* %50, align 4 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=1]
+ %54 = fsub float %51, %13 ; [#uses=1]
+ %55 = fsub float %52, %8 ; [#uses=1]
+ %56 = load float* %53, align 4 ; [#uses=1]
+ %57 = fmul float %55, %29 ; [#uses=1]
+ %58 = fmul float %54, %32 ; [#uses=1]
+ %59 = fsub float %56, %3 ; [#uses=1]
+ %60 = fmul float %59, %26 ; [#uses=1]
+ %61 = fadd float %58, %57 ; [#uses=1]
+ %62 = fadd float %61, %60 ; [#uses=1]
+ %63 = fmul float %62, %46 ; [#uses=1]
+ %64 = fcmp olt float %63, 0.000000e+00 ; [#uses=1]
+ %65 = zext i1 %64 to i32 ; [#uses=1]
+ ret i32 %65
+
+bb2: ; preds = %entry
+ ret i32 -1
+}
+
+; [#uses=1]
+define zeroext i8 @_ZN22btVoronoiSimplexSolver25closestPtPointTetrahedronERK9btVector3S2_S2_S2_S2_R25btSubSimplexClosestResult(%struct.btVoronoiSimplexSolver* nocapture %this, %struct.btQuadWord* %p, %struct.btQuadWord* %a, %struct.btQuadWord* %b, %struct.btQuadWord* nocapture %c, %struct.btQuadWord* nocapture %d, %struct.btSubSimplexClosestResult* %finalResult) nounwind align 2 {
+entry:
+ %tempResult = alloca %struct.btSubSimplexClosestResult, align 8 ; [#uses=33]
+ %0 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 1, i32 0 ; [#uses=5]
+ store i8 0, i8* %0, align 8
+ %1 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 0, i32 0, i32 0 ; [#uses=5]
+ %2 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=9]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %1, align 4
+ %4 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 0, i32 0, i32 1 ; [#uses=5]
+ %5 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=9]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 0, i32 0, i32 2 ; [#uses=5]
+ %8 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=9]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 0, i32 0, i32 3 ; [#uses=5]
+ %11 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 1, i32 0 ; [#uses=10]
+ %14 = load i8* %13, align 2 ; [#uses=1]
+ %15 = or i8 %14, 15 ; [#uses=1]
+ store i8 %15, i8* %13, align 4
+ %16 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=7]
+ %20 = fsub float %17, %19 ; [#uses=5]
+ %21 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ %23 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 1 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=7]
+ %25 = fsub float %22, %24 ; [#uses=5]
+ %26 = getelementptr inbounds %struct.btQuadWord* %c, i32 0, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btQuadWord* %a, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=7]
+ %30 = fsub float %27, %29 ; [#uses=5]
+ %31 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 2 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=5]
+ %33 = fsub float %32, %19 ; [#uses=5]
+ %34 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=5]
+ %36 = fsub float %35, %24 ; [#uses=5]
+ %37 = getelementptr inbounds %struct.btQuadWord* %b, i32 0, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=5]
+ %39 = fsub float %38, %29 ; [#uses=5]
+ %40 = fmul float %39, %25 ; [#uses=1]
+ %41 = fmul float %36, %30 ; [#uses=1]
+ %42 = fsub float %40, %41 ; [#uses=2]
+ %43 = fmul float %33, %30 ; [#uses=1]
+ %44 = fmul float %39, %20 ; [#uses=1]
+ %45 = fsub float %43, %44 ; [#uses=2]
+ %46 = fmul float %36, %20 ; [#uses=1]
+ %47 = fmul float %33, %25 ; [#uses=1]
+ %48 = fsub float %46, %47 ; [#uses=2]
+ %49 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 2 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=2]
+ %51 = fsub float %50, %19 ; [#uses=5]
+ %52 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=2]
+ %54 = fsub float %53, %24 ; [#uses=5]
+ %55 = getelementptr inbounds %struct.btQuadWord* %d, i32 0, i32 0, i32 0 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=2]
+ %57 = fsub float %56, %29 ; [#uses=5]
+ %58 = fmul float %57, %48 ; [#uses=1]
+ %59 = fmul float %54, %45 ; [#uses=1]
+ %60 = fadd float %58, %59 ; [#uses=1]
+ %61 = fmul float %51, %42 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=3]
+ %63 = fmul float %62, %62 ; [#uses=1]
+ %64 = fcmp olt float %63, 0x3E45798EC0000000 ; [#uses=1]
+ br i1 %64, label %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit, label %bb1.i
+
+bb1.i: ; preds = %entry
+ %65 = load float* %2, align 4 ; [#uses=1]
+ %66 = load float* %5, align 4 ; [#uses=1]
+ %67 = fsub float %65, %29 ; [#uses=1]
+ %68 = fsub float %66, %24 ; [#uses=1]
+ %69 = load float* %8, align 4 ; [#uses=1]
+ %70 = fmul float %68, %45 ; [#uses=1]
+ %71 = fmul float %67, %48 ; [#uses=1]
+ %72 = fsub float %69, %19 ; [#uses=1]
+ %73 = fmul float %72, %42 ; [#uses=1]
+ %74 = fadd float %71, %70 ; [#uses=1]
+ %75 = fadd float %74, %73 ; [#uses=1]
+ %76 = fmul float %75, %62 ; [#uses=1]
+ %77 = fcmp olt float %76, 0.000000e+00 ; [#uses=1]
+ %78 = zext i1 %77 to i32 ; [#uses=1]
+ br label %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit
+
+_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit: ; preds = %bb1.i, %entry
+ %79 = phi i32 [ %78, %bb1.i ], [ -1, %entry ] ; [#uses=2]
+ %80 = fmul float %30, %54 ; [#uses=1]
+ %81 = fmul float %25, %57 ; [#uses=1]
+ %82 = fsub float %80, %81 ; [#uses=2]
+ %83 = fmul float %20, %57 ; [#uses=1]
+ %84 = fmul float %30, %51 ; [#uses=1]
+ %85 = fsub float %83, %84 ; [#uses=2]
+ %86 = fmul float %25, %51 ; [#uses=1]
+ %87 = fmul float %20, %54 ; [#uses=1]
+ %88 = fsub float %86, %87 ; [#uses=2]
+ %89 = fmul float %39, %88 ; [#uses=1]
+ %90 = fmul float %36, %85 ; [#uses=1]
+ %91 = fadd float %89, %90 ; [#uses=1]
+ %92 = fmul float %33, %82 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=3]
+ %94 = fmul float %93, %93 ; [#uses=1]
+ %95 = fcmp olt float %94, 0x3E45798EC0000000 ; [#uses=1]
+ br i1 %95, label %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit67, label %bb1.i65
+
+bb1.i65: ; preds = %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit
+ %96 = load float* %2, align 4 ; [#uses=1]
+ %97 = load float* %5, align 4 ; [#uses=1]
+ %98 = fsub float %96, %29 ; [#uses=1]
+ %99 = fsub float %97, %24 ; [#uses=1]
+ %100 = load float* %8, align 4 ; [#uses=1]
+ %101 = fmul float %99, %85 ; [#uses=1]
+ %102 = fmul float %98, %88 ; [#uses=1]
+ %103 = fsub float %100, %19 ; [#uses=1]
+ %104 = fmul float %103, %82 ; [#uses=1]
+ %105 = fadd float %102, %101 ; [#uses=1]
+ %106 = fadd float %105, %104 ; [#uses=1]
+ %107 = fmul float %106, %93 ; [#uses=1]
+ %108 = fcmp olt float %107, 0.000000e+00 ; [#uses=1]
+ %109 = zext i1 %108 to i32 ; [#uses=1]
+ br label %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit67
+
+_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit67: ; preds = %bb1.i65, %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit
+ %110 = phi i32 [ %109, %bb1.i65 ], [ -1, %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit ] ; [#uses=2]
+ %111 = fmul float %57, %36 ; [#uses=1]
+ %112 = fmul float %54, %39 ; [#uses=1]
+ %113 = fsub float %111, %112 ; [#uses=2]
+ %114 = fmul float %51, %39 ; [#uses=1]
+ %115 = fmul float %57, %33 ; [#uses=1]
+ %116 = fsub float %114, %115 ; [#uses=2]
+ %117 = fmul float %54, %33 ; [#uses=1]
+ %118 = fmul float %51, %36 ; [#uses=1]
+ %119 = fsub float %117, %118 ; [#uses=2]
+ %120 = fmul float %30, %119 ; [#uses=1]
+ %121 = fmul float %25, %116 ; [#uses=1]
+ %122 = fadd float %120, %121 ; [#uses=1]
+ %123 = fmul float %20, %113 ; [#uses=1]
+ %124 = fadd float %122, %123 ; [#uses=3]
+ %125 = fmul float %124, %124 ; [#uses=1]
+ %126 = fcmp olt float %125, 0x3E45798EC0000000 ; [#uses=1]
+ br i1 %126, label %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit70, label %bb1.i68
+
+bb1.i68: ; preds = %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit67
+ %127 = load float* %2, align 4 ; [#uses=1]
+ %128 = load float* %5, align 4 ; [#uses=1]
+ %129 = fsub float %127, %29 ; [#uses=1]
+ %130 = fsub float %128, %24 ; [#uses=1]
+ %131 = load float* %8, align 4 ; [#uses=1]
+ %132 = fmul float %130, %116 ; [#uses=1]
+ %133 = fmul float %129, %119 ; [#uses=1]
+ %134 = fsub float %131, %19 ; [#uses=1]
+ %135 = fmul float %134, %113 ; [#uses=1]
+ %136 = fadd float %133, %132 ; [#uses=1]
+ %137 = fadd float %136, %135 ; [#uses=1]
+ %138 = fmul float %137, %124 ; [#uses=1]
+ %139 = fcmp olt float %138, 0.000000e+00 ; [#uses=1]
+ %140 = zext i1 %139 to i32 ; [#uses=1]
+ br label %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit70
+
+_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit70: ; preds = %bb1.i68, %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit67
+ %141 = phi i32 [ %140, %bb1.i68 ], [ -1, %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit67 ] ; [#uses=3]
+ %142 = fsub float %17, %32 ; [#uses=2]
+ %143 = fsub float %22, %35 ; [#uses=2]
+ %144 = fsub float %27, %38 ; [#uses=2]
+ %145 = fsub float %50, %32 ; [#uses=2]
+ %146 = fsub float %53, %35 ; [#uses=2]
+ %147 = fsub float %56, %38 ; [#uses=2]
+ %148 = fmul float %147, %143 ; [#uses=1]
+ %149 = fmul float %146, %144 ; [#uses=1]
+ %150 = fsub float %148, %149 ; [#uses=2]
+ %151 = fmul float %145, %144 ; [#uses=1]
+ %152 = fmul float %147, %142 ; [#uses=1]
+ %153 = fsub float %151, %152 ; [#uses=2]
+ %154 = fmul float %146, %142 ; [#uses=1]
+ %155 = fmul float %145, %143 ; [#uses=1]
+ %156 = fsub float %154, %155 ; [#uses=2]
+ %157 = fsub float %19, %32 ; [#uses=1]
+ %158 = fsub float %24, %35 ; [#uses=1]
+ %159 = fsub float %29, %38 ; [#uses=1]
+ %160 = fmul float %159, %156 ; [#uses=1]
+ %161 = fmul float %158, %153 ; [#uses=1]
+ %162 = fadd float %160, %161 ; [#uses=1]
+ %163 = fmul float %157, %150 ; [#uses=1]
+ %164 = fadd float %162, %163 ; [#uses=3]
+ %165 = fmul float %164, %164 ; [#uses=1]
+ %166 = fcmp olt float %165, 0x3E45798EC0000000 ; [#uses=1]
+ br i1 %166, label %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit73, label %bb1.i71
+
+bb1.i71: ; preds = %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit70
+ %167 = load float* %2, align 4 ; [#uses=1]
+ %168 = load float* %5, align 4 ; [#uses=1]
+ %169 = fsub float %167, %38 ; [#uses=1]
+ %170 = fsub float %168, %35 ; [#uses=1]
+ %171 = load float* %8, align 4 ; [#uses=1]
+ %172 = fmul float %170, %153 ; [#uses=1]
+ %173 = fmul float %169, %156 ; [#uses=1]
+ %174 = fsub float %171, %32 ; [#uses=1]
+ %175 = fmul float %174, %150 ; [#uses=1]
+ %176 = fadd float %173, %172 ; [#uses=1]
+ %177 = fadd float %176, %175 ; [#uses=1]
+ %178 = fmul float %177, %164 ; [#uses=1]
+ %179 = fcmp olt float %178, 0.000000e+00 ; [#uses=1]
+ %180 = zext i1 %179 to i32 ; [#uses=1]
+ br label %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit73
+
+_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit73: ; preds = %bb1.i71, %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit70
+ %181 = phi i32 [ %180, %bb1.i71 ], [ -1, %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit70 ] ; [#uses=3]
+ %.lobit4042 = or i32 %110, %79 ; [#uses=2]
+ %toBool2 = icmp slt i32 %.lobit4042, 0 ; [#uses=1]
+ br i1 %toBool2, label %bb6, label %bb
+
+bb: ; preds = %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit73
+ %.lobit4749 = or i32 %181, %141 ; [#uses=1]
+ %toBool5 = icmp slt i32 %.lobit4749, 0 ; [#uses=1]
+ br i1 %toBool5, label %bb6, label %bb7
+
+bb6: ; preds = %bb, %_ZN22btVoronoiSimplexSolver19pointOutsideOfPlaneERK9btVector3S2_S2_S2_S2_.exit73
+ %182 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 3 ; [#uses=1]
+ store i8 1, i8* %182, align 4
+ ret i8 0
+
+bb7: ; preds = %bb
+ %183 = or i32 %.lobit4042, %141 ; [#uses=1]
+ %184 = or i32 %183, %181 ; [#uses=1]
+ %185 = icmp eq i32 %184, 0 ; [#uses=1]
+ br i1 %185, label %bb33, label %bb9
+
+bb9: ; preds = %bb7
+ %186 = icmp eq i32 %79, 0 ; [#uses=1]
+ br i1 %186, label %bb12, label %bb10
+
+bb10: ; preds = %bb9
+ %187 = call zeroext i8 @_ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(%struct.btVoronoiSimplexSolver* %this, %struct.btQuadWord* %p, %struct.btQuadWord* %a, %struct.btQuadWord* %b, %struct.btQuadWord* %c, %struct.btSubSimplexClosestResult* %tempResult) nounwind ; [#uses=0]
+ %188 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %189 = load float* %188, align 8 ; [#uses=2]
+ %190 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %191 = load float* %190, align 4 ; [#uses=2]
+ %192 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %193 = load float* %192, align 8 ; [#uses=2]
+ %194 = load float* %8, align 4 ; [#uses=1]
+ %195 = fsub float %193, %194 ; [#uses=2]
+ %196 = load float* %5, align 4 ; [#uses=1]
+ %197 = fsub float %191, %196 ; [#uses=2]
+ %198 = load float* %2, align 4 ; [#uses=1]
+ %199 = fsub float %189, %198 ; [#uses=2]
+ %200 = fmul float %199, %199 ; [#uses=1]
+ %201 = fmul float %197, %197 ; [#uses=1]
+ %202 = fadd float %200, %201 ; [#uses=1]
+ %203 = fmul float %195, %195 ; [#uses=1]
+ %204 = fadd float %202, %203 ; [#uses=2]
+ %205 = fcmp olt float %204, 0x47EFFFFFE0000000 ; [#uses=1]
+ br i1 %205, label %bb11, label %bb12
+
+bb11: ; preds = %bb10
+ %206 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %207 = load float* %206, align 4 ; [#uses=1]
+ store float %189, float* %1, align 4
+ store float %191, float* %4, align 4
+ store float %193, float* %7, align 4
+ store float %207, float* %10, align 4
+ %208 = load i8* %13, align 2 ; [#uses=1]
+ %209 = load i8* %0, align 8 ; [#uses=3]
+ %210 = and i8 %209, 1 ; [#uses=1]
+ %.masked119 = and i8 %208, -16 ; [#uses=1]
+ %211 = or i8 %210, %.masked119 ; [#uses=1]
+ %212 = and i8 %209, 4 ; [#uses=1]
+ %.masked120 = and i8 %209, 2 ; [#uses=1]
+ %213 = or i8 %211, %.masked120 ; [#uses=1]
+ %214 = or i8 %213, %212 ; [#uses=1]
+ store i8 %214, i8* %13, align 4
+ %215 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 2, i32 2 ; [#uses=1]
+ %216 = load float* %215, align 4 ; [#uses=1]
+ %217 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 2, i32 1 ; [#uses=1]
+ %218 = load float* %217, align 4 ; [#uses=1]
+ %219 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 2, i32 0 ; [#uses=1]
+ %220 = load float* %219, align 4 ; [#uses=1]
+ %221 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 0 ; [#uses=1]
+ store float %220, float* %221, align 4
+ %222 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 1 ; [#uses=1]
+ store float %218, float* %222, align 4
+ %223 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 2 ; [#uses=1]
+ store float %216, float* %223, align 4
+ %224 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %224, align 4
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb10, %bb9
+ %bestSqDist.0 = phi float [ %204, %bb11 ], [ 0x47EFFFFFE0000000, %bb10 ], [ 0x47EFFFFFE0000000, %bb9 ] ; [#uses=3]
+ %225 = icmp eq i32 %110, 0 ; [#uses=1]
+ br i1 %225, label %bb17, label %bb13
+
+bb13: ; preds = %bb12
+ %226 = call zeroext i8 @_ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(%struct.btVoronoiSimplexSolver* %this, %struct.btQuadWord* %p, %struct.btQuadWord* %a, %struct.btQuadWord* %c, %struct.btQuadWord* %d, %struct.btSubSimplexClosestResult* %tempResult) nounwind ; [#uses=0]
+ %227 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %228 = load float* %227, align 8 ; [#uses=2]
+ %229 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %230 = load float* %229, align 4 ; [#uses=2]
+ %231 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %232 = load float* %231, align 8 ; [#uses=2]
+ %233 = load float* %8, align 4 ; [#uses=1]
+ %234 = fsub float %232, %233 ; [#uses=2]
+ %235 = load float* %5, align 4 ; [#uses=1]
+ %236 = fsub float %230, %235 ; [#uses=2]
+ %237 = load float* %2, align 4 ; [#uses=1]
+ %238 = fsub float %228, %237 ; [#uses=2]
+ %239 = fmul float %238, %238 ; [#uses=1]
+ %240 = fmul float %236, %236 ; [#uses=1]
+ %241 = fadd float %239, %240 ; [#uses=1]
+ %242 = fmul float %234, %234 ; [#uses=1]
+ %243 = fadd float %241, %242 ; [#uses=2]
+ %244 = fcmp olt float %243, %bestSqDist.0 ; [#uses=1]
+ br i1 %244, label %bb16, label %bb17
+
+bb16: ; preds = %bb13
+ %245 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %246 = load float* %245, align 4 ; [#uses=1]
+ store float %228, float* %1, align 4
+ store float %230, float* %4, align 4
+ store float %232, float* %7, align 4
+ store float %246, float* %10, align 4
+ %247 = load i8* %13, align 2 ; [#uses=1]
+ %248 = load i8* %0, align 8 ; [#uses=2]
+ %249 = and i8 %248, 1 ; [#uses=1]
+ %250 = shl i8 %248, 1 ; [#uses=2]
+ %.masked117 = and i8 %247, -16 ; [#uses=1]
+ %251 = or i8 %249, %.masked117 ; [#uses=1]
+ %252 = and i8 %250, 8 ; [#uses=1]
+ %.masked118 = and i8 %250, 4 ; [#uses=1]
+ %253 = or i8 %251, %.masked118 ; [#uses=1]
+ %254 = or i8 %253, %252 ; [#uses=1]
+ store i8 %254, i8* %13, align 4
+ %255 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 2, i32 2 ; [#uses=1]
+ %256 = load float* %255, align 4 ; [#uses=1]
+ %257 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 2, i32 1 ; [#uses=1]
+ %258 = load float* %257, align 4 ; [#uses=1]
+ %259 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 2, i32 0 ; [#uses=1]
+ %260 = load float* %259, align 4 ; [#uses=1]
+ %261 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 0 ; [#uses=1]
+ store float %260, float* %261, align 4
+ %262 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %262, align 4
+ %263 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 2 ; [#uses=1]
+ store float %258, float* %263, align 4
+ %264 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 3 ; [#uses=1]
+ store float %256, float* %264, align 4
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb13, %bb12
+ %bestSqDist.1 = phi float [ %243, %bb16 ], [ %bestSqDist.0, %bb13 ], [ %bestSqDist.0, %bb12 ] ; [#uses=3]
+ %265 = icmp eq i32 %141, 0 ; [#uses=1]
+ br i1 %265, label %bb22, label %bb18
+
+bb18: ; preds = %bb17
+ %266 = call zeroext i8 @_ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(%struct.btVoronoiSimplexSolver* %this, %struct.btQuadWord* %p, %struct.btQuadWord* %a, %struct.btQuadWord* %d, %struct.btQuadWord* %b, %struct.btSubSimplexClosestResult* %tempResult) nounwind ; [#uses=0]
+ %267 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %268 = load float* %267, align 8 ; [#uses=2]
+ %269 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %270 = load float* %269, align 4 ; [#uses=2]
+ %271 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %272 = load float* %271, align 8 ; [#uses=2]
+ %273 = load float* %8, align 4 ; [#uses=1]
+ %274 = fsub float %272, %273 ; [#uses=2]
+ %275 = load float* %5, align 4 ; [#uses=1]
+ %276 = fsub float %270, %275 ; [#uses=2]
+ %277 = load float* %2, align 4 ; [#uses=1]
+ %278 = fsub float %268, %277 ; [#uses=2]
+ %279 = fmul float %278, %278 ; [#uses=1]
+ %280 = fmul float %276, %276 ; [#uses=1]
+ %281 = fadd float %279, %280 ; [#uses=1]
+ %282 = fmul float %274, %274 ; [#uses=1]
+ %283 = fadd float %281, %282 ; [#uses=2]
+ %284 = fcmp olt float %283, %bestSqDist.1 ; [#uses=1]
+ br i1 %284, label %bb21, label %bb22
+
+bb21: ; preds = %bb18
+ %285 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %286 = load float* %285, align 4 ; [#uses=1]
+ store float %268, float* %1, align 4
+ store float %270, float* %4, align 4
+ store float %272, float* %7, align 4
+ store float %286, float* %10, align 4
+ %287 = load i8* %13, align 2 ; [#uses=1]
+ %288 = load i8* %0, align 8 ; [#uses=3]
+ %289 = and i8 %288, 1 ; [#uses=1]
+ %290 = lshr i8 %288, 1 ; [#uses=1]
+ %.masked115 = and i8 %287, -16 ; [#uses=1]
+ %291 = or i8 %289, %.masked115 ; [#uses=1]
+ %292 = shl i8 %288, 2 ; [#uses=1]
+ %293 = and i8 %292, 8 ; [#uses=1]
+ %.masked116 = and i8 %290, 2 ; [#uses=1]
+ %294 = or i8 %291, %.masked116 ; [#uses=1]
+ %295 = or i8 %294, %293 ; [#uses=1]
+ store i8 %295, i8* %13, align 4
+ %296 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 2, i32 1 ; [#uses=1]
+ %297 = load float* %296, align 4 ; [#uses=1]
+ %298 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 2, i32 2 ; [#uses=1]
+ %299 = load float* %298, align 4 ; [#uses=1]
+ %300 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 2, i32 0 ; [#uses=1]
+ %301 = load float* %300, align 4 ; [#uses=1]
+ %302 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 0 ; [#uses=1]
+ store float %301, float* %302, align 4
+ %303 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 1 ; [#uses=1]
+ store float %299, float* %303, align 4
+ %304 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %304, align 4
+ %305 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 3 ; [#uses=1]
+ store float %297, float* %305, align 4
+ br label %bb22
+
+bb22: ; preds = %bb21, %bb18, %bb17
+ %bestSqDist.2 = phi float [ %283, %bb21 ], [ %bestSqDist.1, %bb18 ], [ %bestSqDist.1, %bb17 ] ; [#uses=1]
+ %306 = icmp eq i32 %181, 0 ; [#uses=1]
+ br i1 %306, label %bb27, label %bb23
+
+bb23: ; preds = %bb22
+ %307 = call zeroext i8 @_ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(%struct.btVoronoiSimplexSolver* %this, %struct.btQuadWord* %p, %struct.btQuadWord* %b, %struct.btQuadWord* %d, %struct.btQuadWord* %c, %struct.btSubSimplexClosestResult* %tempResult) nounwind ; [#uses=0]
+ %308 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %309 = load float* %308, align 8 ; [#uses=2]
+ %310 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %311 = load float* %310, align 4 ; [#uses=2]
+ %312 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %313 = load float* %312, align 8 ; [#uses=2]
+ %314 = load float* %8, align 4 ; [#uses=1]
+ %315 = fsub float %313, %314 ; [#uses=2]
+ %316 = load float* %5, align 4 ; [#uses=1]
+ %317 = fsub float %311, %316 ; [#uses=2]
+ %318 = load float* %2, align 4 ; [#uses=1]
+ %319 = fsub float %309, %318 ; [#uses=2]
+ %320 = fmul float %319, %319 ; [#uses=1]
+ %321 = fmul float %317, %317 ; [#uses=1]
+ %322 = fadd float %320, %321 ; [#uses=1]
+ %323 = fmul float %315, %315 ; [#uses=1]
+ %324 = fadd float %322, %323 ; [#uses=1]
+ %325 = fcmp olt float %324, %bestSqDist.2 ; [#uses=1]
+ br i1 %325, label %bb26, label %bb27
+
+bb26: ; preds = %bb23
+ %326 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %327 = load float* %326, align 4 ; [#uses=1]
+ store float %309, float* %1, align 4
+ store float %311, float* %4, align 4
+ store float %313, float* %7, align 4
+ store float %327, float* %10, align 4
+ %328 = load i8* %13, align 2 ; [#uses=1]
+ %329 = load i8* %0, align 8 ; [#uses=3]
+ %tmp53 = shl i8 %329, 1 ; [#uses=1]
+ %330 = and i8 %tmp53, 2 ; [#uses=1]
+ %.masked = and i8 %328, -16 ; [#uses=1]
+ %331 = or i8 %330, %.masked ; [#uses=1]
+ %332 = shl i8 %329, 2 ; [#uses=1]
+ %333 = and i8 %332, 8 ; [#uses=1]
+ %.masked114 = and i8 %329, 4 ; [#uses=1]
+ %334 = or i8 %331, %.masked114 ; [#uses=1]
+ %335 = or i8 %334, %333 ; [#uses=1]
+ store i8 %335, i8* %13, align 4
+ %336 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 2, i32 1 ; [#uses=1]
+ %337 = load float* %336, align 4 ; [#uses=1]
+ %338 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 2, i32 2 ; [#uses=1]
+ %339 = load float* %338, align 4 ; [#uses=1]
+ %340 = getelementptr inbounds %struct.btSubSimplexClosestResult* %tempResult, i32 0, i32 2, i32 0 ; [#uses=1]
+ %341 = load float* %340, align 4 ; [#uses=1]
+ %342 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %342, align 4
+ %343 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 1 ; [#uses=1]
+ store float %341, float* %343, align 4
+ %344 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 2 ; [#uses=1]
+ store float %339, float* %344, align 4
+ %345 = getelementptr inbounds %struct.btSubSimplexClosestResult* %finalResult, i32 0, i32 2, i32 3 ; [#uses=1]
+ store float %337, float* %345, align 4
+ ret i8 1
+
+bb27: ; preds = %bb23, %bb22
+ ret i8 1
+
+bb33: ; preds = %bb7
+ ret i8 0
+}
+
+; [#uses=2]
+define zeroext i8 @_ZN22btVoronoiSimplexSolver28updateClosestVectorAndPointsEv(%struct.btVoronoiSimplexSolver* %this) nounwind align 2 {
+entry:
+ %p16 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %p25 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 11 ; [#uses=2]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %entry.bb44_crit_edge, label %bb
+
+entry.bb44_crit_edge: ; preds = %entry
+ %.phi.trans.insert = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 9 ; [#uses=1]
+ %.pre = load i8* %.phi.trans.insert, align 4 ; [#uses=1]
+ ret i8 %.pre
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 2, i32 0 ; [#uses=8]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 2, i32 1 ; [#uses=8]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 2, i32 2 ; [#uses=8]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 2, i32 3 ; [#uses=7]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 1, i32 0 ; [#uses=6]
+ %8 = load i8* %7, align 2 ; [#uses=2]
+ %9 = and i8 %8, -16 ; [#uses=4]
+ store i8 %9, i8* %7, align 2
+ store i8 0, i8* %0, align 4
+ %10 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 0 ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ switch i32 %11, label %bb43 [
+ i32 0, label %bb1
+ i32 1, label %_ZN25btSubSimplexClosestResult7isValidEv.exit67
+ i32 2, label %bb3
+ i32 3, label %bb14
+ i32 4, label %bb23
+ ]
+
+bb1: ; preds = %bb
+ %12 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 9 ; [#uses=1]
+ store i8 0, i8* %12, align 4
+ ret i8 0
+
+_ZN25btSubSimplexClosestResult7isValidEv.exit67: ; preds = %bb
+ %13 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=2]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=2]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=2]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=2]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=2]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 3 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = fsub float %21, %33 ; [#uses=1]
+ %38 = fsub float %18, %30 ; [#uses=1]
+ %39 = fsub float %15, %27 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ store float %39, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ store float %38, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ store float %37, float* %42, align 4
+ %43 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %43, align 4
+ store i8 0, i8* %2, align 4
+ %44 = and i8 %8, -16 ; [#uses=1]
+ store i8 %44, i8* %7, align 2
+ store float 1.000000e+00, float* %3, align 4
+ store float 0.000000e+00, float* %4, align 4
+ store float 0.000000e+00, float* %5, align 4
+ store float 0.000000e+00, float* %6, align 4
+ %45 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 9 ; [#uses=1]
+ store i8 1, i8* %45, align 4
+ ret i8 1
+
+bb3: ; preds = %bb
+ %46 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=2]
+ %48 = fsub float 0.000000e+00, %47 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=2]
+ %51 = fsub float 0.000000e+00, %50 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=2]
+ %54 = fsub float 0.000000e+00, %53 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = fsub float %56, %47 ; [#uses=3]
+ %58 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = fsub float %59, %50 ; [#uses=3]
+ %61 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ %63 = fsub float %62, %53 ; [#uses=3]
+ %64 = fmul float %63, %54 ; [#uses=1]
+ %65 = fmul float %60, %51 ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=1]
+ %67 = fmul float %57, %48 ; [#uses=1]
+ %68 = fadd float %66, %67 ; [#uses=3]
+ %69 = fcmp ogt float %68, 0.000000e+00 ; [#uses=1]
+ br i1 %69, label %bb4, label %bb8
+
+bb4: ; preds = %bb3
+ %70 = fmul float %63, %63 ; [#uses=1]
+ %71 = fmul float %60, %60 ; [#uses=1]
+ %72 = fadd float %70, %71 ; [#uses=1]
+ %73 = fmul float %57, %57 ; [#uses=1]
+ %74 = fadd float %72, %73 ; [#uses=2]
+ %75 = fcmp olt float %68, %74 ; [#uses=1]
+ br i1 %75, label %bb6, label %bb7
+
+bb6: ; preds = %bb4
+ %76 = fdiv float %68, %74 ; [#uses=1]
+ %77 = or i8 %9, 3 ; [#uses=1]
+ store i8 %77, i8* %7, align 4
+ br label %bb9
+
+bb7: ; preds = %bb4
+ %78 = or i8 %9, 2 ; [#uses=1]
+ store i8 %78, i8* %7, align 4
+ br label %bb9
+
+bb8: ; preds = %bb3
+ %79 = or i8 %9, 1 ; [#uses=1]
+ store i8 %79, i8* %7, align 4
+ br label %bb9
+
+bb9: ; preds = %bb8, %bb7, %bb6
+ %t.0 = phi float [ %76, %bb6 ], [ 1.000000e+00, %bb7 ], [ 0.000000e+00, %bb8 ] ; [#uses=8]
+ %80 = fsub float 1.000000e+00, %t.0 ; [#uses=1]
+ store float %80, float* %3, align 4
+ store float %t.0, float* %4, align 4
+ store float 0.000000e+00, float* %5, align 4
+ store float 0.000000e+00, float* %6, align 4
+ %81 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=2]
+ %85 = fsub float %82, %84 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=2]
+ %90 = fsub float %87, %89 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=2]
+ %95 = fsub float %92, %94 ; [#uses=1]
+ %96 = fmul float %85, %t.0 ; [#uses=1]
+ %97 = fmul float %90, %t.0 ; [#uses=1]
+ %98 = fmul float %95, %t.0 ; [#uses=1]
+ %99 = fadd float %84, %96 ; [#uses=2]
+ %100 = fadd float %89, %97 ; [#uses=2]
+ %101 = fadd float %94, %98 ; [#uses=2]
+ %102 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %101, float* %102, align 4
+ %103 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %100, float* %103, align 4
+ %104 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %99, float* %104, align 4
+ %105 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %107 = load float* %106, align 4 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=2]
+ %110 = fsub float %107, %109 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %114 = load float* %113, align 4 ; [#uses=2]
+ %115 = fsub float %112, %114 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %117 = load float* %116, align 4 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %119 = load float* %118, align 4 ; [#uses=2]
+ %120 = fsub float %117, %119 ; [#uses=1]
+ %121 = fmul float %110, %t.0 ; [#uses=1]
+ %122 = fmul float %115, %t.0 ; [#uses=1]
+ %123 = fmul float %120, %t.0 ; [#uses=1]
+ %124 = fadd float %109, %121 ; [#uses=2]
+ %125 = fadd float %114, %122 ; [#uses=2]
+ %126 = fadd float %119, %123 ; [#uses=2]
+ %127 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store float %126, float* %127, align 4
+ %128 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ store float %125, float* %128, align 4
+ %129 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ store float %124, float* %129, align 4
+ %130 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %130, align 4
+ %131 = fsub float %99, %124 ; [#uses=1]
+ %132 = fsub float %100, %125 ; [#uses=1]
+ %133 = fsub float %101, %126 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ store float %133, float* %134, align 4
+ %135 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ store float %132, float* %135, align 4
+ %136 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ store float %131, float* %136, align 4
+ %137 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %137, align 4
+ %138 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ call void @_ZN22btVoronoiSimplexSolver14reduceVerticesERK15btUsageBitfield(%struct.btVoronoiSimplexSolver* %this, %struct.btUsageBitfield* %138) nounwind
+ %139 = load float* %3, align 4 ; [#uses=1]
+ %140 = fcmp ult float %139, 0.000000e+00 ; [#uses=1]
+ br i1 %140, label %_ZN25btSubSimplexClosestResult7isValidEv.exit60, label %bb.i54
+
+bb.i54: ; preds = %bb9
+ %141 = load float* %4, align 4 ; [#uses=1]
+ %142 = fcmp ult float %141, 0.000000e+00 ; [#uses=1]
+ br i1 %142, label %_ZN25btSubSimplexClosestResult7isValidEv.exit60, label %bb1.i55
+
+bb1.i55: ; preds = %bb.i54
+ %143 = load float* %5, align 4 ; [#uses=1]
+ %144 = fcmp ult float %143, 0.000000e+00 ; [#uses=1]
+ br i1 %144, label %_ZN25btSubSimplexClosestResult7isValidEv.exit60, label %bb2.i58
+
+bb2.i58: ; preds = %bb1.i55
+ %145 = load float* %6, align 4 ; [#uses=1]
+ %not..i56 = fcmp oge float %145, 0.000000e+00 ; [#uses=1]
+ %retval.i57 = zext i1 %not..i56 to i8 ; [#uses=1]
+ br label %_ZN25btSubSimplexClosestResult7isValidEv.exit60
+
+_ZN25btSubSimplexClosestResult7isValidEv.exit60: ; preds = %bb2.i58, %bb1.i55, %bb.i54, %bb9
+ %146 = phi i8 [ %retval.i57, %bb2.i58 ], [ 0, %bb1.i55 ], [ 0, %bb.i54 ], [ 0, %bb9 ] ; [#uses=2]
+ %147 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 9 ; [#uses=1]
+ store i8 %146, i8* %147, align 4
+ ret i8 %146
+
+bb14: ; preds = %bb
+ %148 = getelementptr inbounds %struct.btQuadWord* %p16, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %148, align 8
+ %149 = getelementptr inbounds %struct.btQuadWord* %p16, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %149, align 4
+ %150 = getelementptr inbounds %struct.btQuadWord* %p16, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %150, align 8
+ %151 = getelementptr inbounds %struct.btQuadWord* %p16, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %151, align 4
+ %152 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %153 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ %155 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10 ; [#uses=1]
+ %156 = call zeroext i8 @_ZN22btVoronoiSimplexSolver22closestPtPointTriangleERK9btVector3S2_S2_S2_R25btSubSimplexClosestResult(%struct.btVoronoiSimplexSolver* %this, %struct.btQuadWord* %p16, %struct.btQuadWord* %152, %struct.btQuadWord* %153, %struct.btQuadWord* %154, %struct.btSubSimplexClosestResult* %155) nounwind ; [#uses=0]
+ %157 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 2, i32 0, i32 2 ; [#uses=1]
+ %158 = load float* %157, align 4 ; [#uses=1]
+ %159 = load float* %5, align 4 ; [#uses=6]
+ %160 = fmul float %158, %159 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 2, i32 0, i32 1 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ %163 = fmul float %162, %159 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 2, i32 0, i32 0 ; [#uses=1]
+ %165 = load float* %164, align 4 ; [#uses=1]
+ %166 = fmul float %165, %159 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %168 = load float* %167, align 4 ; [#uses=1]
+ %169 = load float* %4, align 4 ; [#uses=6]
+ %170 = fmul float %168, %169 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %172 = load float* %171, align 4 ; [#uses=1]
+ %173 = fmul float %172, %169 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %175 = load float* %174, align 4 ; [#uses=1]
+ %176 = fmul float %175, %169 ; [#uses=1]
+ %177 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %178 = load float* %177, align 4 ; [#uses=1]
+ %179 = load float* %3, align 4 ; [#uses=6]
+ %180 = fmul float %178, %179 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %182 = load float* %181, align 4 ; [#uses=1]
+ %183 = fmul float %182, %179 ; [#uses=1]
+ %184 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %185 = load float* %184, align 4 ; [#uses=1]
+ %186 = fmul float %185, %179 ; [#uses=1]
+ %187 = fadd float %180, %170 ; [#uses=1]
+ %188 = fadd float %183, %173 ; [#uses=1]
+ %189 = fadd float %186, %176 ; [#uses=1]
+ %190 = fadd float %187, %160 ; [#uses=2]
+ %191 = fadd float %188, %163 ; [#uses=2]
+ %192 = fadd float %189, %166 ; [#uses=2]
+ %193 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %192, float* %193, align 4
+ %194 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %191, float* %194, align 4
+ %195 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %190, float* %195, align 4
+ %196 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %196, align 4
+ %197 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 2, i32 0, i32 2 ; [#uses=1]
+ %198 = load float* %197, align 4 ; [#uses=1]
+ %199 = fmul float %198, %159 ; [#uses=1]
+ %200 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 2, i32 0, i32 1 ; [#uses=1]
+ %201 = load float* %200, align 4 ; [#uses=1]
+ %202 = fmul float %201, %159 ; [#uses=1]
+ %203 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 2, i32 0, i32 0 ; [#uses=1]
+ %204 = load float* %203, align 4 ; [#uses=1]
+ %205 = fmul float %204, %159 ; [#uses=1]
+ %206 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %207 = load float* %206, align 4 ; [#uses=1]
+ %208 = fmul float %207, %169 ; [#uses=1]
+ %209 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %210 = load float* %209, align 4 ; [#uses=1]
+ %211 = fmul float %210, %169 ; [#uses=1]
+ %212 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %213 = load float* %212, align 4 ; [#uses=1]
+ %214 = fmul float %213, %169 ; [#uses=1]
+ %215 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %216 = load float* %215, align 4 ; [#uses=1]
+ %217 = fmul float %216, %179 ; [#uses=1]
+ %218 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %219 = load float* %218, align 4 ; [#uses=1]
+ %220 = fmul float %219, %179 ; [#uses=1]
+ %221 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %222 = load float* %221, align 4 ; [#uses=1]
+ %223 = fmul float %222, %179 ; [#uses=1]
+ %224 = fadd float %217, %208 ; [#uses=1]
+ %225 = fadd float %220, %211 ; [#uses=1]
+ %226 = fadd float %223, %214 ; [#uses=1]
+ %227 = fadd float %224, %199 ; [#uses=2]
+ %228 = fadd float %225, %202 ; [#uses=2]
+ %229 = fadd float %226, %205 ; [#uses=2]
+ %230 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store float %229, float* %230, align 4
+ %231 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ store float %228, float* %231, align 4
+ %232 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ store float %227, float* %232, align 4
+ %233 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %233, align 4
+ %234 = fsub float %190, %227 ; [#uses=1]
+ %235 = fsub float %191, %228 ; [#uses=1]
+ %236 = fsub float %192, %229 ; [#uses=1]
+ %237 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ store float %236, float* %237, align 4
+ %238 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ store float %235, float* %238, align 4
+ %239 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ store float %234, float* %239, align 4
+ %240 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %240, align 4
+ %241 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ call void @_ZN22btVoronoiSimplexSolver14reduceVerticesERK15btUsageBitfield(%struct.btVoronoiSimplexSolver* %this, %struct.btUsageBitfield* %241) nounwind
+ %242 = load float* %3, align 4 ; [#uses=1]
+ %243 = fcmp ult float %242, 0.000000e+00 ; [#uses=1]
+ br i1 %243, label %_ZN25btSubSimplexClosestResult7isValidEv.exit53, label %bb.i47
+
+bb.i47: ; preds = %bb14
+ %244 = load float* %4, align 4 ; [#uses=1]
+ %245 = fcmp ult float %244, 0.000000e+00 ; [#uses=1]
+ br i1 %245, label %_ZN25btSubSimplexClosestResult7isValidEv.exit53, label %bb1.i48
+
+bb1.i48: ; preds = %bb.i47
+ %246 = load float* %5, align 4 ; [#uses=1]
+ %247 = fcmp ult float %246, 0.000000e+00 ; [#uses=1]
+ br i1 %247, label %_ZN25btSubSimplexClosestResult7isValidEv.exit53, label %bb2.i51
+
+bb2.i51: ; preds = %bb1.i48
+ %248 = load float* %6, align 4 ; [#uses=1]
+ %not..i49 = fcmp oge float %248, 0.000000e+00 ; [#uses=1]
+ %retval.i50 = zext i1 %not..i49 to i8 ; [#uses=1]
+ br label %_ZN25btSubSimplexClosestResult7isValidEv.exit53
+
+_ZN25btSubSimplexClosestResult7isValidEv.exit53: ; preds = %bb2.i51, %bb1.i48, %bb.i47, %bb14
+ %249 = phi i8 [ %retval.i50, %bb2.i51 ], [ 0, %bb1.i48 ], [ 0, %bb.i47 ], [ 0, %bb14 ] ; [#uses=2]
+ %250 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 9 ; [#uses=1]
+ store i8 %249, i8* %250, align 4
+ ret i8 %249
+
+bb23: ; preds = %bb
+ %251 = getelementptr inbounds %struct.btQuadWord* %p25, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %251, align 8
+ %252 = getelementptr inbounds %struct.btQuadWord* %p25, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %252, align 4
+ %253 = getelementptr inbounds %struct.btQuadWord* %p25, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %253, align 8
+ %254 = getelementptr inbounds %struct.btQuadWord* %p25, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %254, align 4
+ %255 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %256 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %257 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ %258 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %259 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10 ; [#uses=1]
+ %260 = call zeroext i8 @_ZN22btVoronoiSimplexSolver25closestPtPointTetrahedronERK9btVector3S2_S2_S2_S2_R25btSubSimplexClosestResult(%struct.btVoronoiSimplexSolver* %this, %struct.btQuadWord* %p25, %struct.btQuadWord* %255, %struct.btQuadWord* %256, %struct.btQuadWord* %257, %struct.btQuadWord* %258, %struct.btSubSimplexClosestResult* %259) ; [#uses=1]
+ %toBool34 = icmp eq i8 %260, 0 ; [#uses=1]
+ br i1 %toBool34, label %bb39, label %bb35
+
+bb35: ; preds = %bb23
+ %261 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 3, i32 0, i32 2 ; [#uses=1]
+ %262 = load float* %261, align 4 ; [#uses=1]
+ %263 = load float* %6, align 4 ; [#uses=6]
+ %264 = fmul float %262, %263 ; [#uses=1]
+ %265 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 3, i32 0, i32 1 ; [#uses=1]
+ %266 = load float* %265, align 4 ; [#uses=1]
+ %267 = fmul float %266, %263 ; [#uses=1]
+ %268 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 3, i32 0, i32 0 ; [#uses=1]
+ %269 = load float* %268, align 4 ; [#uses=1]
+ %270 = fmul float %269, %263 ; [#uses=1]
+ %271 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 2, i32 0, i32 2 ; [#uses=1]
+ %272 = load float* %271, align 4 ; [#uses=1]
+ %273 = load float* %5, align 4 ; [#uses=6]
+ %274 = fmul float %272, %273 ; [#uses=1]
+ %275 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 2, i32 0, i32 1 ; [#uses=1]
+ %276 = load float* %275, align 4 ; [#uses=1]
+ %277 = fmul float %276, %273 ; [#uses=1]
+ %278 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 2, i32 0, i32 0 ; [#uses=1]
+ %279 = load float* %278, align 4 ; [#uses=1]
+ %280 = fmul float %279, %273 ; [#uses=1]
+ %281 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %282 = load float* %281, align 4 ; [#uses=1]
+ %283 = load float* %4, align 4 ; [#uses=6]
+ %284 = fmul float %282, %283 ; [#uses=1]
+ %285 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %286 = load float* %285, align 4 ; [#uses=1]
+ %287 = fmul float %286, %283 ; [#uses=1]
+ %288 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %289 = load float* %288, align 4 ; [#uses=1]
+ %290 = fmul float %289, %283 ; [#uses=1]
+ %291 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %292 = load float* %291, align 4 ; [#uses=1]
+ %293 = load float* %3, align 4 ; [#uses=6]
+ %294 = fmul float %292, %293 ; [#uses=1]
+ %295 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %296 = load float* %295, align 4 ; [#uses=1]
+ %297 = fmul float %296, %293 ; [#uses=1]
+ %298 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %299 = load float* %298, align 4 ; [#uses=1]
+ %300 = fmul float %299, %293 ; [#uses=1]
+ %301 = fadd float %294, %284 ; [#uses=1]
+ %302 = fadd float %297, %287 ; [#uses=1]
+ %303 = fadd float %300, %290 ; [#uses=1]
+ %304 = fadd float %301, %274 ; [#uses=1]
+ %305 = fadd float %302, %277 ; [#uses=1]
+ %306 = fadd float %303, %280 ; [#uses=1]
+ %307 = fadd float %304, %264 ; [#uses=2]
+ %308 = fadd float %305, %267 ; [#uses=2]
+ %309 = fadd float %306, %270 ; [#uses=2]
+ %310 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %309, float* %310, align 4
+ %311 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %308, float* %311, align 4
+ %312 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %307, float* %312, align 4
+ %313 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %313, align 4
+ %314 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 3, i32 0, i32 2 ; [#uses=1]
+ %315 = load float* %314, align 4 ; [#uses=1]
+ %316 = fmul float %315, %263 ; [#uses=1]
+ %317 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 3, i32 0, i32 1 ; [#uses=1]
+ %318 = load float* %317, align 4 ; [#uses=1]
+ %319 = fmul float %318, %263 ; [#uses=1]
+ %320 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 3, i32 0, i32 0 ; [#uses=1]
+ %321 = load float* %320, align 4 ; [#uses=1]
+ %322 = fmul float %321, %263 ; [#uses=1]
+ %323 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 2, i32 0, i32 2 ; [#uses=1]
+ %324 = load float* %323, align 4 ; [#uses=1]
+ %325 = fmul float %324, %273 ; [#uses=1]
+ %326 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 2, i32 0, i32 1 ; [#uses=1]
+ %327 = load float* %326, align 4 ; [#uses=1]
+ %328 = fmul float %327, %273 ; [#uses=1]
+ %329 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 2, i32 0, i32 0 ; [#uses=1]
+ %330 = load float* %329, align 4 ; [#uses=1]
+ %331 = fmul float %330, %273 ; [#uses=1]
+ %332 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %333 = load float* %332, align 4 ; [#uses=1]
+ %334 = fmul float %333, %283 ; [#uses=1]
+ %335 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %336 = load float* %335, align 4 ; [#uses=1]
+ %337 = fmul float %336, %283 ; [#uses=1]
+ %338 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %339 = load float* %338, align 4 ; [#uses=1]
+ %340 = fmul float %339, %283 ; [#uses=1]
+ %341 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 2 ; [#uses=1]
+ %342 = load float* %341, align 4 ; [#uses=1]
+ %343 = fmul float %342, %293 ; [#uses=1]
+ %344 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %345 = load float* %344, align 4 ; [#uses=1]
+ %346 = fmul float %345, %293 ; [#uses=1]
+ %347 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %348 = load float* %347, align 4 ; [#uses=1]
+ %349 = fmul float %348, %293 ; [#uses=1]
+ %350 = fadd float %343, %334 ; [#uses=1]
+ %351 = fadd float %346, %337 ; [#uses=1]
+ %352 = fadd float %349, %340 ; [#uses=1]
+ %353 = fadd float %350, %325 ; [#uses=1]
+ %354 = fadd float %351, %328 ; [#uses=1]
+ %355 = fadd float %352, %331 ; [#uses=1]
+ %356 = fadd float %353, %316 ; [#uses=2]
+ %357 = fadd float %354, %319 ; [#uses=2]
+ %358 = fadd float %355, %322 ; [#uses=2]
+ %359 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store float %358, float* %359, align 4
+ %360 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ store float %357, float* %360, align 4
+ %361 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ store float %356, float* %361, align 4
+ %362 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %362, align 4
+ %363 = fsub float %307, %356 ; [#uses=1]
+ %364 = fsub float %308, %357 ; [#uses=1]
+ %365 = fsub float %309, %358 ; [#uses=1]
+ %366 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ store float %365, float* %366, align 4
+ %367 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ store float %364, float* %367, align 4
+ %368 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ store float %363, float* %368, align 4
+ %369 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %369, align 4
+ %370 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ call void @_ZN22btVoronoiSimplexSolver14reduceVerticesERK15btUsageBitfield(%struct.btVoronoiSimplexSolver* %this, %struct.btUsageBitfield* %370) nounwind
+ %371 = load float* %3, align 4 ; [#uses=1]
+ %372 = fcmp ult float %371, 0.000000e+00 ; [#uses=1]
+ br i1 %372, label %_ZN25btSubSimplexClosestResult7isValidEv.exit, label %bb.i
+
+bb.i: ; preds = %bb35
+ %373 = load float* %4, align 4 ; [#uses=1]
+ %374 = fcmp ult float %373, 0.000000e+00 ; [#uses=1]
+ br i1 %374, label %_ZN25btSubSimplexClosestResult7isValidEv.exit, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %375 = load float* %5, align 4 ; [#uses=1]
+ %376 = fcmp ult float %375, 0.000000e+00 ; [#uses=1]
+ br i1 %376, label %_ZN25btSubSimplexClosestResult7isValidEv.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %377 = load float* %6, align 4 ; [#uses=1]
+ %not..i = fcmp oge float %377, 0.000000e+00 ; [#uses=1]
+ %retval.i = zext i1 %not..i to i8 ; [#uses=1]
+ br label %_ZN25btSubSimplexClosestResult7isValidEv.exit
+
+_ZN25btSubSimplexClosestResult7isValidEv.exit: ; preds = %bb2.i, %bb1.i, %bb.i, %bb35
+ %378 = phi i8 [ %retval.i, %bb2.i ], [ 0, %bb1.i ], [ 0, %bb.i ], [ 0, %bb35 ] ; [#uses=2]
+ %379 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 9 ; [#uses=1]
+ store i8 %378, i8* %379, align 4
+ ret i8 %378
+
+bb39: ; preds = %bb23
+ %380 = load i8* %2, align 4 ; [#uses=1]
+ %toBool40 = icmp eq i8 %380, 0 ; [#uses=1]
+ %381 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 9 ; [#uses=2]
+ br i1 %toBool40, label %bb42, label %bb41
+
+bb41: ; preds = %bb39
+ store i8 0, i8* %381, align 4
+ ret i8 0
+
+bb42: ; preds = %bb39
+ store i8 1, i8* %381, align 4
+ %382 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %382, align 4
+ %383 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %383, align 4
+ %384 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %384, align 4
+ %385 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %385, align 4
+ ret i8 1
+
+bb43: ; preds = %bb
+ %386 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 9 ; [#uses=1]
+ store i8 0, i8* %386, align 4
+ ret i8 0
+}
+
+; [#uses=2]
+define void @_ZN22btVoronoiSimplexSolver14compute_pointsER9btVector3S1_(%struct.btVoronoiSimplexSolver* %this, %struct.btQuadWord* nocapture %p1, %struct.btQuadWord* nocapture %p2) nounwind align 2 {
+entry:
+ %0 = tail call zeroext i8 @_ZN22btVoronoiSimplexSolver28updateClosestVectorAndPointsEv(%struct.btVoronoiSimplexSolver* %this) ; [#uses=0]
+ %1 = getelementptr inbounds %struct.btQuadWord* %p1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %1, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %p1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btQuadWord* %p1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btQuadWord* %p1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btQuadWord* %p2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btQuadWord* %p2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btQuadWord* %p2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %p2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ ret void
+}
+
+; [#uses=2]
+define zeroext i8 @_ZN22btVoronoiSimplexSolver7closestER9btVector3(%struct.btVoronoiSimplexSolver* %this, %struct.btQuadWord* nocapture %v) nounwind align 2 {
+entry:
+ %0 = tail call zeroext i8 @_ZN22btVoronoiSimplexSolver28updateClosestVectorAndPointsEv(%struct.btVoronoiSimplexSolver* %this) ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ store float %3, float* %1, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btVoronoiSimplexSolver* %this, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ ret i8 %0
+}
+
+; [#uses=0]
+define void @_ZN30btKinematicCharacterController26computeReflectionDirectionERK9btVector3S2_(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btKinematicCharacterController* nocapture %this, %struct.btQuadWord* nocapture %direction, %struct.btQuadWord* nocapture %normal) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %direction, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %direction, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %direction, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=1]
+ %17 = fmul float %16, 2.000000e+00 ; [#uses=3]
+ %18 = fmul float %14, %17 ; [#uses=1]
+ %19 = fmul float %8, %17 ; [#uses=1]
+ %20 = fmul float %3, %17 ; [#uses=1]
+ %21 = fsub float %12, %18 ; [#uses=1]
+ %22 = fsub float %6, %19 ; [#uses=1]
+ %23 = fsub float %1, %20 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %23, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %22, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %21, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCollisionWorld27ClosestConvexResultCallbackD1Ev(%"struct.btCollisionWorld::ClosestConvexResultCallback"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCollisionWorld27ClosestConvexResultCallbackD0Ev(%"struct.btCollisionWorld::ClosestConvexResultCallback"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr float @_ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb(%"struct.btCollisionWorld::ClosestConvexResultCallback"* nocapture %this, %"struct.btCollisionWorld::LocalConvexResult"* nocapture %convexResult, i8 zeroext %normalInWorldSpace) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 4 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1, float* %2, align 4
+ %3 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.btCollisionObject** %3, align 4 ; [#uses=10]
+ %5 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btCollisionObject* %4, %struct.btCollisionObject** %5, align 4
+ %toBool = icmp eq i8 %normalInWorldSpace, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %16 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ br label %bb2
+
+bb1: ; preds = %entry
+ %18 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=3]
+ %22 = fmul float %19, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=3]
+ %27 = fmul float %24, %26 ; [#uses=1]
+ %28 = fadd float %22, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=3]
+ %33 = fmul float %30, %32 ; [#uses=1]
+ %34 = fadd float %28, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = fmul float %36, %21 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fmul float %39, %26 ; [#uses=1]
+ %41 = fadd float %37, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fmul float %43, %32 ; [#uses=1]
+ %45 = fadd float %41, %44 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = fmul float %47, %21 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fmul float %50, %26 ; [#uses=1]
+ %52 = fadd float %48, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = fmul float %54, %32 ; [#uses=1]
+ %56 = fadd float %52, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %56, float* %57, align 4
+ %58 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %45, float* %58, align 4
+ %59 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %34, float* %59, align 4
+ %60 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %61 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %62 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ store float %63, float* %61, align 4
+ %64 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %65 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %64, align 4
+ %67 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %68 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ store float %69, float* %67, align 4
+ %70 = getelementptr inbounds %"struct.btCollisionWorld::ClosestConvexResultCallback"* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %71 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %70, align 4
+ %73 = load float* %0, align 4 ; [#uses=1]
+ ret float %73
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btActionInterfaceD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV17btActionInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btActionInterfaceD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV17btActionInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN30btCharacterControllerInterfaceD1Ev(%struct..0btMultiSapOverlapFilterCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([15 x i32 (...)*]* @_ZTV30btCharacterControllerInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN30btCharacterControllerInterfaceD0Ev(%struct..0btMultiSapOverlapFilterCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([15 x i32 (...)*]* @_ZTV30btCharacterControllerInterface, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct..0btMultiSapOverlapFilterCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN30btKinematicCharacterController12updateActionEP16btCollisionWorldf(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %collisionWorld, float %deltaTime) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 8 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btKinematicCharacterController*, %struct.btCollisionWorld*)* ; [#uses=1]
+ tail call void %4(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %collisionWorld)
+ %5 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 9 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct.btKinematicCharacterController*, %struct.btCollisionWorld*, float)* ; [#uses=1]
+ tail call void %8(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %collisionWorld, float %deltaTime)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN43btKinematicClosestNotMeConvexResultCallbackD1Ev(%struct.btKinematicClosestNotMeConvexResultCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN43btKinematicClosestNotMeConvexResultCallbackD0Ev(%struct.btKinematicClosestNotMeConvexResultCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btKinematicClosestNotMeConvexResultCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr float @_ZN43btKinematicClosestNotMeConvexResultCallback15addSingleResultERN16btCollisionWorld17LocalConvexResultEb(%struct.btKinematicClosestNotMeConvexResultCallback* nocapture %this, %"struct.btCollisionWorld::LocalConvexResult"* nocapture %convexResult, i8 zeroext %normalInWorldSpace) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 0 ; [#uses=2]
+ %1 = load %struct.btCollisionObject** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load %struct.btCollisionObject** %2, align 4 ; [#uses=1]
+ %4 = icmp eq %struct.btCollisionObject* %1, %3 ; [#uses=1]
+ br i1 %4, label %bb7, label %bb1
+
+bb1: ; preds = %entry
+ %toBool = icmp eq i8 %normalInWorldSpace, 0 ; [#uses=2]
+ br i1 %toBool, label %bb3, label %bb2
+
+bb2: ; preds = %bb1
+ %5 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ br label %bb4
+
+bb3: ; preds = %bb1
+ %11 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %12 = load %struct.btCollisionObject** %11, align 4 ; [#uses=9]
+ %13 = getelementptr inbounds %struct.btCollisionObject* %12, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=3]
+ %17 = fmul float %14, %16 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btCollisionObject* %12, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=3]
+ %22 = fmul float %19, %21 ; [#uses=1]
+ %23 = fadd float %17, %22 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btCollisionObject* %12, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=3]
+ %28 = fmul float %25, %27 ; [#uses=1]
+ %29 = fadd float %23, %28 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btCollisionObject* %12, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = fmul float %31, %16 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btCollisionObject* %12, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fmul float %34, %21 ; [#uses=1]
+ %36 = fadd float %32, %35 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btCollisionObject* %12, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fmul float %38, %27 ; [#uses=1]
+ %40 = fadd float %36, %39 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btCollisionObject* %12, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = fmul float %42, %16 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btCollisionObject* %12, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fmul float %45, %21 ; [#uses=1]
+ %47 = fadd float %43, %46 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btCollisionObject* %12, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fmul float %49, %27 ; [#uses=1]
+ %51 = fadd float %47, %50 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %hitNormalWorld.0.2.0 = phi float [ %29, %bb3 ], [ %10, %bb2 ] ; [#uses=1]
+ %hitNormalWorld.0.1.0 = phi float [ %40, %bb3 ], [ %8, %bb2 ] ; [#uses=1]
+ %hitNormalWorld.0.0.0 = phi float [ %51, %bb3 ], [ %6, %bb2 ] ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ %54 = fmul float %53, %hitNormalWorld.0.0.0 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = fmul float %56, %hitNormalWorld.0.1.0 ; [#uses=1]
+ %58 = fadd float %54, %57 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ %61 = fmul float %60, %hitNormalWorld.0.2.0 ; [#uses=1]
+ %62 = fadd float %58, %61 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 3 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %65 = fcmp ogt float %64, %62 ; [#uses=1]
+ br i1 %65, label %bb7, label %bb6
+
+bb6: ; preds = %bb4
+ %66 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 4 ; [#uses=2]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %67, float* %68, align 4
+ %69 = load %struct.btCollisionObject** %0, align 4 ; [#uses=10]
+ %70 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ store %struct.btCollisionObject* %69, %struct.btCollisionObject** %70, align 4
+ br i1 %toBool, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %bb6
+ %71 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %72 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %71, align 4
+ %74 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %75 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ store float %76, float* %74, align 4
+ %77 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %78 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ store float %79, float* %77, align 4
+ %80 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %81 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ store float %82, float* %80, align 4
+ br label %_ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb.exit
+
+bb1.i: ; preds = %bb6
+ %83 = getelementptr inbounds %struct.btCollisionObject* %69, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ %85 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %86 = load float* %85, align 4 ; [#uses=3]
+ %87 = fmul float %84, %86 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btCollisionObject* %69, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ %90 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=3]
+ %92 = fmul float %89, %91 ; [#uses=1]
+ %93 = fadd float %87, %92 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btCollisionObject* %69, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ %96 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=3]
+ %98 = fmul float %95, %97 ; [#uses=1]
+ %99 = fadd float %93, %98 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btCollisionObject* %69, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ %102 = fmul float %101, %86 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btCollisionObject* %69, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %104 = load float* %103, align 4 ; [#uses=1]
+ %105 = fmul float %104, %91 ; [#uses=1]
+ %106 = fadd float %102, %105 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btCollisionObject* %69, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %108 = load float* %107, align 4 ; [#uses=1]
+ %109 = fmul float %108, %97 ; [#uses=1]
+ %110 = fadd float %106, %109 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btCollisionObject* %69, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ %113 = fmul float %112, %86 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btCollisionObject* %69, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=1]
+ %116 = fmul float %115, %91 ; [#uses=1]
+ %117 = fadd float %113, %116 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btCollisionObject* %69, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %119 = load float* %118, align 4 ; [#uses=1]
+ %120 = fmul float %119, %97 ; [#uses=1]
+ %121 = fadd float %117, %120 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %121, float* %122, align 4
+ %123 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %110, float* %123, align 4
+ %124 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %99, float* %124, align 4
+ %125 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %125, align 4
+ br label %_ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb.exit
+
+_ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb.exit: ; preds = %bb1.i, %bb.i
+ %126 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %127 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %128 = load float* %127, align 4 ; [#uses=1]
+ store float %128, float* %126, align 4
+ %129 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %130 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %131 = load float* %130, align 4 ; [#uses=1]
+ store float %131, float* %129, align 4
+ %132 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %133 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %134 = load float* %133, align 4 ; [#uses=1]
+ store float %134, float* %132, align 4
+ %135 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %136 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %137 = load float* %136, align 4 ; [#uses=1]
+ store float %137, float* %135, align 4
+ %138 = load float* %66, align 4 ; [#uses=1]
+ ret float %138
+
+bb7: ; preds = %bb4, %entry
+ ret float 1.000000e+00
+}
+
+; [#uses=0]
+define void @_ZN30btKinematicCharacterController17parallelComponentERK9btVector3S2_(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btKinematicCharacterController* nocapture %this, %struct.btQuadWord* nocapture %direction, %struct.btQuadWord* nocapture %normal) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %direction, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %direction, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %direction, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=3]
+ %17 = fmul float %14, %16 ; [#uses=1]
+ %18 = fmul float %8, %16 ; [#uses=1]
+ %19 = fmul float %3, %16 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %19, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %18, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %17, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN30btKinematicCharacterController22perpindicularComponentERK9btVector3S2_(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btKinematicCharacterController* nocapture %this, %struct.btQuadWord* nocapture %direction, %struct.btQuadWord* nocapture %normal) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %direction, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %direction, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %direction, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=3]
+ %17 = fmul float %14, %16 ; [#uses=1]
+ %18 = fmul float %8, %16 ; [#uses=1]
+ %19 = fmul float %3, %16 ; [#uses=1]
+ %20 = fsub float %12, %17 ; [#uses=1]
+ %21 = fsub float %6, %18 ; [#uses=1]
+ %22 = fsub float %1, %19 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %22, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %21, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %20, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ ret void
+}
+
+; [#uses=0]
+define %struct.btPairCachingGhostObject* @_ZN30btKinematicCharacterController14getGhostObjectEv(%struct.btKinematicCharacterController* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 2 ; [#uses=1]
+ %1 = load %struct.btPairCachingGhostObject** %0, align 4 ; [#uses=1]
+ ret %struct.btPairCachingGhostObject* %1
+}
+
+; [#uses=1]
+define void @_ZN30btKinematicCharacterController5resetEv(%struct.btKinematicCharacterController* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN30btKinematicCharacterController4warpERK9btVector3(%struct.btKinematicCharacterController* nocapture %this, %struct.btQuadWord* nocapture %origin) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %origin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %origin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %origin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %origin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 2 ; [#uses=1]
+ %9 = load %struct.btPairCachingGhostObject** %8, align 4 ; [#uses=16]
+ %10 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %1, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %3, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %5, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btPairCachingGhostObject* %9, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %7, float* %25, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN30btKinematicCharacterController12setFallSpeedEf(%struct.btKinematicCharacterController* nocapture %this, float %fallSpeed) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 6 ; [#uses=1]
+ store float %fallSpeed, float* %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN30btKinematicCharacterController12setJumpSpeedEf(%struct.btKinematicCharacterController* nocapture %this, float %jumpSpeed) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 7 ; [#uses=1]
+ store float %jumpSpeed, float* %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN30btKinematicCharacterController16setMaxJumpHeightEf(%struct.btKinematicCharacterController* nocapture %this, float %maxJumpHeight) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 8 ; [#uses=1]
+ store float %maxJumpHeight, float* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define zeroext i8 @_ZNK30btKinematicCharacterController7canJumpEv(%struct.btKinematicCharacterController* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 12 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to i8 (%struct.btKinematicCharacterController*)* ; [#uses=1]
+ %5 = tail call zeroext i8 %4(%struct.btKinematicCharacterController* %this) ; [#uses=1]
+ ret i8 %5
+}
+
+; [#uses=1]
+define void @_ZN30btKinematicCharacterController4jumpEv(%struct.btKinematicCharacterController* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 10 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to i8 (%struct.btKinematicCharacterController*)* ; [#uses=1]
+ %5 = tail call zeroext i8 %4(%struct.btKinematicCharacterController* %this) ; [#uses=1]
+ %toBoolnot = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %return, label %bb
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 7 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 4 ; [#uses=1]
+ store float %7, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 24 ; [#uses=1]
+ store i8 1, i8* %9, align 1
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN30btKinematicCharacterController10setGravityEf(%struct.btKinematicCharacterController* nocapture %this, float %gravity) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 11 ; [#uses=1]
+ store float %gravity, float* %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define float @_ZNK30btKinematicCharacterController10getGravityEv(%struct.btKinematicCharacterController* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 11 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ ret float %1
+}
+
+; [#uses=0]
+define float @_ZNK30btKinematicCharacterController11getMaxSlopeEv(%struct.btKinematicCharacterController* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 9 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ ret float %1
+}
+
+; [#uses=1]
+define zeroext i8 @_ZNK30btKinematicCharacterController8onGroundEv(%struct.btKinematicCharacterController* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 4 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = fcmp une float %1, 0.000000e+00 ; [#uses=1]
+ br i1 %2, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 5 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %not. = fcmp oeq float %4, 0.000000e+00 ; [#uses=1]
+ %retval = zext i1 %not. to i8 ; [#uses=1]
+ ret i8 %retval
+
+bb2: ; preds = %entry
+ ret i8 0
+}
+
+; [#uses=1]
+define void @_ZN30btKinematicCharacterController9debugDrawEP12btIDebugDraw(%struct.btKinematicCharacterController* nocapture %this, %struct.btActionInterface* nocapture %debugDrawer) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=0]
+define %struct.btQuadWord* @_ZN30btKinematicCharacterController19getUpAxisDirectionsEv() nounwind align 2 {
+entry:
+ %0 = load i8* bitcast (i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection to i8*), align 8 ; [#uses=1]
+ %1 = icmp eq i8 %0, 0 ; [#uses=1]
+ br i1 %1, label %bb, label %bb2
+
+bb: ; preds = %entry
+ %2 = tail call i32 @__cxa_guard_acquire(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 0), align 16
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 1), align 4
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 3), align 4
+ tail call void @__cxa_guard_release(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind
+ ret %struct.btQuadWord* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0)
+
+bb2: ; preds = %bb, %entry
+ ret %struct.btQuadWord* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0)
+}
+
+; [#uses=0]
+define void @_ZN30btKinematicCharacterController11setMaxSlopeEf(%struct.btKinematicCharacterController* nocapture %this, float %slopeRadians) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 9 ; [#uses=1]
+ store float %slopeRadians, float* %0, align 4
+ %1 = tail call float @cosf(float %slopeRadians) nounwind readonly ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 10 ; [#uses=1]
+ store float %1, float* %2, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN30btKinematicCharacterController26setVelocityForTimeIntervalERK9btVector3f(%struct.btKinematicCharacterController* nocapture %this, %struct.btQuadWord* nocapture %velocity, float %timeInterval) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 26 ; [#uses=1]
+ store i8 0, i8* %0, align 1
+ %1 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ store float %3, float* %1, align 4
+ %4 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=4]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=4]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %velocity, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = fmul float %3, %3 ; [#uses=1]
+ %14 = fmul float %6, %6 ; [#uses=1]
+ %15 = fadd float %13, %14 ; [#uses=1]
+ %16 = fmul float %9, %9 ; [#uses=1]
+ %17 = fadd float %15, %16 ; [#uses=1]
+ %18 = tail call float @sqrtf(float %17) nounwind readonly ; [#uses=1]
+ %19 = fdiv float 1.000000e+00, %18 ; [#uses=3]
+ %20 = fmul float %19, %9 ; [#uses=3]
+ %21 = fmul float %19, %6 ; [#uses=3]
+ %22 = fmul float %19, %3 ; [#uses=3]
+ %23 = fmul float %22, %22 ; [#uses=1]
+ %24 = fmul float %21, %21 ; [#uses=1]
+ %25 = fadd float %23, %24 ; [#uses=1]
+ %26 = fmul float %20, %20 ; [#uses=1]
+ %27 = fadd float %25, %26 ; [#uses=1]
+ %28 = tail call float @sqrtf(float %27) nounwind readonly ; [#uses=1]
+ %29 = fcmp olt float %28, 0x3E80000000000000 ; [#uses=3]
+ %memtmp.0.2.0 = select i1 %29, float 0.000000e+00, float %20 ; [#uses=1]
+ %memtmp.0.1.0 = select i1 %29, float 0.000000e+00, float %21 ; [#uses=1]
+ %memtmp.0.0.0 = select i1 %29, float 0.000000e+00, float %22 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 0 ; [#uses=1]
+ store float %memtmp.0.0.0, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 1 ; [#uses=1]
+ store float %memtmp.0.1.0, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 2 ; [#uses=1]
+ store float %memtmp.0.2.0, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 27 ; [#uses=1]
+ store float %timeInterval, float* %34, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN30btKinematicCharacterController16setWalkDirectionERK9btVector3(%struct.btKinematicCharacterController* nocapture %this, %struct.btQuadWord* nocapture %walkDirection) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 26 ; [#uses=1]
+ store i8 1, i8* %0, align 1
+ %1 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %walkDirection, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ store float %3, float* %1, align 4
+ %4 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %walkDirection, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=4]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %walkDirection, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=4]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %walkDirection, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = fmul float %3, %3 ; [#uses=1]
+ %14 = fmul float %6, %6 ; [#uses=1]
+ %15 = fadd float %13, %14 ; [#uses=1]
+ %16 = fmul float %9, %9 ; [#uses=1]
+ %17 = fadd float %15, %16 ; [#uses=1]
+ %18 = tail call float @sqrtf(float %17) nounwind readonly ; [#uses=1]
+ %19 = fdiv float 1.000000e+00, %18 ; [#uses=3]
+ %20 = fmul float %19, %9 ; [#uses=3]
+ %21 = fmul float %19, %6 ; [#uses=3]
+ %22 = fmul float %19, %3 ; [#uses=3]
+ %23 = fmul float %22, %22 ; [#uses=1]
+ %24 = fmul float %21, %21 ; [#uses=1]
+ %25 = fadd float %23, %24 ; [#uses=1]
+ %26 = fmul float %20, %20 ; [#uses=1]
+ %27 = fadd float %25, %26 ; [#uses=1]
+ %28 = tail call float @sqrtf(float %27) nounwind readonly ; [#uses=1]
+ %29 = fcmp olt float %28, 0x3E80000000000000 ; [#uses=3]
+ %memtmp.0.2.0 = select i1 %29, float 0.000000e+00, float %20 ; [#uses=1]
+ %memtmp.0.1.0 = select i1 %29, float 0.000000e+00, float %21 ; [#uses=1]
+ %memtmp.0.0.0 = select i1 %29, float 0.000000e+00, float %22 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 0 ; [#uses=1]
+ store float %memtmp.0.0.0, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 1 ; [#uses=1]
+ store float %memtmp.0.1.0, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 2 ; [#uses=1]
+ store float %memtmp.0.2.0, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN30btKinematicCharacterController36updateTargetPositionBasedOnCollisionERK9btVector3ff(%struct.btKinematicCharacterController* nocapture %this, %struct.btQuadWord* nocapture %hitNormal, float %tangentMag, float %normalMag) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 2 ; [#uses=3]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fsub float %1, %3 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 1 ; [#uses=3]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fsub float %6, %8 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 0 ; [#uses=3]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = fsub float %11, %13 ; [#uses=3]
+ %15 = fmul float %14, %14 ; [#uses=1]
+ %16 = fmul float %9, %9 ; [#uses=1]
+ %17 = fadd float %15, %16 ; [#uses=1]
+ %18 = fmul float %4, %4 ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=1]
+ %20 = tail call float @sqrtf(float %19) nounwind readonly ; [#uses=3]
+ %21 = fcmp ogt float %20, 0x3E80000000000000 ; [#uses=1]
+ br i1 %21, label %bb, label %return
+
+bb: ; preds = %entry
+ %22 = fdiv float 1.000000e+00, %20 ; [#uses=3]
+ %23 = fmul float %14, %22 ; [#uses=2]
+ %24 = fmul float %9, %22 ; [#uses=2]
+ %25 = fmul float %4, %22 ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btQuadWord* %hitNormal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=4]
+ %28 = fmul float %23, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuadWord* %hitNormal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=4]
+ %31 = fmul float %24, %30 ; [#uses=1]
+ %32 = fadd float %28, %31 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %hitNormal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=4]
+ %35 = fmul float %25, %34 ; [#uses=1]
+ %36 = fadd float %32, %35 ; [#uses=1]
+ %37 = fmul float %36, 2.000000e+00 ; [#uses=3]
+ %38 = fmul float %34, %37 ; [#uses=1]
+ %39 = fmul float %30, %37 ; [#uses=1]
+ %40 = fmul float %27, %37 ; [#uses=1]
+ %41 = fsub float %25, %38 ; [#uses=3]
+ %42 = fsub float %24, %39 ; [#uses=3]
+ %43 = fsub float %23, %40 ; [#uses=3]
+ %44 = fmul float %43, %43 ; [#uses=1]
+ %45 = fmul float %42, %42 ; [#uses=1]
+ %46 = fadd float %44, %45 ; [#uses=1]
+ %47 = fmul float %41, %41 ; [#uses=1]
+ %48 = fadd float %46, %47 ; [#uses=1]
+ %49 = tail call float @sqrtf(float %48) nounwind readonly ; [#uses=1]
+ %50 = fdiv float 1.000000e+00, %49 ; [#uses=3]
+ %51 = fmul float %43, %50 ; [#uses=2]
+ %52 = fmul float %42, %50 ; [#uses=2]
+ %53 = fmul float %41, %50 ; [#uses=2]
+ %54 = fmul float %51, %27 ; [#uses=1]
+ %55 = fmul float %52, %30 ; [#uses=1]
+ %56 = fadd float %54, %55 ; [#uses=1]
+ %57 = fmul float %53, %34 ; [#uses=1]
+ %58 = fadd float %56, %57 ; [#uses=3]
+ store float %13, float* %10, align 4
+ store float %8, float* %5, align 4
+ store float %3, float* %0, align 4
+ %59 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 3 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 3 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %59, align 4
+ %62 = fcmp une float %normalMag, 0.000000e+00 ; [#uses=1]
+ br i1 %62, label %bb2, label %return
+
+bb2: ; preds = %bb
+ %63 = fmul float %27, %58 ; [#uses=1]
+ %64 = fmul float %30, %58 ; [#uses=1]
+ %65 = fmul float %34, %58 ; [#uses=1]
+ %66 = fsub float %51, %63 ; [#uses=1]
+ %67 = fsub float %52, %64 ; [#uses=1]
+ %68 = fsub float %53, %65 ; [#uses=1]
+ %69 = fmul float %20, %normalMag ; [#uses=3]
+ %70 = fmul float %68, %69 ; [#uses=1]
+ %71 = fmul float %67, %69 ; [#uses=1]
+ %72 = fmul float %66, %69 ; [#uses=1]
+ %73 = fadd float %13, %72 ; [#uses=1]
+ store float %73, float* %10, align 4
+ %74 = fadd float %8, %71 ; [#uses=1]
+ store float %74, float* %5, align 4
+ %75 = fadd float %3, %70 ; [#uses=1]
+ store float %75, float* %0, align 4
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN30btKinematicCharacterController8stepDownEP16btCollisionWorldf(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %collisionWorld, float %dt) align 2 {
+entry:
+ %start = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %end = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %callback = alloca %struct.btKinematicClosestNotMeConvexResultCallback, align 8 ; [#uses=14]
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 4 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = fcmp olt float %1, 0.000000e+00 ; [#uses=1]
+ br i1 %2, label %bb, label %bb2
+
+bb: ; preds = %entry
+ %3 = fsub float -0.000000e+00, %1 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb, %entry
+ %iftmp.235.0 = phi float [ %3, %bb ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %4 = fmul float %iftmp.235.0, %dt ; [#uses=5]
+ %5 = fcmp ogt float %4, 0.000000e+00 ; [#uses=1]
+ br i1 %5, label %bb3, label %bb11
+
+bb3: ; preds = %bb2
+ %6 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 13 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = fcmp ogt float %7, %4 ; [#uses=1]
+ br i1 %8, label %bb4, label %bb11
+
+bb4: ; preds = %bb3
+ %9 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 23 ; [#uses=1]
+ %10 = load i8* %9, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %10, 0 ; [#uses=1]
+ br i1 %toBool, label %bb5, label %bb10
+
+bb5: ; preds = %bb4
+ %11 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 24 ; [#uses=1]
+ %12 = load i8* %11, align 1 ; [#uses=1]
+ %toBool6not = icmp eq i8 %12, 0 ; [#uses=1]
+ br i1 %toBool6not, label %bb10, label %bb11
+
+bb10: ; preds = %bb5, %bb4
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb5, %bb3, %bb2
+ %downVelocity.0 = phi float [ %7, %bb10 ], [ %4, %bb5 ], [ %4, %bb3 ], [ %4, %bb2 ] ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 18 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fadd float %14, %downVelocity.0 ; [#uses=3]
+ %16 = load i8* bitcast (i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection to i8*), align 8 ; [#uses=1]
+ %17 = icmp eq i8 %16, 0 ; [#uses=1]
+ br i1 %17, label %bb.i25, label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit28
+
+bb.i25: ; preds = %bb11
+ %18 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind ; [#uses=1]
+ %19 = icmp eq i32 %18, 0 ; [#uses=1]
+ br i1 %19, label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit28, label %bb1.i26
+
+bb1.i26: ; preds = %bb.i25
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 0), align 16
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 1), align 4
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 3), align 4
+ call void @__cxa_guard_release(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind
+ br label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit28
+
+_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit28: ; preds = %bb1.i26, %bb.i25, %bb11
+ %20 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 28 ; [#uses=2]
+ %21 = load i32* %20, align 4 ; [#uses=3]
+ %22 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %21, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 8 ; [#uses=1]
+ %24 = fmul float %23, %15 ; [#uses=1]
+ %25 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %21, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = fmul float %26, %15 ; [#uses=1]
+ %28 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %21, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 16 ; [#uses=1]
+ %30 = fmul float %29, %15 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 0 ; [#uses=4]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fsub float %32, %30 ; [#uses=2]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 1 ; [#uses=4]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fsub float %35, %27 ; [#uses=2]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 2 ; [#uses=4]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fsub float %38, %24 ; [#uses=2]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %40, align 8
+ %41 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %42, align 8
+ %43 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %43, align 4
+ %44 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %44, align 8
+ %45 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %45, align 4
+ %46 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %46, align 8
+ %47 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %47, align 4
+ %48 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %48, align 8
+ %49 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %50, align 8
+ %51 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %51, align 4
+ %52 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %56, align 8
+ %57 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %58, align 8
+ %59 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %59, align 4
+ %60 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 8
+ %61 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %62, align 8
+ %63 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %63, align 4
+ %64 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %64, align 8
+ %65 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %65, align 4
+ %66 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %66, align 8
+ %67 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %67, align 4
+ %68 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 0 ; [#uses=4]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %52, align 8
+ %74 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 1 ; [#uses=4]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ store float %75, float* %53, align 4
+ %76 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 2 ; [#uses=4]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ store float %77, float* %54, align 8
+ %78 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 3 ; [#uses=2]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ store float %79, float* %55, align 4
+ store float %33, float* %68, align 8
+ store float %36, float* %69, align 4
+ store float %39, float* %70, align 8
+ %80 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 3 ; [#uses=2]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ store float %81, float* %71, align 4
+ %82 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 10 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = load i8* bitcast (i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection to i8*), align 8 ; [#uses=1]
+ %85 = icmp eq i8 %84, 0 ; [#uses=1]
+ br i1 %85, label %bb.i, label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit
+
+bb.i: ; preds = %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit28
+ %86 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind ; [#uses=1]
+ %87 = icmp eq i32 %86, 0 ; [#uses=1]
+ br i1 %87, label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 0), align 16
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 1), align 4
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 3), align 4
+ call void @__cxa_guard_release(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind
+ br label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit
+
+_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit: ; preds = %bb1.i, %bb.i, %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit28
+ %88 = load i32* %20, align 4 ; [#uses=4]
+ %89 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 2 ; [#uses=1]
+ %90 = load %struct.btPairCachingGhostObject** %89, align 4 ; [#uses=3]
+ %91 = getelementptr inbounds %struct.btPairCachingGhostObject* %90, i32 0, i32 0, i32 0 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %93 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 1.000000e+00, float* %93, align 4
+ %94 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ store i16 1, i16* %94, align 8
+ %95 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ store i16 -1, i16* %95, align 2
+ %96 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 5 ; [#uses=1]
+ %98 = bitcast float* %96 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %98, i8 0, i64 32, i32 4, i1 false) nounwind
+ store %struct.btCollisionObject* null, %struct.btCollisionObject** %97, align 4
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV43btKinematicClosestNotMeConvexResultCallback, i32 0, i32 2), i32 (...)*** %92, align 8
+ %99 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btCollisionObject* %91, %struct.btCollisionObject** %99, align 8
+ %100 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %101 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %88, i32 0, i32 0 ; [#uses=1]
+ %102 = load float* %101, align 16 ; [#uses=1]
+ store float %102, float* %100, align 4
+ %103 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %104 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %88, i32 0, i32 1 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ store float %105, float* %103, align 4
+ %106 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %107 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %88, i32 0, i32 2 ; [#uses=1]
+ %108 = load float* %107, align 8 ; [#uses=1]
+ store float %108, float* %106, align 4
+ %109 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %110 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %88, i32 0, i32 3 ; [#uses=1]
+ %111 = load float* %110, align 4 ; [#uses=1]
+ store float %111, float* %109, align 4
+ %112 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 3 ; [#uses=1]
+ store float %83, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btPairCachingGhostObject* %90, i32 0, i32 0, i32 0, i32 8 ; [#uses=2]
+ %114 = load %struct.btBroadphaseProxy** %113, align 4 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btBroadphaseProxy* %114, i32 0, i32 1 ; [#uses=1]
+ %116 = load i16* %115, align 4 ; [#uses=1]
+ store i16 %116, i16* %94, align 8
+ %117 = load %struct.btBroadphaseProxy** %113, align 4 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btBroadphaseProxy* %117, i32 0, i32 2 ; [#uses=1]
+ %119 = load i16* %118, align 2 ; [#uses=1]
+ store i16 %119, i16* %95, align 2
+ %120 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 25 ; [#uses=1]
+ %121 = load i8* %120, align 2 ; [#uses=1]
+ %toBool12 = icmp eq i8 %121, 0 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btCollisionWorld* %collisionWorld, i32 0, i32 3, i32 9 ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=2]
+ %124 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 3 ; [#uses=1]
+ %125 = load %struct.btConvexShape** %124, align 4 ; [#uses=2]
+ br i1 %toBool12, label %bb14, label %bb13
+
+bb13: ; preds = %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit
+ %126 = getelementptr inbounds %struct.btPairCachingGhostObject* %90, i32 0, i32 0 ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZNK13btGhostObject15convexSweepTestEPK13btConvexShapeRK11btTransformS5_RN16btCollisionWorld20ConvexResultCallbackEf(%struct.btGhostObject* %126, %struct.btConvexShape* %125, %struct.btTransform* %start, %struct.btTransform* %end, %"struct.btCollisionWorld::ConvexResultCallback"* %127, float %123)
+ to label %bb16 unwind label %lpad
+
+bb14: ; preds = %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit
+ %128 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZNK16btCollisionWorld15convexSweepTestEPK13btConvexShapeRK11btTransformS5_RNS_20ConvexResultCallbackEf(%struct.btCollisionWorld* %collisionWorld, %struct.btConvexShape* %125, %struct.btTransform* %start, %struct.btTransform* %end, %"struct.btCollisionWorld::ConvexResultCallback"* %128, float %123)
+ to label %bb16 unwind label %lpad
+
+bb16: ; preds = %bb14, %bb13
+ %129 = load float* %93, align 4 ; [#uses=5]
+ %130 = fcmp olt float %129, 1.000000e+00 ; [#uses=1]
+ br i1 %130, label %bb18, label %bb19
+
+bb18: ; preds = %bb16
+ %131 = fsub float 1.000000e+00, %129 ; [#uses=3]
+ %132 = load float* %72, align 4 ; [#uses=1]
+ %133 = fmul float %132, %131 ; [#uses=1]
+ %134 = load float* %31, align 4 ; [#uses=1]
+ %135 = fmul float %134, %129 ; [#uses=1]
+ %136 = fadd float %133, %135 ; [#uses=1]
+ store float %136, float* %72, align 4
+ %137 = load float* %74, align 4 ; [#uses=1]
+ %138 = fmul float %137, %131 ; [#uses=1]
+ %139 = load float* %34, align 4 ; [#uses=1]
+ %140 = fmul float %139, %129 ; [#uses=1]
+ %141 = fadd float %138, %140 ; [#uses=1]
+ store float %141, float* %74, align 4
+ %142 = load float* %76, align 4 ; [#uses=1]
+ %143 = fmul float %142, %131 ; [#uses=1]
+ %144 = load float* %37, align 4 ; [#uses=1]
+ %145 = fmul float %144, %129 ; [#uses=1]
+ %146 = fadd float %143, %145 ; [#uses=1]
+ store float %146, float* %76, align 4
+ store float 0.000000e+00, float* %0, align 4
+ %147 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %147, align 4
+ %148 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 24 ; [#uses=1]
+ store i8 0, i8* %148, align 1
+ ret void
+
+bb19: ; preds = %bb16
+ %149 = load float* %31, align 4 ; [#uses=1]
+ store float %149, float* %72, align 4
+ %150 = load float* %34, align 4 ; [#uses=1]
+ store float %150, float* %74, align 4
+ %151 = load float* %37, align 4 ; [#uses=1]
+ store float %151, float* %76, align 4
+ %152 = load float* %80, align 4 ; [#uses=1]
+ store float %152, float* %78, align 4
+ ret void
+
+lpad: ; preds = %bb14, %bb13
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select23 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %92, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=2]
+define void @_ZN30btKinematicCharacterController20stepForwardAndStrafeEP16btCollisionWorldRK9btVector3(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %collisionWorld, %struct.btQuadWord* nocapture %walkMove) align 2 {
+entry:
+ %start = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %end = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %callback = alloca %struct.btKinematicClosestNotMeConvexResultCallback, align 8 ; [#uses=14]
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 2 ; [#uses=4]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %walkMove, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fadd float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 1 ; [#uses=4]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %walkMove, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fadd float %6, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 0 ; [#uses=4]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %walkMove, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fadd float %11, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 0 ; [#uses=4]
+ store float %14, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 1 ; [#uses=4]
+ store float %9, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 2 ; [#uses=4]
+ store float %4, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %19, align 8
+ %20 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 8
+ %22 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 8
+ %24 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 8
+ %26 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 8
+ %28 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %29, align 8
+ %30 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %31, align 8
+ %32 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %33, align 8
+ %34 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %35, align 8
+ %36 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 4
+ %37 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 8
+ %38 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %38, align 4
+ %39 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %39, align 8
+ %40 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 8
+ %42 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %42, align 4
+ %43 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %43, align 8
+ %44 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %44, align 4
+ %45 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %45, align 8
+ %46 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %46, align 4
+ %47 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %47, align 8
+ %48 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %48, align 4
+ %49 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %49, align 8
+ %50 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 21 ; [#uses=1]
+ %52 = load i8* %51, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %52, 0 ; [#uses=1]
+ br i1 %toBool, label %bb30.preheader, label %bb
+
+bb: ; preds = %entry
+ %53 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 0 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 22, i32 0, i32 0 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = fmul float %54, %56 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 1 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 22, i32 0, i32 1 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fmul float %59, %61 ; [#uses=1]
+ %63 = fadd float %57, %62 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 2 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 22, i32 0, i32 2 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = fmul float %65, %67 ; [#uses=1]
+ %69 = fadd float %63, %68 ; [#uses=1]
+ %70 = fcmp ogt float %69, 0.000000e+00 ; [#uses=1]
+ br i1 %70, label %bb2, label %bb30.preheader
+
+bb2: ; preds = %bb
+ %71 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 22 ; [#uses=1]
+ call void @_ZN30btKinematicCharacterController36updateTargetPositionBasedOnCollisionERK9btVector3ff(%struct.btKinematicCharacterController* %this, %struct.btQuadWord* %71, float 0.000000e+00, float 1.000000e+00) nounwind
+ br label %bb30.preheader
+
+bb30.preheader: ; preds = %bb2, %bb, %entry
+ %72 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 3 ; [#uses=2]
+ %73 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 2 ; [#uses=2]
+ %74 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %75 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %76 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %77 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %78 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 5 ; [#uses=1]
+ %80 = bitcast float* %78 to i8* ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 1 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 3 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 3 ; [#uses=4]
+ %88 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 14 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 25 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btCollisionWorld* %collisionWorld, i32 0, i32 3, i32 9 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0 ; [#uses=2]
+ %92 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 3 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 0 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 1 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 16, i32 0, i32 2 ; [#uses=1]
+ br label %bb30
+
+bb4: ; preds = %bb31
+ %96 = load float* %10, align 4 ; [#uses=2]
+ store float %96, float* %31, align 8
+ %97 = load float* %5, align 4 ; [#uses=2]
+ store float %97, float* %32, align 4
+ %98 = load float* %0, align 4 ; [#uses=2]
+ store float %98, float* %33, align 8
+ %99 = load float* %72, align 4 ; [#uses=1]
+ store float %99, float* %34, align 4
+ %100 = load float* %15, align 4 ; [#uses=2]
+ store float %100, float* %47, align 8
+ %101 = load float* %16, align 4 ; [#uses=2]
+ store float %101, float* %48, align 4
+ %102 = load float* %17, align 4 ; [#uses=2]
+ store float %102, float* %49, align 8
+ %103 = load float* %18, align 4 ; [#uses=1]
+ store float %103, float* %50, align 4
+ %104 = fsub float %98, %102 ; [#uses=1]
+ %105 = fsub float %97, %101 ; [#uses=1]
+ %106 = fsub float %96, %100 ; [#uses=1]
+ %107 = load %struct.btPairCachingGhostObject** %73, align 4 ; [#uses=2]
+ %108 = getelementptr inbounds %struct.btPairCachingGhostObject* %107, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %75, align 4
+ store i16 1, i16* %76, align 8
+ store i16 -1, i16* %77, align 2
+ call void @llvm.memset.p0i8.i64(i8* %80, i8 0, i64 32, i32 4, i1 false) nounwind
+ store %struct.btCollisionObject* null, %struct.btCollisionObject** %79, align 4
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV43btKinematicClosestNotMeConvexResultCallback, i32 0, i32 2), i32 (...)*** %74, align 8
+ store %struct.btCollisionObject* %108, %struct.btCollisionObject** %81, align 8
+ store float %106, float* %82, align 4
+ store float %105, float* %83, align 4
+ store float %104, float* %84, align 4
+ store float 0.000000e+00, float* %85, align 4
+ store float 0.000000e+00, float* %86, align 4
+ %109 = getelementptr inbounds %struct.btPairCachingGhostObject* %107, i32 0, i32 0, i32 0, i32 8 ; [#uses=2]
+ %110 = load %struct.btBroadphaseProxy** %109, align 4 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btBroadphaseProxy* %110, i32 0, i32 1 ; [#uses=1]
+ %112 = load i16* %111, align 4 ; [#uses=1]
+ store i16 %112, i16* %76, align 8
+ %113 = load %struct.btBroadphaseProxy** %109, align 4 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btBroadphaseProxy* %113, i32 0, i32 2 ; [#uses=1]
+ %115 = load i16* %114, align 2 ; [#uses=1]
+ store i16 %115, i16* %77, align 2
+ %116 = load %struct.btConvexShape** %87, align 4 ; [#uses=2]
+ %117 = getelementptr inbounds %struct.btConvexShape* %116, i32 0, i32 0, i32 0 ; [#uses=1]
+ %118 = load i32 (...)*** %117, align 4 ; [#uses=1]
+ %119 = getelementptr inbounds i32 (...)** %118, i32 11 ; [#uses=1]
+ %120 = load i32 (...)** %119, align 4 ; [#uses=1]
+ %121 = bitcast i32 (...)* %120 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %122 = invoke float %121(%struct.btConvexShape* %116)
+ to label %invcont unwind label %lpad ; [#uses=2]
+
+invcont: ; preds = %bb4
+ %123 = load %struct.btConvexShape** %87, align 4 ; [#uses=2]
+ %124 = getelementptr inbounds %struct.btConvexShape* %123, i32 0, i32 0, i32 0 ; [#uses=1]
+ %125 = load i32 (...)*** %124, align 4 ; [#uses=1]
+ %126 = getelementptr inbounds i32 (...)** %125, i32 10 ; [#uses=1]
+ %127 = load i32 (...)** %126, align 4 ; [#uses=1]
+ %128 = load float* %88, align 4 ; [#uses=1]
+ %129 = fadd float %128, %122 ; [#uses=1]
+ %130 = bitcast i32 (...)* %127 to void (%struct.btConvexShape*, float)* ; [#uses=1]
+ invoke void %130(%struct.btConvexShape* %123, float %129)
+ to label %invcont8 unwind label %lpad
+
+invcont8: ; preds = %invcont
+ %131 = load i8* %89, align 2 ; [#uses=1]
+ %toBool9 = icmp eq i8 %131, 0 ; [#uses=1]
+ %132 = load float* %90, align 4 ; [#uses=2]
+ %133 = load %struct.btConvexShape** %87, align 4 ; [#uses=2]
+ br i1 %toBool9, label %bb12, label %bb10
+
+bb10: ; preds = %invcont8
+ %134 = load %struct.btPairCachingGhostObject** %73, align 4 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btPairCachingGhostObject* %134, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZNK13btGhostObject15convexSweepTestEPK13btConvexShapeRK11btTransformS5_RN16btCollisionWorld20ConvexResultCallbackEf(%struct.btGhostObject* %135, %struct.btConvexShape* %133, %struct.btTransform* %start, %struct.btTransform* %end, %"struct.btCollisionWorld::ConvexResultCallback"* %91, float %132)
+ to label %bb14 unwind label %lpad
+
+bb12: ; preds = %invcont8
+ invoke void @_ZNK16btCollisionWorld15convexSweepTestEPK13btConvexShapeRK11btTransformS5_RNS_20ConvexResultCallbackEf(%struct.btCollisionWorld* %collisionWorld, %struct.btConvexShape* %133, %struct.btTransform* %start, %struct.btTransform* %end, %"struct.btCollisionWorld::ConvexResultCallback"* %91, float %132)
+ to label %bb14 unwind label %lpad
+
+bb14: ; preds = %bb12, %bb10
+ %136 = load %struct.btConvexShape** %87, align 4 ; [#uses=2]
+ %137 = getelementptr inbounds %struct.btConvexShape* %136, i32 0, i32 0, i32 0 ; [#uses=1]
+ %138 = load i32 (...)*** %137, align 4 ; [#uses=1]
+ %139 = getelementptr inbounds i32 (...)** %138, i32 10 ; [#uses=1]
+ %140 = load i32 (...)** %139, align 4 ; [#uses=1]
+ %141 = bitcast i32 (...)* %140 to void (%struct.btConvexShape*, float)* ; [#uses=1]
+ invoke void %141(%struct.btConvexShape* %136, float %122)
+ to label %invcont15 unwind label %lpad
+
+invcont15: ; preds = %bb14
+ %142 = load float* %75, align 4 ; [#uses=2]
+ %143 = fsub float %fraction.0, %142 ; [#uses=1]
+ %144 = fcmp olt float %142, 1.000000e+00 ; [#uses=1]
+ br i1 %144, label %bb17, label %bb24
+
+bb17: ; preds = %invcont15
+ call void @_ZN30btKinematicCharacterController36updateTargetPositionBasedOnCollisionERK9btVector3ff(%struct.btKinematicCharacterController* %this, %struct.btQuadWord* %92, float 0.000000e+00, float 1.000000e+00) nounwind
+ %145 = load float* %17, align 4 ; [#uses=1]
+ %146 = load float* %0, align 4 ; [#uses=1]
+ %147 = fsub float %145, %146 ; [#uses=3]
+ %148 = load float* %16, align 4 ; [#uses=1]
+ %149 = load float* %5, align 4 ; [#uses=1]
+ %150 = fsub float %148, %149 ; [#uses=3]
+ %151 = load float* %15, align 4 ; [#uses=1]
+ %152 = load float* %10, align 4 ; [#uses=1]
+ %153 = fsub float %151, %152 ; [#uses=3]
+ %154 = fmul float %153, %153 ; [#uses=1]
+ %155 = fmul float %150, %150 ; [#uses=1]
+ %156 = fadd float %154, %155 ; [#uses=1]
+ %157 = fmul float %147, %147 ; [#uses=1]
+ %158 = fadd float %156, %157 ; [#uses=2]
+ %159 = fcmp ogt float %158, 0x3E80000000000000 ; [#uses=1]
+ br i1 %159, label %bb21, label %bb29
+
+bb21: ; preds = %bb17
+ %160 = call float @sqrtf(float %158) nounwind readonly ; [#uses=1]
+ %161 = fdiv float 1.000000e+00, %160 ; [#uses=3]
+ %162 = fmul float %153, %161 ; [#uses=1]
+ %163 = fmul float %150, %161 ; [#uses=1]
+ %164 = fmul float %147, %161 ; [#uses=1]
+ %165 = load float* %93, align 4 ; [#uses=1]
+ %166 = fmul float %162, %165 ; [#uses=1]
+ %167 = load float* %94, align 4 ; [#uses=1]
+ %168 = fmul float %163, %167 ; [#uses=1]
+ %169 = fadd float %166, %168 ; [#uses=1]
+ %170 = load float* %95, align 4 ; [#uses=1]
+ %171 = fmul float %164, %170 ; [#uses=1]
+ %172 = fadd float %169, %171 ; [#uses=1]
+ %173 = fcmp ugt float %172, 0.000000e+00 ; [#uses=1]
+ br i1 %173, label %bb30.critedge, label %bb29
+
+bb24: ; preds = %invcont15
+ %174 = load float* %15, align 4 ; [#uses=1]
+ store float %174, float* %10, align 4
+ %175 = load float* %16, align 4 ; [#uses=1]
+ store float %175, float* %5, align 4
+ %176 = load float* %17, align 4 ; [#uses=1]
+ store float %176, float* %0, align 4
+ %177 = load float* %18, align 4 ; [#uses=1]
+ store float %177, float* %72, align 4
+ br label %bb30.critedge
+
+bb29: ; preds = %bb31, %bb30, %bb21, %bb17
+ ret void
+
+bb30.critedge: ; preds = %bb24, %bb21
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %74, align 8
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb30
+
+bb30: ; preds = %bb30.critedge, %bb30.preheader
+ %indvar = phi i32 [ 0, %bb30.preheader ], [ %indvar.next, %bb30.critedge ] ; [#uses=2]
+ %fraction.0 = phi float [ 1.000000e+00, %bb30.preheader ], [ %143, %bb30.critedge ] ; [#uses=2]
+ %178 = fcmp ule float %fraction.0, 0x3F847AE140000000 ; [#uses=1]
+ br i1 %178, label %bb29, label %bb31
+
+bb31: ; preds = %bb30
+ %maxIter.2 = sub i32 10, %indvar ; [#uses=1]
+ %toBool32not = icmp slt i32 %maxIter.2, 1 ; [#uses=1]
+ br i1 %toBool32not, label %bb29, label %bb4
+
+lpad: ; preds = %bb14, %bb12, %bb10, %invcont, %bb4
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select42 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %74, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN30btKinematicCharacterController6stepUpEP16btCollisionWorld(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %world) align 2 {
+entry:
+ %start = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %end = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %callback = alloca %struct.btKinematicClosestNotMeConvexResultCallback, align 8 ; [#uses=17]
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 13 ; [#uses=3]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 5 ; [#uses=2]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fcmp ogt float %3, 0.000000e+00 ; [#uses=1]
+ %iftmp.227.0 = select i1 %4, float %3, float 0.000000e+00 ; [#uses=1]
+ %5 = fadd float %1, %iftmp.227.0 ; [#uses=3]
+ %6 = load i8* bitcast (i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection to i8*), align 8 ; [#uses=1]
+ %7 = icmp eq i8 %6, 0 ; [#uses=1]
+ br i1 %7, label %bb.i20, label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit23
+
+bb.i20: ; preds = %entry
+ %8 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind ; [#uses=1]
+ %9 = icmp eq i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit23, label %bb1.i21
+
+bb1.i21: ; preds = %bb.i20
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 0), align 16
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 1), align 4
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 3), align 4
+ call void @__cxa_guard_release(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind
+ br label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit23
+
+_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit23: ; preds = %bb1.i21, %bb.i20, %entry
+ %10 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 28 ; [#uses=4]
+ %11 = load i32* %10, align 4 ; [#uses=3]
+ %12 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %11, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 8 ; [#uses=1]
+ %14 = fmul float %13, %5 ; [#uses=1]
+ %15 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %11, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fmul float %16, %5 ; [#uses=1]
+ %18 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %11, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 16 ; [#uses=1]
+ %20 = fmul float %19, %5 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 2 ; [#uses=5]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fadd float %22, %14 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 1 ; [#uses=5]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fadd float %25, %17 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 0 ; [#uses=5]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fadd float %28, %20 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 0 ; [#uses=4]
+ store float %29, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 1 ; [#uses=4]
+ store float %26, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 2 ; [#uses=4]
+ store float %23, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %34, align 8
+ %35 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 8
+ %37 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 4
+ %38 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %38, align 8
+ %39 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %39, align 4
+ %40 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %40, align 8
+ %41 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %42, align 8
+ %43 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %43, align 4
+ %44 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %44, align 8
+ %45 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %45, align 4
+ %46 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %46, align 8
+ %47 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %47, align 4
+ %48 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %48, align 8
+ %49 = getelementptr inbounds %struct.btTransform* %start, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %50, align 8
+ %51 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %51, align 4
+ %52 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %52, align 8
+ %53 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %53, align 4
+ %54 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %54, align 8
+ %55 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %55, align 4
+ %56 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %56, align 8
+ %57 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %58, align 8
+ %59 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %59, align 4
+ %60 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %60, align 8
+ %61 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %62, align 8
+ %63 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %63, align 4
+ %64 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %64, align 8
+ %65 = getelementptr inbounds %struct.btTransform* %end, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %65, align 4
+ %66 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 3 ; [#uses=3]
+ %67 = load %struct.btConvexShape** %66, align 4 ; [#uses=2]
+ %68 = getelementptr inbounds %struct.btConvexShape* %67, i32 0, i32 0, i32 0 ; [#uses=1]
+ %69 = load i32 (...)*** %68, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds i32 (...)** %69, i32 11 ; [#uses=1]
+ %71 = load i32 (...)** %70, align 4 ; [#uses=1]
+ %72 = bitcast i32 (...)* %71 to float (%struct.btConvexShape*)* ; [#uses=1]
+ %73 = call float %72(%struct.btConvexShape* %67) ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 14 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = fadd float %73, %75 ; [#uses=3]
+ %77 = load i8* bitcast (i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection to i8*), align 8 ; [#uses=1]
+ %78 = icmp eq i8 %77, 0 ; [#uses=1]
+ br i1 %78, label %bb.i28, label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit31
+
+bb.i28: ; preds = %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit23
+ %79 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind ; [#uses=1]
+ %80 = icmp eq i32 %79, 0 ; [#uses=1]
+ br i1 %80, label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit31, label %bb1.i29
+
+bb1.i29: ; preds = %bb.i28
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 0), align 16
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 1), align 4
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 3), align 4
+ call void @__cxa_guard_release(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind
+ br label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit31
+
+_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit31: ; preds = %bb1.i29, %bb.i28, %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit23
+ %81 = load i32* %10, align 4 ; [#uses=3]
+ %82 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %81, i32 0, i32 2 ; [#uses=1]
+ %83 = load float* %82, align 8 ; [#uses=1]
+ %84 = fmul float %83, %76 ; [#uses=1]
+ %85 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %81, i32 0, i32 1 ; [#uses=1]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ %87 = fmul float %86, %76 ; [#uses=1]
+ %88 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %81, i32 0, i32 0 ; [#uses=1]
+ %89 = load float* %88, align 16 ; [#uses=1]
+ %90 = fmul float %89, %76 ; [#uses=1]
+ %91 = load float* %21, align 4 ; [#uses=1]
+ %92 = fadd float %91, %84 ; [#uses=1]
+ %93 = load float* %24, align 4 ; [#uses=1]
+ %94 = fadd float %93, %87 ; [#uses=1]
+ %95 = load float* %27, align 4 ; [#uses=1]
+ %96 = fadd float %95, %90 ; [#uses=1]
+ store float %96, float* %46, align 8
+ store float %94, float* %47, align 4
+ store float %92, float* %48, align 8
+ store float 0.000000e+00, float* %49, align 4
+ %97 = load float* %30, align 4 ; [#uses=1]
+ store float %97, float* %62, align 8
+ %98 = load float* %31, align 4 ; [#uses=1]
+ store float %98, float* %63, align 4
+ %99 = load float* %32, align 4 ; [#uses=1]
+ store float %99, float* %64, align 8
+ %100 = load float* %33, align 4 ; [#uses=1]
+ store float %100, float* %65, align 4
+ %101 = load i8* bitcast (i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection to i8*), align 8 ; [#uses=1]
+ %102 = icmp eq i8 %101, 0 ; [#uses=1]
+ br i1 %102, label %bb.i24, label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit27
+
+bb.i24: ; preds = %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit31
+ %103 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind ; [#uses=1]
+ %104 = icmp eq i32 %103, 0 ; [#uses=1]
+ br i1 %104, label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit27, label %bb1.i25
+
+bb1.i25: ; preds = %bb.i24
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 0), align 16
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 1), align 4
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 3), align 4
+ call void @__cxa_guard_release(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind
+ br label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit27
+
+_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit27: ; preds = %bb1.i25, %bb.i24, %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit31
+ %105 = load i32* %10, align 4 ; [#uses=3]
+ %106 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %105, i32 0, i32 2 ; [#uses=1]
+ %107 = load float* %106, align 8 ; [#uses=1]
+ %108 = fsub float -0.000000e+00, %107 ; [#uses=1]
+ %109 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %105, i32 0, i32 1 ; [#uses=1]
+ %110 = load float* %109, align 4 ; [#uses=1]
+ %111 = fsub float -0.000000e+00, %110 ; [#uses=1]
+ %112 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %105, i32 0, i32 0 ; [#uses=1]
+ %113 = load float* %112, align 16 ; [#uses=1]
+ %114 = fsub float -0.000000e+00, %113 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 2 ; [#uses=1]
+ %116 = load %struct.btPairCachingGhostObject** %115, align 4 ; [#uses=3]
+ %117 = getelementptr inbounds %struct.btPairCachingGhostObject* %116, i32 0, i32 0, i32 0 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %119 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float 1.000000e+00, float* %119, align 4
+ %120 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ store i16 1, i16* %120, align 8
+ %121 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ store i16 -1, i16* %121, align 2
+ %122 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 5 ; [#uses=1]
+ %124 = bitcast float* %122 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %124, i8 0, i64 32, i32 4, i1 false) nounwind
+ store %struct.btCollisionObject* null, %struct.btCollisionObject** %123, align 4
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV43btKinematicClosestNotMeConvexResultCallback, i32 0, i32 2), i32 (...)*** %118, align 8
+ %125 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btCollisionObject* %117, %struct.btCollisionObject** %125, align 8
+ %126 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %114, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %111, float* %127, align 4
+ %128 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %108, float* %128, align 4
+ %129 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %129, align 4
+ %130 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 3 ; [#uses=1]
+ store float 0x3FE6A09020000000, float* %130, align 4
+ %131 = getelementptr inbounds %struct.btPairCachingGhostObject* %116, i32 0, i32 0, i32 0, i32 8 ; [#uses=2]
+ %132 = load %struct.btBroadphaseProxy** %131, align 4 ; [#uses=1]
+ %133 = getelementptr inbounds %struct.btBroadphaseProxy* %132, i32 0, i32 1 ; [#uses=1]
+ %134 = load i16* %133, align 4 ; [#uses=1]
+ store i16 %134, i16* %120, align 8
+ %135 = load %struct.btBroadphaseProxy** %131, align 4 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btBroadphaseProxy* %135, i32 0, i32 2 ; [#uses=1]
+ %137 = load i16* %136, align 2 ; [#uses=1]
+ store i16 %137, i16* %121, align 2
+ %138 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 25 ; [#uses=1]
+ %139 = load i8* %138, align 2 ; [#uses=1]
+ %toBool = icmp eq i8 %139, 0 ; [#uses=1]
+ br i1 %toBool, label %bb4, label %bb3
+
+bb3: ; preds = %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit27
+ %140 = getelementptr inbounds %struct.btCollisionWorld* %world, i32 0, i32 3, i32 9 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ %142 = load %struct.btConvexShape** %66, align 4 ; [#uses=1]
+ %143 = getelementptr inbounds %struct.btPairCachingGhostObject* %116, i32 0, i32 0 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZNK13btGhostObject15convexSweepTestEPK13btConvexShapeRK11btTransformS5_RN16btCollisionWorld20ConvexResultCallbackEf(%struct.btGhostObject* %143, %struct.btConvexShape* %142, %struct.btTransform* %start, %struct.btTransform* %end, %"struct.btCollisionWorld::ConvexResultCallback"* %144, float %141)
+ to label %bb6 unwind label %lpad
+
+bb4: ; preds = %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit27
+ %145 = load %struct.btConvexShape** %66, align 4 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZNK16btCollisionWorld15convexSweepTestEPK13btConvexShapeRK11btTransformS5_RNS_20ConvexResultCallbackEf(%struct.btCollisionWorld* %world, %struct.btConvexShape* %145, %struct.btTransform* %start, %struct.btTransform* %end, %"struct.btCollisionWorld::ConvexResultCallback"* %146, float 0.000000e+00)
+ to label %bb6 unwind label %lpad
+
+bb6: ; preds = %bb4, %bb3
+ %147 = load float* %119, align 4 ; [#uses=1]
+ %148 = fcmp olt float %147, 1.000000e+00 ; [#uses=1]
+ br i1 %148, label %bb8, label %bb12
+
+bb8: ; preds = %bb6
+ %149 = load i8* bitcast (i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection to i8*), align 8 ; [#uses=1]
+ %150 = icmp eq i8 %149, 0 ; [#uses=1]
+ br i1 %150, label %bb.i, label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit
+
+bb.i: ; preds = %bb8
+ %151 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind ; [#uses=1]
+ %152 = icmp eq i32 %151, 0 ; [#uses=1]
+ br i1 %152, label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 0, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 0), align 16
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 1, i32 0, i32 3), align 4
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 0), align 32
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 1), align 4
+ store float 1.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds ([3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 2, i32 0, i32 3), align 4
+ call void @__cxa_guard_release(i64* @_ZGVZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection) nounwind
+ br label %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit
+
+_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit: ; preds = %bb1.i, %bb.i, %bb8
+ %153 = load i32* %10, align 4 ; [#uses=3]
+ %154 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %155 = load float* %154, align 4 ; [#uses=1]
+ %156 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %153, i32 0, i32 0 ; [#uses=1]
+ %157 = load float* %156, align 16 ; [#uses=1]
+ %158 = fmul float %155, %157 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %160 = load float* %159, align 4 ; [#uses=1]
+ %161 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %153, i32 0, i32 1 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ %163 = fmul float %160, %162 ; [#uses=1]
+ %164 = fadd float %158, %163 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btKinematicClosestNotMeConvexResultCallback* %callback, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %166 = load float* %165, align 4 ; [#uses=1]
+ %167 = getelementptr inbounds [3 x %struct.btQuadWord]* @_ZZN30btKinematicCharacterController19getUpAxisDirectionsEvE16sUpAxisDirection, i32 0, i32 %153, i32 0, i32 2 ; [#uses=1]
+ %168 = load float* %167, align 8 ; [#uses=1]
+ %169 = fmul float %166, %168 ; [#uses=1]
+ %170 = fadd float %164, %169 ; [#uses=1]
+ %171 = fcmp ogt float %170, 0.000000e+00 ; [#uses=1]
+ br i1 %171, label %bb10, label %bb11
+
+bb10: ; preds = %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit
+ %172 = load float* %0, align 4 ; [#uses=1]
+ %173 = load float* %119, align 4 ; [#uses=5]
+ %174 = fmul float %172, %173 ; [#uses=1]
+ %175 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 18 ; [#uses=1]
+ store float %174, float* %175, align 4
+ %176 = fsub float 1.000000e+00, %173 ; [#uses=3]
+ %177 = load float* %27, align 4 ; [#uses=1]
+ %178 = fmul float %177, %176 ; [#uses=1]
+ %179 = load float* %30, align 4 ; [#uses=1]
+ %180 = fmul float %179, %173 ; [#uses=1]
+ %181 = fadd float %178, %180 ; [#uses=1]
+ store float %181, float* %27, align 4
+ %182 = load float* %24, align 4 ; [#uses=1]
+ %183 = fmul float %182, %176 ; [#uses=1]
+ %184 = load float* %31, align 4 ; [#uses=1]
+ %185 = fmul float %184, %173 ; [#uses=1]
+ %186 = fadd float %183, %185 ; [#uses=1]
+ store float %186, float* %24, align 4
+ %187 = load float* %21, align 4 ; [#uses=1]
+ %188 = fmul float %187, %176 ; [#uses=1]
+ %189 = load float* %32, align 4 ; [#uses=1]
+ %190 = fmul float %189, %173 ; [#uses=1]
+ %191 = fadd float %188, %190 ; [#uses=1]
+ store float %191, float* %21, align 4
+ br label %bb11
+
+bb11: ; preds = %bb10, %_ZN30btKinematicCharacterController19getUpAxisDirectionsEv.exit
+ %192 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 4 ; [#uses=1]
+ store float 0.000000e+00, float* %192, align 4
+ store float 0.000000e+00, float* %2, align 4
+ ret void
+
+bb12: ; preds = %bb6
+ %193 = load float* %0, align 4 ; [#uses=1]
+ %194 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 18 ; [#uses=1]
+ store float %193, float* %194, align 4
+ %195 = load float* %30, align 4 ; [#uses=1]
+ store float %195, float* %27, align 4
+ %196 = load float* %31, align 4 ; [#uses=1]
+ store float %196, float* %24, align 4
+ %197 = load float* %32, align 4 ; [#uses=1]
+ store float %197, float* %21, align 4
+ %198 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 3 ; [#uses=1]
+ %199 = load float* %33, align 4 ; [#uses=1]
+ store float %199, float* %198, align 4
+ ret void
+
+lpad: ; preds = %bb4, %bb3
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select18 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %118, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN30btKinematicCharacterController10playerStepEP16btCollisionWorldf(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %collisionWorld, float %dt) align 2 {
+entry:
+ %move = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 26 ; [#uses=2]
+ %1 = load i8* %0, align 1 ; [#uses=1]
+ %toBoolnot = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb, label %bb4
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 27 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fcmp ugt float %3, 0.000000e+00 ; [#uses=1]
+ br i1 %4, label %bb4, label %return
+
+bb4: ; preds = %bb, %entry
+ %5 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 12 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to i8 (%struct.btKinematicCharacterController*)* ; [#uses=1]
+ %10 = call zeroext i8 %9(%struct.btKinematicCharacterController* %this) ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 23 ; [#uses=1]
+ store i8 %10, i8* %11, align 4
+ %12 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 4 ; [#uses=4]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 11 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fmul float %15, %dt ; [#uses=1]
+ %17 = fsub float %13, %16 ; [#uses=5]
+ store float %17, float* %12, align 4
+ %18 = fcmp ogt float %17, 0.000000e+00 ; [#uses=1]
+ br i1 %18, label %bb5, label %bb7
+
+bb5: ; preds = %bb4
+ %19 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 7 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ %21 = fcmp ogt float %17, %20 ; [#uses=1]
+ br i1 %21, label %bb6, label %bb7
+
+bb6: ; preds = %bb5
+ store float %20, float* %12, align 4
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5, %bb4
+ %22 = phi float [ %20, %bb6 ], [ %17, %bb5 ], [ %17, %bb4 ] ; [#uses=4]
+ %23 = fcmp uge float %22, 0.000000e+00 ; [#uses=1]
+ br i1 %23, label %bb14, label %bb8
+
+bb8: ; preds = %bb7
+ %24 = call float @fabsf(float %22) nounwind readnone ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 6 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = call float @fabsf(float %26) nounwind readnone ; [#uses=2]
+ %28 = fcmp ule float %24, %27 ; [#uses=1]
+ br i1 %28, label %bb14, label %bb13
+
+bb13: ; preds = %bb8
+ %29 = fsub float -0.000000e+00, %27 ; [#uses=2]
+ store float %29, float* %12, align 4
+ br label %bb14
+
+bb14: ; preds = %bb13, %bb8, %bb7
+ %30 = phi float [ %22, %bb7 ], [ %22, %bb8 ], [ %29, %bb13 ] ; [#uses=1]
+ %31 = fmul float %30, %dt ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 5 ; [#uses=1]
+ store float %31, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 2 ; [#uses=2]
+ %34 = load %struct.btPairCachingGhostObject** %33, align 4 ; [#uses=12]
+ %35 = getelementptr inbounds %struct.btPairCachingGhostObject* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btPairCachingGhostObject* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btPairCachingGhostObject* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btPairCachingGhostObject* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btPairCachingGhostObject* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btPairCachingGhostObject* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btPairCachingGhostObject* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btPairCachingGhostObject* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btPairCachingGhostObject* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btPairCachingGhostObject* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btPairCachingGhostObject* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btPairCachingGhostObject* %34, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ call void @_ZN30btKinematicCharacterController6stepUpEP16btCollisionWorld(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %collisionWorld)
+ %59 = load i8* %0, align 1 ; [#uses=1]
+ %toBool15 = icmp eq i8 %59, 0 ; [#uses=1]
+ br i1 %toBool15, label %bb17, label %bb16
+
+bb16: ; preds = %bb14
+ %60 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15 ; [#uses=1]
+ call void @_ZN30btKinematicCharacterController20stepForwardAndStrafeEP16btCollisionWorldRK9btVector3(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %collisionWorld, %struct.btQuadWord* %60)
+ br label %bb21
+
+bb17: ; preds = %bb14
+ %61 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 27 ; [#uses=2]
+ %62 = load float* %61, align 4 ; [#uses=3]
+ %63 = fcmp ule float %62, %dt ; [#uses=1]
+ %iftmp.240.0 = select i1 %63, float %62, float %dt ; [#uses=3]
+ %64 = fsub float %62, %dt ; [#uses=1]
+ store float %64, float* %61, align 4
+ %65 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 2 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ %67 = fmul float %66, %iftmp.240.0 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = fmul float %69, %iftmp.240.0 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 0 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fmul float %72, %iftmp.240.0 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btQuadWord* %move, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %73, float* %74, align 8
+ %75 = getelementptr inbounds %struct.btQuadWord* %move, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %70, float* %75, align 4
+ %76 = getelementptr inbounds %struct.btQuadWord* %move, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %67, float* %76, align 8
+ %77 = getelementptr inbounds %struct.btQuadWord* %move, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %77, align 4
+ call void @_ZN30btKinematicCharacterController20stepForwardAndStrafeEP16btCollisionWorldRK9btVector3(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %collisionWorld, %struct.btQuadWord* %move)
+ br label %bb21
+
+bb21: ; preds = %bb17, %bb16
+ call void @_ZN30btKinematicCharacterController8stepDownEP16btCollisionWorldf(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %collisionWorld, float %dt)
+ %78 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 0 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 1 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 2 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 3 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = load %struct.btPairCachingGhostObject** %33, align 4 ; [#uses=16]
+ %87 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %36, float* %87, align 4
+ %88 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %38, float* %88, align 4
+ %89 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %40, float* %89, align 4
+ %90 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %42, float* %90, align 4
+ %91 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %44, float* %91, align 4
+ %92 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %46, float* %92, align 4
+ %93 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %48, float* %93, align 4
+ %94 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %50, float* %94, align 4
+ %95 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %52, float* %95, align 4
+ %96 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %54, float* %96, align 4
+ %97 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %56, float* %97, align 4
+ %98 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %58, float* %98, align 4
+ %99 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %79, float* %99, align 4
+ %100 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %81, float* %100, align 4
+ %101 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %83, float* %101, align 4
+ %102 = getelementptr inbounds %struct.btPairCachingGhostObject* %86, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %85, float* %102, align 4
+ ret void
+
+return: ; preds = %bb
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN30btKinematicCharacterControllerC2EP24btPairCachingGhostObjectP13btConvexShapefi(%struct.btKinematicCharacterController* %this, %struct.btPairCachingGhostObject* %ghostObject, %struct.btConvexShape* %convexShape, float %stepHeight, i32 %upAxis) nounwind align 2 {
+invcont:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([15 x i32 (...)*]* @_ZTV30btKinematicCharacterController, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 4 ; [#uses=1]
+ store i8 1, i8* %1, align 4
+ %2 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 3 ; [#uses=1]
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %2, align 4
+ %3 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 2 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 28 ; [#uses=1]
+ store i32 %upAxis, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 14 ; [#uses=1]
+ store float 0x3F947AE140000000, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 25 ; [#uses=1]
+ store i8 1, i8* %11, align 2
+ %12 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btPairCachingGhostObject* %ghostObject, %struct.btPairCachingGhostObject** %12, align 4
+ %13 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 13 ; [#uses=1]
+ store float %stepHeight, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 12 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConvexShape* %convexShape, %struct.btConvexShape** %15, align 4
+ %16 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 26 ; [#uses=1]
+ store i8 1, i8* %16, align 1
+ %17 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 27 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 4 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 11 ; [#uses=1]
+ store float 0x403D666660000000, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 6 ; [#uses=1]
+ store float 5.500000e+01, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 7 ; [#uses=1]
+ store float 1.000000e+01, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 23 ; [#uses=1]
+ store i8 0, i8* %23, align 4
+ %24 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 24 ; [#uses=1]
+ store i8 0, i8* %24, align 1
+ %25 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 9 ; [#uses=1]
+ store float 0x3FE921FB60000000, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 10 ; [#uses=1]
+ store float 0x3FE6A09E60000000, float* %26, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN30btKinematicCharacterControllerD1Ev(%struct.btKinematicCharacterController* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([15 x i32 (...)*]* @_ZTV30btKinematicCharacterController, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 3 ; [#uses=3]
+ %2 = load %struct.btPersistentManifold*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btPersistentManifold** %2, null ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btPersistentManifold** %2 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %1, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %1, align 4
+ %8 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN30btKinematicCharacterControllerD0Ev(%struct.btKinematicCharacterController* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([15 x i32 (...)*]* @_ZTV30btKinematicCharacterController, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 3 ; [#uses=3]
+ %2 = load %struct.btPersistentManifold*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btPersistentManifold** %2, null ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btPersistentManifold** %2 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %1, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %1, align 4
+ %8 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = bitcast %struct.btKinematicCharacterController* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %10) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN30btKinematicCharacterController7preStepEP16btCollisionWorld(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %collisionWorld) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 21 ; [#uses=2]
+ store i8 0, i8* %0, align 4
+ br label %bb1
+
+bb: ; preds = %bb1
+ %tmp = add i32 %numPenetrationLoops.0, 1 ; [#uses=2]
+ store i8 1, i8* %0, align 4
+ %1 = icmp sgt i32 %tmp, 4 ; [#uses=1]
+ br i1 %1, label %bb2, label %bb1
+
+bb1: ; preds = %bb, %entry
+ %numPenetrationLoops.0 = phi i32 [ 0, %entry ], [ %tmp, %bb ] ; [#uses=1]
+ %2 = tail call zeroext i8 @_ZN30btKinematicCharacterController22recoverFromPenetrationEP16btCollisionWorld(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %collisionWorld) ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb
+
+bb2: ; preds = %bb1, %bb
+ %3 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 2 ; [#uses=1]
+ %4 = load %struct.btPairCachingGhostObject** %3, align 4 ; [#uses=4]
+ %5 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 0 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btPairCachingGhostObject* %4, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btPairCachingGhostObject* %4, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 2 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btPairCachingGhostObject* %4, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 3 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btPairCachingGhostObject* %4, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 0 ; [#uses=1]
+ store float %7, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 1 ; [#uses=1]
+ store float %10, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 2 ; [#uses=1]
+ store float %13, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 19, i32 0, i32 3 ; [#uses=1]
+ store float %16, float* %20, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN30btKinematicCharacterControllerC1EP24btPairCachingGhostObjectP13btConvexShapefi(%struct.btKinematicCharacterController* %this, %struct.btPairCachingGhostObject* %ghostObject, %struct.btConvexShape* %convexShape, float %stepHeight, i32 %upAxis) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([15 x i32 (...)*]* @_ZTV30btKinematicCharacterController, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 4 ; [#uses=1]
+ store i8 1, i8* %1, align 4
+ %2 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 3 ; [#uses=1]
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %2, align 4
+ %3 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 2 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 28 ; [#uses=1]
+ store i32 %upAxis, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 14 ; [#uses=1]
+ store float 0x3F947AE140000000, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 15, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 25 ; [#uses=1]
+ store i8 1, i8* %11, align 2
+ %12 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btPairCachingGhostObject* %ghostObject, %struct.btPairCachingGhostObject** %12, align 4
+ %13 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 13 ; [#uses=1]
+ store float %stepHeight, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 12 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 3 ; [#uses=1]
+ store %struct.btConvexShape* %convexShape, %struct.btConvexShape** %15, align 4
+ %16 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 26 ; [#uses=1]
+ store i8 1, i8* %16, align 1
+ %17 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 27 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 4 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 11 ; [#uses=1]
+ store float 0x403D666660000000, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 6 ; [#uses=1]
+ store float 5.500000e+01, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 7 ; [#uses=1]
+ store float 1.000000e+01, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 23 ; [#uses=1]
+ store i8 0, i8* %23, align 4
+ %24 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 24 ; [#uses=1]
+ store i8 0, i8* %24, align 1
+ %25 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 9 ; [#uses=1]
+ store float 0x3FE921FB60000000, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 10 ; [#uses=1]
+ store float 0x3FE6A09E60000000, float* %26, align 4
+ ret void
+}
+
+; [#uses=1]
+define zeroext i8 @_ZN30btKinematicCharacterController22recoverFromPenetrationEP16btCollisionWorld(%struct.btKinematicCharacterController* %this, %struct.btCollisionWorld* %collisionWorld) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionWorld* %collisionWorld, i32 0, i32 2 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btActionInterface* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 8 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btCollisionWorld* %collisionWorld, i32 0, i32 3 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 2 ; [#uses=6]
+ %8 = load %struct.btPairCachingGhostObject** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btPairCachingGhostObject* %8, i32 0, i32 1 ; [#uses=1]
+ %10 = load %struct.btHashedOverlappingPairCache** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %10, i32 0, i32 0 ; [#uses=1]
+ %12 = bitcast i32 (...)* %5 to void (%struct.btActionInterface*, %struct..0btMultiSapOverlapFilterCallback*, %struct.btDispatcherInfo*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %12(%struct.btActionInterface* %1, %struct..0btMultiSapOverlapFilterCallback* %11, %struct.btDispatcherInfo* %6, %struct.btActionInterface* %1)
+ %13 = load %struct.btPairCachingGhostObject** %7, align 4 ; [#uses=5]
+ %14 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 0 ; [#uses=4]
+ %15 = getelementptr inbounds %struct.btPairCachingGhostObject* %13, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 1 ; [#uses=4]
+ %18 = getelementptr inbounds %struct.btPairCachingGhostObject* %13, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 2 ; [#uses=4]
+ %21 = getelementptr inbounds %struct.btPairCachingGhostObject* %13, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 17, i32 0, i32 3 ; [#uses=2]
+ %24 = getelementptr inbounds %struct.btPairCachingGhostObject* %13, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btPairCachingGhostObject* %13, i32 0, i32 1 ; [#uses=1]
+ %27 = load %struct.btHashedOverlappingPairCache** %26, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %27, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load i32 (...)*** %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds i32 (...)** %29, i32 9 ; [#uses=1]
+ %31 = load i32 (...)** %30, align 4 ; [#uses=1]
+ %32 = bitcast i32 (...)* %31 to i32 (%struct.btHashedOverlappingPairCache*)* ; [#uses=1]
+ %33 = tail call i32 %32(%struct.btHashedOverlappingPairCache* %27) ; [#uses=1]
+ %34 = icmp sgt i32 %33, 0 ; [#uses=1]
+ br i1 %34, label %bb.nph56, label %bb19
+
+bb.nph56: ; preds = %entry
+ %35 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 1 ; [#uses=3]
+ %36 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 3 ; [#uses=5]
+ %38 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 22, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 22, i32 0, i32 1 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 22, i32 0, i32 2 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 22, i32 0, i32 3 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 2 ; [#uses=2]
+ %43 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 4 ; [#uses=2]
+ br label %bb
+
+bb: ; preds = %bb16, %bb.nph56
+ %i.055 = phi i32 [ 0, %bb.nph56 ], [ %tmp68, %bb16 ] ; [#uses=2]
+ %maxPen.454 = phi float [ 0.000000e+00, %bb.nph56 ], [ %maxPen.3.lcssa, %bb16 ] ; [#uses=2]
+ %penetration.353 = phi i8 [ 0, %bb.nph56 ], [ %penetration.2.lcssa, %bb16 ] ; [#uses=2]
+ %tmp68 = add i32 %i.055, 1 ; [#uses=2]
+ %44 = load i32* %35, align 4 ; [#uses=4]
+ %45 = icmp sgt i32 %44, 0 ; [#uses=1]
+ %.not = xor i1 %45, true ; [#uses=1]
+ %46 = icmp slt i32 %44, 0 ; [#uses=1]
+ %or.cond = and i1 %.not, %46 ; [#uses=1]
+ br i1 %or.cond, label %bb4.i, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE6resizeEiRKS1_.exit
+
+bb4.i: ; preds = %bb
+ %47 = load i32* %42, align 4 ; [#uses=1]
+ %48 = icmp slt i32 %47, 0 ; [#uses=1]
+ br i1 %48, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i, label %bb.nph.i
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i: ; preds = %bb4.i
+ %49 = load %struct.btPersistentManifold*** %37, align 4 ; [#uses=2]
+ %50 = icmp eq %struct.btPersistentManifold** %49, null ; [#uses=1]
+ br i1 %50, label %bb11.preheader.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i
+ %51 = load i8* %43, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %51, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %52 = bitcast %struct.btPersistentManifold** %49 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %52)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %37, align 4
+ br label %bb11.preheader.i
+
+bb11.preheader.i: ; preds = %bb2.i.i.i, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i
+ store i8 1, i8* %43, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %37, align 4
+ store i32 0, i32* %42, align 4
+ br label %bb.nph.i
+
+bb.nph.i: ; preds = %bb11.preheader.i, %bb4.i
+ %tmp = sub i32 0, %44 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb10.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb10.i ] ; [#uses=2]
+ %tmp58 = add i32 %44, %indvar.i ; [#uses=1]
+ %53 = load %struct.btPersistentManifold*** %37, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btPersistentManifold** %53, i32 %tmp58 ; [#uses=2]
+ %54 = icmp eq %struct.btPersistentManifold** %scevgep, null ; [#uses=1]
+ br i1 %54, label %bb10.i, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %scevgep, align 4
+ br label %bb10.i
+
+bb10.i: ; preds = %bb8.i, %bb7.i
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %tmp ; [#uses=1]
+ br i1 %exitcond, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE6resizeEiRKS1_.exit, label %bb7.i
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE6resizeEiRKS1_.exit: ; preds = %bb10.i, %bb
+ store i32 0, i32* %35, align 4
+ %55 = load %struct.btPairCachingGhostObject** %7, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btPairCachingGhostObject* %55, i32 0, i32 1 ; [#uses=1]
+ %57 = load %struct.btHashedOverlappingPairCache** %56, align 4 ; [#uses=2]
+ %58 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %57, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %59 = load i32 (...)*** %58, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds i32 (...)** %59, i32 7 ; [#uses=1]
+ %61 = load i32 (...)** %60, align 4 ; [#uses=1]
+ %62 = bitcast i32 (...)* %61 to %"struct.btAlignedObjectArray<btBroadphasePair>"* (%struct.btHashedOverlappingPairCache*)* ; [#uses=1]
+ %63 = tail call %"struct.btAlignedObjectArray<btBroadphasePair>"* %62(%struct.btHashedOverlappingPairCache* %57) ; [#uses=1]
+ %64 = getelementptr inbounds %"struct.btAlignedObjectArray<btBroadphasePair>"* %63, i32 0, i32 3 ; [#uses=1]
+ %65 = load %struct.btBroadphasePair** %64, align 4 ; [#uses=1]
+ %scevgep66 = getelementptr %struct.btBroadphasePair* %65, i32 %i.055, i32 2 ; [#uses=1]
+ %66 = load %struct.btCollisionAlgorithm** %scevgep66, align 4 ; [#uses=3]
+ %67 = icmp eq %struct.btCollisionAlgorithm* %66, null ; [#uses=1]
+ br i1 %67, label %bb14.preheader, label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE6resizeEiRKS1_.exit
+ %68 = getelementptr inbounds %struct.btCollisionAlgorithm* %66, i32 0, i32 0 ; [#uses=1]
+ %69 = load i32 (...)*** %68, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds i32 (...)** %69, i32 4 ; [#uses=1]
+ %71 = load i32 (...)** %70, align 4 ; [#uses=1]
+ %72 = bitcast i32 (...)* %71 to void (%struct.btCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* ; [#uses=1]
+ tail call void %72(%struct.btCollisionAlgorithm* %66, %"struct.btAlignedObjectArray<btPersistentManifold*>"* %36)
+ br label %bb14.preheader
+
+bb14.preheader: ; preds = %bb1, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE6resizeEiRKS1_.exit
+ %73 = load i32* %35, align 4 ; [#uses=2]
+ %74 = icmp sgt i32 %73, 0 ; [#uses=1]
+ br i1 %74, label %bb3, label %bb14.preheader.bb16_crit_edge
+
+bb14.preheader.bb16_crit_edge: ; preds = %bb14.preheader
+ %.pre = load %struct.btPairCachingGhostObject** %7, align 4 ; [#uses=1]
+ br label %bb16
+
+bb3: ; preds = %bb13, %bb14.preheader
+ %j.049 = phi i32 [ %tmp65, %bb13 ], [ 0, %bb14.preheader ] ; [#uses=2]
+ %maxPen.348 = phi float [ %maxPen.2.lcssa, %bb13 ], [ %maxPen.454, %bb14.preheader ] ; [#uses=2]
+ %penetration.247 = phi i8 [ %penetration.1.lcssa, %bb13 ], [ %penetration.353, %bb14.preheader ] ; [#uses=2]
+ %tmp65 = add i32 %j.049, 1 ; [#uses=2]
+ %75 = load %struct.btPersistentManifold*** %37, align 4 ; [#uses=1]
+ %scevgep64 = getelementptr %struct.btPersistentManifold** %75, i32 %j.049 ; [#uses=1]
+ %76 = load %struct.btPersistentManifold** %scevgep64, align 4 ; [#uses=6]
+ %77 = getelementptr inbounds %struct.btPersistentManifold* %76, i32 0, i32 2 ; [#uses=1]
+ %78 = load i8** %77, align 4 ; [#uses=1]
+ %79 = load %struct.btPairCachingGhostObject** %7, align 4 ; [#uses=2]
+ %80 = bitcast %struct.btPairCachingGhostObject* %79 to i8* ; [#uses=1]
+ %81 = icmp eq i8* %78, %80 ; [#uses=1]
+ %iftmp.222.0 = select i1 %81, float -1.000000e+00, float 1.000000e+00 ; [#uses=6]
+ %82 = getelementptr inbounds %struct.btPersistentManifold* %76, i32 0, i32 4 ; [#uses=2]
+ %83 = load i32* %82, align 4 ; [#uses=1]
+ %84 = icmp sgt i32 %83, 0 ; [#uses=1]
+ br i1 %84, label %bb7, label %bb13
+
+bb7: ; preds = %bb11, %bb3
+ %p.045 = phi i32 [ %tmp63, %bb11 ], [ 0, %bb3 ] ; [#uses=5]
+ %maxPen.244 = phi float [ %maxPen.1, %bb11 ], [ %maxPen.348, %bb3 ] ; [#uses=3]
+ %penetration.143 = phi i8 [ %penetration.0, %bb11 ], [ %penetration.247, %bb3 ] ; [#uses=1]
+ %scevgep59 = getelementptr %struct.btPersistentManifold* %76, i32 0, i32 1, i32 %p.045, i32 5 ; [#uses=1]
+ %scevgep60 = getelementptr %struct.btPersistentManifold* %76, i32 0, i32 1, i32 %p.045, i32 4, i32 0, i32 2 ; [#uses=2]
+ %scevgep61 = getelementptr %struct.btPersistentManifold* %76, i32 0, i32 1, i32 %p.045, i32 4, i32 0, i32 1 ; [#uses=2]
+ %scevgep62 = getelementptr %struct.btPersistentManifold* %76, i32 0, i32 1, i32 %p.045, i32 4, i32 0, i32 0 ; [#uses=2]
+ %tmp63 = add i32 %p.045, 1 ; [#uses=2]
+ %85 = load float* %scevgep59, align 4 ; [#uses=6]
+ %86 = fcmp olt float %85, 0.000000e+00 ; [#uses=1]
+ br i1 %86, label %bb8, label %bb11
+
+bb8: ; preds = %bb7
+ %87 = fcmp olt float %85, %maxPen.244 ; [#uses=1]
+ br i1 %87, label %bb9, label %bb10
+
+bb9: ; preds = %bb8
+ %88 = load float* %scevgep60, align 4 ; [#uses=1]
+ %89 = fmul float %88, %iftmp.222.0 ; [#uses=1]
+ %90 = load float* %scevgep61, align 4 ; [#uses=1]
+ %91 = fmul float %90, %iftmp.222.0 ; [#uses=1]
+ %92 = load float* %scevgep62, align 4 ; [#uses=1]
+ %93 = fmul float %92, %iftmp.222.0 ; [#uses=1]
+ store float %93, float* %38, align 4
+ store float %91, float* %39, align 4
+ store float %89, float* %40, align 4
+ store float 0.000000e+00, float* %41, align 4
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb8
+ %maxPen.0 = phi float [ %85, %bb9 ], [ %maxPen.244, %bb8 ] ; [#uses=1]
+ %94 = load float* %scevgep60, align 4 ; [#uses=1]
+ %95 = fmul float %94, %iftmp.222.0 ; [#uses=1]
+ %96 = load float* %scevgep61, align 4 ; [#uses=1]
+ %97 = fmul float %96, %iftmp.222.0 ; [#uses=1]
+ %98 = load float* %scevgep62, align 4 ; [#uses=1]
+ %99 = fmul float %98, %iftmp.222.0 ; [#uses=1]
+ %100 = fmul float %95, %85 ; [#uses=1]
+ %101 = fmul float %97, %85 ; [#uses=1]
+ %102 = fmul float %99, %85 ; [#uses=1]
+ %103 = fmul float %100, 0x3FC99999A0000000 ; [#uses=1]
+ %104 = fmul float %101, 0x3FC99999A0000000 ; [#uses=1]
+ %105 = fmul float %102, 0x3FC99999A0000000 ; [#uses=1]
+ %106 = load float* %14, align 4 ; [#uses=1]
+ %107 = fadd float %106, %105 ; [#uses=1]
+ store float %107, float* %14, align 4
+ %108 = load float* %17, align 4 ; [#uses=1]
+ %109 = fadd float %108, %104 ; [#uses=1]
+ store float %109, float* %17, align 4
+ %110 = load float* %20, align 4 ; [#uses=1]
+ %111 = fadd float %110, %103 ; [#uses=1]
+ store float %111, float* %20, align 4
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb7
+ %penetration.0 = phi i8 [ 1, %bb10 ], [ %penetration.143, %bb7 ] ; [#uses=2]
+ %maxPen.1 = phi float [ %maxPen.0, %bb10 ], [ %maxPen.244, %bb7 ] ; [#uses=2]
+ %112 = load i32* %82, align 4 ; [#uses=1]
+ %113 = icmp sgt i32 %112, %tmp63 ; [#uses=1]
+ br i1 %113, label %bb7, label %bb13
+
+bb13: ; preds = %bb11, %bb3
+ %maxPen.2.lcssa = phi float [ %maxPen.348, %bb3 ], [ %maxPen.1, %bb11 ] ; [#uses=2]
+ %penetration.1.lcssa = phi i8 [ %penetration.247, %bb3 ], [ %penetration.0, %bb11 ] ; [#uses=2]
+ %114 = icmp sgt i32 %73, %tmp65 ; [#uses=1]
+ br i1 %114, label %bb3, label %bb16
+
+bb16: ; preds = %bb13, %bb14.preheader.bb16_crit_edge
+ %115 = phi %struct.btPairCachingGhostObject* [ %.pre, %bb14.preheader.bb16_crit_edge ], [ %79, %bb13 ] ; [#uses=1]
+ %maxPen.3.lcssa = phi float [ %maxPen.454, %bb14.preheader.bb16_crit_edge ], [ %maxPen.2.lcssa, %bb13 ] ; [#uses=1]
+ %penetration.2.lcssa = phi i8 [ %penetration.353, %bb14.preheader.bb16_crit_edge ], [ %penetration.1.lcssa, %bb13 ] ; [#uses=2]
+ %116 = getelementptr inbounds %struct.btPairCachingGhostObject* %115, i32 0, i32 1 ; [#uses=1]
+ %117 = load %struct.btHashedOverlappingPairCache** %116, align 4 ; [#uses=2]
+ %118 = getelementptr inbounds %struct.btHashedOverlappingPairCache* %117, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %119 = load i32 (...)*** %118, align 4 ; [#uses=1]
+ %120 = getelementptr inbounds i32 (...)** %119, i32 9 ; [#uses=1]
+ %121 = load i32 (...)** %120, align 4 ; [#uses=1]
+ %122 = bitcast i32 (...)* %121 to i32 (%struct.btHashedOverlappingPairCache*)* ; [#uses=1]
+ %123 = tail call i32 %122(%struct.btHashedOverlappingPairCache* %117) ; [#uses=1]
+ %124 = icmp sgt i32 %123, %tmp68 ; [#uses=1]
+ br i1 %124, label %bb, label %bb19
+
+bb19: ; preds = %bb16, %entry
+ %penetration.3.lcssa = phi i8 [ 0, %entry ], [ %penetration.2.lcssa, %bb16 ] ; [#uses=1]
+ %125 = load %struct.btPairCachingGhostObject** %7, align 4 ; [#uses=16]
+ %126 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %127 = load float* %126, align 4 ; [#uses=1]
+ %128 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %129 = load float* %128, align 4 ; [#uses=1]
+ %130 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %131 = load float* %130, align 4 ; [#uses=1]
+ %132 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %133 = load float* %132, align 4 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %137 = load float* %136, align 4 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %139 = load float* %138, align 4 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ %142 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %143 = load float* %142, align 4 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %147 = load float* %146, align 4 ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %149 = load float* %148, align 4 ; [#uses=1]
+ %150 = load float* %14, align 4 ; [#uses=1]
+ %151 = load float* %17, align 4 ; [#uses=1]
+ %152 = load float* %20, align 4 ; [#uses=1]
+ %153 = load float* %23, align 4 ; [#uses=1]
+ store float %127, float* %126, align 4
+ store float %129, float* %128, align 4
+ store float %131, float* %130, align 4
+ store float %133, float* %132, align 4
+ store float %135, float* %134, align 4
+ store float %137, float* %136, align 4
+ store float %139, float* %138, align 4
+ store float %141, float* %140, align 4
+ store float %143, float* %142, align 4
+ store float %145, float* %144, align 4
+ store float %147, float* %146, align 4
+ store float %149, float* %148, align 4
+ %154 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %150, float* %154, align 4
+ %155 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %151, float* %155, align 4
+ %156 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %152, float* %156, align 4
+ %157 = getelementptr inbounds %struct.btPairCachingGhostObject* %125, i32 0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %153, float* %157, align 4
+ ret i8 %penetration.3.lcssa
+}
+
+; [#uses=0]
+define void @_ZN30btKinematicCharacterControllerD2Ev(%struct.btKinematicCharacterController* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([15 x i32 (...)*]* @_ZTV30btKinematicCharacterController, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 3 ; [#uses=3]
+ %2 = load %struct.btPersistentManifold*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btPersistentManifold** %2, null ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btPersistentManifold** %2 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %6)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %1, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %1, align 4
+ %8 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btKinematicCharacterController* %this, i32 0, i32 20, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btConeTwistConstraintC2ER11btRigidBodyS1_RK11btTransformS4_(%struct.btConeTwistConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* nocapture %rbAFrame, %struct.btTransform* nocapture %rbBFrame) align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBodyS2_(%struct.btTypedConstraint* %0, i32 5, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB)
+ %1 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV21btConeTwistConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ %56 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ store float %58, float* %56, align 4
+ %59 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %59, align 4
+ %62 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ store float %64, float* %62, align 4
+ %65 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ store float %67, float* %65, align 4
+ %68 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %71, align 4
+ %74 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ store float %76, float* %74, align 4
+ %77 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ store float %79, float* %77, align 4
+ %80 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ store float %82, float* %80, align 4
+ %83 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ store float %85, float* %83, align 4
+ %86 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ store float %88, float* %86, align 4
+ %89 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ store float %91, float* %89, align 4
+ %92 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ store float %94, float* %92, align 4
+ %95 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ store float %97, float* %95, align 4
+ %98 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 29 ; [#uses=1]
+ store i8 0, i8* %99, align 4
+ %100 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 32 ; [#uses=1]
+ %101 = bitcast i8* %98 to i32* ; [#uses=1]
+ store i32 0, i32* %101, align 4
+ store float -1.000000e+00, float* %100, align 4
+ %102 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %102, align 4
+ %103 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %103, align 4
+ %104 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %104, align 4
+ %105 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ store float 1.000000e+00, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %106, align 4
+ %107 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ store float 1.000000e+00, float* %107, align 4
+ %108 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %108, align 4
+ %109 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ store float 0x3FA99999A0000000, float* %109, align 4
+ %110 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 34 ; [#uses=1]
+ store i32 0, i32* %110, align 4
+ %111 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 35 ; [#uses=1]
+ store float 0.000000e+00, float* %111, align 4
+ %112 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 36 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 37 ; [#uses=1]
+ store float 0.000000e+00, float* %113, align 4
+ ret void
+}
+
+; [#uses=8]
+define linkonce_odr void @_ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(%struct.btJacobianEntry* %this, %struct.btMatrix3x3* nocapture %world2A, %struct.btMatrix3x3* nocapture %world2B, %struct.btQuadWord* nocapture %rel_pos1, %struct.btQuadWord* nocapture %rel_pos2, %struct.btQuadWord* nocapture %jointAxis, %struct.btQuadWord* nocapture %inertiaInvA, float %massInvA, %struct.btQuadWord* nocapture %inertiaInvB, float %massInvB) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %jointAxis, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=4]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %jointAxis, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=4]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %jointAxis, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=4]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %jointAxis, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btQuadWord* %rel_pos1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fmul float %13, %5 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %rel_pos1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = fmul float %16, %2 ; [#uses=1]
+ %18 = fsub float %14, %17 ; [#uses=3]
+ %19 = getelementptr inbounds %struct.btQuadWord* %rel_pos1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=2]
+ %21 = fmul float %20, %2 ; [#uses=1]
+ %22 = fmul float %13, %8 ; [#uses=1]
+ %23 = fsub float %21, %22 ; [#uses=3]
+ %24 = fmul float %16, %8 ; [#uses=1]
+ %25 = fmul float %20, %5 ; [#uses=1]
+ %26 = fsub float %24, %25 ; [#uses=3]
+ %27 = getelementptr inbounds %struct.btMatrix3x3* %world2A, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fmul float %28, %26 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btMatrix3x3* %world2A, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = fmul float %31, %23 ; [#uses=1]
+ %33 = fadd float %29, %32 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btMatrix3x3* %world2A, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fmul float %35, %18 ; [#uses=1]
+ %37 = fadd float %33, %36 ; [#uses=3]
+ %38 = getelementptr inbounds %struct.btMatrix3x3* %world2A, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fmul float %39, %26 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btMatrix3x3* %world2A, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = fmul float %42, %23 ; [#uses=1]
+ %44 = fadd float %40, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btMatrix3x3* %world2A, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fmul float %46, %18 ; [#uses=1]
+ %48 = fadd float %44, %47 ; [#uses=3]
+ %49 = getelementptr inbounds %struct.btMatrix3x3* %world2A, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fmul float %50, %26 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btMatrix3x3* %world2A, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ %54 = fmul float %53, %23 ; [#uses=1]
+ %55 = fadd float %51, %54 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btMatrix3x3* %world2A, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = fmul float %57, %18 ; [#uses=1]
+ %59 = fadd float %55, %58 ; [#uses=3]
+ %60 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %59, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %48, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %37, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %63, align 4
+ %64 = fsub float -0.000000e+00, %8 ; [#uses=2]
+ %65 = fsub float -0.000000e+00, %5 ; [#uses=2]
+ %66 = fsub float -0.000000e+00, %2 ; [#uses=2]
+ %67 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=2]
+ %69 = fmul float %68, %65 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=2]
+ %72 = fmul float %71, %66 ; [#uses=1]
+ %73 = fsub float %69, %72 ; [#uses=3]
+ %74 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=2]
+ %76 = fmul float %75, %66 ; [#uses=1]
+ %77 = fmul float %68, %64 ; [#uses=1]
+ %78 = fsub float %76, %77 ; [#uses=3]
+ %79 = fmul float %71, %64 ; [#uses=1]
+ %80 = fmul float %75, %65 ; [#uses=1]
+ %81 = fsub float %79, %80 ; [#uses=3]
+ %82 = getelementptr inbounds %struct.btMatrix3x3* %world2B, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = fmul float %83, %81 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btMatrix3x3* %world2B, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ %87 = fmul float %86, %78 ; [#uses=1]
+ %88 = fadd float %84, %87 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btMatrix3x3* %world2B, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ %91 = fmul float %90, %73 ; [#uses=1]
+ %92 = fadd float %88, %91 ; [#uses=3]
+ %93 = getelementptr inbounds %struct.btMatrix3x3* %world2B, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = fmul float %94, %81 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btMatrix3x3* %world2B, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ %98 = fmul float %97, %78 ; [#uses=1]
+ %99 = fadd float %95, %98 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btMatrix3x3* %world2B, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ %102 = fmul float %101, %73 ; [#uses=1]
+ %103 = fadd float %99, %102 ; [#uses=3]
+ %104 = getelementptr inbounds %struct.btMatrix3x3* %world2B, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ %106 = fmul float %105, %81 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btMatrix3x3* %world2B, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %108 = load float* %107, align 4 ; [#uses=1]
+ %109 = fmul float %108, %78 ; [#uses=1]
+ %110 = fadd float %106, %109 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btMatrix3x3* %world2B, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ %113 = fmul float %112, %73 ; [#uses=1]
+ %114 = fadd float %110, %113 ; [#uses=3]
+ %115 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %114, float* %115, align 4
+ %116 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %103, float* %116, align 4
+ %117 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %92, float* %117, align 4
+ %118 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %118, align 4
+ %119 = getelementptr inbounds %struct.btQuadWord* %inertiaInvA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %120 = load float* %119, align 4 ; [#uses=1]
+ %121 = fmul float %120, %37 ; [#uses=2]
+ %122 = getelementptr inbounds %struct.btQuadWord* %inertiaInvA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=1]
+ %124 = fmul float %123, %48 ; [#uses=2]
+ %125 = getelementptr inbounds %struct.btQuadWord* %inertiaInvA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %126 = load float* %125, align 4 ; [#uses=1]
+ %127 = fmul float %126, %59 ; [#uses=2]
+ %128 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %127, float* %128, align 4
+ %129 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %124, float* %129, align 4
+ %130 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %121, float* %130, align 4
+ %131 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %131, align 4
+ %132 = getelementptr inbounds %struct.btQuadWord* %inertiaInvB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %133 = load float* %132, align 4 ; [#uses=1]
+ %134 = fmul float %133, %92 ; [#uses=2]
+ %135 = getelementptr inbounds %struct.btQuadWord* %inertiaInvB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %136 = load float* %135, align 4 ; [#uses=1]
+ %137 = fmul float %136, %103 ; [#uses=2]
+ %138 = getelementptr inbounds %struct.btQuadWord* %inertiaInvB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %139 = load float* %138, align 4 ; [#uses=1]
+ %140 = fmul float %139, %114 ; [#uses=2]
+ %141 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %140, float* %141, align 4
+ %142 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %137, float* %142, align 4
+ %143 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %134, float* %143, align 4
+ %144 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %144, align 4
+ %145 = fmul float %127, %59 ; [#uses=1]
+ %146 = fmul float %124, %48 ; [#uses=1]
+ %147 = fadd float %145, %146 ; [#uses=1]
+ %148 = fmul float %121, %37 ; [#uses=1]
+ %149 = fadd float %147, %148 ; [#uses=1]
+ %150 = fadd float %149, %massInvA ; [#uses=1]
+ %151 = fadd float %150, %massInvB ; [#uses=1]
+ %152 = fmul float %140, %114 ; [#uses=1]
+ %153 = fmul float %137, %103 ; [#uses=1]
+ %154 = fadd float %152, %153 ; [#uses=1]
+ %155 = fmul float %134, %92 ; [#uses=1]
+ %156 = fadd float %154, %155 ; [#uses=1]
+ %157 = fadd float %151, %156 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btJacobianEntry* %this, i32 0, i32 5 ; [#uses=1]
+ store float %157, float* %158, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK21btConeTwistConstraint28calculateSerializeBufferSizeEv(%struct.btConeTwistConstraint* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 204
+}
+
+; [#uses=0]
+define void @_ZN21btConeTwistConstraint4initEv(%struct.btConeTwistConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ store i8 0, i8* %0, align 4
+ %1 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ store i8 0, i8* %1, align 1
+ %2 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 24 ; [#uses=1]
+ store i8 0, i8* %2, align 2
+ %3 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 29 ; [#uses=1]
+ store i8 0, i8* %3, align 4
+ %4 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 32 ; [#uses=1]
+ store float -1.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ store float 1.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ store float 1.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ store float 0x3FA99999A0000000, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 34 ; [#uses=1]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 35 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 36 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 37 ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btConeTwistConstraint18getInfo1NonVirtualEPN17btTypedConstraint17btConstraintInfo1E(%struct.btConeTwistConstraint* nocapture %this, %struct.CONTACT_KEY_TOKEN* nocapture %info) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 0 ; [#uses=1]
+ store i32 6, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %1, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btConeTwistConstraint9updateRHSEf(%struct.btConeTwistConstraint* nocapture %this, float %timeStep) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btConeTwistConstraint8setParamEifi(%struct.btConeTwistConstraint* nocapture %this, i32 %num, float %value, i32 %axis) nounwind align 2 {
+entry:
+ switch i32 %num, label %return [
+ i32 1, label %bb
+ i32 2, label %bb
+ i32 3, label %bb3
+ i32 4, label %bb3
+ ]
+
+bb: ; preds = %entry, %entry
+ %0 = icmp ult i32 %axis, 3 ; [#uses=1]
+ br i1 %0, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %1 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 36 ; [#uses=1]
+ store float %value, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 34 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = or i32 %3, 2 ; [#uses=1]
+ store i32 %4, i32* %2, align 4
+ ret void
+
+bb2: ; preds = %bb
+ %5 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store float %value, float* %5, align 4
+ ret void
+
+bb3: ; preds = %entry, %entry
+ %6 = icmp ult i32 %axis, 3 ; [#uses=1]
+ br i1 %6, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ %7 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 35 ; [#uses=1]
+ store float %value, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 34 ; [#uses=2]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %10 = or i32 %9, 1 ; [#uses=1]
+ store i32 %10, i32* %8, align 4
+ ret void
+
+bb5: ; preds = %bb3
+ %11 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 37 ; [#uses=1]
+ store float %value, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 34 ; [#uses=2]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = or i32 %13, 4 ; [#uses=1]
+ store i32 %14, i32* %12, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define float @_ZNK21btConeTwistConstraint8getParamEii(%struct.btConeTwistConstraint* nocapture %this, i32 %num, i32 %axis) nounwind readonly align 2 {
+entry:
+ switch i32 %num, label %bb8 [
+ i32 1, label %bb
+ i32 2, label %bb
+ i32 3, label %bb4
+ i32 4, label %bb4
+ ]
+
+bb: ; preds = %entry, %entry
+ %0 = icmp ult i32 %axis, 3 ; [#uses=1]
+ br i1 %0, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %1 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 36 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ ret float %2
+
+bb2: ; preds = %bb
+ %3 = add i32 %axis, -3 ; [#uses=1]
+ %4 = icmp ult i32 %3, 3 ; [#uses=1]
+ br i1 %4, label %bb3, label %bb8
+
+bb3: ; preds = %bb2
+ %5 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ ret float %6
+
+bb4: ; preds = %entry, %entry
+ %7 = icmp ult i32 %axis, 3 ; [#uses=1]
+ br i1 %7, label %bb5, label %bb6
+
+bb5: ; preds = %bb4
+ %8 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 35 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ ret float %9
+
+bb6: ; preds = %bb4
+ %10 = add i32 %axis, -3 ; [#uses=1]
+ %11 = icmp ult i32 %10, 3 ; [#uses=1]
+ br i1 %11, label %bb7, label %bb8
+
+bb7: ; preds = %bb6
+ %12 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 37 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ ret float %13
+
+bb8: ; preds = %bb6, %bb2, %entry
+ ret float 0.000000e+00
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK21btConeTwistConstraint9serializeEPvP12btSerializer(%struct.btConeTwistConstraint* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK17btTypedConstraint9serializeEPvP12btSerializer(%struct.btTypedConstraint* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %scevgep.i.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i.i = bitcast i8* %2 to float* ; [#uses=1]
+ %scevgep.1.i.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i.i = getelementptr i8* %dataBuffer, i32 48 ; [#uses=1]
+ %3 = bitcast i8* %scevgep4.1.i.i.i to float* ; [#uses=1]
+ %scevgep.2.i.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i.i = getelementptr i8* %dataBuffer, i32 52 ; [#uses=1]
+ %4 = bitcast i8* %scevgep4.2.i.i.i to float* ; [#uses=1]
+ %scevgep.3.i.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i.i = getelementptr i8* %dataBuffer, i32 56 ; [#uses=1]
+ %5 = bitcast i8* %scevgep4.3.i.i.i to float* ; [#uses=1]
+ %6 = load float* %scevgep.i.i.i, align 4 ; [#uses=1]
+ store float %6, float* %scevgep4.i.i.i, align 4
+ %7 = load float* %scevgep.1.i.i.i, align 4 ; [#uses=1]
+ store float %7, float* %3, align 4
+ %8 = load float* %scevgep.2.i.i.i, align 4 ; [#uses=1]
+ store float %8, float* %4, align 4
+ %9 = load float* %scevgep.3.i.i.i, align 4 ; [#uses=1]
+ store float %9, float* %5, align 4
+ %scevgep.i.1.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.1.i.i = getelementptr i8* %dataBuffer, i32 60 ; [#uses=1]
+ %10 = bitcast i8* %scevgep4.i.1.i.i to float* ; [#uses=1]
+ %scevgep.1.i.1.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.1.i.i = getelementptr i8* %dataBuffer, i32 64 ; [#uses=1]
+ %11 = bitcast i8* %scevgep4.1.i.1.i.i to float* ; [#uses=1]
+ %scevgep.2.i.1.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.1.i.i = getelementptr i8* %dataBuffer, i32 68 ; [#uses=1]
+ %12 = bitcast i8* %scevgep4.2.i.1.i.i to float* ; [#uses=1]
+ %scevgep.3.i.1.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.1.i.i = getelementptr i8* %dataBuffer, i32 72 ; [#uses=1]
+ %13 = bitcast i8* %scevgep4.3.i.1.i.i to float* ; [#uses=1]
+ %14 = load float* %scevgep.i.1.i.i, align 4 ; [#uses=1]
+ store float %14, float* %10, align 4
+ %15 = load float* %scevgep.1.i.1.i.i, align 4 ; [#uses=1]
+ store float %15, float* %11, align 4
+ %16 = load float* %scevgep.2.i.1.i.i, align 4 ; [#uses=1]
+ store float %16, float* %12, align 4
+ %17 = load float* %scevgep.3.i.1.i.i, align 4 ; [#uses=1]
+ store float %17, float* %13, align 4
+ %scevgep.i.2.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.2.i.i = getelementptr i8* %dataBuffer, i32 76 ; [#uses=1]
+ %18 = bitcast i8* %scevgep4.i.2.i.i to float* ; [#uses=1]
+ %scevgep.1.i.2.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.2.i.i = getelementptr i8* %dataBuffer, i32 80 ; [#uses=1]
+ %19 = bitcast i8* %scevgep4.1.i.2.i.i to float* ; [#uses=1]
+ %scevgep.2.i.2.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.2.i.i = getelementptr i8* %dataBuffer, i32 84 ; [#uses=1]
+ %20 = bitcast i8* %scevgep4.2.i.2.i.i to float* ; [#uses=1]
+ %scevgep.3.i.2.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.2.i.i = getelementptr i8* %dataBuffer, i32 88 ; [#uses=1]
+ %21 = bitcast i8* %scevgep4.3.i.2.i.i to float* ; [#uses=1]
+ %22 = load float* %scevgep.i.2.i.i, align 4 ; [#uses=1]
+ store float %22, float* %18, align 4
+ %23 = load float* %scevgep.1.i.2.i.i, align 4 ; [#uses=1]
+ store float %23, float* %19, align 4
+ %24 = load float* %scevgep.2.i.2.i.i, align 4 ; [#uses=1]
+ store float %24, float* %20, align 4
+ %25 = load float* %scevgep.3.i.2.i.i, align 4 ; [#uses=1]
+ store float %25, float* %21, align 4
+ %scevgep.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i = getelementptr i8* %dataBuffer, i32 92 ; [#uses=1]
+ %26 = bitcast i8* %scevgep4.i.i to float* ; [#uses=1]
+ %27 = load float* %scevgep.i.i, align 4 ; [#uses=1]
+ store float %27, float* %26, align 4
+ %scevgep.1.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i = getelementptr i8* %dataBuffer, i32 96 ; [#uses=1]
+ %28 = bitcast i8* %scevgep4.1.i.i to float* ; [#uses=1]
+ %29 = load float* %scevgep.1.i.i, align 4 ; [#uses=1]
+ store float %29, float* %28, align 4
+ %scevgep.2.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i = getelementptr i8* %dataBuffer, i32 100 ; [#uses=1]
+ %30 = bitcast i8* %scevgep4.2.i.i to float* ; [#uses=1]
+ %31 = load float* %scevgep.2.i.i, align 4 ; [#uses=1]
+ store float %31, float* %30, align 4
+ %scevgep.3.i.i = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i = getelementptr i8* %dataBuffer, i32 104 ; [#uses=1]
+ %32 = bitcast i8* %scevgep4.3.i.i to float* ; [#uses=1]
+ %33 = load float* %scevgep.3.i.i, align 4 ; [#uses=1]
+ store float %33, float* %32, align 4
+ %34 = getelementptr inbounds i8* %dataBuffer, i32 108 ; [#uses=1]
+ %scevgep.i.i.i2 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i.i3 = bitcast i8* %34 to float* ; [#uses=1]
+ %scevgep.1.i.i.i4 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i.i5 = getelementptr i8* %dataBuffer, i32 112 ; [#uses=1]
+ %35 = bitcast i8* %scevgep4.1.i.i.i5 to float* ; [#uses=1]
+ %scevgep.2.i.i.i6 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i.i7 = getelementptr i8* %dataBuffer, i32 116 ; [#uses=1]
+ %36 = bitcast i8* %scevgep4.2.i.i.i7 to float* ; [#uses=1]
+ %scevgep.3.i.i.i8 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i.i9 = getelementptr i8* %dataBuffer, i32 120 ; [#uses=1]
+ %37 = bitcast i8* %scevgep4.3.i.i.i9 to float* ; [#uses=1]
+ %38 = load float* %scevgep.i.i.i2, align 4 ; [#uses=1]
+ store float %38, float* %scevgep4.i.i.i3, align 4
+ %39 = load float* %scevgep.1.i.i.i4, align 4 ; [#uses=1]
+ store float %39, float* %35, align 4
+ %40 = load float* %scevgep.2.i.i.i6, align 4 ; [#uses=1]
+ store float %40, float* %36, align 4
+ %41 = load float* %scevgep.3.i.i.i8, align 4 ; [#uses=1]
+ store float %41, float* %37, align 4
+ %scevgep.i.1.i.i10 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.1.i.i11 = getelementptr i8* %dataBuffer, i32 124 ; [#uses=1]
+ %42 = bitcast i8* %scevgep4.i.1.i.i11 to float* ; [#uses=1]
+ %scevgep.1.i.1.i.i12 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.1.i.i13 = getelementptr i8* %dataBuffer, i32 128 ; [#uses=1]
+ %43 = bitcast i8* %scevgep4.1.i.1.i.i13 to float* ; [#uses=1]
+ %scevgep.2.i.1.i.i14 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.1.i.i15 = getelementptr i8* %dataBuffer, i32 132 ; [#uses=1]
+ %44 = bitcast i8* %scevgep4.2.i.1.i.i15 to float* ; [#uses=1]
+ %scevgep.3.i.1.i.i16 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.1.i.i17 = getelementptr i8* %dataBuffer, i32 136 ; [#uses=1]
+ %45 = bitcast i8* %scevgep4.3.i.1.i.i17 to float* ; [#uses=1]
+ %46 = load float* %scevgep.i.1.i.i10, align 4 ; [#uses=1]
+ store float %46, float* %42, align 4
+ %47 = load float* %scevgep.1.i.1.i.i12, align 4 ; [#uses=1]
+ store float %47, float* %43, align 4
+ %48 = load float* %scevgep.2.i.1.i.i14, align 4 ; [#uses=1]
+ store float %48, float* %44, align 4
+ %49 = load float* %scevgep.3.i.1.i.i16, align 4 ; [#uses=1]
+ store float %49, float* %45, align 4
+ %scevgep.i.2.i.i18 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.2.i.i19 = getelementptr i8* %dataBuffer, i32 140 ; [#uses=1]
+ %50 = bitcast i8* %scevgep4.i.2.i.i19 to float* ; [#uses=1]
+ %scevgep.1.i.2.i.i20 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.2.i.i21 = getelementptr i8* %dataBuffer, i32 144 ; [#uses=1]
+ %51 = bitcast i8* %scevgep4.1.i.2.i.i21 to float* ; [#uses=1]
+ %scevgep.2.i.2.i.i22 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.2.i.i23 = getelementptr i8* %dataBuffer, i32 148 ; [#uses=1]
+ %52 = bitcast i8* %scevgep4.2.i.2.i.i23 to float* ; [#uses=1]
+ %scevgep.3.i.2.i.i24 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.2.i.i25 = getelementptr i8* %dataBuffer, i32 152 ; [#uses=1]
+ %53 = bitcast i8* %scevgep4.3.i.2.i.i25 to float* ; [#uses=1]
+ %54 = load float* %scevgep.i.2.i.i18, align 4 ; [#uses=1]
+ store float %54, float* %50, align 4
+ %55 = load float* %scevgep.1.i.2.i.i20, align 4 ; [#uses=1]
+ store float %55, float* %51, align 4
+ %56 = load float* %scevgep.2.i.2.i.i22, align 4 ; [#uses=1]
+ store float %56, float* %52, align 4
+ %57 = load float* %scevgep.3.i.2.i.i24, align 4 ; [#uses=1]
+ store float %57, float* %53, align 4
+ %scevgep.i.i26 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i27 = getelementptr i8* %dataBuffer, i32 156 ; [#uses=1]
+ %58 = bitcast i8* %scevgep4.i.i27 to float* ; [#uses=1]
+ %59 = load float* %scevgep.i.i26, align 4 ; [#uses=1]
+ store float %59, float* %58, align 4
+ %scevgep.1.i.i28 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i29 = getelementptr i8* %dataBuffer, i32 160 ; [#uses=1]
+ %60 = bitcast i8* %scevgep4.1.i.i29 to float* ; [#uses=1]
+ %61 = load float* %scevgep.1.i.i28, align 4 ; [#uses=1]
+ store float %61, float* %60, align 4
+ %scevgep.2.i.i30 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i31 = getelementptr i8* %dataBuffer, i32 164 ; [#uses=1]
+ %62 = bitcast i8* %scevgep4.2.i.i31 to float* ; [#uses=1]
+ %63 = load float* %scevgep.2.i.i30, align 4 ; [#uses=1]
+ store float %63, float* %62, align 4
+ %scevgep.3.i.i32 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i33 = getelementptr i8* %dataBuffer, i32 168 ; [#uses=1]
+ %64 = bitcast i8* %scevgep4.3.i.i33 to float* ; [#uses=1]
+ %65 = load float* %scevgep.3.i.i32, align 4 ; [#uses=1]
+ store float %65, float* %64, align 4
+ %66 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds i8* %dataBuffer, i32 172 ; [#uses=1]
+ %69 = bitcast i8* %68 to float* ; [#uses=1]
+ store float %67, float* %69, align 4
+ %70 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds i8* %dataBuffer, i32 176 ; [#uses=1]
+ %73 = bitcast i8* %72 to float* ; [#uses=1]
+ store float %71, float* %73, align 4
+ %74 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = getelementptr inbounds i8* %dataBuffer, i32 180 ; [#uses=1]
+ %77 = bitcast i8* %76 to float* ; [#uses=1]
+ store float %75, float* %77, align 4
+ %78 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = getelementptr inbounds i8* %dataBuffer, i32 184 ; [#uses=1]
+ %81 = bitcast i8* %80 to float* ; [#uses=1]
+ store float %79, float* %81, align 4
+ %82 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = getelementptr inbounds i8* %dataBuffer, i32 188 ; [#uses=1]
+ %85 = bitcast i8* %84 to float* ; [#uses=1]
+ store float %83, float* %85, align 4
+ %86 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ %88 = getelementptr inbounds i8* %dataBuffer, i32 192 ; [#uses=1]
+ %89 = bitcast i8* %88 to float* ; [#uses=1]
+ store float %87, float* %89, align 4
+ %90 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds i8* %dataBuffer, i32 196 ; [#uses=1]
+ %93 = bitcast i8* %92 to float* ; [#uses=1]
+ store float %91, float* %93, align 4
+ ret i8* getelementptr inbounds ([26 x i8]* @.str13, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btConeTwistConstraintD0Ev(%struct.btConeTwistConstraint* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV21btConeTwistConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btConeTwistConstraint* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btConeTwistConstraintD1Ev(%struct.btConeTwistConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV21btConeTwistConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btConeTwistConstraint13buildJacobianEv(%struct.btConeTwistConstraint* %this) nounwind align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca %struct.btMatrix3x3, align 8 ; [#uses=13]
+ %3 = alloca %struct.btMatrix3x3, align 8 ; [#uses=13]
+ %normal = alloca [3 x %struct.btQuadWord], align 8 ; [#uses=21]
+ %4 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ %5 = load i8* %4, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 33, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 33, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 33, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 33, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool1not = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool1not, label %bb8, label %bb19
+
+bb8: ; preds = %bb
+ %15 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=2]
+ %16 = load %struct.btRigidBody** %15, align 4 ; [#uses=12]
+ %17 = getelementptr inbounds %struct.btRigidBody* %16, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ %21 = fmul float %18, %20 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btRigidBody* %16, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=3]
+ %26 = fmul float %23, %25 ; [#uses=1]
+ %27 = fadd float %21, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btRigidBody* %16, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=3]
+ %32 = fmul float %29, %31 ; [#uses=1]
+ %33 = fadd float %27, %32 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btRigidBody* %16, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fadd float %33, %35 ; [#uses=2]
+ %37 = getelementptr inbounds %struct.btRigidBody* %16, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fmul float %38, %20 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btRigidBody* %16, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = fmul float %41, %25 ; [#uses=1]
+ %43 = fadd float %39, %42 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btRigidBody* %16, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fmul float %45, %31 ; [#uses=1]
+ %47 = fadd float %43, %46 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btRigidBody* %16, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fadd float %47, %49 ; [#uses=2]
+ %51 = getelementptr inbounds %struct.btRigidBody* %16, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = fmul float %52, %20 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btRigidBody* %16, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fmul float %55, %25 ; [#uses=1]
+ %57 = fadd float %53, %56 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btRigidBody* %16, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = fmul float %59, %31 ; [#uses=1]
+ %61 = fadd float %57, %60 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btRigidBody* %16, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ %64 = fadd float %61, %63 ; [#uses=2]
+ %65 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=2]
+ %66 = load %struct.btRigidBody** %65, align 4 ; [#uses=12]
+ %67 = getelementptr inbounds %struct.btRigidBody* %66, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=3]
+ %71 = fmul float %68, %70 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btRigidBody* %66, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=3]
+ %76 = fmul float %73, %75 ; [#uses=1]
+ %77 = fadd float %71, %76 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btRigidBody* %66, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=3]
+ %82 = fmul float %79, %81 ; [#uses=1]
+ %83 = fadd float %77, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btRigidBody* %66, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = fadd float %83, %85 ; [#uses=2]
+ %87 = getelementptr inbounds %struct.btRigidBody* %66, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = fmul float %88, %70 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btRigidBody* %66, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = fmul float %91, %75 ; [#uses=1]
+ %93 = fadd float %89, %92 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btRigidBody* %66, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ %96 = fmul float %95, %81 ; [#uses=1]
+ %97 = fadd float %93, %96 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btRigidBody* %66, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ %100 = fadd float %97, %99 ; [#uses=2]
+ %101 = getelementptr inbounds %struct.btRigidBody* %66, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fmul float %102, %70 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btRigidBody* %66, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ %106 = fmul float %105, %75 ; [#uses=1]
+ %107 = fadd float %103, %106 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btRigidBody* %66, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ %110 = fmul float %109, %81 ; [#uses=1]
+ %111 = fadd float %107, %110 ; [#uses=1]
+ %112 = getelementptr inbounds %struct.btRigidBody* %66, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %113 = load float* %112, align 4 ; [#uses=1]
+ %114 = fadd float %111, %113 ; [#uses=2]
+ %115 = fsub float %86, %36 ; [#uses=3]
+ %116 = fsub float %100, %50 ; [#uses=3]
+ %117 = fsub float %114, %64 ; [#uses=3]
+ %118 = fmul float %117, %117 ; [#uses=1]
+ %119 = fmul float %116, %116 ; [#uses=1]
+ %120 = fadd float %118, %119 ; [#uses=1]
+ %121 = fmul float %115, %115 ; [#uses=1]
+ %122 = fadd float %120, %121 ; [#uses=2]
+ %123 = fcmp ogt float %122, 0x3E80000000000000 ; [#uses=1]
+ br i1 %123, label %bb10, label %bb11
+
+bb10: ; preds = %bb8
+ %124 = call float @sqrtf(float %122) nounwind readonly ; [#uses=1]
+ %125 = fdiv float 1.000000e+00, %124 ; [#uses=3]
+ %126 = fmul float %115, %125 ; [#uses=2]
+ %127 = fmul float %116, %125 ; [#uses=2]
+ %128 = fmul float %117, %125 ; [#uses=2]
+ %129 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %128, float* %129, align 8
+ %130 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %127, float* %130, align 4
+ %131 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %126, float* %131, align 8
+ %132 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %132, align 4
+ br label %bb12
+
+bb11: ; preds = %bb8
+ %133 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %133, align 8
+ %134 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %134, align 4
+ %135 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %135, align 8
+ %136 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %136, align 4
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb10
+ %137 = phi float [ 1.000000e+00, %bb11 ], [ %128, %bb10 ] ; [#uses=5]
+ %138 = phi float [ 0.000000e+00, %bb11 ], [ %127, %bb10 ] ; [#uses=6]
+ %139 = phi float [ 0.000000e+00, %bb11 ], [ %126, %bb10 ] ; [#uses=6]
+ %140 = call float @fabsf(float %139) nounwind readnone ; [#uses=1]
+ %141 = fcmp ogt float %140, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %141, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb12
+ %142 = fmul float %138, %138 ; [#uses=1]
+ %143 = fmul float %139, %139 ; [#uses=1]
+ %144 = fadd float %142, %143 ; [#uses=2]
+ %145 = call float @sqrtf(float %144) nounwind readonly ; [#uses=1]
+ %146 = fdiv float 1.000000e+00, %145 ; [#uses=3]
+ %147 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %147, align 8
+ %148 = fsub float -0.000000e+00, %139 ; [#uses=1]
+ %149 = fmul float %146, %148 ; [#uses=2]
+ %150 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %149, float* %150, align 4
+ %151 = fmul float %138, %146 ; [#uses=2]
+ %152 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %151, float* %152, align 8
+ %153 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %154 = fmul float %144, %146 ; [#uses=1]
+ store float %154, float* %153, align 8
+ %155 = fsub float -0.000000e+00, %137 ; [#uses=1]
+ %156 = fmul float %151, %155 ; [#uses=1]
+ %157 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %156, float* %157, align 4
+ %158 = fmul float %137, %149 ; [#uses=1]
+ %159 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %158, float* %159, align 8
+ br label %bb.nph
+
+bb1.i: ; preds = %bb12
+ %160 = fmul float %137, %137 ; [#uses=1]
+ %161 = fmul float %138, %138 ; [#uses=1]
+ %162 = fadd float %160, %161 ; [#uses=2]
+ %163 = call float @sqrtf(float %162) nounwind readonly ; [#uses=1]
+ %164 = fdiv float 1.000000e+00, %163 ; [#uses=3]
+ %165 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %166 = fsub float -0.000000e+00, %138 ; [#uses=1]
+ %167 = fmul float %164, %166 ; [#uses=2]
+ store float %167, float* %165, align 8
+ %168 = fmul float %137, %164 ; [#uses=2]
+ %169 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %168, float* %169, align 4
+ %170 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %170, align 8
+ %171 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %172 = fsub float -0.000000e+00, %139 ; [#uses=1]
+ %173 = fmul float %168, %172 ; [#uses=1]
+ store float %173, float* %171, align 8
+ %174 = fmul float %139, %167 ; [#uses=1]
+ %175 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %174, float* %175, align 4
+ %176 = fmul float %162, %164 ; [#uses=1]
+ %177 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %176, float* %177, align 8
+ br label %bb.nph
+
+bb.nph: ; preds = %bb1.i, %bb.i
+ %178 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %179 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %180 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %182 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %183 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %184 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %185 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %187 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %188 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %191 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %192 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %193 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %194 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %195 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %196 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %197 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %198 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %199 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %200 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %201 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %202 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %203 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %205 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %206 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %207 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %209 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb14
+
+bb14: ; preds = %bb17, %bb.nph
+ %i.036 = phi i32 [ 0, %bb.nph ], [ %273, %bb17 ] ; [#uses=3]
+ %scevgep39 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 1, i32 %i.036 ; [#uses=2]
+ %210 = load %struct.btRigidBody** %15, align 4 ; [#uses=14]
+ %211 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %212 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %213 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %214 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %215 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %216 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %217 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %218 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %219 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %220 = load float* %219, align 4 ; [#uses=1]
+ store float %220, float* %178, align 8
+ %221 = load float* %218, align 4 ; [#uses=1]
+ store float %221, float* %179, align 4
+ %222 = load float* %217, align 4 ; [#uses=1]
+ store float %222, float* %180, align 8
+ store float 0.000000e+00, float* %181, align 4
+ %223 = load float* %216, align 4 ; [#uses=1]
+ store float %223, float* %182, align 8
+ %224 = load float* %215, align 4 ; [#uses=1]
+ store float %224, float* %183, align 4
+ %225 = load float* %214, align 4 ; [#uses=1]
+ store float %225, float* %184, align 8
+ store float 0.000000e+00, float* %185, align 4
+ %226 = load float* %213, align 4 ; [#uses=1]
+ store float %226, float* %186, align 8
+ %227 = load float* %212, align 4 ; [#uses=1]
+ store float %227, float* %187, align 4
+ %228 = load float* %211, align 4 ; [#uses=1]
+ store float %228, float* %188, align 8
+ store float 0.000000e+00, float* %189, align 4
+ %229 = load %struct.btRigidBody** %65, align 4 ; [#uses=14]
+ %230 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %231 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %232 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %233 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %234 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %235 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %236 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %237 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %238 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %239 = load float* %238, align 4 ; [#uses=1]
+ store float %239, float* %190, align 8
+ %240 = load float* %237, align 4 ; [#uses=1]
+ store float %240, float* %191, align 4
+ %241 = load float* %236, align 4 ; [#uses=1]
+ store float %241, float* %192, align 8
+ store float 0.000000e+00, float* %193, align 4
+ %242 = load float* %235, align 4 ; [#uses=1]
+ store float %242, float* %194, align 8
+ %243 = load float* %234, align 4 ; [#uses=1]
+ store float %243, float* %195, align 4
+ %244 = load float* %233, align 4 ; [#uses=1]
+ store float %244, float* %196, align 8
+ store float 0.000000e+00, float* %197, align 4
+ %245 = load float* %232, align 4 ; [#uses=1]
+ store float %245, float* %198, align 8
+ %246 = load float* %231, align 4 ; [#uses=1]
+ store float %246, float* %199, align 4
+ %247 = load float* %230, align 4 ; [#uses=1]
+ store float %247, float* %200, align 8
+ store float 0.000000e+00, float* %201, align 4
+ %248 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %249 = load float* %248, align 4 ; [#uses=1]
+ %250 = fsub float %36, %249 ; [#uses=1]
+ %251 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %252 = load float* %251, align 4 ; [#uses=1]
+ %253 = fsub float %50, %252 ; [#uses=1]
+ %254 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %255 = load float* %254, align 4 ; [#uses=1]
+ %256 = fsub float %64, %255 ; [#uses=1]
+ store float %256, float* %202, align 8
+ store float %253, float* %203, align 4
+ store float %250, float* %204, align 8
+ store float 0.000000e+00, float* %205, align 4
+ %257 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %258 = load float* %257, align 4 ; [#uses=1]
+ %259 = fsub float %86, %258 ; [#uses=1]
+ %260 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %261 = load float* %260, align 4 ; [#uses=1]
+ %262 = fsub float %100, %261 ; [#uses=1]
+ %263 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %264 = load float* %263, align 4 ; [#uses=1]
+ %265 = fsub float %114, %264 ; [#uses=1]
+ store float %265, float* %206, align 8
+ store float %262, float* %207, align 4
+ store float %259, float* %208, align 8
+ store float 0.000000e+00, float* %209, align 4
+ %266 = icmp eq %struct.btJacobianEntry* %scevgep39, null ; [#uses=1]
+ br i1 %266, label %bb17, label %bb15
+
+bb15: ; preds = %bb14
+ %scevgep = getelementptr [3 x %struct.btQuadWord]* %normal, i32 0, i32 %i.036 ; [#uses=1]
+ %267 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 4 ; [#uses=1]
+ %268 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 4 ; [#uses=1]
+ %269 = load float* %267, align 4 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.btRigidBody* %229, i32 0, i32 8 ; [#uses=1]
+ %271 = load float* %268, align 4 ; [#uses=1]
+ %272 = getelementptr inbounds %struct.btRigidBody* %210, i32 0, i32 8 ; [#uses=1]
+ call void @_ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(%struct.btJacobianEntry* %scevgep39, %struct.btMatrix3x3* %3, %struct.btMatrix3x3* %2, %struct.btQuadWord* %1, %struct.btQuadWord* %0, %struct.btQuadWord* %scevgep, %struct.btQuadWord* %272, float %271, %struct.btQuadWord* %270, float %269) nounwind
+ br label %bb17
+
+bb17: ; preds = %bb15, %bb14
+ %273 = add nsw i32 %i.036, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %273, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb19, label %bb14
+
+bb19: ; preds = %bb17, %bb
+ %274 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %275 = load %struct.btRigidBody** %274, align 4 ; [#uses=2]
+ %276 = getelementptr inbounds %struct.btRigidBody* %275, i32 0, i32 1 ; [#uses=1]
+ %277 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %278 = load %struct.btRigidBody** %277, align 4 ; [#uses=2]
+ %279 = getelementptr inbounds %struct.btRigidBody* %278, i32 0, i32 1 ; [#uses=1]
+ %280 = getelementptr inbounds %struct.btRigidBody* %275, i32 0, i32 0, i32 1 ; [#uses=1]
+ %281 = getelementptr inbounds %struct.btRigidBody* %278, i32 0, i32 0, i32 1 ; [#uses=1]
+ call void @_ZN21btConeTwistConstraint14calcAngleInfo2ERK11btTransformS2_RK11btMatrix3x3S5_(%struct.btConeTwistConstraint* %this, %struct.btTransform* %281, %struct.btTransform* %280, %struct.btMatrix3x3* %279, %struct.btMatrix3x3* %276)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btConeTwistConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E(%struct.btConeTwistConstraint* %this, %struct.CONTACT_KEY_TOKEN* nocapture %info) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ %1 = load i8* %0, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 0 ; [#uses=7]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ ret void
+
+bb1: ; preds = %entry
+ store i32 3, i32* %2, align 4
+ %4 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=6]
+ store i32 3, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %6 = load %struct.btRigidBody** %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btRigidBody* %6, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %9 = load %struct.btRigidBody** %8, align 4 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btRigidBody* %9, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btRigidBody* %6, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btRigidBody* %9, i32 0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN21btConeTwistConstraint14calcAngleInfo2ERK11btTransformS2_RK11btMatrix3x3S5_(%struct.btConeTwistConstraint* %this, %struct.btTransform* %12, %struct.btTransform* %11, %struct.btMatrix3x3* %10, %struct.btMatrix3x3* %7)
+ %13 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 24 ; [#uses=1]
+ %14 = load i8* %13, align 2 ; [#uses=1]
+ %toBool2 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool2, label %bb6, label %bb3
+
+bb3: ; preds = %bb1
+ %15 = load i32* %2, align 4 ; [#uses=2]
+ %16 = add nsw i32 %15, 1 ; [#uses=1]
+ store i32 %16, i32* %2, align 4
+ %17 = load i32* %4, align 4 ; [#uses=2]
+ %18 = add nsw i32 %17, -1 ; [#uses=1]
+ store i32 %18, i32* %4, align 4
+ %19 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ %23 = fcmp olt float %20, %22 ; [#uses=1]
+ br i1 %23, label %bb4, label %bb6
+
+bb4: ; preds = %bb3
+ %24 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fcmp olt float %25, %22 ; [#uses=1]
+ br i1 %26, label %bb5, label %bb6
+
+bb5: ; preds = %bb4
+ %27 = add nsw i32 %15, 2 ; [#uses=1]
+ store i32 %27, i32* %2, align 4
+ %28 = add nsw i32 %17, -2 ; [#uses=1]
+ store i32 %28, i32* %4, align 4
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4, %bb3, %bb1
+ %29 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ %30 = load i8* %29, align 1 ; [#uses=1]
+ %toBool7 = icmp eq i8 %30, 0 ; [#uses=1]
+ br i1 %toBool7, label %return, label %bb8
+
+bb8: ; preds = %bb6
+ %31 = load i32* %2, align 4 ; [#uses=1]
+ %32 = add nsw i32 %31, 1 ; [#uses=1]
+ store i32 %32, i32* %2, align 4
+ %33 = load i32* %4, align 4 ; [#uses=1]
+ %34 = add nsw i32 %33, -1 ; [#uses=1]
+ store i32 %34, i32* %4, align 4
+ ret void
+
+return: ; preds = %bb6
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btConeTwistConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E(%struct.btConeTwistConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %1 = load %struct.btRigidBody** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %4 = load %struct.btRigidBody** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btRigidBody* %4, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btRigidBody* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN21btConeTwistConstraint18getInfo2NonVirtualEPN17btTypedConstraint17btConstraintInfo2ERK11btTransformS5_RK11btMatrix3x3S8_(%struct.btConeTwistConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, %struct.btTransform* %7, %struct.btTransform* %6, %struct.btMatrix3x3* %5, %struct.btMatrix3x3* %2)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btConeTwistConstraint23solveConstraintObsoleteER11btRigidBodyS1_f(%struct.btConeTwistConstraint* %this, %struct.btRigidBody* %bodyA, %struct.btRigidBody* %bodyB, float %timeStep) nounwind align 2 {
+entry:
+ %axis.i115 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %angle.i116 = alloca float, align 4 ; [#uses=2]
+ %axis.i = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %angle.i = alloca float, align 4 ; [#uses=2]
+ %trACur = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %trBCur = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %omegaA = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %omegaB = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %trAPred = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %zerovec = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %trBPred = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %trADes = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %trBDes = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %0 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ %1 = load i8* %0, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=8]
+ %3 = load %struct.btRigidBody** %2, align 4 ; [#uses=12]
+ %4 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = fmul float %5, %7 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=3]
+ %13 = fmul float %10, %12 ; [#uses=1]
+ %14 = fadd float %8, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=3]
+ %19 = fmul float %16, %18 ; [#uses=1]
+ %20 = fadd float %14, %19 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ %23 = fadd float %20, %22 ; [#uses=2]
+ %24 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fmul float %25, %7 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fmul float %28, %12 ; [#uses=1]
+ %30 = fadd float %26, %29 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fmul float %32, %18 ; [#uses=1]
+ %34 = fadd float %30, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = fadd float %34, %36 ; [#uses=2]
+ %38 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fmul float %39, %7 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = fmul float %42, %12 ; [#uses=1]
+ %44 = fadd float %40, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fmul float %46, %18 ; [#uses=1]
+ %48 = fadd float %44, %47 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=2]
+ %51 = fadd float %48, %50 ; [#uses=2]
+ %52 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=10]
+ %53 = load %struct.btRigidBody** %52, align 4 ; [#uses=12]
+ %54 = getelementptr inbounds %struct.btRigidBody* %53, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=2]
+ %57 = load float* %56, align 4 ; [#uses=3]
+ %58 = fmul float %55, %57 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btRigidBody* %53, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=2]
+ %62 = load float* %61, align 4 ; [#uses=3]
+ %63 = fmul float %60, %62 ; [#uses=1]
+ %64 = fadd float %58, %63 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btRigidBody* %53, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=2]
+ %68 = load float* %67, align 4 ; [#uses=3]
+ %69 = fmul float %66, %68 ; [#uses=1]
+ %70 = fadd float %64, %69 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btRigidBody* %53, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=2]
+ %73 = fadd float %70, %72 ; [#uses=2]
+ %74 = getelementptr inbounds %struct.btRigidBody* %53, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = fmul float %75, %57 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btRigidBody* %53, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ %79 = fmul float %78, %62 ; [#uses=1]
+ %80 = fadd float %76, %79 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btRigidBody* %53, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ %83 = fmul float %82, %68 ; [#uses=1]
+ %84 = fadd float %80, %83 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btRigidBody* %53, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %86 = load float* %85, align 4 ; [#uses=2]
+ %87 = fadd float %84, %86 ; [#uses=2]
+ %88 = getelementptr inbounds %struct.btRigidBody* %53, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ %90 = fmul float %89, %57 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btRigidBody* %53, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=1]
+ %93 = fmul float %92, %62 ; [#uses=1]
+ %94 = fadd float %90, %93 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btRigidBody* %53, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ %97 = fmul float %96, %68 ; [#uses=1]
+ %98 = fadd float %94, %97 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btRigidBody* %53, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %100 = load float* %99, align 4 ; [#uses=2]
+ %101 = fadd float %98, %100 ; [#uses=2]
+ %102 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ %103 = load i8* %102, align 4 ; [#uses=1]
+ %toBool1not = icmp eq i8 %103, 0 ; [#uses=1]
+ br i1 %toBool1not, label %bb.nph, label %bb8
+
+bb.nph: ; preds = %bb
+ %104 = fsub float %23, %22 ; [#uses=4]
+ %105 = fsub float %37, %36 ; [#uses=4]
+ %106 = fsub float %51, %50 ; [#uses=4]
+ %107 = fsub float %73, %72 ; [#uses=4]
+ %108 = fsub float %87, %86 ; [#uses=4]
+ %109 = fsub float %101, %100 ; [#uses=4]
+ %110 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %111 = load float* %110, align 4 ; [#uses=1]
+ %112 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 25, i32 0, i32 2 ; [#uses=3]
+ %113 = load float* %112, align 4 ; [#uses=1]
+ %114 = fadd float %111, %113 ; [#uses=2]
+ %115 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %116 = load float* %115, align 4 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 25, i32 0, i32 1 ; [#uses=3]
+ %118 = load float* %117, align 4 ; [#uses=1]
+ %119 = fadd float %116, %118 ; [#uses=2]
+ %120 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %121 = load float* %120, align 4 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 25, i32 0, i32 0 ; [#uses=3]
+ %123 = load float* %122, align 4 ; [#uses=1]
+ %124 = fadd float %121, %123 ; [#uses=2]
+ %125 = fmul float %124, %105 ; [#uses=1]
+ %126 = fmul float %119, %106 ; [#uses=1]
+ %127 = fsub float %125, %126 ; [#uses=1]
+ %128 = fmul float %114, %106 ; [#uses=1]
+ %129 = fmul float %124, %104 ; [#uses=1]
+ %130 = fsub float %128, %129 ; [#uses=1]
+ %131 = fmul float %119, %104 ; [#uses=1]
+ %132 = fmul float %114, %105 ; [#uses=1]
+ %133 = fsub float %131, %132 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 2 ; [#uses=3]
+ %137 = load float* %136, align 4 ; [#uses=1]
+ %138 = fadd float %135, %137 ; [#uses=1]
+ %139 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %140 = load float* %139, align 4 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 1 ; [#uses=3]
+ %142 = load float* %141, align 4 ; [#uses=1]
+ %143 = fadd float %140, %142 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 0 ; [#uses=3]
+ %147 = load float* %146, align 4 ; [#uses=1]
+ %148 = fadd float %145, %147 ; [#uses=1]
+ %149 = fadd float %138, %127 ; [#uses=1]
+ %150 = fadd float %143, %130 ; [#uses=1]
+ %151 = fadd float %148, %133 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %153 = load float* %152, align 4 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 25, i32 0, i32 2 ; [#uses=3]
+ %155 = load float* %154, align 4 ; [#uses=1]
+ %156 = fadd float %153, %155 ; [#uses=2]
+ %157 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %158 = load float* %157, align 4 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 25, i32 0, i32 1 ; [#uses=3]
+ %160 = load float* %159, align 4 ; [#uses=1]
+ %161 = fadd float %158, %160 ; [#uses=2]
+ %162 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %163 = load float* %162, align 4 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 25, i32 0, i32 0 ; [#uses=3]
+ %165 = load float* %164, align 4 ; [#uses=1]
+ %166 = fadd float %163, %165 ; [#uses=2]
+ %167 = fmul float %166, %108 ; [#uses=1]
+ %168 = fmul float %161, %109 ; [#uses=1]
+ %169 = fsub float %167, %168 ; [#uses=1]
+ %170 = fmul float %156, %109 ; [#uses=1]
+ %171 = fmul float %166, %107 ; [#uses=1]
+ %172 = fsub float %170, %171 ; [#uses=1]
+ %173 = fmul float %161, %107 ; [#uses=1]
+ %174 = fmul float %156, %108 ; [#uses=1]
+ %175 = fsub float %173, %174 ; [#uses=1]
+ %176 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %177 = load float* %176, align 4 ; [#uses=1]
+ %178 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 2 ; [#uses=3]
+ %179 = load float* %178, align 4 ; [#uses=1]
+ %180 = fadd float %177, %179 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %182 = load float* %181, align 4 ; [#uses=1]
+ %183 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 1 ; [#uses=3]
+ %184 = load float* %183, align 4 ; [#uses=1]
+ %185 = fadd float %182, %184 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %187 = load float* %186, align 4 ; [#uses=1]
+ %188 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 0 ; [#uses=3]
+ %189 = load float* %188, align 4 ; [#uses=1]
+ %190 = fadd float %187, %189 ; [#uses=1]
+ %191 = fadd float %180, %169 ; [#uses=1]
+ %192 = fadd float %185, %172 ; [#uses=1]
+ %193 = fadd float %190, %175 ; [#uses=1]
+ %194 = fsub float %149, %191 ; [#uses=1]
+ %195 = fsub float %150, %192 ; [#uses=1]
+ %196 = fsub float %151, %193 ; [#uses=1]
+ %197 = fsub float %23, %73 ; [#uses=1]
+ %198 = fsub float %37, %87 ; [#uses=1]
+ %199 = fsub float %51, %101 ; [#uses=1]
+ %200 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 7 ; [#uses=2]
+ %201 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 4 ; [#uses=1]
+ %202 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %203 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %205 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 4 ; [#uses=1]
+ %206 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %207 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit119, %bb.nph
+ %i.0430 = phi i32 [ 0, %bb.nph ], [ %383, %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit119 ] ; [#uses=5]
+ %scevgep = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 1, i32 %i.0430, i32 5 ; [#uses=1]
+ %scevgep431432 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 1, i32 %i.0430, i32 0, i32 0, i32 0 ; [#uses=2]
+ %scevgep433 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 1, i32 %i.0430, i32 0, i32 0, i32 1 ; [#uses=2]
+ %scevgep434 = getelementptr %struct.btConeTwistConstraint* %this, i32 0, i32 1, i32 %i.0430, i32 0, i32 0, i32 2 ; [#uses=2]
+ %209 = load float* %scevgep, align 4 ; [#uses=1]
+ %210 = fdiv float 1.000000e+00, %209 ; [#uses=2]
+ %211 = load float* %scevgep431432, align 4 ; [#uses=7]
+ %212 = fmul float %211, %196 ; [#uses=1]
+ %213 = load float* %scevgep433, align 4 ; [#uses=7]
+ %214 = fmul float %213, %195 ; [#uses=1]
+ %215 = fadd float %212, %214 ; [#uses=1]
+ %216 = load float* %scevgep434, align 4 ; [#uses=7]
+ %217 = fmul float %216, %194 ; [#uses=1]
+ %218 = fadd float %215, %217 ; [#uses=1]
+ %219 = fmul float %199, %211 ; [#uses=1]
+ %220 = fmul float %198, %213 ; [#uses=1]
+ %221 = fadd float %219, %220 ; [#uses=1]
+ %222 = fmul float %197, %216 ; [#uses=1]
+ %223 = fadd float %221, %222 ; [#uses=1]
+ %224 = fmul float %223, 0xBFD3333340000000 ; [#uses=1]
+ %225 = fdiv float %224, %timeStep ; [#uses=1]
+ %226 = fmul float %225, %210 ; [#uses=1]
+ %227 = fmul float %218, %210 ; [#uses=1]
+ %228 = fsub float %226, %227 ; [#uses=8]
+ %229 = load float* %200, align 4 ; [#uses=1]
+ %230 = fadd float %229, %228 ; [#uses=1]
+ store float %230, float* %200, align 4
+ %231 = fmul float %106, %213 ; [#uses=1]
+ %232 = fmul float %105, %211 ; [#uses=1]
+ %233 = fsub float %231, %232 ; [#uses=3]
+ %234 = fmul float %104, %211 ; [#uses=1]
+ %235 = fmul float %106, %216 ; [#uses=1]
+ %236 = fsub float %234, %235 ; [#uses=3]
+ %237 = fmul float %105, %216 ; [#uses=1]
+ %238 = fmul float %104, %213 ; [#uses=1]
+ %239 = fsub float %237, %238 ; [#uses=3]
+ %240 = fmul float %109, %213 ; [#uses=1]
+ %241 = fmul float %108, %211 ; [#uses=1]
+ %242 = fsub float %240, %241 ; [#uses=3]
+ %243 = fmul float %107, %211 ; [#uses=1]
+ %244 = fmul float %109, %216 ; [#uses=1]
+ %245 = fsub float %243, %244 ; [#uses=3]
+ %246 = fmul float %108, %216 ; [#uses=1]
+ %247 = fmul float %107, %213 ; [#uses=1]
+ %248 = fsub float %246, %247 ; [#uses=3]
+ %249 = load %struct.btRigidBody** %2, align 4 ; [#uses=10]
+ %250 = getelementptr inbounds %struct.btRigidBody* %249, i32 0, i32 4 ; [#uses=1]
+ %251 = load float* %250, align 4 ; [#uses=3]
+ %252 = load float* %201, align 4 ; [#uses=1]
+ %253 = fcmp une float %252, 0.000000e+00 ; [#uses=1]
+ br i1 %253, label %bb.i120, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit122
+
+bb.i120: ; preds = %bb6
+ %254 = getelementptr inbounds %struct.btRigidBody* %249, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %255 = getelementptr inbounds %struct.btRigidBody* %249, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %256 = getelementptr inbounds %struct.btRigidBody* %249, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %257 = getelementptr inbounds %struct.btRigidBody* %249, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %258 = getelementptr inbounds %struct.btRigidBody* %249, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %259 = getelementptr inbounds %struct.btRigidBody* %249, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %260 = getelementptr inbounds %struct.btRigidBody* %249, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %261 = load float* %254, align 4 ; [#uses=1]
+ %262 = load float* %255, align 4 ; [#uses=1]
+ %263 = getelementptr inbounds %struct.btRigidBody* %249, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %264 = load float* %256, align 4 ; [#uses=1]
+ %265 = load float* %257, align 4 ; [#uses=1]
+ %266 = getelementptr inbounds %struct.btRigidBody* %249, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %267 = load float* %258, align 4 ; [#uses=1]
+ %268 = load float* %259, align 4 ; [#uses=1]
+ %269 = load float* %260, align 4 ; [#uses=1]
+ %270 = fmul float %261, %236 ; [#uses=1]
+ %271 = fmul float %262, %239 ; [#uses=1]
+ %272 = load float* %263, align 4 ; [#uses=1]
+ %273 = fmul float %264, %236 ; [#uses=1]
+ %274 = fmul float %265, %239 ; [#uses=1]
+ %275 = load float* %266, align 4 ; [#uses=1]
+ %276 = fmul float %267, %236 ; [#uses=1]
+ %277 = fmul float %268, %239 ; [#uses=1]
+ %278 = fmul float %269, %233 ; [#uses=1]
+ %279 = fadd float %271, %270 ; [#uses=1]
+ %280 = fmul float %272, %233 ; [#uses=1]
+ %281 = fadd float %274, %273 ; [#uses=1]
+ %282 = fmul float %275, %233 ; [#uses=1]
+ %283 = fadd float %277, %276 ; [#uses=1]
+ %284 = fmul float %211, %251 ; [#uses=1]
+ %285 = fmul float %213, %251 ; [#uses=1]
+ %286 = fmul float %216, %251 ; [#uses=1]
+ %287 = fadd float %279, %278 ; [#uses=1]
+ %288 = fadd float %281, %280 ; [#uses=1]
+ %289 = fadd float %283, %282 ; [#uses=1]
+ %290 = fmul float %286, %228 ; [#uses=1]
+ %291 = fmul float %285, %228 ; [#uses=1]
+ %292 = fmul float %284, %228 ; [#uses=1]
+ %293 = load float* %146, align 4 ; [#uses=1]
+ %294 = fadd float %293, %292 ; [#uses=1]
+ store float %294, float* %146, align 4
+ %295 = load float* %141, align 4 ; [#uses=1]
+ %296 = fadd float %295, %291 ; [#uses=1]
+ store float %296, float* %141, align 4
+ %297 = load float* %136, align 4 ; [#uses=1]
+ %298 = fadd float %297, %290 ; [#uses=1]
+ store float %298, float* %136, align 4
+ %299 = load float* %202, align 4 ; [#uses=1]
+ %300 = fmul float %299, %228 ; [#uses=1]
+ %301 = load float* %203, align 4 ; [#uses=1]
+ %302 = fmul float %301, %228 ; [#uses=1]
+ %303 = load float* %204, align 4 ; [#uses=1]
+ %304 = fmul float %303, %228 ; [#uses=1]
+ %305 = fmul float %289, %300 ; [#uses=1]
+ %306 = fmul float %288, %302 ; [#uses=1]
+ %307 = fmul float %287, %304 ; [#uses=1]
+ %308 = load float* %122, align 4 ; [#uses=1]
+ %309 = fadd float %308, %307 ; [#uses=1]
+ store float %309, float* %122, align 4
+ %310 = load float* %117, align 4 ; [#uses=1]
+ %311 = fadd float %310, %306 ; [#uses=1]
+ store float %311, float* %117, align 4
+ %312 = load float* %112, align 4 ; [#uses=1]
+ %313 = fadd float %312, %305 ; [#uses=1]
+ store float %313, float* %112, align 4
+ br label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit122
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit122: ; preds = %bb.i120, %bb6
+ %314 = fsub float -0.000000e+00, %228 ; [#uses=6]
+ %315 = load %struct.btRigidBody** %52, align 4 ; [#uses=10]
+ %316 = getelementptr inbounds %struct.btRigidBody* %315, i32 0, i32 4 ; [#uses=1]
+ %317 = load float* %316, align 4 ; [#uses=3]
+ %318 = load float* %205, align 4 ; [#uses=1]
+ %319 = fcmp une float %318, 0.000000e+00 ; [#uses=1]
+ br i1 %319, label %bb.i117, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit119
+
+bb.i117: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit122
+ %320 = getelementptr inbounds %struct.btRigidBody* %315, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %321 = getelementptr inbounds %struct.btRigidBody* %315, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %322 = getelementptr inbounds %struct.btRigidBody* %315, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %323 = getelementptr inbounds %struct.btRigidBody* %315, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %324 = getelementptr inbounds %struct.btRigidBody* %315, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %325 = getelementptr inbounds %struct.btRigidBody* %315, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %326 = getelementptr inbounds %struct.btRigidBody* %315, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %327 = load float* %320, align 4 ; [#uses=1]
+ %328 = load float* %321, align 4 ; [#uses=1]
+ %329 = getelementptr inbounds %struct.btRigidBody* %315, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %330 = load float* %322, align 4 ; [#uses=1]
+ %331 = load float* %323, align 4 ; [#uses=1]
+ %332 = getelementptr inbounds %struct.btRigidBody* %315, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %333 = load float* %324, align 4 ; [#uses=1]
+ %334 = load float* %325, align 4 ; [#uses=1]
+ %335 = load float* %326, align 4 ; [#uses=1]
+ %336 = fmul float %327, %245 ; [#uses=1]
+ %337 = fmul float %328, %248 ; [#uses=1]
+ %338 = load float* %329, align 4 ; [#uses=1]
+ %339 = fmul float %330, %245 ; [#uses=1]
+ %340 = fmul float %331, %248 ; [#uses=1]
+ %341 = load float* %332, align 4 ; [#uses=1]
+ %342 = fmul float %333, %245 ; [#uses=1]
+ %343 = fmul float %334, %248 ; [#uses=1]
+ %344 = load float* %scevgep431432, align 4 ; [#uses=1]
+ %345 = load float* %scevgep433, align 4 ; [#uses=1]
+ %346 = load float* %scevgep434, align 4 ; [#uses=1]
+ %347 = fmul float %335, %242 ; [#uses=1]
+ %348 = fadd float %337, %336 ; [#uses=1]
+ %349 = fmul float %338, %242 ; [#uses=1]
+ %350 = fadd float %340, %339 ; [#uses=1]
+ %351 = fmul float %341, %242 ; [#uses=1]
+ %352 = fadd float %343, %342 ; [#uses=1]
+ %353 = fmul float %344, %317 ; [#uses=1]
+ %354 = fmul float %345, %317 ; [#uses=1]
+ %355 = fmul float %346, %317 ; [#uses=1]
+ %356 = fadd float %348, %347 ; [#uses=1]
+ %357 = fadd float %350, %349 ; [#uses=1]
+ %358 = fadd float %352, %351 ; [#uses=1]
+ %359 = fmul float %355, %314 ; [#uses=1]
+ %360 = fmul float %354, %314 ; [#uses=1]
+ %361 = fmul float %353, %314 ; [#uses=1]
+ %362 = load float* %188, align 4 ; [#uses=1]
+ %363 = fadd float %362, %361 ; [#uses=1]
+ store float %363, float* %188, align 4
+ %364 = load float* %183, align 4 ; [#uses=1]
+ %365 = fadd float %364, %360 ; [#uses=1]
+ store float %365, float* %183, align 4
+ %366 = load float* %178, align 4 ; [#uses=1]
+ %367 = fadd float %366, %359 ; [#uses=1]
+ store float %367, float* %178, align 4
+ %368 = load float* %206, align 4 ; [#uses=1]
+ %369 = fmul float %368, %314 ; [#uses=1]
+ %370 = load float* %207, align 4 ; [#uses=1]
+ %371 = fmul float %370, %314 ; [#uses=1]
+ %372 = load float* %208, align 4 ; [#uses=1]
+ %373 = fmul float %372, %314 ; [#uses=1]
+ %374 = fmul float %358, %369 ; [#uses=1]
+ %375 = fmul float %357, %371 ; [#uses=1]
+ %376 = fmul float %356, %373 ; [#uses=1]
+ %377 = load float* %164, align 4 ; [#uses=1]
+ %378 = fadd float %377, %376 ; [#uses=1]
+ store float %378, float* %164, align 4
+ %379 = load float* %159, align 4 ; [#uses=1]
+ %380 = fadd float %379, %375 ; [#uses=1]
+ store float %380, float* %159, align 4
+ %381 = load float* %154, align 4 ; [#uses=1]
+ %382 = fadd float %381, %374 ; [#uses=1]
+ store float %382, float* %154, align 4
+ br label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit119
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit119: ; preds = %bb.i117, %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit122
+ %383 = add nsw i32 %i.0430, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %383, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb8, label %bb6
+
+bb8: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit119, %bb
+ %384 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 29 ; [#uses=1]
+ %385 = load i8* %384, align 4 ; [#uses=1]
+ %toBool9 = icmp eq i8 %385, 0 ; [#uses=1]
+ br i1 %toBool9, label %bb44, label %bb10
+
+bb10: ; preds = %bb8
+ %386 = load %struct.btRigidBody** %2, align 4 ; [#uses=16]
+ %387 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %388 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %389 = load float* %388, align 4 ; [#uses=1]
+ store float %389, float* %387, align 8
+ %390 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %391 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %392 = load float* %391, align 4 ; [#uses=1]
+ store float %392, float* %390, align 4
+ %393 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %394 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %395 = load float* %394, align 4 ; [#uses=1]
+ store float %395, float* %393, align 8
+ %396 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %397 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %398 = load float* %397, align 4 ; [#uses=1]
+ store float %398, float* %396, align 4
+ %399 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %400 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %401 = load float* %400, align 4 ; [#uses=1]
+ store float %401, float* %399, align 8
+ %402 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %403 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %404 = load float* %403, align 4 ; [#uses=1]
+ store float %404, float* %402, align 4
+ %405 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %406 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %407 = load float* %406, align 4 ; [#uses=1]
+ store float %407, float* %405, align 8
+ %408 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %409 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %410 = load float* %409, align 4 ; [#uses=1]
+ store float %410, float* %408, align 4
+ %411 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %412 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %413 = load float* %412, align 4 ; [#uses=1]
+ store float %413, float* %411, align 8
+ %414 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %415 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %416 = load float* %415, align 4 ; [#uses=1]
+ store float %416, float* %414, align 4
+ %417 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %418 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %419 = load float* %418, align 4 ; [#uses=1]
+ store float %419, float* %417, align 8
+ %420 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %421 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %422 = load float* %421, align 4 ; [#uses=1]
+ store float %422, float* %420, align 4
+ %423 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %424 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %425 = load float* %424, align 4 ; [#uses=1]
+ store float %425, float* %423, align 8
+ %426 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %427 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %428 = load float* %427, align 4 ; [#uses=1]
+ store float %428, float* %426, align 4
+ %429 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %430 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %431 = load float* %430, align 4 ; [#uses=1]
+ store float %431, float* %429, align 8
+ %432 = getelementptr inbounds %struct.btTransform* %trACur, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %433 = getelementptr inbounds %struct.btRigidBody* %386, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %434 = load float* %433, align 4 ; [#uses=1]
+ store float %434, float* %432, align 4
+ %435 = load %struct.btRigidBody** %52, align 4 ; [#uses=16]
+ %436 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %437 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %438 = load float* %437, align 4 ; [#uses=1]
+ store float %438, float* %436, align 8
+ %439 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %440 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %441 = load float* %440, align 4 ; [#uses=1]
+ store float %441, float* %439, align 4
+ %442 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %443 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %444 = load float* %443, align 4 ; [#uses=1]
+ store float %444, float* %442, align 8
+ %445 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %446 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %447 = load float* %446, align 4 ; [#uses=1]
+ store float %447, float* %445, align 4
+ %448 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %449 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %450 = load float* %449, align 4 ; [#uses=1]
+ store float %450, float* %448, align 8
+ %451 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %452 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %453 = load float* %452, align 4 ; [#uses=1]
+ store float %453, float* %451, align 4
+ %454 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %455 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %456 = load float* %455, align 4 ; [#uses=1]
+ store float %456, float* %454, align 8
+ %457 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %458 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %459 = load float* %458, align 4 ; [#uses=1]
+ store float %459, float* %457, align 4
+ %460 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %461 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %462 = load float* %461, align 4 ; [#uses=1]
+ store float %462, float* %460, align 8
+ %463 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %464 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %465 = load float* %464, align 4 ; [#uses=1]
+ store float %465, float* %463, align 4
+ %466 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %467 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %468 = load float* %467, align 4 ; [#uses=1]
+ store float %468, float* %466, align 8
+ %469 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %470 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %471 = load float* %470, align 4 ; [#uses=1]
+ store float %471, float* %469, align 4
+ %472 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %473 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %474 = load float* %473, align 4 ; [#uses=1]
+ store float %474, float* %472, align 8
+ %475 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %476 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %477 = load float* %476, align 4 ; [#uses=1]
+ store float %477, float* %475, align 4
+ %478 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %479 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %480 = load float* %479, align 4 ; [#uses=1]
+ store float %480, float* %478, align 8
+ %481 = getelementptr inbounds %struct.btTransform* %trBCur, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %482 = getelementptr inbounds %struct.btRigidBody* %435, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %483 = load float* %482, align 4 ; [#uses=1]
+ store float %483, float* %481, align 4
+ %484 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %485 = load float* %484, align 4 ; [#uses=1]
+ %486 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 25, i32 0, i32 2 ; [#uses=3]
+ %487 = load float* %486, align 4 ; [#uses=1]
+ %488 = fadd float %485, %487 ; [#uses=1]
+ %489 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %490 = load float* %489, align 4 ; [#uses=1]
+ %491 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 25, i32 0, i32 1 ; [#uses=3]
+ %492 = load float* %491, align 4 ; [#uses=1]
+ %493 = fadd float %490, %492 ; [#uses=1]
+ %494 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %495 = load float* %494, align 4 ; [#uses=1]
+ %496 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 25, i32 0, i32 0 ; [#uses=3]
+ %497 = load float* %496, align 4 ; [#uses=1]
+ %498 = fadd float %495, %497 ; [#uses=1]
+ %499 = getelementptr inbounds %struct.btQuadWord* %omegaA, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %498, float* %499, align 8
+ %500 = getelementptr inbounds %struct.btQuadWord* %omegaA, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %493, float* %500, align 4
+ %501 = getelementptr inbounds %struct.btQuadWord* %omegaA, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %488, float* %501, align 8
+ %502 = getelementptr inbounds %struct.btQuadWord* %omegaA, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %502, align 4
+ %503 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %504 = load float* %503, align 4 ; [#uses=1]
+ %505 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 25, i32 0, i32 2 ; [#uses=3]
+ %506 = load float* %505, align 4 ; [#uses=1]
+ %507 = fadd float %504, %506 ; [#uses=1]
+ %508 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %509 = load float* %508, align 4 ; [#uses=1]
+ %510 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 25, i32 0, i32 1 ; [#uses=3]
+ %511 = load float* %510, align 4 ; [#uses=1]
+ %512 = fadd float %509, %511 ; [#uses=1]
+ %513 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %514 = load float* %513, align 4 ; [#uses=1]
+ %515 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 25, i32 0, i32 0 ; [#uses=3]
+ %516 = load float* %515, align 4 ; [#uses=1]
+ %517 = fadd float %514, %516 ; [#uses=1]
+ %518 = getelementptr inbounds %struct.btQuadWord* %omegaB, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %517, float* %518, align 8
+ %519 = getelementptr inbounds %struct.btQuadWord* %omegaB, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %512, float* %519, align 4
+ %520 = getelementptr inbounds %struct.btQuadWord* %omegaB, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %507, float* %520, align 8
+ %521 = getelementptr inbounds %struct.btQuadWord* %omegaB, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %521, align 4
+ %522 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 1.000000e+00, float* %522, align 8
+ %523 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %523, align 4
+ %524 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %524, align 8
+ %525 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %525, align 4
+ %526 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %526, align 8
+ %527 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 1.000000e+00, float* %527, align 4
+ %528 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %528, align 8
+ %529 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %529, align 4
+ %530 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %530, align 8
+ %531 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %531, align 4
+ %532 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ store float 1.000000e+00, float* %532, align 8
+ %533 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %533, align 4
+ %534 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %534, align 8
+ %535 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %535, align 4
+ %536 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %536, align 8
+ %537 = getelementptr inbounds %struct.btTransform* %trAPred, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %537, align 4
+ %538 = getelementptr inbounds %struct.btQuadWord* %zerovec, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %538, align 8
+ %539 = getelementptr inbounds %struct.btQuadWord* %zerovec, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %539, align 4
+ %540 = getelementptr inbounds %struct.btQuadWord* %zerovec, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %540, align 8
+ %541 = getelementptr inbounds %struct.btQuadWord* %zerovec, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %541, align 4
+ call void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(%struct.btTransform* %trACur, %struct.btQuadWord* %zerovec, %struct.btQuadWord* %omegaA, float %timeStep, %struct.btTransform* %trAPred)
+ %542 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 1.000000e+00, float* %542, align 8
+ %543 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %543, align 4
+ %544 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %544, align 8
+ %545 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %545, align 4
+ %546 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %546, align 8
+ %547 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 1.000000e+00, float* %547, align 4
+ %548 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %548, align 8
+ %549 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %549, align 4
+ %550 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %550, align 8
+ %551 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %551, align 4
+ %552 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ store float 1.000000e+00, float* %552, align 8
+ %553 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %553, align 4
+ %554 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %554, align 8
+ %555 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %555, align 4
+ %556 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %556, align 8
+ %557 = getelementptr inbounds %struct.btTransform* %trBPred, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %557, align 4
+ call void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(%struct.btTransform* %trBCur, %struct.btQuadWord* %zerovec, %struct.btQuadWord* %omegaB, float %timeStep, %struct.btTransform* %trBPred)
+ %558 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 31, i32 0, i32 0, i32 0 ; [#uses=1]
+ %559 = load float* %558, align 4 ; [#uses=6]
+ %560 = fmul float %559, %559 ; [#uses=1]
+ %561 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 31, i32 0, i32 0, i32 1 ; [#uses=1]
+ %562 = load float* %561, align 4 ; [#uses=5]
+ %563 = fmul float %562, %562 ; [#uses=1]
+ %564 = fadd float %560, %563 ; [#uses=1]
+ %565 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 31, i32 0, i32 0, i32 2 ; [#uses=1]
+ %566 = load float* %565, align 4 ; [#uses=4]
+ %567 = fmul float %566, %566 ; [#uses=1]
+ %568 = fadd float %564, %567 ; [#uses=1]
+ %569 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 31, i32 0, i32 0, i32 3 ; [#uses=1]
+ %570 = load float* %569, align 4 ; [#uses=5]
+ %571 = fmul float %570, %570 ; [#uses=1]
+ %572 = fadd float %568, %571 ; [#uses=1]
+ %573 = fdiv float 2.000000e+00, %572 ; [#uses=3]
+ %574 = fmul float %559, %573 ; [#uses=2]
+ %575 = fmul float %562, %573 ; [#uses=3]
+ %576 = fmul float %566, %573 ; [#uses=4]
+ %577 = fmul float %570, %574 ; [#uses=2]
+ %578 = fmul float %570, %575 ; [#uses=2]
+ %579 = fmul float %570, %576 ; [#uses=2]
+ %580 = fmul float %559, %574 ; [#uses=2]
+ %581 = fmul float %559, %575 ; [#uses=2]
+ %582 = fmul float %559, %576 ; [#uses=2]
+ %583 = fmul float %562, %575 ; [#uses=2]
+ %584 = fmul float %562, %576 ; [#uses=2]
+ %585 = fmul float %566, %576 ; [#uses=2]
+ %586 = fadd float %580, %583 ; [#uses=1]
+ %587 = fsub float 1.000000e+00, %586 ; [#uses=3]
+ %588 = fadd float %584, %577 ; [#uses=3]
+ %589 = fsub float %582, %578 ; [#uses=3]
+ %590 = fsub float %584, %577 ; [#uses=3]
+ %591 = fadd float %580, %585 ; [#uses=1]
+ %592 = fsub float 1.000000e+00, %591 ; [#uses=3]
+ %593 = fadd float %581, %579 ; [#uses=3]
+ %594 = fadd float %582, %578 ; [#uses=3]
+ %595 = fsub float %581, %579 ; [#uses=3]
+ %596 = fadd float %583, %585 ; [#uses=1]
+ %597 = fsub float 1.000000e+00, %596 ; [#uses=3]
+ %598 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %599 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %600 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %601 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %602 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %603 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %604 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %605 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %606 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %607 = load float* %606, align 4 ; [#uses=4]
+ %608 = load float* %605, align 4 ; [#uses=4]
+ %609 = load float* %604, align 4 ; [#uses=4]
+ %610 = load float* %603, align 4 ; [#uses=4]
+ %611 = load float* %602, align 4 ; [#uses=4]
+ %612 = load float* %601, align 4 ; [#uses=4]
+ %613 = load float* %600, align 4 ; [#uses=4]
+ %614 = load float* %599, align 4 ; [#uses=4]
+ %615 = load float* %598, align 4 ; [#uses=4]
+ %616 = load float* %17, align 4 ; [#uses=1]
+ %617 = fsub float -0.000000e+00, %616 ; [#uses=3]
+ %618 = load float* %11, align 4 ; [#uses=1]
+ %619 = fsub float -0.000000e+00, %618 ; [#uses=3]
+ %620 = load float* %6, align 4 ; [#uses=1]
+ %621 = fsub float -0.000000e+00, %620 ; [#uses=3]
+ %622 = fmul float %613, %621 ; [#uses=1]
+ %623 = fmul float %614, %619 ; [#uses=1]
+ %624 = fadd float %622, %623 ; [#uses=1]
+ %625 = fmul float %615, %617 ; [#uses=1]
+ %626 = fadd float %624, %625 ; [#uses=3]
+ %627 = fmul float %610, %621 ; [#uses=1]
+ %628 = fmul float %611, %619 ; [#uses=1]
+ %629 = fadd float %627, %628 ; [#uses=1]
+ %630 = fmul float %612, %617 ; [#uses=1]
+ %631 = fadd float %629, %630 ; [#uses=3]
+ %632 = fmul float %607, %621 ; [#uses=1]
+ %633 = fmul float %608, %619 ; [#uses=1]
+ %634 = fadd float %632, %633 ; [#uses=1]
+ %635 = fmul float %609, %617 ; [#uses=1]
+ %636 = fadd float %634, %635 ; [#uses=3]
+ %637 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %638 = load float* %637, align 4 ; [#uses=4]
+ %639 = fmul float %638, 0.000000e+00 ; [#uses=1]
+ %640 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %641 = load float* %640, align 4 ; [#uses=4]
+ %642 = fmul float %641, 0.000000e+00 ; [#uses=1]
+ %643 = fadd float %639, %642 ; [#uses=1]
+ %644 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %645 = load float* %644, align 4 ; [#uses=4]
+ %646 = fmul float %645, 0.000000e+00 ; [#uses=1]
+ %647 = fadd float %643, %646 ; [#uses=1]
+ %648 = load float* %67, align 4 ; [#uses=1]
+ %649 = fadd float %647, %648 ; [#uses=1]
+ %650 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %651 = load float* %650, align 4 ; [#uses=4]
+ %652 = fmul float %651, 0.000000e+00 ; [#uses=1]
+ %653 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %654 = load float* %653, align 4 ; [#uses=4]
+ %655 = fmul float %654, 0.000000e+00 ; [#uses=1]
+ %656 = fadd float %652, %655 ; [#uses=1]
+ %657 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %658 = load float* %657, align 4 ; [#uses=4]
+ %659 = fmul float %658, 0.000000e+00 ; [#uses=1]
+ %660 = fadd float %656, %659 ; [#uses=1]
+ %661 = load float* %61, align 4 ; [#uses=1]
+ %662 = fadd float %660, %661 ; [#uses=1]
+ %663 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %664 = load float* %663, align 4 ; [#uses=4]
+ %665 = fmul float %664, 0.000000e+00 ; [#uses=1]
+ %666 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %667 = load float* %666, align 4 ; [#uses=4]
+ %668 = fmul float %667, 0.000000e+00 ; [#uses=1]
+ %669 = fadd float %665, %668 ; [#uses=1]
+ %670 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %671 = load float* %670, align 4 ; [#uses=4]
+ %672 = fmul float %671, 0.000000e+00 ; [#uses=1]
+ %673 = fadd float %669, %672 ; [#uses=1]
+ %674 = load float* %56, align 4 ; [#uses=1]
+ %675 = fadd float %673, %674 ; [#uses=1]
+ %676 = fmul float %594, %638 ; [#uses=1]
+ %677 = fmul float %590, %641 ; [#uses=1]
+ %678 = fadd float %676, %677 ; [#uses=1]
+ %679 = fmul float %587, %645 ; [#uses=1]
+ %680 = fadd float %678, %679 ; [#uses=4]
+ %681 = fmul float %595, %638 ; [#uses=1]
+ %682 = fmul float %592, %641 ; [#uses=1]
+ %683 = fadd float %681, %682 ; [#uses=1]
+ %684 = fmul float %588, %645 ; [#uses=1]
+ %685 = fadd float %683, %684 ; [#uses=4]
+ %686 = fmul float %597, %638 ; [#uses=1]
+ %687 = fmul float %593, %641 ; [#uses=1]
+ %688 = fadd float %686, %687 ; [#uses=1]
+ %689 = fmul float %589, %645 ; [#uses=1]
+ %690 = fadd float %688, %689 ; [#uses=4]
+ %691 = fmul float %594, %651 ; [#uses=1]
+ %692 = fmul float %590, %654 ; [#uses=1]
+ %693 = fadd float %691, %692 ; [#uses=1]
+ %694 = fmul float %587, %658 ; [#uses=1]
+ %695 = fadd float %693, %694 ; [#uses=4]
+ %696 = fmul float %595, %651 ; [#uses=1]
+ %697 = fmul float %592, %654 ; [#uses=1]
+ %698 = fadd float %696, %697 ; [#uses=1]
+ %699 = fmul float %588, %658 ; [#uses=1]
+ %700 = fadd float %698, %699 ; [#uses=4]
+ %701 = fmul float %597, %651 ; [#uses=1]
+ %702 = fmul float %593, %654 ; [#uses=1]
+ %703 = fadd float %701, %702 ; [#uses=1]
+ %704 = fmul float %589, %658 ; [#uses=1]
+ %705 = fadd float %703, %704 ; [#uses=4]
+ %706 = fmul float %594, %664 ; [#uses=1]
+ %707 = fmul float %590, %667 ; [#uses=1]
+ %708 = fadd float %706, %707 ; [#uses=1]
+ %709 = fmul float %587, %671 ; [#uses=1]
+ %710 = fadd float %708, %709 ; [#uses=4]
+ %711 = fmul float %595, %664 ; [#uses=1]
+ %712 = fmul float %592, %667 ; [#uses=1]
+ %713 = fadd float %711, %712 ; [#uses=1]
+ %714 = fmul float %588, %671 ; [#uses=1]
+ %715 = fadd float %713, %714 ; [#uses=4]
+ %716 = fmul float %597, %664 ; [#uses=1]
+ %717 = fmul float %593, %667 ; [#uses=1]
+ %718 = fadd float %716, %717 ; [#uses=1]
+ %719 = fmul float %589, %671 ; [#uses=1]
+ %720 = fadd float %718, %719 ; [#uses=4]
+ %721 = fmul float %690, %636 ; [#uses=1]
+ %722 = fmul float %685, %631 ; [#uses=1]
+ %723 = fadd float %721, %722 ; [#uses=1]
+ %724 = fmul float %680, %626 ; [#uses=1]
+ %725 = fadd float %723, %724 ; [#uses=1]
+ %726 = fadd float %725, %649 ; [#uses=4]
+ %727 = fmul float %705, %636 ; [#uses=1]
+ %728 = fmul float %700, %631 ; [#uses=1]
+ %729 = fadd float %727, %728 ; [#uses=1]
+ %730 = fmul float %695, %626 ; [#uses=1]
+ %731 = fadd float %729, %730 ; [#uses=1]
+ %732 = fadd float %731, %662 ; [#uses=4]
+ %733 = fmul float %720, %636 ; [#uses=1]
+ %734 = fmul float %715, %631 ; [#uses=1]
+ %735 = fadd float %733, %734 ; [#uses=1]
+ %736 = fmul float %710, %626 ; [#uses=1]
+ %737 = fadd float %735, %736 ; [#uses=1]
+ %738 = fadd float %737, %675 ; [#uses=4]
+ %739 = fmul float %609, %690 ; [#uses=1]
+ %740 = fmul float %612, %685 ; [#uses=1]
+ %741 = fadd float %739, %740 ; [#uses=1]
+ %742 = fmul float %615, %680 ; [#uses=1]
+ %743 = fadd float %741, %742 ; [#uses=7]
+ %744 = fmul float %608, %690 ; [#uses=1]
+ %745 = fmul float %611, %685 ; [#uses=1]
+ %746 = fadd float %744, %745 ; [#uses=1]
+ %747 = fmul float %614, %680 ; [#uses=1]
+ %748 = fadd float %746, %747 ; [#uses=7]
+ %749 = fmul float %607, %690 ; [#uses=1]
+ %750 = fmul float %610, %685 ; [#uses=1]
+ %751 = fadd float %749, %750 ; [#uses=1]
+ %752 = fmul float %613, %680 ; [#uses=1]
+ %753 = fadd float %751, %752 ; [#uses=7]
+ %754 = fmul float %609, %705 ; [#uses=1]
+ %755 = fmul float %612, %700 ; [#uses=1]
+ %756 = fadd float %754, %755 ; [#uses=1]
+ %757 = fmul float %615, %695 ; [#uses=1]
+ %758 = fadd float %756, %757 ; [#uses=7]
+ %759 = fmul float %608, %705 ; [#uses=1]
+ %760 = fmul float %611, %700 ; [#uses=1]
+ %761 = fadd float %759, %760 ; [#uses=1]
+ %762 = fmul float %614, %695 ; [#uses=1]
+ %763 = fadd float %761, %762 ; [#uses=7]
+ %764 = fmul float %607, %705 ; [#uses=1]
+ %765 = fmul float %610, %700 ; [#uses=1]
+ %766 = fadd float %764, %765 ; [#uses=1]
+ %767 = fmul float %613, %695 ; [#uses=1]
+ %768 = fadd float %766, %767 ; [#uses=7]
+ %769 = fmul float %609, %720 ; [#uses=1]
+ %770 = fmul float %612, %715 ; [#uses=1]
+ %771 = fadd float %769, %770 ; [#uses=1]
+ %772 = fmul float %615, %710 ; [#uses=1]
+ %773 = fadd float %771, %772 ; [#uses=7]
+ %774 = fmul float %608, %720 ; [#uses=1]
+ %775 = fmul float %611, %715 ; [#uses=1]
+ %776 = fadd float %774, %775 ; [#uses=1]
+ %777 = fmul float %614, %710 ; [#uses=1]
+ %778 = fadd float %776, %777 ; [#uses=7]
+ %779 = fmul float %607, %720 ; [#uses=1]
+ %780 = fmul float %610, %715 ; [#uses=1]
+ %781 = fadd float %779, %780 ; [#uses=1]
+ %782 = fmul float %613, %710 ; [#uses=1]
+ %783 = fadd float %781, %782 ; [#uses=7]
+ %784 = load float* %550, align 8 ; [#uses=4]
+ %785 = fmul float %784, %738 ; [#uses=1]
+ %786 = load float* %551, align 4 ; [#uses=4]
+ %787 = fmul float %786, %732 ; [#uses=1]
+ %788 = fadd float %785, %787 ; [#uses=1]
+ %789 = load float* %552, align 8 ; [#uses=4]
+ %790 = fmul float %789, %726 ; [#uses=1]
+ %791 = fadd float %788, %790 ; [#uses=1]
+ %792 = load float* %556, align 8 ; [#uses=1]
+ %793 = fadd float %791, %792 ; [#uses=1]
+ %794 = load float* %546, align 8 ; [#uses=4]
+ %795 = fmul float %794, %738 ; [#uses=1]
+ %796 = load float* %547, align 4 ; [#uses=4]
+ %797 = fmul float %796, %732 ; [#uses=1]
+ %798 = fadd float %795, %797 ; [#uses=1]
+ %799 = load float* %548, align 8 ; [#uses=4]
+ %800 = fmul float %799, %726 ; [#uses=1]
+ %801 = fadd float %798, %800 ; [#uses=1]
+ %802 = load float* %555, align 4 ; [#uses=1]
+ %803 = fadd float %801, %802 ; [#uses=1]
+ %804 = load float* %542, align 8 ; [#uses=4]
+ %805 = fmul float %804, %738 ; [#uses=1]
+ %806 = load float* %543, align 4 ; [#uses=4]
+ %807 = fmul float %806, %732 ; [#uses=1]
+ %808 = fadd float %805, %807 ; [#uses=1]
+ %809 = load float* %544, align 8 ; [#uses=4]
+ %810 = fmul float %809, %726 ; [#uses=1]
+ %811 = fadd float %808, %810 ; [#uses=1]
+ %812 = load float* %554, align 8 ; [#uses=1]
+ %813 = fadd float %811, %812 ; [#uses=1]
+ %814 = fmul float %773, %784 ; [#uses=1]
+ %815 = fmul float %758, %786 ; [#uses=1]
+ %816 = fadd float %814, %815 ; [#uses=1]
+ %817 = fmul float %743, %789 ; [#uses=1]
+ %818 = fadd float %816, %817 ; [#uses=1]
+ %819 = fmul float %778, %784 ; [#uses=1]
+ %820 = fmul float %763, %786 ; [#uses=1]
+ %821 = fadd float %819, %820 ; [#uses=1]
+ %822 = fmul float %748, %789 ; [#uses=1]
+ %823 = fadd float %821, %822 ; [#uses=1]
+ %824 = fmul float %783, %784 ; [#uses=1]
+ %825 = fmul float %768, %786 ; [#uses=1]
+ %826 = fadd float %824, %825 ; [#uses=1]
+ %827 = fmul float %753, %789 ; [#uses=1]
+ %828 = fadd float %826, %827 ; [#uses=1]
+ %829 = fmul float %773, %794 ; [#uses=1]
+ %830 = fmul float %758, %796 ; [#uses=1]
+ %831 = fadd float %829, %830 ; [#uses=1]
+ %832 = fmul float %743, %799 ; [#uses=1]
+ %833 = fadd float %831, %832 ; [#uses=1]
+ %834 = fmul float %778, %794 ; [#uses=1]
+ %835 = fmul float %763, %796 ; [#uses=1]
+ %836 = fadd float %834, %835 ; [#uses=1]
+ %837 = fmul float %748, %799 ; [#uses=1]
+ %838 = fadd float %836, %837 ; [#uses=1]
+ %839 = fmul float %783, %794 ; [#uses=1]
+ %840 = fmul float %768, %796 ; [#uses=1]
+ %841 = fadd float %839, %840 ; [#uses=1]
+ %842 = fmul float %753, %799 ; [#uses=1]
+ %843 = fadd float %841, %842 ; [#uses=1]
+ %844 = fmul float %773, %804 ; [#uses=1]
+ %845 = fmul float %758, %806 ; [#uses=1]
+ %846 = fadd float %844, %845 ; [#uses=1]
+ %847 = fmul float %743, %809 ; [#uses=1]
+ %848 = fadd float %846, %847 ; [#uses=1]
+ %849 = fmul float %778, %804 ; [#uses=1]
+ %850 = fmul float %763, %806 ; [#uses=1]
+ %851 = fadd float %849, %850 ; [#uses=1]
+ %852 = fmul float %748, %809 ; [#uses=1]
+ %853 = fadd float %851, %852 ; [#uses=1]
+ %854 = fmul float %783, %804 ; [#uses=1]
+ %855 = fmul float %768, %806 ; [#uses=1]
+ %856 = fadd float %854, %855 ; [#uses=1]
+ %857 = fmul float %753, %809 ; [#uses=1]
+ %858 = fadd float %856, %857 ; [#uses=1]
+ %859 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %858, float* %859, align 8
+ %860 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %853, float* %860, align 4
+ %861 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %848, float* %861, align 8
+ %862 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %862, align 4
+ %863 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %843, float* %863, align 8
+ %864 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %838, float* %864, align 4
+ %865 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %833, float* %865, align 8
+ %866 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %866, align 4
+ %867 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %828, float* %867, align 8
+ %868 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %823, float* %868, align 4
+ %869 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %818, float* %869, align 8
+ %870 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %870, align 4
+ %871 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %813, float* %871, align 8
+ %872 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %803, float* %872, align 4
+ %873 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %793, float* %873, align 8
+ %874 = getelementptr inbounds %struct.btTransform* %trADes, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %874, align 4
+ %875 = fsub float -0.000000e+00, %726 ; [#uses=3]
+ %876 = fsub float -0.000000e+00, %732 ; [#uses=3]
+ %877 = fsub float -0.000000e+00, %738 ; [#uses=3]
+ %878 = fmul float %773, %877 ; [#uses=1]
+ %879 = fmul float %758, %876 ; [#uses=1]
+ %880 = fadd float %878, %879 ; [#uses=1]
+ %881 = fmul float %743, %875 ; [#uses=1]
+ %882 = fadd float %880, %881 ; [#uses=3]
+ %883 = fmul float %778, %877 ; [#uses=1]
+ %884 = fmul float %763, %876 ; [#uses=1]
+ %885 = fadd float %883, %884 ; [#uses=1]
+ %886 = fmul float %748, %875 ; [#uses=1]
+ %887 = fadd float %885, %886 ; [#uses=3]
+ %888 = fmul float %783, %877 ; [#uses=1]
+ %889 = fmul float %768, %876 ; [#uses=1]
+ %890 = fadd float %888, %889 ; [#uses=1]
+ %891 = fmul float %753, %875 ; [#uses=1]
+ %892 = fadd float %890, %891 ; [#uses=3]
+ %893 = load float* %530, align 8 ; [#uses=4]
+ %894 = fmul float %893, %892 ; [#uses=1]
+ %895 = load float* %531, align 4 ; [#uses=4]
+ %896 = fmul float %895, %887 ; [#uses=1]
+ %897 = fadd float %894, %896 ; [#uses=1]
+ %898 = load float* %532, align 8 ; [#uses=4]
+ %899 = fmul float %898, %882 ; [#uses=1]
+ %900 = fadd float %897, %899 ; [#uses=1]
+ %901 = load float* %536, align 8 ; [#uses=1]
+ %902 = fadd float %900, %901 ; [#uses=2]
+ %903 = load float* %526, align 8 ; [#uses=4]
+ %904 = fmul float %903, %892 ; [#uses=1]
+ %905 = load float* %527, align 4 ; [#uses=4]
+ %906 = fmul float %905, %887 ; [#uses=1]
+ %907 = fadd float %904, %906 ; [#uses=1]
+ %908 = load float* %528, align 8 ; [#uses=4]
+ %909 = fmul float %908, %882 ; [#uses=1]
+ %910 = fadd float %907, %909 ; [#uses=1]
+ %911 = load float* %535, align 4 ; [#uses=1]
+ %912 = fadd float %910, %911 ; [#uses=2]
+ %913 = load float* %522, align 8 ; [#uses=4]
+ %914 = fmul float %913, %892 ; [#uses=1]
+ %915 = load float* %523, align 4 ; [#uses=4]
+ %916 = fmul float %915, %887 ; [#uses=1]
+ %917 = fadd float %914, %916 ; [#uses=1]
+ %918 = load float* %524, align 8 ; [#uses=4]
+ %919 = fmul float %918, %882 ; [#uses=1]
+ %920 = fadd float %917, %919 ; [#uses=1]
+ %921 = load float* %534, align 8 ; [#uses=1]
+ %922 = fadd float %920, %921 ; [#uses=2]
+ %923 = fmul float %753, %893 ; [#uses=1]
+ %924 = fmul float %748, %895 ; [#uses=1]
+ %925 = fadd float %923, %924 ; [#uses=1]
+ %926 = fmul float %743, %898 ; [#uses=1]
+ %927 = fadd float %925, %926 ; [#uses=1]
+ %928 = fmul float %768, %893 ; [#uses=1]
+ %929 = fmul float %763, %895 ; [#uses=1]
+ %930 = fadd float %928, %929 ; [#uses=1]
+ %931 = fmul float %758, %898 ; [#uses=1]
+ %932 = fadd float %930, %931 ; [#uses=1]
+ %933 = fmul float %783, %893 ; [#uses=1]
+ %934 = fmul float %778, %895 ; [#uses=1]
+ %935 = fadd float %933, %934 ; [#uses=1]
+ %936 = fmul float %773, %898 ; [#uses=1]
+ %937 = fadd float %935, %936 ; [#uses=1]
+ %938 = fmul float %753, %903 ; [#uses=1]
+ %939 = fmul float %748, %905 ; [#uses=1]
+ %940 = fadd float %938, %939 ; [#uses=1]
+ %941 = fmul float %743, %908 ; [#uses=1]
+ %942 = fadd float %940, %941 ; [#uses=1]
+ %943 = fmul float %768, %903 ; [#uses=1]
+ %944 = fmul float %763, %905 ; [#uses=1]
+ %945 = fadd float %943, %944 ; [#uses=1]
+ %946 = fmul float %758, %908 ; [#uses=1]
+ %947 = fadd float %945, %946 ; [#uses=1]
+ %948 = fmul float %783, %903 ; [#uses=1]
+ %949 = fmul float %778, %905 ; [#uses=1]
+ %950 = fadd float %948, %949 ; [#uses=1]
+ %951 = fmul float %773, %908 ; [#uses=1]
+ %952 = fadd float %950, %951 ; [#uses=1]
+ %953 = fmul float %753, %913 ; [#uses=1]
+ %954 = fmul float %748, %915 ; [#uses=1]
+ %955 = fadd float %953, %954 ; [#uses=1]
+ %956 = fmul float %743, %918 ; [#uses=1]
+ %957 = fadd float %955, %956 ; [#uses=1]
+ %958 = fmul float %768, %913 ; [#uses=1]
+ %959 = fmul float %763, %915 ; [#uses=1]
+ %960 = fadd float %958, %959 ; [#uses=1]
+ %961 = fmul float %758, %918 ; [#uses=1]
+ %962 = fadd float %960, %961 ; [#uses=1]
+ %963 = fmul float %783, %913 ; [#uses=1]
+ %964 = fmul float %778, %915 ; [#uses=1]
+ %965 = fadd float %963, %964 ; [#uses=1]
+ %966 = fmul float %773, %918 ; [#uses=1]
+ %967 = fadd float %965, %966 ; [#uses=1]
+ %968 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %967, float* %968, align 8
+ %969 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %962, float* %969, align 4
+ %970 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %957, float* %970, align 8
+ %971 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %971, align 4
+ %972 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %952, float* %972, align 8
+ %973 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %947, float* %973, align 4
+ %974 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %942, float* %974, align 8
+ %975 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %975, align 4
+ %976 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %937, float* %976, align 8
+ %977 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %932, float* %977, align 4
+ %978 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %927, float* %978, align 8
+ %979 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %979, align 4
+ %980 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %922, float* %980, align 8
+ %981 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %912, float* %981, align 4
+ %982 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %902, float* %982, align 8
+ %983 = getelementptr inbounds %struct.btTransform* %trBDes, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %983, align 4
+ %984 = fdiv float 1.000000e+00, %timeStep ; [#uses=9]
+ call void @_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(%struct.btTransform* %trACur, %struct.btTransform* %trADes, %struct.btQuadWord* %axis.i115, float* %angle.i116) nounwind
+ %985 = getelementptr inbounds %struct.btQuadWord* %axis.i115, i32 0, i32 0, i32 2 ; [#uses=1]
+ %986 = load float* %985, align 8 ; [#uses=1]
+ %987 = load float* %angle.i116, align 4 ; [#uses=3]
+ %988 = fmul float %986, %987 ; [#uses=1]
+ %989 = getelementptr inbounds %struct.btQuadWord* %axis.i115, i32 0, i32 0, i32 1 ; [#uses=1]
+ %990 = load float* %989, align 4 ; [#uses=1]
+ %991 = fmul float %990, %987 ; [#uses=1]
+ %992 = getelementptr inbounds %struct.btQuadWord* %axis.i115, i32 0, i32 0, i32 0 ; [#uses=1]
+ %993 = load float* %992, align 8 ; [#uses=1]
+ %994 = fmul float %993, %987 ; [#uses=1]
+ %995 = fmul float %988, %984 ; [#uses=1]
+ %996 = fmul float %991, %984 ; [#uses=1]
+ %997 = fmul float %994, %984 ; [#uses=1]
+ %998 = load float* %478, align 8 ; [#uses=1]
+ %999 = fsub float %902, %998 ; [#uses=1]
+ %1000 = load float* %475, align 4 ; [#uses=1]
+ %1001 = fsub float %912, %1000 ; [#uses=1]
+ %1002 = load float* %472, align 8 ; [#uses=1]
+ %1003 = fsub float %922, %1002 ; [#uses=1]
+ %1004 = fmul float %999, %984 ; [#uses=1]
+ %1005 = fmul float %1001, %984 ; [#uses=1]
+ %1006 = fmul float %1003, %984 ; [#uses=1]
+ store float %1006, float* %538, align 8
+ store float %1005, float* %539, align 4
+ store float %1004, float* %540, align 8
+ store float 0.000000e+00, float* %541, align 4
+ call void @_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(%struct.btTransform* %trBCur, %struct.btTransform* %trBDes, %struct.btQuadWord* %axis.i, float* %angle.i) nounwind
+ %1007 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1008 = load float* %1007, align 8 ; [#uses=1]
+ %1009 = load float* %angle.i, align 4 ; [#uses=3]
+ %1010 = fmul float %1008, %1009 ; [#uses=1]
+ %1011 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1012 = load float* %1011, align 4 ; [#uses=1]
+ %1013 = fmul float %1012, %1009 ; [#uses=1]
+ %1014 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1015 = load float* %1014, align 8 ; [#uses=1]
+ %1016 = fmul float %1015, %1009 ; [#uses=1]
+ %1017 = fmul float %1010, %984 ; [#uses=1]
+ %1018 = fmul float %1013, %984 ; [#uses=1]
+ %1019 = fmul float %1016, %984 ; [#uses=1]
+ %1020 = load float* %501, align 8 ; [#uses=1]
+ %1021 = fsub float %995, %1020 ; [#uses=4]
+ %1022 = load float* %500, align 4 ; [#uses=1]
+ %1023 = fsub float %996, %1022 ; [#uses=4]
+ %1024 = load float* %499, align 8 ; [#uses=1]
+ %1025 = fsub float %997, %1024 ; [#uses=4]
+ %1026 = load float* %520, align 8 ; [#uses=1]
+ %1027 = fsub float %1017, %1026 ; [#uses=4]
+ %1028 = load float* %519, align 4 ; [#uses=1]
+ %1029 = fsub float %1018, %1028 ; [#uses=4]
+ %1030 = load float* %518, align 8 ; [#uses=1]
+ %1031 = fsub float %1019, %1030 ; [#uses=4]
+ %1032 = fmul float %1025, %1025 ; [#uses=1]
+ %1033 = fmul float %1023, %1023 ; [#uses=1]
+ %1034 = fadd float %1032, %1033 ; [#uses=1]
+ %1035 = fmul float %1021, %1021 ; [#uses=1]
+ %1036 = fadd float %1034, %1035 ; [#uses=2]
+ %1037 = fcmp ogt float %1036, 0x3E80000000000000 ; [#uses=1]
+ br i1 %1037, label %bb12, label %bb13
+
+bb12: ; preds = %bb10
+ %1038 = call float @sqrtf(float %1036) nounwind readonly ; [#uses=1]
+ %1039 = fdiv float 1.000000e+00, %1038 ; [#uses=3]
+ %1040 = fmul float %1021, %1039 ; [#uses=5]
+ %1041 = fmul float %1023, %1039 ; [#uses=5]
+ %1042 = fmul float %1025, %1039 ; [#uses=5]
+ %1043 = load %struct.btRigidBody** %2, align 4 ; [#uses=9]
+ %1044 = getelementptr inbounds %struct.btRigidBody* %1043, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1045 = load float* %1044, align 4 ; [#uses=1]
+ %1046 = fmul float %1045, %1042 ; [#uses=1]
+ %1047 = getelementptr inbounds %struct.btRigidBody* %1043, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1048 = load float* %1047, align 4 ; [#uses=1]
+ %1049 = fmul float %1048, %1041 ; [#uses=1]
+ %1050 = fadd float %1046, %1049 ; [#uses=1]
+ %1051 = getelementptr inbounds %struct.btRigidBody* %1043, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1052 = load float* %1051, align 4 ; [#uses=1]
+ %1053 = fmul float %1052, %1040 ; [#uses=1]
+ %1054 = fadd float %1050, %1053 ; [#uses=1]
+ %1055 = getelementptr inbounds %struct.btRigidBody* %1043, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1056 = load float* %1055, align 4 ; [#uses=1]
+ %1057 = fmul float %1056, %1042 ; [#uses=1]
+ %1058 = getelementptr inbounds %struct.btRigidBody* %1043, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1059 = load float* %1058, align 4 ; [#uses=1]
+ %1060 = fmul float %1059, %1041 ; [#uses=1]
+ %1061 = fadd float %1057, %1060 ; [#uses=1]
+ %1062 = getelementptr inbounds %struct.btRigidBody* %1043, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1063 = load float* %1062, align 4 ; [#uses=1]
+ %1064 = fmul float %1063, %1040 ; [#uses=1]
+ %1065 = fadd float %1061, %1064 ; [#uses=1]
+ %1066 = getelementptr inbounds %struct.btRigidBody* %1043, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1067 = load float* %1066, align 4 ; [#uses=1]
+ %1068 = fmul float %1067, %1042 ; [#uses=1]
+ %1069 = getelementptr inbounds %struct.btRigidBody* %1043, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1070 = load float* %1069, align 4 ; [#uses=1]
+ %1071 = fmul float %1070, %1041 ; [#uses=1]
+ %1072 = fadd float %1068, %1071 ; [#uses=1]
+ %1073 = getelementptr inbounds %struct.btRigidBody* %1043, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1074 = load float* %1073, align 4 ; [#uses=1]
+ %1075 = fmul float %1074, %1040 ; [#uses=1]
+ %1076 = fadd float %1072, %1075 ; [#uses=1]
+ %1077 = fmul float %1042, %1076 ; [#uses=1]
+ %1078 = fmul float %1041, %1065 ; [#uses=1]
+ %1079 = fadd float %1077, %1078 ; [#uses=1]
+ %1080 = fmul float %1040, %1054 ; [#uses=1]
+ %1081 = fadd float %1079, %1080 ; [#uses=1]
+ br label %bb13
+
+bb13: ; preds = %bb12, %bb10
+ %axisA.0.0.0 = phi float [ %1042, %bb12 ], [ undef, %bb10 ] ; [#uses=1]
+ %axisA.0.1.0 = phi float [ %1041, %bb12 ], [ undef, %bb10 ] ; [#uses=1]
+ %axisA.0.2.0 = phi float [ %1040, %bb12 ], [ undef, %bb10 ] ; [#uses=1]
+ %kAxisAInv.0 = phi float [ %1081, %bb12 ], [ 0.000000e+00, %bb10 ] ; [#uses=3]
+ %1082 = fmul float %1031, %1031 ; [#uses=1]
+ %1083 = fmul float %1029, %1029 ; [#uses=1]
+ %1084 = fadd float %1082, %1083 ; [#uses=1]
+ %1085 = fmul float %1027, %1027 ; [#uses=1]
+ %1086 = fadd float %1084, %1085 ; [#uses=2]
+ %1087 = fcmp ogt float %1086, 0x3E80000000000000 ; [#uses=1]
+ br i1 %1087, label %bb15, label %bb17
+
+bb15: ; preds = %bb13
+ %1088 = call float @sqrtf(float %1086) nounwind readonly ; [#uses=1]
+ %1089 = fdiv float 1.000000e+00, %1088 ; [#uses=3]
+ %1090 = fmul float %1027, %1089 ; [#uses=5]
+ %1091 = fmul float %1029, %1089 ; [#uses=5]
+ %1092 = fmul float %1031, %1089 ; [#uses=5]
+ %1093 = load %struct.btRigidBody** %52, align 4 ; [#uses=9]
+ %1094 = getelementptr inbounds %struct.btRigidBody* %1093, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1095 = load float* %1094, align 4 ; [#uses=1]
+ %1096 = fmul float %1095, %1092 ; [#uses=1]
+ %1097 = getelementptr inbounds %struct.btRigidBody* %1093, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1098 = load float* %1097, align 4 ; [#uses=1]
+ %1099 = fmul float %1098, %1091 ; [#uses=1]
+ %1100 = fadd float %1096, %1099 ; [#uses=1]
+ %1101 = getelementptr inbounds %struct.btRigidBody* %1093, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1102 = load float* %1101, align 4 ; [#uses=1]
+ %1103 = fmul float %1102, %1090 ; [#uses=1]
+ %1104 = fadd float %1100, %1103 ; [#uses=1]
+ %1105 = getelementptr inbounds %struct.btRigidBody* %1093, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1106 = load float* %1105, align 4 ; [#uses=1]
+ %1107 = fmul float %1106, %1092 ; [#uses=1]
+ %1108 = getelementptr inbounds %struct.btRigidBody* %1093, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1109 = load float* %1108, align 4 ; [#uses=1]
+ %1110 = fmul float %1109, %1091 ; [#uses=1]
+ %1111 = fadd float %1107, %1110 ; [#uses=1]
+ %1112 = getelementptr inbounds %struct.btRigidBody* %1093, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1113 = load float* %1112, align 4 ; [#uses=1]
+ %1114 = fmul float %1113, %1090 ; [#uses=1]
+ %1115 = fadd float %1111, %1114 ; [#uses=1]
+ %1116 = getelementptr inbounds %struct.btRigidBody* %1093, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1117 = load float* %1116, align 4 ; [#uses=1]
+ %1118 = fmul float %1117, %1092 ; [#uses=1]
+ %1119 = getelementptr inbounds %struct.btRigidBody* %1093, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1120 = load float* %1119, align 4 ; [#uses=1]
+ %1121 = fmul float %1120, %1091 ; [#uses=1]
+ %1122 = fadd float %1118, %1121 ; [#uses=1]
+ %1123 = getelementptr inbounds %struct.btRigidBody* %1093, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1124 = load float* %1123, align 4 ; [#uses=1]
+ %1125 = fmul float %1124, %1090 ; [#uses=1]
+ %1126 = fadd float %1122, %1125 ; [#uses=1]
+ %1127 = fmul float %1092, %1126 ; [#uses=1]
+ %1128 = fmul float %1091, %1115 ; [#uses=1]
+ %1129 = fadd float %1127, %1128 ; [#uses=1]
+ %1130 = fmul float %1090, %1104 ; [#uses=1]
+ %1131 = fadd float %1129, %1130 ; [#uses=1]
+ br label %bb17
+
+bb17: ; preds = %bb15, %bb13
+ %axisB.0.0.0 = phi float [ %1092, %bb15 ], [ undef, %bb13 ] ; [#uses=1]
+ %axisB.0.1.0 = phi float [ %1091, %bb15 ], [ undef, %bb13 ] ; [#uses=1]
+ %axisB.0.2.0 = phi float [ %1090, %bb15 ], [ undef, %bb13 ] ; [#uses=1]
+ %kAxisBInv.0 = phi float [ %1131, %bb15 ], [ 0.000000e+00, %bb13 ] ; [#uses=3]
+ %1132 = fmul float %axisB.0.2.0, %kAxisBInv.0 ; [#uses=1]
+ %1133 = fmul float %axisB.0.1.0, %kAxisBInv.0 ; [#uses=1]
+ %1134 = fmul float %axisB.0.0.0, %kAxisBInv.0 ; [#uses=1]
+ %1135 = fmul float %axisA.0.2.0, %kAxisAInv.0 ; [#uses=1]
+ %1136 = fmul float %axisA.0.1.0, %kAxisAInv.0 ; [#uses=1]
+ %1137 = fmul float %axisA.0.0.0, %kAxisAInv.0 ; [#uses=1]
+ %1138 = fadd float %1135, %1132 ; [#uses=3]
+ %1139 = fadd float %1136, %1133 ; [#uses=3]
+ %1140 = fadd float %1137, %1134 ; [#uses=3]
+ %1141 = fmul float %1140, %1140 ; [#uses=1]
+ %1142 = fmul float %1139, %1139 ; [#uses=1]
+ %1143 = fadd float %1141, %1142 ; [#uses=1]
+ %1144 = fmul float %1138, %1138 ; [#uses=1]
+ %1145 = fadd float %1143, %1144 ; [#uses=2]
+ %not. = fcmp ogt float %1145, 0x3E80000000000000 ; [#uses=1]
+ br i1 %not., label %bb27, label %bb59
+
+bb27: ; preds = %bb17
+ %1146 = call float @sqrtf(float %1145) nounwind readonly ; [#uses=1]
+ %1147 = fdiv float 1.000000e+00, %1146 ; [#uses=3]
+ %1148 = fmul float %1140, %1147 ; [#uses=8]
+ %1149 = fmul float %1139, %1147 ; [#uses=8]
+ %1150 = fmul float %1138, %1147 ; [#uses=8]
+ %1151 = load %struct.btRigidBody** %2, align 4 ; [#uses=9]
+ %1152 = getelementptr inbounds %struct.btRigidBody* %1151, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %1153 = load float* %1152, align 4 ; [#uses=1]
+ %1154 = fmul float %1153, %1148 ; [#uses=1]
+ %1155 = getelementptr inbounds %struct.btRigidBody* %1151, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %1156 = load float* %1155, align 4 ; [#uses=1]
+ %1157 = fmul float %1156, %1149 ; [#uses=1]
+ %1158 = fadd float %1154, %1157 ; [#uses=1]
+ %1159 = getelementptr inbounds %struct.btRigidBody* %1151, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %1160 = load float* %1159, align 4 ; [#uses=1]
+ %1161 = fmul float %1160, %1150 ; [#uses=1]
+ %1162 = fadd float %1158, %1161 ; [#uses=1]
+ %1163 = getelementptr inbounds %struct.btRigidBody* %1151, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %1164 = load float* %1163, align 4 ; [#uses=1]
+ %1165 = fmul float %1164, %1148 ; [#uses=1]
+ %1166 = getelementptr inbounds %struct.btRigidBody* %1151, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %1167 = load float* %1166, align 4 ; [#uses=1]
+ %1168 = fmul float %1167, %1149 ; [#uses=1]
+ %1169 = fadd float %1165, %1168 ; [#uses=1]
+ %1170 = getelementptr inbounds %struct.btRigidBody* %1151, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %1171 = load float* %1170, align 4 ; [#uses=1]
+ %1172 = fmul float %1171, %1150 ; [#uses=1]
+ %1173 = fadd float %1169, %1172 ; [#uses=1]
+ %1174 = getelementptr inbounds %struct.btRigidBody* %1151, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1175 = load float* %1174, align 4 ; [#uses=1]
+ %1176 = fmul float %1175, %1148 ; [#uses=1]
+ %1177 = getelementptr inbounds %struct.btRigidBody* %1151, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %1178 = load float* %1177, align 4 ; [#uses=1]
+ %1179 = fmul float %1178, %1149 ; [#uses=1]
+ %1180 = fadd float %1176, %1179 ; [#uses=1]
+ %1181 = getelementptr inbounds %struct.btRigidBody* %1151, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %1182 = load float* %1181, align 4 ; [#uses=1]
+ %1183 = fmul float %1182, %1150 ; [#uses=1]
+ %1184 = fadd float %1180, %1183 ; [#uses=1]
+ %1185 = fmul float %1148, %1184 ; [#uses=1]
+ %1186 = fmul float %1149, %1173 ; [#uses=1]
+ %1187 = fadd float %1185, %1186 ; [#uses=1]
+ %1188 = fmul float %1150, %1162 ; [#uses=1]
+ %1189 = fadd float %1187, %1188 ; [#uses=5]
+ %1190 = load %struct.btRigidBody** %52, align 4 ; [#uses=10]
+ %1191 = getelementptr inbounds %struct.btRigidBody* %1190, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1192 = load float* %1191, align 4 ; [#uses=1]
+ %1193 = fmul float %1192, %1148 ; [#uses=1]
+ %1194 = getelementptr inbounds %struct.btRigidBody* %1190, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1195 = load float* %1194, align 4 ; [#uses=1]
+ %1196 = fmul float %1195, %1149 ; [#uses=1]
+ %1197 = fadd float %1193, %1196 ; [#uses=1]
+ %1198 = getelementptr inbounds %struct.btRigidBody* %1190, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1199 = load float* %1198, align 4 ; [#uses=1]
+ %1200 = fmul float %1199, %1150 ; [#uses=1]
+ %1201 = fadd float %1197, %1200 ; [#uses=1]
+ %1202 = getelementptr inbounds %struct.btRigidBody* %1190, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1203 = load float* %1202, align 4 ; [#uses=1]
+ %1204 = fmul float %1203, %1148 ; [#uses=1]
+ %1205 = getelementptr inbounds %struct.btRigidBody* %1190, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1206 = load float* %1205, align 4 ; [#uses=1]
+ %1207 = fmul float %1206, %1149 ; [#uses=1]
+ %1208 = fadd float %1204, %1207 ; [#uses=1]
+ %1209 = getelementptr inbounds %struct.btRigidBody* %1190, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1210 = load float* %1209, align 4 ; [#uses=1]
+ %1211 = fmul float %1210, %1150 ; [#uses=1]
+ %1212 = fadd float %1208, %1211 ; [#uses=1]
+ %1213 = getelementptr inbounds %struct.btRigidBody* %1190, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1214 = load float* %1213, align 4 ; [#uses=1]
+ %1215 = fmul float %1214, %1148 ; [#uses=1]
+ %1216 = getelementptr inbounds %struct.btRigidBody* %1190, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1217 = load float* %1216, align 4 ; [#uses=1]
+ %1218 = fmul float %1217, %1149 ; [#uses=1]
+ %1219 = fadd float %1215, %1218 ; [#uses=1]
+ %1220 = getelementptr inbounds %struct.btRigidBody* %1190, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1221 = load float* %1220, align 4 ; [#uses=1]
+ %1222 = fmul float %1221, %1150 ; [#uses=1]
+ %1223 = fadd float %1219, %1222 ; [#uses=1]
+ %1224 = fmul float %1148, %1223 ; [#uses=1]
+ %1225 = fmul float %1149, %1212 ; [#uses=1]
+ %1226 = fadd float %1224, %1225 ; [#uses=1]
+ %1227 = fmul float %1150, %1201 ; [#uses=1]
+ %1228 = fadd float %1226, %1227 ; [#uses=4]
+ %1229 = fadd float %1189, %1228 ; [#uses=2]
+ %1230 = fmul float %1229, %1229 ; [#uses=1]
+ %1231 = fmul float %1027, %1228 ; [#uses=1]
+ %1232 = fmul float %1029, %1228 ; [#uses=1]
+ %1233 = fmul float %1031, %1228 ; [#uses=1]
+ %1234 = fmul float %1021, %1189 ; [#uses=1]
+ %1235 = fmul float %1023, %1189 ; [#uses=1]
+ %1236 = fmul float %1025, %1189 ; [#uses=1]
+ %1237 = fsub float %1234, %1231 ; [#uses=1]
+ %1238 = fsub float %1235, %1232 ; [#uses=1]
+ %1239 = fsub float %1236, %1233 ; [#uses=1]
+ %1240 = fdiv float 1.000000e+00, %1230 ; [#uses=3]
+ %1241 = fmul float %1237, %1240 ; [#uses=3]
+ %1242 = fmul float %1238, %1240 ; [#uses=3]
+ %1243 = fmul float %1239, %1240 ; [#uses=3]
+ %1244 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 32 ; [#uses=1]
+ %1245 = load float* %1244, align 4 ; [#uses=3]
+ %1246 = fcmp ult float %1245, 0.000000e+00 ; [#uses=1]
+ br i1 %1246, label %bb43, label %bb33
+
+bb33: ; preds = %bb27
+ %1247 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 30 ; [#uses=1]
+ %1248 = load i8* %1247, align 1 ; [#uses=1]
+ %toBool37 = icmp eq i8 %1248, 0 ; [#uses=1]
+ br i1 %toBool37, label %bb39, label %bb38
+
+bb38: ; preds = %bb33
+ %1249 = fdiv float %1245, %1189 ; [#uses=1]
+ br label %bb39
+
+bb39: ; preds = %bb38, %bb33
+ %fMaxImpulse.0 = phi float [ %1245, %bb33 ], [ %1249, %bb38 ] ; [#uses=4]
+ %1250 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 33, i32 0, i32 2 ; [#uses=2]
+ %1251 = load float* %1250, align 4 ; [#uses=3]
+ %1252 = fadd float %1251, %1241 ; [#uses=3]
+ %1253 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 33, i32 0, i32 1 ; [#uses=2]
+ %1254 = load float* %1253, align 4 ; [#uses=3]
+ %1255 = fadd float %1254, %1242 ; [#uses=3]
+ %1256 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 33, i32 0, i32 0 ; [#uses=2]
+ %1257 = load float* %1256, align 4 ; [#uses=3]
+ %1258 = fadd float %1257, %1243 ; [#uses=3]
+ %1259 = fmul float %1258, %1258 ; [#uses=1]
+ %1260 = fmul float %1255, %1255 ; [#uses=1]
+ %1261 = fadd float %1259, %1260 ; [#uses=1]
+ %1262 = fmul float %1252, %1252 ; [#uses=1]
+ %1263 = fadd float %1261, %1262 ; [#uses=1]
+ %1264 = call float @sqrtf(float %1263) nounwind readonly ; [#uses=2]
+ %1265 = fcmp ogt float %1264, %fMaxImpulse.0 ; [#uses=1]
+ br i1 %1265, label %bb40, label %bb42
+
+bb40: ; preds = %bb39
+ %1266 = fdiv float 1.000000e+00, %1264 ; [#uses=3]
+ %1267 = fmul float %1258, %1266 ; [#uses=1]
+ %1268 = fmul float %1255, %1266 ; [#uses=1]
+ %1269 = fmul float %1252, %1266 ; [#uses=1]
+ %1270 = fmul float %1267, %fMaxImpulse.0 ; [#uses=1]
+ %1271 = fmul float %1268, %fMaxImpulse.0 ; [#uses=1]
+ %1272 = fmul float %1269, %fMaxImpulse.0 ; [#uses=1]
+ %1273 = fsub float %1272, %1251 ; [#uses=1]
+ %1274 = fsub float %1271, %1254 ; [#uses=1]
+ %1275 = fsub float %1270, %1257 ; [#uses=1]
+ br label %bb42
+
+bb42: ; preds = %bb40, %bb39
+ %impulse30.0.0.0 = phi float [ %1275, %bb40 ], [ %1243, %bb39 ] ; [#uses=2]
+ %impulse30.0.1.0 = phi float [ %1274, %bb40 ], [ %1242, %bb39 ] ; [#uses=2]
+ %impulse30.0.2.0 = phi float [ %1273, %bb40 ], [ %1241, %bb39 ] ; [#uses=2]
+ %1276 = fadd float %1257, %impulse30.0.0.0 ; [#uses=1]
+ store float %1276, float* %1256, align 4
+ %1277 = fadd float %1254, %impulse30.0.1.0 ; [#uses=1]
+ store float %1277, float* %1253, align 4
+ %1278 = fadd float %1251, %impulse30.0.2.0 ; [#uses=1]
+ store float %1278, float* %1250, align 4
+ br label %bb43
+
+bb43: ; preds = %bb42, %bb27
+ %impulse30.0.0.1 = phi float [ %1243, %bb27 ], [ %impulse30.0.0.0, %bb42 ] ; [#uses=3]
+ %impulse30.0.1.1 = phi float [ %1242, %bb27 ], [ %impulse30.0.1.0, %bb42 ] ; [#uses=3]
+ %impulse30.0.2.1 = phi float [ %1241, %bb27 ], [ %impulse30.0.2.0, %bb42 ] ; [#uses=3]
+ %1279 = fmul float %impulse30.0.0.1, %impulse30.0.0.1 ; [#uses=1]
+ %1280 = fmul float %impulse30.0.1.1, %impulse30.0.1.1 ; [#uses=1]
+ %1281 = fadd float %1279, %1280 ; [#uses=1]
+ %1282 = fmul float %impulse30.0.2.1, %impulse30.0.2.1 ; [#uses=1]
+ %1283 = fadd float %1281, %1282 ; [#uses=1]
+ %1284 = call float @sqrtf(float %1283) nounwind readonly ; [#uses=7]
+ %1285 = fdiv float 1.000000e+00, %1284 ; [#uses=3]
+ %1286 = fmul float %impulse30.0.2.1, %1285 ; [#uses=6]
+ %1287 = fmul float %impulse30.0.1.1, %1285 ; [#uses=6]
+ %1288 = fmul float %impulse30.0.0.1, %1285 ; [#uses=6]
+ %1289 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 4 ; [#uses=1]
+ %1290 = load float* %1289, align 4 ; [#uses=1]
+ %1291 = fcmp une float %1290, 0.000000e+00 ; [#uses=1]
+ br i1 %1291, label %bb.i112, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit114
+
+bb.i112: ; preds = %bb43
+ %1292 = load float* %1163, align 4 ; [#uses=1]
+ %1293 = load float* %1174, align 4 ; [#uses=1]
+ %1294 = load float* %1166, align 4 ; [#uses=1]
+ %1295 = load float* %1177, align 4 ; [#uses=1]
+ %1296 = load float* %1170, align 4 ; [#uses=1]
+ %1297 = load float* %1181, align 4 ; [#uses=1]
+ %1298 = load float* %1152, align 4 ; [#uses=1]
+ %1299 = fmul float %1292, %1287 ; [#uses=1]
+ %1300 = fmul float %1293, %1288 ; [#uses=1]
+ %1301 = load float* %1155, align 4 ; [#uses=1]
+ %1302 = fmul float %1294, %1287 ; [#uses=1]
+ %1303 = fmul float %1295, %1288 ; [#uses=1]
+ %1304 = load float* %1159, align 4 ; [#uses=1]
+ %1305 = fmul float %1296, %1287 ; [#uses=1]
+ %1306 = fmul float %1297, %1288 ; [#uses=1]
+ %1307 = fmul float %1298, %1286 ; [#uses=1]
+ %1308 = fadd float %1300, %1299 ; [#uses=1]
+ %1309 = fmul float %1301, %1286 ; [#uses=1]
+ %1310 = fadd float %1303, %1302 ; [#uses=1]
+ %1311 = fmul float %1304, %1286 ; [#uses=1]
+ %1312 = fadd float %1306, %1305 ; [#uses=1]
+ %1313 = fadd float %1308, %1307 ; [#uses=1]
+ %1314 = fadd float %1310, %1309 ; [#uses=1]
+ %1315 = fadd float %1312, %1311 ; [#uses=1]
+ %1316 = fmul float %1284, 0.000000e+00 ; [#uses=3]
+ %1317 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %1318 = load float* %1317, align 4 ; [#uses=1]
+ %1319 = fadd float %1318, %1316 ; [#uses=1]
+ store float %1319, float* %1317, align 4
+ %1320 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %1321 = load float* %1320, align 4 ; [#uses=1]
+ %1322 = fadd float %1321, %1316 ; [#uses=1]
+ store float %1322, float* %1320, align 4
+ %1323 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %1324 = load float* %1323, align 4 ; [#uses=1]
+ %1325 = fadd float %1324, %1316 ; [#uses=1]
+ store float %1325, float* %1323, align 4
+ %1326 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %1327 = load float* %1326, align 4 ; [#uses=1]
+ %1328 = fmul float %1327, %1284 ; [#uses=1]
+ %1329 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %1330 = load float* %1329, align 4 ; [#uses=1]
+ %1331 = fmul float %1330, %1284 ; [#uses=1]
+ %1332 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %1333 = load float* %1332, align 4 ; [#uses=1]
+ %1334 = fmul float %1333, %1284 ; [#uses=1]
+ %1335 = fmul float %1315, %1328 ; [#uses=1]
+ %1336 = fmul float %1314, %1331 ; [#uses=1]
+ %1337 = fmul float %1313, %1334 ; [#uses=1]
+ %1338 = load float* %496, align 4 ; [#uses=1]
+ %1339 = fadd float %1338, %1337 ; [#uses=1]
+ store float %1339, float* %496, align 4
+ %1340 = load float* %491, align 4 ; [#uses=1]
+ %1341 = fadd float %1340, %1336 ; [#uses=1]
+ store float %1341, float* %491, align 4
+ %1342 = load float* %486, align 4 ; [#uses=1]
+ %1343 = fadd float %1342, %1335 ; [#uses=1]
+ store float %1343, float* %486, align 4
+ %.pre438 = load %struct.btRigidBody** %52, align 4 ; [#uses=1]
+ br label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit114
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit114: ; preds = %bb.i112, %bb43
+ %1344 = phi %struct.btRigidBody* [ %1190, %bb43 ], [ %.pre438, %bb.i112 ] ; [#uses=9]
+ %1345 = fsub float -0.000000e+00, %1284 ; [#uses=3]
+ %1346 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 4 ; [#uses=1]
+ %1347 = load float* %1346, align 4 ; [#uses=1]
+ %1348 = fcmp une float %1347, 0.000000e+00 ; [#uses=1]
+ br i1 %1348, label %bb.i109, label %bb59
+
+bb.i109: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit114
+ %1349 = getelementptr inbounds %struct.btRigidBody* %1344, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1350 = getelementptr inbounds %struct.btRigidBody* %1344, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1351 = getelementptr inbounds %struct.btRigidBody* %1344, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1352 = getelementptr inbounds %struct.btRigidBody* %1344, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1353 = getelementptr inbounds %struct.btRigidBody* %1344, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1354 = getelementptr inbounds %struct.btRigidBody* %1344, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1355 = getelementptr inbounds %struct.btRigidBody* %1344, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1356 = load float* %1349, align 4 ; [#uses=1]
+ %1357 = load float* %1350, align 4 ; [#uses=1]
+ %1358 = getelementptr inbounds %struct.btRigidBody* %1344, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1359 = load float* %1351, align 4 ; [#uses=1]
+ %1360 = load float* %1352, align 4 ; [#uses=1]
+ %1361 = getelementptr inbounds %struct.btRigidBody* %1344, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1362 = load float* %1353, align 4 ; [#uses=1]
+ %1363 = load float* %1354, align 4 ; [#uses=1]
+ %1364 = load float* %1355, align 4 ; [#uses=1]
+ %1365 = fmul float %1356, %1287 ; [#uses=1]
+ %1366 = fmul float %1357, %1288 ; [#uses=1]
+ %1367 = load float* %1358, align 4 ; [#uses=1]
+ %1368 = fmul float %1359, %1287 ; [#uses=1]
+ %1369 = fmul float %1360, %1288 ; [#uses=1]
+ %1370 = load float* %1361, align 4 ; [#uses=1]
+ %1371 = fmul float %1362, %1287 ; [#uses=1]
+ %1372 = fmul float %1363, %1288 ; [#uses=1]
+ %1373 = fmul float %1364, %1286 ; [#uses=1]
+ %1374 = fadd float %1366, %1365 ; [#uses=1]
+ %1375 = fmul float %1367, %1286 ; [#uses=1]
+ %1376 = fadd float %1369, %1368 ; [#uses=1]
+ %1377 = fmul float %1370, %1286 ; [#uses=1]
+ %1378 = fadd float %1372, %1371 ; [#uses=1]
+ %1379 = fadd float %1374, %1373 ; [#uses=1]
+ %1380 = fadd float %1376, %1375 ; [#uses=1]
+ %1381 = fadd float %1378, %1377 ; [#uses=1]
+ %1382 = fmul float %1284, -0.000000e+00 ; [#uses=3]
+ %1383 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %1384 = load float* %1383, align 4 ; [#uses=1]
+ %1385 = fadd float %1384, %1382 ; [#uses=1]
+ store float %1385, float* %1383, align 4
+ %1386 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %1387 = load float* %1386, align 4 ; [#uses=1]
+ %1388 = fadd float %1387, %1382 ; [#uses=1]
+ store float %1388, float* %1386, align 4
+ %1389 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %1390 = load float* %1389, align 4 ; [#uses=1]
+ %1391 = fadd float %1390, %1382 ; [#uses=1]
+ store float %1391, float* %1389, align 4
+ %1392 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %1393 = load float* %1392, align 4 ; [#uses=1]
+ %1394 = fmul float %1393, %1345 ; [#uses=1]
+ %1395 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %1396 = load float* %1395, align 4 ; [#uses=1]
+ %1397 = fmul float %1396, %1345 ; [#uses=1]
+ %1398 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %1399 = load float* %1398, align 4 ; [#uses=1]
+ %1400 = fmul float %1399, %1345 ; [#uses=1]
+ %1401 = fmul float %1381, %1394 ; [#uses=1]
+ %1402 = fmul float %1380, %1397 ; [#uses=1]
+ %1403 = fmul float %1379, %1400 ; [#uses=1]
+ %1404 = load float* %515, align 4 ; [#uses=1]
+ %1405 = fadd float %1404, %1403 ; [#uses=1]
+ store float %1405, float* %515, align 4
+ %1406 = load float* %510, align 4 ; [#uses=1]
+ %1407 = fadd float %1406, %1402 ; [#uses=1]
+ store float %1407, float* %510, align 4
+ %1408 = load float* %505, align 4 ; [#uses=1]
+ %1409 = fadd float %1408, %1401 ; [#uses=1]
+ store float %1409, float* %505, align 4
+ br label %bb59
+
+bb44: ; preds = %bb8
+ %1410 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ %1411 = load float* %1410, align 4 ; [#uses=2]
+ %1412 = fcmp ogt float %1411, 0x3E80000000000000 ; [#uses=1]
+ br i1 %1412, label %bb45, label %bb59
+
+bb45: ; preds = %bb44
+ %1413 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %1414 = load float* %1413, align 4 ; [#uses=1]
+ %1415 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 25, i32 0, i32 2 ; [#uses=2]
+ %1416 = load float* %1415, align 4 ; [#uses=2]
+ %1417 = fadd float %1414, %1416 ; [#uses=1]
+ %1418 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %1419 = load float* %1418, align 4 ; [#uses=1]
+ %1420 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 25, i32 0, i32 1 ; [#uses=2]
+ %1421 = load float* %1420, align 4 ; [#uses=2]
+ %1422 = fadd float %1419, %1421 ; [#uses=1]
+ %1423 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %1424 = load float* %1423, align 4 ; [#uses=1]
+ %1425 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 25, i32 0, i32 0 ; [#uses=2]
+ %1426 = load float* %1425, align 4 ; [#uses=2]
+ %1427 = fadd float %1424, %1426 ; [#uses=1]
+ %1428 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %1429 = load float* %1428, align 4 ; [#uses=1]
+ %1430 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 25, i32 0, i32 2 ; [#uses=3]
+ %1431 = load float* %1430, align 4 ; [#uses=1]
+ %1432 = fadd float %1429, %1431 ; [#uses=1]
+ %1433 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %1434 = load float* %1433, align 4 ; [#uses=1]
+ %1435 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 25, i32 0, i32 1 ; [#uses=3]
+ %1436 = load float* %1435, align 4 ; [#uses=1]
+ %1437 = fadd float %1434, %1436 ; [#uses=1]
+ %1438 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %1439 = load float* %1438, align 4 ; [#uses=1]
+ %1440 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 25, i32 0, i32 0 ; [#uses=3]
+ %1441 = load float* %1440, align 4 ; [#uses=1]
+ %1442 = fadd float %1439, %1441 ; [#uses=1]
+ %1443 = fsub float %1432, %1417 ; [#uses=4]
+ %1444 = fsub float %1437, %1422 ; [#uses=4]
+ %1445 = fsub float %1442, %1427 ; [#uses=4]
+ %1446 = fmul float %1445, %1445 ; [#uses=1]
+ %1447 = fmul float %1444, %1444 ; [#uses=1]
+ %1448 = fadd float %1446, %1447 ; [#uses=1]
+ %1449 = fmul float %1443, %1443 ; [#uses=1]
+ %1450 = fadd float %1448, %1449 ; [#uses=2]
+ %1451 = fcmp ogt float %1450, 0x3E80000000000000 ; [#uses=1]
+ br i1 %1451, label %bb50, label %bb59
+
+bb50: ; preds = %bb45
+ %1452 = call float @sqrtf(float %1450) nounwind readonly ; [#uses=1]
+ %1453 = fdiv float 1.000000e+00, %1452 ; [#uses=3]
+ %1454 = fmul float %1443, %1453 ; [#uses=8]
+ %1455 = fmul float %1444, %1453 ; [#uses=8]
+ %1456 = fmul float %1445, %1453 ; [#uses=8]
+ %1457 = load %struct.btRigidBody** %2, align 4 ; [#uses=9]
+ %1458 = getelementptr inbounds %struct.btRigidBody* %1457, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1459 = load float* %1458, align 4 ; [#uses=2]
+ %1460 = fmul float %1459, %1456 ; [#uses=1]
+ %1461 = getelementptr inbounds %struct.btRigidBody* %1457, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1462 = load float* %1461, align 4 ; [#uses=2]
+ %1463 = fmul float %1462, %1455 ; [#uses=1]
+ %1464 = fadd float %1460, %1463 ; [#uses=1]
+ %1465 = getelementptr inbounds %struct.btRigidBody* %1457, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1466 = load float* %1465, align 4 ; [#uses=2]
+ %1467 = fmul float %1466, %1454 ; [#uses=1]
+ %1468 = fadd float %1464, %1467 ; [#uses=1]
+ %1469 = getelementptr inbounds %struct.btRigidBody* %1457, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1470 = load float* %1469, align 4 ; [#uses=2]
+ %1471 = fmul float %1470, %1456 ; [#uses=1]
+ %1472 = getelementptr inbounds %struct.btRigidBody* %1457, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1473 = load float* %1472, align 4 ; [#uses=2]
+ %1474 = fmul float %1473, %1455 ; [#uses=1]
+ %1475 = fadd float %1471, %1474 ; [#uses=1]
+ %1476 = getelementptr inbounds %struct.btRigidBody* %1457, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1477 = load float* %1476, align 4 ; [#uses=2]
+ %1478 = fmul float %1477, %1454 ; [#uses=1]
+ %1479 = fadd float %1475, %1478 ; [#uses=1]
+ %1480 = getelementptr inbounds %struct.btRigidBody* %1457, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1481 = load float* %1480, align 4 ; [#uses=2]
+ %1482 = fmul float %1481, %1456 ; [#uses=1]
+ %1483 = getelementptr inbounds %struct.btRigidBody* %1457, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1484 = load float* %1483, align 4 ; [#uses=2]
+ %1485 = fmul float %1484, %1455 ; [#uses=1]
+ %1486 = fadd float %1482, %1485 ; [#uses=1]
+ %1487 = getelementptr inbounds %struct.btRigidBody* %1457, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1488 = load float* %1487, align 4 ; [#uses=2]
+ %1489 = fmul float %1488, %1454 ; [#uses=1]
+ %1490 = fadd float %1486, %1489 ; [#uses=1]
+ %1491 = fmul float %1456, %1490 ; [#uses=1]
+ %1492 = fmul float %1455, %1479 ; [#uses=1]
+ %1493 = fadd float %1491, %1492 ; [#uses=1]
+ %1494 = fmul float %1454, %1468 ; [#uses=1]
+ %1495 = fadd float %1493, %1494 ; [#uses=1]
+ %1496 = load %struct.btRigidBody** %52, align 4 ; [#uses=10]
+ %1497 = getelementptr inbounds %struct.btRigidBody* %1496, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1498 = load float* %1497, align 4 ; [#uses=1]
+ %1499 = fmul float %1498, %1456 ; [#uses=1]
+ %1500 = getelementptr inbounds %struct.btRigidBody* %1496, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1501 = load float* %1500, align 4 ; [#uses=1]
+ %1502 = fmul float %1501, %1455 ; [#uses=1]
+ %1503 = fadd float %1499, %1502 ; [#uses=1]
+ %1504 = getelementptr inbounds %struct.btRigidBody* %1496, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1505 = load float* %1504, align 4 ; [#uses=1]
+ %1506 = fmul float %1505, %1454 ; [#uses=1]
+ %1507 = fadd float %1503, %1506 ; [#uses=1]
+ %1508 = getelementptr inbounds %struct.btRigidBody* %1496, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1509 = load float* %1508, align 4 ; [#uses=1]
+ %1510 = fmul float %1509, %1456 ; [#uses=1]
+ %1511 = getelementptr inbounds %struct.btRigidBody* %1496, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1512 = load float* %1511, align 4 ; [#uses=1]
+ %1513 = fmul float %1512, %1455 ; [#uses=1]
+ %1514 = fadd float %1510, %1513 ; [#uses=1]
+ %1515 = getelementptr inbounds %struct.btRigidBody* %1496, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1516 = load float* %1515, align 4 ; [#uses=1]
+ %1517 = fmul float %1516, %1454 ; [#uses=1]
+ %1518 = fadd float %1514, %1517 ; [#uses=1]
+ %1519 = getelementptr inbounds %struct.btRigidBody* %1496, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1520 = load float* %1519, align 4 ; [#uses=1]
+ %1521 = fmul float %1520, %1456 ; [#uses=1]
+ %1522 = getelementptr inbounds %struct.btRigidBody* %1496, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1523 = load float* %1522, align 4 ; [#uses=1]
+ %1524 = fmul float %1523, %1455 ; [#uses=1]
+ %1525 = fadd float %1521, %1524 ; [#uses=1]
+ %1526 = getelementptr inbounds %struct.btRigidBody* %1496, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1527 = load float* %1526, align 4 ; [#uses=1]
+ %1528 = fmul float %1527, %1454 ; [#uses=1]
+ %1529 = fadd float %1525, %1528 ; [#uses=1]
+ %1530 = fmul float %1456, %1529 ; [#uses=1]
+ %1531 = fmul float %1455, %1518 ; [#uses=1]
+ %1532 = fadd float %1530, %1531 ; [#uses=1]
+ %1533 = fmul float %1454, %1507 ; [#uses=1]
+ %1534 = fadd float %1532, %1533 ; [#uses=1]
+ %1535 = fadd float %1495, %1534 ; [#uses=1]
+ %1536 = fdiv float 1.000000e+00, %1535 ; [#uses=1]
+ %1537 = fmul float %1411, %1536 ; [#uses=3]
+ %1538 = fmul float %1443, %1537 ; [#uses=3]
+ %1539 = fmul float %1444, %1537 ; [#uses=3]
+ %1540 = fmul float %1445, %1537 ; [#uses=3]
+ %1541 = fmul float %1540, %1540 ; [#uses=1]
+ %1542 = fmul float %1539, %1539 ; [#uses=1]
+ %1543 = fadd float %1541, %1542 ; [#uses=1]
+ %1544 = fmul float %1538, %1538 ; [#uses=1]
+ %1545 = fadd float %1543, %1544 ; [#uses=1]
+ %1546 = call float @sqrtf(float %1545) nounwind readonly ; [#uses=7]
+ %1547 = fdiv float 1.000000e+00, %1546 ; [#uses=3]
+ %1548 = fmul float %1538, %1547 ; [#uses=6]
+ %1549 = fmul float %1539, %1547 ; [#uses=6]
+ %1550 = fmul float %1540, %1547 ; [#uses=6]
+ %1551 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 4 ; [#uses=1]
+ %1552 = load float* %1551, align 4 ; [#uses=1]
+ %1553 = fcmp une float %1552, 0.000000e+00 ; [#uses=1]
+ br i1 %1553, label %bb.i106, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit108
+
+bb.i106: ; preds = %bb50
+ %1554 = fmul float %1470, %1549 ; [#uses=1]
+ %1555 = fmul float %1481, %1550 ; [#uses=1]
+ %1556 = fmul float %1473, %1549 ; [#uses=1]
+ %1557 = fmul float %1484, %1550 ; [#uses=1]
+ %1558 = fmul float %1477, %1549 ; [#uses=1]
+ %1559 = fmul float %1488, %1550 ; [#uses=1]
+ %1560 = fmul float %1459, %1548 ; [#uses=1]
+ %1561 = fadd float %1555, %1554 ; [#uses=1]
+ %1562 = fmul float %1462, %1548 ; [#uses=1]
+ %1563 = fadd float %1557, %1556 ; [#uses=1]
+ %1564 = fmul float %1466, %1548 ; [#uses=1]
+ %1565 = fadd float %1559, %1558 ; [#uses=1]
+ %1566 = fadd float %1561, %1560 ; [#uses=1]
+ %1567 = fadd float %1563, %1562 ; [#uses=1]
+ %1568 = fadd float %1565, %1564 ; [#uses=1]
+ %1569 = fmul float %1546, 0.000000e+00 ; [#uses=3]
+ %1570 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %1571 = load float* %1570, align 4 ; [#uses=1]
+ %1572 = fadd float %1571, %1569 ; [#uses=1]
+ store float %1572, float* %1570, align 4
+ %1573 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %1574 = load float* %1573, align 4 ; [#uses=1]
+ %1575 = fadd float %1574, %1569 ; [#uses=1]
+ store float %1575, float* %1573, align 4
+ %1576 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %1577 = load float* %1576, align 4 ; [#uses=1]
+ %1578 = fadd float %1577, %1569 ; [#uses=1]
+ store float %1578, float* %1576, align 4
+ %1579 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %1580 = load float* %1579, align 4 ; [#uses=1]
+ %1581 = fmul float %1580, %1546 ; [#uses=1]
+ %1582 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %1583 = load float* %1582, align 4 ; [#uses=1]
+ %1584 = fmul float %1583, %1546 ; [#uses=1]
+ %1585 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %1586 = load float* %1585, align 4 ; [#uses=1]
+ %1587 = fmul float %1586, %1546 ; [#uses=1]
+ %1588 = fmul float %1568, %1581 ; [#uses=1]
+ %1589 = fmul float %1567, %1584 ; [#uses=1]
+ %1590 = fmul float %1566, %1587 ; [#uses=1]
+ %1591 = fadd float %1426, %1590 ; [#uses=1]
+ store float %1591, float* %1425, align 4
+ %1592 = fadd float %1421, %1589 ; [#uses=1]
+ store float %1592, float* %1420, align 4
+ %1593 = fadd float %1416, %1588 ; [#uses=1]
+ store float %1593, float* %1415, align 4
+ %.pre = load %struct.btRigidBody** %52, align 4 ; [#uses=1]
+ br label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit108
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit108: ; preds = %bb.i106, %bb50
+ %1594 = phi %struct.btRigidBody* [ %.pre, %bb.i106 ], [ %1496, %bb50 ] ; [#uses=9]
+ %1595 = fsub float -0.000000e+00, %1546 ; [#uses=3]
+ %1596 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 4 ; [#uses=1]
+ %1597 = load float* %1596, align 4 ; [#uses=1]
+ %1598 = fcmp une float %1597, 0.000000e+00 ; [#uses=1]
+ br i1 %1598, label %bb.i103, label %bb59
+
+bb.i103: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit108
+ %1599 = getelementptr inbounds %struct.btRigidBody* %1594, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1600 = getelementptr inbounds %struct.btRigidBody* %1594, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1601 = getelementptr inbounds %struct.btRigidBody* %1594, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1602 = getelementptr inbounds %struct.btRigidBody* %1594, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1603 = getelementptr inbounds %struct.btRigidBody* %1594, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1604 = getelementptr inbounds %struct.btRigidBody* %1594, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1605 = getelementptr inbounds %struct.btRigidBody* %1594, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1606 = load float* %1599, align 4 ; [#uses=1]
+ %1607 = load float* %1600, align 4 ; [#uses=1]
+ %1608 = getelementptr inbounds %struct.btRigidBody* %1594, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1609 = load float* %1601, align 4 ; [#uses=1]
+ %1610 = load float* %1602, align 4 ; [#uses=1]
+ %1611 = getelementptr inbounds %struct.btRigidBody* %1594, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1612 = load float* %1603, align 4 ; [#uses=1]
+ %1613 = load float* %1604, align 4 ; [#uses=1]
+ %1614 = load float* %1605, align 4 ; [#uses=1]
+ %1615 = fmul float %1606, %1549 ; [#uses=1]
+ %1616 = fmul float %1607, %1550 ; [#uses=1]
+ %1617 = load float* %1608, align 4 ; [#uses=1]
+ %1618 = fmul float %1609, %1549 ; [#uses=1]
+ %1619 = fmul float %1610, %1550 ; [#uses=1]
+ %1620 = load float* %1611, align 4 ; [#uses=1]
+ %1621 = fmul float %1612, %1549 ; [#uses=1]
+ %1622 = fmul float %1613, %1550 ; [#uses=1]
+ %1623 = fmul float %1614, %1548 ; [#uses=1]
+ %1624 = fadd float %1616, %1615 ; [#uses=1]
+ %1625 = fmul float %1617, %1548 ; [#uses=1]
+ %1626 = fadd float %1619, %1618 ; [#uses=1]
+ %1627 = fmul float %1620, %1548 ; [#uses=1]
+ %1628 = fadd float %1622, %1621 ; [#uses=1]
+ %1629 = fadd float %1624, %1623 ; [#uses=1]
+ %1630 = fadd float %1626, %1625 ; [#uses=1]
+ %1631 = fadd float %1628, %1627 ; [#uses=1]
+ %1632 = fmul float %1546, -0.000000e+00 ; [#uses=3]
+ %1633 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %1634 = load float* %1633, align 4 ; [#uses=1]
+ %1635 = fadd float %1634, %1632 ; [#uses=1]
+ store float %1635, float* %1633, align 4
+ %1636 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %1637 = load float* %1636, align 4 ; [#uses=1]
+ %1638 = fadd float %1637, %1632 ; [#uses=1]
+ store float %1638, float* %1636, align 4
+ %1639 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %1640 = load float* %1639, align 4 ; [#uses=1]
+ %1641 = fadd float %1640, %1632 ; [#uses=1]
+ store float %1641, float* %1639, align 4
+ %1642 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %1643 = load float* %1642, align 4 ; [#uses=1]
+ %1644 = fmul float %1643, %1595 ; [#uses=1]
+ %1645 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %1646 = load float* %1645, align 4 ; [#uses=1]
+ %1647 = fmul float %1646, %1595 ; [#uses=1]
+ %1648 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %1649 = load float* %1648, align 4 ; [#uses=1]
+ %1650 = fmul float %1649, %1595 ; [#uses=1]
+ %1651 = fmul float %1631, %1644 ; [#uses=1]
+ %1652 = fmul float %1630, %1647 ; [#uses=1]
+ %1653 = fmul float %1629, %1650 ; [#uses=1]
+ %1654 = load float* %1440, align 4 ; [#uses=1]
+ %1655 = fadd float %1654, %1653 ; [#uses=1]
+ store float %1655, float* %1440, align 4
+ %1656 = load float* %1435, align 4 ; [#uses=1]
+ %1657 = fadd float %1656, %1652 ; [#uses=1]
+ store float %1657, float* %1435, align 4
+ %1658 = load float* %1430, align 4 ; [#uses=1]
+ %1659 = fadd float %1658, %1651 ; [#uses=1]
+ store float %1659, float* %1430, align 4
+ br label %bb59
+
+bb59: ; preds = %bb.i103, %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit108, %bb45, %bb44, %bb.i109, %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit114, %bb17
+ %1660 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %1661 = load float* %1660, align 4 ; [#uses=1]
+ %1662 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 25, i32 0, i32 2 ; [#uses=5]
+ %1663 = load float* %1662, align 4 ; [#uses=1]
+ %1664 = fadd float %1661, %1663 ; [#uses=2]
+ %1665 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %1666 = load float* %1665, align 4 ; [#uses=1]
+ %1667 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 25, i32 0, i32 1 ; [#uses=5]
+ %1668 = load float* %1667, align 4 ; [#uses=1]
+ %1669 = fadd float %1666, %1668 ; [#uses=2]
+ %1670 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %1671 = load float* %1670, align 4 ; [#uses=1]
+ %1672 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 25, i32 0, i32 0 ; [#uses=5]
+ %1673 = load float* %1672, align 4 ; [#uses=1]
+ %1674 = fadd float %1671, %1673 ; [#uses=2]
+ %1675 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %1676 = load float* %1675, align 4 ; [#uses=1]
+ %1677 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 25, i32 0, i32 2 ; [#uses=5]
+ %1678 = load float* %1677, align 4 ; [#uses=1]
+ %1679 = fadd float %1676, %1678 ; [#uses=2]
+ %1680 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %1681 = load float* %1680, align 4 ; [#uses=1]
+ %1682 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 25, i32 0, i32 1 ; [#uses=5]
+ %1683 = load float* %1682, align 4 ; [#uses=1]
+ %1684 = fadd float %1681, %1683 ; [#uses=2]
+ %1685 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %1686 = load float* %1685, align 4 ; [#uses=1]
+ %1687 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 25, i32 0, i32 0 ; [#uses=5]
+ %1688 = load float* %1687, align 4 ; [#uses=1]
+ %1689 = fadd float %1686, %1688 ; [#uses=2]
+ %1690 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 24 ; [#uses=1]
+ %1691 = load i8* %1690, align 2 ; [#uses=1]
+ %toBool64 = icmp eq i8 %1691, 0 ; [#uses=1]
+ br i1 %toBool64, label %bb78, label %bb65
+
+bb65: ; preds = %bb59
+ %1692 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 26 ; [#uses=1]
+ %1693 = load float* %1692, align 4 ; [#uses=2]
+ %1694 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ %1695 = load float* %1694, align 4 ; [#uses=1]
+ %1696 = fmul float %1693, %1695 ; [#uses=1]
+ %1697 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ %1698 = load float* %1697, align 4 ; [#uses=1]
+ %1699 = fmul float %1696, %1698 ; [#uses=1]
+ %1700 = fdiv float %1699, %timeStep ; [#uses=2]
+ %1701 = fsub float %1679, %1664 ; [#uses=1]
+ %1702 = fsub float %1684, %1669 ; [#uses=1]
+ %1703 = fsub float %1689, %1674 ; [#uses=1]
+ %1704 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 0 ; [#uses=1]
+ %1705 = load float* %1704, align 4 ; [#uses=2]
+ %1706 = fmul float %1703, %1705 ; [#uses=1]
+ %1707 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 1 ; [#uses=1]
+ %1708 = load float* %1707, align 4 ; [#uses=2]
+ %1709 = fmul float %1702, %1708 ; [#uses=1]
+ %1710 = fadd float %1706, %1709 ; [#uses=1]
+ %1711 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 2 ; [#uses=1]
+ %1712 = load float* %1711, align 4 ; [#uses=2]
+ %1713 = fmul float %1701, %1712 ; [#uses=1]
+ %1714 = fadd float %1710, %1713 ; [#uses=2]
+ %1715 = fcmp ogt float %1714, 0.000000e+00 ; [#uses=1]
+ br i1 %1715, label %bb74, label %bb75
+
+bb74: ; preds = %bb65
+ %1716 = fmul float %1693, %1714 ; [#uses=1]
+ %1717 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ %1718 = load float* %1717, align 4 ; [#uses=1]
+ %1719 = fmul float %1716, %1718 ; [#uses=1]
+ %1720 = fadd float %1719, %1700 ; [#uses=1]
+ br label %bb75
+
+bb75: ; preds = %bb74, %bb65
+ %amplitude.0 = phi float [ %1720, %bb74 ], [ %1700, %bb65 ] ; [#uses=1]
+ %1721 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 14 ; [#uses=1]
+ %1722 = load float* %1721, align 4 ; [#uses=1]
+ %1723 = fmul float %1722, %amplitude.0 ; [#uses=1]
+ %1724 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 20 ; [#uses=2]
+ %1725 = load float* %1724, align 4 ; [#uses=2]
+ %1726 = fadd float %1725, %1723 ; [#uses=2]
+ %1727 = fcmp ogt float %1726, 0.000000e+00 ; [#uses=1]
+ %1728 = select i1 %1727, float %1726, float 0.000000e+00 ; [#uses=2]
+ store float %1728, float* %1724, align 4
+ %1729 = fsub float %1728, %1725 ; [#uses=3]
+ %1730 = fmul float %1712, %1729 ; [#uses=2]
+ %1731 = fmul float %1708, %1729 ; [#uses=2]
+ %1732 = fmul float %1705, %1729 ; [#uses=2]
+ %1733 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 28, i32 0, i32 0 ; [#uses=1]
+ %1734 = load float* %1733, align 4 ; [#uses=2]
+ %1735 = fmul float %1732, %1734 ; [#uses=1]
+ %1736 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 28, i32 0, i32 1 ; [#uses=1]
+ %1737 = load float* %1736, align 4 ; [#uses=2]
+ %1738 = fmul float %1731, %1737 ; [#uses=1]
+ %1739 = fadd float %1735, %1738 ; [#uses=1]
+ %1740 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 28, i32 0, i32 2 ; [#uses=1]
+ %1741 = load float* %1740, align 4 ; [#uses=2]
+ %1742 = fmul float %1730, %1741 ; [#uses=1]
+ %1743 = fadd float %1739, %1742 ; [#uses=3]
+ %1744 = fmul float %1741, %1743 ; [#uses=1]
+ %1745 = fmul float %1737, %1743 ; [#uses=1]
+ %1746 = fmul float %1734, %1743 ; [#uses=1]
+ %1747 = fsub float %1730, %1744 ; [#uses=3]
+ %1748 = fsub float %1731, %1745 ; [#uses=3]
+ %1749 = fsub float %1732, %1746 ; [#uses=3]
+ %1750 = fmul float %1749, %1749 ; [#uses=1]
+ %1751 = fmul float %1748, %1748 ; [#uses=1]
+ %1752 = fadd float %1750, %1751 ; [#uses=1]
+ %1753 = fmul float %1747, %1747 ; [#uses=1]
+ %1754 = fadd float %1752, %1753 ; [#uses=1]
+ %1755 = call float @sqrtf(float %1754) nounwind readonly ; [#uses=7]
+ %1756 = fdiv float 1.000000e+00, %1755 ; [#uses=3]
+ %1757 = fmul float %1747, %1756 ; [#uses=6]
+ %1758 = fmul float %1748, %1756 ; [#uses=6]
+ %1759 = fmul float %1749, %1756 ; [#uses=6]
+ %1760 = load %struct.btRigidBody** %2, align 4 ; [#uses=9]
+ %1761 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 4 ; [#uses=1]
+ %1762 = load float* %1761, align 4 ; [#uses=1]
+ %1763 = fcmp une float %1762, 0.000000e+00 ; [#uses=1]
+ br i1 %1763, label %bb.i99, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit101
+
+bb.i99: ; preds = %bb75
+ %1764 = getelementptr inbounds %struct.btRigidBody* %1760, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1765 = getelementptr inbounds %struct.btRigidBody* %1760, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1766 = getelementptr inbounds %struct.btRigidBody* %1760, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1767 = getelementptr inbounds %struct.btRigidBody* %1760, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1768 = getelementptr inbounds %struct.btRigidBody* %1760, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1769 = getelementptr inbounds %struct.btRigidBody* %1760, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1770 = getelementptr inbounds %struct.btRigidBody* %1760, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1771 = load float* %1764, align 4 ; [#uses=1]
+ %1772 = load float* %1765, align 4 ; [#uses=1]
+ %1773 = getelementptr inbounds %struct.btRigidBody* %1760, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1774 = load float* %1766, align 4 ; [#uses=1]
+ %1775 = load float* %1767, align 4 ; [#uses=1]
+ %1776 = getelementptr inbounds %struct.btRigidBody* %1760, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1777 = load float* %1768, align 4 ; [#uses=1]
+ %1778 = load float* %1769, align 4 ; [#uses=1]
+ %1779 = load float* %1770, align 4 ; [#uses=1]
+ %1780 = fmul float %1771, %1758 ; [#uses=1]
+ %1781 = fmul float %1772, %1759 ; [#uses=1]
+ %1782 = load float* %1773, align 4 ; [#uses=1]
+ %1783 = fmul float %1774, %1758 ; [#uses=1]
+ %1784 = fmul float %1775, %1759 ; [#uses=1]
+ %1785 = load float* %1776, align 4 ; [#uses=1]
+ %1786 = fmul float %1777, %1758 ; [#uses=1]
+ %1787 = fmul float %1778, %1759 ; [#uses=1]
+ %1788 = fmul float %1779, %1757 ; [#uses=1]
+ %1789 = fadd float %1781, %1780 ; [#uses=1]
+ %1790 = fmul float %1782, %1757 ; [#uses=1]
+ %1791 = fadd float %1784, %1783 ; [#uses=1]
+ %1792 = fmul float %1785, %1757 ; [#uses=1]
+ %1793 = fadd float %1787, %1786 ; [#uses=1]
+ %1794 = fadd float %1789, %1788 ; [#uses=1]
+ %1795 = fadd float %1791, %1790 ; [#uses=1]
+ %1796 = fadd float %1793, %1792 ; [#uses=1]
+ %1797 = fmul float %1755, 0.000000e+00 ; [#uses=3]
+ %1798 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %1799 = load float* %1798, align 4 ; [#uses=1]
+ %1800 = fadd float %1799, %1797 ; [#uses=1]
+ store float %1800, float* %1798, align 4
+ %1801 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %1802 = load float* %1801, align 4 ; [#uses=1]
+ %1803 = fadd float %1802, %1797 ; [#uses=1]
+ store float %1803, float* %1801, align 4
+ %1804 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %1805 = load float* %1804, align 4 ; [#uses=1]
+ %1806 = fadd float %1805, %1797 ; [#uses=1]
+ store float %1806, float* %1804, align 4
+ %1807 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %1808 = load float* %1807, align 4 ; [#uses=1]
+ %1809 = fmul float %1808, %1755 ; [#uses=1]
+ %1810 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %1811 = load float* %1810, align 4 ; [#uses=1]
+ %1812 = fmul float %1811, %1755 ; [#uses=1]
+ %1813 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %1814 = load float* %1813, align 4 ; [#uses=1]
+ %1815 = fmul float %1814, %1755 ; [#uses=1]
+ %1816 = fmul float %1796, %1809 ; [#uses=1]
+ %1817 = fmul float %1795, %1812 ; [#uses=1]
+ %1818 = fmul float %1794, %1815 ; [#uses=1]
+ %1819 = load float* %1672, align 4 ; [#uses=1]
+ %1820 = fadd float %1819, %1818 ; [#uses=1]
+ store float %1820, float* %1672, align 4
+ %1821 = load float* %1667, align 4 ; [#uses=1]
+ %1822 = fadd float %1821, %1817 ; [#uses=1]
+ store float %1822, float* %1667, align 4
+ %1823 = load float* %1662, align 4 ; [#uses=1]
+ %1824 = fadd float %1823, %1816 ; [#uses=1]
+ store float %1824, float* %1662, align 4
+ br label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit101
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit101: ; preds = %bb.i99, %bb75
+ %1825 = fsub float -0.000000e+00, %1755 ; [#uses=3]
+ %1826 = load %struct.btRigidBody** %52, align 4 ; [#uses=9]
+ %1827 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 4 ; [#uses=1]
+ %1828 = load float* %1827, align 4 ; [#uses=1]
+ %1829 = fcmp une float %1828, 0.000000e+00 ; [#uses=1]
+ br i1 %1829, label %bb.i96, label %bb78
+
+bb.i96: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit101
+ %1830 = getelementptr inbounds %struct.btRigidBody* %1826, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1831 = getelementptr inbounds %struct.btRigidBody* %1826, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1832 = getelementptr inbounds %struct.btRigidBody* %1826, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1833 = getelementptr inbounds %struct.btRigidBody* %1826, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1834 = getelementptr inbounds %struct.btRigidBody* %1826, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1835 = getelementptr inbounds %struct.btRigidBody* %1826, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1836 = getelementptr inbounds %struct.btRigidBody* %1826, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1837 = load float* %1830, align 4 ; [#uses=1]
+ %1838 = load float* %1831, align 4 ; [#uses=1]
+ %1839 = getelementptr inbounds %struct.btRigidBody* %1826, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1840 = load float* %1832, align 4 ; [#uses=1]
+ %1841 = load float* %1833, align 4 ; [#uses=1]
+ %1842 = getelementptr inbounds %struct.btRigidBody* %1826, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1843 = load float* %1834, align 4 ; [#uses=1]
+ %1844 = load float* %1835, align 4 ; [#uses=1]
+ %1845 = load float* %1836, align 4 ; [#uses=1]
+ %1846 = fmul float %1837, %1758 ; [#uses=1]
+ %1847 = fmul float %1838, %1759 ; [#uses=1]
+ %1848 = load float* %1839, align 4 ; [#uses=1]
+ %1849 = fmul float %1840, %1758 ; [#uses=1]
+ %1850 = fmul float %1841, %1759 ; [#uses=1]
+ %1851 = load float* %1842, align 4 ; [#uses=1]
+ %1852 = fmul float %1843, %1758 ; [#uses=1]
+ %1853 = fmul float %1844, %1759 ; [#uses=1]
+ %1854 = fmul float %1845, %1757 ; [#uses=1]
+ %1855 = fadd float %1847, %1846 ; [#uses=1]
+ %1856 = fmul float %1848, %1757 ; [#uses=1]
+ %1857 = fadd float %1850, %1849 ; [#uses=1]
+ %1858 = fmul float %1851, %1757 ; [#uses=1]
+ %1859 = fadd float %1853, %1852 ; [#uses=1]
+ %1860 = fadd float %1855, %1854 ; [#uses=1]
+ %1861 = fadd float %1857, %1856 ; [#uses=1]
+ %1862 = fadd float %1859, %1858 ; [#uses=1]
+ %1863 = fmul float %1755, -0.000000e+00 ; [#uses=3]
+ %1864 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %1865 = load float* %1864, align 4 ; [#uses=1]
+ %1866 = fadd float %1865, %1863 ; [#uses=1]
+ store float %1866, float* %1864, align 4
+ %1867 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %1868 = load float* %1867, align 4 ; [#uses=1]
+ %1869 = fadd float %1868, %1863 ; [#uses=1]
+ store float %1869, float* %1867, align 4
+ %1870 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %1871 = load float* %1870, align 4 ; [#uses=1]
+ %1872 = fadd float %1871, %1863 ; [#uses=1]
+ store float %1872, float* %1870, align 4
+ %1873 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %1874 = load float* %1873, align 4 ; [#uses=1]
+ %1875 = fmul float %1874, %1825 ; [#uses=1]
+ %1876 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %1877 = load float* %1876, align 4 ; [#uses=1]
+ %1878 = fmul float %1877, %1825 ; [#uses=1]
+ %1879 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %1880 = load float* %1879, align 4 ; [#uses=1]
+ %1881 = fmul float %1880, %1825 ; [#uses=1]
+ %1882 = fmul float %1862, %1875 ; [#uses=1]
+ %1883 = fmul float %1861, %1878 ; [#uses=1]
+ %1884 = fmul float %1860, %1881 ; [#uses=1]
+ %1885 = load float* %1687, align 4 ; [#uses=1]
+ %1886 = fadd float %1885, %1884 ; [#uses=1]
+ store float %1886, float* %1687, align 4
+ %1887 = load float* %1682, align 4 ; [#uses=1]
+ %1888 = fadd float %1887, %1883 ; [#uses=1]
+ store float %1888, float* %1682, align 4
+ %1889 = load float* %1677, align 4 ; [#uses=1]
+ %1890 = fadd float %1889, %1882 ; [#uses=1]
+ store float %1890, float* %1677, align 4
+ br label %bb78
+
+bb78: ; preds = %bb.i96, %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit101, %bb59
+ %1891 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ %1892 = load i8* %1891, align 1 ; [#uses=1]
+ %toBool79 = icmp eq i8 %1892, 0 ; [#uses=1]
+ br i1 %toBool79, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit, label %bb80
+
+bb80: ; preds = %bb78
+ %1893 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 27 ; [#uses=1]
+ %1894 = load float* %1893, align 4 ; [#uses=2]
+ %1895 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ %1896 = load float* %1895, align 4 ; [#uses=1]
+ %1897 = fmul float %1894, %1896 ; [#uses=1]
+ %1898 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ %1899 = load float* %1898, align 4 ; [#uses=1]
+ %1900 = fmul float %1897, %1899 ; [#uses=1]
+ %1901 = fdiv float %1900, %timeStep ; [#uses=2]
+ %1902 = fsub float %1679, %1664 ; [#uses=1]
+ %1903 = fsub float %1684, %1669 ; [#uses=1]
+ %1904 = fsub float %1689, %1674 ; [#uses=1]
+ %1905 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 0 ; [#uses=2]
+ %1906 = load float* %1905, align 4 ; [#uses=5]
+ %1907 = fmul float %1904, %1906 ; [#uses=1]
+ %1908 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 1 ; [#uses=2]
+ %1909 = load float* %1908, align 4 ; [#uses=5]
+ %1910 = fmul float %1903, %1909 ; [#uses=1]
+ %1911 = fadd float %1907, %1910 ; [#uses=1]
+ %1912 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 2 ; [#uses=2]
+ %1913 = load float* %1912, align 4 ; [#uses=5]
+ %1914 = fmul float %1902, %1913 ; [#uses=1]
+ %1915 = fadd float %1911, %1914 ; [#uses=2]
+ %1916 = fcmp ogt float %1915, 0.000000e+00 ; [#uses=1]
+ br i1 %1916, label %bb90, label %bb91
+
+bb90: ; preds = %bb80
+ %1917 = fmul float %1894, %1915 ; [#uses=1]
+ %1918 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ %1919 = load float* %1918, align 4 ; [#uses=1]
+ %1920 = fmul float %1917, %1919 ; [#uses=1]
+ %1921 = fadd float %1920, %1901 ; [#uses=1]
+ br label %bb91
+
+bb91: ; preds = %bb90, %bb80
+ %amplitude82.0 = phi float [ %1921, %bb90 ], [ %1901, %bb80 ] ; [#uses=1]
+ %1922 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 15 ; [#uses=1]
+ %1923 = load float* %1922, align 4 ; [#uses=1]
+ %1924 = fmul float %1923, %amplitude82.0 ; [#uses=1]
+ %1925 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 21 ; [#uses=2]
+ %1926 = load float* %1925, align 4 ; [#uses=2]
+ %1927 = fadd float %1926, %1924 ; [#uses=2]
+ %1928 = fcmp ogt float %1927, 0.000000e+00 ; [#uses=1]
+ %1929 = select i1 %1928, float %1927, float 0.000000e+00 ; [#uses=2]
+ store float %1929, float* %1925, align 4
+ %1930 = fsub float %1929, %1926 ; [#uses=6]
+ %1931 = load %struct.btRigidBody** %2, align 4 ; [#uses=9]
+ %1932 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 4 ; [#uses=1]
+ %1933 = load float* %1932, align 4 ; [#uses=1]
+ %1934 = fcmp une float %1933, 0.000000e+00 ; [#uses=1]
+ br i1 %1934, label %bb.i93, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit95
+
+bb.i93: ; preds = %bb91
+ %1935 = getelementptr inbounds %struct.btRigidBody* %1931, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1936 = getelementptr inbounds %struct.btRigidBody* %1931, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1937 = getelementptr inbounds %struct.btRigidBody* %1931, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1938 = getelementptr inbounds %struct.btRigidBody* %1931, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1939 = getelementptr inbounds %struct.btRigidBody* %1931, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1940 = getelementptr inbounds %struct.btRigidBody* %1931, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1941 = getelementptr inbounds %struct.btRigidBody* %1931, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1942 = load float* %1935, align 4 ; [#uses=1]
+ %1943 = load float* %1936, align 4 ; [#uses=1]
+ %1944 = getelementptr inbounds %struct.btRigidBody* %1931, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1945 = load float* %1937, align 4 ; [#uses=1]
+ %1946 = load float* %1938, align 4 ; [#uses=1]
+ %1947 = getelementptr inbounds %struct.btRigidBody* %1931, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1948 = load float* %1939, align 4 ; [#uses=1]
+ %1949 = load float* %1940, align 4 ; [#uses=1]
+ %1950 = load float* %1941, align 4 ; [#uses=1]
+ %1951 = fmul float %1942, %1909 ; [#uses=1]
+ %1952 = fmul float %1943, %1906 ; [#uses=1]
+ %1953 = load float* %1944, align 4 ; [#uses=1]
+ %1954 = fmul float %1945, %1909 ; [#uses=1]
+ %1955 = fmul float %1946, %1906 ; [#uses=1]
+ %1956 = load float* %1947, align 4 ; [#uses=1]
+ %1957 = fmul float %1948, %1909 ; [#uses=1]
+ %1958 = fmul float %1949, %1906 ; [#uses=1]
+ %1959 = fmul float %1950, %1913 ; [#uses=1]
+ %1960 = fadd float %1952, %1951 ; [#uses=1]
+ %1961 = fmul float %1953, %1913 ; [#uses=1]
+ %1962 = fadd float %1955, %1954 ; [#uses=1]
+ %1963 = fmul float %1956, %1913 ; [#uses=1]
+ %1964 = fadd float %1958, %1957 ; [#uses=1]
+ %1965 = fadd float %1960, %1959 ; [#uses=1]
+ %1966 = fadd float %1962, %1961 ; [#uses=1]
+ %1967 = fadd float %1964, %1963 ; [#uses=1]
+ %1968 = fmul float %1930, 0.000000e+00 ; [#uses=3]
+ %1969 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %1970 = load float* %1969, align 4 ; [#uses=1]
+ %1971 = fadd float %1970, %1968 ; [#uses=1]
+ store float %1971, float* %1969, align 4
+ %1972 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %1973 = load float* %1972, align 4 ; [#uses=1]
+ %1974 = fadd float %1973, %1968 ; [#uses=1]
+ store float %1974, float* %1972, align 4
+ %1975 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %1976 = load float* %1975, align 4 ; [#uses=1]
+ %1977 = fadd float %1976, %1968 ; [#uses=1]
+ store float %1977, float* %1975, align 4
+ %1978 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %1979 = load float* %1978, align 4 ; [#uses=1]
+ %1980 = fmul float %1979, %1930 ; [#uses=1]
+ %1981 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %1982 = load float* %1981, align 4 ; [#uses=1]
+ %1983 = fmul float %1982, %1930 ; [#uses=1]
+ %1984 = getelementptr inbounds %struct.btRigidBody* %bodyA, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %1985 = load float* %1984, align 4 ; [#uses=1]
+ %1986 = fmul float %1985, %1930 ; [#uses=1]
+ %1987 = fmul float %1967, %1980 ; [#uses=1]
+ %1988 = fmul float %1966, %1983 ; [#uses=1]
+ %1989 = fmul float %1965, %1986 ; [#uses=1]
+ %1990 = load float* %1672, align 4 ; [#uses=1]
+ %1991 = fadd float %1990, %1989 ; [#uses=1]
+ store float %1991, float* %1672, align 4
+ %1992 = load float* %1667, align 4 ; [#uses=1]
+ %1993 = fadd float %1992, %1988 ; [#uses=1]
+ store float %1993, float* %1667, align 4
+ %1994 = load float* %1662, align 4 ; [#uses=1]
+ %1995 = fadd float %1994, %1987 ; [#uses=1]
+ store float %1995, float* %1662, align 4
+ %.pre435 = load float* %1905, align 4 ; [#uses=1]
+ %.pre436 = load float* %1908, align 4 ; [#uses=1]
+ %.pre437 = load float* %1912, align 4 ; [#uses=1]
+ br label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit95
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit95: ; preds = %bb.i93, %bb91
+ %1996 = phi float [ %.pre437, %bb.i93 ], [ %1913, %bb91 ] ; [#uses=3]
+ %1997 = phi float [ %.pre436, %bb.i93 ], [ %1909, %bb91 ] ; [#uses=3]
+ %1998 = phi float [ %.pre435, %bb.i93 ], [ %1906, %bb91 ] ; [#uses=3]
+ %1999 = fsub float -0.000000e+00, %1930 ; [#uses=3]
+ %2000 = load %struct.btRigidBody** %52, align 4 ; [#uses=9]
+ %2001 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 4 ; [#uses=1]
+ %2002 = load float* %2001, align 4 ; [#uses=1]
+ %2003 = fcmp une float %2002, 0.000000e+00 ; [#uses=1]
+ br i1 %2003, label %bb.i, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit
+
+bb.i: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit95
+ %2004 = getelementptr inbounds %struct.btRigidBody* %2000, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %2005 = getelementptr inbounds %struct.btRigidBody* %2000, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2006 = getelementptr inbounds %struct.btRigidBody* %2000, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %2007 = getelementptr inbounds %struct.btRigidBody* %2000, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %2008 = getelementptr inbounds %struct.btRigidBody* %2000, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %2009 = getelementptr inbounds %struct.btRigidBody* %2000, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %2010 = getelementptr inbounds %struct.btRigidBody* %2000, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %2011 = load float* %2004, align 4 ; [#uses=1]
+ %2012 = load float* %2005, align 4 ; [#uses=1]
+ %2013 = getelementptr inbounds %struct.btRigidBody* %2000, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %2014 = load float* %2006, align 4 ; [#uses=1]
+ %2015 = load float* %2007, align 4 ; [#uses=1]
+ %2016 = getelementptr inbounds %struct.btRigidBody* %2000, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %2017 = load float* %2008, align 4 ; [#uses=1]
+ %2018 = load float* %2009, align 4 ; [#uses=1]
+ %2019 = load float* %2010, align 4 ; [#uses=1]
+ %2020 = fmul float %2011, %1997 ; [#uses=1]
+ %2021 = fmul float %2012, %1998 ; [#uses=1]
+ %2022 = load float* %2013, align 4 ; [#uses=1]
+ %2023 = fmul float %2014, %1997 ; [#uses=1]
+ %2024 = fmul float %2015, %1998 ; [#uses=1]
+ %2025 = load float* %2016, align 4 ; [#uses=1]
+ %2026 = fmul float %2017, %1997 ; [#uses=1]
+ %2027 = fmul float %2018, %1998 ; [#uses=1]
+ %2028 = fmul float %2019, %1996 ; [#uses=1]
+ %2029 = fadd float %2021, %2020 ; [#uses=1]
+ %2030 = fmul float %2022, %1996 ; [#uses=1]
+ %2031 = fadd float %2024, %2023 ; [#uses=1]
+ %2032 = fmul float %2025, %1996 ; [#uses=1]
+ %2033 = fadd float %2027, %2026 ; [#uses=1]
+ %2034 = fadd float %2029, %2028 ; [#uses=1]
+ %2035 = fadd float %2031, %2030 ; [#uses=1]
+ %2036 = fadd float %2033, %2032 ; [#uses=1]
+ %2037 = fmul float %1930, -0.000000e+00 ; [#uses=3]
+ %2038 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %2039 = load float* %2038, align 4 ; [#uses=1]
+ %2040 = fadd float %2039, %2037 ; [#uses=1]
+ store float %2040, float* %2038, align 4
+ %2041 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %2042 = load float* %2041, align 4 ; [#uses=1]
+ %2043 = fadd float %2042, %2037 ; [#uses=1]
+ store float %2043, float* %2041, align 4
+ %2044 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %2045 = load float* %2044, align 4 ; [#uses=1]
+ %2046 = fadd float %2045, %2037 ; [#uses=1]
+ store float %2046, float* %2044, align 4
+ %2047 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %2048 = load float* %2047, align 4 ; [#uses=1]
+ %2049 = fmul float %2048, %1999 ; [#uses=1]
+ %2050 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %2051 = load float* %2050, align 4 ; [#uses=1]
+ %2052 = fmul float %2051, %1999 ; [#uses=1]
+ %2053 = getelementptr inbounds %struct.btRigidBody* %bodyB, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %2054 = load float* %2053, align 4 ; [#uses=1]
+ %2055 = fmul float %2054, %1999 ; [#uses=1]
+ %2056 = fmul float %2036, %2049 ; [#uses=1]
+ %2057 = fmul float %2035, %2052 ; [#uses=1]
+ %2058 = fmul float %2034, %2055 ; [#uses=1]
+ %2059 = load float* %1687, align 4 ; [#uses=1]
+ %2060 = fadd float %2059, %2058 ; [#uses=1]
+ store float %2060, float* %1687, align 4
+ %2061 = load float* %1682, align 4 ; [#uses=1]
+ %2062 = fadd float %2061, %2057 ; [#uses=1]
+ store float %2062, float* %1682, align 4
+ %2063 = load float* %1677, align 4 ; [#uses=1]
+ %2064 = fadd float %2063, %2056 ; [#uses=1]
+ store float %2064, float* %1677, align 4
+ ret void
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit95, %bb78, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZNK21btConeTwistConstraint33adjustSwingAxisToUseEllipseNormalER9btVector3(%struct.btConeTwistConstraint* nocapture %this, %struct.btQuadWord* nocapture %vSwingAxis) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %vSwingAxis, i32 0, i32 0, i32 2 ; [#uses=3]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = fsub float -0.000000e+00, %1 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btQuadWord* %vSwingAxis, i32 0, i32 0, i32 1 ; [#uses=3]
+ %4 = load float* %3, align 4 ; [#uses=7]
+ %5 = tail call float @fabsf(float %4) nounwind readnone ; [#uses=1]
+ %6 = fcmp ogt float %5, 0x3E80000000000000 ; [#uses=1]
+ br i1 %6, label %bb, label %return
+
+bb: ; preds = %entry
+ %7 = fdiv float %2, %4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fdiv float %9, %11 ; [#uses=1]
+ %13 = fmul float %12, %7 ; [#uses=1]
+ %14 = fcmp ogt float %2, 0.000000e+00 ; [#uses=1]
+ %15 = fmul float %13, %4 ; [#uses=1]
+ %16 = tail call float @fabsf(float %15) nounwind readnone ; [#uses=2]
+ br i1 %14, label %bb3, label %bb2
+
+bb2: ; preds = %bb
+ %17 = fsub float -0.000000e+00, %16 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb
+ %y.0 = phi float [ %17, %bb2 ], [ %16, %bb ] ; [#uses=3]
+ %18 = fsub float -0.000000e+00, %y.0 ; [#uses=2]
+ store float %18, float* %0, align 4
+ store float %4, float* %3, align 4
+ %19 = getelementptr inbounds %struct.btQuadWord* %vSwingAxis, i32 0, i32 0, i32 0 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ %21 = fmul float %20, %20 ; [#uses=1]
+ %22 = fmul float %4, %4 ; [#uses=1]
+ %23 = fadd float %21, %22 ; [#uses=1]
+ %24 = fmul float %y.0, %y.0 ; [#uses=1]
+ %25 = fadd float %23, %24 ; [#uses=1]
+ %26 = tail call float @sqrtf(float %25) nounwind readonly ; [#uses=1]
+ %27 = fdiv float 1.000000e+00, %26 ; [#uses=3]
+ %28 = fmul float %20, %27 ; [#uses=1]
+ store float %28, float* %19, align 4
+ %29 = fmul float %4, %27 ; [#uses=1]
+ store float %29, float* %3, align 4
+ %30 = fmul float %27, %18 ; [#uses=1]
+ store float %30, float* %0, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btConeTwistConstraint13calcAngleInfoEv(%struct.btConeTwistConstraint* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 17 ; [#uses=2]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 23 ; [#uses=3]
+ store i8 0, i8* %2, align 1
+ %3 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 24 ; [#uses=2]
+ store i8 0, i8* %3, align 2
+ %4 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = load float* %5, align 4 ; [#uses=3]
+ %9 = load float* %4, align 4 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %11 = load %struct.btRigidBody** %10, align 4 ; [#uses=9]
+ %12 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = fmul float %13, %7 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=3]
+ %17 = fmul float %16, %8 ; [#uses=1]
+ %18 = fadd float %14, %17 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ %21 = fmul float %20, %9 ; [#uses=1]
+ %22 = fadd float %18, %21 ; [#uses=8]
+ %23 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=3]
+ %25 = fmul float %24, %7 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=3]
+ %28 = fmul float %27, %8 ; [#uses=1]
+ %29 = fadd float %25, %28 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=3]
+ %32 = fmul float %31, %9 ; [#uses=1]
+ %33 = fadd float %29, %32 ; [#uses=8]
+ %34 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=3]
+ %36 = fmul float %35, %7 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=3]
+ %39 = fmul float %38, %8 ; [#uses=1]
+ %40 = fadd float %36, %39 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=3]
+ %43 = fmul float %42, %9 ; [#uses=1]
+ %44 = fadd float %40, %43 ; [#uses=8]
+ %45 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=3]
+ %49 = load float* %46, align 4 ; [#uses=3]
+ %50 = load float* %45, align 4 ; [#uses=3]
+ %51 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %52 = load %struct.btRigidBody** %51, align 4 ; [#uses=9]
+ %53 = getelementptr inbounds %struct.btRigidBody* %52, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = fmul float %54, %48 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btRigidBody* %52, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = fmul float %57, %49 ; [#uses=1]
+ %59 = fadd float %55, %58 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btRigidBody* %52, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fmul float %61, %50 ; [#uses=1]
+ %63 = fadd float %59, %62 ; [#uses=18]
+ %64 = getelementptr inbounds %struct.btRigidBody* %52, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ %66 = fmul float %65, %48 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btRigidBody* %52, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = fmul float %68, %49 ; [#uses=1]
+ %70 = fadd float %66, %69 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btRigidBody* %52, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fmul float %72, %50 ; [#uses=1]
+ %74 = fadd float %70, %73 ; [#uses=20]
+ %75 = getelementptr inbounds %struct.btRigidBody* %52, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ %77 = fmul float %76, %48 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btRigidBody* %52, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = fmul float %79, %49 ; [#uses=1]
+ %81 = fadd float %77, %80 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btRigidBody* %52, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = fmul float %83, %50 ; [#uses=1]
+ %85 = fadd float %81, %84 ; [#uses=17]
+ %86 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=3]
+ %88 = fcmp ult float %87, 0x3FA99999A0000000 ; [#uses=1]
+ br i1 %88, label %bb3, label %bb
+
+bb: ; preds = %entry
+ %89 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=3]
+ %93 = load float* %90, align 4 ; [#uses=3]
+ %94 = load float* %89, align 4 ; [#uses=3]
+ %95 = fmul float %13, %92 ; [#uses=1]
+ %96 = fmul float %16, %93 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %20, %94 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=2]
+ %100 = fmul float %24, %92 ; [#uses=1]
+ %101 = fmul float %27, %93 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fmul float %31, %94 ; [#uses=1]
+ %104 = fadd float %102, %103 ; [#uses=2]
+ %105 = fmul float %35, %92 ; [#uses=1]
+ %106 = fmul float %38, %93 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = fmul float %42, %94 ; [#uses=1]
+ %109 = fadd float %107, %108 ; [#uses=2]
+ %110 = fmul float %85, %44 ; [#uses=1]
+ %111 = fmul float %74, %33 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=1]
+ %113 = fmul float %63, %22 ; [#uses=1]
+ %114 = fadd float %112, %113 ; [#uses=7]
+ %115 = fmul float %85, %109 ; [#uses=1]
+ %116 = fmul float %74, %104 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=1]
+ %118 = fmul float %63, %99 ; [#uses=1]
+ %119 = fadd float %117, %118 ; [#uses=4]
+ %120 = tail call float @fabsf(float %119) nounwind readnone ; [#uses=4]
+ %121 = fcmp ult float %114, 0.000000e+00 ; [#uses=1]
+ br i1 %121, label %bb1.i40, label %bb.i39
+
+bb.i39: ; preds = %bb
+ %122 = fsub float %114, %120 ; [#uses=1]
+ %123 = fadd float %120, %114 ; [#uses=1]
+ %124 = fdiv float %122, %123 ; [#uses=1]
+ %125 = fmul float %124, 0x3FE921FB60000000 ; [#uses=1]
+ %126 = fsub float 0x3FE921FB60000000, %125 ; [#uses=1]
+ br label %bb3.i42
+
+bb1.i40: ; preds = %bb
+ %127 = fadd float %120, %114 ; [#uses=1]
+ %128 = fsub float %120, %114 ; [#uses=1]
+ %129 = fdiv float %127, %128 ; [#uses=1]
+ %130 = fmul float %129, 0x3FE921FB60000000 ; [#uses=1]
+ %131 = fsub float 0x4002D97C80000000, %130 ; [#uses=1]
+ br label %bb3.i42
+
+bb3.i42: ; preds = %bb1.i40, %bb.i39
+ %angle.0.i41 = phi float [ %126, %bb.i39 ], [ %131, %bb1.i40 ] ; [#uses=2]
+ %132 = fcmp olt float %119, 0.000000e+00 ; [#uses=1]
+ br i1 %132, label %bb4.i43, label %_Z11btAtan2Fastff.exit45
+
+bb4.i43: ; preds = %bb3.i42
+ %133 = fsub float -0.000000e+00, %angle.0.i41 ; [#uses=1]
+ br label %_Z11btAtan2Fastff.exit45
+
+_Z11btAtan2Fastff.exit45: ; preds = %bb4.i43, %bb3.i42
+ %134 = phi float [ %133, %bb4.i43 ], [ %angle.0.i41, %bb3.i42 ] ; [#uses=1]
+ %135 = fmul float %119, %119 ; [#uses=1]
+ %136 = fmul float %114, %114 ; [#uses=1]
+ %137 = fadd float %135, %136 ; [#uses=1]
+ %138 = fmul float %137, 1.000000e+01 ; [#uses=1]
+ %139 = fmul float %138, 1.000000e+01 ; [#uses=2]
+ %140 = fadd float %139, 1.000000e+00 ; [#uses=1]
+ %141 = fdiv float %139, %140 ; [#uses=1]
+ %142 = fmul float %134, %141 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %_Z11btAtan2Fastff.exit45, %entry
+ %b1Axis2.0.0.0 = phi float [ undef, %entry ], [ %109, %_Z11btAtan2Fastff.exit45 ] ; [#uses=3]
+ %b1Axis2.0.1.0 = phi float [ undef, %entry ], [ %104, %_Z11btAtan2Fastff.exit45 ] ; [#uses=3]
+ %b1Axis2.0.2.0 = phi float [ undef, %entry ], [ %99, %_Z11btAtan2Fastff.exit45 ] ; [#uses=3]
+ %swing1.0 = phi float [ 0.000000e+00, %entry ], [ %142, %_Z11btAtan2Fastff.exit45 ] ; [#uses=2]
+ %143 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %144 = load float* %143, align 4 ; [#uses=3]
+ %145 = fcmp ult float %144, 0x3FA99999A0000000 ; [#uses=1]
+ br i1 %145, label %bb6, label %bb4
+
+bb4: ; preds = %bb3
+ %146 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %149 = load float* %148, align 4 ; [#uses=3]
+ %150 = load float* %147, align 4 ; [#uses=3]
+ %151 = load float* %146, align 4 ; [#uses=3]
+ %152 = fmul float %13, %149 ; [#uses=1]
+ %153 = fmul float %16, %150 ; [#uses=1]
+ %154 = fadd float %152, %153 ; [#uses=1]
+ %155 = fmul float %20, %151 ; [#uses=1]
+ %156 = fadd float %154, %155 ; [#uses=2]
+ %157 = fmul float %24, %149 ; [#uses=1]
+ %158 = fmul float %27, %150 ; [#uses=1]
+ %159 = fadd float %157, %158 ; [#uses=1]
+ %160 = fmul float %31, %151 ; [#uses=1]
+ %161 = fadd float %159, %160 ; [#uses=2]
+ %162 = fmul float %35, %149 ; [#uses=1]
+ %163 = fmul float %38, %150 ; [#uses=1]
+ %164 = fadd float %162, %163 ; [#uses=1]
+ %165 = fmul float %42, %151 ; [#uses=1]
+ %166 = fadd float %164, %165 ; [#uses=2]
+ %167 = fmul float %85, %44 ; [#uses=1]
+ %168 = fmul float %74, %33 ; [#uses=1]
+ %169 = fadd float %167, %168 ; [#uses=1]
+ %170 = fmul float %63, %22 ; [#uses=1]
+ %171 = fadd float %169, %170 ; [#uses=7]
+ %172 = fmul float %85, %166 ; [#uses=1]
+ %173 = fmul float %74, %161 ; [#uses=1]
+ %174 = fadd float %172, %173 ; [#uses=1]
+ %175 = fmul float %63, %156 ; [#uses=1]
+ %176 = fadd float %174, %175 ; [#uses=4]
+ %177 = tail call float @fabsf(float %176) nounwind readnone ; [#uses=4]
+ %178 = fcmp ult float %171, 0.000000e+00 ; [#uses=1]
+ br i1 %178, label %bb1.i33, label %bb.i32
+
+bb.i32: ; preds = %bb4
+ %179 = fsub float %171, %177 ; [#uses=1]
+ %180 = fadd float %177, %171 ; [#uses=1]
+ %181 = fdiv float %179, %180 ; [#uses=1]
+ %182 = fmul float %181, 0x3FE921FB60000000 ; [#uses=1]
+ %183 = fsub float 0x3FE921FB60000000, %182 ; [#uses=1]
+ br label %bb3.i35
+
+bb1.i33: ; preds = %bb4
+ %184 = fadd float %177, %171 ; [#uses=1]
+ %185 = fsub float %177, %171 ; [#uses=1]
+ %186 = fdiv float %184, %185 ; [#uses=1]
+ %187 = fmul float %186, 0x3FE921FB60000000 ; [#uses=1]
+ %188 = fsub float 0x4002D97C80000000, %187 ; [#uses=1]
+ br label %bb3.i35
+
+bb3.i35: ; preds = %bb1.i33, %bb.i32
+ %angle.0.i34 = phi float [ %183, %bb.i32 ], [ %188, %bb1.i33 ] ; [#uses=2]
+ %189 = fcmp olt float %176, 0.000000e+00 ; [#uses=1]
+ br i1 %189, label %bb4.i36, label %_Z11btAtan2Fastff.exit38
+
+bb4.i36: ; preds = %bb3.i35
+ %190 = fsub float -0.000000e+00, %angle.0.i34 ; [#uses=1]
+ br label %_Z11btAtan2Fastff.exit38
+
+_Z11btAtan2Fastff.exit38: ; preds = %bb4.i36, %bb3.i35
+ %191 = phi float [ %190, %bb4.i36 ], [ %angle.0.i34, %bb3.i35 ] ; [#uses=1]
+ %192 = fmul float %176, %176 ; [#uses=1]
+ %193 = fmul float %171, %171 ; [#uses=1]
+ %194 = fadd float %192, %193 ; [#uses=1]
+ %195 = fmul float %194, 1.000000e+01 ; [#uses=1]
+ %196 = fmul float %195, 1.000000e+01 ; [#uses=2]
+ %197 = fadd float %196, 1.000000e+00 ; [#uses=1]
+ %198 = fdiv float %196, %197 ; [#uses=1]
+ %199 = fmul float %191, %198 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %_Z11btAtan2Fastff.exit38, %bb3
+ %b1Axis3.0.0.0 = phi float [ undef, %bb3 ], [ %166, %_Z11btAtan2Fastff.exit38 ] ; [#uses=3]
+ %b1Axis3.0.1.0 = phi float [ undef, %bb3 ], [ %161, %_Z11btAtan2Fastff.exit38 ] ; [#uses=3]
+ %b1Axis3.0.2.0 = phi float [ undef, %bb3 ], [ %156, %_Z11btAtan2Fastff.exit38 ] ; [#uses=3]
+ %swing2.0 = phi float [ 0.000000e+00, %bb3 ], [ %199, %_Z11btAtan2Fastff.exit38 ] ; [#uses=2]
+ %200 = fmul float %87, %87 ; [#uses=1]
+ %201 = fdiv float 1.000000e+00, %200 ; [#uses=1]
+ %202 = fmul float %144, %144 ; [#uses=1]
+ %203 = fdiv float 1.000000e+00, %202 ; [#uses=1]
+ %204 = fmul float %swing1.0, %swing1.0 ; [#uses=1]
+ %205 = tail call float @fabsf(float %204) nounwind readnone ; [#uses=1]
+ %206 = fmul float %205, %201 ; [#uses=1]
+ %207 = fmul float %swing2.0, %swing2.0 ; [#uses=1]
+ %208 = tail call float @fabsf(float %207) nounwind readnone ; [#uses=1]
+ %209 = fmul float %208, %203 ; [#uses=1]
+ %210 = fadd float %206, %209 ; [#uses=2]
+ %211 = fcmp ogt float %210, 1.000000e+00 ; [#uses=1]
+ br i1 %211, label %bb7, label %bb13
+
+bb7: ; preds = %bb6
+ %212 = fadd float %210, -1.000000e+00 ; [#uses=1]
+ store float %212, float* %0, align 4
+ store i8 1, i8* %3, align 2
+ %213 = fmul float %85, %b1Axis3.0.0.0 ; [#uses=1]
+ %214 = fmul float %74, %b1Axis3.0.1.0 ; [#uses=1]
+ %215 = fadd float %213, %214 ; [#uses=1]
+ %216 = fmul float %63, %b1Axis3.0.2.0 ; [#uses=1]
+ %217 = fadd float %215, %216 ; [#uses=3]
+ %218 = fmul float %b1Axis3.0.2.0, %217 ; [#uses=1]
+ %219 = fmul float %b1Axis3.0.1.0, %217 ; [#uses=1]
+ %220 = fmul float %b1Axis3.0.0.0, %217 ; [#uses=1]
+ %221 = fmul float %85, %b1Axis2.0.0.0 ; [#uses=1]
+ %222 = fmul float %74, %b1Axis2.0.1.0 ; [#uses=1]
+ %223 = fadd float %221, %222 ; [#uses=1]
+ %224 = fmul float %63, %b1Axis2.0.2.0 ; [#uses=1]
+ %225 = fadd float %223, %224 ; [#uses=3]
+ %226 = fmul float %b1Axis2.0.2.0, %225 ; [#uses=1]
+ %227 = fmul float %b1Axis2.0.1.0, %225 ; [#uses=1]
+ %228 = fmul float %b1Axis2.0.0.0, %225 ; [#uses=1]
+ %229 = fadd float %226, %218 ; [#uses=2]
+ %230 = fadd float %227, %219 ; [#uses=2]
+ %231 = fadd float %228, %220 ; [#uses=2]
+ %232 = fmul float %85, %230 ; [#uses=1]
+ %233 = fmul float %74, %231 ; [#uses=1]
+ %234 = fsub float %232, %233 ; [#uses=4]
+ %235 = fmul float %63, %231 ; [#uses=1]
+ %236 = fmul float %85, %229 ; [#uses=1]
+ %237 = fsub float %235, %236 ; [#uses=4]
+ %238 = fmul float %74, %229 ; [#uses=1]
+ %239 = fmul float %63, %230 ; [#uses=1]
+ %240 = fsub float %238, %239 ; [#uses=4]
+ %241 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 0 ; [#uses=2]
+ store float %240, float* %241, align 4
+ %242 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 1 ; [#uses=2]
+ store float %237, float* %242, align 4
+ %243 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 2 ; [#uses=2]
+ store float %234, float* %243, align 4
+ %244 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %244, align 4
+ %245 = fmul float %240, %240 ; [#uses=1]
+ %246 = fmul float %237, %237 ; [#uses=1]
+ %247 = fadd float %245, %246 ; [#uses=1]
+ %248 = fmul float %234, %234 ; [#uses=1]
+ %249 = fadd float %247, %248 ; [#uses=1]
+ %250 = tail call float @sqrtf(float %249) nounwind readonly ; [#uses=1]
+ %251 = fdiv float 1.000000e+00, %250 ; [#uses=3]
+ %252 = fmul float %240, %251 ; [#uses=1]
+ %253 = fmul float %237, %251 ; [#uses=1]
+ %254 = fmul float %234, %251 ; [#uses=1]
+ %255 = fmul float %85, %44 ; [#uses=1]
+ %256 = fmul float %74, %33 ; [#uses=1]
+ %257 = fadd float %255, %256 ; [#uses=1]
+ %258 = fmul float %63, %22 ; [#uses=1]
+ %259 = fadd float %257, %258 ; [#uses=1]
+ %260 = fcmp ult float %259, 0.000000e+00 ; [#uses=1]
+ %iftmp.206.0 = select i1 %260, float -1.000000e+00, float 1.000000e+00 ; [#uses=3]
+ %261 = fmul float %252, %iftmp.206.0 ; [#uses=1]
+ store float %261, float* %241, align 4
+ %262 = fmul float %253, %iftmp.206.0 ; [#uses=1]
+ store float %262, float* %242, align 4
+ %263 = fmul float %254, %iftmp.206.0 ; [#uses=1]
+ store float %263, float* %243, align 4
+ br label %bb13
+
+bb13: ; preds = %bb7, %bb6
+ %264 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %265 = load float* %264, align 4 ; [#uses=6]
+ %266 = fcmp ult float %265, 0.000000e+00 ; [#uses=1]
+ br i1 %266, label %return, label %bb14
+
+bb14: ; preds = %bb13
+ %267 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %268 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %269 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %270 = load float* %269, align 4 ; [#uses=3]
+ %271 = load float* %268, align 4 ; [#uses=3]
+ %272 = load float* %267, align 4 ; [#uses=3]
+ %273 = load float* %53, align 4 ; [#uses=1]
+ %274 = fmul float %273, %270 ; [#uses=1]
+ %275 = load float* %56, align 4 ; [#uses=1]
+ %276 = fmul float %275, %271 ; [#uses=1]
+ %277 = fadd float %274, %276 ; [#uses=1]
+ %278 = load float* %60, align 4 ; [#uses=1]
+ %279 = fmul float %278, %272 ; [#uses=1]
+ %280 = fadd float %277, %279 ; [#uses=4]
+ %281 = load float* %64, align 4 ; [#uses=1]
+ %282 = fmul float %281, %270 ; [#uses=1]
+ %283 = load float* %67, align 4 ; [#uses=1]
+ %284 = fmul float %283, %271 ; [#uses=1]
+ %285 = fadd float %282, %284 ; [#uses=1]
+ %286 = load float* %71, align 4 ; [#uses=1]
+ %287 = fmul float %286, %272 ; [#uses=1]
+ %288 = fadd float %285, %287 ; [#uses=4]
+ %289 = load float* %75, align 4 ; [#uses=1]
+ %290 = fmul float %289, %270 ; [#uses=1]
+ %291 = load float* %78, align 4 ; [#uses=1]
+ %292 = fmul float %291, %271 ; [#uses=1]
+ %293 = fadd float %290, %292 ; [#uses=1]
+ %294 = load float* %82, align 4 ; [#uses=1]
+ %295 = fmul float %294, %272 ; [#uses=1]
+ %296 = fadd float %293, %295 ; [#uses=4]
+ %297 = fmul float %85, %44 ; [#uses=1]
+ %298 = fmul float %74, %33 ; [#uses=1]
+ %299 = fadd float %297, %298 ; [#uses=1]
+ %300 = fmul float %63, %22 ; [#uses=1]
+ %301 = fadd float %299, %300 ; [#uses=2]
+ %302 = fcmp olt float %301, 0xBFEFFFFFC0000000 ; [#uses=1]
+ br i1 %302, label %bb.i30, label %bb1.i31
+
+bb.i30: ; preds = %bb14
+ %303 = tail call float @fabsf(float %63) nounwind readnone ; [#uses=1]
+ %304 = fcmp ogt float %303, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %304, label %bb.i.i, label %bb1.i.i
+
+bb.i.i: ; preds = %bb.i30
+ %305 = fmul float %74, %74 ; [#uses=1]
+ %306 = fmul float %63, %63 ; [#uses=1]
+ %307 = fadd float %305, %306 ; [#uses=1]
+ %308 = tail call float @sqrtf(float %307) nounwind readonly ; [#uses=1]
+ %309 = fdiv float 1.000000e+00, %308 ; [#uses=2]
+ %310 = fsub float -0.000000e+00, %63 ; [#uses=1]
+ %311 = fmul float %309, %310 ; [#uses=1]
+ %312 = fmul float %74, %309 ; [#uses=1]
+ br label %_Z15shortestArcQuatRK9btVector3S1_.exit
+
+bb1.i.i: ; preds = %bb.i30
+ %313 = fmul float %85, %85 ; [#uses=1]
+ %314 = fmul float %74, %74 ; [#uses=1]
+ %315 = fadd float %313, %314 ; [#uses=1]
+ %316 = tail call float @sqrtf(float %315) nounwind readonly ; [#uses=1]
+ %317 = fdiv float 1.000000e+00, %316 ; [#uses=2]
+ %318 = fsub float -0.000000e+00, %74 ; [#uses=1]
+ %319 = fmul float %317, %318 ; [#uses=1]
+ %320 = fmul float %85, %317 ; [#uses=1]
+ br label %_Z15shortestArcQuatRK9btVector3S1_.exit
+
+bb1.i31: ; preds = %bb14
+ %321 = fmul float %63, %33 ; [#uses=1]
+ %322 = fmul float %74, %22 ; [#uses=1]
+ %323 = fmul float %85, %22 ; [#uses=1]
+ %324 = fmul float %63, %44 ; [#uses=1]
+ %325 = fmul float %74, %44 ; [#uses=1]
+ %326 = fmul float %85, %33 ; [#uses=1]
+ %327 = fsub float %322, %321 ; [#uses=1]
+ %328 = fsub float %324, %323 ; [#uses=1]
+ %329 = fsub float %326, %325 ; [#uses=1]
+ %330 = fadd float %301, 1.000000e+00 ; [#uses=1]
+ %331 = fmul float %330, 2.000000e+00 ; [#uses=1]
+ %332 = tail call float @sqrtf(float %331) nounwind readonly ; [#uses=2]
+ %333 = fdiv float 1.000000e+00, %332 ; [#uses=3]
+ %334 = fmul float %332, 5.000000e-01 ; [#uses=1]
+ %335 = fmul float %329, %333 ; [#uses=1]
+ %336 = fmul float %328, %333 ; [#uses=1]
+ %337 = fmul float %327, %333 ; [#uses=1]
+ br label %_Z15shortestArcQuatRK9btVector3S1_.exit
+
+_Z15shortestArcQuatRK9btVector3S1_.exit: ; preds = %bb1.i31, %bb1.i.i, %bb.i.i
+ %rotationArc.0.0.0.0 = phi float [ %337, %bb1.i31 ], [ 0.000000e+00, %bb.i.i ], [ %319, %bb1.i.i ] ; [#uses=3]
+ %rotationArc.0.0.1.0 = phi float [ %336, %bb1.i31 ], [ %311, %bb.i.i ], [ %320, %bb1.i.i ] ; [#uses=4]
+ %rotationArc.0.0.2.0 = phi float [ %335, %bb1.i31 ], [ %312, %bb.i.i ], [ 0.000000e+00, %bb1.i.i ] ; [#uses=4]
+ %rotationArc.0.0.3.0 = phi float [ %334, %bb1.i31 ], [ 0.000000e+00, %bb.i.i ], [ 0.000000e+00, %bb1.i.i ] ; [#uses=6]
+ %338 = fsub float -0.000000e+00, %rotationArc.0.0.0.0 ; [#uses=4]
+ %339 = fmul float %296, %338 ; [#uses=1]
+ %340 = fmul float %rotationArc.0.0.1.0, %288 ; [#uses=1]
+ %341 = fsub float %339, %340 ; [#uses=1]
+ %342 = fmul float %rotationArc.0.0.2.0, %280 ; [#uses=1]
+ %343 = fsub float %341, %342 ; [#uses=3]
+ %344 = fmul float %rotationArc.0.0.3.0, %280 ; [#uses=1]
+ %345 = fmul float %rotationArc.0.0.0.0, %288 ; [#uses=1]
+ %346 = fadd float %344, %345 ; [#uses=1]
+ %347 = fmul float %rotationArc.0.0.1.0, %296 ; [#uses=1]
+ %348 = fsub float %346, %347 ; [#uses=3]
+ %349 = fmul float %rotationArc.0.0.3.0, %288 ; [#uses=1]
+ %350 = fmul float %rotationArc.0.0.2.0, %296 ; [#uses=1]
+ %351 = fadd float %349, %350 ; [#uses=1]
+ %352 = fmul float %rotationArc.0.0.0.0, %280 ; [#uses=1]
+ %353 = fsub float %351, %352 ; [#uses=3]
+ %354 = fmul float %rotationArc.0.0.3.0, %296 ; [#uses=1]
+ %355 = fmul float %rotationArc.0.0.1.0, %280 ; [#uses=1]
+ %356 = fadd float %354, %355 ; [#uses=1]
+ %357 = fmul float %rotationArc.0.0.2.0, %288 ; [#uses=1]
+ %358 = fsub float %356, %357 ; [#uses=3]
+ %359 = fsub float -0.000000e+00, %rotationArc.0.0.2.0 ; [#uses=3]
+ %360 = fsub float -0.000000e+00, %rotationArc.0.0.1.0 ; [#uses=3]
+ %361 = fmul float %343, %359 ; [#uses=1]
+ %362 = fmul float %348, %rotationArc.0.0.3.0 ; [#uses=1]
+ %363 = fadd float %361, %362 ; [#uses=1]
+ %364 = fmul float %358, %360 ; [#uses=1]
+ %365 = fadd float %363, %364 ; [#uses=1]
+ %366 = fmul float %353, %338 ; [#uses=1]
+ %367 = fsub float %365, %366 ; [#uses=2]
+ %368 = fmul float %343, %360 ; [#uses=1]
+ %369 = fmul float %353, %rotationArc.0.0.3.0 ; [#uses=1]
+ %370 = fadd float %368, %369 ; [#uses=1]
+ %371 = fmul float %348, %338 ; [#uses=1]
+ %372 = fadd float %370, %371 ; [#uses=1]
+ %373 = fmul float %358, %359 ; [#uses=1]
+ %374 = fsub float %372, %373 ; [#uses=2]
+ %375 = fmul float %343, %338 ; [#uses=1]
+ %376 = fmul float %358, %rotationArc.0.0.3.0 ; [#uses=1]
+ %377 = fadd float %375, %376 ; [#uses=1]
+ %378 = fmul float %353, %359 ; [#uses=1]
+ %379 = fadd float %377, %378 ; [#uses=1]
+ %380 = fmul float %348, %360 ; [#uses=1]
+ %381 = fsub float %379, %380 ; [#uses=2]
+ %382 = fmul float %381, %b1Axis2.0.0.0 ; [#uses=1]
+ %383 = fmul float %374, %b1Axis2.0.1.0 ; [#uses=1]
+ %384 = fadd float %382, %383 ; [#uses=1]
+ %385 = fmul float %367, %b1Axis2.0.2.0 ; [#uses=1]
+ %386 = fadd float %384, %385 ; [#uses=5]
+ %387 = fmul float %381, %b1Axis3.0.0.0 ; [#uses=1]
+ %388 = fmul float %374, %b1Axis3.0.1.0 ; [#uses=1]
+ %389 = fadd float %387, %388 ; [#uses=1]
+ %390 = fmul float %367, %b1Axis3.0.2.0 ; [#uses=1]
+ %391 = fadd float %389, %390 ; [#uses=2]
+ %392 = tail call float @fabsf(float %391) nounwind readnone ; [#uses=4]
+ %393 = fcmp ult float %386, 0.000000e+00 ; [#uses=1]
+ br i1 %393, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %_Z15shortestArcQuatRK9btVector3S1_.exit
+ %394 = fsub float %386, %392 ; [#uses=1]
+ %395 = fadd float %392, %386 ; [#uses=1]
+ %396 = fdiv float %394, %395 ; [#uses=1]
+ %397 = fmul float %396, 0x3FE921FB60000000 ; [#uses=1]
+ %398 = fsub float 0x3FE921FB60000000, %397 ; [#uses=1]
+ br label %bb3.i
+
+bb1.i: ; preds = %_Z15shortestArcQuatRK9btVector3S1_.exit
+ %399 = fadd float %392, %386 ; [#uses=1]
+ %400 = fsub float %392, %386 ; [#uses=1]
+ %401 = fdiv float %399, %400 ; [#uses=1]
+ %402 = fmul float %401, 0x3FE921FB60000000 ; [#uses=1]
+ %403 = fsub float 0x4002D97C80000000, %402 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb1.i, %bb.i
+ %angle.0.i = phi float [ %398, %bb.i ], [ %403, %bb1.i ] ; [#uses=2]
+ %404 = fcmp olt float %391, 0.000000e+00 ; [#uses=1]
+ br i1 %404, label %bb4.i, label %_Z11btAtan2Fastff.exit
+
+bb4.i: ; preds = %bb3.i
+ %405 = fsub float -0.000000e+00, %angle.0.i ; [#uses=1]
+ br label %_Z11btAtan2Fastff.exit
+
+_Z11btAtan2Fastff.exit: ; preds = %bb4.i, %bb3.i
+ %406 = phi float [ %405, %bb4.i ], [ %angle.0.i, %bb3.i ] ; [#uses=5]
+ %407 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ store float %406, float* %407, align 4
+ %408 = fcmp ogt float %265, 0x3FA99999A0000000 ; [#uses=1]
+ %iftmp.207.0 = select i1 %408, float 1.000000e+00, float 0.000000e+00 ; [#uses=2]
+ %409 = fsub float -0.000000e+00, %265 ; [#uses=1]
+ %410 = fmul float %iftmp.207.0, %409 ; [#uses=1]
+ %411 = fcmp ult float %410, %406 ; [#uses=1]
+ br i1 %411, label %bb26, label %bb24
+
+bb24: ; preds = %_Z11btAtan2Fastff.exit
+ %412 = fadd float %265, %406 ; [#uses=1]
+ %413 = fsub float -0.000000e+00, %412 ; [#uses=1]
+ %414 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ store float %413, float* %414, align 4
+ store i8 1, i8* %2, align 1
+ %415 = fadd float %63, %22 ; [#uses=1]
+ %416 = fadd float %74, %33 ; [#uses=1]
+ %417 = fadd float %85, %44 ; [#uses=1]
+ %418 = fmul float %415, 5.000000e-01 ; [#uses=4]
+ %419 = fmul float %416, 5.000000e-01 ; [#uses=4]
+ %420 = fmul float %417, 5.000000e-01 ; [#uses=4]
+ %421 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 0 ; [#uses=2]
+ store float %420, float* %421, align 4
+ %422 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 1 ; [#uses=2]
+ store float %419, float* %422, align 4
+ %423 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 2 ; [#uses=2]
+ store float %418, float* %423, align 4
+ %424 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %424, align 4
+ %425 = fmul float %420, %420 ; [#uses=1]
+ %426 = fmul float %419, %419 ; [#uses=1]
+ %427 = fadd float %425, %426 ; [#uses=1]
+ %428 = fmul float %418, %418 ; [#uses=1]
+ %429 = fadd float %427, %428 ; [#uses=1]
+ %430 = tail call float @sqrtf(float %429) nounwind readonly ; [#uses=1]
+ %431 = fdiv float 1.000000e+00, %430 ; [#uses=3]
+ %432 = fmul float %420, %431 ; [#uses=1]
+ %433 = fmul float %419, %431 ; [#uses=1]
+ %434 = fmul float %418, %431 ; [#uses=1]
+ %435 = fmul float %432, -1.000000e+00 ; [#uses=1]
+ store float %435, float* %421, align 4
+ %436 = fmul float %433, -1.000000e+00 ; [#uses=1]
+ store float %436, float* %422, align 4
+ %437 = fmul float %434, -1.000000e+00 ; [#uses=1]
+ store float %437, float* %423, align 4
+ ret void
+
+bb26: ; preds = %_Z11btAtan2Fastff.exit
+ %438 = fmul float %265, %iftmp.207.0 ; [#uses=1]
+ %439 = fcmp olt float %438, %406 ; [#uses=1]
+ br i1 %439, label %bb27, label %return
+
+bb27: ; preds = %bb26
+ %440 = fsub float %406, %265 ; [#uses=1]
+ %441 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ store float %440, float* %441, align 4
+ store i8 1, i8* %2, align 1
+ %442 = fadd float %63, %22 ; [#uses=1]
+ %443 = fadd float %74, %33 ; [#uses=1]
+ %444 = fadd float %85, %44 ; [#uses=1]
+ %445 = fmul float %442, 5.000000e-01 ; [#uses=4]
+ %446 = fmul float %443, 5.000000e-01 ; [#uses=4]
+ %447 = fmul float %444, 5.000000e-01 ; [#uses=4]
+ %448 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 0 ; [#uses=2]
+ store float %447, float* %448, align 4
+ %449 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 1 ; [#uses=2]
+ store float %446, float* %449, align 4
+ %450 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 2 ; [#uses=2]
+ store float %445, float* %450, align 4
+ %451 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %451, align 4
+ %452 = fmul float %447, %447 ; [#uses=1]
+ %453 = fmul float %446, %446 ; [#uses=1]
+ %454 = fadd float %452, %453 ; [#uses=1]
+ %455 = fmul float %445, %445 ; [#uses=1]
+ %456 = fadd float %454, %455 ; [#uses=1]
+ %457 = tail call float @sqrtf(float %456) nounwind readonly ; [#uses=1]
+ %458 = fdiv float 1.000000e+00, %457 ; [#uses=3]
+ %459 = fmul float %447, %458 ; [#uses=1]
+ store float %459, float* %448, align 4
+ %460 = fmul float %446, %458 ; [#uses=1]
+ store float %460, float* %449, align 4
+ %461 = fmul float %445, %458 ; [#uses=1]
+ store float %461, float* %450, align 4
+ ret void
+
+return: ; preds = %bb26, %bb13
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3(%struct.btConeTwistConstraint* nocapture %this, %struct.btQuaternion* nocapture %qTwist, float* nocapture %twistAngle, %struct.btQuadWord* nocapture %vTwistAxis) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuaternion* %qTwist, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuaternion* %qTwist, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuaternion* %qTwist, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuaternion* %qTwist, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = fcmp olt float %7, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i.i = select i1 %8, float -1.000000e+00, float %7 ; [#uses=2]
+ %9 = fcmp ogt float %x_addr.0.i.i, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i.i = select i1 %9, float 1.000000e+00, float %x_addr.0.i.i ; [#uses=1]
+ %10 = tail call float @acosf(float %x_addr.1.i.i) nounwind readonly ; [#uses=1]
+ %11 = fmul float %10, 2.000000e+00 ; [#uses=2]
+ store float %11, float* %twistAngle, align 4
+ %12 = fcmp ogt float %11, 0x400921FB60000000 ; [#uses=1]
+ br i1 %12, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %13 = load float* %6, align 4 ; [#uses=1]
+ %14 = fsub float -0.000000e+00, %13 ; [#uses=2]
+ %15 = load float* %4, align 4 ; [#uses=1]
+ %16 = fsub float -0.000000e+00, %15 ; [#uses=1]
+ %17 = load float* %2, align 4 ; [#uses=1]
+ %18 = fsub float -0.000000e+00, %17 ; [#uses=1]
+ %19 = load float* %0, align 4 ; [#uses=1]
+ %20 = fsub float -0.000000e+00, %19 ; [#uses=1]
+ %21 = fcmp olt float %14, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i.i7 = select i1 %21, float -1.000000e+00, float %14 ; [#uses=2]
+ %22 = fcmp ogt float %x_addr.0.i.i7, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i.i8 = select i1 %22, float 1.000000e+00, float %x_addr.0.i.i7 ; [#uses=1]
+ %23 = tail call float @acosf(float %x_addr.1.i.i8) nounwind readonly ; [#uses=1]
+ %24 = fmul float %23, 2.000000e+00 ; [#uses=1]
+ store float %24, float* %twistAngle, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %25 = phi float [ %20, %bb ], [ %1, %entry ] ; [#uses=4]
+ %26 = phi float [ %18, %bb ], [ %3, %entry ] ; [#uses=4]
+ %27 = phi float [ %16, %bb ], [ %5, %entry ] ; [#uses=4]
+ %28 = getelementptr inbounds %struct.btQuadWord* %vTwistAxis, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %25, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %vTwistAxis, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %26, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btQuadWord* %vTwistAxis, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %27, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btQuadWord* %vTwistAxis, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = load float* %twistAngle, align 4 ; [#uses=1]
+ %33 = fcmp ogt float %32, 0x3E80000000000000 ; [#uses=1]
+ br i1 %33, label %bb5, label %return
+
+bb5: ; preds = %bb1
+ %34 = fmul float %25, %25 ; [#uses=1]
+ %35 = fmul float %26, %26 ; [#uses=1]
+ %36 = fadd float %34, %35 ; [#uses=1]
+ %37 = fmul float %27, %27 ; [#uses=1]
+ %38 = fadd float %36, %37 ; [#uses=1]
+ %39 = tail call float @sqrtf(float %38) nounwind readonly ; [#uses=1]
+ %40 = fdiv float 1.000000e+00, %39 ; [#uses=3]
+ %41 = fmul float %25, %40 ; [#uses=1]
+ store float %41, float* %28, align 4
+ %42 = fmul float %26, %40 ; [#uses=1]
+ store float %42, float* %29, align 4
+ %43 = fmul float %27, %40 ; [#uses=1]
+ store float %43, float* %30, align 4
+ ret void
+
+return: ; preds = %bb1
+ ret void
+}
+
+; [#uses=2]
+define void @_ZNK21btConeTwistConstraint16GetPointForAngleEff(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btConeTwistConstraint* nocapture %this, float %fAngleInRadians, float %fLength) nounwind align 2 {
+entry:
+ %0 = tail call float @cosf(float %fAngleInRadians) nounwind readonly ; [#uses=6]
+ %1 = tail call float @sinf(float %fAngleInRadians) nounwind readonly ; [#uses=5]
+ %2 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = tail call float @fabsf(float %0) nounwind readnone ; [#uses=1]
+ %5 = fcmp ogt float %4, 0x3E80000000000000 ; [#uses=1]
+ br i1 %5, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %6 = fmul float %1, %1 ; [#uses=1]
+ %7 = fmul float %0, %0 ; [#uses=1]
+ %8 = fdiv float %6, %7 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ %11 = fmul float %10, %10 ; [#uses=1]
+ %12 = fdiv float 1.000000e+00, %11 ; [#uses=1]
+ %13 = fmul float %3, %3 ; [#uses=1]
+ %14 = fdiv float %8, %13 ; [#uses=1]
+ %15 = fadd float %14, %12 ; [#uses=1]
+ %16 = fadd float %8, 1.000000e+00 ; [#uses=1]
+ %17 = fdiv float %16, %15 ; [#uses=1]
+ %18 = tail call float @sqrtf(float %17) nounwind readonly ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %swingLimit.0 = phi float [ %18, %bb ], [ %3, %entry ] ; [#uses=1]
+ %19 = fsub float -0.000000e+00, %1 ; [#uses=1]
+ %20 = fmul float %0, %0 ; [#uses=1]
+ %21 = fadd float %20, 0.000000e+00 ; [#uses=1]
+ %22 = fmul float %1, %1 ; [#uses=1]
+ %23 = fadd float %21, %22 ; [#uses=1]
+ %24 = tail call float @sqrtf(float %23) nounwind readonly ; [#uses=1]
+ %25 = fmul float %swingLimit.0, 5.000000e-01 ; [#uses=2]
+ %26 = tail call float @sinf(float %25) nounwind readonly ; [#uses=1]
+ %27 = fdiv float %26, %24 ; [#uses=3]
+ %28 = tail call float @cosf(float %25) nounwind readonly ; [#uses=5]
+ %29 = fmul float %27, %19 ; [#uses=3]
+ %30 = fmul float %0, %27 ; [#uses=3]
+ %31 = fmul float %27, 0.000000e+00 ; [#uses=2]
+ %32 = fsub float -0.000000e+00, %31 ; [#uses=4]
+ %33 = fmul float %fLength, %32 ; [#uses=1]
+ %34 = fmul float %30, 0.000000e+00 ; [#uses=2]
+ %35 = fsub float %33, %34 ; [#uses=1]
+ %36 = fmul float %29, 0.000000e+00 ; [#uses=2]
+ %37 = fsub float %35, %36 ; [#uses=3]
+ %38 = fmul float %28, 0.000000e+00 ; [#uses=2]
+ %39 = fmul float %31, 0.000000e+00 ; [#uses=2]
+ %40 = fadd float %38, %39 ; [#uses=1]
+ %41 = fmul float %30, %fLength ; [#uses=1]
+ %42 = fsub float %40, %41 ; [#uses=3]
+ %43 = fmul float %29, %fLength ; [#uses=1]
+ %44 = fadd float %38, %43 ; [#uses=1]
+ %45 = fsub float %44, %39 ; [#uses=3]
+ %46 = fmul float %28, %fLength ; [#uses=1]
+ %47 = fadd float %46, %34 ; [#uses=1]
+ %48 = fsub float %47, %36 ; [#uses=3]
+ %49 = fsub float -0.000000e+00, %29 ; [#uses=3]
+ %50 = fsub float -0.000000e+00, %30 ; [#uses=3]
+ %51 = fmul float %37, %49 ; [#uses=1]
+ %52 = fmul float %42, %28 ; [#uses=1]
+ %53 = fadd float %51, %52 ; [#uses=1]
+ %54 = fmul float %48, %50 ; [#uses=1]
+ %55 = fadd float %53, %54 ; [#uses=1]
+ %56 = fmul float %45, %32 ; [#uses=1]
+ %57 = fsub float %55, %56 ; [#uses=1]
+ %58 = fmul float %37, %50 ; [#uses=1]
+ %59 = fmul float %45, %28 ; [#uses=1]
+ %60 = fadd float %58, %59 ; [#uses=1]
+ %61 = fmul float %42, %32 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=1]
+ %63 = fmul float %48, %49 ; [#uses=1]
+ %64 = fsub float %62, %63 ; [#uses=1]
+ %65 = fmul float %37, %32 ; [#uses=1]
+ %66 = fmul float %48, %28 ; [#uses=1]
+ %67 = fadd float %65, %66 ; [#uses=1]
+ %68 = fmul float %45, %49 ; [#uses=1]
+ %69 = fadd float %67, %68 ; [#uses=1]
+ %70 = fmul float %42, %50 ; [#uses=1]
+ %71 = fsub float %69, %70 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %71, float* %72, align 4
+ %73 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %64, float* %73, align 4
+ %74 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %57, float* %74, align 4
+ %75 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %75, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_(%struct.btConeTwistConstraint* nocapture %this, %struct.btQuaternion* nocapture %qCone, float* nocapture %swingAngle, %struct.btQuadWord* nocapture %vSwingAxis, float* nocapture %swingLimit) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuaternion* %qCone, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = fcmp olt float %1, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i.i = select i1 %2, float -1.000000e+00, float %1 ; [#uses=2]
+ %3 = fcmp ogt float %x_addr.0.i.i, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i.i = select i1 %3, float 1.000000e+00, float %x_addr.0.i.i ; [#uses=1]
+ %4 = tail call float @acosf(float %x_addr.1.i.i) nounwind readonly ; [#uses=1]
+ %5 = fmul float %4, 2.000000e+00 ; [#uses=2]
+ store float %5, float* %swingAngle, align 4
+ %6 = fcmp ogt float %5, 0x3E80000000000000 ; [#uses=1]
+ br i1 %6, label %bb, label %bb4
+
+bb: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btQuaternion* %qCone, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuaternion* %qCone, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuaternion* %qCone, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=4]
+ %11 = load float* %8, align 4 ; [#uses=4]
+ %12 = load float* %7, align 4 ; [#uses=4]
+ %13 = getelementptr inbounds %struct.btQuadWord* %vSwingAxis, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %10, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btQuadWord* %vSwingAxis, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %11, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btQuadWord* %vSwingAxis, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %12, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btQuadWord* %vSwingAxis, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 4
+ %17 = fmul float %10, %10 ; [#uses=1]
+ %18 = fmul float %11, %11 ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=1]
+ %20 = fmul float %12, %12 ; [#uses=1]
+ %21 = fadd float %19, %20 ; [#uses=1]
+ %22 = tail call float @sqrtf(float %21) nounwind readonly ; [#uses=1]
+ %23 = fdiv float 1.000000e+00, %22 ; [#uses=3]
+ %24 = fmul float %10, %23 ; [#uses=1]
+ store float %24, float* %13, align 4
+ %25 = fmul float %11, %23 ; [#uses=4]
+ store float %25, float* %14, align 4
+ %26 = fmul float %12, %23 ; [#uses=3]
+ store float %26, float* %15, align 4
+ %27 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 8 ; [#uses=2]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %swingLimit, align 4
+ %29 = tail call float @fabsf(float %25) nounwind readnone ; [#uses=1]
+ %30 = fcmp ogt float %29, 0x3E80000000000000 ; [#uses=1]
+ br i1 %30, label %bb3, label %bb4
+
+bb3: ; preds = %bb
+ %31 = fmul float %26, %26 ; [#uses=1]
+ %32 = fmul float %25, %25 ; [#uses=1]
+ %33 = fdiv float %31, %32 ; [#uses=2]
+ %34 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=2]
+ %36 = fmul float %35, %35 ; [#uses=1]
+ %37 = fdiv float 1.000000e+00, %36 ; [#uses=1]
+ %38 = load float* %27, align 4 ; [#uses=2]
+ %39 = fmul float %38, %38 ; [#uses=1]
+ %40 = fdiv float %33, %39 ; [#uses=1]
+ %41 = fadd float %40, %37 ; [#uses=1]
+ %42 = fadd float %33, 1.000000e+00 ; [#uses=1]
+ %43 = fdiv float %42, %41 ; [#uses=1]
+ %44 = tail call float @sqrtf(float %43) nounwind readonly ; [#uses=1]
+ store float %44, float* %swingLimit, align 4
+ ret void
+
+bb4: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btConeTwistConstraint31setMotorTargetInConstraintSpaceERK12btQuaternion(%struct.btConeTwistConstraint* nocapture %this, %struct.btQuaternion* nocapture %q) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 31, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = getelementptr inbounds %struct.btQuaternion* %q, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=8]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 31, i32 0, i32 0, i32 1 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btQuaternion* %q, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=9]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 31, i32 0, i32 0, i32 2 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btQuaternion* %q, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=9]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 31, i32 0, i32 0, i32 3 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btQuaternion* %q, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=11]
+ store float %11, float* %9, align 4
+ %12 = fsub float -0.000000e+00, %2 ; [#uses=4]
+ %13 = load float* getelementptr inbounds (%struct.btQuadWord* @_ZL6vTwist, i32 0, i32 0, i32 0), align 8 ; [#uses=10]
+ %14 = fmul float %13, %12 ; [#uses=1]
+ %15 = load float* getelementptr inbounds (%struct.btQuadWord* @_ZL6vTwist, i32 0, i32 0, i32 1), align 4 ; [#uses=13]
+ %16 = fmul float %5, %15 ; [#uses=1]
+ %17 = fsub float %14, %16 ; [#uses=1]
+ %18 = load float* getelementptr inbounds (%struct.btQuadWord* @_ZL6vTwist, i32 0, i32 0, i32 2), align 8 ; [#uses=11]
+ %19 = fmul float %8, %18 ; [#uses=1]
+ %20 = fsub float %17, %19 ; [#uses=3]
+ %21 = fmul float %11, %18 ; [#uses=1]
+ %22 = fmul float %2, %15 ; [#uses=1]
+ %23 = fadd float %21, %22 ; [#uses=1]
+ %24 = fmul float %5, %13 ; [#uses=1]
+ %25 = fsub float %23, %24 ; [#uses=3]
+ %26 = fmul float %11, %15 ; [#uses=1]
+ %27 = fmul float %8, %13 ; [#uses=1]
+ %28 = fadd float %26, %27 ; [#uses=1]
+ %29 = fmul float %2, %18 ; [#uses=1]
+ %30 = fsub float %28, %29 ; [#uses=3]
+ %31 = fmul float %11, %13 ; [#uses=1]
+ %32 = fmul float %5, %18 ; [#uses=1]
+ %33 = fadd float %31, %32 ; [#uses=1]
+ %34 = fmul float %8, %15 ; [#uses=1]
+ %35 = fsub float %33, %34 ; [#uses=3]
+ %36 = fsub float -0.000000e+00, %8 ; [#uses=3]
+ %37 = fsub float -0.000000e+00, %5 ; [#uses=3]
+ %38 = fmul float %20, %36 ; [#uses=1]
+ %39 = fmul float %25, %11 ; [#uses=1]
+ %40 = fadd float %38, %39 ; [#uses=1]
+ %41 = fmul float %35, %37 ; [#uses=1]
+ %42 = fadd float %40, %41 ; [#uses=1]
+ %43 = fmul float %30, %12 ; [#uses=1]
+ %44 = fsub float %42, %43 ; [#uses=3]
+ %45 = fmul float %20, %37 ; [#uses=1]
+ %46 = fmul float %30, %11 ; [#uses=1]
+ %47 = fadd float %45, %46 ; [#uses=1]
+ %48 = fmul float %25, %12 ; [#uses=1]
+ %49 = fadd float %47, %48 ; [#uses=1]
+ %50 = fmul float %35, %36 ; [#uses=1]
+ %51 = fsub float %49, %50 ; [#uses=3]
+ %52 = fmul float %20, %12 ; [#uses=1]
+ %53 = fmul float %35, %11 ; [#uses=1]
+ %54 = fadd float %52, %53 ; [#uses=1]
+ %55 = fmul float %30, %36 ; [#uses=1]
+ %56 = fadd float %54, %55 ; [#uses=1]
+ %57 = fmul float %25, %37 ; [#uses=1]
+ %58 = fsub float %56, %57 ; [#uses=3]
+ %59 = fmul float %13, %58 ; [#uses=1]
+ %60 = fmul float %15, %51 ; [#uses=1]
+ %61 = fadd float %59, %60 ; [#uses=1]
+ %62 = fmul float %18, %44 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=2]
+ %64 = fcmp olt float %63, 0xBFEFFFFFC0000000 ; [#uses=1]
+ br i1 %64, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %entry
+ %65 = tail call float @fabsf(float %18) nounwind readnone ; [#uses=1]
+ %66 = fcmp ogt float %65, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %66, label %bb.i.i, label %bb1.i.i
+
+bb.i.i: ; preds = %bb.i
+ %67 = fmul float %15, %15 ; [#uses=1]
+ %68 = fmul float %18, %18 ; [#uses=1]
+ %69 = fadd float %67, %68 ; [#uses=1]
+ %70 = tail call float @sqrtf(float %69) nounwind readonly ; [#uses=1]
+ %71 = fdiv float 1.000000e+00, %70 ; [#uses=2]
+ %72 = fsub float -0.000000e+00, %18 ; [#uses=1]
+ %73 = fmul float %71, %72 ; [#uses=1]
+ %74 = fmul float %15, %71 ; [#uses=1]
+ br label %_Z15shortestArcQuatRK9btVector3S1_.exit
+
+bb1.i.i: ; preds = %bb.i
+ %75 = fmul float %13, %13 ; [#uses=1]
+ %76 = fmul float %15, %15 ; [#uses=1]
+ %77 = fadd float %75, %76 ; [#uses=1]
+ %78 = tail call float @sqrtf(float %77) nounwind readonly ; [#uses=1]
+ %79 = fdiv float 1.000000e+00, %78 ; [#uses=2]
+ %80 = fsub float -0.000000e+00, %15 ; [#uses=1]
+ %81 = fmul float %79, %80 ; [#uses=1]
+ %82 = fmul float %13, %79 ; [#uses=1]
+ br label %_Z15shortestArcQuatRK9btVector3S1_.exit
+
+bb1.i: ; preds = %entry
+ %83 = fmul float %18, %51 ; [#uses=1]
+ %84 = fmul float %15, %44 ; [#uses=1]
+ %85 = fmul float %13, %44 ; [#uses=1]
+ %86 = fmul float %18, %58 ; [#uses=1]
+ %87 = fmul float %15, %58 ; [#uses=1]
+ %88 = fmul float %13, %51 ; [#uses=1]
+ %89 = fsub float %84, %83 ; [#uses=1]
+ %90 = fsub float %86, %85 ; [#uses=1]
+ %91 = fsub float %88, %87 ; [#uses=1]
+ %92 = fadd float %63, 1.000000e+00 ; [#uses=1]
+ %93 = fmul float %92, 2.000000e+00 ; [#uses=1]
+ %94 = tail call float @sqrtf(float %93) nounwind readonly ; [#uses=2]
+ %95 = fdiv float 1.000000e+00, %94 ; [#uses=3]
+ %96 = fmul float %94, 5.000000e-01 ; [#uses=1]
+ %97 = fmul float %91, %95 ; [#uses=1]
+ %98 = fmul float %90, %95 ; [#uses=1]
+ %99 = fmul float %89, %95 ; [#uses=1]
+ br label %_Z15shortestArcQuatRK9btVector3S1_.exit
+
+_Z15shortestArcQuatRK9btVector3S1_.exit: ; preds = %bb1.i, %bb1.i.i, %bb.i.i
+ %qTargetCone.0.0.0.0 = phi float [ %99, %bb1.i ], [ 0.000000e+00, %bb.i.i ], [ %81, %bb1.i.i ] ; [#uses=3]
+ %qTargetCone.0.0.1.0 = phi float [ %98, %bb1.i ], [ %73, %bb.i.i ], [ %82, %bb1.i.i ] ; [#uses=3]
+ %qTargetCone.0.0.2.0 = phi float [ %97, %bb1.i ], [ %74, %bb.i.i ], [ 0.000000e+00, %bb1.i.i ] ; [#uses=3]
+ %qTargetCone.0.0.3.0 = phi float [ %96, %bb1.i ], [ 0.000000e+00, %bb.i.i ], [ 0.000000e+00, %bb1.i.i ] ; [#uses=3]
+ %100 = fmul float %qTargetCone.0.0.0.0, %qTargetCone.0.0.0.0 ; [#uses=1]
+ %101 = fmul float %qTargetCone.0.0.1.0, %qTargetCone.0.0.1.0 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fmul float %qTargetCone.0.0.2.0, %qTargetCone.0.0.2.0 ; [#uses=1]
+ %104 = fadd float %102, %103 ; [#uses=1]
+ %105 = fmul float %qTargetCone.0.0.3.0, %qTargetCone.0.0.3.0 ; [#uses=1]
+ %106 = fadd float %104, %105 ; [#uses=1]
+ %107 = tail call float @sqrtf(float %106) nounwind readonly ; [#uses=1]
+ %108 = fdiv float 1.000000e+00, %107 ; [#uses=4]
+ %109 = fmul float %qTargetCone.0.0.0.0, %108 ; [#uses=7]
+ %110 = fmul float %qTargetCone.0.0.1.0, %108 ; [#uses=7]
+ %111 = fmul float %qTargetCone.0.0.2.0, %108 ; [#uses=7]
+ %112 = fmul float %qTargetCone.0.0.3.0, %108 ; [#uses=9]
+ %113 = fsub float -0.000000e+00, %111 ; [#uses=4]
+ %114 = fsub float -0.000000e+00, %110 ; [#uses=4]
+ %115 = fsub float -0.000000e+00, %109 ; [#uses=4]
+ %116 = fmul float %112, %11 ; [#uses=1]
+ %117 = fmul float %2, %115 ; [#uses=1]
+ %118 = fsub float %116, %117 ; [#uses=1]
+ %119 = fmul float %5, %114 ; [#uses=1]
+ %120 = fsub float %118, %119 ; [#uses=1]
+ %121 = fmul float %8, %113 ; [#uses=1]
+ %122 = fsub float %120, %121 ; [#uses=3]
+ %123 = fmul float %112, %8 ; [#uses=1]
+ %124 = fmul float %11, %113 ; [#uses=1]
+ %125 = fadd float %123, %124 ; [#uses=1]
+ %126 = fmul float %5, %115 ; [#uses=1]
+ %127 = fadd float %125, %126 ; [#uses=1]
+ %128 = fmul float %2, %114 ; [#uses=1]
+ %129 = fsub float %127, %128 ; [#uses=3]
+ %130 = fmul float %112, %5 ; [#uses=1]
+ %131 = fmul float %11, %114 ; [#uses=1]
+ %132 = fadd float %130, %131 ; [#uses=1]
+ %133 = fmul float %2, %113 ; [#uses=1]
+ %134 = fadd float %132, %133 ; [#uses=1]
+ %135 = fmul float %8, %115 ; [#uses=1]
+ %136 = fsub float %134, %135 ; [#uses=3]
+ %137 = fmul float %112, %2 ; [#uses=1]
+ %138 = fmul float %11, %115 ; [#uses=1]
+ %139 = fadd float %137, %138 ; [#uses=1]
+ %140 = fmul float %8, %114 ; [#uses=1]
+ %141 = fadd float %139, %140 ; [#uses=1]
+ %142 = fmul float %5, %113 ; [#uses=1]
+ %143 = fsub float %141, %142 ; [#uses=3]
+ %144 = fmul float %143, %143 ; [#uses=1]
+ %145 = fmul float %136, %136 ; [#uses=1]
+ %146 = fadd float %144, %145 ; [#uses=1]
+ %147 = fmul float %129, %129 ; [#uses=1]
+ %148 = fadd float %146, %147 ; [#uses=1]
+ %149 = fmul float %122, %122 ; [#uses=1]
+ %150 = fadd float %148, %149 ; [#uses=1]
+ %151 = tail call float @sqrtf(float %150) nounwind readonly ; [#uses=1]
+ %152 = fdiv float 1.000000e+00, %151 ; [#uses=4]
+ %153 = fmul float %143, %152 ; [#uses=4]
+ %154 = fmul float %136, %152 ; [#uses=4]
+ %155 = fmul float %129, %152 ; [#uses=4]
+ %156 = fmul float %122, %152 ; [#uses=5]
+ %157 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %158 = load float* %157, align 4 ; [#uses=4]
+ %159 = fcmp ult float %158, 0x3FA99999A0000000 ; [#uses=1]
+ br i1 %159, label %bb7, label %bb
+
+bb: ; preds = %_Z15shortestArcQuatRK9btVector3S1_.exit
+ %160 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %161 = load float* %160, align 4 ; [#uses=3]
+ %162 = fcmp ult float %161, 0x3FA99999A0000000 ; [#uses=1]
+ br i1 %162, label %bb7, label %bb1
+
+bb1: ; preds = %bb
+ %163 = fcmp olt float %112, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i.i.i = select i1 %163, float -1.000000e+00, float %112 ; [#uses=2]
+ %164 = fcmp ogt float %x_addr.0.i.i.i, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i.i.i = select i1 %164, float 1.000000e+00, float %x_addr.0.i.i.i ; [#uses=1]
+ %165 = tail call float @acosf(float %x_addr.1.i.i.i) nounwind readonly ; [#uses=1]
+ %166 = fmul float %165, 2.000000e+00 ; [#uses=5]
+ %167 = fcmp ogt float %166, 0x3E80000000000000 ; [#uses=1]
+ br i1 %167, label %bb.i15, label %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit
+
+bb.i15: ; preds = %bb1
+ %168 = fmul float %109, %109 ; [#uses=1]
+ %169 = fmul float %110, %110 ; [#uses=1]
+ %170 = fadd float %168, %169 ; [#uses=1]
+ %171 = fmul float %111, %111 ; [#uses=1]
+ %172 = fadd float %170, %171 ; [#uses=1]
+ %173 = tail call float @sqrtf(float %172) nounwind readonly ; [#uses=1]
+ %174 = fdiv float 1.000000e+00, %173 ; [#uses=3]
+ %175 = fmul float %109, %174 ; [#uses=2]
+ %176 = fmul float %110, %174 ; [#uses=5]
+ %177 = fmul float %111, %174 ; [#uses=4]
+ %178 = tail call float @fabsf(float %176) nounwind readnone ; [#uses=1]
+ %179 = fcmp ogt float %178, 0x3E80000000000000 ; [#uses=1]
+ br i1 %179, label %bb3.i, label %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit
+
+bb3.i: ; preds = %bb.i15
+ %180 = fmul float %177, %177 ; [#uses=1]
+ %181 = fmul float %176, %176 ; [#uses=1]
+ %182 = fdiv float %180, %181 ; [#uses=2]
+ %183 = fmul float %161, %161 ; [#uses=1]
+ %184 = fdiv float 1.000000e+00, %183 ; [#uses=1]
+ %185 = fmul float %158, %158 ; [#uses=1]
+ %186 = fdiv float %182, %185 ; [#uses=1]
+ %187 = fadd float %186, %184 ; [#uses=1]
+ %188 = fadd float %182, 1.000000e+00 ; [#uses=1]
+ %189 = fdiv float %188, %187 ; [#uses=1]
+ %190 = tail call float @sqrtf(float %189) nounwind readonly ; [#uses=1]
+ br label %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit
+
+_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit: ; preds = %bb3.i, %bb.i15, %bb1
+ %swingAxis.0.0.1 = phi float [ %175, %bb3.i ], [ %175, %bb.i15 ], [ undef, %bb1 ] ; [#uses=3]
+ %swingAxis.0.1.1 = phi float [ %176, %bb3.i ], [ %176, %bb.i15 ], [ undef, %bb1 ] ; [#uses=3]
+ %swingAxis.0.2.1 = phi float [ %177, %bb3.i ], [ %177, %bb.i15 ], [ undef, %bb1 ] ; [#uses=3]
+ %swingLimit.1 = phi float [ %190, %bb3.i ], [ %158, %bb.i15 ], [ undef, %bb1 ] ; [#uses=3]
+ %191 = tail call float @fabsf(float %166) nounwind readnone ; [#uses=1]
+ %192 = fcmp ogt float %191, 0x3E80000000000000 ; [#uses=1]
+ br i1 %192, label %bb2, label %bb7
+
+bb2: ; preds = %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit
+ %193 = fcmp olt float %swingLimit.1, %166 ; [#uses=1]
+ br i1 %193, label %bb6, label %bb4
+
+bb4: ; preds = %bb2
+ %194 = fsub float -0.000000e+00, %swingLimit.1 ; [#uses=2]
+ %195 = fcmp olt float %166, %194 ; [#uses=1]
+ br i1 %195, label %bb5, label %bb6
+
+bb5: ; preds = %bb4
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb4, %bb2
+ %swingAngle.0 = phi float [ %194, %bb5 ], [ %166, %bb4 ], [ %swingLimit.1, %bb2 ] ; [#uses=1]
+ %196 = fmul float %swingAxis.0.0.1, %swingAxis.0.0.1 ; [#uses=1]
+ %197 = fmul float %swingAxis.0.1.1, %swingAxis.0.1.1 ; [#uses=1]
+ %198 = fadd float %196, %197 ; [#uses=1]
+ %199 = fmul float %swingAxis.0.2.1, %swingAxis.0.2.1 ; [#uses=1]
+ %200 = fadd float %198, %199 ; [#uses=1]
+ %201 = tail call float @sqrtf(float %200) nounwind readonly ; [#uses=1]
+ %202 = fmul float %swingAngle.0, 5.000000e-01 ; [#uses=2]
+ %203 = tail call float @sinf(float %202) nounwind readonly ; [#uses=1]
+ %204 = fdiv float %203, %201 ; [#uses=3]
+ %205 = tail call float @cosf(float %202) nounwind readonly ; [#uses=1]
+ %206 = fmul float %swingAxis.0.2.1, %204 ; [#uses=1]
+ %207 = fmul float %swingAxis.0.1.1, %204 ; [#uses=1]
+ %208 = fmul float %swingAxis.0.0.1, %204 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit, %bb, %_Z15shortestArcQuatRK9btVector3S1_.exit
+ %qTargetCone.0.0.0.1 = phi float [ %109, %_Z15shortestArcQuatRK9btVector3S1_.exit ], [ %109, %bb ], [ %208, %bb6 ], [ %109, %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit ] ; [#uses=4]
+ %qTargetCone.0.0.1.1 = phi float [ %110, %_Z15shortestArcQuatRK9btVector3S1_.exit ], [ %110, %bb ], [ %207, %bb6 ], [ %110, %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit ] ; [#uses=4]
+ %qTargetCone.0.0.2.1 = phi float [ %111, %_Z15shortestArcQuatRK9btVector3S1_.exit ], [ %111, %bb ], [ %206, %bb6 ], [ %111, %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit ] ; [#uses=4]
+ %qTargetCone.0.0.3.1 = phi float [ %112, %_Z15shortestArcQuatRK9btVector3S1_.exit ], [ %112, %bb ], [ %205, %bb6 ], [ %112, %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit ] ; [#uses=4]
+ %209 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %210 = load float* %209, align 4 ; [#uses=4]
+ %211 = fcmp ult float %210, 0x3FA99999A0000000 ; [#uses=1]
+ br i1 %211, label %bb14, label %bb8
+
+bb8: ; preds = %bb7
+ %212 = fcmp olt float %156, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i.i.i16 = select i1 %212, float -1.000000e+00, float %156 ; [#uses=2]
+ %213 = fcmp ogt float %x_addr.0.i.i.i16, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i.i.i17 = select i1 %213, float 1.000000e+00, float %x_addr.0.i.i.i16 ; [#uses=1]
+ %214 = tail call float @acosf(float %x_addr.1.i.i.i17) nounwind readonly ; [#uses=1]
+ %215 = fmul float %214, 2.000000e+00 ; [#uses=2]
+ %216 = fcmp ogt float %215, 0x400921FB60000000 ; [#uses=1]
+ br i1 %216, label %bb.i18, label %bb1.i19
+
+bb.i18: ; preds = %bb8
+ %217 = fsub float -0.000000e+00, %156 ; [#uses=2]
+ %218 = fsub float -0.000000e+00, %155 ; [#uses=1]
+ %219 = fsub float -0.000000e+00, %154 ; [#uses=1]
+ %220 = fsub float -0.000000e+00, %153 ; [#uses=1]
+ %221 = fcmp olt float %217, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i.i7.i = select i1 %221, float -1.000000e+00, float %217 ; [#uses=2]
+ %222 = fcmp ogt float %x_addr.0.i.i7.i, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i.i8.i = select i1 %222, float 1.000000e+00, float %x_addr.0.i.i7.i ; [#uses=1]
+ %223 = tail call float @acosf(float %x_addr.1.i.i8.i) nounwind readonly ; [#uses=1]
+ %224 = fmul float %223, 2.000000e+00 ; [#uses=1]
+ br label %bb1.i19
+
+bb1.i19: ; preds = %bb.i18, %bb8
+ %twistAngle.1 = phi float [ %224, %bb.i18 ], [ %215, %bb8 ] ; [#uses=5]
+ %225 = phi float [ %220, %bb.i18 ], [ %153, %bb8 ] ; [#uses=4]
+ %226 = phi float [ %219, %bb.i18 ], [ %154, %bb8 ] ; [#uses=4]
+ %227 = phi float [ %218, %bb.i18 ], [ %155, %bb8 ] ; [#uses=4]
+ %228 = fcmp ogt float %twistAngle.1, 0x3E80000000000000 ; [#uses=1]
+ br i1 %228, label %bb5.i, label %_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit
+
+bb5.i: ; preds = %bb1.i19
+ %229 = fmul float %225, %225 ; [#uses=1]
+ %230 = fmul float %226, %226 ; [#uses=1]
+ %231 = fadd float %229, %230 ; [#uses=1]
+ %232 = fmul float %227, %227 ; [#uses=1]
+ %233 = fadd float %231, %232 ; [#uses=1]
+ %234 = tail call float @sqrtf(float %233) nounwind readonly ; [#uses=1]
+ %235 = fdiv float 1.000000e+00, %234 ; [#uses=3]
+ %236 = fmul float %225, %235 ; [#uses=1]
+ %237 = fmul float %226, %235 ; [#uses=1]
+ %238 = fmul float %227, %235 ; [#uses=1]
+ br label %_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit
+
+_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit: ; preds = %bb5.i, %bb1.i19
+ %twistAxis.0.0.0 = phi float [ %236, %bb5.i ], [ %225, %bb1.i19 ] ; [#uses=3]
+ %twistAxis.0.1.0 = phi float [ %237, %bb5.i ], [ %226, %bb1.i19 ] ; [#uses=3]
+ %twistAxis.0.2.0 = phi float [ %238, %bb5.i ], [ %227, %bb1.i19 ] ; [#uses=3]
+ %239 = tail call float @fabsf(float %twistAngle.1) nounwind readnone ; [#uses=1]
+ %240 = fcmp ogt float %239, 0x3E80000000000000 ; [#uses=1]
+ br i1 %240, label %bb9, label %bb14
+
+bb9: ; preds = %_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit
+ %241 = fcmp olt float %210, %twistAngle.1 ; [#uses=1]
+ br i1 %241, label %bb13, label %bb11
+
+bb11: ; preds = %bb9
+ %242 = fsub float -0.000000e+00, %210 ; [#uses=2]
+ %243 = fcmp olt float %twistAngle.1, %242 ; [#uses=1]
+ br i1 %243, label %bb12, label %bb13
+
+bb12: ; preds = %bb11
+ br label %bb13
+
+bb13: ; preds = %bb12, %bb11, %bb9
+ %twistAngle.0 = phi float [ %242, %bb12 ], [ %twistAngle.1, %bb11 ], [ %210, %bb9 ] ; [#uses=1]
+ %244 = fmul float %twistAxis.0.0.0, %twistAxis.0.0.0 ; [#uses=1]
+ %245 = fmul float %twistAxis.0.1.0, %twistAxis.0.1.0 ; [#uses=1]
+ %246 = fadd float %244, %245 ; [#uses=1]
+ %247 = fmul float %twistAxis.0.2.0, %twistAxis.0.2.0 ; [#uses=1]
+ %248 = fadd float %246, %247 ; [#uses=1]
+ %249 = tail call float @sqrtf(float %248) nounwind readonly ; [#uses=1]
+ %250 = fmul float %twistAngle.0, 5.000000e-01 ; [#uses=2]
+ %251 = tail call float @sinf(float %250) nounwind readonly ; [#uses=1]
+ %252 = fdiv float %251, %249 ; [#uses=3]
+ %253 = tail call float @cosf(float %250) nounwind readonly ; [#uses=1]
+ %254 = fmul float %twistAxis.0.2.0, %252 ; [#uses=1]
+ %255 = fmul float %twistAxis.0.1.0, %252 ; [#uses=1]
+ %256 = fmul float %twistAxis.0.0.0, %252 ; [#uses=1]
+ br label %bb14
+
+bb14: ; preds = %bb13, %_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit, %bb7
+ %qTargetTwist.0.0.0.0 = phi float [ %153, %bb7 ], [ %256, %bb13 ], [ %153, %_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit ] ; [#uses=4]
+ %qTargetTwist.0.0.1.0 = phi float [ %154, %bb7 ], [ %255, %bb13 ], [ %154, %_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit ] ; [#uses=4]
+ %qTargetTwist.0.0.2.0 = phi float [ %155, %bb7 ], [ %254, %bb13 ], [ %155, %_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit ] ; [#uses=4]
+ %qTargetTwist.0.0.3.0 = phi float [ %156, %bb7 ], [ %253, %bb13 ], [ %156, %_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit ] ; [#uses=4]
+ %257 = fmul float %qTargetCone.0.0.3.1, %qTargetTwist.0.0.3.0 ; [#uses=1]
+ %258 = fmul float %qTargetCone.0.0.0.1, %qTargetTwist.0.0.0.0 ; [#uses=1]
+ %259 = fsub float %257, %258 ; [#uses=1]
+ %260 = fmul float %qTargetCone.0.0.1.1, %qTargetTwist.0.0.1.0 ; [#uses=1]
+ %261 = fsub float %259, %260 ; [#uses=1]
+ %262 = fmul float %qTargetCone.0.0.2.1, %qTargetTwist.0.0.2.0 ; [#uses=1]
+ %263 = fsub float %261, %262 ; [#uses=1]
+ %264 = fmul float %qTargetCone.0.0.3.1, %qTargetTwist.0.0.2.0 ; [#uses=1]
+ %265 = fmul float %qTargetCone.0.0.2.1, %qTargetTwist.0.0.3.0 ; [#uses=1]
+ %266 = fadd float %264, %265 ; [#uses=1]
+ %267 = fmul float %qTargetCone.0.0.0.1, %qTargetTwist.0.0.1.0 ; [#uses=1]
+ %268 = fadd float %266, %267 ; [#uses=1]
+ %269 = fmul float %qTargetCone.0.0.1.1, %qTargetTwist.0.0.0.0 ; [#uses=1]
+ %270 = fsub float %268, %269 ; [#uses=1]
+ %271 = fmul float %qTargetCone.0.0.3.1, %qTargetTwist.0.0.1.0 ; [#uses=1]
+ %272 = fmul float %qTargetCone.0.0.1.1, %qTargetTwist.0.0.3.0 ; [#uses=1]
+ %273 = fadd float %271, %272 ; [#uses=1]
+ %274 = fmul float %qTargetCone.0.0.2.1, %qTargetTwist.0.0.0.0 ; [#uses=1]
+ %275 = fadd float %273, %274 ; [#uses=1]
+ %276 = fmul float %qTargetCone.0.0.0.1, %qTargetTwist.0.0.2.0 ; [#uses=1]
+ %277 = fsub float %275, %276 ; [#uses=1]
+ %278 = fmul float %qTargetCone.0.0.3.1, %qTargetTwist.0.0.0.0 ; [#uses=1]
+ %279 = fmul float %qTargetCone.0.0.0.1, %qTargetTwist.0.0.3.0 ; [#uses=1]
+ %280 = fadd float %278, %279 ; [#uses=1]
+ %281 = fmul float %qTargetCone.0.0.1.1, %qTargetTwist.0.0.2.0 ; [#uses=1]
+ %282 = fadd float %280, %281 ; [#uses=1]
+ %283 = fmul float %qTargetCone.0.0.2.1, %qTargetTwist.0.0.1.0 ; [#uses=1]
+ %284 = fsub float %282, %283 ; [#uses=1]
+ store float %284, float* %0, align 4
+ store float %277, float* %3, align 4
+ store float %270, float* %6, align 4
+ store float %263, float* %9, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btConeTwistConstraint14setMotorTargetERK12btQuaternion(%struct.btConeTwistConstraint* %this, %struct.btQuaternion* nocapture %q) nounwind align 2 {
+entry:
+ %0 = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %trABCur = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %qABCur = alloca %struct.btQuaternion, align 8 ; [#uses=1]
+ %trConstraintCur = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %qConstraintCur = alloca %struct.btQuaternion, align 8 ; [#uses=1]
+ %qConstraint = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %2 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %3 = load %struct.btRigidBody** %2, align 4 ; [#uses=12]
+ %4 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=7]
+ %6 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=7]
+ %8 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=7]
+ %10 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=7]
+ %12 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=7]
+ %14 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=7]
+ %16 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=7]
+ %18 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=7]
+ %20 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=7]
+ %22 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=4]
+ %24 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=4]
+ %26 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=4]
+ %28 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %29 = load %struct.btRigidBody** %28, align 4 ; [#uses=12]
+ %30 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=9]
+ %32 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=9]
+ %34 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=9]
+ %36 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=9]
+ %38 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=9]
+ %40 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=9]
+ %42 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=9]
+ %44 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=9]
+ %46 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=9]
+ %48 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=2]
+ %50 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=2]
+ %52 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=2]
+ %54 = fsub float -0.000000e+00, %53 ; [#uses=3]
+ %55 = fsub float -0.000000e+00, %51 ; [#uses=3]
+ %56 = fsub float -0.000000e+00, %49 ; [#uses=3]
+ %57 = fmul float %35, %56 ; [#uses=1]
+ %58 = fmul float %41, %55 ; [#uses=1]
+ %59 = fadd float %57, %58 ; [#uses=1]
+ %60 = fmul float %47, %54 ; [#uses=1]
+ %61 = fadd float %59, %60 ; [#uses=1]
+ %62 = fmul float %33, %56 ; [#uses=1]
+ %63 = fmul float %39, %55 ; [#uses=1]
+ %64 = fadd float %62, %63 ; [#uses=1]
+ %65 = fmul float %45, %54 ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=1]
+ %67 = fmul float %31, %56 ; [#uses=1]
+ %68 = fmul float %37, %55 ; [#uses=1]
+ %69 = fadd float %67, %68 ; [#uses=1]
+ %70 = fmul float %43, %54 ; [#uses=1]
+ %71 = fadd float %69, %70 ; [#uses=1]
+ %72 = fmul float %35, %23 ; [#uses=1]
+ %73 = fmul float %41, %25 ; [#uses=1]
+ %74 = fadd float %72, %73 ; [#uses=1]
+ %75 = fmul float %47, %27 ; [#uses=1]
+ %76 = fadd float %74, %75 ; [#uses=1]
+ %77 = fadd float %76, %61 ; [#uses=1]
+ %78 = fmul float %33, %23 ; [#uses=1]
+ %79 = fmul float %39, %25 ; [#uses=1]
+ %80 = fadd float %78, %79 ; [#uses=1]
+ %81 = fmul float %45, %27 ; [#uses=1]
+ %82 = fadd float %80, %81 ; [#uses=1]
+ %83 = fadd float %82, %66 ; [#uses=1]
+ %84 = fmul float %31, %23 ; [#uses=1]
+ %85 = fmul float %37, %25 ; [#uses=1]
+ %86 = fadd float %84, %85 ; [#uses=1]
+ %87 = fmul float %43, %27 ; [#uses=1]
+ %88 = fadd float %86, %87 ; [#uses=1]
+ %89 = fadd float %88, %71 ; [#uses=1]
+ %90 = fmul float %9, %35 ; [#uses=1]
+ %91 = fmul float %15, %41 ; [#uses=1]
+ %92 = fadd float %90, %91 ; [#uses=1]
+ %93 = fmul float %21, %47 ; [#uses=1]
+ %94 = fadd float %92, %93 ; [#uses=1]
+ %95 = fmul float %7, %35 ; [#uses=1]
+ %96 = fmul float %13, %41 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %19, %47 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=1]
+ %100 = fmul float %5, %35 ; [#uses=1]
+ %101 = fmul float %11, %41 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fmul float %17, %47 ; [#uses=1]
+ %104 = fadd float %102, %103 ; [#uses=1]
+ %105 = fmul float %9, %33 ; [#uses=1]
+ %106 = fmul float %15, %39 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = fmul float %21, %45 ; [#uses=1]
+ %109 = fadd float %107, %108 ; [#uses=1]
+ %110 = fmul float %7, %33 ; [#uses=1]
+ %111 = fmul float %13, %39 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=1]
+ %113 = fmul float %19, %45 ; [#uses=1]
+ %114 = fadd float %112, %113 ; [#uses=1]
+ %115 = fmul float %5, %33 ; [#uses=1]
+ %116 = fmul float %11, %39 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=1]
+ %118 = fmul float %17, %45 ; [#uses=1]
+ %119 = fadd float %117, %118 ; [#uses=1]
+ %120 = fmul float %9, %31 ; [#uses=1]
+ %121 = fmul float %15, %37 ; [#uses=1]
+ %122 = fadd float %120, %121 ; [#uses=1]
+ %123 = fmul float %21, %43 ; [#uses=1]
+ %124 = fadd float %122, %123 ; [#uses=1]
+ %125 = fmul float %7, %31 ; [#uses=1]
+ %126 = fmul float %13, %37 ; [#uses=1]
+ %127 = fadd float %125, %126 ; [#uses=1]
+ %128 = fmul float %19, %43 ; [#uses=1]
+ %129 = fadd float %127, %128 ; [#uses=1]
+ %130 = fmul float %5, %31 ; [#uses=1]
+ %131 = fmul float %11, %37 ; [#uses=1]
+ %132 = fadd float %130, %131 ; [#uses=1]
+ %133 = fmul float %17, %43 ; [#uses=1]
+ %134 = fadd float %132, %133 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %134, float* %135, align 8
+ %136 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %129, float* %136, align 4
+ %137 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %124, float* %137, align 8
+ %138 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %138, align 4
+ %139 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %119, float* %139, align 8
+ %140 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %114, float* %140, align 4
+ %141 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %109, float* %141, align 8
+ %142 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %142, align 4
+ %143 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %104, float* %143, align 8
+ %144 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %99, float* %144, align 4
+ %145 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %94, float* %145, align 8
+ %146 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %146, align 4
+ %147 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %89, float* %147, align 8
+ %148 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %83, float* %148, align 4
+ %149 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %77, float* %149, align 8
+ %150 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %150, align 4
+ %151 = getelementptr inbounds %struct.btTransform* %trABCur, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %151, %struct.btQuaternion* %qABCur) nounwind
+ %152 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %153 = load float* %152, align 4 ; [#uses=3]
+ %154 = fmul float %17, %153 ; [#uses=1]
+ %155 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %156 = load float* %155, align 4 ; [#uses=3]
+ %157 = fmul float %19, %156 ; [#uses=1]
+ %158 = fadd float %154, %157 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %160 = load float* %159, align 4 ; [#uses=3]
+ %161 = fmul float %21, %160 ; [#uses=1]
+ %162 = fadd float %158, %161 ; [#uses=1]
+ %163 = fadd float %162, %27 ; [#uses=3]
+ %164 = fmul float %11, %153 ; [#uses=1]
+ %165 = fmul float %13, %156 ; [#uses=1]
+ %166 = fadd float %164, %165 ; [#uses=1]
+ %167 = fmul float %15, %160 ; [#uses=1]
+ %168 = fadd float %166, %167 ; [#uses=1]
+ %169 = fadd float %168, %25 ; [#uses=3]
+ %170 = fmul float %5, %153 ; [#uses=1]
+ %171 = fmul float %7, %156 ; [#uses=1]
+ %172 = fadd float %170, %171 ; [#uses=1]
+ %173 = fmul float %9, %160 ; [#uses=1]
+ %174 = fadd float %172, %173 ; [#uses=1]
+ %175 = fadd float %174, %23 ; [#uses=3]
+ %176 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %177 = load float* %176, align 4 ; [#uses=3]
+ %178 = fmul float %177, %17 ; [#uses=1]
+ %179 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %180 = load float* %179, align 4 ; [#uses=3]
+ %181 = fmul float %180, %19 ; [#uses=1]
+ %182 = fadd float %178, %181 ; [#uses=1]
+ %183 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %184 = load float* %183, align 4 ; [#uses=3]
+ %185 = fmul float %184, %21 ; [#uses=1]
+ %186 = fadd float %182, %185 ; [#uses=3]
+ %187 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %188 = load float* %187, align 4 ; [#uses=3]
+ %189 = fmul float %188, %17 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %191 = load float* %190, align 4 ; [#uses=3]
+ %192 = fmul float %191, %19 ; [#uses=1]
+ %193 = fadd float %189, %192 ; [#uses=1]
+ %194 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %195 = load float* %194, align 4 ; [#uses=3]
+ %196 = fmul float %195, %21 ; [#uses=1]
+ %197 = fadd float %193, %196 ; [#uses=3]
+ %198 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %199 = load float* %198, align 4 ; [#uses=3]
+ %200 = fmul float %199, %17 ; [#uses=1]
+ %201 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %202 = load float* %201, align 4 ; [#uses=3]
+ %203 = fmul float %202, %19 ; [#uses=1]
+ %204 = fadd float %200, %203 ; [#uses=1]
+ %205 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %206 = load float* %205, align 4 ; [#uses=3]
+ %207 = fmul float %206, %21 ; [#uses=1]
+ %208 = fadd float %204, %207 ; [#uses=3]
+ %209 = fmul float %177, %11 ; [#uses=1]
+ %210 = fmul float %180, %13 ; [#uses=1]
+ %211 = fadd float %209, %210 ; [#uses=1]
+ %212 = fmul float %184, %15 ; [#uses=1]
+ %213 = fadd float %211, %212 ; [#uses=3]
+ %214 = fmul float %188, %11 ; [#uses=1]
+ %215 = fmul float %191, %13 ; [#uses=1]
+ %216 = fadd float %214, %215 ; [#uses=1]
+ %217 = fmul float %195, %15 ; [#uses=1]
+ %218 = fadd float %216, %217 ; [#uses=3]
+ %219 = fmul float %199, %11 ; [#uses=1]
+ %220 = fmul float %202, %13 ; [#uses=1]
+ %221 = fadd float %219, %220 ; [#uses=1]
+ %222 = fmul float %206, %15 ; [#uses=1]
+ %223 = fadd float %221, %222 ; [#uses=3]
+ %224 = fmul float %177, %5 ; [#uses=1]
+ %225 = fmul float %180, %7 ; [#uses=1]
+ %226 = fadd float %224, %225 ; [#uses=1]
+ %227 = fmul float %184, %9 ; [#uses=1]
+ %228 = fadd float %226, %227 ; [#uses=3]
+ %229 = fmul float %188, %5 ; [#uses=1]
+ %230 = fmul float %191, %7 ; [#uses=1]
+ %231 = fadd float %229, %230 ; [#uses=1]
+ %232 = fmul float %195, %9 ; [#uses=1]
+ %233 = fadd float %231, %232 ; [#uses=3]
+ %234 = fmul float %199, %5 ; [#uses=1]
+ %235 = fmul float %202, %7 ; [#uses=1]
+ %236 = fadd float %234, %235 ; [#uses=1]
+ %237 = fmul float %206, %9 ; [#uses=1]
+ %238 = fadd float %236, %237 ; [#uses=3]
+ %239 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %240 = load float* %239, align 4 ; [#uses=3]
+ %241 = fmul float %43, %240 ; [#uses=1]
+ %242 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %243 = load float* %242, align 4 ; [#uses=3]
+ %244 = fmul float %45, %243 ; [#uses=1]
+ %245 = fadd float %241, %244 ; [#uses=1]
+ %246 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %247 = load float* %246, align 4 ; [#uses=3]
+ %248 = fmul float %47, %247 ; [#uses=1]
+ %249 = fadd float %245, %248 ; [#uses=1]
+ %250 = fadd float %249, %53 ; [#uses=1]
+ %251 = fmul float %37, %240 ; [#uses=1]
+ %252 = fmul float %39, %243 ; [#uses=1]
+ %253 = fadd float %251, %252 ; [#uses=1]
+ %254 = fmul float %41, %247 ; [#uses=1]
+ %255 = fadd float %253, %254 ; [#uses=1]
+ %256 = fadd float %255, %51 ; [#uses=1]
+ %257 = fmul float %31, %240 ; [#uses=1]
+ %258 = fmul float %33, %243 ; [#uses=1]
+ %259 = fadd float %257, %258 ; [#uses=1]
+ %260 = fmul float %35, %247 ; [#uses=1]
+ %261 = fadd float %259, %260 ; [#uses=1]
+ %262 = fadd float %261, %49 ; [#uses=1]
+ %263 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %264 = load float* %263, align 4 ; [#uses=3]
+ %265 = fmul float %264, %43 ; [#uses=1]
+ %266 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %267 = load float* %266, align 4 ; [#uses=3]
+ %268 = fmul float %267, %45 ; [#uses=1]
+ %269 = fadd float %265, %268 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %271 = load float* %270, align 4 ; [#uses=3]
+ %272 = fmul float %271, %47 ; [#uses=1]
+ %273 = fadd float %269, %272 ; [#uses=5]
+ %274 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %275 = load float* %274, align 4 ; [#uses=3]
+ %276 = fmul float %275, %43 ; [#uses=1]
+ %277 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %278 = load float* %277, align 4 ; [#uses=3]
+ %279 = fmul float %278, %45 ; [#uses=1]
+ %280 = fadd float %276, %279 ; [#uses=1]
+ %281 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %282 = load float* %281, align 4 ; [#uses=3]
+ %283 = fmul float %282, %47 ; [#uses=1]
+ %284 = fadd float %280, %283 ; [#uses=5]
+ %285 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %286 = load float* %285, align 4 ; [#uses=3]
+ %287 = fmul float %286, %43 ; [#uses=1]
+ %288 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %289 = load float* %288, align 4 ; [#uses=3]
+ %290 = fmul float %289, %45 ; [#uses=1]
+ %291 = fadd float %287, %290 ; [#uses=1]
+ %292 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %293 = load float* %292, align 4 ; [#uses=3]
+ %294 = fmul float %293, %47 ; [#uses=1]
+ %295 = fadd float %291, %294 ; [#uses=5]
+ %296 = fmul float %264, %37 ; [#uses=1]
+ %297 = fmul float %267, %39 ; [#uses=1]
+ %298 = fadd float %296, %297 ; [#uses=1]
+ %299 = fmul float %271, %41 ; [#uses=1]
+ %300 = fadd float %298, %299 ; [#uses=5]
+ %301 = fmul float %275, %37 ; [#uses=1]
+ %302 = fmul float %278, %39 ; [#uses=1]
+ %303 = fadd float %301, %302 ; [#uses=1]
+ %304 = fmul float %282, %41 ; [#uses=1]
+ %305 = fadd float %303, %304 ; [#uses=5]
+ %306 = fmul float %286, %37 ; [#uses=1]
+ %307 = fmul float %289, %39 ; [#uses=1]
+ %308 = fadd float %306, %307 ; [#uses=1]
+ %309 = fmul float %293, %41 ; [#uses=1]
+ %310 = fadd float %308, %309 ; [#uses=5]
+ %311 = fmul float %264, %31 ; [#uses=1]
+ %312 = fmul float %267, %33 ; [#uses=1]
+ %313 = fadd float %311, %312 ; [#uses=1]
+ %314 = fmul float %271, %35 ; [#uses=1]
+ %315 = fadd float %313, %314 ; [#uses=5]
+ %316 = fmul float %275, %31 ; [#uses=1]
+ %317 = fmul float %278, %33 ; [#uses=1]
+ %318 = fadd float %316, %317 ; [#uses=1]
+ %319 = fmul float %282, %35 ; [#uses=1]
+ %320 = fadd float %318, %319 ; [#uses=5]
+ %321 = fmul float %286, %31 ; [#uses=1]
+ %322 = fmul float %289, %33 ; [#uses=1]
+ %323 = fadd float %321, %322 ; [#uses=1]
+ %324 = fmul float %293, %35 ; [#uses=1]
+ %325 = fadd float %323, %324 ; [#uses=5]
+ %326 = fsub float -0.000000e+00, %250 ; [#uses=3]
+ %327 = fsub float -0.000000e+00, %256 ; [#uses=3]
+ %328 = fsub float -0.000000e+00, %262 ; [#uses=3]
+ %329 = fmul float %315, %328 ; [#uses=1]
+ %330 = fmul float %300, %327 ; [#uses=1]
+ %331 = fadd float %329, %330 ; [#uses=1]
+ %332 = fmul float %273, %326 ; [#uses=1]
+ %333 = fadd float %331, %332 ; [#uses=1]
+ %334 = fmul float %320, %328 ; [#uses=1]
+ %335 = fmul float %305, %327 ; [#uses=1]
+ %336 = fadd float %334, %335 ; [#uses=1]
+ %337 = fmul float %284, %326 ; [#uses=1]
+ %338 = fadd float %336, %337 ; [#uses=1]
+ %339 = fmul float %325, %328 ; [#uses=1]
+ %340 = fmul float %310, %327 ; [#uses=1]
+ %341 = fadd float %339, %340 ; [#uses=1]
+ %342 = fmul float %295, %326 ; [#uses=1]
+ %343 = fadd float %341, %342 ; [#uses=1]
+ %344 = fmul float %315, %175 ; [#uses=1]
+ %345 = fmul float %300, %169 ; [#uses=1]
+ %346 = fadd float %344, %345 ; [#uses=1]
+ %347 = fmul float %273, %163 ; [#uses=1]
+ %348 = fadd float %346, %347 ; [#uses=1]
+ %349 = fadd float %348, %333 ; [#uses=1]
+ %350 = fmul float %320, %175 ; [#uses=1]
+ %351 = fmul float %305, %169 ; [#uses=1]
+ %352 = fadd float %350, %351 ; [#uses=1]
+ %353 = fmul float %284, %163 ; [#uses=1]
+ %354 = fadd float %352, %353 ; [#uses=1]
+ %355 = fadd float %354, %338 ; [#uses=1]
+ %356 = fmul float %325, %175 ; [#uses=1]
+ %357 = fmul float %310, %169 ; [#uses=1]
+ %358 = fadd float %356, %357 ; [#uses=1]
+ %359 = fmul float %295, %163 ; [#uses=1]
+ %360 = fadd float %358, %359 ; [#uses=1]
+ %361 = fadd float %360, %343 ; [#uses=1]
+ %362 = fmul float %228, %315 ; [#uses=1]
+ %363 = fmul float %213, %300 ; [#uses=1]
+ %364 = fadd float %362, %363 ; [#uses=1]
+ %365 = fmul float %186, %273 ; [#uses=1]
+ %366 = fadd float %364, %365 ; [#uses=1]
+ %367 = fmul float %233, %315 ; [#uses=1]
+ %368 = fmul float %218, %300 ; [#uses=1]
+ %369 = fadd float %367, %368 ; [#uses=1]
+ %370 = fmul float %197, %273 ; [#uses=1]
+ %371 = fadd float %369, %370 ; [#uses=1]
+ %372 = fmul float %238, %315 ; [#uses=1]
+ %373 = fmul float %223, %300 ; [#uses=1]
+ %374 = fadd float %372, %373 ; [#uses=1]
+ %375 = fmul float %208, %273 ; [#uses=1]
+ %376 = fadd float %374, %375 ; [#uses=1]
+ %377 = fmul float %228, %320 ; [#uses=1]
+ %378 = fmul float %213, %305 ; [#uses=1]
+ %379 = fadd float %377, %378 ; [#uses=1]
+ %380 = fmul float %186, %284 ; [#uses=1]
+ %381 = fadd float %379, %380 ; [#uses=1]
+ %382 = fmul float %233, %320 ; [#uses=1]
+ %383 = fmul float %218, %305 ; [#uses=1]
+ %384 = fadd float %382, %383 ; [#uses=1]
+ %385 = fmul float %197, %284 ; [#uses=1]
+ %386 = fadd float %384, %385 ; [#uses=1]
+ %387 = fmul float %238, %320 ; [#uses=1]
+ %388 = fmul float %223, %305 ; [#uses=1]
+ %389 = fadd float %387, %388 ; [#uses=1]
+ %390 = fmul float %208, %284 ; [#uses=1]
+ %391 = fadd float %389, %390 ; [#uses=1]
+ %392 = fmul float %228, %325 ; [#uses=1]
+ %393 = fmul float %213, %310 ; [#uses=1]
+ %394 = fadd float %392, %393 ; [#uses=1]
+ %395 = fmul float %186, %295 ; [#uses=1]
+ %396 = fadd float %394, %395 ; [#uses=1]
+ %397 = fmul float %233, %325 ; [#uses=1]
+ %398 = fmul float %218, %310 ; [#uses=1]
+ %399 = fadd float %397, %398 ; [#uses=1]
+ %400 = fmul float %197, %295 ; [#uses=1]
+ %401 = fadd float %399, %400 ; [#uses=1]
+ %402 = fmul float %238, %325 ; [#uses=1]
+ %403 = fmul float %223, %310 ; [#uses=1]
+ %404 = fadd float %402, %403 ; [#uses=1]
+ %405 = fmul float %208, %295 ; [#uses=1]
+ %406 = fadd float %404, %405 ; [#uses=1]
+ %407 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %406, float* %407, align 8
+ %408 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %401, float* %408, align 4
+ %409 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %396, float* %409, align 8
+ %410 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %410, align 4
+ %411 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %391, float* %411, align 8
+ %412 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %386, float* %412, align 4
+ %413 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %381, float* %413, align 8
+ %414 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %414, align 4
+ %415 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %376, float* %415, align 8
+ %416 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %371, float* %416, align 4
+ %417 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %366, float* %417, align 8
+ %418 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %418, align 4
+ %419 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %361, float* %419, align 8
+ %420 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %355, float* %420, align 4
+ %421 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %349, float* %421, align 8
+ %422 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %422, align 4
+ %423 = getelementptr inbounds %struct.btTransform* %trConstraintCur, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %423, %struct.btQuaternion* %qConstraintCur) nounwind
+ %424 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %424, %struct.btQuaternion* %1) nounwind
+ %425 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %425, %struct.btQuaternion* %0) nounwind
+ %426 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %427 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %428 = load float* %427, align 8 ; [#uses=1]
+ %429 = fsub float -0.000000e+00, %428 ; [#uses=4]
+ %430 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %431 = load float* %430, align 4 ; [#uses=1]
+ %432 = fsub float -0.000000e+00, %431 ; [#uses=4]
+ %433 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %434 = load float* %433, align 8 ; [#uses=1]
+ %435 = fsub float -0.000000e+00, %434 ; [#uses=4]
+ %436 = load float* %426, align 4 ; [#uses=4]
+ %437 = getelementptr inbounds %struct.btQuaternion* %q, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %438 = load float* %437, align 4 ; [#uses=4]
+ %439 = fmul float %436, %438 ; [#uses=1]
+ %440 = getelementptr inbounds %struct.btQuaternion* %q, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %441 = load float* %440, align 4 ; [#uses=4]
+ %442 = fmul float %441, %435 ; [#uses=1]
+ %443 = fsub float %439, %442 ; [#uses=1]
+ %444 = getelementptr inbounds %struct.btQuaternion* %q, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %445 = load float* %444, align 4 ; [#uses=4]
+ %446 = fmul float %445, %432 ; [#uses=1]
+ %447 = fsub float %443, %446 ; [#uses=1]
+ %448 = getelementptr inbounds %struct.btQuaternion* %q, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %449 = load float* %448, align 4 ; [#uses=4]
+ %450 = fmul float %449, %429 ; [#uses=1]
+ %451 = fsub float %447, %450 ; [#uses=4]
+ %452 = fmul float %436, %449 ; [#uses=1]
+ %453 = fmul float %438, %429 ; [#uses=1]
+ %454 = fadd float %452, %453 ; [#uses=1]
+ %455 = fmul float %445, %435 ; [#uses=1]
+ %456 = fadd float %454, %455 ; [#uses=1]
+ %457 = fmul float %441, %432 ; [#uses=1]
+ %458 = fsub float %456, %457 ; [#uses=4]
+ %459 = fmul float %436, %445 ; [#uses=1]
+ %460 = fmul float %438, %432 ; [#uses=1]
+ %461 = fadd float %459, %460 ; [#uses=1]
+ %462 = fmul float %441, %429 ; [#uses=1]
+ %463 = fadd float %461, %462 ; [#uses=1]
+ %464 = fmul float %449, %435 ; [#uses=1]
+ %465 = fsub float %463, %464 ; [#uses=4]
+ %466 = fmul float %436, %441 ; [#uses=1]
+ %467 = fmul float %438, %435 ; [#uses=1]
+ %468 = fadd float %466, %467 ; [#uses=1]
+ %469 = fmul float %449, %432 ; [#uses=1]
+ %470 = fadd float %468, %469 ; [#uses=1]
+ %471 = fmul float %445, %429 ; [#uses=1]
+ %472 = fsub float %470, %471 ; [#uses=4]
+ %473 = getelementptr inbounds %struct.btQuaternion* %1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %474 = load float* %473, align 4 ; [#uses=4]
+ %475 = fmul float %451, %474 ; [#uses=1]
+ %476 = getelementptr inbounds %struct.btQuaternion* %1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %477 = load float* %476, align 8 ; [#uses=4]
+ %478 = fmul float %472, %477 ; [#uses=1]
+ %479 = fsub float %475, %478 ; [#uses=1]
+ %480 = getelementptr inbounds %struct.btQuaternion* %1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %481 = load float* %480, align 4 ; [#uses=4]
+ %482 = fmul float %465, %481 ; [#uses=1]
+ %483 = fsub float %479, %482 ; [#uses=1]
+ %484 = getelementptr inbounds %struct.btQuaternion* %1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %485 = load float* %484, align 8 ; [#uses=4]
+ %486 = fmul float %458, %485 ; [#uses=1]
+ %487 = fsub float %483, %486 ; [#uses=1]
+ %488 = fmul float %451, %485 ; [#uses=1]
+ %489 = fmul float %458, %474 ; [#uses=1]
+ %490 = fadd float %488, %489 ; [#uses=1]
+ %491 = fmul float %472, %481 ; [#uses=1]
+ %492 = fadd float %490, %491 ; [#uses=1]
+ %493 = fmul float %465, %477 ; [#uses=1]
+ %494 = fsub float %492, %493 ; [#uses=1]
+ %495 = fmul float %451, %481 ; [#uses=1]
+ %496 = fmul float %465, %474 ; [#uses=1]
+ %497 = fadd float %495, %496 ; [#uses=1]
+ %498 = fmul float %458, %477 ; [#uses=1]
+ %499 = fadd float %497, %498 ; [#uses=1]
+ %500 = fmul float %472, %485 ; [#uses=1]
+ %501 = fsub float %499, %500 ; [#uses=1]
+ %502 = fmul float %451, %477 ; [#uses=1]
+ %503 = fmul float %472, %474 ; [#uses=1]
+ %504 = fadd float %502, %503 ; [#uses=1]
+ %505 = fmul float %465, %485 ; [#uses=1]
+ %506 = fadd float %504, %505 ; [#uses=1]
+ %507 = fmul float %458, %481 ; [#uses=1]
+ %508 = fsub float %506, %507 ; [#uses=1]
+ %509 = getelementptr inbounds %struct.btQuaternion* %qConstraint, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %508, float* %509, align 8
+ %510 = getelementptr inbounds %struct.btQuaternion* %qConstraint, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %501, float* %510, align 4
+ %511 = getelementptr inbounds %struct.btQuaternion* %qConstraint, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %494, float* %511, align 8
+ %512 = getelementptr inbounds %struct.btQuaternion* %qConstraint, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %487, float* %512, align 4
+ call void @_ZN21btConeTwistConstraint31setMotorTargetInConstraintSpaceERK12btQuaternion(%struct.btConeTwistConstraint* %this, %struct.btQuaternion* %qConstraint)
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN21btConeTwistConstraint14calcAngleInfo2ERK11btTransformS2_RK11btMatrix3x3S5_(%struct.btConeTwistConstraint* %this, %struct.btTransform* %transA, %struct.btTransform* %transB, %struct.btMatrix3x3* nocapture %invInertiaWorldA, %struct.btMatrix3x3* nocapture %invInertiaWorldB) nounwind align 2 {
+entry:
+ %0 = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %2 = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %3 = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %trDeltaAB = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %qDeltaAB = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %4 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 17 ; [#uses=4]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 23 ; [#uses=2]
+ store i8 0, i8* %6, align 1
+ %7 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 24 ; [#uses=7]
+ store i8 0, i8* %7, align 2
+ %8 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 29 ; [#uses=1]
+ %9 = load i8* %8, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %9, 0 ; [#uses=1]
+ br i1 %toBool, label %bb10, label %bb
+
+bb: ; preds = %entry
+ %10 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ %11 = load i8* %10, align 1 ; [#uses=1]
+ %toBool1not = icmp eq i8 %11, 0 ; [#uses=1]
+ br i1 %toBool1not, label %bb5, label %bb10
+
+bb5: ; preds = %bb
+ %12 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 31, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=6]
+ %14 = fmul float %13, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 31, i32 0, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=5]
+ %17 = fmul float %16, %16 ; [#uses=1]
+ %18 = fadd float %14, %17 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 31, i32 0, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=4]
+ %21 = fmul float %20, %20 ; [#uses=1]
+ %22 = fadd float %18, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 31, i32 0, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=5]
+ %25 = fmul float %24, %24 ; [#uses=1]
+ %26 = fadd float %22, %25 ; [#uses=1]
+ %27 = fdiv float 2.000000e+00, %26 ; [#uses=3]
+ %28 = fmul float %13, %27 ; [#uses=2]
+ %29 = fmul float %16, %27 ; [#uses=3]
+ %30 = fmul float %20, %27 ; [#uses=4]
+ %31 = fmul float %24, %28 ; [#uses=2]
+ %32 = fmul float %24, %29 ; [#uses=2]
+ %33 = fmul float %24, %30 ; [#uses=2]
+ %34 = fmul float %13, %28 ; [#uses=2]
+ %35 = fmul float %13, %29 ; [#uses=2]
+ %36 = fmul float %13, %30 ; [#uses=2]
+ %37 = fmul float %16, %29 ; [#uses=2]
+ %38 = fmul float %16, %30 ; [#uses=2]
+ %39 = fmul float %20, %30 ; [#uses=2]
+ %40 = fadd float %34, %37 ; [#uses=1]
+ %41 = fsub float 1.000000e+00, %40 ; [#uses=3]
+ %42 = fadd float %38, %31 ; [#uses=3]
+ %43 = fsub float %36, %32 ; [#uses=3]
+ %44 = fsub float %38, %31 ; [#uses=3]
+ %45 = fadd float %34, %39 ; [#uses=1]
+ %46 = fsub float 1.000000e+00, %45 ; [#uses=3]
+ %47 = fadd float %35, %33 ; [#uses=3]
+ %48 = fadd float %36, %32 ; [#uses=3]
+ %49 = fsub float %35, %33 ; [#uses=3]
+ %50 = fadd float %37, %39 ; [#uses=1]
+ %51 = fsub float 1.000000e+00, %50 ; [#uses=3]
+ %52 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=4]
+ %54 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=3]
+ %56 = fmul float %53, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=4]
+ %59 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=3]
+ %61 = fmul float %58, %60 ; [#uses=1]
+ %62 = fadd float %56, %61 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=4]
+ %65 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=3]
+ %67 = fmul float %64, %66 ; [#uses=1]
+ %68 = fadd float %62, %67 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ %71 = fadd float %68, %70 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=4]
+ %74 = fmul float %73, %55 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=4]
+ %77 = fmul float %76, %60 ; [#uses=1]
+ %78 = fadd float %74, %77 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=4]
+ %81 = fmul float %80, %66 ; [#uses=1]
+ %82 = fadd float %78, %81 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ %85 = fadd float %82, %84 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=4]
+ %88 = fmul float %87, %55 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=4]
+ %91 = fmul float %90, %60 ; [#uses=1]
+ %92 = fadd float %88, %91 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=4]
+ %95 = fmul float %94, %66 ; [#uses=1]
+ %96 = fadd float %92, %95 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ %99 = fadd float %96, %98 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=3]
+ %102 = fmul float %101, %53 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %104 = load float* %103, align 4 ; [#uses=3]
+ %105 = fmul float %104, %58 ; [#uses=1]
+ %106 = fadd float %102, %105 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %108 = load float* %107, align 4 ; [#uses=3]
+ %109 = fmul float %108, %64 ; [#uses=1]
+ %110 = fadd float %106, %109 ; [#uses=4]
+ %111 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=3]
+ %113 = fmul float %112, %53 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=3]
+ %116 = fmul float %115, %58 ; [#uses=1]
+ %117 = fadd float %113, %116 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %119 = load float* %118, align 4 ; [#uses=3]
+ %120 = fmul float %119, %64 ; [#uses=1]
+ %121 = fadd float %117, %120 ; [#uses=4]
+ %122 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=3]
+ %124 = fmul float %123, %53 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %126 = load float* %125, align 4 ; [#uses=3]
+ %127 = fmul float %126, %58 ; [#uses=1]
+ %128 = fadd float %124, %127 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=3]
+ %131 = fmul float %130, %64 ; [#uses=1]
+ %132 = fadd float %128, %131 ; [#uses=4]
+ %133 = fmul float %101, %73 ; [#uses=1]
+ %134 = fmul float %104, %76 ; [#uses=1]
+ %135 = fadd float %133, %134 ; [#uses=1]
+ %136 = fmul float %108, %80 ; [#uses=1]
+ %137 = fadd float %135, %136 ; [#uses=4]
+ %138 = fmul float %112, %73 ; [#uses=1]
+ %139 = fmul float %115, %76 ; [#uses=1]
+ %140 = fadd float %138, %139 ; [#uses=1]
+ %141 = fmul float %119, %80 ; [#uses=1]
+ %142 = fadd float %140, %141 ; [#uses=4]
+ %143 = fmul float %123, %73 ; [#uses=1]
+ %144 = fmul float %126, %76 ; [#uses=1]
+ %145 = fadd float %143, %144 ; [#uses=1]
+ %146 = fmul float %130, %80 ; [#uses=1]
+ %147 = fadd float %145, %146 ; [#uses=4]
+ %148 = fmul float %101, %87 ; [#uses=1]
+ %149 = fmul float %104, %90 ; [#uses=1]
+ %150 = fadd float %148, %149 ; [#uses=1]
+ %151 = fmul float %108, %94 ; [#uses=1]
+ %152 = fadd float %150, %151 ; [#uses=4]
+ %153 = fmul float %112, %87 ; [#uses=1]
+ %154 = fmul float %115, %90 ; [#uses=1]
+ %155 = fadd float %153, %154 ; [#uses=1]
+ %156 = fmul float %119, %94 ; [#uses=1]
+ %157 = fadd float %155, %156 ; [#uses=4]
+ %158 = fmul float %123, %87 ; [#uses=1]
+ %159 = fmul float %126, %90 ; [#uses=1]
+ %160 = fadd float %158, %159 ; [#uses=1]
+ %161 = fmul float %130, %94 ; [#uses=1]
+ %162 = fadd float %160, %161 ; [#uses=4]
+ %163 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %164 = load float* %163, align 4 ; [#uses=4]
+ %165 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %166 = load float* %165, align 4 ; [#uses=3]
+ %167 = fmul float %164, %166 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=4]
+ %170 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %171 = load float* %170, align 4 ; [#uses=3]
+ %172 = fmul float %169, %171 ; [#uses=1]
+ %173 = fadd float %167, %172 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %175 = load float* %174, align 4 ; [#uses=4]
+ %176 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %177 = load float* %176, align 4 ; [#uses=3]
+ %178 = fmul float %175, %177 ; [#uses=1]
+ %179 = fadd float %173, %178 ; [#uses=1]
+ %180 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %181 = load float* %180, align 4 ; [#uses=1]
+ %182 = fadd float %179, %181 ; [#uses=1]
+ %183 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %184 = load float* %183, align 4 ; [#uses=4]
+ %185 = fmul float %184, %166 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %187 = load float* %186, align 4 ; [#uses=4]
+ %188 = fmul float %187, %171 ; [#uses=1]
+ %189 = fadd float %185, %188 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %191 = load float* %190, align 4 ; [#uses=4]
+ %192 = fmul float %191, %177 ; [#uses=1]
+ %193 = fadd float %189, %192 ; [#uses=1]
+ %194 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %195 = load float* %194, align 4 ; [#uses=1]
+ %196 = fadd float %193, %195 ; [#uses=1]
+ %197 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %198 = load float* %197, align 4 ; [#uses=4]
+ %199 = fmul float %198, %166 ; [#uses=1]
+ %200 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %201 = load float* %200, align 4 ; [#uses=4]
+ %202 = fmul float %201, %171 ; [#uses=1]
+ %203 = fadd float %199, %202 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %205 = load float* %204, align 4 ; [#uses=4]
+ %206 = fmul float %205, %177 ; [#uses=1]
+ %207 = fadd float %203, %206 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %209 = load float* %208, align 4 ; [#uses=1]
+ %210 = fadd float %207, %209 ; [#uses=1]
+ %211 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %212 = load float* %211, align 4 ; [#uses=3]
+ %213 = fmul float %212, %164 ; [#uses=1]
+ %214 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %215 = load float* %214, align 4 ; [#uses=3]
+ %216 = fmul float %215, %169 ; [#uses=1]
+ %217 = fadd float %213, %216 ; [#uses=1]
+ %218 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %219 = load float* %218, align 4 ; [#uses=3]
+ %220 = fmul float %219, %175 ; [#uses=1]
+ %221 = fadd float %217, %220 ; [#uses=4]
+ %222 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %223 = load float* %222, align 4 ; [#uses=3]
+ %224 = fmul float %223, %164 ; [#uses=1]
+ %225 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %226 = load float* %225, align 4 ; [#uses=3]
+ %227 = fmul float %226, %169 ; [#uses=1]
+ %228 = fadd float %224, %227 ; [#uses=1]
+ %229 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %230 = load float* %229, align 4 ; [#uses=3]
+ %231 = fmul float %230, %175 ; [#uses=1]
+ %232 = fadd float %228, %231 ; [#uses=4]
+ %233 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %234 = load float* %233, align 4 ; [#uses=3]
+ %235 = fmul float %234, %164 ; [#uses=1]
+ %236 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %237 = load float* %236, align 4 ; [#uses=3]
+ %238 = fmul float %237, %169 ; [#uses=1]
+ %239 = fadd float %235, %238 ; [#uses=1]
+ %240 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %241 = load float* %240, align 4 ; [#uses=3]
+ %242 = fmul float %241, %175 ; [#uses=1]
+ %243 = fadd float %239, %242 ; [#uses=4]
+ %244 = fmul float %212, %184 ; [#uses=1]
+ %245 = fmul float %215, %187 ; [#uses=1]
+ %246 = fadd float %244, %245 ; [#uses=1]
+ %247 = fmul float %219, %191 ; [#uses=1]
+ %248 = fadd float %246, %247 ; [#uses=4]
+ %249 = fmul float %223, %184 ; [#uses=1]
+ %250 = fmul float %226, %187 ; [#uses=1]
+ %251 = fadd float %249, %250 ; [#uses=1]
+ %252 = fmul float %230, %191 ; [#uses=1]
+ %253 = fadd float %251, %252 ; [#uses=4]
+ %254 = fmul float %234, %184 ; [#uses=1]
+ %255 = fmul float %237, %187 ; [#uses=1]
+ %256 = fadd float %254, %255 ; [#uses=1]
+ %257 = fmul float %241, %191 ; [#uses=1]
+ %258 = fadd float %256, %257 ; [#uses=4]
+ %259 = fmul float %212, %198 ; [#uses=1]
+ %260 = fmul float %215, %201 ; [#uses=1]
+ %261 = fadd float %259, %260 ; [#uses=1]
+ %262 = fmul float %219, %205 ; [#uses=1]
+ %263 = fadd float %261, %262 ; [#uses=4]
+ %264 = fmul float %223, %198 ; [#uses=1]
+ %265 = fmul float %226, %201 ; [#uses=1]
+ %266 = fadd float %264, %265 ; [#uses=1]
+ %267 = fmul float %230, %205 ; [#uses=1]
+ %268 = fadd float %266, %267 ; [#uses=4]
+ %269 = fmul float %234, %198 ; [#uses=1]
+ %270 = fmul float %237, %201 ; [#uses=1]
+ %271 = fadd float %269, %270 ; [#uses=1]
+ %272 = fmul float %241, %205 ; [#uses=1]
+ %273 = fadd float %271, %272 ; [#uses=4]
+ %274 = fsub float -0.000000e+00, %71 ; [#uses=3]
+ %275 = fsub float -0.000000e+00, %85 ; [#uses=3]
+ %276 = fsub float -0.000000e+00, %99 ; [#uses=3]
+ %277 = fmul float %152, %276 ; [#uses=1]
+ %278 = fmul float %137, %275 ; [#uses=1]
+ %279 = fadd float %277, %278 ; [#uses=1]
+ %280 = fmul float %110, %274 ; [#uses=1]
+ %281 = fadd float %279, %280 ; [#uses=3]
+ %282 = fmul float %157, %276 ; [#uses=1]
+ %283 = fmul float %142, %275 ; [#uses=1]
+ %284 = fadd float %282, %283 ; [#uses=1]
+ %285 = fmul float %121, %274 ; [#uses=1]
+ %286 = fadd float %284, %285 ; [#uses=3]
+ %287 = fmul float %162, %276 ; [#uses=1]
+ %288 = fmul float %147, %275 ; [#uses=1]
+ %289 = fadd float %287, %288 ; [#uses=1]
+ %290 = fmul float %132, %274 ; [#uses=1]
+ %291 = fadd float %289, %290 ; [#uses=3]
+ %292 = fmul float %243, 0.000000e+00 ; [#uses=1]
+ %293 = fmul float %232, 0.000000e+00 ; [#uses=1]
+ %294 = fadd float %292, %293 ; [#uses=1]
+ %295 = fmul float %221, 0.000000e+00 ; [#uses=1]
+ %296 = fadd float %294, %295 ; [#uses=1]
+ %297 = fadd float %296, %182 ; [#uses=1]
+ %298 = fmul float %258, 0.000000e+00 ; [#uses=1]
+ %299 = fmul float %253, 0.000000e+00 ; [#uses=1]
+ %300 = fadd float %298, %299 ; [#uses=1]
+ %301 = fmul float %248, 0.000000e+00 ; [#uses=1]
+ %302 = fadd float %300, %301 ; [#uses=1]
+ %303 = fadd float %302, %196 ; [#uses=1]
+ %304 = fmul float %273, 0.000000e+00 ; [#uses=1]
+ %305 = fmul float %268, 0.000000e+00 ; [#uses=1]
+ %306 = fadd float %304, %305 ; [#uses=1]
+ %307 = fmul float %263, 0.000000e+00 ; [#uses=1]
+ %308 = fadd float %306, %307 ; [#uses=1]
+ %309 = fadd float %308, %210 ; [#uses=1]
+ %310 = fmul float %48, %243 ; [#uses=1]
+ %311 = fmul float %44, %232 ; [#uses=1]
+ %312 = fadd float %310, %311 ; [#uses=1]
+ %313 = fmul float %41, %221 ; [#uses=1]
+ %314 = fadd float %312, %313 ; [#uses=4]
+ %315 = fmul float %49, %243 ; [#uses=1]
+ %316 = fmul float %46, %232 ; [#uses=1]
+ %317 = fadd float %315, %316 ; [#uses=1]
+ %318 = fmul float %42, %221 ; [#uses=1]
+ %319 = fadd float %317, %318 ; [#uses=4]
+ %320 = fmul float %51, %243 ; [#uses=1]
+ %321 = fmul float %47, %232 ; [#uses=1]
+ %322 = fadd float %320, %321 ; [#uses=1]
+ %323 = fmul float %43, %221 ; [#uses=1]
+ %324 = fadd float %322, %323 ; [#uses=4]
+ %325 = fmul float %48, %258 ; [#uses=1]
+ %326 = fmul float %44, %253 ; [#uses=1]
+ %327 = fadd float %325, %326 ; [#uses=1]
+ %328 = fmul float %41, %248 ; [#uses=1]
+ %329 = fadd float %327, %328 ; [#uses=4]
+ %330 = fmul float %49, %258 ; [#uses=1]
+ %331 = fmul float %46, %253 ; [#uses=1]
+ %332 = fadd float %330, %331 ; [#uses=1]
+ %333 = fmul float %42, %248 ; [#uses=1]
+ %334 = fadd float %332, %333 ; [#uses=4]
+ %335 = fmul float %51, %258 ; [#uses=1]
+ %336 = fmul float %47, %253 ; [#uses=1]
+ %337 = fadd float %335, %336 ; [#uses=1]
+ %338 = fmul float %43, %248 ; [#uses=1]
+ %339 = fadd float %337, %338 ; [#uses=4]
+ %340 = fmul float %48, %273 ; [#uses=1]
+ %341 = fmul float %44, %268 ; [#uses=1]
+ %342 = fadd float %340, %341 ; [#uses=1]
+ %343 = fmul float %41, %263 ; [#uses=1]
+ %344 = fadd float %342, %343 ; [#uses=4]
+ %345 = fmul float %49, %273 ; [#uses=1]
+ %346 = fmul float %46, %268 ; [#uses=1]
+ %347 = fadd float %345, %346 ; [#uses=1]
+ %348 = fmul float %42, %263 ; [#uses=1]
+ %349 = fadd float %347, %348 ; [#uses=4]
+ %350 = fmul float %51, %273 ; [#uses=1]
+ %351 = fmul float %47, %268 ; [#uses=1]
+ %352 = fadd float %350, %351 ; [#uses=1]
+ %353 = fmul float %43, %263 ; [#uses=1]
+ %354 = fadd float %352, %353 ; [#uses=4]
+ %355 = fmul float %324, %291 ; [#uses=1]
+ %356 = fmul float %319, %286 ; [#uses=1]
+ %357 = fadd float %355, %356 ; [#uses=1]
+ %358 = fmul float %314, %281 ; [#uses=1]
+ %359 = fadd float %357, %358 ; [#uses=1]
+ %360 = fadd float %359, %297 ; [#uses=1]
+ %361 = fmul float %339, %291 ; [#uses=1]
+ %362 = fmul float %334, %286 ; [#uses=1]
+ %363 = fadd float %361, %362 ; [#uses=1]
+ %364 = fmul float %329, %281 ; [#uses=1]
+ %365 = fadd float %363, %364 ; [#uses=1]
+ %366 = fadd float %365, %303 ; [#uses=1]
+ %367 = fmul float %354, %291 ; [#uses=1]
+ %368 = fmul float %349, %286 ; [#uses=1]
+ %369 = fadd float %367, %368 ; [#uses=1]
+ %370 = fmul float %344, %281 ; [#uses=1]
+ %371 = fadd float %369, %370 ; [#uses=1]
+ %372 = fadd float %371, %309 ; [#uses=1]
+ %373 = fmul float %132, %324 ; [#uses=1]
+ %374 = fmul float %121, %319 ; [#uses=1]
+ %375 = fadd float %373, %374 ; [#uses=1]
+ %376 = fmul float %110, %314 ; [#uses=1]
+ %377 = fadd float %375, %376 ; [#uses=1]
+ %378 = fmul float %147, %324 ; [#uses=1]
+ %379 = fmul float %142, %319 ; [#uses=1]
+ %380 = fadd float %378, %379 ; [#uses=1]
+ %381 = fmul float %137, %314 ; [#uses=1]
+ %382 = fadd float %380, %381 ; [#uses=1]
+ %383 = fmul float %162, %324 ; [#uses=1]
+ %384 = fmul float %157, %319 ; [#uses=1]
+ %385 = fadd float %383, %384 ; [#uses=1]
+ %386 = fmul float %152, %314 ; [#uses=1]
+ %387 = fadd float %385, %386 ; [#uses=1]
+ %388 = fmul float %132, %339 ; [#uses=1]
+ %389 = fmul float %121, %334 ; [#uses=1]
+ %390 = fadd float %388, %389 ; [#uses=1]
+ %391 = fmul float %110, %329 ; [#uses=1]
+ %392 = fadd float %390, %391 ; [#uses=1]
+ %393 = fmul float %147, %339 ; [#uses=1]
+ %394 = fmul float %142, %334 ; [#uses=1]
+ %395 = fadd float %393, %394 ; [#uses=1]
+ %396 = fmul float %137, %329 ; [#uses=1]
+ %397 = fadd float %395, %396 ; [#uses=1]
+ %398 = fmul float %162, %339 ; [#uses=1]
+ %399 = fmul float %157, %334 ; [#uses=1]
+ %400 = fadd float %398, %399 ; [#uses=1]
+ %401 = fmul float %152, %329 ; [#uses=1]
+ %402 = fadd float %400, %401 ; [#uses=1]
+ %403 = fmul float %132, %354 ; [#uses=1]
+ %404 = fmul float %121, %349 ; [#uses=1]
+ %405 = fadd float %403, %404 ; [#uses=1]
+ %406 = fmul float %110, %344 ; [#uses=1]
+ %407 = fadd float %405, %406 ; [#uses=1]
+ %408 = fmul float %147, %354 ; [#uses=1]
+ %409 = fmul float %142, %349 ; [#uses=1]
+ %410 = fadd float %408, %409 ; [#uses=1]
+ %411 = fmul float %137, %344 ; [#uses=1]
+ %412 = fadd float %410, %411 ; [#uses=1]
+ %413 = fmul float %162, %354 ; [#uses=1]
+ %414 = fmul float %157, %349 ; [#uses=1]
+ %415 = fadd float %413, %414 ; [#uses=1]
+ %416 = fmul float %152, %344 ; [#uses=1]
+ %417 = fadd float %415, %416 ; [#uses=1]
+ %418 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %417, float* %418, align 8
+ %419 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %412, float* %419, align 4
+ %420 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %407, float* %420, align 8
+ %421 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %421, align 4
+ %422 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %402, float* %422, align 8
+ %423 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %397, float* %423, align 4
+ %424 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %392, float* %424, align 8
+ %425 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %425, align 4
+ %426 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %387, float* %426, align 8
+ %427 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %382, float* %427, align 4
+ %428 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %377, float* %428, align 8
+ %429 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %429, align 4
+ %430 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %372, float* %430, align 8
+ %431 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %366, float* %431, align 4
+ %432 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %360, float* %432, align 8
+ %433 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %433, align 4
+ %434 = getelementptr inbounds %struct.btTransform* %trDeltaAB, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %434, %struct.btQuaternion* %qDeltaAB) nounwind
+ %435 = getelementptr inbounds %struct.btQuaternion* %qDeltaAB, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %436 = getelementptr inbounds %struct.btQuaternion* %qDeltaAB, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %437 = getelementptr inbounds %struct.btQuaternion* %qDeltaAB, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %438 = load float* %437, align 8 ; [#uses=4]
+ %439 = load float* %436, align 4 ; [#uses=4]
+ %440 = load float* %435, align 8 ; [#uses=4]
+ %441 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 0 ; [#uses=2]
+ store float %438, float* %441, align 4
+ %442 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 1 ; [#uses=2]
+ store float %439, float* %442, align 4
+ %443 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 2 ; [#uses=2]
+ store float %440, float* %443, align 4
+ %444 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %444, align 4
+ %445 = fmul float %438, %438 ; [#uses=1]
+ %446 = fmul float %439, %439 ; [#uses=1]
+ %447 = fadd float %445, %446 ; [#uses=1]
+ %448 = fmul float %440, %440 ; [#uses=1]
+ %449 = fadd float %447, %448 ; [#uses=1]
+ %450 = call float @sqrtf(float %449) nounwind readonly ; [#uses=1]
+ %451 = fdiv float 1.000000e+00, %450 ; [#uses=3]
+ %452 = fmul float %438, %451 ; [#uses=1]
+ store float %452, float* %441, align 4
+ %453 = fmul float %439, %451 ; [#uses=1]
+ store float %453, float* %442, align 4
+ %454 = fmul float %440, %451 ; [#uses=1]
+ store float %454, float* %443, align 4
+ %455 = getelementptr inbounds %struct.btQuaternion* %qDeltaAB, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %456 = load float* %455, align 4 ; [#uses=2]
+ %457 = fcmp olt float %456, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i.i = select i1 %457, float -1.000000e+00, float %456 ; [#uses=2]
+ %458 = fcmp ogt float %x_addr.0.i.i, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i.i = select i1 %458, float 1.000000e+00, float %x_addr.0.i.i ; [#uses=1]
+ %459 = call float @acosf(float %x_addr.1.i.i) nounwind readonly ; [#uses=1]
+ %460 = fmul float %459, 2.000000e+00 ; [#uses=2]
+ store float %460, float* %4, align 4
+ %461 = call float @fabsf(float %460) nounwind readnone ; [#uses=1]
+ %462 = fcmp olt float %461, 0x3E80000000000000 ; [#uses=1]
+ br i1 %462, label %return, label %bb9
+
+bb9: ; preds = %bb5
+ store i8 1, i8* %7, align 2
+ ret void
+
+bb10: ; preds = %bb, %entry
+ %463 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %463, %struct.btQuaternion* %3) nounwind
+ %464 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %464, %struct.btQuaternion* %2) nounwind
+ %465 = getelementptr inbounds %struct.btQuaternion* %2, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %466 = load float* %465, align 4 ; [#uses=4]
+ %467 = getelementptr inbounds %struct.btQuaternion* %3, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %468 = load float* %467, align 4 ; [#uses=4]
+ %469 = fmul float %466, %468 ; [#uses=1]
+ %470 = getelementptr inbounds %struct.btQuaternion* %2, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %471 = load float* %470, align 8 ; [#uses=4]
+ %472 = getelementptr inbounds %struct.btQuaternion* %3, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %473 = load float* %472, align 8 ; [#uses=4]
+ %474 = fmul float %471, %473 ; [#uses=1]
+ %475 = fsub float %469, %474 ; [#uses=1]
+ %476 = getelementptr inbounds %struct.btQuaternion* %2, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %477 = load float* %476, align 4 ; [#uses=4]
+ %478 = getelementptr inbounds %struct.btQuaternion* %3, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %479 = load float* %478, align 4 ; [#uses=4]
+ %480 = fmul float %477, %479 ; [#uses=1]
+ %481 = fsub float %475, %480 ; [#uses=1]
+ %482 = getelementptr inbounds %struct.btQuaternion* %2, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %483 = load float* %482, align 8 ; [#uses=4]
+ %484 = getelementptr inbounds %struct.btQuaternion* %3, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %485 = load float* %484, align 8 ; [#uses=4]
+ %486 = fmul float %483, %485 ; [#uses=1]
+ %487 = fsub float %481, %486 ; [#uses=10]
+ %488 = fmul float %466, %485 ; [#uses=1]
+ %489 = fmul float %483, %468 ; [#uses=1]
+ %490 = fadd float %488, %489 ; [#uses=1]
+ %491 = fmul float %471, %479 ; [#uses=1]
+ %492 = fadd float %490, %491 ; [#uses=1]
+ %493 = fmul float %477, %473 ; [#uses=1]
+ %494 = fsub float %492, %493 ; [#uses=8]
+ %495 = fmul float %466, %479 ; [#uses=1]
+ %496 = fmul float %477, %468 ; [#uses=1]
+ %497 = fadd float %495, %496 ; [#uses=1]
+ %498 = fmul float %483, %473 ; [#uses=1]
+ %499 = fadd float %497, %498 ; [#uses=1]
+ %500 = fmul float %471, %485 ; [#uses=1]
+ %501 = fsub float %499, %500 ; [#uses=8]
+ %502 = fmul float %466, %473 ; [#uses=1]
+ %503 = fmul float %471, %468 ; [#uses=1]
+ %504 = fadd float %502, %503 ; [#uses=1]
+ %505 = fmul float %477, %485 ; [#uses=1]
+ %506 = fadd float %504, %505 ; [#uses=1]
+ %507 = fmul float %483, %479 ; [#uses=1]
+ %508 = fsub float %506, %507 ; [#uses=8]
+ %509 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %509, %struct.btQuaternion* %1) nounwind
+ %510 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %510, %struct.btQuaternion* %0) nounwind
+ %511 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %512 = load float* %511, align 4 ; [#uses=4]
+ %513 = getelementptr inbounds %struct.btQuaternion* %1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %514 = load float* %513, align 4 ; [#uses=4]
+ %515 = fmul float %512, %514 ; [#uses=1]
+ %516 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %517 = load float* %516, align 8 ; [#uses=4]
+ %518 = getelementptr inbounds %struct.btQuaternion* %1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %519 = load float* %518, align 8 ; [#uses=4]
+ %520 = fmul float %517, %519 ; [#uses=1]
+ %521 = fsub float %515, %520 ; [#uses=1]
+ %522 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %523 = load float* %522, align 4 ; [#uses=4]
+ %524 = getelementptr inbounds %struct.btQuaternion* %1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %525 = load float* %524, align 4 ; [#uses=4]
+ %526 = fmul float %523, %525 ; [#uses=1]
+ %527 = fsub float %521, %526 ; [#uses=1]
+ %528 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %529 = load float* %528, align 8 ; [#uses=4]
+ %530 = getelementptr inbounds %struct.btQuaternion* %1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %531 = load float* %530, align 8 ; [#uses=4]
+ %532 = fmul float %529, %531 ; [#uses=1]
+ %533 = fsub float %527, %532 ; [#uses=16]
+ %534 = fmul float %512, %531 ; [#uses=1]
+ %535 = fmul float %529, %514 ; [#uses=1]
+ %536 = fadd float %534, %535 ; [#uses=1]
+ %537 = fmul float %517, %525 ; [#uses=1]
+ %538 = fadd float %536, %537 ; [#uses=1]
+ %539 = fmul float %523, %519 ; [#uses=1]
+ %540 = fsub float %538, %539 ; [#uses=7]
+ %541 = fmul float %512, %525 ; [#uses=1]
+ %542 = fmul float %523, %514 ; [#uses=1]
+ %543 = fadd float %541, %542 ; [#uses=1]
+ %544 = fmul float %529, %519 ; [#uses=1]
+ %545 = fadd float %543, %544 ; [#uses=1]
+ %546 = fmul float %517, %531 ; [#uses=1]
+ %547 = fsub float %545, %546 ; [#uses=7]
+ %548 = fmul float %512, %519 ; [#uses=1]
+ %549 = fmul float %517, %514 ; [#uses=1]
+ %550 = fadd float %548, %549 ; [#uses=1]
+ %551 = fmul float %523, %531 ; [#uses=1]
+ %552 = fadd float %550, %551 ; [#uses=1]
+ %553 = fmul float %529, %525 ; [#uses=1]
+ %554 = fsub float %552, %553 ; [#uses=7]
+ %555 = fsub float -0.000000e+00, %540 ; [#uses=10]
+ %556 = fsub float -0.000000e+00, %547 ; [#uses=10]
+ %557 = fsub float -0.000000e+00, %554 ; [#uses=10]
+ %558 = fmul float %533, %487 ; [#uses=1]
+ %559 = fmul float %508, %557 ; [#uses=1]
+ %560 = fsub float %558, %559 ; [#uses=1]
+ %561 = fmul float %501, %556 ; [#uses=1]
+ %562 = fsub float %560, %561 ; [#uses=1]
+ %563 = fmul float %494, %555 ; [#uses=1]
+ %564 = fsub float %562, %563 ; [#uses=10]
+ %565 = fmul float %533, %494 ; [#uses=1]
+ %566 = fmul float %487, %555 ; [#uses=1]
+ %567 = fadd float %565, %566 ; [#uses=1]
+ %568 = fmul float %501, %557 ; [#uses=1]
+ %569 = fadd float %567, %568 ; [#uses=1]
+ %570 = fmul float %508, %556 ; [#uses=1]
+ %571 = fsub float %569, %570 ; [#uses=8]
+ %572 = fmul float %533, %501 ; [#uses=1]
+ %573 = fmul float %487, %556 ; [#uses=1]
+ %574 = fadd float %572, %573 ; [#uses=1]
+ %575 = fmul float %508, %555 ; [#uses=1]
+ %576 = fadd float %574, %575 ; [#uses=1]
+ %577 = fmul float %494, %557 ; [#uses=1]
+ %578 = fsub float %576, %577 ; [#uses=8]
+ %579 = fmul float %533, %508 ; [#uses=1]
+ %580 = fmul float %487, %557 ; [#uses=1]
+ %581 = fadd float %579, %580 ; [#uses=1]
+ %582 = fmul float %494, %556 ; [#uses=1]
+ %583 = fadd float %581, %582 ; [#uses=1]
+ %584 = fmul float %501, %555 ; [#uses=1]
+ %585 = fsub float %583, %584 ; [#uses=7]
+ %586 = fsub float -0.000000e+00, %585 ; [#uses=4]
+ %587 = load float* getelementptr inbounds (%struct.btQuadWord* @_ZL6vTwist, i32 0, i32 0, i32 0), align 8 ; [#uses=10]
+ %588 = fmul float %587, %586 ; [#uses=1]
+ %589 = load float* getelementptr inbounds (%struct.btQuadWord* @_ZL6vTwist, i32 0, i32 0, i32 1), align 4 ; [#uses=13]
+ %590 = fmul float %578, %589 ; [#uses=1]
+ %591 = fsub float %588, %590 ; [#uses=1]
+ %592 = load float* getelementptr inbounds (%struct.btQuadWord* @_ZL6vTwist, i32 0, i32 0, i32 2), align 8 ; [#uses=11]
+ %593 = fmul float %571, %592 ; [#uses=1]
+ %594 = fsub float %591, %593 ; [#uses=3]
+ %595 = fmul float %564, %592 ; [#uses=1]
+ %596 = fmul float %585, %589 ; [#uses=1]
+ %597 = fadd float %595, %596 ; [#uses=1]
+ %598 = fmul float %578, %587 ; [#uses=1]
+ %599 = fsub float %597, %598 ; [#uses=3]
+ %600 = fmul float %564, %589 ; [#uses=1]
+ %601 = fmul float %571, %587 ; [#uses=1]
+ %602 = fadd float %600, %601 ; [#uses=1]
+ %603 = fmul float %585, %592 ; [#uses=1]
+ %604 = fsub float %602, %603 ; [#uses=3]
+ %605 = fmul float %564, %587 ; [#uses=1]
+ %606 = fmul float %578, %592 ; [#uses=1]
+ %607 = fadd float %605, %606 ; [#uses=1]
+ %608 = fmul float %571, %589 ; [#uses=1]
+ %609 = fsub float %607, %608 ; [#uses=3]
+ %610 = fsub float -0.000000e+00, %571 ; [#uses=3]
+ %611 = fsub float -0.000000e+00, %578 ; [#uses=3]
+ %612 = fmul float %594, %610 ; [#uses=1]
+ %613 = fmul float %599, %564 ; [#uses=1]
+ %614 = fadd float %612, %613 ; [#uses=1]
+ %615 = fmul float %609, %611 ; [#uses=1]
+ %616 = fadd float %614, %615 ; [#uses=1]
+ %617 = fmul float %604, %586 ; [#uses=1]
+ %618 = fsub float %616, %617 ; [#uses=3]
+ %619 = fmul float %594, %611 ; [#uses=1]
+ %620 = fmul float %604, %564 ; [#uses=1]
+ %621 = fadd float %619, %620 ; [#uses=1]
+ %622 = fmul float %599, %586 ; [#uses=1]
+ %623 = fadd float %621, %622 ; [#uses=1]
+ %624 = fmul float %609, %610 ; [#uses=1]
+ %625 = fsub float %623, %624 ; [#uses=3]
+ %626 = fmul float %594, %586 ; [#uses=1]
+ %627 = fmul float %609, %564 ; [#uses=1]
+ %628 = fadd float %626, %627 ; [#uses=1]
+ %629 = fmul float %604, %610 ; [#uses=1]
+ %630 = fadd float %628, %629 ; [#uses=1]
+ %631 = fmul float %599, %611 ; [#uses=1]
+ %632 = fsub float %630, %631 ; [#uses=3]
+ %633 = fmul float %632, %632 ; [#uses=1]
+ %634 = fmul float %625, %625 ; [#uses=1]
+ %635 = fadd float %633, %634 ; [#uses=1]
+ %636 = fmul float %618, %618 ; [#uses=1]
+ %637 = fadd float %635, %636 ; [#uses=1]
+ %638 = call float @sqrtf(float %637) nounwind readonly ; [#uses=1]
+ %639 = fdiv float 1.000000e+00, %638 ; [#uses=3]
+ %640 = fmul float %632, %639 ; [#uses=3]
+ %641 = fmul float %625, %639 ; [#uses=3]
+ %642 = fmul float %618, %639 ; [#uses=3]
+ %643 = fmul float %587, %640 ; [#uses=1]
+ %644 = fmul float %589, %641 ; [#uses=1]
+ %645 = fadd float %643, %644 ; [#uses=1]
+ %646 = fmul float %592, %642 ; [#uses=1]
+ %647 = fadd float %645, %646 ; [#uses=2]
+ %648 = fcmp olt float %647, 0xBFEFFFFFC0000000 ; [#uses=1]
+ br i1 %648, label %bb.i82, label %bb1.i83
+
+bb.i82: ; preds = %bb10
+ %649 = call float @fabsf(float %592) nounwind readnone ; [#uses=1]
+ %650 = fcmp ogt float %649, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %650, label %bb.i.i, label %bb1.i.i
+
+bb.i.i: ; preds = %bb.i82
+ %651 = fmul float %589, %589 ; [#uses=1]
+ %652 = fmul float %592, %592 ; [#uses=1]
+ %653 = fadd float %651, %652 ; [#uses=1]
+ %654 = call float @sqrtf(float %653) nounwind readonly ; [#uses=1]
+ %655 = fdiv float 1.000000e+00, %654 ; [#uses=2]
+ %656 = fsub float -0.000000e+00, %592 ; [#uses=1]
+ %657 = fmul float %655, %656 ; [#uses=1]
+ %658 = fmul float %589, %655 ; [#uses=1]
+ br label %_Z15shortestArcQuatRK9btVector3S1_.exit
+
+bb1.i.i: ; preds = %bb.i82
+ %659 = fmul float %587, %587 ; [#uses=1]
+ %660 = fmul float %589, %589 ; [#uses=1]
+ %661 = fadd float %659, %660 ; [#uses=1]
+ %662 = call float @sqrtf(float %661) nounwind readonly ; [#uses=1]
+ %663 = fdiv float 1.000000e+00, %662 ; [#uses=2]
+ %664 = fsub float -0.000000e+00, %589 ; [#uses=1]
+ %665 = fmul float %663, %664 ; [#uses=1]
+ %666 = fmul float %587, %663 ; [#uses=1]
+ br label %_Z15shortestArcQuatRK9btVector3S1_.exit
+
+bb1.i83: ; preds = %bb10
+ %667 = fmul float %592, %641 ; [#uses=1]
+ %668 = fmul float %589, %642 ; [#uses=1]
+ %669 = fmul float %587, %642 ; [#uses=1]
+ %670 = fmul float %592, %640 ; [#uses=1]
+ %671 = fmul float %589, %640 ; [#uses=1]
+ %672 = fmul float %587, %641 ; [#uses=1]
+ %673 = fsub float %668, %667 ; [#uses=1]
+ %674 = fsub float %670, %669 ; [#uses=1]
+ %675 = fsub float %672, %671 ; [#uses=1]
+ %676 = fadd float %647, 1.000000e+00 ; [#uses=1]
+ %677 = fmul float %676, 2.000000e+00 ; [#uses=1]
+ %678 = call float @sqrtf(float %677) nounwind readonly ; [#uses=2]
+ %679 = fdiv float 1.000000e+00, %678 ; [#uses=3]
+ %680 = fmul float %678, 5.000000e-01 ; [#uses=1]
+ %681 = fmul float %675, %679 ; [#uses=1]
+ %682 = fmul float %674, %679 ; [#uses=1]
+ %683 = fmul float %673, %679 ; [#uses=1]
+ br label %_Z15shortestArcQuatRK9btVector3S1_.exit
+
+_Z15shortestArcQuatRK9btVector3S1_.exit: ; preds = %bb1.i83, %bb1.i.i, %bb.i.i
+ %qABCone.0.0.0.0 = phi float [ %683, %bb1.i83 ], [ 0.000000e+00, %bb.i.i ], [ %665, %bb1.i.i ] ; [#uses=3]
+ %qABCone.0.0.1.0 = phi float [ %682, %bb1.i83 ], [ %657, %bb.i.i ], [ %666, %bb1.i.i ] ; [#uses=3]
+ %qABCone.0.0.2.0 = phi float [ %681, %bb1.i83 ], [ %658, %bb.i.i ], [ 0.000000e+00, %bb1.i.i ] ; [#uses=3]
+ %qABCone.0.0.3.0 = phi float [ %680, %bb1.i83 ], [ 0.000000e+00, %bb.i.i ], [ 0.000000e+00, %bb1.i.i ] ; [#uses=3]
+ %684 = fmul float %qABCone.0.0.0.0, %qABCone.0.0.0.0 ; [#uses=1]
+ %685 = fmul float %qABCone.0.0.1.0, %qABCone.0.0.1.0 ; [#uses=1]
+ %686 = fadd float %684, %685 ; [#uses=1]
+ %687 = fmul float %qABCone.0.0.2.0, %qABCone.0.0.2.0 ; [#uses=1]
+ %688 = fadd float %686, %687 ; [#uses=1]
+ %689 = fmul float %qABCone.0.0.3.0, %qABCone.0.0.3.0 ; [#uses=1]
+ %690 = fadd float %688, %689 ; [#uses=1]
+ %691 = call float @sqrtf(float %690) nounwind readonly ; [#uses=1]
+ %692 = fdiv float 1.000000e+00, %691 ; [#uses=4]
+ %693 = fmul float %qABCone.0.0.0.0, %692 ; [#uses=4]
+ %694 = fmul float %qABCone.0.0.1.0, %692 ; [#uses=4]
+ %695 = fmul float %qABCone.0.0.2.0, %692 ; [#uses=4]
+ %696 = fmul float %qABCone.0.0.3.0, %692 ; [#uses=6]
+ %697 = fsub float -0.000000e+00, %695 ; [#uses=4]
+ %698 = fsub float -0.000000e+00, %694 ; [#uses=4]
+ %699 = fsub float -0.000000e+00, %693 ; [#uses=4]
+ %700 = fmul float %696, %564 ; [#uses=1]
+ %701 = fmul float %585, %699 ; [#uses=1]
+ %702 = fsub float %700, %701 ; [#uses=1]
+ %703 = fmul float %578, %698 ; [#uses=1]
+ %704 = fsub float %702, %703 ; [#uses=1]
+ %705 = fmul float %571, %697 ; [#uses=1]
+ %706 = fsub float %704, %705 ; [#uses=3]
+ %707 = fmul float %696, %571 ; [#uses=1]
+ %708 = fmul float %564, %697 ; [#uses=1]
+ %709 = fadd float %707, %708 ; [#uses=1]
+ %710 = fmul float %578, %699 ; [#uses=1]
+ %711 = fadd float %709, %710 ; [#uses=1]
+ %712 = fmul float %585, %698 ; [#uses=1]
+ %713 = fsub float %711, %712 ; [#uses=3]
+ %714 = fmul float %696, %578 ; [#uses=1]
+ %715 = fmul float %564, %698 ; [#uses=1]
+ %716 = fadd float %714, %715 ; [#uses=1]
+ %717 = fmul float %585, %697 ; [#uses=1]
+ %718 = fadd float %716, %717 ; [#uses=1]
+ %719 = fmul float %571, %699 ; [#uses=1]
+ %720 = fsub float %718, %719 ; [#uses=3]
+ %721 = fmul float %696, %585 ; [#uses=1]
+ %722 = fmul float %564, %699 ; [#uses=1]
+ %723 = fadd float %721, %722 ; [#uses=1]
+ %724 = fmul float %571, %698 ; [#uses=1]
+ %725 = fadd float %723, %724 ; [#uses=1]
+ %726 = fmul float %578, %697 ; [#uses=1]
+ %727 = fsub float %725, %726 ; [#uses=3]
+ %728 = fmul float %727, %727 ; [#uses=1]
+ %729 = fmul float %720, %720 ; [#uses=1]
+ %730 = fadd float %728, %729 ; [#uses=1]
+ %731 = fmul float %713, %713 ; [#uses=1]
+ %732 = fadd float %730, %731 ; [#uses=1]
+ %733 = fmul float %706, %706 ; [#uses=1]
+ %734 = fadd float %732, %733 ; [#uses=1]
+ %735 = call float @sqrtf(float %734) nounwind readonly ; [#uses=1]
+ %736 = fdiv float 1.000000e+00, %735 ; [#uses=4]
+ %737 = fmul float %727, %736 ; [#uses=2]
+ %738 = fmul float %720, %736 ; [#uses=2]
+ %739 = fmul float %713, %736 ; [#uses=2]
+ %740 = fmul float %706, %736 ; [#uses=3]
+ %741 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %742 = load float* %741, align 4 ; [#uses=13]
+ %743 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ %744 = load float* %743, align 4 ; [#uses=6]
+ %745 = fcmp ult float %742, %744 ; [#uses=2]
+ br i1 %745, label %bb18, label %bb11
+
+bb11: ; preds = %_Z15shortestArcQuatRK9btVector3S1_.exit
+ %746 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %747 = load float* %746, align 4 ; [#uses=4]
+ %748 = fcmp ult float %747, %744 ; [#uses=1]
+ br i1 %748, label %bb18, label %bb12
+
+bb12: ; preds = %bb11
+ %749 = fcmp olt float %696, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i.i.i84 = select i1 %749, float -1.000000e+00, float %696 ; [#uses=2]
+ %750 = fcmp ogt float %x_addr.0.i.i.i84, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i.i.i85 = select i1 %750, float 1.000000e+00, float %x_addr.0.i.i.i84 ; [#uses=1]
+ %751 = call float @acosf(float %x_addr.1.i.i.i85) nounwind readonly ; [#uses=1]
+ %752 = fmul float %751, 2.000000e+00 ; [#uses=5]
+ %753 = fcmp ogt float %752, 0x3E80000000000000 ; [#uses=1]
+ br i1 %753, label %bb.i86, label %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit
+
+bb.i86: ; preds = %bb12
+ %754 = fmul float %693, %693 ; [#uses=1]
+ %755 = fmul float %694, %694 ; [#uses=1]
+ %756 = fadd float %754, %755 ; [#uses=1]
+ %757 = fmul float %695, %695 ; [#uses=1]
+ %758 = fadd float %756, %757 ; [#uses=1]
+ %759 = call float @sqrtf(float %758) nounwind readonly ; [#uses=1]
+ %760 = fdiv float 1.000000e+00, %759 ; [#uses=3]
+ %761 = fmul float %693, %760 ; [#uses=2]
+ %762 = fmul float %694, %760 ; [#uses=5]
+ %763 = fmul float %695, %760 ; [#uses=4]
+ %764 = call float @fabsf(float %762) nounwind readnone ; [#uses=1]
+ %765 = fcmp ogt float %764, 0x3E80000000000000 ; [#uses=1]
+ br i1 %765, label %bb3.i, label %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit
+
+bb3.i: ; preds = %bb.i86
+ %766 = fmul float %763, %763 ; [#uses=1]
+ %767 = fmul float %762, %762 ; [#uses=1]
+ %768 = fdiv float %766, %767 ; [#uses=2]
+ %769 = fmul float %747, %747 ; [#uses=1]
+ %770 = fdiv float 1.000000e+00, %769 ; [#uses=1]
+ %771 = fmul float %742, %742 ; [#uses=1]
+ %772 = fdiv float %768, %771 ; [#uses=1]
+ %773 = fadd float %772, %770 ; [#uses=1]
+ %774 = fadd float %768, 1.000000e+00 ; [#uses=1]
+ %775 = fdiv float %774, %773 ; [#uses=1]
+ %776 = call float @sqrtf(float %775) nounwind readonly ; [#uses=1]
+ br label %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit
+
+_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit: ; preds = %bb3.i, %bb.i86, %bb12
+ %swingAxis13.0.0.1 = phi float [ %761, %bb3.i ], [ %761, %bb.i86 ], [ undef, %bb12 ] ; [#uses=4]
+ %swingAxis13.0.1.1 = phi float [ %762, %bb3.i ], [ %762, %bb.i86 ], [ undef, %bb12 ] ; [#uses=7]
+ %swingAxis13.0.2.1 = phi float [ %763, %bb3.i ], [ %763, %bb.i86 ], [ undef, %bb12 ] ; [#uses=2]
+ %swingLimit.1 = phi float [ %776, %bb3.i ], [ %742, %bb.i86 ], [ 0.000000e+00, %bb12 ] ; [#uses=3]
+ %777 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ %778 = load float* %777, align 4 ; [#uses=2]
+ %779 = fmul float %778, %swingLimit.1 ; [#uses=4]
+ %780 = fcmp olt float %779, %752 ; [#uses=1]
+ br i1 %780, label %bb14, label %bb67
+
+bb14: ; preds = %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit
+ store i8 1, i8* %7, align 2
+ %781 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 26 ; [#uses=2]
+ store float 1.000000e+00, float* %781, align 4
+ %782 = fcmp olt float %752, %swingLimit.1 ; [#uses=1]
+ %783 = fcmp olt float %778, 0x3FEFFFFFC0000000 ; [#uses=1]
+ %or.cond = and i1 %782, %783 ; [#uses=1]
+ br i1 %or.cond, label %bb16, label %bb17
+
+bb16: ; preds = %bb14
+ %784 = fsub float %752, %779 ; [#uses=1]
+ %785 = fsub float %swingLimit.1, %779 ; [#uses=1]
+ %786 = fdiv float %784, %785 ; [#uses=1]
+ store float %786, float* %781, align 4
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb14
+ %787 = fsub float %752, %779 ; [#uses=1]
+ store float %787, float* %4, align 4
+ %788 = fsub float -0.000000e+00, %swingAxis13.0.2.1 ; [#uses=2]
+ %789 = call float @fabsf(float %swingAxis13.0.1.1) nounwind readnone ; [#uses=1]
+ %790 = fcmp ogt float %789, 0x3E80000000000000 ; [#uses=1]
+ br i1 %790, label %bb.i87, label %_ZNK21btConeTwistConstraint33adjustSwingAxisToUseEllipseNormalER9btVector3.exit
+
+bb.i87: ; preds = %bb17
+ %791 = fdiv float %788, %swingAxis13.0.1.1 ; [#uses=1]
+ %792 = fdiv float %747, %742 ; [#uses=1]
+ %793 = fmul float %792, %791 ; [#uses=1]
+ %794 = fcmp ogt float %788, 0.000000e+00 ; [#uses=1]
+ %795 = fmul float %793, %swingAxis13.0.1.1 ; [#uses=1]
+ %796 = call float @fabsf(float %795) nounwind readnone ; [#uses=2]
+ br i1 %794, label %bb3.i88, label %bb2.i
+
+bb2.i: ; preds = %bb.i87
+ %797 = fsub float -0.000000e+00, %796 ; [#uses=1]
+ br label %bb3.i88
+
+bb3.i88: ; preds = %bb2.i, %bb.i87
+ %y.0.i = phi float [ %797, %bb2.i ], [ %796, %bb.i87 ] ; [#uses=3]
+ %798 = fsub float -0.000000e+00, %y.0.i ; [#uses=1]
+ %799 = fmul float %swingAxis13.0.0.1, %swingAxis13.0.0.1 ; [#uses=1]
+ %800 = fmul float %swingAxis13.0.1.1, %swingAxis13.0.1.1 ; [#uses=1]
+ %801 = fadd float %799, %800 ; [#uses=1]
+ %802 = fmul float %y.0.i, %y.0.i ; [#uses=1]
+ %803 = fadd float %801, %802 ; [#uses=1]
+ %804 = call float @sqrtf(float %803) nounwind readonly ; [#uses=1]
+ %805 = fdiv float 1.000000e+00, %804 ; [#uses=3]
+ %806 = fmul float %swingAxis13.0.0.1, %805 ; [#uses=1]
+ %807 = fmul float %swingAxis13.0.1.1, %805 ; [#uses=1]
+ %808 = fmul float %805, %798 ; [#uses=1]
+ br label %_ZNK21btConeTwistConstraint33adjustSwingAxisToUseEllipseNormalER9btVector3.exit
+
+_ZNK21btConeTwistConstraint33adjustSwingAxisToUseEllipseNormalER9btVector3.exit: ; preds = %bb3.i88, %bb17
+ %swingAxis13.0.0.2 = phi float [ %806, %bb3.i88 ], [ %swingAxis13.0.0.1, %bb17 ] ; [#uses=2]
+ %swingAxis13.0.1.2 = phi float [ %807, %bb3.i88 ], [ %swingAxis13.0.1.1, %bb17 ] ; [#uses=1]
+ %swingAxis13.0.2.2 = phi float [ %808, %bb3.i88 ], [ %swingAxis13.0.2.1, %bb17 ] ; [#uses=1]
+ %809 = fsub float -0.000000e+00, %swingAxis13.0.2.2 ; [#uses=4]
+ %810 = fsub float -0.000000e+00, %swingAxis13.0.1.2 ; [#uses=4]
+ %811 = fsub float -0.000000e+00, %swingAxis13.0.0.2 ; [#uses=3]
+ %812 = fmul float %swingAxis13.0.0.2, %554 ; [#uses=1]
+ %813 = fmul float %547, %810 ; [#uses=1]
+ %814 = fsub float %812, %813 ; [#uses=1]
+ %815 = fmul float %540, %809 ; [#uses=1]
+ %816 = fsub float %814, %815 ; [#uses=3]
+ %817 = fmul float %533, %809 ; [#uses=1]
+ %818 = fmul float %554, %810 ; [#uses=1]
+ %819 = fadd float %817, %818 ; [#uses=1]
+ %820 = fmul float %547, %811 ; [#uses=1]
+ %821 = fsub float %819, %820 ; [#uses=3]
+ %822 = fmul float %533, %810 ; [#uses=1]
+ %823 = fmul float %540, %811 ; [#uses=1]
+ %824 = fadd float %822, %823 ; [#uses=1]
+ %825 = fmul float %554, %809 ; [#uses=1]
+ %826 = fsub float %824, %825 ; [#uses=3]
+ %827 = fmul float %533, %811 ; [#uses=1]
+ %828 = fmul float %547, %809 ; [#uses=1]
+ %829 = fadd float %827, %828 ; [#uses=1]
+ %830 = fmul float %540, %810 ; [#uses=1]
+ %831 = fsub float %829, %830 ; [#uses=3]
+ %832 = fmul float %816, %555 ; [#uses=1]
+ %833 = fmul float %821, %533 ; [#uses=1]
+ %834 = fadd float %832, %833 ; [#uses=1]
+ %835 = fmul float %831, %556 ; [#uses=1]
+ %836 = fadd float %834, %835 ; [#uses=1]
+ %837 = fmul float %826, %557 ; [#uses=1]
+ %838 = fsub float %836, %837 ; [#uses=9]
+ %839 = fmul float %816, %556 ; [#uses=1]
+ %840 = fmul float %826, %533 ; [#uses=1]
+ %841 = fadd float %839, %840 ; [#uses=1]
+ %842 = fmul float %821, %557 ; [#uses=1]
+ %843 = fadd float %841, %842 ; [#uses=1]
+ %844 = fmul float %831, %555 ; [#uses=1]
+ %845 = fsub float %843, %844 ; [#uses=9]
+ %846 = fmul float %816, %557 ; [#uses=1]
+ %847 = fmul float %831, %533 ; [#uses=1]
+ %848 = fadd float %846, %847 ; [#uses=1]
+ %849 = fmul float %826, %555 ; [#uses=1]
+ %850 = fadd float %848, %849 ; [#uses=1]
+ %851 = fmul float %821, %556 ; [#uses=1]
+ %852 = fsub float %850, %851 ; [#uses=9]
+ %853 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 0 ; [#uses=1]
+ store float %852, float* %853, align 4
+ %854 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 1 ; [#uses=1]
+ store float %845, float* %854, align 4
+ %855 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 2 ; [#uses=1]
+ store float %838, float* %855, align 4
+ %856 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %856, align 4
+ %857 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 28, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %857, align 4
+ %858 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 28, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %858, align 4
+ %859 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 28, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %859, align 4
+ %860 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 28, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %860, align 4
+ %861 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %862 = load float* %861, align 4 ; [#uses=1]
+ %863 = fmul float %862, %852 ; [#uses=1]
+ %864 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %865 = load float* %864, align 4 ; [#uses=1]
+ %866 = fmul float %865, %845 ; [#uses=1]
+ %867 = fadd float %863, %866 ; [#uses=1]
+ %868 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %869 = load float* %868, align 4 ; [#uses=1]
+ %870 = fmul float %869, %838 ; [#uses=1]
+ %871 = fadd float %867, %870 ; [#uses=1]
+ %872 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %873 = load float* %872, align 4 ; [#uses=1]
+ %874 = fmul float %873, %852 ; [#uses=1]
+ %875 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %876 = load float* %875, align 4 ; [#uses=1]
+ %877 = fmul float %876, %845 ; [#uses=1]
+ %878 = fadd float %874, %877 ; [#uses=1]
+ %879 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %880 = load float* %879, align 4 ; [#uses=1]
+ %881 = fmul float %880, %838 ; [#uses=1]
+ %882 = fadd float %878, %881 ; [#uses=1]
+ %883 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %884 = load float* %883, align 4 ; [#uses=1]
+ %885 = fmul float %884, %852 ; [#uses=1]
+ %886 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %887 = load float* %886, align 4 ; [#uses=1]
+ %888 = fmul float %887, %845 ; [#uses=1]
+ %889 = fadd float %885, %888 ; [#uses=1]
+ %890 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %891 = load float* %890, align 4 ; [#uses=1]
+ %892 = fmul float %891, %838 ; [#uses=1]
+ %893 = fadd float %889, %892 ; [#uses=1]
+ %894 = fmul float %852, %893 ; [#uses=1]
+ %895 = fmul float %845, %882 ; [#uses=1]
+ %896 = fadd float %894, %895 ; [#uses=1]
+ %897 = fmul float %838, %871 ; [#uses=1]
+ %898 = fadd float %896, %897 ; [#uses=1]
+ %899 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %900 = load float* %899, align 4 ; [#uses=1]
+ %901 = fmul float %900, %852 ; [#uses=1]
+ %902 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %903 = load float* %902, align 4 ; [#uses=1]
+ %904 = fmul float %903, %845 ; [#uses=1]
+ %905 = fadd float %901, %904 ; [#uses=1]
+ %906 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %907 = load float* %906, align 4 ; [#uses=1]
+ %908 = fmul float %907, %838 ; [#uses=1]
+ %909 = fadd float %905, %908 ; [#uses=1]
+ %910 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %911 = load float* %910, align 4 ; [#uses=1]
+ %912 = fmul float %911, %852 ; [#uses=1]
+ %913 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %914 = load float* %913, align 4 ; [#uses=1]
+ %915 = fmul float %914, %845 ; [#uses=1]
+ %916 = fadd float %912, %915 ; [#uses=1]
+ %917 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %918 = load float* %917, align 4 ; [#uses=1]
+ %919 = fmul float %918, %838 ; [#uses=1]
+ %920 = fadd float %916, %919 ; [#uses=1]
+ %921 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %922 = load float* %921, align 4 ; [#uses=1]
+ %923 = fmul float %922, %852 ; [#uses=1]
+ %924 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %925 = load float* %924, align 4 ; [#uses=1]
+ %926 = fmul float %925, %845 ; [#uses=1]
+ %927 = fadd float %923, %926 ; [#uses=1]
+ %928 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %929 = load float* %928, align 4 ; [#uses=1]
+ %930 = fmul float %929, %838 ; [#uses=1]
+ %931 = fadd float %927, %930 ; [#uses=1]
+ %932 = fmul float %852, %931 ; [#uses=1]
+ %933 = fmul float %845, %920 ; [#uses=1]
+ %934 = fadd float %932, %933 ; [#uses=1]
+ %935 = fmul float %838, %909 ; [#uses=1]
+ %936 = fadd float %934, %935 ; [#uses=1]
+ %937 = fadd float %898, %936 ; [#uses=1]
+ %938 = fdiv float 1.000000e+00, %937 ; [#uses=1]
+ %939 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 14 ; [#uses=1]
+ store float %938, float* %939, align 4
+ br label %bb67
+
+bb18: ; preds = %bb11, %_Z15shortestArcQuatRK9btVector3S1_.exit
+ %940 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %941 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %942 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %943 = load float* %942, align 4 ; [#uses=3]
+ %944 = load float* %941, align 4 ; [#uses=3]
+ %945 = load float* %940, align 4 ; [#uses=3]
+ %946 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %947 = load float* %946, align 4 ; [#uses=3]
+ %948 = fmul float %947, %943 ; [#uses=1]
+ %949 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %950 = load float* %949, align 4 ; [#uses=3]
+ %951 = fmul float %950, %944 ; [#uses=1]
+ %952 = fadd float %948, %951 ; [#uses=1]
+ %953 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %954 = load float* %953, align 4 ; [#uses=3]
+ %955 = fmul float %954, %945 ; [#uses=1]
+ %956 = fadd float %952, %955 ; [#uses=4]
+ %957 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %958 = load float* %957, align 4 ; [#uses=3]
+ %959 = fmul float %958, %943 ; [#uses=1]
+ %960 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %961 = load float* %960, align 4 ; [#uses=3]
+ %962 = fmul float %961, %944 ; [#uses=1]
+ %963 = fadd float %959, %962 ; [#uses=1]
+ %964 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %965 = load float* %964, align 4 ; [#uses=3]
+ %966 = fmul float %965, %945 ; [#uses=1]
+ %967 = fadd float %963, %966 ; [#uses=4]
+ %968 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %969 = load float* %968, align 4 ; [#uses=3]
+ %970 = fmul float %969, %943 ; [#uses=1]
+ %971 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %972 = load float* %971, align 4 ; [#uses=3]
+ %973 = fmul float %972, %944 ; [#uses=1]
+ %974 = fadd float %970, %973 ; [#uses=1]
+ %975 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %976 = load float* %975, align 4 ; [#uses=3]
+ %977 = fmul float %976, %945 ; [#uses=1]
+ %978 = fadd float %974, %977 ; [#uses=4]
+ %979 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %980 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %981 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %982 = load float* %981, align 4 ; [#uses=3]
+ %983 = load float* %980, align 4 ; [#uses=3]
+ %984 = load float* %979, align 4 ; [#uses=3]
+ %985 = fmul float %947, %982 ; [#uses=1]
+ %986 = fmul float %950, %983 ; [#uses=1]
+ %987 = fadd float %985, %986 ; [#uses=1]
+ %988 = fmul float %954, %984 ; [#uses=1]
+ %989 = fadd float %987, %988 ; [#uses=2]
+ %990 = fmul float %958, %982 ; [#uses=1]
+ %991 = fmul float %961, %983 ; [#uses=1]
+ %992 = fadd float %990, %991 ; [#uses=1]
+ %993 = fmul float %965, %984 ; [#uses=1]
+ %994 = fadd float %992, %993 ; [#uses=2]
+ %995 = fmul float %969, %982 ; [#uses=1]
+ %996 = fmul float %972, %983 ; [#uses=1]
+ %997 = fadd float %995, %996 ; [#uses=1]
+ %998 = fmul float %976, %984 ; [#uses=1]
+ %999 = fadd float %997, %998 ; [#uses=2]
+ %1000 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1001 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1002 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1003 = load float* %1002, align 4 ; [#uses=3]
+ %1004 = load float* %1001, align 4 ; [#uses=3]
+ %1005 = load float* %1000, align 4 ; [#uses=3]
+ %1006 = fmul float %947, %1003 ; [#uses=1]
+ %1007 = fmul float %950, %1004 ; [#uses=1]
+ %1008 = fadd float %1006, %1007 ; [#uses=1]
+ %1009 = fmul float %954, %1005 ; [#uses=1]
+ %1010 = fadd float %1008, %1009 ; [#uses=2]
+ %1011 = fmul float %958, %1003 ; [#uses=1]
+ %1012 = fmul float %961, %1004 ; [#uses=1]
+ %1013 = fadd float %1011, %1012 ; [#uses=1]
+ %1014 = fmul float %965, %1005 ; [#uses=1]
+ %1015 = fadd float %1013, %1014 ; [#uses=2]
+ %1016 = fmul float %969, %1003 ; [#uses=1]
+ %1017 = fmul float %972, %1004 ; [#uses=1]
+ %1018 = fadd float %1016, %1017 ; [#uses=1]
+ %1019 = fmul float %976, %1005 ; [#uses=1]
+ %1020 = fadd float %1018, %1019 ; [#uses=2]
+ %1021 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1022 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1023 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1024 = load float* %1023, align 4 ; [#uses=3]
+ %1025 = load float* %1022, align 4 ; [#uses=3]
+ %1026 = load float* %1021, align 4 ; [#uses=3]
+ %1027 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1028 = load float* %1027, align 4 ; [#uses=1]
+ %1029 = fmul float %1028, %1024 ; [#uses=1]
+ %1030 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1031 = load float* %1030, align 4 ; [#uses=1]
+ %1032 = fmul float %1031, %1025 ; [#uses=1]
+ %1033 = fadd float %1029, %1032 ; [#uses=1]
+ %1034 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1035 = load float* %1034, align 4 ; [#uses=1]
+ %1036 = fmul float %1035, %1026 ; [#uses=1]
+ %1037 = fadd float %1033, %1036 ; [#uses=7]
+ %1038 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1039 = load float* %1038, align 4 ; [#uses=1]
+ %1040 = fmul float %1039, %1024 ; [#uses=1]
+ %1041 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1042 = load float* %1041, align 4 ; [#uses=1]
+ %1043 = fmul float %1042, %1025 ; [#uses=1]
+ %1044 = fadd float %1040, %1043 ; [#uses=1]
+ %1045 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1046 = load float* %1045, align 4 ; [#uses=1]
+ %1047 = fmul float %1046, %1026 ; [#uses=1]
+ %1048 = fadd float %1044, %1047 ; [#uses=7]
+ %1049 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1050 = load float* %1049, align 4 ; [#uses=1]
+ %1051 = fmul float %1050, %1024 ; [#uses=1]
+ %1052 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1053 = load float* %1052, align 4 ; [#uses=1]
+ %1054 = fmul float %1053, %1025 ; [#uses=1]
+ %1055 = fadd float %1051, %1054 ; [#uses=1]
+ %1056 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1057 = load float* %1056, align 4 ; [#uses=1]
+ %1058 = fmul float %1057, %1026 ; [#uses=1]
+ %1059 = fadd float %1055, %1058 ; [#uses=7]
+ %1060 = fmul float %1059, %978 ; [#uses=1]
+ %1061 = fmul float %1048, %967 ; [#uses=1]
+ %1062 = fadd float %1060, %1061 ; [#uses=1]
+ %1063 = fmul float %1037, %956 ; [#uses=1]
+ %1064 = fadd float %1062, %1063 ; [#uses=8]
+ %1065 = fmul float %1059, %999 ; [#uses=1]
+ %1066 = fmul float %1048, %994 ; [#uses=1]
+ %1067 = fadd float %1065, %1066 ; [#uses=1]
+ %1068 = fmul float %1037, %989 ; [#uses=1]
+ %1069 = fadd float %1067, %1068 ; [#uses=8]
+ %1070 = fmul float %1059, %1020 ; [#uses=1]
+ %1071 = fmul float %1048, %1015 ; [#uses=1]
+ %1072 = fadd float %1070, %1071 ; [#uses=1]
+ %1073 = fmul float %1037, %1010 ; [#uses=1]
+ %1074 = fadd float %1072, %1073 ; [#uses=8]
+ %1075 = fcmp uge float %742, %744 ; [#uses=1]
+ br i1 %1075, label %bb44, label %bb27
+
+bb27: ; preds = %bb18
+ %1076 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %1077 = load float* %1076, align 4 ; [#uses=1]
+ %1078 = fcmp uge float %1077, %744 ; [#uses=1]
+ br i1 %1078, label %bb44, label %bb28
+
+bb28: ; preds = %bb27
+ %1079 = call float @fabsf(float %1069) nounwind readnone ; [#uses=1]
+ %1080 = fcmp olt float %1079, 0x3E80000000000000 ; [#uses=1]
+ br i1 %1080, label %bb33, label %bb42
+
+bb33: ; preds = %bb28
+ %1081 = call float @fabsf(float %1074) nounwind readnone ; [#uses=1]
+ %1082 = fcmp olt float %1081, 0x3E80000000000000 ; [#uses=1]
+ br i1 %1082, label %bb67, label %bb42
+
+bb42: ; preds = %bb33, %bb28
+ store i8 1, i8* %7, align 2
+ %1083 = fmul float %1059, %967 ; [#uses=1]
+ %1084 = fmul float %1048, %978 ; [#uses=1]
+ %1085 = fsub float %1083, %1084 ; [#uses=1]
+ %1086 = fmul float %1037, %978 ; [#uses=1]
+ %1087 = fmul float %1059, %956 ; [#uses=1]
+ %1088 = fsub float %1086, %1087 ; [#uses=1]
+ %1089 = fmul float %1048, %956 ; [#uses=1]
+ %1090 = fmul float %1037, %967 ; [#uses=1]
+ %1091 = fsub float %1089, %1090 ; [#uses=1]
+ %1092 = fsub float -0.000000e+00, %1085 ; [#uses=1]
+ %1093 = fsub float -0.000000e+00, %1088 ; [#uses=1]
+ %1094 = fsub float -0.000000e+00, %1091 ; [#uses=1]
+ %1095 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 0 ; [#uses=1]
+ store float %1094, float* %1095, align 4
+ %1096 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 1 ; [#uses=1]
+ store float %1093, float* %1096, align 4
+ %1097 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 2 ; [#uses=1]
+ store float %1092, float* %1097, align 4
+ %1098 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1098, align 4
+ br label %bb67
+
+bb44: ; preds = %bb27, %bb18
+ %1099 = fcmp olt float %742, %744 ; [#uses=1]
+ br i1 %1099, label %bb45, label %bb55
+
+bb45: ; preds = %bb44
+ %1100 = call float @fabsf(float %1069) nounwind readnone ; [#uses=1]
+ %1101 = fcmp olt float %1100, 0x3E80000000000000 ; [#uses=1]
+ br i1 %1101, label %bb65, label %bb49
+
+bb49: ; preds = %bb45
+ store i8 1, i8* %7, align 2
+ %1102 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %1103 = load float* %1102, align 4 ; [#uses=7]
+ %1104 = fcmp ult float %1103, %744 ; [#uses=1]
+ br i1 %1104, label %bb65, label %bb50
+
+bb50: ; preds = %bb49
+ %1105 = call float @atan2f(float %1074, float %1064) nounwind readonly ; [#uses=2]
+ %1106 = fcmp olt float %1103, %1105 ; [#uses=1]
+ br i1 %1106, label %bb52, label %bb53
+
+bb52: ; preds = %bb50
+ %1107 = call float @cosf(float %1103) nounwind readonly ; [#uses=1]
+ %1108 = call float @sinf(float %1103) nounwind readonly ; [#uses=1]
+ br label %bb65
+
+bb53: ; preds = %bb50
+ %1109 = fsub float -0.000000e+00, %1103 ; [#uses=1]
+ %1110 = fcmp olt float %1105, %1109 ; [#uses=1]
+ br i1 %1110, label %bb54, label %bb65
+
+bb54: ; preds = %bb53
+ %1111 = call float @cosf(float %1103) nounwind readonly ; [#uses=1]
+ %1112 = call float @sinf(float %1103) nounwind readonly ; [#uses=1]
+ %1113 = fsub float -0.000000e+00, %1112 ; [#uses=1]
+ br label %bb65
+
+bb55: ; preds = %bb44
+ %1114 = call float @fabsf(float %1074) nounwind readnone ; [#uses=1]
+ %1115 = fcmp olt float %1114, 0x3E80000000000000 ; [#uses=1]
+ br i1 %1115, label %bb65, label %bb59
+
+bb59: ; preds = %bb55
+ store i8 1, i8* %7, align 2
+ br i1 %745, label %bb65, label %bb60
+
+bb60: ; preds = %bb59
+ %1116 = call float @atan2f(float %1069, float %1064) nounwind readonly ; [#uses=2]
+ %1117 = fcmp olt float %742, %1116 ; [#uses=1]
+ br i1 %1117, label %bb62, label %bb63
+
+bb62: ; preds = %bb60
+ %1118 = call float @cosf(float %742) nounwind readonly ; [#uses=1]
+ %1119 = call float @sinf(float %742) nounwind readonly ; [#uses=1]
+ br label %bb65
+
+bb63: ; preds = %bb60
+ %1120 = fsub float -0.000000e+00, %742 ; [#uses=1]
+ %1121 = fcmp olt float %1116, %1120 ; [#uses=1]
+ br i1 %1121, label %bb64, label %bb65
+
+bb64: ; preds = %bb63
+ %1122 = call float @cosf(float %742) nounwind readonly ; [#uses=1]
+ %1123 = call float @sinf(float %742) nounwind readonly ; [#uses=1]
+ %1124 = fsub float -0.000000e+00, %1123 ; [#uses=1]
+ br label %bb65
+
+bb65: ; preds = %bb64, %bb63, %bb62, %bb59, %bb55, %bb54, %bb53, %bb52, %bb49, %bb45
+ %x.0 = phi float [ %1107, %bb52 ], [ %1111, %bb54 ], [ %1064, %bb53 ], [ %1064, %bb49 ], [ %1064, %bb45 ], [ %1118, %bb62 ], [ %1122, %bb64 ], [ %1064, %bb63 ], [ %1064, %bb59 ], [ %1064, %bb55 ] ; [#uses=3]
+ %y.0 = phi float [ 0.000000e+00, %bb52 ], [ 0.000000e+00, %bb54 ], [ 0.000000e+00, %bb53 ], [ %1069, %bb49 ], [ %1069, %bb45 ], [ %1119, %bb62 ], [ %1124, %bb64 ], [ %1069, %bb63 ], [ %1069, %bb59 ], [ %1069, %bb55 ] ; [#uses=3]
+ %z.0 = phi float [ %1108, %bb52 ], [ %1113, %bb54 ], [ %1074, %bb53 ], [ %1074, %bb49 ], [ %1074, %bb45 ], [ 0.000000e+00, %bb62 ], [ 0.000000e+00, %bb64 ], [ 0.000000e+00, %bb63 ], [ %1074, %bb59 ], [ %1074, %bb55 ] ; [#uses=3]
+ %1125 = fmul float %978, %x.0 ; [#uses=1]
+ %1126 = fmul float %999, %y.0 ; [#uses=1]
+ %1127 = fadd float %1125, %1126 ; [#uses=1]
+ %1128 = fmul float %1020, %z.0 ; [#uses=1]
+ %1129 = fadd float %1127, %1128 ; [#uses=3]
+ %1130 = fmul float %967, %x.0 ; [#uses=1]
+ %1131 = fmul float %994, %y.0 ; [#uses=1]
+ %1132 = fadd float %1130, %1131 ; [#uses=1]
+ %1133 = fmul float %1015, %z.0 ; [#uses=1]
+ %1134 = fadd float %1132, %1133 ; [#uses=3]
+ %1135 = fmul float %956, %x.0 ; [#uses=1]
+ %1136 = fmul float %989, %y.0 ; [#uses=1]
+ %1137 = fadd float %1135, %1136 ; [#uses=1]
+ %1138 = fmul float %1010, %z.0 ; [#uses=1]
+ %1139 = fadd float %1137, %1138 ; [#uses=3]
+ %1140 = fmul float %1129, %1129 ; [#uses=1]
+ %1141 = fmul float %1134, %1134 ; [#uses=1]
+ %1142 = fadd float %1140, %1141 ; [#uses=1]
+ %1143 = fmul float %1139, %1139 ; [#uses=1]
+ %1144 = fadd float %1142, %1143 ; [#uses=1]
+ %1145 = call float @sqrtf(float %1144) nounwind readonly ; [#uses=1]
+ %1146 = fdiv float 1.000000e+00, %1145 ; [#uses=3]
+ %1147 = fmul float %1129, %1146 ; [#uses=2]
+ %1148 = fmul float %1134, %1146 ; [#uses=2]
+ %1149 = fmul float %1139, %1146 ; [#uses=2]
+ %1150 = fmul float %1059, %1148 ; [#uses=1]
+ %1151 = fmul float %1048, %1147 ; [#uses=1]
+ %1152 = fsub float %1150, %1151 ; [#uses=3]
+ %1153 = fmul float %1037, %1147 ; [#uses=1]
+ %1154 = fmul float %1059, %1149 ; [#uses=1]
+ %1155 = fsub float %1153, %1154 ; [#uses=3]
+ %1156 = fmul float %1048, %1149 ; [#uses=1]
+ %1157 = fmul float %1037, %1148 ; [#uses=1]
+ %1158 = fsub float %1156, %1157 ; [#uses=3]
+ %1159 = fsub float -0.000000e+00, %1152 ; [#uses=2]
+ %1160 = fsub float -0.000000e+00, %1155 ; [#uses=2]
+ %1161 = fsub float -0.000000e+00, %1158 ; [#uses=2]
+ %1162 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 0 ; [#uses=2]
+ store float %1161, float* %1162, align 4
+ %1163 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 1 ; [#uses=2]
+ store float %1160, float* %1163, align 4
+ %1164 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 2 ; [#uses=2]
+ store float %1159, float* %1164, align 4
+ %1165 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1165, align 4
+ %1166 = fmul float %1158, %1158 ; [#uses=1]
+ %1167 = fmul float %1155, %1155 ; [#uses=1]
+ %1168 = fadd float %1166, %1167 ; [#uses=1]
+ %1169 = fmul float %1152, %1152 ; [#uses=1]
+ %1170 = fadd float %1168, %1169 ; [#uses=2]
+ %1171 = call float @sqrtf(float %1170) nounwind readonly ; [#uses=1]
+ store float %1171, float* %4, align 4
+ %1172 = call float @sqrtf(float %1170) nounwind readonly ; [#uses=1]
+ %1173 = fdiv float 1.000000e+00, %1172 ; [#uses=3]
+ %1174 = fmul float %1173, %1161 ; [#uses=1]
+ store float %1174, float* %1162, align 4
+ %1175 = fmul float %1173, %1160 ; [#uses=1]
+ store float %1175, float* %1163, align 4
+ %1176 = fmul float %1173, %1159 ; [#uses=1]
+ store float %1176, float* %1164, align 4
+ br label %bb67
+
+bb67: ; preds = %bb65, %bb42, %bb33, %_ZNK21btConeTwistConstraint33adjustSwingAxisToUseEllipseNormalER9btVector3.exit, %_ZN21btConeTwistConstraint20computeConeLimitInfoERK12btQuaternionRfR9btVector3S3_.exit
+ %1177 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %1178 = load float* %1177, align 4 ; [#uses=4]
+ %1179 = fcmp ult float %1178, 0.000000e+00 ; [#uses=1]
+ %1180 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 19 ; [#uses=3]
+ br i1 %1179, label %bb79, label %bb68
+
+bb68: ; preds = %bb67
+ %1181 = fcmp olt float %740, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i.i.i = select i1 %1181, float -1.000000e+00, float %740 ; [#uses=2]
+ %1182 = fcmp ogt float %x_addr.0.i.i.i, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i.i.i = select i1 %1182, float 1.000000e+00, float %x_addr.0.i.i.i ; [#uses=1]
+ %1183 = call float @acosf(float %x_addr.1.i.i.i) nounwind readonly ; [#uses=1]
+ %1184 = fmul float %1183, 2.000000e+00 ; [#uses=3]
+ store float %1184, float* %1180, align 4
+ %1185 = fcmp ogt float %1184, 0x400921FB60000000 ; [#uses=1]
+ br i1 %1185, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb68
+ %1186 = fsub float -0.000000e+00, %740 ; [#uses=2]
+ %1187 = fsub float -0.000000e+00, %739 ; [#uses=1]
+ %1188 = fsub float -0.000000e+00, %738 ; [#uses=1]
+ %1189 = fsub float -0.000000e+00, %737 ; [#uses=1]
+ %1190 = fcmp olt float %1186, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i.i7.i = select i1 %1190, float -1.000000e+00, float %1186 ; [#uses=2]
+ %1191 = fcmp ogt float %x_addr.0.i.i7.i, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i.i8.i = select i1 %1191, float 1.000000e+00, float %x_addr.0.i.i7.i ; [#uses=1]
+ %1192 = call float @acosf(float %x_addr.1.i.i8.i) nounwind readonly ; [#uses=1]
+ %1193 = fmul float %1192, 2.000000e+00 ; [#uses=2]
+ store float %1193, float* %1180, align 4
+ br label %bb1.i
+
+bb1.i: ; preds = %bb.i, %bb68
+ %1194 = phi float [ %1193, %bb.i ], [ %1184, %bb68 ] ; [#uses=5]
+ %1195 = phi float [ %1189, %bb.i ], [ %737, %bb68 ] ; [#uses=4]
+ %1196 = phi float [ %1188, %bb.i ], [ %738, %bb68 ] ; [#uses=4]
+ %1197 = phi float [ %1187, %bb.i ], [ %739, %bb68 ] ; [#uses=4]
+ %1198 = fcmp ogt float %1194, 0x3E80000000000000 ; [#uses=1]
+ br i1 %1198, label %bb5.i, label %_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit
+
+bb5.i: ; preds = %bb1.i
+ %1199 = fmul float %1195, %1195 ; [#uses=1]
+ %1200 = fmul float %1196, %1196 ; [#uses=1]
+ %1201 = fadd float %1199, %1200 ; [#uses=1]
+ %1202 = fmul float %1197, %1197 ; [#uses=1]
+ %1203 = fadd float %1201, %1202 ; [#uses=1]
+ %1204 = call float @sqrtf(float %1203) nounwind readonly ; [#uses=1]
+ %1205 = fdiv float 1.000000e+00, %1204 ; [#uses=3]
+ %1206 = fmul float %1195, %1205 ; [#uses=1]
+ %1207 = fmul float %1196, %1205 ; [#uses=1]
+ %1208 = fmul float %1197, %1205 ; [#uses=1]
+ br label %_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit
+
+_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit: ; preds = %bb5.i, %bb1.i
+ %twistAxis.0.0.0 = phi float [ %1206, %bb5.i ], [ %1195, %bb1.i ] ; [#uses=4]
+ %twistAxis.0.1.0 = phi float [ %1207, %bb5.i ], [ %1196, %bb1.i ] ; [#uses=2]
+ %twistAxis.0.2.0 = phi float [ %1208, %bb5.i ], [ %1197, %bb1.i ] ; [#uses=2]
+ %1209 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ %1210 = load float* %1209, align 4 ; [#uses=2]
+ %1211 = fmul float %1178, %1210 ; [#uses=4]
+ %1212 = fcmp ogt float %1194, %1211 ; [#uses=1]
+ br i1 %1212, label %bb70, label %bb75
+
+bb70: ; preds = %_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit
+ store i8 1, i8* %6, align 1
+ %1213 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 27 ; [#uses=2]
+ store float 1.000000e+00, float* %1213, align 4
+ %1214 = fcmp olt float %1194, %1178 ; [#uses=1]
+ %1215 = fcmp olt float %1210, 0x3FEFFFFFC0000000 ; [#uses=1]
+ %or.cond247 = and i1 %1214, %1215 ; [#uses=1]
+ br i1 %or.cond247, label %bb72, label %bb73
+
+bb72: ; preds = %bb70
+ %1216 = fsub float %1194, %1211 ; [#uses=1]
+ %1217 = fsub float %1178, %1211 ; [#uses=1]
+ %1218 = fdiv float %1216, %1217 ; [#uses=1]
+ store float %1218, float* %1213, align 4
+ br label %bb73
+
+bb73: ; preds = %bb72, %bb70
+ %1219 = fsub float %1194, %1211 ; [#uses=1]
+ %1220 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ store float %1219, float* %1220, align 4
+ %1221 = fsub float -0.000000e+00, %twistAxis.0.2.0 ; [#uses=4]
+ %1222 = fsub float -0.000000e+00, %twistAxis.0.1.0 ; [#uses=4]
+ %1223 = fsub float -0.000000e+00, %twistAxis.0.0.0 ; [#uses=3]
+ %1224 = fmul float %twistAxis.0.0.0, %554 ; [#uses=1]
+ %1225 = fmul float %547, %1222 ; [#uses=1]
+ %1226 = fsub float %1224, %1225 ; [#uses=1]
+ %1227 = fmul float %540, %1221 ; [#uses=1]
+ %1228 = fsub float %1226, %1227 ; [#uses=3]
+ %1229 = fmul float %533, %1221 ; [#uses=1]
+ %1230 = fmul float %554, %1222 ; [#uses=1]
+ %1231 = fadd float %1229, %1230 ; [#uses=1]
+ %1232 = fmul float %547, %1223 ; [#uses=1]
+ %1233 = fsub float %1231, %1232 ; [#uses=3]
+ %1234 = fmul float %533, %1222 ; [#uses=1]
+ %1235 = fmul float %540, %1223 ; [#uses=1]
+ %1236 = fadd float %1234, %1235 ; [#uses=1]
+ %1237 = fmul float %554, %1221 ; [#uses=1]
+ %1238 = fsub float %1236, %1237 ; [#uses=3]
+ %1239 = fmul float %533, %1223 ; [#uses=1]
+ %1240 = fmul float %547, %1221 ; [#uses=1]
+ %1241 = fadd float %1239, %1240 ; [#uses=1]
+ %1242 = fmul float %540, %1222 ; [#uses=1]
+ %1243 = fsub float %1241, %1242 ; [#uses=3]
+ %1244 = fmul float %1228, %555 ; [#uses=1]
+ %1245 = fmul float %1233, %533 ; [#uses=1]
+ %1246 = fadd float %1244, %1245 ; [#uses=1]
+ %1247 = fmul float %1243, %556 ; [#uses=1]
+ %1248 = fadd float %1246, %1247 ; [#uses=1]
+ %1249 = fmul float %1238, %557 ; [#uses=1]
+ %1250 = fsub float %1248, %1249 ; [#uses=9]
+ %1251 = fmul float %1228, %556 ; [#uses=1]
+ %1252 = fmul float %1238, %533 ; [#uses=1]
+ %1253 = fadd float %1251, %1252 ; [#uses=1]
+ %1254 = fmul float %1233, %557 ; [#uses=1]
+ %1255 = fadd float %1253, %1254 ; [#uses=1]
+ %1256 = fmul float %1243, %555 ; [#uses=1]
+ %1257 = fsub float %1255, %1256 ; [#uses=9]
+ %1258 = fmul float %1228, %557 ; [#uses=1]
+ %1259 = fmul float %1243, %533 ; [#uses=1]
+ %1260 = fadd float %1258, %1259 ; [#uses=1]
+ %1261 = fmul float %1238, %555 ; [#uses=1]
+ %1262 = fadd float %1260, %1261 ; [#uses=1]
+ %1263 = fmul float %1233, %556 ; [#uses=1]
+ %1264 = fsub float %1262, %1263 ; [#uses=9]
+ %1265 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 0 ; [#uses=1]
+ store float %1264, float* %1265, align 4
+ %1266 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 1 ; [#uses=1]
+ store float %1257, float* %1266, align 4
+ %1267 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 2 ; [#uses=1]
+ store float %1250, float* %1267, align 4
+ %1268 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1268, align 4
+ %1269 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1270 = load float* %1269, align 4 ; [#uses=1]
+ %1271 = fmul float %1270, %1264 ; [#uses=1]
+ %1272 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1273 = load float* %1272, align 4 ; [#uses=1]
+ %1274 = fmul float %1273, %1257 ; [#uses=1]
+ %1275 = fadd float %1271, %1274 ; [#uses=1]
+ %1276 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1277 = load float* %1276, align 4 ; [#uses=1]
+ %1278 = fmul float %1277, %1250 ; [#uses=1]
+ %1279 = fadd float %1275, %1278 ; [#uses=1]
+ %1280 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1281 = load float* %1280, align 4 ; [#uses=1]
+ %1282 = fmul float %1281, %1264 ; [#uses=1]
+ %1283 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1284 = load float* %1283, align 4 ; [#uses=1]
+ %1285 = fmul float %1284, %1257 ; [#uses=1]
+ %1286 = fadd float %1282, %1285 ; [#uses=1]
+ %1287 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1288 = load float* %1287, align 4 ; [#uses=1]
+ %1289 = fmul float %1288, %1250 ; [#uses=1]
+ %1290 = fadd float %1286, %1289 ; [#uses=1]
+ %1291 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1292 = load float* %1291, align 4 ; [#uses=1]
+ %1293 = fmul float %1292, %1264 ; [#uses=1]
+ %1294 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1295 = load float* %1294, align 4 ; [#uses=1]
+ %1296 = fmul float %1295, %1257 ; [#uses=1]
+ %1297 = fadd float %1293, %1296 ; [#uses=1]
+ %1298 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldA, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1299 = load float* %1298, align 4 ; [#uses=1]
+ %1300 = fmul float %1299, %1250 ; [#uses=1]
+ %1301 = fadd float %1297, %1300 ; [#uses=1]
+ %1302 = fmul float %1264, %1301 ; [#uses=1]
+ %1303 = fmul float %1257, %1290 ; [#uses=1]
+ %1304 = fadd float %1302, %1303 ; [#uses=1]
+ %1305 = fmul float %1250, %1279 ; [#uses=1]
+ %1306 = fadd float %1304, %1305 ; [#uses=1]
+ %1307 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1308 = load float* %1307, align 4 ; [#uses=1]
+ %1309 = fmul float %1308, %1264 ; [#uses=1]
+ %1310 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1311 = load float* %1310, align 4 ; [#uses=1]
+ %1312 = fmul float %1311, %1257 ; [#uses=1]
+ %1313 = fadd float %1309, %1312 ; [#uses=1]
+ %1314 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1315 = load float* %1314, align 4 ; [#uses=1]
+ %1316 = fmul float %1315, %1250 ; [#uses=1]
+ %1317 = fadd float %1313, %1316 ; [#uses=1]
+ %1318 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1319 = load float* %1318, align 4 ; [#uses=1]
+ %1320 = fmul float %1319, %1264 ; [#uses=1]
+ %1321 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1322 = load float* %1321, align 4 ; [#uses=1]
+ %1323 = fmul float %1322, %1257 ; [#uses=1]
+ %1324 = fadd float %1320, %1323 ; [#uses=1]
+ %1325 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1326 = load float* %1325, align 4 ; [#uses=1]
+ %1327 = fmul float %1326, %1250 ; [#uses=1]
+ %1328 = fadd float %1324, %1327 ; [#uses=1]
+ %1329 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1330 = load float* %1329, align 4 ; [#uses=1]
+ %1331 = fmul float %1330, %1264 ; [#uses=1]
+ %1332 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1333 = load float* %1332, align 4 ; [#uses=1]
+ %1334 = fmul float %1333, %1257 ; [#uses=1]
+ %1335 = fadd float %1331, %1334 ; [#uses=1]
+ %1336 = getelementptr inbounds %struct.btMatrix3x3* %invInertiaWorldB, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1337 = load float* %1336, align 4 ; [#uses=1]
+ %1338 = fmul float %1337, %1250 ; [#uses=1]
+ %1339 = fadd float %1335, %1338 ; [#uses=1]
+ %1340 = fmul float %1264, %1339 ; [#uses=1]
+ %1341 = fmul float %1257, %1328 ; [#uses=1]
+ %1342 = fadd float %1340, %1341 ; [#uses=1]
+ %1343 = fmul float %1250, %1317 ; [#uses=1]
+ %1344 = fadd float %1342, %1343 ; [#uses=1]
+ %1345 = fadd float %1306, %1344 ; [#uses=1]
+ %1346 = fdiv float 1.000000e+00, %1345 ; [#uses=1]
+ %1347 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 15 ; [#uses=1]
+ store float %1346, float* %1347, align 4
+ br label %bb75
+
+bb75: ; preds = %bb73, %_ZN21btConeTwistConstraint21computeTwistLimitInfoERK12btQuaternionRfR9btVector3.exit
+ %1348 = load i8* %7, align 2 ; [#uses=1]
+ %toBool76 = icmp eq i8 %1348, 0 ; [#uses=1]
+ br i1 %toBool76, label %return, label %bb77
+
+bb77: ; preds = %bb75
+ %1349 = fsub float -0.000000e+00, %twistAxis.0.2.0 ; [#uses=4]
+ %1350 = fsub float -0.000000e+00, %twistAxis.0.1.0 ; [#uses=4]
+ %1351 = fsub float -0.000000e+00, %twistAxis.0.0.0 ; [#uses=3]
+ %1352 = fsub float -0.000000e+00, %508 ; [#uses=3]
+ %1353 = fmul float %twistAxis.0.0.0, %508 ; [#uses=1]
+ %1354 = fmul float %501, %1350 ; [#uses=1]
+ %1355 = fsub float %1353, %1354 ; [#uses=1]
+ %1356 = fmul float %494, %1349 ; [#uses=1]
+ %1357 = fsub float %1355, %1356 ; [#uses=3]
+ %1358 = fmul float %487, %1349 ; [#uses=1]
+ %1359 = fmul float %508, %1350 ; [#uses=1]
+ %1360 = fadd float %1358, %1359 ; [#uses=1]
+ %1361 = fmul float %501, %1351 ; [#uses=1]
+ %1362 = fsub float %1360, %1361 ; [#uses=3]
+ %1363 = fmul float %487, %1350 ; [#uses=1]
+ %1364 = fmul float %494, %1351 ; [#uses=1]
+ %1365 = fadd float %1363, %1364 ; [#uses=1]
+ %1366 = fmul float %508, %1349 ; [#uses=1]
+ %1367 = fsub float %1365, %1366 ; [#uses=3]
+ %1368 = fmul float %487, %1351 ; [#uses=1]
+ %1369 = fmul float %501, %1349 ; [#uses=1]
+ %1370 = fadd float %1368, %1369 ; [#uses=1]
+ %1371 = fmul float %494, %1350 ; [#uses=1]
+ %1372 = fsub float %1370, %1371 ; [#uses=3]
+ %1373 = fsub float -0.000000e+00, %494 ; [#uses=3]
+ %1374 = fsub float -0.000000e+00, %501 ; [#uses=3]
+ %1375 = fmul float %1357, %1373 ; [#uses=1]
+ %1376 = fmul float %1362, %487 ; [#uses=1]
+ %1377 = fadd float %1375, %1376 ; [#uses=1]
+ %1378 = fmul float %1372, %1374 ; [#uses=1]
+ %1379 = fadd float %1377, %1378 ; [#uses=1]
+ %1380 = fmul float %1367, %1352 ; [#uses=1]
+ %1381 = fsub float %1379, %1380 ; [#uses=1]
+ %1382 = fmul float %1357, %1374 ; [#uses=1]
+ %1383 = fmul float %1367, %487 ; [#uses=1]
+ %1384 = fadd float %1382, %1383 ; [#uses=1]
+ %1385 = fmul float %1362, %1352 ; [#uses=1]
+ %1386 = fadd float %1384, %1385 ; [#uses=1]
+ %1387 = fmul float %1372, %1373 ; [#uses=1]
+ %1388 = fsub float %1386, %1387 ; [#uses=1]
+ %1389 = fmul float %1357, %1352 ; [#uses=1]
+ %1390 = fmul float %1372, %487 ; [#uses=1]
+ %1391 = fadd float %1389, %1390 ; [#uses=1]
+ %1392 = fmul float %1367, %1373 ; [#uses=1]
+ %1393 = fadd float %1391, %1392 ; [#uses=1]
+ %1394 = fmul float %1362, %1374 ; [#uses=1]
+ %1395 = fsub float %1393, %1394 ; [#uses=1]
+ %1396 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 28, i32 0, i32 0 ; [#uses=1]
+ store float %1395, float* %1396, align 4
+ %1397 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 28, i32 0, i32 1 ; [#uses=1]
+ store float %1388, float* %1397, align 4
+ %1398 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 28, i32 0, i32 2 ; [#uses=1]
+ store float %1381, float* %1398, align 4
+ %1399 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 28, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1399, align 4
+ ret void
+
+bb79: ; preds = %bb67
+ store float 0.000000e+00, float* %1180, align 4
+ ret void
+
+return: ; preds = %bb75, %bb5
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btConeTwistConstraint18getInfo2NonVirtualEPN17btTypedConstraint17btConstraintInfo2ERK11btTransformS5_RK11btMatrix3x3S8_(%struct.btConeTwistConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, %struct.btTransform* %transA, %struct.btTransform* %transB, %struct.btMatrix3x3* nocapture %invInertiaWorldA, %struct.btMatrix3x3* nocapture %invInertiaWorldB) nounwind align 2 {
+entry:
+ %a1 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %a2 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ call void @_ZN21btConeTwistConstraint14calcAngleInfo2ERK11btTransformS2_RK11btMatrix3x3S5_(%struct.btConeTwistConstraint* %this, %struct.btTransform* %transA, %struct.btTransform* %transB, %struct.btMatrix3x3* %invInertiaWorldA, %struct.btMatrix3x3* %invInertiaWorldB)
+ %0 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 2 ; [#uses=3]
+ %1 = load float** %0, align 4 ; [#uses=1]
+ store float 1.000000e+00, float* %1, align 4
+ %2 = load float** %0, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 6 ; [#uses=15]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %5 = add nsw i32 %4, 1 ; [#uses=1]
+ %6 = getelementptr inbounds float* %2, i32 %5 ; [#uses=1]
+ store float 1.000000e+00, float* %6, align 4
+ %7 = load float** %0, align 4 ; [#uses=1]
+ %8 = load i32* %3, align 4 ; [#uses=1]
+ %9 = shl i32 %8, 1 ; [#uses=1]
+ %10 = add i32 %9, 2 ; [#uses=1]
+ %11 = getelementptr inbounds float* %7, i32 %10 ; [#uses=1]
+ store float 1.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=3]
+ %16 = fmul float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ %21 = fmul float %18, %20 ; [#uses=1]
+ %22 = fadd float %16, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=3]
+ %27 = fmul float %24, %26 ; [#uses=1]
+ %28 = fadd float %22, %27 ; [#uses=4]
+ %29 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fmul float %30, %15 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fmul float %33, %20 ; [#uses=1]
+ %35 = fadd float %31, %34 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fmul float %37, %26 ; [#uses=1]
+ %39 = fadd float %35, %38 ; [#uses=4]
+ %40 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = fmul float %41, %15 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = fmul float %44, %20 ; [#uses=1]
+ %46 = fadd float %42, %45 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = fmul float %48, %26 ; [#uses=1]
+ %50 = fadd float %46, %49 ; [#uses=4]
+ %51 = getelementptr inbounds %struct.btQuadWord* %a1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %50, float* %51, align 8
+ %52 = getelementptr inbounds %struct.btQuadWord* %a1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %39, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btQuadWord* %a1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %28, float* %53, align 8
+ %54 = getelementptr inbounds %struct.btQuadWord* %a1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %54, align 4
+ %55 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 3 ; [#uses=3]
+ %56 = load float** %55, align 4 ; [#uses=12]
+ %57 = load i32* %3, align 4 ; [#uses=5]
+ %58 = getelementptr inbounds float* %56, i32 %57 ; [#uses=1]
+ %59 = shl i32 %57, 1 ; [#uses=4]
+ %60 = getelementptr inbounds float* %56, i32 %59 ; [#uses=1]
+ %61 = fsub float -0.000000e+00, %28 ; [#uses=1]
+ %62 = fsub float -0.000000e+00, %39 ; [#uses=1]
+ %63 = fsub float -0.000000e+00, %50 ; [#uses=1]
+ store float 0.000000e+00, float* %56, align 4
+ %64 = getelementptr inbounds float* %56, i32 1 ; [#uses=1]
+ store float %28, float* %64, align 4
+ %65 = getelementptr inbounds float* %56, i32 2 ; [#uses=1]
+ store float %62, float* %65, align 4
+ %66 = getelementptr inbounds float* %56, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %66, align 4
+ store float %61, float* %58, align 4
+ %.sum = add i32 %57, 1 ; [#uses=1]
+ %67 = getelementptr inbounds float* %56, i32 %.sum ; [#uses=1]
+ store float 0.000000e+00, float* %67, align 4
+ %.sum83 = add i32 %57, 2 ; [#uses=1]
+ %68 = getelementptr inbounds float* %56, i32 %.sum83 ; [#uses=1]
+ store float %50, float* %68, align 4
+ %.sum84 = add i32 %57, 3 ; [#uses=1]
+ %69 = getelementptr inbounds float* %56, i32 %.sum84 ; [#uses=1]
+ store float 0.000000e+00, float* %69, align 4
+ store float %39, float* %60, align 4
+ %.sum8586 = or i32 %59, 1 ; [#uses=1]
+ %70 = getelementptr inbounds float* %56, i32 %.sum8586 ; [#uses=1]
+ store float %63, float* %70, align 4
+ %.sum87 = add i32 %59, 2 ; [#uses=1]
+ %71 = getelementptr inbounds float* %56, i32 %.sum87 ; [#uses=1]
+ store float 0.000000e+00, float* %71, align 4
+ %.sum88 = add i32 %59, 3 ; [#uses=1]
+ %72 = getelementptr inbounds float* %56, i32 %.sum88 ; [#uses=1]
+ store float 0.000000e+00, float* %72, align 4
+ %73 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=3]
+ %77 = fmul float %74, %76 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=3]
+ %82 = fmul float %79, %81 ; [#uses=1]
+ %83 = fadd float %77, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=3]
+ %88 = fmul float %85, %87 ; [#uses=1]
+ %89 = fadd float %83, %88 ; [#uses=4]
+ %90 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = fmul float %91, %76 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = fmul float %94, %81 ; [#uses=1]
+ %96 = fadd float %92, %95 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ %99 = fmul float %98, %87 ; [#uses=1]
+ %100 = fadd float %96, %99 ; [#uses=4]
+ %101 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fmul float %102, %76 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ %106 = fmul float %105, %81 ; [#uses=1]
+ %107 = fadd float %103, %106 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ %110 = fmul float %109, %87 ; [#uses=1]
+ %111 = fadd float %107, %110 ; [#uses=4]
+ %112 = getelementptr inbounds %struct.btQuadWord* %a2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %111, float* %112, align 8
+ %113 = getelementptr inbounds %struct.btQuadWord* %a2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %100, float* %113, align 4
+ %114 = getelementptr inbounds %struct.btQuadWord* %a2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %89, float* %114, align 8
+ %115 = getelementptr inbounds %struct.btQuadWord* %a2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %115, align 4
+ %116 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 5 ; [#uses=3]
+ %117 = load float** %116, align 4 ; [#uses=12]
+ %118 = load i32* %3, align 4 ; [#uses=5]
+ %119 = getelementptr inbounds float* %117, i32 %118 ; [#uses=1]
+ %120 = shl i32 %118, 1 ; [#uses=4]
+ %121 = getelementptr inbounds float* %117, i32 %120 ; [#uses=1]
+ %122 = fsub float -0.000000e+00, %89 ; [#uses=1]
+ store float 0.000000e+00, float* %117, align 4
+ %123 = getelementptr inbounds float* %117, i32 1 ; [#uses=1]
+ store float %122, float* %123, align 4
+ %124 = getelementptr inbounds float* %117, i32 2 ; [#uses=1]
+ store float %100, float* %124, align 4
+ %125 = getelementptr inbounds float* %117, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %125, align 4
+ %126 = fsub float -0.000000e+00, %111 ; [#uses=1]
+ store float %89, float* %119, align 4
+ %.sum89 = add i32 %118, 1 ; [#uses=1]
+ %127 = getelementptr inbounds float* %117, i32 %.sum89 ; [#uses=1]
+ store float 0.000000e+00, float* %127, align 4
+ %.sum90 = add i32 %118, 2 ; [#uses=1]
+ %128 = getelementptr inbounds float* %117, i32 %.sum90 ; [#uses=1]
+ store float %126, float* %128, align 4
+ %.sum91 = add i32 %118, 3 ; [#uses=1]
+ %129 = getelementptr inbounds float* %117, i32 %.sum91 ; [#uses=1]
+ store float 0.000000e+00, float* %129, align 4
+ %130 = fsub float -0.000000e+00, %100 ; [#uses=1]
+ store float %130, float* %121, align 4
+ %.sum9293 = or i32 %120, 1 ; [#uses=1]
+ %131 = getelementptr inbounds float* %117, i32 %.sum9293 ; [#uses=1]
+ store float %111, float* %131, align 4
+ %.sum94 = add i32 %120, 2 ; [#uses=1]
+ %132 = getelementptr inbounds float* %117, i32 %.sum94 ; [#uses=1]
+ store float 0.000000e+00, float* %132, align 4
+ %.sum95 = add i32 %120, 3 ; [#uses=1]
+ %133 = getelementptr inbounds float* %117, i32 %.sum95 ; [#uses=1]
+ store float 0.000000e+00, float* %133, align 4
+ %134 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 34 ; [#uses=6]
+ %135 = load i32* %134, align 4 ; [#uses=1]
+ %136 = and i32 %135, 2 ; [#uses=1]
+ %137 = icmp eq i32 %136, 0 ; [#uses=1]
+ br i1 %137, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %138 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 36 ; [#uses=1]
+ br label %bb.nph
+
+bb4: ; preds = %entry
+ %139 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 1 ; [#uses=1]
+ br label %bb.nph
+
+bb.nph: ; preds = %bb4, %bb
+ %iftmp.176.0.in = phi float* [ %138, %bb ], [ %139, %bb4 ] ; [#uses=1]
+ %iftmp.176.0 = load float* %iftmp.176.0.in, align 4 ; [#uses=1]
+ %140 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 0 ; [#uses=4]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ %142 = fmul float %141, %iftmp.176.0 ; [#uses=3]
+ %143 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 7 ; [#uses=3]
+ %144 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=3]
+ %145 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=3]
+ %146 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=3]
+ %147 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 35 ; [#uses=3]
+ %scevgep97 = getelementptr %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep99 = getelementptr %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %148 = load float** %143, align 4 ; [#uses=1]
+ %149 = load float* %scevgep97, align 4 ; [#uses=1]
+ %150 = fadd float %111, %149 ; [#uses=1]
+ %151 = fsub float %150, %50 ; [#uses=1]
+ %152 = load float* %scevgep99, align 4 ; [#uses=1]
+ %153 = fsub float %151, %152 ; [#uses=1]
+ %154 = fmul float %153, %142 ; [#uses=1]
+ store float %154, float* %148, align 4
+ %155 = load float** %144, align 4 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %155, align 4
+ %156 = load float** %145, align 4 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %156, align 4
+ %157 = load i32* %134, align 4 ; [#uses=1]
+ %158 = and i32 %157, 1 ; [#uses=1]
+ %toBool = icmp eq i32 %158, 0 ; [#uses=1]
+ br i1 %toBool, label %bb8, label %bb7
+
+bb7: ; preds = %bb.nph
+ %159 = load float** %146, align 4 ; [#uses=1]
+ %160 = load float* %147, align 4 ; [#uses=1]
+ store float %160, float* %159, align 4
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb.nph
+ %scevgep97.1 = getelementptr %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep99.1 = getelementptr %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %161 = load float** %143, align 4 ; [#uses=1]
+ %162 = load i32* %3, align 4 ; [#uses=1]
+ %163 = load float* %scevgep97.1, align 4 ; [#uses=1]
+ %164 = fadd float %100, %163 ; [#uses=1]
+ %165 = fsub float %164, %39 ; [#uses=1]
+ %166 = load float* %scevgep99.1, align 4 ; [#uses=1]
+ %167 = fsub float %165, %166 ; [#uses=1]
+ %168 = fmul float %167, %142 ; [#uses=1]
+ %169 = getelementptr inbounds float* %161, i32 %162 ; [#uses=1]
+ store float %168, float* %169, align 4
+ %170 = load float** %144, align 4 ; [#uses=1]
+ %171 = load i32* %3, align 4 ; [#uses=1]
+ %172 = getelementptr inbounds float* %170, i32 %171 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %172, align 4
+ %173 = load float** %145, align 4 ; [#uses=1]
+ %174 = load i32* %3, align 4 ; [#uses=1]
+ %175 = getelementptr inbounds float* %173, i32 %174 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %175, align 4
+ %176 = load i32* %134, align 4 ; [#uses=1]
+ %177 = and i32 %176, 1 ; [#uses=1]
+ %toBool.1 = icmp eq i32 %177, 0 ; [#uses=1]
+ br i1 %toBool.1, label %bb8.1, label %bb7.1
+
+bb10: ; preds = %bb7.2, %bb8.1
+ %178 = load i32* %3, align 4 ; [#uses=2]
+ %179 = mul nsw i32 %178, 3 ; [#uses=18]
+ %180 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 24 ; [#uses=1]
+ %181 = load i8* %180, align 2 ; [#uses=1]
+ %toBool11 = icmp eq i8 %181, 0 ; [#uses=1]
+ br i1 %toBool11, label %bb19, label %bb12
+
+bb12: ; preds = %bb10
+ %182 = load float** %55, align 4 ; [#uses=9]
+ %183 = load float** %116, align 4 ; [#uses=9]
+ %184 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %185 = load float* %184, align 4 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ %187 = load float* %186, align 4 ; [#uses=2]
+ %188 = fcmp uge float %185, %187 ; [#uses=1]
+ br i1 %188, label %bb15, label %bb13
+
+bb13: ; preds = %bb12
+ %189 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %190 = load float* %189, align 4 ; [#uses=1]
+ %191 = fcmp uge float %190, %187 ; [#uses=1]
+ br i1 %191, label %bb15, label %bb14
+
+bb14: ; preds = %bb13
+ %192 = load float* %12, align 4 ; [#uses=2]
+ %193 = load float* %17, align 4 ; [#uses=2]
+ %194 = load float* %23, align 4 ; [#uses=2]
+ %195 = load float* %29, align 4 ; [#uses=2]
+ %196 = load float* %32, align 4 ; [#uses=2]
+ %197 = load float* %36, align 4 ; [#uses=2]
+ %198 = load float* %40, align 4 ; [#uses=2]
+ %199 = load float* %43, align 4 ; [#uses=2]
+ %200 = load float* %47, align 4 ; [#uses=2]
+ %201 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %202 = load float* %201, align 4 ; [#uses=3]
+ %203 = fmul float %202, %192 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %205 = load float* %204, align 4 ; [#uses=3]
+ %206 = fmul float %205, %193 ; [#uses=1]
+ %207 = fadd float %203, %206 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %209 = load float* %208, align 4 ; [#uses=3]
+ %210 = fmul float %209, %194 ; [#uses=1]
+ %211 = fadd float %207, %210 ; [#uses=3]
+ %212 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %213 = load float* %212, align 4 ; [#uses=3]
+ %214 = fmul float %213, %192 ; [#uses=1]
+ %215 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %216 = load float* %215, align 4 ; [#uses=3]
+ %217 = fmul float %216, %193 ; [#uses=1]
+ %218 = fadd float %214, %217 ; [#uses=1]
+ %219 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %220 = load float* %219, align 4 ; [#uses=3]
+ %221 = fmul float %220, %194 ; [#uses=1]
+ %222 = fadd float %218, %221 ; [#uses=3]
+ %223 = fmul float %202, %195 ; [#uses=1]
+ %224 = fmul float %205, %196 ; [#uses=1]
+ %225 = fadd float %223, %224 ; [#uses=1]
+ %226 = fmul float %209, %197 ; [#uses=1]
+ %227 = fadd float %225, %226 ; [#uses=3]
+ %228 = fmul float %213, %195 ; [#uses=1]
+ %229 = fmul float %216, %196 ; [#uses=1]
+ %230 = fadd float %228, %229 ; [#uses=1]
+ %231 = fmul float %220, %197 ; [#uses=1]
+ %232 = fadd float %230, %231 ; [#uses=3]
+ %233 = fmul float %202, %198 ; [#uses=1]
+ %234 = fmul float %205, %199 ; [#uses=1]
+ %235 = fadd float %233, %234 ; [#uses=1]
+ %236 = fmul float %209, %200 ; [#uses=1]
+ %237 = fadd float %235, %236 ; [#uses=3]
+ %238 = fmul float %213, %198 ; [#uses=1]
+ %239 = fmul float %216, %199 ; [#uses=1]
+ %240 = fadd float %238, %239 ; [#uses=1]
+ %241 = fmul float %220, %200 ; [#uses=1]
+ %242 = fadd float %240, %241 ; [#uses=3]
+ %243 = add nsw i32 %178, %179 ; [#uses=8]
+ %244 = getelementptr inbounds float* %182, i32 %179 ; [#uses=1]
+ store float %242, float* %244, align 4
+ %245 = add nsw i32 %179, 1 ; [#uses=2]
+ %246 = getelementptr inbounds float* %182, i32 %245 ; [#uses=1]
+ store float %232, float* %246, align 4
+ %247 = add nsw i32 %179, 2 ; [#uses=2]
+ %248 = getelementptr inbounds float* %182, i32 %247 ; [#uses=1]
+ store float %222, float* %248, align 4
+ %249 = getelementptr inbounds float* %182, i32 %243 ; [#uses=1]
+ store float %237, float* %249, align 4
+ %250 = add nsw i32 %243, 1 ; [#uses=2]
+ %251 = getelementptr inbounds float* %182, i32 %250 ; [#uses=1]
+ store float %227, float* %251, align 4
+ %252 = add nsw i32 %243, 2 ; [#uses=2]
+ %253 = getelementptr inbounds float* %182, i32 %252 ; [#uses=1]
+ store float %211, float* %253, align 4
+ %254 = fsub float -0.000000e+00, %242 ; [#uses=1]
+ %255 = getelementptr inbounds float* %183, i32 %179 ; [#uses=1]
+ store float %254, float* %255, align 4
+ %256 = fsub float -0.000000e+00, %232 ; [#uses=1]
+ %257 = getelementptr inbounds float* %183, i32 %245 ; [#uses=1]
+ store float %256, float* %257, align 4
+ %258 = fsub float -0.000000e+00, %222 ; [#uses=1]
+ %259 = getelementptr inbounds float* %183, i32 %247 ; [#uses=1]
+ store float %258, float* %259, align 4
+ %260 = fsub float -0.000000e+00, %237 ; [#uses=1]
+ %261 = getelementptr inbounds float* %183, i32 %243 ; [#uses=1]
+ store float %260, float* %261, align 4
+ %262 = fsub float -0.000000e+00, %227 ; [#uses=1]
+ %263 = getelementptr inbounds float* %183, i32 %250 ; [#uses=1]
+ store float %262, float* %263, align 4
+ %264 = fsub float -0.000000e+00, %211 ; [#uses=1]
+ %265 = getelementptr inbounds float* %183, i32 %252 ; [#uses=1]
+ store float %264, float* %265, align 4
+ %266 = load float* %140, align 4 ; [#uses=1]
+ %267 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ %268 = load float* %267, align 4 ; [#uses=1]
+ %269 = fmul float %266, %268 ; [#uses=2]
+ %270 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 7 ; [#uses=2]
+ %271 = load float** %270, align 4 ; [#uses=1]
+ %272 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 0 ; [#uses=2]
+ %273 = load float* %272, align 4 ; [#uses=1]
+ %274 = fmul float %273, %242 ; [#uses=1]
+ %275 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 1 ; [#uses=2]
+ %276 = load float* %275, align 4 ; [#uses=1]
+ %277 = fmul float %276, %232 ; [#uses=1]
+ %278 = fadd float %274, %277 ; [#uses=1]
+ %279 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 2 ; [#uses=2]
+ %280 = load float* %279, align 4 ; [#uses=1]
+ %281 = fmul float %280, %222 ; [#uses=1]
+ %282 = fadd float %278, %281 ; [#uses=1]
+ %283 = fmul float %282, %269 ; [#uses=1]
+ %284 = getelementptr inbounds float* %271, i32 %179 ; [#uses=1]
+ store float %283, float* %284, align 4
+ %285 = load float** %270, align 4 ; [#uses=1]
+ %286 = load float* %272, align 4 ; [#uses=1]
+ %287 = fmul float %286, %237 ; [#uses=1]
+ %288 = load float* %275, align 4 ; [#uses=1]
+ %289 = fmul float %288, %227 ; [#uses=1]
+ %290 = fadd float %287, %289 ; [#uses=1]
+ %291 = load float* %279, align 4 ; [#uses=1]
+ %292 = fmul float %291, %211 ; [#uses=1]
+ %293 = fadd float %290, %292 ; [#uses=1]
+ %294 = fmul float %293, %269 ; [#uses=1]
+ %295 = getelementptr inbounds float* %285, i32 %243 ; [#uses=1]
+ store float %294, float* %295, align 4
+ %296 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=2]
+ %297 = load float** %296, align 4 ; [#uses=1]
+ %298 = getelementptr inbounds float* %297, i32 %179 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %298, align 4
+ %299 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=2]
+ %300 = load float** %299, align 4 ; [#uses=1]
+ %301 = getelementptr inbounds float* %300, i32 %179 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %301, align 4
+ %302 = load float** %296, align 4 ; [#uses=1]
+ %303 = getelementptr inbounds float* %302, i32 %243 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %303, align 4
+ %304 = load float** %299, align 4 ; [#uses=1]
+ %305 = getelementptr inbounds float* %304, i32 %243 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %305, align 4
+ %306 = load i32* %3, align 4 ; [#uses=1]
+ %307 = add nsw i32 %306, %243 ; [#uses=1]
+ br label %bb19
+
+bb15: ; preds = %bb13, %bb12
+ %308 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ %309 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 2 ; [#uses=1]
+ %310 = load float* %309, align 4 ; [#uses=1]
+ %311 = load float* %308, align 4 ; [#uses=6]
+ %312 = fmul float %310, %311 ; [#uses=1]
+ %313 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 1 ; [#uses=1]
+ %314 = load float* %313, align 4 ; [#uses=1]
+ %315 = fmul float %314, %311 ; [#uses=1]
+ %316 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 12, i32 0, i32 0 ; [#uses=1]
+ %317 = load float* %316, align 4 ; [#uses=1]
+ %318 = fmul float %317, %311 ; [#uses=1]
+ %319 = fmul float %312, %311 ; [#uses=2]
+ %320 = fmul float %315, %311 ; [#uses=2]
+ %321 = fmul float %318, %311 ; [#uses=2]
+ %322 = getelementptr inbounds float* %182, i32 %179 ; [#uses=1]
+ store float %321, float* %322, align 4
+ %323 = add nsw i32 %179, 1 ; [#uses=2]
+ %324 = getelementptr inbounds float* %182, i32 %323 ; [#uses=1]
+ store float %320, float* %324, align 4
+ %325 = add nsw i32 %179, 2 ; [#uses=2]
+ %326 = getelementptr inbounds float* %182, i32 %325 ; [#uses=1]
+ store float %319, float* %326, align 4
+ %327 = fsub float -0.000000e+00, %321 ; [#uses=1]
+ %328 = getelementptr inbounds float* %183, i32 %179 ; [#uses=1]
+ store float %327, float* %328, align 4
+ %329 = fsub float -0.000000e+00, %320 ; [#uses=1]
+ %330 = getelementptr inbounds float* %183, i32 %323 ; [#uses=1]
+ store float %329, float* %330, align 4
+ %331 = fsub float -0.000000e+00, %319 ; [#uses=1]
+ %332 = getelementptr inbounds float* %183, i32 %325 ; [#uses=1]
+ store float %331, float* %332, align 4
+ %333 = load float* %140, align 4 ; [#uses=1]
+ %334 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ %335 = load float* %334, align 4 ; [#uses=1]
+ %336 = fmul float %333, %335 ; [#uses=1]
+ %337 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 7 ; [#uses=1]
+ %338 = load float** %337, align 4 ; [#uses=1]
+ %339 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ %340 = load float* %339, align 4 ; [#uses=1]
+ %341 = fmul float %340, %336 ; [#uses=1]
+ %342 = getelementptr inbounds float* %338, i32 %179 ; [#uses=1]
+ store float %341, float* %342, align 4
+ %343 = load i32* %134, align 4 ; [#uses=1]
+ %344 = and i32 %343, 4 ; [#uses=1]
+ %345 = icmp eq i32 %344, 0 ; [#uses=1]
+ br i1 %345, label %bb18, label %bb17
+
+bb17: ; preds = %bb15
+ %346 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=1]
+ %347 = load float** %346, align 4 ; [#uses=1]
+ %348 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 37 ; [#uses=1]
+ %349 = load float* %348, align 4 ; [#uses=1]
+ %350 = getelementptr inbounds float* %347, i32 %179 ; [#uses=1]
+ store float %349, float* %350, align 4
+ br label %bb18
+
+bb18: ; preds = %bb17, %bb15
+ %351 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %352 = load float** %351, align 4 ; [#uses=1]
+ %353 = getelementptr inbounds float* %352, i32 %179 ; [#uses=1]
+ store float 0.000000e+00, float* %353, align 4
+ %354 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %355 = load float** %354, align 4 ; [#uses=1]
+ %356 = getelementptr inbounds float* %355, i32 %179 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %356, align 4
+ %357 = load i32* %3, align 4 ; [#uses=1]
+ %358 = add nsw i32 %357, %179 ; [#uses=1]
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb14, %bb10
+ %srow.0 = phi i32 [ %358, %bb18 ], [ %307, %bb14 ], [ %179, %bb10 ] ; [#uses=11]
+ %359 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ %360 = load i8* %359, align 1 ; [#uses=1]
+ %toBool20 = icmp eq i8 %360, 0 ; [#uses=1]
+ br i1 %toBool20, label %bb35, label %bb21
+
+bb21: ; preds = %bb19
+ %361 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ %362 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 2 ; [#uses=1]
+ %363 = load float* %362, align 4 ; [#uses=1]
+ %364 = load float* %361, align 4 ; [#uses=6]
+ %365 = fmul float %363, %364 ; [#uses=1]
+ %366 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 1 ; [#uses=1]
+ %367 = load float* %366, align 4 ; [#uses=1]
+ %368 = fmul float %367, %364 ; [#uses=1]
+ %369 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 13, i32 0, i32 0 ; [#uses=1]
+ %370 = load float* %369, align 4 ; [#uses=1]
+ %371 = fmul float %370, %364 ; [#uses=1]
+ %372 = fmul float %365, %364 ; [#uses=2]
+ %373 = fmul float %368, %364 ; [#uses=2]
+ %374 = fmul float %371, %364 ; [#uses=2]
+ %375 = load float** %55, align 4 ; [#uses=3]
+ %376 = load float** %116, align 4 ; [#uses=3]
+ %377 = getelementptr inbounds float* %375, i32 %srow.0 ; [#uses=1]
+ store float %374, float* %377, align 4
+ %378 = add nsw i32 %srow.0, 1 ; [#uses=2]
+ %379 = getelementptr inbounds float* %375, i32 %378 ; [#uses=1]
+ store float %373, float* %379, align 4
+ %380 = add nsw i32 %srow.0, 2 ; [#uses=2]
+ %381 = getelementptr inbounds float* %375, i32 %380 ; [#uses=1]
+ store float %372, float* %381, align 4
+ %382 = fsub float -0.000000e+00, %374 ; [#uses=1]
+ %383 = getelementptr inbounds float* %376, i32 %srow.0 ; [#uses=1]
+ store float %382, float* %383, align 4
+ %384 = fsub float -0.000000e+00, %373 ; [#uses=1]
+ %385 = getelementptr inbounds float* %376, i32 %378 ; [#uses=1]
+ store float %384, float* %385, align 4
+ %386 = fsub float -0.000000e+00, %372 ; [#uses=1]
+ %387 = getelementptr inbounds float* %376, i32 %380 ; [#uses=1]
+ store float %386, float* %387, align 4
+ %388 = load float* %140, align 4 ; [#uses=1]
+ %389 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ %390 = load float* %389, align 4 ; [#uses=1]
+ %391 = fmul float %388, %390 ; [#uses=1]
+ %392 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 7 ; [#uses=1]
+ %393 = load float** %392, align 4 ; [#uses=1]
+ %394 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 18 ; [#uses=2]
+ %395 = load float* %394, align 4 ; [#uses=1]
+ %396 = fmul float %395, %391 ; [#uses=1]
+ %397 = getelementptr inbounds float* %393, i32 %srow.0 ; [#uses=1]
+ store float %396, float* %397, align 4
+ %398 = load i32* %134, align 4 ; [#uses=1]
+ %399 = and i32 %398, 4 ; [#uses=1]
+ %400 = icmp eq i32 %399, 0 ; [#uses=1]
+ br i1 %400, label %bb30, label %bb29
+
+bb29: ; preds = %bb21
+ %401 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=1]
+ %402 = load float** %401, align 4 ; [#uses=1]
+ %403 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 37 ; [#uses=1]
+ %404 = load float* %403, align 4 ; [#uses=1]
+ %405 = getelementptr inbounds float* %402, i32 %srow.0 ; [#uses=1]
+ store float %404, float* %405, align 4
+ br label %bb30
+
+bb30: ; preds = %bb29, %bb21
+ %406 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %407 = load float* %406, align 4 ; [#uses=1]
+ %408 = fcmp ogt float %407, 0.000000e+00 ; [#uses=1]
+ br i1 %408, label %bb31, label %bb34
+
+bb31: ; preds = %bb30
+ %409 = load float* %394, align 4 ; [#uses=1]
+ %410 = fcmp ogt float %409, 0.000000e+00 ; [#uses=1]
+ %411 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %412 = load float** %411, align 4 ; [#uses=1]
+ %413 = getelementptr inbounds float* %412, i32 %srow.0 ; [#uses=2]
+ br i1 %410, label %bb32, label %bb33
+
+bb32: ; preds = %bb31
+ store float 0.000000e+00, float* %413, align 4
+ %414 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %415 = load float** %414, align 4 ; [#uses=1]
+ %416 = getelementptr inbounds float* %415, i32 %srow.0 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %416, align 4
+ ret void
+
+bb33: ; preds = %bb31
+ store float 0xC7EFFFFFE0000000, float* %413, align 4
+ %417 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %418 = load float** %417, align 4 ; [#uses=1]
+ %419 = getelementptr inbounds float* %418, i32 %srow.0 ; [#uses=1]
+ store float 0.000000e+00, float* %419, align 4
+ ret void
+
+bb34: ; preds = %bb30
+ %420 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %421 = load float** %420, align 4 ; [#uses=1]
+ %422 = getelementptr inbounds float* %421, i32 %srow.0 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %422, align 4
+ %423 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %424 = load float** %423, align 4 ; [#uses=1]
+ %425 = getelementptr inbounds float* %424, i32 %srow.0 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %425, align 4
+ ret void
+
+bb35: ; preds = %bb19
+ ret void
+
+bb8.1: ; preds = %bb7.1, %bb8
+ %scevgep97.2 = getelementptr %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep99.2 = getelementptr %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %426 = load float** %143, align 4 ; [#uses=1]
+ %427 = load i32* %3, align 4 ; [#uses=1]
+ %428 = shl i32 %427, 1 ; [#uses=1]
+ %429 = load float* %scevgep97.2, align 4 ; [#uses=1]
+ %430 = fadd float %89, %429 ; [#uses=1]
+ %431 = fsub float %430, %28 ; [#uses=1]
+ %432 = load float* %scevgep99.2, align 4 ; [#uses=1]
+ %433 = fsub float %431, %432 ; [#uses=1]
+ %434 = fmul float %433, %142 ; [#uses=1]
+ %435 = getelementptr inbounds float* %426, i32 %428 ; [#uses=1]
+ store float %434, float* %435, align 4
+ %436 = load float** %144, align 4 ; [#uses=1]
+ %437 = load i32* %3, align 4 ; [#uses=1]
+ %438 = shl i32 %437, 1 ; [#uses=1]
+ %439 = getelementptr inbounds float* %436, i32 %438 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %439, align 4
+ %440 = load float** %145, align 4 ; [#uses=1]
+ %441 = load i32* %3, align 4 ; [#uses=1]
+ %442 = shl i32 %441, 1 ; [#uses=1]
+ %443 = getelementptr inbounds float* %440, i32 %442 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %443, align 4
+ %444 = load i32* %134, align 4 ; [#uses=1]
+ %445 = and i32 %444, 1 ; [#uses=1]
+ %toBool.2 = icmp eq i32 %445, 0 ; [#uses=1]
+ br i1 %toBool.2, label %bb10, label %bb7.2
+
+bb7.1: ; preds = %bb8
+ %446 = load float** %146, align 4 ; [#uses=1]
+ %447 = load i32* %3, align 4 ; [#uses=1]
+ %448 = load float* %147, align 4 ; [#uses=1]
+ %449 = getelementptr inbounds float* %446, i32 %447 ; [#uses=1]
+ store float %448, float* %449, align 4
+ br label %bb8.1
+
+bb7.2: ; preds = %bb8.1
+ %450 = load float** %146, align 4 ; [#uses=1]
+ %451 = load i32* %3, align 4 ; [#uses=1]
+ %452 = shl i32 %451, 1 ; [#uses=1]
+ %453 = load float* %147, align 4 ; [#uses=1]
+ %454 = getelementptr inbounds float* %450, i32 %452 ; [#uses=1]
+ store float %453, float* %454, align 4
+ br label %bb10
+}
+
+; [#uses=0]
+define void @_ZN21btConeTwistConstraintC2ER11btRigidBodyRK11btTransform(%struct.btConeTwistConstraint* %this, %struct.btRigidBody* %rbA, %struct.btTransform* nocapture %rbAFrame) align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBody(%struct.btTypedConstraint* %0, i32 5, %struct.btRigidBody* %rbA)
+ %1 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV21btConeTwistConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=2]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=2]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=2]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=2]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=2]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=2]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=2]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=2]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=2]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=2]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ store i8 0, i8* %51, align 1
+ %52 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %4, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %7, float* %53, align 4
+ %54 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %10, float* %54, align 4
+ %55 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %13, float* %55, align 4
+ %56 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %16, float* %56, align 4
+ %57 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %19, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %22, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %25, float* %59, align 4
+ %60 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %28, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %31, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %34, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %37, float* %63, align 4
+ %64 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %40, float* %64, align 4
+ %65 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %43, float* %65, align 4
+ %66 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %46, float* %66, align 4
+ %67 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %49, float* %67, align 4
+ store i8 0, i8* %50, align 4
+ %68 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ store i8 0, i8* %68, align 1
+ %69 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 24 ; [#uses=1]
+ store i8 0, i8* %69, align 2
+ %70 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 29 ; [#uses=1]
+ store i8 0, i8* %70, align 4
+ %71 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 32 ; [#uses=1]
+ store float -1.000000e+00, float* %71, align 4
+ %72 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %72, align 4
+ %73 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %73, align 4
+ %74 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %74, align 4
+ %75 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ store float 1.000000e+00, float* %75, align 4
+ %76 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %76, align 4
+ %77 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ store float 1.000000e+00, float* %77, align 4
+ %78 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %78, align 4
+ %79 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ store float 0x3FA99999A0000000, float* %79, align 4
+ %80 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 34 ; [#uses=1]
+ store i32 0, i32* %80, align 4
+ %81 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 35 ; [#uses=1]
+ store float 0.000000e+00, float* %81, align 4
+ %82 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 36 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %82, align 4
+ %83 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 37 ; [#uses=1]
+ store float 0.000000e+00, float* %83, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btConeTwistConstraintC1ER11btRigidBodyRK11btTransform(%struct.btConeTwistConstraint* %this, %struct.btRigidBody* %rbA, %struct.btTransform* nocapture %rbAFrame) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBody(%struct.btTypedConstraint* %0, i32 5, %struct.btRigidBody* %rbA)
+ %1 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV21btConeTwistConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=2]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=2]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=2]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=2]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=2]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=2]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=2]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=2]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=2]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=2]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ store i8 0, i8* %51, align 1
+ %52 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %4, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %7, float* %53, align 4
+ %54 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %10, float* %54, align 4
+ %55 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %13, float* %55, align 4
+ %56 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %16, float* %56, align 4
+ %57 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %19, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %22, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %25, float* %59, align 4
+ %60 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %28, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %31, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %34, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %37, float* %63, align 4
+ %64 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %40, float* %64, align 4
+ %65 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %43, float* %65, align 4
+ %66 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %46, float* %66, align 4
+ %67 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %49, float* %67, align 4
+ store i8 0, i8* %50, align 4
+ %68 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ store i8 0, i8* %68, align 1
+ %69 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 24 ; [#uses=1]
+ store i8 0, i8* %69, align 2
+ %70 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 29 ; [#uses=1]
+ store i8 0, i8* %70, align 4
+ %71 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 32 ; [#uses=1]
+ store float -1.000000e+00, float* %71, align 4
+ %72 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %72, align 4
+ %73 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %73, align 4
+ %74 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %74, align 4
+ %75 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ store float 1.000000e+00, float* %75, align 4
+ %76 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %76, align 4
+ %77 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ store float 1.000000e+00, float* %77, align 4
+ %78 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %78, align 4
+ %79 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ store float 0x3FA99999A0000000, float* %79, align 4
+ %80 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 34 ; [#uses=1]
+ store i32 0, i32* %80, align 4
+ %81 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 35 ; [#uses=1]
+ store float 0.000000e+00, float* %81, align 4
+ %82 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 36 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %82, align 4
+ %83 = getelementptr inbounds %struct.btConeTwistConstraint* %this, i32 0, i32 37 ; [#uses=1]
+ store float 0.000000e+00, float* %83, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btConeTwistConstraintC1ER11btRigidBodyS1_RK11btTransformS4_(%struct.btConeTwistConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* nocapture %rbAFrame, %struct.btTransform* nocapture %rbBFrame) align 2 {
+entry:
+ tail call void @_ZN21btConeTwistConstraintC2ER11btRigidBodyS1_RK11btTransformS4_(%struct.btConeTwistConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* %rbAFrame, %struct.btTransform* %rbBFrame)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN19btContactConstraintC2EP20btPersistentManifoldR11btRigidBodyS3_(%struct.btContactConstraint* %this, %struct.btPersistentManifold* nocapture %contactManifold, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContactConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBodyS2_(%struct.btTypedConstraint* %0, i32 8, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB)
+ %1 = getelementptr inbounds %struct.btContactConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV19btContactConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btContactConstraint* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = bitcast %struct.btPersistentManifold* %2 to i8* ; [#uses=1]
+ %4 = bitcast %struct.btPersistentManifold* %contactManifold to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %3, i8* %4, i32 1140, i32 4, i1 false)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN19btContactConstraint18setContactManifoldEP20btPersistentManifold(%struct.btContactConstraint* nocapture %this, %struct.btPersistentManifold* nocapture %contactManifold) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContactConstraint* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = bitcast %struct.btPersistentManifold* %0 to i8* ; [#uses=1]
+ %2 = bitcast %struct.btPersistentManifold* %contactManifold to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1, i8* %2, i32 1140, i32 4, i1 false)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN19btContactConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E(%struct.btContactConstraint* nocapture %this, %struct.CONTACT_KEY_TOKEN* nocapture %info) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN19btContactConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E(%struct.btContactConstraint* nocapture %this, %"struct.btTypedConstraint::btConstraintInfo2"* nocapture %info) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN19btContactConstraint13buildJacobianEv(%struct.btContactConstraint* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_Z22resolveSingleBilateralR11btRigidBodyRK9btVector3S0_S3_fS3_Rff(%struct.btRigidBody* nocapture %body1, %struct.btQuadWord* nocapture %pos1, %struct.btRigidBody* nocapture %body2, %struct.btQuadWord* nocapture %pos2, float %distance, %struct.btQuadWord* nocapture %normal, float* nocapture %impulse, float %timeStep) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=6]
+ %2 = fmul float %1, %1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=6]
+ %5 = fmul float %4, %4 ; [#uses=1]
+ %6 = fadd float %2, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=6]
+ %9 = fmul float %8, %8 ; [#uses=1]
+ %10 = fadd float %6, %9 ; [#uses=1]
+ %11 = fcmp ogt float %10, 0x3FF19999A0000000 ; [#uses=1]
+ br i1 %11, label %bb, label %bb1
+
+bb: ; preds = %entry
+ store float 0.000000e+00, float* %impulse, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %12 = getelementptr inbounds %struct.btQuadWord* %pos1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fsub float %13, %15 ; [#uses=4]
+ %17 = getelementptr inbounds %struct.btQuadWord* %pos1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fsub float %18, %20 ; [#uses=4]
+ %22 = getelementptr inbounds %struct.btQuadWord* %pos1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fsub float %23, %25 ; [#uses=4]
+ %27 = getelementptr inbounds %struct.btQuadWord* %pos2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fsub float %28, %30 ; [#uses=4]
+ %32 = getelementptr inbounds %struct.btQuadWord* %pos2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fsub float %33, %35 ; [#uses=4]
+ %37 = getelementptr inbounds %struct.btQuadWord* %pos2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fsub float %38, %40 ; [#uses=4]
+ %42 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=2]
+ %44 = fmul float %43, %21 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=2]
+ %47 = fmul float %46, %26 ; [#uses=1]
+ %48 = fsub float %44, %47 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=2]
+ %51 = fmul float %50, %26 ; [#uses=1]
+ %52 = fmul float %43, %16 ; [#uses=1]
+ %53 = fsub float %51, %52 ; [#uses=1]
+ %54 = fmul float %46, %16 ; [#uses=1]
+ %55 = fmul float %50, %21 ; [#uses=1]
+ %56 = fsub float %54, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = fadd float %58, %48 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fadd float %61, %53 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %65 = fadd float %64, %56 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=2]
+ %68 = fmul float %67, %36 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=2]
+ %71 = fmul float %70, %41 ; [#uses=1]
+ %72 = fsub float %68, %71 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=2]
+ %75 = fmul float %74, %41 ; [#uses=1]
+ %76 = fmul float %67, %31 ; [#uses=1]
+ %77 = fsub float %75, %76 ; [#uses=1]
+ %78 = fmul float %70, %31 ; [#uses=1]
+ %79 = fmul float %74, %36 ; [#uses=1]
+ %80 = fsub float %78, %79 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ %83 = fadd float %82, %72 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = fadd float %85, %77 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = fadd float %88, %80 ; [#uses=1]
+ %90 = fsub float %59, %83 ; [#uses=1]
+ %91 = fsub float %62, %86 ; [#uses=1]
+ %92 = fsub float %65, %89 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 4 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 4 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %106 = load float* %105, align 4 ; [#uses=1]
+ %107 = load float* %104, align 4 ; [#uses=1]
+ %108 = load float* %103, align 4 ; [#uses=1]
+ %109 = load float* %102, align 4 ; [#uses=1]
+ %110 = load float* %101, align 4 ; [#uses=1]
+ %111 = load float* %100, align 4 ; [#uses=1]
+ %112 = load float* %99, align 4 ; [#uses=1]
+ %113 = load float* %98, align 4 ; [#uses=1]
+ %114 = load float* %97, align 4 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %121 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %124 = load float* %123, align 4 ; [#uses=1]
+ %125 = load float* %122, align 4 ; [#uses=1]
+ %126 = load float* %121, align 4 ; [#uses=1]
+ %127 = load float* %120, align 4 ; [#uses=1]
+ %128 = load float* %119, align 4 ; [#uses=1]
+ %129 = load float* %118, align 4 ; [#uses=1]
+ %130 = load float* %117, align 4 ; [#uses=1]
+ %131 = load float* %116, align 4 ; [#uses=1]
+ %132 = load float* %115, align 4 ; [#uses=1]
+ %133 = fmul float %26, %4 ; [#uses=1]
+ %134 = fmul float %21, %1 ; [#uses=1]
+ %135 = fsub float %133, %134 ; [#uses=3]
+ %136 = fmul float %16, %1 ; [#uses=1]
+ %137 = fmul float %26, %8 ; [#uses=1]
+ %138 = fsub float %136, %137 ; [#uses=3]
+ %139 = fmul float %21, %8 ; [#uses=1]
+ %140 = fmul float %16, %4 ; [#uses=1]
+ %141 = fsub float %139, %140 ; [#uses=3]
+ %142 = fmul float %130, %141 ; [#uses=1]
+ %143 = fmul float %131, %138 ; [#uses=1]
+ %144 = fadd float %142, %143 ; [#uses=1]
+ %145 = fmul float %132, %135 ; [#uses=1]
+ %146 = fadd float %144, %145 ; [#uses=2]
+ %147 = fmul float %127, %141 ; [#uses=1]
+ %148 = fmul float %128, %138 ; [#uses=1]
+ %149 = fadd float %147, %148 ; [#uses=1]
+ %150 = fmul float %129, %135 ; [#uses=1]
+ %151 = fadd float %149, %150 ; [#uses=2]
+ %152 = fmul float %124, %141 ; [#uses=1]
+ %153 = fmul float %125, %138 ; [#uses=1]
+ %154 = fadd float %152, %153 ; [#uses=1]
+ %155 = fmul float %126, %135 ; [#uses=1]
+ %156 = fadd float %154, %155 ; [#uses=2]
+ %157 = fsub float -0.000000e+00, %8 ; [#uses=2]
+ %158 = fsub float -0.000000e+00, %4 ; [#uses=2]
+ %159 = fsub float -0.000000e+00, %1 ; [#uses=2]
+ %160 = fmul float %41, %158 ; [#uses=1]
+ %161 = fmul float %36, %159 ; [#uses=1]
+ %162 = fsub float %160, %161 ; [#uses=3]
+ %163 = fmul float %31, %159 ; [#uses=1]
+ %164 = fmul float %41, %157 ; [#uses=1]
+ %165 = fsub float %163, %164 ; [#uses=3]
+ %166 = fmul float %36, %157 ; [#uses=1]
+ %167 = fmul float %31, %158 ; [#uses=1]
+ %168 = fsub float %166, %167 ; [#uses=3]
+ %169 = fmul float %112, %168 ; [#uses=1]
+ %170 = fmul float %113, %165 ; [#uses=1]
+ %171 = fadd float %169, %170 ; [#uses=1]
+ %172 = fmul float %114, %162 ; [#uses=1]
+ %173 = fadd float %171, %172 ; [#uses=2]
+ %174 = fmul float %109, %168 ; [#uses=1]
+ %175 = fmul float %110, %165 ; [#uses=1]
+ %176 = fadd float %174, %175 ; [#uses=1]
+ %177 = fmul float %111, %162 ; [#uses=1]
+ %178 = fadd float %176, %177 ; [#uses=2]
+ %179 = fmul float %106, %168 ; [#uses=1]
+ %180 = fmul float %107, %165 ; [#uses=1]
+ %181 = fadd float %179, %180 ; [#uses=1]
+ %182 = fmul float %108, %162 ; [#uses=1]
+ %183 = fadd float %181, %182 ; [#uses=2]
+ %184 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ %185 = load float* %184, align 4 ; [#uses=1]
+ %186 = fmul float %185, %146 ; [#uses=1]
+ %187 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ %188 = load float* %187, align 4 ; [#uses=1]
+ %189 = fmul float %188, %151 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ %191 = load float* %190, align 4 ; [#uses=1]
+ %192 = fmul float %191, %156 ; [#uses=1]
+ %193 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ %194 = load float* %193, align 4 ; [#uses=1]
+ %195 = fmul float %194, %173 ; [#uses=1]
+ %196 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ %197 = load float* %196, align 4 ; [#uses=1]
+ %198 = fmul float %197, %178 ; [#uses=1]
+ %199 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ %200 = load float* %199, align 4 ; [#uses=1]
+ %201 = fmul float %200, %183 ; [#uses=1]
+ %202 = fmul float %192, %156 ; [#uses=1]
+ %203 = fmul float %189, %151 ; [#uses=1]
+ %204 = fadd float %202, %203 ; [#uses=1]
+ %205 = fmul float %186, %146 ; [#uses=1]
+ %206 = fadd float %204, %205 ; [#uses=1]
+ %207 = fadd float %206, %96 ; [#uses=1]
+ %208 = fadd float %207, %94 ; [#uses=1]
+ %209 = fmul float %201, %183 ; [#uses=1]
+ %210 = fmul float %198, %178 ; [#uses=1]
+ %211 = fadd float %209, %210 ; [#uses=1]
+ %212 = fmul float %195, %173 ; [#uses=1]
+ %213 = fadd float %211, %212 ; [#uses=1]
+ %214 = fadd float %208, %213 ; [#uses=1]
+ %215 = fdiv float 1.000000e+00, %214 ; [#uses=1]
+ %216 = fmul float %1, %92 ; [#uses=1]
+ %217 = fmul float %4, %91 ; [#uses=1]
+ %218 = fadd float %216, %217 ; [#uses=1]
+ %219 = fmul float %8, %90 ; [#uses=1]
+ %220 = fadd float %218, %219 ; [#uses=1]
+ %221 = fmul float %220, 0xBFC99999A0000000 ; [#uses=1]
+ %222 = fmul float %221, %215 ; [#uses=1]
+ store float %222, float* %impulse, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN19btContactConstraintD0Ev(%struct.btContactConstraint* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContactConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV19btContactConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btContactConstraint* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN19btContactConstraintD1Ev(%struct.btContactConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContactConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV19btContactConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN19btContactConstraintD2Ev(%struct.btContactConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContactConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV19btContactConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN19btContactConstraintC1EP20btPersistentManifoldR11btRigidBodyS3_(%struct.btContactConstraint* %this, %struct.btPersistentManifold* nocapture %contactManifold, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContactConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBodyS2_(%struct.btTypedConstraint* %0, i32 8, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB)
+ %1 = getelementptr inbounds %struct.btContactConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV19btContactConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btContactConstraint* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = bitcast %struct.btPersistentManifold* %2 to i8* ; [#uses=1]
+ %4 = bitcast %struct.btPersistentManifold* %contactManifold to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %3, i8* %4, i32 1140, i32 4, i1 false)
+ ret void
+}
+
+; [#uses=4]
+define void @_ZN23btGeneric6DofConstraintC2ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btGeneric6DofConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* nocapture %frameInA, %struct.btTransform* nocapture %frameInB, i8 zeroext %useLinearReferenceFrameA) align 2 {
+return:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBodyS2_(%struct.btTypedConstraint* %0, i32 6, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB)
+ %1 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV23btGeneric6DofConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ %56 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ store float %58, float* %56, align 4
+ %59 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %59, align 4
+ %62 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ store float %64, float* %62, align 4
+ %65 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ store float %67, float* %65, align 4
+ %68 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %71, align 4
+ %74 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ store float %76, float* %74, align 4
+ %77 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ store float %79, float* %77, align 4
+ %80 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ store float %82, float* %80, align 4
+ %83 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ store float %85, float* %83, align 4
+ %86 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ store float %88, float* %86, align 4
+ %89 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ store float %91, float* %89, align 4
+ %92 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ store float %94, float* %92, align 4
+ %95 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ store float %97, float* %95, align 4
+ %98 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 6, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %99, align 4
+ %100 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 6, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %100, align 4
+ %101 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 6, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %101, align 4
+ %102 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 6, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %102, align 4
+ %103 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 7, i32 0, i32 0 ; [#uses=1]
+ %104 = bitcast %struct.btTranslationalLimitMotor* %98 to i8* ; [#uses=1]
+ tail call void @llvm.memset.p0i8.i64(i8* %104, i8 0, i64 48, i32 4, i1 false) nounwind
+ store float 0x3FC99999A0000000, float* %103, align 4
+ %105 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 7, i32 0, i32 1 ; [#uses=1]
+ store float 0x3FC99999A0000000, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 7, i32 0, i32 2 ; [#uses=1]
+ store float 0x3FC99999A0000000, float* %106, align 4
+ %107 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 7, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %107, align 4
+ %108 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 8, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %108, align 4
+ %109 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 8, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %109, align 4
+ %110 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 8, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %110, align 4
+ %111 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 8, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %111, align 4
+ %112 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store float 1.000000e+00, float* %113, align 4
+ %114 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 5 ; [#uses=1]
+ store float 5.000000e-01, float* %114, align 4
+ %scevgep.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 9, i32 0 ; [#uses=1]
+ %scevgep4.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 10, i32 0, i32 0 ; [#uses=1]
+ %scevgep5.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 11, i32 0, i32 0 ; [#uses=1]
+ store i8 0, i8* %scevgep.i.i, align 1
+ store float 0.000000e+00, float* %scevgep4.i.i, align 4
+ store float 0.000000e+00, float* %scevgep5.i.i, align 4
+ %scevgep.1.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 9, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 10, i32 0, i32 1 ; [#uses=1]
+ %scevgep5.1.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 11, i32 0, i32 1 ; [#uses=1]
+ store i8 0, i8* %scevgep.1.i.i, align 1
+ store float 0.000000e+00, float* %scevgep4.1.i.i, align 4
+ store float 0.000000e+00, float* %scevgep5.1.i.i, align 4
+ %scevgep.2.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 9, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 10, i32 0, i32 2 ; [#uses=1]
+ %scevgep5.2.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 11, i32 0, i32 2 ; [#uses=1]
+ store i8 0, i8* %scevgep.2.i.i, align 1
+ store float 0.000000e+00, float* %scevgep4.2.i.i, align 4
+ store float 0.000000e+00, float* %scevgep5.2.i.i, align 4
+ %scevgep = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 15 ; [#uses=1]
+ %scevgep32 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %scevgep33 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %scevgep34 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 4 ; [#uses=1]
+ %scevgep3536 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %scevgep37 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %scevgep38 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 7 ; [#uses=1]
+ %scevgep39 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 8 ; [#uses=1]
+ %scevgep40 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 9 ; [#uses=1]
+ %scevgep41 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 10 ; [#uses=1]
+ %scevgep42 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 5 ; [#uses=1]
+ %scevgep43 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 6 ; [#uses=1]
+ %scevgep44 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 14 ; [#uses=1]
+ %scevgep45 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 12 ; [#uses=1]
+ %scevgep46 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 11 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep, align 4
+ store float 0.000000e+00, float* %scevgep32, align 4
+ store float 0x3FB99999A0000000, float* %scevgep33, align 4
+ store float 3.000000e+02, float* %scevgep34, align 4
+ store float 1.000000e+00, float* %scevgep3536, align 4
+ store float -1.000000e+00, float* %scevgep37, align 4
+ store float 0.000000e+00, float* %scevgep38, align 4
+ store float 0x3FC99999A0000000, float* %scevgep39, align 4
+ store float 0.000000e+00, float* %scevgep40, align 4
+ store float 0.000000e+00, float* %scevgep41, align 4
+ store float 1.000000e+00, float* %scevgep42, align 4
+ store float 5.000000e-01, float* %scevgep43, align 4
+ store i32 0, i32* %scevgep44, align 4
+ store float 0.000000e+00, float* %scevgep45, align 4
+ store i8 0, i8* %scevgep46, align 4
+ %scevgep.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 15 ; [#uses=1]
+ %scevgep32.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 2 ; [#uses=1]
+ %scevgep33.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 3 ; [#uses=1]
+ %scevgep34.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 4 ; [#uses=1]
+ %scevgep3536.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 0 ; [#uses=1]
+ %scevgep37.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 1 ; [#uses=1]
+ %scevgep38.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 7 ; [#uses=1]
+ %scevgep39.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 8 ; [#uses=1]
+ %scevgep40.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 9 ; [#uses=1]
+ %scevgep41.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 10 ; [#uses=1]
+ %scevgep42.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 5 ; [#uses=1]
+ %scevgep43.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 6 ; [#uses=1]
+ %scevgep44.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 14 ; [#uses=1]
+ %scevgep45.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 12 ; [#uses=1]
+ %scevgep46.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 11 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep.1, align 4
+ store float 0.000000e+00, float* %scevgep32.1, align 4
+ store float 0x3FB99999A0000000, float* %scevgep33.1, align 4
+ store float 3.000000e+02, float* %scevgep34.1, align 4
+ store float 1.000000e+00, float* %scevgep3536.1, align 4
+ store float -1.000000e+00, float* %scevgep37.1, align 4
+ store float 0.000000e+00, float* %scevgep38.1, align 4
+ store float 0x3FC99999A0000000, float* %scevgep39.1, align 4
+ store float 0.000000e+00, float* %scevgep40.1, align 4
+ store float 0.000000e+00, float* %scevgep41.1, align 4
+ store float 1.000000e+00, float* %scevgep42.1, align 4
+ store float 5.000000e-01, float* %scevgep43.1, align 4
+ store i32 0, i32* %scevgep44.1, align 4
+ store float 0.000000e+00, float* %scevgep45.1, align 4
+ store i8 0, i8* %scevgep46.1, align 4
+ %scevgep.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 15 ; [#uses=1]
+ %scevgep32.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 2 ; [#uses=1]
+ %scevgep33.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 3 ; [#uses=1]
+ %scevgep34.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 4 ; [#uses=1]
+ %scevgep3536.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 0 ; [#uses=1]
+ %scevgep37.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 1 ; [#uses=1]
+ %scevgep38.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 7 ; [#uses=1]
+ %scevgep39.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 8 ; [#uses=1]
+ %scevgep40.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 9 ; [#uses=1]
+ %scevgep41.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 10 ; [#uses=1]
+ %scevgep42.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 5 ; [#uses=1]
+ %scevgep43.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 6 ; [#uses=1]
+ %scevgep44.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 14 ; [#uses=1]
+ %scevgep45.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 12 ; [#uses=1]
+ %scevgep46.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 11 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep.2, align 4
+ store float 0.000000e+00, float* %scevgep32.2, align 4
+ store float 0x3FB99999A0000000, float* %scevgep33.2, align 4
+ store float 3.000000e+02, float* %scevgep34.2, align 4
+ store float 1.000000e+00, float* %scevgep3536.2, align 4
+ store float -1.000000e+00, float* %scevgep37.2, align 4
+ store float 0.000000e+00, float* %scevgep38.2, align 4
+ store float 0x3FC99999A0000000, float* %scevgep39.2, align 4
+ store float 0.000000e+00, float* %scevgep40.2, align 4
+ store float 0.000000e+00, float* %scevgep41.2, align 4
+ store float 1.000000e+00, float* %scevgep42.2, align 4
+ store float 5.000000e-01, float* %scevgep43.2, align 4
+ store i32 0, i32* %scevgep44.2, align 4
+ store float 0.000000e+00, float* %scevgep45.2, align 4
+ store i8 0, i8* %scevgep46.2, align 4
+ %115 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ store i8 %useLinearReferenceFrameA, i8* %115, align 4
+ %116 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ store i8 1, i8* %116, align 1
+ %117 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ store i32 0, i32* %117, align 4
+ %118 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ store i8 0, i8* %118, align 4
+ %119 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %120 = load %struct.btRigidBody** %119, align 4 ; [#uses=1]
+ %121 = getelementptr inbounds %struct.btRigidBody* %120, i32 0, i32 0, i32 1 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %123 = load %struct.btRigidBody** %122, align 4 ; [#uses=1]
+ %124 = getelementptr inbounds %struct.btRigidBody* %123, i32 0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN23btGeneric6DofConstraint19calculateTransformsERK11btTransformS2_(%struct.btGeneric6DofConstraint* %this, %struct.btTransform* %124, %struct.btTransform* %121) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK23btGeneric6DofConstraint28calculateSerializeBufferSizeEv(%struct.btGeneric6DofConstraint* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 244
+}
+
+; [#uses=0]
+define float @_Z15btGetMatrixElemRK11btMatrix3x3i(%struct.btMatrix3x3* nocapture %mat, i32 %index) nounwind readonly {
+entry:
+ %0 = srem i32 %index, 3 ; [#uses=1]
+ %1 = sdiv i32 %index, 3 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btMatrix3x3* %mat, i32 0, i32 0, i32 %0, i32 0, i32 %1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ ret float %3
+}
+
+; [#uses=0]
+define i32 @_ZN22btRotationalLimitMotor14testLimitValueEf(%struct.btRotationalLimitMotor* nocapture %this, float %test_value) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fcmp ogt float %1, %3 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 14 ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ ret i32 0
+
+bb1: ; preds = %entry
+ %6 = fcmp ogt float %1, %test_value ; [#uses=1]
+ br i1 %6, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ %7 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 14 ; [#uses=1]
+ store i32 1, i32* %7, align 4
+ %8 = fsub float %test_value, %1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 12 ; [#uses=1]
+ store float %8, float* %9, align 4
+ ret i32 1
+
+bb3: ; preds = %bb1
+ %10 = fcmp olt float %3, %test_value ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 14 ; [#uses=2]
+ br i1 %10, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ store i32 2, i32* %11, align 4
+ %12 = fsub float %test_value, %3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 12 ; [#uses=1]
+ store float %12, float* %13, align 4
+ ret i32 2
+
+bb5: ; preds = %bb3
+ store i32 0, i32* %11, align 4
+ ret i32 0
+}
+
+; [#uses=0]
+define float @_ZN22btRotationalLimitMotor18solveAngularLimitsEfR9btVector3fP11btRigidBodyS3_(%struct.btRotationalLimitMotor* nocapture %this, float %timeStep, %struct.btQuadWord* nocapture %axis, float %jacDiagABInv, %struct.btRigidBody* nocapture %body0, %struct.btRigidBody* nocapture %body1) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 14 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %_ZN22btRotationalLimitMotor16needApplyTorquesEv.exit, label %bb4
+
+_ZN22btRotationalLimitMotor16needApplyTorquesEv.exit: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 11 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=1]
+ %phitmp = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %phitmp, label %bb24, label %bb3.thread
+
+bb3.thread: ; preds = %_ZN22btRotationalLimitMotor16needApplyTorquesEv.exit
+ %5 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb5
+
+bb4: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 8 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = fsub float -0.000000e+00, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 12 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = fmul float %12, %10 ; [#uses=1]
+ %14 = fdiv float %13, %timeStep ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 4 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3.thread
+ %target_velocity.0 = phi float [ %14, %bb4 ], [ %6, %bb3.thread ] ; [#uses=1]
+ %maxMotorForce.0.in = phi float* [ %15, %bb4 ], [ %7, %bb3.thread ] ; [#uses=1]
+ %maxMotorForce.0 = load float* %maxMotorForce.0.in, align 4 ; [#uses=1]
+ %16 = fmul float %maxMotorForce.0, %timeStep ; [#uses=3]
+ %17 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 25, i32 0, i32 2 ; [#uses=3]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fadd float %18, %20 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 25, i32 0, i32 1 ; [#uses=3]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fadd float %23, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 25, i32 0, i32 0 ; [#uses=3]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fadd float %28, %30 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 25, i32 0, i32 2 ; [#uses=3]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fadd float %33, %35 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 25, i32 0, i32 1 ; [#uses=3]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fadd float %38, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 25, i32 0, i32 0 ; [#uses=3]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fadd float %43, %45 ; [#uses=1]
+ %47 = fsub float %21, %36 ; [#uses=1]
+ %48 = fsub float %26, %41 ; [#uses=1]
+ %49 = fsub float %31, %46 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 0 ; [#uses=3]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fmul float %51, %49 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 1 ; [#uses=3]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = fmul float %54, %48 ; [#uses=1]
+ %56 = fadd float %52, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 2 ; [#uses=3]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = fmul float %58, %47 ; [#uses=1]
+ %60 = fadd float %56, %59 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 6 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 5 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %65 = fmul float %64, %60 ; [#uses=1]
+ %66 = fsub float %target_velocity.0, %65 ; [#uses=1]
+ %67 = fmul float %62, %66 ; [#uses=3]
+ %68 = fcmp olt float %67, 0x3E80000000000000 ; [#uses=1]
+ %69 = fcmp ogt float %67, 0xBE80000000000000 ; [#uses=1]
+ %or.cond = and i1 %68, %69 ; [#uses=1]
+ br i1 %or.cond, label %bb24, label %bb8
+
+bb8: ; preds = %bb5
+ %70 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 10 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ %72 = fadd float %71, 1.000000e+00 ; [#uses=1]
+ %73 = fmul float %72, %67 ; [#uses=1]
+ %74 = fmul float %73, %jacDiagABInv ; [#uses=5]
+ %75 = fcmp ogt float %74, 0.000000e+00 ; [#uses=1]
+ br i1 %75, label %bb9, label %bb13
+
+bb9: ; preds = %bb8
+ %76 = fcmp ogt float %74, %16 ; [#uses=1]
+ %iftmp.199.0 = select i1 %76, float %16, float %74 ; [#uses=1]
+ br label %bb17
+
+bb13: ; preds = %bb8
+ %77 = fsub float -0.000000e+00, %16 ; [#uses=2]
+ %78 = fcmp olt float %74, %77 ; [#uses=1]
+ br i1 %78, label %bb14, label %bb17
+
+bb14: ; preds = %bb13
+ br label %bb17
+
+bb17: ; preds = %bb14, %bb13, %bb9
+ %storemerge = phi float [ %iftmp.199.0, %bb9 ], [ %77, %bb14 ], [ %74, %bb13 ] ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btRotationalLimitMotor* %this, i32 0, i32 15 ; [#uses=2]
+ %80 = load float* %79, align 4 ; [#uses=2]
+ %81 = fadd float %80, %storemerge ; [#uses=3]
+ %82 = fcmp ule float %81, 0x43ABC16D60000000 ; [#uses=1]
+ br i1 %82, label %bb18, label %bb23
+
+bb18: ; preds = %bb17
+ %83 = fcmp uge float %81, 0xC3ABC16D60000000 ; [#uses=1]
+ %iftmp.203.0 = select i1 %83, float %81, float 0.000000e+00 ; [#uses=1]
+ br label %bb23
+
+bb23: ; preds = %bb18, %bb17
+ %iftmp.202.0 = phi float [ %iftmp.203.0, %bb18 ], [ 0.000000e+00, %bb17 ] ; [#uses=2]
+ store float %iftmp.202.0, float* %79, align 4
+ %84 = fsub float %iftmp.202.0, %80 ; [#uses=8]
+ %85 = load float* %50, align 4 ; [#uses=4]
+ %86 = load float* %53, align 4 ; [#uses=4]
+ %87 = load float* %57, align 4 ; [#uses=4]
+ %88 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 4 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ %90 = fcmp une float %89, 0.000000e+00 ; [#uses=1]
+ br i1 %90, label %bb.i28, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit30
+
+bb.i28: ; preds = %bb23
+ %91 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %98 = load float* %91, align 4 ; [#uses=1]
+ %99 = load float* %92, align 4 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %101 = load float* %93, align 4 ; [#uses=1]
+ %102 = load float* %94, align 4 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %104 = load float* %95, align 4 ; [#uses=1]
+ %105 = load float* %96, align 4 ; [#uses=1]
+ %106 = load float* %97, align 4 ; [#uses=1]
+ %107 = fmul float %98, %86 ; [#uses=1]
+ %108 = fmul float %99, %85 ; [#uses=1]
+ %109 = load float* %100, align 4 ; [#uses=1]
+ %110 = fmul float %101, %86 ; [#uses=1]
+ %111 = fmul float %102, %85 ; [#uses=1]
+ %112 = load float* %103, align 4 ; [#uses=1]
+ %113 = fmul float %104, %86 ; [#uses=1]
+ %114 = fmul float %105, %85 ; [#uses=1]
+ %115 = fmul float %106, %87 ; [#uses=1]
+ %116 = fadd float %108, %107 ; [#uses=1]
+ %117 = fmul float %109, %87 ; [#uses=1]
+ %118 = fadd float %111, %110 ; [#uses=1]
+ %119 = fmul float %112, %87 ; [#uses=1]
+ %120 = fadd float %114, %113 ; [#uses=1]
+ %121 = fadd float %116, %115 ; [#uses=1]
+ %122 = fadd float %118, %117 ; [#uses=1]
+ %123 = fadd float %120, %119 ; [#uses=1]
+ %124 = fmul float %84, 0.000000e+00 ; [#uses=3]
+ %125 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %126 = load float* %125, align 4 ; [#uses=1]
+ %127 = fadd float %126, %124 ; [#uses=1]
+ store float %127, float* %125, align 4
+ %128 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %129 = load float* %128, align 4 ; [#uses=1]
+ %130 = fadd float %129, %124 ; [#uses=1]
+ store float %130, float* %128, align 4
+ %131 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %132 = load float* %131, align 4 ; [#uses=1]
+ %133 = fadd float %132, %124 ; [#uses=1]
+ store float %133, float* %131, align 4
+ %134 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ %136 = fmul float %135, %84 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %138 = load float* %137, align 4 ; [#uses=1]
+ %139 = fmul float %138, %84 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ %142 = fmul float %141, %84 ; [#uses=1]
+ %143 = fmul float %123, %136 ; [#uses=1]
+ %144 = fmul float %122, %139 ; [#uses=1]
+ %145 = fmul float %121, %142 ; [#uses=1]
+ %146 = load float* %29, align 4 ; [#uses=1]
+ %147 = fadd float %146, %145 ; [#uses=1]
+ store float %147, float* %29, align 4
+ %148 = load float* %24, align 4 ; [#uses=1]
+ %149 = fadd float %148, %144 ; [#uses=1]
+ store float %149, float* %24, align 4
+ %150 = load float* %19, align 4 ; [#uses=1]
+ %151 = fadd float %150, %143 ; [#uses=1]
+ store float %151, float* %19, align 4
+ %.pre = load float* %50, align 4 ; [#uses=1]
+ %.pre60 = load float* %53, align 4 ; [#uses=1]
+ %.pre61 = load float* %57, align 4 ; [#uses=1]
+ br label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit30
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit30: ; preds = %bb.i28, %bb23
+ %152 = phi float [ %87, %bb23 ], [ %.pre61, %bb.i28 ] ; [#uses=3]
+ %153 = phi float [ %86, %bb23 ], [ %.pre60, %bb.i28 ] ; [#uses=3]
+ %154 = phi float [ %85, %bb23 ], [ %.pre, %bb.i28 ] ; [#uses=3]
+ %155 = fsub float -0.000000e+00, %84 ; [#uses=3]
+ %156 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 4 ; [#uses=1]
+ %157 = load float* %156, align 4 ; [#uses=1]
+ %158 = fcmp une float %157, 0.000000e+00 ; [#uses=1]
+ br i1 %158, label %bb.i27, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit
+
+bb.i27: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit30
+ %159 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %160 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %163 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %166 = load float* %159, align 4 ; [#uses=1]
+ %167 = load float* %160, align 4 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %169 = load float* %161, align 4 ; [#uses=1]
+ %170 = load float* %162, align 4 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %172 = load float* %163, align 4 ; [#uses=1]
+ %173 = load float* %164, align 4 ; [#uses=1]
+ %174 = load float* %165, align 4 ; [#uses=1]
+ %175 = fmul float %166, %153 ; [#uses=1]
+ %176 = fmul float %167, %154 ; [#uses=1]
+ %177 = load float* %168, align 4 ; [#uses=1]
+ %178 = fmul float %169, %153 ; [#uses=1]
+ %179 = fmul float %170, %154 ; [#uses=1]
+ %180 = load float* %171, align 4 ; [#uses=1]
+ %181 = fmul float %172, %153 ; [#uses=1]
+ %182 = fmul float %173, %154 ; [#uses=1]
+ %183 = fmul float %174, %152 ; [#uses=1]
+ %184 = fadd float %176, %175 ; [#uses=1]
+ %185 = fmul float %177, %152 ; [#uses=1]
+ %186 = fadd float %179, %178 ; [#uses=1]
+ %187 = fmul float %180, %152 ; [#uses=1]
+ %188 = fadd float %182, %181 ; [#uses=1]
+ %189 = fadd float %184, %183 ; [#uses=1]
+ %190 = fadd float %186, %185 ; [#uses=1]
+ %191 = fadd float %188, %187 ; [#uses=1]
+ %192 = fmul float %84, -0.000000e+00 ; [#uses=3]
+ %193 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %194 = load float* %193, align 4 ; [#uses=1]
+ %195 = fadd float %194, %192 ; [#uses=1]
+ store float %195, float* %193, align 4
+ %196 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %197 = load float* %196, align 4 ; [#uses=1]
+ %198 = fadd float %197, %192 ; [#uses=1]
+ store float %198, float* %196, align 4
+ %199 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %200 = load float* %199, align 4 ; [#uses=1]
+ %201 = fadd float %200, %192 ; [#uses=1]
+ store float %201, float* %199, align 4
+ %202 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %203 = load float* %202, align 4 ; [#uses=1]
+ %204 = fmul float %203, %155 ; [#uses=1]
+ %205 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %206 = load float* %205, align 4 ; [#uses=1]
+ %207 = fmul float %206, %155 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %209 = load float* %208, align 4 ; [#uses=1]
+ %210 = fmul float %209, %155 ; [#uses=1]
+ %211 = fmul float %191, %204 ; [#uses=1]
+ %212 = fmul float %190, %207 ; [#uses=1]
+ %213 = fmul float %189, %210 ; [#uses=1]
+ %214 = load float* %44, align 4 ; [#uses=1]
+ %215 = fadd float %214, %213 ; [#uses=1]
+ store float %215, float* %44, align 4
+ %216 = load float* %39, align 4 ; [#uses=1]
+ %217 = fadd float %216, %212 ; [#uses=1]
+ store float %217, float* %39, align 4
+ %218 = load float* %34, align 4 ; [#uses=1]
+ %219 = fadd float %218, %211 ; [#uses=1]
+ store float %219, float* %34, align 4
+ ret float %84
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit30
+ ret float %84
+
+bb24: ; preds = %bb5, %_ZN22btRotationalLimitMotor16needApplyTorquesEv.exit
+ ret float 0.000000e+00
+}
+
+; [#uses=0]
+define i32 @_ZN25btTranslationalLimitMotor14testLimitValueEif(%struct.btTranslationalLimitMotor* nocapture %this, i32 %limitIndex, float %test_value) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 0, i32 0, i32 %limitIndex ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 1, i32 0, i32 %limitIndex ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fcmp ogt float %1, %3 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 14, i32 %limitIndex ; [#uses=1]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 12, i32 0, i32 %limitIndex ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ ret i32 0
+
+bb1: ; preds = %entry
+ %7 = fcmp ogt float %1, %test_value ; [#uses=1]
+ br i1 %7, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ %8 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 14, i32 %limitIndex ; [#uses=1]
+ store i32 2, i32* %8, align 4
+ %9 = fsub float %test_value, %1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 12, i32 0, i32 %limitIndex ; [#uses=1]
+ store float %9, float* %10, align 4
+ ret i32 2
+
+bb3: ; preds = %bb1
+ %11 = fcmp olt float %3, %test_value ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 14, i32 %limitIndex ; [#uses=2]
+ br i1 %11, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ store i32 1, i32* %12, align 4
+ %13 = fsub float %test_value, %3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 12, i32 0, i32 %limitIndex ; [#uses=1]
+ store float %13, float* %14, align 4
+ ret i32 1
+
+bb5: ; preds = %bb3
+ store i32 0, i32* %12, align 4
+ %15 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 12, i32 0, i32 %limitIndex ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 4
+ ret i32 0
+}
+
+; [#uses=0]
+define float @_ZN25btTranslationalLimitMotor15solveLinearAxisEffR11btRigidBodyRK9btVector3S1_S4_iS4_S4_(%struct.btTranslationalLimitMotor* nocapture %this, float %timeStep, float %jacDiagABInv, %struct.btRigidBody* %body1, %struct.btQuadWord* nocapture %pointInA, %struct.btRigidBody* %body2, %struct.btQuadWord* nocapture %pointInB, i32 %limit_index, %struct.btQuadWord* %axis_normal_on_a, %struct.btQuadWord* nocapture %anchorPos) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %anchorPos, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fsub float %1, %3 ; [#uses=4]
+ %5 = getelementptr inbounds %struct.btQuadWord* %anchorPos, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fsub float %6, %8 ; [#uses=4]
+ %10 = getelementptr inbounds %struct.btQuadWord* %anchorPos, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fsub float %11, %13 ; [#uses=4]
+ %15 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fsub float %1, %16 ; [#uses=4]
+ %18 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fsub float %6, %19 ; [#uses=4]
+ %21 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fsub float %11, %22 ; [#uses=4]
+ %24 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 25, i32 0, i32 2 ; [#uses=3]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fadd float %25, %27 ; [#uses=2]
+ %29 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 25, i32 0, i32 1 ; [#uses=3]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fadd float %30, %32 ; [#uses=2]
+ %34 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 25, i32 0, i32 0 ; [#uses=3]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fadd float %35, %37 ; [#uses=2]
+ %39 = fmul float %38, %9 ; [#uses=1]
+ %40 = fmul float %33, %14 ; [#uses=1]
+ %41 = fsub float %39, %40 ; [#uses=1]
+ %42 = fmul float %28, %14 ; [#uses=1]
+ %43 = fmul float %38, %4 ; [#uses=1]
+ %44 = fsub float %42, %43 ; [#uses=1]
+ %45 = fmul float %33, %4 ; [#uses=1]
+ %46 = fmul float %28, %9 ; [#uses=1]
+ %47 = fsub float %45, %46 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 24, i32 0, i32 2 ; [#uses=3]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fadd float %49, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 24, i32 0, i32 1 ; [#uses=3]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = fadd float %54, %56 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 24, i32 0, i32 0 ; [#uses=3]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fadd float %59, %61 ; [#uses=1]
+ %63 = fadd float %52, %41 ; [#uses=1]
+ %64 = fadd float %57, %44 ; [#uses=1]
+ %65 = fadd float %62, %47 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 25, i32 0, i32 2 ; [#uses=3]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = fadd float %67, %69 ; [#uses=2]
+ %71 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 25, i32 0, i32 1 ; [#uses=3]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = fadd float %72, %74 ; [#uses=2]
+ %76 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 25, i32 0, i32 0 ; [#uses=3]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = fadd float %77, %79 ; [#uses=2]
+ %81 = fmul float %80, %20 ; [#uses=1]
+ %82 = fmul float %75, %23 ; [#uses=1]
+ %83 = fsub float %81, %82 ; [#uses=1]
+ %84 = fmul float %70, %23 ; [#uses=1]
+ %85 = fmul float %80, %17 ; [#uses=1]
+ %86 = fsub float %84, %85 ; [#uses=1]
+ %87 = fmul float %75, %17 ; [#uses=1]
+ %88 = fmul float %70, %20 ; [#uses=1]
+ %89 = fsub float %87, %88 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 24, i32 0, i32 2 ; [#uses=3]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ %94 = fadd float %91, %93 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 24, i32 0, i32 1 ; [#uses=3]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ %99 = fadd float %96, %98 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 24, i32 0, i32 0 ; [#uses=3]
+ %103 = load float* %102, align 4 ; [#uses=1]
+ %104 = fadd float %101, %103 ; [#uses=1]
+ %105 = fadd float %94, %83 ; [#uses=1]
+ %106 = fadd float %99, %86 ; [#uses=1]
+ %107 = fadd float %104, %89 ; [#uses=1]
+ %108 = fsub float %63, %105 ; [#uses=1]
+ %109 = fsub float %64, %106 ; [#uses=1]
+ %110 = fsub float %65, %107 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btQuadWord* %axis_normal_on_a, i32 0, i32 0, i32 0 ; [#uses=3]
+ %112 = load float* %111, align 4 ; [#uses=2]
+ %113 = fmul float %112, %110 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btQuadWord* %axis_normal_on_a, i32 0, i32 0, i32 1 ; [#uses=3]
+ %115 = load float* %114, align 4 ; [#uses=2]
+ %116 = fmul float %115, %109 ; [#uses=1]
+ %117 = fadd float %113, %116 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btQuadWord* %axis_normal_on_a, i32 0, i32 0, i32 2 ; [#uses=3]
+ %119 = load float* %118, align 4 ; [#uses=2]
+ %120 = fmul float %119, %108 ; [#uses=1]
+ %121 = fadd float %117, %120 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btQuadWord* %pointInA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=1]
+ %124 = getelementptr inbounds %struct.btQuadWord* %pointInB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %125 = load float* %124, align 4 ; [#uses=1]
+ %126 = fsub float %123, %125 ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btQuadWord* %pointInA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %128 = load float* %127, align 4 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btQuadWord* %pointInB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=1]
+ %131 = fsub float %128, %130 ; [#uses=1]
+ %132 = getelementptr inbounds %struct.btQuadWord* %pointInA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %133 = load float* %132, align 4 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btQuadWord* %pointInB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ %136 = fsub float %133, %135 ; [#uses=1]
+ %137 = fmul float %136, %112 ; [#uses=1]
+ %138 = fmul float %131, %115 ; [#uses=1]
+ %139 = fadd float %137, %138 ; [#uses=1]
+ %140 = fmul float %126, %119 ; [#uses=1]
+ %141 = fadd float %139, %140 ; [#uses=1]
+ %142 = fsub float -0.000000e+00, %141 ; [#uses=5]
+ %143 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 0, i32 0, i32 %limit_index ; [#uses=1]
+ %144 = load float* %143, align 4 ; [#uses=3]
+ %145 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 1, i32 0, i32 %limit_index ; [#uses=1]
+ %146 = load float* %145, align 4 ; [#uses=3]
+ %147 = fcmp olt float %144, %146 ; [#uses=1]
+ br i1 %147, label %bb, label %bb5
+
+bb: ; preds = %entry
+ %148 = fcmp olt float %146, %142 ; [#uses=1]
+ br i1 %148, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %149 = fsub float %142, %146 ; [#uses=1]
+ br label %bb5
+
+bb2: ; preds = %bb
+ %150 = fcmp ogt float %144, %142 ; [#uses=1]
+ br i1 %150, label %bb3, label %bb12
+
+bb3: ; preds = %bb2
+ %151 = fsub float %142, %144 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb3, %bb1, %entry
+ %depth.0 = phi float [ %149, %bb1 ], [ %151, %bb3 ], [ %142, %entry ] ; [#uses=1]
+ %lo.0 = phi float [ 0.000000e+00, %bb1 ], [ 0xC3ABC16D60000000, %bb3 ], [ 0xC3ABC16D60000000, %entry ] ; [#uses=1]
+ %hi.0 = phi float [ 0x43ABC16D60000000, %bb1 ], [ 0.000000e+00, %bb3 ], [ 0x43ABC16D60000000, %entry ] ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 3 ; [#uses=1]
+ %153 = load float* %152, align 4 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 5 ; [#uses=1]
+ %155 = load float* %154, align 4 ; [#uses=1]
+ %156 = fmul float %155, %depth.0 ; [#uses=1]
+ %157 = fdiv float %156, %timeStep ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 4 ; [#uses=1]
+ %159 = load float* %158, align 4 ; [#uses=1]
+ %160 = fmul float %159, %121 ; [#uses=1]
+ %161 = fsub float %157, %160 ; [#uses=1]
+ %162 = fmul float %153, %161 ; [#uses=1]
+ %163 = fmul float %162, %jacDiagABInv ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btTranslationalLimitMotor* %this, i32 0, i32 2, i32 0, i32 %limit_index ; [#uses=2]
+ %165 = load float* %164, align 4 ; [#uses=2]
+ %166 = fadd float %165, %163 ; [#uses=3]
+ %167 = fcmp ule float %166, %hi.0 ; [#uses=1]
+ br i1 %167, label %bb6, label %bb11
+
+bb6: ; preds = %bb5
+ %168 = fcmp uge float %166, %lo.0 ; [#uses=1]
+ %iftmp.212.0 = select i1 %168, float %166, float 0.000000e+00 ; [#uses=1]
+ br label %bb11
+
+bb11: ; preds = %bb6, %bb5
+ %iftmp.211.0 = phi float [ %iftmp.212.0, %bb6 ], [ 0.000000e+00, %bb5 ] ; [#uses=2]
+ store float %iftmp.211.0, float* %164, align 4
+ %169 = fsub float %iftmp.211.0, %165 ; [#uses=9]
+ %170 = load float* %114, align 4 ; [#uses=5]
+ %171 = fmul float %14, %170 ; [#uses=1]
+ %172 = load float* %111, align 4 ; [#uses=5]
+ %173 = fmul float %9, %172 ; [#uses=1]
+ %174 = fsub float %171, %173 ; [#uses=3]
+ %175 = fmul float %4, %172 ; [#uses=1]
+ %176 = load float* %118, align 4 ; [#uses=5]
+ %177 = fmul float %14, %176 ; [#uses=1]
+ %178 = fsub float %175, %177 ; [#uses=3]
+ %179 = fmul float %9, %176 ; [#uses=1]
+ %180 = fmul float %4, %170 ; [#uses=1]
+ %181 = fsub float %179, %180 ; [#uses=3]
+ %182 = fmul float %23, %170 ; [#uses=1]
+ %183 = fmul float %20, %172 ; [#uses=1]
+ %184 = fsub float %182, %183 ; [#uses=3]
+ %185 = fmul float %17, %172 ; [#uses=1]
+ %186 = fmul float %23, %176 ; [#uses=1]
+ %187 = fsub float %185, %186 ; [#uses=3]
+ %188 = fmul float %20, %176 ; [#uses=1]
+ %189 = fmul float %17, %170 ; [#uses=1]
+ %190 = fsub float %188, %189 ; [#uses=3]
+ %191 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 4 ; [#uses=1]
+ %192 = load float* %191, align 4 ; [#uses=4]
+ %193 = fcmp une float %192, 0.000000e+00 ; [#uses=1]
+ br i1 %193, label %bb.i14, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit16
+
+bb.i14: ; preds = %bb11
+ %194 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %195 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %196 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %197 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %198 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %199 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %200 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %201 = load float* %194, align 4 ; [#uses=1]
+ %202 = load float* %195, align 4 ; [#uses=1]
+ %203 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %204 = load float* %196, align 4 ; [#uses=1]
+ %205 = load float* %197, align 4 ; [#uses=1]
+ %206 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %207 = load float* %198, align 4 ; [#uses=1]
+ %208 = load float* %199, align 4 ; [#uses=1]
+ %209 = load float* %200, align 4 ; [#uses=1]
+ %210 = fmul float %201, %178 ; [#uses=1]
+ %211 = fmul float %202, %181 ; [#uses=1]
+ %212 = load float* %203, align 4 ; [#uses=1]
+ %213 = fmul float %204, %178 ; [#uses=1]
+ %214 = fmul float %205, %181 ; [#uses=1]
+ %215 = load float* %206, align 4 ; [#uses=1]
+ %216 = fmul float %207, %178 ; [#uses=1]
+ %217 = fmul float %208, %181 ; [#uses=1]
+ %218 = fmul float %209, %174 ; [#uses=1]
+ %219 = fadd float %211, %210 ; [#uses=1]
+ %220 = fmul float %212, %174 ; [#uses=1]
+ %221 = fadd float %214, %213 ; [#uses=1]
+ %222 = fmul float %215, %174 ; [#uses=1]
+ %223 = fadd float %217, %216 ; [#uses=1]
+ %224 = fmul float %172, %192 ; [#uses=1]
+ %225 = fmul float %170, %192 ; [#uses=1]
+ %226 = fmul float %176, %192 ; [#uses=1]
+ %227 = fadd float %219, %218 ; [#uses=1]
+ %228 = fadd float %221, %220 ; [#uses=1]
+ %229 = fadd float %223, %222 ; [#uses=1]
+ %230 = fmul float %226, %169 ; [#uses=1]
+ %231 = fmul float %225, %169 ; [#uses=1]
+ %232 = fmul float %224, %169 ; [#uses=1]
+ %233 = load float* %60, align 4 ; [#uses=1]
+ %234 = fadd float %233, %232 ; [#uses=1]
+ store float %234, float* %60, align 4
+ %235 = load float* %55, align 4 ; [#uses=1]
+ %236 = fadd float %235, %231 ; [#uses=1]
+ store float %236, float* %55, align 4
+ %237 = load float* %50, align 4 ; [#uses=1]
+ %238 = fadd float %237, %230 ; [#uses=1]
+ store float %238, float* %50, align 4
+ %239 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %240 = load float* %239, align 4 ; [#uses=1]
+ %241 = fmul float %240, %169 ; [#uses=1]
+ %242 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %243 = load float* %242, align 4 ; [#uses=1]
+ %244 = fmul float %243, %169 ; [#uses=1]
+ %245 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %246 = load float* %245, align 4 ; [#uses=1]
+ %247 = fmul float %246, %169 ; [#uses=1]
+ %248 = fmul float %229, %241 ; [#uses=1]
+ %249 = fmul float %228, %244 ; [#uses=1]
+ %250 = fmul float %227, %247 ; [#uses=1]
+ %251 = load float* %36, align 4 ; [#uses=1]
+ %252 = fadd float %251, %250 ; [#uses=1]
+ store float %252, float* %36, align 4
+ %253 = load float* %31, align 4 ; [#uses=1]
+ %254 = fadd float %253, %249 ; [#uses=1]
+ store float %254, float* %31, align 4
+ %255 = load float* %26, align 4 ; [#uses=1]
+ %256 = fadd float %255, %248 ; [#uses=1]
+ store float %256, float* %26, align 4
+ br label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit16
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit16: ; preds = %bb.i14, %bb11
+ %257 = fsub float -0.000000e+00, %169 ; [#uses=6]
+ %258 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 4 ; [#uses=1]
+ %259 = load float* %258, align 4 ; [#uses=4]
+ %260 = fcmp une float %259, 0.000000e+00 ; [#uses=1]
+ br i1 %260, label %bb.i, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit
+
+bb.i: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit16
+ %261 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %262 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %263 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %264 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %265 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %266 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %267 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %268 = load float* %261, align 4 ; [#uses=1]
+ %269 = load float* %262, align 4 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %271 = load float* %263, align 4 ; [#uses=1]
+ %272 = load float* %264, align 4 ; [#uses=1]
+ %273 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %274 = load float* %265, align 4 ; [#uses=1]
+ %275 = load float* %266, align 4 ; [#uses=1]
+ %276 = load float* %267, align 4 ; [#uses=1]
+ %277 = fmul float %268, %187 ; [#uses=1]
+ %278 = fmul float %269, %190 ; [#uses=1]
+ %279 = load float* %270, align 4 ; [#uses=1]
+ %280 = fmul float %271, %187 ; [#uses=1]
+ %281 = fmul float %272, %190 ; [#uses=1]
+ %282 = load float* %273, align 4 ; [#uses=1]
+ %283 = fmul float %274, %187 ; [#uses=1]
+ %284 = fmul float %275, %190 ; [#uses=1]
+ %285 = load float* %111, align 4 ; [#uses=1]
+ %286 = load float* %114, align 4 ; [#uses=1]
+ %287 = load float* %118, align 4 ; [#uses=1]
+ %288 = fmul float %276, %184 ; [#uses=1]
+ %289 = fadd float %278, %277 ; [#uses=1]
+ %290 = fmul float %279, %184 ; [#uses=1]
+ %291 = fadd float %281, %280 ; [#uses=1]
+ %292 = fmul float %282, %184 ; [#uses=1]
+ %293 = fadd float %284, %283 ; [#uses=1]
+ %294 = fmul float %285, %259 ; [#uses=1]
+ %295 = fmul float %286, %259 ; [#uses=1]
+ %296 = fmul float %287, %259 ; [#uses=1]
+ %297 = fadd float %289, %288 ; [#uses=1]
+ %298 = fadd float %291, %290 ; [#uses=1]
+ %299 = fadd float %293, %292 ; [#uses=1]
+ %300 = fmul float %296, %257 ; [#uses=1]
+ %301 = fmul float %295, %257 ; [#uses=1]
+ %302 = fmul float %294, %257 ; [#uses=1]
+ %303 = load float* %102, align 4 ; [#uses=1]
+ %304 = fadd float %303, %302 ; [#uses=1]
+ store float %304, float* %102, align 4
+ %305 = load float* %97, align 4 ; [#uses=1]
+ %306 = fadd float %305, %301 ; [#uses=1]
+ store float %306, float* %97, align 4
+ %307 = load float* %92, align 4 ; [#uses=1]
+ %308 = fadd float %307, %300 ; [#uses=1]
+ store float %308, float* %92, align 4
+ %309 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %310 = load float* %309, align 4 ; [#uses=1]
+ %311 = fmul float %310, %257 ; [#uses=1]
+ %312 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %313 = load float* %312, align 4 ; [#uses=1]
+ %314 = fmul float %313, %257 ; [#uses=1]
+ %315 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %316 = load float* %315, align 4 ; [#uses=1]
+ %317 = fmul float %316, %257 ; [#uses=1]
+ %318 = fmul float %299, %311 ; [#uses=1]
+ %319 = fmul float %298, %314 ; [#uses=1]
+ %320 = fmul float %297, %317 ; [#uses=1]
+ %321 = load float* %78, align 4 ; [#uses=1]
+ %322 = fadd float %321, %320 ; [#uses=1]
+ store float %322, float* %78, align 4
+ %323 = load float* %73, align 4 ; [#uses=1]
+ %324 = fadd float %323, %319 ; [#uses=1]
+ store float %324, float* %73, align 4
+ %325 = load float* %68, align 4 ; [#uses=1]
+ %326 = fadd float %325, %318 ; [#uses=1]
+ store float %326, float* %68, align 4
+ ret float %169
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit16
+ ret float %169
+
+bb12: ; preds = %bb2
+ ret float 0.000000e+00
+}
+
+; [#uses=1]
+define void @_ZN23btGeneric6DofConstraint19buildLinearJacobianER15btJacobianEntryRK9btVector3S4_S4_(%struct.btGeneric6DofConstraint* nocapture %this, %struct.btJacobianEntry* %jacLinear, %struct.btQuadWord* nocapture %normalWorld, %struct.btQuadWord* nocapture %pivotAInW, %struct.btQuadWord* nocapture %pivotBInW) nounwind align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca %struct.btMatrix3x3, align 8 ; [#uses=13]
+ %3 = alloca %struct.btMatrix3x3, align 8 ; [#uses=13]
+ %4 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %5 = load %struct.btRigidBody** %4, align 4 ; [#uses=14]
+ %6 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %15, float* %16, align 8
+ %17 = load float* %13, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %17, float* %18, align 4
+ %19 = load float* %12, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %19, float* %20, align 8
+ %21 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = load float* %11, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %22, float* %23, align 8
+ %24 = load float* %10, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %24, float* %25, align 4
+ %26 = load float* %9, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %26, float* %27, align 8
+ %28 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ %29 = load float* %8, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %29, float* %30, align 8
+ %31 = load float* %7, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %31, float* %32, align 4
+ %33 = load float* %6, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %33, float* %34, align 8
+ %35 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %37 = load %struct.btRigidBody** %36, align 4 ; [#uses=14]
+ %38 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %47, float* %48, align 8
+ %49 = load float* %45, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %49, float* %50, align 4
+ %51 = load float* %44, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %51, float* %52, align 8
+ %53 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %53, align 4
+ %54 = load float* %43, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %54, float* %55, align 8
+ %56 = load float* %42, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %56, float* %57, align 4
+ %58 = load float* %41, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %58, float* %59, align 8
+ %60 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 4
+ %61 = load float* %40, align 4 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %61, float* %62, align 8
+ %63 = load float* %39, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %63, float* %64, align 4
+ %65 = load float* %38, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %65, float* %66, align 8
+ %67 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %67, align 4
+ %68 = getelementptr inbounds %struct.btQuadWord* %pivotAInW, i32 0, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ %72 = fsub float %69, %71 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btQuadWord* %pivotAInW, i32 0, i32 0, i32 1 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ %77 = fsub float %74, %76 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btQuadWord* %pivotAInW, i32 0, i32 0, i32 0 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ %82 = fsub float %79, %81 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %82, float* %83, align 8
+ %84 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %77, float* %84, align 4
+ %85 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %72, float* %85, align 8
+ %86 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %86, align 4
+ %87 = getelementptr inbounds %struct.btQuadWord* %pivotBInW, i32 0, i32 0, i32 2 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ %91 = fsub float %88, %90 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btQuadWord* %pivotBInW, i32 0, i32 0, i32 1 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ %96 = fsub float %93, %95 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btQuadWord* %pivotBInW, i32 0, i32 0, i32 0 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %100 = load float* %99, align 4 ; [#uses=1]
+ %101 = fsub float %98, %100 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %101, float* %102, align 8
+ %103 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %96, float* %103, align 4
+ %104 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %91, float* %104, align 8
+ %105 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %105, align 4
+ %106 = icmp eq %struct.btJacobianEntry* %jacLinear, null ; [#uses=1]
+ br i1 %106, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %107 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 4 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 4 ; [#uses=1]
+ %109 = load float* %107, align 4 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 8 ; [#uses=1]
+ %111 = load float* %108, align 4 ; [#uses=1]
+ %112 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 8 ; [#uses=1]
+ call void @_ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(%struct.btJacobianEntry* %jacLinear, %struct.btMatrix3x3* %3, %struct.btMatrix3x3* %2, %struct.btQuadWord* %1, %struct.btQuadWord* %0, %struct.btQuadWord* %normalWorld, %struct.btQuadWord* %112, float %111, %struct.btQuadWord* %110, float %109) nounwind
+ ret void
+
+bb1: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btGeneric6DofConstraint20buildAngularJacobianER15btJacobianEntryRK9btVector3(%struct.btGeneric6DofConstraint* nocapture %this, %struct.btJacobianEntry* %jacAngular, %struct.btQuadWord* nocapture %jointAxisW) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %1 = load %struct.btRigidBody** %0, align 4 ; [#uses=12]
+ %2 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %3 = load %struct.btRigidBody** %2, align 4 ; [#uses=12]
+ %4 = icmp eq %struct.btJacobianEntry* %jacAngular, null ; [#uses=1]
+ br i1 %4, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %13, align 4 ; [#uses=1]
+ %24 = load float* %12, align 4 ; [#uses=1]
+ %25 = load float* %11, align 4 ; [#uses=1]
+ %26 = load float* %10, align 4 ; [#uses=1]
+ %27 = load float* %9, align 4 ; [#uses=1]
+ %28 = load float* %8, align 4 ; [#uses=1]
+ %29 = load float* %7, align 4 ; [#uses=1]
+ %30 = load float* %6, align 4 ; [#uses=1]
+ %31 = load float* %5, align 4 ; [#uses=1]
+ %32 = load float* %22, align 4 ; [#uses=1]
+ %33 = load float* %21, align 4 ; [#uses=1]
+ %34 = load float* %20, align 4 ; [#uses=1]
+ %35 = load float* %19, align 4 ; [#uses=1]
+ %36 = load float* %18, align 4 ; [#uses=1]
+ %37 = load float* %17, align 4 ; [#uses=1]
+ %38 = load float* %16, align 4 ; [#uses=1]
+ %39 = load float* %15, align 4 ; [#uses=1]
+ %40 = load float* %14, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %42, align 4
+ %43 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %43, align 4
+ %44 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %44, align 4
+ %45 = getelementptr inbounds %struct.btQuadWord* %jointAxisW, i32 0, i32 0, i32 0 ; [#uses=2]
+ %46 = load float* %45, align 4 ; [#uses=3]
+ %47 = fmul float %34, %46 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btQuadWord* %jointAxisW, i32 0, i32 0, i32 1 ; [#uses=2]
+ %49 = load float* %48, align 4 ; [#uses=3]
+ %50 = fmul float %33, %49 ; [#uses=1]
+ %51 = fadd float %47, %50 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btQuadWord* %jointAxisW, i32 0, i32 0, i32 2 ; [#uses=2]
+ %53 = load float* %52, align 4 ; [#uses=3]
+ %54 = fmul float %32, %53 ; [#uses=1]
+ %55 = fadd float %51, %54 ; [#uses=3]
+ %56 = fmul float %37, %46 ; [#uses=1]
+ %57 = fmul float %36, %49 ; [#uses=1]
+ %58 = fadd float %56, %57 ; [#uses=1]
+ %59 = fmul float %35, %53 ; [#uses=1]
+ %60 = fadd float %58, %59 ; [#uses=3]
+ %61 = fmul float %40, %46 ; [#uses=1]
+ %62 = fmul float %39, %49 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=1]
+ %64 = fmul float %38, %53 ; [#uses=1]
+ %65 = fadd float %63, %64 ; [#uses=3]
+ %66 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %65, float* %66, align 4
+ %67 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %60, float* %67, align 4
+ %68 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %55, float* %68, align 4
+ %69 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %69, align 4
+ %70 = load float* %52, align 4 ; [#uses=1]
+ %71 = fsub float -0.000000e+00, %70 ; [#uses=3]
+ %72 = load float* %48, align 4 ; [#uses=1]
+ %73 = fsub float -0.000000e+00, %72 ; [#uses=3]
+ %74 = load float* %45, align 4 ; [#uses=1]
+ %75 = fsub float -0.000000e+00, %74 ; [#uses=3]
+ %76 = fmul float %25, %75 ; [#uses=1]
+ %77 = fmul float %24, %73 ; [#uses=1]
+ %78 = fadd float %76, %77 ; [#uses=1]
+ %79 = fmul float %23, %71 ; [#uses=1]
+ %80 = fadd float %78, %79 ; [#uses=3]
+ %81 = fmul float %28, %75 ; [#uses=1]
+ %82 = fmul float %27, %73 ; [#uses=1]
+ %83 = fadd float %81, %82 ; [#uses=1]
+ %84 = fmul float %26, %71 ; [#uses=1]
+ %85 = fadd float %83, %84 ; [#uses=3]
+ %86 = fmul float %31, %75 ; [#uses=1]
+ %87 = fmul float %30, %73 ; [#uses=1]
+ %88 = fadd float %86, %87 ; [#uses=1]
+ %89 = fmul float %29, %71 ; [#uses=1]
+ %90 = fadd float %88, %89 ; [#uses=3]
+ %91 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %90, float* %91, align 4
+ %92 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %85, float* %92, align 4
+ %93 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %80, float* %93, align 4
+ %94 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %94, align 4
+ %95 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ %97 = fmul float %96, %55 ; [#uses=2]
+ %98 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ %100 = fmul float %99, %60 ; [#uses=2]
+ %101 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fmul float %102, %65 ; [#uses=2]
+ %104 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %103, float* %104, align 4
+ %105 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %100, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %97, float* %106, align 4
+ %107 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %107, align 4
+ %108 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ %110 = fmul float %109, %80 ; [#uses=2]
+ %111 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ %113 = fmul float %112, %85 ; [#uses=2]
+ %114 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=1]
+ %116 = fmul float %115, %90 ; [#uses=2]
+ %117 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %116, float* %117, align 4
+ %118 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %113, float* %118, align 4
+ %119 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %110, float* %119, align 4
+ %120 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %120, align 4
+ %121 = fmul float %103, %65 ; [#uses=1]
+ %122 = fmul float %100, %60 ; [#uses=1]
+ %123 = fadd float %121, %122 ; [#uses=1]
+ %124 = fmul float %97, %55 ; [#uses=1]
+ %125 = fadd float %123, %124 ; [#uses=1]
+ %126 = fmul float %116, %90 ; [#uses=1]
+ %127 = fmul float %113, %85 ; [#uses=1]
+ %128 = fadd float %126, %127 ; [#uses=1]
+ %129 = fmul float %110, %80 ; [#uses=1]
+ %130 = fadd float %128, %129 ; [#uses=1]
+ %131 = fadd float %125, %130 ; [#uses=1]
+ %132 = getelementptr inbounds %struct.btJacobianEntry* %jacAngular, i32 0, i32 5 ; [#uses=1]
+ store float %131, float* %132, align 4
+ ret void
+
+bb1: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btGeneric6DofConstraint18getInfo1NonVirtualEPN17btTypedConstraint17btConstraintInfo1E(%struct.btGeneric6DofConstraint* nocapture %this, %struct.CONTACT_KEY_TOKEN* nocapture %info) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 0 ; [#uses=2]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ ret void
+
+bb1: ; preds = %entry
+ store i32 6, i32* %2, align 4
+ %4 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btGeneric6DofConstraint9updateRHSEf(%struct.btGeneric6DofConstraint* nocapture %this, float %timeStep) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=0]
+define void @_ZNK23btGeneric6DofConstraint7getAxisEi(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btGeneric6DofConstraint* nocapture %this, i32 %axis_index) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 %axis_index, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 %axis_index, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 %axis_index, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 %axis_index, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ ret void
+}
+
+; [#uses=0]
+define float @_ZNK23btGeneric6DofConstraint24getRelativePivotPositionEi(%struct.btGeneric6DofConstraint* nocapture %this, i32 %axisIndex) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 12, i32 0, i32 %axisIndex ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ ret float %1
+}
+
+; [#uses=2]
+define float @_ZNK23btGeneric6DofConstraint8getAngleEi(%struct.btGeneric6DofConstraint* nocapture %this, i32 %axisIndex) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 10, i32 0, i32 %axisIndex ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ ret float %1
+}
+
+; [#uses=1]
+define void @_ZN23btGeneric6DofConstraint13calcAnchorPosEv(%struct.btGeneric6DofConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %1 = load %struct.btRigidBody** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 4 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %5 = load %struct.btRigidBody** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 4 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = fcmp oeq float %7, 0.000000e+00 ; [#uses=1]
+ br i1 %8, label %bb2, label %bb1
+
+bb1: ; preds = %entry
+ %9 = fadd float %3, %7 ; [#uses=1]
+ %10 = fdiv float %3, %9 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb1, %entry
+ %storemerge = phi float [ %10, %bb1 ], [ 1.000000e+00, %entry ] ; [#uses=4]
+ %11 = fsub float 1.000000e+00, %storemerge ; [#uses=3]
+ %12 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 2 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fmul float %13, %11 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fmul float %16, %11 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fmul float %19, %11 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fmul float %22, %storemerge ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fmul float %25, %storemerge ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 1, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fmul float %28, %storemerge ; [#uses=1]
+ %30 = fadd float %23, %14 ; [#uses=1]
+ %31 = fadd float %26, %17 ; [#uses=1]
+ %32 = fadd float %29, %20 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 16, i32 0, i32 0 ; [#uses=1]
+ store float %32, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 16, i32 0, i32 1 ; [#uses=1]
+ store float %31, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 16, i32 0, i32 2 ; [#uses=1]
+ store float %30, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 16, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btGeneric6DofConstraint19calculateLinearInfoEv(%struct.btGeneric6DofConstraint* nocapture %this) nounwind align 2 {
+bb.nph:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 1, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fsub float %1, %3 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fsub float %6, %8 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 1, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fsub float %11, %13 ; [#uses=3]
+ %15 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 12, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 12, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 12, i32 0, i32 2 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 12, i32 0, i32 3 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=4]
+ %21 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=4]
+ %23 = fmul float %20, %22 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=4]
+ %26 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=4]
+ %28 = fmul float %25, %27 ; [#uses=1]
+ %29 = fsub float %23, %28 ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=4]
+ %32 = fmul float %31, %27 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=4]
+ %35 = fmul float %20, %34 ; [#uses=1]
+ %36 = fsub float %32, %35 ; [#uses=2]
+ %37 = fmul float %25, %34 ; [#uses=1]
+ %38 = fmul float %31, %22 ; [#uses=1]
+ %39 = fsub float %37, %38 ; [#uses=2]
+ %40 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=5]
+ %42 = fmul float %41, %39 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=5]
+ %45 = fmul float %44, %36 ; [#uses=1]
+ %46 = fadd float %42, %45 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=5]
+ %49 = fmul float %48, %29 ; [#uses=1]
+ %50 = fadd float %46, %49 ; [#uses=1]
+ %51 = fdiv float 1.000000e+00, %50 ; [#uses=9]
+ %52 = fmul float %41, %25 ; [#uses=1]
+ %53 = fmul float %44, %20 ; [#uses=1]
+ %54 = fsub float %52, %53 ; [#uses=1]
+ %55 = fmul float %54, %51 ; [#uses=1]
+ %56 = fmul float %44, %27 ; [#uses=1]
+ %57 = fmul float %41, %22 ; [#uses=1]
+ %58 = fsub float %56, %57 ; [#uses=1]
+ %59 = fmul float %58, %51 ; [#uses=1]
+ %60 = fmul float %29, %51 ; [#uses=1]
+ %61 = fmul float %48, %20 ; [#uses=1]
+ %62 = fmul float %41, %31 ; [#uses=1]
+ %63 = fsub float %61, %62 ; [#uses=1]
+ %64 = fmul float %63, %51 ; [#uses=1]
+ %65 = fmul float %41, %34 ; [#uses=1]
+ %66 = fmul float %48, %27 ; [#uses=1]
+ %67 = fsub float %65, %66 ; [#uses=1]
+ %68 = fmul float %67, %51 ; [#uses=1]
+ %69 = fmul float %36, %51 ; [#uses=1]
+ %70 = fmul float %44, %31 ; [#uses=1]
+ %71 = fmul float %48, %25 ; [#uses=1]
+ %72 = fsub float %70, %71 ; [#uses=1]
+ %73 = fmul float %72, %51 ; [#uses=1]
+ %74 = fmul float %48, %22 ; [#uses=1]
+ %75 = fmul float %44, %34 ; [#uses=1]
+ %76 = fsub float %74, %75 ; [#uses=1]
+ %77 = fmul float %76, %51 ; [#uses=1]
+ %78 = fmul float %39, %51 ; [#uses=1]
+ %79 = fmul float %60, %14 ; [#uses=1]
+ %80 = fmul float %59, %9 ; [#uses=1]
+ %81 = fadd float %79, %80 ; [#uses=1]
+ %82 = fmul float %55, %4 ; [#uses=1]
+ %83 = fadd float %81, %82 ; [#uses=6]
+ %84 = fmul float %69, %14 ; [#uses=1]
+ %85 = fmul float %68, %9 ; [#uses=1]
+ %86 = fadd float %84, %85 ; [#uses=1]
+ %87 = fmul float %64, %4 ; [#uses=1]
+ %88 = fadd float %86, %87 ; [#uses=6]
+ %89 = fmul float %78, %14 ; [#uses=1]
+ %90 = fmul float %77, %9 ; [#uses=1]
+ %91 = fadd float %89, %90 ; [#uses=1]
+ %92 = fmul float %73, %4 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=6]
+ store float %93, float* %15, align 4
+ store float %88, float* %16, align 4
+ store float %83, float* %17, align 4
+ store float 0.000000e+00, float* %18, align 4
+ %scevgep11 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 13, i32 0, i32 0 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep13 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep14 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 14, i32 0 ; [#uses=4]
+ %scevgep15 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 12, i32 0, i32 0 ; [#uses=4]
+ store float %93, float* %scevgep11, align 4
+ %94 = load float* %scevgep12, align 4 ; [#uses=3]
+ %95 = load float* %scevgep13, align 4 ; [#uses=3]
+ %96 = fcmp ogt float %94, %95 ; [#uses=1]
+ br i1 %96, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb.nph
+ store i32 0, i32* %scevgep14, align 4
+ store float 0.000000e+00, float* %scevgep15, align 4
+ br label %_ZN25btTranslationalLimitMotor14testLimitValueEif.exit
+
+bb1.i: ; preds = %bb.nph
+ %97 = fcmp ogt float %94, %93 ; [#uses=1]
+ br i1 %97, label %bb2.i, label %bb3.i
+
+bb2.i: ; preds = %bb1.i
+ store i32 2, i32* %scevgep14, align 4
+ %98 = fsub float %93, %94 ; [#uses=1]
+ store float %98, float* %scevgep15, align 4
+ br label %_ZN25btTranslationalLimitMotor14testLimitValueEif.exit
+
+bb3.i: ; preds = %bb1.i
+ %99 = fcmp olt float %95, %93 ; [#uses=1]
+ br i1 %99, label %bb4.i, label %bb5.i
+
+bb4.i: ; preds = %bb3.i
+ store i32 1, i32* %scevgep14, align 4
+ %100 = fsub float %93, %95 ; [#uses=1]
+ store float %100, float* %scevgep15, align 4
+ br label %_ZN25btTranslationalLimitMotor14testLimitValueEif.exit
+
+bb5.i: ; preds = %bb3.i
+ store i32 0, i32* %scevgep14, align 4
+ store float 0.000000e+00, float* %scevgep15, align 4
+ br label %_ZN25btTranslationalLimitMotor14testLimitValueEif.exit
+
+_ZN25btTranslationalLimitMotor14testLimitValueEif.exit: ; preds = %bb5.i, %bb4.i, %bb2.i, %bb.i
+ %scevgep11.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 13, i32 0, i32 1 ; [#uses=1]
+ %scevgep12.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep13.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep14.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 14, i32 1 ; [#uses=4]
+ %scevgep15.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 12, i32 0, i32 1 ; [#uses=4]
+ store float %88, float* %scevgep11.1, align 4
+ %101 = load float* %scevgep12.1, align 4 ; [#uses=3]
+ %102 = load float* %scevgep13.1, align 4 ; [#uses=3]
+ %103 = fcmp ogt float %101, %102 ; [#uses=1]
+ br i1 %103, label %bb.i.1, label %bb1.i.1
+
+_ZN25btTranslationalLimitMotor14testLimitValueEif.exit.1: ; preds = %bb.i.1, %bb2.i.1, %bb4.i.1, %bb5.i.1
+ %scevgep11.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 13, i32 0, i32 2 ; [#uses=1]
+ %scevgep12.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep13.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep14.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 14, i32 2 ; [#uses=4]
+ %scevgep15.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 12, i32 0, i32 2 ; [#uses=4]
+ store float %83, float* %scevgep11.2, align 4
+ %104 = load float* %scevgep12.2, align 4 ; [#uses=3]
+ %105 = load float* %scevgep13.2, align 4 ; [#uses=3]
+ %106 = fcmp ogt float %104, %105 ; [#uses=1]
+ br i1 %106, label %bb.i.2, label %bb1.i.2
+
+bb5.i.1: ; preds = %bb3.i.1
+ store i32 0, i32* %scevgep14.1, align 4
+ store float 0.000000e+00, float* %scevgep15.1, align 4
+ br label %_ZN25btTranslationalLimitMotor14testLimitValueEif.exit.1
+
+bb3.i.1: ; preds = %bb1.i.1
+ %107 = fcmp olt float %102, %88 ; [#uses=1]
+ br i1 %107, label %bb4.i.1, label %bb5.i.1
+
+bb1.i.1: ; preds = %_ZN25btTranslationalLimitMotor14testLimitValueEif.exit
+ %108 = fcmp ogt float %101, %88 ; [#uses=1]
+ br i1 %108, label %bb2.i.1, label %bb3.i.1
+
+bb4.i.1: ; preds = %bb3.i.1
+ store i32 1, i32* %scevgep14.1, align 4
+ %109 = fsub float %88, %102 ; [#uses=1]
+ store float %109, float* %scevgep15.1, align 4
+ br label %_ZN25btTranslationalLimitMotor14testLimitValueEif.exit.1
+
+bb2.i.1: ; preds = %bb1.i.1
+ store i32 2, i32* %scevgep14.1, align 4
+ %110 = fsub float %88, %101 ; [#uses=1]
+ store float %110, float* %scevgep15.1, align 4
+ br label %_ZN25btTranslationalLimitMotor14testLimitValueEif.exit.1
+
+bb.i.1: ; preds = %_ZN25btTranslationalLimitMotor14testLimitValueEif.exit
+ store i32 0, i32* %scevgep14.1, align 4
+ store float 0.000000e+00, float* %scevgep15.1, align 4
+ br label %_ZN25btTranslationalLimitMotor14testLimitValueEif.exit.1
+
+bb5.i.2: ; preds = %bb3.i.2
+ store i32 0, i32* %scevgep14.2, align 4
+ store float 0.000000e+00, float* %scevgep15.2, align 4
+ ret void
+
+bb3.i.2: ; preds = %bb1.i.2
+ %111 = fcmp olt float %105, %83 ; [#uses=1]
+ br i1 %111, label %bb4.i.2, label %bb5.i.2
+
+bb1.i.2: ; preds = %_ZN25btTranslationalLimitMotor14testLimitValueEif.exit.1
+ %112 = fcmp ogt float %104, %83 ; [#uses=1]
+ br i1 %112, label %bb2.i.2, label %bb3.i.2
+
+bb4.i.2: ; preds = %bb3.i.2
+ store i32 1, i32* %scevgep14.2, align 4
+ %113 = fsub float %83, %105 ; [#uses=1]
+ store float %113, float* %scevgep15.2, align 4
+ ret void
+
+bb2.i.2: ; preds = %bb1.i.2
+ store i32 2, i32* %scevgep14.2, align 4
+ %114 = fsub float %83, %104 ; [#uses=1]
+ store float %114, float* %scevgep15.2, align 4
+ ret void
+
+bb.i.2: ; preds = %_ZN25btTranslationalLimitMotor14testLimitValueEif.exit.1
+ store i32 0, i32* %scevgep14.2, align 4
+ store float 0.000000e+00, float* %scevgep15.2, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btGeneric6DofConstraint8setParamEifi(%struct.btGeneric6DofConstraint* nocapture %this, i32 %num, float %value, i32 %axis) nounwind align 2 {
+entry:
+ %0 = icmp ult i32 %axis, 3 ; [#uses=1]
+ br i1 %0, label %bb, label %bb4
+
+bb: ; preds = %entry
+ switch i32 %num, label %return [
+ i32 2, label %bb1
+ i32 3, label %bb3
+ i32 4, label %bb2
+ ]
+
+bb1: ; preds = %bb
+ %1 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 7, i32 0, i32 %axis ; [#uses=1]
+ store float %value, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 19 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = mul nsw i32 %axis, 3 ; [#uses=1]
+ %5 = shl i32 4, %4 ; [#uses=1]
+ %6 = or i32 %3, %5 ; [#uses=1]
+ store i32 %6, i32* %2, align 4
+ ret void
+
+bb2: ; preds = %bb
+ %7 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 8, i32 0, i32 %axis ; [#uses=1]
+ store float %value, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 19 ; [#uses=2]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %10 = mul nsw i32 %axis, 3 ; [#uses=1]
+ %11 = shl i32 2, %10 ; [#uses=1]
+ %12 = or i32 %9, %11 ; [#uses=1]
+ store i32 %12, i32* %8, align 4
+ ret void
+
+bb3: ; preds = %bb
+ %13 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 6, i32 0, i32 %axis ; [#uses=1]
+ store float %value, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 19 ; [#uses=2]
+ %15 = load i32* %14, align 4 ; [#uses=1]
+ %16 = mul nsw i32 %axis, 3 ; [#uses=1]
+ %17 = shl i32 1, %16 ; [#uses=1]
+ %18 = or i32 %15, %17 ; [#uses=1]
+ store i32 %18, i32* %14, align 4
+ ret void
+
+bb4: ; preds = %entry
+ %19 = add i32 %axis, -3 ; [#uses=4]
+ %20 = icmp ult i32 %19, 3 ; [#uses=1]
+ br i1 %20, label %bb5, label %return
+
+bb5: ; preds = %bb4
+ switch i32 %num, label %return [
+ i32 2, label %bb6
+ i32 3, label %bb8
+ i32 4, label %bb7
+ ]
+
+bb6: ; preds = %bb5
+ %21 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %19, i32 8 ; [#uses=1]
+ store float %value, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 19 ; [#uses=2]
+ %23 = load i32* %22, align 4 ; [#uses=1]
+ %24 = mul nsw i32 %axis, 3 ; [#uses=1]
+ %25 = shl i32 4, %24 ; [#uses=1]
+ %26 = or i32 %23, %25 ; [#uses=1]
+ store i32 %26, i32* %22, align 4
+ ret void
+
+bb7: ; preds = %bb5
+ %27 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %19, i32 9 ; [#uses=1]
+ store float %value, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 19 ; [#uses=2]
+ %29 = load i32* %28, align 4 ; [#uses=1]
+ %30 = mul nsw i32 %axis, 3 ; [#uses=1]
+ %31 = shl i32 2, %30 ; [#uses=1]
+ %32 = or i32 %29, %31 ; [#uses=1]
+ store i32 %32, i32* %28, align 4
+ ret void
+
+bb8: ; preds = %bb5
+ %33 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %19, i32 7 ; [#uses=1]
+ store float %value, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 19 ; [#uses=2]
+ %35 = load i32* %34, align 4 ; [#uses=1]
+ %36 = mul nsw i32 %axis, 3 ; [#uses=1]
+ %37 = shl i32 1, %36 ; [#uses=1]
+ %38 = or i32 %35, %37 ; [#uses=1]
+ store i32 %38, i32* %34, align 4
+ ret void
+
+return: ; preds = %bb5, %bb4, %bb
+ ret void
+}
+
+; [#uses=1]
+define float @_ZNK23btGeneric6DofConstraint8getParamEii(%struct.btGeneric6DofConstraint* nocapture %this, i32 %num, i32 %axis) nounwind readonly align 2 {
+entry:
+ %0 = icmp ult i32 %axis, 3 ; [#uses=1]
+ br i1 %0, label %bb, label %bb4
+
+bb: ; preds = %entry
+ switch i32 %num, label %bb9 [
+ i32 2, label %bb1
+ i32 3, label %bb3
+ i32 4, label %bb2
+ ]
+
+bb1: ; preds = %bb
+ %1 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 7, i32 0, i32 %axis ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ ret float %2
+
+bb2: ; preds = %bb
+ %3 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 8, i32 0, i32 %axis ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ ret float %4
+
+bb3: ; preds = %bb
+ %5 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 6, i32 0, i32 %axis ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ ret float %6
+
+bb4: ; preds = %entry
+ %7 = add i32 %axis, -3 ; [#uses=4]
+ %8 = icmp ult i32 %7, 3 ; [#uses=1]
+ br i1 %8, label %bb5, label %bb9
+
+bb5: ; preds = %bb4
+ switch i32 %num, label %bb9 [
+ i32 2, label %bb6
+ i32 3, label %bb8
+ i32 4, label %bb7
+ ]
+
+bb6: ; preds = %bb5
+ %9 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %7, i32 8 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ ret float %10
+
+bb7: ; preds = %bb5
+ %11 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %7, i32 9 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ ret float %12
+
+bb8: ; preds = %bb5
+ %13 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %7, i32 7 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ ret float %14
+
+bb9: ; preds = %bb5, %bb4, %bb
+ ret float 0.000000e+00
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK23btGeneric6DofConstraint9serializeEPvP12btSerializer(%struct.btGeneric6DofConstraint* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) inlinehint align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK17btTypedConstraint9serializeEPvP12btSerializer(%struct.btTypedConstraint* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %scevgep.i.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i.i = bitcast i8* %2 to float* ; [#uses=1]
+ %scevgep.1.i.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i.i = getelementptr i8* %dataBuffer, i32 48 ; [#uses=1]
+ %3 = bitcast i8* %scevgep4.1.i.i.i to float* ; [#uses=1]
+ %scevgep.2.i.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i.i = getelementptr i8* %dataBuffer, i32 52 ; [#uses=1]
+ %4 = bitcast i8* %scevgep4.2.i.i.i to float* ; [#uses=1]
+ %scevgep.3.i.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i.i = getelementptr i8* %dataBuffer, i32 56 ; [#uses=1]
+ %5 = bitcast i8* %scevgep4.3.i.i.i to float* ; [#uses=1]
+ %6 = load float* %scevgep.i.i.i, align 4 ; [#uses=1]
+ store float %6, float* %scevgep4.i.i.i, align 4
+ %7 = load float* %scevgep.1.i.i.i, align 4 ; [#uses=1]
+ store float %7, float* %3, align 4
+ %8 = load float* %scevgep.2.i.i.i, align 4 ; [#uses=1]
+ store float %8, float* %4, align 4
+ %9 = load float* %scevgep.3.i.i.i, align 4 ; [#uses=1]
+ store float %9, float* %5, align 4
+ %scevgep.i.1.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.1.i.i = getelementptr i8* %dataBuffer, i32 60 ; [#uses=1]
+ %10 = bitcast i8* %scevgep4.i.1.i.i to float* ; [#uses=1]
+ %scevgep.1.i.1.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.1.i.i = getelementptr i8* %dataBuffer, i32 64 ; [#uses=1]
+ %11 = bitcast i8* %scevgep4.1.i.1.i.i to float* ; [#uses=1]
+ %scevgep.2.i.1.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.1.i.i = getelementptr i8* %dataBuffer, i32 68 ; [#uses=1]
+ %12 = bitcast i8* %scevgep4.2.i.1.i.i to float* ; [#uses=1]
+ %scevgep.3.i.1.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.1.i.i = getelementptr i8* %dataBuffer, i32 72 ; [#uses=1]
+ %13 = bitcast i8* %scevgep4.3.i.1.i.i to float* ; [#uses=1]
+ %14 = load float* %scevgep.i.1.i.i, align 4 ; [#uses=1]
+ store float %14, float* %10, align 4
+ %15 = load float* %scevgep.1.i.1.i.i, align 4 ; [#uses=1]
+ store float %15, float* %11, align 4
+ %16 = load float* %scevgep.2.i.1.i.i, align 4 ; [#uses=1]
+ store float %16, float* %12, align 4
+ %17 = load float* %scevgep.3.i.1.i.i, align 4 ; [#uses=1]
+ store float %17, float* %13, align 4
+ %scevgep.i.2.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.2.i.i = getelementptr i8* %dataBuffer, i32 76 ; [#uses=1]
+ %18 = bitcast i8* %scevgep4.i.2.i.i to float* ; [#uses=1]
+ %scevgep.1.i.2.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.2.i.i = getelementptr i8* %dataBuffer, i32 80 ; [#uses=1]
+ %19 = bitcast i8* %scevgep4.1.i.2.i.i to float* ; [#uses=1]
+ %scevgep.2.i.2.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.2.i.i = getelementptr i8* %dataBuffer, i32 84 ; [#uses=1]
+ %20 = bitcast i8* %scevgep4.2.i.2.i.i to float* ; [#uses=1]
+ %scevgep.3.i.2.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.2.i.i = getelementptr i8* %dataBuffer, i32 88 ; [#uses=1]
+ %21 = bitcast i8* %scevgep4.3.i.2.i.i to float* ; [#uses=1]
+ %22 = load float* %scevgep.i.2.i.i, align 4 ; [#uses=1]
+ store float %22, float* %18, align 4
+ %23 = load float* %scevgep.1.i.2.i.i, align 4 ; [#uses=1]
+ store float %23, float* %19, align 4
+ %24 = load float* %scevgep.2.i.2.i.i, align 4 ; [#uses=1]
+ store float %24, float* %20, align 4
+ %25 = load float* %scevgep.3.i.2.i.i, align 4 ; [#uses=1]
+ store float %25, float* %21, align 4
+ %scevgep.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i = getelementptr i8* %dataBuffer, i32 92 ; [#uses=1]
+ %26 = bitcast i8* %scevgep4.i.i to float* ; [#uses=1]
+ %27 = load float* %scevgep.i.i, align 4 ; [#uses=1]
+ store float %27, float* %26, align 4
+ %scevgep.1.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i = getelementptr i8* %dataBuffer, i32 96 ; [#uses=1]
+ %28 = bitcast i8* %scevgep4.1.i.i to float* ; [#uses=1]
+ %29 = load float* %scevgep.1.i.i, align 4 ; [#uses=1]
+ store float %29, float* %28, align 4
+ %scevgep.2.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i = getelementptr i8* %dataBuffer, i32 100 ; [#uses=1]
+ %30 = bitcast i8* %scevgep4.2.i.i to float* ; [#uses=1]
+ %31 = load float* %scevgep.2.i.i, align 4 ; [#uses=1]
+ store float %31, float* %30, align 4
+ %scevgep.3.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i = getelementptr i8* %dataBuffer, i32 104 ; [#uses=1]
+ %32 = bitcast i8* %scevgep4.3.i.i to float* ; [#uses=1]
+ %33 = load float* %scevgep.3.i.i, align 4 ; [#uses=1]
+ store float %33, float* %32, align 4
+ %34 = getelementptr inbounds i8* %dataBuffer, i32 108 ; [#uses=1]
+ %scevgep.i.i.i11 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i.i12 = bitcast i8* %34 to float* ; [#uses=1]
+ %scevgep.1.i.i.i13 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i.i14 = getelementptr i8* %dataBuffer, i32 112 ; [#uses=1]
+ %35 = bitcast i8* %scevgep4.1.i.i.i14 to float* ; [#uses=1]
+ %scevgep.2.i.i.i15 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i.i16 = getelementptr i8* %dataBuffer, i32 116 ; [#uses=1]
+ %36 = bitcast i8* %scevgep4.2.i.i.i16 to float* ; [#uses=1]
+ %scevgep.3.i.i.i17 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i.i18 = getelementptr i8* %dataBuffer, i32 120 ; [#uses=1]
+ %37 = bitcast i8* %scevgep4.3.i.i.i18 to float* ; [#uses=1]
+ %38 = load float* %scevgep.i.i.i11, align 4 ; [#uses=1]
+ store float %38, float* %scevgep4.i.i.i12, align 4
+ %39 = load float* %scevgep.1.i.i.i13, align 4 ; [#uses=1]
+ store float %39, float* %35, align 4
+ %40 = load float* %scevgep.2.i.i.i15, align 4 ; [#uses=1]
+ store float %40, float* %36, align 4
+ %41 = load float* %scevgep.3.i.i.i17, align 4 ; [#uses=1]
+ store float %41, float* %37, align 4
+ %scevgep.i.1.i.i19 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.1.i.i20 = getelementptr i8* %dataBuffer, i32 124 ; [#uses=1]
+ %42 = bitcast i8* %scevgep4.i.1.i.i20 to float* ; [#uses=1]
+ %scevgep.1.i.1.i.i21 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.1.i.i22 = getelementptr i8* %dataBuffer, i32 128 ; [#uses=1]
+ %43 = bitcast i8* %scevgep4.1.i.1.i.i22 to float* ; [#uses=1]
+ %scevgep.2.i.1.i.i23 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.1.i.i24 = getelementptr i8* %dataBuffer, i32 132 ; [#uses=1]
+ %44 = bitcast i8* %scevgep4.2.i.1.i.i24 to float* ; [#uses=1]
+ %scevgep.3.i.1.i.i25 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.1.i.i26 = getelementptr i8* %dataBuffer, i32 136 ; [#uses=1]
+ %45 = bitcast i8* %scevgep4.3.i.1.i.i26 to float* ; [#uses=1]
+ %46 = load float* %scevgep.i.1.i.i19, align 4 ; [#uses=1]
+ store float %46, float* %42, align 4
+ %47 = load float* %scevgep.1.i.1.i.i21, align 4 ; [#uses=1]
+ store float %47, float* %43, align 4
+ %48 = load float* %scevgep.2.i.1.i.i23, align 4 ; [#uses=1]
+ store float %48, float* %44, align 4
+ %49 = load float* %scevgep.3.i.1.i.i25, align 4 ; [#uses=1]
+ store float %49, float* %45, align 4
+ %scevgep.i.2.i.i27 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.2.i.i28 = getelementptr i8* %dataBuffer, i32 140 ; [#uses=1]
+ %50 = bitcast i8* %scevgep4.i.2.i.i28 to float* ; [#uses=1]
+ %scevgep.1.i.2.i.i29 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.2.i.i30 = getelementptr i8* %dataBuffer, i32 144 ; [#uses=1]
+ %51 = bitcast i8* %scevgep4.1.i.2.i.i30 to float* ; [#uses=1]
+ %scevgep.2.i.2.i.i31 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.2.i.i32 = getelementptr i8* %dataBuffer, i32 148 ; [#uses=1]
+ %52 = bitcast i8* %scevgep4.2.i.2.i.i32 to float* ; [#uses=1]
+ %scevgep.3.i.2.i.i33 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.2.i.i34 = getelementptr i8* %dataBuffer, i32 152 ; [#uses=1]
+ %53 = bitcast i8* %scevgep4.3.i.2.i.i34 to float* ; [#uses=1]
+ %54 = load float* %scevgep.i.2.i.i27, align 4 ; [#uses=1]
+ store float %54, float* %50, align 4
+ %55 = load float* %scevgep.1.i.2.i.i29, align 4 ; [#uses=1]
+ store float %55, float* %51, align 4
+ %56 = load float* %scevgep.2.i.2.i.i31, align 4 ; [#uses=1]
+ store float %56, float* %52, align 4
+ %57 = load float* %scevgep.3.i.2.i.i33, align 4 ; [#uses=1]
+ store float %57, float* %53, align 4
+ %scevgep.i.i35 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i36 = getelementptr i8* %dataBuffer, i32 156 ; [#uses=1]
+ %58 = bitcast i8* %scevgep4.i.i36 to float* ; [#uses=1]
+ %59 = load float* %scevgep.i.i35, align 4 ; [#uses=1]
+ store float %59, float* %58, align 4
+ %scevgep.1.i.i37 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i38 = getelementptr i8* %dataBuffer, i32 160 ; [#uses=1]
+ %60 = bitcast i8* %scevgep4.1.i.i38 to float* ; [#uses=1]
+ %61 = load float* %scevgep.1.i.i37, align 4 ; [#uses=1]
+ store float %61, float* %60, align 4
+ %scevgep.2.i.i39 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i40 = getelementptr i8* %dataBuffer, i32 164 ; [#uses=1]
+ %62 = bitcast i8* %scevgep4.2.i.i40 to float* ; [#uses=1]
+ %63 = load float* %scevgep.2.i.i39, align 4 ; [#uses=1]
+ store float %63, float* %62, align 4
+ %scevgep.3.i.i41 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i42 = getelementptr i8* %dataBuffer, i32 168 ; [#uses=1]
+ %64 = bitcast i8* %scevgep4.3.i.i42 to float* ; [#uses=1]
+ %65 = load float* %scevgep.3.i.i41, align 4 ; [#uses=1]
+ store float %65, float* %64, align 4
+ %scevgep = getelementptr i8* %dataBuffer, i32 220 ; [#uses=1]
+ %scevgep45 = bitcast i8* %scevgep to float* ; [#uses=1]
+ %scevgep47 = getelementptr i8* %dataBuffer, i32 204 ; [#uses=1]
+ %scevgep4748 = bitcast i8* %scevgep47 to float* ; [#uses=1]
+ %scevgep50 = getelementptr i8* %dataBuffer, i32 188 ; [#uses=1]
+ %scevgep5051 = bitcast i8* %scevgep50 to float* ; [#uses=1]
+ %scevgep53 = getelementptr i8* %dataBuffer, i32 172 ; [#uses=1]
+ %scevgep5354 = bitcast i8* %scevgep53 to float* ; [#uses=1]
+ %scevgep5556 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %scevgep57 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %scevgep58 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep59 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 1, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %scevgep5556, align 4 ; [#uses=1]
+ store float %66, float* %scevgep45, align 4
+ %67 = load float* %scevgep57, align 4 ; [#uses=1]
+ store float %67, float* %scevgep4748, align 4
+ %68 = load float* %scevgep58, align 4 ; [#uses=1]
+ store float %68, float* %scevgep5051, align 4
+ %69 = load float* %scevgep59, align 4 ; [#uses=1]
+ store float %69, float* %scevgep5354, align 4
+ %scevgep.1 = getelementptr i8* %dataBuffer, i32 224 ; [#uses=1]
+ %scevgep45.1 = bitcast i8* %scevgep.1 to float* ; [#uses=1]
+ %scevgep47.1 = getelementptr i8* %dataBuffer, i32 208 ; [#uses=1]
+ %scevgep4748.1 = bitcast i8* %scevgep47.1 to float* ; [#uses=1]
+ %scevgep50.1 = getelementptr i8* %dataBuffer, i32 192 ; [#uses=1]
+ %scevgep5051.1 = bitcast i8* %scevgep50.1 to float* ; [#uses=1]
+ %scevgep53.1 = getelementptr i8* %dataBuffer, i32 176 ; [#uses=1]
+ %scevgep5354.1 = bitcast i8* %scevgep53.1 to float* ; [#uses=1]
+ %scevgep5556.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 0 ; [#uses=1]
+ %scevgep57.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 1 ; [#uses=1]
+ %scevgep58.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep59.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 1, i32 0, i32 1 ; [#uses=1]
+ %70 = load float* %scevgep5556.1, align 4 ; [#uses=1]
+ store float %70, float* %scevgep45.1, align 4
+ %71 = load float* %scevgep57.1, align 4 ; [#uses=1]
+ store float %71, float* %scevgep4748.1, align 4
+ %72 = load float* %scevgep58.1, align 4 ; [#uses=1]
+ store float %72, float* %scevgep5051.1, align 4
+ %73 = load float* %scevgep59.1, align 4 ; [#uses=1]
+ store float %73, float* %scevgep5354.1, align 4
+ %scevgep.2 = getelementptr i8* %dataBuffer, i32 228 ; [#uses=1]
+ %scevgep45.2 = bitcast i8* %scevgep.2 to float* ; [#uses=1]
+ %scevgep47.2 = getelementptr i8* %dataBuffer, i32 212 ; [#uses=1]
+ %scevgep4748.2 = bitcast i8* %scevgep47.2 to float* ; [#uses=1]
+ %scevgep50.2 = getelementptr i8* %dataBuffer, i32 196 ; [#uses=1]
+ %scevgep5051.2 = bitcast i8* %scevgep50.2 to float* ; [#uses=1]
+ %scevgep53.2 = getelementptr i8* %dataBuffer, i32 180 ; [#uses=1]
+ %scevgep5354.2 = bitcast i8* %scevgep53.2 to float* ; [#uses=1]
+ %scevgep5556.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 0 ; [#uses=1]
+ %scevgep57.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 1 ; [#uses=1]
+ %scevgep58.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep59.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 1, i32 0, i32 2 ; [#uses=1]
+ %74 = load float* %scevgep5556.2, align 4 ; [#uses=1]
+ store float %74, float* %scevgep45.2, align 4
+ %75 = load float* %scevgep57.2, align 4 ; [#uses=1]
+ store float %75, float* %scevgep4748.2, align 4
+ %76 = load float* %scevgep58.2, align 4 ; [#uses=1]
+ store float %76, float* %scevgep5051.2, align 4
+ %77 = load float* %scevgep59.2, align 4 ; [#uses=1]
+ store float %77, float* %scevgep5354.2, align 4
+ %78 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ %79 = load i8* %78, align 4 ; [#uses=1]
+ %not.toBool = icmp ne i8 %79, 0 ; [#uses=1]
+ %iftmp.186.0 = zext i1 %not.toBool to i32 ; [#uses=1]
+ %80 = getelementptr inbounds i8* %dataBuffer, i32 236 ; [#uses=1]
+ %81 = bitcast i8* %80 to i32* ; [#uses=1]
+ store i32 %iftmp.186.0, i32* %81, align 4
+ %82 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ %83 = load i8* %82, align 1 ; [#uses=1]
+ %not.toBool6 = icmp ne i8 %83, 0 ; [#uses=1]
+ %iftmp.187.0 = zext i1 %not.toBool6 to i32 ; [#uses=1]
+ %84 = getelementptr inbounds i8* %dataBuffer, i32 240 ; [#uses=1]
+ %85 = bitcast i8* %84 to i32* ; [#uses=1]
+ store i32 %iftmp.187.0, i32* %85, align 4
+ ret i8* getelementptr inbounds ([28 x i8]* @.str114, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btGeneric6DofConstraintD0Ev(%struct.btGeneric6DofConstraint* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV23btGeneric6DofConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btGeneric6DofConstraint* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btGeneric6DofConstraintD1Ev(%struct.btGeneric6DofConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV23btGeneric6DofConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btGeneric6DofConstraint13buildJacobianEv(%struct.btGeneric6DofConstraint* %this) align 2 {
+entry:
+ %pivotAInW = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %pivotBInW = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %normalWorld = alloca %struct.btQuadWord, align 8 ; [#uses=10]
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb.nph30
+
+bb.nph30: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ %scevgep57 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 15 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep57, align 4
+ %scevgep57.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 15 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep57.1, align 4
+ %scevgep57.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 15 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep57.2, align 4
+ %6 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %7 = load %struct.btRigidBody** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %10 = load %struct.btRigidBody** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btRigidBody* %10, i32 0, i32 0, i32 1 ; [#uses=1]
+ call void @_ZN23btGeneric6DofConstraint19calculateTransformsERK11btTransformS2_(%struct.btGeneric6DofConstraint* %this, %struct.btTransform* %11, %struct.btTransform* %8)
+ %12 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 11 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %15 to void (%struct.btGeneric6DofConstraint*)* ; [#uses=1]
+ call void %16(%struct.btGeneric6DofConstraint* %this)
+ %17 = getelementptr inbounds %struct.btQuadWord* %pivotAInW, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 16, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=2]
+ store float %19, float* %17, align 8
+ %20 = getelementptr inbounds %struct.btQuadWord* %pivotAInW, i32 0, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 16, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btQuadWord* %pivotAInW, i32 0, i32 0, i32 2 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 16, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=2]
+ store float %25, float* %23, align 8
+ %26 = getelementptr inbounds %struct.btQuadWord* %pivotAInW, i32 0, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 16, i32 0, i32 3 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=2]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %pivotBInW, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %19, float* %29, align 8
+ %30 = getelementptr inbounds %struct.btQuadWord* %pivotBInW, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %22, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btQuadWord* %pivotBInW, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %25, float* %31, align 8
+ %32 = getelementptr inbounds %struct.btQuadWord* %pivotBInW, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %28, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %normalWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %normalWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuadWord* %normalWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %normalWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb12, %bb.nph30
+ %i.129 = phi i32 [ 0, %bb.nph30 ], [ %42, %bb12 ] ; [#uses=10]
+ %scevgep47 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 3, i32 %i.129 ; [#uses=1]
+ %scevgep48 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 1, i32 0, i32 %i.129 ; [#uses=1]
+ %scevgep49 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 0, i32 0, i32 %i.129 ; [#uses=1]
+ %scevgep50 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 2, i32 0, i32 %i.129 ; [#uses=1]
+ %scevgep51 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 1, i32 0, i32 %i.129 ; [#uses=1]
+ %scevgep52 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 %i.129 ; [#uses=1]
+ %scevgep53 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 2, i32 0, i32 %i.129 ; [#uses=1]
+ %scevgep54 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 1, i32 0, i32 %i.129 ; [#uses=1]
+ %scevgep55 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 %i.129 ; [#uses=1]
+ %38 = load float* %scevgep48, align 4 ; [#uses=1]
+ %39 = load float* %scevgep49, align 4 ; [#uses=1]
+ %40 = fcmp ult float %38, %39 ; [#uses=1]
+ br i1 %40, label %bb12, label %bb6
+
+bb6: ; preds = %bb4
+ %41 = load i8* %33, align 4 ; [#uses=1]
+ %toBool7 = icmp eq i8 %41, 0 ; [#uses=3]
+ %storemerge59.in = select i1 %toBool7, float* %scevgep55, float* %scevgep52 ; [#uses=1]
+ %storemerge58.in = select i1 %toBool7, float* %scevgep54, float* %scevgep51 ; [#uses=1]
+ %storemerge.in = select i1 %toBool7, float* %scevgep53, float* %scevgep50 ; [#uses=1]
+ %storemerge = load float* %storemerge.in, align 4 ; [#uses=1]
+ %storemerge58 = load float* %storemerge58.in, align 4 ; [#uses=1]
+ %storemerge59 = load float* %storemerge59.in, align 4 ; [#uses=1]
+ store float %storemerge59, float* %34, align 8
+ store float %storemerge58, float* %35, align 4
+ store float %storemerge, float* %36, align 8
+ store float 0.000000e+00, float* %37, align 4
+ call void @_ZN23btGeneric6DofConstraint19buildLinearJacobianER15btJacobianEntryRK9btVector3S4_S4_(%struct.btGeneric6DofConstraint* %this, %struct.btJacobianEntry* %scevgep47, %struct.btQuadWord* %normalWorld, %struct.btQuadWord* %pivotAInW, %struct.btQuadWord* %pivotBInW)
+ br label %bb12
+
+bb12: ; preds = %bb6, %bb4
+ %42 = add nsw i32 %i.129, 1 ; [#uses=2]
+ %exitcond46 = icmp eq i32 %42, 3 ; [#uses=1]
+ br i1 %exitcond46, label %bb.nph, label %bb4
+
+bb.nph: ; preds = %bb12
+ %43 = getelementptr inbounds %struct.btQuadWord* %normalWorld, i32 0, i32 0, i32 0 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btQuadWord* %normalWorld, i32 0, i32 0, i32 1 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btQuadWord* %normalWorld, i32 0, i32 0, i32 2 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btQuadWord* %normalWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb15
+
+bb15: ; preds = %bb19, %bb.nph
+ %i.228 = phi i32 [ 0, %bb.nph ], [ %61, %bb19 ] ; [#uses=13]
+ %scevgep = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 4, i32 %i.228 ; [#uses=1]
+ %scevgep3334 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 %i.228, i32 0, i32 0 ; [#uses=1]
+ %scevgep35 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 %i.228, i32 0, i32 1 ; [#uses=1]
+ %scevgep36 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 %i.228, i32 0, i32 2 ; [#uses=1]
+ %scevgep37 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 %i.228, i32 0, i32 3 ; [#uses=1]
+ %scevgep38 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 10, i32 0, i32 %i.228 ; [#uses=1]
+ %scevgep39 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.228, i32 1 ; [#uses=1]
+ %scevgep4041 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.228, i32 0 ; [#uses=1]
+ %scevgep42 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.228, i32 13 ; [#uses=1]
+ %scevgep43 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.228, i32 14 ; [#uses=3]
+ %scevgep44 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.228, i32 12 ; [#uses=2]
+ %scevgep45 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.228, i32 11 ; [#uses=1]
+ %47 = load float* %scevgep38, align 4 ; [#uses=1]
+ %48 = load float* %scevgep39, align 4 ; [#uses=4]
+ %49 = load float* %scevgep4041, align 4 ; [#uses=4]
+ %50 = call float @_Z21btAdjustAngleToLimitsfff(float %47, float %49, float %48) nounwind ; [#uses=5]
+ store float %50, float* %scevgep42, align 4
+ %51 = fcmp ogt float %49, %48 ; [#uses=1]
+ br i1 %51, label %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb15
+ %52 = fcmp ogt float %49, %50 ; [#uses=1]
+ br i1 %52, label %bb2.i.i, label %bb3.i.i
+
+bb2.i.i: ; preds = %bb1.i.i
+ store i32 1, i32* %scevgep43, align 4
+ %53 = fsub float %50, %49 ; [#uses=1]
+ store float %53, float* %scevgep44, align 4
+ br label %bb17
+
+bb3.i.i: ; preds = %bb1.i.i
+ %54 = fcmp olt float %48, %50 ; [#uses=1]
+ br i1 %54, label %bb4.i.i, label %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit
+
+bb4.i.i: ; preds = %bb3.i.i
+ store i32 2, i32* %scevgep43, align 4
+ %55 = fsub float %50, %48 ; [#uses=1]
+ store float %55, float* %scevgep44, align 4
+ br label %bb17
+
+_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit: ; preds = %bb3.i.i, %bb15
+ store i32 0, i32* %scevgep43, align 4
+ %56 = load i8* %scevgep45, align 4 ; [#uses=1]
+ %phitmp = icmp eq i8 %56, 0 ; [#uses=1]
+ br i1 %phitmp, label %bb19, label %bb17
+
+bb17: ; preds = %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit, %bb4.i.i, %bb2.i.i
+ %57 = load float* %scevgep3334, align 4 ; [#uses=1]
+ %58 = load float* %scevgep35, align 4 ; [#uses=1]
+ %59 = load float* %scevgep36, align 4 ; [#uses=1]
+ %60 = load float* %scevgep37, align 4 ; [#uses=1]
+ store float %57, float* %43, align 8
+ store float %58, float* %44, align 4
+ store float %59, float* %45, align 8
+ store float %60, float* %46, align 4
+ call void @_ZN23btGeneric6DofConstraint20buildAngularJacobianER15btJacobianEntryRK9btVector3(%struct.btGeneric6DofConstraint* %this, %struct.btJacobianEntry* %scevgep, %struct.btQuadWord* %normalWorld)
+ br label %bb19
+
+bb19: ; preds = %bb17, %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit
+ %61 = add nsw i32 %i.228, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %61, 3 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb15
+
+return: ; preds = %bb19, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btGeneric6DofConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E(%struct.btGeneric6DofConstraint* %this, %struct.CONTACT_KEY_TOKEN* nocapture %info) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %bb.nph17, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ ret void
+
+bb.nph17: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %5 = load %struct.btRigidBody** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %8 = load %struct.btRigidBody** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btRigidBody* %8, i32 0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN23btGeneric6DofConstraint19calculateTransformsERK11btTransformS2_(%struct.btGeneric6DofConstraint* %this, %struct.btTransform* %9, %struct.btTransform* %6)
+ %10 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 0 ; [#uses=6]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=6]
+ store i32 6, i32* %11, align 4
+ %scevgep26 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 14, i32 0 ; [#uses=1]
+ %12 = load i32* %scevgep26, align 4 ; [#uses=1]
+ %13 = icmp eq i32 %12, 0 ; [#uses=1]
+ br i1 %13, label %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit, label %bb4
+
+_ZN25btTranslationalLimitMotor14needApplyForceEi.exit: ; preds = %bb.nph17
+ %scevgep27 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 9, i32 0 ; [#uses=1]
+ %14 = load i8* %scevgep27, align 1 ; [#uses=1]
+ %phitmp14 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %phitmp14, label %bb5, label %bb4
+
+bb4: ; preds = %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit, %bb.nph17
+ store i32 1, i32* %10, align 4
+ store i32 5, i32* %11, align 4
+ br label %bb5
+
+bb5: ; preds = %bb4, %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit
+ %15 = phi i32 [ 6, %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit ], [ 5, %bb4 ] ; [#uses=2]
+ %16 = phi i32 [ 0, %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit ], [ 1, %bb4 ] ; [#uses=2]
+ %scevgep26.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 14, i32 1 ; [#uses=1]
+ %17 = load i32* %scevgep26.1, align 4 ; [#uses=1]
+ %18 = icmp eq i32 %17, 0 ; [#uses=1]
+ br i1 %18, label %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit.1, label %bb4.1
+
+bb8: ; preds = %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit.2, %bb4.2, %bb11
+ %i.115 = phi i32 [ %33, %bb11 ], [ 0, %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit.2 ], [ 0, %bb4.2 ] ; [#uses=8]
+ %scevgep = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 10, i32 0, i32 %i.115 ; [#uses=1]
+ %scevgep18 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.115, i32 1 ; [#uses=1]
+ %scevgep1920 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.115, i32 0 ; [#uses=1]
+ %scevgep21 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.115, i32 13 ; [#uses=1]
+ %scevgep22 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.115, i32 14 ; [#uses=3]
+ %scevgep23 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.115, i32 12 ; [#uses=2]
+ %scevgep24 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.115, i32 11 ; [#uses=1]
+ %19 = load float* %scevgep, align 4 ; [#uses=1]
+ %20 = load float* %scevgep18, align 4 ; [#uses=4]
+ %21 = load float* %scevgep1920, align 4 ; [#uses=4]
+ %22 = tail call float @_Z21btAdjustAngleToLimitsfff(float %19, float %21, float %20) nounwind ; [#uses=5]
+ store float %22, float* %scevgep21, align 4
+ %23 = fcmp ogt float %21, %20 ; [#uses=1]
+ br i1 %23, label %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb8
+ %24 = fcmp ogt float %21, %22 ; [#uses=1]
+ br i1 %24, label %bb2.i.i, label %bb3.i.i
+
+bb2.i.i: ; preds = %bb1.i.i
+ store i32 1, i32* %scevgep22, align 4
+ %25 = fsub float %22, %21 ; [#uses=1]
+ store float %25, float* %scevgep23, align 4
+ br label %bb10
+
+bb3.i.i: ; preds = %bb1.i.i
+ %26 = fcmp olt float %20, %22 ; [#uses=1]
+ br i1 %26, label %bb4.i.i, label %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit
+
+bb4.i.i: ; preds = %bb3.i.i
+ store i32 2, i32* %scevgep22, align 4
+ %27 = fsub float %22, %20 ; [#uses=1]
+ store float %27, float* %scevgep23, align 4
+ br label %bb10
+
+_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit: ; preds = %bb3.i.i, %bb8
+ store i32 0, i32* %scevgep22, align 4
+ %28 = load i8* %scevgep24, align 4 ; [#uses=1]
+ %phitmp = icmp eq i8 %28, 0 ; [#uses=1]
+ br i1 %phitmp, label %bb11, label %bb10
+
+bb10: ; preds = %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit, %bb4.i.i, %bb2.i.i
+ %29 = load i32* %10, align 4 ; [#uses=1]
+ %30 = add nsw i32 %29, 1 ; [#uses=1]
+ store i32 %30, i32* %10, align 4
+ %31 = load i32* %11, align 4 ; [#uses=1]
+ %32 = add nsw i32 %31, -1 ; [#uses=1]
+ store i32 %32, i32* %11, align 4
+ br label %bb11
+
+bb11: ; preds = %bb10, %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit
+ %33 = add nsw i32 %i.115, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %33, 3 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb8
+
+return: ; preds = %bb11
+ ret void
+
+bb5.1: ; preds = %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit.1, %bb4.1
+ %34 = phi i32 [ %15, %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit.1 ], [ %39, %bb4.1 ] ; [#uses=1]
+ %35 = phi i32 [ %16, %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit.1 ], [ %38, %bb4.1 ] ; [#uses=1]
+ %scevgep26.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 14, i32 2 ; [#uses=1]
+ %36 = load i32* %scevgep26.2, align 4 ; [#uses=1]
+ %37 = icmp eq i32 %36, 0 ; [#uses=1]
+ br i1 %37, label %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit.2, label %bb4.2
+
+bb4.1: ; preds = %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit.1, %bb5
+ %38 = add nsw i32 %16, 1 ; [#uses=2]
+ store i32 %38, i32* %10, align 4
+ %39 = add nsw i32 %15, -1 ; [#uses=2]
+ store i32 %39, i32* %11, align 4
+ br label %bb5.1
+
+_ZN25btTranslationalLimitMotor14needApplyForceEi.exit.1: ; preds = %bb5
+ %scevgep27.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 9, i32 1 ; [#uses=1]
+ %40 = load i8* %scevgep27.1, align 1 ; [#uses=1]
+ %phitmp14.1 = icmp eq i8 %40, 0 ; [#uses=1]
+ br i1 %phitmp14.1, label %bb5.1, label %bb4.1
+
+bb4.2: ; preds = %_ZN25btTranslationalLimitMotor14needApplyForceEi.exit.2, %bb5.1
+ %41 = add nsw i32 %35, 1 ; [#uses=1]
+ store i32 %41, i32* %10, align 4
+ %42 = add nsw i32 %34, -1 ; [#uses=1]
+ store i32 %42, i32* %11, align 4
+ br label %bb8
+
+_ZN25btTranslationalLimitMotor14needApplyForceEi.exit.2: ; preds = %bb5.1
+ %scevgep27.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 9, i32 2 ; [#uses=1]
+ %43 = load i8* %scevgep27.2, align 1 ; [#uses=1]
+ %phitmp14.2 = icmp eq i8 %43, 0 ; [#uses=1]
+ br i1 %phitmp14.2, label %bb8, label %bb4.2
+}
+
+; [#uses=2]
+define void @_ZN23btGeneric6DofConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E(%struct.btGeneric6DofConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %1 = load %struct.btRigidBody** %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1 ; [#uses=4]
+ %3 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %4 = load %struct.btRigidBody** %3, align 4 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btRigidBody* %4, i32 0, i32 0, i32 1 ; [#uses=4]
+ %6 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 2 ; [#uses=4]
+ %7 = getelementptr inbounds %struct.btRigidBody* %4, i32 0, i32 2 ; [#uses=4]
+ %8 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 3 ; [#uses=4]
+ %9 = getelementptr inbounds %struct.btRigidBody* %4, i32 0, i32 3 ; [#uses=4]
+ %10 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ %11 = load i8* %10, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %11, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %12 = tail call i32 @_ZN23btGeneric6DofConstraint16setAngularLimitsEPN17btTypedConstraint17btConstraintInfo2EiRK11btTransformS5_RK9btVector3S8_S8_S8_(%struct.btGeneric6DofConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, %struct.btTransform* %2, %struct.btTransform* %5, %struct.btQuadWord* %6, %struct.btQuadWord* %7, %struct.btQuadWord* %8, %struct.btQuadWord* %9) ; [#uses=1]
+ %13 = tail call i32 @_ZN23btGeneric6DofConstraint15setLinearLimitsEPN17btTypedConstraint17btConstraintInfo2EiRK11btTransformS5_RK9btVector3S8_S8_S8_(%struct.btGeneric6DofConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 %12, %struct.btTransform* %2, %struct.btTransform* %5, %struct.btQuadWord* %6, %struct.btQuadWord* %7, %struct.btQuadWord* %8, %struct.btQuadWord* %9) ; [#uses=0]
+ ret void
+
+bb1: ; preds = %entry
+ %14 = tail call i32 @_ZN23btGeneric6DofConstraint15setLinearLimitsEPN17btTypedConstraint17btConstraintInfo2EiRK11btTransformS5_RK9btVector3S8_S8_S8_(%struct.btGeneric6DofConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, %struct.btTransform* %2, %struct.btTransform* %5, %struct.btQuadWord* %6, %struct.btQuadWord* %7, %struct.btQuadWord* %8, %struct.btQuadWord* %9) ; [#uses=1]
+ %15 = tail call i32 @_ZN23btGeneric6DofConstraint16setAngularLimitsEPN17btTypedConstraint17btConstraintInfo2EiRK11btTransformS5_RK9btVector3S8_S8_S8_(%struct.btGeneric6DofConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 %14, %struct.btTransform* %2, %struct.btTransform* %5, %struct.btQuadWord* %6, %struct.btQuadWord* %7, %struct.btQuadWord* %8, %struct.btQuadWord* %9) ; [#uses=0]
+ ret void
+}
+
+; [#uses=3]
+define i32 @_ZN23btGeneric6DofConstraint21get_limit_motor_info2EP22btRotationalLimitMotorRK11btTransformS4_RK9btVector3S7_S7_S7_PN17btTypedConstraint17btConstraintInfo2EiRS5_ii(%struct.btGeneric6DofConstraint* %this, %struct.btRotationalLimitMotor* %limot, %struct.btTransform* nocapture %transA, %struct.btTransform* nocapture %transB, %struct.btQuadWord* nocapture %linVelA, %struct.btQuadWord* nocapture %linVelB, %struct.btQuadWord* nocapture %angVelA, %struct.btQuadWord* nocapture %angVelB, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 %row, %struct.btQuadWord* %ax1, i32 %rotational, i32 %rotAllowed) align 2 {
+entry:
+ %tmpA = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %tmpB = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 6 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = mul nsw i32 %1, %row ; [#uses=23]
+ %3 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 11 ; [#uses=1]
+ %4 = load i8* %3, align 4 ; [#uses=2]
+ %5 = zext i8 %4 to i32 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 14 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=3]
+ %8 = or i32 %5, %7 ; [#uses=1]
+ %9 = icmp eq i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb69, label %bb
+
+bb: ; preds = %entry
+ %10 = icmp eq i32 %rotational, 0 ; [#uses=5]
+ br i1 %10, label %bb3.thread, label %bb4
+
+bb3.thread: ; preds = %bb
+ %11 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 2 ; [#uses=1]
+ br label %bb6
+
+bb4: ; preds = %bb
+ %12 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 3 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 5 ; [#uses=1]
+ %14 = load float** %13, align 4 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb4, %bb3.thread
+ %iftmp.244.0141.in = phi float** [ %12, %bb4 ], [ %11, %bb3.thread ] ; [#uses=1]
+ %iftmp.245.0 = phi float* [ %14, %bb4 ], [ null, %bb3.thread ] ; [#uses=3]
+ %iftmp.244.0141 = load float** %iftmp.244.0141.in, align 4 ; [#uses=3]
+ %15 = getelementptr inbounds %struct.btQuadWord* %ax1, i32 0, i32 0, i32 0 ; [#uses=7]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds float* %iftmp.244.0141, i32 %2 ; [#uses=1]
+ store float %16, float* %17, align 4
+ %18 = add nsw i32 %2, 1 ; [#uses=6]
+ %19 = getelementptr inbounds %struct.btQuadWord* %ax1, i32 0, i32 0, i32 1 ; [#uses=7]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds float* %iftmp.244.0141, i32 %18 ; [#uses=1]
+ store float %20, float* %21, align 4
+ %22 = add nsw i32 %2, 2 ; [#uses=6]
+ %23 = getelementptr inbounds %struct.btQuadWord* %ax1, i32 0, i32 0, i32 2 ; [#uses=7]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds float* %iftmp.244.0141, i32 %22 ; [#uses=1]
+ store float %24, float* %25, align 4
+ br i1 %10, label %bb9, label %bb7
+
+bb7: ; preds = %bb6
+ %26 = load float* %15, align 4 ; [#uses=1]
+ %27 = fsub float -0.000000e+00, %26 ; [#uses=1]
+ %28 = getelementptr inbounds float* %iftmp.245.0, i32 %2 ; [#uses=1]
+ store float %27, float* %28, align 4
+ %29 = load float* %19, align 4 ; [#uses=1]
+ %30 = fsub float -0.000000e+00, %29 ; [#uses=1]
+ %31 = getelementptr inbounds float* %iftmp.245.0, i32 %18 ; [#uses=1]
+ store float %30, float* %31, align 4
+ %32 = load float* %23, align 4 ; [#uses=1]
+ %33 = fsub float -0.000000e+00, %32 ; [#uses=1]
+ %34 = getelementptr inbounds float* %iftmp.245.0, i32 %22 ; [#uses=1]
+ store float %33, float* %34, align 4
+ br label %bb31
+
+bb9: ; preds = %bb6
+ %35 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ %36 = load i8* %35, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %36, 0 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 2 ; [#uses=2]
+ %38 = load float* %37, align 4 ; [#uses=2]
+ br i1 %toBool, label %bb25, label %bb10
+
+bb10: ; preds = %bb9
+ %39 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fsub float %38, %40 ; [#uses=2]
+ %42 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fsub float %43, %45 ; [#uses=2]
+ %47 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 0 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fsub float %48, %50 ; [#uses=2]
+ %52 = load float* %15, align 4 ; [#uses=9]
+ %53 = fmul float %51, %52 ; [#uses=1]
+ %54 = load float* %19, align 4 ; [#uses=9]
+ %55 = fmul float %46, %54 ; [#uses=1]
+ %56 = fadd float %53, %55 ; [#uses=1]
+ %57 = load float* %23, align 4 ; [#uses=9]
+ %58 = fmul float %41, %57 ; [#uses=1]
+ %59 = fadd float %56, %58 ; [#uses=3]
+ %60 = fmul float %57, %59 ; [#uses=2]
+ %61 = fmul float %54, %59 ; [#uses=2]
+ %62 = fmul float %52, %59 ; [#uses=2]
+ %63 = fsub float %41, %60 ; [#uses=1]
+ %64 = fsub float %46, %61 ; [#uses=1]
+ %65 = fsub float %51, %62 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 1, i32 0, i32 2 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = fsub float %67, %69 ; [#uses=2]
+ %71 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 1, i32 0, i32 1 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = fsub float %72, %74 ; [#uses=2]
+ %76 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 1, i32 0, i32 0 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = fsub float %77, %79 ; [#uses=2]
+ %81 = fmul float %80, %52 ; [#uses=1]
+ %82 = fmul float %75, %54 ; [#uses=1]
+ %83 = fadd float %81, %82 ; [#uses=1]
+ %84 = fmul float %70, %57 ; [#uses=1]
+ %85 = fadd float %83, %84 ; [#uses=3]
+ %86 = fmul float %57, %85 ; [#uses=2]
+ %87 = fmul float %54, %85 ; [#uses=2]
+ %88 = fmul float %52, %85 ; [#uses=2]
+ %89 = fsub float %70, %86 ; [#uses=1]
+ %90 = fsub float %75, %87 ; [#uses=1]
+ %91 = fsub float %80, %88 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 13 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 12 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ %96 = fsub float %93, %95 ; [#uses=3]
+ %97 = fmul float %57, %96 ; [#uses=1]
+ %98 = fmul float %54, %96 ; [#uses=1]
+ %99 = fmul float %52, %96 ; [#uses=1]
+ %100 = fadd float %86, %97 ; [#uses=1]
+ %101 = fadd float %87, %98 ; [#uses=1]
+ %102 = fadd float %88, %99 ; [#uses=1]
+ %103 = fsub float %100, %60 ; [#uses=2]
+ %104 = fsub float %101, %61 ; [#uses=2]
+ %105 = fsub float %102, %62 ; [#uses=2]
+ %106 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 13 ; [#uses=1]
+ %107 = load float* %106, align 4 ; [#uses=6]
+ %108 = fmul float %103, %107 ; [#uses=1]
+ %109 = fmul float %104, %107 ; [#uses=1]
+ %110 = fmul float %105, %107 ; [#uses=1]
+ %111 = fadd float %89, %108 ; [#uses=2]
+ %112 = fadd float %90, %109 ; [#uses=2]
+ %113 = fadd float %91, %110 ; [#uses=2]
+ %114 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 14 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=6]
+ %116 = fmul float %103, %115 ; [#uses=1]
+ %117 = fmul float %104, %115 ; [#uses=1]
+ %118 = fmul float %105, %115 ; [#uses=1]
+ %119 = fsub float %63, %116 ; [#uses=2]
+ %120 = fsub float %64, %117 ; [#uses=2]
+ %121 = fsub float %65, %118 ; [#uses=2]
+ %122 = fmul float %113, %54 ; [#uses=1]
+ %123 = fmul float %112, %52 ; [#uses=1]
+ %124 = fsub float %122, %123 ; [#uses=3]
+ %125 = fmul float %111, %52 ; [#uses=1]
+ %126 = fmul float %113, %57 ; [#uses=1]
+ %127 = fsub float %125, %126 ; [#uses=3]
+ %128 = fmul float %112, %57 ; [#uses=1]
+ %129 = fmul float %111, %54 ; [#uses=1]
+ %130 = fsub float %128, %129 ; [#uses=3]
+ %131 = getelementptr inbounds %struct.btQuadWord* %tmpA, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %130, float* %131, align 8
+ %132 = getelementptr inbounds %struct.btQuadWord* %tmpA, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %127, float* %132, align 4
+ %133 = getelementptr inbounds %struct.btQuadWord* %tmpA, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %124, float* %133, align 8
+ %134 = getelementptr inbounds %struct.btQuadWord* %tmpA, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %134, align 4
+ %135 = fmul float %121, %54 ; [#uses=1]
+ %136 = fmul float %120, %52 ; [#uses=1]
+ %137 = fsub float %135, %136 ; [#uses=3]
+ %138 = fmul float %119, %52 ; [#uses=1]
+ %139 = fmul float %121, %57 ; [#uses=1]
+ %140 = fsub float %138, %139 ; [#uses=3]
+ %141 = fmul float %120, %57 ; [#uses=1]
+ %142 = fmul float %119, %54 ; [#uses=1]
+ %143 = fsub float %141, %142 ; [#uses=3]
+ %144 = getelementptr inbounds %struct.btQuadWord* %tmpB, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %143, float* %144, align 8
+ %145 = getelementptr inbounds %struct.btQuadWord* %tmpB, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %140, float* %145, align 4
+ %146 = getelementptr inbounds %struct.btQuadWord* %tmpB, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %137, float* %146, align 8
+ %147 = getelementptr inbounds %struct.btQuadWord* %tmpB, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %147, align 4
+ %148 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 15 ; [#uses=1]
+ %149 = load i8* %148, align 4 ; [#uses=1]
+ %toBool16.not = icmp ne i8 %149, 0 ; [#uses=1]
+ %150 = icmp eq i32 %rotAllowed, 0 ; [#uses=1]
+ %or.cond = and i1 %toBool16.not, %150 ; [#uses=1]
+ br i1 %or.cond, label %bb18, label %bb31.loopexit
+
+bb18: ; preds = %bb10
+ %151 = fmul float %130, %107 ; [#uses=2]
+ store float %151, float* %131, align 8
+ %152 = fmul float %127, %107 ; [#uses=2]
+ store float %152, float* %132, align 4
+ %153 = fmul float %124, %107 ; [#uses=2]
+ store float %153, float* %133, align 8
+ %154 = fmul float %143, %115 ; [#uses=2]
+ store float %154, float* %144, align 8
+ %155 = fmul float %140, %115 ; [#uses=2]
+ store float %155, float* %145, align 4
+ %156 = fmul float %137, %115 ; [#uses=2]
+ store float %156, float* %146, align 8
+ br label %bb31.loopexit
+
+bb25: ; preds = %bb9
+ %157 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %158 = load float* %157, align 4 ; [#uses=1]
+ %159 = fsub float %38, %158 ; [#uses=2]
+ %160 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 1 ; [#uses=2]
+ %161 = load float* %160, align 4 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %163 = load float* %162, align 4 ; [#uses=1]
+ %164 = fsub float %161, %163 ; [#uses=2]
+ %165 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 0 ; [#uses=2]
+ %166 = load float* %165, align 4 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %168 = load float* %167, align 4 ; [#uses=1]
+ %169 = fsub float %166, %168 ; [#uses=2]
+ %170 = load float* %19, align 4 ; [#uses=2]
+ %171 = fmul float %169, %170 ; [#uses=1]
+ %172 = load float* %15, align 4 ; [#uses=2]
+ %173 = fmul float %164, %172 ; [#uses=1]
+ %174 = fsub float %171, %173 ; [#uses=1]
+ %175 = fmul float %159, %172 ; [#uses=1]
+ %176 = load float* %23, align 4 ; [#uses=2]
+ %177 = fmul float %169, %176 ; [#uses=1]
+ %178 = fsub float %175, %177 ; [#uses=1]
+ %179 = fmul float %164, %176 ; [#uses=1]
+ %180 = fmul float %159, %170 ; [#uses=1]
+ %181 = fsub float %179, %180 ; [#uses=1]
+ %182 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 3 ; [#uses=3]
+ %183 = load float** %182, align 4 ; [#uses=1]
+ %184 = getelementptr inbounds float* %183, i32 %2 ; [#uses=1]
+ store float %181, float* %184, align 4
+ %185 = load float** %182, align 4 ; [#uses=1]
+ %186 = getelementptr inbounds float* %185, i32 %18 ; [#uses=1]
+ store float %178, float* %186, align 4
+ %187 = load float** %182, align 4 ; [#uses=1]
+ %188 = getelementptr inbounds float* %187, i32 %22 ; [#uses=1]
+ store float %174, float* %188, align 4
+ %189 = load float* %37, align 4 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %191 = load float* %190, align 4 ; [#uses=1]
+ %192 = fsub float %189, %191 ; [#uses=2]
+ %193 = load float* %160, align 4 ; [#uses=1]
+ %194 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %195 = load float* %194, align 4 ; [#uses=1]
+ %196 = fsub float %193, %195 ; [#uses=2]
+ %197 = load float* %165, align 4 ; [#uses=1]
+ %198 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %199 = load float* %198, align 4 ; [#uses=1]
+ %200 = fsub float %197, %199 ; [#uses=2]
+ %201 = load float* %19, align 4 ; [#uses=2]
+ %202 = fmul float %200, %201 ; [#uses=1]
+ %203 = load float* %15, align 4 ; [#uses=2]
+ %204 = fmul float %196, %203 ; [#uses=1]
+ %205 = fsub float %202, %204 ; [#uses=1]
+ %206 = fmul float %192, %203 ; [#uses=1]
+ %207 = load float* %23, align 4 ; [#uses=2]
+ %208 = fmul float %200, %207 ; [#uses=1]
+ %209 = fsub float %206, %208 ; [#uses=1]
+ %210 = fmul float %196, %207 ; [#uses=1]
+ %211 = fmul float %192, %201 ; [#uses=1]
+ %212 = fsub float %210, %211 ; [#uses=1]
+ %213 = fsub float -0.000000e+00, %205 ; [#uses=1]
+ %214 = fsub float -0.000000e+00, %209 ; [#uses=1]
+ %215 = fsub float -0.000000e+00, %212 ; [#uses=1]
+ %216 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 5 ; [#uses=3]
+ %217 = load float** %216, align 4 ; [#uses=1]
+ %218 = getelementptr inbounds float* %217, i32 %2 ; [#uses=1]
+ store float %215, float* %218, align 4
+ %219 = load float** %216, align 4 ; [#uses=1]
+ %220 = getelementptr inbounds float* %219, i32 %18 ; [#uses=1]
+ store float %214, float* %220, align 4
+ %221 = load float** %216, align 4 ; [#uses=1]
+ %222 = getelementptr inbounds float* %221, i32 %22 ; [#uses=1]
+ store float %213, float* %222, align 4
+ br label %bb31
+
+bb31.loopexit: ; preds = %bb18, %bb10
+ %223 = phi float [ %130, %bb10 ], [ %151, %bb18 ] ; [#uses=1]
+ %224 = phi float [ %127, %bb10 ], [ %152, %bb18 ] ; [#uses=1]
+ %225 = phi float [ %124, %bb10 ], [ %153, %bb18 ] ; [#uses=1]
+ %226 = phi float [ %143, %bb10 ], [ %154, %bb18 ] ; [#uses=1]
+ %227 = phi float [ %140, %bb10 ], [ %155, %bb18 ] ; [#uses=1]
+ %228 = phi float [ %137, %bb10 ], [ %156, %bb18 ] ; [#uses=1]
+ %229 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 3 ; [#uses=3]
+ %230 = load float** %229, align 4 ; [#uses=1]
+ %scevgep151 = getelementptr float* %230, i32 %2 ; [#uses=1]
+ store float %223, float* %scevgep151, align 4
+ %231 = load float** %229, align 4 ; [#uses=1]
+ %scevgep151.1 = getelementptr float* %231, i32 %18 ; [#uses=1]
+ store float %224, float* %scevgep151.1, align 4
+ %232 = load float** %229, align 4 ; [#uses=1]
+ %scevgep151.2 = getelementptr float* %232, i32 %22 ; [#uses=1]
+ store float %225, float* %scevgep151.2, align 4
+ %233 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 5 ; [#uses=3]
+ %234 = load float** %233, align 4 ; [#uses=1]
+ %235 = fsub float -0.000000e+00, %226 ; [#uses=1]
+ %scevgep147 = getelementptr float* %234, i32 %2 ; [#uses=1]
+ store float %235, float* %scevgep147, align 4
+ %236 = load float** %233, align 4 ; [#uses=1]
+ %237 = fsub float -0.000000e+00, %227 ; [#uses=1]
+ %scevgep147.1 = getelementptr float* %236, i32 %18 ; [#uses=1]
+ store float %237, float* %scevgep147.1, align 4
+ %238 = load float** %233, align 4 ; [#uses=1]
+ %239 = fsub float -0.000000e+00, %228 ; [#uses=1]
+ %scevgep147.2 = getelementptr float* %238, i32 %22 ; [#uses=1]
+ store float %239, float* %scevgep147.2, align 4
+ br label %bb31
+
+bb31: ; preds = %bb31.loopexit, %bb25, %bb7
+ %240 = icmp eq i32 %7, 0 ; [#uses=3]
+ br i1 %240, label %bb34, label %bb32
+
+bb32: ; preds = %bb31
+ %241 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 0 ; [#uses=1]
+ %242 = load float* %241, align 4 ; [#uses=1]
+ %243 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 1 ; [#uses=1]
+ %244 = load float* %243, align 4 ; [#uses=1]
+ %245 = fcmp oeq float %242, %244 ; [#uses=1]
+ br i1 %245, label %bb42.thread142, label %bb34
+
+bb42.thread142: ; preds = %bb32
+ %246 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 7 ; [#uses=1]
+ %247 = load float** %246, align 4 ; [#uses=1]
+ %248 = getelementptr inbounds float* %247, i32 %2 ; [#uses=1]
+ store float 0.000000e+00, float* %248, align 4
+ br label %bb43
+
+bb34: ; preds = %bb32, %bb31
+ %249 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 7 ; [#uses=2]
+ %250 = load float** %249, align 4 ; [#uses=1]
+ %251 = getelementptr inbounds float* %250, i32 %2 ; [#uses=1]
+ store float 0.000000e+00, float* %251, align 4
+ %252 = icmp eq i8 %4, 0 ; [#uses=1]
+ br i1 %252, label %bb42, label %bb35
+
+bb35: ; preds = %bb34
+ %253 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=1]
+ %254 = load float** %253, align 4 ; [#uses=1]
+ %255 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 7 ; [#uses=1]
+ %256 = load float* %255, align 4 ; [#uses=1]
+ %257 = getelementptr inbounds float* %254, i32 %2 ; [#uses=1]
+ store float %256, float* %257, align 4
+ br i1 %240, label %bb36, label %bb43
+
+bb36: ; preds = %bb35
+ %258 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 2 ; [#uses=2]
+ %259 = load float* %258, align 4 ; [#uses=2]
+ br i1 %10, label %bb40, label %bb42.thread
+
+bb40: ; preds = %bb36
+ %260 = fsub float -0.000000e+00, %259 ; [#uses=1]
+ br label %bb42.thread
+
+bb42.thread: ; preds = %bb40, %bb36
+ %iftmp.246.0 = phi float [ %260, %bb40 ], [ %259, %bb36 ] ; [#uses=1]
+ %261 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 0 ; [#uses=1]
+ %262 = load float* %261, align 4 ; [#uses=1]
+ %263 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 8 ; [#uses=1]
+ %264 = load float* %263, align 4 ; [#uses=1]
+ %265 = fmul float %262, %264 ; [#uses=1]
+ %266 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 1 ; [#uses=1]
+ %267 = load float* %266, align 4 ; [#uses=1]
+ %268 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 0 ; [#uses=1]
+ %269 = load float* %268, align 4 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 13 ; [#uses=1]
+ %271 = load float* %270, align 4 ; [#uses=1]
+ %272 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ %273 = call float @_ZN17btTypedConstraint14getMotorFactorEfffff(%struct.btTypedConstraint* %272, float %271, float %269, float %267, float %iftmp.246.0, float %265) ; [#uses=1]
+ %274 = load float** %249, align 4 ; [#uses=1]
+ %275 = getelementptr inbounds float* %274, i32 %2 ; [#uses=2]
+ %276 = load float* %275, align 4 ; [#uses=1]
+ %277 = load float* %258, align 4 ; [#uses=1]
+ %278 = fmul float %277, %273 ; [#uses=1]
+ %279 = fadd float %276, %278 ; [#uses=1]
+ store float %279, float* %275, align 4
+ %280 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %281 = load float** %280, align 4 ; [#uses=1]
+ %282 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 3 ; [#uses=2]
+ %283 = load float* %282, align 4 ; [#uses=1]
+ %284 = fsub float -0.000000e+00, %283 ; [#uses=1]
+ %285 = getelementptr inbounds float* %281, i32 %2 ; [#uses=1]
+ store float %284, float* %285, align 4
+ %286 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %287 = load float** %286, align 4 ; [#uses=1]
+ %288 = load float* %282, align 4 ; [#uses=1]
+ %289 = getelementptr inbounds float* %287, i32 %2 ; [#uses=1]
+ store float %288, float* %289, align 4
+ ret i32 1
+
+bb42: ; preds = %bb34
+ br i1 %240, label %bb69, label %bb43
+
+bb43: ; preds = %bb42, %bb35, %bb42.thread142
+ %290 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 0 ; [#uses=1]
+ %291 = load float* %290, align 4 ; [#uses=1]
+ %292 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 8 ; [#uses=1]
+ %293 = load float* %292, align 4 ; [#uses=1]
+ %294 = fmul float %291, %293 ; [#uses=2]
+ %295 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 7 ; [#uses=3]
+ %296 = load float** %295, align 4 ; [#uses=1]
+ %297 = getelementptr inbounds float* %296, i32 %2 ; [#uses=2]
+ %298 = load float* %297, align 4 ; [#uses=1]
+ br i1 %10, label %bb45, label %bb46
+
+bb45: ; preds = %bb43
+ %299 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 12 ; [#uses=1]
+ %300 = load float* %299, align 4 ; [#uses=1]
+ %301 = fmul float %300, %294 ; [#uses=1]
+ br label %bb47
+
+bb46: ; preds = %bb43
+ %302 = fsub float -0.000000e+00, %294 ; [#uses=1]
+ %303 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 12 ; [#uses=1]
+ %304 = load float* %303, align 4 ; [#uses=1]
+ %305 = fmul float %304, %302 ; [#uses=1]
+ br label %bb47
+
+bb47: ; preds = %bb46, %bb45
+ %.pn = phi float [ %305, %bb46 ], [ %301, %bb45 ] ; [#uses=1]
+ %storemerge = fadd float %298, %.pn ; [#uses=1]
+ store float %storemerge, float* %297, align 4
+ %306 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=1]
+ %307 = load float** %306, align 4 ; [#uses=1]
+ %308 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 9 ; [#uses=1]
+ %309 = load float* %308, align 4 ; [#uses=1]
+ %310 = getelementptr inbounds float* %307, i32 %2 ; [#uses=1]
+ store float %309, float* %310, align 4
+ %311 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 0 ; [#uses=1]
+ %312 = load float* %311, align 4 ; [#uses=1]
+ %313 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 1 ; [#uses=1]
+ %314 = load float* %313, align 4 ; [#uses=1]
+ %315 = fcmp oeq float %312, %314 ; [#uses=1]
+ br i1 %315, label %bb48, label %bb49
+
+bb48: ; preds = %bb47
+ %316 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %317 = load float** %316, align 4 ; [#uses=1]
+ %318 = getelementptr inbounds float* %317, i32 %2 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %318, align 4
+ %319 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %320 = load float** %319, align 4 ; [#uses=1]
+ %321 = getelementptr inbounds float* %320, i32 %2 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %321, align 4
+ ret i32 1
+
+bb49: ; preds = %bb47
+ %322 = icmp eq i32 %7, 1 ; [#uses=2]
+ %323 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %324 = load float** %323, align 4 ; [#uses=1]
+ %325 = getelementptr inbounds float* %324, i32 %2 ; [#uses=2]
+ br i1 %322, label %bb50, label %bb51
+
+bb50: ; preds = %bb49
+ store float 0.000000e+00, float* %325, align 4
+ %326 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %327 = load float** %326, align 4 ; [#uses=1]
+ %328 = getelementptr inbounds float* %327, i32 %2 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %328, align 4
+ br label %bb52
+
+bb51: ; preds = %bb49
+ store float 0xC7EFFFFFE0000000, float* %325, align 4
+ %329 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %330 = load float** %329, align 4 ; [#uses=1]
+ %331 = getelementptr inbounds float* %330, i32 %2 ; [#uses=1]
+ store float 0.000000e+00, float* %331, align 4
+ br label %bb52
+
+bb52: ; preds = %bb51, %bb50
+ %332 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 10 ; [#uses=1]
+ %333 = load float* %332, align 4 ; [#uses=3]
+ %334 = fcmp ogt float %333, 0.000000e+00 ; [#uses=1]
+ br i1 %334, label %bb53, label %bb69
+
+bb53: ; preds = %bb52
+ br i1 %10, label %bb56, label %bb55
+
+bb55: ; preds = %bb53
+ %335 = getelementptr inbounds %struct.btQuadWord* %angVelA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %336 = load float* %335, align 4 ; [#uses=1]
+ %337 = load float* %15, align 4 ; [#uses=2]
+ %338 = fmul float %336, %337 ; [#uses=1]
+ %339 = getelementptr inbounds %struct.btQuadWord* %angVelA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %340 = load float* %339, align 4 ; [#uses=1]
+ %341 = load float* %19, align 4 ; [#uses=2]
+ %342 = fmul float %340, %341 ; [#uses=1]
+ %343 = fadd float %338, %342 ; [#uses=1]
+ %344 = getelementptr inbounds %struct.btQuadWord* %angVelA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %345 = load float* %344, align 4 ; [#uses=1]
+ %346 = load float* %23, align 4 ; [#uses=2]
+ %347 = fmul float %345, %346 ; [#uses=1]
+ %348 = fadd float %343, %347 ; [#uses=1]
+ %349 = getelementptr inbounds %struct.btQuadWord* %angVelB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %350 = load float* %349, align 4 ; [#uses=1]
+ %351 = fmul float %350, %337 ; [#uses=1]
+ %352 = getelementptr inbounds %struct.btQuadWord* %angVelB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %353 = load float* %352, align 4 ; [#uses=1]
+ %354 = fmul float %353, %341 ; [#uses=1]
+ %355 = fadd float %351, %354 ; [#uses=1]
+ %356 = getelementptr inbounds %struct.btQuadWord* %angVelB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %357 = load float* %356, align 4 ; [#uses=1]
+ %358 = fmul float %357, %346 ; [#uses=1]
+ %359 = fadd float %355, %358 ; [#uses=1]
+ %360 = fsub float %348, %359 ; [#uses=1]
+ br label %bb57
+
+bb56: ; preds = %bb53
+ %361 = getelementptr inbounds %struct.btQuadWord* %linVelA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %362 = load float* %361, align 4 ; [#uses=1]
+ %363 = load float* %15, align 4 ; [#uses=2]
+ %364 = fmul float %362, %363 ; [#uses=1]
+ %365 = getelementptr inbounds %struct.btQuadWord* %linVelA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %366 = load float* %365, align 4 ; [#uses=1]
+ %367 = load float* %19, align 4 ; [#uses=2]
+ %368 = fmul float %366, %367 ; [#uses=1]
+ %369 = fadd float %364, %368 ; [#uses=1]
+ %370 = getelementptr inbounds %struct.btQuadWord* %linVelA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %371 = load float* %370, align 4 ; [#uses=1]
+ %372 = load float* %23, align 4 ; [#uses=2]
+ %373 = fmul float %371, %372 ; [#uses=1]
+ %374 = fadd float %369, %373 ; [#uses=1]
+ %375 = getelementptr inbounds %struct.btQuadWord* %linVelB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %376 = load float* %375, align 4 ; [#uses=1]
+ %377 = fmul float %376, %363 ; [#uses=1]
+ %378 = getelementptr inbounds %struct.btQuadWord* %linVelB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %379 = load float* %378, align 4 ; [#uses=1]
+ %380 = fmul float %379, %367 ; [#uses=1]
+ %381 = fadd float %377, %380 ; [#uses=1]
+ %382 = getelementptr inbounds %struct.btQuadWord* %linVelB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %383 = load float* %382, align 4 ; [#uses=1]
+ %384 = fmul float %383, %372 ; [#uses=1]
+ %385 = fadd float %381, %384 ; [#uses=1]
+ %386 = fsub float %374, %385 ; [#uses=1]
+ br label %bb57
+
+bb57: ; preds = %bb56, %bb55
+ %vel.0 = phi float [ %360, %bb55 ], [ %386, %bb56 ] ; [#uses=4]
+ br i1 %322, label %bb58, label %bb62
+
+bb58: ; preds = %bb57
+ %387 = fcmp olt float %vel.0, 0.000000e+00 ; [#uses=1]
+ br i1 %387, label %bb59, label %bb69
+
+bb59: ; preds = %bb58
+ %388 = fsub float -0.000000e+00, %333 ; [#uses=1]
+ %389 = fmul float %vel.0, %388 ; [#uses=2]
+ %390 = load float** %295, align 4 ; [#uses=1]
+ %391 = getelementptr inbounds float* %390, i32 %2 ; [#uses=2]
+ %392 = load float* %391, align 4 ; [#uses=1]
+ %393 = fcmp olt float %392, %389 ; [#uses=1]
+ br i1 %393, label %bb61, label %bb69
+
+bb61: ; preds = %bb59
+ store float %389, float* %391, align 4
+ ret i32 1
+
+bb62: ; preds = %bb57
+ %394 = fcmp ogt float %vel.0, 0.000000e+00 ; [#uses=1]
+ br i1 %394, label %bb63, label %bb69
+
+bb63: ; preds = %bb62
+ %395 = fsub float -0.000000e+00, %333 ; [#uses=1]
+ %396 = fmul float %vel.0, %395 ; [#uses=2]
+ %397 = load float** %295, align 4 ; [#uses=1]
+ %398 = getelementptr inbounds float* %397, i32 %2 ; [#uses=2]
+ %399 = load float* %398, align 4 ; [#uses=1]
+ %400 = fcmp ogt float %399, %396 ; [#uses=1]
+ br i1 %400, label %bb66, label %bb69
+
+bb66: ; preds = %bb63
+ store float %396, float* %398, align 4
+ ret i32 1
+
+bb69: ; preds = %bb63, %bb62, %bb59, %bb58, %bb52, %bb42, %entry
+ %.0 = phi i32 [ 1, %bb42 ], [ 1, %bb63 ], [ 1, %bb62 ], [ 1, %bb59 ], [ 1, %bb58 ], [ 1, %bb52 ], [ 0, %entry ] ; [#uses=1]
+ ret i32 %.0
+}
+
+; [#uses=4]
+define i32 @_ZN23btGeneric6DofConstraint16setAngularLimitsEPN17btTypedConstraint17btConstraintInfo2EiRK11btTransformS5_RK9btVector3S8_S8_S8_(%struct.btGeneric6DofConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 %row_offset, %struct.btTransform* nocapture %transA, %struct.btTransform* nocapture %transB, %struct.btQuadWord* nocapture %linVelA, %struct.btQuadWord* nocapture %linVelB, %struct.btQuadWord* nocapture %angVelA, %struct.btQuadWord* nocapture %angVelB) align 2 {
+bb.nph:
+ %axis = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 1 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 3 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ %5 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=2]
+ %6 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb12, %bb.nph
+ %i.017 = phi i32 [ 0, %bb.nph ], [ %28, %bb12 ] ; [#uses=12]
+ %row.116 = phi i32 [ %row_offset, %bb.nph ], [ %row.0, %bb12 ] ; [#uses=3]
+ %scevgep = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.017, i32 8 ; [#uses=1]
+ %scevgep18 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.017, i32 9 ; [#uses=1]
+ %scevgep19 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.017, i32 7 ; [#uses=1]
+ %scevgep20 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.017 ; [#uses=1]
+ %scevgep2122 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 %i.017, i32 0, i32 0 ; [#uses=1]
+ %scevgep23 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 %i.017, i32 0, i32 1 ; [#uses=1]
+ %scevgep24 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 %i.017, i32 0, i32 2 ; [#uses=1]
+ %scevgep25 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 %i.017, i32 0, i32 3 ; [#uses=1]
+ %scevgep26 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.017, i32 14 ; [#uses=1]
+ %tmp = mul i32 %i.017, 3 ; [#uses=1]
+ %tmp28 = add i32 %tmp, 9 ; [#uses=1]
+ %7 = load i32* %scevgep26, align 4 ; [#uses=1]
+ %8 = icmp eq i32 %7, 0 ; [#uses=1]
+ br i1 %8, label %_ZN22btRotationalLimitMotor16needApplyTorquesEv.exit, label %bb1
+
+_ZN22btRotationalLimitMotor16needApplyTorquesEv.exit: ; preds = %bb
+ %scevgep27 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.017, i32 11 ; [#uses=1]
+ %9 = load i8* %scevgep27, align 4 ; [#uses=1]
+ %phitmp = icmp eq i8 %9, 0 ; [#uses=1]
+ br i1 %phitmp, label %bb12, label %bb1
+
+bb1: ; preds = %_ZN22btRotationalLimitMotor16needApplyTorquesEv.exit, %bb
+ %10 = load float* %scevgep2122, align 4 ; [#uses=1]
+ store float %10, float* %0, align 8
+ %11 = load float* %scevgep23, align 4 ; [#uses=1]
+ store float %11, float* %1, align 4
+ %12 = load float* %scevgep24, align 4 ; [#uses=1]
+ store float %12, float* %2, align 8
+ %13 = load float* %scevgep25, align 4 ; [#uses=1]
+ store float %13, float* %3, align 4
+ %14 = load i32* %4, align 4 ; [#uses=1]
+ %15 = ashr i32 %14, %tmp28 ; [#uses=3]
+ %16 = and i32 %15, 1 ; [#uses=1]
+ %toBool5 = icmp eq i32 %16, 0 ; [#uses=1]
+ br i1 %toBool5, label %bb6, label %bb7
+
+bb6: ; preds = %bb1
+ %17 = load float** %5, align 4 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %scevgep19, align 4
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb1
+ %19 = and i32 %15, 2 ; [#uses=1]
+ %20 = icmp eq i32 %19, 0 ; [#uses=1]
+ br i1 %20, label %bb8, label %bb9
+
+bb8: ; preds = %bb7
+ %21 = load float** %5, align 4 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %scevgep18, align 4
+ br label %bb9
+
+bb9: ; preds = %bb8, %bb7
+ %23 = and i32 %15, 4 ; [#uses=1]
+ %24 = icmp eq i32 %23, 0 ; [#uses=1]
+ br i1 %24, label %bb10, label %bb11
+
+bb10: ; preds = %bb9
+ %25 = load float* %6, align 4 ; [#uses=1]
+ store float %25, float* %scevgep, align 4
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb9
+ %26 = call i32 @_ZN23btGeneric6DofConstraint21get_limit_motor_info2EP22btRotationalLimitMotorRK11btTransformS4_RK9btVector3S7_S7_S7_PN17btTypedConstraint17btConstraintInfo2EiRS5_ii(%struct.btGeneric6DofConstraint* %this, %struct.btRotationalLimitMotor* %scevgep20, %struct.btTransform* %transA, %struct.btTransform* %transB, %struct.btQuadWord* %linVelA, %struct.btQuadWord* %linVelB, %struct.btQuadWord* %angVelA, %struct.btQuadWord* %angVelB, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 %row.116, %struct.btQuadWord* %axis, i32 1, i32 0) ; [#uses=1]
+ %27 = add nsw i32 %26, %row.116 ; [#uses=1]
+ br label %bb12
+
+bb12: ; preds = %bb11, %_ZN22btRotationalLimitMotor16needApplyTorquesEv.exit
+ %row.0 = phi i32 [ %27, %bb11 ], [ %row.116, %_ZN22btRotationalLimitMotor16needApplyTorquesEv.exit ] ; [#uses=2]
+ %28 = add nsw i32 %i.017, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %28, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb14, label %bb
+
+bb14: ; preds = %bb12
+ ret i32 %row.0
+}
+
+; [#uses=4]
+define i32 @_ZN23btGeneric6DofConstraint15setLinearLimitsEPN17btTypedConstraint17btConstraintInfo2EiRK11btTransformS5_RK9btVector3S8_S8_S8_(%struct.btGeneric6DofConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 %row, %struct.btTransform* nocapture %transA, %struct.btTransform* nocapture %transB, %struct.btQuadWord* nocapture %linVelA, %struct.btQuadWord* nocapture %linVelB, %struct.btQuadWord* nocapture %angVelA, %struct.btQuadWord* nocapture %angVelB) align 2 {
+bb.nph:
+ %limot = alloca %struct.btRotationalLimitMotor, align 8 ; [#uses=18]
+ %axis = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %0 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 15 ; [#uses=1]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %1, align 8
+ %2 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 3 ; [#uses=2]
+ store float 0x3FB99999A0000000, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 4 ; [#uses=2]
+ store float 3.000000e+02, float* %3, align 8
+ %4 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 0 ; [#uses=2]
+ store float 1.000000e+00, float* %4, align 8
+ %5 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 1 ; [#uses=2]
+ store float -1.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 7 ; [#uses=2]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 8 ; [#uses=2]
+ store float 0x3FC99999A0000000, float* %7, align 8
+ %8 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 9 ; [#uses=2]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 10 ; [#uses=2]
+ store float 0.000000e+00, float* %9, align 8
+ %10 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 5 ; [#uses=2]
+ store float 1.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 6 ; [#uses=2]
+ store float 5.000000e-01, float* %11, align 8
+ %12 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 14 ; [#uses=2]
+ store i32 0, i32* %12, align 8
+ %13 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 12 ; [#uses=2]
+ store float 0.000000e+00, float* %13, align 8
+ %14 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 11 ; [#uses=2]
+ store i8 0, i8* %14, align 4
+ %15 = getelementptr inbounds %struct.btRotationalLimitMotor* %limot, i32 0, i32 13 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 0 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ %23 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=2]
+ %24 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 1 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb18, %bb.nph
+ %i.023 = phi i32 [ 0, %bb.nph ], [ %62, %bb18 ] ; [#uses=18]
+ %row_addr.122 = phi i32 [ %row, %bb.nph ], [ %row_addr.0, %bb18 ] ; [#uses=5]
+ %scevgep = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 14, i32 %i.023 ; [#uses=1]
+ %scevgep25 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 9, i32 %i.023 ; [#uses=1]
+ %scevgep26 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 13, i32 0, i32 %i.023 ; [#uses=1]
+ %scevgep27 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 12, i32 0, i32 %i.023 ; [#uses=1]
+ %scevgep28 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 1, i32 0, i32 %i.023 ; [#uses=1]
+ %scevgep29 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 0, i32 0, i32 %i.023 ; [#uses=1]
+ %scevgep30 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 11, i32 0, i32 %i.023 ; [#uses=1]
+ %scevgep31 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 10, i32 0, i32 %i.023 ; [#uses=1]
+ %scevgep32 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 2, i32 0, i32 %i.023 ; [#uses=1]
+ %scevgep33 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 1, i32 0, i32 %i.023 ; [#uses=1]
+ %scevgep34 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 %i.023 ; [#uses=1]
+ %scevgep35 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 6, i32 0, i32 %i.023 ; [#uses=1]
+ %scevgep36 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 8, i32 0, i32 %i.023 ; [#uses=1]
+ %scevgep37 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 7, i32 0, i32 %i.023 ; [#uses=1]
+ %tmp38 = mul i32 %i.023, 3 ; [#uses=1]
+ %tmp39 = add i32 %i.023, 2 ; [#uses=1]
+ %26 = load i32* %scevgep, align 4 ; [#uses=2]
+ %27 = icmp eq i32 %26, 0 ; [#uses=1]
+ %28 = load i8* %scevgep25, align 1 ; [#uses=2]
+ %phitmp = icmp eq i8 %28, 0 ; [#uses=1]
+ %or.cond = and i1 %27, %phitmp ; [#uses=1]
+ br i1 %or.cond, label %bb18, label %bb1
+
+bb1: ; preds = %bb
+ store float 0.000000e+00, float* %9, align 8
+ store i32 %26, i32* %12, align 8
+ %29 = load float* %scevgep26, align 4 ; [#uses=1]
+ store float %29, float* %15, align 4
+ %30 = load float* %scevgep27, align 4 ; [#uses=1]
+ store float %30, float* %13, align 8
+ %31 = load float* %16, align 4 ; [#uses=1]
+ store float %31, float* %10, align 4
+ store i8 %28, i8* %14, align 4
+ %32 = load float* %scevgep28, align 4 ; [#uses=1]
+ store float %32, float* %5, align 4
+ %33 = load float* %17, align 4 ; [#uses=1]
+ store float %33, float* %11, align 8
+ %34 = load float* %scevgep29, align 4 ; [#uses=1]
+ store float %34, float* %4, align 8
+ store float 0.000000e+00, float* %3, align 8
+ %35 = load float* %scevgep30, align 4 ; [#uses=1]
+ store float %35, float* %2, align 4
+ %36 = load float* %scevgep31, align 4 ; [#uses=1]
+ store float %36, float* %1, align 8
+ %37 = load float* %scevgep34, align 4 ; [#uses=1]
+ store float %37, float* %18, align 8
+ %38 = load float* %scevgep33, align 4 ; [#uses=1]
+ store float %38, float* %19, align 4
+ %39 = load float* %scevgep32, align 4 ; [#uses=1]
+ store float %39, float* %20, align 8
+ store float 0.000000e+00, float* %21, align 4
+ %40 = load i32* %22, align 4 ; [#uses=1]
+ %41 = ashr i32 %40, %tmp38 ; [#uses=3]
+ %42 = and i32 %41, 1 ; [#uses=1]
+ %toBool2 = icmp eq i32 %42, 0 ; [#uses=1]
+ br i1 %toBool2, label %bb4, label %bb5
+
+bb4: ; preds = %bb1
+ %43 = load float** %23, align 4 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb1
+ %iftmp.233.0.in = phi float* [ %43, %bb4 ], [ %scevgep35, %bb1 ] ; [#uses=1]
+ %iftmp.233.0 = load float* %iftmp.233.0.in, align 4 ; [#uses=1]
+ store float %iftmp.233.0, float* %6, align 4
+ %44 = and i32 %41, 2 ; [#uses=1]
+ %45 = icmp eq i32 %44, 0 ; [#uses=1]
+ br i1 %45, label %bb7, label %bb8
+
+bb7: ; preds = %bb5
+ %46 = load float** %23, align 4 ; [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb5
+ %iftmp.234.0.in = phi float* [ %46, %bb7 ], [ %scevgep36, %bb5 ] ; [#uses=1]
+ %iftmp.234.0 = load float* %iftmp.234.0.in, align 4 ; [#uses=1]
+ store float %iftmp.234.0, float* %8, align 4
+ %47 = and i32 %41, 4 ; [#uses=1]
+ %48 = icmp eq i32 %47, 0 ; [#uses=1]
+ %iftmp.235.0.in = select i1 %48, float* %24, float* %scevgep37 ; [#uses=1]
+ %iftmp.235.0 = load float* %iftmp.235.0.in, align 4 ; [#uses=1]
+ store float %iftmp.235.0, float* %7, align 8
+ %49 = load i8* %25, align 1 ; [#uses=1]
+ %toBool12 = icmp eq i8 %49, 0 ; [#uses=1]
+ br i1 %toBool12, label %bb17, label %bb13
+
+bb13: ; preds = %bb8
+ %50 = add nsw i32 %i.023, 1 ; [#uses=2]
+ %tmp = icmp eq i32 %50, 3 ; [#uses=1]
+ %tmp24 = select i1 %tmp, i32 0, i32 %50 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %tmp24, i32 14 ; [#uses=1]
+ %52 = load i32* %51, align 4 ; [#uses=1]
+ %53 = icmp eq i32 %52, 0 ; [#uses=1]
+ br i1 %53, label %bb16, label %bb14
+
+bb14: ; preds = %bb13
+ %54 = srem i32 %tmp39, 3 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %54, i32 14 ; [#uses=1]
+ %56 = load i32* %55, align 4 ; [#uses=1]
+ %57 = icmp eq i32 %56, 0 ; [#uses=1]
+ br i1 %57, label %bb16, label %bb15
+
+bb15: ; preds = %bb14
+ br label %bb16
+
+bb16: ; preds = %bb15, %bb14, %bb13
+ %rotAllowed.0 = phi i32 [ 0, %bb15 ], [ 1, %bb14 ], [ 1, %bb13 ] ; [#uses=1]
+ %58 = call i32 @_ZN23btGeneric6DofConstraint21get_limit_motor_info2EP22btRotationalLimitMotorRK11btTransformS4_RK9btVector3S7_S7_S7_PN17btTypedConstraint17btConstraintInfo2EiRS5_ii(%struct.btGeneric6DofConstraint* %this, %struct.btRotationalLimitMotor* %limot, %struct.btTransform* %transA, %struct.btTransform* %transB, %struct.btQuadWord* %linVelA, %struct.btQuadWord* %linVelB, %struct.btQuadWord* %angVelA, %struct.btQuadWord* %angVelB, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 %row_addr.122, %struct.btQuadWord* %axis, i32 0, i32 %rotAllowed.0) ; [#uses=1]
+ %59 = add nsw i32 %58, %row_addr.122 ; [#uses=1]
+ br label %bb18
+
+bb17: ; preds = %bb8
+ %60 = call i32 @_ZN23btGeneric6DofConstraint21get_limit_motor_info2EP22btRotationalLimitMotorRK11btTransformS4_RK9btVector3S7_S7_S7_PN17btTypedConstraint17btConstraintInfo2EiRS5_ii(%struct.btGeneric6DofConstraint* %this, %struct.btRotationalLimitMotor* %limot, %struct.btTransform* %transA, %struct.btTransform* %transB, %struct.btQuadWord* %linVelA, %struct.btQuadWord* %linVelB, %struct.btQuadWord* %angVelA, %struct.btQuadWord* %angVelB, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 %row_addr.122, %struct.btQuadWord* %axis, i32 0, i32 0) ; [#uses=1]
+ %61 = add nsw i32 %60, %row_addr.122 ; [#uses=1]
+ br label %bb18
+
+bb18: ; preds = %bb17, %bb16, %bb
+ %row_addr.0 = phi i32 [ %59, %bb16 ], [ %61, %bb17 ], [ %row_addr.122, %bb ] ; [#uses=2]
+ %62 = add nsw i32 %i.023, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %62, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb20, label %bb
+
+bb20: ; preds = %bb18
+ ret i32 %row_addr.0
+}
+
+; [#uses=8]
+declare float @fmodf(float, float) nounwind readonly
+
+; [#uses=9]
+define linkonce_odr float @_Z21btAdjustAngleToLimitsfff(float %angleInRadians, float %angleLowerLimitInRadians, float %angleUpperLimitInRadians) nounwind readonly inlinehint {
+entry:
+ %0 = fcmp ult float %angleLowerLimitInRadians, %angleUpperLimitInRadians ; [#uses=1]
+ br i1 %0, label %bb1, label %bb14
+
+bb1: ; preds = %entry
+ %1 = fcmp olt float %angleInRadians, %angleLowerLimitInRadians ; [#uses=1]
+ br i1 %1, label %bb2, label %bb6
+
+bb2: ; preds = %bb1
+ %2 = fsub float %angleLowerLimitInRadians, %angleInRadians ; [#uses=1]
+ %3 = tail call float @fmodf(float %2, float 0x401921FB60000000) nounwind readonly ; [#uses=5]
+ %4 = fcmp olt float %3, 0xC00921FB60000000 ; [#uses=1]
+ br i1 %4, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb2
+ %5 = fadd float %3, 0x401921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit
+
+bb1.i: ; preds = %bb2
+ %6 = fcmp ogt float %3, 0x400921FB60000000 ; [#uses=1]
+ br i1 %6, label %bb2.i, label %_Z16btNormalizeAnglef.exit
+
+bb2.i: ; preds = %bb1.i
+ %7 = fadd float %3, 0xC01921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit
+
+_Z16btNormalizeAnglef.exit: ; preds = %bb2.i, %bb1.i, %bb.i
+ %8 = phi float [ %7, %bb2.i ], [ %5, %bb.i ], [ %3, %bb1.i ] ; [#uses=1]
+ %9 = tail call float @fabsf(float %8) nounwind readnone ; [#uses=1]
+ %10 = fsub float %angleUpperLimitInRadians, %angleInRadians ; [#uses=1]
+ %11 = tail call float @fmodf(float %10, float 0x401921FB60000000) nounwind readonly ; [#uses=5]
+ %12 = fcmp olt float %11, 0xC00921FB60000000 ; [#uses=1]
+ br i1 %12, label %bb.i16, label %bb1.i17
+
+bb.i16: ; preds = %_Z16btNormalizeAnglef.exit
+ %13 = fadd float %11, 0x401921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit20
+
+bb1.i17: ; preds = %_Z16btNormalizeAnglef.exit
+ %14 = fcmp ogt float %11, 0x400921FB60000000 ; [#uses=1]
+ br i1 %14, label %bb2.i18, label %_Z16btNormalizeAnglef.exit20
+
+bb2.i18: ; preds = %bb1.i17
+ %15 = fadd float %11, 0xC01921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit20
+
+_Z16btNormalizeAnglef.exit20: ; preds = %bb2.i18, %bb1.i17, %bb.i16
+ %16 = phi float [ %15, %bb2.i18 ], [ %13, %bb.i16 ], [ %11, %bb1.i17 ] ; [#uses=1]
+ %17 = tail call float @fabsf(float %16) nounwind readnone ; [#uses=1]
+ %18 = fcmp uge float %9, %17 ; [#uses=1]
+ br i1 %18, label %bb3, label %bb14
+
+bb3: ; preds = %_Z16btNormalizeAnglef.exit20
+ %19 = fadd float %angleInRadians, 0x401921FB60000000 ; [#uses=1]
+ ret float %19
+
+bb6: ; preds = %bb1
+ %20 = fcmp ogt float %angleInRadians, %angleUpperLimitInRadians ; [#uses=1]
+ br i1 %20, label %bb7, label %bb14
+
+bb7: ; preds = %bb6
+ %21 = fsub float %angleInRadians, %angleUpperLimitInRadians ; [#uses=1]
+ %22 = tail call float @fmodf(float %21, float 0x401921FB60000000) nounwind readonly ; [#uses=5]
+ %23 = fcmp olt float %22, 0xC00921FB60000000 ; [#uses=1]
+ br i1 %23, label %bb.i21, label %bb1.i22
+
+bb.i21: ; preds = %bb7
+ %24 = fadd float %22, 0x401921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit25
+
+bb1.i22: ; preds = %bb7
+ %25 = fcmp ogt float %22, 0x400921FB60000000 ; [#uses=1]
+ br i1 %25, label %bb2.i23, label %_Z16btNormalizeAnglef.exit25
+
+bb2.i23: ; preds = %bb1.i22
+ %26 = fadd float %22, 0xC01921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit25
+
+_Z16btNormalizeAnglef.exit25: ; preds = %bb2.i23, %bb1.i22, %bb.i21
+ %27 = phi float [ %26, %bb2.i23 ], [ %24, %bb.i21 ], [ %22, %bb1.i22 ] ; [#uses=1]
+ %28 = tail call float @fabsf(float %27) nounwind readnone ; [#uses=1]
+ %29 = fsub float %angleInRadians, %angleLowerLimitInRadians ; [#uses=1]
+ %30 = tail call float @fmodf(float %29, float 0x401921FB60000000) nounwind readonly ; [#uses=5]
+ %31 = fcmp olt float %30, 0xC00921FB60000000 ; [#uses=1]
+ br i1 %31, label %bb.i26, label %bb1.i27
+
+bb.i26: ; preds = %_Z16btNormalizeAnglef.exit25
+ %32 = fadd float %30, 0x401921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit30
+
+bb1.i27: ; preds = %_Z16btNormalizeAnglef.exit25
+ %33 = fcmp ogt float %30, 0x400921FB60000000 ; [#uses=1]
+ br i1 %33, label %bb2.i28, label %_Z16btNormalizeAnglef.exit30
+
+bb2.i28: ; preds = %bb1.i27
+ %34 = fadd float %30, 0xC01921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit30
+
+_Z16btNormalizeAnglef.exit30: ; preds = %bb2.i28, %bb1.i27, %bb.i26
+ %35 = phi float [ %34, %bb2.i28 ], [ %32, %bb.i26 ], [ %30, %bb1.i27 ] ; [#uses=1]
+ %36 = tail call float @fabsf(float %35) nounwind readnone ; [#uses=1]
+ %37 = fcmp olt float %36, %28 ; [#uses=1]
+ br i1 %37, label %bb10, label %bb14
+
+bb10: ; preds = %_Z16btNormalizeAnglef.exit30
+ %38 = fadd float %angleInRadians, 0xC01921FB60000000 ; [#uses=1]
+ ret float %38
+
+bb14: ; preds = %_Z16btNormalizeAnglef.exit30, %bb6, %_Z16btNormalizeAnglef.exit20, %entry
+ ret float %angleInRadians
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi(%struct.btGeneric6DofConstraint* nocapture %this, i32 %axis_index) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 10, i32 0, i32 %axis_index ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %axis_index, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %axis_index, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=4]
+ %6 = tail call float @_Z21btAdjustAngleToLimitsfff(float %1, float %5, float %3) nounwind ; [#uses=5]
+ %7 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %axis_index, i32 13 ; [#uses=1]
+ store float %6, float* %7, align 4
+ %8 = fcmp ogt float %5, %3 ; [#uses=1]
+ br i1 %8, label %bb.i3, label %bb1.i
+
+bb.i3: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %axis_index, i32 14 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ br label %bb.i
+
+bb1.i: ; preds = %entry
+ %10 = fcmp ogt float %5, %6 ; [#uses=1]
+ br i1 %10, label %bb2.i, label %bb3.i
+
+bb2.i: ; preds = %bb1.i
+ %11 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %axis_index, i32 14 ; [#uses=1]
+ store i32 1, i32* %11, align 4
+ %12 = fsub float %6, %5 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %axis_index, i32 12 ; [#uses=1]
+ store float %12, float* %13, align 4
+ ret i8 1
+
+bb3.i: ; preds = %bb1.i
+ %14 = fcmp olt float %3, %6 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %axis_index, i32 14 ; [#uses=2]
+ br i1 %14, label %bb4.i, label %bb5.i4
+
+bb4.i: ; preds = %bb3.i
+ store i32 2, i32* %15, align 4
+ %16 = fsub float %6, %3 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %axis_index, i32 12 ; [#uses=1]
+ store float %16, float* %17, align 4
+ ret i8 1
+
+bb5.i4: ; preds = %bb3.i
+ store i32 0, i32* %15, align 4
+ br label %bb.i
+
+bb.i: ; preds = %bb5.i4, %bb.i3
+ %18 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %axis_index, i32 11 ; [#uses=1]
+ %19 = load i8* %18, align 4 ; [#uses=1]
+ %not.toBoolnot.i = icmp ne i8 %19, 0 ; [#uses=1]
+ %retval.i = zext i1 %not.toBoolnot.i to i8 ; [#uses=1]
+ ret i8 %retval.i
+}
+
+; [#uses=1]
+declare float @asinf(float) nounwind readonly
+
+; [#uses=1]
+define zeroext i8 @_Z16matrixToEulerXYZRK11btMatrix3x3R9btVector3(%struct.btMatrix3x3* nocapture %mat, %struct.btQuadWord* nocapture %xyz) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btMatrix3x3* %mat, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = fcmp olt float %1, 1.000000e+00 ; [#uses=1]
+ br i1 %2, label %bb, label %bb3
+
+bb: ; preds = %entry
+ %3 = fcmp ogt float %1, -1.000000e+00 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %xyz, i32 0, i32 0, i32 0 ; [#uses=2]
+ br i1 %3, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %5 = getelementptr inbounds %struct.btMatrix3x3* %mat, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btMatrix3x3* %mat, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fsub float -0.000000e+00, %8 ; [#uses=1]
+ %10 = tail call float @atan2f(float %9, float %6) nounwind readonly ; [#uses=1]
+ store float %10, float* %4, align 4
+ %11 = load float* %0, align 4 ; [#uses=2]
+ %12 = fcmp olt float %11, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i = select i1 %12, float -1.000000e+00, float %11 ; [#uses=2]
+ %13 = fcmp ogt float %x_addr.0.i, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i = select i1 %13, float 1.000000e+00, float %x_addr.0.i ; [#uses=1]
+ %14 = tail call float @asinf(float %x_addr.1.i) nounwind readonly ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %xyz, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %14, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btMatrix3x3* %mat, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btMatrix3x3* %mat, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fsub float -0.000000e+00, %19 ; [#uses=1]
+ %21 = tail call float @atan2f(float %20, float %17) nounwind readonly ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %xyz, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %21, float* %22, align 4
+ ret i8 1
+
+bb2: ; preds = %bb
+ %23 = getelementptr inbounds %struct.btMatrix3x3* %mat, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btMatrix3x3* %mat, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = tail call float @atan2f(float %26, float %24) nounwind readonly ; [#uses=1]
+ %28 = fsub float -0.000000e+00, %27 ; [#uses=1]
+ store float %28, float* %4, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %xyz, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0xBFF921FB60000000, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btQuadWord* %xyz, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ ret i8 0
+
+bb3: ; preds = %entry
+ %31 = getelementptr inbounds %struct.btQuadWord* %xyz, i32 0, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btMatrix3x3* %mat, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btMatrix3x3* %mat, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = tail call float @atan2f(float %35, float %33) nounwind readonly ; [#uses=1]
+ store float %36, float* %31, align 4
+ %37 = getelementptr inbounds %struct.btQuadWord* %xyz, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0x3FF921FB60000000, float* %37, align 4
+ %38 = getelementptr inbounds %struct.btQuadWord* %xyz, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %38, align 4
+ ret i8 0
+}
+
+; [#uses=1]
+define void @_ZN23btGeneric6DofConstraint18calculateAngleInfoEv(%struct.btGeneric6DofConstraint* %this) nounwind align 2 {
+entry:
+ %relative_frame = alloca %struct.btMatrix3x3, align 8 ; [#uses=13]
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=4]
+ %2 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=4]
+ %7 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=4]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fsub float %4, %9 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=4]
+ %13 = fmul float %12, %8 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %15 = load float* %14, align 4 ; [#uses=4]
+ %16 = fmul float %1, %15 ; [#uses=1]
+ %17 = fsub float %13, %16 ; [#uses=2]
+ %18 = fmul float %6, %15 ; [#uses=1]
+ %19 = fmul float %12, %3 ; [#uses=1]
+ %20 = fsub float %18, %19 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=5]
+ %23 = fmul float %22, %20 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=5]
+ %26 = fmul float %25, %17 ; [#uses=1]
+ %27 = fadd float %23, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %29 = load float* %28, align 4 ; [#uses=5]
+ %30 = fmul float %29, %10 ; [#uses=1]
+ %31 = fadd float %27, %30 ; [#uses=1]
+ %32 = fdiv float 1.000000e+00, %31 ; [#uses=9]
+ %33 = fmul float %22, %6 ; [#uses=1]
+ %34 = fmul float %25, %1 ; [#uses=1]
+ %35 = fsub float %33, %34 ; [#uses=1]
+ %36 = fmul float %35, %32 ; [#uses=3]
+ %37 = fmul float %25, %8 ; [#uses=1]
+ %38 = fmul float %22, %3 ; [#uses=1]
+ %39 = fsub float %37, %38 ; [#uses=1]
+ %40 = fmul float %39, %32 ; [#uses=3]
+ %41 = fmul float %10, %32 ; [#uses=3]
+ %42 = fmul float %29, %1 ; [#uses=1]
+ %43 = fmul float %22, %12 ; [#uses=1]
+ %44 = fsub float %42, %43 ; [#uses=1]
+ %45 = fmul float %44, %32 ; [#uses=3]
+ %46 = fmul float %22, %15 ; [#uses=1]
+ %47 = fmul float %29, %8 ; [#uses=1]
+ %48 = fsub float %46, %47 ; [#uses=1]
+ %49 = fmul float %48, %32 ; [#uses=3]
+ %50 = fmul float %17, %32 ; [#uses=3]
+ %51 = fmul float %25, %12 ; [#uses=1]
+ %52 = fmul float %29, %6 ; [#uses=1]
+ %53 = fsub float %51, %52 ; [#uses=1]
+ %54 = fmul float %53, %32 ; [#uses=3]
+ %55 = fmul float %29, %3 ; [#uses=1]
+ %56 = fmul float %25, %15 ; [#uses=1]
+ %57 = fsub float %55, %56 ; [#uses=1]
+ %58 = fmul float %57, %32 ; [#uses=3]
+ %59 = fmul float %20, %32 ; [#uses=3]
+ %60 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=3]
+ %62 = fmul float %61, %41 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=3]
+ %65 = fmul float %64, %40 ; [#uses=1]
+ %66 = fadd float %62, %65 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=3]
+ %69 = fmul float %68, %36 ; [#uses=1]
+ %70 = fadd float %66, %69 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=3]
+ %73 = fmul float %72, %41 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=3]
+ %76 = fmul float %75, %40 ; [#uses=1]
+ %77 = fadd float %73, %76 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=3]
+ %80 = fmul float %79, %36 ; [#uses=1]
+ %81 = fadd float %77, %80 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %83 = load float* %82, align 4 ; [#uses=3]
+ %84 = fmul float %83, %41 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %86 = load float* %85, align 4 ; [#uses=3]
+ %87 = fmul float %86, %40 ; [#uses=1]
+ %88 = fadd float %84, %87 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %90 = load float* %89, align 4 ; [#uses=3]
+ %91 = fmul float %90, %36 ; [#uses=1]
+ %92 = fadd float %88, %91 ; [#uses=1]
+ %93 = fmul float %61, %50 ; [#uses=1]
+ %94 = fmul float %64, %49 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %68, %45 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %72, %50 ; [#uses=1]
+ %99 = fmul float %75, %49 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %79, %45 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fmul float %83, %50 ; [#uses=1]
+ %104 = fmul float %86, %49 ; [#uses=1]
+ %105 = fadd float %103, %104 ; [#uses=1]
+ %106 = fmul float %90, %45 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = fmul float %61, %59 ; [#uses=1]
+ %109 = fmul float %64, %58 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = fmul float %68, %54 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=1]
+ %113 = fmul float %72, %59 ; [#uses=1]
+ %114 = fmul float %75, %58 ; [#uses=1]
+ %115 = fadd float %113, %114 ; [#uses=1]
+ %116 = fmul float %79, %54 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=1]
+ %118 = fmul float %83, %59 ; [#uses=1]
+ %119 = fmul float %86, %58 ; [#uses=1]
+ %120 = fadd float %118, %119 ; [#uses=1]
+ %121 = fmul float %90, %54 ; [#uses=1]
+ %122 = fadd float %120, %121 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btMatrix3x3* %relative_frame, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %122, float* %123, align 8
+ %124 = getelementptr inbounds %struct.btMatrix3x3* %relative_frame, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %117, float* %124, align 4
+ %125 = getelementptr inbounds %struct.btMatrix3x3* %relative_frame, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %112, float* %125, align 8
+ %126 = getelementptr inbounds %struct.btMatrix3x3* %relative_frame, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btMatrix3x3* %relative_frame, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %107, float* %127, align 8
+ %128 = getelementptr inbounds %struct.btMatrix3x3* %relative_frame, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %102, float* %128, align 4
+ %129 = getelementptr inbounds %struct.btMatrix3x3* %relative_frame, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %97, float* %129, align 8
+ %130 = getelementptr inbounds %struct.btMatrix3x3* %relative_frame, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %130, align 4
+ %131 = getelementptr inbounds %struct.btMatrix3x3* %relative_frame, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %92, float* %131, align 8
+ %132 = getelementptr inbounds %struct.btMatrix3x3* %relative_frame, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %81, float* %132, align 4
+ %133 = getelementptr inbounds %struct.btMatrix3x3* %relative_frame, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %70, float* %133, align 8
+ %134 = getelementptr inbounds %struct.btMatrix3x3* %relative_frame, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %134, align 4
+ %135 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %136 = call zeroext i8 @_Z16matrixToEulerXYZRK11btMatrix3x3R9btVector3(%struct.btMatrix3x3* %relative_frame, %struct.btQuadWord* %135) nounwind ; [#uses=0]
+ %137 = load float* %82, align 4 ; [#uses=4]
+ %138 = load float* %85, align 4 ; [#uses=4]
+ %139 = load float* %89, align 4 ; [#uses=4]
+ %140 = load float* %28, align 4 ; [#uses=4]
+ %141 = load float* %11, align 4 ; [#uses=4]
+ %142 = load float* %14, align 4 ; [#uses=4]
+ %143 = fmul float %140, %138 ; [#uses=1]
+ %144 = fmul float %141, %137 ; [#uses=1]
+ %145 = fsub float %143, %144 ; [#uses=8]
+ %146 = fmul float %142, %137 ; [#uses=1]
+ %147 = fmul float %140, %139 ; [#uses=1]
+ %148 = fsub float %146, %147 ; [#uses=8]
+ %149 = fmul float %141, %139 ; [#uses=1]
+ %150 = fmul float %142, %138 ; [#uses=1]
+ %151 = fsub float %149, %150 ; [#uses=8]
+ %152 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float %151, float* %152, align 4
+ %153 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float %148, float* %153, align 4
+ %154 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float %145, float* %154, align 4
+ %155 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %155, align 4
+ %156 = fmul float %151, %141 ; [#uses=1]
+ %157 = fmul float %148, %140 ; [#uses=1]
+ %158 = fsub float %156, %157 ; [#uses=4]
+ %159 = fmul float %145, %140 ; [#uses=1]
+ %160 = fmul float %151, %142 ; [#uses=1]
+ %161 = fsub float %159, %160 ; [#uses=4]
+ %162 = fmul float %148, %142 ; [#uses=1]
+ %163 = fmul float %145, %141 ; [#uses=1]
+ %164 = fsub float %162, %163 ; [#uses=4]
+ %165 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %164, float* %165, align 4
+ %166 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %161, float* %166, align 4
+ %167 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %158, float* %167, align 4
+ %168 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %168, align 4
+ %169 = fmul float %137, %148 ; [#uses=1]
+ %170 = fmul float %138, %151 ; [#uses=1]
+ %171 = fsub float %169, %170 ; [#uses=4]
+ %172 = fmul float %139, %151 ; [#uses=1]
+ %173 = fmul float %137, %145 ; [#uses=1]
+ %174 = fsub float %172, %173 ; [#uses=4]
+ %175 = fmul float %138, %145 ; [#uses=1]
+ %176 = fmul float %139, %148 ; [#uses=1]
+ %177 = fsub float %175, %176 ; [#uses=4]
+ %178 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 2, i32 0, i32 0 ; [#uses=2]
+ store float %177, float* %178, align 4
+ %179 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 2, i32 0, i32 1 ; [#uses=2]
+ store float %174, float* %179, align 4
+ %180 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 2, i32 0, i32 2 ; [#uses=2]
+ store float %171, float* %180, align 4
+ %181 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 11, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %181, align 4
+ %182 = fmul float %164, %164 ; [#uses=1]
+ %183 = fmul float %161, %161 ; [#uses=1]
+ %184 = fadd float %182, %183 ; [#uses=1]
+ %185 = fmul float %158, %158 ; [#uses=1]
+ %186 = fadd float %184, %185 ; [#uses=1]
+ %187 = call float @sqrtf(float %186) nounwind readonly ; [#uses=1]
+ %188 = fdiv float 1.000000e+00, %187 ; [#uses=3]
+ %189 = fmul float %164, %188 ; [#uses=1]
+ store float %189, float* %165, align 4
+ %190 = fmul float %161, %188 ; [#uses=1]
+ store float %190, float* %166, align 4
+ %191 = fmul float %158, %188 ; [#uses=1]
+ store float %191, float* %167, align 4
+ %192 = fmul float %151, %151 ; [#uses=1]
+ %193 = fmul float %148, %148 ; [#uses=1]
+ %194 = fadd float %192, %193 ; [#uses=1]
+ %195 = fmul float %145, %145 ; [#uses=1]
+ %196 = fadd float %194, %195 ; [#uses=1]
+ %197 = call float @sqrtf(float %196) nounwind readonly ; [#uses=1]
+ %198 = fdiv float 1.000000e+00, %197 ; [#uses=3]
+ %199 = fmul float %151, %198 ; [#uses=1]
+ store float %199, float* %152, align 4
+ %200 = fmul float %148, %198 ; [#uses=1]
+ store float %200, float* %153, align 4
+ %201 = fmul float %145, %198 ; [#uses=1]
+ store float %201, float* %154, align 4
+ %202 = fmul float %177, %177 ; [#uses=1]
+ %203 = fmul float %174, %174 ; [#uses=1]
+ %204 = fadd float %202, %203 ; [#uses=1]
+ %205 = fmul float %171, %171 ; [#uses=1]
+ %206 = fadd float %204, %205 ; [#uses=1]
+ %207 = call float @sqrtf(float %206) nounwind readonly ; [#uses=1]
+ %208 = fdiv float 1.000000e+00, %207 ; [#uses=3]
+ %209 = fmul float %177, %208 ; [#uses=1]
+ store float %209, float* %178, align 4
+ %210 = fmul float %174, %208 ; [#uses=1]
+ store float %210, float* %179, align 4
+ %211 = fmul float %171, %208 ; [#uses=1]
+ store float %211, float* %180, align 4
+ ret void
+}
+
+; [#uses=6]
+define void @_ZN23btGeneric6DofConstraint19calculateTransformsERK11btTransformS2_(%struct.btGeneric6DofConstraint* %this, %struct.btTransform* nocapture %transA, %struct.btTransform* nocapture %transB) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=4]
+ %2 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=4]
+ %7 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=4]
+ %13 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=3]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fadd float %16, %18 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=4]
+ %22 = fmul float %21, %3 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=4]
+ %25 = fmul float %24, %8 ; [#uses=1]
+ %26 = fadd float %22, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=4]
+ %29 = fmul float %28, %14 ; [#uses=1]
+ %30 = fadd float %26, %29 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fadd float %30, %32 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=4]
+ %36 = fmul float %35, %3 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=4]
+ %39 = fmul float %38, %8 ; [#uses=1]
+ %40 = fadd float %36, %39 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=4]
+ %43 = fmul float %42, %14 ; [#uses=1]
+ %44 = fadd float %40, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fadd float %44, %46 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=3]
+ %50 = fmul float %49, %1 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=3]
+ %53 = fmul float %52, %6 ; [#uses=1]
+ %54 = fadd float %50, %53 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=3]
+ %57 = fmul float %56, %12 ; [#uses=1]
+ %58 = fadd float %54, %57 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=3]
+ %61 = fmul float %60, %1 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=3]
+ %64 = fmul float %63, %6 ; [#uses=1]
+ %65 = fadd float %61, %64 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=3]
+ %68 = fmul float %67, %12 ; [#uses=1]
+ %69 = fadd float %65, %68 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=3]
+ %72 = fmul float %71, %1 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=3]
+ %75 = fmul float %74, %6 ; [#uses=1]
+ %76 = fadd float %72, %75 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=3]
+ %79 = fmul float %78, %12 ; [#uses=1]
+ %80 = fadd float %76, %79 ; [#uses=1]
+ %81 = fmul float %49, %21 ; [#uses=1]
+ %82 = fmul float %52, %24 ; [#uses=1]
+ %83 = fadd float %81, %82 ; [#uses=1]
+ %84 = fmul float %56, %28 ; [#uses=1]
+ %85 = fadd float %83, %84 ; [#uses=1]
+ %86 = fmul float %60, %21 ; [#uses=1]
+ %87 = fmul float %63, %24 ; [#uses=1]
+ %88 = fadd float %86, %87 ; [#uses=1]
+ %89 = fmul float %67, %28 ; [#uses=1]
+ %90 = fadd float %88, %89 ; [#uses=1]
+ %91 = fmul float %71, %21 ; [#uses=1]
+ %92 = fmul float %74, %24 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = fmul float %78, %28 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %49, %35 ; [#uses=1]
+ %97 = fmul float %52, %38 ; [#uses=1]
+ %98 = fadd float %96, %97 ; [#uses=1]
+ %99 = fmul float %56, %42 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %60, %35 ; [#uses=1]
+ %102 = fmul float %63, %38 ; [#uses=1]
+ %103 = fadd float %101, %102 ; [#uses=1]
+ %104 = fmul float %67, %42 ; [#uses=1]
+ %105 = fadd float %103, %104 ; [#uses=1]
+ %106 = fmul float %71, %35 ; [#uses=1]
+ %107 = fmul float %74, %38 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fmul float %78, %42 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %110, float* %111, align 4
+ %112 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %105, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %100, float* %113, align 4
+ %114 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %114, align 4
+ %115 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %95, float* %115, align 4
+ %116 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %90, float* %116, align 4
+ %117 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %85, float* %117, align 4
+ %118 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %118, align 4
+ %119 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %80, float* %119, align 4
+ %120 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %69, float* %120, align 4
+ %121 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %58, float* %121, align 4
+ %122 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %122, align 4
+ %123 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %47, float* %123, align 4
+ %124 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %33, float* %124, align 4
+ %125 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %19, float* %125, align 4
+ %126 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 8, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %128 = load float* %127, align 4 ; [#uses=4]
+ %129 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=3]
+ %131 = fmul float %128, %130 ; [#uses=1]
+ %132 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %133 = load float* %132, align 4 ; [#uses=4]
+ %134 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=3]
+ %136 = fmul float %133, %135 ; [#uses=1]
+ %137 = fadd float %131, %136 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %139 = load float* %138, align 4 ; [#uses=4]
+ %140 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=3]
+ %142 = fmul float %139, %141 ; [#uses=1]
+ %143 = fadd float %137, %142 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ %146 = fadd float %143, %145 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %148 = load float* %147, align 4 ; [#uses=4]
+ %149 = fmul float %148, %130 ; [#uses=1]
+ %150 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %151 = load float* %150, align 4 ; [#uses=4]
+ %152 = fmul float %151, %135 ; [#uses=1]
+ %153 = fadd float %149, %152 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %155 = load float* %154, align 4 ; [#uses=4]
+ %156 = fmul float %155, %141 ; [#uses=1]
+ %157 = fadd float %153, %156 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %159 = load float* %158, align 4 ; [#uses=1]
+ %160 = fadd float %157, %159 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=4]
+ %163 = fmul float %162, %130 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %165 = load float* %164, align 4 ; [#uses=4]
+ %166 = fmul float %165, %135 ; [#uses=1]
+ %167 = fadd float %163, %166 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=4]
+ %170 = fmul float %169, %141 ; [#uses=1]
+ %171 = fadd float %167, %170 ; [#uses=1]
+ %172 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %173 = load float* %172, align 4 ; [#uses=1]
+ %174 = fadd float %171, %173 ; [#uses=1]
+ %175 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %176 = load float* %175, align 4 ; [#uses=3]
+ %177 = fmul float %176, %128 ; [#uses=1]
+ %178 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %179 = load float* %178, align 4 ; [#uses=3]
+ %180 = fmul float %179, %133 ; [#uses=1]
+ %181 = fadd float %177, %180 ; [#uses=1]
+ %182 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %183 = load float* %182, align 4 ; [#uses=3]
+ %184 = fmul float %183, %139 ; [#uses=1]
+ %185 = fadd float %181, %184 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %187 = load float* %186, align 4 ; [#uses=3]
+ %188 = fmul float %187, %128 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %190 = load float* %189, align 4 ; [#uses=3]
+ %191 = fmul float %190, %133 ; [#uses=1]
+ %192 = fadd float %188, %191 ; [#uses=1]
+ %193 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %194 = load float* %193, align 4 ; [#uses=3]
+ %195 = fmul float %194, %139 ; [#uses=1]
+ %196 = fadd float %192, %195 ; [#uses=1]
+ %197 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %198 = load float* %197, align 4 ; [#uses=3]
+ %199 = fmul float %198, %128 ; [#uses=1]
+ %200 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %201 = load float* %200, align 4 ; [#uses=3]
+ %202 = fmul float %201, %133 ; [#uses=1]
+ %203 = fadd float %199, %202 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %205 = load float* %204, align 4 ; [#uses=3]
+ %206 = fmul float %205, %139 ; [#uses=1]
+ %207 = fadd float %203, %206 ; [#uses=1]
+ %208 = fmul float %176, %148 ; [#uses=1]
+ %209 = fmul float %179, %151 ; [#uses=1]
+ %210 = fadd float %208, %209 ; [#uses=1]
+ %211 = fmul float %183, %155 ; [#uses=1]
+ %212 = fadd float %210, %211 ; [#uses=1]
+ %213 = fmul float %187, %148 ; [#uses=1]
+ %214 = fmul float %190, %151 ; [#uses=1]
+ %215 = fadd float %213, %214 ; [#uses=1]
+ %216 = fmul float %194, %155 ; [#uses=1]
+ %217 = fadd float %215, %216 ; [#uses=1]
+ %218 = fmul float %198, %148 ; [#uses=1]
+ %219 = fmul float %201, %151 ; [#uses=1]
+ %220 = fadd float %218, %219 ; [#uses=1]
+ %221 = fmul float %205, %155 ; [#uses=1]
+ %222 = fadd float %220, %221 ; [#uses=1]
+ %223 = fmul float %176, %162 ; [#uses=1]
+ %224 = fmul float %179, %165 ; [#uses=1]
+ %225 = fadd float %223, %224 ; [#uses=1]
+ %226 = fmul float %183, %169 ; [#uses=1]
+ %227 = fadd float %225, %226 ; [#uses=1]
+ %228 = fmul float %187, %162 ; [#uses=1]
+ %229 = fmul float %190, %165 ; [#uses=1]
+ %230 = fadd float %228, %229 ; [#uses=1]
+ %231 = fmul float %194, %169 ; [#uses=1]
+ %232 = fadd float %230, %231 ; [#uses=1]
+ %233 = fmul float %198, %162 ; [#uses=1]
+ %234 = fmul float %201, %165 ; [#uses=1]
+ %235 = fadd float %233, %234 ; [#uses=1]
+ %236 = fmul float %205, %169 ; [#uses=1]
+ %237 = fadd float %235, %236 ; [#uses=1]
+ %238 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %237, float* %238, align 4
+ %239 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %232, float* %239, align 4
+ %240 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %227, float* %240, align 4
+ %241 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %241, align 4
+ %242 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %222, float* %242, align 4
+ %243 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %217, float* %243, align 4
+ %244 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %212, float* %244, align 4
+ %245 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %245, align 4
+ %246 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %207, float* %246, align 4
+ %247 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %196, float* %247, align 4
+ %248 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %185, float* %248, align 4
+ %249 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %249, align 4
+ %250 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %174, float* %250, align 4
+ %251 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %160, float* %251, align 4
+ %252 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %146, float* %252, align 4
+ %253 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 9, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %253, align 4
+ tail call void @_ZN23btGeneric6DofConstraint19calculateLinearInfoEv(%struct.btGeneric6DofConstraint* %this)
+ tail call void @_ZN23btGeneric6DofConstraint18calculateAngleInfoEv(%struct.btGeneric6DofConstraint* %this)
+ %254 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ %255 = load i8* %254, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %255, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %256 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %257 = load %struct.btRigidBody** %256, align 4 ; [#uses=1]
+ %258 = getelementptr inbounds %struct.btRigidBody* %257, i32 0, i32 4 ; [#uses=1]
+ %259 = load float* %258, align 4 ; [#uses=2]
+ %260 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %261 = load %struct.btRigidBody** %260, align 4 ; [#uses=1]
+ %262 = getelementptr inbounds %struct.btRigidBody* %261, i32 0, i32 4 ; [#uses=1]
+ %263 = load float* %262, align 4 ; [#uses=3]
+ %264 = fcmp olt float %259, 0x3E80000000000000 ; [#uses=1]
+ %265 = fcmp olt float %263, 0x3E80000000000000 ; [#uses=1]
+ %or.cond = or i1 %264, %265 ; [#uses=1]
+ %iftmp.215.0 = zext i1 %or.cond to i8 ; [#uses=1]
+ %266 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 15 ; [#uses=1]
+ store i8 %iftmp.215.0, i8* %266, align 4
+ %267 = fadd float %259, %263 ; [#uses=2]
+ %268 = fcmp ogt float %267, 0.000000e+00 ; [#uses=1]
+ br i1 %268, label %bb5, label %bb6
+
+bb5: ; preds = %bb
+ %269 = fdiv float %263, %267 ; [#uses=2]
+ %270 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 13 ; [#uses=1]
+ store float %269, float* %270, align 4
+ br label %bb7
+
+bb6: ; preds = %bb
+ %271 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 13 ; [#uses=1]
+ store float 5.000000e-01, float* %271, align 4
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5
+ %272 = phi float [ 5.000000e-01, %bb6 ], [ %269, %bb5 ] ; [#uses=1]
+ %273 = fsub float 1.000000e+00, %272 ; [#uses=1]
+ %274 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 14 ; [#uses=1]
+ store float %273, float* %274, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btGeneric6DofConstraint18getInfo2NonVirtualEPN17btTypedConstraint17btConstraintInfo2ERK11btTransformS5_RK9btVector3S8_S8_S8_(%struct.btGeneric6DofConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, %struct.btTransform* nocapture %transA, %struct.btTransform* nocapture %transB, %struct.btQuadWord* nocapture %linVelA, %struct.btQuadWord* nocapture %linVelB, %struct.btQuadWord* nocapture %angVelA, %struct.btQuadWord* nocapture %angVelB) align 2 {
+bb.nph:
+ tail call void @_ZN23btGeneric6DofConstraint19calculateTransformsERK11btTransformS2_(%struct.btGeneric6DofConstraint* %this, %struct.btTransform* %transA, %struct.btTransform* %transB)
+ br label %bb
+
+bb: ; preds = %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit, %bb.nph
+ %i.07 = phi i32 [ 0, %bb.nph ], [ %9, %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit ] ; [#uses=7]
+ %scevgep = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 10, i32 0, i32 %i.07 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.07, i32 1 ; [#uses=1]
+ %scevgep910 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.07, i32 0 ; [#uses=1]
+ %scevgep11 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.07, i32 13 ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.07, i32 14 ; [#uses=4]
+ %scevgep13 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 %i.07, i32 12 ; [#uses=2]
+ %0 = load float* %scevgep, align 4 ; [#uses=1]
+ %1 = load float* %scevgep8, align 4 ; [#uses=4]
+ %2 = load float* %scevgep910, align 4 ; [#uses=4]
+ %3 = tail call float @_Z21btAdjustAngleToLimitsfff(float %0, float %2, float %1) nounwind ; [#uses=5]
+ store float %3, float* %scevgep11, align 4
+ %4 = fcmp ogt float %2, %1 ; [#uses=1]
+ br i1 %4, label %bb.i3.i, label %bb1.i.i
+
+bb.i3.i: ; preds = %bb
+ store i32 0, i32* %scevgep12, align 4
+ br label %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit
+
+bb1.i.i: ; preds = %bb
+ %5 = fcmp ogt float %2, %3 ; [#uses=1]
+ br i1 %5, label %bb2.i.i, label %bb3.i.i
+
+bb2.i.i: ; preds = %bb1.i.i
+ store i32 1, i32* %scevgep12, align 4
+ %6 = fsub float %3, %2 ; [#uses=1]
+ store float %6, float* %scevgep13, align 4
+ br label %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit
+
+bb3.i.i: ; preds = %bb1.i.i
+ %7 = fcmp olt float %1, %3 ; [#uses=1]
+ br i1 %7, label %bb4.i.i, label %bb5.i4.i
+
+bb4.i.i: ; preds = %bb3.i.i
+ store i32 2, i32* %scevgep12, align 4
+ %8 = fsub float %3, %1 ; [#uses=1]
+ store float %8, float* %scevgep13, align 4
+ br label %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit
+
+bb5.i4.i: ; preds = %bb3.i.i
+ store i32 0, i32* %scevgep12, align 4
+ br label %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit
+
+_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit: ; preds = %bb5.i4.i, %bb4.i.i, %bb2.i.i, %bb.i3.i
+ %9 = add nsw i32 %i.07, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %9, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb2, label %bb
+
+bb2: ; preds = %_ZN23btGeneric6DofConstraint21testAngularLimitMotorEi.exit
+ %10 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ %11 = load i8* %10, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %11, 0 ; [#uses=1]
+ br i1 %toBool, label %bb4, label %bb3
+
+bb3: ; preds = %bb2
+ %12 = tail call i32 @_ZN23btGeneric6DofConstraint16setAngularLimitsEPN17btTypedConstraint17btConstraintInfo2EiRK11btTransformS5_RK9btVector3S8_S8_S8_(%struct.btGeneric6DofConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, %struct.btTransform* %transA, %struct.btTransform* %transB, %struct.btQuadWord* %linVelA, %struct.btQuadWord* %linVelB, %struct.btQuadWord* %angVelA, %struct.btQuadWord* %angVelB) ; [#uses=1]
+ %13 = tail call i32 @_ZN23btGeneric6DofConstraint15setLinearLimitsEPN17btTypedConstraint17btConstraintInfo2EiRK11btTransformS5_RK9btVector3S8_S8_S8_(%struct.btGeneric6DofConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 %12, %struct.btTransform* %transA, %struct.btTransform* %transB, %struct.btQuadWord* %linVelA, %struct.btQuadWord* %linVelB, %struct.btQuadWord* %angVelA, %struct.btQuadWord* %angVelB) ; [#uses=0]
+ ret void
+
+bb4: ; preds = %bb2
+ %14 = tail call i32 @_ZN23btGeneric6DofConstraint15setLinearLimitsEPN17btTypedConstraint17btConstraintInfo2EiRK11btTransformS5_RK9btVector3S8_S8_S8_(%struct.btGeneric6DofConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, %struct.btTransform* %transA, %struct.btTransform* %transB, %struct.btQuadWord* %linVelA, %struct.btQuadWord* %linVelB, %struct.btQuadWord* %angVelA, %struct.btQuadWord* %angVelB) ; [#uses=1]
+ %15 = tail call i32 @_ZN23btGeneric6DofConstraint16setAngularLimitsEPN17btTypedConstraint17btConstraintInfo2EiRK11btTransformS5_RK9btVector3S8_S8_S8_(%struct.btGeneric6DofConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 %14, %struct.btTransform* %transA, %struct.btTransform* %transB, %struct.btQuadWord* %linVelA, %struct.btQuadWord* %linVelB, %struct.btQuadWord* %angVelA, %struct.btQuadWord* %angVelB) ; [#uses=0]
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN23btGeneric6DofConstraint19calculateTransformsEv(%struct.btGeneric6DofConstraint* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %1 = load %struct.btRigidBody** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %4 = load %struct.btRigidBody** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btRigidBody* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN23btGeneric6DofConstraint19calculateTransformsERK11btTransformS2_(%struct.btGeneric6DofConstraint* %this, %struct.btTransform* %5, %struct.btTransform* %2)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btGeneric6DofConstraintC2ER11btRigidBodyRK11btTransformb(%struct.btGeneric6DofConstraint* %this, %struct.btRigidBody* %rbB, %struct.btTransform* nocapture %frameInB, i8 zeroext %useLinearReferenceFrameB) align 2 {
+return:
+ %0 = tail call %struct.btRigidBody* @_ZN17btTypedConstraint12getFixedBodyEv() ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBodyS2_(%struct.btTypedConstraint* %1, i32 6, %struct.btRigidBody* %0, %struct.btRigidBody* %rbB)
+ %2 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV23btGeneric6DofConstraint, i32 0, i32 2), i32 (...)*** %2, align 4
+ %3 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=4]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=4]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=4]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=4]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=4]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=4]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=4]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=4]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=4]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=4]
+ store float %41, float* %39, align 4
+ %42 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=4]
+ store float %44, float* %42, align 4
+ %45 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=4]
+ store float %47, float* %45, align 4
+ %48 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ store float %50, float* %48, align 4
+ %51 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 6, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 6, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %53, align 4
+ %54 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 6, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %54, align 4
+ %55 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 6, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %55, align 4
+ %56 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 7, i32 0, i32 0 ; [#uses=1]
+ %57 = bitcast %struct.btTranslationalLimitMotor* %51 to i8* ; [#uses=1]
+ tail call void @llvm.memset.p0i8.i64(i8* %57, i8 0, i64 48, i32 4, i1 false) nounwind
+ store float 0x3FC99999A0000000, float* %56, align 4
+ %58 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 7, i32 0, i32 1 ; [#uses=1]
+ store float 0x3FC99999A0000000, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 7, i32 0, i32 2 ; [#uses=1]
+ store float 0x3FC99999A0000000, float* %59, align 4
+ %60 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 7, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 8, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 8, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 8, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %63, align 4
+ %64 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 8, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %64, align 4
+ %65 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %65, align 4
+ %66 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store float 1.000000e+00, float* %66, align 4
+ %67 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 5 ; [#uses=1]
+ store float 5.000000e-01, float* %67, align 4
+ %scevgep.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 9, i32 0 ; [#uses=1]
+ %scevgep4.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 10, i32 0, i32 0 ; [#uses=1]
+ %scevgep5.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 11, i32 0, i32 0 ; [#uses=1]
+ store i8 0, i8* %scevgep.i.i, align 1
+ store float 0.000000e+00, float* %scevgep4.i.i, align 4
+ store float 0.000000e+00, float* %scevgep5.i.i, align 4
+ %scevgep.1.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 9, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 10, i32 0, i32 1 ; [#uses=1]
+ %scevgep5.1.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 11, i32 0, i32 1 ; [#uses=1]
+ store i8 0, i8* %scevgep.1.i.i, align 1
+ store float 0.000000e+00, float* %scevgep4.1.i.i, align 4
+ store float 0.000000e+00, float* %scevgep5.1.i.i, align 4
+ %scevgep.2.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 9, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 10, i32 0, i32 2 ; [#uses=1]
+ %scevgep5.2.i.i = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 5, i32 11, i32 0, i32 2 ; [#uses=1]
+ store i8 0, i8* %scevgep.2.i.i, align 1
+ store float 0.000000e+00, float* %scevgep4.2.i.i, align 4
+ store float 0.000000e+00, float* %scevgep5.2.i.i, align 4
+ %scevgep = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 15 ; [#uses=1]
+ %scevgep38 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %scevgep39 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %scevgep40 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 4 ; [#uses=1]
+ %scevgep4142 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %scevgep43 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %scevgep44 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 7 ; [#uses=1]
+ %scevgep45 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 8 ; [#uses=1]
+ %scevgep46 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 9 ; [#uses=1]
+ %scevgep47 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 10 ; [#uses=1]
+ %scevgep48 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 5 ; [#uses=1]
+ %scevgep49 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 6 ; [#uses=1]
+ %scevgep50 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 14 ; [#uses=1]
+ %scevgep51 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 12 ; [#uses=1]
+ %scevgep52 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 0, i32 11 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep, align 4
+ store float 0.000000e+00, float* %scevgep38, align 4
+ store float 0x3FB99999A0000000, float* %scevgep39, align 4
+ store float 3.000000e+02, float* %scevgep40, align 4
+ store float 1.000000e+00, float* %scevgep4142, align 4
+ store float -1.000000e+00, float* %scevgep43, align 4
+ store float 0.000000e+00, float* %scevgep44, align 4
+ store float 0x3FC99999A0000000, float* %scevgep45, align 4
+ store float 0.000000e+00, float* %scevgep46, align 4
+ store float 0.000000e+00, float* %scevgep47, align 4
+ store float 1.000000e+00, float* %scevgep48, align 4
+ store float 5.000000e-01, float* %scevgep49, align 4
+ store i32 0, i32* %scevgep50, align 4
+ store float 0.000000e+00, float* %scevgep51, align 4
+ store i8 0, i8* %scevgep52, align 4
+ %scevgep.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 15 ; [#uses=1]
+ %scevgep38.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 2 ; [#uses=1]
+ %scevgep39.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 3 ; [#uses=1]
+ %scevgep40.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 4 ; [#uses=1]
+ %scevgep4142.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 0 ; [#uses=1]
+ %scevgep43.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 1 ; [#uses=1]
+ %scevgep44.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 7 ; [#uses=1]
+ %scevgep45.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 8 ; [#uses=1]
+ %scevgep46.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 9 ; [#uses=1]
+ %scevgep47.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 10 ; [#uses=1]
+ %scevgep48.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 5 ; [#uses=1]
+ %scevgep49.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 6 ; [#uses=1]
+ %scevgep50.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 14 ; [#uses=1]
+ %scevgep51.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 12 ; [#uses=1]
+ %scevgep52.1 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 1, i32 11 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep.1, align 4
+ store float 0.000000e+00, float* %scevgep38.1, align 4
+ store float 0x3FB99999A0000000, float* %scevgep39.1, align 4
+ store float 3.000000e+02, float* %scevgep40.1, align 4
+ store float 1.000000e+00, float* %scevgep4142.1, align 4
+ store float -1.000000e+00, float* %scevgep43.1, align 4
+ store float 0.000000e+00, float* %scevgep44.1, align 4
+ store float 0x3FC99999A0000000, float* %scevgep45.1, align 4
+ store float 0.000000e+00, float* %scevgep46.1, align 4
+ store float 0.000000e+00, float* %scevgep47.1, align 4
+ store float 1.000000e+00, float* %scevgep48.1, align 4
+ store float 5.000000e-01, float* %scevgep49.1, align 4
+ store i32 0, i32* %scevgep50.1, align 4
+ store float 0.000000e+00, float* %scevgep51.1, align 4
+ store i8 0, i8* %scevgep52.1, align 4
+ %scevgep.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 15 ; [#uses=1]
+ %scevgep38.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 2 ; [#uses=1]
+ %scevgep39.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 3 ; [#uses=1]
+ %scevgep40.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 4 ; [#uses=1]
+ %scevgep4142.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 0 ; [#uses=1]
+ %scevgep43.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 1 ; [#uses=1]
+ %scevgep44.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 7 ; [#uses=1]
+ %scevgep45.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 8 ; [#uses=1]
+ %scevgep46.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 9 ; [#uses=1]
+ %scevgep47.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 10 ; [#uses=1]
+ %scevgep48.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 5 ; [#uses=1]
+ %scevgep49.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 6 ; [#uses=1]
+ %scevgep50.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 14 ; [#uses=1]
+ %scevgep51.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 12 ; [#uses=1]
+ %scevgep52.2 = getelementptr %struct.btGeneric6DofConstraint* %this, i32 0, i32 6, i32 2, i32 11 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep.2, align 4
+ store float 0.000000e+00, float* %scevgep38.2, align 4
+ store float 0x3FB99999A0000000, float* %scevgep39.2, align 4
+ store float 3.000000e+02, float* %scevgep40.2, align 4
+ store float 1.000000e+00, float* %scevgep4142.2, align 4
+ store float -1.000000e+00, float* %scevgep43.2, align 4
+ store float 0.000000e+00, float* %scevgep44.2, align 4
+ store float 0x3FC99999A0000000, float* %scevgep45.2, align 4
+ store float 0.000000e+00, float* %scevgep46.2, align 4
+ store float 0.000000e+00, float* %scevgep47.2, align 4
+ store float 1.000000e+00, float* %scevgep48.2, align 4
+ store float 5.000000e-01, float* %scevgep49.2, align 4
+ store i32 0, i32* %scevgep50.2, align 4
+ store float 0.000000e+00, float* %scevgep51.2, align 4
+ store i8 0, i8* %scevgep52.2, align 4
+ %68 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ store i8 %useLinearReferenceFrameB, i8* %68, align 4
+ %69 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ store i8 1, i8* %69, align 1
+ %70 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ store i32 0, i32* %70, align 4
+ %71 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ store i8 0, i8* %71, align 4
+ %72 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=4]
+ %74 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=4]
+ %76 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=4]
+ %78 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=4]
+ %80 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=4]
+ %82 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=4]
+ %84 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=4]
+ %86 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=4]
+ %88 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=4]
+ %90 = fmul float %87, %44 ; [#uses=1]
+ %91 = fmul float %85, %41 ; [#uses=1]
+ %92 = fmul float %81, %44 ; [#uses=1]
+ %93 = fmul float %79, %41 ; [#uses=1]
+ %94 = fmul float %75, %44 ; [#uses=1]
+ %95 = fmul float %73, %41 ; [#uses=1]
+ %96 = fmul float %17, %87 ; [#uses=1]
+ %97 = fmul float %5, %85 ; [#uses=1]
+ %98 = fmul float %20, %87 ; [#uses=1]
+ %99 = fmul float %8, %85 ; [#uses=1]
+ %100 = fmul float %23, %87 ; [#uses=1]
+ %101 = fmul float %11, %85 ; [#uses=1]
+ %102 = fmul float %17, %81 ; [#uses=1]
+ %103 = fmul float %5, %79 ; [#uses=1]
+ %104 = fmul float %20, %81 ; [#uses=1]
+ %105 = fmul float %8, %79 ; [#uses=1]
+ %106 = fmul float %23, %81 ; [#uses=1]
+ %107 = fmul float %11, %79 ; [#uses=1]
+ %108 = fmul float %17, %75 ; [#uses=1]
+ %109 = fmul float %5, %73 ; [#uses=1]
+ %110 = fmul float %20, %75 ; [#uses=1]
+ %111 = fmul float %8, %73 ; [#uses=1]
+ %112 = fmul float %23, %75 ; [#uses=1]
+ %113 = fmul float %11, %73 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %115 = fmul float %89, %47 ; [#uses=1]
+ %116 = fadd float %91, %90 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %118 = fmul float %83, %47 ; [#uses=1]
+ %119 = fadd float %93, %92 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %121 = fmul float %77, %47 ; [#uses=1]
+ %122 = fadd float %95, %94 ; [#uses=1]
+ %123 = fmul float %29, %89 ; [#uses=1]
+ %124 = fadd float %97, %96 ; [#uses=1]
+ %125 = fmul float %32, %89 ; [#uses=1]
+ %126 = fadd float %99, %98 ; [#uses=1]
+ %127 = fmul float %35, %89 ; [#uses=1]
+ %128 = fadd float %101, %100 ; [#uses=1]
+ %129 = fmul float %29, %83 ; [#uses=1]
+ %130 = fadd float %103, %102 ; [#uses=1]
+ %131 = fmul float %32, %83 ; [#uses=1]
+ %132 = fadd float %105, %104 ; [#uses=1]
+ %133 = fmul float %35, %83 ; [#uses=1]
+ %134 = fadd float %107, %106 ; [#uses=1]
+ %135 = fmul float %29, %77 ; [#uses=1]
+ %136 = fadd float %109, %108 ; [#uses=1]
+ %137 = fmul float %32, %77 ; [#uses=1]
+ %138 = fadd float %111, %110 ; [#uses=1]
+ %139 = fmul float %35, %77 ; [#uses=1]
+ %140 = fadd float %113, %112 ; [#uses=1]
+ %141 = load float* %114, align 4 ; [#uses=1]
+ %142 = fadd float %116, %115 ; [#uses=1]
+ %143 = load float* %117, align 4 ; [#uses=1]
+ %144 = fadd float %119, %118 ; [#uses=1]
+ %145 = load float* %120, align 4 ; [#uses=1]
+ %146 = fadd float %122, %121 ; [#uses=1]
+ %147 = fadd float %124, %123 ; [#uses=1]
+ %148 = fadd float %126, %125 ; [#uses=1]
+ %149 = fadd float %128, %127 ; [#uses=1]
+ %150 = fadd float %130, %129 ; [#uses=1]
+ %151 = fadd float %132, %131 ; [#uses=1]
+ %152 = fadd float %134, %133 ; [#uses=1]
+ %153 = fadd float %136, %135 ; [#uses=1]
+ %154 = fadd float %138, %137 ; [#uses=1]
+ %155 = fadd float %140, %139 ; [#uses=1]
+ %156 = fadd float %142, %141 ; [#uses=1]
+ %157 = fadd float %144, %143 ; [#uses=1]
+ %158 = fadd float %146, %145 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %147, float* %159, align 4
+ %160 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %148, float* %160, align 4
+ %161 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %149, float* %161, align 4
+ %162 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %162, align 4
+ %163 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %150, float* %163, align 4
+ %164 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %151, float* %164, align 4
+ %165 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %152, float* %165, align 4
+ %166 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %166, align 4
+ %167 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %153, float* %167, align 4
+ %168 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %154, float* %168, align 4
+ %169 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %155, float* %169, align 4
+ %170 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %170, align 4
+ %171 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %156, float* %171, align 4
+ %172 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %157, float* %172, align 4
+ %173 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %158, float* %173, align 4
+ %174 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %174, align 4
+ %175 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %176 = load %struct.btRigidBody** %175, align 4 ; [#uses=1]
+ %177 = getelementptr inbounds %struct.btRigidBody* %176, i32 0, i32 0, i32 1 ; [#uses=1]
+ %178 = getelementptr inbounds %struct.btGeneric6DofConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %179 = load %struct.btRigidBody** %178, align 4 ; [#uses=1]
+ %180 = getelementptr inbounds %struct.btRigidBody* %179, i32 0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN23btGeneric6DofConstraint19calculateTransformsERK11btTransformS2_(%struct.btGeneric6DofConstraint* %this, %struct.btTransform* %180, %struct.btTransform* %177) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btGeneric6DofConstraintC1ER11btRigidBodyRK11btTransformb(%struct.btGeneric6DofConstraint* %this, %struct.btRigidBody* %rbB, %struct.btTransform* nocapture %frameInB, i8 zeroext %useLinearReferenceFrameB) align 2 {
+entry:
+ tail call void @_ZN23btGeneric6DofConstraintC2ER11btRigidBodyRK11btTransformb(%struct.btGeneric6DofConstraint* %this, %struct.btRigidBody* %rbB, %struct.btTransform* %frameInB, i8 zeroext %useLinearReferenceFrameB)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btGeneric6DofConstraintC1ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btGeneric6DofConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* nocapture %frameInA, %struct.btTransform* nocapture %frameInB, i8 zeroext %useLinearReferenceFrameA) align 2 {
+entry:
+ tail call void @_ZN23btGeneric6DofConstraintC2ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btGeneric6DofConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* %frameInA, %struct.btTransform* %frameInB, i8 zeroext %useLinearReferenceFrameA)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN29btGeneric6DofSpringConstraintC2ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btGeneric6DofSpringConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* %frameInA, %struct.btTransform* %frameInB, i8 zeroext %useLinearReferenceFrameA) align 2 {
+return:
+ %0 = bitcast %struct.btGeneric6DofSpringConstraint* %this to %struct.btGeneric6DofConstraint* ; [#uses=1]
+ tail call void @_ZN23btGeneric6DofConstraintC2ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btGeneric6DofConstraint* %0, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* %frameInA, %struct.btTransform* %frameInB, i8 zeroext %useLinearReferenceFrameA)
+ %1 = bitcast %struct.btGeneric6DofSpringConstraint* %this to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV29btGeneric6DofSpringConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %scevgep = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %scevgep4 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ %scevgep5 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 0 ; [#uses=1]
+ store i8 0, i8* %scevgep, align 1
+ store float 0.000000e+00, float* %scevgep4, align 4
+ store float 0.000000e+00, float* %scevgep5, align 4
+ store float 1.000000e+00, float* %scevgep6, align 4
+ %scevgep.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %scevgep4.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %scevgep5.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ %scevgep6.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i8 0, i8* %scevgep.1, align 1
+ store float 0.000000e+00, float* %scevgep4.1, align 4
+ store float 0.000000e+00, float* %scevgep5.1, align 4
+ store float 1.000000e+00, float* %scevgep6.1, align 4
+ %scevgep.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ %scevgep4.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ %scevgep5.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ %scevgep6.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i8 0, i8* %scevgep.2, align 1
+ store float 0.000000e+00, float* %scevgep4.2, align 4
+ store float 0.000000e+00, float* %scevgep5.2, align 4
+ store float 1.000000e+00, float* %scevgep6.2, align 4
+ %scevgep.3 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %scevgep4.3 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %scevgep5.3 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %scevgep6.3 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ store i8 0, i8* %scevgep.3, align 1
+ store float 0.000000e+00, float* %scevgep4.3, align 4
+ store float 0.000000e+00, float* %scevgep5.3, align 4
+ store float 1.000000e+00, float* %scevgep6.3, align 4
+ %scevgep.4 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %scevgep4.4 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %scevgep5.4 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %scevgep6.4 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 0, i8* %scevgep.4, align 1
+ store float 0.000000e+00, float* %scevgep4.4, align 4
+ store float 0.000000e+00, float* %scevgep5.4, align 4
+ store float 1.000000e+00, float* %scevgep6.4, align 4
+ %scevgep.5 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 5 ; [#uses=1]
+ %scevgep4.5 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 5 ; [#uses=1]
+ %scevgep5.5 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 5 ; [#uses=1]
+ %scevgep6.5 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 5 ; [#uses=1]
+ store i8 0, i8* %scevgep.5, align 1
+ store float 0.000000e+00, float* %scevgep4.5, align 4
+ store float 0.000000e+00, float* %scevgep5.5, align 4
+ store float 1.000000e+00, float* %scevgep6.5, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN29btGeneric6DofSpringConstraint12enableSpringEib(%struct.btGeneric6DofSpringConstraint* nocapture %this, i32 %index, i8 zeroext %onOff) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 %index ; [#uses=1]
+ store i8 %onOff, i8* %0, align 1
+ %1 = icmp slt i32 %index, 3 ; [#uses=1]
+ br i1 %1, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %.sum = add i32 %index, 776 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 %.sum ; [#uses=1]
+ store i8 %onOff, i8* %2, align 1
+ ret void
+
+bb1: ; preds = %entry
+ %3 = add nsw i32 %index, -3 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 856 ; [#uses=1]
+ %5 = bitcast i8* %4 to [3 x %struct.btRotationalLimitMotor]* ; [#uses=1]
+ %6 = getelementptr inbounds [3 x %struct.btRotationalLimitMotor]* %5, i32 0, i32 %3, i32 11 ; [#uses=1]
+ store i8 %onOff, i8* %6, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN29btGeneric6DofSpringConstraint12setStiffnessEif(%struct.btGeneric6DofSpringConstraint* nocapture %this, i32 %index, float %stiffness) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 %index ; [#uses=1]
+ store float %stiffness, float* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN29btGeneric6DofSpringConstraint10setDampingEif(%struct.btGeneric6DofSpringConstraint* nocapture %this, i32 %index, float %damping) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 %index ; [#uses=1]
+ store float %damping, float* %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN29btGeneric6DofSpringConstraint19setEquilibriumPointEif(%struct.btGeneric6DofSpringConstraint* nocapture %this, i32 %index, float %val) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 %index ; [#uses=1]
+ store float %val, float* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN29btGeneric6DofSpringConstraint21internalUpdateSpringsEPN17btTypedConstraint17btConstraintInfo2E(%struct.btGeneric6DofSpringConstraint* nocapture %this, %"struct.btTypedConstraint::btConstraintInfo2"* nocapture %info) nounwind align 2 {
+bb.nph18:
+ %0 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 0 ; [#uses=6]
+ %1 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 12 ; [#uses=3]
+ %scevgep42 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %2 = load i8* %scevgep42, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb1
+
+bb1: ; preds = %bb.nph18
+ %scevgep40 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 796 ; [#uses=1]
+ %scevgep37 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 780 ; [#uses=1]
+ %scevgep34 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1244 ; [#uses=1]
+ %scevgep45 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 0 ; [#uses=1]
+ %scevgep44 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ %scevgep43 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ %scevgep4041 = bitcast i8* %scevgep40 to float* ; [#uses=1]
+ %scevgep3738 = bitcast i8* %scevgep37 to float* ; [#uses=1]
+ %scevgep3435 = bitcast i8* %scevgep34 to float* ; [#uses=1]
+ %3 = load float* %scevgep3435, align 4 ; [#uses=1]
+ %4 = load float* %scevgep43, align 4 ; [#uses=1]
+ %5 = fsub float %3, %4 ; [#uses=1]
+ %6 = load float* %scevgep44, align 4 ; [#uses=1]
+ %7 = fmul float %6, %5 ; [#uses=2]
+ %8 = load float* %0, align 4 ; [#uses=1]
+ %9 = load float* %scevgep45, align 4 ; [#uses=1]
+ %10 = fmul float %8, %9 ; [#uses=1]
+ %11 = load i32* %1, align 4 ; [#uses=1]
+ %12 = sitofp i32 %11 to float ; [#uses=1]
+ %13 = fdiv float %10, %12 ; [#uses=1]
+ %14 = fmul float %13, %7 ; [#uses=1]
+ store float %14, float* %scevgep3738, align 4
+ %15 = tail call float @fabsf(float %7) nounwind readnone ; [#uses=1]
+ %16 = load float* %0, align 4 ; [#uses=1]
+ %17 = fdiv float %15, %16 ; [#uses=1]
+ store float %17, float* %scevgep4041, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb.nph18
+ %scevgep42.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %18 = load i8* %scevgep42.1, align 1 ; [#uses=1]
+ %toBool.1 = icmp eq i8 %18, 0 ; [#uses=1]
+ br i1 %toBool.1, label %bb2.1, label %bb1.1
+
+bb.nph: ; preds = %bb1.2, %bb2.1
+ %19 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 0 ; [#uses=6]
+ %20 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 12 ; [#uses=3]
+ %scevgep29 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %21 = load i8* %scevgep29, align 1 ; [#uses=1]
+ %toBool6 = icmp eq i8 %21, 0 ; [#uses=1]
+ br i1 %toBool6, label %bb12, label %bb7
+
+bb7: ; preds = %bb.nph
+ %scevgep26 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 868 ; [#uses=1]
+ %scevgep23 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 864 ; [#uses=1]
+ %scevgep = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1180 ; [#uses=1]
+ %scevgep32 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %scevgep31 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %scevgep30 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %scevgep2627 = bitcast i8* %scevgep26 to float* ; [#uses=1]
+ %scevgep2324 = bitcast i8* %scevgep23 to float* ; [#uses=1]
+ %scevgep20 = bitcast i8* %scevgep to float* ; [#uses=1]
+ %22 = load float* %scevgep20, align 4 ; [#uses=1]
+ %23 = load float* %scevgep30, align 4 ; [#uses=1]
+ %24 = fsub float %22, %23 ; [#uses=1]
+ %25 = fsub float -0.000000e+00, %24 ; [#uses=1]
+ %26 = load float* %scevgep31, align 4 ; [#uses=1]
+ %27 = fmul float %26, %25 ; [#uses=2]
+ %28 = load float* %19, align 4 ; [#uses=1]
+ %29 = load float* %scevgep32, align 4 ; [#uses=1]
+ %30 = fmul float %28, %29 ; [#uses=1]
+ %31 = load i32* %20, align 4 ; [#uses=1]
+ %32 = sitofp i32 %31 to float ; [#uses=1]
+ %33 = fdiv float %30, %32 ; [#uses=1]
+ %34 = fmul float %33, %27 ; [#uses=1]
+ store float %34, float* %scevgep2324, align 4
+ %35 = tail call float @fabsf(float %27) nounwind readnone ; [#uses=1]
+ %36 = load float* %19, align 4 ; [#uses=1]
+ %37 = fdiv float %35, %36 ; [#uses=1]
+ store float %37, float* %scevgep2627, align 4
+ br label %bb12
+
+bb12: ; preds = %bb7, %bb.nph
+ %scevgep29.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %38 = load i8* %scevgep29.1, align 1 ; [#uses=1]
+ %toBool6.1 = icmp eq i8 %38, 0 ; [#uses=1]
+ br i1 %toBool6.1, label %bb12.1, label %bb7.1
+
+return: ; preds = %bb12.1
+ ret void
+
+bb12.1: ; preds = %bb7.1, %bb12
+ %scevgep29.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 5 ; [#uses=1]
+ %39 = load i8* %scevgep29.2, align 1 ; [#uses=1]
+ %toBool6.2 = icmp eq i8 %39, 0 ; [#uses=1]
+ br i1 %toBool6.2, label %return, label %bb7.2
+
+bb7.1: ; preds = %bb12
+ %scevgep26.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 932 ; [#uses=1]
+ %scevgep23.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 928 ; [#uses=1]
+ %scevgep.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1184 ; [#uses=1]
+ %scevgep32.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %scevgep31.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %scevgep30.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %scevgep2627.1 = bitcast i8* %scevgep26.1 to float* ; [#uses=1]
+ %scevgep2324.1 = bitcast i8* %scevgep23.1 to float* ; [#uses=1]
+ %scevgep20.1 = bitcast i8* %scevgep.1 to float* ; [#uses=1]
+ %40 = load float* %scevgep20.1, align 4 ; [#uses=1]
+ %41 = load float* %scevgep30.1, align 4 ; [#uses=1]
+ %42 = fsub float %40, %41 ; [#uses=1]
+ %43 = fsub float -0.000000e+00, %42 ; [#uses=1]
+ %44 = load float* %scevgep31.1, align 4 ; [#uses=1]
+ %45 = fmul float %44, %43 ; [#uses=2]
+ %46 = load float* %19, align 4 ; [#uses=1]
+ %47 = load float* %scevgep32.1, align 4 ; [#uses=1]
+ %48 = fmul float %46, %47 ; [#uses=1]
+ %49 = load i32* %20, align 4 ; [#uses=1]
+ %50 = sitofp i32 %49 to float ; [#uses=1]
+ %51 = fdiv float %48, %50 ; [#uses=1]
+ %52 = fmul float %51, %45 ; [#uses=1]
+ store float %52, float* %scevgep2324.1, align 4
+ %53 = tail call float @fabsf(float %45) nounwind readnone ; [#uses=1]
+ %54 = load float* %19, align 4 ; [#uses=1]
+ %55 = fdiv float %53, %54 ; [#uses=1]
+ store float %55, float* %scevgep2627.1, align 4
+ br label %bb12.1
+
+bb7.2: ; preds = %bb12.1
+ %scevgep26.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 996 ; [#uses=1]
+ %scevgep23.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 992 ; [#uses=1]
+ %scevgep.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1188 ; [#uses=1]
+ %scevgep32.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 5 ; [#uses=1]
+ %scevgep31.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 5 ; [#uses=1]
+ %scevgep30.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 5 ; [#uses=1]
+ %scevgep2627.2 = bitcast i8* %scevgep26.2 to float* ; [#uses=1]
+ %scevgep2324.2 = bitcast i8* %scevgep23.2 to float* ; [#uses=1]
+ %scevgep20.2 = bitcast i8* %scevgep.2 to float* ; [#uses=1]
+ %56 = load float* %scevgep20.2, align 4 ; [#uses=1]
+ %57 = load float* %scevgep30.2, align 4 ; [#uses=1]
+ %58 = fsub float %56, %57 ; [#uses=1]
+ %59 = fsub float -0.000000e+00, %58 ; [#uses=1]
+ %60 = load float* %scevgep31.2, align 4 ; [#uses=1]
+ %61 = fmul float %60, %59 ; [#uses=2]
+ %62 = load float* %19, align 4 ; [#uses=1]
+ %63 = load float* %scevgep32.2, align 4 ; [#uses=1]
+ %64 = fmul float %62, %63 ; [#uses=1]
+ %65 = load i32* %20, align 4 ; [#uses=1]
+ %66 = sitofp i32 %65 to float ; [#uses=1]
+ %67 = fdiv float %64, %66 ; [#uses=1]
+ %68 = fmul float %67, %61 ; [#uses=1]
+ store float %68, float* %scevgep2324.2, align 4
+ %69 = tail call float @fabsf(float %61) nounwind readnone ; [#uses=1]
+ %70 = load float* %19, align 4 ; [#uses=1]
+ %71 = fdiv float %69, %70 ; [#uses=1]
+ store float %71, float* %scevgep2627.2, align 4
+ ret void
+
+bb2.1: ; preds = %bb1.1, %bb2
+ %scevgep42.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ %72 = load i8* %scevgep42.2, align 1 ; [#uses=1]
+ %toBool.2 = icmp eq i8 %72, 0 ; [#uses=1]
+ br i1 %toBool.2, label %bb.nph, label %bb1.2
+
+bb1.1: ; preds = %bb2
+ %scevgep40.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 800 ; [#uses=1]
+ %scevgep37.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 784 ; [#uses=1]
+ %scevgep34.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1248 ; [#uses=1]
+ %scevgep45.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ %scevgep44.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ %scevgep43.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %scevgep4041.1 = bitcast i8* %scevgep40.1 to float* ; [#uses=1]
+ %scevgep3738.1 = bitcast i8* %scevgep37.1 to float* ; [#uses=1]
+ %scevgep3435.1 = bitcast i8* %scevgep34.1 to float* ; [#uses=1]
+ %73 = load float* %scevgep3435.1, align 4 ; [#uses=1]
+ %74 = load float* %scevgep43.1, align 4 ; [#uses=1]
+ %75 = fsub float %73, %74 ; [#uses=1]
+ %76 = load float* %scevgep44.1, align 4 ; [#uses=1]
+ %77 = fmul float %76, %75 ; [#uses=2]
+ %78 = load float* %0, align 4 ; [#uses=1]
+ %79 = load float* %scevgep45.1, align 4 ; [#uses=1]
+ %80 = fmul float %78, %79 ; [#uses=1]
+ %81 = load i32* %1, align 4 ; [#uses=1]
+ %82 = sitofp i32 %81 to float ; [#uses=1]
+ %83 = fdiv float %80, %82 ; [#uses=1]
+ %84 = fmul float %83, %77 ; [#uses=1]
+ store float %84, float* %scevgep3738.1, align 4
+ %85 = tail call float @fabsf(float %77) nounwind readnone ; [#uses=1]
+ %86 = load float* %0, align 4 ; [#uses=1]
+ %87 = fdiv float %85, %86 ; [#uses=1]
+ store float %87, float* %scevgep4041.1, align 4
+ br label %bb2.1
+
+bb1.2: ; preds = %bb2.1
+ %scevgep40.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 804 ; [#uses=1]
+ %scevgep37.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 788 ; [#uses=1]
+ %scevgep34.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1252 ; [#uses=1]
+ %scevgep45.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ %scevgep44.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ %scevgep43.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ %scevgep4041.2 = bitcast i8* %scevgep40.2 to float* ; [#uses=1]
+ %scevgep3738.2 = bitcast i8* %scevgep37.2 to float* ; [#uses=1]
+ %scevgep3435.2 = bitcast i8* %scevgep34.2 to float* ; [#uses=1]
+ %88 = load float* %scevgep3435.2, align 4 ; [#uses=1]
+ %89 = load float* %scevgep43.2, align 4 ; [#uses=1]
+ %90 = fsub float %88, %89 ; [#uses=1]
+ %91 = load float* %scevgep44.2, align 4 ; [#uses=1]
+ %92 = fmul float %91, %90 ; [#uses=2]
+ %93 = load float* %0, align 4 ; [#uses=1]
+ %94 = load float* %scevgep45.2, align 4 ; [#uses=1]
+ %95 = fmul float %93, %94 ; [#uses=1]
+ %96 = load i32* %1, align 4 ; [#uses=1]
+ %97 = sitofp i32 %96 to float ; [#uses=1]
+ %98 = fdiv float %95, %97 ; [#uses=1]
+ %99 = fmul float %98, %92 ; [#uses=1]
+ store float %99, float* %scevgep3738.2, align 4
+ %100 = tail call float @fabsf(float %92) nounwind readnone ; [#uses=1]
+ %101 = load float* %0, align 4 ; [#uses=1]
+ %102 = fdiv float %100, %101 ; [#uses=1]
+ store float %102, float* %scevgep4041.2, align 4
+ br label %bb.nph
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN29btGeneric6DofSpringConstraintD0Ev(%struct.btGeneric6DofSpringConstraint* %this) nounwind align 2 {
+entry:
+ %0 = bitcast %struct.btGeneric6DofSpringConstraint* %this to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV23btGeneric6DofConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN29btGeneric6DofSpringConstraintD1Ev(%struct.btGeneric6DofSpringConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = bitcast %struct.btGeneric6DofSpringConstraint* %this to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV23btGeneric6DofConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN29btGeneric6DofSpringConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E(%struct.btGeneric6DofSpringConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info) align 2 {
+entry:
+ tail call void @_ZN29btGeneric6DofSpringConstraint21internalUpdateSpringsEPN17btTypedConstraint17btConstraintInfo2E(%struct.btGeneric6DofSpringConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info) nounwind
+ %0 = bitcast %struct.btGeneric6DofSpringConstraint* %this to %struct.btGeneric6DofConstraint* ; [#uses=1]
+ tail call void @_ZN23btGeneric6DofConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E(%struct.btGeneric6DofConstraint* %0, %"struct.btTypedConstraint::btConstraintInfo2"* %info)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN29btGeneric6DofSpringConstraint19setEquilibriumPointEi(%struct.btGeneric6DofSpringConstraint* %this, i32 %index) align 2 {
+entry:
+ %0 = bitcast %struct.btGeneric6DofSpringConstraint* %this to %struct.btGeneric6DofConstraint* ; [#uses=1]
+ tail call void @_ZN23btGeneric6DofConstraint19calculateTransformsEv(%struct.btGeneric6DofConstraint* %0)
+ %1 = icmp slt i32 %index, 3 ; [#uses=1]
+ br i1 %1, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1244 ; [#uses=1]
+ %3 = bitcast i8* %2 to float* ; [#uses=1]
+ %4 = getelementptr inbounds float* %3, i32 %index ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 %index ; [#uses=1]
+ store float %5, float* %6, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1180 ; [#uses=1]
+ %8 = bitcast i8* %7 to float* ; [#uses=1]
+ %9 = add nsw i32 %index, -3 ; [#uses=1]
+ %10 = getelementptr inbounds float* %8, i32 %9 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 %index ; [#uses=1]
+ store float %11, float* %12, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN29btGeneric6DofSpringConstraint19setEquilibriumPointEv(%struct.btGeneric6DofSpringConstraint* %this) align 2 {
+return:
+ %0 = bitcast %struct.btGeneric6DofSpringConstraint* %this to %struct.btGeneric6DofConstraint* ; [#uses=1]
+ tail call void @_ZN23btGeneric6DofConstraint19calculateTransformsEv(%struct.btGeneric6DofConstraint* %0)
+ %scevgep14 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1244 ; [#uses=1]
+ %scevgep1415 = bitcast i8* %scevgep14 to float* ; [#uses=1]
+ %scevgep16 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ %1 = load float* %scevgep1415, align 4 ; [#uses=1]
+ store float %1, float* %scevgep16, align 4
+ %scevgep14.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1248 ; [#uses=1]
+ %scevgep1415.1 = bitcast i8* %scevgep14.1 to float* ; [#uses=1]
+ %scevgep16.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %2 = load float* %scevgep1415.1, align 4 ; [#uses=1]
+ store float %2, float* %scevgep16.1, align 4
+ %scevgep14.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1252 ; [#uses=1]
+ %scevgep1415.2 = bitcast i8* %scevgep14.2 to float* ; [#uses=1]
+ %scevgep16.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ %3 = load float* %scevgep1415.2, align 4 ; [#uses=1]
+ store float %3, float* %scevgep16.2, align 4
+ %scevgep = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1180 ; [#uses=1]
+ %scevgep10 = bitcast i8* %scevgep to float* ; [#uses=1]
+ %scevgep12 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %4 = load float* %scevgep10, align 4 ; [#uses=1]
+ store float %4, float* %scevgep12, align 4
+ %scevgep.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1184 ; [#uses=1]
+ %scevgep10.1 = bitcast i8* %scevgep.1 to float* ; [#uses=1]
+ %scevgep12.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %5 = load float* %scevgep10.1, align 4 ; [#uses=1]
+ store float %5, float* %scevgep12.1, align 4
+ %scevgep.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 0, i32 1188 ; [#uses=1]
+ %scevgep10.2 = bitcast i8* %scevgep.2 to float* ; [#uses=1]
+ %scevgep12.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 5 ; [#uses=1]
+ %6 = load float* %scevgep10.2, align 4 ; [#uses=1]
+ store float %6, float* %scevgep12.2, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN29btGeneric6DofSpringConstraintC1ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btGeneric6DofSpringConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* %frameInA, %struct.btTransform* %frameInB, i8 zeroext %useLinearReferenceFrameA) align 2 {
+return:
+ %0 = bitcast %struct.btGeneric6DofSpringConstraint* %this to %struct.btGeneric6DofConstraint* ; [#uses=1]
+ tail call void @_ZN23btGeneric6DofConstraintC2ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btGeneric6DofConstraint* %0, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* %frameInA, %struct.btTransform* %frameInB, i8 zeroext %useLinearReferenceFrameA)
+ %1 = bitcast %struct.btGeneric6DofSpringConstraint* %this to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV29btGeneric6DofSpringConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %scevgep = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %scevgep4 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ %scevgep5 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 0 ; [#uses=1]
+ store i8 0, i8* %scevgep, align 1
+ store float 0.000000e+00, float* %scevgep4, align 4
+ store float 0.000000e+00, float* %scevgep5, align 4
+ store float 1.000000e+00, float* %scevgep6, align 4
+ %scevgep.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %scevgep4.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %scevgep5.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ %scevgep6.1 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i8 0, i8* %scevgep.1, align 1
+ store float 0.000000e+00, float* %scevgep4.1, align 4
+ store float 0.000000e+00, float* %scevgep5.1, align 4
+ store float 1.000000e+00, float* %scevgep6.1, align 4
+ %scevgep.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ %scevgep4.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ %scevgep5.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ %scevgep6.2 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i8 0, i8* %scevgep.2, align 1
+ store float 0.000000e+00, float* %scevgep4.2, align 4
+ store float 0.000000e+00, float* %scevgep5.2, align 4
+ store float 1.000000e+00, float* %scevgep6.2, align 4
+ %scevgep.3 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %scevgep4.3 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %scevgep5.3 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %scevgep6.3 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ store i8 0, i8* %scevgep.3, align 1
+ store float 0.000000e+00, float* %scevgep4.3, align 4
+ store float 0.000000e+00, float* %scevgep5.3, align 4
+ store float 1.000000e+00, float* %scevgep6.3, align 4
+ %scevgep.4 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %scevgep4.4 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %scevgep5.4 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %scevgep6.4 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 0, i8* %scevgep.4, align 1
+ store float 0.000000e+00, float* %scevgep4.4, align 4
+ store float 0.000000e+00, float* %scevgep5.4, align 4
+ store float 1.000000e+00, float* %scevgep6.4, align 4
+ %scevgep.5 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 1, i32 5 ; [#uses=1]
+ %scevgep4.5 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 2, i32 5 ; [#uses=1]
+ %scevgep5.5 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 3, i32 5 ; [#uses=1]
+ %scevgep6.5 = getelementptr %struct.btGeneric6DofSpringConstraint* %this, i32 0, i32 4, i32 5 ; [#uses=1]
+ store i8 0, i8* %scevgep.5, align 1
+ store float 0.000000e+00, float* %scevgep4.5, align 4
+ store float 0.000000e+00, float* %scevgep5.5, align 4
+ store float 1.000000e+00, float* %scevgep6.5, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btHinge2ConstraintC2ER11btRigidBodyS1_R9btVector3S3_S3_(%struct.btHinge2Constraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btQuadWord* nocapture %anchor, %struct.btQuadWord* nocapture %axis1, %struct.btQuadWord* nocapture %axis2) align 2 {
+invcont3:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = call %struct.btTransform* @_ZN11btTransform11getIdentityEv() ; [#uses=0]
+ %3 = call %struct.btTransform* @_ZN11btTransform11getIdentityEv() ; [#uses=0]
+ %4 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0 ; [#uses=5]
+ call void @_ZN29btGeneric6DofSpringConstraintC2ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btGeneric6DofSpringConstraint* %4, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, %struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i8 zeroext 1)
+ %5 = bitcast %struct.btHinge2Constraint* %this to i32 (...)*** ; [#uses=2]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV18btHinge2Constraint, i32 0, i32 2), i32 (...)*** %5, align 4
+ %6 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %anchor, i32 0, i32 0, i32 0 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %anchor, i32 0, i32 0, i32 1 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %anchor, i32 0, i32 0, i32 2 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %anchor, i32 0, i32 0, i32 3 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %axis1, i32 0, i32 0, i32 0 ; [#uses=3]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %axis1, i32 0, i32 0, i32 1 ; [#uses=3]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %axis1, i32 0, i32 0, i32 2 ; [#uses=3]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %axis1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %axis2, i32 0, i32 0, i32 0 ; [#uses=3]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %axis2, i32 0, i32 0, i32 1 ; [#uses=3]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %axis2, i32 0, i32 0, i32 2 ; [#uses=3]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuadWord* %axis2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ store float %41, float* %39, align 4
+ %42 = load float* %19, align 4 ; [#uses=3]
+ %43 = fmul float %42, %42 ; [#uses=1]
+ %44 = load float* %22, align 4 ; [#uses=3]
+ %45 = fmul float %44, %44 ; [#uses=1]
+ %46 = fadd float %43, %45 ; [#uses=1]
+ %47 = load float* %25, align 4 ; [#uses=3]
+ %48 = fmul float %47, %47 ; [#uses=1]
+ %49 = fadd float %46, %48 ; [#uses=1]
+ %50 = call float @sqrtf(float %49) nounwind readonly ; [#uses=1]
+ %51 = fdiv float 1.000000e+00, %50 ; [#uses=3]
+ %52 = fmul float %42, %51 ; [#uses=9]
+ store float %52, float* %19, align 4
+ %53 = fmul float %44, %51 ; [#uses=9]
+ store float %53, float* %22, align 4
+ %54 = fmul float %47, %51 ; [#uses=9]
+ store float %54, float* %25, align 4
+ %55 = load float* %31, align 4 ; [#uses=3]
+ %56 = fmul float %55, %55 ; [#uses=1]
+ %57 = load float* %34, align 4 ; [#uses=3]
+ %58 = fmul float %57, %57 ; [#uses=1]
+ %59 = fadd float %56, %58 ; [#uses=1]
+ %60 = load float* %37, align 4 ; [#uses=3]
+ %61 = fmul float %60, %60 ; [#uses=1]
+ %62 = fadd float %59, %61 ; [#uses=1]
+ %63 = call float @sqrtf(float %62) nounwind readonly ; [#uses=1]
+ %64 = fdiv float 1.000000e+00, %63 ; [#uses=3]
+ %65 = fmul float %55, %64 ; [#uses=9]
+ store float %65, float* %31, align 4
+ %66 = fmul float %57, %64 ; [#uses=9]
+ store float %66, float* %34, align 4
+ %67 = fmul float %60, %64 ; [#uses=9]
+ store float %67, float* %37, align 4
+ %68 = fmul float %52, %66 ; [#uses=1]
+ %69 = fmul float %53, %65 ; [#uses=1]
+ %70 = fsub float %68, %69 ; [#uses=6]
+ %71 = fmul float %54, %65 ; [#uses=1]
+ %72 = fmul float %52, %67 ; [#uses=1]
+ %73 = fsub float %71, %72 ; [#uses=6]
+ %74 = fmul float %53, %67 ; [#uses=1]
+ %75 = fmul float %54, %66 ; [#uses=1]
+ %76 = fsub float %74, %75 ; [#uses=6]
+ %77 = load float* %7, align 4 ; [#uses=6]
+ %78 = load float* %10, align 4 ; [#uses=6]
+ %79 = load float* %13, align 4 ; [#uses=6]
+ %80 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=5]
+ %90 = load float* %87, align 4 ; [#uses=5]
+ %91 = load float* %86, align 4 ; [#uses=5]
+ %92 = load float* %85, align 4 ; [#uses=5]
+ %93 = load float* %84, align 4 ; [#uses=5]
+ %94 = load float* %83, align 4 ; [#uses=5]
+ %95 = load float* %82, align 4 ; [#uses=5]
+ %96 = load float* %81, align 4 ; [#uses=5]
+ %97 = load float* %80, align 4 ; [#uses=5]
+ %98 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ %100 = fsub float -0.000000e+00, %99 ; [#uses=3]
+ %101 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fsub float -0.000000e+00, %102 ; [#uses=3]
+ %104 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ %106 = fsub float -0.000000e+00, %105 ; [#uses=3]
+ %107 = fmul float %90, %78 ; [#uses=1]
+ %108 = fmul float %89, %77 ; [#uses=1]
+ %109 = fmul float %93, %78 ; [#uses=1]
+ %110 = fmul float %92, %77 ; [#uses=1]
+ %111 = fmul float %96, %78 ; [#uses=1]
+ %112 = fmul float %95, %77 ; [#uses=1]
+ %113 = fmul float %95, %106 ; [#uses=1]
+ %114 = fmul float %96, %103 ; [#uses=1]
+ %115 = fmul float %92, %106 ; [#uses=1]
+ %116 = fmul float %93, %103 ; [#uses=1]
+ %117 = fmul float %89, %106 ; [#uses=1]
+ %118 = fmul float %90, %103 ; [#uses=1]
+ %119 = fmul float %66, %90 ; [#uses=1]
+ %120 = fmul float %65, %89 ; [#uses=1]
+ %121 = fmul float %73, %90 ; [#uses=1]
+ %122 = fmul float %76, %89 ; [#uses=1]
+ %123 = fmul float %53, %90 ; [#uses=1]
+ %124 = fmul float %52, %89 ; [#uses=1]
+ %125 = fmul float %66, %93 ; [#uses=1]
+ %126 = fmul float %65, %92 ; [#uses=1]
+ %127 = fmul float %73, %93 ; [#uses=1]
+ %128 = fmul float %76, %92 ; [#uses=1]
+ %129 = fmul float %53, %93 ; [#uses=1]
+ %130 = fmul float %52, %92 ; [#uses=1]
+ %131 = fmul float %66, %96 ; [#uses=1]
+ %132 = fmul float %65, %95 ; [#uses=1]
+ %133 = fmul float %73, %96 ; [#uses=1]
+ %134 = fmul float %76, %95 ; [#uses=1]
+ %135 = fmul float %53, %96 ; [#uses=1]
+ %136 = fmul float %52, %95 ; [#uses=1]
+ %137 = fmul float %91, %79 ; [#uses=1]
+ %138 = fadd float %108, %107 ; [#uses=1]
+ %139 = fmul float %94, %79 ; [#uses=1]
+ %140 = fadd float %110, %109 ; [#uses=1]
+ %141 = fmul float %97, %79 ; [#uses=1]
+ %142 = fadd float %112, %111 ; [#uses=1]
+ %143 = fadd float %113, %114 ; [#uses=1]
+ %144 = fmul float %97, %100 ; [#uses=1]
+ %145 = fadd float %115, %116 ; [#uses=1]
+ %146 = fmul float %94, %100 ; [#uses=1]
+ %147 = fadd float %117, %118 ; [#uses=1]
+ %148 = fmul float %91, %100 ; [#uses=1]
+ %149 = fmul float %67, %91 ; [#uses=1]
+ %150 = fadd float %120, %119 ; [#uses=1]
+ %151 = fmul float %70, %91 ; [#uses=1]
+ %152 = fadd float %122, %121 ; [#uses=1]
+ %153 = fmul float %54, %91 ; [#uses=1]
+ %154 = fadd float %124, %123 ; [#uses=1]
+ %155 = fmul float %67, %94 ; [#uses=1]
+ %156 = fadd float %126, %125 ; [#uses=1]
+ %157 = fmul float %70, %94 ; [#uses=1]
+ %158 = fadd float %128, %127 ; [#uses=1]
+ %159 = fmul float %54, %94 ; [#uses=1]
+ %160 = fadd float %130, %129 ; [#uses=1]
+ %161 = fmul float %67, %97 ; [#uses=1]
+ %162 = fadd float %132, %131 ; [#uses=1]
+ %163 = fmul float %70, %97 ; [#uses=1]
+ %164 = fadd float %134, %133 ; [#uses=1]
+ %165 = fmul float %54, %97 ; [#uses=1]
+ %166 = fadd float %136, %135 ; [#uses=1]
+ %167 = fadd float %138, %137 ; [#uses=1]
+ %168 = fadd float %140, %139 ; [#uses=1]
+ %169 = fadd float %142, %141 ; [#uses=1]
+ %170 = fadd float %143, %144 ; [#uses=1]
+ %171 = fadd float %145, %146 ; [#uses=1]
+ %172 = fadd float %147, %148 ; [#uses=1]
+ %173 = fadd float %150, %149 ; [#uses=1]
+ %174 = fadd float %152, %151 ; [#uses=1]
+ %175 = fadd float %154, %153 ; [#uses=1]
+ %176 = fadd float %156, %155 ; [#uses=1]
+ %177 = fadd float %158, %157 ; [#uses=1]
+ %178 = fadd float %160, %159 ; [#uses=1]
+ %179 = fadd float %162, %161 ; [#uses=1]
+ %180 = fadd float %164, %163 ; [#uses=1]
+ %181 = fadd float %166, %165 ; [#uses=1]
+ %182 = fadd float %167, %172 ; [#uses=1]
+ %183 = fadd float %168, %171 ; [#uses=1]
+ %184 = fadd float %169, %170 ; [#uses=1]
+ %185 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 36 ; [#uses=1]
+ %186 = bitcast i8* %185 to float* ; [#uses=1]
+ store float %173, float* %186, align 4
+ %187 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 40 ; [#uses=1]
+ %188 = bitcast i8* %187 to float* ; [#uses=1]
+ store float %174, float* %188, align 4
+ %189 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 44 ; [#uses=1]
+ %190 = bitcast i8* %189 to float* ; [#uses=1]
+ store float %175, float* %190, align 4
+ %191 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 48 ; [#uses=1]
+ %192 = bitcast i8* %191 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %192, align 4
+ %193 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 52 ; [#uses=1]
+ %194 = bitcast i8* %193 to float* ; [#uses=1]
+ store float %176, float* %194, align 4
+ %195 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 56 ; [#uses=1]
+ %196 = bitcast i8* %195 to float* ; [#uses=1]
+ store float %177, float* %196, align 4
+ %197 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 60 ; [#uses=1]
+ %198 = bitcast i8* %197 to float* ; [#uses=1]
+ store float %178, float* %198, align 4
+ %199 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 64 ; [#uses=1]
+ %200 = bitcast i8* %199 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %200, align 4
+ %201 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 68 ; [#uses=1]
+ %202 = bitcast i8* %201 to float* ; [#uses=1]
+ store float %179, float* %202, align 4
+ %203 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 72 ; [#uses=1]
+ %204 = bitcast i8* %203 to float* ; [#uses=1]
+ store float %180, float* %204, align 4
+ %205 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 76 ; [#uses=1]
+ %206 = bitcast i8* %205 to float* ; [#uses=1]
+ store float %181, float* %206, align 4
+ %207 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 80 ; [#uses=1]
+ %208 = bitcast i8* %207 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %208, align 4
+ %209 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 84 ; [#uses=1]
+ %210 = bitcast i8* %209 to float* ; [#uses=1]
+ store float %182, float* %210, align 4
+ %211 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 88 ; [#uses=1]
+ %212 = bitcast i8* %211 to float* ; [#uses=1]
+ store float %183, float* %212, align 4
+ %213 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 92 ; [#uses=1]
+ %214 = bitcast i8* %213 to float* ; [#uses=1]
+ store float %184, float* %214, align 4
+ %215 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 96 ; [#uses=1]
+ %216 = bitcast i8* %215 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %216, align 4
+ %217 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %218 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %219 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %220 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %221 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %222 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %223 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %224 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %225 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %226 = load float* %225, align 4 ; [#uses=5]
+ %227 = load float* %224, align 4 ; [#uses=5]
+ %228 = load float* %223, align 4 ; [#uses=5]
+ %229 = load float* %222, align 4 ; [#uses=5]
+ %230 = load float* %221, align 4 ; [#uses=5]
+ %231 = load float* %220, align 4 ; [#uses=5]
+ %232 = load float* %219, align 4 ; [#uses=5]
+ %233 = load float* %218, align 4 ; [#uses=5]
+ %234 = load float* %217, align 4 ; [#uses=5]
+ %235 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %236 = load float* %235, align 4 ; [#uses=1]
+ %237 = fsub float -0.000000e+00, %236 ; [#uses=3]
+ %238 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %239 = load float* %238, align 4 ; [#uses=1]
+ %240 = fsub float -0.000000e+00, %239 ; [#uses=3]
+ %241 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %242 = load float* %241, align 4 ; [#uses=1]
+ %243 = fsub float -0.000000e+00, %242 ; [#uses=3]
+ %244 = fmul float %227, %78 ; [#uses=1]
+ %245 = fmul float %226, %77 ; [#uses=1]
+ %246 = fmul float %230, %78 ; [#uses=1]
+ %247 = fmul float %229, %77 ; [#uses=1]
+ %248 = fmul float %233, %78 ; [#uses=1]
+ %249 = fmul float %232, %77 ; [#uses=1]
+ %250 = fmul float %232, %243 ; [#uses=1]
+ %251 = fmul float %233, %240 ; [#uses=1]
+ %252 = fmul float %229, %243 ; [#uses=1]
+ %253 = fmul float %230, %240 ; [#uses=1]
+ %254 = fmul float %226, %243 ; [#uses=1]
+ %255 = fmul float %227, %240 ; [#uses=1]
+ %256 = fmul float %66, %227 ; [#uses=1]
+ %257 = fmul float %65, %226 ; [#uses=1]
+ %258 = fmul float %73, %227 ; [#uses=1]
+ %259 = fmul float %76, %226 ; [#uses=1]
+ %260 = fmul float %53, %227 ; [#uses=1]
+ %261 = fmul float %52, %226 ; [#uses=1]
+ %262 = fmul float %66, %230 ; [#uses=1]
+ %263 = fmul float %65, %229 ; [#uses=1]
+ %264 = fmul float %73, %230 ; [#uses=1]
+ %265 = fmul float %76, %229 ; [#uses=1]
+ %266 = fmul float %53, %230 ; [#uses=1]
+ %267 = fmul float %52, %229 ; [#uses=1]
+ %268 = fmul float %66, %233 ; [#uses=1]
+ %269 = fmul float %65, %232 ; [#uses=1]
+ %270 = fmul float %73, %233 ; [#uses=1]
+ %271 = fmul float %76, %232 ; [#uses=1]
+ %272 = fmul float %53, %233 ; [#uses=1]
+ %273 = fmul float %52, %232 ; [#uses=1]
+ %274 = fmul float %228, %79 ; [#uses=1]
+ %275 = fadd float %245, %244 ; [#uses=1]
+ %276 = fmul float %231, %79 ; [#uses=1]
+ %277 = fadd float %247, %246 ; [#uses=1]
+ %278 = fmul float %234, %79 ; [#uses=1]
+ %279 = fadd float %249, %248 ; [#uses=1]
+ %280 = fadd float %250, %251 ; [#uses=1]
+ %281 = fmul float %234, %237 ; [#uses=1]
+ %282 = fadd float %252, %253 ; [#uses=1]
+ %283 = fmul float %231, %237 ; [#uses=1]
+ %284 = fadd float %254, %255 ; [#uses=1]
+ %285 = fmul float %228, %237 ; [#uses=1]
+ %286 = fmul float %67, %228 ; [#uses=1]
+ %287 = fadd float %257, %256 ; [#uses=1]
+ %288 = fmul float %70, %228 ; [#uses=1]
+ %289 = fadd float %259, %258 ; [#uses=1]
+ %290 = fmul float %54, %228 ; [#uses=1]
+ %291 = fadd float %261, %260 ; [#uses=1]
+ %292 = fmul float %67, %231 ; [#uses=1]
+ %293 = fadd float %263, %262 ; [#uses=1]
+ %294 = fmul float %70, %231 ; [#uses=1]
+ %295 = fadd float %265, %264 ; [#uses=1]
+ %296 = fmul float %54, %231 ; [#uses=1]
+ %297 = fadd float %267, %266 ; [#uses=1]
+ %298 = fmul float %67, %234 ; [#uses=1]
+ %299 = fadd float %269, %268 ; [#uses=1]
+ %300 = fmul float %70, %234 ; [#uses=1]
+ %301 = fadd float %271, %270 ; [#uses=1]
+ %302 = fmul float %54, %234 ; [#uses=1]
+ %303 = fadd float %273, %272 ; [#uses=1]
+ %304 = fadd float %275, %274 ; [#uses=1]
+ %305 = fadd float %277, %276 ; [#uses=1]
+ %306 = fadd float %279, %278 ; [#uses=1]
+ %307 = fadd float %280, %281 ; [#uses=1]
+ %308 = fadd float %282, %283 ; [#uses=1]
+ %309 = fadd float %284, %285 ; [#uses=1]
+ %310 = fadd float %287, %286 ; [#uses=1]
+ %311 = fadd float %289, %288 ; [#uses=1]
+ %312 = fadd float %291, %290 ; [#uses=1]
+ %313 = fadd float %293, %292 ; [#uses=1]
+ %314 = fadd float %295, %294 ; [#uses=1]
+ %315 = fadd float %297, %296 ; [#uses=1]
+ %316 = fadd float %299, %298 ; [#uses=1]
+ %317 = fadd float %301, %300 ; [#uses=1]
+ %318 = fadd float %303, %302 ; [#uses=1]
+ %319 = fadd float %304, %309 ; [#uses=1]
+ %320 = fadd float %305, %308 ; [#uses=1]
+ %321 = fadd float %306, %307 ; [#uses=1]
+ %322 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 100 ; [#uses=1]
+ %323 = bitcast i8* %322 to float* ; [#uses=1]
+ store float %310, float* %323, align 4
+ %324 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 104 ; [#uses=1]
+ %325 = bitcast i8* %324 to float* ; [#uses=1]
+ store float %311, float* %325, align 4
+ %326 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 108 ; [#uses=1]
+ %327 = bitcast i8* %326 to float* ; [#uses=1]
+ store float %312, float* %327, align 4
+ %328 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 112 ; [#uses=1]
+ %329 = bitcast i8* %328 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %329, align 4
+ %330 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 116 ; [#uses=1]
+ %331 = bitcast i8* %330 to float* ; [#uses=1]
+ store float %313, float* %331, align 4
+ %332 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 120 ; [#uses=1]
+ %333 = bitcast i8* %332 to float* ; [#uses=1]
+ store float %314, float* %333, align 4
+ %334 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 124 ; [#uses=1]
+ %335 = bitcast i8* %334 to float* ; [#uses=1]
+ store float %315, float* %335, align 4
+ %336 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 128 ; [#uses=1]
+ %337 = bitcast i8* %336 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %337, align 4
+ %338 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 132 ; [#uses=1]
+ %339 = bitcast i8* %338 to float* ; [#uses=1]
+ store float %316, float* %339, align 4
+ %340 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 136 ; [#uses=1]
+ %341 = bitcast i8* %340 to float* ; [#uses=1]
+ store float %317, float* %341, align 4
+ %342 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 140 ; [#uses=1]
+ %343 = bitcast i8* %342 to float* ; [#uses=1]
+ store float %318, float* %343, align 4
+ %344 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 144 ; [#uses=1]
+ %345 = bitcast i8* %344 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %345, align 4
+ %346 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 148 ; [#uses=1]
+ %347 = bitcast i8* %346 to float* ; [#uses=1]
+ store float %319, float* %347, align 4
+ %348 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 152 ; [#uses=1]
+ %349 = bitcast i8* %348 to float* ; [#uses=1]
+ store float %320, float* %349, align 4
+ %350 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 156 ; [#uses=1]
+ %351 = bitcast i8* %350 to float* ; [#uses=1]
+ store float %321, float* %351, align 4
+ %352 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 160 ; [#uses=1]
+ %353 = bitcast i8* %352 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %353, align 4
+ %354 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 668 ; [#uses=1]
+ %355 = bitcast i8* %354 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %355, align 4
+ %356 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 672 ; [#uses=1]
+ %357 = bitcast i8* %356 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %357, align 4
+ %358 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 676 ; [#uses=1]
+ %359 = bitcast i8* %358 to float* ; [#uses=1]
+ store float -1.000000e+00, float* %359, align 4
+ %360 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 680 ; [#uses=1]
+ %361 = bitcast i8* %360 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %361, align 4
+ %362 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 684 ; [#uses=1]
+ %363 = bitcast i8* %362 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %363, align 4
+ %364 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 688 ; [#uses=1]
+ %365 = bitcast i8* %364 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %365, align 4
+ %366 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 692 ; [#uses=1]
+ %367 = bitcast i8* %366 to float* ; [#uses=1]
+ store float 1.000000e+00, float* %367, align 4
+ %368 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 696 ; [#uses=1]
+ %369 = bitcast i8* %368 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %369, align 4
+ %370 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %370, align 8
+ %371 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %371, align 4
+ %372 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0xBFE921FB60000000, float* %372, align 8
+ %373 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %373, align 4
+ br label %bb.i14
+
+bb.i14: ; preds = %_Z16btNormalizeAnglef.exit.i19.bb.i14_crit_edge, %invcont3
+ %374 = phi float [ 1.000000e+00, %invcont3 ], [ %.pre, %_Z16btNormalizeAnglef.exit.i19.bb.i14_crit_edge ] ; [#uses=1]
+ %i.03.i12 = phi i32 [ 0, %invcont3 ], [ %381, %_Z16btNormalizeAnglef.exit.i19.bb.i14_crit_edge ] ; [#uses=2]
+ %tmp118 = shl i32 %i.03.i12, 6 ; [#uses=1]
+ %tmp119 = add i32 %tmp118, 856 ; [#uses=1]
+ %scevgep120 = getelementptr %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 %tmp119 ; [#uses=1]
+ %scevgep4.i13 = bitcast i8* %scevgep120 to float* ; [#uses=1]
+ %375 = call float @fmodf(float %374, float 0x401921FB60000000) nounwind readonly ; [#uses=5]
+ %376 = fcmp olt float %375, 0xC00921FB60000000 ; [#uses=1]
+ br i1 %376, label %bb.i.i15, label %bb1.i.i16
+
+bb.i.i15: ; preds = %bb.i14
+ %377 = fadd float %375, 0x401921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit.i19
+
+bb1.i.i16: ; preds = %bb.i14
+ %378 = fcmp ogt float %375, 0x400921FB60000000 ; [#uses=1]
+ br i1 %378, label %bb2.i.i17, label %_Z16btNormalizeAnglef.exit.i19
+
+bb2.i.i17: ; preds = %bb1.i.i16
+ %379 = fadd float %375, 0xC01921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit.i19
+
+_Z16btNormalizeAnglef.exit.i19: ; preds = %bb2.i.i17, %bb1.i.i16, %bb.i.i15
+ %380 = phi float [ %379, %bb2.i.i17 ], [ %377, %bb.i.i15 ], [ %375, %bb1.i.i16 ] ; [#uses=1]
+ store float %380, float* %scevgep4.i13, align 4
+ %381 = add nsw i32 %i.03.i12, 1 ; [#uses=3]
+ %exitcond116 = icmp eq i32 %381, 3 ; [#uses=1]
+ br i1 %exitcond116, label %_ZN23btGeneric6DofConstraint20setAngularLowerLimitERK9btVector3.exit, label %_Z16btNormalizeAnglef.exit.i19.bb.i14_crit_edge
+
+_Z16btNormalizeAnglef.exit.i19.bb.i14_crit_edge: ; preds = %_Z16btNormalizeAnglef.exit.i19
+ %scevgep5.i.phi.trans.insert = getelementptr %struct.btQuadWord* %1, i32 0, i32 0, i32 %381 ; [#uses=1]
+ %.pre = load float* %scevgep5.i.phi.trans.insert, align 4 ; [#uses=1]
+ br label %bb.i14
+
+_ZN23btGeneric6DofConstraint20setAngularLowerLimitERK9btVector3.exit: ; preds = %_Z16btNormalizeAnglef.exit.i19
+ %382 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float -1.000000e+00, float* %382, align 8
+ %383 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %383, align 4
+ %384 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0x3FE921FB60000000, float* %384, align 8
+ %385 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %385, align 4
+ br label %bb.i
+
+bb.i: ; preds = %_Z16btNormalizeAnglef.exit.i.bb.i_crit_edge, %_ZN23btGeneric6DofConstraint20setAngularLowerLimitERK9btVector3.exit
+ %386 = phi float [ -1.000000e+00, %_ZN23btGeneric6DofConstraint20setAngularLowerLimitERK9btVector3.exit ], [ %.pre122, %_Z16btNormalizeAnglef.exit.i.bb.i_crit_edge ] ; [#uses=1]
+ %i.03.i = phi i32 [ 0, %_ZN23btGeneric6DofConstraint20setAngularLowerLimitERK9btVector3.exit ], [ %393, %_Z16btNormalizeAnglef.exit.i.bb.i_crit_edge ] ; [#uses=2]
+ %tmp = shl i32 %i.03.i, 6 ; [#uses=1]
+ %tmp114 = add i32 %tmp, 860 ; [#uses=1]
+ %scevgep = getelementptr %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 %tmp114 ; [#uses=1]
+ %scevgep.i = bitcast i8* %scevgep to float* ; [#uses=1]
+ %387 = call float @fmodf(float %386, float 0x401921FB60000000) nounwind readonly ; [#uses=5]
+ %388 = fcmp olt float %387, 0xC00921FB60000000 ; [#uses=1]
+ br i1 %388, label %bb.i.i, label %bb1.i.i
+
+bb.i.i: ; preds = %bb.i
+ %389 = fadd float %387, 0x401921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit.i
+
+bb1.i.i: ; preds = %bb.i
+ %390 = fcmp ogt float %387, 0x400921FB60000000 ; [#uses=1]
+ br i1 %390, label %bb2.i.i, label %_Z16btNormalizeAnglef.exit.i
+
+bb2.i.i: ; preds = %bb1.i.i
+ %391 = fadd float %387, 0xC01921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit.i
+
+_Z16btNormalizeAnglef.exit.i: ; preds = %bb2.i.i, %bb1.i.i, %bb.i.i
+ %392 = phi float [ %391, %bb2.i.i ], [ %389, %bb.i.i ], [ %387, %bb1.i.i ] ; [#uses=1]
+ store float %392, float* %scevgep.i, align 4
+ %393 = add nsw i32 %i.03.i, 1 ; [#uses=3]
+ %exitcond = icmp eq i32 %393, 3 ; [#uses=1]
+ br i1 %exitcond, label %_ZN23btGeneric6DofConstraint20setAngularUpperLimitERK9btVector3.exit, label %_Z16btNormalizeAnglef.exit.i.bb.i_crit_edge
+
+_Z16btNormalizeAnglef.exit.i.bb.i_crit_edge: ; preds = %_Z16btNormalizeAnglef.exit.i
+ %scevgep4.i.phi.trans.insert = getelementptr %struct.btQuadWord* %0, i32 0, i32 0, i32 %393 ; [#uses=1]
+ %.pre122 = load float* %scevgep4.i.phi.trans.insert, align 4 ; [#uses=1]
+ br label %bb.i
+
+_ZN23btGeneric6DofConstraint20setAngularUpperLimitERK9btVector3.exit: ; preds = %_Z16btNormalizeAnglef.exit.i
+ invoke void @_ZN29btGeneric6DofSpringConstraint12enableSpringEib(%struct.btGeneric6DofSpringConstraint* %4, i32 2, i8 zeroext 1)
+ to label %invcont4 unwind label %lpad
+
+invcont4: ; preds = %_ZN23btGeneric6DofConstraint20setAngularUpperLimitERK9btVector3.exit
+ invoke void @_ZN29btGeneric6DofSpringConstraint12setStiffnessEif(%struct.btGeneric6DofSpringConstraint* %4, i32 2, float 0x4043BD3CE0000000)
+ to label %invcont5 unwind label %lpad
+
+invcont5: ; preds = %invcont4
+ invoke void @_ZN29btGeneric6DofSpringConstraint10setDampingEif(%struct.btGeneric6DofSpringConstraint* %4, i32 2, float 0x3F847AE140000000)
+ to label %invcont6 unwind label %lpad
+
+invcont6: ; preds = %invcont5
+ invoke void @_ZN29btGeneric6DofSpringConstraint19setEquilibriumPointEv(%struct.btGeneric6DofSpringConstraint* %4)
+ to label %return unwind label %lpad
+
+return: ; preds = %invcont6
+ ret void
+
+lpad: ; preds = %invcont6, %invcont5, %invcont4, %_ZN23btGeneric6DofConstraint20setAngularUpperLimitERK9btVector3.exit
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select10 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV23btGeneric6DofConstraint, i32 0, i32 2), i32 (...)*** %5, align 4
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btHinge2ConstraintD0Ev(%struct.btHinge2Constraint* %this) nounwind align 2 {
+entry:
+ %0 = bitcast %struct.btHinge2Constraint* %this to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV23btGeneric6DofConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btHinge2Constraint* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btHinge2ConstraintD1Ev(%struct.btHinge2Constraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = bitcast %struct.btHinge2Constraint* %this to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV23btGeneric6DofConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN18btHinge2ConstraintC1ER11btRigidBodyS1_R9btVector3S3_S3_(%struct.btHinge2Constraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btQuadWord* nocapture %anchor, %struct.btQuadWord* nocapture %axis1, %struct.btQuadWord* nocapture %axis2) align 2 {
+entry:
+ tail call void @_ZN18btHinge2ConstraintC2ER11btRigidBodyS1_R9btVector3S3_S3_(%struct.btHinge2Constraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btQuadWord* %anchor, %struct.btQuadWord* %axis1, %struct.btQuadWord* %axis2)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btHingeConstraintC2ER11btRigidBodyS1_RK9btVector3S4_S4_S4_b(%struct.btHingeConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btQuadWord* nocapture %pivotInA, %struct.btQuadWord* nocapture %pivotInB, %struct.btQuadWord* nocapture %axisInA, %struct.btQuadWord* nocapture %axisInB, i8 zeroext %useReferenceFrameA) align 2 {
+bb5:
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBodyS2_(%struct.btTypedConstraint* %0, i32 4, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB)
+ %1 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV17btHingeConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ store i8 0, i8* %3, align 1
+ %4 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ store i8 0, i8* %4, align 1
+ %5 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ store i8 1, i8* %5, align 4
+ %6 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ store i8 %useReferenceFrameA, i8* %6, align 1
+ %7 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 3 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=3]
+ %24 = load float* %21, align 4 ; [#uses=3]
+ %25 = load float* %20, align 4 ; [#uses=3]
+ %26 = getelementptr inbounds %struct.btQuadWord* %axisInA, i32 0, i32 0, i32 0 ; [#uses=3]
+ %27 = load float* %26, align 4 ; [#uses=5]
+ %28 = fmul float %27, %23 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuadWord* %axisInA, i32 0, i32 0, i32 1 ; [#uses=3]
+ %30 = load float* %29, align 4 ; [#uses=5]
+ %31 = fmul float %30, %24 ; [#uses=1]
+ %32 = fadd float %28, %31 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %axisInA, i32 0, i32 0, i32 2 ; [#uses=3]
+ %34 = load float* %33, align 4 ; [#uses=5]
+ %35 = fmul float %34, %25 ; [#uses=1]
+ %36 = fadd float %32, %35 ; [#uses=2]
+ %37 = fcmp ult float %36, 0x3FEFFFFFC0000000 ; [#uses=1]
+ br i1 %37, label %bb8, label %bb6
+
+bb6: ; preds = %bb5
+ %38 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = load float* %39, align 4 ; [#uses=1]
+ %43 = load float* %38, align 4 ; [#uses=1]
+ %44 = fsub float -0.000000e+00, %43 ; [#uses=1]
+ %45 = fsub float -0.000000e+00, %42 ; [#uses=1]
+ %46 = fsub float -0.000000e+00, %41 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = load float* %48, align 4 ; [#uses=1]
+ %52 = load float* %47, align 4 ; [#uses=1]
+ br label %bb15
+
+bb8: ; preds = %bb5
+ %53 = fcmp ugt float %36, 0xBFEFFFFFC0000000 ; [#uses=1]
+ br i1 %53, label %bb12, label %bb9
+
+bb9: ; preds = %bb8
+ %54 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = load float* %55, align 4 ; [#uses=1]
+ %59 = load float* %54, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ %64 = load float* %61, align 4 ; [#uses=1]
+ %65 = load float* %60, align 4 ; [#uses=1]
+ br label %bb15
+
+bb12: ; preds = %bb8
+ %66 = fmul float %27, %24 ; [#uses=1]
+ %67 = fmul float %30, %23 ; [#uses=1]
+ %68 = fsub float %66, %67 ; [#uses=3]
+ %69 = fmul float %34, %23 ; [#uses=1]
+ %70 = fmul float %27, %25 ; [#uses=1]
+ %71 = fsub float %69, %70 ; [#uses=3]
+ %72 = fmul float %30, %25 ; [#uses=1]
+ %73 = fmul float %34, %24 ; [#uses=1]
+ %74 = fsub float %72, %73 ; [#uses=3]
+ %75 = fmul float %74, %30 ; [#uses=1]
+ %76 = fmul float %71, %27 ; [#uses=1]
+ %77 = fsub float %75, %76 ; [#uses=1]
+ %78 = fmul float %68, %27 ; [#uses=1]
+ %79 = fmul float %74, %34 ; [#uses=1]
+ %80 = fsub float %78, %79 ; [#uses=1]
+ %81 = fmul float %71, %34 ; [#uses=1]
+ %82 = fmul float %68, %30 ; [#uses=1]
+ %83 = fsub float %81, %82 ; [#uses=1]
+ br label %bb15
+
+bb15: ; preds = %bb12, %bb9, %bb6
+ %rbAxisA2.0.2.0 = phi float [ %68, %bb12 ], [ %65, %bb9 ], [ %52, %bb6 ] ; [#uses=1]
+ %rbAxisA2.0.1.0 = phi float [ %71, %bb12 ], [ %64, %bb9 ], [ %51, %bb6 ] ; [#uses=1]
+ %rbAxisA2.0.0.0 = phi float [ %74, %bb12 ], [ %63, %bb9 ], [ %50, %bb6 ] ; [#uses=1]
+ %rbAxisA1.0.2.0 = phi float [ %77, %bb12 ], [ %59, %bb9 ], [ %44, %bb6 ] ; [#uses=5]
+ %rbAxisA1.0.1.0 = phi float [ %80, %bb12 ], [ %58, %bb9 ], [ %45, %bb6 ] ; [#uses=5]
+ %rbAxisA1.0.0.0 = phi float [ %83, %bb12 ], [ %57, %bb9 ], [ %46, %bb6 ] ; [#uses=5]
+ %84 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %rbAxisA1.0.0.0, float* %84, align 4
+ %85 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %rbAxisA2.0.0.0, float* %85, align 4
+ %86 = load float* %26, align 4 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %86, float* %87, align 4
+ %88 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %88, align 4
+ %89 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %rbAxisA1.0.1.0, float* %89, align 4
+ %90 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %rbAxisA2.0.1.0, float* %90, align 4
+ %91 = load float* %29, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %91, float* %92, align 4
+ %93 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %93, align 4
+ %94 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %rbAxisA1.0.2.0, float* %94, align 4
+ %95 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %rbAxisA2.0.2.0, float* %95, align 4
+ %96 = load float* %33, align 4 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %96, float* %97, align 4
+ %98 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %98, align 4
+ %99 = load float* %26, align 4 ; [#uses=6]
+ %100 = getelementptr inbounds %struct.btQuadWord* %axisInB, i32 0, i32 0, i32 1 ; [#uses=2]
+ %101 = load float* %100, align 4 ; [#uses=5]
+ %102 = load float* %29, align 4 ; [#uses=9]
+ %103 = getelementptr inbounds %struct.btQuadWord* %axisInB, i32 0, i32 0, i32 0 ; [#uses=2]
+ %104 = load float* %103, align 4 ; [#uses=5]
+ %105 = load float* %33, align 4 ; [#uses=7]
+ %106 = getelementptr inbounds %struct.btQuadWord* %axisInB, i32 0, i32 0, i32 2 ; [#uses=2]
+ %107 = load float* %106, align 4 ; [#uses=5]
+ %108 = fmul float %99, %104 ; [#uses=1]
+ %109 = fmul float %102, %101 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = fmul float %105, %107 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=2]
+ %113 = fcmp olt float %112, 0xBFEFFFFFC0000000 ; [#uses=1]
+ br i1 %113, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb15
+ %114 = tail call float @fabsf(float %105) nounwind readnone ; [#uses=1]
+ %115 = fcmp ogt float %114, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %115, label %bb.i.i, label %bb1.i.i
+
+bb.i.i: ; preds = %bb.i
+ %116 = fmul float %102, %102 ; [#uses=1]
+ %117 = fmul float %105, %105 ; [#uses=1]
+ %118 = fadd float %116, %117 ; [#uses=1]
+ %119 = tail call float @sqrtf(float %118) nounwind readonly ; [#uses=1]
+ %120 = fdiv float 1.000000e+00, %119 ; [#uses=2]
+ %121 = fsub float -0.000000e+00, %105 ; [#uses=1]
+ %122 = fmul float %120, %121 ; [#uses=1]
+ %123 = fmul float %102, %120 ; [#uses=1]
+ br label %invcont
+
+bb1.i.i: ; preds = %bb.i
+ %124 = fmul float %99, %99 ; [#uses=1]
+ %125 = fmul float %102, %102 ; [#uses=1]
+ %126 = fadd float %124, %125 ; [#uses=1]
+ %127 = tail call float @sqrtf(float %126) nounwind readonly ; [#uses=1]
+ %128 = fdiv float 1.000000e+00, %127 ; [#uses=2]
+ %129 = fsub float -0.000000e+00, %102 ; [#uses=1]
+ %130 = fmul float %128, %129 ; [#uses=1]
+ %131 = fmul float %99, %128 ; [#uses=1]
+ br label %invcont
+
+bb1.i: ; preds = %bb15
+ %132 = fmul float %105, %101 ; [#uses=1]
+ %133 = fmul float %102, %107 ; [#uses=1]
+ %134 = fmul float %99, %107 ; [#uses=1]
+ %135 = fmul float %105, %104 ; [#uses=1]
+ %136 = fmul float %102, %104 ; [#uses=1]
+ %137 = fmul float %99, %101 ; [#uses=1]
+ %138 = fsub float %133, %132 ; [#uses=1]
+ %139 = fsub float %135, %134 ; [#uses=1]
+ %140 = fsub float %137, %136 ; [#uses=1]
+ %141 = fadd float %112, 1.000000e+00 ; [#uses=1]
+ %142 = fmul float %141, 2.000000e+00 ; [#uses=1]
+ %143 = tail call float @sqrtf(float %142) nounwind readonly ; [#uses=2]
+ %144 = fdiv float 1.000000e+00, %143 ; [#uses=3]
+ %145 = fmul float %143, 5.000000e-01 ; [#uses=1]
+ %146 = fmul float %140, %144 ; [#uses=1]
+ %147 = fmul float %139, %144 ; [#uses=1]
+ %148 = fmul float %138, %144 ; [#uses=1]
+ br label %invcont
+
+invcont: ; preds = %bb1.i, %bb1.i.i, %bb.i.i
+ %rotationArc.0.0.3.0 = phi float [ %145, %bb1.i ], [ 0.000000e+00, %bb1.i.i ], [ 0.000000e+00, %bb.i.i ] ; [#uses=6]
+ %rotationArc.0.0.2.0 = phi float [ %146, %bb1.i ], [ 0.000000e+00, %bb1.i.i ], [ %123, %bb.i.i ] ; [#uses=4]
+ %rotationArc.0.0.1.0 = phi float [ %147, %bb1.i ], [ %131, %bb1.i.i ], [ %122, %bb.i.i ] ; [#uses=4]
+ %rotationArc.0.0.0.0 = phi float [ %148, %bb1.i ], [ %130, %bb1.i.i ], [ 0.000000e+00, %bb.i.i ] ; [#uses=3]
+ %149 = fsub float -0.000000e+00, %rotationArc.0.0.0.0 ; [#uses=4]
+ %150 = fmul float %rbAxisA1.0.0.0, %149 ; [#uses=1]
+ %151 = fmul float %rotationArc.0.0.1.0, %rbAxisA1.0.1.0 ; [#uses=1]
+ %152 = fsub float %150, %151 ; [#uses=1]
+ %153 = fmul float %rotationArc.0.0.2.0, %rbAxisA1.0.2.0 ; [#uses=1]
+ %154 = fsub float %152, %153 ; [#uses=3]
+ %155 = fmul float %rotationArc.0.0.3.0, %rbAxisA1.0.2.0 ; [#uses=1]
+ %156 = fmul float %rotationArc.0.0.0.0, %rbAxisA1.0.1.0 ; [#uses=1]
+ %157 = fadd float %155, %156 ; [#uses=1]
+ %158 = fmul float %rotationArc.0.0.1.0, %rbAxisA1.0.0.0 ; [#uses=1]
+ %159 = fsub float %157, %158 ; [#uses=3]
+ %160 = fmul float %rotationArc.0.0.3.0, %rbAxisA1.0.1.0 ; [#uses=1]
+ %161 = fmul float %rotationArc.0.0.2.0, %rbAxisA1.0.0.0 ; [#uses=1]
+ %162 = fadd float %160, %161 ; [#uses=1]
+ %163 = fmul float %rotationArc.0.0.0.0, %rbAxisA1.0.2.0 ; [#uses=1]
+ %164 = fsub float %162, %163 ; [#uses=3]
+ %165 = fmul float %rotationArc.0.0.3.0, %rbAxisA1.0.0.0 ; [#uses=1]
+ %166 = fmul float %rotationArc.0.0.1.0, %rbAxisA1.0.2.0 ; [#uses=1]
+ %167 = fadd float %165, %166 ; [#uses=1]
+ %168 = fmul float %rotationArc.0.0.2.0, %rbAxisA1.0.1.0 ; [#uses=1]
+ %169 = fsub float %167, %168 ; [#uses=3]
+ %170 = fsub float -0.000000e+00, %rotationArc.0.0.2.0 ; [#uses=3]
+ %171 = fsub float -0.000000e+00, %rotationArc.0.0.1.0 ; [#uses=3]
+ %172 = fmul float %154, %170 ; [#uses=1]
+ %173 = fmul float %159, %rotationArc.0.0.3.0 ; [#uses=1]
+ %174 = fadd float %172, %173 ; [#uses=1]
+ %175 = fmul float %169, %171 ; [#uses=1]
+ %176 = fadd float %174, %175 ; [#uses=1]
+ %177 = fmul float %164, %149 ; [#uses=1]
+ %178 = fsub float %176, %177 ; [#uses=3]
+ %179 = fmul float %154, %171 ; [#uses=1]
+ %180 = fmul float %164, %rotationArc.0.0.3.0 ; [#uses=1]
+ %181 = fadd float %179, %180 ; [#uses=1]
+ %182 = fmul float %159, %149 ; [#uses=1]
+ %183 = fadd float %181, %182 ; [#uses=1]
+ %184 = fmul float %169, %170 ; [#uses=1]
+ %185 = fsub float %183, %184 ; [#uses=3]
+ %186 = fmul float %154, %149 ; [#uses=1]
+ %187 = fmul float %169, %rotationArc.0.0.3.0 ; [#uses=1]
+ %188 = fadd float %186, %187 ; [#uses=1]
+ %189 = fmul float %164, %170 ; [#uses=1]
+ %190 = fadd float %188, %189 ; [#uses=1]
+ %191 = fmul float %159, %171 ; [#uses=1]
+ %192 = fsub float %190, %191 ; [#uses=3]
+ %193 = fmul float %104, %185 ; [#uses=1]
+ %194 = fmul float %101, %192 ; [#uses=1]
+ %195 = fsub float %193, %194 ; [#uses=1]
+ %196 = fmul float %107, %192 ; [#uses=1]
+ %197 = fmul float %104, %178 ; [#uses=1]
+ %198 = fsub float %196, %197 ; [#uses=1]
+ %199 = fmul float %101, %178 ; [#uses=1]
+ %200 = fmul float %107, %185 ; [#uses=1]
+ %201 = fsub float %199, %200 ; [#uses=1]
+ %202 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %203 = getelementptr inbounds %struct.btQuadWord* %pivotInB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %204 = load float* %203, align 4 ; [#uses=1]
+ store float %204, float* %202, align 4
+ %205 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %206 = getelementptr inbounds %struct.btQuadWord* %pivotInB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %207 = load float* %206, align 4 ; [#uses=1]
+ store float %207, float* %205, align 4
+ %208 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %209 = getelementptr inbounds %struct.btQuadWord* %pivotInB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %210 = load float* %209, align 4 ; [#uses=1]
+ store float %210, float* %208, align 4
+ %211 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ %212 = getelementptr inbounds %struct.btQuadWord* %pivotInB, i32 0, i32 0, i32 3 ; [#uses=1]
+ %213 = load float* %212, align 4 ; [#uses=1]
+ store float %213, float* %211, align 4
+ %214 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %192, float* %214, align 4
+ %215 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %201, float* %215, align 4
+ %216 = load float* %103, align 4 ; [#uses=1]
+ %217 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %216, float* %217, align 4
+ %218 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %218, align 4
+ %219 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %185, float* %219, align 4
+ %220 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %198, float* %220, align 4
+ %221 = load float* %100, align 4 ; [#uses=1]
+ %222 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %221, float* %222, align 4
+ %223 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %223, align 4
+ %224 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %178, float* %224, align 4
+ %225 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %195, float* %225, align 4
+ %226 = load float* %106, align 4 ; [#uses=1]
+ %227 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %226, float* %227, align 4
+ %228 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %228, align 4
+ %229 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ store float 1.000000e+00, float* %229, align 4
+ %230 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ store float -1.000000e+00, float* %230, align 4
+ %231 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %231, align 4
+ %232 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ store float 1.000000e+00, float* %232, align 4
+ %233 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0x3FECCCCCC0000000, float* %233, align 4
+ %234 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ store i8 0, i8* %234, align 2
+ %toBool = icmp eq i8 %useReferenceFrameA, 0 ; [#uses=1]
+ %iftmp.174.0 = select i1 %toBool, float 1.000000e+00, float -1.000000e+00 ; [#uses=1]
+ %235 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ store float %iftmp.174.0, float* %235, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK17btHingeConstraint28calculateSerializeBufferSizeEv(%struct.btHingeConstraint* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 212
+}
+
+; [#uses=0]
+define void @_ZN17btHingeConstraint18getInfo1NonVirtualEPN17btTypedConstraint17btConstraintInfo1E(%struct.btHingeConstraint* nocapture %this, %struct.CONTACT_KEY_TOKEN* nocapture %info) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ %1 = load i8* %0, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 0 ; [#uses=2]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ ret void
+
+bb1: ; preds = %entry
+ store i32 6, i32* %2, align 4
+ %4 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17btHingeConstraint9updateRHSEf(%struct.btHingeConstraint* nocapture %this, float %timeStep) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btHingeConstraint8setParamEifi(%struct.btHingeConstraint* nocapture %this, i32 %num, float %value, i32 %axis) nounwind align 2 {
+entry:
+ switch i32 %axis, label %return [
+ i32 5, label %bb
+ i32 -1, label %bb
+ ]
+
+bb: ; preds = %entry, %entry
+ switch i32 %num, label %return [
+ i32 2, label %bb3
+ i32 3, label %bb5
+ i32 4, label %bb4
+ ]
+
+bb3: ; preds = %bb
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 28 ; [#uses=1]
+ store float %value, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 25 ; [#uses=2]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = or i32 %2, 2 ; [#uses=1]
+ store i32 %3, i32* %1, align 4
+ ret void
+
+bb4: ; preds = %bb
+ %4 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 27 ; [#uses=1]
+ store float %value, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 25 ; [#uses=2]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = or i32 %6, 1 ; [#uses=1]
+ store i32 %7, i32* %5, align 4
+ ret void
+
+bb5: ; preds = %bb
+ %8 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 26 ; [#uses=1]
+ store float %value, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 25 ; [#uses=2]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = or i32 %10, 4 ; [#uses=1]
+ store i32 %11, i32* %9, align 4
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define float @_ZNK17btHingeConstraint8getParamEii(%struct.btHingeConstraint* nocapture %this, i32 %num, i32 %axis) nounwind readonly align 2 {
+entry:
+ switch i32 %axis, label %bb6 [
+ i32 5, label %bb
+ i32 -1, label %bb
+ ]
+
+bb: ; preds = %entry, %entry
+ switch i32 %num, label %bb6 [
+ i32 2, label %bb3
+ i32 3, label %bb5
+ i32 4, label %bb4
+ ]
+
+bb3: ; preds = %bb
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 28 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ ret float %1
+
+bb4: ; preds = %bb
+ %2 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 27 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ ret float %3
+
+bb5: ; preds = %bb
+ %4 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 26 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ ret float %5
+
+bb6: ; preds = %bb, %entry
+ ret float 0.000000e+00
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK17btHingeConstraint9serializeEPvP12btSerializer(%struct.btHingeConstraint* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK17btTypedConstraint9serializeEPvP12btSerializer(%struct.btTypedConstraint* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %scevgep.i.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i.i = bitcast i8* %2 to float* ; [#uses=1]
+ %scevgep.1.i.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i.i = getelementptr i8* %dataBuffer, i32 48 ; [#uses=1]
+ %3 = bitcast i8* %scevgep4.1.i.i.i to float* ; [#uses=1]
+ %scevgep.2.i.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i.i = getelementptr i8* %dataBuffer, i32 52 ; [#uses=1]
+ %4 = bitcast i8* %scevgep4.2.i.i.i to float* ; [#uses=1]
+ %scevgep.3.i.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i.i = getelementptr i8* %dataBuffer, i32 56 ; [#uses=1]
+ %5 = bitcast i8* %scevgep4.3.i.i.i to float* ; [#uses=1]
+ %6 = load float* %scevgep.i.i.i, align 4 ; [#uses=1]
+ store float %6, float* %scevgep4.i.i.i, align 4
+ %7 = load float* %scevgep.1.i.i.i, align 4 ; [#uses=1]
+ store float %7, float* %3, align 4
+ %8 = load float* %scevgep.2.i.i.i, align 4 ; [#uses=1]
+ store float %8, float* %4, align 4
+ %9 = load float* %scevgep.3.i.i.i, align 4 ; [#uses=1]
+ store float %9, float* %5, align 4
+ %scevgep.i.1.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.1.i.i = getelementptr i8* %dataBuffer, i32 60 ; [#uses=1]
+ %10 = bitcast i8* %scevgep4.i.1.i.i to float* ; [#uses=1]
+ %scevgep.1.i.1.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.1.i.i = getelementptr i8* %dataBuffer, i32 64 ; [#uses=1]
+ %11 = bitcast i8* %scevgep4.1.i.1.i.i to float* ; [#uses=1]
+ %scevgep.2.i.1.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.1.i.i = getelementptr i8* %dataBuffer, i32 68 ; [#uses=1]
+ %12 = bitcast i8* %scevgep4.2.i.1.i.i to float* ; [#uses=1]
+ %scevgep.3.i.1.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.1.i.i = getelementptr i8* %dataBuffer, i32 72 ; [#uses=1]
+ %13 = bitcast i8* %scevgep4.3.i.1.i.i to float* ; [#uses=1]
+ %14 = load float* %scevgep.i.1.i.i, align 4 ; [#uses=1]
+ store float %14, float* %10, align 4
+ %15 = load float* %scevgep.1.i.1.i.i, align 4 ; [#uses=1]
+ store float %15, float* %11, align 4
+ %16 = load float* %scevgep.2.i.1.i.i, align 4 ; [#uses=1]
+ store float %16, float* %12, align 4
+ %17 = load float* %scevgep.3.i.1.i.i, align 4 ; [#uses=1]
+ store float %17, float* %13, align 4
+ %scevgep.i.2.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.2.i.i = getelementptr i8* %dataBuffer, i32 76 ; [#uses=1]
+ %18 = bitcast i8* %scevgep4.i.2.i.i to float* ; [#uses=1]
+ %scevgep.1.i.2.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.2.i.i = getelementptr i8* %dataBuffer, i32 80 ; [#uses=1]
+ %19 = bitcast i8* %scevgep4.1.i.2.i.i to float* ; [#uses=1]
+ %scevgep.2.i.2.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.2.i.i = getelementptr i8* %dataBuffer, i32 84 ; [#uses=1]
+ %20 = bitcast i8* %scevgep4.2.i.2.i.i to float* ; [#uses=1]
+ %scevgep.3.i.2.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.2.i.i = getelementptr i8* %dataBuffer, i32 88 ; [#uses=1]
+ %21 = bitcast i8* %scevgep4.3.i.2.i.i to float* ; [#uses=1]
+ %22 = load float* %scevgep.i.2.i.i, align 4 ; [#uses=1]
+ store float %22, float* %18, align 4
+ %23 = load float* %scevgep.1.i.2.i.i, align 4 ; [#uses=1]
+ store float %23, float* %19, align 4
+ %24 = load float* %scevgep.2.i.2.i.i, align 4 ; [#uses=1]
+ store float %24, float* %20, align 4
+ %25 = load float* %scevgep.3.i.2.i.i, align 4 ; [#uses=1]
+ store float %25, float* %21, align 4
+ %scevgep.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i = getelementptr i8* %dataBuffer, i32 92 ; [#uses=1]
+ %26 = bitcast i8* %scevgep4.i.i to float* ; [#uses=1]
+ %27 = load float* %scevgep.i.i, align 4 ; [#uses=1]
+ store float %27, float* %26, align 4
+ %scevgep.1.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i = getelementptr i8* %dataBuffer, i32 96 ; [#uses=1]
+ %28 = bitcast i8* %scevgep4.1.i.i to float* ; [#uses=1]
+ %29 = load float* %scevgep.1.i.i, align 4 ; [#uses=1]
+ store float %29, float* %28, align 4
+ %scevgep.2.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i = getelementptr i8* %dataBuffer, i32 100 ; [#uses=1]
+ %30 = bitcast i8* %scevgep4.2.i.i to float* ; [#uses=1]
+ %31 = load float* %scevgep.2.i.i, align 4 ; [#uses=1]
+ store float %31, float* %30, align 4
+ %scevgep.3.i.i = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i = getelementptr i8* %dataBuffer, i32 104 ; [#uses=1]
+ %32 = bitcast i8* %scevgep4.3.i.i to float* ; [#uses=1]
+ %33 = load float* %scevgep.3.i.i, align 4 ; [#uses=1]
+ store float %33, float* %32, align 4
+ %34 = getelementptr inbounds i8* %dataBuffer, i32 108 ; [#uses=1]
+ %scevgep.i.i.i2 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i.i3 = bitcast i8* %34 to float* ; [#uses=1]
+ %scevgep.1.i.i.i4 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i.i5 = getelementptr i8* %dataBuffer, i32 112 ; [#uses=1]
+ %35 = bitcast i8* %scevgep4.1.i.i.i5 to float* ; [#uses=1]
+ %scevgep.2.i.i.i6 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i.i7 = getelementptr i8* %dataBuffer, i32 116 ; [#uses=1]
+ %36 = bitcast i8* %scevgep4.2.i.i.i7 to float* ; [#uses=1]
+ %scevgep.3.i.i.i8 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i.i9 = getelementptr i8* %dataBuffer, i32 120 ; [#uses=1]
+ %37 = bitcast i8* %scevgep4.3.i.i.i9 to float* ; [#uses=1]
+ %38 = load float* %scevgep.i.i.i2, align 4 ; [#uses=1]
+ store float %38, float* %scevgep4.i.i.i3, align 4
+ %39 = load float* %scevgep.1.i.i.i4, align 4 ; [#uses=1]
+ store float %39, float* %35, align 4
+ %40 = load float* %scevgep.2.i.i.i6, align 4 ; [#uses=1]
+ store float %40, float* %36, align 4
+ %41 = load float* %scevgep.3.i.i.i8, align 4 ; [#uses=1]
+ store float %41, float* %37, align 4
+ %scevgep.i.1.i.i10 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.1.i.i11 = getelementptr i8* %dataBuffer, i32 124 ; [#uses=1]
+ %42 = bitcast i8* %scevgep4.i.1.i.i11 to float* ; [#uses=1]
+ %scevgep.1.i.1.i.i12 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.1.i.i13 = getelementptr i8* %dataBuffer, i32 128 ; [#uses=1]
+ %43 = bitcast i8* %scevgep4.1.i.1.i.i13 to float* ; [#uses=1]
+ %scevgep.2.i.1.i.i14 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.1.i.i15 = getelementptr i8* %dataBuffer, i32 132 ; [#uses=1]
+ %44 = bitcast i8* %scevgep4.2.i.1.i.i15 to float* ; [#uses=1]
+ %scevgep.3.i.1.i.i16 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.1.i.i17 = getelementptr i8* %dataBuffer, i32 136 ; [#uses=1]
+ %45 = bitcast i8* %scevgep4.3.i.1.i.i17 to float* ; [#uses=1]
+ %46 = load float* %scevgep.i.1.i.i10, align 4 ; [#uses=1]
+ store float %46, float* %42, align 4
+ %47 = load float* %scevgep.1.i.1.i.i12, align 4 ; [#uses=1]
+ store float %47, float* %43, align 4
+ %48 = load float* %scevgep.2.i.1.i.i14, align 4 ; [#uses=1]
+ store float %48, float* %44, align 4
+ %49 = load float* %scevgep.3.i.1.i.i16, align 4 ; [#uses=1]
+ store float %49, float* %45, align 4
+ %scevgep.i.2.i.i18 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.2.i.i19 = getelementptr i8* %dataBuffer, i32 140 ; [#uses=1]
+ %50 = bitcast i8* %scevgep4.i.2.i.i19 to float* ; [#uses=1]
+ %scevgep.1.i.2.i.i20 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.2.i.i21 = getelementptr i8* %dataBuffer, i32 144 ; [#uses=1]
+ %51 = bitcast i8* %scevgep4.1.i.2.i.i21 to float* ; [#uses=1]
+ %scevgep.2.i.2.i.i22 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.2.i.i23 = getelementptr i8* %dataBuffer, i32 148 ; [#uses=1]
+ %52 = bitcast i8* %scevgep4.2.i.2.i.i23 to float* ; [#uses=1]
+ %scevgep.3.i.2.i.i24 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.2.i.i25 = getelementptr i8* %dataBuffer, i32 152 ; [#uses=1]
+ %53 = bitcast i8* %scevgep4.3.i.2.i.i25 to float* ; [#uses=1]
+ %54 = load float* %scevgep.i.2.i.i18, align 4 ; [#uses=1]
+ store float %54, float* %50, align 4
+ %55 = load float* %scevgep.1.i.2.i.i20, align 4 ; [#uses=1]
+ store float %55, float* %51, align 4
+ %56 = load float* %scevgep.2.i.2.i.i22, align 4 ; [#uses=1]
+ store float %56, float* %52, align 4
+ %57 = load float* %scevgep.3.i.2.i.i24, align 4 ; [#uses=1]
+ store float %57, float* %53, align 4
+ %scevgep.i.i26 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i27 = getelementptr i8* %dataBuffer, i32 156 ; [#uses=1]
+ %58 = bitcast i8* %scevgep4.i.i27 to float* ; [#uses=1]
+ %59 = load float* %scevgep.i.i26, align 4 ; [#uses=1]
+ store float %59, float* %58, align 4
+ %scevgep.1.i.i28 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i29 = getelementptr i8* %dataBuffer, i32 160 ; [#uses=1]
+ %60 = bitcast i8* %scevgep4.1.i.i29 to float* ; [#uses=1]
+ %61 = load float* %scevgep.1.i.i28, align 4 ; [#uses=1]
+ store float %61, float* %60, align 4
+ %scevgep.2.i.i30 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i31 = getelementptr i8* %dataBuffer, i32 164 ; [#uses=1]
+ %62 = bitcast i8* %scevgep4.2.i.i31 to float* ; [#uses=1]
+ %63 = load float* %scevgep.2.i.i30, align 4 ; [#uses=1]
+ store float %63, float* %62, align 4
+ %scevgep.3.i.i32 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i33 = getelementptr i8* %dataBuffer, i32 168 ; [#uses=1]
+ %64 = bitcast i8* %scevgep4.3.i.i33 to float* ; [#uses=1]
+ %65 = load float* %scevgep.3.i.i32, align 4 ; [#uses=1]
+ store float %65, float* %64, align 4
+ %66 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ %67 = load i8* %66, align 4 ; [#uses=1]
+ %68 = zext i8 %67 to i32 ; [#uses=1]
+ %69 = getelementptr inbounds i8* %dataBuffer, i32 176 ; [#uses=1]
+ %70 = bitcast i8* %69 to i32* ; [#uses=1]
+ store i32 %68, i32* %70, align 4
+ %71 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ %72 = load i8* %71, align 1 ; [#uses=1]
+ %73 = zext i8 %72 to i32 ; [#uses=1]
+ %74 = getelementptr inbounds i8* %dataBuffer, i32 180 ; [#uses=1]
+ %75 = bitcast i8* %74 to i32* ; [#uses=1]
+ store i32 %73, i32* %75, align 4
+ %76 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ %78 = getelementptr inbounds i8* %dataBuffer, i32 188 ; [#uses=1]
+ %79 = bitcast i8* %78 to float* ; [#uses=1]
+ store float %77, float* %79, align 4
+ %80 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ %82 = getelementptr inbounds i8* %dataBuffer, i32 184 ; [#uses=1]
+ %83 = bitcast i8* %82 to float* ; [#uses=1]
+ store float %81, float* %83, align 4
+ %84 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ %85 = load i8* %84, align 1 ; [#uses=1]
+ %86 = zext i8 %85 to i32 ; [#uses=1]
+ %87 = getelementptr inbounds i8* %dataBuffer, i32 172 ; [#uses=1]
+ %88 = bitcast i8* %87 to i32* ; [#uses=1]
+ store i32 %86, i32* %88, align 4
+ %89 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ %91 = getelementptr inbounds i8* %dataBuffer, i32 192 ; [#uses=1]
+ %92 = bitcast i8* %91 to float* ; [#uses=1]
+ store float %90, float* %92, align 4
+ %93 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = getelementptr inbounds i8* %dataBuffer, i32 196 ; [#uses=1]
+ %96 = bitcast i8* %95 to float* ; [#uses=1]
+ store float %94, float* %96, align 4
+ %97 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ %99 = getelementptr inbounds i8* %dataBuffer, i32 200 ; [#uses=1]
+ %100 = bitcast i8* %99 to float* ; [#uses=1]
+ store float %98, float* %100, align 4
+ %101 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = getelementptr inbounds i8* %dataBuffer, i32 204 ; [#uses=1]
+ %104 = bitcast i8* %103 to float* ; [#uses=1]
+ store float %102, float* %104, align 4
+ %105 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %106 = load float* %105, align 4 ; [#uses=1]
+ %107 = getelementptr inbounds i8* %dataBuffer, i32 208 ; [#uses=1]
+ %108 = bitcast i8* %107 to float* ; [#uses=1]
+ store float %106, float* %108, align 4
+ ret i8* getelementptr inbounds ([27 x i8]* @.str417, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btHingeConstraintD0Ev(%struct.btHingeConstraint* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV17btHingeConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btHingeConstraint* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN17btHingeConstraintD1Ev(%struct.btHingeConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV17btHingeConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btHingeConstraint13buildJacobianEv(%struct.btHingeConstraint* %this) nounwind align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca %struct.btMatrix3x3, align 8 ; [#uses=13]
+ %3 = alloca %struct.btMatrix3x3, align 8 ; [#uses=13]
+ %normal = alloca [3 x %struct.btQuadWord], align 8 ; [#uses=21]
+ %4 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ %5 = load i8* %4, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 24 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ %9 = load i8* %8, align 4 ; [#uses=1]
+ %toBool1not = icmp eq i8 %9, 0 ; [#uses=1]
+ br i1 %toBool1not, label %bb8, label %bb19
+
+bb8: ; preds = %bb
+ %10 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=2]
+ %11 = load %struct.btRigidBody** %10, align 4 ; [#uses=12]
+ %12 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=3]
+ %16 = fmul float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ %21 = fmul float %18, %20 ; [#uses=1]
+ %22 = fadd float %16, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=3]
+ %27 = fmul float %24, %26 ; [#uses=1]
+ %28 = fadd float %22, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fadd float %28, %30 ; [#uses=2]
+ %32 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fmul float %33, %15 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = fmul float %36, %20 ; [#uses=1]
+ %38 = fadd float %34, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fmul float %40, %26 ; [#uses=1]
+ %42 = fadd float %38, %41 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = fadd float %42, %44 ; [#uses=2]
+ %46 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = fmul float %47, %15 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fmul float %50, %20 ; [#uses=1]
+ %52 = fadd float %48, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = fmul float %54, %26 ; [#uses=1]
+ %56 = fadd float %52, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = fadd float %56, %58 ; [#uses=2]
+ %60 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=2]
+ %61 = load %struct.btRigidBody** %60, align 4 ; [#uses=12]
+ %62 = getelementptr inbounds %struct.btRigidBody* %61, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=3]
+ %66 = fmul float %63, %65 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btRigidBody* %61, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=3]
+ %71 = fmul float %68, %70 ; [#uses=1]
+ %72 = fadd float %66, %71 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btRigidBody* %61, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=3]
+ %77 = fmul float %74, %76 ; [#uses=1]
+ %78 = fadd float %72, %77 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btRigidBody* %61, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fadd float %78, %80 ; [#uses=2]
+ %82 = getelementptr inbounds %struct.btRigidBody* %61, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = fmul float %83, %65 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btRigidBody* %61, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ %87 = fmul float %86, %70 ; [#uses=1]
+ %88 = fadd float %84, %87 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btRigidBody* %61, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ %91 = fmul float %90, %76 ; [#uses=1]
+ %92 = fadd float %88, %91 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btRigidBody* %61, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = fadd float %92, %94 ; [#uses=2]
+ %96 = getelementptr inbounds %struct.btRigidBody* %61, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ %98 = fmul float %97, %65 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btRigidBody* %61, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %100 = load float* %99, align 4 ; [#uses=1]
+ %101 = fmul float %100, %70 ; [#uses=1]
+ %102 = fadd float %98, %101 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btRigidBody* %61, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %104 = load float* %103, align 4 ; [#uses=1]
+ %105 = fmul float %104, %76 ; [#uses=1]
+ %106 = fadd float %102, %105 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btRigidBody* %61, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %108 = load float* %107, align 4 ; [#uses=1]
+ %109 = fadd float %106, %108 ; [#uses=2]
+ %110 = fsub float %81, %31 ; [#uses=3]
+ %111 = fsub float %95, %45 ; [#uses=3]
+ %112 = fsub float %109, %59 ; [#uses=3]
+ %113 = fmul float %112, %112 ; [#uses=1]
+ %114 = fmul float %111, %111 ; [#uses=1]
+ %115 = fadd float %113, %114 ; [#uses=1]
+ %116 = fmul float %110, %110 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=2]
+ %118 = fcmp ogt float %117, 0x3E80000000000000 ; [#uses=1]
+ br i1 %118, label %bb10, label %bb11
+
+bb10: ; preds = %bb8
+ %119 = call float @sqrtf(float %117) nounwind readonly ; [#uses=1]
+ %120 = fdiv float 1.000000e+00, %119 ; [#uses=3]
+ %121 = fmul float %110, %120 ; [#uses=2]
+ %122 = fmul float %111, %120 ; [#uses=2]
+ %123 = fmul float %112, %120 ; [#uses=2]
+ %124 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %123, float* %124, align 8
+ %125 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %122, float* %125, align 4
+ %126 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %121, float* %126, align 8
+ %127 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %127, align 4
+ br label %bb12
+
+bb11: ; preds = %bb8
+ %128 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %128, align 8
+ %129 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %129, align 4
+ %130 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %130, align 8
+ %131 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %131, align 4
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb10
+ %132 = phi float [ 1.000000e+00, %bb11 ], [ %123, %bb10 ] ; [#uses=5]
+ %133 = phi float [ 0.000000e+00, %bb11 ], [ %122, %bb10 ] ; [#uses=6]
+ %134 = phi float [ 0.000000e+00, %bb11 ], [ %121, %bb10 ] ; [#uses=6]
+ %135 = call float @fabsf(float %134) nounwind readnone ; [#uses=1]
+ %136 = fcmp ogt float %135, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %136, label %bb.i33, label %bb1.i34
+
+bb.i33: ; preds = %bb12
+ %137 = fmul float %133, %133 ; [#uses=1]
+ %138 = fmul float %134, %134 ; [#uses=1]
+ %139 = fadd float %137, %138 ; [#uses=2]
+ %140 = call float @sqrtf(float %139) nounwind readonly ; [#uses=1]
+ %141 = fdiv float 1.000000e+00, %140 ; [#uses=3]
+ %142 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %142, align 8
+ %143 = fsub float -0.000000e+00, %134 ; [#uses=1]
+ %144 = fmul float %141, %143 ; [#uses=2]
+ %145 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %144, float* %145, align 4
+ %146 = fmul float %133, %141 ; [#uses=2]
+ %147 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %146, float* %147, align 8
+ %148 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %149 = fmul float %139, %141 ; [#uses=1]
+ store float %149, float* %148, align 8
+ %150 = fsub float -0.000000e+00, %132 ; [#uses=1]
+ %151 = fmul float %146, %150 ; [#uses=1]
+ %152 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %151, float* %152, align 4
+ %153 = fmul float %132, %144 ; [#uses=1]
+ %154 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %153, float* %154, align 8
+ br label %bb.nph
+
+bb1.i34: ; preds = %bb12
+ %155 = fmul float %132, %132 ; [#uses=1]
+ %156 = fmul float %133, %133 ; [#uses=1]
+ %157 = fadd float %155, %156 ; [#uses=2]
+ %158 = call float @sqrtf(float %157) nounwind readonly ; [#uses=1]
+ %159 = fdiv float 1.000000e+00, %158 ; [#uses=3]
+ %160 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %161 = fsub float -0.000000e+00, %133 ; [#uses=1]
+ %162 = fmul float %159, %161 ; [#uses=2]
+ store float %162, float* %160, align 8
+ %163 = fmul float %132, %159 ; [#uses=2]
+ %164 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %163, float* %164, align 4
+ %165 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %165, align 8
+ %166 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %167 = fsub float -0.000000e+00, %134 ; [#uses=1]
+ %168 = fmul float %163, %167 ; [#uses=1]
+ store float %168, float* %166, align 8
+ %169 = fmul float %134, %162 ; [#uses=1]
+ %170 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %169, float* %170, align 4
+ %171 = fmul float %157, %159 ; [#uses=1]
+ %172 = getelementptr inbounds [3 x %struct.btQuadWord]* %normal, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %171, float* %172, align 8
+ br label %bb.nph
+
+bb.nph: ; preds = %bb1.i34, %bb.i33
+ %173 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %175 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %176 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %177 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %178 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %179 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %180 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %182 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %183 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %184 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %185 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %187 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %188 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %191 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %192 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %193 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %194 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %195 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %196 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %197 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %198 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %199 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %200 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %201 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %202 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %203 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb14
+
+bb14: ; preds = %bb17, %bb.nph
+ %i.090 = phi i32 [ 0, %bb.nph ], [ %268, %bb17 ] ; [#uses=3]
+ %scevgep93 = getelementptr %struct.btHingeConstraint* %this, i32 0, i32 1, i32 %i.090 ; [#uses=2]
+ %205 = load %struct.btRigidBody** %10, align 4 ; [#uses=14]
+ %206 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %207 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %209 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %210 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %211 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %212 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %213 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %214 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %215 = load float* %214, align 4 ; [#uses=1]
+ store float %215, float* %173, align 8
+ %216 = load float* %213, align 4 ; [#uses=1]
+ store float %216, float* %174, align 4
+ %217 = load float* %212, align 4 ; [#uses=1]
+ store float %217, float* %175, align 8
+ store float 0.000000e+00, float* %176, align 4
+ %218 = load float* %211, align 4 ; [#uses=1]
+ store float %218, float* %177, align 8
+ %219 = load float* %210, align 4 ; [#uses=1]
+ store float %219, float* %178, align 4
+ %220 = load float* %209, align 4 ; [#uses=1]
+ store float %220, float* %179, align 8
+ store float 0.000000e+00, float* %180, align 4
+ %221 = load float* %208, align 4 ; [#uses=1]
+ store float %221, float* %181, align 8
+ %222 = load float* %207, align 4 ; [#uses=1]
+ store float %222, float* %182, align 4
+ %223 = load float* %206, align 4 ; [#uses=1]
+ store float %223, float* %183, align 8
+ store float 0.000000e+00, float* %184, align 4
+ %224 = load %struct.btRigidBody** %60, align 4 ; [#uses=14]
+ %225 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %226 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %227 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %228 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %229 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %230 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %231 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %232 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %233 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %234 = load float* %233, align 4 ; [#uses=1]
+ store float %234, float* %185, align 8
+ %235 = load float* %232, align 4 ; [#uses=1]
+ store float %235, float* %186, align 4
+ %236 = load float* %231, align 4 ; [#uses=1]
+ store float %236, float* %187, align 8
+ store float 0.000000e+00, float* %188, align 4
+ %237 = load float* %230, align 4 ; [#uses=1]
+ store float %237, float* %189, align 8
+ %238 = load float* %229, align 4 ; [#uses=1]
+ store float %238, float* %190, align 4
+ %239 = load float* %228, align 4 ; [#uses=1]
+ store float %239, float* %191, align 8
+ store float 0.000000e+00, float* %192, align 4
+ %240 = load float* %227, align 4 ; [#uses=1]
+ store float %240, float* %193, align 8
+ %241 = load float* %226, align 4 ; [#uses=1]
+ store float %241, float* %194, align 4
+ %242 = load float* %225, align 4 ; [#uses=1]
+ store float %242, float* %195, align 8
+ store float 0.000000e+00, float* %196, align 4
+ %243 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %244 = load float* %243, align 4 ; [#uses=1]
+ %245 = fsub float %31, %244 ; [#uses=1]
+ %246 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %247 = load float* %246, align 4 ; [#uses=1]
+ %248 = fsub float %45, %247 ; [#uses=1]
+ %249 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %250 = load float* %249, align 4 ; [#uses=1]
+ %251 = fsub float %59, %250 ; [#uses=1]
+ store float %251, float* %197, align 8
+ store float %248, float* %198, align 4
+ store float %245, float* %199, align 8
+ store float 0.000000e+00, float* %200, align 4
+ %252 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %253 = load float* %252, align 4 ; [#uses=1]
+ %254 = fsub float %81, %253 ; [#uses=1]
+ %255 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %256 = load float* %255, align 4 ; [#uses=1]
+ %257 = fsub float %95, %256 ; [#uses=1]
+ %258 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %259 = load float* %258, align 4 ; [#uses=1]
+ %260 = fsub float %109, %259 ; [#uses=1]
+ store float %260, float* %201, align 8
+ store float %257, float* %202, align 4
+ store float %254, float* %203, align 8
+ store float 0.000000e+00, float* %204, align 4
+ %261 = icmp eq %struct.btJacobianEntry* %scevgep93, null ; [#uses=1]
+ br i1 %261, label %bb17, label %bb15
+
+bb15: ; preds = %bb14
+ %scevgep = getelementptr [3 x %struct.btQuadWord]* %normal, i32 0, i32 %i.090 ; [#uses=1]
+ %262 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 4 ; [#uses=1]
+ %263 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 4 ; [#uses=1]
+ %264 = load float* %262, align 4 ; [#uses=1]
+ %265 = getelementptr inbounds %struct.btRigidBody* %224, i32 0, i32 8 ; [#uses=1]
+ %266 = load float* %263, align 4 ; [#uses=1]
+ %267 = getelementptr inbounds %struct.btRigidBody* %205, i32 0, i32 8 ; [#uses=1]
+ call void @_ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(%struct.btJacobianEntry* %scevgep93, %struct.btMatrix3x3* %3, %struct.btMatrix3x3* %2, %struct.btQuadWord* %1, %struct.btQuadWord* %0, %struct.btQuadWord* %scevgep, %struct.btQuadWord* %267, float %266, %struct.btQuadWord* %265, float %264) nounwind
+ br label %bb17
+
+bb17: ; preds = %bb15, %bb14
+ %268 = add nsw i32 %i.090, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %268, 3 ; [#uses=1]
+ br i1 %exitcond, label %bb19, label %bb14
+
+bb19: ; preds = %bb17, %bb
+ %269 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %271 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %272 = load float* %271, align 4 ; [#uses=11]
+ %273 = load float* %270, align 4 ; [#uses=12]
+ %274 = load float* %269, align 4 ; [#uses=12]
+ %275 = call float @fabsf(float %274) nounwind readnone ; [#uses=1]
+ %276 = fcmp ogt float %275, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %276, label %bb.i31, label %bb1.i32
+
+bb.i31: ; preds = %bb19
+ %277 = fmul float %273, %273 ; [#uses=1]
+ %278 = fmul float %274, %274 ; [#uses=1]
+ %279 = fadd float %277, %278 ; [#uses=2]
+ %280 = call float @sqrtf(float %279) nounwind readonly ; [#uses=1]
+ %281 = fdiv float 1.000000e+00, %280 ; [#uses=3]
+ %282 = fsub float -0.000000e+00, %274 ; [#uses=1]
+ %283 = fmul float %281, %282 ; [#uses=2]
+ %284 = fmul float %273, %281 ; [#uses=2]
+ %285 = fmul float %279, %281 ; [#uses=1]
+ %286 = fsub float -0.000000e+00, %272 ; [#uses=1]
+ %287 = fmul float %284, %286 ; [#uses=1]
+ %288 = fmul float %272, %283 ; [#uses=1]
+ br label %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+
+bb1.i32: ; preds = %bb19
+ %289 = fmul float %272, %272 ; [#uses=1]
+ %290 = fmul float %273, %273 ; [#uses=1]
+ %291 = fadd float %289, %290 ; [#uses=2]
+ %292 = call float @sqrtf(float %291) nounwind readonly ; [#uses=1]
+ %293 = fdiv float 1.000000e+00, %292 ; [#uses=3]
+ %294 = fsub float -0.000000e+00, %273 ; [#uses=1]
+ %295 = fmul float %293, %294 ; [#uses=2]
+ %296 = fmul float %272, %293 ; [#uses=2]
+ %297 = fsub float -0.000000e+00, %274 ; [#uses=1]
+ %298 = fmul float %296, %297 ; [#uses=1]
+ %299 = fmul float %274, %295 ; [#uses=1]
+ %300 = fmul float %291, %293 ; [#uses=1]
+ br label %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+
+_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit: ; preds = %bb1.i32, %bb.i31
+ %jointAxis0local.0.0.0 = phi float [ 0.000000e+00, %bb.i31 ], [ %295, %bb1.i32 ] ; [#uses=3]
+ %jointAxis0local.0.1.0 = phi float [ %283, %bb.i31 ], [ %296, %bb1.i32 ] ; [#uses=3]
+ %jointAxis0local.0.2.0 = phi float [ %284, %bb.i31 ], [ 0.000000e+00, %bb1.i32 ] ; [#uses=3]
+ %jointAxis1local.0.0.0 = phi float [ %285, %bb.i31 ], [ %298, %bb1.i32 ] ; [#uses=3]
+ %jointAxis1local.0.1.0 = phi float [ %287, %bb.i31 ], [ %299, %bb1.i32 ] ; [#uses=3]
+ %jointAxis1local.0.2.0 = phi float [ %288, %bb.i31 ], [ %300, %bb1.i32 ] ; [#uses=3]
+ %301 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %302 = load %struct.btRigidBody** %301, align 4 ; [#uses=28]
+ %303 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=4]
+ %304 = load float* %303, align 4 ; [#uses=4]
+ %305 = fmul float %304, %jointAxis0local.0.0.0 ; [#uses=1]
+ %306 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=4]
+ %307 = load float* %306, align 4 ; [#uses=4]
+ %308 = fmul float %307, %jointAxis0local.0.1.0 ; [#uses=1]
+ %309 = fadd float %305, %308 ; [#uses=1]
+ %310 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=4]
+ %311 = load float* %310, align 4 ; [#uses=4]
+ %312 = fmul float %311, %jointAxis0local.0.2.0 ; [#uses=1]
+ %313 = fadd float %309, %312 ; [#uses=4]
+ %314 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=4]
+ %315 = load float* %314, align 4 ; [#uses=4]
+ %316 = fmul float %315, %jointAxis0local.0.0.0 ; [#uses=1]
+ %317 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=4]
+ %318 = load float* %317, align 4 ; [#uses=4]
+ %319 = fmul float %318, %jointAxis0local.0.1.0 ; [#uses=1]
+ %320 = fadd float %316, %319 ; [#uses=1]
+ %321 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=4]
+ %322 = load float* %321, align 4 ; [#uses=4]
+ %323 = fmul float %322, %jointAxis0local.0.2.0 ; [#uses=1]
+ %324 = fadd float %320, %323 ; [#uses=4]
+ %325 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %326 = load float* %325, align 4 ; [#uses=4]
+ %327 = fmul float %326, %jointAxis0local.0.0.0 ; [#uses=1]
+ %328 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=4]
+ %329 = load float* %328, align 4 ; [#uses=4]
+ %330 = fmul float %329, %jointAxis0local.0.1.0 ; [#uses=1]
+ %331 = fadd float %327, %330 ; [#uses=1]
+ %332 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=4]
+ %333 = load float* %332, align 4 ; [#uses=4]
+ %334 = fmul float %333, %jointAxis0local.0.2.0 ; [#uses=1]
+ %335 = fadd float %331, %334 ; [#uses=4]
+ %336 = fmul float %304, %jointAxis1local.0.0.0 ; [#uses=1]
+ %337 = fmul float %307, %jointAxis1local.0.1.0 ; [#uses=1]
+ %338 = fadd float %336, %337 ; [#uses=1]
+ %339 = fmul float %311, %jointAxis1local.0.2.0 ; [#uses=1]
+ %340 = fadd float %338, %339 ; [#uses=4]
+ %341 = fmul float %315, %jointAxis1local.0.0.0 ; [#uses=1]
+ %342 = fmul float %318, %jointAxis1local.0.1.0 ; [#uses=1]
+ %343 = fadd float %341, %342 ; [#uses=1]
+ %344 = fmul float %322, %jointAxis1local.0.2.0 ; [#uses=1]
+ %345 = fadd float %343, %344 ; [#uses=4]
+ %346 = fmul float %326, %jointAxis1local.0.0.0 ; [#uses=1]
+ %347 = fmul float %329, %jointAxis1local.0.1.0 ; [#uses=1]
+ %348 = fadd float %346, %347 ; [#uses=1]
+ %349 = fmul float %333, %jointAxis1local.0.2.0 ; [#uses=1]
+ %350 = fadd float %348, %349 ; [#uses=4]
+ %351 = fmul float %304, %272 ; [#uses=1]
+ %352 = fmul float %307, %273 ; [#uses=1]
+ %353 = fadd float %351, %352 ; [#uses=1]
+ %354 = fmul float %311, %274 ; [#uses=1]
+ %355 = fadd float %353, %354 ; [#uses=4]
+ %356 = fmul float %315, %272 ; [#uses=1]
+ %357 = fmul float %318, %273 ; [#uses=1]
+ %358 = fadd float %356, %357 ; [#uses=1]
+ %359 = fmul float %322, %274 ; [#uses=1]
+ %360 = fadd float %358, %359 ; [#uses=4]
+ %361 = fmul float %326, %272 ; [#uses=1]
+ %362 = fmul float %329, %273 ; [#uses=1]
+ %363 = fadd float %361, %362 ; [#uses=1]
+ %364 = fmul float %333, %274 ; [#uses=1]
+ %365 = fadd float %363, %364 ; [#uses=4]
+ %366 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %367 = load %struct.btRigidBody** %366, align 4 ; [#uses=46]
+ %368 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0 ; [#uses=1]
+ %369 = icmp eq %struct.btJacobianEntry* %368, null ; [#uses=1]
+ br i1 %369, label %bb22, label %bb20
+
+bb20: ; preds = %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+ %370 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %371 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %372 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %373 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %374 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %375 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %376 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %377 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %378 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %379 = load float* %378, align 4 ; [#uses=1]
+ %380 = load float* %377, align 4 ; [#uses=1]
+ %381 = load float* %376, align 4 ; [#uses=1]
+ %382 = load float* %375, align 4 ; [#uses=1]
+ %383 = load float* %374, align 4 ; [#uses=1]
+ %384 = load float* %373, align 4 ; [#uses=1]
+ %385 = load float* %372, align 4 ; [#uses=1]
+ %386 = load float* %371, align 4 ; [#uses=1]
+ %387 = load float* %370, align 4 ; [#uses=1]
+ %388 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %388, align 4
+ %389 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %389, align 4
+ %390 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %390, align 4
+ %391 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %391, align 4
+ %392 = fmul float %333, %335 ; [#uses=1]
+ %393 = fmul float %322, %324 ; [#uses=1]
+ %394 = fadd float %392, %393 ; [#uses=1]
+ %395 = fmul float %311, %313 ; [#uses=1]
+ %396 = fadd float %394, %395 ; [#uses=3]
+ %397 = fmul float %329, %335 ; [#uses=1]
+ %398 = fmul float %318, %324 ; [#uses=1]
+ %399 = fadd float %397, %398 ; [#uses=1]
+ %400 = fmul float %307, %313 ; [#uses=1]
+ %401 = fadd float %399, %400 ; [#uses=3]
+ %402 = fmul float %326, %335 ; [#uses=1]
+ %403 = fmul float %315, %324 ; [#uses=1]
+ %404 = fadd float %402, %403 ; [#uses=1]
+ %405 = fmul float %304, %313 ; [#uses=1]
+ %406 = fadd float %404, %405 ; [#uses=3]
+ %407 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %406, float* %407, align 4
+ %408 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %401, float* %408, align 4
+ %409 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %396, float* %409, align 4
+ %410 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %410, align 4
+ %411 = fsub float -0.000000e+00, %313 ; [#uses=3]
+ %412 = fsub float -0.000000e+00, %324 ; [#uses=3]
+ %413 = fsub float -0.000000e+00, %335 ; [#uses=3]
+ %414 = fmul float %381, %413 ; [#uses=1]
+ %415 = fmul float %380, %412 ; [#uses=1]
+ %416 = fadd float %414, %415 ; [#uses=1]
+ %417 = fmul float %379, %411 ; [#uses=1]
+ %418 = fadd float %416, %417 ; [#uses=3]
+ %419 = fmul float %384, %413 ; [#uses=1]
+ %420 = fmul float %383, %412 ; [#uses=1]
+ %421 = fadd float %419, %420 ; [#uses=1]
+ %422 = fmul float %382, %411 ; [#uses=1]
+ %423 = fadd float %421, %422 ; [#uses=3]
+ %424 = fmul float %387, %413 ; [#uses=1]
+ %425 = fmul float %386, %412 ; [#uses=1]
+ %426 = fadd float %424, %425 ; [#uses=1]
+ %427 = fmul float %385, %411 ; [#uses=1]
+ %428 = fadd float %426, %427 ; [#uses=3]
+ %429 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %428, float* %429, align 4
+ %430 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %423, float* %430, align 4
+ %431 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %418, float* %431, align 4
+ %432 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %432, align 4
+ %433 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ %434 = load float* %433, align 4 ; [#uses=1]
+ %435 = fmul float %434, %396 ; [#uses=2]
+ %436 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ %437 = load float* %436, align 4 ; [#uses=1]
+ %438 = fmul float %437, %401 ; [#uses=2]
+ %439 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ %440 = load float* %439, align 4 ; [#uses=1]
+ %441 = fmul float %440, %406 ; [#uses=2]
+ %442 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %441, float* %442, align 4
+ %443 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %438, float* %443, align 4
+ %444 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %435, float* %444, align 4
+ %445 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %445, align 4
+ %446 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ %447 = load float* %446, align 4 ; [#uses=1]
+ %448 = fmul float %447, %418 ; [#uses=2]
+ %449 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ %450 = load float* %449, align 4 ; [#uses=1]
+ %451 = fmul float %450, %423 ; [#uses=2]
+ %452 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ %453 = load float* %452, align 4 ; [#uses=1]
+ %454 = fmul float %453, %428 ; [#uses=2]
+ %455 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %454, float* %455, align 4
+ %456 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %451, float* %456, align 4
+ %457 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %448, float* %457, align 4
+ %458 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %458, align 4
+ %459 = fmul float %441, %406 ; [#uses=1]
+ %460 = fmul float %438, %401 ; [#uses=1]
+ %461 = fadd float %459, %460 ; [#uses=1]
+ %462 = fmul float %435, %396 ; [#uses=1]
+ %463 = fadd float %461, %462 ; [#uses=1]
+ %464 = fmul float %454, %428 ; [#uses=1]
+ %465 = fmul float %451, %423 ; [#uses=1]
+ %466 = fadd float %464, %465 ; [#uses=1]
+ %467 = fmul float %448, %418 ; [#uses=1]
+ %468 = fadd float %466, %467 ; [#uses=1]
+ %469 = fadd float %463, %468 ; [#uses=1]
+ %470 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 0, i32 5 ; [#uses=1]
+ store float %469, float* %470, align 4
+ br label %bb22
+
+bb22: ; preds = %bb20, %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+ %471 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ %472 = icmp eq %struct.btJacobianEntry* %471, null ; [#uses=1]
+ br i1 %472, label %bb25, label %bb23
+
+bb23: ; preds = %bb22
+ %473 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %474 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %475 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %476 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %477 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %478 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %479 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %480 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %481 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %482 = load float* %481, align 4 ; [#uses=1]
+ %483 = load float* %480, align 4 ; [#uses=1]
+ %484 = load float* %479, align 4 ; [#uses=1]
+ %485 = load float* %478, align 4 ; [#uses=1]
+ %486 = load float* %477, align 4 ; [#uses=1]
+ %487 = load float* %476, align 4 ; [#uses=1]
+ %488 = load float* %475, align 4 ; [#uses=1]
+ %489 = load float* %474, align 4 ; [#uses=1]
+ %490 = load float* %473, align 4 ; [#uses=1]
+ %491 = load float* %310, align 4 ; [#uses=1]
+ %492 = load float* %321, align 4 ; [#uses=1]
+ %493 = load float* %332, align 4 ; [#uses=1]
+ %494 = load float* %306, align 4 ; [#uses=1]
+ %495 = load float* %317, align 4 ; [#uses=1]
+ %496 = load float* %328, align 4 ; [#uses=1]
+ %497 = load float* %303, align 4 ; [#uses=1]
+ %498 = load float* %314, align 4 ; [#uses=1]
+ %499 = load float* %325, align 4 ; [#uses=1]
+ %500 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %500, align 4
+ %501 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %501, align 4
+ %502 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %502, align 4
+ %503 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %503, align 4
+ %504 = fmul float %493, %350 ; [#uses=1]
+ %505 = fmul float %492, %345 ; [#uses=1]
+ %506 = fadd float %504, %505 ; [#uses=1]
+ %507 = fmul float %491, %340 ; [#uses=1]
+ %508 = fadd float %506, %507 ; [#uses=3]
+ %509 = fmul float %496, %350 ; [#uses=1]
+ %510 = fmul float %495, %345 ; [#uses=1]
+ %511 = fadd float %509, %510 ; [#uses=1]
+ %512 = fmul float %494, %340 ; [#uses=1]
+ %513 = fadd float %511, %512 ; [#uses=3]
+ %514 = fmul float %499, %350 ; [#uses=1]
+ %515 = fmul float %498, %345 ; [#uses=1]
+ %516 = fadd float %514, %515 ; [#uses=1]
+ %517 = fmul float %497, %340 ; [#uses=1]
+ %518 = fadd float %516, %517 ; [#uses=3]
+ %519 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %518, float* %519, align 4
+ %520 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %513, float* %520, align 4
+ %521 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %508, float* %521, align 4
+ %522 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %522, align 4
+ %523 = fsub float -0.000000e+00, %340 ; [#uses=3]
+ %524 = fsub float -0.000000e+00, %345 ; [#uses=3]
+ %525 = fsub float -0.000000e+00, %350 ; [#uses=3]
+ %526 = fmul float %484, %525 ; [#uses=1]
+ %527 = fmul float %483, %524 ; [#uses=1]
+ %528 = fadd float %526, %527 ; [#uses=1]
+ %529 = fmul float %482, %523 ; [#uses=1]
+ %530 = fadd float %528, %529 ; [#uses=3]
+ %531 = fmul float %487, %525 ; [#uses=1]
+ %532 = fmul float %486, %524 ; [#uses=1]
+ %533 = fadd float %531, %532 ; [#uses=1]
+ %534 = fmul float %485, %523 ; [#uses=1]
+ %535 = fadd float %533, %534 ; [#uses=3]
+ %536 = fmul float %490, %525 ; [#uses=1]
+ %537 = fmul float %489, %524 ; [#uses=1]
+ %538 = fadd float %536, %537 ; [#uses=1]
+ %539 = fmul float %488, %523 ; [#uses=1]
+ %540 = fadd float %538, %539 ; [#uses=3]
+ %541 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %540, float* %541, align 4
+ %542 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %535, float* %542, align 4
+ %543 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %530, float* %543, align 4
+ %544 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %544, align 4
+ %545 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ %546 = load float* %545, align 4 ; [#uses=1]
+ %547 = fmul float %546, %508 ; [#uses=2]
+ %548 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ %549 = load float* %548, align 4 ; [#uses=1]
+ %550 = fmul float %549, %513 ; [#uses=2]
+ %551 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ %552 = load float* %551, align 4 ; [#uses=1]
+ %553 = fmul float %552, %518 ; [#uses=2]
+ %554 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %553, float* %554, align 4
+ %555 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %550, float* %555, align 4
+ %556 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %547, float* %556, align 4
+ %557 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %557, align 4
+ %558 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ %559 = load float* %558, align 4 ; [#uses=1]
+ %560 = fmul float %559, %530 ; [#uses=2]
+ %561 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ %562 = load float* %561, align 4 ; [#uses=1]
+ %563 = fmul float %562, %535 ; [#uses=2]
+ %564 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ %565 = load float* %564, align 4 ; [#uses=1]
+ %566 = fmul float %565, %540 ; [#uses=2]
+ %567 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %566, float* %567, align 4
+ %568 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %563, float* %568, align 4
+ %569 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %560, float* %569, align 4
+ %570 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %570, align 4
+ %571 = fmul float %553, %518 ; [#uses=1]
+ %572 = fmul float %550, %513 ; [#uses=1]
+ %573 = fadd float %571, %572 ; [#uses=1]
+ %574 = fmul float %547, %508 ; [#uses=1]
+ %575 = fadd float %573, %574 ; [#uses=1]
+ %576 = fmul float %566, %540 ; [#uses=1]
+ %577 = fmul float %563, %535 ; [#uses=1]
+ %578 = fadd float %576, %577 ; [#uses=1]
+ %579 = fmul float %560, %530 ; [#uses=1]
+ %580 = fadd float %578, %579 ; [#uses=1]
+ %581 = fadd float %575, %580 ; [#uses=1]
+ %582 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 1, i32 5 ; [#uses=1]
+ store float %581, float* %582, align 4
+ br label %bb25
+
+bb25: ; preds = %bb23, %bb22
+ %583 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ %584 = icmp eq %struct.btJacobianEntry* %583, null ; [#uses=1]
+ br i1 %584, label %bb28, label %bb26
+
+bb26: ; preds = %bb25
+ %585 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %586 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %587 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %588 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %589 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %590 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %591 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %592 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %593 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %594 = load float* %593, align 4 ; [#uses=1]
+ %595 = load float* %592, align 4 ; [#uses=1]
+ %596 = load float* %591, align 4 ; [#uses=1]
+ %597 = load float* %590, align 4 ; [#uses=1]
+ %598 = load float* %589, align 4 ; [#uses=1]
+ %599 = load float* %588, align 4 ; [#uses=1]
+ %600 = load float* %587, align 4 ; [#uses=1]
+ %601 = load float* %586, align 4 ; [#uses=1]
+ %602 = load float* %585, align 4 ; [#uses=1]
+ %603 = load float* %310, align 4 ; [#uses=1]
+ %604 = load float* %321, align 4 ; [#uses=1]
+ %605 = load float* %332, align 4 ; [#uses=1]
+ %606 = load float* %306, align 4 ; [#uses=1]
+ %607 = load float* %317, align 4 ; [#uses=1]
+ %608 = load float* %328, align 4 ; [#uses=1]
+ %609 = load float* %303, align 4 ; [#uses=1]
+ %610 = load float* %314, align 4 ; [#uses=1]
+ %611 = load float* %325, align 4 ; [#uses=1]
+ %612 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %612, align 4
+ %613 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %613, align 4
+ %614 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %614, align 4
+ %615 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %615, align 4
+ %616 = fmul float %605, %365 ; [#uses=1]
+ %617 = fmul float %604, %360 ; [#uses=1]
+ %618 = fadd float %616, %617 ; [#uses=1]
+ %619 = fmul float %603, %355 ; [#uses=1]
+ %620 = fadd float %618, %619 ; [#uses=3]
+ %621 = fmul float %608, %365 ; [#uses=1]
+ %622 = fmul float %607, %360 ; [#uses=1]
+ %623 = fadd float %621, %622 ; [#uses=1]
+ %624 = fmul float %606, %355 ; [#uses=1]
+ %625 = fadd float %623, %624 ; [#uses=3]
+ %626 = fmul float %611, %365 ; [#uses=1]
+ %627 = fmul float %610, %360 ; [#uses=1]
+ %628 = fadd float %626, %627 ; [#uses=1]
+ %629 = fmul float %609, %355 ; [#uses=1]
+ %630 = fadd float %628, %629 ; [#uses=3]
+ %631 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %630, float* %631, align 4
+ %632 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %625, float* %632, align 4
+ %633 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %620, float* %633, align 4
+ %634 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %634, align 4
+ %635 = fsub float -0.000000e+00, %355 ; [#uses=3]
+ %636 = fsub float -0.000000e+00, %360 ; [#uses=3]
+ %637 = fsub float -0.000000e+00, %365 ; [#uses=3]
+ %638 = fmul float %596, %637 ; [#uses=1]
+ %639 = fmul float %595, %636 ; [#uses=1]
+ %640 = fadd float %638, %639 ; [#uses=1]
+ %641 = fmul float %594, %635 ; [#uses=1]
+ %642 = fadd float %640, %641 ; [#uses=3]
+ %643 = fmul float %599, %637 ; [#uses=1]
+ %644 = fmul float %598, %636 ; [#uses=1]
+ %645 = fadd float %643, %644 ; [#uses=1]
+ %646 = fmul float %597, %635 ; [#uses=1]
+ %647 = fadd float %645, %646 ; [#uses=3]
+ %648 = fmul float %602, %637 ; [#uses=1]
+ %649 = fmul float %601, %636 ; [#uses=1]
+ %650 = fadd float %648, %649 ; [#uses=1]
+ %651 = fmul float %600, %635 ; [#uses=1]
+ %652 = fadd float %650, %651 ; [#uses=3]
+ %653 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %652, float* %653, align 4
+ %654 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %647, float* %654, align 4
+ %655 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %642, float* %655, align 4
+ %656 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %656, align 4
+ %657 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ %658 = load float* %657, align 4 ; [#uses=1]
+ %659 = fmul float %658, %620 ; [#uses=2]
+ %660 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ %661 = load float* %660, align 4 ; [#uses=1]
+ %662 = fmul float %661, %625 ; [#uses=2]
+ %663 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ %664 = load float* %663, align 4 ; [#uses=1]
+ %665 = fmul float %664, %630 ; [#uses=2]
+ %666 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %665, float* %666, align 4
+ %667 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %662, float* %667, align 4
+ %668 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %659, float* %668, align 4
+ %669 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %669, align 4
+ %670 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ %671 = load float* %670, align 4 ; [#uses=1]
+ %672 = fmul float %671, %642 ; [#uses=2]
+ %673 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ %674 = load float* %673, align 4 ; [#uses=1]
+ %675 = fmul float %674, %647 ; [#uses=2]
+ %676 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ %677 = load float* %676, align 4 ; [#uses=1]
+ %678 = fmul float %677, %652 ; [#uses=2]
+ %679 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %678, float* %679, align 4
+ %680 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %675, float* %680, align 4
+ %681 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %672, float* %681, align 4
+ %682 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %682, align 4
+ %683 = fmul float %665, %630 ; [#uses=1]
+ %684 = fmul float %662, %625 ; [#uses=1]
+ %685 = fadd float %683, %684 ; [#uses=1]
+ %686 = fmul float %659, %620 ; [#uses=1]
+ %687 = fadd float %685, %686 ; [#uses=1]
+ %688 = fmul float %678, %652 ; [#uses=1]
+ %689 = fmul float %675, %647 ; [#uses=1]
+ %690 = fadd float %688, %689 ; [#uses=1]
+ %691 = fmul float %672, %642 ; [#uses=1]
+ %692 = fadd float %690, %691 ; [#uses=1]
+ %693 = fadd float %687, %692 ; [#uses=1]
+ %694 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 2, i32 2, i32 5 ; [#uses=1]
+ store float %693, float* %694, align 4
+ br label %bb28
+
+bb28: ; preds = %bb26, %bb25
+ %695 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 15 ; [#uses=1]
+ store float 0.000000e+00, float* %695, align 4
+ %696 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 0, i32 1 ; [#uses=1]
+ %697 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 0, i32 1 ; [#uses=1]
+ %698 = call float @_ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(%struct.btHingeConstraint* %this, %struct.btTransform* %697, %struct.btTransform* %696) nounwind ; [#uses=2]
+ %699 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 16 ; [#uses=2]
+ store float %698, float* %699, align 4
+ %700 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 14 ; [#uses=3]
+ store float 0.000000e+00, float* %700, align 4
+ %701 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 13 ; [#uses=3]
+ store float 0.000000e+00, float* %701, align 4
+ %702 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 20 ; [#uses=3]
+ store i8 0, i8* %702, align 2
+ %703 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %704 = load float* %703, align 4 ; [#uses=4]
+ %705 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ %706 = load float* %705, align 4 ; [#uses=4]
+ %707 = fcmp ugt float %704, %706 ; [#uses=1]
+ br i1 %707, label %_ZN17btHingeConstraint9testLimitERK11btTransformS2_.exit, label %bb.i
+
+bb.i: ; preds = %bb28
+ %708 = call float @_Z21btAdjustAngleToLimitsfff(float %698, float %704, float %706) nounwind ; [#uses=5]
+ store float %708, float* %699, align 4
+ %709 = fcmp ugt float %708, %704 ; [#uses=1]
+ br i1 %709, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %710 = fsub float %704, %708 ; [#uses=1]
+ store float %710, float* %700, align 4
+ store float 1.000000e+00, float* %701, align 4
+ store i8 1, i8* %702, align 2
+ br label %_ZN17btHingeConstraint9testLimitERK11btTransformS2_.exit
+
+bb2.i: ; preds = %bb.i
+ %711 = fcmp ult float %708, %706 ; [#uses=1]
+ br i1 %711, label %_ZN17btHingeConstraint9testLimitERK11btTransformS2_.exit, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %712 = fsub float %706, %708 ; [#uses=1]
+ store float %712, float* %700, align 4
+ store float -1.000000e+00, float* %701, align 4
+ store i8 1, i8* %702, align 2
+ br label %_ZN17btHingeConstraint9testLimitERK11btTransformS2_.exit
+
+_ZN17btHingeConstraint9testLimitERK11btTransformS2_.exit: ; preds = %bb3.i, %bb2.i, %bb1.i, %bb28
+ %713 = load float* %303, align 4 ; [#uses=1]
+ %714 = fmul float %713, %272 ; [#uses=1]
+ %715 = load float* %306, align 4 ; [#uses=1]
+ %716 = fmul float %715, %273 ; [#uses=1]
+ %717 = fadd float %714, %716 ; [#uses=1]
+ %718 = load float* %310, align 4 ; [#uses=1]
+ %719 = fmul float %718, %274 ; [#uses=1]
+ %720 = fadd float %717, %719 ; [#uses=8]
+ %721 = load float* %314, align 4 ; [#uses=1]
+ %722 = fmul float %721, %272 ; [#uses=1]
+ %723 = load float* %317, align 4 ; [#uses=1]
+ %724 = fmul float %723, %273 ; [#uses=1]
+ %725 = fadd float %722, %724 ; [#uses=1]
+ %726 = load float* %321, align 4 ; [#uses=1]
+ %727 = fmul float %726, %274 ; [#uses=1]
+ %728 = fadd float %725, %727 ; [#uses=8]
+ %729 = load float* %325, align 4 ; [#uses=1]
+ %730 = fmul float %729, %272 ; [#uses=1]
+ %731 = load float* %328, align 4 ; [#uses=1]
+ %732 = fmul float %731, %273 ; [#uses=1]
+ %733 = fadd float %730, %732 ; [#uses=1]
+ %734 = load float* %332, align 4 ; [#uses=1]
+ %735 = fmul float %734, %274 ; [#uses=1]
+ %736 = fadd float %733, %735 ; [#uses=8]
+ %737 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %738 = load float* %737, align 4 ; [#uses=1]
+ %739 = fmul float %738, %736 ; [#uses=1]
+ %740 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %741 = load float* %740, align 4 ; [#uses=1]
+ %742 = fmul float %741, %728 ; [#uses=1]
+ %743 = fadd float %739, %742 ; [#uses=1]
+ %744 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %745 = load float* %744, align 4 ; [#uses=1]
+ %746 = fmul float %745, %720 ; [#uses=1]
+ %747 = fadd float %743, %746 ; [#uses=1]
+ %748 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %749 = load float* %748, align 4 ; [#uses=1]
+ %750 = fmul float %749, %736 ; [#uses=1]
+ %751 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %752 = load float* %751, align 4 ; [#uses=1]
+ %753 = fmul float %752, %728 ; [#uses=1]
+ %754 = fadd float %750, %753 ; [#uses=1]
+ %755 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %756 = load float* %755, align 4 ; [#uses=1]
+ %757 = fmul float %756, %720 ; [#uses=1]
+ %758 = fadd float %754, %757 ; [#uses=1]
+ %759 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %760 = load float* %759, align 4 ; [#uses=1]
+ %761 = fmul float %760, %736 ; [#uses=1]
+ %762 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %763 = load float* %762, align 4 ; [#uses=1]
+ %764 = fmul float %763, %728 ; [#uses=1]
+ %765 = fadd float %761, %764 ; [#uses=1]
+ %766 = getelementptr inbounds %struct.btRigidBody* %302, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %767 = load float* %766, align 4 ; [#uses=1]
+ %768 = fmul float %767, %720 ; [#uses=1]
+ %769 = fadd float %765, %768 ; [#uses=1]
+ %770 = fmul float %736, %769 ; [#uses=1]
+ %771 = fmul float %728, %758 ; [#uses=1]
+ %772 = fadd float %770, %771 ; [#uses=1]
+ %773 = fmul float %720, %747 ; [#uses=1]
+ %774 = fadd float %772, %773 ; [#uses=1]
+ %775 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %776 = load float* %775, align 4 ; [#uses=1]
+ %777 = fmul float %776, %736 ; [#uses=1]
+ %778 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %779 = load float* %778, align 4 ; [#uses=1]
+ %780 = fmul float %779, %728 ; [#uses=1]
+ %781 = fadd float %777, %780 ; [#uses=1]
+ %782 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %783 = load float* %782, align 4 ; [#uses=1]
+ %784 = fmul float %783, %720 ; [#uses=1]
+ %785 = fadd float %781, %784 ; [#uses=1]
+ %786 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %787 = load float* %786, align 4 ; [#uses=1]
+ %788 = fmul float %787, %736 ; [#uses=1]
+ %789 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %790 = load float* %789, align 4 ; [#uses=1]
+ %791 = fmul float %790, %728 ; [#uses=1]
+ %792 = fadd float %788, %791 ; [#uses=1]
+ %793 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %794 = load float* %793, align 4 ; [#uses=1]
+ %795 = fmul float %794, %720 ; [#uses=1]
+ %796 = fadd float %792, %795 ; [#uses=1]
+ %797 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %798 = load float* %797, align 4 ; [#uses=1]
+ %799 = fmul float %798, %736 ; [#uses=1]
+ %800 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %801 = load float* %800, align 4 ; [#uses=1]
+ %802 = fmul float %801, %728 ; [#uses=1]
+ %803 = fadd float %799, %802 ; [#uses=1]
+ %804 = getelementptr inbounds %struct.btRigidBody* %367, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %805 = load float* %804, align 4 ; [#uses=1]
+ %806 = fmul float %805, %720 ; [#uses=1]
+ %807 = fadd float %803, %806 ; [#uses=1]
+ %808 = fmul float %736, %807 ; [#uses=1]
+ %809 = fmul float %728, %796 ; [#uses=1]
+ %810 = fadd float %808, %809 ; [#uses=1]
+ %811 = fmul float %720, %785 ; [#uses=1]
+ %812 = fadd float %810, %811 ; [#uses=1]
+ %813 = fadd float %774, %812 ; [#uses=1]
+ %814 = fdiv float 1.000000e+00, %813 ; [#uses=1]
+ %815 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 12 ; [#uses=1]
+ store float %814, float* %815, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btHingeConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E(%struct.btHingeConstraint* nocapture %this, %struct.CONTACT_KEY_TOKEN* nocapture %info) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ %1 = load i8* %0, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 0 ; [#uses=4]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ ret void
+
+bb1: ; preds = %entry
+ store i32 5, i32* %2, align 4
+ %4 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=3]
+ store i32 1, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %6 = load %struct.btRigidBody** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btRigidBody* %6, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %9 = load %struct.btRigidBody** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btRigidBody* %9, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = tail call float @_ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(%struct.btHingeConstraint* %this, %struct.btTransform* %10, %struct.btTransform* %7) nounwind ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 16 ; [#uses=2]
+ store float %11, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 14 ; [#uses=3]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 13 ; [#uses=3]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 20 ; [#uses=3]
+ store i8 0, i8* %15, align 2
+ %16 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=4]
+ %18 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=4]
+ %20 = fcmp ugt float %17, %19 ; [#uses=1]
+ br i1 %20, label %bb2, label %bb.i
+
+bb.i: ; preds = %bb1
+ %21 = tail call float @_Z21btAdjustAngleToLimitsfff(float %11, float %17, float %19) nounwind ; [#uses=5]
+ store float %21, float* %12, align 4
+ %22 = fcmp ugt float %21, %17 ; [#uses=1]
+ br i1 %22, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %23 = fsub float %17, %21 ; [#uses=1]
+ store float %23, float* %13, align 4
+ store float 1.000000e+00, float* %14, align 4
+ store i8 1, i8* %15, align 2
+ br label %bb8
+
+bb2.i: ; preds = %bb.i
+ %24 = fcmp ult float %21, %19 ; [#uses=1]
+ br i1 %24, label %bb2, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %25 = fsub float %19, %21 ; [#uses=1]
+ store float %25, float* %13, align 4
+ store float -1.000000e+00, float* %14, align 4
+ store i8 1, i8* %15, align 2
+ br label %bb8
+
+bb2: ; preds = %bb2.i, %bb1
+ %26 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ %27 = load i8* %26, align 1 ; [#uses=1]
+ %toBool3 = icmp eq i8 %27, 0 ; [#uses=1]
+ br i1 %toBool3, label %bb5, label %bb8
+
+bb5: ; preds = %bb2
+ ret void
+
+bb8: ; preds = %bb2, %bb3.i, %bb1.i
+ %28 = load i32* %2, align 4 ; [#uses=1]
+ %29 = add nsw i32 %28, 1 ; [#uses=1]
+ store i32 %29, i32* %2, align 4
+ %30 = load i32* %4, align 4 ; [#uses=1]
+ %31 = add nsw i32 %30, -1 ; [#uses=1]
+ store i32 %31, i32* %4, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btHingeConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E(%struct.btHingeConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %3 = load %struct.btRigidBody** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 3 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %6 = load %struct.btRigidBody** %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btRigidBody* %6, i32 0, i32 3 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 1 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btRigidBody* %6, i32 0, i32 0, i32 1 ; [#uses=2]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ tail call void @_ZN17btHingeConstraint32getInfo2InternalUsingFrameOffsetEPN17btTypedConstraint17btConstraintInfo2ERK11btTransformS5_RK9btVector3S8_(%struct.btHingeConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, %struct.btTransform* %9, %struct.btTransform* %8, %struct.btQuadWord* %7, %struct.btQuadWord* %4)
+ ret void
+
+bb1: ; preds = %entry
+ tail call void @_ZN17btHingeConstraint16getInfo2InternalEPN17btTypedConstraint17btConstraintInfo2ERK11btTransformS5_RK9btVector3S8_(%struct.btHingeConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, %struct.btTransform* %9, %struct.btTransform* %8, %struct.btQuadWord* %7, %struct.btQuadWord* %4)
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN17btHingeConstraint16getInfo2InternalEPN17btTypedConstraint17btConstraintInfo2ERK11btTransformS5_RK9btVector3S8_(%struct.btHingeConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, %struct.btTransform* nocapture %transA, %struct.btTransform* nocapture %transB, %struct.btQuadWord* nocapture %angVelA, %struct.btQuadWord* nocapture %angVelB) align 2 {
+entry:
+ %pivotAInW = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %pivotBInW = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 6 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=9]
+ %2 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = fmul float %3, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=4]
+ %9 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=3]
+ %11 = fmul float %8, %10 ; [#uses=1]
+ %12 = fadd float %6, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=4]
+ %15 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=3]
+ %17 = fmul float %14, %16 ; [#uses=1]
+ %18 = fadd float %12, %17 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=2]
+ %21 = fadd float %18, %20 ; [#uses=3]
+ %22 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=4]
+ %24 = fmul float %23, %5 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=4]
+ %27 = fmul float %26, %10 ; [#uses=1]
+ %28 = fadd float %24, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=4]
+ %31 = fmul float %30, %16 ; [#uses=1]
+ %32 = fadd float %28, %31 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ %35 = fadd float %32, %34 ; [#uses=3]
+ %36 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=4]
+ %38 = fmul float %37, %5 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=4]
+ %41 = fmul float %40, %10 ; [#uses=1]
+ %42 = fadd float %38, %41 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=4]
+ %45 = fmul float %44, %16 ; [#uses=1]
+ %46 = fadd float %42, %45 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %48 = load float* %47, align 4 ; [#uses=2]
+ %49 = fadd float %46, %48 ; [#uses=3]
+ %50 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=3]
+ %52 = fmul float %51, %3 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=3]
+ %55 = fmul float %54, %8 ; [#uses=1]
+ %56 = fadd float %52, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=3]
+ %59 = fmul float %58, %14 ; [#uses=1]
+ %60 = fadd float %56, %59 ; [#uses=6]
+ %61 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=3]
+ %63 = fmul float %62, %3 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=3]
+ %66 = fmul float %65, %8 ; [#uses=1]
+ %67 = fadd float %63, %66 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=3]
+ %70 = fmul float %69, %14 ; [#uses=1]
+ %71 = fadd float %67, %70 ; [#uses=3]
+ %72 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=3]
+ %74 = fmul float %73, %3 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=3]
+ %77 = fmul float %76, %8 ; [#uses=1]
+ %78 = fadd float %74, %77 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=3]
+ %81 = fmul float %80, %14 ; [#uses=1]
+ %82 = fadd float %78, %81 ; [#uses=3]
+ %83 = fmul float %51, %23 ; [#uses=1]
+ %84 = fmul float %54, %26 ; [#uses=1]
+ %85 = fadd float %83, %84 ; [#uses=1]
+ %86 = fmul float %58, %30 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=6]
+ %88 = fmul float %62, %23 ; [#uses=1]
+ %89 = fmul float %65, %26 ; [#uses=1]
+ %90 = fadd float %88, %89 ; [#uses=1]
+ %91 = fmul float %69, %30 ; [#uses=1]
+ %92 = fadd float %90, %91 ; [#uses=3]
+ %93 = fmul float %73, %23 ; [#uses=1]
+ %94 = fmul float %76, %26 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %80, %30 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=3]
+ %98 = fmul float %51, %37 ; [#uses=1]
+ %99 = fmul float %54, %40 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %58, %44 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=6]
+ %103 = fmul float %62, %37 ; [#uses=1]
+ %104 = fmul float %65, %40 ; [#uses=1]
+ %105 = fadd float %103, %104 ; [#uses=1]
+ %106 = fmul float %69, %44 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=3]
+ %108 = fmul float %73, %37 ; [#uses=1]
+ %109 = fmul float %76, %40 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = fmul float %80, %44 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=3]
+ %113 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %114 = load float* %113, align 4 ; [#uses=2]
+ %115 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %116 = load float* %115, align 4 ; [#uses=3]
+ %117 = fmul float %114, %116 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %119 = load float* %118, align 4 ; [#uses=2]
+ %120 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %121 = load float* %120, align 4 ; [#uses=3]
+ %122 = fmul float %119, %121 ; [#uses=1]
+ %123 = fadd float %117, %122 ; [#uses=1]
+ %124 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %125 = load float* %124, align 4 ; [#uses=2]
+ %126 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %127 = load float* %126, align 4 ; [#uses=3]
+ %128 = fmul float %125, %127 ; [#uses=1]
+ %129 = fadd float %123, %128 ; [#uses=1]
+ %130 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %131 = load float* %130, align 4 ; [#uses=1]
+ %132 = fadd float %129, %131 ; [#uses=3]
+ %133 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %134 = load float* %133, align 4 ; [#uses=2]
+ %135 = fmul float %134, %116 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %137 = load float* %136, align 4 ; [#uses=2]
+ %138 = fmul float %137, %121 ; [#uses=1]
+ %139 = fadd float %135, %138 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=2]
+ %142 = fmul float %141, %127 ; [#uses=1]
+ %143 = fadd float %139, %142 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ %146 = fadd float %143, %145 ; [#uses=3]
+ %147 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %148 = load float* %147, align 4 ; [#uses=2]
+ %149 = fmul float %148, %116 ; [#uses=1]
+ %150 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %151 = load float* %150, align 4 ; [#uses=2]
+ %152 = fmul float %151, %121 ; [#uses=1]
+ %153 = fadd float %149, %152 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %155 = load float* %154, align 4 ; [#uses=2]
+ %156 = fmul float %155, %127 ; [#uses=1]
+ %157 = fadd float %153, %156 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %159 = load float* %158, align 4 ; [#uses=1]
+ %160 = fadd float %157, %159 ; [#uses=3]
+ %161 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=3]
+ %163 = fmul float %162, %114 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %165 = load float* %164, align 4 ; [#uses=3]
+ %166 = fmul float %165, %119 ; [#uses=1]
+ %167 = fadd float %163, %166 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=3]
+ %170 = fmul float %169, %125 ; [#uses=1]
+ %171 = fadd float %167, %170 ; [#uses=2]
+ %172 = fmul float %162, %134 ; [#uses=1]
+ %173 = fmul float %165, %137 ; [#uses=1]
+ %174 = fadd float %172, %173 ; [#uses=1]
+ %175 = fmul float %169, %141 ; [#uses=1]
+ %176 = fadd float %174, %175 ; [#uses=2]
+ %177 = fmul float %162, %148 ; [#uses=1]
+ %178 = fmul float %165, %151 ; [#uses=1]
+ %179 = fadd float %177, %178 ; [#uses=1]
+ %180 = fmul float %169, %155 ; [#uses=1]
+ %181 = fadd float %179, %180 ; [#uses=2]
+ %182 = getelementptr inbounds %struct.btQuadWord* %pivotAInW, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %49, float* %182, align 8
+ %183 = getelementptr inbounds %struct.btQuadWord* %pivotAInW, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %35, float* %183, align 4
+ %184 = getelementptr inbounds %struct.btQuadWord* %pivotAInW, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %21, float* %184, align 8
+ %185 = getelementptr inbounds %struct.btQuadWord* %pivotAInW, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %185, align 4
+ %186 = getelementptr inbounds %struct.btQuadWord* %pivotBInW, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %160, float* %186, align 8
+ %187 = getelementptr inbounds %struct.btQuadWord* %pivotBInW, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %146, float* %187, align 4
+ %188 = getelementptr inbounds %struct.btQuadWord* %pivotBInW, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %132, float* %188, align 8
+ %189 = getelementptr inbounds %struct.btQuadWord* %pivotBInW, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %189, align 4
+ %190 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 18 ; [#uses=2]
+ %191 = load i8* %190, align 4 ; [#uses=1]
+ %toBoolnot = icmp eq i8 %191, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb, label %bb4
+
+bb: ; preds = %entry
+ %192 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 2 ; [#uses=3]
+ %193 = load float** %192, align 4 ; [#uses=1]
+ store float 1.000000e+00, float* %193, align 4
+ %194 = load float** %192, align 4 ; [#uses=1]
+ %195 = add nsw i32 %1, 1 ; [#uses=1]
+ %196 = getelementptr inbounds float* %194, i32 %195 ; [#uses=1]
+ store float 1.000000e+00, float* %196, align 4
+ %197 = load float** %192, align 4 ; [#uses=1]
+ %198 = shl i32 %1, 1 ; [#uses=1]
+ %199 = add i32 %198, 2 ; [#uses=1]
+ %200 = getelementptr inbounds float* %197, i32 %199 ; [#uses=1]
+ store float 1.000000e+00, float* %200, align 4
+ %.pre = load float* %19, align 4 ; [#uses=1]
+ %.pre115 = load float* %33, align 4 ; [#uses=1]
+ %.pre116 = load float* %47, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb, %entry
+ %201 = phi float [ %.pre116, %bb ], [ %48, %entry ] ; [#uses=1]
+ %202 = phi float [ %.pre115, %bb ], [ %34, %entry ] ; [#uses=1]
+ %203 = phi float [ %.pre, %bb ], [ %20, %entry ] ; [#uses=1]
+ %204 = fsub float %21, %203 ; [#uses=2]
+ %205 = fsub float %35, %202 ; [#uses=2]
+ %206 = fsub float %49, %201 ; [#uses=2]
+ %207 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 3 ; [#uses=10]
+ %208 = load float** %207, align 4 ; [#uses=12]
+ %209 = getelementptr inbounds float* %208, i32 %1 ; [#uses=1]
+ %210 = shl i32 %1, 1 ; [#uses=6]
+ %211 = getelementptr inbounds float* %208, i32 %210 ; [#uses=1]
+ %212 = fsub float -0.000000e+00, %204 ; [#uses=1]
+ %213 = fsub float -0.000000e+00, %205 ; [#uses=1]
+ %214 = fsub float -0.000000e+00, %206 ; [#uses=1]
+ store float 0.000000e+00, float* %208, align 4
+ %215 = getelementptr inbounds float* %208, i32 1 ; [#uses=1]
+ store float %204, float* %215, align 4
+ %216 = getelementptr inbounds float* %208, i32 2 ; [#uses=1]
+ store float %213, float* %216, align 4
+ %217 = getelementptr inbounds float* %208, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %217, align 4
+ store float %212, float* %209, align 4
+ %.sum = add i32 %1, 1 ; [#uses=2]
+ %218 = getelementptr inbounds float* %208, i32 %.sum ; [#uses=1]
+ store float 0.000000e+00, float* %218, align 4
+ %.sum99 = add i32 %1, 2 ; [#uses=2]
+ %219 = getelementptr inbounds float* %208, i32 %.sum99 ; [#uses=1]
+ store float %206, float* %219, align 4
+ %.sum100 = add i32 %1, 3 ; [#uses=2]
+ %220 = getelementptr inbounds float* %208, i32 %.sum100 ; [#uses=1]
+ store float 0.000000e+00, float* %220, align 4
+ store float %205, float* %211, align 4
+ %.sum101102 = or i32 %210, 1 ; [#uses=2]
+ %221 = getelementptr inbounds float* %208, i32 %.sum101102 ; [#uses=1]
+ store float %214, float* %221, align 4
+ %.sum103 = add i32 %210, 2 ; [#uses=2]
+ %222 = getelementptr inbounds float* %208, i32 %.sum103 ; [#uses=1]
+ store float 0.000000e+00, float* %222, align 4
+ %.sum104 = add i32 %210, 3 ; [#uses=2]
+ %223 = getelementptr inbounds float* %208, i32 %.sum104 ; [#uses=1]
+ store float 0.000000e+00, float* %223, align 4
+ %224 = load float* %130, align 4 ; [#uses=1]
+ %225 = fsub float %132, %224 ; [#uses=2]
+ %226 = load float* %144, align 4 ; [#uses=1]
+ %227 = fsub float %146, %226 ; [#uses=2]
+ %228 = load float* %158, align 4 ; [#uses=1]
+ %229 = fsub float %160, %228 ; [#uses=2]
+ %230 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 5 ; [#uses=10]
+ %231 = load float** %230, align 4 ; [#uses=12]
+ %232 = getelementptr inbounds float* %231, i32 %1 ; [#uses=1]
+ %233 = getelementptr inbounds float* %231, i32 %210 ; [#uses=1]
+ %234 = fsub float -0.000000e+00, %225 ; [#uses=1]
+ store float 0.000000e+00, float* %231, align 4
+ %235 = getelementptr inbounds float* %231, i32 1 ; [#uses=1]
+ store float %234, float* %235, align 4
+ %236 = getelementptr inbounds float* %231, i32 2 ; [#uses=1]
+ store float %227, float* %236, align 4
+ %237 = getelementptr inbounds float* %231, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %237, align 4
+ %238 = fsub float -0.000000e+00, %229 ; [#uses=1]
+ store float %225, float* %232, align 4
+ %239 = getelementptr inbounds float* %231, i32 %.sum ; [#uses=1]
+ store float 0.000000e+00, float* %239, align 4
+ %240 = getelementptr inbounds float* %231, i32 %.sum99 ; [#uses=1]
+ store float %238, float* %240, align 4
+ %241 = getelementptr inbounds float* %231, i32 %.sum100 ; [#uses=1]
+ store float 0.000000e+00, float* %241, align 4
+ %242 = fsub float -0.000000e+00, %227 ; [#uses=1]
+ store float %242, float* %233, align 4
+ %243 = getelementptr inbounds float* %231, i32 %.sum101102 ; [#uses=1]
+ store float %229, float* %243, align 4
+ %244 = getelementptr inbounds float* %231, i32 %.sum103 ; [#uses=1]
+ store float 0.000000e+00, float* %244, align 4
+ %245 = getelementptr inbounds float* %231, i32 %.sum104 ; [#uses=1]
+ store float 0.000000e+00, float* %245, align 4
+ %246 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 0 ; [#uses=3]
+ %247 = load float* %246, align 4 ; [#uses=1]
+ %248 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 1 ; [#uses=2]
+ %249 = load float* %248, align 4 ; [#uses=1]
+ %250 = fmul float %247, %249 ; [#uses=5]
+ %251 = load i8* %190, align 4 ; [#uses=1]
+ %toBool8not = icmp eq i8 %251, 0 ; [#uses=1]
+ br i1 %toBool8not, label %bb15.loopexit, label %bb15
+
+bb15.loopexit: ; preds = %bb4
+ %252 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 7 ; [#uses=3]
+ %253 = load float** %252, align 4 ; [#uses=1]
+ %254 = fsub float %160, %49 ; [#uses=1]
+ %255 = fmul float %254, %250 ; [#uses=1]
+ store float %255, float* %253, align 4
+ %256 = load float** %252, align 4 ; [#uses=1]
+ %257 = fsub float %146, %35 ; [#uses=1]
+ %258 = fmul float %257, %250 ; [#uses=1]
+ %scevgep114.1 = getelementptr float* %256, i32 %1 ; [#uses=1]
+ store float %258, float* %scevgep114.1, align 4
+ %259 = load float** %252, align 4 ; [#uses=1]
+ %260 = fsub float %132, %21 ; [#uses=1]
+ %261 = fmul float %260, %250 ; [#uses=1]
+ %scevgep114.2 = getelementptr float* %259, i32 %210 ; [#uses=1]
+ store float %261, float* %scevgep114.2, align 4
+ br label %bb15
+
+bb15: ; preds = %bb15.loopexit, %bb4
+ %262 = load i32* %0, align 4 ; [#uses=2]
+ %263 = mul nsw i32 %262, 3 ; [#uses=5]
+ %264 = shl i32 %262, 2 ; [#uses=5]
+ %265 = load float** %207, align 4 ; [#uses=1]
+ %266 = getelementptr inbounds float* %265, i32 %263 ; [#uses=1]
+ store float %112, float* %266, align 4
+ %267 = load float** %207, align 4 ; [#uses=1]
+ %268 = add nsw i32 %263, 1 ; [#uses=2]
+ %269 = getelementptr inbounds float* %267, i32 %268 ; [#uses=1]
+ store float %97, float* %269, align 4
+ %270 = load float** %207, align 4 ; [#uses=1]
+ %271 = add nsw i32 %263, 2 ; [#uses=2]
+ %272 = getelementptr inbounds float* %270, i32 %271 ; [#uses=1]
+ store float %82, float* %272, align 4
+ %273 = load float** %207, align 4 ; [#uses=1]
+ %274 = getelementptr inbounds float* %273, i32 %264 ; [#uses=1]
+ store float %107, float* %274, align 4
+ %275 = load float** %207, align 4 ; [#uses=1]
+ %276 = or i32 %264, 1 ; [#uses=2]
+ %277 = getelementptr inbounds float* %275, i32 %276 ; [#uses=1]
+ store float %92, float* %277, align 4
+ %278 = load float** %207, align 4 ; [#uses=1]
+ %279 = or i32 %264, 2 ; [#uses=2]
+ %280 = getelementptr inbounds float* %278, i32 %279 ; [#uses=1]
+ store float %71, float* %280, align 4
+ %281 = load float** %230, align 4 ; [#uses=1]
+ %282 = fsub float -0.000000e+00, %112 ; [#uses=1]
+ %283 = getelementptr inbounds float* %281, i32 %263 ; [#uses=1]
+ store float %282, float* %283, align 4
+ %284 = load float** %230, align 4 ; [#uses=1]
+ %285 = fsub float -0.000000e+00, %97 ; [#uses=1]
+ %286 = getelementptr inbounds float* %284, i32 %268 ; [#uses=1]
+ store float %285, float* %286, align 4
+ %287 = load float** %230, align 4 ; [#uses=1]
+ %288 = fsub float -0.000000e+00, %82 ; [#uses=1]
+ %289 = getelementptr inbounds float* %287, i32 %271 ; [#uses=1]
+ store float %288, float* %289, align 4
+ %290 = load float** %230, align 4 ; [#uses=1]
+ %291 = fsub float -0.000000e+00, %107 ; [#uses=1]
+ %292 = getelementptr inbounds float* %290, i32 %264 ; [#uses=1]
+ store float %291, float* %292, align 4
+ %293 = load float** %230, align 4 ; [#uses=1]
+ %294 = fsub float -0.000000e+00, %92 ; [#uses=1]
+ %295 = getelementptr inbounds float* %293, i32 %276 ; [#uses=1]
+ store float %294, float* %295, align 4
+ %296 = load float** %230, align 4 ; [#uses=1]
+ %297 = fsub float -0.000000e+00, %71 ; [#uses=1]
+ %298 = getelementptr inbounds float* %296, i32 %279 ; [#uses=1]
+ store float %297, float* %298, align 4
+ %299 = fmul float %102, %176 ; [#uses=1]
+ %300 = fmul float %87, %181 ; [#uses=1]
+ %301 = fsub float %299, %300 ; [#uses=2]
+ %302 = fmul float %60, %181 ; [#uses=1]
+ %303 = fmul float %102, %171 ; [#uses=1]
+ %304 = fsub float %302, %303 ; [#uses=2]
+ %305 = fmul float %87, %171 ; [#uses=1]
+ %306 = fmul float %60, %176 ; [#uses=1]
+ %307 = fsub float %305, %306 ; [#uses=2]
+ %308 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 7 ; [#uses=8]
+ %309 = load float** %308, align 4 ; [#uses=1]
+ %310 = fmul float %307, %112 ; [#uses=1]
+ %311 = fmul float %304, %97 ; [#uses=1]
+ %312 = fadd float %310, %311 ; [#uses=1]
+ %313 = fmul float %301, %82 ; [#uses=1]
+ %314 = fadd float %312, %313 ; [#uses=1]
+ %315 = fmul float %314, %250 ; [#uses=1]
+ %316 = getelementptr inbounds float* %309, i32 %263 ; [#uses=1]
+ store float %315, float* %316, align 4
+ %317 = load float** %308, align 4 ; [#uses=1]
+ %318 = fmul float %307, %107 ; [#uses=1]
+ %319 = fmul float %304, %92 ; [#uses=1]
+ %320 = fadd float %318, %319 ; [#uses=1]
+ %321 = fmul float %301, %71 ; [#uses=1]
+ %322 = fadd float %320, %321 ; [#uses=1]
+ %323 = fmul float %322, %250 ; [#uses=1]
+ %324 = getelementptr inbounds float* %317, i32 %264 ; [#uses=1]
+ store float %323, float* %324, align 4
+ %325 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ %326 = load i8* %325, align 2 ; [#uses=1]
+ %327 = icmp eq i8 %326, 0 ; [#uses=1]
+ br i1 %327, label %bb21, label %bb17
+
+bb17: ; preds = %bb15
+ %328 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 14 ; [#uses=1]
+ %329 = load float* %328, align 4 ; [#uses=1]
+ %330 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ %331 = load float* %330, align 4 ; [#uses=1]
+ %332 = fmul float %329, %331 ; [#uses=2]
+ %333 = fcmp ogt float %332, 0.000000e+00 ; [#uses=1]
+ %iftmp.200.0 = select i1 %333, i32 1, i32 2 ; [#uses=1]
+ br label %bb21
+
+bb21: ; preds = %bb17, %bb15
+ %limit_err.0 = phi float [ %332, %bb17 ], [ 0.000000e+00, %bb15 ] ; [#uses=1]
+ %limit.0 = phi i32 [ %iftmp.200.0, %bb17 ], [ 0, %bb15 ] ; [#uses=5]
+ %334 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ %335 = load i8* %334, align 1 ; [#uses=1]
+ %not.toBool22 = icmp ne i8 %335, 0 ; [#uses=2]
+ %powered.0 = zext i1 %not.toBool22 to i32 ; [#uses=1]
+ %336 = or i32 %powered.0, %limit.0 ; [#uses=1]
+ %337 = icmp eq i32 %336, 0 ; [#uses=1]
+ br i1 %337, label %return, label %bb25
+
+bb25: ; preds = %bb21
+ %338 = load i32* %0, align 4 ; [#uses=1]
+ %339 = mul nsw i32 %338, 5 ; [#uses=19]
+ %340 = load float** %207, align 4 ; [#uses=1]
+ %341 = getelementptr inbounds float* %340, i32 %339 ; [#uses=1]
+ store float %102, float* %341, align 4
+ %342 = load float** %207, align 4 ; [#uses=1]
+ %343 = add nsw i32 %339, 1 ; [#uses=2]
+ %344 = getelementptr inbounds float* %342, i32 %343 ; [#uses=1]
+ store float %87, float* %344, align 4
+ %345 = load float** %207, align 4 ; [#uses=1]
+ %346 = add nsw i32 %339, 2 ; [#uses=2]
+ %347 = getelementptr inbounds float* %345, i32 %346 ; [#uses=1]
+ store float %60, float* %347, align 4
+ %348 = load float** %230, align 4 ; [#uses=1]
+ %349 = fsub float -0.000000e+00, %102 ; [#uses=1]
+ %350 = getelementptr inbounds float* %348, i32 %339 ; [#uses=1]
+ store float %349, float* %350, align 4
+ %351 = load float** %230, align 4 ; [#uses=1]
+ %352 = fsub float -0.000000e+00, %87 ; [#uses=1]
+ %353 = getelementptr inbounds float* %351, i32 %343 ; [#uses=1]
+ store float %352, float* %353, align 4
+ %354 = load float** %230, align 4 ; [#uses=1]
+ %355 = fsub float -0.000000e+00, %60 ; [#uses=1]
+ %356 = getelementptr inbounds float* %354, i32 %346 ; [#uses=1]
+ store float %355, float* %356, align 4
+ %357 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %358 = load float* %357, align 4 ; [#uses=2]
+ %359 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ %360 = load float* %359, align 4 ; [#uses=2]
+ %.not = icmp ne i32 %limit.0, 0 ; [#uses=1]
+ %361 = fcmp oeq float %358, %360 ; [#uses=2]
+ %or.cond = and i1 %.not, %361 ; [#uses=1]
+ %362 = load float** %308, align 4 ; [#uses=1]
+ %363 = getelementptr inbounds float* %362, i32 %339 ; [#uses=1]
+ store float 0.000000e+00, float* %363, align 4
+ %364 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 25 ; [#uses=2]
+ %365 = load i32* %364, align 4 ; [#uses=2]
+ %366 = and i32 %365, 2 ; [#uses=1]
+ %367 = icmp eq i32 %366, 0 ; [#uses=1]
+ br i1 %367, label %bb31, label %bb29
+
+bb29: ; preds = %bb25
+ %368 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 28 ; [#uses=1]
+ br label %bb31
+
+bb31: ; preds = %bb29, %bb25
+ %iftmp.202.0.in = phi float* [ %368, %bb29 ], [ %248, %bb25 ] ; [#uses=1]
+ %iftmp.202.0 = load float* %iftmp.202.0.in, align 4 ; [#uses=2]
+ %369 = xor i1 %not.toBool22, true ; [#uses=1]
+ %370 = or i1 %or.cond, %369 ; [#uses=1]
+ br i1 %370, label %bb35, label %bb32
+
+bb32: ; preds = %bb31
+ %371 = and i32 %365, 4 ; [#uses=1]
+ %372 = icmp eq i32 %371, 0 ; [#uses=1]
+ br i1 %372, label %bb34, label %bb33
+
+bb33: ; preds = %bb32
+ %373 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=1]
+ %374 = load float** %373, align 4 ; [#uses=1]
+ %375 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 26 ; [#uses=1]
+ %376 = load float* %375, align 4 ; [#uses=1]
+ %377 = getelementptr inbounds float* %374, i32 %339 ; [#uses=1]
+ store float %376, float* %377, align 4
+ br label %bb34
+
+bb34: ; preds = %bb33, %bb32
+ %378 = load float* %246, align 4 ; [#uses=1]
+ %379 = fmul float %378, %iftmp.202.0 ; [#uses=1]
+ %380 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 5 ; [#uses=2]
+ %381 = load float* %380, align 4 ; [#uses=1]
+ %382 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 16 ; [#uses=1]
+ %383 = load float* %382, align 4 ; [#uses=1]
+ %384 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ %385 = call float @_ZN17btTypedConstraint14getMotorFactorEfffff(%struct.btTypedConstraint* %384, float %383, float %358, float %360, float %381, float %379) ; [#uses=1]
+ %386 = load float** %308, align 4 ; [#uses=1]
+ %387 = getelementptr inbounds float* %386, i32 %339 ; [#uses=2]
+ %388 = load float* %387, align 4 ; [#uses=1]
+ %389 = load float* %380, align 4 ; [#uses=1]
+ %390 = fmul float %389, %385 ; [#uses=1]
+ %391 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ %392 = load float* %391, align 4 ; [#uses=1]
+ %393 = fmul float %390, %392 ; [#uses=1]
+ %394 = fadd float %388, %393 ; [#uses=1]
+ store float %394, float* %387, align 4
+ %395 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %396 = load float** %395, align 4 ; [#uses=1]
+ %397 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 6 ; [#uses=2]
+ %398 = load float* %397, align 4 ; [#uses=1]
+ %399 = fsub float -0.000000e+00, %398 ; [#uses=1]
+ %400 = getelementptr inbounds float* %396, i32 %339 ; [#uses=1]
+ store float %399, float* %400, align 4
+ %401 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %402 = load float** %401, align 4 ; [#uses=1]
+ %403 = load float* %397, align 4 ; [#uses=1]
+ %404 = getelementptr inbounds float* %402, i32 %339 ; [#uses=1]
+ store float %403, float* %404, align 4
+ br label %bb35
+
+bb35: ; preds = %bb34, %bb31
+ %405 = icmp eq i32 %limit.0, 0 ; [#uses=1]
+ br i1 %405, label %return, label %bb36
+
+bb36: ; preds = %bb35
+ %406 = load float* %246, align 4 ; [#uses=1]
+ %407 = fmul float %406, %iftmp.202.0 ; [#uses=1]
+ %408 = load float** %308, align 4 ; [#uses=1]
+ %409 = getelementptr inbounds float* %408, i32 %339 ; [#uses=2]
+ %410 = load float* %409, align 4 ; [#uses=1]
+ %411 = fmul float %407, %limit_err.0 ; [#uses=1]
+ %412 = fadd float %410, %411 ; [#uses=1]
+ store float %412, float* %409, align 4
+ %413 = load i32* %364, align 4 ; [#uses=1]
+ %414 = and i32 %413, 1 ; [#uses=1]
+ %toBool37 = icmp eq i32 %414, 0 ; [#uses=1]
+ br i1 %toBool37, label %bb39, label %bb38
+
+bb38: ; preds = %bb36
+ %415 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=1]
+ %416 = load float** %415, align 4 ; [#uses=1]
+ %417 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 27 ; [#uses=1]
+ %418 = load float* %417, align 4 ; [#uses=1]
+ %419 = getelementptr inbounds float* %416, i32 %339 ; [#uses=1]
+ store float %418, float* %419, align 4
+ br label %bb39
+
+bb39: ; preds = %bb38, %bb36
+ br i1 %361, label %bb40, label %bb41
+
+bb40: ; preds = %bb39
+ %420 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %421 = load float** %420, align 4 ; [#uses=1]
+ %422 = getelementptr inbounds float* %421, i32 %339 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %422, align 4
+ %423 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %424 = load float** %423, align 4 ; [#uses=1]
+ %425 = getelementptr inbounds float* %424, i32 %339 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %425, align 4
+ br label %bb44
+
+bb41: ; preds = %bb39
+ %426 = icmp eq i32 %limit.0, 1 ; [#uses=1]
+ %427 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %428 = load float** %427, align 4 ; [#uses=1]
+ %429 = getelementptr inbounds float* %428, i32 %339 ; [#uses=2]
+ br i1 %426, label %bb42, label %bb43
+
+bb42: ; preds = %bb41
+ store float 0.000000e+00, float* %429, align 4
+ %430 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %431 = load float** %430, align 4 ; [#uses=1]
+ %432 = getelementptr inbounds float* %431, i32 %339 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %432, align 4
+ br label %bb44
+
+bb43: ; preds = %bb41
+ store float 0xC7EFFFFFE0000000, float* %429, align 4
+ %433 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %434 = load float** %433, align 4 ; [#uses=1]
+ %435 = getelementptr inbounds float* %434, i32 %339 ; [#uses=1]
+ store float 0.000000e+00, float* %435, align 4
+ br label %bb44
+
+bb44: ; preds = %bb43, %bb42, %bb40
+ %436 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %437 = load float* %436, align 4 ; [#uses=3]
+ %438 = fcmp ogt float %437, 0.000000e+00 ; [#uses=1]
+ br i1 %438, label %bb45, label %bb53
+
+bb45: ; preds = %bb44
+ %439 = getelementptr inbounds %struct.btQuadWord* %angVelA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %440 = load float* %439, align 4 ; [#uses=1]
+ %441 = fmul float %440, %102 ; [#uses=1]
+ %442 = getelementptr inbounds %struct.btQuadWord* %angVelA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %443 = load float* %442, align 4 ; [#uses=1]
+ %444 = fmul float %443, %87 ; [#uses=1]
+ %445 = fadd float %441, %444 ; [#uses=1]
+ %446 = getelementptr inbounds %struct.btQuadWord* %angVelA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %447 = load float* %446, align 4 ; [#uses=1]
+ %448 = fmul float %447, %60 ; [#uses=1]
+ %449 = fadd float %445, %448 ; [#uses=1]
+ %450 = getelementptr inbounds %struct.btQuadWord* %angVelB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %451 = load float* %450, align 4 ; [#uses=1]
+ %452 = fmul float %451, %102 ; [#uses=1]
+ %453 = getelementptr inbounds %struct.btQuadWord* %angVelB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %454 = load float* %453, align 4 ; [#uses=1]
+ %455 = fmul float %454, %87 ; [#uses=1]
+ %456 = fadd float %452, %455 ; [#uses=1]
+ %457 = getelementptr inbounds %struct.btQuadWord* %angVelB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %458 = load float* %457, align 4 ; [#uses=1]
+ %459 = fmul float %458, %60 ; [#uses=1]
+ %460 = fadd float %456, %459 ; [#uses=1]
+ %461 = fsub float %449, %460 ; [#uses=4]
+ %462 = icmp eq i32 %limit.0, 1 ; [#uses=1]
+ br i1 %462, label %bb46, label %bb49
+
+bb46: ; preds = %bb45
+ %463 = fcmp olt float %461, 0.000000e+00 ; [#uses=1]
+ br i1 %463, label %bb47, label %bb53
+
+bb47: ; preds = %bb46
+ %464 = fsub float -0.000000e+00, %437 ; [#uses=1]
+ %465 = fmul float %461, %464 ; [#uses=2]
+ %466 = load float** %308, align 4 ; [#uses=1]
+ %467 = getelementptr inbounds float* %466, i32 %339 ; [#uses=2]
+ %468 = load float* %467, align 4 ; [#uses=1]
+ %469 = fcmp olt float %468, %465 ; [#uses=1]
+ br i1 %469, label %bb48, label %bb53
+
+bb48: ; preds = %bb47
+ store float %465, float* %467, align 4
+ br label %bb53
+
+bb49: ; preds = %bb45
+ %470 = fcmp ogt float %461, 0.000000e+00 ; [#uses=1]
+ br i1 %470, label %bb50, label %bb53
+
+bb50: ; preds = %bb49
+ %471 = fsub float -0.000000e+00, %437 ; [#uses=1]
+ %472 = fmul float %461, %471 ; [#uses=2]
+ %473 = load float** %308, align 4 ; [#uses=1]
+ %474 = getelementptr inbounds float* %473, i32 %339 ; [#uses=2]
+ %475 = load float* %474, align 4 ; [#uses=1]
+ %476 = fcmp ogt float %475, %472 ; [#uses=1]
+ br i1 %476, label %bb52, label %bb53
+
+bb52: ; preds = %bb50
+ store float %472, float* %474, align 4
+ br label %bb53
+
+bb53: ; preds = %bb52, %bb50, %bb49, %bb48, %bb47, %bb46, %bb44
+ %477 = load float** %308, align 4 ; [#uses=1]
+ %478 = getelementptr inbounds float* %477, i32 %339 ; [#uses=2]
+ %479 = load float* %478, align 4 ; [#uses=1]
+ %480 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %481 = load float* %480, align 4 ; [#uses=1]
+ %482 = fmul float %479, %481 ; [#uses=1]
+ store float %482, float* %478, align 4
+ ret void
+
+return: ; preds = %bb35, %bb21
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btHingeConstraint32getInfo2InternalUsingFrameOffsetEPN17btTypedConstraint17btConstraintInfo2ERK11btTransformS5_RK9btVector3S8_(%struct.btHingeConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, %struct.btTransform* %transA, %struct.btTransform* %transB, %struct.btQuadWord* nocapture %angVelA, %struct.btQuadWord* nocapture %angVelB) align 2 {
+entry:
+ %ax1 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %tmpA = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %tmpB = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %p = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %q = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 6 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=13]
+ %2 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = fmul float %3, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ %9 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=3]
+ %11 = fmul float %8, %10 ; [#uses=1]
+ %12 = fadd float %6, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=3]
+ %15 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=3]
+ %17 = fmul float %14, %16 ; [#uses=1]
+ %18 = fadd float %12, %17 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=2]
+ %21 = fadd float %18, %20 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=3]
+ %24 = fmul float %23, %5 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=3]
+ %27 = fmul float %26, %10 ; [#uses=1]
+ %28 = fadd float %24, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=3]
+ %31 = fmul float %30, %16 ; [#uses=1]
+ %32 = fadd float %28, %31 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ %35 = fadd float %32, %34 ; [#uses=2]
+ %36 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=3]
+ %38 = fmul float %37, %5 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=3]
+ %41 = fmul float %40, %10 ; [#uses=1]
+ %42 = fadd float %38, %41 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=3]
+ %45 = fmul float %44, %16 ; [#uses=1]
+ %46 = fadd float %42, %45 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=2]
+ %49 = fadd float %46, %48 ; [#uses=2]
+ %50 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=3]
+ %52 = fmul float %51, %3 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=3]
+ %55 = fmul float %54, %8 ; [#uses=1]
+ %56 = fadd float %52, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=3]
+ %59 = fmul float %58, %14 ; [#uses=1]
+ %60 = fadd float %56, %59 ; [#uses=3]
+ %61 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=3]
+ %63 = fmul float %62, %3 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=3]
+ %66 = fmul float %65, %8 ; [#uses=1]
+ %67 = fadd float %63, %66 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=3]
+ %70 = fmul float %69, %14 ; [#uses=1]
+ %71 = fadd float %67, %70 ; [#uses=2]
+ %72 = fmul float %51, %23 ; [#uses=1]
+ %73 = fmul float %54, %26 ; [#uses=1]
+ %74 = fadd float %72, %73 ; [#uses=1]
+ %75 = fmul float %58, %30 ; [#uses=1]
+ %76 = fadd float %74, %75 ; [#uses=3]
+ %77 = fmul float %62, %23 ; [#uses=1]
+ %78 = fmul float %65, %26 ; [#uses=1]
+ %79 = fadd float %77, %78 ; [#uses=1]
+ %80 = fmul float %69, %30 ; [#uses=1]
+ %81 = fadd float %79, %80 ; [#uses=2]
+ %82 = fmul float %51, %37 ; [#uses=1]
+ %83 = fmul float %54, %40 ; [#uses=1]
+ %84 = fadd float %82, %83 ; [#uses=1]
+ %85 = fmul float %58, %44 ; [#uses=1]
+ %86 = fadd float %84, %85 ; [#uses=3]
+ %87 = fmul float %62, %37 ; [#uses=1]
+ %88 = fmul float %65, %40 ; [#uses=1]
+ %89 = fadd float %87, %88 ; [#uses=1]
+ %90 = fmul float %69, %44 ; [#uses=1]
+ %91 = fadd float %89, %90 ; [#uses=2]
+ %92 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=2]
+ %94 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=3]
+ %96 = fmul float %93, %95 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=2]
+ %99 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %100 = load float* %99, align 4 ; [#uses=3]
+ %101 = fmul float %98, %100 ; [#uses=1]
+ %102 = fadd float %96, %101 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %104 = load float* %103, align 4 ; [#uses=2]
+ %105 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %106 = load float* %105, align 4 ; [#uses=3]
+ %107 = fmul float %104, %106 ; [#uses=1]
+ %108 = fadd float %102, %107 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %110 = load float* %109, align 4 ; [#uses=2]
+ %111 = fadd float %108, %110 ; [#uses=2]
+ %112 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %113 = load float* %112, align 4 ; [#uses=2]
+ %114 = fmul float %113, %95 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %116 = load float* %115, align 4 ; [#uses=2]
+ %117 = fmul float %116, %100 ; [#uses=1]
+ %118 = fadd float %114, %117 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %120 = load float* %119, align 4 ; [#uses=2]
+ %121 = fmul float %120, %106 ; [#uses=1]
+ %122 = fadd float %118, %121 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %124 = load float* %123, align 4 ; [#uses=2]
+ %125 = fadd float %122, %124 ; [#uses=2]
+ %126 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %127 = load float* %126, align 4 ; [#uses=2]
+ %128 = fmul float %127, %95 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=2]
+ %131 = fmul float %130, %100 ; [#uses=1]
+ %132 = fadd float %128, %131 ; [#uses=1]
+ %133 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %134 = load float* %133, align 4 ; [#uses=2]
+ %135 = fmul float %134, %106 ; [#uses=1]
+ %136 = fadd float %132, %135 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %138 = load float* %137, align 4 ; [#uses=2]
+ %139 = fadd float %136, %138 ; [#uses=2]
+ %140 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=3]
+ %142 = fmul float %141, %93 ; [#uses=1]
+ %143 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %144 = load float* %143, align 4 ; [#uses=3]
+ %145 = fmul float %144, %98 ; [#uses=1]
+ %146 = fadd float %142, %145 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %148 = load float* %147, align 4 ; [#uses=3]
+ %149 = fmul float %148, %104 ; [#uses=1]
+ %150 = fadd float %146, %149 ; [#uses=3]
+ %151 = fmul float %141, %113 ; [#uses=1]
+ %152 = fmul float %144, %116 ; [#uses=1]
+ %153 = fadd float %151, %152 ; [#uses=1]
+ %154 = fmul float %148, %120 ; [#uses=1]
+ %155 = fadd float %153, %154 ; [#uses=3]
+ %156 = fmul float %141, %127 ; [#uses=1]
+ %157 = fmul float %144, %130 ; [#uses=1]
+ %158 = fadd float %156, %157 ; [#uses=1]
+ %159 = fmul float %148, %134 ; [#uses=1]
+ %160 = fadd float %158, %159 ; [#uses=3]
+ %161 = fsub float %111, %21 ; [#uses=3]
+ %162 = fsub float %125, %35 ; [#uses=3]
+ %163 = fsub float %139, %49 ; [#uses=3]
+ %164 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %165 = load %struct.btRigidBody** %164, align 4 ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btRigidBody* %165, i32 0, i32 4 ; [#uses=1]
+ %167 = load float* %166, align 4 ; [#uses=2]
+ %168 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %169 = load %struct.btRigidBody** %168, align 4 ; [#uses=1]
+ %170 = getelementptr inbounds %struct.btRigidBody* %169, i32 0, i32 4 ; [#uses=1]
+ %171 = load float* %170, align 4 ; [#uses=3]
+ %172 = fcmp olt float %167, 0x3E80000000000000 ; [#uses=1]
+ %173 = fcmp olt float %171, 0x3E80000000000000 ; [#uses=1]
+ %or.cond = or i1 %172, %173 ; [#uses=2]
+ %174 = fadd float %167, %171 ; [#uses=2]
+ %175 = fcmp ogt float %174, 0.000000e+00 ; [#uses=1]
+ br i1 %175, label %bb4, label %bb6
+
+bb4: ; preds = %entry
+ %176 = fdiv float %171, %174 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb4, %entry
+ %storemerge = phi float [ %176, %bb4 ], [ 5.000000e-01, %entry ] ; [#uses=16]
+ %177 = fsub float 1.000000e+00, %storemerge ; [#uses=15]
+ %178 = fmul float %150, %177 ; [#uses=1]
+ %179 = fmul float %155, %177 ; [#uses=1]
+ %180 = fmul float %160, %177 ; [#uses=1]
+ %181 = fmul float %60, %storemerge ; [#uses=1]
+ %182 = fmul float %76, %storemerge ; [#uses=1]
+ %183 = fmul float %86, %storemerge ; [#uses=1]
+ %184 = fadd float %181, %178 ; [#uses=3]
+ %185 = fadd float %182, %179 ; [#uses=3]
+ %186 = fadd float %183, %180 ; [#uses=3]
+ %187 = getelementptr inbounds %struct.btQuadWord* %ax1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %188 = getelementptr inbounds %struct.btQuadWord* %ax1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btQuadWord* %ax1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btQuadWord* %ax1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %190, align 4
+ %191 = fmul float %186, %186 ; [#uses=1]
+ %192 = fmul float %185, %185 ; [#uses=1]
+ %193 = fadd float %191, %192 ; [#uses=1]
+ %194 = fmul float %184, %184 ; [#uses=1]
+ %195 = fadd float %193, %194 ; [#uses=1]
+ %196 = call float @sqrtf(float %195) nounwind readonly ; [#uses=1]
+ %197 = fdiv float 1.000000e+00, %196 ; [#uses=3]
+ %198 = fmul float %186, %197 ; [#uses=17]
+ store float %198, float* %187, align 8
+ %199 = fmul float %185, %197 ; [#uses=17]
+ store float %199, float* %188, align 4
+ %200 = fmul float %184, %197 ; [#uses=17]
+ store float %200, float* %189, align 8
+ %201 = shl i32 %1, 1 ; [#uses=10]
+ %202 = fsub float %111, %110 ; [#uses=2]
+ %203 = fsub float %125, %124 ; [#uses=2]
+ %204 = fsub float %139, %138 ; [#uses=2]
+ %205 = fmul float %204, %198 ; [#uses=1]
+ %206 = fmul float %203, %199 ; [#uses=1]
+ %207 = fadd float %205, %206 ; [#uses=1]
+ %208 = fmul float %202, %200 ; [#uses=1]
+ %209 = fadd float %207, %208 ; [#uses=3]
+ %210 = fmul float %200, %209 ; [#uses=2]
+ %211 = fmul float %199, %209 ; [#uses=2]
+ %212 = fmul float %198, %209 ; [#uses=2]
+ %213 = fsub float %202, %210 ; [#uses=2]
+ %214 = fsub float %203, %211 ; [#uses=2]
+ %215 = fsub float %204, %212 ; [#uses=2]
+ %216 = fsub float %21, %20 ; [#uses=2]
+ %217 = fsub float %35, %34 ; [#uses=2]
+ %218 = fsub float %49, %48 ; [#uses=2]
+ %219 = fmul float %218, %198 ; [#uses=1]
+ %220 = fmul float %217, %199 ; [#uses=1]
+ %221 = fadd float %219, %220 ; [#uses=1]
+ %222 = fmul float %216, %200 ; [#uses=1]
+ %223 = fadd float %221, %222 ; [#uses=3]
+ %224 = fmul float %200, %223 ; [#uses=2]
+ %225 = fmul float %199, %223 ; [#uses=2]
+ %226 = fmul float %198, %223 ; [#uses=2]
+ %227 = fsub float %216, %224 ; [#uses=2]
+ %228 = fsub float %217, %225 ; [#uses=2]
+ %229 = fsub float %218, %226 ; [#uses=2]
+ %230 = fsub float %224, %210 ; [#uses=2]
+ %231 = fsub float %225, %211 ; [#uses=2]
+ %232 = fsub float %226, %212 ; [#uses=2]
+ %233 = fmul float %230, %storemerge ; [#uses=1]
+ %234 = fmul float %231, %storemerge ; [#uses=1]
+ %235 = fmul float %232, %storemerge ; [#uses=1]
+ %236 = fadd float %227, %233 ; [#uses=6]
+ %237 = fadd float %228, %234 ; [#uses=6]
+ %238 = fadd float %229, %235 ; [#uses=6]
+ %239 = fmul float %230, %177 ; [#uses=1]
+ %240 = fmul float %231, %177 ; [#uses=1]
+ %241 = fmul float %232, %177 ; [#uses=1]
+ %242 = fsub float %213, %239 ; [#uses=6]
+ %243 = fsub float %214, %240 ; [#uses=6]
+ %244 = fsub float %215, %241 ; [#uses=6]
+ %245 = fmul float %227, %177 ; [#uses=1]
+ %246 = fmul float %228, %177 ; [#uses=1]
+ %247 = fmul float %229, %177 ; [#uses=1]
+ %248 = fmul float %213, %storemerge ; [#uses=1]
+ %249 = fmul float %214, %storemerge ; [#uses=1]
+ %250 = fmul float %215, %storemerge ; [#uses=1]
+ %251 = fadd float %248, %245 ; [#uses=4]
+ %252 = fadd float %249, %246 ; [#uses=4]
+ %253 = fadd float %250, %247 ; [#uses=4]
+ %254 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %253, float* %254, align 8
+ %255 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=4]
+ store float %252, float* %255, align 4
+ %256 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %251, float* %256, align 8
+ %257 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %257, align 4
+ %258 = fmul float %253, %253 ; [#uses=1]
+ %259 = fmul float %252, %252 ; [#uses=1]
+ %260 = fadd float %258, %259 ; [#uses=1]
+ %261 = fmul float %251, %251 ; [#uses=1]
+ %262 = fadd float %260, %261 ; [#uses=2]
+ %263 = fcmp ogt float %262, 0x3E80000000000000 ; [#uses=1]
+ br i1 %263, label %bb11, label %bb12
+
+bb11: ; preds = %bb6
+ %264 = call float @sqrtf(float %262) nounwind readonly ; [#uses=1]
+ %265 = fdiv float 1.000000e+00, %264 ; [#uses=3]
+ %266 = fmul float %253, %265 ; [#uses=2]
+ store float %266, float* %254, align 8
+ %267 = fmul float %252, %265 ; [#uses=2]
+ store float %267, float* %255, align 4
+ %268 = fmul float %251, %265 ; [#uses=2]
+ store float %268, float* %256, align 8
+ br label %bb23
+
+bb12: ; preds = %bb6
+ store float %91, float* %254, align 8
+ store float %81, float* %255, align 4
+ store float %71, float* %256, align 8
+ store float 0.000000e+00, float* %257, align 4
+ br label %bb23
+
+bb23: ; preds = %bb12, %bb11
+ %269 = phi float [ %71, %bb12 ], [ %268, %bb11 ] ; [#uses=11]
+ %270 = phi float [ %91, %bb12 ], [ %266, %bb11 ] ; [#uses=11]
+ %271 = phi float [ %81, %bb12 ], [ %267, %bb11 ] ; [#uses=7]
+ %272 = fmul float %198, %271 ; [#uses=1]
+ %273 = fmul float %199, %270 ; [#uses=1]
+ %274 = fsub float %272, %273 ; [#uses=10]
+ %275 = fmul float %200, %270 ; [#uses=1]
+ %276 = fmul float %198, %269 ; [#uses=1]
+ %277 = fsub float %275, %276 ; [#uses=10]
+ %278 = fmul float %199, %269 ; [#uses=1]
+ %279 = fmul float %200, %271 ; [#uses=1]
+ %280 = fsub float %278, %279 ; [#uses=10]
+ %281 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %280, float* %281, align 8
+ %282 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %277, float* %282, align 4
+ %283 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %274, float* %283, align 8
+ %284 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %284, align 4
+ %285 = fmul float %238, %271 ; [#uses=1]
+ %286 = fmul float %237, %270 ; [#uses=1]
+ %287 = fsub float %285, %286 ; [#uses=1]
+ %288 = fmul float %236, %270 ; [#uses=1]
+ %289 = fmul float %238, %269 ; [#uses=1]
+ %290 = fsub float %288, %289 ; [#uses=1]
+ %291 = fmul float %237, %269 ; [#uses=1]
+ %292 = fmul float %236, %271 ; [#uses=1]
+ %293 = fsub float %291, %292 ; [#uses=1]
+ %294 = getelementptr inbounds %struct.btQuadWord* %tmpA, i32 0, i32 0, i32 0 ; [#uses=4]
+ %295 = getelementptr inbounds %struct.btQuadWord* %tmpA, i32 0, i32 0, i32 1 ; [#uses=6]
+ store float %290, float* %295, align 4
+ %296 = getelementptr inbounds %struct.btQuadWord* %tmpA, i32 0, i32 0, i32 2 ; [#uses=6]
+ store float %287, float* %296, align 8
+ %297 = getelementptr inbounds %struct.btQuadWord* %tmpA, i32 0, i32 0, i32 3 ; [#uses=2]
+ %298 = fmul float %244, %271 ; [#uses=1]
+ %299 = fmul float %243, %270 ; [#uses=1]
+ %300 = fsub float %298, %299 ; [#uses=1]
+ %301 = fmul float %242, %270 ; [#uses=1]
+ %302 = fmul float %244, %269 ; [#uses=1]
+ %303 = fsub float %301, %302 ; [#uses=1]
+ %304 = fmul float %243, %269 ; [#uses=1]
+ %305 = fmul float %242, %271 ; [#uses=1]
+ %306 = fsub float %304, %305 ; [#uses=1]
+ %307 = getelementptr inbounds %struct.btQuadWord* %tmpB, i32 0, i32 0, i32 0 ; [#uses=4]
+ %308 = getelementptr inbounds %struct.btQuadWord* %tmpB, i32 0, i32 0, i32 1 ; [#uses=6]
+ store float %303, float* %308, align 4
+ %309 = getelementptr inbounds %struct.btQuadWord* %tmpB, i32 0, i32 0, i32 2 ; [#uses=6]
+ store float %300, float* %309, align 8
+ %310 = getelementptr inbounds %struct.btQuadWord* %tmpB, i32 0, i32 0, i32 3 ; [#uses=2]
+ %311 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 3 ; [#uses=3]
+ %312 = load float** %311, align 4 ; [#uses=1]
+ store float %293, float* %312, align 4
+ %313 = load float** %311, align 4 ; [#uses=1]
+ %314 = load float* %295, align 4 ; [#uses=1]
+ %scevgep271.1 = getelementptr float* %313, i32 1 ; [#uses=1]
+ store float %314, float* %scevgep271.1, align 4
+ %315 = load float** %311, align 4 ; [#uses=1]
+ %316 = load float* %296, align 8 ; [#uses=1]
+ %scevgep271.2 = getelementptr float* %315, i32 2 ; [#uses=1]
+ store float %316, float* %scevgep271.2, align 4
+ %317 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 5 ; [#uses=3]
+ %318 = load float** %317, align 4 ; [#uses=1]
+ %319 = fsub float -0.000000e+00, %306 ; [#uses=1]
+ store float %319, float* %318, align 4
+ %320 = load float** %317, align 4 ; [#uses=1]
+ %321 = load float* %308, align 4 ; [#uses=1]
+ %322 = fsub float -0.000000e+00, %321 ; [#uses=1]
+ %scevgep269.1 = getelementptr float* %320, i32 1 ; [#uses=1]
+ store float %322, float* %scevgep269.1, align 4
+ %323 = load float** %317, align 4 ; [#uses=1]
+ %324 = load float* %309, align 8 ; [#uses=1]
+ %325 = fsub float -0.000000e+00, %324 ; [#uses=1]
+ %scevgep269.2 = getelementptr float* %323, i32 2 ; [#uses=1]
+ store float %325, float* %scevgep269.2, align 4
+ %326 = fmul float %238, %277 ; [#uses=1]
+ %327 = fmul float %237, %280 ; [#uses=1]
+ %328 = fsub float %326, %327 ; [#uses=4]
+ %329 = fmul float %236, %280 ; [#uses=1]
+ %330 = fmul float %238, %274 ; [#uses=1]
+ %331 = fsub float %329, %330 ; [#uses=4]
+ %332 = fmul float %237, %274 ; [#uses=1]
+ %333 = fmul float %236, %277 ; [#uses=1]
+ %334 = fsub float %332, %333 ; [#uses=4]
+ store float %334, float* %294, align 8
+ store float %331, float* %295, align 4
+ store float %328, float* %296, align 8
+ store float 0.000000e+00, float* %297, align 4
+ %335 = fmul float %244, %277 ; [#uses=1]
+ %336 = fmul float %243, %280 ; [#uses=1]
+ %337 = fsub float %335, %336 ; [#uses=4]
+ %338 = fmul float %242, %280 ; [#uses=1]
+ %339 = fmul float %244, %274 ; [#uses=1]
+ %340 = fsub float %338, %339 ; [#uses=4]
+ %341 = fmul float %243, %274 ; [#uses=1]
+ %342 = fmul float %242, %277 ; [#uses=1]
+ %343 = fsub float %341, %342 ; [#uses=4]
+ store float %343, float* %307, align 8
+ store float %340, float* %308, align 4
+ store float %337, float* %309, align 8
+ store float 0.000000e+00, float* %310, align 4
+ br i1 %or.cond, label %bb29, label %bb41
+
+bb29: ; preds = %bb23
+ %344 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ %345 = load i8* %344, align 2 ; [#uses=1]
+ %346 = icmp eq i8 %345, 0 ; [#uses=1]
+ br i1 %346, label %bb41, label %bb34
+
+bb34: ; preds = %bb29
+ %347 = fmul float %343, %177 ; [#uses=2]
+ store float %347, float* %307, align 8
+ %348 = fmul float %340, %177 ; [#uses=2]
+ store float %348, float* %308, align 4
+ %349 = fmul float %337, %177 ; [#uses=2]
+ store float %349, float* %309, align 8
+ %350 = fmul float %334, %storemerge ; [#uses=2]
+ store float %350, float* %294, align 8
+ %351 = fmul float %331, %storemerge ; [#uses=2]
+ store float %351, float* %295, align 4
+ %352 = fmul float %328, %storemerge ; [#uses=2]
+ store float %352, float* %296, align 8
+ br label %bb41
+
+bb41: ; preds = %bb34, %bb29, %bb23
+ %353 = phi float [ %350, %bb34 ], [ %334, %bb23 ], [ %334, %bb29 ] ; [#uses=1]
+ %354 = phi float [ %351, %bb34 ], [ %331, %bb23 ], [ %331, %bb29 ] ; [#uses=1]
+ %355 = phi float [ %352, %bb34 ], [ %328, %bb23 ], [ %328, %bb29 ] ; [#uses=1]
+ %356 = phi float [ %347, %bb34 ], [ %343, %bb23 ], [ %343, %bb29 ] ; [#uses=1]
+ %357 = phi float [ %348, %bb34 ], [ %340, %bb23 ], [ %340, %bb29 ] ; [#uses=1]
+ %358 = phi float [ %349, %bb34 ], [ %337, %bb23 ], [ %337, %bb29 ] ; [#uses=1]
+ %359 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 3 ; [#uses=3]
+ %360 = load float** %359, align 4 ; [#uses=1]
+ %scevgep268 = getelementptr float* %360, i32 %1 ; [#uses=1]
+ store float %353, float* %scevgep268, align 4
+ %tmp267.1 = add i32 %1, 1 ; [#uses=1]
+ %361 = load float** %359, align 4 ; [#uses=1]
+ %scevgep268.1 = getelementptr float* %361, i32 %tmp267.1 ; [#uses=1]
+ store float %354, float* %scevgep268.1, align 4
+ %tmp267.2 = add i32 %1, 2 ; [#uses=1]
+ %362 = load float** %359, align 4 ; [#uses=1]
+ %scevgep268.2 = getelementptr float* %362, i32 %tmp267.2 ; [#uses=1]
+ store float %355, float* %scevgep268.2, align 4
+ %363 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 5 ; [#uses=3]
+ %364 = load float** %363, align 4 ; [#uses=1]
+ %365 = fsub float -0.000000e+00, %356 ; [#uses=1]
+ %scevgep265 = getelementptr float* %364, i32 %1 ; [#uses=1]
+ store float %365, float* %scevgep265, align 4
+ %tmp264.1 = add i32 %1, 1 ; [#uses=1]
+ %366 = load float** %363, align 4 ; [#uses=1]
+ %367 = fsub float -0.000000e+00, %357 ; [#uses=1]
+ %scevgep265.1 = getelementptr float* %366, i32 %tmp264.1 ; [#uses=1]
+ store float %367, float* %scevgep265.1, align 4
+ %tmp264.2 = add i32 %1, 2 ; [#uses=1]
+ %368 = load float** %363, align 4 ; [#uses=1]
+ %369 = fsub float -0.000000e+00, %358 ; [#uses=1]
+ %scevgep265.2 = getelementptr float* %368, i32 %tmp264.2 ; [#uses=1]
+ store float %369, float* %scevgep265.2, align 4
+ %370 = fmul float %238, %199 ; [#uses=1]
+ %371 = fmul float %237, %198 ; [#uses=1]
+ %372 = fsub float %370, %371 ; [#uses=3]
+ %373 = fmul float %236, %198 ; [#uses=1]
+ %374 = fmul float %238, %200 ; [#uses=1]
+ %375 = fsub float %373, %374 ; [#uses=3]
+ %376 = fmul float %237, %200 ; [#uses=1]
+ %377 = fmul float %236, %199 ; [#uses=1]
+ %378 = fsub float %376, %377 ; [#uses=3]
+ store float %378, float* %294, align 8
+ store float %375, float* %295, align 4
+ store float %372, float* %296, align 8
+ store float 0.000000e+00, float* %297, align 4
+ %379 = fmul float %244, %199 ; [#uses=1]
+ %380 = fmul float %243, %198 ; [#uses=1]
+ %381 = fsub float %379, %380 ; [#uses=3]
+ %382 = fmul float %242, %198 ; [#uses=1]
+ %383 = fmul float %244, %200 ; [#uses=1]
+ %384 = fsub float %382, %383 ; [#uses=3]
+ %385 = fmul float %243, %200 ; [#uses=1]
+ %386 = fmul float %242, %199 ; [#uses=1]
+ %387 = fsub float %385, %386 ; [#uses=3]
+ store float %387, float* %307, align 8
+ store float %384, float* %308, align 4
+ store float %381, float* %309, align 8
+ store float 0.000000e+00, float* %310, align 4
+ br i1 %or.cond, label %bb45, label %bb52
+
+bb45: ; preds = %bb41
+ %388 = fmul float %387, %177 ; [#uses=2]
+ store float %388, float* %307, align 8
+ %389 = fmul float %384, %177 ; [#uses=2]
+ store float %389, float* %308, align 4
+ %390 = fmul float %381, %177 ; [#uses=2]
+ store float %390, float* %309, align 8
+ %391 = fmul float %378, %storemerge ; [#uses=2]
+ store float %391, float* %294, align 8
+ %392 = fmul float %375, %storemerge ; [#uses=2]
+ store float %392, float* %295, align 4
+ %393 = fmul float %372, %storemerge ; [#uses=2]
+ store float %393, float* %296, align 8
+ br label %bb52
+
+bb52: ; preds = %bb45, %bb41
+ %394 = phi float [ %391, %bb45 ], [ %378, %bb41 ] ; [#uses=1]
+ %395 = phi float [ %392, %bb45 ], [ %375, %bb41 ] ; [#uses=1]
+ %396 = phi float [ %393, %bb45 ], [ %372, %bb41 ] ; [#uses=1]
+ %397 = phi float [ %388, %bb45 ], [ %387, %bb41 ] ; [#uses=1]
+ %398 = phi float [ %389, %bb45 ], [ %384, %bb41 ] ; [#uses=1]
+ %399 = phi float [ %390, %bb45 ], [ %381, %bb41 ] ; [#uses=1]
+ %400 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 3 ; [#uses=3]
+ %401 = load float** %400, align 4 ; [#uses=1]
+ %scevgep262 = getelementptr float* %401, i32 %201 ; [#uses=1]
+ store float %394, float* %scevgep262, align 4
+ %tmp261.1273 = or i32 %201, 1 ; [#uses=1]
+ %402 = load float** %400, align 4 ; [#uses=1]
+ %scevgep262.1 = getelementptr float* %402, i32 %tmp261.1273 ; [#uses=1]
+ store float %395, float* %scevgep262.1, align 4
+ %tmp261.2 = add i32 %201, 2 ; [#uses=1]
+ %403 = load float** %400, align 4 ; [#uses=1]
+ %scevgep262.2 = getelementptr float* %403, i32 %tmp261.2 ; [#uses=1]
+ store float %396, float* %scevgep262.2, align 4
+ %404 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 5 ; [#uses=3]
+ %405 = load float** %404, align 4 ; [#uses=1]
+ %406 = fsub float -0.000000e+00, %397 ; [#uses=1]
+ %scevgep258 = getelementptr float* %405, i32 %201 ; [#uses=1]
+ store float %406, float* %scevgep258, align 4
+ %tmp257.1274 = or i32 %201, 1 ; [#uses=1]
+ %407 = load float** %404, align 4 ; [#uses=1]
+ %408 = fsub float -0.000000e+00, %398 ; [#uses=1]
+ %scevgep258.1 = getelementptr float* %407, i32 %tmp257.1274 ; [#uses=1]
+ store float %408, float* %scevgep258.1, align 4
+ %tmp257.2 = add i32 %201, 2 ; [#uses=1]
+ %409 = load float** %404, align 4 ; [#uses=1]
+ %410 = fsub float -0.000000e+00, %399 ; [#uses=1]
+ %scevgep258.2 = getelementptr float* %409, i32 %tmp257.2 ; [#uses=1]
+ store float %410, float* %scevgep258.2, align 4
+ %411 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 0 ; [#uses=4]
+ %412 = load float* %411, align 4 ; [#uses=1]
+ %413 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 1 ; [#uses=3]
+ %414 = load float* %413, align 4 ; [#uses=1]
+ %415 = fmul float %412, %414 ; [#uses=3]
+ %416 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ %417 = load i8* %416, align 4 ; [#uses=1]
+ %toBool53not = icmp eq i8 %417, 0 ; [#uses=1]
+ br i1 %toBool53not, label %bb67, label %bb68
+
+bb67: ; preds = %bb52
+ %418 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 2 ; [#uses=3]
+ %419 = load float** %418, align 4 ; [#uses=1]
+ store float %270, float* %419, align 4
+ %420 = load float** %418, align 4 ; [#uses=1]
+ %421 = load float* %255, align 4 ; [#uses=3]
+ %scevgep253.1 = getelementptr float* %420, i32 1 ; [#uses=1]
+ store float %421, float* %scevgep253.1, align 4
+ %422 = load float** %418, align 4 ; [#uses=1]
+ %scevgep253.2 = getelementptr float* %422, i32 2 ; [#uses=1]
+ store float %269, float* %scevgep253.2, align 4
+ %423 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 2 ; [#uses=3]
+ %424 = load float** %423, align 4 ; [#uses=1]
+ %scevgep252 = getelementptr float* %424, i32 %1 ; [#uses=1]
+ store float %280, float* %scevgep252, align 4
+ %tmp251.1 = add i32 %1, 1 ; [#uses=1]
+ %425 = load float** %423, align 4 ; [#uses=1]
+ %scevgep252.1 = getelementptr float* %425, i32 %tmp251.1 ; [#uses=1]
+ store float %277, float* %scevgep252.1, align 4
+ %tmp251.2 = add i32 %1, 2 ; [#uses=1]
+ %426 = load float** %423, align 4 ; [#uses=1]
+ %scevgep252.2 = getelementptr float* %426, i32 %tmp251.2 ; [#uses=1]
+ store float %274, float* %scevgep252.2, align 4
+ %427 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 2 ; [#uses=3]
+ %428 = load float** %427, align 4 ; [#uses=1]
+ %scevgep249 = getelementptr float* %428, i32 %201 ; [#uses=1]
+ store float %198, float* %scevgep249, align 4
+ %tmp248.1275 = or i32 %201, 1 ; [#uses=1]
+ %429 = load float** %427, align 4 ; [#uses=1]
+ %scevgep249.1 = getelementptr float* %429, i32 %tmp248.1275 ; [#uses=1]
+ store float %199, float* %scevgep249.1, align 4
+ %tmp248.2 = add i32 %201, 2 ; [#uses=1]
+ %430 = load float** %427, align 4 ; [#uses=1]
+ %scevgep249.2 = getelementptr float* %430, i32 %tmp248.2 ; [#uses=1]
+ store float %200, float* %scevgep249.2, align 4
+ %431 = fmul float %270, %163 ; [#uses=1]
+ %432 = fmul float %421, %162 ; [#uses=1]
+ %433 = fadd float %431, %432 ; [#uses=1]
+ %434 = fmul float %269, %161 ; [#uses=1]
+ %435 = fadd float %433, %434 ; [#uses=1]
+ %436 = fmul float %435, %415 ; [#uses=1]
+ %437 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 7 ; [#uses=3]
+ %438 = load float** %437, align 4 ; [#uses=1]
+ store float %436, float* %438, align 4
+ %439 = fmul float %280, %163 ; [#uses=1]
+ %440 = fmul float %277, %162 ; [#uses=1]
+ %441 = fadd float %439, %440 ; [#uses=1]
+ %442 = fmul float %274, %161 ; [#uses=1]
+ %443 = fadd float %441, %442 ; [#uses=1]
+ %444 = fmul float %443, %415 ; [#uses=1]
+ %445 = load float** %437, align 4 ; [#uses=1]
+ %446 = getelementptr inbounds float* %445, i32 %1 ; [#uses=1]
+ store float %444, float* %446, align 4
+ %447 = fmul float %198, %163 ; [#uses=1]
+ %448 = fmul float %199, %162 ; [#uses=1]
+ %449 = fadd float %447, %448 ; [#uses=1]
+ %450 = fmul float %200, %161 ; [#uses=1]
+ %451 = fadd float %449, %450 ; [#uses=1]
+ %452 = fmul float %451, %415 ; [#uses=1]
+ %453 = load float** %437, align 4 ; [#uses=1]
+ %454 = getelementptr inbounds float* %453, i32 %201 ; [#uses=1]
+ store float %452, float* %454, align 4
+ br label %bb68
+
+bb68: ; preds = %bb67, %bb52
+ %455 = phi float [ %421, %bb67 ], [ %271, %bb52 ] ; [#uses=3]
+ %456 = mul nsw i32 %1, 3 ; [#uses=5]
+ %457 = shl i32 %1, 2 ; [#uses=5]
+ %458 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 3 ; [#uses=9]
+ %459 = load float** %458, align 4 ; [#uses=1]
+ %460 = getelementptr inbounds float* %459, i32 %456 ; [#uses=1]
+ store float %270, float* %460, align 4
+ %461 = load float** %458, align 4 ; [#uses=1]
+ %462 = add nsw i32 %456, 1 ; [#uses=2]
+ %463 = getelementptr inbounds float* %461, i32 %462 ; [#uses=1]
+ store float %455, float* %463, align 4
+ %464 = load float** %458, align 4 ; [#uses=1]
+ %465 = add nsw i32 %456, 2 ; [#uses=2]
+ %466 = getelementptr inbounds float* %464, i32 %465 ; [#uses=1]
+ store float %269, float* %466, align 4
+ %467 = load float** %458, align 4 ; [#uses=1]
+ %468 = getelementptr inbounds float* %467, i32 %457 ; [#uses=1]
+ store float %280, float* %468, align 4
+ %469 = load float** %458, align 4 ; [#uses=1]
+ %470 = or i32 %457, 1 ; [#uses=2]
+ %471 = getelementptr inbounds float* %469, i32 %470 ; [#uses=1]
+ store float %277, float* %471, align 4
+ %472 = load float** %458, align 4 ; [#uses=1]
+ %473 = or i32 %457, 2 ; [#uses=2]
+ %474 = getelementptr inbounds float* %472, i32 %473 ; [#uses=1]
+ store float %274, float* %474, align 4
+ %475 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 5 ; [#uses=9]
+ %476 = load float** %475, align 4 ; [#uses=1]
+ %477 = fsub float -0.000000e+00, %270 ; [#uses=1]
+ %478 = getelementptr inbounds float* %476, i32 %456 ; [#uses=1]
+ store float %477, float* %478, align 4
+ %479 = load float** %475, align 4 ; [#uses=1]
+ %480 = fsub float -0.000000e+00, %455 ; [#uses=1]
+ %481 = getelementptr inbounds float* %479, i32 %462 ; [#uses=1]
+ store float %480, float* %481, align 4
+ %482 = load float** %475, align 4 ; [#uses=1]
+ %483 = fsub float -0.000000e+00, %269 ; [#uses=1]
+ %484 = getelementptr inbounds float* %482, i32 %465 ; [#uses=1]
+ store float %483, float* %484, align 4
+ %485 = load float** %475, align 4 ; [#uses=1]
+ %486 = fsub float -0.000000e+00, %280 ; [#uses=1]
+ %487 = getelementptr inbounds float* %485, i32 %457 ; [#uses=1]
+ store float %486, float* %487, align 4
+ %488 = load float** %475, align 4 ; [#uses=1]
+ %489 = fsub float -0.000000e+00, %277 ; [#uses=1]
+ %490 = getelementptr inbounds float* %488, i32 %470 ; [#uses=1]
+ store float %489, float* %490, align 4
+ %491 = load float** %475, align 4 ; [#uses=1]
+ %492 = fsub float -0.000000e+00, %274 ; [#uses=1]
+ %493 = getelementptr inbounds float* %491, i32 %473 ; [#uses=1]
+ store float %492, float* %493, align 4
+ %494 = load float* %411, align 4 ; [#uses=1]
+ %495 = load float* %413, align 4 ; [#uses=1]
+ %496 = fmul float %494, %495 ; [#uses=2]
+ %497 = fmul float %86, %155 ; [#uses=1]
+ %498 = fmul float %76, %160 ; [#uses=1]
+ %499 = fsub float %497, %498 ; [#uses=2]
+ %500 = fmul float %60, %160 ; [#uses=1]
+ %501 = fmul float %86, %150 ; [#uses=1]
+ %502 = fsub float %500, %501 ; [#uses=2]
+ %503 = fmul float %76, %150 ; [#uses=1]
+ %504 = fmul float %60, %155 ; [#uses=1]
+ %505 = fsub float %503, %504 ; [#uses=2]
+ %506 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 7 ; [#uses=8]
+ %507 = load float** %506, align 4 ; [#uses=1]
+ %508 = fmul float %505, %270 ; [#uses=1]
+ %509 = fmul float %502, %455 ; [#uses=1]
+ %510 = fadd float %508, %509 ; [#uses=1]
+ %511 = fmul float %499, %269 ; [#uses=1]
+ %512 = fadd float %510, %511 ; [#uses=1]
+ %513 = fmul float %512, %496 ; [#uses=1]
+ %514 = getelementptr inbounds float* %507, i32 %456 ; [#uses=1]
+ store float %513, float* %514, align 4
+ %515 = load float** %506, align 4 ; [#uses=1]
+ %516 = fmul float %505, %280 ; [#uses=1]
+ %517 = fmul float %502, %277 ; [#uses=1]
+ %518 = fadd float %516, %517 ; [#uses=1]
+ %519 = fmul float %499, %274 ; [#uses=1]
+ %520 = fadd float %518, %519 ; [#uses=1]
+ %521 = fmul float %520, %496 ; [#uses=1]
+ %522 = getelementptr inbounds float* %515, i32 %457 ; [#uses=1]
+ store float %521, float* %522, align 4
+ %523 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ %524 = load i8* %523, align 2 ; [#uses=1]
+ %525 = icmp eq i8 %524, 0 ; [#uses=1]
+ br i1 %525, label %bb74, label %bb70
+
+bb70: ; preds = %bb68
+ %526 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 14 ; [#uses=1]
+ %527 = load float* %526, align 4 ; [#uses=1]
+ %528 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ %529 = load float* %528, align 4 ; [#uses=1]
+ %530 = fmul float %527, %529 ; [#uses=2]
+ %531 = fcmp ogt float %530, 0.000000e+00 ; [#uses=1]
+ %iftmp.209.0 = select i1 %531, i32 1, i32 2 ; [#uses=1]
+ br label %bb74
+
+bb74: ; preds = %bb70, %bb68
+ %limit_err.0 = phi float [ %530, %bb70 ], [ 0.000000e+00, %bb68 ] ; [#uses=1]
+ %limit.0 = phi i32 [ %iftmp.209.0, %bb70 ], [ 0, %bb68 ] ; [#uses=5]
+ %532 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ %533 = load i8* %532, align 1 ; [#uses=1]
+ %not.toBool75 = icmp ne i8 %533, 0 ; [#uses=2]
+ %powered.0 = zext i1 %not.toBool75 to i32 ; [#uses=1]
+ %534 = or i32 %powered.0, %limit.0 ; [#uses=1]
+ %535 = icmp eq i32 %534, 0 ; [#uses=1]
+ br i1 %535, label %return, label %bb78
+
+bb78: ; preds = %bb74
+ %536 = load i32* %0, align 4 ; [#uses=1]
+ %537 = mul nsw i32 %536, 5 ; [#uses=19]
+ %538 = load float** %458, align 4 ; [#uses=1]
+ %539 = getelementptr inbounds float* %538, i32 %537 ; [#uses=1]
+ store float %198, float* %539, align 4
+ %540 = load float** %458, align 4 ; [#uses=1]
+ %541 = add nsw i32 %537, 1 ; [#uses=2]
+ %542 = getelementptr inbounds float* %540, i32 %541 ; [#uses=1]
+ store float %199, float* %542, align 4
+ %543 = load float** %458, align 4 ; [#uses=1]
+ %544 = add nsw i32 %537, 2 ; [#uses=2]
+ %545 = getelementptr inbounds float* %543, i32 %544 ; [#uses=1]
+ store float %200, float* %545, align 4
+ %546 = load float** %475, align 4 ; [#uses=1]
+ %547 = fsub float -0.000000e+00, %198 ; [#uses=1]
+ %548 = getelementptr inbounds float* %546, i32 %537 ; [#uses=1]
+ store float %547, float* %548, align 4
+ %549 = load float** %475, align 4 ; [#uses=1]
+ %550 = fsub float -0.000000e+00, %199 ; [#uses=1]
+ %551 = getelementptr inbounds float* %549, i32 %541 ; [#uses=1]
+ store float %550, float* %551, align 4
+ %552 = load float** %475, align 4 ; [#uses=1]
+ %553 = fsub float -0.000000e+00, %200 ; [#uses=1]
+ %554 = getelementptr inbounds float* %552, i32 %544 ; [#uses=1]
+ store float %553, float* %554, align 4
+ %555 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %556 = load float* %555, align 4 ; [#uses=2]
+ %557 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ %558 = load float* %557, align 4 ; [#uses=2]
+ %.not = icmp ne i32 %limit.0, 0 ; [#uses=1]
+ %559 = fcmp oeq float %556, %558 ; [#uses=2]
+ %or.cond116 = and i1 %.not, %559 ; [#uses=1]
+ %560 = load float** %506, align 4 ; [#uses=1]
+ %561 = getelementptr inbounds float* %560, i32 %537 ; [#uses=1]
+ store float 0.000000e+00, float* %561, align 4
+ %562 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 25 ; [#uses=2]
+ %563 = load i32* %562, align 4 ; [#uses=2]
+ %564 = and i32 %563, 2 ; [#uses=1]
+ %565 = icmp eq i32 %564, 0 ; [#uses=1]
+ br i1 %565, label %bb87, label %bb85
+
+bb85: ; preds = %bb78
+ %566 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 28 ; [#uses=1]
+ br label %bb87
+
+bb87: ; preds = %bb85, %bb78
+ %iftmp.211.0.in = phi float* [ %566, %bb85 ], [ %413, %bb78 ] ; [#uses=1]
+ %iftmp.211.0 = load float* %iftmp.211.0.in, align 4 ; [#uses=2]
+ %567 = xor i1 %not.toBool75, true ; [#uses=1]
+ %568 = or i1 %or.cond116, %567 ; [#uses=1]
+ br i1 %568, label %bb92, label %bb88
+
+bb88: ; preds = %bb87
+ %569 = and i32 %563, 4 ; [#uses=1]
+ %570 = icmp eq i32 %569, 0 ; [#uses=1]
+ br i1 %570, label %bb91, label %bb90
+
+bb90: ; preds = %bb88
+ %571 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=1]
+ %572 = load float** %571, align 4 ; [#uses=1]
+ %573 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 26 ; [#uses=1]
+ %574 = load float* %573, align 4 ; [#uses=1]
+ %575 = getelementptr inbounds float* %572, i32 %537 ; [#uses=1]
+ store float %574, float* %575, align 4
+ br label %bb91
+
+bb91: ; preds = %bb90, %bb88
+ %576 = load float* %411, align 4 ; [#uses=1]
+ %577 = fmul float %576, %iftmp.211.0 ; [#uses=1]
+ %578 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 5 ; [#uses=2]
+ %579 = load float* %578, align 4 ; [#uses=1]
+ %580 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 16 ; [#uses=1]
+ %581 = load float* %580, align 4 ; [#uses=1]
+ %582 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ %583 = call float @_ZN17btTypedConstraint14getMotorFactorEfffff(%struct.btTypedConstraint* %582, float %581, float %556, float %558, float %579, float %577) ; [#uses=1]
+ %584 = load float** %506, align 4 ; [#uses=1]
+ %585 = getelementptr inbounds float* %584, i32 %537 ; [#uses=2]
+ %586 = load float* %585, align 4 ; [#uses=1]
+ %587 = load float* %578, align 4 ; [#uses=1]
+ %588 = fmul float %587, %583 ; [#uses=1]
+ %589 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ %590 = load float* %589, align 4 ; [#uses=1]
+ %591 = fmul float %588, %590 ; [#uses=1]
+ %592 = fadd float %586, %591 ; [#uses=1]
+ store float %592, float* %585, align 4
+ %593 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %594 = load float** %593, align 4 ; [#uses=1]
+ %595 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 6 ; [#uses=2]
+ %596 = load float* %595, align 4 ; [#uses=1]
+ %597 = fsub float -0.000000e+00, %596 ; [#uses=1]
+ %598 = getelementptr inbounds float* %594, i32 %537 ; [#uses=1]
+ store float %597, float* %598, align 4
+ %599 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %600 = load float** %599, align 4 ; [#uses=1]
+ %601 = load float* %595, align 4 ; [#uses=1]
+ %602 = getelementptr inbounds float* %600, i32 %537 ; [#uses=1]
+ store float %601, float* %602, align 4
+ br label %bb92
+
+bb92: ; preds = %bb91, %bb87
+ %603 = icmp eq i32 %limit.0, 0 ; [#uses=1]
+ br i1 %603, label %return, label %bb93
+
+bb93: ; preds = %bb92
+ %604 = load float* %411, align 4 ; [#uses=1]
+ %605 = fmul float %604, %iftmp.211.0 ; [#uses=1]
+ %606 = load float** %506, align 4 ; [#uses=1]
+ %607 = getelementptr inbounds float* %606, i32 %537 ; [#uses=2]
+ %608 = load float* %607, align 4 ; [#uses=1]
+ %609 = fmul float %605, %limit_err.0 ; [#uses=1]
+ %610 = fadd float %608, %609 ; [#uses=1]
+ store float %610, float* %607, align 4
+ %611 = load i32* %562, align 4 ; [#uses=1]
+ %612 = and i32 %611, 1 ; [#uses=1]
+ %toBool95 = icmp eq i32 %612, 0 ; [#uses=1]
+ br i1 %toBool95, label %bb97, label %bb96
+
+bb96: ; preds = %bb93
+ %613 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=1]
+ %614 = load float** %613, align 4 ; [#uses=1]
+ %615 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 27 ; [#uses=1]
+ %616 = load float* %615, align 4 ; [#uses=1]
+ %617 = getelementptr inbounds float* %614, i32 %537 ; [#uses=1]
+ store float %616, float* %617, align 4
+ br label %bb97
+
+bb97: ; preds = %bb96, %bb93
+ br i1 %559, label %bb98, label %bb99
+
+bb98: ; preds = %bb97
+ %618 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %619 = load float** %618, align 4 ; [#uses=1]
+ %620 = getelementptr inbounds float* %619, i32 %537 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %620, align 4
+ %621 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %622 = load float** %621, align 4 ; [#uses=1]
+ %623 = getelementptr inbounds float* %622, i32 %537 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %623, align 4
+ br label %bb102
+
+bb99: ; preds = %bb97
+ %624 = icmp eq i32 %limit.0, 1 ; [#uses=1]
+ %625 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %626 = load float** %625, align 4 ; [#uses=1]
+ %627 = getelementptr inbounds float* %626, i32 %537 ; [#uses=2]
+ br i1 %624, label %bb100, label %bb101
+
+bb100: ; preds = %bb99
+ store float 0.000000e+00, float* %627, align 4
+ %628 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %629 = load float** %628, align 4 ; [#uses=1]
+ %630 = getelementptr inbounds float* %629, i32 %537 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %630, align 4
+ br label %bb102
+
+bb101: ; preds = %bb99
+ store float 0xC7EFFFFFE0000000, float* %627, align 4
+ %631 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %632 = load float** %631, align 4 ; [#uses=1]
+ %633 = getelementptr inbounds float* %632, i32 %537 ; [#uses=1]
+ store float 0.000000e+00, float* %633, align 4
+ br label %bb102
+
+bb102: ; preds = %bb101, %bb100, %bb98
+ %634 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %635 = load float* %634, align 4 ; [#uses=3]
+ %636 = fcmp ogt float %635, 0.000000e+00 ; [#uses=1]
+ br i1 %636, label %bb103, label %bb114
+
+bb103: ; preds = %bb102
+ %637 = getelementptr inbounds %struct.btQuadWord* %angVelA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %638 = load float* %637, align 4 ; [#uses=1]
+ %639 = fmul float %638, %198 ; [#uses=1]
+ %640 = getelementptr inbounds %struct.btQuadWord* %angVelA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %641 = load float* %640, align 4 ; [#uses=1]
+ %642 = fmul float %641, %199 ; [#uses=1]
+ %643 = fadd float %639, %642 ; [#uses=1]
+ %644 = getelementptr inbounds %struct.btQuadWord* %angVelA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %645 = load float* %644, align 4 ; [#uses=1]
+ %646 = fmul float %645, %200 ; [#uses=1]
+ %647 = fadd float %643, %646 ; [#uses=1]
+ %648 = getelementptr inbounds %struct.btQuadWord* %angVelB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %649 = load float* %648, align 4 ; [#uses=1]
+ %650 = fmul float %649, %198 ; [#uses=1]
+ %651 = getelementptr inbounds %struct.btQuadWord* %angVelB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %652 = load float* %651, align 4 ; [#uses=1]
+ %653 = fmul float %652, %199 ; [#uses=1]
+ %654 = fadd float %650, %653 ; [#uses=1]
+ %655 = getelementptr inbounds %struct.btQuadWord* %angVelB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %656 = load float* %655, align 4 ; [#uses=1]
+ %657 = fmul float %656, %200 ; [#uses=1]
+ %658 = fadd float %654, %657 ; [#uses=1]
+ %659 = fsub float %647, %658 ; [#uses=4]
+ %660 = icmp eq i32 %limit.0, 1 ; [#uses=1]
+ br i1 %660, label %bb105, label %bb109
+
+bb105: ; preds = %bb103
+ %661 = fcmp olt float %659, 0.000000e+00 ; [#uses=1]
+ br i1 %661, label %bb106, label %bb114
+
+bb106: ; preds = %bb105
+ %662 = fsub float -0.000000e+00, %635 ; [#uses=1]
+ %663 = fmul float %659, %662 ; [#uses=2]
+ %664 = load float** %506, align 4 ; [#uses=1]
+ %665 = getelementptr inbounds float* %664, i32 %537 ; [#uses=2]
+ %666 = load float* %665, align 4 ; [#uses=1]
+ %667 = fcmp olt float %666, %663 ; [#uses=1]
+ br i1 %667, label %bb108, label %bb114
+
+bb108: ; preds = %bb106
+ store float %663, float* %665, align 4
+ br label %bb114
+
+bb109: ; preds = %bb103
+ %668 = fcmp ogt float %659, 0.000000e+00 ; [#uses=1]
+ br i1 %668, label %bb110, label %bb114
+
+bb110: ; preds = %bb109
+ %669 = fsub float -0.000000e+00, %635 ; [#uses=1]
+ %670 = fmul float %659, %669 ; [#uses=2]
+ %671 = load float** %506, align 4 ; [#uses=1]
+ %672 = getelementptr inbounds float* %671, i32 %537 ; [#uses=2]
+ %673 = load float* %672, align 4 ; [#uses=1]
+ %674 = fcmp ogt float %673, %670 ; [#uses=1]
+ br i1 %674, label %bb113, label %bb114
+
+bb113: ; preds = %bb110
+ store float %670, float* %672, align 4
+ br label %bb114
+
+bb114: ; preds = %bb113, %bb110, %bb109, %bb108, %bb106, %bb105, %bb102
+ %675 = load float** %506, align 4 ; [#uses=1]
+ %676 = getelementptr inbounds float* %675, i32 %537 ; [#uses=2]
+ %677 = load float* %676, align 4 ; [#uses=1]
+ %678 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %679 = load float* %678, align 4 ; [#uses=1]
+ %680 = fmul float %677, %679 ; [#uses=1]
+ store float %680, float* %676, align 4
+ ret void
+
+return: ; preds = %bb92, %bb74
+ ret void
+}
+
+; [#uses=7]
+define float @_ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(%struct.btHingeConstraint* nocapture %this, %struct.btTransform* nocapture %transA, %struct.btTransform* nocapture %transB) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = load float* %1, align 4 ; [#uses=3]
+ %5 = load float* %0, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = fmul float %7, %3 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ %11 = fmul float %10, %4 ; [#uses=1]
+ %12 = fadd float %8, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = fmul float %14, %5 ; [#uses=1]
+ %16 = fadd float %12, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ %19 = fmul float %18, %3 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=2]
+ %22 = fmul float %21, %4 ; [#uses=1]
+ %23 = fadd float %19, %22 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=2]
+ %26 = fmul float %25, %5 ; [#uses=1]
+ %27 = fadd float %23, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=2]
+ %30 = fmul float %29, %3 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=2]
+ %33 = fmul float %32, %4 ; [#uses=1]
+ %34 = fadd float %30, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = fmul float %36, %5 ; [#uses=1]
+ %38 = fadd float %34, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=3]
+ %43 = load float* %40, align 4 ; [#uses=3]
+ %44 = load float* %39, align 4 ; [#uses=3]
+ %45 = fmul float %7, %42 ; [#uses=1]
+ %46 = fmul float %10, %43 ; [#uses=1]
+ %47 = fadd float %45, %46 ; [#uses=1]
+ %48 = fmul float %14, %44 ; [#uses=1]
+ %49 = fadd float %47, %48 ; [#uses=1]
+ %50 = fmul float %18, %42 ; [#uses=1]
+ %51 = fmul float %21, %43 ; [#uses=1]
+ %52 = fadd float %50, %51 ; [#uses=1]
+ %53 = fmul float %25, %44 ; [#uses=1]
+ %54 = fadd float %52, %53 ; [#uses=1]
+ %55 = fmul float %29, %42 ; [#uses=1]
+ %56 = fmul float %32, %43 ; [#uses=1]
+ %57 = fadd float %55, %56 ; [#uses=1]
+ %58 = fmul float %36, %44 ; [#uses=1]
+ %59 = fadd float %57, %58 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=3]
+ %64 = load float* %61, align 4 ; [#uses=3]
+ %65 = load float* %60, align 4 ; [#uses=3]
+ %66 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = fmul float %67, %63 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ %71 = fmul float %70, %64 ; [#uses=1]
+ %72 = fadd float %68, %71 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = fmul float %74, %65 ; [#uses=1]
+ %76 = fadd float %72, %75 ; [#uses=2]
+ %77 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ %79 = fmul float %78, %63 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ %82 = fmul float %81, %64 ; [#uses=1]
+ %83 = fadd float %79, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = fmul float %85, %65 ; [#uses=1]
+ %87 = fadd float %83, %86 ; [#uses=2]
+ %88 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ %90 = fmul float %89, %63 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=1]
+ %93 = fmul float %92, %64 ; [#uses=1]
+ %94 = fadd float %90, %93 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ %97 = fmul float %96, %65 ; [#uses=1]
+ %98 = fadd float %94, %97 ; [#uses=2]
+ %99 = fmul float %98, %59 ; [#uses=1]
+ %100 = fmul float %87, %54 ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=1]
+ %102 = fmul float %76, %49 ; [#uses=1]
+ %103 = fadd float %101, %102 ; [#uses=1]
+ %104 = fmul float %98, %38 ; [#uses=1]
+ %105 = fmul float %87, %27 ; [#uses=1]
+ %106 = fadd float %104, %105 ; [#uses=1]
+ %107 = fmul float %76, %16 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = tail call float @atan2f(float %108, float %103) nounwind readonly ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ %111 = load float* %110, align 4 ; [#uses=1]
+ %112 = fmul float %111, %109 ; [#uses=1]
+ ret float %112
+}
+
+; [#uses=0]
+define void @_ZN17btHingeConstraint14setMotorTargetEff(%struct.btHingeConstraint* nocapture %this, float %targetAngle, float %dt) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = fcmp olt float %1, %3 ; [#uses=1]
+ br i1 %4, label %bb, label %bb4
+
+bb: ; preds = %entry
+ %5 = fcmp ogt float %1, %targetAngle ; [#uses=1]
+ br i1 %5, label %bb4, label %bb2
+
+bb2: ; preds = %bb
+ %6 = fcmp olt float %3, %targetAngle ; [#uses=1]
+ br i1 %6, label %bb3, label %bb4
+
+bb3: ; preds = %bb2
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2, %bb, %entry
+ %targetAngle_addr.0 = phi float [ %3, %bb3 ], [ %targetAngle, %bb2 ], [ %targetAngle, %entry ], [ %1, %bb ] ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %8 = load %struct.btRigidBody** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btRigidBody* %8, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %11 = load %struct.btRigidBody** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = tail call float @_ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(%struct.btHingeConstraint* %this, %struct.btTransform* %12, %struct.btTransform* %9) nounwind ; [#uses=1]
+ %14 = fsub float %targetAngle_addr.0, %13 ; [#uses=1]
+ %15 = fdiv float %14, %dt ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store float %15, float* %16, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17btHingeConstraint14setMotorTargetERK12btQuaternionf(%struct.btHingeConstraint* %this, %struct.btQuaternion* nocapture %qAinB, float %dt) nounwind align 2 {
+entry:
+ %0 = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %2 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %2, %struct.btQuaternion* %1) nounwind
+ %3 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0 ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %3, %struct.btQuaternion* %0) nounwind
+ %4 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 8 ; [#uses=1]
+ %7 = fsub float -0.000000e+00, %6 ; [#uses=4]
+ %8 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = fsub float -0.000000e+00, %9 ; [#uses=4]
+ %11 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = load float* %11, align 8 ; [#uses=1]
+ %13 = fsub float -0.000000e+00, %12 ; [#uses=4]
+ %14 = load float* %4, align 4 ; [#uses=4]
+ %15 = getelementptr inbounds %struct.btQuaternion* %qAinB, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=4]
+ %17 = fmul float %14, %16 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuaternion* %qAinB, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=4]
+ %20 = fmul float %19, %13 ; [#uses=1]
+ %21 = fsub float %17, %20 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuaternion* %qAinB, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=4]
+ %24 = fmul float %23, %10 ; [#uses=1]
+ %25 = fsub float %21, %24 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuaternion* %qAinB, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=4]
+ %28 = fmul float %27, %7 ; [#uses=1]
+ %29 = fsub float %25, %28 ; [#uses=4]
+ %30 = fmul float %14, %27 ; [#uses=1]
+ %31 = fmul float %16, %7 ; [#uses=1]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = fmul float %23, %13 ; [#uses=1]
+ %34 = fadd float %32, %33 ; [#uses=1]
+ %35 = fmul float %19, %10 ; [#uses=1]
+ %36 = fsub float %34, %35 ; [#uses=4]
+ %37 = fmul float %14, %23 ; [#uses=1]
+ %38 = fmul float %16, %10 ; [#uses=1]
+ %39 = fadd float %37, %38 ; [#uses=1]
+ %40 = fmul float %19, %7 ; [#uses=1]
+ %41 = fadd float %39, %40 ; [#uses=1]
+ %42 = fmul float %27, %13 ; [#uses=1]
+ %43 = fsub float %41, %42 ; [#uses=4]
+ %44 = fmul float %14, %19 ; [#uses=1]
+ %45 = fmul float %16, %13 ; [#uses=1]
+ %46 = fadd float %44, %45 ; [#uses=1]
+ %47 = fmul float %27, %10 ; [#uses=1]
+ %48 = fadd float %46, %47 ; [#uses=1]
+ %49 = fmul float %23, %7 ; [#uses=1]
+ %50 = fsub float %48, %49 ; [#uses=4]
+ %51 = getelementptr inbounds %struct.btQuaternion* %1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=4]
+ %53 = fmul float %29, %52 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btQuaternion* %1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %55 = load float* %54, align 8 ; [#uses=4]
+ %56 = fmul float %50, %55 ; [#uses=1]
+ %57 = fsub float %53, %56 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btQuaternion* %1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=4]
+ %60 = fmul float %43, %59 ; [#uses=1]
+ %61 = fsub float %57, %60 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btQuaternion* %1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %63 = load float* %62, align 8 ; [#uses=4]
+ %64 = fmul float %36, %63 ; [#uses=1]
+ %65 = fsub float %61, %64 ; [#uses=3]
+ %66 = fmul float %29, %63 ; [#uses=1]
+ %67 = fmul float %36, %52 ; [#uses=1]
+ %68 = fadd float %66, %67 ; [#uses=1]
+ %69 = fmul float %50, %59 ; [#uses=1]
+ %70 = fadd float %68, %69 ; [#uses=1]
+ %71 = fmul float %43, %55 ; [#uses=1]
+ %72 = fsub float %70, %71 ; [#uses=3]
+ %73 = fmul float %29, %59 ; [#uses=1]
+ %74 = fmul float %43, %52 ; [#uses=1]
+ %75 = fadd float %73, %74 ; [#uses=1]
+ %76 = fmul float %36, %55 ; [#uses=1]
+ %77 = fadd float %75, %76 ; [#uses=1]
+ %78 = fmul float %50, %63 ; [#uses=1]
+ %79 = fsub float %77, %78 ; [#uses=3]
+ %80 = fmul float %29, %55 ; [#uses=1]
+ %81 = fmul float %50, %52 ; [#uses=1]
+ %82 = fadd float %80, %81 ; [#uses=1]
+ %83 = fmul float %43, %63 ; [#uses=1]
+ %84 = fadd float %82, %83 ; [#uses=1]
+ %85 = fmul float %36, %59 ; [#uses=1]
+ %86 = fsub float %84, %85 ; [#uses=3]
+ %87 = fmul float %86, %86 ; [#uses=1]
+ %88 = fmul float %79, %79 ; [#uses=1]
+ %89 = fadd float %87, %88 ; [#uses=1]
+ %90 = fmul float %72, %72 ; [#uses=1]
+ %91 = fadd float %89, %90 ; [#uses=1]
+ %92 = fmul float %65, %65 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = call float @sqrtf(float %93) nounwind readonly ; [#uses=1]
+ %95 = fdiv float 1.000000e+00, %94 ; [#uses=4]
+ %96 = fmul float %86, %95 ; [#uses=7]
+ %97 = fmul float %79, %95 ; [#uses=8]
+ %98 = fmul float %72, %95 ; [#uses=8]
+ %99 = fmul float %65, %95 ; [#uses=10]
+ %100 = fsub float -0.000000e+00, %96 ; [#uses=4]
+ %101 = load float* getelementptr inbounds (%struct.btQuadWord* @_ZL6vHinge, i32 0, i32 0, i32 0), align 8 ; [#uses=10]
+ %102 = fmul float %101, %100 ; [#uses=1]
+ %103 = load float* getelementptr inbounds (%struct.btQuadWord* @_ZL6vHinge, i32 0, i32 0, i32 1), align 4 ; [#uses=13]
+ %104 = fmul float %97, %103 ; [#uses=1]
+ %105 = fsub float %102, %104 ; [#uses=1]
+ %106 = load float* getelementptr inbounds (%struct.btQuadWord* @_ZL6vHinge, i32 0, i32 0, i32 2), align 8 ; [#uses=11]
+ %107 = fmul float %98, %106 ; [#uses=1]
+ %108 = fsub float %105, %107 ; [#uses=3]
+ %109 = fmul float %99, %106 ; [#uses=1]
+ %110 = fmul float %96, %103 ; [#uses=1]
+ %111 = fadd float %109, %110 ; [#uses=1]
+ %112 = fmul float %97, %101 ; [#uses=1]
+ %113 = fsub float %111, %112 ; [#uses=3]
+ %114 = fmul float %99, %103 ; [#uses=1]
+ %115 = fmul float %98, %101 ; [#uses=1]
+ %116 = fadd float %114, %115 ; [#uses=1]
+ %117 = fmul float %96, %106 ; [#uses=1]
+ %118 = fsub float %116, %117 ; [#uses=3]
+ %119 = fmul float %99, %101 ; [#uses=1]
+ %120 = fmul float %97, %106 ; [#uses=1]
+ %121 = fadd float %119, %120 ; [#uses=1]
+ %122 = fmul float %98, %103 ; [#uses=1]
+ %123 = fsub float %121, %122 ; [#uses=3]
+ %124 = fsub float -0.000000e+00, %98 ; [#uses=3]
+ %125 = fsub float -0.000000e+00, %97 ; [#uses=3]
+ %126 = fmul float %108, %124 ; [#uses=1]
+ %127 = fmul float %113, %99 ; [#uses=1]
+ %128 = fadd float %126, %127 ; [#uses=1]
+ %129 = fmul float %123, %125 ; [#uses=1]
+ %130 = fadd float %128, %129 ; [#uses=1]
+ %131 = fmul float %118, %100 ; [#uses=1]
+ %132 = fsub float %130, %131 ; [#uses=3]
+ %133 = fmul float %108, %125 ; [#uses=1]
+ %134 = fmul float %118, %99 ; [#uses=1]
+ %135 = fadd float %133, %134 ; [#uses=1]
+ %136 = fmul float %113, %100 ; [#uses=1]
+ %137 = fadd float %135, %136 ; [#uses=1]
+ %138 = fmul float %123, %124 ; [#uses=1]
+ %139 = fsub float %137, %138 ; [#uses=3]
+ %140 = fmul float %108, %100 ; [#uses=1]
+ %141 = fmul float %123, %99 ; [#uses=1]
+ %142 = fadd float %140, %141 ; [#uses=1]
+ %143 = fmul float %118, %124 ; [#uses=1]
+ %144 = fadd float %142, %143 ; [#uses=1]
+ %145 = fmul float %113, %125 ; [#uses=1]
+ %146 = fsub float %144, %145 ; [#uses=3]
+ %147 = fmul float %146, %146 ; [#uses=1]
+ %148 = fmul float %139, %139 ; [#uses=1]
+ %149 = fadd float %147, %148 ; [#uses=1]
+ %150 = fmul float %132, %132 ; [#uses=1]
+ %151 = fadd float %149, %150 ; [#uses=1]
+ %152 = call float @sqrtf(float %151) nounwind readonly ; [#uses=1]
+ %153 = fdiv float 1.000000e+00, %152 ; [#uses=3]
+ %154 = fmul float %146, %153 ; [#uses=3]
+ %155 = fmul float %139, %153 ; [#uses=3]
+ %156 = fmul float %132, %153 ; [#uses=3]
+ %157 = fmul float %101, %154 ; [#uses=1]
+ %158 = fmul float %103, %155 ; [#uses=1]
+ %159 = fadd float %157, %158 ; [#uses=1]
+ %160 = fmul float %106, %156 ; [#uses=1]
+ %161 = fadd float %159, %160 ; [#uses=2]
+ %162 = fcmp olt float %161, 0xBFEFFFFFC0000000 ; [#uses=1]
+ br i1 %162, label %bb.i6, label %bb1.i
+
+bb.i6: ; preds = %entry
+ %163 = call float @fabsf(float %106) nounwind readnone ; [#uses=1]
+ %164 = fcmp ogt float %163, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %164, label %bb.i.i, label %bb1.i.i
+
+bb.i.i: ; preds = %bb.i6
+ %165 = fmul float %103, %103 ; [#uses=1]
+ %166 = fmul float %106, %106 ; [#uses=1]
+ %167 = fadd float %165, %166 ; [#uses=1]
+ %168 = call float @sqrtf(float %167) nounwind readonly ; [#uses=1]
+ %169 = fdiv float 1.000000e+00, %168 ; [#uses=2]
+ %170 = fsub float -0.000000e+00, %106 ; [#uses=1]
+ %171 = fmul float %169, %170 ; [#uses=1]
+ %172 = fmul float %103, %169 ; [#uses=1]
+ br label %_Z15shortestArcQuatRK9btVector3S1_.exit
+
+bb1.i.i: ; preds = %bb.i6
+ %173 = fmul float %101, %101 ; [#uses=1]
+ %174 = fmul float %103, %103 ; [#uses=1]
+ %175 = fadd float %173, %174 ; [#uses=1]
+ %176 = call float @sqrtf(float %175) nounwind readonly ; [#uses=1]
+ %177 = fdiv float 1.000000e+00, %176 ; [#uses=2]
+ %178 = fsub float -0.000000e+00, %103 ; [#uses=1]
+ %179 = fmul float %177, %178 ; [#uses=1]
+ %180 = fmul float %101, %177 ; [#uses=1]
+ br label %_Z15shortestArcQuatRK9btVector3S1_.exit
+
+bb1.i: ; preds = %entry
+ %181 = fmul float %106, %155 ; [#uses=1]
+ %182 = fmul float %103, %156 ; [#uses=1]
+ %183 = fmul float %101, %156 ; [#uses=1]
+ %184 = fmul float %106, %154 ; [#uses=1]
+ %185 = fmul float %103, %154 ; [#uses=1]
+ %186 = fmul float %101, %155 ; [#uses=1]
+ %187 = fsub float %182, %181 ; [#uses=1]
+ %188 = fsub float %184, %183 ; [#uses=1]
+ %189 = fsub float %186, %185 ; [#uses=1]
+ %190 = fadd float %161, 1.000000e+00 ; [#uses=1]
+ %191 = fmul float %190, 2.000000e+00 ; [#uses=1]
+ %192 = call float @sqrtf(float %191) nounwind readonly ; [#uses=2]
+ %193 = fdiv float 1.000000e+00, %192 ; [#uses=3]
+ %194 = fmul float %192, 5.000000e-01 ; [#uses=1]
+ %195 = fmul float %189, %193 ; [#uses=1]
+ %196 = fmul float %188, %193 ; [#uses=1]
+ %197 = fmul float %187, %193 ; [#uses=1]
+ br label %_Z15shortestArcQuatRK9btVector3S1_.exit
+
+_Z15shortestArcQuatRK9btVector3S1_.exit: ; preds = %bb1.i, %bb1.i.i, %bb.i.i
+ %qNoHinge.0.0.0.0 = phi float [ %197, %bb1.i ], [ 0.000000e+00, %bb.i.i ], [ %179, %bb1.i.i ] ; [#uses=1]
+ %qNoHinge.0.0.1.0 = phi float [ %196, %bb1.i ], [ %171, %bb.i.i ], [ %180, %bb1.i.i ] ; [#uses=1]
+ %qNoHinge.0.0.2.0 = phi float [ %195, %bb1.i ], [ %172, %bb.i.i ], [ 0.000000e+00, %bb1.i.i ] ; [#uses=1]
+ %qNoHinge.0.0.3.0 = phi float [ %194, %bb1.i ], [ 0.000000e+00, %bb.i.i ], [ 0.000000e+00, %bb1.i.i ] ; [#uses=4]
+ %198 = fsub float -0.000000e+00, %qNoHinge.0.0.2.0 ; [#uses=4]
+ %199 = fsub float -0.000000e+00, %qNoHinge.0.0.1.0 ; [#uses=4]
+ %200 = fsub float -0.000000e+00, %qNoHinge.0.0.0.0 ; [#uses=4]
+ %201 = fmul float %qNoHinge.0.0.3.0, %99 ; [#uses=1]
+ %202 = fmul float %96, %200 ; [#uses=1]
+ %203 = fsub float %201, %202 ; [#uses=1]
+ %204 = fmul float %97, %199 ; [#uses=1]
+ %205 = fsub float %203, %204 ; [#uses=1]
+ %206 = fmul float %98, %198 ; [#uses=1]
+ %207 = fsub float %205, %206 ; [#uses=3]
+ %208 = fmul float %qNoHinge.0.0.3.0, %98 ; [#uses=1]
+ %209 = fmul float %99, %198 ; [#uses=1]
+ %210 = fadd float %208, %209 ; [#uses=1]
+ %211 = fmul float %97, %200 ; [#uses=1]
+ %212 = fadd float %210, %211 ; [#uses=1]
+ %213 = fmul float %96, %199 ; [#uses=1]
+ %214 = fsub float %212, %213 ; [#uses=3]
+ %215 = fmul float %qNoHinge.0.0.3.0, %97 ; [#uses=1]
+ %216 = fmul float %99, %199 ; [#uses=1]
+ %217 = fadd float %215, %216 ; [#uses=1]
+ %218 = fmul float %96, %198 ; [#uses=1]
+ %219 = fadd float %217, %218 ; [#uses=1]
+ %220 = fmul float %98, %200 ; [#uses=1]
+ %221 = fsub float %219, %220 ; [#uses=2]
+ %222 = fmul float %qNoHinge.0.0.3.0, %96 ; [#uses=1]
+ %223 = fmul float %99, %200 ; [#uses=1]
+ %224 = fadd float %222, %223 ; [#uses=1]
+ %225 = fmul float %98, %199 ; [#uses=1]
+ %226 = fadd float %224, %225 ; [#uses=1]
+ %227 = fmul float %97, %198 ; [#uses=1]
+ %228 = fsub float %226, %227 ; [#uses=2]
+ %229 = fmul float %228, %228 ; [#uses=1]
+ %230 = fmul float %221, %221 ; [#uses=1]
+ %231 = fadd float %229, %230 ; [#uses=1]
+ %232 = fmul float %214, %214 ; [#uses=1]
+ %233 = fadd float %231, %232 ; [#uses=1]
+ %234 = fmul float %207, %207 ; [#uses=1]
+ %235 = fadd float %233, %234 ; [#uses=1]
+ %236 = call float @sqrtf(float %235) nounwind readonly ; [#uses=1]
+ %237 = fdiv float 1.000000e+00, %236 ; [#uses=2]
+ %238 = fmul float %214, %237 ; [#uses=2]
+ %239 = fmul float %207, %237 ; [#uses=3]
+ %240 = fcmp olt float %239, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i.i4 = select i1 %240, float -1.000000e+00, float %239 ; [#uses=2]
+ %241 = fcmp ogt float %x_addr.0.i.i4, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i.i5 = select i1 %241, float 1.000000e+00, float %x_addr.0.i.i4 ; [#uses=1]
+ %242 = call float @acosf(float %x_addr.1.i.i5) nounwind readonly ; [#uses=1]
+ %243 = fmul float %242, 2.000000e+00 ; [#uses=2]
+ %244 = fcmp ogt float %243, 0x400921FB60000000 ; [#uses=1]
+ br i1 %244, label %bb, label %bb1
+
+bb: ; preds = %_Z15shortestArcQuatRK9btVector3S1_.exit
+ %245 = fsub float -0.000000e+00, %239 ; [#uses=2]
+ %246 = fsub float -0.000000e+00, %238 ; [#uses=1]
+ %247 = fcmp olt float %245, -1.000000e+00 ; [#uses=1]
+ %x_addr.0.i.i = select i1 %247, float -1.000000e+00, float %245 ; [#uses=2]
+ %248 = fcmp ogt float %x_addr.0.i.i, 1.000000e+00 ; [#uses=1]
+ %x_addr.1.i.i = select i1 %248, float 1.000000e+00, float %x_addr.0.i.i ; [#uses=1]
+ %249 = call float @acosf(float %x_addr.1.i.i) nounwind readonly ; [#uses=1]
+ %250 = fmul float %249, 2.000000e+00 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb, %_Z15shortestArcQuatRK9btVector3S1_.exit
+ %qHinge.0.0.2.0 = phi float [ %246, %bb ], [ %238, %_Z15shortestArcQuatRK9btVector3S1_.exit ] ; [#uses=1]
+ %targetAngle.0 = phi float [ %250, %bb ], [ %243, %_Z15shortestArcQuatRK9btVector3S1_.exit ] ; [#uses=2]
+ %251 = fcmp olt float %qHinge.0.0.2.0, 0.000000e+00 ; [#uses=1]
+ br i1 %251, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ %252 = fsub float -0.000000e+00, %targetAngle.0 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1
+ %targetAngle.1 = phi float [ %252, %bb2 ], [ %targetAngle.0, %bb1 ] ; [#uses=4]
+ %253 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %254 = load float* %253, align 4 ; [#uses=3]
+ %255 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ %256 = load float* %255, align 4 ; [#uses=3]
+ %257 = fcmp olt float %254, %256 ; [#uses=1]
+ br i1 %257, label %bb.i, label %_ZN17btHingeConstraint14setMotorTargetEff.exit
+
+bb.i: ; preds = %bb3
+ %258 = fcmp ogt float %254, %targetAngle.1 ; [#uses=1]
+ br i1 %258, label %_ZN17btHingeConstraint14setMotorTargetEff.exit, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %259 = fcmp olt float %256, %targetAngle.1 ; [#uses=1]
+ br i1 %259, label %bb3.i, label %_ZN17btHingeConstraint14setMotorTargetEff.exit
+
+bb3.i: ; preds = %bb2.i
+ br label %_ZN17btHingeConstraint14setMotorTargetEff.exit
+
+_ZN17btHingeConstraint14setMotorTargetEff.exit: ; preds = %bb3.i, %bb2.i, %bb.i, %bb3
+ %targetAngle_addr.0.i = phi float [ %256, %bb3.i ], [ %targetAngle.1, %bb2.i ], [ %targetAngle.1, %bb3 ], [ %254, %bb.i ] ; [#uses=1]
+ %260 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %261 = load %struct.btRigidBody** %260, align 4 ; [#uses=1]
+ %262 = getelementptr inbounds %struct.btRigidBody* %261, i32 0, i32 0, i32 1 ; [#uses=1]
+ %263 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %264 = load %struct.btRigidBody** %263, align 4 ; [#uses=1]
+ %265 = getelementptr inbounds %struct.btRigidBody* %264, i32 0, i32 0, i32 1 ; [#uses=1]
+ %266 = call float @_ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(%struct.btHingeConstraint* %this, %struct.btTransform* %265, %struct.btTransform* %262) nounwind ; [#uses=1]
+ %267 = fsub float %targetAngle_addr.0.i, %266 ; [#uses=1]
+ %268 = fdiv float %267, %dt ; [#uses=1]
+ %269 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store float %268, float* %269, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17btHingeConstraint9testLimitERK11btTransformS2_(%struct.btHingeConstraint* %this, %struct.btTransform* nocapture %transA, %struct.btTransform* nocapture %transB) nounwind align 2 {
+entry:
+ %0 = tail call float @_ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(%struct.btHingeConstraint* %this, %struct.btTransform* %transA, %struct.btTransform* %transB) nounwind ; [#uses=2]
+ %1 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 16 ; [#uses=2]
+ store float %0, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 14 ; [#uses=3]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 13 ; [#uses=3]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 20 ; [#uses=3]
+ store i8 0, i8* %4, align 2
+ %5 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=4]
+ %7 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=4]
+ %9 = fcmp ugt float %6, %8 ; [#uses=1]
+ br i1 %9, label %return, label %bb
+
+bb: ; preds = %entry
+ %10 = tail call float @_Z21btAdjustAngleToLimitsfff(float %0, float %6, float %8) nounwind ; [#uses=5]
+ store float %10, float* %1, align 4
+ %11 = fcmp ugt float %10, %6 ; [#uses=1]
+ br i1 %11, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %12 = fsub float %6, %10 ; [#uses=1]
+ store float %12, float* %2, align 4
+ store float 1.000000e+00, float* %3, align 4
+ store i8 1, i8* %4, align 2
+ ret void
+
+bb2: ; preds = %bb
+ %13 = fcmp ult float %10, %8 ; [#uses=1]
+ br i1 %13, label %return, label %bb3
+
+bb3: ; preds = %bb2
+ %14 = fsub float %8, %10 ; [#uses=1]
+ store float %14, float* %2, align 4
+ store float -1.000000e+00, float* %3, align 4
+ store i8 1, i8* %4, align 2
+ ret void
+
+return: ; preds = %bb2, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17btHingeConstraint18getInfo2NonVirtualEPN17btTypedConstraint17btConstraintInfo2ERK11btTransformS5_RK9btVector3S8_(%struct.btHingeConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, %struct.btTransform* nocapture %transA, %struct.btTransform* nocapture %transB, %struct.btQuadWord* nocapture %angVelA, %struct.btQuadWord* nocapture %angVelB) align 2 {
+entry:
+ %0 = tail call float @_ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(%struct.btHingeConstraint* %this, %struct.btTransform* %transA, %struct.btTransform* %transB) nounwind ; [#uses=2]
+ %1 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 16 ; [#uses=2]
+ store float %0, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 14 ; [#uses=3]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 13 ; [#uses=3]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 20 ; [#uses=3]
+ store i8 0, i8* %4, align 2
+ %5 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=4]
+ %7 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=4]
+ %9 = fcmp ugt float %6, %8 ; [#uses=1]
+ br i1 %9, label %_ZN17btHingeConstraint9testLimitERK11btTransformS2_.exit, label %bb.i
+
+bb.i: ; preds = %entry
+ %10 = tail call float @_Z21btAdjustAngleToLimitsfff(float %0, float %6, float %8) nounwind ; [#uses=5]
+ store float %10, float* %1, align 4
+ %11 = fcmp ugt float %10, %6 ; [#uses=1]
+ br i1 %11, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %12 = fsub float %6, %10 ; [#uses=1]
+ store float %12, float* %2, align 4
+ store float 1.000000e+00, float* %3, align 4
+ store i8 1, i8* %4, align 2
+ br label %_ZN17btHingeConstraint9testLimitERK11btTransformS2_.exit
+
+bb2.i: ; preds = %bb.i
+ %13 = fcmp ult float %10, %8 ; [#uses=1]
+ br i1 %13, label %_ZN17btHingeConstraint9testLimitERK11btTransformS2_.exit, label %bb3.i
+
+bb3.i: ; preds = %bb2.i
+ %14 = fsub float %8, %10 ; [#uses=1]
+ store float %14, float* %2, align 4
+ store float -1.000000e+00, float* %3, align 4
+ store i8 1, i8* %4, align 2
+ br label %_ZN17btHingeConstraint9testLimitERK11btTransformS2_.exit
+
+_ZN17btHingeConstraint9testLimitERK11btTransformS2_.exit: ; preds = %bb3.i, %bb2.i, %bb1.i, %entry
+ tail call void @_ZN17btHingeConstraint16getInfo2InternalEPN17btTypedConstraint17btConstraintInfo2ERK11btTransformS5_RK9btVector3S8_(%struct.btHingeConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, %struct.btTransform* %transA, %struct.btTransform* %transB, %struct.btQuadWord* %angVelA, %struct.btQuadWord* %angVelB)
+ ret void
+}
+
+; [#uses=0]
+define float @_ZN17btHingeConstraint13getHingeAngleEv(%struct.btHingeConstraint* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %1 = load %struct.btRigidBody** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %4 = load %struct.btRigidBody** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btRigidBody* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = tail call float @_ZN17btHingeConstraint13getHingeAngleERK11btTransformS2_(%struct.btHingeConstraint* %this, %struct.btTransform* %5, %struct.btTransform* %2) nounwind ; [#uses=1]
+ ret float %6
+}
+
+; [#uses=1]
+define void @_ZN17btHingeConstraintC2ER11btRigidBodyRK11btTransformb(%struct.btHingeConstraint* %this, %struct.btRigidBody* %rbA, %struct.btTransform* %rbAFrame, i8 zeroext %useReferenceFrameA) align 2 {
+bb5:
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBody(%struct.btTypedConstraint* %0, i32 4, %struct.btRigidBody* %rbA)
+ %1 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV17btHingeConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %40 = load float* %39, align 4 ; [#uses=4]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %43 = load float* %42, align 4 ; [#uses=4]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %46 = load float* %45, align 4 ; [#uses=4]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = load float* %3, align 4 ; [#uses=1]
+ store float %51, float* %50, align 4
+ %52 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %6, align 4 ; [#uses=1]
+ store float %53, float* %52, align 4
+ %54 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %55 = load float* %9, align 4 ; [#uses=1]
+ store float %55, float* %54, align 4
+ %56 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %57 = load float* %12, align 4 ; [#uses=1]
+ store float %57, float* %56, align 4
+ %58 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %15, align 4 ; [#uses=1]
+ store float %59, float* %58, align 4
+ %60 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %61 = load float* %18, align 4 ; [#uses=1]
+ store float %61, float* %60, align 4
+ %62 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %63 = load float* %21, align 4 ; [#uses=1]
+ store float %63, float* %62, align 4
+ %64 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %65 = load float* %24, align 4 ; [#uses=1]
+ store float %65, float* %64, align 4
+ %66 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %67 = load float* %27, align 4 ; [#uses=1]
+ store float %67, float* %66, align 4
+ %68 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %30, align 4 ; [#uses=1]
+ store float %69, float* %68, align 4
+ %70 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %71 = load float* %33, align 4 ; [#uses=1]
+ store float %71, float* %70, align 4
+ %72 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %73 = load float* %36, align 4 ; [#uses=1]
+ store float %73, float* %72, align 4
+ %74 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=2]
+ %75 = load float* %39, align 4 ; [#uses=1]
+ store float %75, float* %74, align 4
+ %76 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=2]
+ %77 = load float* %42, align 4 ; [#uses=1]
+ store float %77, float* %76, align 4
+ %78 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=2]
+ %79 = load float* %45, align 4 ; [#uses=1]
+ store float %79, float* %78, align 4
+ %80 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=2]
+ %81 = load float* %48, align 4 ; [#uses=1]
+ store float %81, float* %80, align 4
+ %82 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ store i8 0, i8* %82, align 4
+ %83 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ store i8 0, i8* %83, align 1
+ %84 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ store i8 0, i8* %84, align 1
+ %85 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ store i8 1, i8* %85, align 4
+ %86 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ store i8 %useReferenceFrameA, i8* %86, align 1
+ %87 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ store i32 0, i32* %87, align 4
+ %88 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %89 = load %struct.btRigidBody** %88, align 4 ; [#uses=12]
+ %90 = getelementptr inbounds %struct.btRigidBody* %89, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = fmul float %91, %40 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btRigidBody* %89, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = fmul float %94, %43 ; [#uses=1]
+ %96 = fadd float %92, %95 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btRigidBody* %89, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ %99 = fmul float %98, %46 ; [#uses=1]
+ %100 = fadd float %96, %99 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btRigidBody* %89, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fadd float %100, %102 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btRigidBody* %89, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ %106 = fmul float %105, %40 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btRigidBody* %89, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %108 = load float* %107, align 4 ; [#uses=1]
+ %109 = fmul float %108, %43 ; [#uses=1]
+ %110 = fadd float %106, %109 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btRigidBody* %89, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ %113 = fmul float %112, %46 ; [#uses=1]
+ %114 = fadd float %110, %113 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btRigidBody* %89, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %116 = load float* %115, align 4 ; [#uses=1]
+ %117 = fadd float %114, %116 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btRigidBody* %89, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %119 = load float* %118, align 4 ; [#uses=1]
+ %120 = fmul float %119, %40 ; [#uses=1]
+ %121 = getelementptr inbounds %struct.btRigidBody* %89, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %122 = load float* %121, align 4 ; [#uses=1]
+ %123 = fmul float %122, %43 ; [#uses=1]
+ %124 = fadd float %120, %123 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btRigidBody* %89, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %126 = load float* %125, align 4 ; [#uses=1]
+ %127 = fmul float %126, %46 ; [#uses=1]
+ %128 = fadd float %124, %127 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btRigidBody* %89, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=1]
+ %131 = fadd float %128, %130 ; [#uses=1]
+ store float %131, float* %74, align 4
+ store float %117, float* %76, align 4
+ store float %103, float* %78, align 4
+ store float 0.000000e+00, float* %80, align 4
+ %132 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ store float 1.000000e+00, float* %132, align 4
+ %133 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ store float -1.000000e+00, float* %133, align 4
+ %134 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %134, align 4
+ %135 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ store float 1.000000e+00, float* %135, align 4
+ %136 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0x3FECCCCCC0000000, float* %136, align 4
+ %137 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ store i8 0, i8* %137, align 2
+ %toBool = icmp eq i8 %useReferenceFrameA, 0 ; [#uses=1]
+ %iftmp.186.0 = select i1 %toBool, float 1.000000e+00, float -1.000000e+00 ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ store float %iftmp.186.0, float* %138, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17btHingeConstraintC1ER11btRigidBodyRK11btTransformb(%struct.btHingeConstraint* %this, %struct.btRigidBody* %rbA, %struct.btTransform* %rbAFrame, i8 zeroext %useReferenceFrameA) align 2 {
+entry:
+ tail call void @_ZN17btHingeConstraintC2ER11btRigidBodyRK11btTransformb(%struct.btHingeConstraint* %this, %struct.btRigidBody* %rbA, %struct.btTransform* %rbAFrame, i8 zeroext %useReferenceFrameA)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btHingeConstraintC2ER11btRigidBodyRK9btVector3S4_b(%struct.btHingeConstraint* %this, %struct.btRigidBody* %rbA, %struct.btQuadWord* nocapture %pivotInA, %struct.btQuadWord* nocapture %axisInA, i8 zeroext %useReferenceFrameA) align 2 {
+bb5:
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBody(%struct.btTypedConstraint* %0, i32 4, %struct.btRigidBody* %rbA)
+ %1 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV17btHingeConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ store i8 0, i8* %3, align 1
+ %4 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ store i8 0, i8* %4, align 1
+ %5 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ store i8 1, i8* %5, align 4
+ %6 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ store i8 %useReferenceFrameA, i8* %6, align 1
+ %7 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuadWord* %axisInA, i32 0, i32 0, i32 2 ; [#uses=3]
+ %9 = load float* %8, align 4 ; [#uses=6]
+ %10 = tail call float @fabsf(float %9) nounwind readnone ; [#uses=1]
+ %11 = fcmp ogt float %10, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %11, label %bb.i18, label %bb1.i19
+
+bb.i18: ; preds = %bb5
+ %12 = getelementptr inbounds %struct.btQuadWord* %axisInA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = fmul float %13, %13 ; [#uses=1]
+ %15 = fmul float %9, %9 ; [#uses=1]
+ %16 = fadd float %14, %15 ; [#uses=2]
+ %17 = tail call float @sqrtf(float %16) nounwind readonly ; [#uses=1]
+ %18 = fdiv float 1.000000e+00, %17 ; [#uses=3]
+ %19 = fsub float -0.000000e+00, %9 ; [#uses=1]
+ %20 = fmul float %18, %19 ; [#uses=2]
+ %21 = fmul float %13, %18 ; [#uses=2]
+ %22 = fmul float %16, %18 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %axisInA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=2]
+ %25 = fsub float -0.000000e+00, %24 ; [#uses=1]
+ %26 = fmul float %21, %25 ; [#uses=1]
+ %27 = fmul float %24, %20 ; [#uses=1]
+ br label %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+
+bb1.i19: ; preds = %bb5
+ %28 = getelementptr inbounds %struct.btQuadWord* %axisInA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=3]
+ %30 = fmul float %29, %29 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %axisInA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=3]
+ %33 = fmul float %32, %32 ; [#uses=1]
+ %34 = fadd float %30, %33 ; [#uses=2]
+ %35 = tail call float @sqrtf(float %34) nounwind readonly ; [#uses=1]
+ %36 = fdiv float 1.000000e+00, %35 ; [#uses=3]
+ %37 = fsub float -0.000000e+00, %32 ; [#uses=1]
+ %38 = fmul float %36, %37 ; [#uses=2]
+ %39 = fmul float %29, %36 ; [#uses=2]
+ %40 = fsub float -0.000000e+00, %9 ; [#uses=1]
+ %41 = fmul float %39, %40 ; [#uses=1]
+ %42 = fmul float %9, %38 ; [#uses=1]
+ %43 = fmul float %34, %36 ; [#uses=1]
+ br label %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+
+_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit: ; preds = %bb1.i19, %bb.i18
+ %rbAxisA2.0.2.0 = phi float [ %27, %bb.i18 ], [ %43, %bb1.i19 ] ; [#uses=1]
+ %rbAxisA2.0.1.0 = phi float [ %26, %bb.i18 ], [ %42, %bb1.i19 ] ; [#uses=1]
+ %rbAxisA2.0.0.0 = phi float [ %22, %bb.i18 ], [ %41, %bb1.i19 ] ; [#uses=1]
+ %rbAxisA1.0.2.0 = phi float [ %21, %bb.i18 ], [ 0.000000e+00, %bb1.i19 ] ; [#uses=5]
+ %rbAxisA1.0.1.0 = phi float [ %20, %bb.i18 ], [ %39, %bb1.i19 ] ; [#uses=5]
+ %rbAxisA1.0.0.0 = phi float [ 0.000000e+00, %bb.i18 ], [ %38, %bb1.i19 ] ; [#uses=5]
+ %44 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 0 ; [#uses=2]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 1 ; [#uses=2]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 2 ; [#uses=2]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 3 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ %56 = getelementptr inbounds %struct.btQuadWord* %axisInA, i32 0, i32 0, i32 1 ; [#uses=2]
+ %57 = getelementptr inbounds %struct.btQuadWord* %axisInA, i32 0, i32 0, i32 0 ; [#uses=2]
+ %58 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %rbAxisA1.0.0.0, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %rbAxisA2.0.0.0, float* %59, align 4
+ %60 = load float* %57, align 4 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %60, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %rbAxisA1.0.1.0, float* %63, align 4
+ %64 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %rbAxisA2.0.1.0, float* %64, align 4
+ %65 = load float* %56, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %65, float* %66, align 4
+ %67 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %67, align 4
+ %68 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %rbAxisA1.0.2.0, float* %68, align 4
+ %69 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %rbAxisA2.0.2.0, float* %69, align 4
+ %70 = load float* %8, align 4 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %70, float* %71, align 4
+ %72 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %72, align 4
+ %73 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=2]
+ %75 = load float* %57, align 4 ; [#uses=9]
+ %76 = fmul float %74, %75 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=2]
+ %79 = load float* %56, align 4 ; [#uses=12]
+ %80 = fmul float %78, %79 ; [#uses=1]
+ %81 = fadd float %76, %80 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=2]
+ %84 = load float* %8, align 4 ; [#uses=10]
+ %85 = fmul float %83, %84 ; [#uses=1]
+ %86 = fadd float %81, %85 ; [#uses=6]
+ %87 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=2]
+ %89 = fmul float %88, %75 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=2]
+ %92 = fmul float %91, %79 ; [#uses=1]
+ %93 = fadd float %89, %92 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=2]
+ %96 = fmul float %95, %84 ; [#uses=1]
+ %97 = fadd float %93, %96 ; [#uses=6]
+ %98 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=2]
+ %100 = fmul float %99, %75 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=2]
+ %103 = fmul float %102, %79 ; [#uses=1]
+ %104 = fadd float %100, %103 ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %106 = load float* %105, align 4 ; [#uses=2]
+ %107 = fmul float %106, %84 ; [#uses=1]
+ %108 = fadd float %104, %107 ; [#uses=6]
+ %109 = fmul float %75, %108 ; [#uses=1]
+ %110 = fmul float %79, %97 ; [#uses=1]
+ %111 = fadd float %109, %110 ; [#uses=1]
+ %112 = fmul float %84, %86 ; [#uses=1]
+ %113 = fadd float %111, %112 ; [#uses=2]
+ %114 = fcmp olt float %113, 0xBFEFFFFFC0000000 ; [#uses=1]
+ br i1 %114, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+ %115 = tail call float @fabsf(float %84) nounwind readnone ; [#uses=1]
+ %116 = fcmp ogt float %115, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %116, label %bb.i.i, label %bb1.i.i
+
+bb.i.i: ; preds = %bb.i
+ %117 = fmul float %79, %79 ; [#uses=1]
+ %118 = fmul float %84, %84 ; [#uses=1]
+ %119 = fadd float %117, %118 ; [#uses=1]
+ %120 = tail call float @sqrtf(float %119) nounwind readonly ; [#uses=1]
+ %121 = fdiv float 1.000000e+00, %120 ; [#uses=2]
+ %122 = fsub float -0.000000e+00, %84 ; [#uses=1]
+ %123 = fmul float %121, %122 ; [#uses=1]
+ %124 = fmul float %79, %121 ; [#uses=1]
+ br label %invcont
+
+bb1.i.i: ; preds = %bb.i
+ %125 = fmul float %75, %75 ; [#uses=1]
+ %126 = fmul float %79, %79 ; [#uses=1]
+ %127 = fadd float %125, %126 ; [#uses=1]
+ %128 = tail call float @sqrtf(float %127) nounwind readonly ; [#uses=1]
+ %129 = fdiv float 1.000000e+00, %128 ; [#uses=2]
+ %130 = fsub float -0.000000e+00, %79 ; [#uses=1]
+ %131 = fmul float %129, %130 ; [#uses=1]
+ %132 = fmul float %75, %129 ; [#uses=1]
+ br label %invcont
+
+bb1.i: ; preds = %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+ %133 = fmul float %84, %97 ; [#uses=1]
+ %134 = fmul float %79, %86 ; [#uses=1]
+ %135 = fmul float %75, %86 ; [#uses=1]
+ %136 = fmul float %84, %108 ; [#uses=1]
+ %137 = fmul float %79, %108 ; [#uses=1]
+ %138 = fmul float %75, %97 ; [#uses=1]
+ %139 = fsub float %134, %133 ; [#uses=1]
+ %140 = fsub float %136, %135 ; [#uses=1]
+ %141 = fsub float %138, %137 ; [#uses=1]
+ %142 = fadd float %113, 1.000000e+00 ; [#uses=1]
+ %143 = fmul float %142, 2.000000e+00 ; [#uses=1]
+ %144 = tail call float @sqrtf(float %143) nounwind readonly ; [#uses=2]
+ %145 = fdiv float 1.000000e+00, %144 ; [#uses=3]
+ %146 = fmul float %144, 5.000000e-01 ; [#uses=1]
+ %147 = fmul float %141, %145 ; [#uses=1]
+ %148 = fmul float %140, %145 ; [#uses=1]
+ %149 = fmul float %139, %145 ; [#uses=1]
+ br label %invcont
+
+invcont: ; preds = %bb1.i, %bb1.i.i, %bb.i.i
+ %rotationArc.0.0.3.0 = phi float [ %146, %bb1.i ], [ 0.000000e+00, %bb1.i.i ], [ 0.000000e+00, %bb.i.i ] ; [#uses=6]
+ %rotationArc.0.0.2.0 = phi float [ %147, %bb1.i ], [ 0.000000e+00, %bb1.i.i ], [ %124, %bb.i.i ] ; [#uses=4]
+ %rotationArc.0.0.1.0 = phi float [ %148, %bb1.i ], [ %132, %bb1.i.i ], [ %123, %bb.i.i ] ; [#uses=4]
+ %rotationArc.0.0.0.0 = phi float [ %149, %bb1.i ], [ %131, %bb1.i.i ], [ 0.000000e+00, %bb.i.i ] ; [#uses=3]
+ %150 = fsub float -0.000000e+00, %rotationArc.0.0.0.0 ; [#uses=4]
+ %151 = fmul float %rbAxisA1.0.0.0, %150 ; [#uses=1]
+ %152 = fmul float %rotationArc.0.0.1.0, %rbAxisA1.0.1.0 ; [#uses=1]
+ %153 = fsub float %151, %152 ; [#uses=1]
+ %154 = fmul float %rotationArc.0.0.2.0, %rbAxisA1.0.2.0 ; [#uses=1]
+ %155 = fsub float %153, %154 ; [#uses=3]
+ %156 = fmul float %rotationArc.0.0.3.0, %rbAxisA1.0.2.0 ; [#uses=1]
+ %157 = fmul float %rotationArc.0.0.0.0, %rbAxisA1.0.1.0 ; [#uses=1]
+ %158 = fadd float %156, %157 ; [#uses=1]
+ %159 = fmul float %rotationArc.0.0.1.0, %rbAxisA1.0.0.0 ; [#uses=1]
+ %160 = fsub float %158, %159 ; [#uses=3]
+ %161 = fmul float %rotationArc.0.0.3.0, %rbAxisA1.0.1.0 ; [#uses=1]
+ %162 = fmul float %rotationArc.0.0.2.0, %rbAxisA1.0.0.0 ; [#uses=1]
+ %163 = fadd float %161, %162 ; [#uses=1]
+ %164 = fmul float %rotationArc.0.0.0.0, %rbAxisA1.0.2.0 ; [#uses=1]
+ %165 = fsub float %163, %164 ; [#uses=3]
+ %166 = fmul float %rotationArc.0.0.3.0, %rbAxisA1.0.0.0 ; [#uses=1]
+ %167 = fmul float %rotationArc.0.0.1.0, %rbAxisA1.0.2.0 ; [#uses=1]
+ %168 = fadd float %166, %167 ; [#uses=1]
+ %169 = fmul float %rotationArc.0.0.2.0, %rbAxisA1.0.1.0 ; [#uses=1]
+ %170 = fsub float %168, %169 ; [#uses=3]
+ %171 = fsub float -0.000000e+00, %rotationArc.0.0.2.0 ; [#uses=3]
+ %172 = fsub float -0.000000e+00, %rotationArc.0.0.1.0 ; [#uses=3]
+ %173 = fmul float %155, %171 ; [#uses=1]
+ %174 = fmul float %160, %rotationArc.0.0.3.0 ; [#uses=1]
+ %175 = fadd float %173, %174 ; [#uses=1]
+ %176 = fmul float %170, %172 ; [#uses=1]
+ %177 = fadd float %175, %176 ; [#uses=1]
+ %178 = fmul float %165, %150 ; [#uses=1]
+ %179 = fsub float %177, %178 ; [#uses=3]
+ %180 = fmul float %155, %172 ; [#uses=1]
+ %181 = fmul float %165, %rotationArc.0.0.3.0 ; [#uses=1]
+ %182 = fadd float %180, %181 ; [#uses=1]
+ %183 = fmul float %160, %150 ; [#uses=1]
+ %184 = fadd float %182, %183 ; [#uses=1]
+ %185 = fmul float %170, %171 ; [#uses=1]
+ %186 = fsub float %184, %185 ; [#uses=3]
+ %187 = fmul float %155, %150 ; [#uses=1]
+ %188 = fmul float %170, %rotationArc.0.0.3.0 ; [#uses=1]
+ %189 = fadd float %187, %188 ; [#uses=1]
+ %190 = fmul float %165, %171 ; [#uses=1]
+ %191 = fadd float %189, %190 ; [#uses=1]
+ %192 = fmul float %160, %172 ; [#uses=1]
+ %193 = fsub float %191, %192 ; [#uses=3]
+ %194 = fmul float %108, %186 ; [#uses=1]
+ %195 = fmul float %97, %193 ; [#uses=1]
+ %196 = fsub float %194, %195 ; [#uses=1]
+ %197 = fmul float %86, %193 ; [#uses=1]
+ %198 = fmul float %108, %179 ; [#uses=1]
+ %199 = fsub float %197, %198 ; [#uses=1]
+ %200 = fmul float %97, %179 ; [#uses=1]
+ %201 = fmul float %86, %186 ; [#uses=1]
+ %202 = fsub float %200, %201 ; [#uses=1]
+ %203 = load float* %45, align 4 ; [#uses=3]
+ %204 = fmul float %74, %203 ; [#uses=1]
+ %205 = load float* %48, align 4 ; [#uses=3]
+ %206 = fmul float %78, %205 ; [#uses=1]
+ %207 = fadd float %204, %206 ; [#uses=1]
+ %208 = load float* %51, align 4 ; [#uses=3]
+ %209 = fmul float %83, %208 ; [#uses=1]
+ %210 = fadd float %207, %209 ; [#uses=1]
+ %211 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %212 = load float* %211, align 4 ; [#uses=1]
+ %213 = fadd float %210, %212 ; [#uses=1]
+ %214 = fmul float %88, %203 ; [#uses=1]
+ %215 = fmul float %91, %205 ; [#uses=1]
+ %216 = fadd float %214, %215 ; [#uses=1]
+ %217 = fmul float %95, %208 ; [#uses=1]
+ %218 = fadd float %216, %217 ; [#uses=1]
+ %219 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %220 = load float* %219, align 4 ; [#uses=1]
+ %221 = fadd float %218, %220 ; [#uses=1]
+ %222 = fmul float %99, %203 ; [#uses=1]
+ %223 = fmul float %102, %205 ; [#uses=1]
+ %224 = fadd float %222, %223 ; [#uses=1]
+ %225 = fmul float %106, %208 ; [#uses=1]
+ %226 = fadd float %224, %225 ; [#uses=1]
+ %227 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %228 = load float* %227, align 4 ; [#uses=1]
+ %229 = fadd float %226, %228 ; [#uses=1]
+ %230 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %229, float* %230, align 4
+ %231 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %221, float* %231, align 4
+ %232 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %213, float* %232, align 4
+ %233 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %233, align 4
+ %234 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %193, float* %234, align 4
+ %235 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %202, float* %235, align 4
+ %236 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %108, float* %236, align 4
+ %237 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %237, align 4
+ %238 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %186, float* %238, align 4
+ %239 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %199, float* %239, align 4
+ %240 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %97, float* %240, align 4
+ %241 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %241, align 4
+ %242 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %179, float* %242, align 4
+ %243 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %196, float* %243, align 4
+ %244 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %86, float* %244, align 4
+ %245 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %245, align 4
+ %246 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ store float 1.000000e+00, float* %246, align 4
+ %247 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ store float -1.000000e+00, float* %247, align 4
+ %248 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %248, align 4
+ %249 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ store float 1.000000e+00, float* %249, align 4
+ %250 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0x3FECCCCCC0000000, float* %250, align 4
+ %251 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ store i8 0, i8* %251, align 2
+ %toBool = icmp eq i8 %useReferenceFrameA, 0 ; [#uses=1]
+ %iftmp.178.0 = select i1 %toBool, float 1.000000e+00, float -1.000000e+00 ; [#uses=1]
+ %252 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ store float %iftmp.178.0, float* %252, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17btHingeConstraintC1ER11btRigidBodyRK9btVector3S4_b(%struct.btHingeConstraint* %this, %struct.btRigidBody* %rbA, %struct.btQuadWord* nocapture %pivotInA, %struct.btQuadWord* nocapture %axisInA, i8 zeroext %useReferenceFrameA) align 2 {
+entry:
+ tail call void @_ZN17btHingeConstraintC2ER11btRigidBodyRK9btVector3S4_b(%struct.btHingeConstraint* %this, %struct.btRigidBody* %rbA, %struct.btQuadWord* %pivotInA, %struct.btQuadWord* %axisInA, i8 zeroext %useReferenceFrameA)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN17btHingeConstraintC2ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btHingeConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* nocapture %rbAFrame, %struct.btTransform* nocapture %rbBFrame, i8 zeroext %useReferenceFrameA) align 2 {
+bb5:
+ %0 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBodyS2_(%struct.btTypedConstraint* %0, i32 4, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB)
+ %1 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV17btHingeConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %rbAFrame, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ %56 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ store float %58, float* %56, align 4
+ %59 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %59, align 4
+ %62 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ store float %64, float* %62, align 4
+ %65 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ store float %67, float* %65, align 4
+ %68 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %71, align 4
+ %74 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ store float %76, float* %74, align 4
+ %77 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ store float %79, float* %77, align 4
+ %80 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ store float %82, float* %80, align 4
+ %83 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ store float %85, float* %83, align 4
+ %86 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ store float %88, float* %86, align 4
+ %89 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ store float %91, float* %89, align 4
+ %92 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ store float %94, float* %92, align 4
+ %95 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btTransform* %rbBFrame, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=1]
+ store float %97, float* %95, align 4
+ %98 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ store i8 0, i8* %98, align 4
+ %99 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ store i8 0, i8* %99, align 1
+ %100 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ store i8 0, i8* %100, align 1
+ %101 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ store i8 1, i8* %101, align 4
+ %102 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ store i8 %useReferenceFrameA, i8* %102, align 1
+ %103 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ store i32 0, i32* %103, align 4
+ %104 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ store float 1.000000e+00, float* %104, align 4
+ %105 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ store float -1.000000e+00, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %106, align 4
+ %107 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ store float 1.000000e+00, float* %107, align 4
+ %108 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0x3FECCCCCC0000000, float* %108, align 4
+ %109 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ store i8 0, i8* %109, align 2
+ %toBool = icmp eq i8 %useReferenceFrameA, 0 ; [#uses=1]
+ %iftmp.182.0 = select i1 %toBool, float 1.000000e+00, float -1.000000e+00 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btHingeConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ store float %iftmp.182.0, float* %110, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17btHingeConstraintC1ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btHingeConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* nocapture %rbAFrame, %struct.btTransform* nocapture %rbBFrame, i8 zeroext %useReferenceFrameA) align 2 {
+entry:
+ tail call void @_ZN17btHingeConstraintC2ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btHingeConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* %rbAFrame, %struct.btTransform* %rbBFrame, i8 zeroext %useReferenceFrameA)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17btHingeConstraintC1ER11btRigidBodyS1_RK9btVector3S4_S4_S4_b(%struct.btHingeConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btQuadWord* nocapture %pivotInA, %struct.btQuadWord* nocapture %pivotInB, %struct.btQuadWord* nocapture %axisInA, %struct.btQuadWord* nocapture %axisInB, i8 zeroext %useReferenceFrameA) align 2 {
+entry:
+ tail call void @_ZN17btHingeConstraintC2ER11btRigidBodyS1_RK9btVector3S4_S4_S4_b(%struct.btHingeConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btQuadWord* %pivotInA, %struct.btQuadWord* %pivotInB, %struct.btQuadWord* %axisInA, %struct.btQuadWord* %axisInB, i8 zeroext %useReferenceFrameA)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btPoint2PointConstraintC2ER11btRigidBodyS1_RK9btVector3S4_(%struct.btPoint2PointConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btQuadWord* nocapture %pivotInA, %struct.btQuadWord* nocapture %pivotInB) align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBodyS2_(%struct.btTypedConstraint* %0, i32 3, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB)
+ %1 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV23btPoint2PointConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %pivotInB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %pivotInB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %pivotInB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %pivotInB, i32 0, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store i8 0, i8* %27, align 4
+ %28 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 0 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK23btPoint2PointConstraint28calculateSerializeBufferSizeEv(%struct.btPoint2PointConstraint* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 76
+}
+
+; [#uses=1]
+define void @_ZN23btPoint2PointConstraint13buildJacobianEv(%struct.btPoint2PointConstraint* %this) nounwind align 2 {
+bb.nph:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca %struct.btMatrix3x3, align 8 ; [#uses=13]
+ %3 = alloca %struct.btMatrix3x3, align 8 ; [#uses=13]
+ %normal = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %4 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 8
+ %6 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 8
+ %8 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btMatrix3x3* %3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btMatrix3x3* %2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb3, %bb.nph
+ %i.014 = phi i32 [ 0, %bb.nph ], [ %154, %bb3 ] ; [#uses=3]
+ %scevgep = getelementptr %struct.btPoint2PointConstraint* %this, i32 0, i32 1, i32 %i.014 ; [#uses=2]
+ %scevgep15 = getelementptr %struct.btQuadWord* %normal, i32 0, i32 0, i32 %i.014 ; [#uses=2]
+ store float 1.000000e+00, float* %scevgep15, align 4
+ %49 = load %struct.btRigidBody** %9, align 4 ; [#uses=14]
+ %50 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=2]
+ store float %59, float* %10, align 8
+ %60 = load float* %57, align 4 ; [#uses=2]
+ store float %60, float* %11, align 4
+ %61 = load float* %56, align 4 ; [#uses=2]
+ store float %61, float* %12, align 8
+ store float 0.000000e+00, float* %13, align 4
+ %62 = load float* %55, align 4 ; [#uses=2]
+ store float %62, float* %14, align 8
+ %63 = load float* %54, align 4 ; [#uses=2]
+ store float %63, float* %15, align 4
+ %64 = load float* %53, align 4 ; [#uses=2]
+ store float %64, float* %16, align 8
+ store float 0.000000e+00, float* %17, align 4
+ %65 = load float* %52, align 4 ; [#uses=2]
+ store float %65, float* %18, align 8
+ %66 = load float* %51, align 4 ; [#uses=2]
+ store float %66, float* %19, align 4
+ %67 = load float* %50, align 4 ; [#uses=2]
+ store float %67, float* %20, align 8
+ store float 0.000000e+00, float* %21, align 4
+ %68 = load %struct.btRigidBody** %22, align 4 ; [#uses=14]
+ %69 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=2]
+ store float %78, float* %23, align 8
+ %79 = load float* %76, align 4 ; [#uses=2]
+ store float %79, float* %24, align 4
+ %80 = load float* %75, align 4 ; [#uses=2]
+ store float %80, float* %25, align 8
+ store float 0.000000e+00, float* %26, align 4
+ %81 = load float* %74, align 4 ; [#uses=2]
+ store float %81, float* %27, align 8
+ %82 = load float* %73, align 4 ; [#uses=2]
+ store float %82, float* %28, align 4
+ %83 = load float* %72, align 4 ; [#uses=2]
+ store float %83, float* %29, align 8
+ store float 0.000000e+00, float* %30, align 4
+ %84 = load float* %71, align 4 ; [#uses=2]
+ store float %84, float* %31, align 8
+ %85 = load float* %70, align 4 ; [#uses=2]
+ store float %85, float* %32, align 4
+ %86 = load float* %69, align 4 ; [#uses=2]
+ store float %86, float* %33, align 8
+ store float 0.000000e+00, float* %34, align 4
+ %87 = load float* %35, align 4 ; [#uses=3]
+ %88 = fmul float %61, %87 ; [#uses=1]
+ %89 = load float* %36, align 4 ; [#uses=3]
+ %90 = fmul float %64, %89 ; [#uses=1]
+ %91 = fadd float %88, %90 ; [#uses=1]
+ %92 = load float* %37, align 4 ; [#uses=3]
+ %93 = fmul float %67, %92 ; [#uses=1]
+ %94 = fadd float %91, %93 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=2]
+ %97 = fadd float %94, %96 ; [#uses=1]
+ %98 = fmul float %60, %87 ; [#uses=1]
+ %99 = fmul float %63, %89 ; [#uses=1]
+ %100 = fadd float %98, %99 ; [#uses=1]
+ %101 = fmul float %66, %92 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %104 = load float* %103, align 4 ; [#uses=2]
+ %105 = fadd float %102, %104 ; [#uses=1]
+ %106 = fmul float %59, %87 ; [#uses=1]
+ %107 = fmul float %62, %89 ; [#uses=1]
+ %108 = fadd float %106, %107 ; [#uses=1]
+ %109 = fmul float %65, %92 ; [#uses=1]
+ %110 = fadd float %108, %109 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=2]
+ %113 = fadd float %110, %112 ; [#uses=1]
+ %114 = fsub float %97, %96 ; [#uses=1]
+ %115 = fsub float %105, %104 ; [#uses=1]
+ %116 = fsub float %113, %112 ; [#uses=1]
+ store float %116, float* %38, align 8
+ store float %115, float* %39, align 4
+ store float %114, float* %40, align 8
+ store float 0.000000e+00, float* %41, align 4
+ %117 = load float* %42, align 4 ; [#uses=3]
+ %118 = fmul float %80, %117 ; [#uses=1]
+ %119 = load float* %43, align 4 ; [#uses=3]
+ %120 = fmul float %83, %119 ; [#uses=1]
+ %121 = fadd float %118, %120 ; [#uses=1]
+ %122 = load float* %44, align 4 ; [#uses=3]
+ %123 = fmul float %86, %122 ; [#uses=1]
+ %124 = fadd float %121, %123 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %126 = load float* %125, align 4 ; [#uses=2]
+ %127 = fadd float %124, %126 ; [#uses=1]
+ %128 = fmul float %79, %117 ; [#uses=1]
+ %129 = fmul float %82, %119 ; [#uses=1]
+ %130 = fadd float %128, %129 ; [#uses=1]
+ %131 = fmul float %85, %122 ; [#uses=1]
+ %132 = fadd float %130, %131 ; [#uses=1]
+ %133 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %134 = load float* %133, align 4 ; [#uses=2]
+ %135 = fadd float %132, %134 ; [#uses=1]
+ %136 = fmul float %78, %117 ; [#uses=1]
+ %137 = fmul float %81, %119 ; [#uses=1]
+ %138 = fadd float %136, %137 ; [#uses=1]
+ %139 = fmul float %84, %122 ; [#uses=1]
+ %140 = fadd float %138, %139 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %142 = load float* %141, align 4 ; [#uses=2]
+ %143 = fadd float %140, %142 ; [#uses=1]
+ %144 = fsub float %127, %126 ; [#uses=1]
+ %145 = fsub float %135, %134 ; [#uses=1]
+ %146 = fsub float %143, %142 ; [#uses=1]
+ store float %146, float* %45, align 8
+ store float %145, float* %46, align 4
+ store float %144, float* %47, align 8
+ store float 0.000000e+00, float* %48, align 4
+ %147 = icmp eq %struct.btJacobianEntry* %scevgep, null ; [#uses=1]
+ br i1 %147, label %bb3, label %bb1
+
+bb1: ; preds = %bb
+ %148 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 4 ; [#uses=1]
+ %149 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 4 ; [#uses=1]
+ %150 = load float* %148, align 4 ; [#uses=1]
+ %151 = getelementptr inbounds %struct.btRigidBody* %68, i32 0, i32 8 ; [#uses=1]
+ %152 = load float* %149, align 4 ; [#uses=1]
+ %153 = getelementptr inbounds %struct.btRigidBody* %49, i32 0, i32 8 ; [#uses=1]
+ call void @_ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(%struct.btJacobianEntry* %scevgep, %struct.btMatrix3x3* %3, %struct.btMatrix3x3* %2, %struct.btQuadWord* %1, %struct.btQuadWord* %0, %struct.btQuadWord* %normal, %struct.btQuadWord* %153, float %152, %struct.btQuadWord* %151, float %150) nounwind
+ br label %bb3
+
+bb3: ; preds = %bb1, %bb
+ store float 0.000000e+00, float* %scevgep15, align 4
+ %154 = add nsw i32 %i.014, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %154, 3 ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb
+
+return: ; preds = %bb3
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btPoint2PointConstraint18getInfo1NonVirtualEPN17btTypedConstraint17btConstraintInfo1E(%struct.btPoint2PointConstraint* nocapture %this, %struct.CONTACT_KEY_TOKEN* nocapture %info) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 0 ; [#uses=2]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ ret void
+
+bb1: ; preds = %entry
+ store i32 3, i32* %2, align 4
+ %4 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 3, i32* %4, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btPoint2PointConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E(%struct.btPoint2PointConstraint* nocapture %this, %struct.CONTACT_KEY_TOKEN* nocapture %info) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %1, 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 0 ; [#uses=2]
+ br i1 %toBool.i, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %entry
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ ret void
+
+bb1.i: ; preds = %entry
+ store i32 3, i32* %2, align 4
+ %4 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 3, i32* %4, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btPoint2PointConstraint18getInfo2NonVirtualEPN17btTypedConstraint17btConstraintInfo2ERK11btTransformS5_(%struct.btPoint2PointConstraint* nocapture %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, %struct.btTransform* nocapture %body0_trans, %struct.btTransform* nocapture %body1_trans) nounwind align 2 {
+entry:
+ %a1 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %a2 = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 2 ; [#uses=3]
+ %1 = load float** %0, align 4 ; [#uses=1]
+ store float 1.000000e+00, float* %1, align 4
+ %2 = load float** %0, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 6 ; [#uses=12]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %5 = add nsw i32 %4, 1 ; [#uses=1]
+ %6 = getelementptr inbounds float* %2, i32 %5 ; [#uses=1]
+ store float 1.000000e+00, float* %6, align 4
+ %7 = load float** %0, align 4 ; [#uses=1]
+ %8 = load i32* %3, align 4 ; [#uses=1]
+ %9 = shl i32 %8, 1 ; [#uses=1]
+ %10 = add i32 %9, 2 ; [#uses=1]
+ %11 = getelementptr inbounds float* %7, i32 %10 ; [#uses=1]
+ store float 1.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btTransform* %body0_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=3]
+ %16 = fmul float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %body0_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ %21 = fmul float %18, %20 ; [#uses=1]
+ %22 = fadd float %16, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %body0_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=3]
+ %27 = fmul float %24, %26 ; [#uses=1]
+ %28 = fadd float %22, %27 ; [#uses=4]
+ %29 = getelementptr inbounds %struct.btTransform* %body0_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fmul float %30, %15 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btTransform* %body0_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fmul float %33, %20 ; [#uses=1]
+ %35 = fadd float %31, %34 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btTransform* %body0_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fmul float %37, %26 ; [#uses=1]
+ %39 = fadd float %35, %38 ; [#uses=4]
+ %40 = getelementptr inbounds %struct.btTransform* %body0_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = fmul float %41, %15 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %body0_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = fmul float %44, %20 ; [#uses=1]
+ %46 = fadd float %42, %45 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btTransform* %body0_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = fmul float %48, %26 ; [#uses=1]
+ %50 = fadd float %46, %49 ; [#uses=4]
+ %51 = getelementptr inbounds %struct.btQuadWord* %a1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %50, float* %51, align 8
+ %52 = getelementptr inbounds %struct.btQuadWord* %a1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %39, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btQuadWord* %a1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %28, float* %53, align 8
+ %54 = getelementptr inbounds %struct.btQuadWord* %a1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %54, align 4
+ %55 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 3 ; [#uses=1]
+ %56 = load float** %55, align 4 ; [#uses=12]
+ %57 = load i32* %3, align 4 ; [#uses=5]
+ %58 = getelementptr inbounds float* %56, i32 %57 ; [#uses=1]
+ %59 = shl i32 %57, 1 ; [#uses=4]
+ %60 = getelementptr inbounds float* %56, i32 %59 ; [#uses=1]
+ %61 = fsub float -0.000000e+00, %28 ; [#uses=1]
+ %62 = fsub float -0.000000e+00, %39 ; [#uses=1]
+ %63 = fsub float -0.000000e+00, %50 ; [#uses=1]
+ store float 0.000000e+00, float* %56, align 4
+ %64 = getelementptr inbounds float* %56, i32 1 ; [#uses=1]
+ store float %28, float* %64, align 4
+ %65 = getelementptr inbounds float* %56, i32 2 ; [#uses=1]
+ store float %62, float* %65, align 4
+ %66 = getelementptr inbounds float* %56, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %66, align 4
+ store float %61, float* %58, align 4
+ %.sum = add i32 %57, 1 ; [#uses=1]
+ %67 = getelementptr inbounds float* %56, i32 %.sum ; [#uses=1]
+ store float 0.000000e+00, float* %67, align 4
+ %.sum21 = add i32 %57, 2 ; [#uses=1]
+ %68 = getelementptr inbounds float* %56, i32 %.sum21 ; [#uses=1]
+ store float %50, float* %68, align 4
+ %.sum22 = add i32 %57, 3 ; [#uses=1]
+ %69 = getelementptr inbounds float* %56, i32 %.sum22 ; [#uses=1]
+ store float 0.000000e+00, float* %69, align 4
+ store float %39, float* %60, align 4
+ %.sum2324 = or i32 %59, 1 ; [#uses=1]
+ %70 = getelementptr inbounds float* %56, i32 %.sum2324 ; [#uses=1]
+ store float %63, float* %70, align 4
+ %.sum25 = add i32 %59, 2 ; [#uses=1]
+ %71 = getelementptr inbounds float* %56, i32 %.sum25 ; [#uses=1]
+ store float 0.000000e+00, float* %71, align 4
+ %.sum26 = add i32 %59, 3 ; [#uses=1]
+ %72 = getelementptr inbounds float* %56, i32 %.sum26 ; [#uses=1]
+ store float 0.000000e+00, float* %72, align 4
+ %73 = getelementptr inbounds %struct.btTransform* %body1_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=3]
+ %77 = fmul float %74, %76 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btTransform* %body1_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=3]
+ %82 = fmul float %79, %81 ; [#uses=1]
+ %83 = fadd float %77, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btTransform* %body1_trans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=3]
+ %88 = fmul float %85, %87 ; [#uses=1]
+ %89 = fadd float %83, %88 ; [#uses=4]
+ %90 = getelementptr inbounds %struct.btTransform* %body1_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = fmul float %91, %76 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btTransform* %body1_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = fmul float %94, %81 ; [#uses=1]
+ %96 = fadd float %92, %95 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btTransform* %body1_trans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ %99 = fmul float %98, %87 ; [#uses=1]
+ %100 = fadd float %96, %99 ; [#uses=4]
+ %101 = getelementptr inbounds %struct.btTransform* %body1_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fmul float %102, %76 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btTransform* %body1_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ %106 = fmul float %105, %81 ; [#uses=1]
+ %107 = fadd float %103, %106 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btTransform* %body1_trans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ %110 = fmul float %109, %87 ; [#uses=1]
+ %111 = fadd float %107, %110 ; [#uses=4]
+ %112 = getelementptr inbounds %struct.btQuadWord* %a2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %111, float* %112, align 8
+ %113 = getelementptr inbounds %struct.btQuadWord* %a2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %100, float* %113, align 4
+ %114 = getelementptr inbounds %struct.btQuadWord* %a2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %89, float* %114, align 8
+ %115 = getelementptr inbounds %struct.btQuadWord* %a2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %115, align 4
+ %116 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 5 ; [#uses=1]
+ %117 = load float** %116, align 4 ; [#uses=12]
+ %118 = load i32* %3, align 4 ; [#uses=5]
+ %119 = getelementptr inbounds float* %117, i32 %118 ; [#uses=1]
+ %120 = shl i32 %118, 1 ; [#uses=4]
+ %121 = getelementptr inbounds float* %117, i32 %120 ; [#uses=1]
+ %122 = fsub float -0.000000e+00, %89 ; [#uses=1]
+ store float 0.000000e+00, float* %117, align 4
+ %123 = getelementptr inbounds float* %117, i32 1 ; [#uses=1]
+ store float %122, float* %123, align 4
+ %124 = getelementptr inbounds float* %117, i32 2 ; [#uses=1]
+ store float %100, float* %124, align 4
+ %125 = getelementptr inbounds float* %117, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %125, align 4
+ %126 = fsub float -0.000000e+00, %111 ; [#uses=1]
+ store float %89, float* %119, align 4
+ %.sum27 = add i32 %118, 1 ; [#uses=1]
+ %127 = getelementptr inbounds float* %117, i32 %.sum27 ; [#uses=1]
+ store float 0.000000e+00, float* %127, align 4
+ %.sum28 = add i32 %118, 2 ; [#uses=1]
+ %128 = getelementptr inbounds float* %117, i32 %.sum28 ; [#uses=1]
+ store float %126, float* %128, align 4
+ %.sum29 = add i32 %118, 3 ; [#uses=1]
+ %129 = getelementptr inbounds float* %117, i32 %.sum29 ; [#uses=1]
+ store float 0.000000e+00, float* %129, align 4
+ %130 = fsub float -0.000000e+00, %100 ; [#uses=1]
+ store float %130, float* %121, align 4
+ %.sum3031 = or i32 %120, 1 ; [#uses=1]
+ %131 = getelementptr inbounds float* %117, i32 %.sum3031 ; [#uses=1]
+ store float %111, float* %131, align 4
+ %.sum32 = add i32 %120, 2 ; [#uses=1]
+ %132 = getelementptr inbounds float* %117, i32 %.sum32 ; [#uses=1]
+ store float 0.000000e+00, float* %132, align 4
+ %.sum33 = add i32 %120, 3 ; [#uses=1]
+ %133 = getelementptr inbounds float* %117, i32 %.sum33 ; [#uses=1]
+ store float 0.000000e+00, float* %133, align 4
+ %134 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 4 ; [#uses=2]
+ %135 = load i32* %134, align 4 ; [#uses=1]
+ %136 = and i32 %135, 1 ; [#uses=1]
+ %toBool = icmp eq i32 %136, 0 ; [#uses=1]
+ br i1 %toBool, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %137 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ br label %bb8
+
+bb4: ; preds = %entry
+ %138 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 1 ; [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb4, %bb
+ %iftmp.179.0.in = phi float* [ %137, %bb ], [ %138, %bb4 ] ; [#uses=1]
+ %iftmp.179.0 = load float* %iftmp.179.0.in, align 4 ; [#uses=1]
+ %139 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 0 ; [#uses=1]
+ %140 = load float* %139, align 4 ; [#uses=1]
+ %141 = fmul float %140, %iftmp.179.0 ; [#uses=3]
+ %142 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 7 ; [#uses=3]
+ %scevgep39 = getelementptr %struct.btTransform* %body1_trans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep41 = getelementptr %struct.btTransform* %body0_trans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %143 = load float** %142, align 4 ; [#uses=1]
+ %144 = load float* %scevgep39, align 4 ; [#uses=1]
+ %145 = fadd float %111, %144 ; [#uses=1]
+ %146 = fsub float %145, %50 ; [#uses=1]
+ %147 = load float* %scevgep41, align 4 ; [#uses=1]
+ %148 = fsub float %146, %147 ; [#uses=1]
+ %149 = fmul float %148, %141 ; [#uses=1]
+ store float %149, float* %143, align 4
+ %scevgep39.1 = getelementptr %struct.btTransform* %body1_trans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep41.1 = getelementptr %struct.btTransform* %body0_trans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %150 = load float** %142, align 4 ; [#uses=1]
+ %151 = load i32* %3, align 4 ; [#uses=1]
+ %152 = load float* %scevgep39.1, align 4 ; [#uses=1]
+ %153 = fadd float %100, %152 ; [#uses=1]
+ %154 = fsub float %153, %39 ; [#uses=1]
+ %155 = load float* %scevgep41.1, align 4 ; [#uses=1]
+ %156 = fsub float %154, %155 ; [#uses=1]
+ %157 = fmul float %156, %141 ; [#uses=1]
+ %158 = getelementptr inbounds float* %150, i32 %151 ; [#uses=1]
+ store float %157, float* %158, align 4
+ %scevgep39.2 = getelementptr %struct.btTransform* %body1_trans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep41.2 = getelementptr %struct.btTransform* %body0_trans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %159 = load float** %142, align 4 ; [#uses=1]
+ %160 = load i32* %3, align 4 ; [#uses=1]
+ %161 = shl i32 %160, 1 ; [#uses=1]
+ %162 = load float* %scevgep39.2, align 4 ; [#uses=1]
+ %163 = fadd float %89, %162 ; [#uses=1]
+ %164 = fsub float %163, %28 ; [#uses=1]
+ %165 = load float* %scevgep41.2, align 4 ; [#uses=1]
+ %166 = fsub float %164, %165 ; [#uses=1]
+ %167 = fmul float %166, %141 ; [#uses=1]
+ %168 = getelementptr inbounds float* %159, i32 %161 ; [#uses=1]
+ store float %167, float* %168, align 4
+ %.pre = load i32* %134, align 4 ; [#uses=1]
+ %169 = and i32 %.pre, 2 ; [#uses=1]
+ %170 = icmp eq i32 %169, 0 ; [#uses=1]
+ br i1 %170, label %bb.nph36, label %bb12.loopexit
+
+bb12.loopexit: ; preds = %bb8
+ %171 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=3]
+ %172 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 6 ; [#uses=3]
+ %173 = load float** %171, align 4 ; [#uses=1]
+ %174 = load float* %172, align 4 ; [#uses=1]
+ store float %174, float* %173, align 4
+ %175 = load float** %171, align 4 ; [#uses=1]
+ %176 = load i32* %3, align 4 ; [#uses=1]
+ %177 = load float* %172, align 4 ; [#uses=1]
+ %178 = getelementptr inbounds float* %175, i32 %176 ; [#uses=1]
+ store float %177, float* %178, align 4
+ %179 = load float** %171, align 4 ; [#uses=1]
+ %180 = load i32* %3, align 4 ; [#uses=1]
+ %181 = shl i32 %180, 1 ; [#uses=1]
+ %182 = load float* %172, align 4 ; [#uses=1]
+ %183 = getelementptr inbounds float* %179, i32 %181 ; [#uses=1]
+ store float %182, float* %183, align 4
+ br label %bb.nph36
+
+bb.nph36: ; preds = %bb12.loopexit, %bb8
+ %184 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 2 ; [#uses=3]
+ %185 = load float* %184, align 4 ; [#uses=6]
+ %186 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=3]
+ %187 = fsub float -0.000000e+00, %185 ; [#uses=3]
+ %188 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=3]
+ %189 = fcmp ogt float %185, 0.000000e+00 ; [#uses=1]
+ br i1 %189, label %bb14, label %bb15
+
+bb14: ; preds = %bb.nph36
+ %190 = load float** %186, align 4 ; [#uses=1]
+ store float %187, float* %190, align 4
+ %191 = load float** %188, align 4 ; [#uses=1]
+ store float %185, float* %191, align 4
+ %.pre42 = load float* %184, align 4 ; [#uses=1]
+ br label %bb15
+
+bb15: ; preds = %bb14, %bb.nph36
+ %192 = phi float [ %.pre42, %bb14 ], [ %185, %bb.nph36 ] ; [#uses=2]
+ %193 = fcmp ogt float %192, 0.000000e+00 ; [#uses=1]
+ br i1 %193, label %bb14.1, label %bb15.1
+
+bb17: ; preds = %bb14.2, %bb15.1
+ %194 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ %195 = load float* %194, align 4 ; [#uses=1]
+ %196 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 13 ; [#uses=1]
+ store float %195, float* %196, align 4
+ ret void
+
+bb15.1: ; preds = %bb14.1, %bb15
+ %197 = phi float [ %.pre43, %bb14.1 ], [ %192, %bb15 ] ; [#uses=1]
+ %198 = fcmp ogt float %197, 0.000000e+00 ; [#uses=1]
+ br i1 %198, label %bb14.2, label %bb17
+
+bb14.1: ; preds = %bb15
+ %199 = load float** %186, align 4 ; [#uses=1]
+ %200 = load i32* %3, align 4 ; [#uses=1]
+ %201 = getelementptr inbounds float* %199, i32 %200 ; [#uses=1]
+ store float %187, float* %201, align 4
+ %202 = load float** %188, align 4 ; [#uses=1]
+ %203 = load i32* %3, align 4 ; [#uses=1]
+ %204 = getelementptr inbounds float* %202, i32 %203 ; [#uses=1]
+ store float %185, float* %204, align 4
+ %.pre43 = load float* %184, align 4 ; [#uses=1]
+ br label %bb15.1
+
+bb14.2: ; preds = %bb15.1
+ %205 = load float** %186, align 4 ; [#uses=1]
+ %206 = load i32* %3, align 4 ; [#uses=1]
+ %207 = shl i32 %206, 1 ; [#uses=1]
+ %208 = getelementptr inbounds float* %205, i32 %207 ; [#uses=1]
+ store float %187, float* %208, align 4
+ %209 = load float** %188, align 4 ; [#uses=1]
+ %210 = load i32* %3, align 4 ; [#uses=1]
+ %211 = shl i32 %210, 1 ; [#uses=1]
+ %212 = getelementptr inbounds float* %209, i32 %211 ; [#uses=1]
+ store float %185, float* %212, align 4
+ br label %bb17
+}
+
+; [#uses=1]
+define void @_ZN23btPoint2PointConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E(%struct.btPoint2PointConstraint* nocapture %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %1 = load %struct.btRigidBody** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %4 = load %struct.btRigidBody** %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btRigidBody* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN23btPoint2PointConstraint18getInfo2NonVirtualEPN17btTypedConstraint17btConstraintInfo2ERK11btTransformS5_(%struct.btPoint2PointConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, %struct.btTransform* %5, %struct.btTransform* %2) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btPoint2PointConstraint9updateRHSEf(%struct.btPoint2PointConstraint* nocapture %this, float %timeStep) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btPoint2PointConstraint8setParamEifi(%struct.btPoint2PointConstraint* nocapture %this, i32 %num, float %value, i32 %axis) nounwind align 2 {
+entry:
+ %0 = icmp eq i32 %axis, -1 ; [#uses=1]
+ br i1 %0, label %bb, label %return
+
+bb: ; preds = %entry
+ switch i32 %num, label %return [
+ i32 1, label %bb1
+ i32 2, label %bb1
+ i32 3, label %bb2
+ i32 4, label %bb2
+ ]
+
+bb1: ; preds = %bb, %bb
+ %1 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store float %value, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 4 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = or i32 %3, 1 ; [#uses=1]
+ store i32 %4, i32* %2, align 4
+ ret void
+
+bb2: ; preds = %bb, %bb
+ %5 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ store float %value, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 4 ; [#uses=2]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = or i32 %7, 2 ; [#uses=1]
+ store i32 %8, i32* %6, align 4
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define float @_ZNK23btPoint2PointConstraint8getParamEii(%struct.btPoint2PointConstraint* nocapture %this, i32 %num, i32 %axis) nounwind readonly align 2 {
+entry:
+ %0 = icmp eq i32 %axis, -1 ; [#uses=1]
+ br i1 %0, label %bb, label %bb3
+
+bb: ; preds = %entry
+ switch i32 %num, label %bb3 [
+ i32 1, label %bb1
+ i32 2, label %bb1
+ i32 3, label %bb2
+ i32 4, label %bb2
+ ]
+
+bb1: ; preds = %bb, %bb
+ %1 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ ret float %2
+
+bb2: ; preds = %bb, %bb
+ %3 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ ret float %4
+
+bb3: ; preds = %bb, %entry
+ ret float 0x47EFFFFFE0000000
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK23btPoint2PointConstraint9serializeEPvP12btSerializer(%struct.btPoint2PointConstraint* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK17btTypedConstraint9serializeEPvP12btSerializer(%struct.btTypedConstraint* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i = bitcast i8* %2 to float* ; [#uses=1]
+ %3 = load float* %scevgep.i, align 4 ; [#uses=1]
+ store float %3, float* %scevgep4.i, align 4
+ %scevgep.1.i = getelementptr %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i = getelementptr i8* %dataBuffer, i32 48 ; [#uses=1]
+ %4 = bitcast i8* %scevgep4.1.i to float* ; [#uses=1]
+ %5 = load float* %scevgep.1.i, align 4 ; [#uses=1]
+ store float %5, float* %4, align 4
+ %scevgep.2.i = getelementptr %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i = getelementptr i8* %dataBuffer, i32 52 ; [#uses=1]
+ %6 = bitcast i8* %scevgep4.2.i to float* ; [#uses=1]
+ %7 = load float* %scevgep.2.i, align 4 ; [#uses=1]
+ store float %7, float* %6, align 4
+ %scevgep.3.i = getelementptr %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i = getelementptr i8* %dataBuffer, i32 56 ; [#uses=1]
+ %8 = bitcast i8* %scevgep4.3.i to float* ; [#uses=1]
+ %9 = load float* %scevgep.3.i, align 4 ; [#uses=1]
+ store float %9, float* %8, align 4
+ %10 = getelementptr inbounds i8* %dataBuffer, i32 60 ; [#uses=1]
+ %scevgep.i2 = getelementptr %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i3 = bitcast i8* %10 to float* ; [#uses=1]
+ %11 = load float* %scevgep.i2, align 4 ; [#uses=1]
+ store float %11, float* %scevgep4.i3, align 4
+ %scevgep.1.i4 = getelementptr %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i5 = getelementptr i8* %dataBuffer, i32 64 ; [#uses=1]
+ %12 = bitcast i8* %scevgep4.1.i5 to float* ; [#uses=1]
+ %13 = load float* %scevgep.1.i4, align 4 ; [#uses=1]
+ store float %13, float* %12, align 4
+ %scevgep.2.i6 = getelementptr %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i7 = getelementptr i8* %dataBuffer, i32 68 ; [#uses=1]
+ %14 = bitcast i8* %scevgep4.2.i7 to float* ; [#uses=1]
+ %15 = load float* %scevgep.2.i6, align 4 ; [#uses=1]
+ store float %15, float* %14, align 4
+ %scevgep.3.i8 = getelementptr %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i9 = getelementptr i8* %dataBuffer, i32 72 ; [#uses=1]
+ %16 = bitcast i8* %scevgep4.3.i9 to float* ; [#uses=1]
+ %17 = load float* %scevgep.3.i8, align 4 ; [#uses=1]
+ store float %17, float* %16, align 4
+ ret i8* getelementptr inbounds ([33 x i8]* @.str518, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btPoint2PointConstraintD0Ev(%struct.btPoint2PointConstraint* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV23btPoint2PointConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btPoint2PointConstraint* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btPoint2PointConstraintD1Ev(%struct.btPoint2PointConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV23btPoint2PointConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btPoint2PointConstraintC2ER11btRigidBodyRK9btVector3(%struct.btPoint2PointConstraint* %this, %struct.btRigidBody* %rbA, %struct.btQuadWord* nocapture %pivotInA) align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBody(%struct.btTypedConstraint* %0, i32 3, %struct.btRigidBody* %rbA)
+ %1 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV23btPoint2PointConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 0 ; [#uses=2]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 1 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 2 ; [#uses=2]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = load float* %3, align 4 ; [#uses=3]
+ %17 = fmul float %15, %16 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = load float* %6, align 4 ; [#uses=3]
+ %21 = fmul float %19, %20 ; [#uses=1]
+ %22 = fadd float %17, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = load float* %9, align 4 ; [#uses=3]
+ %26 = fmul float %24, %25 ; [#uses=1]
+ %27 = fadd float %22, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = fadd float %27, %29 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fmul float %32, %16 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fmul float %35, %20 ; [#uses=1]
+ %37 = fadd float %33, %36 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fmul float %39, %25 ; [#uses=1]
+ %41 = fadd float %37, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fadd float %41, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fmul float %46, %16 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fmul float %49, %20 ; [#uses=1]
+ %51 = fadd float %47, %50 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ %54 = fmul float %53, %25 ; [#uses=1]
+ %55 = fadd float %51, %54 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = fadd float %55, %57 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %58, float* %59, align 4
+ %60 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %44, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %30, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %63, align 4
+ %64 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store i8 0, i8* %64, align 4
+ %65 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 0 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %65, align 4
+ %66 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %66, align 4
+ %67 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %67, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btPoint2PointConstraintC1ER11btRigidBodyRK9btVector3(%struct.btPoint2PointConstraint* %this, %struct.btRigidBody* %rbA, %struct.btQuadWord* nocapture %pivotInA) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBody(%struct.btTypedConstraint* %0, i32 3, %struct.btRigidBody* %rbA)
+ %1 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV23btPoint2PointConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 0 ; [#uses=2]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 1 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 2 ; [#uses=2]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = load float* %3, align 4 ; [#uses=3]
+ %17 = fmul float %15, %16 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = load float* %6, align 4 ; [#uses=3]
+ %21 = fmul float %19, %20 ; [#uses=1]
+ %22 = fadd float %17, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = load float* %9, align 4 ; [#uses=3]
+ %26 = fmul float %24, %25 ; [#uses=1]
+ %27 = fadd float %22, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = fadd float %27, %29 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fmul float %32, %16 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fmul float %35, %20 ; [#uses=1]
+ %37 = fadd float %33, %36 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fmul float %39, %25 ; [#uses=1]
+ %41 = fadd float %37, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fadd float %41, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fmul float %46, %16 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fmul float %49, %20 ; [#uses=1]
+ %51 = fadd float %47, %50 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ %54 = fmul float %53, %25 ; [#uses=1]
+ %55 = fadd float %51, %54 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = fadd float %55, %57 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %58, float* %59, align 4
+ %60 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %44, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %30, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %63, align 4
+ %64 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store i8 0, i8* %64, align 4
+ %65 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 0 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %65, align 4
+ %66 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %66, align 4
+ %67 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %67, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN23btPoint2PointConstraintC1ER11btRigidBodyS1_RK9btVector3S4_(%struct.btPoint2PointConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btQuadWord* nocapture %pivotInA, %struct.btQuadWord* nocapture %pivotInB) align 2 {
+bb2:
+ %0 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBodyS2_(%struct.btTypedConstraint* %0, i32 3, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB)
+ %1 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV23btPoint2PointConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %pivotInA, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %pivotInB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %pivotInB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %pivotInB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %pivotInB, i32 0, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store i8 0, i8* %27, align 4
+ %28 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 0 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btPoint2PointConstraint* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btConstraintSolver12prepareSolveEii(%struct.btActionInterface* nocapture %this, i32 %unnamed_arg, i32 %unnamed_arg2) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btConstraintSolver9allSolvedERK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(%struct.btActionInterface* nocapture %this, %struct.btContactSolverInfo* nocapture %unnamed_arg, %struct.btActionInterface* nocapture %unnamed_arg2, %struct.btStackAlloc* nocapture %unnamed_arg4) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btConstraintSolverD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTV18btConstraintSolver, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btConstraintSolverD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([8 x i32 (...)*]* @_ZTV18btConstraintSolver, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=5]
+define void @_ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btRigidBody* nocapture %body1, %struct.btRigidBody* nocapture %body2, %struct.btSolverConstraint* %c) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 14 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 6 ; [#uses=4]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 15 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fmul float %3, %5 ; [#uses=1]
+ %7 = fsub float %1, %6 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %9 = load float* %8, align 4 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 24, i32 0, i32 0 ; [#uses=3]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fmul float %9, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=3]
+ %15 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 24, i32 0, i32 1 ; [#uses=3]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fmul float %14, %16 ; [#uses=1]
+ %18 = fadd float %12, %17 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ %21 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 24, i32 0, i32 2 ; [#uses=3]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fmul float %20, %22 ; [#uses=1]
+ %24 = fadd float %18, %23 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 25, i32 0, i32 0 ; [#uses=3]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fmul float %26, %28 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 25, i32 0, i32 1 ; [#uses=3]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fmul float %31, %33 ; [#uses=1]
+ %35 = fadd float %29, %34 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 25, i32 0, i32 2 ; [#uses=3]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fmul float %37, %39 ; [#uses=1]
+ %41 = fadd float %35, %40 ; [#uses=1]
+ %42 = fadd float %24, %41 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 25, i32 0, i32 0 ; [#uses=3]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fmul float %44, %46 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 25, i32 0, i32 1 ; [#uses=3]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fmul float %49, %51 ; [#uses=1]
+ %53 = fadd float %47, %52 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 25, i32 0, i32 2 ; [#uses=3]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = fmul float %55, %57 ; [#uses=1]
+ %59 = fadd float %53, %58 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 24, i32 0, i32 0 ; [#uses=3]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fmul float %9, %61 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 24, i32 0, i32 1 ; [#uses=3]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %65 = fmul float %14, %64 ; [#uses=1]
+ %66 = fadd float %62, %65 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 24, i32 0, i32 2 ; [#uses=3]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = fmul float %20, %68 ; [#uses=1]
+ %70 = fadd float %66, %69 ; [#uses=1]
+ %71 = fsub float %59, %70 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 8 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=2]
+ %74 = fmul float %73, %42 ; [#uses=1]
+ %75 = fsub float %7, %74 ; [#uses=1]
+ %76 = fmul float %73, %71 ; [#uses=1]
+ %77 = fsub float %75, %76 ; [#uses=2]
+ %78 = fadd float %3, %77 ; [#uses=3]
+ %79 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 16 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=3]
+ %81 = fcmp ogt float %80, %78 ; [#uses=1]
+ br i1 %81, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %82 = fsub float %80, %3 ; [#uses=1]
+ store float %80, float* %2, align 4
+ br label %bb4
+
+bb1: ; preds = %entry
+ %83 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 17 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=3]
+ %85 = fcmp olt float %84, %78 ; [#uses=1]
+ br i1 %85, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ %86 = fsub float %84, %3 ; [#uses=1]
+ store float %84, float* %2, align 4
+ br label %bb4
+
+bb3: ; preds = %bb1
+ store float %78, float* %2, align 4
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2, %bb
+ %deltaImpulse.0 = phi float [ %82, %bb ], [ %86, %bb2 ], [ %77, %bb3 ] ; [#uses=12]
+ %87 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 4 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = fcmp une float %88, 0.000000e+00 ; [#uses=1]
+ br i1 %89, label %bb.i5, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit7
+
+bb.i5: ; preds = %bb4
+ %90 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 27, i32 0, i32 0 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 27, i32 0, i32 1 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 27, i32 0, i32 2 ; [#uses=1]
+ %93 = load float* %90, align 4 ; [#uses=1]
+ %94 = load float* %91, align 4 ; [#uses=1]
+ %95 = load float* %92, align 4 ; [#uses=1]
+ %96 = fmul float %9, %93 ; [#uses=1]
+ %97 = fmul float %14, %94 ; [#uses=1]
+ %98 = fmul float %20, %95 ; [#uses=1]
+ %99 = fmul float %98, %deltaImpulse.0 ; [#uses=1]
+ %100 = fmul float %97, %deltaImpulse.0 ; [#uses=1]
+ %101 = fmul float %96, %deltaImpulse.0 ; [#uses=1]
+ %102 = load float* %10, align 4 ; [#uses=1]
+ %103 = fadd float %102, %101 ; [#uses=1]
+ store float %103, float* %10, align 4
+ %104 = load float* %15, align 4 ; [#uses=1]
+ %105 = fadd float %104, %100 ; [#uses=1]
+ store float %105, float* %15, align 4
+ %106 = load float* %21, align 4 ; [#uses=1]
+ %107 = fadd float %106, %99 ; [#uses=1]
+ store float %107, float* %21, align 4
+ %108 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ %110 = fmul float %109, %deltaImpulse.0 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ %113 = fmul float %112, %deltaImpulse.0 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=1]
+ %116 = fmul float %115, %deltaImpulse.0 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %118 = load float* %117, align 4 ; [#uses=1]
+ %119 = fmul float %118, %110 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %121 = load float* %120, align 4 ; [#uses=1]
+ %122 = fmul float %121, %113 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %124 = load float* %123, align 4 ; [#uses=1]
+ %125 = fmul float %124, %116 ; [#uses=1]
+ %126 = load float* %27, align 4 ; [#uses=1]
+ %127 = fadd float %126, %125 ; [#uses=1]
+ store float %127, float* %27, align 4
+ %128 = load float* %32, align 4 ; [#uses=1]
+ %129 = fadd float %128, %122 ; [#uses=1]
+ store float %129, float* %32, align 4
+ %130 = load float* %38, align 4 ; [#uses=1]
+ %131 = fadd float %130, %119 ; [#uses=1]
+ store float %131, float* %38, align 4
+ br label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit7
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit7: ; preds = %bb.i5, %bb4
+ %132 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 4 ; [#uses=1]
+ %133 = load float* %132, align 4 ; [#uses=1]
+ %134 = fcmp une float %133, 0.000000e+00 ; [#uses=1]
+ br i1 %134, label %bb.i, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit
+
+bb.i: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit7
+ %135 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 27, i32 0, i32 0 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 27, i32 0, i32 1 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 27, i32 0, i32 2 ; [#uses=1]
+ %138 = load float* %8, align 4 ; [#uses=1]
+ %139 = load float* %13, align 4 ; [#uses=1]
+ %140 = load float* %19, align 4 ; [#uses=1]
+ %141 = load float* %135, align 4 ; [#uses=1]
+ %142 = load float* %136, align 4 ; [#uses=1]
+ %143 = load float* %137, align 4 ; [#uses=1]
+ %144 = fsub float -0.000000e+00, %138 ; [#uses=1]
+ %145 = fsub float -0.000000e+00, %139 ; [#uses=1]
+ %146 = fsub float -0.000000e+00, %140 ; [#uses=1]
+ %147 = fmul float %141, %144 ; [#uses=1]
+ %148 = fmul float %142, %145 ; [#uses=1]
+ %149 = fmul float %143, %146 ; [#uses=1]
+ %150 = fmul float %149, %deltaImpulse.0 ; [#uses=1]
+ %151 = fmul float %148, %deltaImpulse.0 ; [#uses=1]
+ %152 = fmul float %147, %deltaImpulse.0 ; [#uses=1]
+ %153 = load float* %60, align 4 ; [#uses=1]
+ %154 = fadd float %153, %152 ; [#uses=1]
+ store float %154, float* %60, align 4
+ %155 = load float* %63, align 4 ; [#uses=1]
+ %156 = fadd float %155, %151 ; [#uses=1]
+ store float %156, float* %63, align 4
+ %157 = load float* %67, align 4 ; [#uses=1]
+ %158 = fadd float %157, %150 ; [#uses=1]
+ store float %158, float* %67, align 4
+ %159 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %160 = load float* %159, align 4 ; [#uses=1]
+ %161 = fmul float %160, %deltaImpulse.0 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %163 = load float* %162, align 4 ; [#uses=1]
+ %164 = fmul float %163, %deltaImpulse.0 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %166 = load float* %165, align 4 ; [#uses=1]
+ %167 = fmul float %166, %deltaImpulse.0 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=1]
+ %170 = fmul float %169, %161 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %172 = load float* %171, align 4 ; [#uses=1]
+ %173 = fmul float %172, %164 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %175 = load float* %174, align 4 ; [#uses=1]
+ %176 = fmul float %175, %167 ; [#uses=1]
+ %177 = load float* %45, align 4 ; [#uses=1]
+ %178 = fadd float %177, %176 ; [#uses=1]
+ store float %178, float* %45, align 4
+ %179 = load float* %50, align 4 ; [#uses=1]
+ %180 = fadd float %179, %173 ; [#uses=1]
+ store float %180, float* %50, align 4
+ %181 = load float* %56, align 4 ; [#uses=1]
+ %182 = fadd float %181, %170 ; [#uses=1]
+ store float %182, float* %56, align 4
+ ret void
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit7
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN35btSequentialImpulseConstraintSolver37resolveSingleConstraintRowGenericSIMDER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btRigidBody* nocapture %body1, %struct.btRigidBody* nocapture %body2, %struct.btSolverConstraint* %c) nounwind align 2 {
+entry:
+ tail call void @_ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btRigidBody* %body1, %struct.btRigidBody* %body2, %struct.btSolverConstraint* %c) nounwind
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN35btSequentialImpulseConstraintSolver36resolveSingleConstraintRowLowerLimitER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btRigidBody* nocapture %body1, %struct.btRigidBody* nocapture %body2, %struct.btSolverConstraint* nocapture %c) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 14 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 6 ; [#uses=2]
+ %3 = load float* %2, align 4 ; [#uses=3]
+ %4 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 15 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fmul float %3, %5 ; [#uses=1]
+ %7 = fsub float %1, %6 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %9 = load float* %8, align 4 ; [#uses=3]
+ %10 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 24, i32 0, i32 0 ; [#uses=3]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fmul float %9, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=3]
+ %15 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 24, i32 0, i32 1 ; [#uses=3]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fmul float %14, %16 ; [#uses=1]
+ %18 = fadd float %12, %17 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ %21 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 24, i32 0, i32 2 ; [#uses=3]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fmul float %20, %22 ; [#uses=1]
+ %24 = fadd float %18, %23 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 25, i32 0, i32 0 ; [#uses=3]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fmul float %26, %28 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 25, i32 0, i32 1 ; [#uses=3]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fmul float %31, %33 ; [#uses=1]
+ %35 = fadd float %29, %34 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 25, i32 0, i32 2 ; [#uses=3]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fmul float %37, %39 ; [#uses=1]
+ %41 = fadd float %35, %40 ; [#uses=1]
+ %42 = fadd float %24, %41 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 25, i32 0, i32 0 ; [#uses=3]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fmul float %44, %46 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 25, i32 0, i32 1 ; [#uses=3]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fmul float %49, %51 ; [#uses=1]
+ %53 = fadd float %47, %52 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 25, i32 0, i32 2 ; [#uses=3]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = fmul float %55, %57 ; [#uses=1]
+ %59 = fadd float %53, %58 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 24, i32 0, i32 0 ; [#uses=3]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fmul float %9, %61 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 24, i32 0, i32 1 ; [#uses=3]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %65 = fmul float %14, %64 ; [#uses=1]
+ %66 = fadd float %62, %65 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 24, i32 0, i32 2 ; [#uses=3]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = fmul float %20, %68 ; [#uses=1]
+ %70 = fadd float %66, %69 ; [#uses=1]
+ %71 = fsub float %59, %70 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 8 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=2]
+ %74 = fmul float %73, %42 ; [#uses=1]
+ %75 = fsub float %7, %74 ; [#uses=1]
+ %76 = fmul float %73, %71 ; [#uses=1]
+ %77 = fsub float %75, %76 ; [#uses=2]
+ %78 = fadd float %3, %77 ; [#uses=2]
+ %79 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 16 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=3]
+ %81 = fcmp ogt float %80, %78 ; [#uses=1]
+ br i1 %81, label %bb, label %bb2
+
+bb: ; preds = %entry
+ %82 = fsub float %80, %3 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb, %entry
+ %storemerge = phi float [ %80, %bb ], [ %78, %entry ] ; [#uses=1]
+ %deltaImpulse.0 = phi float [ %82, %bb ], [ %77, %entry ] ; [#uses=12]
+ store float %storemerge, float* %2, align 4
+ %83 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 4 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ %85 = fcmp une float %84, 0.000000e+00 ; [#uses=1]
+ br i1 %85, label %bb.i3, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit5
+
+bb.i3: ; preds = %bb2
+ %86 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 27, i32 0, i32 0 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 27, i32 0, i32 1 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 27, i32 0, i32 2 ; [#uses=1]
+ %89 = load float* %86, align 4 ; [#uses=1]
+ %90 = load float* %87, align 4 ; [#uses=1]
+ %91 = load float* %88, align 4 ; [#uses=1]
+ %92 = fmul float %9, %89 ; [#uses=1]
+ %93 = fmul float %14, %90 ; [#uses=1]
+ %94 = fmul float %20, %91 ; [#uses=1]
+ %95 = fmul float %94, %deltaImpulse.0 ; [#uses=1]
+ %96 = fmul float %93, %deltaImpulse.0 ; [#uses=1]
+ %97 = fmul float %92, %deltaImpulse.0 ; [#uses=1]
+ %98 = load float* %10, align 4 ; [#uses=1]
+ %99 = fadd float %98, %97 ; [#uses=1]
+ store float %99, float* %10, align 4
+ %100 = load float* %15, align 4 ; [#uses=1]
+ %101 = fadd float %100, %96 ; [#uses=1]
+ store float %101, float* %15, align 4
+ %102 = load float* %21, align 4 ; [#uses=1]
+ %103 = fadd float %102, %95 ; [#uses=1]
+ store float %103, float* %21, align 4
+ %104 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ %106 = fmul float %105, %deltaImpulse.0 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %108 = load float* %107, align 4 ; [#uses=1]
+ %109 = fmul float %108, %deltaImpulse.0 ; [#uses=1]
+ %110 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %111 = load float* %110, align 4 ; [#uses=1]
+ %112 = fmul float %111, %deltaImpulse.0 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %114 = load float* %113, align 4 ; [#uses=1]
+ %115 = fmul float %114, %106 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %117 = load float* %116, align 4 ; [#uses=1]
+ %118 = fmul float %117, %109 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %120 = load float* %119, align 4 ; [#uses=1]
+ %121 = fmul float %120, %112 ; [#uses=1]
+ %122 = load float* %27, align 4 ; [#uses=1]
+ %123 = fadd float %122, %121 ; [#uses=1]
+ store float %123, float* %27, align 4
+ %124 = load float* %32, align 4 ; [#uses=1]
+ %125 = fadd float %124, %118 ; [#uses=1]
+ store float %125, float* %32, align 4
+ %126 = load float* %38, align 4 ; [#uses=1]
+ %127 = fadd float %126, %115 ; [#uses=1]
+ store float %127, float* %38, align 4
+ br label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit5
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit5: ; preds = %bb.i3, %bb2
+ %128 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 4 ; [#uses=1]
+ %129 = load float* %128, align 4 ; [#uses=1]
+ %130 = fcmp une float %129, 0.000000e+00 ; [#uses=1]
+ br i1 %130, label %bb.i, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit
+
+bb.i: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit5
+ %131 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 27, i32 0, i32 0 ; [#uses=1]
+ %132 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 27, i32 0, i32 1 ; [#uses=1]
+ %133 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 27, i32 0, i32 2 ; [#uses=1]
+ %134 = load float* %8, align 4 ; [#uses=1]
+ %135 = load float* %13, align 4 ; [#uses=1]
+ %136 = load float* %19, align 4 ; [#uses=1]
+ %137 = load float* %131, align 4 ; [#uses=1]
+ %138 = load float* %132, align 4 ; [#uses=1]
+ %139 = load float* %133, align 4 ; [#uses=1]
+ %140 = fsub float -0.000000e+00, %134 ; [#uses=1]
+ %141 = fsub float -0.000000e+00, %135 ; [#uses=1]
+ %142 = fsub float -0.000000e+00, %136 ; [#uses=1]
+ %143 = fmul float %137, %140 ; [#uses=1]
+ %144 = fmul float %138, %141 ; [#uses=1]
+ %145 = fmul float %139, %142 ; [#uses=1]
+ %146 = fmul float %145, %deltaImpulse.0 ; [#uses=1]
+ %147 = fmul float %144, %deltaImpulse.0 ; [#uses=1]
+ %148 = fmul float %143, %deltaImpulse.0 ; [#uses=1]
+ %149 = load float* %60, align 4 ; [#uses=1]
+ %150 = fadd float %149, %148 ; [#uses=1]
+ store float %150, float* %60, align 4
+ %151 = load float* %63, align 4 ; [#uses=1]
+ %152 = fadd float %151, %147 ; [#uses=1]
+ store float %152, float* %63, align 4
+ %153 = load float* %67, align 4 ; [#uses=1]
+ %154 = fadd float %153, %146 ; [#uses=1]
+ store float %154, float* %67, align 4
+ %155 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %156 = load float* %155, align 4 ; [#uses=1]
+ %157 = fmul float %156, %deltaImpulse.0 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %159 = load float* %158, align 4 ; [#uses=1]
+ %160 = fmul float %159, %deltaImpulse.0 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ %163 = fmul float %162, %deltaImpulse.0 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %165 = load float* %164, align 4 ; [#uses=1]
+ %166 = fmul float %165, %157 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %168 = load float* %167, align 4 ; [#uses=1]
+ %169 = fmul float %168, %160 ; [#uses=1]
+ %170 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %171 = load float* %170, align 4 ; [#uses=1]
+ %172 = fmul float %171, %163 ; [#uses=1]
+ %173 = load float* %45, align 4 ; [#uses=1]
+ %174 = fadd float %173, %172 ; [#uses=1]
+ store float %174, float* %45, align 4
+ %175 = load float* %50, align 4 ; [#uses=1]
+ %176 = fadd float %175, %169 ; [#uses=1]
+ store float %176, float* %50, align 4
+ %177 = load float* %56, align 4 ; [#uses=1]
+ %178 = fadd float %177, %166 ; [#uses=1]
+ store float %178, float* %56, align 4
+ ret void
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit: ; preds = %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit5
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN35btSequentialImpulseConstraintSolver40resolveSingleConstraintRowLowerLimitSIMDER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btRigidBody* nocapture %body1, %struct.btRigidBody* nocapture %body2, %struct.btSolverConstraint* nocapture %c) nounwind align 2 {
+entry:
+ tail call void @_ZN35btSequentialImpulseConstraintSolver36resolveSingleConstraintRowLowerLimitER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btRigidBody* %body1, %struct.btRigidBody* %body2, %struct.btSolverConstraint* %c) nounwind
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN35btSequentialImpulseConstraintSolver43resolveSplitPenetrationImpulseCacheFriendlyER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btRigidBody* nocapture %body1, %struct.btRigidBody* nocapture %body2, %struct.btSolverConstraint* nocapture %c) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 18 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = fcmp une float %1, 0.000000e+00 ; [#uses=1]
+ br i1 %2, label %bb, label %_ZN11btRigidBody24internalApplyPushImpulseERK9btVector3S2_f.exit
+
+bb: ; preds = %entry
+ %3 = load i32* @gNumSplitImpulseRecoveries, align 4 ; [#uses=1]
+ %4 = add nsw i32 %3, 1 ; [#uses=1]
+ store i32 %4, i32* @gNumSplitImpulseRecoveries, align 4
+ %5 = load float* %0, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 5 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 15 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = fmul float %7, %9 ; [#uses=1]
+ %11 = fsub float %5, %10 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %13 = load float* %12, align 4 ; [#uses=3]
+ %14 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 28, i32 0, i32 0 ; [#uses=3]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fmul float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=3]
+ %19 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 28, i32 0, i32 1 ; [#uses=3]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fmul float %18, %20 ; [#uses=1]
+ %22 = fadd float %16, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=3]
+ %25 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 28, i32 0, i32 2 ; [#uses=3]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = fmul float %24, %26 ; [#uses=1]
+ %28 = fadd float %22, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 29, i32 0, i32 0 ; [#uses=3]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fmul float %30, %32 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 29, i32 0, i32 1 ; [#uses=3]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fmul float %35, %37 ; [#uses=1]
+ %39 = fadd float %33, %38 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 29, i32 0, i32 2 ; [#uses=3]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fmul float %41, %43 ; [#uses=1]
+ %45 = fadd float %39, %44 ; [#uses=1]
+ %46 = fadd float %28, %45 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 29, i32 0, i32 0 ; [#uses=3]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fmul float %48, %50 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 29, i32 0, i32 1 ; [#uses=3]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fmul float %53, %55 ; [#uses=1]
+ %57 = fadd float %51, %56 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 29, i32 0, i32 2 ; [#uses=3]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fmul float %59, %61 ; [#uses=1]
+ %63 = fadd float %57, %62 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 28, i32 0, i32 0 ; [#uses=3]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ %66 = fmul float %13, %65 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 28, i32 0, i32 1 ; [#uses=3]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = fmul float %18, %68 ; [#uses=1]
+ %70 = fadd float %66, %69 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 28, i32 0, i32 2 ; [#uses=3]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fmul float %24, %72 ; [#uses=1]
+ %74 = fadd float %70, %73 ; [#uses=1]
+ %75 = fsub float %63, %74 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 8 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=2]
+ %78 = fmul float %77, %46 ; [#uses=1]
+ %79 = fsub float %11, %78 ; [#uses=1]
+ %80 = fmul float %77, %75 ; [#uses=1]
+ %81 = fsub float %79, %80 ; [#uses=2]
+ %82 = fadd float %7, %81 ; [#uses=2]
+ %83 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 16 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=3]
+ %85 = fcmp ogt float %84, %82 ; [#uses=1]
+ br i1 %85, label %bb1, label %bb3
+
+bb1: ; preds = %bb
+ %86 = fsub float %84, %7 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb1, %bb
+ %storemerge = phi float [ %84, %bb1 ], [ %82, %bb ] ; [#uses=1]
+ %deltaImpulse.0 = phi float [ %86, %bb1 ], [ %81, %bb ] ; [#uses=12]
+ store float %storemerge, float* %6, align 4
+ %87 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 4 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = fcmp une float %88, 0.000000e+00 ; [#uses=1]
+ br i1 %89, label %bb.i5, label %_ZN11btRigidBody24internalApplyPushImpulseERK9btVector3S2_f.exit7
+
+bb.i5: ; preds = %bb3
+ %90 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 27, i32 0, i32 0 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 27, i32 0, i32 1 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 27, i32 0, i32 2 ; [#uses=1]
+ %93 = load float* %90, align 4 ; [#uses=1]
+ %94 = load float* %91, align 4 ; [#uses=1]
+ %95 = load float* %92, align 4 ; [#uses=1]
+ %96 = fmul float %13, %93 ; [#uses=1]
+ %97 = fmul float %18, %94 ; [#uses=1]
+ %98 = fmul float %24, %95 ; [#uses=1]
+ %99 = fmul float %98, %deltaImpulse.0 ; [#uses=1]
+ %100 = fmul float %97, %deltaImpulse.0 ; [#uses=1]
+ %101 = fmul float %96, %deltaImpulse.0 ; [#uses=1]
+ %102 = load float* %14, align 4 ; [#uses=1]
+ %103 = fadd float %102, %101 ; [#uses=1]
+ store float %103, float* %14, align 4
+ %104 = load float* %19, align 4 ; [#uses=1]
+ %105 = fadd float %104, %100 ; [#uses=1]
+ store float %105, float* %19, align 4
+ %106 = load float* %25, align 4 ; [#uses=1]
+ %107 = fadd float %106, %99 ; [#uses=1]
+ store float %107, float* %25, align 4
+ %108 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ %110 = fmul float %109, %deltaImpulse.0 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %112 = load float* %111, align 4 ; [#uses=1]
+ %113 = fmul float %112, %deltaImpulse.0 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=1]
+ %116 = fmul float %115, %deltaImpulse.0 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %118 = load float* %117, align 4 ; [#uses=1]
+ %119 = fmul float %118, %110 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %121 = load float* %120, align 4 ; [#uses=1]
+ %122 = fmul float %121, %113 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %124 = load float* %123, align 4 ; [#uses=1]
+ %125 = fmul float %124, %116 ; [#uses=1]
+ %126 = load float* %31, align 4 ; [#uses=1]
+ %127 = fadd float %126, %125 ; [#uses=1]
+ store float %127, float* %31, align 4
+ %128 = load float* %36, align 4 ; [#uses=1]
+ %129 = fadd float %128, %122 ; [#uses=1]
+ store float %129, float* %36, align 4
+ %130 = load float* %42, align 4 ; [#uses=1]
+ %131 = fadd float %130, %119 ; [#uses=1]
+ store float %131, float* %42, align 4
+ br label %_ZN11btRigidBody24internalApplyPushImpulseERK9btVector3S2_f.exit7
+
+_ZN11btRigidBody24internalApplyPushImpulseERK9btVector3S2_f.exit7: ; preds = %bb.i5, %bb3
+ %132 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 4 ; [#uses=1]
+ %133 = load float* %132, align 4 ; [#uses=1]
+ %134 = fcmp une float %133, 0.000000e+00 ; [#uses=1]
+ br i1 %134, label %bb.i, label %_ZN11btRigidBody24internalApplyPushImpulseERK9btVector3S2_f.exit
+
+bb.i: ; preds = %_ZN11btRigidBody24internalApplyPushImpulseERK9btVector3S2_f.exit7
+ %135 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 27, i32 0, i32 0 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 27, i32 0, i32 1 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 27, i32 0, i32 2 ; [#uses=1]
+ %138 = load float* %12, align 4 ; [#uses=1]
+ %139 = load float* %17, align 4 ; [#uses=1]
+ %140 = load float* %23, align 4 ; [#uses=1]
+ %141 = load float* %135, align 4 ; [#uses=1]
+ %142 = load float* %136, align 4 ; [#uses=1]
+ %143 = load float* %137, align 4 ; [#uses=1]
+ %144 = fsub float -0.000000e+00, %138 ; [#uses=1]
+ %145 = fsub float -0.000000e+00, %139 ; [#uses=1]
+ %146 = fsub float -0.000000e+00, %140 ; [#uses=1]
+ %147 = fmul float %141, %144 ; [#uses=1]
+ %148 = fmul float %142, %145 ; [#uses=1]
+ %149 = fmul float %143, %146 ; [#uses=1]
+ %150 = fmul float %149, %deltaImpulse.0 ; [#uses=1]
+ %151 = fmul float %148, %deltaImpulse.0 ; [#uses=1]
+ %152 = fmul float %147, %deltaImpulse.0 ; [#uses=1]
+ %153 = load float* %64, align 4 ; [#uses=1]
+ %154 = fadd float %153, %152 ; [#uses=1]
+ store float %154, float* %64, align 4
+ %155 = load float* %67, align 4 ; [#uses=1]
+ %156 = fadd float %155, %151 ; [#uses=1]
+ store float %156, float* %67, align 4
+ %157 = load float* %71, align 4 ; [#uses=1]
+ %158 = fadd float %157, %150 ; [#uses=1]
+ store float %158, float* %71, align 4
+ %159 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %160 = load float* %159, align 4 ; [#uses=1]
+ %161 = fmul float %160, %deltaImpulse.0 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %163 = load float* %162, align 4 ; [#uses=1]
+ %164 = fmul float %163, %deltaImpulse.0 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %166 = load float* %165, align 4 ; [#uses=1]
+ %167 = fmul float %166, %deltaImpulse.0 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=1]
+ %170 = fmul float %169, %161 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %172 = load float* %171, align 4 ; [#uses=1]
+ %173 = fmul float %172, %164 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btSolverConstraint* %c, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %175 = load float* %174, align 4 ; [#uses=1]
+ %176 = fmul float %175, %167 ; [#uses=1]
+ %177 = load float* %49, align 4 ; [#uses=1]
+ %178 = fadd float %177, %176 ; [#uses=1]
+ store float %178, float* %49, align 4
+ %179 = load float* %54, align 4 ; [#uses=1]
+ %180 = fadd float %179, %173 ; [#uses=1]
+ store float %180, float* %54, align 4
+ %181 = load float* %60, align 4 ; [#uses=1]
+ %182 = fadd float %181, %170 ; [#uses=1]
+ store float %182, float* %60, align 4
+ ret void
+
+_ZN11btRigidBody24internalApplyPushImpulseERK9btVector3S2_f.exit: ; preds = %_ZN11btRigidBody24internalApplyPushImpulseERK9btVector3S2_f.exit7, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN35btSequentialImpulseConstraintSolver27resolveSplitPenetrationSIMDER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btRigidBody* nocapture %body1, %struct.btRigidBody* nocapture %body2, %struct.btSolverConstraint* nocapture %c) nounwind align 2 {
+entry:
+ tail call void @_ZN35btSequentialImpulseConstraintSolver43resolveSplitPenetrationImpulseCacheFriendlyER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btRigidBody* %body1, %struct.btRigidBody* %body2, %struct.btSolverConstraint* %c) nounwind
+ ret void
+}
+
+; [#uses=0]
+define i32 @_ZN35btSequentialImpulseConstraintSolver7btRand2Ev(%struct.btSequentialImpulseConstraintSolver* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 7 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = mul i32 %1, 1664525 ; [#uses=1]
+ %3 = add i32 %2, 1013904223 ; [#uses=2]
+ store i32 %3, i32* %0, align 4
+ ret i32 %3
+}
+
+; [#uses=0]
+define i32 @_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei(%struct.btSequentialImpulseConstraintSolver* nocapture %this, i32 %n) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 7 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = mul i32 %1, 1664525 ; [#uses=1]
+ %3 = add i32 %2, 1013904223 ; [#uses=4]
+ store i32 %3, i32* %0, align 4
+ %4 = icmp ult i32 %n, 65537 ; [#uses=1]
+ br i1 %4, label %bb, label %bb5
+
+bb: ; preds = %entry
+ %5 = lshr i32 %3, 16 ; [#uses=1]
+ %6 = xor i32 %5, %3 ; [#uses=3]
+ %7 = icmp ult i32 %n, 257 ; [#uses=1]
+ br i1 %7, label %bb1, label %bb5
+
+bb1: ; preds = %bb
+ %8 = lshr i32 %6, 8 ; [#uses=1]
+ %9 = xor i32 %8, %6 ; [#uses=3]
+ %10 = icmp ult i32 %n, 17 ; [#uses=1]
+ br i1 %10, label %bb2, label %bb5
+
+bb2: ; preds = %bb1
+ %11 = lshr i32 %9, 4 ; [#uses=1]
+ %12 = xor i32 %11, %9 ; [#uses=3]
+ %13 = icmp ult i32 %n, 5 ; [#uses=1]
+ br i1 %13, label %bb3, label %bb5
+
+bb3: ; preds = %bb2
+ %14 = lshr i32 %12, 2 ; [#uses=1]
+ %15 = xor i32 %14, %12 ; [#uses=3]
+ %16 = icmp ult i32 %n, 3 ; [#uses=1]
+ br i1 %16, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ %17 = lshr i32 %15, 1 ; [#uses=1]
+ %18 = xor i32 %17, %15 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3, %bb2, %bb1, %bb, %entry
+ %r.0 = phi i32 [ %18, %bb4 ], [ %15, %bb3 ], [ %12, %bb2 ], [ %9, %bb1 ], [ %6, %bb ], [ %3, %entry ] ; [#uses=1]
+ %19 = urem i32 %r.0, %n ; [#uses=1]
+ ret i32 %19
+}
+
+; [#uses=0]
+define float @_ZN35btSequentialImpulseConstraintSolver16restitutionCurveEff(%struct.btSequentialImpulseConstraintSolver* nocapture %this, float %rel_vel, float %restitution) nounwind readnone align 2 {
+entry:
+ %0 = fsub float -0.000000e+00, %rel_vel ; [#uses=1]
+ %1 = fmul float %0, %restitution ; [#uses=1]
+ ret float %1
+}
+
+; [#uses=8]
+define void @_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(%struct.btCollisionObject* %colObj, %struct.btQuadWord* nocapture %frictionDirection) nounwind {
+entry:
+ %0 = icmp eq %struct.btCollisionObject* %colObj, null ; [#uses=1]
+ br i1 %0, label %bb5, label %bb
+
+bb: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 6 ; [#uses=1]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb5, label %bb8
+
+bb5: ; preds = %bb, %entry
+ ret void
+
+bb8: ; preds = %bb
+ %4 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %frictionDirection, i32 0, i32 0, i32 0 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = fmul float %5, %7 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btQuadWord* %frictionDirection, i32 0, i32 0, i32 1 ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=3]
+ %13 = fmul float %10, %12 ; [#uses=1]
+ %14 = fadd float %8, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btQuadWord* %frictionDirection, i32 0, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=3]
+ %19 = fmul float %16, %18 ; [#uses=1]
+ %20 = fadd float %14, %19 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ %23 = fmul float %22, %7 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=2]
+ %26 = fmul float %25, %12 ; [#uses=1]
+ %27 = fadd float %23, %26 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=2]
+ %30 = fmul float %29, %18 ; [#uses=1]
+ %31 = fadd float %27, %30 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=2]
+ %34 = fmul float %33, %7 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = fmul float %36, %12 ; [#uses=1]
+ %38 = fadd float %34, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=2]
+ %41 = fmul float %40, %18 ; [#uses=1]
+ %42 = fadd float %38, %41 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = fmul float %42, %44 ; [#uses=3]
+ %46 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = fmul float %31, %47 ; [#uses=3]
+ %49 = getelementptr inbounds %struct.btCollisionObject* %colObj, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fmul float %20, %50 ; [#uses=3]
+ %52 = fmul float %40, %45 ; [#uses=1]
+ %53 = fmul float %29, %48 ; [#uses=1]
+ %54 = fadd float %52, %53 ; [#uses=1]
+ %55 = fmul float %16, %51 ; [#uses=1]
+ %56 = fadd float %54, %55 ; [#uses=1]
+ %57 = fmul float %36, %45 ; [#uses=1]
+ %58 = fmul float %25, %48 ; [#uses=1]
+ %59 = fadd float %57, %58 ; [#uses=1]
+ %60 = fmul float %10, %51 ; [#uses=1]
+ %61 = fadd float %59, %60 ; [#uses=1]
+ %62 = fmul float %33, %45 ; [#uses=1]
+ %63 = fmul float %22, %48 ; [#uses=1]
+ %64 = fadd float %62, %63 ; [#uses=1]
+ %65 = fmul float %5, %51 ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=1]
+ store float %66, float* %6, align 4
+ store float %61, float* %11, align 4
+ store float %56, float* %17, align 4
+ %67 = getelementptr inbounds %struct.btQuadWord* %frictionDirection, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %67, align 4
+ ret void
+}
+
+; [#uses=0]
+define i32 @_ZN35btSequentialImpulseConstraintSolver19getOrInitSolverBodyER17btCollisionObject(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btCollisionObject* nocapture %body) nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=1]
+define void @_ZN35btSequentialImpulseConstraintSolver22setupContactConstraintER18btSolverConstraintP17btCollisionObjectS3_R15btManifoldPointRK19btContactSolverInfoR9btVector3RfSB_SA_SA_(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btSolverConstraint* %solverConstraint, %struct.btCollisionObject* %colObj0, %struct.btCollisionObject* %colObj1, %struct.btManifoldPoint* nocapture %cp, %struct.btContactSolverInfo* nocapture %infoGlobal, %struct.btQuadWord* nocapture %vel, float* nocapture %rel_vel, float* nocapture %relaxation, %struct.btQuadWord* nocapture %rel_pos1, %struct.btQuadWord* nocapture %rel_pos2) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 19 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %1, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ br i1 %toBool.i, label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit, label %bb.i
+
+bb.i: ; preds = %entry
+ %2 = bitcast %struct.btCollisionObject* %colObj0 to %struct.btRigidBody* ; [#uses=1]
+ br label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+
+_ZN11btRigidBody6upcastEP17btCollisionObject.exit: ; preds = %bb.i, %entry
+ %3 = phi %struct.btRigidBody* [ %2, %bb.i ], [ null, %entry ] ; [#uses=39]
+ %4 = getelementptr inbounds %struct.btCollisionObject* %colObj1, i32 0, i32 19 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %.lobit.i66 = and i32 %5, 2 ; [#uses=1]
+ %toBool.i67 = icmp eq i32 %.lobit.i66, 0 ; [#uses=1]
+ br i1 %toBool.i67, label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit70, label %bb.i68
+
+bb.i68: ; preds = %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+ %6 = bitcast %struct.btCollisionObject* %colObj1 to %struct.btRigidBody* ; [#uses=1]
+ br label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit70
+
+_ZN11btRigidBody6upcastEP17btCollisionObject.exit70: ; preds = %bb.i68, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+ %7 = phi %struct.btRigidBody* [ %6, %bb.i68 ], [ null, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit ] ; [#uses=39]
+ %8 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fsub float %9, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fsub float %14, %16 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fsub float %19, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %rel_pos1, i32 0, i32 0, i32 0 ; [#uses=5]
+ store float %22, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btQuadWord* %rel_pos1, i32 0, i32 0, i32 1 ; [#uses=5]
+ store float %17, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btQuadWord* %rel_pos1, i32 0, i32 0, i32 2 ; [#uses=5]
+ store float %12, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btQuadWord* %rel_pos1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btCollisionObject* %colObj1, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fsub float %28, %30 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btCollisionObject* %colObj1, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = fsub float %33, %35 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btCollisionObject* %colObj1, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fsub float %38, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 0 ; [#uses=5]
+ store float %41, float* %42, align 4
+ %43 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 1 ; [#uses=5]
+ store float %36, float* %43, align 4
+ %44 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 2 ; [#uses=5]
+ store float %31, float* %44, align 4
+ %45 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %45, align 4
+ store float 1.000000e+00, float* %relaxation, align 4
+ %46 = load float* %23, align 4 ; [#uses=2]
+ %47 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 4, i32 0, i32 1 ; [#uses=8]
+ %48 = load float* %47, align 4 ; [#uses=2]
+ %49 = fmul float %46, %48 ; [#uses=1]
+ %50 = load float* %24, align 4 ; [#uses=2]
+ %51 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 4, i32 0, i32 0 ; [#uses=8]
+ %52 = load float* %51, align 4 ; [#uses=2]
+ %53 = fmul float %50, %52 ; [#uses=1]
+ %54 = fsub float %49, %53 ; [#uses=3]
+ %55 = load float* %25, align 4 ; [#uses=2]
+ %56 = fmul float %55, %52 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 4, i32 0, i32 2 ; [#uses=8]
+ %58 = load float* %57, align 4 ; [#uses=2]
+ %59 = fmul float %46, %58 ; [#uses=1]
+ %60 = fsub float %56, %59 ; [#uses=3]
+ %61 = fmul float %50, %58 ; [#uses=1]
+ %62 = fmul float %55, %48 ; [#uses=1]
+ %63 = fsub float %61, %62 ; [#uses=3]
+ %64 = icmp eq %struct.btRigidBody* %3, null ; [#uses=6]
+ br i1 %64, label %bb3, label %bb
+
+bb: ; preds = %_ZN11btRigidBody6upcastEP17btCollisionObject.exit70
+ %65 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ %67 = fmul float %66, %63 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = fmul float %69, %60 ; [#uses=1]
+ %71 = fadd float %67, %70 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ %74 = fmul float %73, %54 ; [#uses=1]
+ %75 = fadd float %71, %74 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ %78 = fmul float %77, %63 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fmul float %80, %60 ; [#uses=1]
+ %82 = fadd float %78, %81 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ %85 = fmul float %84, %54 ; [#uses=1]
+ %86 = fadd float %82, %85 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = fmul float %88, %63 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = fmul float %91, %60 ; [#uses=1]
+ %93 = fadd float %89, %92 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ %96 = fmul float %95, %54 ; [#uses=1]
+ %97 = fadd float %93, %96 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ %100 = fmul float %75, %99 ; [#uses=2]
+ %101 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fmul float %86, %102 ; [#uses=2]
+ %104 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ %106 = fmul float %97, %105 ; [#uses=2]
+ %107 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %106, float* %107, align 4
+ %108 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %103, float* %108, align 4
+ %109 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %100, float* %109, align 4
+ %110 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %110, align 4
+ br label %bb4
+
+bb3: ; preds = %_ZN11btRigidBody6upcastEP17btCollisionObject.exit70
+ %111 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %111, align 4
+ %112 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %113, align 4
+ %114 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %114, align 4
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb
+ %115 = phi float [ 0.000000e+00, %bb3 ], [ %100, %bb ] ; [#uses=2]
+ %116 = phi float [ 0.000000e+00, %bb3 ], [ %103, %bb ] ; [#uses=2]
+ %117 = phi float [ 0.000000e+00, %bb3 ], [ %106, %bb ] ; [#uses=2]
+ %118 = load float* %42, align 4 ; [#uses=2]
+ %119 = load float* %47, align 4 ; [#uses=2]
+ %120 = load float* %43, align 4 ; [#uses=2]
+ %121 = load float* %51, align 4 ; [#uses=2]
+ %122 = load float* %44, align 4 ; [#uses=2]
+ %123 = load float* %57, align 4 ; [#uses=2]
+ %124 = icmp eq %struct.btRigidBody* %7, null ; [#uses=6]
+ br i1 %124, label %bb7, label %bb5
+
+bb5: ; preds = %bb4
+ %125 = fmul float %122, %119 ; [#uses=1]
+ %126 = fmul float %120, %123 ; [#uses=1]
+ %127 = fmul float %118, %123 ; [#uses=1]
+ %128 = fmul float %122, %121 ; [#uses=1]
+ %129 = fmul float %120, %121 ; [#uses=1]
+ %130 = fmul float %118, %119 ; [#uses=1]
+ %131 = fsub float %126, %125 ; [#uses=1]
+ %132 = fsub float %128, %127 ; [#uses=1]
+ %133 = fsub float %130, %129 ; [#uses=1]
+ %134 = fsub float -0.000000e+00, %133 ; [#uses=3]
+ %135 = fsub float -0.000000e+00, %132 ; [#uses=3]
+ %136 = fsub float -0.000000e+00, %131 ; [#uses=3]
+ %137 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %138 = load float* %137, align 4 ; [#uses=1]
+ %139 = fmul float %138, %136 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ %142 = fmul float %141, %135 ; [#uses=1]
+ %143 = fadd float %139, %142 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ %146 = fmul float %145, %134 ; [#uses=1]
+ %147 = fadd float %143, %146 ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %149 = load float* %148, align 4 ; [#uses=1]
+ %150 = fmul float %149, %136 ; [#uses=1]
+ %151 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %152 = load float* %151, align 4 ; [#uses=1]
+ %153 = fmul float %152, %135 ; [#uses=1]
+ %154 = fadd float %150, %153 ; [#uses=1]
+ %155 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %156 = load float* %155, align 4 ; [#uses=1]
+ %157 = fmul float %156, %134 ; [#uses=1]
+ %158 = fadd float %154, %157 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %160 = load float* %159, align 4 ; [#uses=1]
+ %161 = fmul float %160, %136 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %163 = load float* %162, align 4 ; [#uses=1]
+ %164 = fmul float %163, %135 ; [#uses=1]
+ %165 = fadd float %161, %164 ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %167 = load float* %166, align 4 ; [#uses=1]
+ %168 = fmul float %167, %134 ; [#uses=1]
+ %169 = fadd float %165, %168 ; [#uses=1]
+ %170 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %171 = load float* %170, align 4 ; [#uses=1]
+ %172 = fmul float %147, %171 ; [#uses=2]
+ %173 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %174 = load float* %173, align 4 ; [#uses=1]
+ %175 = fmul float %158, %174 ; [#uses=2]
+ %176 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %177 = load float* %176, align 4 ; [#uses=1]
+ %178 = fmul float %169, %177 ; [#uses=2]
+ %179 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %178, float* %179, align 4
+ %180 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %175, float* %180, align 4
+ %181 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %172, float* %181, align 4
+ %182 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %182, align 4
+ br label %bb8
+
+bb7: ; preds = %bb4
+ %183 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %183, align 4
+ %184 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %184, align 4
+ %185 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %185, align 4
+ %186 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %186, align 4
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb5
+ %187 = phi float [ 0.000000e+00, %bb7 ], [ %178, %bb5 ] ; [#uses=1]
+ %188 = phi float [ 0.000000e+00, %bb7 ], [ %175, %bb5 ] ; [#uses=1]
+ %189 = phi float [ 0.000000e+00, %bb7 ], [ %172, %bb5 ] ; [#uses=1]
+ br i1 %64, label %bb15, label %bb13
+
+bb13: ; preds = %bb8
+ %190 = load float* %24, align 4 ; [#uses=2]
+ %191 = fmul float %117, %190 ; [#uses=1]
+ %192 = load float* %23, align 4 ; [#uses=2]
+ %193 = fmul float %116, %192 ; [#uses=1]
+ %194 = fsub float %191, %193 ; [#uses=1]
+ %195 = fmul float %115, %192 ; [#uses=1]
+ %196 = load float* %25, align 4 ; [#uses=2]
+ %197 = fmul float %117, %196 ; [#uses=1]
+ %198 = fsub float %195, %197 ; [#uses=1]
+ %199 = fmul float %116, %196 ; [#uses=1]
+ %200 = fmul float %115, %190 ; [#uses=1]
+ %201 = fsub float %199, %200 ; [#uses=1]
+ %202 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 4 ; [#uses=1]
+ %203 = load float* %202, align 4 ; [#uses=1]
+ %204 = load float* %51, align 4 ; [#uses=1]
+ %205 = fmul float %204, %201 ; [#uses=1]
+ %206 = load float* %47, align 4 ; [#uses=1]
+ %207 = fmul float %206, %198 ; [#uses=1]
+ %208 = fadd float %205, %207 ; [#uses=1]
+ %209 = load float* %57, align 4 ; [#uses=1]
+ %210 = fmul float %209, %194 ; [#uses=1]
+ %211 = fadd float %208, %210 ; [#uses=1]
+ %212 = fadd float %203, %211 ; [#uses=1]
+ br label %bb15
+
+bb15: ; preds = %bb13, %bb8
+ %denom0.0 = phi float [ %212, %bb13 ], [ 0.000000e+00, %bb8 ] ; [#uses=1]
+ br i1 %124, label %bb18, label %bb16
+
+bb16: ; preds = %bb15
+ %213 = fsub float -0.000000e+00, %189 ; [#uses=2]
+ %214 = fsub float -0.000000e+00, %188 ; [#uses=2]
+ %215 = fsub float -0.000000e+00, %187 ; [#uses=2]
+ %216 = load float* %43, align 4 ; [#uses=2]
+ %217 = fmul float %216, %215 ; [#uses=1]
+ %218 = load float* %42, align 4 ; [#uses=2]
+ %219 = fmul float %218, %214 ; [#uses=1]
+ %220 = fsub float %217, %219 ; [#uses=1]
+ %221 = fmul float %218, %213 ; [#uses=1]
+ %222 = load float* %44, align 4 ; [#uses=2]
+ %223 = fmul float %222, %215 ; [#uses=1]
+ %224 = fsub float %221, %223 ; [#uses=1]
+ %225 = fmul float %222, %214 ; [#uses=1]
+ %226 = fmul float %216, %213 ; [#uses=1]
+ %227 = fsub float %225, %226 ; [#uses=1]
+ %228 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 4 ; [#uses=1]
+ %229 = load float* %228, align 4 ; [#uses=1]
+ %230 = load float* %51, align 4 ; [#uses=1]
+ %231 = fmul float %230, %227 ; [#uses=1]
+ %232 = load float* %47, align 4 ; [#uses=1]
+ %233 = fmul float %232, %224 ; [#uses=1]
+ %234 = fadd float %231, %233 ; [#uses=1]
+ %235 = load float* %57, align 4 ; [#uses=1]
+ %236 = fmul float %235, %220 ; [#uses=1]
+ %237 = fadd float %234, %236 ; [#uses=1]
+ %238 = fadd float %229, %237 ; [#uses=1]
+ br label %bb18
+
+bb18: ; preds = %bb16, %bb15
+ %denom1.0 = phi float [ %238, %bb16 ], [ 0.000000e+00, %bb15 ] ; [#uses=1]
+ %239 = load float* %relaxation, align 4 ; [#uses=1]
+ %240 = fadd float %denom0.0, %denom1.0 ; [#uses=1]
+ %241 = fdiv float %239, %240 ; [#uses=1]
+ %242 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 8 ; [#uses=2]
+ store float %241, float* %242, align 4
+ %243 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 1, i32 0, i32 0 ; [#uses=4]
+ %244 = load float* %51, align 4 ; [#uses=1]
+ store float %244, float* %243, align 4
+ %245 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 1, i32 0, i32 1 ; [#uses=4]
+ %246 = load float* %47, align 4 ; [#uses=1]
+ store float %246, float* %245, align 4
+ %247 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 1, i32 0, i32 2 ; [#uses=4]
+ %248 = load float* %57, align 4 ; [#uses=1]
+ store float %248, float* %247, align 4
+ %249 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %250 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %251 = load float* %250, align 4 ; [#uses=1]
+ store float %251, float* %249, align 4
+ %252 = load float* %23, align 4 ; [#uses=2]
+ %253 = load float* %47, align 4 ; [#uses=2]
+ %254 = fmul float %252, %253 ; [#uses=1]
+ %255 = load float* %24, align 4 ; [#uses=2]
+ %256 = load float* %51, align 4 ; [#uses=2]
+ %257 = fmul float %255, %256 ; [#uses=1]
+ %258 = fsub float %254, %257 ; [#uses=1]
+ %259 = load float* %25, align 4 ; [#uses=2]
+ %260 = fmul float %259, %256 ; [#uses=1]
+ %261 = load float* %57, align 4 ; [#uses=2]
+ %262 = fmul float %252, %261 ; [#uses=1]
+ %263 = fsub float %260, %262 ; [#uses=1]
+ %264 = fmul float %255, %261 ; [#uses=1]
+ %265 = fmul float %259, %253 ; [#uses=1]
+ %266 = fsub float %264, %265 ; [#uses=1]
+ %267 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float %266, float* %267, align 4
+ %268 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %263, float* %268, align 4
+ %269 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float %258, float* %269, align 4
+ %270 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %270, align 4
+ %271 = load float* %57, align 4 ; [#uses=1]
+ %272 = fsub float -0.000000e+00, %271 ; [#uses=2]
+ %273 = load float* %47, align 4 ; [#uses=1]
+ %274 = fsub float -0.000000e+00, %273 ; [#uses=2]
+ %275 = load float* %51, align 4 ; [#uses=1]
+ %276 = fsub float -0.000000e+00, %275 ; [#uses=2]
+ %277 = load float* %42, align 4 ; [#uses=2]
+ %278 = fmul float %277, %274 ; [#uses=1]
+ %279 = load float* %43, align 4 ; [#uses=2]
+ %280 = fmul float %279, %276 ; [#uses=1]
+ %281 = fsub float %278, %280 ; [#uses=1]
+ %282 = load float* %44, align 4 ; [#uses=2]
+ %283 = fmul float %282, %276 ; [#uses=1]
+ %284 = fmul float %277, %272 ; [#uses=1]
+ %285 = fsub float %283, %284 ; [#uses=1]
+ %286 = fmul float %279, %272 ; [#uses=1]
+ %287 = fmul float %282, %274 ; [#uses=1]
+ %288 = fsub float %286, %287 ; [#uses=1]
+ %289 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ store float %288, float* %289, align 4
+ %290 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ store float %285, float* %290, align 4
+ %291 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ store float %281, float* %291, align 4
+ %292 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %292, align 4
+ br i1 %64, label %bb23, label %bb21
+
+bb21: ; preds = %bb18
+ %293 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %294 = load float* %293, align 4 ; [#uses=2]
+ %295 = load float* %24, align 4 ; [#uses=2]
+ %296 = fmul float %294, %295 ; [#uses=1]
+ %297 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %298 = load float* %297, align 4 ; [#uses=2]
+ %299 = load float* %23, align 4 ; [#uses=2]
+ %300 = fmul float %298, %299 ; [#uses=1]
+ %301 = fsub float %296, %300 ; [#uses=1]
+ %302 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %303 = load float* %302, align 4 ; [#uses=2]
+ %304 = fmul float %303, %299 ; [#uses=1]
+ %305 = load float* %25, align 4 ; [#uses=2]
+ %306 = fmul float %294, %305 ; [#uses=1]
+ %307 = fsub float %304, %306 ; [#uses=1]
+ %308 = fmul float %298, %305 ; [#uses=1]
+ %309 = fmul float %303, %295 ; [#uses=1]
+ %310 = fsub float %308, %309 ; [#uses=1]
+ %311 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %312 = load float* %311, align 4 ; [#uses=1]
+ %313 = fadd float %312, %301 ; [#uses=1]
+ %314 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %315 = load float* %314, align 4 ; [#uses=1]
+ %316 = fadd float %315, %307 ; [#uses=1]
+ %317 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %318 = load float* %317, align 4 ; [#uses=1]
+ %319 = fadd float %318, %310 ; [#uses=1]
+ br label %bb23
+
+bb23: ; preds = %bb21, %bb18
+ %vel1.0.0.0 = phi float [ %319, %bb21 ], [ 0.000000e+00, %bb18 ] ; [#uses=1]
+ %vel1.0.1.0 = phi float [ %316, %bb21 ], [ 0.000000e+00, %bb18 ] ; [#uses=1]
+ %vel1.0.2.0 = phi float [ %313, %bb21 ], [ 0.000000e+00, %bb18 ] ; [#uses=1]
+ br i1 %124, label %bb26, label %bb24
+
+bb24: ; preds = %bb23
+ %320 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %321 = load float* %320, align 4 ; [#uses=2]
+ %322 = load float* %43, align 4 ; [#uses=2]
+ %323 = fmul float %321, %322 ; [#uses=1]
+ %324 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %325 = load float* %324, align 4 ; [#uses=2]
+ %326 = load float* %42, align 4 ; [#uses=2]
+ %327 = fmul float %325, %326 ; [#uses=1]
+ %328 = fsub float %323, %327 ; [#uses=1]
+ %329 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %330 = load float* %329, align 4 ; [#uses=2]
+ %331 = fmul float %330, %326 ; [#uses=1]
+ %332 = load float* %44, align 4 ; [#uses=2]
+ %333 = fmul float %321, %332 ; [#uses=1]
+ %334 = fsub float %331, %333 ; [#uses=1]
+ %335 = fmul float %325, %332 ; [#uses=1]
+ %336 = fmul float %330, %322 ; [#uses=1]
+ %337 = fsub float %335, %336 ; [#uses=1]
+ %338 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %339 = load float* %338, align 4 ; [#uses=1]
+ %340 = fadd float %339, %328 ; [#uses=1]
+ %341 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %342 = load float* %341, align 4 ; [#uses=1]
+ %343 = fadd float %342, %334 ; [#uses=1]
+ %344 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %345 = load float* %344, align 4 ; [#uses=1]
+ %346 = fadd float %345, %337 ; [#uses=1]
+ br label %bb26
+
+bb26: ; preds = %bb24, %bb23
+ %vel2.0.0.0 = phi float [ %346, %bb24 ], [ 0.000000e+00, %bb23 ] ; [#uses=1]
+ %vel2.0.1.0 = phi float [ %343, %bb24 ], [ 0.000000e+00, %bb23 ] ; [#uses=1]
+ %vel2.0.2.0 = phi float [ %340, %bb24 ], [ 0.000000e+00, %bb23 ] ; [#uses=1]
+ %347 = fsub float %vel1.0.2.0, %vel2.0.2.0 ; [#uses=2]
+ %348 = fsub float %vel1.0.1.0, %vel2.0.1.0 ; [#uses=2]
+ %349 = fsub float %vel1.0.0.0, %vel2.0.0.0 ; [#uses=2]
+ %350 = getelementptr inbounds %struct.btQuadWord* %vel, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %349, float* %350, align 4
+ %351 = getelementptr inbounds %struct.btQuadWord* %vel, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %348, float* %351, align 4
+ %352 = getelementptr inbounds %struct.btQuadWord* %vel, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %347, float* %352, align 4
+ %353 = getelementptr inbounds %struct.btQuadWord* %vel, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %353, align 4
+ %354 = load float* %51, align 4 ; [#uses=1]
+ %355 = fmul float %354, %349 ; [#uses=1]
+ %356 = load float* %47, align 4 ; [#uses=1]
+ %357 = fmul float %356, %348 ; [#uses=1]
+ %358 = fadd float %355, %357 ; [#uses=1]
+ %359 = load float* %57, align 4 ; [#uses=1]
+ %360 = fmul float %359, %347 ; [#uses=1]
+ %361 = fadd float %358, %360 ; [#uses=1]
+ store float %361, float* %rel_vel, align 4
+ %362 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 5 ; [#uses=1]
+ %363 = load float* %362, align 4 ; [#uses=1]
+ %364 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 13 ; [#uses=1]
+ %365 = load float* %364, align 4 ; [#uses=1]
+ %366 = fadd float %363, %365 ; [#uses=2]
+ %367 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 6 ; [#uses=1]
+ %368 = load float* %367, align 4 ; [#uses=1]
+ %369 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 7 ; [#uses=1]
+ store float %368, float* %369, align 4
+ %370 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 21 ; [#uses=1]
+ %371 = load i32* %370, align 4 ; [#uses=1]
+ %372 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 16 ; [#uses=1]
+ %373 = load i32* %372, align 4 ; [#uses=1]
+ %374 = icmp sgt i32 %371, %373 ; [#uses=1]
+ br i1 %374, label %bb31, label %bb29
+
+bb29: ; preds = %bb26
+ %375 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 7 ; [#uses=1]
+ %376 = load float* %375, align 4 ; [#uses=1]
+ %377 = load float* %rel_vel, align 4 ; [#uses=1]
+ %378 = fsub float -0.000000e+00, %377 ; [#uses=1]
+ %379 = fmul float %376, %378 ; [#uses=2]
+ %380 = fcmp ugt float %379, 0.000000e+00 ; [#uses=1]
+ br i1 %380, label %bb31, label %bb30
+
+bb30: ; preds = %bb29
+ br label %bb31
+
+bb31: ; preds = %bb30, %bb29, %bb26
+ %restitution.0 = phi float [ 0.000000e+00, %bb30 ], [ %379, %bb29 ], [ 0.000000e+00, %bb26 ] ; [#uses=1]
+ %381 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 15 ; [#uses=1]
+ %382 = load i32* %381, align 4 ; [#uses=1]
+ %383 = and i32 %382, 4 ; [#uses=1]
+ %384 = icmp eq i32 %383, 0 ; [#uses=1]
+ br i1 %384, label %bb36, label %bb32
+
+bb32: ; preds = %bb31
+ %385 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 13 ; [#uses=1]
+ %386 = load float* %385, align 4 ; [#uses=1]
+ %387 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 14 ; [#uses=1]
+ %388 = load float* %387, align 4 ; [#uses=1]
+ %389 = fmul float %386, %388 ; [#uses=7]
+ %390 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 6 ; [#uses=2]
+ store float %389, float* %390, align 4
+ br i1 %64, label %bb34, label %bb33
+
+bb33: ; preds = %bb32
+ %391 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 4 ; [#uses=1]
+ %392 = load float* %391, align 4 ; [#uses=4]
+ %393 = fcmp une float %392, 0.000000e+00 ; [#uses=1]
+ br i1 %393, label %bb.i63, label %bb34
+
+bb.i63: ; preds = %bb33
+ %394 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %395 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %396 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %397 = load float* %243, align 4 ; [#uses=1]
+ %398 = load float* %245, align 4 ; [#uses=1]
+ %399 = load float* %247, align 4 ; [#uses=1]
+ %400 = load float* %394, align 4 ; [#uses=1]
+ %401 = load float* %395, align 4 ; [#uses=1]
+ %402 = load float* %396, align 4 ; [#uses=1]
+ %403 = fmul float %397, %392 ; [#uses=1]
+ %404 = fmul float %398, %392 ; [#uses=1]
+ %405 = fmul float %399, %392 ; [#uses=1]
+ %406 = fmul float %403, %400 ; [#uses=1]
+ %407 = fmul float %404, %401 ; [#uses=1]
+ %408 = fmul float %405, %402 ; [#uses=1]
+ %409 = fmul float %408, %389 ; [#uses=1]
+ %410 = fmul float %407, %389 ; [#uses=1]
+ %411 = fmul float %406, %389 ; [#uses=1]
+ %412 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %413 = load float* %412, align 4 ; [#uses=1]
+ %414 = fadd float %413, %411 ; [#uses=1]
+ store float %414, float* %412, align 4
+ %415 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %416 = load float* %415, align 4 ; [#uses=1]
+ %417 = fadd float %416, %410 ; [#uses=1]
+ store float %417, float* %415, align 4
+ %418 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %419 = load float* %418, align 4 ; [#uses=1]
+ %420 = fadd float %419, %409 ; [#uses=1]
+ store float %420, float* %418, align 4
+ %421 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %422 = load float* %421, align 4 ; [#uses=1]
+ %423 = fmul float %422, %389 ; [#uses=1]
+ %424 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %425 = load float* %424, align 4 ; [#uses=1]
+ %426 = fmul float %425, %389 ; [#uses=1]
+ %427 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %428 = load float* %427, align 4 ; [#uses=1]
+ %429 = fmul float %428, %389 ; [#uses=1]
+ %430 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %431 = load float* %430, align 4 ; [#uses=1]
+ %432 = fmul float %431, %423 ; [#uses=1]
+ %433 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %434 = load float* %433, align 4 ; [#uses=1]
+ %435 = fmul float %434, %426 ; [#uses=1]
+ %436 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %437 = load float* %436, align 4 ; [#uses=1]
+ %438 = fmul float %437, %429 ; [#uses=1]
+ %439 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 25, i32 0, i32 0 ; [#uses=2]
+ %440 = load float* %439, align 4 ; [#uses=1]
+ %441 = fadd float %440, %438 ; [#uses=1]
+ store float %441, float* %439, align 4
+ %442 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 25, i32 0, i32 1 ; [#uses=2]
+ %443 = load float* %442, align 4 ; [#uses=1]
+ %444 = fadd float %443, %435 ; [#uses=1]
+ store float %444, float* %442, align 4
+ %445 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 25, i32 0, i32 2 ; [#uses=2]
+ %446 = load float* %445, align 4 ; [#uses=1]
+ %447 = fadd float %446, %432 ; [#uses=1]
+ store float %447, float* %445, align 4
+ br label %bb34
+
+bb34: ; preds = %bb.i63, %bb33, %bb32
+ br i1 %124, label %bb37, label %bb35
+
+bb35: ; preds = %bb34
+ %448 = load float* %390, align 4 ; [#uses=1]
+ %449 = fsub float -0.000000e+00, %448 ; [#uses=6]
+ %450 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 4 ; [#uses=1]
+ %451 = load float* %450, align 4 ; [#uses=4]
+ %452 = fcmp une float %451, 0.000000e+00 ; [#uses=1]
+ br i1 %452, label %bb.i62, label %bb37
+
+bb.i62: ; preds = %bb35
+ %453 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %454 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %455 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %456 = load float* %243, align 4 ; [#uses=1]
+ %457 = load float* %245, align 4 ; [#uses=1]
+ %458 = load float* %247, align 4 ; [#uses=1]
+ %459 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %460 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %461 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %462 = load float* %453, align 4 ; [#uses=1]
+ %463 = load float* %454, align 4 ; [#uses=1]
+ %464 = load float* %455, align 4 ; [#uses=1]
+ %465 = fmul float %456, %451 ; [#uses=1]
+ %466 = fmul float %457, %451 ; [#uses=1]
+ %467 = fmul float %458, %451 ; [#uses=1]
+ %468 = load float* %459, align 4 ; [#uses=1]
+ %469 = load float* %460, align 4 ; [#uses=1]
+ %470 = load float* %461, align 4 ; [#uses=1]
+ %471 = fmul float %465, %462 ; [#uses=1]
+ %472 = fmul float %466, %463 ; [#uses=1]
+ %473 = fmul float %467, %464 ; [#uses=1]
+ %474 = fsub float -0.000000e+00, %468 ; [#uses=1]
+ %475 = fsub float -0.000000e+00, %469 ; [#uses=1]
+ %476 = fsub float -0.000000e+00, %470 ; [#uses=1]
+ %477 = fmul float %473, %449 ; [#uses=1]
+ %478 = fmul float %472, %449 ; [#uses=1]
+ %479 = fmul float %471, %449 ; [#uses=1]
+ %480 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %481 = load float* %480, align 4 ; [#uses=1]
+ %482 = fadd float %481, %479 ; [#uses=1]
+ store float %482, float* %480, align 4
+ %483 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %484 = load float* %483, align 4 ; [#uses=1]
+ %485 = fadd float %484, %478 ; [#uses=1]
+ store float %485, float* %483, align 4
+ %486 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %487 = load float* %486, align 4 ; [#uses=1]
+ %488 = fadd float %487, %477 ; [#uses=1]
+ store float %488, float* %486, align 4
+ %489 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %490 = load float* %489, align 4 ; [#uses=1]
+ %491 = fmul float %490, %449 ; [#uses=1]
+ %492 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %493 = load float* %492, align 4 ; [#uses=1]
+ %494 = fmul float %493, %449 ; [#uses=1]
+ %495 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %496 = load float* %495, align 4 ; [#uses=1]
+ %497 = fmul float %496, %449 ; [#uses=1]
+ %498 = fmul float %491, %476 ; [#uses=1]
+ %499 = fmul float %494, %475 ; [#uses=1]
+ %500 = fmul float %497, %474 ; [#uses=1]
+ %501 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 25, i32 0, i32 0 ; [#uses=2]
+ %502 = load float* %501, align 4 ; [#uses=1]
+ %503 = fadd float %502, %500 ; [#uses=1]
+ store float %503, float* %501, align 4
+ %504 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 25, i32 0, i32 1 ; [#uses=2]
+ %505 = load float* %504, align 4 ; [#uses=1]
+ %506 = fadd float %505, %499 ; [#uses=1]
+ store float %506, float* %504, align 4
+ %507 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 25, i32 0, i32 2 ; [#uses=2]
+ %508 = load float* %507, align 4 ; [#uses=1]
+ %509 = fadd float %508, %498 ; [#uses=1]
+ store float %509, float* %507, align 4
+ br label %bb37
+
+bb36: ; preds = %bb31
+ %510 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 6 ; [#uses=1]
+ store float 0.000000e+00, float* %510, align 4
+ br label %bb37
+
+bb37: ; preds = %bb36, %bb.i62, %bb35, %bb34
+ %511 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %511, align 4
+ br i1 %64, label %bb48, label %bb46
+
+bb46: ; preds = %bb37
+ %512 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %513 = load float* %512, align 4 ; [#uses=1]
+ %514 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %515 = load float* %514, align 4 ; [#uses=1]
+ %516 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %517 = load float* %516, align 4 ; [#uses=1]
+ br label %bb48
+
+bb48: ; preds = %bb46, %bb37
+ %.0.2176.0 = phi float [ %517, %bb46 ], [ 0.000000e+00, %bb37 ] ; [#uses=1]
+ %.0.1175.0 = phi float [ %515, %bb46 ], [ 0.000000e+00, %bb37 ] ; [#uses=1]
+ %.0.0174.0 = phi float [ %513, %bb46 ], [ 0.000000e+00, %bb37 ] ; [#uses=1]
+ %518 = load float* %243, align 4 ; [#uses=2]
+ %519 = fmul float %518, %.0.0174.0 ; [#uses=1]
+ %520 = load float* %245, align 4 ; [#uses=2]
+ %521 = fmul float %520, %.0.1175.0 ; [#uses=1]
+ %522 = fadd float %519, %521 ; [#uses=1]
+ %523 = load float* %247, align 4 ; [#uses=2]
+ %524 = fmul float %523, %.0.2176.0 ; [#uses=1]
+ %525 = fadd float %522, %524 ; [#uses=1]
+ br i1 %64, label %bb51, label %bb49
+
+bb49: ; preds = %bb48
+ %526 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %527 = load float* %526, align 4 ; [#uses=1]
+ %528 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %529 = load float* %528, align 4 ; [#uses=1]
+ %530 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %531 = load float* %530, align 4 ; [#uses=1]
+ br label %bb51
+
+bb51: ; preds = %bb49, %bb48
+ %.0.2183.0 = phi float [ %531, %bb49 ], [ 0.000000e+00, %bb48 ] ; [#uses=1]
+ %.0.1182.0 = phi float [ %529, %bb49 ], [ 0.000000e+00, %bb48 ] ; [#uses=1]
+ %.0.0181.0 = phi float [ %527, %bb49 ], [ 0.000000e+00, %bb48 ] ; [#uses=1]
+ %532 = load float* %267, align 4 ; [#uses=1]
+ %533 = fmul float %532, %.0.0181.0 ; [#uses=1]
+ %534 = load float* %268, align 4 ; [#uses=1]
+ %535 = fmul float %534, %.0.1182.0 ; [#uses=1]
+ %536 = fadd float %533, %535 ; [#uses=1]
+ %537 = load float* %269, align 4 ; [#uses=1]
+ %538 = fmul float %537, %.0.2183.0 ; [#uses=1]
+ %539 = fadd float %536, %538 ; [#uses=1]
+ %540 = fadd float %525, %539 ; [#uses=1]
+ br i1 %124, label %bb54, label %bb52
+
+bb52: ; preds = %bb51
+ %541 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %542 = load float* %541, align 4 ; [#uses=1]
+ %543 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %544 = load float* %543, align 4 ; [#uses=1]
+ %545 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %546 = load float* %545, align 4 ; [#uses=1]
+ br label %bb54
+
+bb54: ; preds = %bb52, %bb51
+ %.0.2190.0 = phi float [ %546, %bb52 ], [ 0.000000e+00, %bb51 ] ; [#uses=1]
+ %.0.1189.0 = phi float [ %544, %bb52 ], [ 0.000000e+00, %bb51 ] ; [#uses=1]
+ %.0.0188.0 = phi float [ %542, %bb52 ], [ 0.000000e+00, %bb51 ] ; [#uses=1]
+ %547 = load float* %289, align 4 ; [#uses=1]
+ %548 = fmul float %547, %.0.0188.0 ; [#uses=1]
+ %549 = load float* %290, align 4 ; [#uses=1]
+ %550 = fmul float %549, %.0.1189.0 ; [#uses=1]
+ %551 = fadd float %548, %550 ; [#uses=1]
+ %552 = load float* %291, align 4 ; [#uses=1]
+ %553 = fmul float %552, %.0.2190.0 ; [#uses=1]
+ %554 = fadd float %551, %553 ; [#uses=1]
+ br i1 %124, label %bb57, label %bb55
+
+bb55: ; preds = %bb54
+ %555 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %556 = load float* %555, align 4 ; [#uses=1]
+ %557 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %558 = load float* %557, align 4 ; [#uses=1]
+ %559 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %560 = load float* %559, align 4 ; [#uses=1]
+ br label %bb57
+
+bb57: ; preds = %bb55, %bb54
+ %.0.2197.0 = phi float [ %560, %bb55 ], [ 0.000000e+00, %bb54 ] ; [#uses=1]
+ %.0.1196.0 = phi float [ %558, %bb55 ], [ 0.000000e+00, %bb54 ] ; [#uses=1]
+ %.0.0195.0 = phi float [ %556, %bb55 ], [ 0.000000e+00, %bb54 ] ; [#uses=1]
+ %561 = fmul float %518, %.0.0195.0 ; [#uses=1]
+ %562 = fmul float %520, %.0.1196.0 ; [#uses=1]
+ %563 = fadd float %561, %562 ; [#uses=1]
+ %564 = fmul float %523, %.0.2197.0 ; [#uses=1]
+ %565 = fadd float %563, %564 ; [#uses=1]
+ %566 = fsub float %554, %565 ; [#uses=1]
+ %567 = fadd float %540, %566 ; [#uses=1]
+ %568 = fsub float -0.000000e+00, %366 ; [#uses=1]
+ %569 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 8 ; [#uses=1]
+ %570 = load float* %569, align 4 ; [#uses=1]
+ %571 = fmul float %570, %568 ; [#uses=1]
+ %572 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 3 ; [#uses=1]
+ %573 = load float* %572, align 4 ; [#uses=1]
+ %574 = fdiv float %571, %573 ; [#uses=1]
+ %575 = fsub float %restitution.0, %567 ; [#uses=1]
+ %576 = load float* %242, align 4 ; [#uses=2]
+ %577 = fmul float %576, %574 ; [#uses=2]
+ %578 = fmul float %576, %575 ; [#uses=2]
+ %579 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 11 ; [#uses=1]
+ %580 = load i32* %579, align 4 ; [#uses=1]
+ %581 = icmp eq i32 %580, 0 ; [#uses=1]
+ br i1 %581, label %bb59, label %bb58
+
+bb58: ; preds = %bb57
+ %582 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 12 ; [#uses=1]
+ %583 = load float* %582, align 4 ; [#uses=1]
+ %584 = fcmp olt float %583, %366 ; [#uses=1]
+ br i1 %584, label %bb59, label %bb60
+
+bb59: ; preds = %bb58, %bb57
+ %585 = fadd float %577, %578 ; [#uses=1]
+ %586 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 14 ; [#uses=1]
+ store float %585, float* %586, align 4
+ %587 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 18 ; [#uses=1]
+ store float 0.000000e+00, float* %587, align 4
+ br label %bb61
+
+bb60: ; preds = %bb58
+ %588 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 14 ; [#uses=1]
+ store float %578, float* %588, align 4
+ %589 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 18 ; [#uses=1]
+ store float %577, float* %589, align 4
+ br label %bb61
+
+bb61: ; preds = %bb60, %bb59
+ %590 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 15 ; [#uses=1]
+ store float 0.000000e+00, float* %590, align 4
+ %591 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %591, align 4
+ %592 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 17 ; [#uses=1]
+ store float 1.000000e+10, float* %592, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN35btSequentialImpulseConstraintSolver5resetEv(%struct.btSequentialImpulseConstraintSolver* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 0, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN35btSequentialImpulseConstraintSolver28setFrictionConstraintImpulseER18btSolverConstraintP11btRigidBodyS3_R15btManifoldPointRK19btContactSolverInfo(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btSolverConstraint* nocapture %solverConstraint, %struct.btRigidBody* %rb0, %struct.btRigidBody* %rb1, %struct.btManifoldPoint* nocapture %cp, %struct.btContactSolverInfo* nocapture %infoGlobal) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 15 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = and i32 %1, 8 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 10, i32 0 ; [#uses=3]
+ %5 = load i32* %4, align 4 ; [#uses=15]
+ %6 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %7 = load %struct.btSolverConstraint** %6, align 4 ; [#uses=15]
+ br i1 %3, label %bb13, label %bb
+
+bb: ; preds = %entry
+ %8 = and i32 %1, 4 ; [#uses=1]
+ %9 = icmp eq i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %10 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 15 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 14 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fmul float %11, %13 ; [#uses=7]
+ %15 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 6 ; [#uses=2]
+ store float %14, float* %15, align 4
+ %16 = icmp eq %struct.btRigidBody* %rb0, null ; [#uses=1]
+ br i1 %16, label %bb3, label %bb2
+
+bb2: ; preds = %bb1
+ %17 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 4 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=4]
+ %19 = fcmp une float %18, 0.000000e+00 ; [#uses=1]
+ br i1 %19, label %bb.i24, label %bb3
+
+bb.i24: ; preds = %bb2
+ %20 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 1, i32 0, i32 0 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 1, i32 0, i32 1 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %20, align 4 ; [#uses=1]
+ %27 = load float* %21, align 4 ; [#uses=1]
+ %28 = load float* %22, align 4 ; [#uses=1]
+ %29 = load float* %23, align 4 ; [#uses=1]
+ %30 = load float* %24, align 4 ; [#uses=1]
+ %31 = load float* %25, align 4 ; [#uses=1]
+ %32 = fmul float %26, %18 ; [#uses=1]
+ %33 = fmul float %27, %18 ; [#uses=1]
+ %34 = fmul float %28, %18 ; [#uses=1]
+ %35 = fmul float %32, %29 ; [#uses=1]
+ %36 = fmul float %33, %30 ; [#uses=1]
+ %37 = fmul float %34, %31 ; [#uses=1]
+ %38 = fmul float %37, %14 ; [#uses=1]
+ %39 = fmul float %36, %14 ; [#uses=1]
+ %40 = fmul float %35, %14 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = fadd float %42, %40 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fadd float %45, %39 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = fadd float %48, %38 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fmul float %51, %14 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = fmul float %54, %14 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = fmul float %57, %14 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 3, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ %61 = fmul float %60, %52 ; [#uses=1]
+ %62 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 3, i32 0, i32 1 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ %64 = fmul float %63, %55 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 3, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ %67 = fmul float %66, %58 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 25, i32 0, i32 0 ; [#uses=2]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = fadd float %69, %67 ; [#uses=1]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 25, i32 0, i32 1 ; [#uses=2]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fadd float %72, %64 ; [#uses=1]
+ store float %73, float* %71, align 4
+ %74 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 25, i32 0, i32 2 ; [#uses=2]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = fadd float %75, %61 ; [#uses=1]
+ store float %76, float* %74, align 4
+ br label %bb3
+
+bb3: ; preds = %bb.i24, %bb2, %bb1
+ %77 = icmp eq %struct.btRigidBody* %rb1, null ; [#uses=1]
+ br i1 %77, label %bb6, label %bb4
+
+bb4: ; preds = %bb3
+ %78 = load float* %15, align 4 ; [#uses=1]
+ %79 = fsub float -0.000000e+00, %78 ; [#uses=6]
+ %80 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 4 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=4]
+ %82 = fcmp une float %81, 0.000000e+00 ; [#uses=1]
+ br i1 %82, label %bb.i21, label %bb6
+
+bb.i21: ; preds = %bb4
+ %83 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 1, i32 0, i32 0 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 1, i32 0, i32 1 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 1, i32 0, i32 2 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %89 = load float* %83, align 4 ; [#uses=1]
+ %90 = load float* %84, align 4 ; [#uses=1]
+ %91 = load float* %85, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 4, i32 0, i32 0 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 4, i32 0, i32 1 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 4, i32 0, i32 2 ; [#uses=1]
+ %95 = load float* %86, align 4 ; [#uses=1]
+ %96 = load float* %87, align 4 ; [#uses=1]
+ %97 = load float* %88, align 4 ; [#uses=1]
+ %98 = fmul float %89, %81 ; [#uses=1]
+ %99 = fmul float %90, %81 ; [#uses=1]
+ %100 = fmul float %91, %81 ; [#uses=1]
+ %101 = load float* %92, align 4 ; [#uses=1]
+ %102 = load float* %93, align 4 ; [#uses=1]
+ %103 = load float* %94, align 4 ; [#uses=1]
+ %104 = fmul float %98, %95 ; [#uses=1]
+ %105 = fmul float %99, %96 ; [#uses=1]
+ %106 = fmul float %100, %97 ; [#uses=1]
+ %107 = fsub float -0.000000e+00, %101 ; [#uses=1]
+ %108 = fsub float -0.000000e+00, %102 ; [#uses=1]
+ %109 = fsub float -0.000000e+00, %103 ; [#uses=1]
+ %110 = fmul float %106, %79 ; [#uses=1]
+ %111 = fmul float %105, %79 ; [#uses=1]
+ %112 = fmul float %104, %79 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %114 = load float* %113, align 4 ; [#uses=1]
+ %115 = fadd float %114, %112 ; [#uses=1]
+ store float %115, float* %113, align 4
+ %116 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %117 = load float* %116, align 4 ; [#uses=1]
+ %118 = fadd float %117, %111 ; [#uses=1]
+ store float %118, float* %116, align 4
+ %119 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %120 = load float* %119, align 4 ; [#uses=1]
+ %121 = fadd float %120, %110 ; [#uses=1]
+ store float %121, float* %119, align 4
+ %122 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=1]
+ %124 = fmul float %123, %79 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %126 = load float* %125, align 4 ; [#uses=1]
+ %127 = fmul float %126, %79 ; [#uses=1]
+ %128 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %129 = load float* %128, align 4 ; [#uses=1]
+ %130 = fmul float %129, %79 ; [#uses=1]
+ %131 = fmul float %124, %109 ; [#uses=1]
+ %132 = fmul float %127, %108 ; [#uses=1]
+ %133 = fmul float %130, %107 ; [#uses=1]
+ %134 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 25, i32 0, i32 0 ; [#uses=2]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ %136 = fadd float %135, %133 ; [#uses=1]
+ store float %136, float* %134, align 4
+ %137 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 25, i32 0, i32 1 ; [#uses=2]
+ %138 = load float* %137, align 4 ; [#uses=1]
+ %139 = fadd float %138, %132 ; [#uses=1]
+ store float %139, float* %137, align 4
+ %140 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 25, i32 0, i32 2 ; [#uses=2]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ %142 = fadd float %141, %131 ; [#uses=1]
+ store float %142, float* %140, align 4
+ br label %bb6
+
+bb5: ; preds = %bb
+ %143 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 6 ; [#uses=1]
+ store float 0.000000e+00, float* %143, align 4
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb.i21, %bb4, %bb3
+ %144 = load i32* %0, align 4 ; [#uses=2]
+ %145 = and i32 %144, 16 ; [#uses=1]
+ %146 = icmp eq i32 %145, 0 ; [#uses=1]
+ br i1 %146, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit, label %bb7
+
+bb7: ; preds = %bb6
+ %147 = load i32* %4, align 4 ; [#uses=1]
+ %148 = add nsw i32 %147, 1 ; [#uses=14]
+ %149 = load %struct.btSolverConstraint** %6, align 4 ; [#uses=14]
+ %150 = and i32 %144, 4 ; [#uses=1]
+ %151 = icmp eq i32 %150, 0 ; [#uses=1]
+ br i1 %151, label %bb12, label %bb8
+
+bb8: ; preds = %bb7
+ %152 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 16 ; [#uses=1]
+ %153 = load float* %152, align 4 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 14 ; [#uses=1]
+ %155 = load float* %154, align 4 ; [#uses=1]
+ %156 = fmul float %153, %155 ; [#uses=7]
+ %157 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 6 ; [#uses=2]
+ store float %156, float* %157, align 4
+ %158 = icmp eq %struct.btRigidBody* %rb0, null ; [#uses=1]
+ br i1 %158, label %bb10, label %bb9
+
+bb9: ; preds = %bb8
+ %159 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 4 ; [#uses=1]
+ %160 = load float* %159, align 4 ; [#uses=4]
+ %161 = fcmp une float %160, 0.000000e+00 ; [#uses=1]
+ br i1 %161, label %bb.i18, label %bb10
+
+bb.i18: ; preds = %bb9
+ %162 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 1, i32 0, i32 0 ; [#uses=1]
+ %163 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 1, i32 0, i32 1 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 1, i32 0, i32 2 ; [#uses=1]
+ %165 = load float* %162, align 4 ; [#uses=1]
+ %166 = load float* %163, align 4 ; [#uses=1]
+ %167 = load float* %164, align 4 ; [#uses=1]
+ %168 = fmul float %165, %160 ; [#uses=1]
+ %169 = fmul float %166, %160 ; [#uses=1]
+ %170 = fmul float %167, %160 ; [#uses=1]
+ %171 = fmul float %170, %156 ; [#uses=1]
+ %172 = fmul float %169, %156 ; [#uses=1]
+ %173 = fmul float %168, %156 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %175 = load float* %174, align 4 ; [#uses=1]
+ %176 = fadd float %175, %173 ; [#uses=1]
+ store float %176, float* %174, align 4
+ %177 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %178 = load float* %177, align 4 ; [#uses=1]
+ %179 = fadd float %178, %172 ; [#uses=1]
+ store float %179, float* %177, align 4
+ %180 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %181 = load float* %180, align 4 ; [#uses=1]
+ %182 = fadd float %181, %171 ; [#uses=1]
+ store float %182, float* %180, align 4
+ %183 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %184 = load float* %183, align 4 ; [#uses=1]
+ %185 = fmul float %184, %156 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %187 = load float* %186, align 4 ; [#uses=1]
+ %188 = fmul float %187, %156 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %190 = load float* %189, align 4 ; [#uses=1]
+ %191 = fmul float %190, %156 ; [#uses=1]
+ %192 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 3, i32 0, i32 2 ; [#uses=1]
+ %193 = load float* %192, align 4 ; [#uses=1]
+ %194 = fmul float %193, %185 ; [#uses=1]
+ %195 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 3, i32 0, i32 1 ; [#uses=1]
+ %196 = load float* %195, align 4 ; [#uses=1]
+ %197 = fmul float %196, %188 ; [#uses=1]
+ %198 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 3, i32 0, i32 0 ; [#uses=1]
+ %199 = load float* %198, align 4 ; [#uses=1]
+ %200 = fmul float %199, %191 ; [#uses=1]
+ %201 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 25, i32 0, i32 0 ; [#uses=2]
+ %202 = load float* %201, align 4 ; [#uses=1]
+ %203 = fadd float %202, %200 ; [#uses=1]
+ store float %203, float* %201, align 4
+ %204 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 25, i32 0, i32 1 ; [#uses=2]
+ %205 = load float* %204, align 4 ; [#uses=1]
+ %206 = fadd float %205, %197 ; [#uses=1]
+ store float %206, float* %204, align 4
+ %207 = getelementptr inbounds %struct.btRigidBody* %rb0, i32 0, i32 25, i32 0, i32 2 ; [#uses=2]
+ %208 = load float* %207, align 4 ; [#uses=1]
+ %209 = fadd float %208, %194 ; [#uses=1]
+ store float %209, float* %207, align 4
+ br label %bb10
+
+bb10: ; preds = %bb.i18, %bb9, %bb8
+ %210 = icmp eq %struct.btRigidBody* %rb1, null ; [#uses=1]
+ br i1 %210, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit, label %bb11
+
+bb11: ; preds = %bb10
+ %211 = load float* %157, align 4 ; [#uses=1]
+ %212 = fsub float -0.000000e+00, %211 ; [#uses=6]
+ %213 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 4 ; [#uses=1]
+ %214 = load float* %213, align 4 ; [#uses=4]
+ %215 = fcmp une float %214, 0.000000e+00 ; [#uses=1]
+ br i1 %215, label %bb.i, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit
+
+bb.i: ; preds = %bb11
+ %216 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 1, i32 0, i32 0 ; [#uses=1]
+ %217 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 1, i32 0, i32 1 ; [#uses=1]
+ %218 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 1, i32 0, i32 2 ; [#uses=1]
+ %219 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 4, i32 0, i32 0 ; [#uses=1]
+ %220 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 4, i32 0, i32 1 ; [#uses=1]
+ %221 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 4, i32 0, i32 2 ; [#uses=1]
+ %222 = load float* %216, align 4 ; [#uses=1]
+ %223 = load float* %217, align 4 ; [#uses=1]
+ %224 = load float* %218, align 4 ; [#uses=1]
+ %225 = load float* %219, align 4 ; [#uses=1]
+ %226 = load float* %220, align 4 ; [#uses=1]
+ %227 = load float* %221, align 4 ; [#uses=1]
+ %228 = fmul float %222, %214 ; [#uses=1]
+ %229 = fmul float %223, %214 ; [#uses=1]
+ %230 = fmul float %224, %214 ; [#uses=1]
+ %231 = fsub float -0.000000e+00, %225 ; [#uses=1]
+ %232 = fsub float -0.000000e+00, %226 ; [#uses=1]
+ %233 = fsub float -0.000000e+00, %227 ; [#uses=1]
+ %234 = fmul float %230, %212 ; [#uses=1]
+ %235 = fmul float %229, %212 ; [#uses=1]
+ %236 = fmul float %228, %212 ; [#uses=1]
+ %237 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 24, i32 0, i32 0 ; [#uses=2]
+ %238 = load float* %237, align 4 ; [#uses=1]
+ %239 = fadd float %238, %236 ; [#uses=1]
+ store float %239, float* %237, align 4
+ %240 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 24, i32 0, i32 1 ; [#uses=2]
+ %241 = load float* %240, align 4 ; [#uses=1]
+ %242 = fadd float %241, %235 ; [#uses=1]
+ store float %242, float* %240, align 4
+ %243 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 24, i32 0, i32 2 ; [#uses=2]
+ %244 = load float* %243, align 4 ; [#uses=1]
+ %245 = fadd float %244, %234 ; [#uses=1]
+ store float %245, float* %243, align 4
+ %246 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %247 = load float* %246, align 4 ; [#uses=1]
+ %248 = fmul float %247, %212 ; [#uses=1]
+ %249 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %250 = load float* %249, align 4 ; [#uses=1]
+ %251 = fmul float %250, %212 ; [#uses=1]
+ %252 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %253 = load float* %252, align 4 ; [#uses=1]
+ %254 = fmul float %253, %212 ; [#uses=1]
+ %255 = fmul float %248, %233 ; [#uses=1]
+ %256 = fmul float %251, %232 ; [#uses=1]
+ %257 = fmul float %254, %231 ; [#uses=1]
+ %258 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 25, i32 0, i32 0 ; [#uses=2]
+ %259 = load float* %258, align 4 ; [#uses=1]
+ %260 = fadd float %259, %257 ; [#uses=1]
+ store float %260, float* %258, align 4
+ %261 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 25, i32 0, i32 1 ; [#uses=2]
+ %262 = load float* %261, align 4 ; [#uses=1]
+ %263 = fadd float %262, %256 ; [#uses=1]
+ store float %263, float* %261, align 4
+ %264 = getelementptr inbounds %struct.btRigidBody* %rb1, i32 0, i32 25, i32 0, i32 2 ; [#uses=2]
+ %265 = load float* %264, align 4 ; [#uses=1]
+ %266 = fadd float %265, %255 ; [#uses=1]
+ store float %266, float* %264, align 4
+ ret void
+
+_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit: ; preds = %bb13, %bb11, %bb10, %bb6
+ ret void
+
+bb12: ; preds = %bb7
+ %267 = getelementptr inbounds %struct.btSolverConstraint* %149, i32 %148, i32 6 ; [#uses=1]
+ store float 0.000000e+00, float* %267, align 4
+ ret void
+
+bb13: ; preds = %entry
+ %268 = getelementptr inbounds %struct.btSolverConstraint* %7, i32 %5, i32 6 ; [#uses=1]
+ store float 0.000000e+00, float* %268, align 4
+ %269 = load i32* %0, align 4 ; [#uses=1]
+ %270 = and i32 %269, 16 ; [#uses=1]
+ %271 = icmp eq i32 %270, 0 ; [#uses=1]
+ br i1 %271, label %_ZN11btRigidBody20internalApplyImpulseERK9btVector3S2_f.exit, label %bb15
+
+bb15: ; preds = %bb13
+ %272 = load i32* %4, align 4 ; [#uses=1]
+ %273 = add nsw i32 %272, 1 ; [#uses=1]
+ %274 = load %struct.btSolverConstraint** %6, align 4 ; [#uses=1]
+ %275 = getelementptr inbounds %struct.btSolverConstraint* %274, i32 %273, i32 6 ; [#uses=1]
+ store float 0.000000e+00, float* %275, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN35btSequentialImpulseConstraintSolver45solveGroupCacheFriendlySplitImpulseIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btCollisionObject** nocapture %bodies, i32 %numBodies, %struct.btPersistentManifold** nocapture %manifoldPtr, i32 %numManifolds, %struct.btTypedConstraint** nocapture %constraints, i32 %numConstraints, %struct.btContactSolverInfo* nocapture %infoGlobal, %struct.btActionInterface* nocapture %debugDrawer, %struct.btStackAlloc* nocapture %stackAlloc) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 11 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %return, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 15 ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %5 = and i32 %4, 256 ; [#uses=1]
+ %6 = icmp eq i32 %5, 0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 5 ; [#uses=3]
+ %8 = load i32* %7, align 4 ; [#uses=1]
+ %9 = icmp sgt i32 %8, 0 ; [#uses=2]
+ br i1 %6, label %bb15.preheader, label %bb6.preheader
+
+bb15.preheader: ; preds = %bb
+ br i1 %9, label %bb.nph24, label %return
+
+bb6.preheader: ; preds = %bb
+ br i1 %9, label %bb.nph19, label %return
+
+bb.nph19: ; preds = %bb6.preheader
+ %10 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb5, %bb.nph19
+ %iteration.018 = phi i32 [ 0, %bb.nph19 ], [ %tmp, %bb5 ] ; [#uses=1]
+ %tmp = add i32 %iteration.018, 1 ; [#uses=2]
+ %13 = load i32* %10, align 4 ; [#uses=2]
+ %14 = icmp sgt i32 %13, 0 ; [#uses=1]
+ br i1 %14, label %bb3, label %bb5
+
+bb3: ; preds = %bb3, %bb2
+ %j.017 = phi i32 [ %23, %bb3 ], [ 0, %bb2 ] ; [#uses=2]
+ %15 = load i32** %11, align 4 ; [#uses=1]
+ %scevgep = getelementptr i32* %15, i32 %j.017 ; [#uses=1]
+ %16 = load i32* %scevgep, align 4 ; [#uses=3]
+ %17 = load %struct.btSolverConstraint** %12, align 4 ; [#uses=3]
+ %18 = getelementptr inbounds %struct.btSolverConstraint* %17, i32 %16 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btSolverConstraint* %17, i32 %16, i32 12, i32 0 ; [#uses=1]
+ %20 = load %struct.btRigidBody** %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btSolverConstraint* %17, i32 %16, i32 11, i32 0 ; [#uses=1]
+ %22 = load %struct.btRigidBody** %21, align 4 ; [#uses=1]
+ tail call void @_ZN35btSequentialImpulseConstraintSolver43resolveSplitPenetrationImpulseCacheFriendlyER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btRigidBody* %22, %struct.btRigidBody* %20, %struct.btSolverConstraint* %18) nounwind
+ %23 = add nsw i32 %j.017, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %23, %13 ; [#uses=1]
+ br i1 %exitcond, label %bb5, label %bb3
+
+bb5: ; preds = %bb3, %bb2
+ %24 = load i32* %7, align 4 ; [#uses=1]
+ %25 = icmp sgt i32 %24, %tmp ; [#uses=1]
+ br i1 %25, label %bb2, label %return
+
+bb.nph24: ; preds = %bb15.preheader
+ %26 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb14, %bb.nph24
+ %iteration.123 = phi i32 [ 0, %bb.nph24 ], [ %tmp27, %bb14 ] ; [#uses=1]
+ %tmp27 = add i32 %iteration.123, 1 ; [#uses=2]
+ %29 = load i32* %26, align 4 ; [#uses=2]
+ %30 = icmp sgt i32 %29, 0 ; [#uses=1]
+ br i1 %30, label %bb11, label %bb14
+
+bb11: ; preds = %bb11, %bb8
+ %j10.020 = phi i32 [ %39, %bb11 ], [ 0, %bb8 ] ; [#uses=2]
+ %31 = load i32** %27, align 4 ; [#uses=1]
+ %scevgep26 = getelementptr i32* %31, i32 %j10.020 ; [#uses=1]
+ %32 = load i32* %scevgep26, align 4 ; [#uses=3]
+ %33 = load %struct.btSolverConstraint** %28, align 4 ; [#uses=3]
+ %34 = getelementptr inbounds %struct.btSolverConstraint* %33, i32 %32 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btSolverConstraint* %33, i32 %32, i32 12, i32 0 ; [#uses=1]
+ %36 = load %struct.btRigidBody** %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btSolverConstraint* %33, i32 %32, i32 11, i32 0 ; [#uses=1]
+ %38 = load %struct.btRigidBody** %37, align 4 ; [#uses=1]
+ tail call void @_ZN35btSequentialImpulseConstraintSolver43resolveSplitPenetrationImpulseCacheFriendlyER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btRigidBody* %38, %struct.btRigidBody* %36, %struct.btSolverConstraint* %34) nounwind
+ %39 = add nsw i32 %j10.020, 1 ; [#uses=2]
+ %exitcond25 = icmp eq i32 %39, %29 ; [#uses=1]
+ br i1 %exitcond25, label %bb14, label %bb11
+
+bb14: ; preds = %bb11, %bb8
+ %40 = load i32* %7, align 4 ; [#uses=1]
+ %41 = icmp sgt i32 %40, %tmp27 ; [#uses=1]
+ br i1 %41, label %bb8, label %return
+
+return: ; preds = %bb14, %bb5, %bb6.preheader, %bb15.preheader, %entry
+ ret void
+}
+
+; [#uses=1]
+define float @_ZN35btSequentialImpulseConstraintSolver20solveSingleIterationEiPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(%struct.btSequentialImpulseConstraintSolver* %this, i32 %iteration, %struct.btCollisionObject** nocapture %unnamed_arg, i32 %unnamed_arg2, %struct.btPersistentManifold** nocapture %unnamed_arg4, i32 %unnamed_arg6, %struct.btTypedConstraint** nocapture %constraints, i32 %numConstraints, %struct.btContactSolverInfo* nocapture %infoGlobal, %struct.btActionInterface* nocapture %unnamed_arg8, %struct.btStackAlloc* nocapture %unnamed_arg10) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 1 ; [#uses=3]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 15 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=3]
+ %6 = and i32 %5, 1 ; [#uses=1]
+ %toBool = icmp eq i32 %6, 0 ; [#uses=1]
+ br i1 %toBool, label %bb19, label %bb
+
+bb: ; preds = %entry
+ %7 = and i32 %iteration, 7 ; [#uses=1]
+ %8 = icmp eq i32 %7, 0 ; [#uses=1]
+ br i1 %8, label %bb13.preheader, label %bb19
+
+bb13.preheader: ; preds = %bb
+ %9 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %9, label %bb.nph68, label %bb18.preheader
+
+bb.nph68: ; preds = %bb13.preheader
+ %10 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 3 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 7 ; [#uses=2]
+ br label %bb12
+
+bb12: ; preds = %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit, %bb.nph68
+ %j.067 = phi i32 [ 0, %bb.nph68 ], [ %tmp90, %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit ] ; [#uses=2]
+ %tmp90 = add i32 %j.067, 1 ; [#uses=8]
+ %12 = load i32** %10, align 4 ; [#uses=2]
+ %scevgep88 = getelementptr i32* %12, i32 %j.067 ; [#uses=2]
+ %13 = load i32* %scevgep88, align 4 ; [#uses=1]
+ %14 = load i32* %11, align 4 ; [#uses=1]
+ %15 = mul i32 %14, 1664525 ; [#uses=1]
+ %16 = add i32 %15, 1013904223 ; [#uses=4]
+ store i32 %16, i32* %11, align 4
+ %17 = icmp ult i32 %tmp90, 65537 ; [#uses=1]
+ br i1 %17, label %bb.i, label %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit
+
+bb.i: ; preds = %bb12
+ %18 = lshr i32 %16, 16 ; [#uses=1]
+ %19 = xor i32 %18, %16 ; [#uses=3]
+ %20 = icmp ult i32 %tmp90, 257 ; [#uses=1]
+ br i1 %20, label %bb1.i, label %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit
+
+bb1.i: ; preds = %bb.i
+ %21 = lshr i32 %19, 8 ; [#uses=1]
+ %22 = xor i32 %21, %19 ; [#uses=3]
+ %23 = icmp ult i32 %tmp90, 17 ; [#uses=1]
+ br i1 %23, label %bb2.i, label %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit
+
+bb2.i: ; preds = %bb1.i
+ %24 = lshr i32 %22, 4 ; [#uses=1]
+ %25 = xor i32 %24, %22 ; [#uses=3]
+ %26 = icmp ult i32 %tmp90, 5 ; [#uses=1]
+ br i1 %26, label %bb3.i, label %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit
+
+bb3.i: ; preds = %bb2.i
+ %27 = lshr i32 %25, 2 ; [#uses=1]
+ %28 = xor i32 %27, %25 ; [#uses=3]
+ %29 = icmp ult i32 %tmp90, 3 ; [#uses=1]
+ br i1 %29, label %bb4.i, label %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit
+
+bb4.i: ; preds = %bb3.i
+ %30 = lshr i32 %28, 1 ; [#uses=1]
+ %31 = xor i32 %30, %28 ; [#uses=1]
+ br label %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit
+
+_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit: ; preds = %bb4.i, %bb3.i, %bb2.i, %bb1.i, %bb.i, %bb12
+ %r.0.i = phi i32 [ %31, %bb4.i ], [ %28, %bb3.i ], [ %25, %bb2.i ], [ %22, %bb1.i ], [ %19, %bb.i ], [ %16, %bb12 ] ; [#uses=1]
+ %32 = urem i32 %r.0.i, %tmp90 ; [#uses=2]
+ %33 = getelementptr inbounds i32* %12, i32 %32 ; [#uses=1]
+ %34 = load i32* %33, align 4 ; [#uses=1]
+ store i32 %34, i32* %scevgep88, align 4
+ %35 = load i32** %10, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds i32* %35, i32 %32 ; [#uses=1]
+ store i32 %13, i32* %36, align 4
+ %exitcond87 = icmp eq i32 %tmp90, %1 ; [#uses=1]
+ br i1 %exitcond87, label %bb18.preheader, label %bb12
+
+bb18.preheader: ; preds = %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit, %bb13.preheader
+ %37 = icmp sgt i32 %3, 0 ; [#uses=1]
+ br i1 %37, label %bb.nph, label %bb19.loopexit
+
+bb.nph: ; preds = %bb18.preheader
+ %38 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 3 ; [#uses=2]
+ %39 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 7 ; [#uses=2]
+ br label %bb15
+
+bb15: ; preds = %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit65, %bb.nph
+ %j.166 = phi i32 [ 0, %bb.nph ], [ %tmp, %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit65 ] ; [#uses=2]
+ %tmp = add i32 %j.166, 1 ; [#uses=8]
+ %40 = load i32** %38, align 4 ; [#uses=2]
+ %scevgep = getelementptr i32* %40, i32 %j.166 ; [#uses=2]
+ %41 = load i32* %scevgep, align 4 ; [#uses=1]
+ %42 = load i32* %39, align 4 ; [#uses=1]
+ %43 = mul i32 %42, 1664525 ; [#uses=1]
+ %44 = add i32 %43, 1013904223 ; [#uses=4]
+ store i32 %44, i32* %39, align 4
+ %45 = icmp ult i32 %tmp, 65537 ; [#uses=1]
+ br i1 %45, label %bb.i59, label %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit65
+
+bb.i59: ; preds = %bb15
+ %46 = lshr i32 %44, 16 ; [#uses=1]
+ %47 = xor i32 %46, %44 ; [#uses=3]
+ %48 = icmp ult i32 %tmp, 257 ; [#uses=1]
+ br i1 %48, label %bb1.i60, label %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit65
+
+bb1.i60: ; preds = %bb.i59
+ %49 = lshr i32 %47, 8 ; [#uses=1]
+ %50 = xor i32 %49, %47 ; [#uses=3]
+ %51 = icmp ult i32 %tmp, 17 ; [#uses=1]
+ br i1 %51, label %bb2.i61, label %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit65
+
+bb2.i61: ; preds = %bb1.i60
+ %52 = lshr i32 %50, 4 ; [#uses=1]
+ %53 = xor i32 %52, %50 ; [#uses=3]
+ %54 = icmp ult i32 %tmp, 5 ; [#uses=1]
+ br i1 %54, label %bb3.i62, label %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit65
+
+bb3.i62: ; preds = %bb2.i61
+ %55 = lshr i32 %53, 2 ; [#uses=1]
+ %56 = xor i32 %55, %53 ; [#uses=3]
+ %57 = icmp ult i32 %tmp, 3 ; [#uses=1]
+ br i1 %57, label %bb4.i63, label %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit65
+
+bb4.i63: ; preds = %bb3.i62
+ %58 = lshr i32 %56, 1 ; [#uses=1]
+ %59 = xor i32 %58, %56 ; [#uses=1]
+ br label %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit65
+
+_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit65: ; preds = %bb4.i63, %bb3.i62, %bb2.i61, %bb1.i60, %bb.i59, %bb15
+ %r.0.i64 = phi i32 [ %59, %bb4.i63 ], [ %56, %bb3.i62 ], [ %53, %bb2.i61 ], [ %50, %bb1.i60 ], [ %47, %bb.i59 ], [ %44, %bb15 ] ; [#uses=1]
+ %60 = urem i32 %r.0.i64, %tmp ; [#uses=2]
+ %61 = getelementptr inbounds i32* %40, i32 %60 ; [#uses=1]
+ %62 = load i32* %61, align 4 ; [#uses=1]
+ store i32 %62, i32* %scevgep, align 4
+ %63 = load i32** %38, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds i32* %63, i32 %60 ; [#uses=1]
+ store i32 %41, i32* %64, align 4
+ %exitcond = icmp eq i32 %tmp, %3 ; [#uses=1]
+ br i1 %exitcond, label %bb19.loopexit, label %bb15
+
+bb19.loopexit: ; preds = %_ZN35btSequentialImpulseConstraintSolver10btRandInt2Ei.exit65, %bb18.preheader
+ %.pre = load i32* %4, align 4 ; [#uses=1]
+ br label %bb19
+
+bb19: ; preds = %bb19.loopexit, %bb, %entry
+ %65 = phi i32 [ %.pre, %bb19.loopexit ], [ %5, %entry ], [ %5, %bb ] ; [#uses=1]
+ %66 = and i32 %65, 256 ; [#uses=1]
+ %67 = icmp eq i32 %66, 0 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 1 ; [#uses=3]
+ %69 = load i32* %68, align 4 ; [#uses=1]
+ %70 = icmp sgt i32 %69, 0 ; [#uses=2]
+ br i1 %67, label %bb41.preheader, label %bb22.preheader
+
+bb41.preheader: ; preds = %bb19
+ br i1 %70, label %bb.nph85, label %bb45.preheader
+
+bb22.preheader: ; preds = %bb19
+ br i1 %70, label %bb.nph76, label %bb26.preheader
+
+bb.nph76: ; preds = %bb22.preheader
+ %71 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ br label %bb21
+
+bb21: ; preds = %bb21, %bb.nph76
+ %j.275 = phi i32 [ 0, %bb.nph76 ], [ %75, %bb21 ] ; [#uses=4]
+ %72 = load %struct.btSolverConstraint** %71, align 4 ; [#uses=3]
+ %scevgep98 = getelementptr %struct.btSolverConstraint* %72, i32 %j.275, i32 12, i32 0 ; [#uses=1]
+ %73 = load %struct.btRigidBody** %scevgep98, align 4 ; [#uses=1]
+ %scevgep99 = getelementptr %struct.btSolverConstraint* %72, i32 %j.275, i32 11, i32 0 ; [#uses=1]
+ %74 = load %struct.btRigidBody** %scevgep99, align 4 ; [#uses=1]
+ %scevgep97 = getelementptr %struct.btSolverConstraint* %72, i32 %j.275 ; [#uses=1]
+ tail call void @_ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btRigidBody* %74, %struct.btRigidBody* %73, %struct.btSolverConstraint* %scevgep97) nounwind
+ %75 = add nsw i32 %j.275, 1 ; [#uses=2]
+ %76 = load i32* %68, align 4 ; [#uses=1]
+ %77 = icmp sgt i32 %76, %75 ; [#uses=1]
+ br i1 %77, label %bb21, label %bb26.preheader
+
+bb26.preheader: ; preds = %bb21, %bb22.preheader
+ %78 = icmp sgt i32 %numConstraints, 0 ; [#uses=1]
+ br i1 %78, label %bb.nph74, label %bb27
+
+bb.nph74: ; preds = %bb26.preheader
+ %79 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb25
+
+bb25: ; preds = %bb25, %bb.nph74
+ %j.373 = phi i32 [ 0, %bb.nph74 ], [ %91, %bb25 ] ; [#uses=2]
+ %scevgep96 = getelementptr %struct.btTypedConstraint** %constraints, i32 %j.373 ; [#uses=1]
+ %80 = load %struct.btTypedConstraint** %scevgep96, align 4 ; [#uses=4]
+ %81 = getelementptr inbounds %struct.btTypedConstraint* %80, i32 0, i32 0 ; [#uses=1]
+ %82 = load i32 (...)*** %81, align 4 ; [#uses=1]
+ %83 = getelementptr inbounds i32 (...)** %82, i32 6 ; [#uses=1]
+ %84 = load i32 (...)** %83, align 4 ; [#uses=1]
+ %85 = load float* %79, align 4 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btTypedConstraint* %80, i32 0, i32 6 ; [#uses=1]
+ %87 = load %struct.btRigidBody** %86, align 4 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btTypedConstraint* %80, i32 0, i32 5 ; [#uses=1]
+ %89 = load %struct.btRigidBody** %88, align 4 ; [#uses=1]
+ %90 = bitcast i32 (...)* %84 to void (%struct.btTypedConstraint*, %struct.btRigidBody*, %struct.btRigidBody*, float)* ; [#uses=1]
+ tail call void %90(%struct.btTypedConstraint* %80, %struct.btRigidBody* %89, %struct.btRigidBody* %87, float %85)
+ %91 = add nsw i32 %j.373, 1 ; [#uses=2]
+ %exitcond95 = icmp eq i32 %91, %numConstraints ; [#uses=1]
+ br i1 %exitcond95, label %bb27, label %bb25
+
+bb27: ; preds = %bb25, %bb26.preheader
+ %92 = load i32* %0, align 4 ; [#uses=2]
+ %93 = icmp sgt i32 %92, 0 ; [#uses=1]
+ br i1 %93, label %bb.nph72, label %bb30
+
+bb.nph72: ; preds = %bb27
+ %94 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb28
+
+bb28: ; preds = %bb28, %bb.nph72
+ %j.471 = phi i32 [ 0, %bb.nph72 ], [ %104, %bb28 ] ; [#uses=2]
+ %96 = load i32** %94, align 4 ; [#uses=1]
+ %scevgep94 = getelementptr i32* %96, i32 %j.471 ; [#uses=1]
+ %97 = load i32* %scevgep94, align 4 ; [#uses=3]
+ %98 = load %struct.btSolverConstraint** %95, align 4 ; [#uses=3]
+ %99 = getelementptr inbounds %struct.btSolverConstraint* %98, i32 %97 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btSolverConstraint* %98, i32 %97, i32 12, i32 0 ; [#uses=1]
+ %101 = load %struct.btRigidBody** %100, align 4 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btSolverConstraint* %98, i32 %97, i32 11, i32 0 ; [#uses=1]
+ %103 = load %struct.btRigidBody** %102, align 4 ; [#uses=1]
+ tail call void @_ZN35btSequentialImpulseConstraintSolver36resolveSingleConstraintRowLowerLimitER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btRigidBody* %103, %struct.btRigidBody* %101, %struct.btSolverConstraint* %99) nounwind
+ %104 = add nsw i32 %j.471, 1 ; [#uses=2]
+ %exitcond93 = icmp eq i32 %104, %92 ; [#uses=1]
+ br i1 %exitcond93, label %bb30, label %bb28
+
+bb30: ; preds = %bb28, %bb27
+ %105 = load i32* %2, align 4 ; [#uses=2]
+ %106 = icmp sgt i32 %105, 0 ; [#uses=1]
+ br i1 %106, label %bb.nph70, label %bb57
+
+bb.nph70: ; preds = %bb30
+ %107 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb31
+
+bb31: ; preds = %bb34, %bb.nph70
+ %j.569 = phi i32 [ 0, %bb.nph70 ], [ %130, %bb34 ] ; [#uses=2]
+ %110 = load i32** %107, align 4 ; [#uses=1]
+ %scevgep92 = getelementptr i32* %110, i32 %j.569 ; [#uses=1]
+ %111 = load i32* %scevgep92, align 4 ; [#uses=7]
+ %112 = load %struct.btSolverConstraint** %108, align 4 ; [#uses=7]
+ %113 = getelementptr inbounds %struct.btSolverConstraint* %112, i32 %111, i32 10, i32 0 ; [#uses=1]
+ %114 = load i32* %113, align 4 ; [#uses=1]
+ %115 = load %struct.btSolverConstraint** %109, align 4 ; [#uses=1]
+ %116 = getelementptr inbounds %struct.btSolverConstraint* %115, i32 %114, i32 6 ; [#uses=1]
+ %117 = load float* %116, align 4 ; [#uses=2]
+ %118 = fcmp ogt float %117, 0.000000e+00 ; [#uses=1]
+ br i1 %118, label %bb33, label %bb34
+
+bb33: ; preds = %bb31
+ %119 = getelementptr inbounds %struct.btSolverConstraint* %112, i32 %111 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btSolverConstraint* %112, i32 %111, i32 7 ; [#uses=1]
+ %121 = load float* %120, align 4 ; [#uses=1]
+ %122 = fmul float %121, %117 ; [#uses=2]
+ %123 = fsub float -0.000000e+00, %122 ; [#uses=1]
+ %124 = getelementptr inbounds %struct.btSolverConstraint* %112, i32 %111, i32 16 ; [#uses=1]
+ store float %123, float* %124, align 4
+ %125 = getelementptr inbounds %struct.btSolverConstraint* %112, i32 %111, i32 17 ; [#uses=1]
+ store float %122, float* %125, align 4
+ %126 = getelementptr inbounds %struct.btSolverConstraint* %112, i32 %111, i32 12, i32 0 ; [#uses=1]
+ %127 = load %struct.btRigidBody** %126, align 4 ; [#uses=1]
+ %128 = getelementptr inbounds %struct.btSolverConstraint* %112, i32 %111, i32 11, i32 0 ; [#uses=1]
+ %129 = load %struct.btRigidBody** %128, align 4 ; [#uses=1]
+ tail call void @_ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btRigidBody* %129, %struct.btRigidBody* %127, %struct.btSolverConstraint* %119) nounwind
+ br label %bb34
+
+bb34: ; preds = %bb33, %bb31
+ %130 = add nsw i32 %j.569, 1 ; [#uses=2]
+ %exitcond91 = icmp eq i32 %130, %105 ; [#uses=1]
+ br i1 %exitcond91, label %bb57, label %bb31
+
+bb.nph85: ; preds = %bb41.preheader
+ %131 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ br label %bb39
+
+bb39: ; preds = %bb39, %bb.nph85
+ %j.684 = phi i32 [ 0, %bb.nph85 ], [ %135, %bb39 ] ; [#uses=4]
+ %132 = load %struct.btSolverConstraint** %131, align 4 ; [#uses=3]
+ %scevgep108 = getelementptr %struct.btSolverConstraint* %132, i32 %j.684, i32 12, i32 0 ; [#uses=1]
+ %133 = load %struct.btRigidBody** %scevgep108, align 4 ; [#uses=1]
+ %scevgep109 = getelementptr %struct.btSolverConstraint* %132, i32 %j.684, i32 11, i32 0 ; [#uses=1]
+ %134 = load %struct.btRigidBody** %scevgep109, align 4 ; [#uses=1]
+ %scevgep107 = getelementptr %struct.btSolverConstraint* %132, i32 %j.684 ; [#uses=1]
+ tail call void @_ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btRigidBody* %134, %struct.btRigidBody* %133, %struct.btSolverConstraint* %scevgep107) nounwind
+ %135 = add nsw i32 %j.684, 1 ; [#uses=2]
+ %136 = load i32* %68, align 4 ; [#uses=1]
+ %137 = icmp sgt i32 %136, %135 ; [#uses=1]
+ br i1 %137, label %bb39, label %bb45.preheader
+
+bb45.preheader: ; preds = %bb39, %bb41.preheader
+ %138 = icmp sgt i32 %numConstraints, 0 ; [#uses=1]
+ br i1 %138, label %bb.nph83, label %bb46
+
+bb.nph83: ; preds = %bb45.preheader
+ %139 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb44
+
+bb44: ; preds = %bb44, %bb.nph83
+ %j.782 = phi i32 [ 0, %bb.nph83 ], [ %151, %bb44 ] ; [#uses=2]
+ %scevgep106 = getelementptr %struct.btTypedConstraint** %constraints, i32 %j.782 ; [#uses=1]
+ %140 = load %struct.btTypedConstraint** %scevgep106, align 4 ; [#uses=4]
+ %141 = getelementptr inbounds %struct.btTypedConstraint* %140, i32 0, i32 0 ; [#uses=1]
+ %142 = load i32 (...)*** %141, align 4 ; [#uses=1]
+ %143 = getelementptr inbounds i32 (...)** %142, i32 6 ; [#uses=1]
+ %144 = load i32 (...)** %143, align 4 ; [#uses=1]
+ %145 = load float* %139, align 4 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btTypedConstraint* %140, i32 0, i32 6 ; [#uses=1]
+ %147 = load %struct.btRigidBody** %146, align 4 ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btTypedConstraint* %140, i32 0, i32 5 ; [#uses=1]
+ %149 = load %struct.btRigidBody** %148, align 4 ; [#uses=1]
+ %150 = bitcast i32 (...)* %144 to void (%struct.btTypedConstraint*, %struct.btRigidBody*, %struct.btRigidBody*, float)* ; [#uses=1]
+ tail call void %150(%struct.btTypedConstraint* %140, %struct.btRigidBody* %149, %struct.btRigidBody* %147, float %145)
+ %151 = add nsw i32 %j.782, 1 ; [#uses=2]
+ %exitcond105 = icmp eq i32 %151, %numConstraints ; [#uses=1]
+ br i1 %exitcond105, label %bb46, label %bb44
+
+bb46: ; preds = %bb44, %bb45.preheader
+ %152 = load i32* %0, align 4 ; [#uses=2]
+ %153 = icmp sgt i32 %152, 0 ; [#uses=1]
+ br i1 %153, label %bb.nph81, label %bb50
+
+bb.nph81: ; preds = %bb46
+ %154 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %155 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb47
+
+bb47: ; preds = %bb47, %bb.nph81
+ %j.880 = phi i32 [ 0, %bb.nph81 ], [ %164, %bb47 ] ; [#uses=2]
+ %156 = load i32** %154, align 4 ; [#uses=1]
+ %scevgep104 = getelementptr i32* %156, i32 %j.880 ; [#uses=1]
+ %157 = load i32* %scevgep104, align 4 ; [#uses=3]
+ %158 = load %struct.btSolverConstraint** %155, align 4 ; [#uses=3]
+ %159 = getelementptr inbounds %struct.btSolverConstraint* %158, i32 %157 ; [#uses=1]
+ %160 = getelementptr inbounds %struct.btSolverConstraint* %158, i32 %157, i32 12, i32 0 ; [#uses=1]
+ %161 = load %struct.btRigidBody** %160, align 4 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btSolverConstraint* %158, i32 %157, i32 11, i32 0 ; [#uses=1]
+ %163 = load %struct.btRigidBody** %162, align 4 ; [#uses=1]
+ tail call void @_ZN35btSequentialImpulseConstraintSolver36resolveSingleConstraintRowLowerLimitER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btRigidBody* %163, %struct.btRigidBody* %161, %struct.btSolverConstraint* %159) nounwind
+ %164 = add nsw i32 %j.880, 1 ; [#uses=2]
+ %exitcond103 = icmp eq i32 %164, %152 ; [#uses=1]
+ br i1 %exitcond103, label %bb50, label %bb47
+
+bb50: ; preds = %bb47, %bb46
+ %165 = load i32* %2, align 4 ; [#uses=2]
+ %166 = icmp sgt i32 %165, 0 ; [#uses=1]
+ br i1 %166, label %bb.nph79, label %bb57
+
+bb.nph79: ; preds = %bb50
+ %167 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %169 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb51
+
+bb51: ; preds = %bb55, %bb.nph79
+ %j.978 = phi i32 [ 0, %bb.nph79 ], [ %190, %bb55 ] ; [#uses=2]
+ %170 = load i32** %167, align 4 ; [#uses=1]
+ %scevgep102 = getelementptr i32* %170, i32 %j.978 ; [#uses=1]
+ %171 = load i32* %scevgep102, align 4 ; [#uses=7]
+ %172 = load %struct.btSolverConstraint** %168, align 4 ; [#uses=7]
+ %173 = getelementptr inbounds %struct.btSolverConstraint* %172, i32 %171, i32 10, i32 0 ; [#uses=1]
+ %174 = load i32* %173, align 4 ; [#uses=1]
+ %175 = load %struct.btSolverConstraint** %169, align 4 ; [#uses=1]
+ %176 = getelementptr inbounds %struct.btSolverConstraint* %175, i32 %174, i32 6 ; [#uses=1]
+ %177 = load float* %176, align 4 ; [#uses=2]
+ %178 = fcmp ogt float %177, 0.000000e+00 ; [#uses=1]
+ br i1 %178, label %bb54, label %bb55
+
+bb54: ; preds = %bb51
+ %179 = getelementptr inbounds %struct.btSolverConstraint* %172, i32 %171 ; [#uses=1]
+ %180 = getelementptr inbounds %struct.btSolverConstraint* %172, i32 %171, i32 7 ; [#uses=1]
+ %181 = load float* %180, align 4 ; [#uses=1]
+ %182 = fmul float %181, %177 ; [#uses=2]
+ %183 = fsub float -0.000000e+00, %182 ; [#uses=1]
+ %184 = getelementptr inbounds %struct.btSolverConstraint* %172, i32 %171, i32 16 ; [#uses=1]
+ store float %183, float* %184, align 4
+ %185 = getelementptr inbounds %struct.btSolverConstraint* %172, i32 %171, i32 17 ; [#uses=1]
+ store float %182, float* %185, align 4
+ %186 = getelementptr inbounds %struct.btSolverConstraint* %172, i32 %171, i32 12, i32 0 ; [#uses=1]
+ %187 = load %struct.btRigidBody** %186, align 4 ; [#uses=1]
+ %188 = getelementptr inbounds %struct.btSolverConstraint* %172, i32 %171, i32 11, i32 0 ; [#uses=1]
+ %189 = load %struct.btRigidBody** %188, align 4 ; [#uses=1]
+ tail call void @_ZN35btSequentialImpulseConstraintSolver33resolveSingleConstraintRowGenericER11btRigidBodyS1_RK18btSolverConstraint(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btRigidBody* %189, %struct.btRigidBody* %187, %struct.btSolverConstraint* %179) nounwind
+ br label %bb55
+
+bb55: ; preds = %bb54, %bb51
+ %190 = add nsw i32 %j.978, 1 ; [#uses=2]
+ %exitcond101 = icmp eq i32 %190, %165 ; [#uses=1]
+ br i1 %exitcond101, label %bb57, label %bb51
+
+bb57: ; preds = %bb55, %bb50, %bb34, %bb30
+ ret float 0.000000e+00
+}
+
+; [#uses=4]
+define %struct.btRigidBody* @_ZN35btSequentialImpulseConstraintSolver12getFixedBodyEv() align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = load i8* bitcast (i64* @_ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed to i8*), align 8 ; [#uses=1]
+ %3 = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb, label %bb9
+
+bb: ; preds = %entry
+ %4 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed) nounwind ; [#uses=1]
+ %5 = icmp eq i32 %4, 0 ; [#uses=1]
+ br i1 %5, label %bb9, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 8
+ %7 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 8
+ %9 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ invoke void @_ZN11btRigidBodyC1EfP13btMotionStateP16btCollisionShapeRK9btVector3(%struct.btRigidBody* @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, float 0.000000e+00, %struct.btActionInterface* null, %struct.btCollisionShape* null, %struct.btQuadWord* %1)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb1
+ call void @__cxa_guard_release(i64* @_ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed) nounwind
+ %10 = call i32 @__cxa_atexit(void (i8*)* @__tcf_026, i8* null, i8* bitcast (i8** @__dso_handle to i8*)) nounwind ; [#uses=0]
+ br label %bb9
+
+bb9: ; preds = %invcont, %bb, %entry
+ %11 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 8
+ %12 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 8
+ %14 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ call void @_ZN11btRigidBody12setMassPropsEfRK9btVector3(%struct.btRigidBody* @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, float 0.000000e+00, %struct.btQuadWord* %0)
+ ret %struct.btRigidBody* @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed
+
+lpad: ; preds = %bb1
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select12 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ call void @__cxa_guard_abort(i64* @_ZGVZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed) nounwind
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define internal void @__tcf_026(i8* nocapture %unnamed_arg) {
+entry:
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV11btRigidBody, i32 0, i32 2), i32 (...)*** getelementptr inbounds (%struct.btRigidBody* @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, i32 0, i32 0, i32 0), align 32
+ %0 = load %struct.btTypedConstraint*** getelementptr inbounds (%struct.btRigidBody* @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 3), align 4 ; [#uses=2]
+ %1 = icmp eq %struct.btTypedConstraint** %0, null ; [#uses=1]
+ br i1 %1, label %_ZN11btRigidBodyD1Ev.exit, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %entry
+ %2 = load i8* getelementptr inbounds (%struct.btRigidBody* @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 4), align 4 ; [#uses=1]
+ %toBool.i.i.i.i = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i, label %bb2.i.i.i.i, label %bb1.i.i.i.i
+
+bb1.i.i.i.i: ; preds = %bb.i.i.i.i
+ %3 = bitcast %struct.btTypedConstraint** %0 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %3)
+ to label %bb2.i.i.i.i unwind label %lpad.i
+
+bb2.i.i.i.i: ; preds = %bb1.i.i.i.i, %bb.i.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** getelementptr inbounds (%struct.btRigidBody* @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 3), align 4
+ br label %_ZN11btRigidBodyD1Ev.exit
+
+invcont1.i: ; preds = %lpad.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ unreachable
+
+lpad.i: ; preds = %bb1.i.i.i.i
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* getelementptr inbounds (%struct.btRigidBody* @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, i32 0, i32 0))
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN11btRigidBodyD1Ev.exit: ; preds = %bb2.i.i.i.i, %entry
+ store i8 1, i8* getelementptr inbounds (%struct.btRigidBody* @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 4), align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** getelementptr inbounds (%struct.btRigidBody* @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 3), align 4
+ store i32 0, i32* getelementptr inbounds (%struct.btRigidBody* @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 1), align 4
+ store i32 0, i32* getelementptr inbounds (%struct.btRigidBody* @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 2), align 4
+ tail call void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* getelementptr inbounds (%struct.btRigidBody* @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, i32 0, i32 0))
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN35btSequentialImpulseConstraintSolver23setupFrictionConstraintER18btSolverConstraintRK9btVector3P11btRigidBodyS6_R15btManifoldPointS4_S4_P17btCollisionObjectSA_fff(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btSolverConstraint* %solverConstraint, %struct.btQuadWord* nocapture %normalAxis, %struct.btRigidBody* nocapture %solverBodyA, %struct.btRigidBody* nocapture %solverBodyB, %struct.btManifoldPoint* nocapture %cp, %struct.btQuadWord* nocapture %rel_pos1, %struct.btQuadWord* nocapture %rel_pos2, %struct.btCollisionObject* %colObj0, %struct.btCollisionObject* %colObj1, float %relaxation, float %desiredVelocity, float %cfmSlip) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %colObj0, i32 0, i32 19 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %1, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ br i1 %toBool.i, label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit, label %bb.i
+
+bb.i: ; preds = %entry
+ %2 = bitcast %struct.btCollisionObject* %colObj0 to %struct.btRigidBody* ; [#uses=1]
+ br label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+
+_ZN11btRigidBody6upcastEP17btCollisionObject.exit: ; preds = %bb.i, %entry
+ %3 = phi %struct.btRigidBody* [ %2, %bb.i ], [ null, %entry ] ; [#uses=21]
+ %4 = getelementptr inbounds %struct.btCollisionObject* %colObj1, i32 0, i32 19 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %.lobit.i38 = and i32 %5, 2 ; [#uses=1]
+ %toBool.i39 = icmp eq i32 %.lobit.i38, 0 ; [#uses=1]
+ br i1 %toBool.i39, label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit42, label %bb.i40
+
+bb.i40: ; preds = %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+ %6 = bitcast %struct.btCollisionObject* %colObj1 to %struct.btRigidBody* ; [#uses=1]
+ br label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit42
+
+_ZN11btRigidBody6upcastEP17btCollisionObject.exit42: ; preds = %bb.i40, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+ %7 = phi %struct.btRigidBody* [ %6, %bb.i40 ], [ null, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit ] ; [#uses=21]
+ %8 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuadWord* %normalAxis, i32 0, i32 0, i32 0 ; [#uses=3]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btQuadWord* %normalAxis, i32 0, i32 0, i32 1 ; [#uses=3]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btQuadWord* %normalAxis, i32 0, i32 0, i32 2 ; [#uses=3]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %normalAxis, i32 0, i32 0, i32 3 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = icmp eq %struct.btRigidBody* %3, null ; [#uses=4]
+ br i1 %20, label %bb, label %bb2
+
+bb: ; preds = %_ZN11btRigidBody6upcastEP17btCollisionObject.exit42
+ %21 = tail call %struct.btRigidBody* @_ZN35btSequentialImpulseConstraintSolver12getFixedBodyEv() ; [#uses=0]
+ br label %bb2
+
+bb2: ; preds = %bb, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit42
+ %iftmp.180.0 = phi %struct.btRigidBody* [ @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, %bb ], [ %3, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit42 ] ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 11, i32 0 ; [#uses=1]
+ store %struct.btRigidBody* %iftmp.180.0, %struct.btRigidBody** %22, align 4
+ %23 = icmp eq %struct.btRigidBody* %7, null ; [#uses=4]
+ br i1 %23, label %bb3, label %bb5
+
+bb3: ; preds = %bb2
+ %24 = tail call %struct.btRigidBody* @_ZN35btSequentialImpulseConstraintSolver12getFixedBodyEv() ; [#uses=0]
+ br label %bb5
+
+bb5: ; preds = %bb3, %bb2
+ %iftmp.181.0 = phi %struct.btRigidBody* [ @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, %bb3 ], [ %7, %bb2 ] ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 12, i32 0 ; [#uses=1]
+ store %struct.btRigidBody* %iftmp.181.0, %struct.btRigidBody** %25, align 4
+ %26 = getelementptr inbounds %struct.btManifoldPoint* %cp, i32 0, i32 6 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 7 ; [#uses=1]
+ store float %27, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 13, i32 0 ; [#uses=1]
+ store i8* null, i8** %29, align 4
+ %30 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 6 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btQuadWord* %rel_pos1, i32 0, i32 0, i32 0 ; [#uses=2]
+ %33 = load float* %32, align 4 ; [#uses=2]
+ %34 = load float* %11, align 4 ; [#uses=6]
+ %35 = fmul float %33, %34 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuadWord* %rel_pos1, i32 0, i32 0, i32 1 ; [#uses=2]
+ %37 = load float* %36, align 4 ; [#uses=2]
+ %38 = load float* %8, align 4 ; [#uses=6]
+ %39 = fmul float %37, %38 ; [#uses=1]
+ %40 = fsub float %35, %39 ; [#uses=5]
+ %41 = getelementptr inbounds %struct.btQuadWord* %rel_pos1, i32 0, i32 0, i32 2 ; [#uses=2]
+ %42 = load float* %41, align 4 ; [#uses=2]
+ %43 = fmul float %42, %38 ; [#uses=1]
+ %44 = load float* %14, align 4 ; [#uses=6]
+ %45 = fmul float %33, %44 ; [#uses=1]
+ %46 = fsub float %43, %45 ; [#uses=5]
+ %47 = fmul float %37, %44 ; [#uses=1]
+ %48 = fmul float %42, %34 ; [#uses=1]
+ %49 = fsub float %47, %48 ; [#uses=5]
+ %50 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %49, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %46, float* %51, align 4
+ %52 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %40, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %53, align 4
+ br i1 %20, label %bb7, label %bb6
+
+bb6: ; preds = %bb5
+ %54 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fmul float %55, %49 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = fmul float %58, %46 ; [#uses=1]
+ %60 = fadd float %56, %59 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ %63 = fmul float %62, %40 ; [#uses=1]
+ %64 = fadd float %60, %63 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ %67 = fmul float %66, %49 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = fmul float %69, %46 ; [#uses=1]
+ %71 = fadd float %67, %70 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ %74 = fmul float %73, %40 ; [#uses=1]
+ %75 = fadd float %71, %74 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ %78 = fmul float %77, %49 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fmul float %80, %46 ; [#uses=1]
+ %82 = fadd float %78, %81 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ %85 = fmul float %84, %40 ; [#uses=1]
+ %86 = fadd float %82, %85 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = fmul float %64, %88 ; [#uses=2]
+ %90 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = fmul float %75, %91 ; [#uses=2]
+ %93 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = fmul float %86, %94 ; [#uses=2]
+ %96 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %95, float* %96, align 4
+ %97 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %92, float* %97, align 4
+ %98 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %89, float* %98, align 4
+ %99 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %99, align 4
+ br label %bb8
+
+bb7: ; preds = %bb5
+ %100 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %100, align 4
+ %101 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %101, align 4
+ %102 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %102, align 4
+ %103 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %103, align 4
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb6
+ %104 = phi float [ 0.000000e+00, %bb7 ], [ %89, %bb6 ] ; [#uses=2]
+ %105 = phi float [ 0.000000e+00, %bb7 ], [ %92, %bb6 ] ; [#uses=2]
+ %106 = phi float [ 0.000000e+00, %bb7 ], [ %95, %bb6 ] ; [#uses=2]
+ %107 = fsub float -0.000000e+00, %44 ; [#uses=2]
+ %108 = fsub float -0.000000e+00, %34 ; [#uses=2]
+ %109 = fsub float -0.000000e+00, %38 ; [#uses=2]
+ %110 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 0 ; [#uses=2]
+ %111 = load float* %110, align 4 ; [#uses=2]
+ %112 = fmul float %111, %108 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 1 ; [#uses=2]
+ %114 = load float* %113, align 4 ; [#uses=2]
+ %115 = fmul float %114, %109 ; [#uses=1]
+ %116 = fsub float %112, %115 ; [#uses=6]
+ %117 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 2 ; [#uses=2]
+ %118 = load float* %117, align 4 ; [#uses=2]
+ %119 = fmul float %118, %109 ; [#uses=1]
+ %120 = fmul float %111, %107 ; [#uses=1]
+ %121 = fsub float %119, %120 ; [#uses=6]
+ %122 = fmul float %114, %107 ; [#uses=1]
+ %123 = fmul float %118, %108 ; [#uses=1]
+ %124 = fsub float %122, %123 ; [#uses=6]
+ %125 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %124, float* %125, align 4
+ %126 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %121, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %116, float* %127, align 4
+ %128 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %128, align 4
+ br i1 %23, label %bb13, label %bb11
+
+bb11: ; preds = %bb8
+ %129 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=1]
+ %131 = fmul float %130, %124 ; [#uses=1]
+ %132 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %133 = load float* %132, align 4 ; [#uses=1]
+ %134 = fmul float %133, %121 ; [#uses=1]
+ %135 = fadd float %131, %134 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %137 = load float* %136, align 4 ; [#uses=1]
+ %138 = fmul float %137, %116 ; [#uses=1]
+ %139 = fadd float %135, %138 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ %142 = fmul float %141, %124 ; [#uses=1]
+ %143 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %144 = load float* %143, align 4 ; [#uses=1]
+ %145 = fmul float %144, %121 ; [#uses=1]
+ %146 = fadd float %142, %145 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %148 = load float* %147, align 4 ; [#uses=1]
+ %149 = fmul float %148, %116 ; [#uses=1]
+ %150 = fadd float %146, %149 ; [#uses=1]
+ %151 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %152 = load float* %151, align 4 ; [#uses=1]
+ %153 = fmul float %152, %124 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %155 = load float* %154, align 4 ; [#uses=1]
+ %156 = fmul float %155, %121 ; [#uses=1]
+ %157 = fadd float %153, %156 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %159 = load float* %158, align 4 ; [#uses=1]
+ %160 = fmul float %159, %116 ; [#uses=1]
+ %161 = fadd float %157, %160 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %163 = load float* %162, align 4 ; [#uses=1]
+ %164 = fmul float %139, %163 ; [#uses=2]
+ %165 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %166 = load float* %165, align 4 ; [#uses=1]
+ %167 = fmul float %150, %166 ; [#uses=2]
+ %168 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=1]
+ %170 = fmul float %161, %169 ; [#uses=2]
+ %171 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %170, float* %171, align 4
+ %172 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %167, float* %172, align 4
+ %173 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %164, float* %173, align 4
+ %174 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %174, align 4
+ br label %bb14
+
+bb13: ; preds = %bb8
+ %175 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %175, align 4
+ %176 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %176, align 4
+ %177 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %177, align 4
+ %178 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %178, align 4
+ br label %bb14
+
+bb14: ; preds = %bb13, %bb11
+ %179 = phi float [ 0.000000e+00, %bb13 ], [ %170, %bb11 ] ; [#uses=1]
+ %180 = phi float [ 0.000000e+00, %bb13 ], [ %167, %bb11 ] ; [#uses=1]
+ %181 = phi float [ 0.000000e+00, %bb13 ], [ %164, %bb11 ] ; [#uses=1]
+ br i1 %20, label %bb17, label %bb15
+
+bb15: ; preds = %bb14
+ %182 = load float* %36, align 4 ; [#uses=2]
+ %183 = fmul float %106, %182 ; [#uses=1]
+ %184 = load float* %32, align 4 ; [#uses=2]
+ %185 = fmul float %105, %184 ; [#uses=1]
+ %186 = fsub float %183, %185 ; [#uses=1]
+ %187 = fmul float %104, %184 ; [#uses=1]
+ %188 = load float* %41, align 4 ; [#uses=2]
+ %189 = fmul float %106, %188 ; [#uses=1]
+ %190 = fsub float %187, %189 ; [#uses=1]
+ %191 = fmul float %105, %188 ; [#uses=1]
+ %192 = fmul float %104, %182 ; [#uses=1]
+ %193 = fsub float %191, %192 ; [#uses=1]
+ %194 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 4 ; [#uses=1]
+ %195 = load float* %194, align 4 ; [#uses=1]
+ %196 = load float* %9, align 4 ; [#uses=1]
+ %197 = fmul float %196, %193 ; [#uses=1]
+ %198 = load float* %12, align 4 ; [#uses=1]
+ %199 = fmul float %198, %190 ; [#uses=1]
+ %200 = fadd float %197, %199 ; [#uses=1]
+ %201 = load float* %15, align 4 ; [#uses=1]
+ %202 = fmul float %201, %186 ; [#uses=1]
+ %203 = fadd float %200, %202 ; [#uses=1]
+ %204 = fadd float %195, %203 ; [#uses=1]
+ br label %bb17
+
+bb17: ; preds = %bb15, %bb14
+ %denom0.0 = phi float [ %204, %bb15 ], [ 0.000000e+00, %bb14 ] ; [#uses=1]
+ br i1 %23, label %bb20, label %bb18
+
+bb18: ; preds = %bb17
+ %205 = fsub float -0.000000e+00, %181 ; [#uses=2]
+ %206 = fsub float -0.000000e+00, %180 ; [#uses=2]
+ %207 = fsub float -0.000000e+00, %179 ; [#uses=2]
+ %208 = load float* %113, align 4 ; [#uses=2]
+ %209 = fmul float %208, %207 ; [#uses=1]
+ %210 = load float* %110, align 4 ; [#uses=2]
+ %211 = fmul float %210, %206 ; [#uses=1]
+ %212 = fsub float %209, %211 ; [#uses=1]
+ %213 = fmul float %210, %205 ; [#uses=1]
+ %214 = load float* %117, align 4 ; [#uses=2]
+ %215 = fmul float %214, %207 ; [#uses=1]
+ %216 = fsub float %213, %215 ; [#uses=1]
+ %217 = fmul float %214, %206 ; [#uses=1]
+ %218 = fmul float %208, %205 ; [#uses=1]
+ %219 = fsub float %217, %218 ; [#uses=1]
+ %220 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 4 ; [#uses=1]
+ %221 = load float* %220, align 4 ; [#uses=1]
+ %222 = load float* %9, align 4 ; [#uses=1]
+ %223 = fmul float %222, %219 ; [#uses=1]
+ %224 = load float* %12, align 4 ; [#uses=1]
+ %225 = fmul float %224, %216 ; [#uses=1]
+ %226 = fadd float %223, %225 ; [#uses=1]
+ %227 = load float* %15, align 4 ; [#uses=1]
+ %228 = fmul float %227, %212 ; [#uses=1]
+ %229 = fadd float %226, %228 ; [#uses=1]
+ %230 = fadd float %221, %229 ; [#uses=1]
+ br label %bb20
+
+bb20: ; preds = %bb18, %bb17
+ %denom1.0 = phi float [ %230, %bb18 ], [ 0.000000e+00, %bb17 ] ; [#uses=1]
+ %231 = fadd float %denom0.0, %denom1.0 ; [#uses=1]
+ %232 = fdiv float %relaxation, %231 ; [#uses=2]
+ %233 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 8 ; [#uses=1]
+ store float %232, float* %233, align 4
+ br i1 %20, label %bb28.thread, label %bb29
+
+bb28.thread: ; preds = %bb20
+ %234 = fmul float %38, 0.000000e+00 ; [#uses=1]
+ %235 = fmul float %34, 0.000000e+00 ; [#uses=1]
+ %236 = fadd float %234, %235 ; [#uses=1]
+ %237 = fmul float %44, 0.000000e+00 ; [#uses=1]
+ %238 = fadd float %236, %237 ; [#uses=1]
+ br label %bb31
+
+bb29: ; preds = %bb20
+ %239 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %240 = load float* %239, align 4 ; [#uses=1]
+ %241 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %242 = load float* %241, align 4 ; [#uses=1]
+ %243 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %244 = load float* %243, align 4 ; [#uses=1]
+ %245 = fmul float %38, %240 ; [#uses=1]
+ %246 = fmul float %34, %242 ; [#uses=1]
+ %247 = fadd float %245, %246 ; [#uses=1]
+ %248 = fmul float %44, %244 ; [#uses=1]
+ %249 = fadd float %247, %248 ; [#uses=1]
+ %250 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %251 = load float* %250, align 4 ; [#uses=1]
+ %252 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %253 = load float* %252, align 4 ; [#uses=1]
+ %254 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %255 = load float* %254, align 4 ; [#uses=1]
+ br label %bb31
+
+bb31: ; preds = %bb29, %bb28.thread
+ %256 = phi float [ %249, %bb29 ], [ %238, %bb28.thread ] ; [#uses=1]
+ %.0.2105.0 = phi float [ %255, %bb29 ], [ 0.000000e+00, %bb28.thread ] ; [#uses=1]
+ %.0.1104.0 = phi float [ %253, %bb29 ], [ 0.000000e+00, %bb28.thread ] ; [#uses=1]
+ %.0.0103.0 = phi float [ %251, %bb29 ], [ 0.000000e+00, %bb28.thread ] ; [#uses=1]
+ %257 = fmul float %49, %.0.0103.0 ; [#uses=1]
+ %258 = fmul float %46, %.0.1104.0 ; [#uses=1]
+ %259 = fadd float %257, %258 ; [#uses=1]
+ %260 = fmul float %40, %.0.2105.0 ; [#uses=1]
+ %261 = fadd float %259, %260 ; [#uses=1]
+ %262 = fadd float %256, %261 ; [#uses=1]
+ br i1 %23, label %bb34.thread, label %bb35
+
+bb34.thread: ; preds = %bb31
+ %263 = fmul float %124, 0.000000e+00 ; [#uses=1]
+ %264 = fmul float %121, 0.000000e+00 ; [#uses=1]
+ %265 = fadd float %263, %264 ; [#uses=1]
+ %266 = fmul float %116, 0.000000e+00 ; [#uses=1]
+ %267 = fadd float %265, %266 ; [#uses=1]
+ br label %bb37
+
+bb35: ; preds = %bb31
+ %268 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %269 = load float* %268, align 4 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %271 = load float* %270, align 4 ; [#uses=1]
+ %272 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %273 = load float* %272, align 4 ; [#uses=1]
+ %274 = fmul float %124, %269 ; [#uses=1]
+ %275 = fmul float %121, %271 ; [#uses=1]
+ %276 = fadd float %274, %275 ; [#uses=1]
+ %277 = fmul float %116, %273 ; [#uses=1]
+ %278 = fadd float %276, %277 ; [#uses=1]
+ %279 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %280 = load float* %279, align 4 ; [#uses=1]
+ %281 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %282 = load float* %281, align 4 ; [#uses=1]
+ %283 = getelementptr inbounds %struct.btRigidBody* %7, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %284 = load float* %283, align 4 ; [#uses=1]
+ br label %bb37
+
+bb37: ; preds = %bb35, %bb34.thread
+ %285 = phi float [ %278, %bb35 ], [ %267, %bb34.thread ] ; [#uses=1]
+ %.0.2119.0 = phi float [ %284, %bb35 ], [ 0.000000e+00, %bb34.thread ] ; [#uses=1]
+ %.0.1118.0 = phi float [ %282, %bb35 ], [ 0.000000e+00, %bb34.thread ] ; [#uses=1]
+ %.0.0117.0 = phi float [ %280, %bb35 ], [ 0.000000e+00, %bb34.thread ] ; [#uses=1]
+ %286 = fmul float %38, %.0.0117.0 ; [#uses=1]
+ %287 = fmul float %34, %.0.1118.0 ; [#uses=1]
+ %288 = fadd float %286, %287 ; [#uses=1]
+ %289 = fmul float %44, %.0.2119.0 ; [#uses=1]
+ %290 = fadd float %288, %289 ; [#uses=1]
+ %291 = fsub float %285, %290 ; [#uses=1]
+ %292 = fadd float %262, %291 ; [#uses=1]
+ %293 = fsub float %desiredVelocity, %292 ; [#uses=1]
+ %294 = fmul float %232, %293 ; [#uses=1]
+ %295 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 14 ; [#uses=1]
+ store float %294, float* %295, align 4
+ %296 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 15 ; [#uses=1]
+ store float %cfmSlip, float* %296, align 4
+ %297 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %297, align 4
+ %298 = getelementptr inbounds %struct.btSolverConstraint* %solverConstraint, i32 0, i32 17 ; [#uses=1]
+ store float 1.000000e+10, float* %298, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN35btSequentialImpulseConstraintSolverD0Ev(%struct.btSequentialImpulseConstraintSolver* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([12 x i32 (...)*]* @_ZTV35btSequentialImpulseConstraintSolver, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 3 ; [#uses=3]
+ %2 = load %struct.CONTACT_KEY_TOKEN** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.CONTACT_KEY_TOKEN* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.CONTACT_KEY_TOKEN* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad57
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %1, align 4
+ %8 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 3 ; [#uses=3]
+ %11 = load i32** %10, align 4 ; [#uses=2]
+ %12 = icmp eq i32* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i92
+
+bb.i.i.i92: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i91 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i91, label %bb2.i.i.i94, label %bb1.i.i.i93
+
+bb1.i.i.i93: ; preds = %bb.i.i.i92
+ %15 = bitcast i32* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i94 unwind label %lpad53
+
+bb2.i.i.i94: ; preds = %bb1.i.i.i93, %bb.i.i.i92
+ store i32* null, i32** %10, align 4
+ br label %bb10
+
+bb10: ; preds = %bb2.i.i.i94, %bb3
+ %16 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store i32* null, i32** %10, align 4
+ %17 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %20 = load i32** %19, align 4 ; [#uses=2]
+ %21 = icmp eq i32* %20, null ; [#uses=1]
+ br i1 %21, label %bb19, label %bb.i.i.i97
+
+bb.i.i.i97: ; preds = %bb10
+ %22 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i.i96 = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i96, label %bb2.i.i.i99, label %bb1.i.i.i98
+
+bb1.i.i.i98: ; preds = %bb.i.i.i97
+ %24 = bitcast i32* %20 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %24)
+ to label %bb2.i.i.i99 unwind label %lpad49
+
+bb2.i.i.i99: ; preds = %bb1.i.i.i98, %bb.i.i.i97
+ store i32* null, i32** %19, align 4
+ br label %bb19
+
+bb19: ; preds = %bb2.i.i.i99, %bb10
+ %25 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ store i32* null, i32** %19, align 4
+ %26 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %29 = load %struct.btSolverConstraint** %28, align 4 ; [#uses=2]
+ %30 = icmp eq %struct.btSolverConstraint* %29, null ; [#uses=1]
+ br i1 %30, label %bb28, label %bb.i.i.i103
+
+bb.i.i.i103: ; preds = %bb19
+ %31 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %32 = load i8* %31, align 4 ; [#uses=1]
+ %toBool.i.i.i102 = icmp eq i8 %32, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i102, label %bb2.i.i.i105, label %bb1.i.i.i104
+
+bb1.i.i.i104: ; preds = %bb.i.i.i103
+ %33 = bitcast %struct.btSolverConstraint* %29 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %33)
+ to label %bb2.i.i.i105 unwind label %lpad45
+
+bb2.i.i.i105: ; preds = %bb1.i.i.i104, %bb.i.i.i103
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %28, align 4
+ br label %bb28
+
+bb28: ; preds = %bb2.i.i.i105, %bb19
+ %34 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %34, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %28, align 4
+ %35 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %35, align 4
+ %36 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %36, align 4
+ %37 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %38 = load %struct.btSolverConstraint** %37, align 4 ; [#uses=2]
+ %39 = icmp eq %struct.btSolverConstraint* %38, null ; [#uses=1]
+ br i1 %39, label %bb37, label %bb.i.i.i108
+
+bb.i.i.i108: ; preds = %bb28
+ %40 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %41 = load i8* %40, align 4 ; [#uses=1]
+ %toBool.i.i.i107 = icmp eq i8 %41, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i107, label %bb2.i.i.i110, label %bb1.i.i.i109
+
+bb1.i.i.i109: ; preds = %bb.i.i.i108
+ %42 = bitcast %struct.btSolverConstraint* %38 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %42)
+ to label %bb2.i.i.i110 unwind label %lpad
+
+bb2.i.i.i110: ; preds = %bb1.i.i.i109, %bb.i.i.i108
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %37, align 4
+ br label %bb37
+
+invcont35: ; preds = %bb2.i.i.i127, %ppad
+ %43 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %43, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %68, align 4
+ %44 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %44, align 4
+ %45 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %45, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.3)
+ unreachable
+
+bb37: ; preds = %bb2.i.i.i110, %bb28
+ %46 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %46, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %37, align 4
+ %47 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %47, align 4
+ %48 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %48, align 4
+ %49 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %50 = load %struct.btSolverConstraint** %49, align 4 ; [#uses=2]
+ %51 = icmp eq %struct.btSolverConstraint* %50, null ; [#uses=1]
+ br i1 %51, label %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit117, label %bb.i.i.i114
+
+bb.i.i.i114: ; preds = %bb37
+ %52 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %53 = load i8* %52, align 4 ; [#uses=1]
+ %toBool.i.i.i113 = icmp eq i8 %53, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i113, label %bb2.i.i.i116, label %bb1.i.i.i115
+
+bb1.i.i.i115: ; preds = %bb.i.i.i114
+ %54 = bitcast %struct.btSolverConstraint* %50 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %54)
+ br label %bb2.i.i.i116
+
+bb2.i.i.i116: ; preds = %bb1.i.i.i115, %bb.i.i.i114
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %49, align 4
+ br label %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit117
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit117: ; preds = %bb2.i.i.i116, %bb37
+ %55 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %55, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %49, align 4
+ %56 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %56, align 4
+ %57 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %57, align 4
+ %58 = bitcast %struct.btSequentialImpulseConstraintSolver* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %58) nounwind
+ ret void
+
+lpad: ; preds = %bb1.i.i.i109
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select44 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad45: ; preds = %bb1.i.i.i104
+ %eh_ptr46 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select48 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr46, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad81
+
+lpad49: ; preds = %bb1.i.i.i98
+ %eh_ptr50 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select52 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr50, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad82
+
+lpad53: ; preds = %bb1.i.i.i93
+ %eh_ptr54 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select56 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr54, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad83
+
+lpad57: ; preds = %bb1.i.i.i
+ %eh_ptr58 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select60 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr58, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %59 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 3 ; [#uses=3]
+ %60 = load i32** %59, align 4 ; [#uses=2]
+ %61 = icmp eq i32* %60, null ; [#uses=1]
+ br i1 %61, label %_ZN20btAlignedObjectArrayIiED1Ev.exit123, label %bb.i.i.i119
+
+bb.i.i.i119: ; preds = %lpad57
+ %62 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %63 = load i8* %62, align 4 ; [#uses=1]
+ %toBool.i.i.i118 = icmp eq i8 %63, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i118, label %bb2.i.i.i121, label %bb1.i.i.i120
+
+bb1.i.i.i120: ; preds = %bb.i.i.i119
+ %64 = bitcast i32* %60 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %64)
+ to label %bb2.i.i.i121 unwind label %lpad61
+
+bb2.i.i.i121: ; preds = %bb1.i.i.i120, %bb.i.i.i119
+ store i32* null, i32** %59, align 4
+ br label %_ZN20btAlignedObjectArrayIiED1Ev.exit123
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit123: ; preds = %bb2.i.i.i121, %lpad57
+ %65 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %65, align 4
+ store i32* null, i32** %59, align 4
+ %66 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %66, align 4
+ %67 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %67, align 4
+ br label %ppad83
+
+lpad61: ; preds = %bb1.i.i.i120
+ %eh_ptr62 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select64 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr62, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad65: ; preds = %bb1.i.i.i144
+ %eh_ptr66 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select68 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr66, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad69: ; preds = %bb1.i.i.i138
+ %eh_ptr70 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select72 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr70, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad73: ; preds = %bb1.i.i.i132
+ %eh_ptr74 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select76 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr74, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad77: ; preds = %bb1.i.i.i126
+ %eh_ptr78 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select80 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr78, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit135, %lpad
+ %eh_exception.3 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.2, %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit135 ] ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %69 = load %struct.btSolverConstraint** %68, align 4 ; [#uses=2]
+ %70 = icmp eq %struct.btSolverConstraint* %69, null ; [#uses=1]
+ br i1 %70, label %invcont35, label %bb.i.i.i125
+
+bb.i.i.i125: ; preds = %ppad
+ %71 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %72 = load i8* %71, align 4 ; [#uses=1]
+ %toBool.i.i.i124 = icmp eq i8 %72, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i124, label %bb2.i.i.i127, label %bb1.i.i.i126
+
+bb1.i.i.i126: ; preds = %bb.i.i.i125
+ %73 = bitcast %struct.btSolverConstraint* %69 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %73)
+ to label %bb2.i.i.i127 unwind label %lpad77
+
+bb2.i.i.i127: ; preds = %bb1.i.i.i126, %bb.i.i.i125
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %68, align 4
+ br label %invcont35
+
+ppad81: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit141, %lpad45
+ %eh_exception.2 = phi i8* [ %eh_ptr46, %lpad45 ], [ %eh_exception.1, %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit141 ] ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %75 = load %struct.btSolverConstraint** %74, align 4 ; [#uses=2]
+ %76 = icmp eq %struct.btSolverConstraint* %75, null ; [#uses=1]
+ br i1 %76, label %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit135, label %bb.i.i.i131
+
+bb.i.i.i131: ; preds = %ppad81
+ %77 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %78 = load i8* %77, align 4 ; [#uses=1]
+ %toBool.i.i.i130 = icmp eq i8 %78, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i130, label %bb2.i.i.i133, label %bb1.i.i.i132
+
+bb1.i.i.i132: ; preds = %bb.i.i.i131
+ %79 = bitcast %struct.btSolverConstraint* %75 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %79)
+ to label %bb2.i.i.i133 unwind label %lpad73
+
+bb2.i.i.i133: ; preds = %bb1.i.i.i132, %bb.i.i.i131
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %74, align 4
+ br label %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit135
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit135: ; preds = %bb2.i.i.i133, %ppad81
+ %80 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %80, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %74, align 4
+ %81 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %81, align 4
+ %82 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %82, align 4
+ br label %ppad
+
+ppad82: ; preds = %_ZN20btAlignedObjectArrayIiED1Ev.exit147, %lpad49
+ %eh_exception.1 = phi i8* [ %eh_ptr50, %lpad49 ], [ %eh_exception.0, %_ZN20btAlignedObjectArrayIiED1Ev.exit147 ] ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %84 = load %struct.btSolverConstraint** %83, align 4 ; [#uses=2]
+ %85 = icmp eq %struct.btSolverConstraint* %84, null ; [#uses=1]
+ br i1 %85, label %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit141, label %bb.i.i.i137
+
+bb.i.i.i137: ; preds = %ppad82
+ %86 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %87 = load i8* %86, align 4 ; [#uses=1]
+ %toBool.i.i.i136 = icmp eq i8 %87, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i136, label %bb2.i.i.i139, label %bb1.i.i.i138
+
+bb1.i.i.i138: ; preds = %bb.i.i.i137
+ %88 = bitcast %struct.btSolverConstraint* %84 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %88)
+ to label %bb2.i.i.i139 unwind label %lpad69
+
+bb2.i.i.i139: ; preds = %bb1.i.i.i138, %bb.i.i.i137
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %83, align 4
+ br label %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit141
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit141: ; preds = %bb2.i.i.i139, %ppad82
+ %89 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %89, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %83, align 4
+ %90 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %90, align 4
+ %91 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %91, align 4
+ br label %ppad81
+
+ppad83: ; preds = %_ZN20btAlignedObjectArrayIiED1Ev.exit123, %lpad53
+ %eh_exception.0 = phi i8* [ %eh_ptr54, %lpad53 ], [ %eh_ptr58, %_ZN20btAlignedObjectArrayIiED1Ev.exit123 ] ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %93 = load i32** %92, align 4 ; [#uses=2]
+ %94 = icmp eq i32* %93, null ; [#uses=1]
+ br i1 %94, label %_ZN20btAlignedObjectArrayIiED1Ev.exit147, label %bb.i.i.i143
+
+bb.i.i.i143: ; preds = %ppad83
+ %95 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %96 = load i8* %95, align 4 ; [#uses=1]
+ %toBool.i.i.i142 = icmp eq i8 %96, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i142, label %bb2.i.i.i145, label %bb1.i.i.i144
+
+bb1.i.i.i144: ; preds = %bb.i.i.i143
+ %97 = bitcast i32* %93 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %97)
+ to label %bb2.i.i.i145 unwind label %lpad65
+
+bb2.i.i.i145: ; preds = %bb1.i.i.i144, %bb.i.i.i143
+ store i32* null, i32** %92, align 4
+ br label %_ZN20btAlignedObjectArrayIiED1Ev.exit147
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit147: ; preds = %bb2.i.i.i145, %ppad83
+ %98 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %98, align 4
+ store i32* null, i32** %92, align 4
+ %99 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %99, align 4
+ %100 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %100, align 4
+ br label %ppad82
+}
+
+; [#uses=1]
+define void @_ZN35btSequentialImpulseConstraintSolverD1Ev(%struct.btSequentialImpulseConstraintSolver* nocapture %this) align 2 {
+entry:
+ tail call void @_ZN35btSequentialImpulseConstraintSolverD2Ev(%struct.btSequentialImpulseConstraintSolver* %this)
+ ret void
+}
+
+; [#uses=1]
+define float @_ZN35btSequentialImpulseConstraintSolver10solveGroupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAllocP12btDispatcher(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btCollisionObject** %bodies, i32 %numBodies, %struct.btPersistentManifold** %manifoldPtr, i32 %numManifolds, %struct.btTypedConstraint** %constraints, i32 %numConstraints, %struct.btContactSolverInfo* %infoGlobal, %struct.btActionInterface* %debugDrawer, %struct.btStackAlloc* %stackAlloc, %struct.btActionInterface* nocapture %unnamed_arg) align 2 {
+entry:
+ tail call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([11 x i8]* @.str619, i32 0, i32 0))
+ %0 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 8 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to float (%struct.btSequentialImpulseConstraintSolver*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, %struct.btTypedConstraint**, i32, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*)* ; [#uses=1]
+ %5 = invoke float %4(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btCollisionObject** %bodies, i32 %numBodies, %struct.btPersistentManifold** %manifoldPtr, i32 %numManifolds, %struct.btTypedConstraint** %constraints, i32 %numConstraints, %struct.btContactSolverInfo* %infoGlobal, %struct.btActionInterface* %debugDrawer, %struct.btStackAlloc* %stackAlloc)
+ to label %invcont unwind label %lpad ; [#uses=0]
+
+invcont: ; preds = %entry
+ %6 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 9 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to float (%struct.btSequentialImpulseConstraintSolver*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, %struct.btTypedConstraint**, i32, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*)* ; [#uses=1]
+ %10 = invoke float %9(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btCollisionObject** %bodies, i32 %numBodies, %struct.btPersistentManifold** %manifoldPtr, i32 %numManifolds, %struct.btTypedConstraint** %constraints, i32 %numConstraints, %struct.btContactSolverInfo* %infoGlobal, %struct.btActionInterface* %debugDrawer, %struct.btStackAlloc* %stackAlloc)
+ to label %invcont1 unwind label %lpad ; [#uses=0]
+
+invcont1: ; preds = %invcont
+ %11 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 7 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to float (%struct.btSequentialImpulseConstraintSolver*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, %struct.btTypedConstraint**, i32, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*)* ; [#uses=1]
+ %15 = invoke float %14(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btCollisionObject** %bodies, i32 %numBodies, %struct.btPersistentManifold** %manifoldPtr, i32 %numManifolds, %struct.btTypedConstraint** %constraints, i32 %numConstraints, %struct.btContactSolverInfo* %infoGlobal, %struct.btActionInterface* %debugDrawer, %struct.btStackAlloc* %stackAlloc)
+ to label %invcont2 unwind label %lpad ; [#uses=0]
+
+invcont2: ; preds = %invcont1
+ tail call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret float 0.000000e+00
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %invcont1, %invcont, %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont3 unwind label %lpad8
+
+lpad8: ; preds = %lpad
+ %eh_ptr9 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr9, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define float @_ZN35btSequentialImpulseConstraintSolver29solveGroupCacheFriendlyFinishEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btCollisionObject** nocapture %bodies, i32 %numBodies, %struct.btPersistentManifold** nocapture %unnamed_arg, i32 %unnamed_arg2, %struct.btTypedConstraint** nocapture %unnamed_arg4, i32 %unnamed_arg6, %struct.btContactSolverInfo* nocapture %infoGlobal, %struct.btActionInterface* nocapture %unnamed_arg8, %struct.btStackAlloc* nocapture %unnamed_arg10) align 2 {
+entry:
+ %0 = alloca %struct.btSolverConstraint, align 8 ; [#uses=1]
+ %1 = alloca %struct.btSolverConstraint, align 8 ; [#uses=1]
+ %2 = alloca %struct.btSolverConstraint, align 8 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 1 ; [#uses=3]
+ %4 = load i32* %3, align 4 ; [#uses=2]
+ %5 = icmp sgt i32 %4, 0 ; [#uses=1]
+ br i1 %5, label %bb.nph103, label %bb14
+
+bb.nph103: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 15 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=2]
+ br label %bb
+
+bb: ; preds = %bb12, %bb.nph103
+ %j.0102 = phi i32 [ 0, %bb.nph103 ], [ %30, %bb12 ] ; [#uses=4]
+ %9 = load %struct.btSolverConstraint** %6, align 4 ; [#uses=3]
+ %scevgep121 = getelementptr %struct.btSolverConstraint* %9, i32 %j.0102, i32 13, i32 0 ; [#uses=1]
+ %10 = load i8** %scevgep121, align 4 ; [#uses=3]
+ %scevgep122 = getelementptr %struct.btSolverConstraint* %9, i32 %j.0102, i32 6 ; [#uses=1]
+ %11 = load float* %scevgep122, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i8* %10, i32 112 ; [#uses=1]
+ %13 = bitcast i8* %12 to float* ; [#uses=1]
+ store float %11, float* %13, align 4
+ %14 = load i32* %7, align 4 ; [#uses=1]
+ %15 = and i32 %14, 8 ; [#uses=1]
+ %16 = icmp eq i32 %15, 0 ; [#uses=1]
+ br i1 %16, label %bb12, label %bb11
+
+bb11: ; preds = %bb
+ %scevgep123 = getelementptr %struct.btSolverConstraint* %9, i32 %j.0102, i32 10, i32 0 ; [#uses=2]
+ %17 = load i32* %scevgep123, align 4 ; [#uses=1]
+ %18 = load %struct.btSolverConstraint** %8, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btSolverConstraint* %18, i32 %17, i32 6 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds i8* %10, i32 120 ; [#uses=1]
+ %22 = bitcast i8* %21 to float* ; [#uses=1]
+ store float %20, float* %22, align 4
+ %23 = load i32* %scevgep123, align 4 ; [#uses=1]
+ %24 = add nsw i32 %23, 1 ; [#uses=1]
+ %25 = load %struct.btSolverConstraint** %8, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btSolverConstraint* %25, i32 %24, i32 6 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds i8* %10, i32 124 ; [#uses=1]
+ %29 = bitcast i8* %28 to float* ; [#uses=1]
+ store float %27, float* %29, align 4
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb
+ %30 = add nsw i32 %j.0102, 1 ; [#uses=2]
+ %exitcond120 = icmp eq i32 %30, %4 ; [#uses=1]
+ br i1 %exitcond120, label %bb14, label %bb
+
+bb14: ; preds = %bb12, %entry
+ %31 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 1 ; [#uses=3]
+ %32 = load i32* %31, align 4 ; [#uses=2]
+ %33 = icmp sgt i32 %32, 0 ; [#uses=1]
+ br i1 %33, label %bb.nph101, label %bb17
+
+bb.nph101: ; preds = %bb14
+ %34 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ br label %bb15
+
+bb15: ; preds = %bb15, %bb.nph101
+ %j.1100 = phi i32 [ 0, %bb.nph101 ], [ %42, %bb15 ] ; [#uses=3]
+ %35 = load %struct.btSolverConstraint** %34, align 4 ; [#uses=2]
+ %scevgep118 = getelementptr %struct.btSolverConstraint* %35, i32 %j.1100, i32 13, i32 0 ; [#uses=1]
+ %36 = load i8** %scevgep118, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds i8* %36, i32 28 ; [#uses=1]
+ %38 = bitcast i8* %37 to float* ; [#uses=2]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %scevgep119 = getelementptr %struct.btSolverConstraint* %35, i32 %j.1100, i32 6 ; [#uses=1]
+ %40 = load float* %scevgep119, align 4 ; [#uses=1]
+ %41 = fadd float %40, %39 ; [#uses=1]
+ store float %41, float* %38, align 4
+ %42 = add nsw i32 %j.1100, 1 ; [#uses=2]
+ %exitcond117 = icmp eq i32 %42, %32 ; [#uses=1]
+ br i1 %exitcond117, label %bb17, label %bb15
+
+bb17: ; preds = %bb15, %bb14
+ %43 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 11 ; [#uses=1]
+ %44 = load i32* %43, align 4 ; [#uses=1]
+ %45 = icmp eq i32 %44, 0 ; [#uses=1]
+ %46 = icmp sgt i32 %numBodies, 0 ; [#uses=2]
+ br i1 %45, label %bb28.preheader, label %bb22.preheader
+
+bb28.preheader: ; preds = %bb17
+ br i1 %46, label %bb24, label %bb29
+
+bb22.preheader: ; preds = %bb17
+ br i1 %46, label %bb.nph, label %bb29
+
+bb.nph: ; preds = %bb22.preheader
+ %47 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb19
+
+bb19: ; preds = %bb21, %bb.nph
+ %i.096 = phi i32 [ 0, %bb.nph ], [ %54, %bb21 ] ; [#uses=2]
+ %scevgep = getelementptr %struct.btCollisionObject** %bodies, i32 %i.096 ; [#uses=1]
+ %48 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=3]
+ %49 = getelementptr inbounds %struct.btCollisionObject* %48, i32 0, i32 19 ; [#uses=1]
+ %50 = load i32* %49, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %50, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ %51 = icmp eq %struct.btCollisionObject* %48, null ; [#uses=1]
+ %or.cond = or i1 %toBool.i, %51 ; [#uses=1]
+ br i1 %or.cond, label %bb21, label %bb20
+
+bb20: ; preds = %bb19
+ %52 = bitcast %struct.btCollisionObject* %48 to %struct.btRigidBody* ; [#uses=1]
+ %53 = load float* %47, align 4 ; [#uses=1]
+ call void @_ZN11btRigidBody25internalWritebackVelocityEf(%struct.btRigidBody* %52, float %53)
+ br label %bb21
+
+bb21: ; preds = %bb20, %bb19
+ %54 = add nsw i32 %i.096, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %54, %numBodies ; [#uses=1]
+ br i1 %exitcond, label %bb29, label %bb19
+
+bb24: ; preds = %bb27, %bb28.preheader
+ %i.198 = phi i32 [ %96, %bb27 ], [ 0, %bb28.preheader ] ; [#uses=2]
+ %scevgep116 = getelementptr %struct.btCollisionObject** %bodies, i32 %i.198 ; [#uses=1]
+ %55 = load %struct.btCollisionObject** %scevgep116, align 4 ; [#uses=17]
+ %56 = getelementptr inbounds %struct.btCollisionObject* %55, i32 0, i32 19 ; [#uses=1]
+ %57 = load i32* %56, align 4 ; [#uses=1]
+ %.lobit.i89 = and i32 %57, 2 ; [#uses=1]
+ %toBool.i90 = icmp eq i32 %.lobit.i89, 0 ; [#uses=1]
+ %58 = icmp eq %struct.btCollisionObject* %55, null ; [#uses=1]
+ %or.cond95 = or i1 %toBool.i90, %58 ; [#uses=1]
+ br i1 %or.cond95, label %bb27, label %bb26
+
+bb26: ; preds = %bb24
+ %59 = getelementptr inbounds %struct.btCollisionObject* %55, i32 1, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ %61 = fcmp une float %60, 0.000000e+00 ; [#uses=1]
+ br i1 %61, label %bb.i94, label %bb27
+
+bb.i94: ; preds = %bb26
+ %62 = getelementptr inbounds %struct.btCollisionObject* %55, i32 1, i32 1, i32 1, i32 0, i32 1 ; [#uses=2]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btCollisionObject* %55, i32 2 ; [#uses=1]
+ %65 = bitcast %struct.btCollisionObject* %64 to float* ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ %67 = fadd float %63, %66 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btCollisionObject* %55, i32 1, i32 1, i32 1, i32 0, i32 0 ; [#uses=2]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btCollisionObject* %55, i32 1, i32 24 ; [#uses=1]
+ %71 = bitcast i32* %70 to float* ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fadd float %69, %72 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btCollisionObject* %55, i32 1, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btCollisionObject* %55, i32 1, i32 23 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ %78 = fadd float %75, %77 ; [#uses=1]
+ store float %78, float* %74, align 4
+ store float %73, float* %68, align 4
+ store float %67, float* %62, align 4
+ %79 = getelementptr inbounds %struct.btCollisionObject* %55, i32 1, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %79, align 4
+ %80 = getelementptr inbounds %struct.btCollisionObject* %55, i32 1, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btCollisionObject* %55, i32 2, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = fadd float %81, %83 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btCollisionObject* %55, i32 1, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btCollisionObject* %55, i32 2, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = fadd float %86, %88 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btCollisionObject* %55, i32 1, i32 1, i32 1, i32 0, i32 3 ; [#uses=2]
+ %91 = load float* %90, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btCollisionObject* %55, i32 2, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ %94 = fadd float %91, %93 ; [#uses=1]
+ store float %94, float* %90, align 4
+ store float %89, float* %85, align 4
+ store float %84, float* %80, align 4
+ %95 = getelementptr inbounds %struct.btCollisionObject* %55, i32 1, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %95, align 4
+ br label %bb27
+
+bb27: ; preds = %bb.i94, %bb26, %bb24
+ %96 = add nsw i32 %i.198, 1 ; [#uses=2]
+ %exitcond115 = icmp eq i32 %96, %numBodies ; [#uses=1]
+ br i1 %exitcond115, label %bb29, label %bb24
+
+bb29: ; preds = %bb27, %bb21, %bb22.preheader, %bb28.preheader
+ %97 = load i32* %3, align 4 ; [#uses=4]
+ %98 = icmp sgt i32 %97, 0 ; [#uses=1]
+ %.not = xor i1 %98, true ; [#uses=1]
+ %99 = icmp slt i32 %97, 0 ; [#uses=1]
+ %or.cond125 = and i1 %.not, %99 ; [#uses=1]
+ br i1 %or.cond125, label %bb4.i61, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit88
+
+bb4.i61: ; preds = %bb29
+ %100 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ %101 = load i32* %100, align 4 ; [#uses=1]
+ %102 = icmp slt i32 %101, 0 ; [#uses=1]
+ br i1 %102, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i63, label %bb.nph.i80
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i63: ; preds = %bb4.i61
+ %103 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %104 = load %struct.btSolverConstraint** %103, align 4 ; [#uses=2]
+ %105 = icmp eq %struct.btSolverConstraint* %104, null ; [#uses=1]
+ br i1 %105, label %bb8.preheader.i78, label %bb.i.i.i75
+
+bb.i.i.i75: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i63
+ %106 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %107 = load i8* %106, align 4 ; [#uses=1]
+ %toBool.i.i.i74 = icmp eq i8 %107, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i74, label %bb2.i.i.i77, label %bb1.i.i.i76
+
+bb1.i.i.i76: ; preds = %bb.i.i.i75
+ %108 = bitcast %struct.btSolverConstraint* %104 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %108)
+ br label %bb2.i.i.i77
+
+bb2.i.i.i77: ; preds = %bb1.i.i.i76, %bb.i.i.i75
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %103, align 4
+ br label %bb8.preheader.i78
+
+bb8.preheader.i78: ; preds = %bb2.i.i.i77, %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i63
+ %109 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %109, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %103, align 4
+ store i32 0, i32* %100, align 4
+ br label %bb.nph.i80
+
+bb.nph.i80: ; preds = %bb8.preheader.i78, %bb4.i61
+ %110 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %111 = bitcast %struct.btSolverConstraint* %2 to i8* ; [#uses=1]
+ %tmp.i79 = sub i32 0, %97 ; [#uses=1]
+ br label %bb7.i87
+
+bb7.i87: ; preds = %bb7.i87, %bb.nph.i80
+ %indvar.i81 = phi i32 [ 0, %bb.nph.i80 ], [ %indvar.next.i85, %bb7.i87 ] ; [#uses=2]
+ %tmp = add i32 %97, %indvar.i81 ; [#uses=1]
+ %112 = load %struct.btSolverConstraint** %110, align 4 ; [#uses=1]
+ %scevgep105 = getelementptr %struct.btSolverConstraint* %112, i32 %tmp ; [#uses=1]
+ %scevgep15.i84 = bitcast %struct.btSolverConstraint* %scevgep105 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep15.i84, i8* %111, i32 136, i32 4, i1 false)
+ %indvar.next.i85 = add i32 %indvar.i81, 1 ; [#uses=2]
+ %exitcond104 = icmp eq i32 %indvar.next.i85, %tmp.i79 ; [#uses=1]
+ br i1 %exitcond104, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit88, label %bb7.i87
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit88: ; preds = %bb7.i87, %bb29
+ store i32 0, i32* %3, align 4
+ %113 = load i32* %31, align 4 ; [#uses=4]
+ %114 = icmp sgt i32 %113, 0 ; [#uses=1]
+ %.not126 = xor i1 %114, true ; [#uses=1]
+ %115 = icmp slt i32 %113, 0 ; [#uses=1]
+ %or.cond127 = and i1 %.not126, %115 ; [#uses=1]
+ br i1 %or.cond127, label %bb4.i32, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit59
+
+bb4.i32: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit88
+ %116 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 2 ; [#uses=2]
+ %117 = load i32* %116, align 4 ; [#uses=1]
+ %118 = icmp slt i32 %117, 0 ; [#uses=1]
+ br i1 %118, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i34, label %bb.nph.i51
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i34: ; preds = %bb4.i32
+ %119 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %120 = load %struct.btSolverConstraint** %119, align 4 ; [#uses=2]
+ %121 = icmp eq %struct.btSolverConstraint* %120, null ; [#uses=1]
+ br i1 %121, label %bb8.preheader.i49, label %bb.i.i.i46
+
+bb.i.i.i46: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i34
+ %122 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %123 = load i8* %122, align 4 ; [#uses=1]
+ %toBool.i.i.i45 = icmp eq i8 %123, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i45, label %bb2.i.i.i48, label %bb1.i.i.i47
+
+bb1.i.i.i47: ; preds = %bb.i.i.i46
+ %124 = bitcast %struct.btSolverConstraint* %120 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %124)
+ br label %bb2.i.i.i48
+
+bb2.i.i.i48: ; preds = %bb1.i.i.i47, %bb.i.i.i46
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %119, align 4
+ br label %bb8.preheader.i49
+
+bb8.preheader.i49: ; preds = %bb2.i.i.i48, %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i34
+ %125 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %125, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %119, align 4
+ store i32 0, i32* %116, align 4
+ br label %bb.nph.i51
+
+bb.nph.i51: ; preds = %bb8.preheader.i49, %bb4.i32
+ %126 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %127 = bitcast %struct.btSolverConstraint* %1 to i8* ; [#uses=1]
+ %tmp.i50 = sub i32 0, %113 ; [#uses=1]
+ br label %bb7.i58
+
+bb7.i58: ; preds = %bb7.i58, %bb.nph.i51
+ %indvar.i52 = phi i32 [ 0, %bb.nph.i51 ], [ %indvar.next.i56, %bb7.i58 ] ; [#uses=2]
+ %tmp108 = add i32 %113, %indvar.i52 ; [#uses=1]
+ %128 = load %struct.btSolverConstraint** %126, align 4 ; [#uses=1]
+ %scevgep109 = getelementptr %struct.btSolverConstraint* %128, i32 %tmp108 ; [#uses=1]
+ %scevgep15.i55 = bitcast %struct.btSolverConstraint* %scevgep109 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep15.i55, i8* %127, i32 136, i32 4, i1 false)
+ %indvar.next.i56 = add i32 %indvar.i52, 1 ; [#uses=2]
+ %exitcond107 = icmp eq i32 %indvar.next.i56, %tmp.i50 ; [#uses=1]
+ br i1 %exitcond107, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit59, label %bb7.i58
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit59: ; preds = %bb7.i58, %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit88
+ store i32 0, i32* %31, align 4
+ %129 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 1 ; [#uses=2]
+ %130 = load i32* %129, align 4 ; [#uses=4]
+ %131 = icmp sgt i32 %130, 0 ; [#uses=1]
+ %.not128 = xor i1 %131, true ; [#uses=1]
+ %132 = icmp slt i32 %130, 0 ; [#uses=1]
+ %or.cond129 = and i1 %.not128, %132 ; [#uses=1]
+ br i1 %or.cond129, label %bb4.i, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit
+
+bb4.i: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit59
+ %133 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 2 ; [#uses=2]
+ %134 = load i32* %133, align 4 ; [#uses=1]
+ %135 = icmp slt i32 %134, 0 ; [#uses=1]
+ br i1 %135, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i, label %bb.nph.i
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i: ; preds = %bb4.i
+ %136 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %137 = load %struct.btSolverConstraint** %136, align 4 ; [#uses=2]
+ %138 = icmp eq %struct.btSolverConstraint* %137, null ; [#uses=1]
+ br i1 %138, label %bb8.preheader.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i
+ %139 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %140 = load i8* %139, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %140, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %141 = bitcast %struct.btSolverConstraint* %137 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %141)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %136, align 4
+ br label %bb8.preheader.i
+
+bb8.preheader.i: ; preds = %bb2.i.i.i, %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i
+ %142 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %142, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %136, align 4
+ store i32 0, i32* %133, align 4
+ br label %bb.nph.i
+
+bb.nph.i: ; preds = %bb8.preheader.i, %bb4.i
+ %143 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %144 = bitcast %struct.btSolverConstraint* %0 to i8* ; [#uses=1]
+ %tmp.i = sub i32 0, %130 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb7.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb7.i ] ; [#uses=2]
+ %tmp112 = add i32 %130, %indvar.i ; [#uses=1]
+ %145 = load %struct.btSolverConstraint** %143, align 4 ; [#uses=1]
+ %scevgep113 = getelementptr %struct.btSolverConstraint* %145, i32 %tmp112 ; [#uses=1]
+ %scevgep15.i = bitcast %struct.btSolverConstraint* %scevgep113 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep15.i, i8* %144, i32 136, i32 4, i1 false)
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond111 = icmp eq i32 %indvar.next.i, %tmp.i ; [#uses=1]
+ br i1 %exitcond111, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit, label %bb7.i
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit: ; preds = %bb7.i, %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit59
+ store i32 0, i32* %129, align 4
+ ret float 0.000000e+00
+}
+
+; [#uses=1]
+define float @_ZN35btSequentialImpulseConstraintSolver28solveGroupCacheFriendlySetupEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btCollisionObject** nocapture %bodies, i32 %numBodies, %struct.btPersistentManifold** nocapture %manifoldPtr, i32 %numManifolds, %struct.btTypedConstraint** nocapture %constraints, i32 %numConstraints, %struct.btContactSolverInfo* nocapture %infoGlobal, %struct.btActionInterface* nocapture %debugDrawer, %struct.btStackAlloc* nocapture %stackAlloc) align 2 {
+entry:
+ %0 = alloca i32, align 4 ; [#uses=2]
+ %1 = alloca i32, align 4 ; [#uses=2]
+ %2 = alloca %struct.btSolverConstraint, align 8 ; [#uses=1]
+ %3 = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %info2 = alloca %"struct.btTypedConstraint::btConstraintInfo2", align 8 ; [#uses=14]
+ call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([29 x i8]* @.str28, i32 0, i32 0))
+ %4 = sub i32 0, %numManifolds ; [#uses=1]
+ %5 = icmp eq i32 %numConstraints, %4 ; [#uses=1]
+ br i1 %5, label %bb77, label %bb1
+
+bb1: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 11 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = icmp eq i32 %7, 0 ; [#uses=1]
+ %9 = icmp sgt i32 %numBodies, 0 ; [#uses=2]
+ br i1 %8, label %bb13.preheader, label %bb6.preheader
+
+bb13.preheader: ; preds = %bb1
+ br i1 %9, label %bb9, label %bb16
+
+bb6.preheader: ; preds = %bb1
+ br i1 %9, label %bb3, label %bb16
+
+bb3: ; preds = %bb5, %bb6.preheader
+ %i.0168 = phi i32 [ %26, %bb5 ], [ 0, %bb6.preheader ] ; [#uses=2]
+ %scevgep = getelementptr %struct.btCollisionObject** %bodies, i32 %i.0168 ; [#uses=1]
+ %10 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=11]
+ %11 = getelementptr inbounds %struct.btCollisionObject* %10, i32 0, i32 19 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %12, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ %13 = icmp eq %struct.btCollisionObject* %10, null ; [#uses=1]
+ %or.cond = or i1 %toBool.i, %13 ; [#uses=1]
+ br i1 %or.cond, label %bb5, label %bb4
+
+bb4: ; preds = %bb3
+ %14 = getelementptr inbounds %struct.btCollisionObject* %10, i32 1, i32 23 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btCollisionObject* %10, i32 1, i32 24 ; [#uses=1]
+ %16 = bitcast i32* %15 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btCollisionObject* %10, i32 2 ; [#uses=1]
+ %18 = bitcast %struct.btCollisionObject* %17 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btCollisionObject* %10, i32 2, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btCollisionObject* %10, i32 2, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btCollisionObject* %10, i32 2, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btCollisionObject* %10, i32 2, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btCollisionObject* %10, i32 2, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btCollisionObject* %10, i32 2, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = bitcast float* %24 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %25, i8 0, i64 32, i32 4, i1 false)
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb3
+ %26 = add nsw i32 %i.0168, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %26, %numBodies ; [#uses=1]
+ br i1 %exitcond, label %bb16, label %bb3
+
+bb9: ; preds = %bb12, %bb13.preheader
+ %i8.0181 = phi i32 [ %41, %bb12 ], [ 0, %bb13.preheader ] ; [#uses=2]
+ %scevgep253 = getelementptr %struct.btCollisionObject** %bodies, i32 %i8.0181 ; [#uses=1]
+ %27 = load %struct.btCollisionObject** %scevgep253, align 4 ; [#uses=10]
+ %28 = getelementptr inbounds %struct.btCollisionObject* %27, i32 0, i32 19 ; [#uses=1]
+ %29 = load i32* %28, align 4 ; [#uses=1]
+ %.lobit.i108 = and i32 %29, 2 ; [#uses=1]
+ %toBool.i109 = icmp eq i32 %.lobit.i108, 0 ; [#uses=1]
+ %30 = icmp eq %struct.btCollisionObject* %27, null ; [#uses=1]
+ %or.cond167 = or i1 %toBool.i109, %30 ; [#uses=1]
+ br i1 %or.cond167, label %bb12, label %bb11
+
+bb11: ; preds = %bb9
+ %31 = getelementptr inbounds %struct.btCollisionObject* %27, i32 1, i32 23 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btCollisionObject* %27, i32 1, i32 24 ; [#uses=1]
+ %33 = bitcast i32* %32 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btCollisionObject* %27, i32 2 ; [#uses=1]
+ %35 = bitcast %struct.btCollisionObject* %34 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btCollisionObject* %27, i32 2, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 4
+ %37 = getelementptr inbounds %struct.btCollisionObject* %27, i32 2, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 4
+ %38 = getelementptr inbounds %struct.btCollisionObject* %27, i32 2, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %38, align 4
+ %39 = getelementptr inbounds %struct.btCollisionObject* %27, i32 2, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %39, align 4
+ %40 = getelementptr inbounds %struct.btCollisionObject* %27, i32 2, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %40, align 4
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb9
+ %41 = add nsw i32 %i8.0181, 1 ; [#uses=2]
+ %exitcond252 = icmp eq i32 %41, %numBodies ; [#uses=1]
+ br i1 %exitcond252, label %bb16, label %bb9
+
+bb15: ; preds = %bb16
+ %scevgep251 = getelementptr %struct.btTypedConstraint** %constraints, i32 %49 ; [#uses=1]
+ %42 = load %struct.btTypedConstraint** %scevgep251, align 4 ; [#uses=2]
+ %43 = getelementptr inbounds %struct.btTypedConstraint* %42, i32 0, i32 0 ; [#uses=1]
+ %44 = load i32 (...)*** %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds i32 (...)** %44, i32 2 ; [#uses=1]
+ %46 = load i32 (...)** %45, align 4 ; [#uses=1]
+ %47 = bitcast i32 (...)* %46 to void (%struct.btTypedConstraint*)* ; [#uses=1]
+ invoke void %47(%struct.btTypedConstraint* %42)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb15
+ %48 = add nsw i32 %49, 1 ; [#uses=1]
+ br label %bb16
+
+bb16: ; preds = %invcont, %bb12, %bb5, %bb6.preheader, %bb13.preheader
+ %49 = phi i32 [ %48, %invcont ], [ 0, %bb13.preheader ], [ 0, %bb12 ], [ 0, %bb6.preheader ], [ 0, %bb5 ] ; [#uses=3]
+ %50 = icmp slt i32 %49, %numConstraints ; [#uses=1]
+ br i1 %50, label %bb15, label %bb17
+
+bb17: ; preds = %bb16
+ %51 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %3, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %51, align 8
+ %52 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %3, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %52, align 4
+ %53 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayIN17btTypedConstraint17btConstraintInfo1EE6resizeEiRKS1_(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %53, i32 %numConstraints, %struct.CONTACT_KEY_TOKEN* %3) inlinehint
+ to label %bb22.preheader unwind label %lpad
+
+bb22.preheader: ; preds = %bb17
+ %54 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 3 ; [#uses=3]
+ br label %bb22
+
+bb20: ; preds = %bb22
+ %scevgep250 = getelementptr %struct.btTypedConstraint** %constraints, i32 %65 ; [#uses=1]
+ %55 = load %struct.CONTACT_KEY_TOKEN** %54, align 4 ; [#uses=2]
+ %56 = load %struct.btTypedConstraint** %scevgep250, align 4 ; [#uses=2]
+ %57 = getelementptr inbounds %struct.btTypedConstraint* %56, i32 0, i32 0 ; [#uses=1]
+ %58 = load i32 (...)*** %57, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds i32 (...)** %58, i32 4 ; [#uses=1]
+ %60 = load i32 (...)** %59, align 4 ; [#uses=1]
+ %61 = bitcast i32 (...)* %60 to void (%struct.btTypedConstraint*, %struct.CONTACT_KEY_TOKEN*)* ; [#uses=1]
+ %scevgep249 = getelementptr %struct.CONTACT_KEY_TOKEN* %55, i32 %65 ; [#uses=1]
+ invoke void %61(%struct.btTypedConstraint* %56, %struct.CONTACT_KEY_TOKEN* %scevgep249)
+ to label %invcont21 unwind label %lpad
+
+invcont21: ; preds = %bb20
+ %scevgep247248 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %55, i32 %65, i32 0 ; [#uses=1]
+ %62 = load i32* %scevgep247248, align 4 ; [#uses=1]
+ %63 = add nsw i32 %62, %totalNumRows.0 ; [#uses=1]
+ %64 = add nsw i32 %65, 1 ; [#uses=1]
+ br label %bb22
+
+bb22: ; preds = %invcont21, %bb22.preheader
+ %totalNumRows.0 = phi i32 [ %63, %invcont21 ], [ 0, %bb22.preheader ] ; [#uses=9]
+ %65 = phi i32 [ %64, %invcont21 ], [ 0, %bb22.preheader ] ; [#uses=5]
+ %66 = icmp slt i32 %65, %numConstraints ; [#uses=1]
+ br i1 %66, label %bb20, label %bb23
+
+bb23: ; preds = %bb22
+ %67 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 1 ; [#uses=3]
+ %68 = load i32* %67, align 4 ; [#uses=5]
+ %69 = icmp sgt i32 %68, %totalNumRows.0 ; [#uses=1]
+ br i1 %69, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit, label %bb3.i
+
+bb3.i: ; preds = %bb23
+ %70 = icmp slt i32 %68, %totalNumRows.0 ; [#uses=2]
+ br i1 %70, label %bb4.i, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit
+
+bb4.i: ; preds = %bb3.i
+ %71 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 2 ; [#uses=2]
+ %72 = load i32* %71, align 4 ; [#uses=1]
+ %73 = icmp slt i32 %72, %totalNumRows.0 ; [#uses=1]
+ br i1 %73, label %bb.i.i, label %bb.nph.i
+
+bb.i.i: ; preds = %bb4.i
+ %74 = icmp eq i32 %totalNumRows.0, 0 ; [#uses=1]
+ br i1 %74, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %75 = mul i32 %totalNumRows.0, 136 ; [#uses=1]
+ %76 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %75, i32 16)
+ to label %.noexc unwind label %lpad ; [#uses=1]
+
+.noexc: ; preds = %bb.i2.i.i
+ %phitmp.i.i = bitcast i8* %76 to %struct.btSolverConstraint* ; [#uses=1]
+ %.pre.i = load i32* %67, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i: ; preds = %.noexc, %bb.i.i
+ %77 = phi i32 [ %.pre.i, %.noexc ], [ %68, %bb.i.i ] ; [#uses=2]
+ %78 = phi %struct.btSolverConstraint* [ %phitmp.i.i, %.noexc ], [ null, %bb.i.i ] ; [#uses=2]
+ %79 = icmp sgt i32 %77, 0 ; [#uses=1]
+ br i1 %79, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i
+ %80 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb.i4.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb.i4.i.i ] ; [#uses=3]
+ %scevgep191 = getelementptr %struct.btSolverConstraint* %78, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep5.i.i.i = bitcast %struct.btSolverConstraint* %scevgep191 to i8* ; [#uses=1]
+ %81 = load %struct.btSolverConstraint** %80, align 4 ; [#uses=1]
+ %scevgep189 = getelementptr %struct.btSolverConstraint* %81, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep67.i.i.i = bitcast %struct.btSolverConstraint* %scevgep189 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep5.i.i.i, i8* %scevgep67.i.i.i, i32 136, i32 4, i1 false) nounwind
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond188 = icmp eq i32 %indvar.next.i.i.i, %77 ; [#uses=1]
+ br i1 %exitcond188, label %_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i: ; preds = %bb.i4.i.i, %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i
+ %82 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %83 = load %struct.btSolverConstraint** %82, align 4 ; [#uses=2]
+ %84 = icmp eq %struct.btSolverConstraint* %83, null ; [#uses=1]
+ br i1 %84, label %bb8.preheader.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i
+ %85 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %86 = load i8* %85, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %86, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %87 = bitcast %struct.btSolverConstraint* %83 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %87)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %82, align 4
+ br label %bb8.preheader.i
+
+bb8.preheader.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i
+ %88 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %88, align 4
+ store %struct.btSolverConstraint* %78, %struct.btSolverConstraint** %82, align 4
+ store i32 %totalNumRows.0, i32* %71, align 4
+ br i1 %70, label %bb.nph.i, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit
+
+bb.nph.i: ; preds = %bb8.preheader.i, %bb4.i
+ %89 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %90 = bitcast %struct.btSolverConstraint* %2 to i8* ; [#uses=1]
+ %tmp183 = sub i32 %totalNumRows.0, %68 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb7.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb7.i ] ; [#uses=2]
+ %tmp185 = add i32 %68, %indvar.i ; [#uses=1]
+ %91 = load %struct.btSolverConstraint** %89, align 4 ; [#uses=1]
+ %scevgep186 = getelementptr %struct.btSolverConstraint* %91, i32 %tmp185 ; [#uses=1]
+ %scevgep15.i = bitcast %struct.btSolverConstraint* %scevgep186 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep15.i, i8* %90, i32 136, i32 4, i1 false)
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond184 = icmp eq i32 %indvar.next.i, %tmp183 ; [#uses=1]
+ br i1 %exitcond184, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit, label %bb7.i
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit: ; preds = %bb7.i, %bb8.preheader.i, %bb3.i, %bb23
+ store i32 %totalNumRows.0, i32* %67, align 4
+ %92 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 3 ; [#uses=1]
+ %94 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info2, i32 0, i32 0 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 8 ; [#uses=1]
+ %96 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info2, i32 0, i32 1 ; [#uses=1]
+ %97 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info2, i32 0, i32 2 ; [#uses=1]
+ %98 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info2, i32 0, i32 3 ; [#uses=1]
+ %99 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info2, i32 0, i32 4 ; [#uses=1]
+ %100 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info2, i32 0, i32 5 ; [#uses=1]
+ %101 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info2, i32 0, i32 6 ; [#uses=1]
+ %102 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info2, i32 0, i32 7 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 10 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %105 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info2, i32 0, i32 13 ; [#uses=2]
+ %106 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info2, i32 0, i32 8 ; [#uses=1]
+ %107 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info2, i32 0, i32 9 ; [#uses=1]
+ %108 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info2, i32 0, i32 10 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 5 ; [#uses=1]
+ %110 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info2, i32 0, i32 12 ; [#uses=1]
+ br label %bb52
+
+bb25: ; preds = %bb52
+ %111 = load %struct.CONTACT_KEY_TOKEN** %54, align 4 ; [#uses=1]
+ %scevgep242243 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %111, i32 %405, i32 0 ; [#uses=4]
+ %112 = load i32* %scevgep242243, align 4 ; [#uses=2]
+ %113 = icmp eq i32 %112, 0 ; [#uses=1]
+ br i1 %113, label %bb51, label %bb27
+
+bb27: ; preds = %bb25
+ %114 = load %struct.btSolverConstraint** %92, align 4 ; [#uses=35]
+ %115 = load %struct.btTypedConstraint** %scevgep244, align 4 ; [#uses=3]
+ %116 = getelementptr inbounds %struct.btTypedConstraint* %115, i32 0, i32 5 ; [#uses=2]
+ %117 = load %struct.btRigidBody** %116, align 4 ; [#uses=18]
+ %118 = getelementptr inbounds %struct.btTypedConstraint* %115, i32 0, i32 6 ; [#uses=2]
+ %119 = load %struct.btRigidBody** %118, align 4 ; [#uses=18]
+ %120 = icmp sgt i32 %112, 0 ; [#uses=1]
+ br i1 %120, label %bb30, label %bb32
+
+bb30: ; preds = %bb30, %bb27
+ %j29.0173 = phi i32 [ %121, %bb30 ], [ 0, %bb27 ] ; [#uses=2]
+ %tmp198 = add i32 %currentRow.0, %j29.0173 ; [#uses=7]
+ %scevgep199 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp198 ; [#uses=1]
+ %scevgep199200 = bitcast %struct.btSolverConstraint* %scevgep199 to i8* ; [#uses=1]
+ %scevgep201 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp198, i32 16 ; [#uses=1]
+ %scevgep202 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp198, i32 17 ; [#uses=1]
+ %scevgep203 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp198, i32 6 ; [#uses=1]
+ %scevgep204 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp198, i32 5 ; [#uses=1]
+ %scevgep205 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp198, i32 11, i32 0 ; [#uses=1]
+ %scevgep206 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp198, i32 12, i32 0 ; [#uses=1]
+ call void @llvm.memset.p0i8.i32(i8* %scevgep199200, i8 0, i32 136, i32 4, i1 false)
+ store float 0xC7EFFFFFE0000000, float* %scevgep201, align 4
+ store float 0x47EFFFFFE0000000, float* %scevgep202, align 4
+ store float 0.000000e+00, float* %scevgep203, align 4
+ store float 0.000000e+00, float* %scevgep204, align 4
+ store %struct.btRigidBody* %117, %struct.btRigidBody** %scevgep205, align 4
+ store %struct.btRigidBody* %119, %struct.btRigidBody** %scevgep206, align 4
+ %121 = add nsw i32 %j29.0173, 1 ; [#uses=2]
+ %122 = load i32* %scevgep242243, align 4 ; [#uses=1]
+ %123 = icmp sgt i32 %122, %121 ; [#uses=1]
+ br i1 %123, label %bb30, label %bb32
+
+bb32: ; preds = %bb30, %bb27
+ %124 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 24, i32 0, i32 0 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 24, i32 0, i32 0 ; [#uses=1]
+ %126 = bitcast float* %124 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %126, i8 0, i64 32, i32 4, i1 false)
+ %127 = bitcast float* %125 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %127, i8 0, i64 32, i32 4, i1 false)
+ %128 = load float* %93, align 4 ; [#uses=1]
+ %129 = fdiv float 1.000000e+00, %128 ; [#uses=1]
+ store float %129, float* %94, align 8
+ %130 = load float* %95, align 4 ; [#uses=1]
+ store float %130, float* %96, align 4
+ %131 = getelementptr inbounds %struct.btSolverConstraint* %114, i32 %currentRow.0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float* %131, float** %97, align 8
+ %132 = getelementptr inbounds %struct.btSolverConstraint* %114, i32 %currentRow.0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float* %132, float** %98, align 4
+ store float* null, float** %99, align 8
+ %133 = getelementptr inbounds %struct.btSolverConstraint* %114, i32 %currentRow.0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float* %133, float** %100, align 4
+ store i32 34, i32* %101, align 8
+ %134 = getelementptr inbounds %struct.btSolverConstraint* %114, i32 %currentRow.0, i32 14 ; [#uses=1]
+ store float* %134, float** %102, align 4
+ %135 = load float* %103, align 4 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btSolverConstraint* %114, i32 %currentRow.0, i32 15 ; [#uses=2]
+ store float %135, float* %136, align 4
+ %137 = load float* %104, align 4 ; [#uses=1]
+ store float %137, float* %105, align 4
+ store float* %136, float** %106, align 8
+ %138 = getelementptr inbounds %struct.btSolverConstraint* %114, i32 %currentRow.0, i32 16 ; [#uses=1]
+ store float* %138, float** %107, align 4
+ %139 = getelementptr inbounds %struct.btSolverConstraint* %114, i32 %currentRow.0, i32 17 ; [#uses=1]
+ store float* %139, float** %108, align 8
+ %140 = load i32* %109, align 4 ; [#uses=1]
+ store i32 %140, i32* %110, align 8
+ %141 = load %struct.btTypedConstraint** %scevgep244, align 4 ; [#uses=2]
+ %142 = getelementptr inbounds %struct.btTypedConstraint* %141, i32 0, i32 0 ; [#uses=1]
+ %143 = load i32 (...)*** %142, align 4 ; [#uses=1]
+ %144 = getelementptr inbounds i32 (...)** %143, i32 5 ; [#uses=1]
+ %145 = load i32 (...)** %144, align 4 ; [#uses=1]
+ %146 = bitcast i32 (...)* %145 to void (%struct.btTypedConstraint*, %"struct.btTypedConstraint::btConstraintInfo2"*)* ; [#uses=1]
+ invoke void %146(%struct.btTypedConstraint* %141, %"struct.btTypedConstraint::btConstraintInfo2"* %info2)
+ to label %bb50.preheader unwind label %lpad
+
+bb50.preheader: ; preds = %bb32
+ %147 = load i32* %scevgep242243, align 4 ; [#uses=1]
+ %148 = icmp sgt i32 %147, 0 ; [#uses=1]
+ br i1 %148, label %bb.nph176, label %bb51.loopexit
+
+bb.nph176: ; preds = %bb50.preheader
+ %149 = bitcast %struct.btTypedConstraint* %115 to i8* ; [#uses=1]
+ %150 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 4 ; [#uses=1]
+ %151 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %153 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %155 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %156 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %157 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %160 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 4 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %163 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %169 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %170 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %172 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %173 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %175 = getelementptr inbounds %struct.btRigidBody* %117, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %176 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %177 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %178 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %179 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %180 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ br label %bb34
+
+bb34: ; preds = %bb34, %bb.nph176
+ %j29.1175 = phi i32 [ 0, %bb.nph176 ], [ %399, %bb34 ] ; [#uses=2]
+ %tmp208 = add i32 %currentRow.0, %j29.1175 ; [#uses=21]
+ %scevgep209 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 13, i32 0 ; [#uses=1]
+ %scevgep210 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep211 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep212213 = getelementptr inbounds %struct.btSolverConstraint* %114, i32 %tmp208, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep214 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 3, i32 0, i32 0 ; [#uses=1]
+ %scevgep215 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 3, i32 0, i32 1 ; [#uses=1]
+ %scevgep216 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 3, i32 0, i32 2 ; [#uses=1]
+ %scevgep217 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 3, i32 0, i32 3 ; [#uses=1]
+ %scevgep218 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep219 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep220 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep221 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 4, i32 0, i32 0 ; [#uses=1]
+ %scevgep222 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 4, i32 0, i32 1 ; [#uses=1]
+ %scevgep223 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 4, i32 0, i32 2 ; [#uses=1]
+ %scevgep224 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 4, i32 0, i32 3 ; [#uses=1]
+ %scevgep225 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep226 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep227 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep228 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 8 ; [#uses=1]
+ %scevgep229 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 14 ; [#uses=2]
+ %scevgep230 = getelementptr %struct.btSolverConstraint* %114, i32 %tmp208, i32 6 ; [#uses=1]
+ store i8* %149, i8** %scevgep209, align 4
+ %182 = load %struct.btRigidBody** %116, align 4 ; [#uses=12]
+ %183 = getelementptr inbounds %struct.btRigidBody* %182, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %184 = load float* %183, align 4 ; [#uses=1]
+ %185 = load float* %scevgep212213, align 4 ; [#uses=8]
+ %186 = fmul float %184, %185 ; [#uses=1]
+ %187 = getelementptr inbounds %struct.btRigidBody* %182, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %188 = load float* %187, align 4 ; [#uses=1]
+ %189 = load float* %scevgep211, align 4 ; [#uses=8]
+ %190 = fmul float %188, %189 ; [#uses=1]
+ %191 = fadd float %186, %190 ; [#uses=1]
+ %192 = getelementptr inbounds %struct.btRigidBody* %182, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %193 = load float* %192, align 4 ; [#uses=1]
+ %194 = load float* %scevgep210, align 4 ; [#uses=8]
+ %195 = fmul float %193, %194 ; [#uses=1]
+ %196 = fadd float %191, %195 ; [#uses=1]
+ %197 = getelementptr inbounds %struct.btRigidBody* %182, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %198 = load float* %197, align 4 ; [#uses=1]
+ %199 = fmul float %198, %185 ; [#uses=1]
+ %200 = getelementptr inbounds %struct.btRigidBody* %182, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %201 = load float* %200, align 4 ; [#uses=1]
+ %202 = fmul float %201, %189 ; [#uses=1]
+ %203 = fadd float %199, %202 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btRigidBody* %182, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %205 = load float* %204, align 4 ; [#uses=1]
+ %206 = fmul float %205, %194 ; [#uses=1]
+ %207 = fadd float %203, %206 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btRigidBody* %182, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %209 = load float* %208, align 4 ; [#uses=1]
+ %210 = fmul float %209, %185 ; [#uses=1]
+ %211 = getelementptr inbounds %struct.btRigidBody* %182, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %212 = load float* %211, align 4 ; [#uses=1]
+ %213 = fmul float %212, %189 ; [#uses=1]
+ %214 = fadd float %210, %213 ; [#uses=1]
+ %215 = getelementptr inbounds %struct.btRigidBody* %182, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %216 = load float* %215, align 4 ; [#uses=1]
+ %217 = fmul float %216, %194 ; [#uses=1]
+ %218 = fadd float %214, %217 ; [#uses=1]
+ %219 = getelementptr inbounds %struct.btRigidBody* %182, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %220 = load float* %219, align 4 ; [#uses=1]
+ %221 = fmul float %196, %220 ; [#uses=1]
+ %222 = getelementptr inbounds %struct.btRigidBody* %182, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %223 = load float* %222, align 4 ; [#uses=1]
+ %224 = fmul float %207, %223 ; [#uses=1]
+ %225 = getelementptr inbounds %struct.btRigidBody* %182, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %226 = load float* %225, align 4 ; [#uses=1]
+ %227 = fmul float %218, %226 ; [#uses=1]
+ store float %227, float* %scevgep214, align 4
+ store float %224, float* %scevgep215, align 4
+ store float %221, float* %scevgep216, align 4
+ store float 0.000000e+00, float* %scevgep217, align 4
+ %228 = load %struct.btRigidBody** %118, align 4 ; [#uses=12]
+ %229 = getelementptr inbounds %struct.btRigidBody* %228, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %230 = load float* %229, align 4 ; [#uses=1]
+ %231 = load float* %scevgep220, align 4 ; [#uses=8]
+ %232 = fmul float %230, %231 ; [#uses=1]
+ %233 = getelementptr inbounds %struct.btRigidBody* %228, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %234 = load float* %233, align 4 ; [#uses=1]
+ %235 = load float* %scevgep219, align 4 ; [#uses=8]
+ %236 = fmul float %234, %235 ; [#uses=1]
+ %237 = fadd float %232, %236 ; [#uses=1]
+ %238 = getelementptr inbounds %struct.btRigidBody* %228, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %239 = load float* %238, align 4 ; [#uses=1]
+ %240 = load float* %scevgep218, align 4 ; [#uses=8]
+ %241 = fmul float %239, %240 ; [#uses=1]
+ %242 = fadd float %237, %241 ; [#uses=1]
+ %243 = getelementptr inbounds %struct.btRigidBody* %228, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %244 = load float* %243, align 4 ; [#uses=1]
+ %245 = fmul float %244, %231 ; [#uses=1]
+ %246 = getelementptr inbounds %struct.btRigidBody* %228, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %247 = load float* %246, align 4 ; [#uses=1]
+ %248 = fmul float %247, %235 ; [#uses=1]
+ %249 = fadd float %245, %248 ; [#uses=1]
+ %250 = getelementptr inbounds %struct.btRigidBody* %228, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %251 = load float* %250, align 4 ; [#uses=1]
+ %252 = fmul float %251, %240 ; [#uses=1]
+ %253 = fadd float %249, %252 ; [#uses=1]
+ %254 = getelementptr inbounds %struct.btRigidBody* %228, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %255 = load float* %254, align 4 ; [#uses=1]
+ %256 = fmul float %255, %231 ; [#uses=1]
+ %257 = getelementptr inbounds %struct.btRigidBody* %228, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %258 = load float* %257, align 4 ; [#uses=1]
+ %259 = fmul float %258, %235 ; [#uses=1]
+ %260 = fadd float %256, %259 ; [#uses=1]
+ %261 = getelementptr inbounds %struct.btRigidBody* %228, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %262 = load float* %261, align 4 ; [#uses=1]
+ %263 = fmul float %262, %240 ; [#uses=1]
+ %264 = fadd float %260, %263 ; [#uses=1]
+ %265 = getelementptr inbounds %struct.btRigidBody* %228, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %266 = load float* %265, align 4 ; [#uses=1]
+ %267 = fmul float %242, %266 ; [#uses=1]
+ %268 = getelementptr inbounds %struct.btRigidBody* %228, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %269 = load float* %268, align 4 ; [#uses=1]
+ %270 = fmul float %253, %269 ; [#uses=1]
+ %271 = getelementptr inbounds %struct.btRigidBody* %228, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %272 = load float* %271, align 4 ; [#uses=1]
+ %273 = fmul float %264, %272 ; [#uses=1]
+ store float %273, float* %scevgep221, align 4
+ store float %270, float* %scevgep222, align 4
+ store float %267, float* %scevgep223, align 4
+ store float 0.000000e+00, float* %scevgep224, align 4
+ %274 = load float* %150, align 4 ; [#uses=3]
+ %275 = load float* %scevgep227, align 4 ; [#uses=6]
+ %276 = fmul float %275, %274 ; [#uses=1]
+ %277 = load float* %scevgep226, align 4 ; [#uses=6]
+ %278 = fmul float %277, %274 ; [#uses=1]
+ %279 = load float* %scevgep225, align 4 ; [#uses=6]
+ %280 = fmul float %279, %274 ; [#uses=1]
+ %281 = load float* %151, align 4 ; [#uses=1]
+ %282 = fmul float %281, %185 ; [#uses=1]
+ %283 = load float* %152, align 4 ; [#uses=1]
+ %284 = fmul float %283, %189 ; [#uses=1]
+ %285 = fadd float %282, %284 ; [#uses=1]
+ %286 = load float* %153, align 4 ; [#uses=1]
+ %287 = fmul float %286, %194 ; [#uses=1]
+ %288 = fadd float %285, %287 ; [#uses=1]
+ %289 = load float* %154, align 4 ; [#uses=1]
+ %290 = fmul float %289, %185 ; [#uses=1]
+ %291 = load float* %155, align 4 ; [#uses=1]
+ %292 = fmul float %291, %189 ; [#uses=1]
+ %293 = fadd float %290, %292 ; [#uses=1]
+ %294 = load float* %156, align 4 ; [#uses=1]
+ %295 = fmul float %294, %194 ; [#uses=1]
+ %296 = fadd float %293, %295 ; [#uses=1]
+ %297 = load float* %157, align 4 ; [#uses=1]
+ %298 = fmul float %297, %185 ; [#uses=1]
+ %299 = load float* %158, align 4 ; [#uses=1]
+ %300 = fmul float %299, %189 ; [#uses=1]
+ %301 = fadd float %298, %300 ; [#uses=1]
+ %302 = load float* %159, align 4 ; [#uses=1]
+ %303 = fmul float %302, %194 ; [#uses=1]
+ %304 = fadd float %301, %303 ; [#uses=1]
+ %305 = load float* %160, align 4 ; [#uses=3]
+ %306 = fmul float %275, %305 ; [#uses=1]
+ %307 = fmul float %277, %305 ; [#uses=1]
+ %308 = fmul float %279, %305 ; [#uses=1]
+ %309 = load float* %161, align 4 ; [#uses=1]
+ %310 = fmul float %309, %231 ; [#uses=1]
+ %311 = load float* %162, align 4 ; [#uses=1]
+ %312 = fmul float %311, %235 ; [#uses=1]
+ %313 = fadd float %310, %312 ; [#uses=1]
+ %314 = load float* %163, align 4 ; [#uses=1]
+ %315 = fmul float %314, %240 ; [#uses=1]
+ %316 = fadd float %313, %315 ; [#uses=1]
+ %317 = load float* %164, align 4 ; [#uses=1]
+ %318 = fmul float %317, %231 ; [#uses=1]
+ %319 = load float* %165, align 4 ; [#uses=1]
+ %320 = fmul float %319, %235 ; [#uses=1]
+ %321 = fadd float %318, %320 ; [#uses=1]
+ %322 = load float* %166, align 4 ; [#uses=1]
+ %323 = fmul float %322, %240 ; [#uses=1]
+ %324 = fadd float %321, %323 ; [#uses=1]
+ %325 = load float* %167, align 4 ; [#uses=1]
+ %326 = fmul float %325, %231 ; [#uses=1]
+ %327 = load float* %168, align 4 ; [#uses=1]
+ %328 = fmul float %327, %235 ; [#uses=1]
+ %329 = fadd float %326, %328 ; [#uses=1]
+ %330 = load float* %169, align 4 ; [#uses=1]
+ %331 = fmul float %330, %240 ; [#uses=1]
+ %332 = fadd float %329, %331 ; [#uses=1]
+ %333 = fmul float %280, %279 ; [#uses=1]
+ %334 = fmul float %278, %277 ; [#uses=1]
+ %335 = fadd float %333, %334 ; [#uses=1]
+ %336 = fmul float %276, %275 ; [#uses=1]
+ %337 = fadd float %335, %336 ; [#uses=1]
+ %338 = fmul float %304, %185 ; [#uses=1]
+ %339 = fmul float %296, %189 ; [#uses=1]
+ %340 = fadd float %338, %339 ; [#uses=1]
+ %341 = fmul float %288, %194 ; [#uses=1]
+ %342 = fadd float %340, %341 ; [#uses=1]
+ %343 = fadd float %342, %337 ; [#uses=1]
+ %344 = fmul float %308, %279 ; [#uses=1]
+ %345 = fmul float %307, %277 ; [#uses=1]
+ %346 = fadd float %344, %345 ; [#uses=1]
+ %347 = fmul float %306, %275 ; [#uses=1]
+ %348 = fadd float %346, %347 ; [#uses=1]
+ %349 = fadd float %348, %343 ; [#uses=1]
+ %350 = fmul float %332, %231 ; [#uses=1]
+ %351 = fmul float %324, %235 ; [#uses=1]
+ %352 = fadd float %350, %351 ; [#uses=1]
+ %353 = fmul float %316, %240 ; [#uses=1]
+ %354 = fadd float %352, %353 ; [#uses=1]
+ %355 = fadd float %354, %349 ; [#uses=1]
+ %356 = fdiv float 1.000000e+00, %355 ; [#uses=3]
+ store float %356, float* %scevgep228, align 4
+ %357 = load float* %170, align 4 ; [#uses=1]
+ %358 = fmul float %279, %357 ; [#uses=1]
+ %359 = load float* %171, align 4 ; [#uses=1]
+ %360 = fmul float %277, %359 ; [#uses=1]
+ %361 = fadd float %358, %360 ; [#uses=1]
+ %362 = load float* %172, align 4 ; [#uses=1]
+ %363 = fmul float %275, %362 ; [#uses=1]
+ %364 = fadd float %361, %363 ; [#uses=1]
+ %365 = load float* %173, align 4 ; [#uses=1]
+ %366 = fmul float %185, %365 ; [#uses=1]
+ %367 = load float* %174, align 4 ; [#uses=1]
+ %368 = fmul float %189, %367 ; [#uses=1]
+ %369 = fadd float %366, %368 ; [#uses=1]
+ %370 = load float* %175, align 4 ; [#uses=1]
+ %371 = fmul float %194, %370 ; [#uses=1]
+ %372 = fadd float %369, %371 ; [#uses=1]
+ %373 = fadd float %364, %372 ; [#uses=1]
+ %374 = load float* %176, align 4 ; [#uses=1]
+ %375 = fmul float %231, %374 ; [#uses=1]
+ %376 = load float* %177, align 4 ; [#uses=1]
+ %377 = fmul float %235, %376 ; [#uses=1]
+ %378 = fadd float %375, %377 ; [#uses=1]
+ %379 = load float* %178, align 4 ; [#uses=1]
+ %380 = fmul float %240, %379 ; [#uses=1]
+ %381 = fadd float %378, %380 ; [#uses=1]
+ %382 = load float* %179, align 4 ; [#uses=1]
+ %383 = fmul float %279, %382 ; [#uses=1]
+ %384 = load float* %180, align 4 ; [#uses=1]
+ %385 = fmul float %277, %384 ; [#uses=1]
+ %386 = fadd float %383, %385 ; [#uses=1]
+ %387 = load float* %181, align 4 ; [#uses=1]
+ %388 = fmul float %275, %387 ; [#uses=1]
+ %389 = fadd float %386, %388 ; [#uses=1]
+ %390 = fsub float %381, %389 ; [#uses=1]
+ %391 = fadd float %373, %390 ; [#uses=1]
+ %392 = load float* %scevgep229, align 4 ; [#uses=1]
+ %393 = load float* %105, align 4 ; [#uses=1]
+ %394 = fmul float %393, %391 ; [#uses=1]
+ %395 = fsub float 0.000000e+00, %394 ; [#uses=1]
+ %396 = fmul float %356, %392 ; [#uses=1]
+ %397 = fmul float %356, %395 ; [#uses=1]
+ %398 = fadd float %396, %397 ; [#uses=1]
+ store float %398, float* %scevgep229, align 4
+ store float 0.000000e+00, float* %scevgep230, align 4
+ %399 = add nsw i32 %j29.1175, 1 ; [#uses=2]
+ %400 = load i32* %scevgep242243, align 4 ; [#uses=1]
+ %401 = icmp sgt i32 %400, %399 ; [#uses=1]
+ br i1 %401, label %bb34, label %bb51.loopexit
+
+bb51.loopexit: ; preds = %bb34, %bb50.preheader
+ %.pre = load %struct.CONTACT_KEY_TOKEN** %54, align 4 ; [#uses=1]
+ %scevgep236237.phi.trans.insert = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %.pre, i32 %405, i32 0 ; [#uses=1]
+ %.pre254 = load i32* %scevgep236237.phi.trans.insert, align 4 ; [#uses=1]
+ br label %bb51
+
+bb51: ; preds = %bb51.loopexit, %bb25
+ %402 = phi i32 [ %.pre254, %bb51.loopexit ], [ 0, %bb25 ] ; [#uses=1]
+ %403 = add nsw i32 %402, %currentRow.0 ; [#uses=1]
+ %404 = add nsw i32 %405, 1 ; [#uses=1]
+ br label %bb52
+
+bb52: ; preds = %bb51, %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit
+ %405 = phi i32 [ %404, %bb51 ], [ 0, %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit ] ; [#uses=5]
+ %currentRow.0 = phi i32 [ %403, %bb51 ], [ 0, %_ZN20btAlignedObjectArrayI18btSolverConstraintE6resizeEiRKS0_.exit ] ; [#uses=10]
+ %scevgep244 = getelementptr %struct.btTypedConstraint** %constraints, i32 %405 ; [#uses=2]
+ %406 = icmp slt i32 %405, %numConstraints ; [#uses=1]
+ br i1 %406, label %bb25, label %bb59
+
+bb57: ; preds = %bb59
+ %scevgep197 = getelementptr %struct.btPersistentManifold** %manifoldPtr, i32 %409 ; [#uses=1]
+ %407 = load %struct.btPersistentManifold** %scevgep197, align 4 ; [#uses=1]
+ invoke void @_ZN35btSequentialImpulseConstraintSolver14convertContactEP20btPersistentManifoldRK19btContactSolverInfo(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btPersistentManifold* %407, %struct.btContactSolverInfo* %infoGlobal)
+ to label %invcont58 unwind label %lpad
+
+invcont58: ; preds = %bb57
+ %408 = add nsw i32 %409, 1 ; [#uses=1]
+ br label %bb59
+
+bb59: ; preds = %invcont58, %bb52
+ %409 = phi i32 [ %408, %invcont58 ], [ 0, %bb52 ] ; [#uses=3]
+ %410 = icmp slt i32 %409, %numManifolds ; [#uses=1]
+ br i1 %410, label %bb57, label %bb60
+
+bb60: ; preds = %bb59
+ %411 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ %412 = load i32* %411, align 4 ; [#uses=3]
+ %413 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ %414 = load i32* %413, align 4 ; [#uses=3]
+ store i32 0, i32* %1, align 4
+ %415 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayIiE6resizeEiRKi(%"struct.btAlignedObjectArray<int>"* %415, i32 %412, i32* %1) inlinehint
+ to label %invcont62 unwind label %lpad
+
+invcont62: ; preds = %bb60
+ store i32 0, i32* %0, align 4
+ %416 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayIiE6resizeEiRKi(%"struct.btAlignedObjectArray<int>"* %416, i32 %414, i32* %0) inlinehint
+ to label %bb67.preheader unwind label %lpad
+
+bb67.preheader: ; preds = %invcont62
+ %417 = icmp sgt i32 %412, 0 ; [#uses=1]
+ br i1 %417, label %bb.nph172, label %bb70.preheader
+
+bb.nph172: ; preds = %bb67.preheader
+ %418 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ br label %bb66
+
+bb66: ; preds = %bb66, %bb.nph172
+ %419 = phi i32 [ 0, %bb.nph172 ], [ %421, %bb66 ] ; [#uses=3]
+ %420 = load i32** %418, align 4 ; [#uses=1]
+ %scevgep196 = getelementptr i32* %420, i32 %419 ; [#uses=1]
+ store i32 %419, i32* %scevgep196, align 4
+ %421 = add nsw i32 %419, 1 ; [#uses=2]
+ %exitcond195 = icmp eq i32 %421, %412 ; [#uses=1]
+ br i1 %exitcond195, label %bb70.preheader, label %bb66
+
+bb70.preheader: ; preds = %bb66, %bb67.preheader
+ %422 = icmp sgt i32 %414, 0 ; [#uses=1]
+ br i1 %422, label %bb.nph170, label %bb77
+
+bb.nph170: ; preds = %bb70.preheader
+ %423 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ br label %bb69
+
+bb69: ; preds = %bb69, %bb.nph170
+ %424 = phi i32 [ 0, %bb.nph170 ], [ %426, %bb69 ] ; [#uses=3]
+ %425 = load i32** %423, align 4 ; [#uses=1]
+ %scevgep194 = getelementptr i32* %425, i32 %424 ; [#uses=1]
+ store i32 %424, i32* %scevgep194, align 4
+ %426 = add nsw i32 %424, 1 ; [#uses=2]
+ %exitcond193 = icmp eq i32 %426, %414 ; [#uses=1]
+ br i1 %exitcond193, label %bb77, label %bb69
+
+invcont75: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb77: ; preds = %bb69, %bb70.preheader, %entry
+ call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret float 0.000000e+00
+
+lpad: ; preds = %invcont62, %bb60, %bb57, %bb32, %bb1.i.i.i, %bb.i2.i.i, %bb20, %bb17, %bb15
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select80 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont75 unwind label %lpad81
+
+lpad81: ; preds = %lpad
+ %eh_ptr82 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select84 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr82, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define float @_ZN35btSequentialImpulseConstraintSolver33solveGroupCacheFriendlyIterationsEPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btCollisionObject** %bodies, i32 %numBodies, %struct.btPersistentManifold** %manifoldPtr, i32 %numManifolds, %struct.btTypedConstraint** %constraints, i32 %numConstraints, %struct.btContactSolverInfo* %infoGlobal, %struct.btActionInterface* %debugDrawer, %struct.btStackAlloc* %stackAlloc) align 2 {
+entry:
+ tail call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([34 x i8]* @.str17, i32 0, i32 0))
+ %0 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 5 ; [#uses=1]
+ br label %bb1
+
+bb: ; preds = %bb1
+ %1 = invoke float @_ZN35btSequentialImpulseConstraintSolver20solveSingleIterationEiPP17btCollisionObjectiPP20btPersistentManifoldiPP17btTypedConstraintiRK19btContactSolverInfoP12btIDebugDrawP12btStackAlloc(%struct.btSequentialImpulseConstraintSolver* %this, i32 %3, %struct.btCollisionObject** %bodies, i32 %numBodies, %struct.btPersistentManifold** %manifoldPtr, i32 %numManifolds, %struct.btTypedConstraint** %constraints, i32 %numConstraints, %struct.btContactSolverInfo* %infoGlobal, %struct.btActionInterface* %debugDrawer, %struct.btStackAlloc* %stackAlloc)
+ to label %invcont unwind label %lpad ; [#uses=0]
+
+invcont: ; preds = %bb
+ %2 = add nsw i32 %3, 1 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %invcont, %entry
+ %3 = phi i32 [ 0, %entry ], [ %2, %invcont ] ; [#uses=3]
+ %4 = load i32* %0, align 4 ; [#uses=1]
+ %5 = icmp sgt i32 %4, %3 ; [#uses=1]
+ br i1 %5, label %bb, label %bb2
+
+bb2: ; preds = %bb1
+ %6 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 6 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to void (%struct.btSequentialImpulseConstraintSolver*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, %struct.btTypedConstraint**, i32, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*)* ; [#uses=1]
+ invoke void %10(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btCollisionObject** %bodies, i32 %numBodies, %struct.btPersistentManifold** %manifoldPtr, i32 %numManifolds, %struct.btTypedConstraint** %constraints, i32 %numConstraints, %struct.btContactSolverInfo* %infoGlobal, %struct.btActionInterface* %debugDrawer, %struct.btStackAlloc* %stackAlloc)
+ to label %invcont3 unwind label %lpad
+
+invcont3: ; preds = %bb2
+ tail call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret float 0.000000e+00
+
+invcont5: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %bb2, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select9 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont5 unwind label %lpad10
+
+lpad10: ; preds = %lpad
+ %eh_ptr11 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select13 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr11, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN35btSequentialImpulseConstraintSolverD2Ev(%struct.btSequentialImpulseConstraintSolver* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([12 x i32 (...)*]* @_ZTV35btSequentialImpulseConstraintSolver, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 3 ; [#uses=3]
+ %2 = load %struct.CONTACT_KEY_TOKEN** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.CONTACT_KEY_TOKEN* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.CONTACT_KEY_TOKEN* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad57
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %1, align 4
+ %8 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 3 ; [#uses=3]
+ %11 = load i32** %10, align 4 ; [#uses=2]
+ %12 = icmp eq i32* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i92
+
+bb.i.i.i92: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i91 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i91, label %bb2.i.i.i94, label %bb1.i.i.i93
+
+bb1.i.i.i93: ; preds = %bb.i.i.i92
+ %15 = bitcast i32* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i94 unwind label %lpad53
+
+bb2.i.i.i94: ; preds = %bb1.i.i.i93, %bb.i.i.i92
+ store i32* null, i32** %10, align 4
+ br label %bb10
+
+bb10: ; preds = %bb2.i.i.i94, %bb3
+ %16 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store i32* null, i32** %10, align 4
+ %17 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %20 = load i32** %19, align 4 ; [#uses=2]
+ %21 = icmp eq i32* %20, null ; [#uses=1]
+ br i1 %21, label %bb19, label %bb.i.i.i97
+
+bb.i.i.i97: ; preds = %bb10
+ %22 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i.i96 = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i96, label %bb2.i.i.i99, label %bb1.i.i.i98
+
+bb1.i.i.i98: ; preds = %bb.i.i.i97
+ %24 = bitcast i32* %20 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %24)
+ to label %bb2.i.i.i99 unwind label %lpad49
+
+bb2.i.i.i99: ; preds = %bb1.i.i.i98, %bb.i.i.i97
+ store i32* null, i32** %19, align 4
+ br label %bb19
+
+bb19: ; preds = %bb2.i.i.i99, %bb10
+ %25 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ store i32* null, i32** %19, align 4
+ %26 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %29 = load %struct.btSolverConstraint** %28, align 4 ; [#uses=2]
+ %30 = icmp eq %struct.btSolverConstraint* %29, null ; [#uses=1]
+ br i1 %30, label %bb28, label %bb.i.i.i103
+
+bb.i.i.i103: ; preds = %bb19
+ %31 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %32 = load i8* %31, align 4 ; [#uses=1]
+ %toBool.i.i.i102 = icmp eq i8 %32, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i102, label %bb2.i.i.i105, label %bb1.i.i.i104
+
+bb1.i.i.i104: ; preds = %bb.i.i.i103
+ %33 = bitcast %struct.btSolverConstraint* %29 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %33)
+ to label %bb2.i.i.i105 unwind label %lpad45
+
+bb2.i.i.i105: ; preds = %bb1.i.i.i104, %bb.i.i.i103
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %28, align 4
+ br label %bb28
+
+bb28: ; preds = %bb2.i.i.i105, %bb19
+ %34 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %34, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %28, align 4
+ %35 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %35, align 4
+ %36 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %36, align 4
+ %37 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %38 = load %struct.btSolverConstraint** %37, align 4 ; [#uses=2]
+ %39 = icmp eq %struct.btSolverConstraint* %38, null ; [#uses=1]
+ br i1 %39, label %bb37, label %bb.i.i.i108
+
+bb.i.i.i108: ; preds = %bb28
+ %40 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %41 = load i8* %40, align 4 ; [#uses=1]
+ %toBool.i.i.i107 = icmp eq i8 %41, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i107, label %bb2.i.i.i110, label %bb1.i.i.i109
+
+bb1.i.i.i109: ; preds = %bb.i.i.i108
+ %42 = bitcast %struct.btSolverConstraint* %38 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %42)
+ to label %bb2.i.i.i110 unwind label %lpad
+
+bb2.i.i.i110: ; preds = %bb1.i.i.i109, %bb.i.i.i108
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %37, align 4
+ br label %bb37
+
+invcont35: ; preds = %bb2.i.i.i127, %ppad
+ %43 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %43, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %67, align 4
+ %44 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %44, align 4
+ %45 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %45, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.3)
+ unreachable
+
+bb37: ; preds = %bb2.i.i.i110, %bb28
+ %46 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %46, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %37, align 4
+ %47 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %47, align 4
+ %48 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %48, align 4
+ %49 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %50 = load %struct.btSolverConstraint** %49, align 4 ; [#uses=2]
+ %51 = icmp eq %struct.btSolverConstraint* %50, null ; [#uses=1]
+ br i1 %51, label %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit117, label %bb.i.i.i114
+
+bb.i.i.i114: ; preds = %bb37
+ %52 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %53 = load i8* %52, align 4 ; [#uses=1]
+ %toBool.i.i.i113 = icmp eq i8 %53, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i113, label %bb2.i.i.i116, label %bb1.i.i.i115
+
+bb1.i.i.i115: ; preds = %bb.i.i.i114
+ %54 = bitcast %struct.btSolverConstraint* %50 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %54)
+ br label %bb2.i.i.i116
+
+bb2.i.i.i116: ; preds = %bb1.i.i.i115, %bb.i.i.i114
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %49, align 4
+ br label %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit117
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit117: ; preds = %bb2.i.i.i116, %bb37
+ %55 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %55, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %49, align 4
+ %56 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %56, align 4
+ %57 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %57, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i109
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select44 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad45: ; preds = %bb1.i.i.i104
+ %eh_ptr46 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select48 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr46, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad81
+
+lpad49: ; preds = %bb1.i.i.i98
+ %eh_ptr50 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select52 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr50, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad82
+
+lpad53: ; preds = %bb1.i.i.i93
+ %eh_ptr54 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select56 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr54, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad83
+
+lpad57: ; preds = %bb1.i.i.i
+ %eh_ptr58 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select60 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr58, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %58 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 3 ; [#uses=3]
+ %59 = load i32** %58, align 4 ; [#uses=2]
+ %60 = icmp eq i32* %59, null ; [#uses=1]
+ br i1 %60, label %_ZN20btAlignedObjectArrayIiED1Ev.exit123, label %bb.i.i.i119
+
+bb.i.i.i119: ; preds = %lpad57
+ %61 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ %62 = load i8* %61, align 4 ; [#uses=1]
+ %toBool.i.i.i118 = icmp eq i8 %62, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i118, label %bb2.i.i.i121, label %bb1.i.i.i120
+
+bb1.i.i.i120: ; preds = %bb.i.i.i119
+ %63 = bitcast i32* %59 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %63)
+ to label %bb2.i.i.i121 unwind label %lpad61
+
+bb2.i.i.i121: ; preds = %bb1.i.i.i120, %bb.i.i.i119
+ store i32* null, i32** %58, align 4
+ br label %_ZN20btAlignedObjectArrayIiED1Ev.exit123
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit123: ; preds = %bb2.i.i.i121, %lpad57
+ %64 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %64, align 4
+ store i32* null, i32** %58, align 4
+ %65 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %65, align 4
+ %66 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %66, align 4
+ br label %ppad83
+
+lpad61: ; preds = %bb1.i.i.i120
+ %eh_ptr62 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select64 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr62, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad65: ; preds = %bb1.i.i.i144
+ %eh_ptr66 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select68 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr66, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad69: ; preds = %bb1.i.i.i138
+ %eh_ptr70 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select72 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr70, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad73: ; preds = %bb1.i.i.i132
+ %eh_ptr74 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select76 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr74, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad77: ; preds = %bb1.i.i.i126
+ %eh_ptr78 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select80 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr78, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit135, %lpad
+ %eh_exception.3 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.2, %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit135 ] ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %68 = load %struct.btSolverConstraint** %67, align 4 ; [#uses=2]
+ %69 = icmp eq %struct.btSolverConstraint* %68, null ; [#uses=1]
+ br i1 %69, label %invcont35, label %bb.i.i.i125
+
+bb.i.i.i125: ; preds = %ppad
+ %70 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %71 = load i8* %70, align 4 ; [#uses=1]
+ %toBool.i.i.i124 = icmp eq i8 %71, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i124, label %bb2.i.i.i127, label %bb1.i.i.i126
+
+bb1.i.i.i126: ; preds = %bb.i.i.i125
+ %72 = bitcast %struct.btSolverConstraint* %68 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %72)
+ to label %bb2.i.i.i127 unwind label %lpad77
+
+bb2.i.i.i127: ; preds = %bb1.i.i.i126, %bb.i.i.i125
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %67, align 4
+ br label %invcont35
+
+ppad81: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit141, %lpad45
+ %eh_exception.2 = phi i8* [ %eh_ptr46, %lpad45 ], [ %eh_exception.1, %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit141 ] ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %74 = load %struct.btSolverConstraint** %73, align 4 ; [#uses=2]
+ %75 = icmp eq %struct.btSolverConstraint* %74, null ; [#uses=1]
+ br i1 %75, label %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit135, label %bb.i.i.i131
+
+bb.i.i.i131: ; preds = %ppad81
+ %76 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %77 = load i8* %76, align 4 ; [#uses=1]
+ %toBool.i.i.i130 = icmp eq i8 %77, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i130, label %bb2.i.i.i133, label %bb1.i.i.i132
+
+bb1.i.i.i132: ; preds = %bb.i.i.i131
+ %78 = bitcast %struct.btSolverConstraint* %74 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %78)
+ to label %bb2.i.i.i133 unwind label %lpad73
+
+bb2.i.i.i133: ; preds = %bb1.i.i.i132, %bb.i.i.i131
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %73, align 4
+ br label %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit135
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit135: ; preds = %bb2.i.i.i133, %ppad81
+ %79 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %79, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %73, align 4
+ %80 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %80, align 4
+ %81 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %81, align 4
+ br label %ppad
+
+ppad82: ; preds = %_ZN20btAlignedObjectArrayIiED1Ev.exit147, %lpad49
+ %eh_exception.1 = phi i8* [ %eh_ptr50, %lpad49 ], [ %eh_exception.0, %_ZN20btAlignedObjectArrayIiED1Ev.exit147 ] ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %83 = load %struct.btSolverConstraint** %82, align 4 ; [#uses=2]
+ %84 = icmp eq %struct.btSolverConstraint* %83, null ; [#uses=1]
+ br i1 %84, label %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit141, label %bb.i.i.i137
+
+bb.i.i.i137: ; preds = %ppad82
+ %85 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %86 = load i8* %85, align 4 ; [#uses=1]
+ %toBool.i.i.i136 = icmp eq i8 %86, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i136, label %bb2.i.i.i139, label %bb1.i.i.i138
+
+bb1.i.i.i138: ; preds = %bb.i.i.i137
+ %87 = bitcast %struct.btSolverConstraint* %83 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %87)
+ to label %bb2.i.i.i139 unwind label %lpad69
+
+bb2.i.i.i139: ; preds = %bb1.i.i.i138, %bb.i.i.i137
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %82, align 4
+ br label %_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit141
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintED1Ev.exit141: ; preds = %bb2.i.i.i139, %ppad82
+ %88 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %88, align 4
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %82, align 4
+ %89 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %89, align 4
+ %90 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %90, align 4
+ br label %ppad81
+
+ppad83: ; preds = %_ZN20btAlignedObjectArrayIiED1Ev.exit123, %lpad53
+ %eh_exception.0 = phi i8* [ %eh_ptr54, %lpad53 ], [ %eh_ptr58, %_ZN20btAlignedObjectArrayIiED1Ev.exit123 ] ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %92 = load i32** %91, align 4 ; [#uses=2]
+ %93 = icmp eq i32* %92, null ; [#uses=1]
+ br i1 %93, label %_ZN20btAlignedObjectArrayIiED1Ev.exit147, label %bb.i.i.i143
+
+bb.i.i.i143: ; preds = %ppad83
+ %94 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %95 = load i8* %94, align 4 ; [#uses=1]
+ %toBool.i.i.i142 = icmp eq i8 %95, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i142, label %bb2.i.i.i145, label %bb1.i.i.i144
+
+bb1.i.i.i144: ; preds = %bb.i.i.i143
+ %96 = bitcast i32* %92 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %96)
+ to label %bb2.i.i.i145 unwind label %lpad65
+
+bb2.i.i.i145: ; preds = %bb1.i.i.i144, %bb.i.i.i143
+ store i32* null, i32** %91, align 4
+ br label %_ZN20btAlignedObjectArrayIiED1Ev.exit147
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit147: ; preds = %bb2.i.i.i145, %ppad83
+ %97 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %97, align 4
+ store i32* null, i32** %91, align 4
+ %98 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %98, align 4
+ %99 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %99, align 4
+ br label %ppad82
+}
+
+; [#uses=0]
+define void @_ZN35btSequentialImpulseConstraintSolverC2Ev(%struct.btSequentialImpulseConstraintSolver* nocapture %this) align 2 {
+invcont5:
+ %0 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([12 x i32 (...)*]* @_ZTV35btSequentialImpulseConstraintSolver, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %1, align 4
+ %2 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %2, align 4
+ %3 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %5, align 4
+ %6 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %6, align 4
+ %7 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %9, align 4
+ %10 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %10, align 4
+ %11 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %13, align 4
+ %14 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ store i32* null, i32** %14, align 4
+ %15 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %17, align 4
+ %18 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ store i32* null, i32** %18, align 4
+ %19 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %19, align 4
+ %20 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %20, align 4
+ %21 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 4 ; [#uses=1]
+ store i8 1, i8* %21, align 4
+ %22 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 3 ; [#uses=1]
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %22, align 4
+ %23 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 1 ; [#uses=1]
+ store i32 0, i32* %23, align 4
+ %24 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 2 ; [#uses=1]
+ store i32 0, i32* %24, align 4
+ %25 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 0, i32* %25, align 4
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN35btSequentialImpulseConstraintSolverC1Ev(%struct.btSequentialImpulseConstraintSolver* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([12 x i32 (...)*]* @_ZTV35btSequentialImpulseConstraintSolver, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %1, align 4
+ %2 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %2, align 4
+ %3 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %5, align 4
+ %6 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %6, align 4
+ %7 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %9, align 4
+ %10 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %10, align 4
+ %11 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %13, align 4
+ %14 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ store i32* null, i32** %14, align 4
+ %15 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %17, align 4
+ %18 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 3 ; [#uses=1]
+ store i32* null, i32** %18, align 4
+ %19 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 1 ; [#uses=1]
+ store i32 0, i32* %19, align 4
+ %20 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %20, align 4
+ %21 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 4 ; [#uses=1]
+ store i8 1, i8* %21, align 4
+ %22 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 3 ; [#uses=1]
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %22, align 4
+ %23 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 1 ; [#uses=1]
+ store i32 0, i32* %23, align 4
+ %24 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 6, i32 2 ; [#uses=1]
+ store i32 0, i32* %24, align 4
+ %25 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 7 ; [#uses=1]
+ store i32 0, i32* %25, align 4
+ ret void
+}
+
+; [#uses=6]
+define %struct.btSolverConstraint* @_ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btQuadWord* nocapture %normalAxis, %struct.btRigidBody* nocapture %solverBodyA, %struct.btRigidBody* nocapture %solverBodyB, i32 %frictionIndex, %struct.btManifoldPoint* nocapture %cp, %struct.btQuadWord* nocapture %rel_pos1, %struct.btQuadWord* nocapture %rel_pos2, %struct.btCollisionObject* %colObj0, %struct.btCollisionObject* %colObj1, float %relaxation, float %desiredVelocity, float %cfmSlip) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 1 ; [#uses=4]
+ %1 = load i32* %0, align 4 ; [#uses=8]
+ %2 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb.i, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE21expandNonInitializingEv.exit
+
+bb.i: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.207.0.i.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.207.0.i.i ; [#uses=1]
+ br i1 %7, label %bb.i.i, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE21expandNonInitializingEv.exit
+
+bb.i.i: ; preds = %bb.i
+ %8 = icmp eq i32 %iftmp.207.0.i.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %9 = mul i32 %iftmp.207.0.i.i, 136 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %10 to %struct.btSolverConstraint* ; [#uses=1]
+ %.pre.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %11 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %1, %bb.i.i ] ; [#uses=2]
+ %12 = phi %struct.btSolverConstraint* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i
+ %14 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb.i4.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb.i4.i.i ] ; [#uses=3]
+ %scevgep3 = getelementptr %struct.btSolverConstraint* %12, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep5.i.i.i = bitcast %struct.btSolverConstraint* %scevgep3 to i8* ; [#uses=1]
+ %15 = load %struct.btSolverConstraint** %14, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btSolverConstraint* %15, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep67.i.i.i = bitcast %struct.btSolverConstraint* %scevgep to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep5.i.i.i, i8* %scevgep67.i.i.i, i32 136, i32 4, i1 false) nounwind
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i: ; preds = %bb.i4.i.i, %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i
+ %16 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %17 = load %struct.btSolverConstraint** %16, align 4 ; [#uses=2]
+ %18 = icmp eq %struct.btSolverConstraint* %17, null ; [#uses=1]
+ br i1 %18, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i
+ %19 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %20 = load i8* %19, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %20, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %21 = bitcast %struct.btSolverConstraint* %17 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %21)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %16, align 4
+ br label %_ZN20btAlignedObjectArrayI18btSolverConstraintE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i
+ %22 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %22, align 4
+ store %struct.btSolverConstraint* %12, %struct.btSolverConstraint** %16, align 4
+ store i32 %iftmp.207.0.i.i, i32* %2, align 4
+ %.pre6.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI18btSolverConstraintE21expandNonInitializingEv.exit
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE21expandNonInitializingEv.exit: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintE10deallocateEv.exit.i.i, %bb.i, %entry
+ %23 = phi i32 [ %.pre6.i, %_ZN20btAlignedObjectArrayI18btSolverConstraintE10deallocateEv.exit.i.i ], [ %1, %entry ], [ %1, %bb.i ] ; [#uses=1]
+ %24 = add nsw i32 %23, 1 ; [#uses=1]
+ store i32 %24, i32* %0, align 4
+ %25 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %26 = load %struct.btSolverConstraint** %25, align 4 ; [#uses=2]
+ %27 = getelementptr inbounds %struct.btSolverConstraint* %26, i32 %1 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btSolverConstraint* %26, i32 %1, i32 10, i32 0 ; [#uses=1]
+ store i32 %frictionIndex, i32* %28, align 4
+ tail call void @_ZN35btSequentialImpulseConstraintSolver23setupFrictionConstraintER18btSolverConstraintRK9btVector3P11btRigidBodyS6_R15btManifoldPointS4_S4_P17btCollisionObjectSA_fff(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btSolverConstraint* %27, %struct.btQuadWord* %normalAxis, %struct.btRigidBody* %solverBodyA, %struct.btRigidBody* %solverBodyB, %struct.btManifoldPoint* %cp, %struct.btQuadWord* %rel_pos1, %struct.btQuadWord* %rel_pos2, %struct.btCollisionObject* %colObj0, %struct.btCollisionObject* %colObj1, float %relaxation, float %desiredVelocity, float %cfmSlip)
+ ret %struct.btSolverConstraint* %27
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIN17btTypedConstraint17btConstraintInfo1EE6resizeEiRKS1_(%"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* nocapture %this, i32 %newsize, %struct.CONTACT_KEY_TOKEN* nocapture %fillData) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = icmp sgt i32 %1, %newsize ; [#uses=1]
+ br i1 %2, label %bb12, label %bb3
+
+bb3: ; preds = %entry
+ %3 = icmp slt i32 %1, %newsize ; [#uses=2]
+ br i1 %3, label %bb4, label %bb12
+
+bb4: ; preds = %bb3
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 2 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp slt i32 %5, %newsize ; [#uses=1]
+ br i1 %6, label %bb.i, label %bb.nph
+
+bb.i: ; preds = %bb4
+ %7 = icmp eq i32 %newsize, 0 ; [#uses=1]
+ br i1 %7, label %_ZN20btAlignedObjectArrayIN17btTypedConstraint17btConstraintInfo1EE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %8 = shl i32 %newsize, 3 ; [#uses=1]
+ %9 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %8, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %9 to %struct.CONTACT_KEY_TOKEN* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIN17btTypedConstraint17btConstraintInfo1EE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayIN17btTypedConstraint17btConstraintInfo1EE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %10 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %11 = phi %struct.CONTACT_KEY_TOKEN* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=4]
+ %12 = icmp sgt i32 %10, 0 ; [#uses=1]
+ br i1 %12, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayIN17btTypedConstraint17btConstraintInfo1EE4copyEiiPS1_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayIN17btTypedConstraint17btConstraintInfo1EE8allocateEi.exit.i
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=6]
+ %scevgep.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %11, i32 %indvar.i.i ; [#uses=1]
+ %14 = icmp eq %struct.CONTACT_KEY_TOKEN* %scevgep.i.i, null ; [#uses=1]
+ br i1 %14, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %scevgep12.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %11, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %scevgep11.i.i = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %11, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %15 = load %struct.CONTACT_KEY_TOKEN** %13, align 4 ; [#uses=2]
+ %scevgep89.i.i = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %15, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %16 = load i32* %scevgep89.i.i, align 4 ; [#uses=1]
+ %scevgep10.i.i = getelementptr %struct.CONTACT_KEY_TOKEN* %15, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %17 = load i32* %scevgep10.i.i, align 4 ; [#uses=1]
+ store i32 %16, i32* %scevgep11.i.i, align 4
+ store i32 %17, i32* %scevgep12.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond21 = icmp eq i32 %indvar.next.i.i, %10 ; [#uses=1]
+ br i1 %exitcond21, label %_ZNK20btAlignedObjectArrayIN17btTypedConstraint17btConstraintInfo1EE4copyEiiPS1_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIN17btTypedConstraint17btConstraintInfo1EE4copyEiiPS1_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIN17btTypedConstraint17btConstraintInfo1EE8allocateEi.exit.i
+ %18 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 3 ; [#uses=3]
+ %19 = load %struct.CONTACT_KEY_TOKEN** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.CONTACT_KEY_TOKEN* %19, null ; [#uses=1]
+ br i1 %20, label %bb11.preheader, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIN17btTypedConstraint17btConstraintInfo1EE4copyEiiPS1_.exit.i
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %23 = bitcast %struct.CONTACT_KEY_TOKEN* %19 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.CONTACT_KEY_TOKEN* null, %struct.CONTACT_KEY_TOKEN** %18, align 4
+ br label %bb11.preheader
+
+bb11.preheader: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIN17btTypedConstraint17btConstraintInfo1EE4copyEiiPS1_.exit.i
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store %struct.CONTACT_KEY_TOKEN* %11, %struct.CONTACT_KEY_TOKEN** %18, align 4
+ store i32 %newsize, i32* %4, align 4
+ br i1 %3, label %bb.nph, label %bb12
+
+bb.nph: ; preds = %bb11.preheader, %bb4
+ %25 = getelementptr inbounds %"struct.btAlignedObjectArray<CONTACT_KEY_TOKEN>"* %this, i32 0, i32 3 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %fillData, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %fillData, i32 0, i32 1 ; [#uses=1]
+ %tmp = sub i32 %newsize, %1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb10, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb10 ] ; [#uses=2]
+ %tmp17 = add i32 %1, %indvar ; [#uses=3]
+ %28 = load %struct.CONTACT_KEY_TOKEN** %25, align 4 ; [#uses=3]
+ %scevgep = getelementptr %struct.CONTACT_KEY_TOKEN* %28, i32 %tmp17 ; [#uses=1]
+ %29 = icmp eq %struct.CONTACT_KEY_TOKEN* %scevgep, null ; [#uses=1]
+ br i1 %29, label %bb10, label %bb8
+
+bb8: ; preds = %bb7
+ %30 = load i32* %26, align 4 ; [#uses=1]
+ %31 = load i32* %27, align 4 ; [#uses=1]
+ %scevgep1819 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %28, i32 %tmp17, i32 0 ; [#uses=1]
+ store i32 %30, i32* %scevgep1819, align 4
+ %scevgep20 = getelementptr %struct.CONTACT_KEY_TOKEN* %28, i32 %tmp17, i32 1 ; [#uses=1]
+ store i32 %31, i32* %scevgep20, align 4
+ br label %bb10
+
+bb10: ; preds = %bb8, %bb7
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; [#uses=1]
+ br i1 %exitcond, label %bb12, label %bb7
+
+bb12: ; preds = %bb10, %bb11.preheader, %bb3, %entry
+ store i32 %newsize, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN35btSequentialImpulseConstraintSolver14convertContactEP20btPersistentManifoldRK19btContactSolverInfo(%struct.btSequentialImpulseConstraintSolver* nocapture %this, %struct.btPersistentManifold* %manifold, %struct.btContactSolverInfo* nocapture %infoGlobal) align 2 {
+entry:
+ %rel_pos1 = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %rel_pos2 = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %relaxation = alloca float, align 4 ; [#uses=6]
+ %rel_vel = alloca float, align 4 ; [#uses=2]
+ %vel = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %struct.btPersistentManifold* %manifold, i32 0, i32 2 ; [#uses=1]
+ %1 = load i8** %0, align 4 ; [#uses=4]
+ %2 = bitcast i8* %1 to %struct.btCollisionObject* ; [#uses=11]
+ %3 = getelementptr inbounds %struct.btPersistentManifold* %manifold, i32 0, i32 3 ; [#uses=1]
+ %4 = load i8** %3, align 4 ; [#uses=4]
+ %5 = bitcast i8* %4 to %struct.btCollisionObject* ; [#uses=11]
+ %6 = getelementptr inbounds i8* %1, i32 232 ; [#uses=1]
+ %7 = bitcast i8* %6 to i32* ; [#uses=2]
+ %8 = load i32* %7, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %8, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ br i1 %toBool.i, label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit, label %bb.i
+
+bb.i: ; preds = %entry
+ %9 = bitcast i8* %1 to %struct.btRigidBody* ; [#uses=1]
+ br label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+
+_ZN11btRigidBody6upcastEP17btCollisionObject.exit: ; preds = %bb.i, %entry
+ %10 = phi %struct.btRigidBody* [ %9, %bb.i ], [ null, %entry ] ; [#uses=8]
+ %11 = getelementptr inbounds i8* %4, i32 232 ; [#uses=1]
+ %12 = bitcast i8* %11 to i32* ; [#uses=2]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %.lobit.i37 = and i32 %13, 2 ; [#uses=1]
+ %toBool.i38 = icmp eq i32 %.lobit.i37, 0 ; [#uses=1]
+ br i1 %toBool.i38, label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit41, label %bb.i39
+
+bb.i39: ; preds = %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+ %14 = bitcast i8* %4 to %struct.btRigidBody* ; [#uses=1]
+ br label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit41
+
+_ZN11btRigidBody6upcastEP17btCollisionObject.exit41: ; preds = %bb.i39, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+ %15 = phi %struct.btRigidBody* [ %14, %bb.i39 ], [ null, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit ] ; [#uses=8]
+ %16 = icmp eq %struct.btRigidBody* %10, null ; [#uses=1]
+ br i1 %16, label %bb1, label %bb
+
+bb: ; preds = %_ZN11btRigidBody6upcastEP17btCollisionObject.exit41
+ %17 = getelementptr inbounds %struct.btRigidBody* %10, i32 0, i32 4 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fcmp oeq float %18, 0.000000e+00 ; [#uses=1]
+ br i1 %19, label %bb1, label %bb34.preheader
+
+bb1: ; preds = %bb, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit41
+ %20 = icmp eq %struct.btRigidBody* %15, null ; [#uses=1]
+ br i1 %20, label %return, label %bb2
+
+bb2: ; preds = %bb1
+ %21 = getelementptr inbounds %struct.btRigidBody* %15, i32 0, i32 4 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fcmp oeq float %22, 0.000000e+00 ; [#uses=1]
+ br i1 %23, label %return, label %bb34.preheader
+
+bb34.preheader: ; preds = %bb2, %bb
+ %24 = getelementptr inbounds %struct.btPersistentManifold* %manifold, i32 0, i32 4 ; [#uses=2]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ %26 = icmp sgt i32 %25, 0 ; [#uses=1]
+ br i1 %26, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb34.preheader
+ %27 = getelementptr inbounds %struct.btPersistentManifold* %manifold, i32 0, i32 6 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 1 ; [#uses=4]
+ %29 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 3 ; [#uses=5]
+ %31 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 1, i32 4 ; [#uses=2]
+ %32 = getelementptr inbounds %struct.btSequentialImpulseConstraintSolver* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 15 ; [#uses=5]
+ %34 = getelementptr inbounds %struct.btQuadWord* %vel, i32 0, i32 0, i32 2 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btQuadWord* %vel, i32 0, i32 0, i32 1 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuadWord* %vel, i32 0, i32 0, i32 0 ; [#uses=1]
+ %37 = bitcast i8* %4 to %struct.btRigidBody* ; [#uses=1]
+ %38 = bitcast i8* %1 to %struct.btRigidBody* ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb33, %bb.nph
+ %j.061 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb33 ] ; [#uses=19]
+ %scevgep65 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061 ; [#uses=9]
+ %scevgep6566 = bitcast %struct.btManifoldPoint* %scevgep65 to i8* ; [#uses=1]
+ %scevgep67 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 5 ; [#uses=1]
+ %scevgep68 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 14 ; [#uses=3]
+ %scevgep69 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 19 ; [#uses=1]
+ %scevgep70 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 17 ; [#uses=1]
+ %scevgep71 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 22, i32 0, i32 0 ; [#uses=5]
+ %scevgep7172 = bitcast float* %scevgep71 to %struct.btQuadWord* ; [#uses=7]
+ %scevgep73 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 20 ; [#uses=1]
+ %scevgep74 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 18 ; [#uses=1]
+ %scevgep75 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 23, i32 0, i32 0 ; [#uses=5]
+ %scevgep7576 = bitcast float* %scevgep75 to %struct.btQuadWord* ; [#uses=7]
+ %scevgep77 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 4, i32 0, i32 2 ; [#uses=1]
+ %scevgep78 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 4, i32 0, i32 1 ; [#uses=1]
+ %scevgep79 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 4, i32 0, i32 0 ; [#uses=1]
+ %scevgep80 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 22, i32 0, i32 1 ; [#uses=4]
+ %scevgep81 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 22, i32 0, i32 2 ; [#uses=4]
+ %scevgep82 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 22, i32 0, i32 3 ; [#uses=1]
+ %scevgep83 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 23, i32 0, i32 1 ; [#uses=4]
+ %scevgep84 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 23, i32 0, i32 2 ; [#uses=3]
+ %scevgep85 = getelementptr %struct.btPersistentManifold* %manifold, i32 0, i32 1, i32 %j.061, i32 23, i32 0, i32 3 ; [#uses=1]
+ %tmp = add i32 %j.061, 1 ; [#uses=2]
+ %39 = load float* %scevgep67, align 4 ; [#uses=1]
+ %40 = load float* %27, align 4 ; [#uses=1]
+ %41 = fcmp ugt float %39, %40 ; [#uses=1]
+ br i1 %41, label %bb33, label %bb9
+
+bb9: ; preds = %bb7
+ %42 = load i32* %28, align 4 ; [#uses=17]
+ %43 = load i32* %29, align 4 ; [#uses=2]
+ %44 = icmp eq i32 %43, %42 ; [#uses=1]
+ br i1 %44, label %bb.i43, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE21expandNonInitializingEv.exit
+
+bb.i43: ; preds = %bb9
+ %45 = icmp eq i32 %42, 0 ; [#uses=1]
+ %46 = shl i32 %42, 1 ; [#uses=1]
+ %iftmp.207.0.i.i = select i1 %45, i32 1, i32 %46 ; [#uses=4]
+ %47 = icmp slt i32 %43, %iftmp.207.0.i.i ; [#uses=1]
+ br i1 %47, label %bb.i.i, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE21expandNonInitializingEv.exit
+
+bb.i.i: ; preds = %bb.i43
+ %48 = icmp eq i32 %iftmp.207.0.i.i, 0 ; [#uses=1]
+ br i1 %48, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %49 = mul i32 %iftmp.207.0.i.i, 136 ; [#uses=1]
+ %50 = call i8* @_Z22btAlignedAllocInternalji(i32 %49, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %50 to %struct.btSolverConstraint* ; [#uses=1]
+ %.pre.i = load i32* %28, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %51 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %42, %bb.i.i ] ; [#uses=2]
+ %52 = phi %struct.btSolverConstraint* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %53 = icmp sgt i32 %51, 0 ; [#uses=1]
+ br i1 %53, label %bb.i4.i.i, label %_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i
+
+bb.i4.i.i: ; preds = %bb.i4.i.i, %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i
+ %indvar.i.i.i = phi i32 [ %indvar.next.i.i.i, %bb.i4.i.i ], [ 0, %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i ] ; [#uses=3]
+ %scevgep63 = getelementptr %struct.btSolverConstraint* %52, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep5.i.i.i = bitcast %struct.btSolverConstraint* %scevgep63 to i8* ; [#uses=1]
+ %54 = load %struct.btSolverConstraint** %30, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btSolverConstraint* %54, i32 %indvar.i.i.i ; [#uses=1]
+ %scevgep67.i.i.i = bitcast %struct.btSolverConstraint* %scevgep to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %scevgep5.i.i.i, i8* %scevgep67.i.i.i, i32 136, i32 4, i1 false) nounwind
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %51 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i: ; preds = %bb.i4.i.i, %_ZN20btAlignedObjectArrayI18btSolverConstraintE8allocateEi.exit.i.i
+ %55 = load %struct.btSolverConstraint** %30, align 4 ; [#uses=2]
+ %56 = icmp eq %struct.btSolverConstraint* %55, null ; [#uses=1]
+ br i1 %56, label %_ZN20btAlignedObjectArrayI18btSolverConstraintE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i
+ %57 = load i8* %31, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %57, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %58 = bitcast %struct.btSolverConstraint* %55 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %58)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btSolverConstraint* null, %struct.btSolverConstraint** %30, align 4
+ br label %_ZN20btAlignedObjectArrayI18btSolverConstraintE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayI18btSolverConstraintE4copyEiiPS0_.exit.i.i
+ store i8 1, i8* %31, align 4
+ store %struct.btSolverConstraint* %52, %struct.btSolverConstraint** %30, align 4
+ store i32 %iftmp.207.0.i.i, i32* %29, align 4
+ %.pre6.i = load i32* %28, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI18btSolverConstraintE21expandNonInitializingEv.exit
+
+_ZN20btAlignedObjectArrayI18btSolverConstraintE21expandNonInitializingEv.exit: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintE10deallocateEv.exit.i.i, %bb.i43, %bb9
+ %59 = phi i32 [ %.pre6.i, %_ZN20btAlignedObjectArrayI18btSolverConstraintE10deallocateEv.exit.i.i ], [ %42, %bb9 ], [ %42, %bb.i43 ] ; [#uses=1]
+ %60 = add nsw i32 %59, 1 ; [#uses=1]
+ store i32 %60, i32* %28, align 4
+ %61 = load %struct.btSolverConstraint** %30, align 4 ; [#uses=5]
+ %62 = getelementptr inbounds %struct.btSolverConstraint* %61, i32 %42 ; [#uses=2]
+ %63 = load i32* %7, align 4 ; [#uses=1]
+ %.lobit.i45 = and i32 %63, 2 ; [#uses=1]
+ %toBool.i46 = icmp eq i32 %.lobit.i45, 0 ; [#uses=1]
+ %64 = select i1 %toBool.i46, %struct.btRigidBody* null, %struct.btRigidBody* %38 ; [#uses=3]
+ %65 = load i32* %12, align 4 ; [#uses=1]
+ %.lobit.i50 = and i32 %65, 2 ; [#uses=1]
+ %toBool.i51 = icmp eq i32 %.lobit.i50, 0 ; [#uses=1]
+ %66 = select i1 %toBool.i51, %struct.btRigidBody* null, %struct.btRigidBody* %37 ; [#uses=3]
+ %67 = icmp eq %struct.btRigidBody* %64, null ; [#uses=1]
+ br i1 %67, label %bb10, label %bb12
+
+bb10: ; preds = %_ZN20btAlignedObjectArrayI18btSolverConstraintE21expandNonInitializingEv.exit
+ %68 = call %struct.btRigidBody* @_ZN35btSequentialImpulseConstraintSolver12getFixedBodyEv() ; [#uses=0]
+ br label %bb12
+
+bb12: ; preds = %bb10, %_ZN20btAlignedObjectArrayI18btSolverConstraintE21expandNonInitializingEv.exit
+ %iftmp.186.0 = phi %struct.btRigidBody* [ @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, %bb10 ], [ %64, %_ZN20btAlignedObjectArrayI18btSolverConstraintE21expandNonInitializingEv.exit ] ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btSolverConstraint* %61, i32 %42, i32 11, i32 0 ; [#uses=1]
+ store %struct.btRigidBody* %iftmp.186.0, %struct.btRigidBody** %69, align 4
+ %70 = icmp eq %struct.btRigidBody* %66, null ; [#uses=1]
+ br i1 %70, label %bb13, label %bb15
+
+bb13: ; preds = %bb12
+ %71 = call %struct.btRigidBody* @_ZN35btSequentialImpulseConstraintSolver12getFixedBodyEv() ; [#uses=0]
+ br label %bb15
+
+bb15: ; preds = %bb13, %bb12
+ %iftmp.187.0 = phi %struct.btRigidBody* [ @_ZZN35btSequentialImpulseConstraintSolver12getFixedBodyEvE7s_fixed, %bb13 ], [ %66, %bb12 ] ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btSolverConstraint* %61, i32 %42, i32 12, i32 0 ; [#uses=1]
+ store %struct.btRigidBody* %iftmp.187.0, %struct.btRigidBody** %72, align 4
+ %73 = getelementptr inbounds %struct.btSolverConstraint* %61, i32 %42, i32 13, i32 0 ; [#uses=1]
+ store i8* %scevgep6566, i8** %73, align 4
+ call void @_ZN35btSequentialImpulseConstraintSolver22setupContactConstraintER18btSolverConstraintP17btCollisionObjectS3_R15btManifoldPointRK19btContactSolverInfoR9btVector3RfSB_SA_SA_(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btSolverConstraint* %62, %struct.btCollisionObject* %2, %struct.btCollisionObject* %5, %struct.btManifoldPoint* %scevgep65, %struct.btContactSolverInfo* %infoGlobal, %struct.btQuadWord* %vel, float* %rel_vel, float* %relaxation, %struct.btQuadWord* %rel_pos1, %struct.btQuadWord* %rel_pos2) nounwind
+ %74 = load i32* %32, align 4 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btSolverConstraint* %61, i32 %42, i32 10, i32 0 ; [#uses=1]
+ store i32 %74, i32* %75, align 4
+ %76 = load i32* %33, align 4 ; [#uses=1]
+ %77 = and i32 %76, 32 ; [#uses=1]
+ %78 = icmp eq i32 %77, 0 ; [#uses=1]
+ br i1 %78, label %bb21, label %bb16
+
+bb16: ; preds = %bb15
+ %79 = load i8* %scevgep68, align 4 ; [#uses=1]
+ %toBool17not = icmp eq i8 %79, 0 ; [#uses=1]
+ br i1 %toBool17not, label %bb21, label %bb30
+
+bb21: ; preds = %bb16, %bb15
+ %80 = load float* %scevgep77, align 4 ; [#uses=9]
+ %81 = load float* %rel_vel, align 4 ; [#uses=3]
+ %82 = fmul float %80, %81 ; [#uses=1]
+ %83 = load float* %scevgep78, align 4 ; [#uses=9]
+ %84 = fmul float %83, %81 ; [#uses=1]
+ %85 = load float* %scevgep79, align 4 ; [#uses=8]
+ %86 = fmul float %85, %81 ; [#uses=1]
+ %87 = load float* %34, align 8 ; [#uses=1]
+ %88 = fsub float %87, %82 ; [#uses=4]
+ %89 = load float* %35, align 4 ; [#uses=1]
+ %90 = fsub float %89, %84 ; [#uses=4]
+ %91 = load float* %36, align 8 ; [#uses=1]
+ %92 = fsub float %91, %86 ; [#uses=4]
+ store float %92, float* %scevgep71, align 4
+ store float %90, float* %scevgep80, align 4
+ store float %88, float* %scevgep81, align 4
+ store float 0.000000e+00, float* %scevgep82, align 4
+ %93 = fmul float %92, %92 ; [#uses=1]
+ %94 = fmul float %90, %90 ; [#uses=1]
+ %95 = fadd float %93, %94 ; [#uses=1]
+ %96 = fmul float %88, %88 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=2]
+ %98 = load i32* %33, align 4 ; [#uses=1]
+ %99 = and i32 %98, 64 ; [#uses=1]
+ %.not = icmp ne i32 %99, 0 ; [#uses=1]
+ %100 = fcmp ule float %97, 0x3E80000000000000 ; [#uses=1]
+ %or.cond = or i1 %.not, %100 ; [#uses=1]
+ br i1 %or.cond, label %bb27, label %bb23
+
+bb23: ; preds = %bb21
+ %101 = call float @sqrtf(float %97) nounwind readonly ; [#uses=1]
+ %102 = fdiv float 1.000000e+00, %101 ; [#uses=3]
+ %103 = fmul float %92, %102 ; [#uses=3]
+ store float %103, float* %scevgep71, align 4
+ %104 = fmul float %90, %102 ; [#uses=3]
+ store float %104, float* %scevgep80, align 4
+ %105 = fmul float %88, %102 ; [#uses=3]
+ store float %105, float* %scevgep81, align 4
+ %106 = load i32* %33, align 4 ; [#uses=1]
+ %107 = and i32 %106, 16 ; [#uses=1]
+ %108 = icmp eq i32 %107, 0 ; [#uses=1]
+ br i1 %108, label %bb23.bb26_crit_edge, label %bb24
+
+bb23.bb26_crit_edge: ; preds = %bb23
+ %.pre86 = load float* %relaxation, align 4 ; [#uses=1]
+ br label %bb26
+
+bb24: ; preds = %bb23
+ %109 = fmul float %103, %83 ; [#uses=1]
+ %110 = fmul float %104, %85 ; [#uses=1]
+ %111 = fsub float %109, %110 ; [#uses=4]
+ %112 = fmul float %105, %85 ; [#uses=1]
+ %113 = fmul float %103, %80 ; [#uses=1]
+ %114 = fsub float %112, %113 ; [#uses=4]
+ %115 = fmul float %104, %80 ; [#uses=1]
+ %116 = fmul float %105, %83 ; [#uses=1]
+ %117 = fsub float %115, %116 ; [#uses=4]
+ store float %117, float* %scevgep75, align 4
+ store float %114, float* %scevgep83, align 4
+ store float %111, float* %scevgep84, align 4
+ store float 0.000000e+00, float* %scevgep85, align 4
+ %118 = fmul float %117, %117 ; [#uses=1]
+ %119 = fmul float %114, %114 ; [#uses=1]
+ %120 = fadd float %118, %119 ; [#uses=1]
+ %121 = fmul float %111, %111 ; [#uses=1]
+ %122 = fadd float %120, %121 ; [#uses=1]
+ %123 = call float @sqrtf(float %122) nounwind readonly ; [#uses=1]
+ %124 = fdiv float 1.000000e+00, %123 ; [#uses=3]
+ %125 = fmul float %117, %124 ; [#uses=1]
+ store float %125, float* %scevgep75, align 4
+ %126 = fmul float %114, %124 ; [#uses=1]
+ store float %126, float* %scevgep83, align 4
+ %127 = fmul float %111, %124 ; [#uses=1]
+ store float %127, float* %scevgep84, align 4
+ call void @_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(%struct.btCollisionObject* %2, %struct.btQuadWord* %scevgep7576) nounwind
+ call void @_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(%struct.btCollisionObject* %5, %struct.btQuadWord* %scevgep7576) nounwind
+ %128 = load float* %relaxation, align 4 ; [#uses=2]
+ %129 = call %struct.btSolverConstraint* @_ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btQuadWord* %scevgep7576, %struct.btRigidBody* %10, %struct.btRigidBody* %15, i32 %42, %struct.btManifoldPoint* %scevgep65, %struct.btQuadWord* %rel_pos1, %struct.btQuadWord* %rel_pos2, %struct.btCollisionObject* %2, %struct.btCollisionObject* %5, float %128, float 0.000000e+00, float 0.000000e+00) ; [#uses=0]
+ br label %bb26
+
+bb26: ; preds = %bb24, %bb23.bb26_crit_edge
+ %130 = phi float [ %.pre86, %bb23.bb26_crit_edge ], [ %128, %bb24 ] ; [#uses=1]
+ call void @_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(%struct.btCollisionObject* %2, %struct.btQuadWord* %scevgep7172) nounwind
+ call void @_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(%struct.btCollisionObject* %5, %struct.btQuadWord* %scevgep7172) nounwind
+ %131 = call %struct.btSolverConstraint* @_ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btQuadWord* %scevgep7172, %struct.btRigidBody* %10, %struct.btRigidBody* %15, i32 %42, %struct.btManifoldPoint* %scevgep65, %struct.btQuadWord* %rel_pos1, %struct.btQuadWord* %rel_pos2, %struct.btCollisionObject* %2, %struct.btCollisionObject* %5, float %130, float 0.000000e+00, float 0.000000e+00) ; [#uses=0]
+ store i8 1, i8* %scevgep68, align 4
+ br label %bb32
+
+bb27: ; preds = %bb21
+ %132 = call float @fabsf(float %80) nounwind readnone ; [#uses=1]
+ %133 = fcmp ogt float %132, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %133, label %bb.i42, label %bb1.i
+
+bb.i42: ; preds = %bb27
+ %134 = fmul float %83, %83 ; [#uses=1]
+ %135 = fmul float %80, %80 ; [#uses=1]
+ %136 = fadd float %134, %135 ; [#uses=2]
+ %137 = call float @sqrtf(float %136) nounwind readonly ; [#uses=1]
+ %138 = fdiv float 1.000000e+00, %137 ; [#uses=3]
+ store float 0.000000e+00, float* %scevgep71, align 4
+ %139 = fsub float -0.000000e+00, %80 ; [#uses=1]
+ %140 = fmul float %138, %139 ; [#uses=2]
+ store float %140, float* %scevgep80, align 4
+ %141 = fmul float %83, %138 ; [#uses=2]
+ store float %141, float* %scevgep81, align 4
+ %142 = fmul float %136, %138 ; [#uses=1]
+ store float %142, float* %scevgep75, align 4
+ %143 = fsub float -0.000000e+00, %85 ; [#uses=1]
+ %144 = fmul float %141, %143 ; [#uses=1]
+ store float %144, float* %scevgep83, align 4
+ %145 = fmul float %85, %140 ; [#uses=1]
+ br label %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+
+bb1.i: ; preds = %bb27
+ %146 = fmul float %85, %85 ; [#uses=1]
+ %147 = fmul float %83, %83 ; [#uses=1]
+ %148 = fadd float %146, %147 ; [#uses=2]
+ %149 = call float @sqrtf(float %148) nounwind readonly ; [#uses=1]
+ %150 = fdiv float 1.000000e+00, %149 ; [#uses=3]
+ %151 = fsub float -0.000000e+00, %83 ; [#uses=1]
+ %152 = fmul float %150, %151 ; [#uses=2]
+ store float %152, float* %scevgep71, align 4
+ %153 = fmul float %85, %150 ; [#uses=2]
+ store float %153, float* %scevgep80, align 4
+ store float 0.000000e+00, float* %scevgep81, align 4
+ %154 = fsub float -0.000000e+00, %80 ; [#uses=1]
+ %155 = fmul float %153, %154 ; [#uses=1]
+ store float %155, float* %scevgep75, align 4
+ %156 = fmul float %80, %152 ; [#uses=1]
+ store float %156, float* %scevgep83, align 4
+ %157 = fmul float %148, %150 ; [#uses=1]
+ br label %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+
+_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit: ; preds = %bb1.i, %bb.i42
+ %storemerge = phi float [ %157, %bb1.i ], [ %145, %bb.i42 ] ; [#uses=1]
+ store float %storemerge, float* %scevgep84, align 4
+ %158 = load i32* %33, align 4 ; [#uses=1]
+ %159 = and i32 %158, 16 ; [#uses=1]
+ %160 = icmp eq i32 %159, 0 ; [#uses=1]
+ br i1 %160, label %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit.bb29_crit_edge, label %bb28
+
+_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit.bb29_crit_edge: ; preds = %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+ %.pre = load float* %relaxation, align 4 ; [#uses=1]
+ br label %bb29
+
+bb28: ; preds = %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit
+ call void @_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(%struct.btCollisionObject* %2, %struct.btQuadWord* %scevgep7576) nounwind
+ call void @_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(%struct.btCollisionObject* %5, %struct.btQuadWord* %scevgep7576) nounwind
+ %161 = load float* %relaxation, align 4 ; [#uses=2]
+ %162 = call %struct.btSolverConstraint* @_ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btQuadWord* %scevgep7576, %struct.btRigidBody* %10, %struct.btRigidBody* %15, i32 %42, %struct.btManifoldPoint* %scevgep65, %struct.btQuadWord* %rel_pos1, %struct.btQuadWord* %rel_pos2, %struct.btCollisionObject* %2, %struct.btCollisionObject* %5, float %161, float 0.000000e+00, float 0.000000e+00) ; [#uses=0]
+ br label %bb29
+
+bb29: ; preds = %bb28, %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit.bb29_crit_edge
+ %163 = phi float [ %.pre, %_Z13btPlaneSpace1I9btVector3EvRKT_RS1_S4_.exit.bb29_crit_edge ], [ %161, %bb28 ] ; [#uses=1]
+ call void @_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(%struct.btCollisionObject* %2, %struct.btQuadWord* %scevgep7172) nounwind
+ call void @_Z24applyAnisotropicFrictionP17btCollisionObjectR9btVector3(%struct.btCollisionObject* %5, %struct.btQuadWord* %scevgep7172) nounwind
+ %164 = call %struct.btSolverConstraint* @_ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btQuadWord* %scevgep7172, %struct.btRigidBody* %10, %struct.btRigidBody* %15, i32 %42, %struct.btManifoldPoint* %scevgep65, %struct.btQuadWord* %rel_pos1, %struct.btQuadWord* %rel_pos2, %struct.btCollisionObject* %2, %struct.btCollisionObject* %5, float %163, float 0.000000e+00, float 0.000000e+00) ; [#uses=0]
+ store i8 1, i8* %scevgep68, align 4
+ br label %bb32
+
+bb30: ; preds = %bb16
+ %165 = load float* %scevgep69, align 4 ; [#uses=1]
+ %166 = load float* %scevgep70, align 4 ; [#uses=1]
+ %167 = load float* %relaxation, align 4 ; [#uses=2]
+ %168 = call %struct.btSolverConstraint* @_ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btQuadWord* %scevgep7172, %struct.btRigidBody* %10, %struct.btRigidBody* %15, i32 %42, %struct.btManifoldPoint* %scevgep65, %struct.btQuadWord* %rel_pos1, %struct.btQuadWord* %rel_pos2, %struct.btCollisionObject* %2, %struct.btCollisionObject* %5, float %167, float %166, float %165) ; [#uses=0]
+ %169 = load i32* %33, align 4 ; [#uses=1]
+ %170 = and i32 %169, 16 ; [#uses=1]
+ %171 = icmp eq i32 %170, 0 ; [#uses=1]
+ br i1 %171, label %bb32, label %bb31
+
+bb31: ; preds = %bb30
+ %172 = load float* %scevgep73, align 4 ; [#uses=1]
+ %173 = load float* %scevgep74, align 4 ; [#uses=1]
+ %174 = call %struct.btSolverConstraint* @_ZN35btSequentialImpulseConstraintSolver21addFrictionConstraintERK9btVector3P11btRigidBodyS4_iR15btManifoldPointS2_S2_P17btCollisionObjectS8_fff(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btQuadWord* %scevgep7576, %struct.btRigidBody* %10, %struct.btRigidBody* %15, i32 %42, %struct.btManifoldPoint* %scevgep65, %struct.btQuadWord* %rel_pos1, %struct.btQuadWord* %rel_pos2, %struct.btCollisionObject* %2, %struct.btCollisionObject* %5, float %167, float %173, float %172) ; [#uses=0]
+ br label %bb32
+
+bb32: ; preds = %bb31, %bb30, %bb29, %bb26
+ call void @_ZN35btSequentialImpulseConstraintSolver28setFrictionConstraintImpulseER18btSolverConstraintP11btRigidBodyS3_R15btManifoldPointRK19btContactSolverInfo(%struct.btSequentialImpulseConstraintSolver* %this, %struct.btSolverConstraint* %62, %struct.btRigidBody* %64, %struct.btRigidBody* %66, %struct.btManifoldPoint* %scevgep65, %struct.btContactSolverInfo* %infoGlobal)
+ br label %bb33
+
+bb33: ; preds = %bb32, %bb7
+ %175 = load i32* %24, align 4 ; [#uses=1]
+ %176 = icmp sgt i32 %175, %tmp ; [#uses=1]
+ br i1 %176, label %bb7, label %return
+
+return: ; preds = %bb33, %bb34.preheader, %bb2, %bb1
+ ret void
+}
+
+; [#uses=2]
+declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) nounwind
+
+; [#uses=0]
+define void @_ZN18btSliderConstraint10initParamsEv(%struct.btSliderConstraint* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ store float 1.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float -1.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ store float 1.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 12 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 14 ; [#uses=1]
+ store float 1.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 15 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 26 ; [#uses=1]
+ store float 1.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 27 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 28 ; [#uses=1]
+ store float 1.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 29 ; [#uses=1]
+ store float 0.000000e+00, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 30 ; [#uses=1]
+ store float 1.000000e+00, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 31 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 32 ; [#uses=1]
+ store float 1.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 33 ; [#uses=1]
+ store float 0.000000e+00, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ store float 1.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ store float 1.000000e+00, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ store float 1.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 24 ; [#uses=1]
+ store float 1.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 55 ; [#uses=1]
+ store i8 0, i8* %28, align 4
+ %29 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 56 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 57 ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ %31 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 58 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 59 ; [#uses=1]
+ store i8 0, i8* %32, align 4
+ %33 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 60 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 61 ; [#uses=1]
+ store float 0.000000e+00, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 62 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=1]
+ store i32 0, i32* %36, align 4
+ %37 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 2 ; [#uses=1]
+ store i8 1, i8* %37, align 1
+ %38 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %39 = load %struct.btRigidBody** %38, align 4 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btRigidBody* %39, i32 0, i32 0, i32 1 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %42 = load %struct.btRigidBody** %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btRigidBody* %42, i32 0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN18btSliderConstraint19calculateTransformsERK11btTransformS2_(%struct.btSliderConstraint* %this, %struct.btTransform* %43, %struct.btTransform* %40)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK18btSliderConstraint28calculateSerializeBufferSizeEv(%struct.btSliderConstraint* nocapture %this) nounwind readnone inlinehint align 2 {
+entry:
+ ret i32 196
+}
+
+; [#uses=0]
+define void @_ZN18btSliderConstraint18getInfo1NonVirtualEPN17btTypedConstraint17btConstraintInfo1E(%struct.btSliderConstraint* nocapture %this, %struct.CONTACT_KEY_TOKEN* nocapture %info) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 0 ; [#uses=1]
+ store i32 6, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %1, align 4
+ ret void
+}
+
+; [#uses=4]
+define void @_ZN18btSliderConstraint19calculateTransformsERK11btTransformS2_(%struct.btSliderConstraint* %this, %struct.btTransform* %transA, %struct.btTransform* %transB) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=2]
+ br i1 %toBool, label %bb, label %bb5
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load i8* %2, align 4 ; [#uses=1]
+ %toBool1not = icmp eq i8 %3, 0 ; [#uses=1]
+ br i1 %toBool1not, label %bb5, label %bb6
+
+bb5: ; preds = %bb, %entry
+ %4 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=4]
+ %6 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = fmul float %5, %7 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=4]
+ %11 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=3]
+ %13 = fmul float %10, %12 ; [#uses=1]
+ %14 = fadd float %8, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=4]
+ %17 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=3]
+ %19 = fmul float %16, %18 ; [#uses=1]
+ %20 = fadd float %14, %19 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fadd float %20, %22 ; [#uses=2]
+ %24 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=4]
+ %26 = fmul float %25, %7 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=4]
+ %29 = fmul float %28, %12 ; [#uses=1]
+ %30 = fadd float %26, %29 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=4]
+ %33 = fmul float %32, %18 ; [#uses=1]
+ %34 = fadd float %30, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = fadd float %34, %36 ; [#uses=2]
+ %38 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=4]
+ %40 = fmul float %39, %7 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=4]
+ %43 = fmul float %42, %12 ; [#uses=1]
+ %44 = fadd float %40, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=4]
+ %47 = fmul float %46, %18 ; [#uses=1]
+ %48 = fadd float %44, %47 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fadd float %48, %50 ; [#uses=2]
+ %52 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=3]
+ %54 = fmul float %53, %5 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=3]
+ %57 = fmul float %56, %10 ; [#uses=1]
+ %58 = fadd float %54, %57 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=3]
+ %61 = fmul float %60, %16 ; [#uses=1]
+ %62 = fadd float %58, %61 ; [#uses=2]
+ %63 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=3]
+ %65 = fmul float %64, %5 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=3]
+ %68 = fmul float %67, %10 ; [#uses=1]
+ %69 = fadd float %65, %68 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=3]
+ %72 = fmul float %71, %16 ; [#uses=1]
+ %73 = fadd float %69, %72 ; [#uses=2]
+ %74 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=3]
+ %76 = fmul float %75, %5 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=3]
+ %79 = fmul float %78, %10 ; [#uses=1]
+ %80 = fadd float %76, %79 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=3]
+ %83 = fmul float %82, %16 ; [#uses=1]
+ %84 = fadd float %80, %83 ; [#uses=2]
+ %85 = fmul float %53, %25 ; [#uses=1]
+ %86 = fmul float %56, %28 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=1]
+ %88 = fmul float %60, %32 ; [#uses=1]
+ %89 = fadd float %87, %88 ; [#uses=2]
+ %90 = fmul float %64, %25 ; [#uses=1]
+ %91 = fmul float %67, %28 ; [#uses=1]
+ %92 = fadd float %90, %91 ; [#uses=1]
+ %93 = fmul float %71, %32 ; [#uses=1]
+ %94 = fadd float %92, %93 ; [#uses=2]
+ %95 = fmul float %75, %25 ; [#uses=1]
+ %96 = fmul float %78, %28 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %82, %32 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=2]
+ %100 = fmul float %53, %39 ; [#uses=1]
+ %101 = fmul float %56, %42 ; [#uses=1]
+ %102 = fadd float %100, %101 ; [#uses=1]
+ %103 = fmul float %60, %46 ; [#uses=1]
+ %104 = fadd float %102, %103 ; [#uses=2]
+ %105 = fmul float %64, %39 ; [#uses=1]
+ %106 = fmul float %67, %42 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = fmul float %71, %46 ; [#uses=1]
+ %109 = fadd float %107, %108 ; [#uses=2]
+ %110 = fmul float %75, %39 ; [#uses=1]
+ %111 = fmul float %78, %42 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=1]
+ %113 = fmul float %82, %46 ; [#uses=1]
+ %114 = fadd float %112, %113 ; [#uses=2]
+ %115 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %114, float* %115, align 4
+ %116 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %109, float* %116, align 4
+ %117 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %104, float* %117, align 4
+ %118 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %118, align 4
+ %119 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %99, float* %119, align 4
+ %120 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %94, float* %120, align 4
+ %121 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %89, float* %121, align 4
+ %122 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %122, align 4
+ %123 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %84, float* %123, align 4
+ %124 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %73, float* %124, align 4
+ %125 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %62, float* %125, align 4
+ %126 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %51, float* %127, align 4
+ %128 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %37, float* %128, align 4
+ %129 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %23, float* %129, align 4
+ %130 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %130, align 4
+ %131 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %132 = load float* %131, align 4 ; [#uses=4]
+ %133 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %134 = load float* %133, align 4 ; [#uses=3]
+ %135 = fmul float %132, %134 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %137 = load float* %136, align 4 ; [#uses=4]
+ %138 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %139 = load float* %138, align 4 ; [#uses=3]
+ %140 = fmul float %137, %139 ; [#uses=1]
+ %141 = fadd float %135, %140 ; [#uses=1]
+ %142 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %143 = load float* %142, align 4 ; [#uses=4]
+ %144 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=3]
+ %146 = fmul float %143, %145 ; [#uses=1]
+ %147 = fadd float %141, %146 ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %149 = load float* %148, align 4 ; [#uses=1]
+ %150 = fadd float %147, %149 ; [#uses=2]
+ %151 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %152 = load float* %151, align 4 ; [#uses=4]
+ %153 = fmul float %152, %134 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %155 = load float* %154, align 4 ; [#uses=4]
+ %156 = fmul float %155, %139 ; [#uses=1]
+ %157 = fadd float %153, %156 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %159 = load float* %158, align 4 ; [#uses=4]
+ %160 = fmul float %159, %145 ; [#uses=1]
+ %161 = fadd float %157, %160 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %163 = load float* %162, align 4 ; [#uses=1]
+ %164 = fadd float %161, %163 ; [#uses=2]
+ %165 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %166 = load float* %165, align 4 ; [#uses=4]
+ %167 = fmul float %166, %134 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=4]
+ %170 = fmul float %169, %139 ; [#uses=1]
+ %171 = fadd float %167, %170 ; [#uses=1]
+ %172 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %173 = load float* %172, align 4 ; [#uses=4]
+ %174 = fmul float %173, %145 ; [#uses=1]
+ %175 = fadd float %171, %174 ; [#uses=1]
+ %176 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %177 = load float* %176, align 4 ; [#uses=1]
+ %178 = fadd float %175, %177 ; [#uses=2]
+ %179 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %180 = load float* %179, align 4 ; [#uses=3]
+ %181 = fmul float %180, %132 ; [#uses=1]
+ %182 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %183 = load float* %182, align 4 ; [#uses=3]
+ %184 = fmul float %183, %137 ; [#uses=1]
+ %185 = fadd float %181, %184 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %187 = load float* %186, align 4 ; [#uses=3]
+ %188 = fmul float %187, %143 ; [#uses=1]
+ %189 = fadd float %185, %188 ; [#uses=1]
+ %190 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %191 = load float* %190, align 4 ; [#uses=3]
+ %192 = fmul float %191, %132 ; [#uses=1]
+ %193 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %194 = load float* %193, align 4 ; [#uses=3]
+ %195 = fmul float %194, %137 ; [#uses=1]
+ %196 = fadd float %192, %195 ; [#uses=1]
+ %197 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %198 = load float* %197, align 4 ; [#uses=3]
+ %199 = fmul float %198, %143 ; [#uses=1]
+ %200 = fadd float %196, %199 ; [#uses=1]
+ %201 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %202 = load float* %201, align 4 ; [#uses=3]
+ %203 = fmul float %202, %132 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %205 = load float* %204, align 4 ; [#uses=3]
+ %206 = fmul float %205, %137 ; [#uses=1]
+ %207 = fadd float %203, %206 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %209 = load float* %208, align 4 ; [#uses=3]
+ %210 = fmul float %209, %143 ; [#uses=1]
+ %211 = fadd float %207, %210 ; [#uses=1]
+ %212 = fmul float %180, %152 ; [#uses=1]
+ %213 = fmul float %183, %155 ; [#uses=1]
+ %214 = fadd float %212, %213 ; [#uses=1]
+ %215 = fmul float %187, %159 ; [#uses=1]
+ %216 = fadd float %214, %215 ; [#uses=1]
+ %217 = fmul float %191, %152 ; [#uses=1]
+ %218 = fmul float %194, %155 ; [#uses=1]
+ %219 = fadd float %217, %218 ; [#uses=1]
+ %220 = fmul float %198, %159 ; [#uses=1]
+ %221 = fadd float %219, %220 ; [#uses=1]
+ %222 = fmul float %202, %152 ; [#uses=1]
+ %223 = fmul float %205, %155 ; [#uses=1]
+ %224 = fadd float %222, %223 ; [#uses=1]
+ %225 = fmul float %209, %159 ; [#uses=1]
+ %226 = fadd float %224, %225 ; [#uses=1]
+ %227 = fmul float %180, %166 ; [#uses=1]
+ %228 = fmul float %183, %169 ; [#uses=1]
+ %229 = fadd float %227, %228 ; [#uses=1]
+ %230 = fmul float %187, %173 ; [#uses=1]
+ %231 = fadd float %229, %230 ; [#uses=1]
+ %232 = fmul float %191, %166 ; [#uses=1]
+ %233 = fmul float %194, %169 ; [#uses=1]
+ %234 = fadd float %232, %233 ; [#uses=1]
+ %235 = fmul float %198, %173 ; [#uses=1]
+ %236 = fadd float %234, %235 ; [#uses=1]
+ %237 = fmul float %202, %166 ; [#uses=1]
+ %238 = fmul float %205, %169 ; [#uses=1]
+ %239 = fadd float %237, %238 ; [#uses=1]
+ %240 = fmul float %209, %173 ; [#uses=1]
+ %241 = fadd float %239, %240 ; [#uses=1]
+ %242 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %241, float* %242, align 4
+ %243 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %236, float* %243, align 4
+ %244 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %231, float* %244, align 4
+ %245 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %245, align 4
+ %246 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %226, float* %246, align 4
+ %247 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %221, float* %247, align 4
+ %248 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %216, float* %248, align 4
+ %249 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %249, align 4
+ %250 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %211, float* %250, align 4
+ %251 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %200, float* %251, align 4
+ %252 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %189, float* %252, align 4
+ %253 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %253, align 4
+ %254 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %178, float* %254, align 4
+ %255 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %164, float* %255, align 4
+ %256 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %150, float* %256, align 4
+ %257 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %257, align 4
+ br label %bb7
+
+bb6: ; preds = %bb
+ %258 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %259 = load float* %258, align 4 ; [#uses=4]
+ %260 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %261 = load float* %260, align 4 ; [#uses=3]
+ %262 = fmul float %259, %261 ; [#uses=1]
+ %263 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %264 = load float* %263, align 4 ; [#uses=4]
+ %265 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %266 = load float* %265, align 4 ; [#uses=3]
+ %267 = fmul float %264, %266 ; [#uses=1]
+ %268 = fadd float %262, %267 ; [#uses=1]
+ %269 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %270 = load float* %269, align 4 ; [#uses=4]
+ %271 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %272 = load float* %271, align 4 ; [#uses=3]
+ %273 = fmul float %270, %272 ; [#uses=1]
+ %274 = fadd float %268, %273 ; [#uses=1]
+ %275 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %276 = load float* %275, align 4 ; [#uses=1]
+ %277 = fadd float %274, %276 ; [#uses=2]
+ %278 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %279 = load float* %278, align 4 ; [#uses=4]
+ %280 = fmul float %279, %261 ; [#uses=1]
+ %281 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %282 = load float* %281, align 4 ; [#uses=4]
+ %283 = fmul float %282, %266 ; [#uses=1]
+ %284 = fadd float %280, %283 ; [#uses=1]
+ %285 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %286 = load float* %285, align 4 ; [#uses=4]
+ %287 = fmul float %286, %272 ; [#uses=1]
+ %288 = fadd float %284, %287 ; [#uses=1]
+ %289 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %290 = load float* %289, align 4 ; [#uses=1]
+ %291 = fadd float %288, %290 ; [#uses=2]
+ %292 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %293 = load float* %292, align 4 ; [#uses=4]
+ %294 = fmul float %293, %261 ; [#uses=1]
+ %295 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %296 = load float* %295, align 4 ; [#uses=4]
+ %297 = fmul float %296, %266 ; [#uses=1]
+ %298 = fadd float %294, %297 ; [#uses=1]
+ %299 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %300 = load float* %299, align 4 ; [#uses=4]
+ %301 = fmul float %300, %272 ; [#uses=1]
+ %302 = fadd float %298, %301 ; [#uses=1]
+ %303 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %304 = load float* %303, align 4 ; [#uses=1]
+ %305 = fadd float %302, %304 ; [#uses=2]
+ %306 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %307 = load float* %306, align 4 ; [#uses=3]
+ %308 = fmul float %307, %259 ; [#uses=1]
+ %309 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %310 = load float* %309, align 4 ; [#uses=3]
+ %311 = fmul float %310, %264 ; [#uses=1]
+ %312 = fadd float %308, %311 ; [#uses=1]
+ %313 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %314 = load float* %313, align 4 ; [#uses=3]
+ %315 = fmul float %314, %270 ; [#uses=1]
+ %316 = fadd float %312, %315 ; [#uses=2]
+ %317 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %318 = load float* %317, align 4 ; [#uses=3]
+ %319 = fmul float %318, %259 ; [#uses=1]
+ %320 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %321 = load float* %320, align 4 ; [#uses=3]
+ %322 = fmul float %321, %264 ; [#uses=1]
+ %323 = fadd float %319, %322 ; [#uses=1]
+ %324 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %325 = load float* %324, align 4 ; [#uses=3]
+ %326 = fmul float %325, %270 ; [#uses=1]
+ %327 = fadd float %323, %326 ; [#uses=2]
+ %328 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %329 = load float* %328, align 4 ; [#uses=3]
+ %330 = fmul float %329, %259 ; [#uses=1]
+ %331 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %332 = load float* %331, align 4 ; [#uses=3]
+ %333 = fmul float %332, %264 ; [#uses=1]
+ %334 = fadd float %330, %333 ; [#uses=1]
+ %335 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %336 = load float* %335, align 4 ; [#uses=3]
+ %337 = fmul float %336, %270 ; [#uses=1]
+ %338 = fadd float %334, %337 ; [#uses=2]
+ %339 = fmul float %307, %279 ; [#uses=1]
+ %340 = fmul float %310, %282 ; [#uses=1]
+ %341 = fadd float %339, %340 ; [#uses=1]
+ %342 = fmul float %314, %286 ; [#uses=1]
+ %343 = fadd float %341, %342 ; [#uses=2]
+ %344 = fmul float %318, %279 ; [#uses=1]
+ %345 = fmul float %321, %282 ; [#uses=1]
+ %346 = fadd float %344, %345 ; [#uses=1]
+ %347 = fmul float %325, %286 ; [#uses=1]
+ %348 = fadd float %346, %347 ; [#uses=2]
+ %349 = fmul float %329, %279 ; [#uses=1]
+ %350 = fmul float %332, %282 ; [#uses=1]
+ %351 = fadd float %349, %350 ; [#uses=1]
+ %352 = fmul float %336, %286 ; [#uses=1]
+ %353 = fadd float %351, %352 ; [#uses=2]
+ %354 = fmul float %307, %293 ; [#uses=1]
+ %355 = fmul float %310, %296 ; [#uses=1]
+ %356 = fadd float %354, %355 ; [#uses=1]
+ %357 = fmul float %314, %300 ; [#uses=1]
+ %358 = fadd float %356, %357 ; [#uses=2]
+ %359 = fmul float %318, %293 ; [#uses=1]
+ %360 = fmul float %321, %296 ; [#uses=1]
+ %361 = fadd float %359, %360 ; [#uses=1]
+ %362 = fmul float %325, %300 ; [#uses=1]
+ %363 = fadd float %361, %362 ; [#uses=2]
+ %364 = fmul float %329, %293 ; [#uses=1]
+ %365 = fmul float %332, %296 ; [#uses=1]
+ %366 = fadd float %364, %365 ; [#uses=1]
+ %367 = fmul float %336, %300 ; [#uses=1]
+ %368 = fadd float %366, %367 ; [#uses=2]
+ %369 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %368, float* %369, align 4
+ %370 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %363, float* %370, align 4
+ %371 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %358, float* %371, align 4
+ %372 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %372, align 4
+ %373 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %353, float* %373, align 4
+ %374 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %348, float* %374, align 4
+ %375 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %343, float* %375, align 4
+ %376 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %376, align 4
+ %377 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %338, float* %377, align 4
+ %378 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %327, float* %378, align 4
+ %379 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %316, float* %379, align 4
+ %380 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %380, align 4
+ %381 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %305, float* %381, align 4
+ %382 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %291, float* %382, align 4
+ %383 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %277, float* %383, align 4
+ %384 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %384, align 4
+ %385 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %386 = load float* %385, align 4 ; [#uses=4]
+ %387 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %388 = load float* %387, align 4 ; [#uses=3]
+ %389 = fmul float %386, %388 ; [#uses=1]
+ %390 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %391 = load float* %390, align 4 ; [#uses=4]
+ %392 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %393 = load float* %392, align 4 ; [#uses=3]
+ %394 = fmul float %391, %393 ; [#uses=1]
+ %395 = fadd float %389, %394 ; [#uses=1]
+ %396 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %397 = load float* %396, align 4 ; [#uses=4]
+ %398 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %399 = load float* %398, align 4 ; [#uses=3]
+ %400 = fmul float %397, %399 ; [#uses=1]
+ %401 = fadd float %395, %400 ; [#uses=1]
+ %402 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %403 = load float* %402, align 4 ; [#uses=1]
+ %404 = fadd float %401, %403 ; [#uses=2]
+ %405 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %406 = load float* %405, align 4 ; [#uses=4]
+ %407 = fmul float %406, %388 ; [#uses=1]
+ %408 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %409 = load float* %408, align 4 ; [#uses=4]
+ %410 = fmul float %409, %393 ; [#uses=1]
+ %411 = fadd float %407, %410 ; [#uses=1]
+ %412 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %413 = load float* %412, align 4 ; [#uses=4]
+ %414 = fmul float %413, %399 ; [#uses=1]
+ %415 = fadd float %411, %414 ; [#uses=1]
+ %416 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %417 = load float* %416, align 4 ; [#uses=1]
+ %418 = fadd float %415, %417 ; [#uses=2]
+ %419 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %420 = load float* %419, align 4 ; [#uses=4]
+ %421 = fmul float %420, %388 ; [#uses=1]
+ %422 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %423 = load float* %422, align 4 ; [#uses=4]
+ %424 = fmul float %423, %393 ; [#uses=1]
+ %425 = fadd float %421, %424 ; [#uses=1]
+ %426 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %427 = load float* %426, align 4 ; [#uses=4]
+ %428 = fmul float %427, %399 ; [#uses=1]
+ %429 = fadd float %425, %428 ; [#uses=1]
+ %430 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %431 = load float* %430, align 4 ; [#uses=1]
+ %432 = fadd float %429, %431 ; [#uses=2]
+ %433 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %434 = load float* %433, align 4 ; [#uses=3]
+ %435 = fmul float %434, %386 ; [#uses=1]
+ %436 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %437 = load float* %436, align 4 ; [#uses=3]
+ %438 = fmul float %437, %391 ; [#uses=1]
+ %439 = fadd float %435, %438 ; [#uses=1]
+ %440 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %441 = load float* %440, align 4 ; [#uses=3]
+ %442 = fmul float %441, %397 ; [#uses=1]
+ %443 = fadd float %439, %442 ; [#uses=1]
+ %444 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %445 = load float* %444, align 4 ; [#uses=3]
+ %446 = fmul float %445, %386 ; [#uses=1]
+ %447 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %448 = load float* %447, align 4 ; [#uses=3]
+ %449 = fmul float %448, %391 ; [#uses=1]
+ %450 = fadd float %446, %449 ; [#uses=1]
+ %451 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %452 = load float* %451, align 4 ; [#uses=3]
+ %453 = fmul float %452, %397 ; [#uses=1]
+ %454 = fadd float %450, %453 ; [#uses=1]
+ %455 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %456 = load float* %455, align 4 ; [#uses=3]
+ %457 = fmul float %456, %386 ; [#uses=1]
+ %458 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %459 = load float* %458, align 4 ; [#uses=3]
+ %460 = fmul float %459, %391 ; [#uses=1]
+ %461 = fadd float %457, %460 ; [#uses=1]
+ %462 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %463 = load float* %462, align 4 ; [#uses=3]
+ %464 = fmul float %463, %397 ; [#uses=1]
+ %465 = fadd float %461, %464 ; [#uses=1]
+ %466 = fmul float %434, %406 ; [#uses=1]
+ %467 = fmul float %437, %409 ; [#uses=1]
+ %468 = fadd float %466, %467 ; [#uses=1]
+ %469 = fmul float %441, %413 ; [#uses=1]
+ %470 = fadd float %468, %469 ; [#uses=1]
+ %471 = fmul float %445, %406 ; [#uses=1]
+ %472 = fmul float %448, %409 ; [#uses=1]
+ %473 = fadd float %471, %472 ; [#uses=1]
+ %474 = fmul float %452, %413 ; [#uses=1]
+ %475 = fadd float %473, %474 ; [#uses=1]
+ %476 = fmul float %456, %406 ; [#uses=1]
+ %477 = fmul float %459, %409 ; [#uses=1]
+ %478 = fadd float %476, %477 ; [#uses=1]
+ %479 = fmul float %463, %413 ; [#uses=1]
+ %480 = fadd float %478, %479 ; [#uses=1]
+ %481 = fmul float %434, %420 ; [#uses=1]
+ %482 = fmul float %437, %423 ; [#uses=1]
+ %483 = fadd float %481, %482 ; [#uses=1]
+ %484 = fmul float %441, %427 ; [#uses=1]
+ %485 = fadd float %483, %484 ; [#uses=1]
+ %486 = fmul float %445, %420 ; [#uses=1]
+ %487 = fmul float %448, %423 ; [#uses=1]
+ %488 = fadd float %486, %487 ; [#uses=1]
+ %489 = fmul float %452, %427 ; [#uses=1]
+ %490 = fadd float %488, %489 ; [#uses=1]
+ %491 = fmul float %456, %420 ; [#uses=1]
+ %492 = fmul float %459, %423 ; [#uses=1]
+ %493 = fadd float %491, %492 ; [#uses=1]
+ %494 = fmul float %463, %427 ; [#uses=1]
+ %495 = fadd float %493, %494 ; [#uses=1]
+ %496 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %495, float* %496, align 4
+ %497 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %490, float* %497, align 4
+ %498 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %485, float* %498, align 4
+ %499 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %499, align 4
+ %500 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %480, float* %500, align 4
+ %501 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %475, float* %501, align 4
+ %502 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %470, float* %502, align 4
+ %503 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %503, align 4
+ %504 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %465, float* %504, align 4
+ %505 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %454, float* %505, align 4
+ %506 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %443, float* %506, align 4
+ %507 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %507, align 4
+ %508 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %432, float* %508, align 4
+ %509 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %418, float* %509, align 4
+ %510 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %404, float* %510, align 4
+ %511 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %511, align 4
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5
+ %512 = phi float [ %316, %bb6 ], [ %62, %bb5 ] ; [#uses=1]
+ %513 = phi float [ %343, %bb6 ], [ %89, %bb5 ] ; [#uses=1]
+ %514 = phi float [ %358, %bb6 ], [ %104, %bb5 ] ; [#uses=1]
+ %515 = phi float [ %327, %bb6 ], [ %73, %bb5 ] ; [#uses=1]
+ %516 = phi float [ %348, %bb6 ], [ %94, %bb5 ] ; [#uses=1]
+ %517 = phi float [ %363, %bb6 ], [ %109, %bb5 ] ; [#uses=1]
+ %518 = phi float [ %338, %bb6 ], [ %84, %bb5 ] ; [#uses=4]
+ %519 = phi float [ %353, %bb6 ], [ %99, %bb5 ] ; [#uses=4]
+ %520 = phi float [ %368, %bb6 ], [ %114, %bb5 ] ; [#uses=4]
+ %521 = phi float [ %404, %bb6 ], [ %150, %bb5 ] ; [#uses=3]
+ %522 = phi float [ %418, %bb6 ], [ %164, %bb5 ] ; [#uses=3]
+ %523 = phi float [ %432, %bb6 ], [ %178, %bb5 ] ; [#uses=3]
+ %524 = phi float [ %277, %bb6 ], [ %23, %bb5 ] ; [#uses=4]
+ %525 = phi float [ %291, %bb6 ], [ %37, %bb5 ] ; [#uses=4]
+ %526 = phi float [ %305, %bb6 ], [ %51, %bb5 ] ; [#uses=4]
+ %527 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 44, i32 0, i32 0 ; [#uses=1]
+ store float %526, float* %527, align 4
+ %528 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 44, i32 0, i32 1 ; [#uses=1]
+ store float %525, float* %528, align 4
+ %529 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 44, i32 0, i32 2 ; [#uses=1]
+ store float %524, float* %529, align 4
+ %530 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 44, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %530, align 4
+ %531 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 45, i32 0, i32 0 ; [#uses=1]
+ store float %523, float* %531, align 4
+ %532 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 45, i32 0, i32 1 ; [#uses=1]
+ store float %522, float* %532, align 4
+ %533 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 45, i32 0, i32 2 ; [#uses=1]
+ store float %521, float* %533, align 4
+ %534 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 45, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %534, align 4
+ %535 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 43, i32 0, i32 0 ; [#uses=1]
+ store float %520, float* %535, align 4
+ %536 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 43, i32 0, i32 1 ; [#uses=1]
+ store float %519, float* %536, align 4
+ %537 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 43, i32 0, i32 2 ; [#uses=1]
+ store float %518, float* %537, align 4
+ %538 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 43, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %538, align 4
+ br i1 %toBool, label %bb9, label %bb11
+
+bb9: ; preds = %bb7
+ %539 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 1 ; [#uses=1]
+ %540 = load i8* %539, align 4 ; [#uses=1]
+ %toBool10 = icmp eq i8 %540, 0 ; [#uses=1]
+ br i1 %toBool10, label %bb13, label %bb11
+
+bb11: ; preds = %bb9, %bb7
+ %541 = fsub float %521, %524 ; [#uses=2]
+ %542 = fsub float %522, %525 ; [#uses=2]
+ %543 = fsub float %523, %526 ; [#uses=2]
+ %544 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 47, i32 0, i32 0 ; [#uses=1]
+ store float %543, float* %544, align 4
+ %545 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 47, i32 0, i32 1 ; [#uses=1]
+ store float %542, float* %545, align 4
+ %546 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 47, i32 0, i32 2 ; [#uses=1]
+ store float %541, float* %546, align 4
+ %547 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 47, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %547, align 4
+ br label %return
+
+bb13: ; preds = %bb9
+ %548 = fsub float %524, %521 ; [#uses=2]
+ %549 = fsub float %525, %522 ; [#uses=2]
+ %550 = fsub float %526, %523 ; [#uses=2]
+ %551 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 47, i32 0, i32 0 ; [#uses=1]
+ store float %550, float* %551, align 4
+ %552 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 47, i32 0, i32 1 ; [#uses=1]
+ store float %549, float* %552, align 4
+ %553 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 47, i32 0, i32 2 ; [#uses=1]
+ store float %548, float* %553, align 4
+ %554 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 47, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %554, align 4
+ br label %return
+
+return: ; preds = %bb13, %bb11
+ %555 = phi float [ %548, %bb13 ], [ %541, %bb11 ] ; [#uses=4]
+ %556 = phi float [ %549, %bb13 ], [ %542, %bb11 ] ; [#uses=4]
+ %557 = phi float [ %550, %bb13 ], [ %543, %bb11 ] ; [#uses=4]
+ %558 = fmul float %520, %557 ; [#uses=1]
+ %559 = fmul float %519, %556 ; [#uses=1]
+ %560 = fadd float %558, %559 ; [#uses=1]
+ %561 = fmul float %518, %555 ; [#uses=1]
+ %562 = fadd float %560, %561 ; [#uses=3]
+ %563 = fmul float %518, %562 ; [#uses=1]
+ %564 = fmul float %519, %562 ; [#uses=1]
+ %565 = fmul float %520, %562 ; [#uses=1]
+ %566 = fadd float %524, %563 ; [#uses=1]
+ %567 = fadd float %525, %564 ; [#uses=1]
+ %568 = fadd float %526, %565 ; [#uses=1]
+ %569 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 46, i32 0, i32 0 ; [#uses=1]
+ store float %568, float* %569, align 4
+ %570 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 46, i32 0, i32 1 ; [#uses=1]
+ store float %567, float* %570, align 4
+ %571 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 46, i32 0, i32 2 ; [#uses=1]
+ store float %566, float* %571, align 4
+ %572 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 46, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %572, align 4
+ %scevgep102 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 48, i32 0, i32 0 ; [#uses=1]
+ %573 = fmul float %557, %520 ; [#uses=1]
+ %574 = fmul float %556, %519 ; [#uses=1]
+ %575 = fadd float %573, %574 ; [#uses=1]
+ %576 = fmul float %555, %518 ; [#uses=1]
+ %577 = fadd float %575, %576 ; [#uses=1]
+ store float %577, float* %scevgep102, align 4
+ %scevgep102.1 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 48, i32 0, i32 1 ; [#uses=1]
+ %578 = fmul float %557, %517 ; [#uses=1]
+ %579 = fmul float %556, %516 ; [#uses=1]
+ %580 = fadd float %578, %579 ; [#uses=1]
+ %581 = fmul float %555, %515 ; [#uses=1]
+ %582 = fadd float %580, %581 ; [#uses=1]
+ store float %582, float* %scevgep102.1, align 4
+ %scevgep102.2 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 48, i32 0, i32 2 ; [#uses=1]
+ %583 = fmul float %557, %514 ; [#uses=1]
+ %584 = fmul float %556, %513 ; [#uses=1]
+ %585 = fadd float %583, %584 ; [#uses=1]
+ %586 = fmul float %555, %512 ; [#uses=1]
+ %587 = fadd float %585, %586 ; [#uses=1]
+ store float %587, float* %scevgep102.2, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN18btSliderConstraint13testLinLimitsEv(%struct.btSliderConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 34 ; [#uses=3]
+ store i8 0, i8* %0, align 4
+ %1 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 48, i32 0, i32 0 ; [#uses=5]
+ %2 = load float* %1, align 4 ; [#uses=5]
+ %3 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 51 ; [#uses=1]
+ store float %2, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = fcmp ugt float %5, %7 ; [#uses=1]
+ br i1 %8, label %bb6, label %bb
+
+bb: ; preds = %entry
+ %9 = fcmp ogt float %2, %7 ; [#uses=1]
+ br i1 %9, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %10 = fsub float %2, %7 ; [#uses=1]
+ store float %10, float* %1, align 4
+ store i8 1, i8* %0, align 4
+ ret void
+
+bb2: ; preds = %bb
+ %11 = fcmp olt float %2, %5 ; [#uses=1]
+ br i1 %11, label %bb4, label %bb5
+
+bb4: ; preds = %bb2
+ %12 = fsub float %2, %5 ; [#uses=1]
+ store float %12, float* %1, align 4
+ store i8 1, i8* %0, align 4
+ ret void
+
+bb5: ; preds = %bb2
+ store float 0.000000e+00, float* %1, align 4
+ ret void
+
+bb6: ; preds = %entry
+ store float 0.000000e+00, float* %1, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN18btSliderConstraint11getAncorInAEv(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btSliderConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fadd float %1, %3 ; [#uses=1]
+ %5 = fmul float %4, 5.000000e-01 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 43, i32 0, i32 2 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = fmul float %7, %5 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 43, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fmul float %10, %5 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 43, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fmul float %13, %5 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 44, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fadd float %16, %8 ; [#uses=3]
+ %18 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 44, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fadd float %19, %11 ; [#uses=3]
+ %21 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 44, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fadd float %22, %14 ; [#uses=3]
+ %24 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %29 = load %struct.btRigidBody** %28, align 4 ; [#uses=12]
+ %30 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=2]
+ %40 = load float* %37, align 4 ; [#uses=2]
+ %41 = load float* %36, align 4 ; [#uses=2]
+ %42 = load float* %35, align 4 ; [#uses=2]
+ %43 = load float* %34, align 4 ; [#uses=2]
+ %44 = load float* %33, align 4 ; [#uses=2]
+ %45 = load float* %32, align 4 ; [#uses=2]
+ %46 = load float* %31, align 4 ; [#uses=2]
+ %47 = load float* %30, align 4 ; [#uses=2]
+ %48 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fsub float -0.000000e+00, %49 ; [#uses=3]
+ %51 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = fsub float -0.000000e+00, %52 ; [#uses=3]
+ %54 = getelementptr inbounds %struct.btRigidBody* %29, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fsub float -0.000000e+00, %55 ; [#uses=3]
+ %57 = fmul float %45, %56 ; [#uses=1]
+ %58 = fmul float %46, %53 ; [#uses=1]
+ %59 = fadd float %57, %58 ; [#uses=1]
+ %60 = fmul float %47, %50 ; [#uses=1]
+ %61 = fadd float %59, %60 ; [#uses=1]
+ %62 = fmul float %42, %56 ; [#uses=1]
+ %63 = fmul float %43, %53 ; [#uses=1]
+ %64 = fadd float %62, %63 ; [#uses=1]
+ %65 = fmul float %44, %50 ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=1]
+ %67 = fmul float %39, %56 ; [#uses=1]
+ %68 = fmul float %40, %53 ; [#uses=1]
+ %69 = fadd float %67, %68 ; [#uses=1]
+ %70 = fmul float %41, %50 ; [#uses=1]
+ %71 = fadd float %69, %70 ; [#uses=1]
+ %72 = fmul float %45, %23 ; [#uses=1]
+ %73 = fmul float %46, %20 ; [#uses=1]
+ %74 = fadd float %72, %73 ; [#uses=1]
+ %75 = fmul float %47, %17 ; [#uses=1]
+ %76 = fadd float %74, %75 ; [#uses=1]
+ %77 = fadd float %76, %61 ; [#uses=1]
+ %78 = fmul float %42, %23 ; [#uses=1]
+ %79 = fmul float %43, %20 ; [#uses=1]
+ %80 = fadd float %78, %79 ; [#uses=1]
+ %81 = fmul float %44, %17 ; [#uses=1]
+ %82 = fadd float %80, %81 ; [#uses=1]
+ %83 = fadd float %82, %66 ; [#uses=1]
+ %84 = fmul float %39, %23 ; [#uses=1]
+ %85 = fmul float %40, %20 ; [#uses=1]
+ %86 = fadd float %84, %85 ; [#uses=1]
+ %87 = fmul float %41, %17 ; [#uses=1]
+ %88 = fadd float %86, %87 ; [#uses=1]
+ %89 = fadd float %88, %71 ; [#uses=1]
+ store float %89, float* %24, align 4
+ store float %83, float* %25, align 4
+ store float %77, float* %26, align 4
+ store float 0.000000e+00, float* %27, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN18btSliderConstraint11getAncorInBEv(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btSliderConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSliderConstraint8setParamEifi(%struct.btSliderConstraint* %this, i32 %num, float %value, i32 %axis) nounwind align 2 {
+entry:
+ switch i32 %num, label %return [
+ i32 2, label %bb
+ i32 3, label %bb8
+ i32 4, label %bb12
+ ]
+
+bb: ; preds = %entry
+ %0 = icmp slt i32 %axis, 1 ; [#uses=1]
+ br i1 %0, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %1 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ store float %value, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=1]
+ %4 = or i32 %3, 512 ; [#uses=1]
+ store i32 %4, i32* %2, align 4
+ ret void
+
+bb2: ; preds = %bb
+ %5 = icmp slt i32 %axis, 3 ; [#uses=1]
+ br i1 %5, label %bb3, label %bb4
+
+bb3: ; preds = %bb2
+ %6 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 26 ; [#uses=1]
+ store float %value, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=2]
+ %8 = load i32* %7, align 4 ; [#uses=1]
+ %9 = or i32 %8, 32 ; [#uses=1]
+ store i32 %9, i32* %7, align 4
+ ret void
+
+bb4: ; preds = %bb2
+ %10 = icmp eq i32 %axis, 3 ; [#uses=1]
+ br i1 %10, label %bb5, label %bb6
+
+bb5: ; preds = %bb4
+ %11 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ store float %value, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=2]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = or i32 %13, 2048 ; [#uses=1]
+ store i32 %14, i32* %12, align 4
+ ret void
+
+bb6: ; preds = %bb4
+ %15 = icmp slt i32 %axis, 6 ; [#uses=1]
+ br i1 %15, label %bb7, label %return
+
+bb7: ; preds = %bb6
+ %16 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 30 ; [#uses=1]
+ store float %value, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=2]
+ %18 = load i32* %17, align 4 ; [#uses=1]
+ %19 = or i32 %18, 128 ; [#uses=1]
+ store i32 %19, i32* %17, align 4
+ ret void
+
+bb8: ; preds = %entry
+ %20 = icmp slt i32 %axis, 1 ; [#uses=1]
+ br i1 %20, label %bb9, label %bb10
+
+bb9: ; preds = %bb8
+ %21 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 13 ; [#uses=1]
+ store float %value, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=2]
+ %23 = load i32* %22, align 4 ; [#uses=1]
+ %24 = or i32 %23, 1 ; [#uses=1]
+ store i32 %24, i32* %22, align 4
+ ret void
+
+bb10: ; preds = %bb8
+ %25 = icmp eq i32 %axis, 3 ; [#uses=1]
+ br i1 %25, label %bb11, label %return
+
+bb11: ; preds = %bb10
+ %26 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ store float %value, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=2]
+ %28 = load i32* %27, align 4 ; [#uses=1]
+ %29 = or i32 %28, 4 ; [#uses=1]
+ store i32 %29, i32* %27, align 4
+ ret void
+
+bb12: ; preds = %entry
+ %30 = icmp slt i32 %axis, 1 ; [#uses=1]
+ br i1 %30, label %bb13, label %bb14
+
+bb13: ; preds = %bb12
+ %31 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ store float %value, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=2]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ %34 = or i32 %33, 256 ; [#uses=1]
+ store i32 %34, i32* %32, align 4
+ ret void
+
+bb14: ; preds = %bb12
+ %35 = icmp slt i32 %axis, 3 ; [#uses=1]
+ br i1 %35, label %bb15, label %bb16
+
+bb15: ; preds = %bb14
+ %36 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 29 ; [#uses=1]
+ store float %value, float* %36, align 4
+ %37 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=2]
+ %38 = load i32* %37, align 4 ; [#uses=1]
+ %39 = or i32 %38, 16 ; [#uses=1]
+ store i32 %39, i32* %37, align 4
+ ret void
+
+bb16: ; preds = %bb14
+ %40 = icmp eq i32 %axis, 3 ; [#uses=1]
+ br i1 %40, label %bb17, label %bb18
+
+bb17: ; preds = %bb16
+ %41 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ store float %value, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=2]
+ %43 = load i32* %42, align 4 ; [#uses=1]
+ %44 = or i32 %43, 1024 ; [#uses=1]
+ store i32 %44, i32* %42, align 4
+ ret void
+
+bb18: ; preds = %bb16
+ %45 = icmp slt i32 %axis, 6 ; [#uses=1]
+ br i1 %45, label %bb19, label %return
+
+bb19: ; preds = %bb18
+ %46 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 33 ; [#uses=1]
+ store float %value, float* %46, align 4
+ %47 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=2]
+ %48 = load i32* %47, align 4 ; [#uses=1]
+ %49 = or i32 %48, 64 ; [#uses=1]
+ store i32 %49, i32* %47, align 4
+ ret void
+
+return: ; preds = %bb18, %bb10, %bb6, %entry
+ ret void
+}
+
+; [#uses=1]
+define float @_ZNK18btSliderConstraint8getParamEii(%struct.btSliderConstraint* nocapture %this, i32 %num, i32 %axis) nounwind readonly align 2 {
+entry:
+ switch i32 %num, label %bb20 [
+ i32 2, label %bb
+ i32 3, label %bb8
+ i32 4, label %bb12
+ ]
+
+bb: ; preds = %entry
+ %0 = icmp slt i32 %axis, 1 ; [#uses=1]
+ br i1 %0, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %1 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ ret float %2
+
+bb2: ; preds = %bb
+ %3 = icmp slt i32 %axis, 3 ; [#uses=1]
+ br i1 %3, label %bb3, label %bb4
+
+bb3: ; preds = %bb2
+ %4 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 26 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ ret float %5
+
+bb4: ; preds = %bb2
+ %6 = icmp eq i32 %axis, 3 ; [#uses=1]
+ br i1 %6, label %bb5, label %bb6
+
+bb5: ; preds = %bb4
+ %7 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ ret float %8
+
+bb6: ; preds = %bb4
+ %9 = icmp slt i32 %axis, 6 ; [#uses=1]
+ br i1 %9, label %bb7, label %bb20
+
+bb7: ; preds = %bb6
+ %10 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 30 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ ret float %11
+
+bb8: ; preds = %entry
+ %12 = icmp slt i32 %axis, 1 ; [#uses=1]
+ br i1 %12, label %bb9, label %bb10
+
+bb9: ; preds = %bb8
+ %13 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 13 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ ret float %14
+
+bb10: ; preds = %bb8
+ %15 = icmp eq i32 %axis, 3 ; [#uses=1]
+ br i1 %15, label %bb11, label %bb20
+
+bb11: ; preds = %bb10
+ %16 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ ret float %17
+
+bb12: ; preds = %entry
+ %18 = icmp slt i32 %axis, 1 ; [#uses=1]
+ br i1 %18, label %bb13, label %bb14
+
+bb13: ; preds = %bb12
+ %19 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ ret float %20
+
+bb14: ; preds = %bb12
+ %21 = icmp slt i32 %axis, 3 ; [#uses=1]
+ br i1 %21, label %bb15, label %bb16
+
+bb15: ; preds = %bb14
+ %22 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 29 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ ret float %23
+
+bb16: ; preds = %bb14
+ %24 = icmp eq i32 %axis, 3 ; [#uses=1]
+ br i1 %24, label %bb17, label %bb18
+
+bb17: ; preds = %bb16
+ %25 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ ret float %26
+
+bb18: ; preds = %bb16
+ %27 = icmp slt i32 %axis, 6 ; [#uses=1]
+ br i1 %27, label %bb19, label %bb20
+
+bb19: ; preds = %bb18
+ %28 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 33 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ ret float %29
+
+bb20: ; preds = %bb18, %bb10, %bb6, %entry
+ ret float 0x47EFFFFFE0000000
+}
+
+; [#uses=1]
+define linkonce_odr i8* @_ZNK18btSliderConstraint9serializeEPvP12btSerializer(%struct.btSliderConstraint* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK17btTypedConstraint9serializeEPvP12btSerializer(%struct.btTypedConstraint* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds i8* %dataBuffer, i32 44 ; [#uses=1]
+ %scevgep.i.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i.i = bitcast i8* %2 to float* ; [#uses=1]
+ %scevgep.1.i.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i.i = getelementptr i8* %dataBuffer, i32 48 ; [#uses=1]
+ %3 = bitcast i8* %scevgep4.1.i.i.i to float* ; [#uses=1]
+ %scevgep.2.i.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i.i = getelementptr i8* %dataBuffer, i32 52 ; [#uses=1]
+ %4 = bitcast i8* %scevgep4.2.i.i.i to float* ; [#uses=1]
+ %scevgep.3.i.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i.i = getelementptr i8* %dataBuffer, i32 56 ; [#uses=1]
+ %5 = bitcast i8* %scevgep4.3.i.i.i to float* ; [#uses=1]
+ %6 = load float* %scevgep.i.i.i, align 4 ; [#uses=1]
+ store float %6, float* %scevgep4.i.i.i, align 4
+ %7 = load float* %scevgep.1.i.i.i, align 4 ; [#uses=1]
+ store float %7, float* %3, align 4
+ %8 = load float* %scevgep.2.i.i.i, align 4 ; [#uses=1]
+ store float %8, float* %4, align 4
+ %9 = load float* %scevgep.3.i.i.i, align 4 ; [#uses=1]
+ store float %9, float* %5, align 4
+ %scevgep.i.1.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.1.i.i = getelementptr i8* %dataBuffer, i32 60 ; [#uses=1]
+ %10 = bitcast i8* %scevgep4.i.1.i.i to float* ; [#uses=1]
+ %scevgep.1.i.1.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.1.i.i = getelementptr i8* %dataBuffer, i32 64 ; [#uses=1]
+ %11 = bitcast i8* %scevgep4.1.i.1.i.i to float* ; [#uses=1]
+ %scevgep.2.i.1.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.1.i.i = getelementptr i8* %dataBuffer, i32 68 ; [#uses=1]
+ %12 = bitcast i8* %scevgep4.2.i.1.i.i to float* ; [#uses=1]
+ %scevgep.3.i.1.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.1.i.i = getelementptr i8* %dataBuffer, i32 72 ; [#uses=1]
+ %13 = bitcast i8* %scevgep4.3.i.1.i.i to float* ; [#uses=1]
+ %14 = load float* %scevgep.i.1.i.i, align 4 ; [#uses=1]
+ store float %14, float* %10, align 4
+ %15 = load float* %scevgep.1.i.1.i.i, align 4 ; [#uses=1]
+ store float %15, float* %11, align 4
+ %16 = load float* %scevgep.2.i.1.i.i, align 4 ; [#uses=1]
+ store float %16, float* %12, align 4
+ %17 = load float* %scevgep.3.i.1.i.i, align 4 ; [#uses=1]
+ store float %17, float* %13, align 4
+ %scevgep.i.2.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.2.i.i = getelementptr i8* %dataBuffer, i32 76 ; [#uses=1]
+ %18 = bitcast i8* %scevgep4.i.2.i.i to float* ; [#uses=1]
+ %scevgep.1.i.2.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.2.i.i = getelementptr i8* %dataBuffer, i32 80 ; [#uses=1]
+ %19 = bitcast i8* %scevgep4.1.i.2.i.i to float* ; [#uses=1]
+ %scevgep.2.i.2.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.2.i.i = getelementptr i8* %dataBuffer, i32 84 ; [#uses=1]
+ %20 = bitcast i8* %scevgep4.2.i.2.i.i to float* ; [#uses=1]
+ %scevgep.3.i.2.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.2.i.i = getelementptr i8* %dataBuffer, i32 88 ; [#uses=1]
+ %21 = bitcast i8* %scevgep4.3.i.2.i.i to float* ; [#uses=1]
+ %22 = load float* %scevgep.i.2.i.i, align 4 ; [#uses=1]
+ store float %22, float* %18, align 4
+ %23 = load float* %scevgep.1.i.2.i.i, align 4 ; [#uses=1]
+ store float %23, float* %19, align 4
+ %24 = load float* %scevgep.2.i.2.i.i, align 4 ; [#uses=1]
+ store float %24, float* %20, align 4
+ %25 = load float* %scevgep.3.i.2.i.i, align 4 ; [#uses=1]
+ store float %25, float* %21, align 4
+ %scevgep.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i = getelementptr i8* %dataBuffer, i32 92 ; [#uses=1]
+ %26 = bitcast i8* %scevgep4.i.i to float* ; [#uses=1]
+ %27 = load float* %scevgep.i.i, align 4 ; [#uses=1]
+ store float %27, float* %26, align 4
+ %scevgep.1.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i = getelementptr i8* %dataBuffer, i32 96 ; [#uses=1]
+ %28 = bitcast i8* %scevgep4.1.i.i to float* ; [#uses=1]
+ %29 = load float* %scevgep.1.i.i, align 4 ; [#uses=1]
+ store float %29, float* %28, align 4
+ %scevgep.2.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i = getelementptr i8* %dataBuffer, i32 100 ; [#uses=1]
+ %30 = bitcast i8* %scevgep4.2.i.i to float* ; [#uses=1]
+ %31 = load float* %scevgep.2.i.i, align 4 ; [#uses=1]
+ store float %31, float* %30, align 4
+ %scevgep.3.i.i = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i = getelementptr i8* %dataBuffer, i32 104 ; [#uses=1]
+ %32 = bitcast i8* %scevgep4.3.i.i to float* ; [#uses=1]
+ %33 = load float* %scevgep.3.i.i, align 4 ; [#uses=1]
+ store float %33, float* %32, align 4
+ %34 = getelementptr inbounds i8* %dataBuffer, i32 108 ; [#uses=1]
+ %scevgep.i.i.i2 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i.i3 = bitcast i8* %34 to float* ; [#uses=1]
+ %scevgep.1.i.i.i4 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i.i5 = getelementptr i8* %dataBuffer, i32 112 ; [#uses=1]
+ %35 = bitcast i8* %scevgep4.1.i.i.i5 to float* ; [#uses=1]
+ %scevgep.2.i.i.i6 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i.i7 = getelementptr i8* %dataBuffer, i32 116 ; [#uses=1]
+ %36 = bitcast i8* %scevgep4.2.i.i.i7 to float* ; [#uses=1]
+ %scevgep.3.i.i.i8 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i.i9 = getelementptr i8* %dataBuffer, i32 120 ; [#uses=1]
+ %37 = bitcast i8* %scevgep4.3.i.i.i9 to float* ; [#uses=1]
+ %38 = load float* %scevgep.i.i.i2, align 4 ; [#uses=1]
+ store float %38, float* %scevgep4.i.i.i3, align 4
+ %39 = load float* %scevgep.1.i.i.i4, align 4 ; [#uses=1]
+ store float %39, float* %35, align 4
+ %40 = load float* %scevgep.2.i.i.i6, align 4 ; [#uses=1]
+ store float %40, float* %36, align 4
+ %41 = load float* %scevgep.3.i.i.i8, align 4 ; [#uses=1]
+ store float %41, float* %37, align 4
+ %scevgep.i.1.i.i10 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.1.i.i11 = getelementptr i8* %dataBuffer, i32 124 ; [#uses=1]
+ %42 = bitcast i8* %scevgep4.i.1.i.i11 to float* ; [#uses=1]
+ %scevgep.1.i.1.i.i12 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.1.i.i13 = getelementptr i8* %dataBuffer, i32 128 ; [#uses=1]
+ %43 = bitcast i8* %scevgep4.1.i.1.i.i13 to float* ; [#uses=1]
+ %scevgep.2.i.1.i.i14 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.1.i.i15 = getelementptr i8* %dataBuffer, i32 132 ; [#uses=1]
+ %44 = bitcast i8* %scevgep4.2.i.1.i.i15 to float* ; [#uses=1]
+ %scevgep.3.i.1.i.i16 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.1.i.i17 = getelementptr i8* %dataBuffer, i32 136 ; [#uses=1]
+ %45 = bitcast i8* %scevgep4.3.i.1.i.i17 to float* ; [#uses=1]
+ %46 = load float* %scevgep.i.1.i.i10, align 4 ; [#uses=1]
+ store float %46, float* %42, align 4
+ %47 = load float* %scevgep.1.i.1.i.i12, align 4 ; [#uses=1]
+ store float %47, float* %43, align 4
+ %48 = load float* %scevgep.2.i.1.i.i14, align 4 ; [#uses=1]
+ store float %48, float* %44, align 4
+ %49 = load float* %scevgep.3.i.1.i.i16, align 4 ; [#uses=1]
+ store float %49, float* %45, align 4
+ %scevgep.i.2.i.i18 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.2.i.i19 = getelementptr i8* %dataBuffer, i32 140 ; [#uses=1]
+ %50 = bitcast i8* %scevgep4.i.2.i.i19 to float* ; [#uses=1]
+ %scevgep.1.i.2.i.i20 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.2.i.i21 = getelementptr i8* %dataBuffer, i32 144 ; [#uses=1]
+ %51 = bitcast i8* %scevgep4.1.i.2.i.i21 to float* ; [#uses=1]
+ %scevgep.2.i.2.i.i22 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.2.i.i23 = getelementptr i8* %dataBuffer, i32 148 ; [#uses=1]
+ %52 = bitcast i8* %scevgep4.2.i.2.i.i23 to float* ; [#uses=1]
+ %scevgep.3.i.2.i.i24 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.2.i.i25 = getelementptr i8* %dataBuffer, i32 152 ; [#uses=1]
+ %53 = bitcast i8* %scevgep4.3.i.2.i.i25 to float* ; [#uses=1]
+ %54 = load float* %scevgep.i.2.i.i18, align 4 ; [#uses=1]
+ store float %54, float* %50, align 4
+ %55 = load float* %scevgep.1.i.2.i.i20, align 4 ; [#uses=1]
+ store float %55, float* %51, align 4
+ %56 = load float* %scevgep.2.i.2.i.i22, align 4 ; [#uses=1]
+ store float %56, float* %52, align 4
+ %57 = load float* %scevgep.3.i.2.i.i24, align 4 ; [#uses=1]
+ store float %57, float* %53, align 4
+ %scevgep.i.i26 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i27 = getelementptr i8* %dataBuffer, i32 156 ; [#uses=1]
+ %58 = bitcast i8* %scevgep4.i.i27 to float* ; [#uses=1]
+ %59 = load float* %scevgep.i.i26, align 4 ; [#uses=1]
+ store float %59, float* %58, align 4
+ %scevgep.1.i.i28 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i29 = getelementptr i8* %dataBuffer, i32 160 ; [#uses=1]
+ %60 = bitcast i8* %scevgep4.1.i.i29 to float* ; [#uses=1]
+ %61 = load float* %scevgep.1.i.i28, align 4 ; [#uses=1]
+ store float %61, float* %60, align 4
+ %scevgep.2.i.i30 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i31 = getelementptr i8* %dataBuffer, i32 164 ; [#uses=1]
+ %62 = bitcast i8* %scevgep4.2.i.i31 to float* ; [#uses=1]
+ %63 = load float* %scevgep.2.i.i30, align 4 ; [#uses=1]
+ store float %63, float* %62, align 4
+ %scevgep.3.i.i32 = getelementptr %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i33 = getelementptr i8* %dataBuffer, i32 168 ; [#uses=1]
+ %64 = bitcast i8* %scevgep4.3.i.i33 to float* ; [#uses=1]
+ %65 = load float* %scevgep.3.i.i32, align 4 ; [#uses=1]
+ store float %65, float* %64, align 4
+ %66 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds i8* %dataBuffer, i32 172 ; [#uses=1]
+ %69 = bitcast i8* %68 to float* ; [#uses=1]
+ store float %67, float* %69, align 4
+ %70 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds i8* %dataBuffer, i32 176 ; [#uses=1]
+ %73 = bitcast i8* %72 to float* ; [#uses=1]
+ store float %71, float* %73, align 4
+ %74 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = getelementptr inbounds i8* %dataBuffer, i32 180 ; [#uses=1]
+ %77 = bitcast i8* %76 to float* ; [#uses=1]
+ store float %75, float* %77, align 4
+ %78 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = getelementptr inbounds i8* %dataBuffer, i32 184 ; [#uses=1]
+ %81 = bitcast i8* %80 to float* ; [#uses=1]
+ store float %79, float* %81, align 4
+ %82 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ %83 = load i8* %82, align 4 ; [#uses=1]
+ %84 = zext i8 %83 to i32 ; [#uses=1]
+ %85 = getelementptr inbounds i8* %dataBuffer, i32 188 ; [#uses=1]
+ %86 = bitcast i8* %85 to i32* ; [#uses=1]
+ store i32 %84, i32* %86, align 4
+ %87 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 2 ; [#uses=1]
+ %88 = load i8* %87, align 1 ; [#uses=1]
+ %89 = zext i8 %88 to i32 ; [#uses=1]
+ %90 = getelementptr inbounds i8* %dataBuffer, i32 192 ; [#uses=1]
+ %91 = bitcast i8* %90 to i32* ; [#uses=1]
+ store i32 %89, i32* %91, align 4
+ ret i8* getelementptr inbounds ([23 x i8]* @.str920, i32 0, i32 0)
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btSliderConstraintD0Ev(%struct.btSliderConstraint* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV18btSliderConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btSliderConstraint* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN18btSliderConstraintD1Ev(%struct.btSliderConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV18btSliderConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSliderConstraint8getInfo1EPN17btTypedConstraint17btConstraintInfo1E(%struct.btSliderConstraint* %this, %struct.CONTACT_KEY_TOKEN* nocapture %info) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 0 ; [#uses=6]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ ret void
+
+bb1: ; preds = %entry
+ store i32 4, i32* %2, align 4
+ %4 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %info, i32 0, i32 1 ; [#uses=5]
+ store i32 2, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %6 = load %struct.btRigidBody** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btRigidBody* %6, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %9 = load %struct.btRigidBody** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btRigidBody* %9, i32 0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN18btSliderConstraint19calculateTransformsERK11btTransformS2_(%struct.btSliderConstraint* %this, %struct.btTransform* %10, %struct.btTransform* %7)
+ tail call void @_ZN18btSliderConstraint13testAngLimitsEv(%struct.btSliderConstraint* %this) nounwind
+ %11 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 34 ; [#uses=3]
+ store i8 0, i8* %11, align 4
+ %12 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 48, i32 0, i32 0 ; [#uses=5]
+ %13 = load float* %12, align 4 ; [#uses=5]
+ %14 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 51 ; [#uses=1]
+ store float %13, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=3]
+ %17 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=3]
+ %19 = fcmp ugt float %16, %18 ; [#uses=1]
+ br i1 %19, label %bb6.i, label %bb.i
+
+bb.i: ; preds = %bb1
+ %20 = fcmp ogt float %13, %18 ; [#uses=1]
+ br i1 %20, label %bb1.i, label %bb2.i
+
+bb1.i: ; preds = %bb.i
+ %21 = fsub float %13, %18 ; [#uses=1]
+ store float %21, float* %12, align 4
+ store i8 1, i8* %11, align 4
+ br label %bb9
+
+bb2.i: ; preds = %bb.i
+ %22 = fcmp olt float %13, %16 ; [#uses=1]
+ br i1 %22, label %bb4.i, label %bb5.i
+
+bb4.i: ; preds = %bb2.i
+ %23 = fsub float %13, %16 ; [#uses=1]
+ store float %23, float* %12, align 4
+ store i8 1, i8* %11, align 4
+ br label %bb9
+
+bb5.i: ; preds = %bb2.i
+ store float 0.000000e+00, float* %12, align 4
+ br label %bb3
+
+bb6.i: ; preds = %bb1
+ store float 0.000000e+00, float* %12, align 4
+ br label %bb3
+
+bb3: ; preds = %bb6.i, %bb5.i
+ %24 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 55 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool4 = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool4, label %bb10, label %bb9
+
+bb9: ; preds = %bb3, %bb4.i, %bb1.i
+ %26 = load i32* %2, align 4 ; [#uses=1]
+ %27 = add nsw i32 %26, 1 ; [#uses=1]
+ store i32 %27, i32* %2, align 4
+ %28 = load i32* %4, align 4 ; [#uses=1]
+ %29 = add nsw i32 %28, -1 ; [#uses=1]
+ store i32 %29, i32* %4, align 4
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb3
+ %30 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 35 ; [#uses=1]
+ %31 = load i8* %30, align 1 ; [#uses=1]
+ %toBool11 = icmp eq i8 %31, 0 ; [#uses=1]
+ br i1 %toBool11, label %bb12, label %bb18
+
+bb12: ; preds = %bb10
+ %32 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 59 ; [#uses=1]
+ %33 = load i8* %32, align 4 ; [#uses=1]
+ %toBool13 = icmp eq i8 %33, 0 ; [#uses=1]
+ br i1 %toBool13, label %bb15, label %bb18
+
+bb15: ; preds = %bb12
+ ret void
+
+bb18: ; preds = %bb12, %bb10
+ %34 = load i32* %2, align 4 ; [#uses=1]
+ %35 = add nsw i32 %34, 1 ; [#uses=1]
+ store i32 %35, i32* %2, align 4
+ %36 = load i32* %4, align 4 ; [#uses=1]
+ %37 = add nsw i32 %36, -1 ; [#uses=1]
+ store i32 %37, i32* %4, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSliderConstraint8getInfo2EPN17btTypedConstraint17btConstraintInfo2E(%struct.btSliderConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %1 = load %struct.btRigidBody** %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 4 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %5 = load %struct.btRigidBody** %4, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 4 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN18btSliderConstraint18getInfo2NonVirtualEPN17btTypedConstraint17btConstraintInfo2ERK11btTransformS5_RK9btVector3S8_ff(%struct.btSliderConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, %struct.btTransform* %11, %struct.btTransform* %10, %struct.btQuadWord* %9, %struct.btQuadWord* %8, float %7, float %3)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSliderConstraint18getInfo2NonVirtualEPN17btTypedConstraint17btConstraintInfo2ERK11btTransformS5_RK9btVector3S8_ff(%struct.btSliderConstraint* %this, %"struct.btTypedConstraint::btConstraintInfo2"* %info, %struct.btTransform* nocapture %transA, %struct.btTransform* nocapture %transB, %struct.btQuadWord* nocapture %linVelA, %struct.btQuadWord* nocapture %linVelB, float %rbAinvMass, float %rbBinvMass) align 2 {
+entry:
+ %p = alloca %struct.btQuadWord, align 8 ; [#uses=14]
+ %q = alloca %struct.btQuadWord, align 8 ; [#uses=14]
+ %tmpA = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %tmpB = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %tmp = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %0 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 6 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=8]
+ %2 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ %3 = load i8* %2, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %3, 0 ; [#uses=1]
+ %iftmp.184.0 = select i1 %toBool, float -1.000000e+00, float 1.000000e+00 ; [#uses=3]
+ %4 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 1, i32 0, i32 2 ; [#uses=2]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 1, i32 0, i32 2 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = fsub float %5, %7 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 1, i32 0, i32 1 ; [#uses=2]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 1, i32 0, i32 1 ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = fsub float %10, %12 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 1, i32 0, i32 0 ; [#uses=2]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 1, i32 0, i32 0 ; [#uses=2]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fsub float %15, %17 ; [#uses=2]
+ %19 = fcmp olt float %rbAinvMass, 0x3E80000000000000 ; [#uses=1]
+ %20 = fcmp olt float %rbBinvMass, 0x3E80000000000000 ; [#uses=1]
+ %or.cond = or i1 %19, %20 ; [#uses=2]
+ %21 = fadd float %rbAinvMass, %rbBinvMass ; [#uses=2]
+ %22 = fcmp ogt float %21, 0.000000e+00 ; [#uses=1]
+ br i1 %22, label %bb7, label %bb9
+
+bb7: ; preds = %entry
+ %23 = fdiv float %rbBinvMass, %21 ; [#uses=1]
+ br label %bb9
+
+bb9: ; preds = %bb7, %entry
+ %storemerge = phi float [ %23, %bb7 ], [ 5.000000e-01, %entry ] ; [#uses=22]
+ %24 = fsub float 1.000000e+00, %storemerge ; [#uses=21]
+ %25 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=4]
+ %29 = load float* %26, align 4 ; [#uses=4]
+ %30 = load float* %25, align 4 ; [#uses=4]
+ %31 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=3]
+ %35 = load float* %32, align 4 ; [#uses=3]
+ %36 = load float* %31, align 4 ; [#uses=3]
+ %37 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 2 ; [#uses=3]
+ %38 = load i8* %37, align 1 ; [#uses=1]
+ %toBool10 = icmp eq i8 %38, 0 ; [#uses=1]
+ br i1 %toBool10, label %bb12, label %bb11
+
+bb11: ; preds = %bb9
+ %39 = fmul float %36, %24 ; [#uses=1]
+ %40 = fmul float %35, %24 ; [#uses=1]
+ %41 = fmul float %34, %24 ; [#uses=1]
+ %42 = fmul float %30, %storemerge ; [#uses=1]
+ %43 = fmul float %29, %storemerge ; [#uses=1]
+ %44 = fmul float %28, %storemerge ; [#uses=1]
+ %45 = fadd float %42, %39 ; [#uses=3]
+ %46 = fadd float %43, %40 ; [#uses=3]
+ %47 = fadd float %44, %41 ; [#uses=3]
+ %48 = fmul float %47, %47 ; [#uses=1]
+ %49 = fmul float %46, %46 ; [#uses=1]
+ %50 = fadd float %48, %49 ; [#uses=1]
+ %51 = fmul float %45, %45 ; [#uses=1]
+ %52 = fadd float %50, %51 ; [#uses=1]
+ %53 = call float @sqrtf(float %52) nounwind readonly ; [#uses=1]
+ %54 = fdiv float 1.000000e+00, %53 ; [#uses=3]
+ %55 = fmul float %47, %54 ; [#uses=7]
+ %56 = fmul float %46, %54 ; [#uses=8]
+ %57 = fmul float %45, %54 ; [#uses=8]
+ %58 = call float @fabsf(float %57) nounwind readnone ; [#uses=1]
+ %59 = fcmp ogt float %58, 0x3FE6A09E60000000 ; [#uses=1]
+ br i1 %59, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb11
+ %60 = fmul float %56, %56 ; [#uses=1]
+ %61 = fmul float %57, %57 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=2]
+ %63 = call float @sqrtf(float %62) nounwind readonly ; [#uses=1]
+ %64 = fdiv float 1.000000e+00, %63 ; [#uses=3]
+ %65 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %65, align 8
+ %66 = fsub float -0.000000e+00, %57 ; [#uses=1]
+ %67 = fmul float %64, %66 ; [#uses=2]
+ %68 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %67, float* %68, align 4
+ %69 = fmul float %56, %64 ; [#uses=2]
+ %70 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %69, float* %70, align 8
+ %71 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 0 ; [#uses=1]
+ %72 = fmul float %62, %64 ; [#uses=1]
+ store float %72, float* %71, align 8
+ %73 = fsub float -0.000000e+00, %55 ; [#uses=1]
+ %74 = fmul float %69, %73 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %74, float* %75, align 4
+ %76 = fmul float %55, %67 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %76, float* %77, align 8
+ br label %bb16
+
+bb1.i: ; preds = %bb11
+ %78 = fmul float %55, %55 ; [#uses=1]
+ %79 = fmul float %56, %56 ; [#uses=1]
+ %80 = fadd float %78, %79 ; [#uses=2]
+ %81 = call float @sqrtf(float %80) nounwind readonly ; [#uses=1]
+ %82 = fdiv float 1.000000e+00, %81 ; [#uses=3]
+ %83 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=1]
+ %84 = fsub float -0.000000e+00, %56 ; [#uses=1]
+ %85 = fmul float %82, %84 ; [#uses=3]
+ store float %85, float* %83, align 8
+ %86 = fmul float %55, %82 ; [#uses=2]
+ %87 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %86, float* %87, align 4
+ %88 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %88, align 8
+ %89 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 0 ; [#uses=1]
+ %90 = fsub float -0.000000e+00, %57 ; [#uses=1]
+ %91 = fmul float %86, %90 ; [#uses=1]
+ store float %91, float* %89, align 8
+ %92 = fmul float %57, %85 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %92, float* %93, align 4
+ %94 = fmul float %80, %82 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %94, float* %95, align 8
+ br label %bb16
+
+bb12: ; preds = %bb9
+ %96 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=2]
+ %100 = load float* %97, align 4 ; [#uses=1]
+ %101 = load float* %96, align 4 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %99, float* %102, align 8
+ %103 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %100, float* %103, align 4
+ %104 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %101, float* %104, align 8
+ %105 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %107 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %108 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %109 = load float* %108, align 4 ; [#uses=1]
+ %110 = load float* %107, align 4 ; [#uses=1]
+ %111 = load float* %106, align 4 ; [#uses=1]
+ %112 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %109, float* %112, align 8
+ %113 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %110, float* %113, align 4
+ %114 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %111, float* %114, align 8
+ %115 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %115, align 4
+ br label %bb16
+
+bb16: ; preds = %bb12, %bb1.i, %bb.i
+ %116 = phi float [ %99, %bb12 ], [ 0.000000e+00, %bb.i ], [ %85, %bb1.i ] ; [#uses=1]
+ %ax1.0.0.0 = phi float [ %28, %bb12 ], [ %55, %bb.i ], [ %55, %bb1.i ] ; [#uses=20]
+ %ax1.0.1.0 = phi float [ %29, %bb12 ], [ %56, %bb.i ], [ %56, %bb1.i ] ; [#uses=20]
+ %ax1.0.2.0 = phi float [ %30, %bb12 ], [ %57, %bb.i ], [ %57, %bb1.i ] ; [#uses=20]
+ %117 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 3 ; [#uses=27]
+ %118 = load float** %117, align 4 ; [#uses=1]
+ %119 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=4]
+ store float %116, float* %118, align 4
+ %120 = load float** %117, align 4 ; [#uses=1]
+ %121 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=6]
+ %122 = load float* %121, align 4 ; [#uses=1]
+ %123 = getelementptr inbounds float* %120, i32 1 ; [#uses=1]
+ store float %122, float* %123, align 4
+ %124 = load float** %117, align 4 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=6]
+ %126 = load float* %125, align 8 ; [#uses=1]
+ %127 = getelementptr inbounds float* %124, i32 2 ; [#uses=1]
+ store float %126, float* %127, align 4
+ %128 = load float** %117, align 4 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 0 ; [#uses=5]
+ %130 = load float* %129, align 8 ; [#uses=1]
+ %131 = getelementptr inbounds float* %128, i32 %1 ; [#uses=1]
+ store float %130, float* %131, align 4
+ %132 = load float** %117, align 4 ; [#uses=1]
+ %133 = add nsw i32 %1, 1 ; [#uses=2]
+ %134 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 1 ; [#uses=6]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ %136 = getelementptr inbounds float* %132, i32 %133 ; [#uses=1]
+ store float %135, float* %136, align 4
+ %137 = load float** %117, align 4 ; [#uses=1]
+ %138 = add nsw i32 %1, 2 ; [#uses=2]
+ %139 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 2 ; [#uses=6]
+ %140 = load float* %139, align 8 ; [#uses=1]
+ %141 = getelementptr inbounds float* %137, i32 %138 ; [#uses=1]
+ store float %140, float* %141, align 4
+ %142 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 5 ; [#uses=27]
+ %143 = load float** %142, align 4 ; [#uses=1]
+ %144 = load float* %119, align 8 ; [#uses=6]
+ %145 = fsub float -0.000000e+00, %144 ; [#uses=1]
+ store float %145, float* %143, align 4
+ %146 = load float** %142, align 4 ; [#uses=1]
+ %147 = load float* %121, align 4 ; [#uses=4]
+ %148 = fsub float -0.000000e+00, %147 ; [#uses=1]
+ %149 = getelementptr inbounds float* %146, i32 1 ; [#uses=1]
+ store float %148, float* %149, align 4
+ %150 = load float** %142, align 4 ; [#uses=1]
+ %151 = load float* %125, align 8 ; [#uses=4]
+ %152 = fsub float -0.000000e+00, %151 ; [#uses=1]
+ %153 = getelementptr inbounds float* %150, i32 2 ; [#uses=1]
+ store float %152, float* %153, align 4
+ %154 = load float** %142, align 4 ; [#uses=1]
+ %155 = load float* %129, align 8 ; [#uses=1]
+ %156 = fsub float -0.000000e+00, %155 ; [#uses=1]
+ %157 = getelementptr inbounds float* %154, i32 %1 ; [#uses=1]
+ store float %156, float* %157, align 4
+ %158 = load float** %142, align 4 ; [#uses=1]
+ %159 = load float* %134, align 4 ; [#uses=1]
+ %160 = fsub float -0.000000e+00, %159 ; [#uses=1]
+ %161 = getelementptr inbounds float* %158, i32 %133 ; [#uses=1]
+ store float %160, float* %161, align 4
+ %162 = load float** %142, align 4 ; [#uses=1]
+ %163 = load float* %139, align 8 ; [#uses=1]
+ %164 = fsub float -0.000000e+00, %163 ; [#uses=1]
+ %165 = getelementptr inbounds float* %162, i32 %138 ; [#uses=1]
+ store float %164, float* %165, align 4
+ %166 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=8]
+ %167 = load i32* %166, align 4 ; [#uses=1]
+ %168 = and i32 %167, 128 ; [#uses=1]
+ %169 = icmp eq i32 %168, 0 ; [#uses=1]
+ %170 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 30 ; [#uses=1]
+ %171 = load float* %170, align 4 ; [#uses=2]
+ br i1 %169, label %bb18, label %bb19
+
+bb18: ; preds = %bb16
+ %172 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 1 ; [#uses=1]
+ %173 = load float* %172, align 4 ; [#uses=1]
+ %174 = fmul float %171, %173 ; [#uses=1]
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb16
+ %iftmp.187.0 = phi float [ %174, %bb18 ], [ %171, %bb16 ] ; [#uses=1]
+ %175 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 0 ; [#uses=10]
+ %176 = load float* %175, align 4 ; [#uses=1]
+ %177 = fmul float %176, %iftmp.187.0 ; [#uses=2]
+ %178 = fmul float %28, %35 ; [#uses=1]
+ %179 = fmul float %29, %34 ; [#uses=1]
+ %180 = fsub float %178, %179 ; [#uses=2]
+ %181 = fmul float %30, %34 ; [#uses=1]
+ %182 = fmul float %28, %36 ; [#uses=1]
+ %183 = fsub float %181, %182 ; [#uses=2]
+ %184 = fmul float %29, %36 ; [#uses=1]
+ %185 = fmul float %30, %35 ; [#uses=1]
+ %186 = fsub float %184, %185 ; [#uses=2]
+ %187 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 7 ; [#uses=15]
+ %188 = load float** %187, align 4 ; [#uses=1]
+ %189 = fmul float %186, %144 ; [#uses=1]
+ %190 = fmul float %183, %147 ; [#uses=1]
+ %191 = fadd float %189, %190 ; [#uses=1]
+ %192 = fmul float %180, %151 ; [#uses=1]
+ %193 = fadd float %191, %192 ; [#uses=1]
+ %194 = fmul float %193, %177 ; [#uses=1]
+ store float %194, float* %188, align 4
+ %195 = load float** %187, align 4 ; [#uses=1]
+ %196 = load float* %129, align 8 ; [#uses=4]
+ %197 = fmul float %186, %196 ; [#uses=1]
+ %198 = load float* %134, align 4 ; [#uses=3]
+ %199 = fmul float %183, %198 ; [#uses=1]
+ %200 = fadd float %197, %199 ; [#uses=1]
+ %201 = load float* %139, align 8 ; [#uses=3]
+ %202 = fmul float %180, %201 ; [#uses=1]
+ %203 = fadd float %200, %202 ; [#uses=1]
+ %204 = fmul float %203, %177 ; [#uses=1]
+ %205 = getelementptr inbounds float* %195, i32 %1 ; [#uses=1]
+ store float %204, float* %205, align 4
+ %206 = load i32* %166, align 4 ; [#uses=1]
+ %207 = and i32 %206, 64 ; [#uses=1]
+ %208 = icmp eq i32 %207, 0 ; [#uses=1]
+ br i1 %208, label %bb21, label %bb20
+
+bb20: ; preds = %bb19
+ %209 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=2]
+ %210 = load float** %209, align 4 ; [#uses=1]
+ %211 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 33 ; [#uses=2]
+ %212 = load float* %211, align 4 ; [#uses=1]
+ store float %212, float* %210, align 4
+ %213 = load float** %209, align 4 ; [#uses=1]
+ %214 = load float* %211, align 4 ; [#uses=1]
+ %215 = getelementptr inbounds float* %213, i32 %1 ; [#uses=1]
+ store float %214, float* %215, align 4
+ br label %bb21
+
+bb21: ; preds = %bb20, %bb19
+ %216 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %217 = load float* %216, align 4 ; [#uses=2]
+ %218 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %219 = load float* %218, align 4 ; [#uses=2]
+ %220 = getelementptr inbounds %struct.btTransform* %transA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %221 = load float* %220, align 4 ; [#uses=2]
+ %222 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %223 = load float* %222, align 4 ; [#uses=2]
+ %224 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %225 = load float* %224, align 4 ; [#uses=2]
+ %226 = getelementptr inbounds %struct.btTransform* %transB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %227 = load float* %226, align 4 ; [#uses=2]
+ %228 = shl i32 %1, 1 ; [#uses=20]
+ %229 = mul nsw i32 %1, 3 ; [#uses=20]
+ %230 = getelementptr inbounds %struct.btQuadWord* %tmpA, i32 0, i32 0, i32 0 ; [#uses=4]
+ store float 0.000000e+00, float* %230, align 8
+ %231 = getelementptr inbounds %struct.btQuadWord* %tmpA, i32 0, i32 0, i32 1 ; [#uses=5]
+ store float 0.000000e+00, float* %231, align 4
+ %232 = getelementptr inbounds %struct.btQuadWord* %tmpA, i32 0, i32 0, i32 2 ; [#uses=5]
+ store float 0.000000e+00, float* %232, align 8
+ %233 = getelementptr inbounds %struct.btQuadWord* %tmpA, i32 0, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %233, align 4
+ %234 = getelementptr inbounds %struct.btQuadWord* %tmpB, i32 0, i32 0, i32 0 ; [#uses=5]
+ store float 0.000000e+00, float* %234, align 8
+ %235 = getelementptr inbounds %struct.btQuadWord* %tmpB, i32 0, i32 0, i32 1 ; [#uses=5]
+ store float 0.000000e+00, float* %235, align 4
+ %236 = getelementptr inbounds %struct.btQuadWord* %tmpB, i32 0, i32 0, i32 2 ; [#uses=5]
+ store float 0.000000e+00, float* %236, align 8
+ %237 = getelementptr inbounds %struct.btQuadWord* %tmpB, i32 0, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %237, align 4
+ %238 = load i8* %37, align 1 ; [#uses=1]
+ %toBool22 = icmp eq i8 %238, 0 ; [#uses=1]
+ br i1 %toBool22, label %bb98.loopexit407, label %bb23
+
+bb23: ; preds = %bb21
+ %239 = load float* %4, align 4 ; [#uses=1]
+ %240 = fsub float %239, %227 ; [#uses=2]
+ %241 = load float* %9, align 4 ; [#uses=1]
+ %242 = fsub float %241, %225 ; [#uses=2]
+ %243 = load float* %14, align 4 ; [#uses=1]
+ %244 = fsub float %243, %223 ; [#uses=2]
+ %245 = fmul float %244, %ax1.0.0.0 ; [#uses=1]
+ %246 = fmul float %242, %ax1.0.1.0 ; [#uses=1]
+ %247 = fadd float %245, %246 ; [#uses=1]
+ %248 = fmul float %240, %ax1.0.2.0 ; [#uses=1]
+ %249 = fadd float %247, %248 ; [#uses=3]
+ %250 = fmul float %ax1.0.2.0, %249 ; [#uses=2]
+ %251 = fmul float %ax1.0.1.0, %249 ; [#uses=2]
+ %252 = fmul float %ax1.0.0.0, %249 ; [#uses=2]
+ %253 = fsub float %240, %250 ; [#uses=2]
+ %254 = fsub float %242, %251 ; [#uses=2]
+ %255 = fsub float %244, %252 ; [#uses=2]
+ %256 = load float* %6, align 4 ; [#uses=1]
+ %257 = fsub float %256, %221 ; [#uses=2]
+ %258 = load float* %11, align 4 ; [#uses=1]
+ %259 = fsub float %258, %219 ; [#uses=2]
+ %260 = load float* %16, align 4 ; [#uses=1]
+ %261 = fsub float %260, %217 ; [#uses=2]
+ %262 = fmul float %261, %ax1.0.0.0 ; [#uses=1]
+ %263 = fmul float %259, %ax1.0.1.0 ; [#uses=1]
+ %264 = fadd float %262, %263 ; [#uses=1]
+ %265 = fmul float %257, %ax1.0.2.0 ; [#uses=1]
+ %266 = fadd float %264, %265 ; [#uses=3]
+ %267 = fmul float %ax1.0.2.0, %266 ; [#uses=2]
+ %268 = fmul float %ax1.0.1.0, %266 ; [#uses=2]
+ %269 = fmul float %ax1.0.0.0, %266 ; [#uses=2]
+ %270 = fsub float %257, %267 ; [#uses=2]
+ %271 = fsub float %259, %268 ; [#uses=2]
+ %272 = fsub float %261, %269 ; [#uses=2]
+ %273 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 51 ; [#uses=1]
+ %274 = load float* %273, align 4 ; [#uses=1]
+ %275 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 48, i32 0, i32 0 ; [#uses=1]
+ %276 = load float* %275, align 4 ; [#uses=1]
+ %277 = fsub float %274, %276 ; [#uses=3]
+ %278 = fmul float %ax1.0.2.0, %277 ; [#uses=1]
+ %279 = fmul float %ax1.0.1.0, %277 ; [#uses=1]
+ %280 = fmul float %ax1.0.0.0, %277 ; [#uses=1]
+ %281 = fadd float %267, %278 ; [#uses=1]
+ %282 = fadd float %268, %279 ; [#uses=1]
+ %283 = fadd float %269, %280 ; [#uses=1]
+ %284 = fsub float %281, %250 ; [#uses=2]
+ %285 = fsub float %282, %251 ; [#uses=2]
+ %286 = fsub float %283, %252 ; [#uses=2]
+ %287 = fmul float %284, %storemerge ; [#uses=1]
+ %288 = fmul float %285, %storemerge ; [#uses=1]
+ %289 = fmul float %286, %storemerge ; [#uses=1]
+ %290 = fadd float %270, %287 ; [#uses=5]
+ %291 = fadd float %271, %288 ; [#uses=5]
+ %292 = fadd float %272, %289 ; [#uses=5]
+ %293 = fmul float %284, %24 ; [#uses=1]
+ %294 = fmul float %285, %24 ; [#uses=1]
+ %295 = fmul float %286, %24 ; [#uses=1]
+ %296 = fsub float %253, %293 ; [#uses=5]
+ %297 = fsub float %254, %294 ; [#uses=5]
+ %298 = fsub float %255, %295 ; [#uses=5]
+ %299 = fmul float %270, %24 ; [#uses=1]
+ %300 = fmul float %271, %24 ; [#uses=1]
+ %301 = fmul float %272, %24 ; [#uses=1]
+ %302 = fmul float %253, %storemerge ; [#uses=1]
+ %303 = fmul float %254, %storemerge ; [#uses=1]
+ %304 = fmul float %255, %storemerge ; [#uses=1]
+ %305 = fadd float %302, %299 ; [#uses=4]
+ %306 = fadd float %303, %300 ; [#uses=4]
+ %307 = fadd float %304, %301 ; [#uses=4]
+ store float %307, float* %119, align 8
+ store float %306, float* %121, align 4
+ store float %305, float* %125, align 8
+ %308 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %308, align 4
+ %309 = fmul float %307, %307 ; [#uses=1]
+ %310 = fmul float %306, %306 ; [#uses=1]
+ %311 = fadd float %309, %310 ; [#uses=1]
+ %312 = fmul float %305, %305 ; [#uses=1]
+ %313 = fadd float %311, %312 ; [#uses=2]
+ %314 = fcmp ogt float %313, 0x3E80000000000000 ; [#uses=1]
+ br i1 %314, label %bb36, label %bb37
+
+bb36: ; preds = %bb23
+ %315 = call float @sqrtf(float %313) nounwind readonly ; [#uses=1]
+ %316 = fdiv float 1.000000e+00, %315 ; [#uses=3]
+ %317 = fmul float %307, %316 ; [#uses=2]
+ store float %317, float* %119, align 8
+ %318 = fmul float %306, %316 ; [#uses=2]
+ store float %318, float* %121, align 4
+ %319 = fmul float %305, %316 ; [#uses=2]
+ store float %319, float* %125, align 8
+ br label %bb48
+
+bb37: ; preds = %bb23
+ %320 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %321 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %322 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %323 = load float* %322, align 4 ; [#uses=2]
+ %324 = load float* %321, align 4 ; [#uses=2]
+ %325 = load float* %320, align 4 ; [#uses=2]
+ store float %323, float* %119, align 8
+ store float %324, float* %121, align 4
+ store float %325, float* %125, align 8
+ store float 0.000000e+00, float* %308, align 4
+ br label %bb48
+
+bb48: ; preds = %bb37, %bb36
+ %326 = phi float [ %325, %bb37 ], [ %319, %bb36 ] ; [#uses=8]
+ %327 = phi float [ %323, %bb37 ], [ %317, %bb36 ] ; [#uses=8]
+ %328 = phi float [ %324, %bb37 ], [ %318, %bb36 ] ; [#uses=8]
+ %329 = fmul float %ax1.0.0.0, %328 ; [#uses=1]
+ %330 = fmul float %ax1.0.1.0, %327 ; [#uses=1]
+ %331 = fsub float %329, %330 ; [#uses=6]
+ %332 = fmul float %ax1.0.2.0, %327 ; [#uses=1]
+ %333 = fmul float %ax1.0.0.0, %326 ; [#uses=1]
+ %334 = fsub float %332, %333 ; [#uses=6]
+ %335 = fmul float %ax1.0.1.0, %326 ; [#uses=1]
+ %336 = fmul float %ax1.0.2.0, %328 ; [#uses=1]
+ %337 = fsub float %335, %336 ; [#uses=6]
+ store float %337, float* %129, align 8
+ store float %334, float* %134, align 4
+ store float %331, float* %139, align 8
+ %338 = getelementptr inbounds %struct.btQuadWord* %q, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %338, align 4
+ %339 = fmul float %292, %328 ; [#uses=1]
+ %340 = fmul float %291, %327 ; [#uses=1]
+ %341 = fsub float %339, %340 ; [#uses=1]
+ %342 = fmul float %290, %327 ; [#uses=1]
+ %343 = fmul float %292, %326 ; [#uses=1]
+ %344 = fsub float %342, %343 ; [#uses=1]
+ %345 = fmul float %291, %326 ; [#uses=1]
+ %346 = fmul float %290, %328 ; [#uses=1]
+ %347 = fsub float %345, %346 ; [#uses=1]
+ %348 = fmul float %298, %328 ; [#uses=1]
+ %349 = fmul float %297, %327 ; [#uses=1]
+ %350 = fsub float %348, %349 ; [#uses=1]
+ %351 = fmul float %296, %327 ; [#uses=1]
+ %352 = fmul float %298, %326 ; [#uses=1]
+ %353 = fsub float %351, %352 ; [#uses=1]
+ %354 = fmul float %297, %326 ; [#uses=1]
+ %355 = fmul float %296, %328 ; [#uses=1]
+ %356 = fsub float %354, %355 ; [#uses=1]
+ %357 = load float** %117, align 4 ; [#uses=1]
+ %scevgep442 = getelementptr float* %357, i32 %228 ; [#uses=1]
+ store float %347, float* %scevgep442, align 4
+ %tmp441.1467 = or i32 %228, 1 ; [#uses=1]
+ %358 = load float** %117, align 4 ; [#uses=1]
+ %scevgep442.1 = getelementptr float* %358, i32 %tmp441.1467 ; [#uses=1]
+ store float %344, float* %scevgep442.1, align 4
+ %tmp441.2 = add i32 %228, 2 ; [#uses=1]
+ %359 = load float** %117, align 4 ; [#uses=1]
+ %scevgep442.2 = getelementptr float* %359, i32 %tmp441.2 ; [#uses=1]
+ store float %341, float* %scevgep442.2, align 4
+ %360 = load float** %142, align 4 ; [#uses=1]
+ %361 = fsub float -0.000000e+00, %356 ; [#uses=1]
+ %scevgep438 = getelementptr float* %360, i32 %228 ; [#uses=1]
+ store float %361, float* %scevgep438, align 4
+ %tmp437.1468 = or i32 %228, 1 ; [#uses=1]
+ %362 = load float** %142, align 4 ; [#uses=1]
+ %363 = fsub float -0.000000e+00, %353 ; [#uses=1]
+ %scevgep438.1 = getelementptr float* %362, i32 %tmp437.1468 ; [#uses=1]
+ store float %363, float* %scevgep438.1, align 4
+ %tmp437.2 = add i32 %228, 2 ; [#uses=1]
+ %364 = load float** %142, align 4 ; [#uses=1]
+ %365 = fsub float -0.000000e+00, %350 ; [#uses=1]
+ %scevgep438.2 = getelementptr float* %364, i32 %tmp437.2 ; [#uses=1]
+ store float %365, float* %scevgep438.2, align 4
+ %366 = fmul float %292, %334 ; [#uses=1]
+ %367 = fmul float %291, %337 ; [#uses=1]
+ %368 = fsub float %366, %367 ; [#uses=4]
+ %369 = fmul float %290, %337 ; [#uses=1]
+ %370 = fmul float %292, %331 ; [#uses=1]
+ %371 = fsub float %369, %370 ; [#uses=4]
+ %372 = fmul float %291, %331 ; [#uses=1]
+ %373 = fmul float %290, %334 ; [#uses=1]
+ %374 = fsub float %372, %373 ; [#uses=4]
+ store float %374, float* %230, align 8
+ store float %371, float* %231, align 4
+ store float %368, float* %232, align 8
+ store float 0.000000e+00, float* %233, align 4
+ %375 = fmul float %298, %334 ; [#uses=1]
+ %376 = fmul float %297, %337 ; [#uses=1]
+ %377 = fsub float %375, %376 ; [#uses=4]
+ %378 = fmul float %296, %337 ; [#uses=1]
+ %379 = fmul float %298, %331 ; [#uses=1]
+ %380 = fsub float %378, %379 ; [#uses=4]
+ %381 = fmul float %297, %331 ; [#uses=1]
+ %382 = fmul float %296, %334 ; [#uses=1]
+ %383 = fsub float %381, %382 ; [#uses=4]
+ store float %383, float* %234, align 8
+ store float %380, float* %235, align 4
+ store float %377, float* %236, align 8
+ store float 0.000000e+00, float* %237, align 4
+ br i1 %or.cond, label %bb55, label %bb98.loopexit
+
+bb55: ; preds = %bb48
+ %384 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 35 ; [#uses=1]
+ %385 = load i8* %384, align 1 ; [#uses=1]
+ %toBool56not = icmp eq i8 %385, 0 ; [#uses=1]
+ br i1 %toBool56not, label %bb98.loopexit, label %bb64
+
+bb64: ; preds = %bb55
+ %386 = fmul float %383, %24 ; [#uses=2]
+ store float %386, float* %234, align 8
+ %387 = fmul float %380, %24 ; [#uses=2]
+ store float %387, float* %235, align 4
+ %388 = fmul float %377, %24 ; [#uses=2]
+ store float %388, float* %236, align 8
+ %389 = fmul float %374, %storemerge ; [#uses=2]
+ store float %389, float* %230, align 8
+ %390 = fmul float %371, %storemerge ; [#uses=2]
+ store float %390, float* %231, align 4
+ %391 = fmul float %368, %storemerge ; [#uses=2]
+ store float %391, float* %232, align 8
+ br label %bb98.loopexit
+
+bb98.loopexit: ; preds = %bb64, %bb55, %bb48
+ %392 = phi float [ %389, %bb64 ], [ %374, %bb48 ], [ %374, %bb55 ] ; [#uses=1]
+ %393 = phi float [ %390, %bb64 ], [ %371, %bb48 ], [ %371, %bb55 ] ; [#uses=1]
+ %394 = phi float [ %391, %bb64 ], [ %368, %bb48 ], [ %368, %bb55 ] ; [#uses=1]
+ %395 = phi float [ %386, %bb64 ], [ %383, %bb48 ], [ %383, %bb55 ] ; [#uses=1]
+ %396 = phi float [ %387, %bb64 ], [ %380, %bb48 ], [ %380, %bb55 ] ; [#uses=1]
+ %397 = phi float [ %388, %bb64 ], [ %377, %bb48 ], [ %377, %bb55 ] ; [#uses=1]
+ %398 = load float** %117, align 4 ; [#uses=1]
+ %scevgep434 = getelementptr float* %398, i32 %229 ; [#uses=1]
+ store float %392, float* %scevgep434, align 4
+ %tmp433.1 = add i32 %229, 1 ; [#uses=1]
+ %399 = load float** %117, align 4 ; [#uses=1]
+ %scevgep434.1 = getelementptr float* %399, i32 %tmp433.1 ; [#uses=1]
+ store float %393, float* %scevgep434.1, align 4
+ %tmp433.2 = add i32 %229, 2 ; [#uses=1]
+ %400 = load float** %117, align 4 ; [#uses=1]
+ %scevgep434.2 = getelementptr float* %400, i32 %tmp433.2 ; [#uses=1]
+ store float %394, float* %scevgep434.2, align 4
+ %401 = load float** %142, align 4 ; [#uses=1]
+ %402 = fsub float -0.000000e+00, %395 ; [#uses=1]
+ %scevgep430 = getelementptr float* %401, i32 %229 ; [#uses=1]
+ store float %402, float* %scevgep430, align 4
+ %tmp429.1 = add i32 %229, 1 ; [#uses=1]
+ %403 = load float** %142, align 4 ; [#uses=1]
+ %404 = fsub float -0.000000e+00, %396 ; [#uses=1]
+ %scevgep430.1 = getelementptr float* %403, i32 %tmp429.1 ; [#uses=1]
+ store float %404, float* %scevgep430.1, align 4
+ %tmp429.2 = add i32 %229, 2 ; [#uses=1]
+ %405 = load float** %142, align 4 ; [#uses=1]
+ %406 = fsub float -0.000000e+00, %397 ; [#uses=1]
+ %scevgep430.2 = getelementptr float* %405, i32 %tmp429.2 ; [#uses=1]
+ store float %406, float* %scevgep430.2, align 4
+ %407 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 2 ; [#uses=3]
+ %408 = load float** %407, align 4 ; [#uses=1]
+ %scevgep426 = getelementptr float* %408, i32 %228 ; [#uses=1]
+ store float %327, float* %scevgep426, align 4
+ %tmp425.1469 = or i32 %228, 1 ; [#uses=1]
+ %409 = load float** %407, align 4 ; [#uses=1]
+ %scevgep426.1 = getelementptr float* %409, i32 %tmp425.1469 ; [#uses=1]
+ store float %328, float* %scevgep426.1, align 4
+ %tmp425.2 = add i32 %228, 2 ; [#uses=1]
+ %410 = load float** %407, align 4 ; [#uses=1]
+ %scevgep426.2 = getelementptr float* %410, i32 %tmp425.2 ; [#uses=1]
+ store float %326, float* %scevgep426.2, align 4
+ %411 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 2 ; [#uses=3]
+ %412 = load float** %411, align 4 ; [#uses=1]
+ %scevgep422 = getelementptr float* %412, i32 %229 ; [#uses=1]
+ store float %337, float* %scevgep422, align 4
+ %tmp421.1 = add i32 %229, 1 ; [#uses=1]
+ %413 = load float** %411, align 4 ; [#uses=1]
+ %scevgep422.1 = getelementptr float* %413, i32 %tmp421.1 ; [#uses=1]
+ store float %334, float* %scevgep422.1, align 4
+ %tmp421.2 = add i32 %229, 2 ; [#uses=1]
+ %414 = load float** %411, align 4 ; [#uses=1]
+ %scevgep422.2 = getelementptr float* %414, i32 %tmp421.2 ; [#uses=1]
+ store float %331, float* %scevgep422.2, align 4
+ br label %bb98
+
+bb98.loopexit407: ; preds = %bb21
+ %415 = fsub float %227, %221 ; [#uses=5]
+ %416 = fsub float %225, %219 ; [#uses=5]
+ %417 = fsub float %223, %217 ; [#uses=5]
+ %418 = fmul float %417, %147 ; [#uses=1]
+ %419 = fmul float %416, %144 ; [#uses=1]
+ %420 = fsub float %418, %419 ; [#uses=2]
+ %421 = fmul float %415, %144 ; [#uses=1]
+ %422 = fmul float %417, %151 ; [#uses=1]
+ %423 = fsub float %421, %422 ; [#uses=2]
+ %424 = fmul float %416, %151 ; [#uses=1]
+ %425 = fmul float %415, %147 ; [#uses=1]
+ %426 = fsub float %424, %425 ; [#uses=2]
+ %427 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 0 ; [#uses=1]
+ %428 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 1 ; [#uses=1]
+ %429 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 2 ; [#uses=1]
+ %430 = getelementptr inbounds %struct.btQuadWord* %tmp, i32 0, i32 0, i32 3 ; [#uses=1]
+ %431 = load float** %117, align 4 ; [#uses=1]
+ %432 = fmul float %426, %storemerge ; [#uses=1]
+ %scevgep466 = getelementptr float* %431, i32 %228 ; [#uses=1]
+ store float %432, float* %scevgep466, align 4
+ %tmp465.1470 = or i32 %228, 1 ; [#uses=1]
+ %433 = load float** %117, align 4 ; [#uses=1]
+ %434 = fmul float %423, %storemerge ; [#uses=1]
+ %scevgep466.1 = getelementptr float* %433, i32 %tmp465.1470 ; [#uses=1]
+ store float %434, float* %scevgep466.1, align 4
+ %tmp465.2 = add i32 %228, 2 ; [#uses=1]
+ %435 = load float** %117, align 4 ; [#uses=1]
+ %436 = fmul float %420, %storemerge ; [#uses=1]
+ %scevgep466.2 = getelementptr float* %435, i32 %tmp465.2 ; [#uses=1]
+ store float %436, float* %scevgep466.2, align 4
+ %437 = load float** %142, align 4 ; [#uses=1]
+ %438 = fmul float %426, %24 ; [#uses=1]
+ %scevgep462 = getelementptr float* %437, i32 %228 ; [#uses=1]
+ store float %438, float* %scevgep462, align 4
+ %tmp461.1471 = or i32 %228, 1 ; [#uses=1]
+ %439 = load float** %142, align 4 ; [#uses=1]
+ %440 = fmul float %423, %24 ; [#uses=1]
+ %scevgep462.1 = getelementptr float* %439, i32 %tmp461.1471 ; [#uses=1]
+ store float %440, float* %scevgep462.1, align 4
+ %tmp461.2 = add i32 %228, 2 ; [#uses=1]
+ %441 = load float** %142, align 4 ; [#uses=1]
+ %442 = fmul float %420, %24 ; [#uses=1]
+ %scevgep462.2 = getelementptr float* %441, i32 %tmp461.2 ; [#uses=1]
+ store float %442, float* %scevgep462.2, align 4
+ %443 = fmul float %417, %198 ; [#uses=1]
+ %444 = fmul float %416, %196 ; [#uses=1]
+ %445 = fsub float %443, %444 ; [#uses=3]
+ %446 = fmul float %415, %196 ; [#uses=1]
+ %447 = fmul float %417, %201 ; [#uses=1]
+ %448 = fsub float %446, %447 ; [#uses=3]
+ %449 = fmul float %416, %201 ; [#uses=1]
+ %450 = fmul float %415, %198 ; [#uses=1]
+ %451 = fsub float %449, %450 ; [#uses=3]
+ store float %451, float* %427, align 8
+ store float %448, float* %428, align 4
+ store float %445, float* %429, align 8
+ store float 0.000000e+00, float* %430, align 4
+ %452 = load float** %117, align 4 ; [#uses=1]
+ %453 = fmul float %451, %storemerge ; [#uses=1]
+ %scevgep458 = getelementptr float* %452, i32 %229 ; [#uses=1]
+ store float %453, float* %scevgep458, align 4
+ %tmp457.1 = add i32 %229, 1 ; [#uses=1]
+ %454 = load float** %117, align 4 ; [#uses=1]
+ %455 = fmul float %448, %storemerge ; [#uses=1]
+ %scevgep458.1 = getelementptr float* %454, i32 %tmp457.1 ; [#uses=1]
+ store float %455, float* %scevgep458.1, align 4
+ %tmp457.2 = add i32 %229, 2 ; [#uses=1]
+ %456 = load float** %117, align 4 ; [#uses=1]
+ %457 = fmul float %445, %storemerge ; [#uses=1]
+ %scevgep458.2 = getelementptr float* %456, i32 %tmp457.2 ; [#uses=1]
+ store float %457, float* %scevgep458.2, align 4
+ %458 = load float** %142, align 4 ; [#uses=1]
+ %459 = fmul float %451, %24 ; [#uses=1]
+ %scevgep454 = getelementptr float* %458, i32 %229 ; [#uses=1]
+ store float %459, float* %scevgep454, align 4
+ %tmp453.1 = add i32 %229, 1 ; [#uses=1]
+ %460 = load float** %142, align 4 ; [#uses=1]
+ %461 = fmul float %448, %24 ; [#uses=1]
+ %scevgep454.1 = getelementptr float* %460, i32 %tmp453.1 ; [#uses=1]
+ store float %461, float* %scevgep454.1, align 4
+ %tmp453.2 = add i32 %229, 2 ; [#uses=1]
+ %462 = load float** %142, align 4 ; [#uses=1]
+ %463 = fmul float %445, %24 ; [#uses=1]
+ %scevgep454.2 = getelementptr float* %462, i32 %tmp453.2 ; [#uses=1]
+ store float %463, float* %scevgep454.2, align 4
+ %464 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 2 ; [#uses=3]
+ %465 = load float** %464, align 4 ; [#uses=1]
+ %scevgep450 = getelementptr float* %465, i32 %228 ; [#uses=1]
+ store float %144, float* %scevgep450, align 4
+ %tmp449.1472 = or i32 %228, 1 ; [#uses=1]
+ %466 = load float** %464, align 4 ; [#uses=1]
+ %467 = load float* %121, align 4 ; [#uses=2]
+ %scevgep450.1 = getelementptr float* %466, i32 %tmp449.1472 ; [#uses=1]
+ store float %467, float* %scevgep450.1, align 4
+ %tmp449.2 = add i32 %228, 2 ; [#uses=1]
+ %468 = load float** %464, align 4 ; [#uses=1]
+ %469 = load float* %125, align 8 ; [#uses=2]
+ %scevgep450.2 = getelementptr float* %468, i32 %tmp449.2 ; [#uses=1]
+ store float %469, float* %scevgep450.2, align 4
+ %470 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 2 ; [#uses=3]
+ %471 = load float** %470, align 4 ; [#uses=1]
+ %scevgep446 = getelementptr float* %471, i32 %229 ; [#uses=1]
+ store float %196, float* %scevgep446, align 4
+ %tmp445.1 = add i32 %229, 1 ; [#uses=1]
+ %472 = load float** %470, align 4 ; [#uses=1]
+ %473 = load float* %134, align 4 ; [#uses=1]
+ %scevgep446.1 = getelementptr float* %472, i32 %tmp445.1 ; [#uses=1]
+ store float %473, float* %scevgep446.1, align 4
+ %tmp445.2 = add i32 %229, 2 ; [#uses=1]
+ %474 = load float** %470, align 4 ; [#uses=1]
+ %475 = load float* %139, align 8 ; [#uses=1]
+ %scevgep446.2 = getelementptr float* %474, i32 %tmp445.2 ; [#uses=1]
+ store float %475, float* %scevgep446.2, align 4
+ br label %bb98
+
+bb98: ; preds = %bb98.loopexit407, %bb98.loopexit
+ %476 = phi float [ %326, %bb98.loopexit ], [ %469, %bb98.loopexit407 ] ; [#uses=1]
+ %477 = phi float [ %328, %bb98.loopexit ], [ %467, %bb98.loopexit407 ] ; [#uses=1]
+ %478 = phi float [ %327, %bb98.loopexit ], [ %144, %bb98.loopexit407 ] ; [#uses=1]
+ %relA.0.0.0 = phi float [ %292, %bb98.loopexit ], [ 0.000000e+00, %bb98.loopexit407 ] ; [#uses=2]
+ %relA.0.1.0 = phi float [ %291, %bb98.loopexit ], [ 0.000000e+00, %bb98.loopexit407 ] ; [#uses=2]
+ %relA.0.2.0 = phi float [ %290, %bb98.loopexit ], [ 0.000000e+00, %bb98.loopexit407 ] ; [#uses=2]
+ %relB.0.0.0 = phi float [ %298, %bb98.loopexit ], [ 0.000000e+00, %bb98.loopexit407 ] ; [#uses=2]
+ %relB.0.1.0 = phi float [ %297, %bb98.loopexit ], [ 0.000000e+00, %bb98.loopexit407 ] ; [#uses=2]
+ %relB.0.2.0 = phi float [ %296, %bb98.loopexit ], [ 0.000000e+00, %bb98.loopexit407 ] ; [#uses=2]
+ %c.0.0.0 = phi float [ 0.000000e+00, %bb98.loopexit ], [ %417, %bb98.loopexit407 ] ; [#uses=2]
+ %c.0.1.0 = phi float [ 0.000000e+00, %bb98.loopexit ], [ %416, %bb98.loopexit407 ] ; [#uses=2]
+ %c.0.2.0 = phi float [ 0.000000e+00, %bb98.loopexit ], [ %415, %bb98.loopexit407 ] ; [#uses=2]
+ %479 = load i32* %166, align 4 ; [#uses=1]
+ %480 = and i32 %479, 32 ; [#uses=1]
+ %481 = icmp eq i32 %480, 0 ; [#uses=1]
+ %482 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 26 ; [#uses=1]
+ %483 = load float* %482, align 4 ; [#uses=2]
+ br i1 %481, label %bb100, label %bb101
+
+bb100: ; preds = %bb98
+ %484 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 1 ; [#uses=1]
+ %485 = load float* %484, align 4 ; [#uses=1]
+ %486 = fmul float %483, %485 ; [#uses=1]
+ br label %bb101
+
+bb101: ; preds = %bb100, %bb98
+ %iftmp.194.0 = phi float [ %486, %bb100 ], [ %483, %bb98 ] ; [#uses=1]
+ %487 = load float* %175, align 4 ; [#uses=1]
+ %488 = fmul float %487, %iftmp.194.0 ; [#uses=2]
+ %489 = fmul float %478, %18 ; [#uses=1]
+ %490 = fmul float %477, %13 ; [#uses=1]
+ %491 = fadd float %489, %490 ; [#uses=1]
+ %492 = fmul float %476, %8 ; [#uses=1]
+ %493 = fadd float %491, %492 ; [#uses=1]
+ %494 = fmul float %493, %488 ; [#uses=1]
+ %495 = load float** %187, align 4 ; [#uses=1]
+ %496 = getelementptr inbounds float* %495, i32 %228 ; [#uses=1]
+ store float %494, float* %496, align 4
+ %497 = load float* %129, align 8 ; [#uses=1]
+ %498 = fmul float %497, %18 ; [#uses=1]
+ %499 = load float* %134, align 4 ; [#uses=1]
+ %500 = fmul float %499, %13 ; [#uses=1]
+ %501 = fadd float %498, %500 ; [#uses=1]
+ %502 = load float* %139, align 8 ; [#uses=1]
+ %503 = fmul float %502, %8 ; [#uses=1]
+ %504 = fadd float %501, %503 ; [#uses=1]
+ %505 = fmul float %504, %488 ; [#uses=1]
+ %506 = load float** %187, align 4 ; [#uses=1]
+ %507 = getelementptr inbounds float* %506, i32 %229 ; [#uses=1]
+ store float %505, float* %507, align 4
+ %508 = load i32* %166, align 4 ; [#uses=1]
+ %509 = and i32 %508, 16 ; [#uses=1]
+ %510 = icmp eq i32 %509, 0 ; [#uses=1]
+ br i1 %510, label %bb103, label %bb102
+
+bb102: ; preds = %bb101
+ %511 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=2]
+ %512 = load float** %511, align 4 ; [#uses=1]
+ %513 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 29 ; [#uses=2]
+ %514 = load float* %513, align 4 ; [#uses=1]
+ %515 = getelementptr inbounds float* %512, i32 %228 ; [#uses=1]
+ store float %514, float* %515, align 4
+ %516 = load float** %511, align 4 ; [#uses=1]
+ %517 = load float* %513, align 4 ; [#uses=1]
+ %518 = getelementptr inbounds float* %516, i32 %229 ; [#uses=1]
+ store float %517, float* %518, align 4
+ br label %bb103
+
+bb103: ; preds = %bb102, %bb101
+ %519 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 34 ; [#uses=1]
+ %520 = load i8* %519, align 4 ; [#uses=1]
+ %toBool104 = icmp eq i8 %520, 0 ; [#uses=1]
+ br i1 %toBool104, label %bb109, label %bb105
+
+bb105: ; preds = %bb103
+ %521 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 48, i32 0, i32 0 ; [#uses=1]
+ %522 = load float* %521, align 4 ; [#uses=1]
+ %523 = fmul float %522, %iftmp.184.0 ; [#uses=2]
+ %524 = fcmp ogt float %523, 0.000000e+00 ; [#uses=1]
+ %iftmp.196.0 = select i1 %524, i32 2, i32 1 ; [#uses=1]
+ br label %bb109
+
+bb109: ; preds = %bb105, %bb103
+ %limit_err.0 = phi float [ %523, %bb105 ], [ 0.000000e+00, %bb103 ] ; [#uses=1]
+ %limit.0 = phi i32 [ %iftmp.196.0, %bb105 ], [ 0, %bb103 ] ; [#uses=5]
+ %525 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 55 ; [#uses=1]
+ %526 = load i8* %525, align 4 ; [#uses=1]
+ %not.toBool110 = icmp ne i8 %526, 0 ; [#uses=2]
+ %powered.0 = zext i1 %not.toBool110 to i32 ; [#uses=1]
+ %527 = or i32 %powered.0, %limit.0 ; [#uses=1]
+ %528 = icmp eq i32 %527, 0 ; [#uses=1]
+ br i1 %528, label %bb163, label %bb113
+
+bb113: ; preds = %bb109
+ %529 = load i32* %0, align 4 ; [#uses=1]
+ %530 = shl i32 %529, 2 ; [#uses=24]
+ %531 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 2 ; [#uses=3]
+ %532 = load float** %531, align 4 ; [#uses=1]
+ %533 = getelementptr inbounds float* %532, i32 %530 ; [#uses=1]
+ store float %ax1.0.0.0, float* %533, align 4
+ %534 = load float** %531, align 4 ; [#uses=1]
+ %535 = or i32 %530, 1 ; [#uses=5]
+ %536 = getelementptr inbounds float* %534, i32 %535 ; [#uses=1]
+ store float %ax1.0.1.0, float* %536, align 4
+ %537 = load float** %531, align 4 ; [#uses=1]
+ %538 = or i32 %530, 2 ; [#uses=5]
+ %539 = getelementptr inbounds float* %537, i32 %538 ; [#uses=1]
+ store float %ax1.0.2.0, float* %539, align 4
+ %540 = load i8* %37, align 1 ; [#uses=1]
+ %toBool116 = icmp eq i8 %540, 0 ; [#uses=1]
+ br i1 %toBool116, label %bb125, label %bb117
+
+bb117: ; preds = %bb113
+ br i1 %or.cond, label %bb128, label %bb122
+
+bb122: ; preds = %bb117
+ %541 = fmul float %relA.0.0.0, %ax1.0.1.0 ; [#uses=1]
+ %542 = fmul float %relA.0.1.0, %ax1.0.0.0 ; [#uses=1]
+ %543 = fsub float %541, %542 ; [#uses=1]
+ %544 = fmul float %relA.0.2.0, %ax1.0.0.0 ; [#uses=1]
+ %545 = fmul float %relA.0.0.0, %ax1.0.2.0 ; [#uses=1]
+ %546 = fsub float %544, %545 ; [#uses=1]
+ %547 = fmul float %relA.0.1.0, %ax1.0.2.0 ; [#uses=1]
+ %548 = fmul float %relA.0.2.0, %ax1.0.1.0 ; [#uses=1]
+ %549 = fsub float %547, %548 ; [#uses=2]
+ store float %549, float* %230, align 8
+ store float %546, float* %231, align 4
+ store float %543, float* %232, align 8
+ store float 0.000000e+00, float* %233, align 4
+ %550 = fmul float %relB.0.0.0, %ax1.0.1.0 ; [#uses=1]
+ %551 = fmul float %relB.0.1.0, %ax1.0.0.0 ; [#uses=1]
+ %552 = fsub float %550, %551 ; [#uses=1]
+ %553 = fmul float %relB.0.2.0, %ax1.0.0.0 ; [#uses=1]
+ %554 = fmul float %relB.0.0.0, %ax1.0.2.0 ; [#uses=1]
+ %555 = fsub float %553, %554 ; [#uses=1]
+ %556 = fmul float %relB.0.1.0, %ax1.0.2.0 ; [#uses=1]
+ %557 = fmul float %relB.0.2.0, %ax1.0.1.0 ; [#uses=1]
+ %558 = fsub float %556, %557 ; [#uses=1]
+ store float %558, float* %234, align 8
+ store float %555, float* %235, align 4
+ store float %552, float* %236, align 8
+ store float 0.000000e+00, float* %237, align 4
+ %559 = load float** %117, align 4 ; [#uses=1]
+ %560 = getelementptr inbounds float* %559, i32 %530 ; [#uses=1]
+ store float %549, float* %560, align 4
+ %561 = load float** %117, align 4 ; [#uses=1]
+ %562 = load float* %231, align 4 ; [#uses=1]
+ %563 = getelementptr inbounds float* %561, i32 %535 ; [#uses=1]
+ store float %562, float* %563, align 4
+ %564 = load float** %117, align 4 ; [#uses=1]
+ %565 = load float* %232, align 8 ; [#uses=1]
+ %566 = getelementptr inbounds float* %564, i32 %538 ; [#uses=1]
+ store float %565, float* %566, align 4
+ %567 = load float** %142, align 4 ; [#uses=1]
+ %568 = load float* %234, align 8 ; [#uses=1]
+ %569 = fsub float -0.000000e+00, %568 ; [#uses=1]
+ %570 = getelementptr inbounds float* %567, i32 %530 ; [#uses=1]
+ store float %569, float* %570, align 4
+ %571 = load float** %142, align 4 ; [#uses=1]
+ %572 = load float* %235, align 4 ; [#uses=1]
+ %573 = fsub float -0.000000e+00, %572 ; [#uses=1]
+ %574 = getelementptr inbounds float* %571, i32 %535 ; [#uses=1]
+ store float %573, float* %574, align 4
+ %575 = load float** %142, align 4 ; [#uses=1]
+ %576 = load float* %236, align 8 ; [#uses=1]
+ %577 = fsub float -0.000000e+00, %576 ; [#uses=1]
+ %578 = getelementptr inbounds float* %575, i32 %538 ; [#uses=1]
+ store float %577, float* %578, align 4
+ br label %bb128
+
+bb125: ; preds = %bb113
+ %579 = fmul float %c.0.0.0, %ax1.0.1.0 ; [#uses=1]
+ %580 = fmul float %c.0.1.0, %ax1.0.0.0 ; [#uses=1]
+ %581 = fsub float %579, %580 ; [#uses=2]
+ %582 = fmul float %c.0.2.0, %ax1.0.0.0 ; [#uses=1]
+ %583 = fmul float %c.0.0.0, %ax1.0.2.0 ; [#uses=1]
+ %584 = fsub float %582, %583 ; [#uses=2]
+ %585 = fmul float %c.0.1.0, %ax1.0.2.0 ; [#uses=1]
+ %586 = fmul float %c.0.2.0, %ax1.0.1.0 ; [#uses=1]
+ %587 = fsub float %585, %586 ; [#uses=2]
+ %588 = load float** %117, align 4 ; [#uses=1]
+ %589 = fmul float %587, %storemerge ; [#uses=1]
+ %590 = getelementptr inbounds float* %588, i32 %530 ; [#uses=1]
+ store float %589, float* %590, align 4
+ %591 = load float** %117, align 4 ; [#uses=1]
+ %592 = fmul float %584, %storemerge ; [#uses=1]
+ %593 = getelementptr inbounds float* %591, i32 %535 ; [#uses=1]
+ store float %592, float* %593, align 4
+ %594 = load float** %117, align 4 ; [#uses=1]
+ %595 = fmul float %581, %storemerge ; [#uses=1]
+ %596 = getelementptr inbounds float* %594, i32 %538 ; [#uses=1]
+ store float %595, float* %596, align 4
+ %597 = load float** %142, align 4 ; [#uses=1]
+ %598 = fmul float %587, %24 ; [#uses=1]
+ %599 = getelementptr inbounds float* %597, i32 %530 ; [#uses=1]
+ store float %598, float* %599, align 4
+ %600 = load float** %142, align 4 ; [#uses=1]
+ %601 = fmul float %584, %24 ; [#uses=1]
+ %602 = getelementptr inbounds float* %600, i32 %535 ; [#uses=1]
+ store float %601, float* %602, align 4
+ %603 = load float** %142, align 4 ; [#uses=1]
+ %604 = fmul float %581, %24 ; [#uses=1]
+ %605 = getelementptr inbounds float* %603, i32 %538 ; [#uses=1]
+ store float %604, float* %605, align 4
+ br label %bb128
+
+bb128: ; preds = %bb125, %bb122, %bb117
+ %606 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 6 ; [#uses=2]
+ %607 = load float* %606, align 4 ; [#uses=1]
+ %608 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 7 ; [#uses=2]
+ %609 = load float* %608, align 4 ; [#uses=1]
+ %.not = icmp ne i32 %limit.0, 0 ; [#uses=1]
+ %610 = fcmp oeq float %607, %609 ; [#uses=2]
+ %or.cond217 = and i1 %.not, %610 ; [#uses=1]
+ %611 = load float** %187, align 4 ; [#uses=1]
+ %612 = getelementptr inbounds float* %611, i32 %530 ; [#uses=1]
+ store float 0.000000e+00, float* %612, align 4
+ %613 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=4]
+ %614 = load float** %613, align 4 ; [#uses=1]
+ %615 = getelementptr inbounds float* %614, i32 %530 ; [#uses=1]
+ store float 0.000000e+00, float* %615, align 4
+ %616 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=5]
+ %617 = load float** %616, align 4 ; [#uses=1]
+ %618 = getelementptr inbounds float* %617, i32 %530 ; [#uses=1]
+ store float 0.000000e+00, float* %618, align 4
+ %619 = load i32* %166, align 4 ; [#uses=2]
+ %620 = and i32 %619, 512 ; [#uses=1]
+ %621 = icmp eq i32 %620, 0 ; [#uses=1]
+ br i1 %621, label %bb133, label %bb132
+
+bb132: ; preds = %bb128
+ %622 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ br label %bb134
+
+bb133: ; preds = %bb128
+ %623 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 1 ; [#uses=1]
+ br label %bb134
+
+bb134: ; preds = %bb133, %bb132
+ %iftmp.204.0.in = phi float* [ %622, %bb132 ], [ %623, %bb133 ] ; [#uses=1]
+ %iftmp.204.0 = load float* %iftmp.204.0.in, align 4 ; [#uses=2]
+ %624 = xor i1 %not.toBool110, true ; [#uses=1]
+ %625 = or i1 %or.cond217, %624 ; [#uses=1]
+ br i1 %625, label %bb141, label %bb135
+
+bb135: ; preds = %bb134
+ %626 = and i32 %619, 1 ; [#uses=1]
+ %toBool138 = icmp eq i32 %626, 0 ; [#uses=1]
+ br i1 %toBool138, label %bb140, label %bb139
+
+bb139: ; preds = %bb135
+ %627 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=1]
+ %628 = load float** %627, align 4 ; [#uses=1]
+ %629 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 13 ; [#uses=1]
+ %630 = load float* %629, align 4 ; [#uses=1]
+ %631 = getelementptr inbounds float* %628, i32 %530 ; [#uses=1]
+ store float %630, float* %631, align 4
+ br label %bb140
+
+bb140: ; preds = %bb139, %bb135
+ %632 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 56 ; [#uses=2]
+ %633 = load float* %632, align 4 ; [#uses=1]
+ %634 = load float* %175, align 4 ; [#uses=1]
+ %635 = fmul float %634, %iftmp.204.0 ; [#uses=1]
+ %636 = load float* %608, align 4 ; [#uses=1]
+ %637 = load float* %606, align 4 ; [#uses=1]
+ %638 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 51 ; [#uses=1]
+ %639 = load float* %638, align 4 ; [#uses=1]
+ %640 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ %641 = call float @_ZN17btTypedConstraint14getMotorFactorEfffff(%struct.btTypedConstraint* %640, float %639, float %637, float %636, float %633, float %635) ; [#uses=1]
+ %642 = load float** %187, align 4 ; [#uses=1]
+ %643 = getelementptr inbounds float* %642, i32 %530 ; [#uses=2]
+ %644 = load float* %643, align 4 ; [#uses=1]
+ %645 = fmul float %iftmp.184.0, %641 ; [#uses=1]
+ %646 = load float* %632, align 4 ; [#uses=1]
+ %647 = fmul float %645, %646 ; [#uses=1]
+ %648 = fsub float %644, %647 ; [#uses=1]
+ store float %648, float* %643, align 4
+ %649 = load float** %613, align 4 ; [#uses=1]
+ %650 = getelementptr inbounds float* %649, i32 %530 ; [#uses=2]
+ %651 = load float* %650, align 4 ; [#uses=1]
+ %652 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 57 ; [#uses=2]
+ %653 = load float* %652, align 4 ; [#uses=1]
+ %654 = fsub float -0.000000e+00, %653 ; [#uses=1]
+ %655 = load float* %175, align 4 ; [#uses=1]
+ %656 = fmul float %655, %654 ; [#uses=1]
+ %657 = fadd float %651, %656 ; [#uses=1]
+ store float %657, float* %650, align 4
+ %658 = load float** %616, align 4 ; [#uses=1]
+ %659 = getelementptr inbounds float* %658, i32 %530 ; [#uses=2]
+ %660 = load float* %659, align 4 ; [#uses=1]
+ %661 = load float* %652, align 4 ; [#uses=1]
+ %662 = load float* %175, align 4 ; [#uses=1]
+ %663 = fmul float %661, %662 ; [#uses=1]
+ %664 = fadd float %660, %663 ; [#uses=1]
+ store float %664, float* %659, align 4
+ br label %bb141
+
+bb141: ; preds = %bb140, %bb134
+ %665 = icmp eq i32 %limit.0, 0 ; [#uses=1]
+ br i1 %665, label %bb163, label %bb142
+
+bb142: ; preds = %bb141
+ %666 = load float* %175, align 4 ; [#uses=1]
+ %667 = fmul float %666, %iftmp.204.0 ; [#uses=1]
+ %668 = load float** %187, align 4 ; [#uses=1]
+ %669 = getelementptr inbounds float* %668, i32 %530 ; [#uses=2]
+ %670 = load float* %669, align 4 ; [#uses=1]
+ %671 = fmul float %667, %limit_err.0 ; [#uses=1]
+ %672 = fadd float %670, %671 ; [#uses=1]
+ store float %672, float* %669, align 4
+ %673 = load i32* %166, align 4 ; [#uses=1]
+ %674 = and i32 %673, 256 ; [#uses=1]
+ %675 = icmp eq i32 %674, 0 ; [#uses=1]
+ br i1 %675, label %bb145, label %bb144
+
+bb144: ; preds = %bb142
+ %676 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=1]
+ %677 = load float** %676, align 4 ; [#uses=1]
+ %678 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ %679 = load float* %678, align 4 ; [#uses=1]
+ %680 = getelementptr inbounds float* %677, i32 %530 ; [#uses=1]
+ store float %679, float* %680, align 4
+ br label %bb145
+
+bb145: ; preds = %bb144, %bb142
+ br i1 %610, label %bb146, label %bb147
+
+bb146: ; preds = %bb145
+ %681 = load float** %613, align 4 ; [#uses=1]
+ %682 = getelementptr inbounds float* %681, i32 %530 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %682, align 4
+ %683 = load float** %616, align 4 ; [#uses=1]
+ %684 = getelementptr inbounds float* %683, i32 %530 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %684, align 4
+ br label %bb150
+
+bb147: ; preds = %bb145
+ %685 = icmp eq i32 %limit.0, 1 ; [#uses=1]
+ %686 = load float** %613, align 4 ; [#uses=1]
+ %687 = getelementptr inbounds float* %686, i32 %530 ; [#uses=2]
+ br i1 %685, label %bb148, label %bb149
+
+bb148: ; preds = %bb147
+ store float 0xC7EFFFFFE0000000, float* %687, align 4
+ %688 = load float** %616, align 4 ; [#uses=1]
+ %689 = getelementptr inbounds float* %688, i32 %530 ; [#uses=1]
+ store float 0.000000e+00, float* %689, align 4
+ br label %bb150
+
+bb149: ; preds = %bb147
+ store float 0.000000e+00, float* %687, align 4
+ %690 = load float** %616, align 4 ; [#uses=1]
+ %691 = getelementptr inbounds float* %690, i32 %530 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %691, align 4
+ br label %bb150
+
+bb150: ; preds = %bb149, %bb148, %bb146
+ %692 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ %693 = load float* %692, align 4 ; [#uses=1]
+ %694 = fsub float 1.000000e+00, %693 ; [#uses=1]
+ %695 = call float @fabsf(float %694) nounwind readnone ; [#uses=3]
+ %696 = fcmp ogt float %695, 0.000000e+00 ; [#uses=1]
+ br i1 %696, label %bb151, label %bb162
+
+bb151: ; preds = %bb150
+ %697 = getelementptr inbounds %struct.btQuadWord* %linVelA, i32 0, i32 0, i32 0 ; [#uses=1]
+ %698 = load float* %697, align 4 ; [#uses=1]
+ %699 = fmul float %698, %ax1.0.0.0 ; [#uses=1]
+ %700 = getelementptr inbounds %struct.btQuadWord* %linVelA, i32 0, i32 0, i32 1 ; [#uses=1]
+ %701 = load float* %700, align 4 ; [#uses=1]
+ %702 = fmul float %701, %ax1.0.1.0 ; [#uses=1]
+ %703 = fadd float %699, %702 ; [#uses=1]
+ %704 = getelementptr inbounds %struct.btQuadWord* %linVelA, i32 0, i32 0, i32 2 ; [#uses=1]
+ %705 = load float* %704, align 4 ; [#uses=1]
+ %706 = fmul float %705, %ax1.0.2.0 ; [#uses=1]
+ %707 = fadd float %703, %706 ; [#uses=1]
+ %708 = getelementptr inbounds %struct.btQuadWord* %linVelB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %709 = load float* %708, align 4 ; [#uses=1]
+ %710 = fmul float %709, %ax1.0.0.0 ; [#uses=1]
+ %711 = getelementptr inbounds %struct.btQuadWord* %linVelB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %712 = load float* %711, align 4 ; [#uses=1]
+ %713 = fmul float %712, %ax1.0.1.0 ; [#uses=1]
+ %714 = fadd float %710, %713 ; [#uses=1]
+ %715 = getelementptr inbounds %struct.btQuadWord* %linVelB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %716 = load float* %715, align 4 ; [#uses=1]
+ %717 = fmul float %716, %ax1.0.2.0 ; [#uses=1]
+ %718 = fadd float %714, %717 ; [#uses=1]
+ %719 = fsub float %707, %718 ; [#uses=1]
+ %720 = fmul float %719, %iftmp.184.0 ; [#uses=4]
+ %721 = icmp eq i32 %limit.0, 1 ; [#uses=1]
+ br i1 %721, label %bb153, label %bb157
+
+bb153: ; preds = %bb151
+ %722 = fcmp olt float %720, 0.000000e+00 ; [#uses=1]
+ br i1 %722, label %bb154, label %bb162
+
+bb154: ; preds = %bb153
+ %723 = fsub float -0.000000e+00, %695 ; [#uses=1]
+ %724 = fmul float %720, %723 ; [#uses=2]
+ %725 = load float** %187, align 4 ; [#uses=1]
+ %726 = getelementptr inbounds float* %725, i32 %530 ; [#uses=2]
+ %727 = load float* %726, align 4 ; [#uses=1]
+ %728 = fcmp olt float %727, %724 ; [#uses=1]
+ br i1 %728, label %bb156, label %bb162
+
+bb156: ; preds = %bb154
+ store float %724, float* %726, align 4
+ br label %bb162
+
+bb157: ; preds = %bb151
+ %729 = fcmp ogt float %720, 0.000000e+00 ; [#uses=1]
+ br i1 %729, label %bb158, label %bb162
+
+bb158: ; preds = %bb157
+ %730 = fsub float -0.000000e+00, %695 ; [#uses=1]
+ %731 = fmul float %720, %730 ; [#uses=2]
+ %732 = load float** %187, align 4 ; [#uses=1]
+ %733 = getelementptr inbounds float* %732, i32 %530 ; [#uses=2]
+ %734 = load float* %733, align 4 ; [#uses=1]
+ %735 = fcmp ogt float %734, %731 ; [#uses=1]
+ br i1 %735, label %bb161, label %bb162
+
+bb161: ; preds = %bb158
+ store float %731, float* %733, align 4
+ br label %bb162
+
+bb162: ; preds = %bb161, %bb158, %bb157, %bb156, %bb154, %bb153, %bb150
+ %736 = load float** %187, align 4 ; [#uses=1]
+ %737 = getelementptr inbounds float* %736, i32 %530 ; [#uses=2]
+ %738 = load float* %737, align 4 ; [#uses=1]
+ %739 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ %740 = load float* %739, align 4 ; [#uses=1]
+ %741 = fmul float %738, %740 ; [#uses=1]
+ store float %741, float* %737, align 4
+ br label %bb163
+
+bb163: ; preds = %bb162, %bb141, %bb109
+ %nrow.0 = phi i32 [ 5, %bb162 ], [ 5, %bb141 ], [ 4, %bb109 ] ; [#uses=1]
+ %742 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 35 ; [#uses=1]
+ %743 = load i8* %742, align 1 ; [#uses=1]
+ %toBool164 = icmp eq i8 %743, 0 ; [#uses=1]
+ br i1 %toBool164, label %bb169, label %bb165
+
+bb165: ; preds = %bb163
+ %744 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 53 ; [#uses=1]
+ %745 = load float* %744, align 4 ; [#uses=2]
+ %746 = fcmp ogt float %745, 0.000000e+00 ; [#uses=1]
+ %iftmp.206.0 = select i1 %746, i32 1, i32 2 ; [#uses=1]
+ br label %bb169
+
+bb169: ; preds = %bb165, %bb163
+ %limit_err.1 = phi float [ %745, %bb165 ], [ 0.000000e+00, %bb163 ] ; [#uses=1]
+ %limit.1 = phi i32 [ %iftmp.206.0, %bb165 ], [ 0, %bb163 ] ; [#uses=5]
+ %747 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 59 ; [#uses=1]
+ %748 = load i8* %747, align 4 ; [#uses=1]
+ %not.toBool170 = icmp ne i8 %748, 0 ; [#uses=2]
+ %powered.2 = zext i1 %not.toBool170 to i32 ; [#uses=1]
+ %749 = or i32 %powered.2, %limit.1 ; [#uses=1]
+ %750 = icmp eq i32 %749, 0 ; [#uses=1]
+ br i1 %750, label %return, label %bb173
+
+bb173: ; preds = %bb169
+ %751 = load i32* %0, align 4 ; [#uses=1]
+ %752 = mul nsw i32 %751, %nrow.0 ; [#uses=18]
+ %753 = load float** %117, align 4 ; [#uses=1]
+ %754 = getelementptr inbounds float* %753, i32 %752 ; [#uses=1]
+ store float %ax1.0.0.0, float* %754, align 4
+ %755 = load float** %117, align 4 ; [#uses=1]
+ %756 = add nsw i32 %752, 1 ; [#uses=2]
+ %757 = getelementptr inbounds float* %755, i32 %756 ; [#uses=1]
+ store float %ax1.0.1.0, float* %757, align 4
+ %758 = load float** %117, align 4 ; [#uses=1]
+ %759 = add nsw i32 %752, 2 ; [#uses=2]
+ %760 = getelementptr inbounds float* %758, i32 %759 ; [#uses=1]
+ store float %ax1.0.2.0, float* %760, align 4
+ %761 = load float** %142, align 4 ; [#uses=1]
+ %762 = fsub float -0.000000e+00, %ax1.0.0.0 ; [#uses=1]
+ %763 = getelementptr inbounds float* %761, i32 %752 ; [#uses=1]
+ store float %762, float* %763, align 4
+ %764 = load float** %142, align 4 ; [#uses=1]
+ %765 = fsub float -0.000000e+00, %ax1.0.1.0 ; [#uses=1]
+ %766 = getelementptr inbounds float* %764, i32 %756 ; [#uses=1]
+ store float %765, float* %766, align 4
+ %767 = load float** %142, align 4 ; [#uses=1]
+ %768 = fsub float -0.000000e+00, %ax1.0.2.0 ; [#uses=1]
+ %769 = getelementptr inbounds float* %767, i32 %759 ; [#uses=1]
+ store float %768, float* %769, align 4
+ %770 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 8 ; [#uses=2]
+ %771 = load float* %770, align 4 ; [#uses=2]
+ %772 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 9 ; [#uses=2]
+ %773 = load float* %772, align 4 ; [#uses=2]
+ %.not218 = icmp ne i32 %limit.1, 0 ; [#uses=1]
+ %774 = fcmp oeq float %771, %773 ; [#uses=2]
+ %or.cond219 = and i1 %.not218, %774 ; [#uses=1]
+ %775 = load i32* %166, align 4 ; [#uses=2]
+ %776 = and i32 %775, 2048 ; [#uses=1]
+ %777 = icmp eq i32 %776, 0 ; [#uses=1]
+ br i1 %777, label %bb182, label %bb181
+
+bb181: ; preds = %bb173
+ %778 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ br label %bb183
+
+bb182: ; preds = %bb173
+ %779 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 1 ; [#uses=1]
+ br label %bb183
+
+bb183: ; preds = %bb182, %bb181
+ %iftmp.208.0.in = phi float* [ %778, %bb181 ], [ %779, %bb182 ] ; [#uses=1]
+ %iftmp.208.0 = load float* %iftmp.208.0.in, align 4 ; [#uses=2]
+ %780 = xor i1 %not.toBool170, true ; [#uses=1]
+ %781 = or i1 %or.cond219, %780 ; [#uses=1]
+ br i1 %781, label %bb189, label %bb184
+
+bb184: ; preds = %bb183
+ %782 = and i32 %775, 4 ; [#uses=1]
+ %783 = icmp eq i32 %782, 0 ; [#uses=1]
+ br i1 %783, label %bb188, label %bb187
+
+bb187: ; preds = %bb184
+ %784 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=1]
+ %785 = load float** %784, align 4 ; [#uses=1]
+ %786 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ %787 = load float* %786, align 4 ; [#uses=1]
+ %788 = getelementptr inbounds float* %785, i32 %752 ; [#uses=1]
+ store float %787, float* %788, align 4
+ %.pre = load float* %772, align 4 ; [#uses=1]
+ %.pre473 = load float* %770, align 4 ; [#uses=1]
+ br label %bb188
+
+bb188: ; preds = %bb187, %bb184
+ %789 = phi float [ %771, %bb184 ], [ %.pre473, %bb187 ] ; [#uses=1]
+ %790 = phi float [ %773, %bb184 ], [ %.pre, %bb187 ] ; [#uses=1]
+ %791 = load float* %175, align 4 ; [#uses=1]
+ %792 = fmul float %791, %iftmp.208.0 ; [#uses=1]
+ %793 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 60 ; [#uses=2]
+ %794 = load float* %793, align 4 ; [#uses=1]
+ %795 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 52 ; [#uses=1]
+ %796 = load float* %795, align 4 ; [#uses=1]
+ %797 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ %798 = call float @_ZN17btTypedConstraint14getMotorFactorEfffff(%struct.btTypedConstraint* %797, float %796, float %789, float %790, float %794, float %792) ; [#uses=1]
+ %799 = load float** %187, align 4 ; [#uses=1]
+ %800 = load float* %793, align 4 ; [#uses=1]
+ %801 = fmul float %800, %798 ; [#uses=1]
+ %802 = getelementptr inbounds float* %799, i32 %752 ; [#uses=1]
+ store float %801, float* %802, align 4
+ %803 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %804 = load float** %803, align 4 ; [#uses=1]
+ %805 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 61 ; [#uses=2]
+ %806 = load float* %805, align 4 ; [#uses=1]
+ %807 = fsub float -0.000000e+00, %806 ; [#uses=1]
+ %808 = load float* %175, align 4 ; [#uses=1]
+ %809 = fmul float %808, %807 ; [#uses=1]
+ %810 = getelementptr inbounds float* %804, i32 %752 ; [#uses=1]
+ store float %809, float* %810, align 4
+ %811 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %812 = load float** %811, align 4 ; [#uses=1]
+ %813 = load float* %805, align 4 ; [#uses=1]
+ %814 = load float* %175, align 4 ; [#uses=1]
+ %815 = fmul float %813, %814 ; [#uses=1]
+ %816 = getelementptr inbounds float* %812, i32 %752 ; [#uses=1]
+ store float %815, float* %816, align 4
+ br label %bb189
+
+bb189: ; preds = %bb188, %bb183
+ %817 = icmp eq i32 %limit.1, 0 ; [#uses=1]
+ br i1 %817, label %return, label %bb190
+
+bb190: ; preds = %bb189
+ %818 = load float* %175, align 4 ; [#uses=1]
+ %819 = fmul float %818, %iftmp.208.0 ; [#uses=1]
+ %820 = load float** %187, align 4 ; [#uses=1]
+ %821 = getelementptr inbounds float* %820, i32 %752 ; [#uses=2]
+ %822 = load float* %821, align 4 ; [#uses=1]
+ %823 = fmul float %819, %limit_err.1 ; [#uses=1]
+ %824 = fadd float %822, %823 ; [#uses=1]
+ store float %824, float* %821, align 4
+ %825 = load i32* %166, align 4 ; [#uses=1]
+ %826 = and i32 %825, 1024 ; [#uses=1]
+ %827 = icmp eq i32 %826, 0 ; [#uses=1]
+ br i1 %827, label %bb194, label %bb193
+
+bb193: ; preds = %bb190
+ %828 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 8 ; [#uses=1]
+ %829 = load float** %828, align 4 ; [#uses=1]
+ %830 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ %831 = load float* %830, align 4 ; [#uses=1]
+ %832 = getelementptr inbounds float* %829, i32 %752 ; [#uses=1]
+ store float %831, float* %832, align 4
+ br label %bb194
+
+bb194: ; preds = %bb193, %bb190
+ br i1 %774, label %bb195, label %bb196
+
+bb195: ; preds = %bb194
+ %833 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %834 = load float** %833, align 4 ; [#uses=1]
+ %835 = getelementptr inbounds float* %834, i32 %752 ; [#uses=1]
+ store float 0xC7EFFFFFE0000000, float* %835, align 4
+ %836 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %837 = load float** %836, align 4 ; [#uses=1]
+ %838 = getelementptr inbounds float* %837, i32 %752 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %838, align 4
+ br label %bb199
+
+bb196: ; preds = %bb194
+ %839 = icmp eq i32 %limit.1, 1 ; [#uses=1]
+ %840 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 9 ; [#uses=1]
+ %841 = load float** %840, align 4 ; [#uses=1]
+ %842 = getelementptr inbounds float* %841, i32 %752 ; [#uses=2]
+ br i1 %839, label %bb197, label %bb198
+
+bb197: ; preds = %bb196
+ store float 0.000000e+00, float* %842, align 4
+ %843 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %844 = load float** %843, align 4 ; [#uses=1]
+ %845 = getelementptr inbounds float* %844, i32 %752 ; [#uses=1]
+ store float 0x47EFFFFFE0000000, float* %845, align 4
+ br label %bb199
+
+bb198: ; preds = %bb196
+ store float 0xC7EFFFFFE0000000, float* %842, align 4
+ %846 = getelementptr inbounds %"struct.btTypedConstraint::btConstraintInfo2"* %info, i32 0, i32 10 ; [#uses=1]
+ %847 = load float** %846, align 4 ; [#uses=1]
+ %848 = getelementptr inbounds float* %847, i32 %752 ; [#uses=1]
+ store float 0.000000e+00, float* %848, align 4
+ br label %bb199
+
+bb199: ; preds = %bb198, %bb197, %bb195
+ %849 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 24 ; [#uses=1]
+ %850 = load float* %849, align 4 ; [#uses=1]
+ %851 = fsub float 1.000000e+00, %850 ; [#uses=1]
+ %852 = call float @fabsf(float %851) nounwind readnone ; [#uses=3]
+ %853 = fcmp ogt float %852, 0.000000e+00 ; [#uses=1]
+ br i1 %853, label %bb200, label %bb213
+
+bb200: ; preds = %bb199
+ %854 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %855 = load %struct.btRigidBody** %854, align 4 ; [#uses=3]
+ %856 = getelementptr inbounds %struct.btRigidBody* %855, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %857 = load float* %856, align 4 ; [#uses=1]
+ %858 = fmul float %857, %ax1.0.0.0 ; [#uses=1]
+ %859 = getelementptr inbounds %struct.btRigidBody* %855, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %860 = load float* %859, align 4 ; [#uses=1]
+ %861 = fmul float %860, %ax1.0.1.0 ; [#uses=1]
+ %862 = fadd float %858, %861 ; [#uses=1]
+ %863 = getelementptr inbounds %struct.btRigidBody* %855, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %864 = load float* %863, align 4 ; [#uses=1]
+ %865 = fmul float %864, %ax1.0.2.0 ; [#uses=1]
+ %866 = fadd float %862, %865 ; [#uses=1]
+ %867 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %868 = load %struct.btRigidBody** %867, align 4 ; [#uses=3]
+ %869 = getelementptr inbounds %struct.btRigidBody* %868, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %870 = load float* %869, align 4 ; [#uses=1]
+ %871 = fmul float %870, %ax1.0.0.0 ; [#uses=1]
+ %872 = getelementptr inbounds %struct.btRigidBody* %868, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %873 = load float* %872, align 4 ; [#uses=1]
+ %874 = fmul float %873, %ax1.0.1.0 ; [#uses=1]
+ %875 = fadd float %871, %874 ; [#uses=1]
+ %876 = getelementptr inbounds %struct.btRigidBody* %868, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %877 = load float* %876, align 4 ; [#uses=1]
+ %878 = fmul float %877, %ax1.0.2.0 ; [#uses=1]
+ %879 = fadd float %875, %878 ; [#uses=1]
+ %880 = fsub float %866, %879 ; [#uses=4]
+ %881 = icmp eq i32 %limit.1, 1 ; [#uses=1]
+ br i1 %881, label %bb203, label %bb208
+
+bb203: ; preds = %bb200
+ %882 = fcmp olt float %880, 0.000000e+00 ; [#uses=1]
+ br i1 %882, label %bb204, label %bb213
+
+bb204: ; preds = %bb203
+ %883 = fsub float -0.000000e+00, %852 ; [#uses=1]
+ %884 = fmul float %880, %883 ; [#uses=2]
+ %885 = load float** %187, align 4 ; [#uses=1]
+ %886 = getelementptr inbounds float* %885, i32 %752 ; [#uses=2]
+ %887 = load float* %886, align 4 ; [#uses=1]
+ %888 = fcmp olt float %887, %884 ; [#uses=1]
+ br i1 %888, label %bb207, label %bb213
+
+bb207: ; preds = %bb204
+ store float %884, float* %886, align 4
+ br label %bb213
+
+bb208: ; preds = %bb200
+ %889 = fcmp ogt float %880, 0.000000e+00 ; [#uses=1]
+ br i1 %889, label %bb209, label %bb213
+
+bb209: ; preds = %bb208
+ %890 = fsub float -0.000000e+00, %852 ; [#uses=1]
+ %891 = fmul float %880, %890 ; [#uses=2]
+ %892 = load float** %187, align 4 ; [#uses=1]
+ %893 = getelementptr inbounds float* %892, i32 %752 ; [#uses=2]
+ %894 = load float* %893, align 4 ; [#uses=1]
+ %895 = fcmp ogt float %894, %891 ; [#uses=1]
+ br i1 %895, label %bb212, label %bb213
+
+bb212: ; preds = %bb209
+ store float %891, float* %893, align 4
+ br label %bb213
+
+bb213: ; preds = %bb212, %bb209, %bb208, %bb207, %bb204, %bb203, %bb199
+ %896 = load float** %187, align 4 ; [#uses=1]
+ %897 = getelementptr inbounds float* %896, i32 %752 ; [#uses=2]
+ %898 = load float* %897, align 4 ; [#uses=1]
+ %899 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ %900 = load float* %899, align 4 ; [#uses=1]
+ %901 = fmul float %898, %900 ; [#uses=1]
+ store float %901, float* %897, align 4
+ ret void
+
+return: ; preds = %bb189, %bb169
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSliderConstraint13testAngLimitsEv(%struct.btSliderConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 53 ; [#uses=3]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 35 ; [#uses=3]
+ store i8 0, i8* %1, align 1
+ %2 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=4]
+ %6 = fcmp ugt float %3, %5 ; [#uses=1]
+ br i1 %6, label %return, label %bb
+
+bb: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = load float* %8, align 4 ; [#uses=1]
+ %12 = load float* %7, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 41, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = load float* %14, align 4 ; [#uses=1]
+ %18 = load float* %13, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 42, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ %23 = load float* %20, align 4 ; [#uses=2]
+ %24 = load float* %19, align 4 ; [#uses=2]
+ %25 = fmul float %22, %10 ; [#uses=1]
+ %26 = fmul float %23, %11 ; [#uses=1]
+ %27 = fadd float %25, %26 ; [#uses=1]
+ %28 = fmul float %24, %12 ; [#uses=1]
+ %29 = fadd float %27, %28 ; [#uses=1]
+ %30 = fmul float %22, %16 ; [#uses=1]
+ %31 = fmul float %23, %17 ; [#uses=1]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = fmul float %24, %18 ; [#uses=1]
+ %34 = fadd float %32, %33 ; [#uses=1]
+ %35 = tail call float @atan2f(float %34, float %29) nounwind readonly ; [#uses=1]
+ %36 = tail call float @_Z21btAdjustAngleToLimitsfff(float %35, float %3, float %5) nounwind ; [#uses=5]
+ %37 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 52 ; [#uses=1]
+ store float %36, float* %37, align 4
+ %38 = fcmp ogt float %3, %36 ; [#uses=1]
+ br i1 %38, label %bb1, label %bb2
+
+bb1: ; preds = %bb
+ %39 = fsub float %36, %3 ; [#uses=1]
+ store float %39, float* %0, align 4
+ store i8 1, i8* %1, align 1
+ ret void
+
+bb2: ; preds = %bb
+ %40 = fcmp olt float %5, %36 ; [#uses=1]
+ br i1 %40, label %bb3, label %return
+
+bb3: ; preds = %bb2
+ %41 = fsub float %36, %5 ; [#uses=1]
+ store float %41, float* %0, align 4
+ store i8 1, i8* %1, align 1
+ ret void
+
+return: ; preds = %bb2, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSliderConstraintC2ER11btRigidBodyRK11btTransformb(%struct.btSliderConstraint* %this, %struct.btRigidBody* %rbB, %struct.btTransform* nocapture %frameInB, i8 zeroext %useLinearReferenceFrameA) align 2 {
+return:
+ %0 = tail call %struct.btRigidBody* @_ZN17btTypedConstraint12getFixedBodyEv() ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBodyS2_(%struct.btTypedConstraint* %1, i32 7, %struct.btRigidBody* %0, %struct.btRigidBody* %rbB)
+ %2 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV18btSliderConstraint, i32 0, i32 2), i32 (...)*** %2, align 4
+ %3 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 1 ; [#uses=1]
+ store i8 0, i8* %3, align 4
+ %4 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=4]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=4]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=4]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=4]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=4]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=4]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=4]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=4]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=4]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=4]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=4]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=4]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 4
+ %52 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store i8 %useLinearReferenceFrameA, i8* %52, align 4
+ %53 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=4]
+ %55 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=4]
+ %57 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=4]
+ %59 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=4]
+ %61 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=4]
+ %63 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=4]
+ %65 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=4]
+ %67 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=4]
+ %69 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=4]
+ %71 = fmul float %68, %45 ; [#uses=1]
+ %72 = fmul float %66, %42 ; [#uses=1]
+ %73 = fmul float %62, %45 ; [#uses=1]
+ %74 = fmul float %60, %42 ; [#uses=1]
+ %75 = fmul float %56, %45 ; [#uses=1]
+ %76 = fmul float %54, %42 ; [#uses=1]
+ %77 = fmul float %18, %68 ; [#uses=1]
+ %78 = fmul float %6, %66 ; [#uses=1]
+ %79 = fmul float %21, %68 ; [#uses=1]
+ %80 = fmul float %9, %66 ; [#uses=1]
+ %81 = fmul float %24, %68 ; [#uses=1]
+ %82 = fmul float %12, %66 ; [#uses=1]
+ %83 = fmul float %18, %62 ; [#uses=1]
+ %84 = fmul float %6, %60 ; [#uses=1]
+ %85 = fmul float %21, %62 ; [#uses=1]
+ %86 = fmul float %9, %60 ; [#uses=1]
+ %87 = fmul float %24, %62 ; [#uses=1]
+ %88 = fmul float %12, %60 ; [#uses=1]
+ %89 = fmul float %18, %56 ; [#uses=1]
+ %90 = fmul float %6, %54 ; [#uses=1]
+ %91 = fmul float %21, %56 ; [#uses=1]
+ %92 = fmul float %9, %54 ; [#uses=1]
+ %93 = fmul float %24, %56 ; [#uses=1]
+ %94 = fmul float %12, %54 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %96 = fmul float %70, %48 ; [#uses=1]
+ %97 = fadd float %72, %71 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %99 = fmul float %64, %48 ; [#uses=1]
+ %100 = fadd float %74, %73 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %102 = fmul float %58, %48 ; [#uses=1]
+ %103 = fadd float %76, %75 ; [#uses=1]
+ %104 = fmul float %30, %70 ; [#uses=1]
+ %105 = fadd float %78, %77 ; [#uses=1]
+ %106 = fmul float %33, %70 ; [#uses=1]
+ %107 = fadd float %80, %79 ; [#uses=1]
+ %108 = fmul float %36, %70 ; [#uses=1]
+ %109 = fadd float %82, %81 ; [#uses=1]
+ %110 = fmul float %30, %64 ; [#uses=1]
+ %111 = fadd float %84, %83 ; [#uses=1]
+ %112 = fmul float %33, %64 ; [#uses=1]
+ %113 = fadd float %86, %85 ; [#uses=1]
+ %114 = fmul float %36, %64 ; [#uses=1]
+ %115 = fadd float %88, %87 ; [#uses=1]
+ %116 = fmul float %30, %58 ; [#uses=1]
+ %117 = fadd float %90, %89 ; [#uses=1]
+ %118 = fmul float %33, %58 ; [#uses=1]
+ %119 = fadd float %92, %91 ; [#uses=1]
+ %120 = fmul float %36, %58 ; [#uses=1]
+ %121 = fadd float %94, %93 ; [#uses=1]
+ %122 = load float* %95, align 4 ; [#uses=1]
+ %123 = fadd float %97, %96 ; [#uses=1]
+ %124 = load float* %98, align 4 ; [#uses=1]
+ %125 = fadd float %100, %99 ; [#uses=1]
+ %126 = load float* %101, align 4 ; [#uses=1]
+ %127 = fadd float %103, %102 ; [#uses=1]
+ %128 = fadd float %105, %104 ; [#uses=1]
+ %129 = fadd float %107, %106 ; [#uses=1]
+ %130 = fadd float %109, %108 ; [#uses=1]
+ %131 = fadd float %111, %110 ; [#uses=1]
+ %132 = fadd float %113, %112 ; [#uses=1]
+ %133 = fadd float %115, %114 ; [#uses=1]
+ %134 = fadd float %117, %116 ; [#uses=1]
+ %135 = fadd float %119, %118 ; [#uses=1]
+ %136 = fadd float %121, %120 ; [#uses=1]
+ %137 = fadd float %123, %122 ; [#uses=1]
+ %138 = fadd float %125, %124 ; [#uses=1]
+ %139 = fadd float %127, %126 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %128, float* %140, align 4
+ %141 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %129, float* %141, align 4
+ %142 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %130, float* %142, align 4
+ %143 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %143, align 4
+ %144 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %131, float* %144, align 4
+ %145 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %132, float* %145, align 4
+ %146 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %133, float* %146, align 4
+ %147 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %147, align 4
+ %148 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %134, float* %148, align 4
+ %149 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %135, float* %149, align 4
+ %150 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %136, float* %150, align 4
+ %151 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %151, align 4
+ %152 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %137, float* %152, align 4
+ %153 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %138, float* %153, align 4
+ %154 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %139, float* %154, align 4
+ %155 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %155, align 4
+ %156 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ store float 1.000000e+00, float* %156, align 4
+ %157 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float -1.000000e+00, float* %157, align 4
+ %158 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0.000000e+00, float* %158, align 4
+ %159 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ store float 0.000000e+00, float* %159, align 4
+ %160 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ store float 1.000000e+00, float* %160, align 4
+ %161 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %161, align 4
+ %162 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 12 ; [#uses=1]
+ store float 0.000000e+00, float* %162, align 4
+ %163 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %163, align 4
+ %164 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 14 ; [#uses=1]
+ store float 1.000000e+00, float* %164, align 4
+ %165 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 15 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %165, align 4
+ %166 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %166, align 4
+ %167 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ store float 0.000000e+00, float* %167, align 4
+ %168 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 26 ; [#uses=1]
+ store float 1.000000e+00, float* %168, align 4
+ %169 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 27 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %169, align 4
+ %170 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 28 ; [#uses=1]
+ store float 1.000000e+00, float* %170, align 4
+ %171 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 29 ; [#uses=1]
+ store float 0.000000e+00, float* %171, align 4
+ %172 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 30 ; [#uses=1]
+ store float 1.000000e+00, float* %172, align 4
+ %173 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 31 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %173, align 4
+ %174 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 32 ; [#uses=1]
+ store float 1.000000e+00, float* %174, align 4
+ %175 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 33 ; [#uses=1]
+ store float 0.000000e+00, float* %175, align 4
+ %176 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ store float 1.000000e+00, float* %176, align 4
+ %177 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %177, align 4
+ %178 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ store float 1.000000e+00, float* %178, align 4
+ %179 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ store float 0.000000e+00, float* %179, align 4
+ %180 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ store float 1.000000e+00, float* %180, align 4
+ %181 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %181, align 4
+ %182 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 24 ; [#uses=1]
+ store float 1.000000e+00, float* %182, align 4
+ %183 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ store float 0.000000e+00, float* %183, align 4
+ %184 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 55 ; [#uses=1]
+ store i8 0, i8* %184, align 4
+ %185 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 56 ; [#uses=1]
+ store float 0.000000e+00, float* %185, align 4
+ %186 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 57 ; [#uses=1]
+ store float 0.000000e+00, float* %186, align 4
+ %187 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 58 ; [#uses=1]
+ store float 0.000000e+00, float* %187, align 4
+ %188 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 59 ; [#uses=1]
+ store i8 0, i8* %188, align 4
+ %189 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 60 ; [#uses=1]
+ store float 0.000000e+00, float* %189, align 4
+ %190 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 61 ; [#uses=1]
+ store float 0.000000e+00, float* %190, align 4
+ %191 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 62 ; [#uses=1]
+ store float 0.000000e+00, float* %191, align 4
+ %192 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=1]
+ store i32 0, i32* %192, align 4
+ %193 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 2 ; [#uses=1]
+ store i8 1, i8* %193, align 1
+ %194 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %195 = load %struct.btRigidBody** %194, align 4 ; [#uses=1]
+ %196 = getelementptr inbounds %struct.btRigidBody* %195, i32 0, i32 0, i32 1 ; [#uses=1]
+ %197 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %198 = load %struct.btRigidBody** %197, align 4 ; [#uses=1]
+ %199 = getelementptr inbounds %struct.btRigidBody* %198, i32 0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN18btSliderConstraint19calculateTransformsERK11btTransformS2_(%struct.btSliderConstraint* %this, %struct.btTransform* %199, %struct.btTransform* %196) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN18btSliderConstraintC1ER11btRigidBodyRK11btTransformb(%struct.btSliderConstraint* %this, %struct.btRigidBody* %rbB, %struct.btTransform* nocapture %frameInB, i8 zeroext %useLinearReferenceFrameA) align 2 {
+entry:
+ tail call void @_ZN18btSliderConstraintC2ER11btRigidBodyRK11btTransformb(%struct.btSliderConstraint* %this, %struct.btRigidBody* %rbB, %struct.btTransform* %frameInB, i8 zeroext %useLinearReferenceFrameA)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN18btSliderConstraintC2ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btSliderConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* nocapture %frameInA, %struct.btTransform* nocapture %frameInB, i8 zeroext %useLinearReferenceFrameA) align 2 {
+return:
+ %0 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBodyS2_(%struct.btTypedConstraint* %0, i32 7, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB)
+ %1 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV18btSliderConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 1 ; [#uses=1]
+ store i8 0, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ store float %41, float* %39, align 4
+ %42 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ store float %44, float* %42, align 4
+ %45 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ store float %47, float* %45, align 4
+ %48 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 3, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btTransform* %frameInA, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ store float %50, float* %48, align 4
+ %51 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ store float %53, float* %51, align 4
+ %54 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ store float %56, float* %54, align 4
+ %57 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ store float %59, float* %57, align 4
+ %60 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ store float %62, float* %60, align 4
+ %63 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ store float %65, float* %63, align 4
+ %66 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ store float %68, float* %66, align 4
+ %69 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ store float %71, float* %69, align 4
+ %72 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ store float %74, float* %72, align 4
+ %75 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ store float %77, float* %75, align 4
+ %78 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ store float %80, float* %78, align 4
+ %81 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ store float %83, float* %81, align 4
+ %84 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ store float %86, float* %84, align 4
+ %87 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ store float %89, float* %87, align 4
+ %90 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 1 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=1]
+ store float %92, float* %90, align 4
+ %93 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 2 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ store float %95, float* %93, align 4
+ %96 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 4, i32 1, i32 0, i32 3 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btTransform* %frameInB, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ store float %98, float* %96, align 4
+ %99 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store i8 %useLinearReferenceFrameA, i8* %99, align 4
+ %100 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ store float 1.000000e+00, float* %100, align 4
+ %101 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float -1.000000e+00, float* %101, align 4
+ %102 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0.000000e+00, float* %102, align 4
+ %103 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 9 ; [#uses=1]
+ store float 0.000000e+00, float* %103, align 4
+ %104 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 10 ; [#uses=1]
+ store float 1.000000e+00, float* %104, align 4
+ %105 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 11 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 12 ; [#uses=1]
+ store float 0.000000e+00, float* %106, align 4
+ %107 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %107, align 4
+ %108 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 14 ; [#uses=1]
+ store float 1.000000e+00, float* %108, align 4
+ %109 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 15 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %109, align 4
+ %110 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %110, align 4
+ %111 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 17 ; [#uses=1]
+ store float 0.000000e+00, float* %111, align 4
+ %112 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 26 ; [#uses=1]
+ store float 1.000000e+00, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 27 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %113, align 4
+ %114 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 28 ; [#uses=1]
+ store float 1.000000e+00, float* %114, align 4
+ %115 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 29 ; [#uses=1]
+ store float 0.000000e+00, float* %115, align 4
+ %116 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 30 ; [#uses=1]
+ store float 1.000000e+00, float* %116, align 4
+ %117 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 31 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %117, align 4
+ %118 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 32 ; [#uses=1]
+ store float 1.000000e+00, float* %118, align 4
+ %119 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 33 ; [#uses=1]
+ store float 0.000000e+00, float* %119, align 4
+ %120 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 18 ; [#uses=1]
+ store float 1.000000e+00, float* %120, align 4
+ %121 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 19 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %121, align 4
+ %122 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 20 ; [#uses=1]
+ store float 1.000000e+00, float* %122, align 4
+ %123 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 21 ; [#uses=1]
+ store float 0.000000e+00, float* %123, align 4
+ %124 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 22 ; [#uses=1]
+ store float 1.000000e+00, float* %124, align 4
+ %125 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 23 ; [#uses=1]
+ store float 0x3FE6666660000000, float* %125, align 4
+ %126 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 24 ; [#uses=1]
+ store float 1.000000e+00, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 25 ; [#uses=1]
+ store float 0.000000e+00, float* %127, align 4
+ %128 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 55 ; [#uses=1]
+ store i8 0, i8* %128, align 4
+ %129 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 56 ; [#uses=1]
+ store float 0.000000e+00, float* %129, align 4
+ %130 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 57 ; [#uses=1]
+ store float 0.000000e+00, float* %130, align 4
+ %131 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 58 ; [#uses=1]
+ store float 0.000000e+00, float* %131, align 4
+ %132 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 59 ; [#uses=1]
+ store i8 0, i8* %132, align 4
+ %133 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 60 ; [#uses=1]
+ store float 0.000000e+00, float* %133, align 4
+ %134 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 61 ; [#uses=1]
+ store float 0.000000e+00, float* %134, align 4
+ %135 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 62 ; [#uses=1]
+ store float 0.000000e+00, float* %135, align 4
+ %136 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 36 ; [#uses=1]
+ store i32 0, i32* %136, align 4
+ %137 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 2 ; [#uses=1]
+ store i8 1, i8* %137, align 1
+ %138 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %139 = load %struct.btRigidBody** %138, align 4 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btRigidBody* %139, i32 0, i32 0, i32 1 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btSliderConstraint* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ %142 = load %struct.btRigidBody** %141, align 4 ; [#uses=1]
+ %143 = getelementptr inbounds %struct.btRigidBody* %142, i32 0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN18btSliderConstraint19calculateTransformsERK11btTransformS2_(%struct.btSliderConstraint* %this, %struct.btTransform* %143, %struct.btTransform* %140) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN18btSliderConstraintC1ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btSliderConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* nocapture %frameInA, %struct.btTransform* nocapture %frameInB, i8 zeroext %useLinearReferenceFrameA) align 2 {
+entry:
+ tail call void @_ZN18btSliderConstraintC2ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btSliderConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* %frameInA, %struct.btTransform* %frameInB, i8 zeroext %useLinearReferenceFrameA)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN24btSolve2LinearConstraint31resolveUnilateralPairConstraintEP11btRigidBodyS1_RK11btMatrix3x3S4_RK9btVector3fS7_S7_S7_S7_fS7_S7_S7_fS7_S7_S7_fS7_RfS8_(%struct.btSolve2LinearConstraint* nocapture %this, %struct.btRigidBody* nocapture %body1, %struct.btRigidBody* nocapture %body2, %struct.btMatrix3x3* nocapture %world2A, %struct.btMatrix3x3* nocapture %world2B, %struct.btQuadWord* nocapture %invInertiaADiag, float %invMassA, %struct.btQuadWord* nocapture %linvelA, %struct.btQuadWord* nocapture %angvelA, %struct.btQuadWord* nocapture %rel_posA1, %struct.btQuadWord* nocapture %invInertiaBDiag, float %invMassB, %struct.btQuadWord* nocapture %linvelB, %struct.btQuadWord* nocapture %angvelB, %struct.btQuadWord* nocapture %rel_posA2, float %depthA, %struct.btQuadWord* nocapture %normalA, %struct.btQuadWord* nocapture %rel_posB1, %struct.btQuadWord* nocapture %rel_posB2, float %depthB, %struct.btQuadWord* nocapture %normalB, float* nocapture %imp0, float* nocapture %imp1) nounwind align 2 {
+entry:
+ %jacA = alloca %struct.btJacobianEntry, align 8 ; [#uses=11]
+ %jacB = alloca %struct.btJacobianEntry, align 8 ; [#uses=11]
+ store float 0.000000e+00, float* %imp0, align 4
+ store float 0.000000e+00, float* %imp1, align 4
+ %0 = getelementptr inbounds %struct.btQuadWord* %normalA, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = fmul float %1, %1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %normalA, i32 0, i32 0, i32 1 ; [#uses=2]
+ %4 = load float* %3, align 4 ; [#uses=2]
+ %5 = fmul float %4, %4 ; [#uses=1]
+ %6 = fadd float %2, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %normalA, i32 0, i32 0, i32 2 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fmul float %8, %8 ; [#uses=1]
+ %10 = fadd float %6, %9 ; [#uses=1]
+ %11 = call float @sqrtf(float %10) nounwind readonly ; [#uses=1]
+ %12 = call float @fabsf(float %11) nounwind readnone ; [#uses=1]
+ %13 = fadd float %12, -1.000000e+00 ; [#uses=1]
+ %14 = call float @fabsf(float %13) nounwind readnone ; [#uses=1]
+ %15 = fcmp ult float %14, 0x3E80000000000000 ; [#uses=1]
+ br i1 %15, label %bb, label %return
+
+bb: ; preds = %entry
+ call void @_ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(%struct.btJacobianEntry* %jacA, %struct.btMatrix3x3* %world2A, %struct.btMatrix3x3* %world2B, %struct.btQuadWord* %rel_posA1, %struct.btQuadWord* %rel_posA2, %struct.btQuadWord* %normalA, %struct.btQuadWord* %invInertiaADiag, float %invMassA, %struct.btQuadWord* %invInertiaBDiag, float %invMassB) nounwind
+ call void @_ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(%struct.btJacobianEntry* %jacB, %struct.btMatrix3x3* %world2A, %struct.btMatrix3x3* %world2B, %struct.btQuadWord* %rel_posB1, %struct.btQuadWord* %rel_posB2, %struct.btQuadWord* %normalB, %struct.btQuadWord* %invInertiaADiag, float %invMassA, %struct.btQuadWord* %invInertiaBDiag, float %invMassB) nounwind
+ %16 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=4]
+ %18 = getelementptr inbounds %struct.btQuadWord* %rel_posA1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=4]
+ %20 = fmul float %17, %19 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=4]
+ %23 = getelementptr inbounds %struct.btQuadWord* %rel_posA1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=4]
+ %25 = fmul float %22, %24 ; [#uses=1]
+ %26 = fsub float %20, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=4]
+ %29 = fmul float %28, %24 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %rel_posA1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=4]
+ %32 = fmul float %17, %31 ; [#uses=1]
+ %33 = fsub float %29, %32 ; [#uses=1]
+ %34 = fmul float %22, %31 ; [#uses=1]
+ %35 = fmul float %28, %19 ; [#uses=1]
+ %36 = fsub float %34, %35 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=2]
+ %39 = fadd float %38, %26 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=2]
+ %42 = fadd float %41, %33 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=2]
+ %45 = fadd float %44, %36 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=4]
+ %48 = fmul float %47, %19 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=4]
+ %51 = fmul float %50, %24 ; [#uses=1]
+ %52 = fsub float %48, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=4]
+ %55 = fmul float %54, %24 ; [#uses=1]
+ %56 = fmul float %47, %31 ; [#uses=1]
+ %57 = fsub float %55, %56 ; [#uses=1]
+ %58 = fmul float %50, %31 ; [#uses=1]
+ %59 = fmul float %54, %19 ; [#uses=1]
+ %60 = fsub float %58, %59 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=2]
+ %63 = fadd float %62, %52 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=2]
+ %66 = fadd float %65, %57 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=2]
+ %69 = fadd float %68, %60 ; [#uses=1]
+ %70 = fsub float %63, %39 ; [#uses=1]
+ %71 = fsub float %66, %42 ; [#uses=1]
+ %72 = fsub float %69, %45 ; [#uses=1]
+ %73 = load float* %0, align 4 ; [#uses=1]
+ %74 = fmul float %73, %72 ; [#uses=1]
+ %75 = load float* %3, align 4 ; [#uses=1]
+ %76 = fmul float %75, %71 ; [#uses=1]
+ %77 = fadd float %74, %76 ; [#uses=1]
+ %78 = load float* %7, align 4 ; [#uses=1]
+ %79 = fmul float %78, %70 ; [#uses=1]
+ %80 = fadd float %77, %79 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btQuadWord* %rel_posB1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=4]
+ %83 = fmul float %17, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btQuadWord* %rel_posB1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=4]
+ %86 = fmul float %22, %85 ; [#uses=1]
+ %87 = fsub float %83, %86 ; [#uses=1]
+ %88 = fmul float %28, %85 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btQuadWord* %rel_posB1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=4]
+ %91 = fmul float %17, %90 ; [#uses=1]
+ %92 = fsub float %88, %91 ; [#uses=1]
+ %93 = fmul float %22, %90 ; [#uses=1]
+ %94 = fmul float %28, %82 ; [#uses=1]
+ %95 = fsub float %93, %94 ; [#uses=1]
+ %96 = fadd float %38, %87 ; [#uses=1]
+ %97 = fadd float %41, %92 ; [#uses=1]
+ %98 = fadd float %44, %95 ; [#uses=1]
+ %99 = fmul float %47, %82 ; [#uses=1]
+ %100 = fmul float %50, %85 ; [#uses=1]
+ %101 = fsub float %99, %100 ; [#uses=1]
+ %102 = fmul float %54, %85 ; [#uses=1]
+ %103 = fmul float %47, %90 ; [#uses=1]
+ %104 = fsub float %102, %103 ; [#uses=1]
+ %105 = fmul float %50, %90 ; [#uses=1]
+ %106 = fmul float %54, %82 ; [#uses=1]
+ %107 = fsub float %105, %106 ; [#uses=1]
+ %108 = fadd float %62, %101 ; [#uses=1]
+ %109 = fadd float %65, %104 ; [#uses=1]
+ %110 = fadd float %68, %107 ; [#uses=1]
+ %111 = fsub float %108, %96 ; [#uses=1]
+ %112 = fsub float %109, %97 ; [#uses=1]
+ %113 = fsub float %110, %98 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btQuadWord* %normalB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=1]
+ %116 = fmul float %115, %113 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btQuadWord* %normalB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %118 = load float* %117, align 4 ; [#uses=1]
+ %119 = fmul float %118, %112 ; [#uses=1]
+ %120 = fadd float %116, %119 ; [#uses=1]
+ %121 = getelementptr inbounds %struct.btQuadWord* %normalB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %122 = load float* %121, align 4 ; [#uses=1]
+ %123 = fmul float %122, %111 ; [#uses=1]
+ %124 = fadd float %120, %123 ; [#uses=1]
+ %125 = fadd float %invMassA, %invMassB ; [#uses=1]
+ %126 = fdiv float 1.000000e+00, %125 ; [#uses=2]
+ %127 = getelementptr inbounds %struct.btSolve2LinearConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ %128 = load float* %127, align 4 ; [#uses=2]
+ %129 = fmul float %128, %depthA ; [#uses=1]
+ %130 = fmul float %129, %126 ; [#uses=1]
+ %131 = getelementptr inbounds %struct.btSolve2LinearConstraint* %this, i32 0, i32 1 ; [#uses=1]
+ %132 = load float* %131, align 4 ; [#uses=2]
+ %133 = fmul float %132, %80 ; [#uses=1]
+ %134 = fsub float %130, %133 ; [#uses=2]
+ %135 = fmul float %128, %depthB ; [#uses=1]
+ %136 = fmul float %135, %126 ; [#uses=1]
+ %137 = fmul float %132, %124 ; [#uses=1]
+ %138 = fsub float %136, %137 ; [#uses=2]
+ %139 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %140 = load float* %139, align 8 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %142 = load float* %141, align 8 ; [#uses=1]
+ %143 = fmul float %140, %142 ; [#uses=2]
+ %144 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %147 = load float* %146, align 4 ; [#uses=1]
+ %148 = fmul float %145, %147 ; [#uses=2]
+ %149 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %150 = load float* %149, align 8 ; [#uses=1]
+ %151 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %152 = load float* %151, align 8 ; [#uses=1]
+ %153 = fmul float %150, %152 ; [#uses=2]
+ %154 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %155 = load float* %154, align 8 ; [#uses=1]
+ %156 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %157 = load float* %156, align 8 ; [#uses=1]
+ %158 = fmul float %155, %157 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %160 = load float* %159, align 4 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ %163 = fmul float %160, %162 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %165 = load float* %164, align 8 ; [#uses=1]
+ %166 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %167 = load float* %166, align 8 ; [#uses=1]
+ %168 = fmul float %165, %167 ; [#uses=1]
+ %169 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %170 = load float* %169, align 8 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %172 = load float* %171, align 8 ; [#uses=1]
+ %173 = fmul float %170, %172 ; [#uses=1]
+ %174 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %175 = load float* %174, align 4 ; [#uses=1]
+ %176 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %177 = load float* %176, align 4 ; [#uses=1]
+ %178 = fmul float %175, %177 ; [#uses=1]
+ %179 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %180 = load float* %179, align 8 ; [#uses=1]
+ %181 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %182 = load float* %181, align 8 ; [#uses=1]
+ %183 = fmul float %180, %182 ; [#uses=1]
+ %184 = fmul float %143, %invMassA ; [#uses=1]
+ %185 = fmul float %148, %invMassA ; [#uses=1]
+ %186 = fmul float %153, %invMassA ; [#uses=1]
+ %187 = fmul float %143, %invMassB ; [#uses=1]
+ %188 = fmul float %148, %invMassB ; [#uses=1]
+ %189 = fmul float %153, %invMassB ; [#uses=1]
+ %190 = fadd float %158, %173 ; [#uses=1]
+ %191 = fadd float %163, %178 ; [#uses=1]
+ %192 = fadd float %168, %183 ; [#uses=1]
+ %193 = fadd float %190, %184 ; [#uses=1]
+ %194 = fadd float %191, %185 ; [#uses=1]
+ %195 = fadd float %192, %186 ; [#uses=1]
+ %196 = fadd float %193, %187 ; [#uses=1]
+ %197 = fadd float %194, %188 ; [#uses=1]
+ %198 = fadd float %195, %189 ; [#uses=1]
+ %199 = fadd float %198, %197 ; [#uses=1]
+ %200 = fadd float %199, %196 ; [#uses=3]
+ %201 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 5 ; [#uses=1]
+ %202 = load float* %201, align 8 ; [#uses=2]
+ %203 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 5 ; [#uses=1]
+ %204 = load float* %203, align 8 ; [#uses=2]
+ %205 = fmul float %202, %204 ; [#uses=1]
+ %206 = fmul float %200, %200 ; [#uses=1]
+ %207 = fsub float %205, %206 ; [#uses=1]
+ %208 = fdiv float 1.000000e+00, %207 ; [#uses=4]
+ %209 = fmul float %202, %134 ; [#uses=1]
+ %210 = fmul float %209, %208 ; [#uses=1]
+ %211 = fsub float -0.000000e+00, %200 ; [#uses=2]
+ %212 = fmul float %138, %211 ; [#uses=1]
+ %213 = fmul float %212, %208 ; [#uses=1]
+ %214 = fadd float %210, %213 ; [#uses=1]
+ store float %214, float* %imp0, align 4
+ %215 = fmul float %204, %138 ; [#uses=1]
+ %216 = fmul float %215, %208 ; [#uses=1]
+ %217 = fmul float %134, %211 ; [#uses=1]
+ %218 = fmul float %217, %208 ; [#uses=1]
+ %219 = fadd float %216, %218 ; [#uses=1]
+ store float %219, float* %imp1, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN24btSolve2LinearConstraint30resolveBilateralPairConstraintEP11btRigidBodyS1_RK11btMatrix3x3S4_RK9btVector3fS7_S7_S7_S7_fS7_S7_S7_fS7_S7_S7_fS7_RfS8_(%struct.btSolve2LinearConstraint* nocapture %this, %struct.btRigidBody* nocapture %body1, %struct.btRigidBody* nocapture %body2, %struct.btMatrix3x3* nocapture %world2A, %struct.btMatrix3x3* nocapture %world2B, %struct.btQuadWord* nocapture %invInertiaADiag, float %invMassA, %struct.btQuadWord* nocapture %linvelA, %struct.btQuadWord* nocapture %angvelA, %struct.btQuadWord* nocapture %rel_posA1, %struct.btQuadWord* nocapture %invInertiaBDiag, float %invMassB, %struct.btQuadWord* nocapture %linvelB, %struct.btQuadWord* nocapture %angvelB, %struct.btQuadWord* nocapture %rel_posA2, float %depthA, %struct.btQuadWord* nocapture %normalA, %struct.btQuadWord* nocapture %rel_posB1, %struct.btQuadWord* nocapture %rel_posB2, float %depthB, %struct.btQuadWord* nocapture %normalB, float* nocapture %imp0, float* nocapture %imp1) nounwind align 2 {
+entry:
+ %jacA = alloca %struct.btJacobianEntry, align 8 ; [#uses=11]
+ %jacB = alloca %struct.btJacobianEntry, align 8 ; [#uses=11]
+ store float 0.000000e+00, float* %imp0, align 4
+ store float 0.000000e+00, float* %imp1, align 4
+ %0 = getelementptr inbounds %struct.btQuadWord* %normalA, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = fmul float %1, %1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %normalA, i32 0, i32 0, i32 1 ; [#uses=2]
+ %4 = load float* %3, align 4 ; [#uses=2]
+ %5 = fmul float %4, %4 ; [#uses=1]
+ %6 = fadd float %2, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %normalA, i32 0, i32 0, i32 2 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fmul float %8, %8 ; [#uses=1]
+ %10 = fadd float %6, %9 ; [#uses=1]
+ %11 = call float @sqrtf(float %10) nounwind readonly ; [#uses=1]
+ %12 = call float @fabsf(float %11) nounwind readnone ; [#uses=1]
+ %13 = fadd float %12, -1.000000e+00 ; [#uses=1]
+ %14 = call float @fabsf(float %13) nounwind readnone ; [#uses=1]
+ %15 = fcmp ult float %14, 0x3E80000000000000 ; [#uses=1]
+ br i1 %15, label %bb, label %return
+
+bb: ; preds = %entry
+ call void @_ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(%struct.btJacobianEntry* %jacA, %struct.btMatrix3x3* %world2A, %struct.btMatrix3x3* %world2B, %struct.btQuadWord* %rel_posA1, %struct.btQuadWord* %rel_posA2, %struct.btQuadWord* %normalA, %struct.btQuadWord* %invInertiaADiag, float %invMassA, %struct.btQuadWord* %invInertiaBDiag, float %invMassB) nounwind
+ call void @_ZN15btJacobianEntryC2ERK11btMatrix3x3S2_RK9btVector3S5_S5_S5_fS5_f(%struct.btJacobianEntry* %jacB, %struct.btMatrix3x3* %world2A, %struct.btMatrix3x3* %world2B, %struct.btQuadWord* %rel_posB1, %struct.btQuadWord* %rel_posB2, %struct.btQuadWord* %normalB, %struct.btQuadWord* %invInertiaADiag, float %invMassA, %struct.btQuadWord* %invInertiaBDiag, float %invMassB) nounwind
+ %16 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=4]
+ %18 = getelementptr inbounds %struct.btQuadWord* %rel_posA1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=4]
+ %20 = fmul float %17, %19 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=4]
+ %23 = getelementptr inbounds %struct.btQuadWord* %rel_posA1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=4]
+ %25 = fmul float %22, %24 ; [#uses=1]
+ %26 = fsub float %20, %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=4]
+ %29 = fmul float %28, %24 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %rel_posA1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=4]
+ %32 = fmul float %17, %31 ; [#uses=1]
+ %33 = fsub float %29, %32 ; [#uses=1]
+ %34 = fmul float %22, %31 ; [#uses=1]
+ %35 = fmul float %28, %19 ; [#uses=1]
+ %36 = fsub float %34, %35 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=2]
+ %39 = fadd float %38, %26 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=2]
+ %42 = fadd float %41, %33 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btRigidBody* %body2, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=2]
+ %45 = fadd float %44, %36 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=4]
+ %48 = fmul float %47, %19 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=4]
+ %51 = fmul float %50, %24 ; [#uses=1]
+ %52 = fsub float %48, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=4]
+ %55 = fmul float %54, %24 ; [#uses=1]
+ %56 = fmul float %47, %31 ; [#uses=1]
+ %57 = fsub float %55, %56 ; [#uses=1]
+ %58 = fmul float %50, %31 ; [#uses=1]
+ %59 = fmul float %54, %19 ; [#uses=1]
+ %60 = fsub float %58, %59 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=2]
+ %63 = fadd float %62, %52 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=2]
+ %66 = fadd float %65, %57 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=2]
+ %69 = fadd float %68, %60 ; [#uses=1]
+ %70 = fsub float %63, %39 ; [#uses=1]
+ %71 = fsub float %66, %42 ; [#uses=1]
+ %72 = fsub float %69, %45 ; [#uses=1]
+ %73 = load float* %0, align 4 ; [#uses=1]
+ %74 = fmul float %73, %72 ; [#uses=1]
+ %75 = load float* %3, align 4 ; [#uses=1]
+ %76 = fmul float %75, %71 ; [#uses=1]
+ %77 = fadd float %74, %76 ; [#uses=1]
+ %78 = load float* %7, align 4 ; [#uses=1]
+ %79 = fmul float %78, %70 ; [#uses=1]
+ %80 = fadd float %77, %79 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btQuadWord* %rel_posB1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=4]
+ %83 = fmul float %17, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btQuadWord* %rel_posB1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=4]
+ %86 = fmul float %22, %85 ; [#uses=1]
+ %87 = fsub float %83, %86 ; [#uses=1]
+ %88 = fmul float %28, %85 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btQuadWord* %rel_posB1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=4]
+ %91 = fmul float %17, %90 ; [#uses=1]
+ %92 = fsub float %88, %91 ; [#uses=1]
+ %93 = fmul float %22, %90 ; [#uses=1]
+ %94 = fmul float %28, %82 ; [#uses=1]
+ %95 = fsub float %93, %94 ; [#uses=1]
+ %96 = fadd float %38, %87 ; [#uses=1]
+ %97 = fadd float %41, %92 ; [#uses=1]
+ %98 = fadd float %44, %95 ; [#uses=1]
+ %99 = fmul float %47, %82 ; [#uses=1]
+ %100 = fmul float %50, %85 ; [#uses=1]
+ %101 = fsub float %99, %100 ; [#uses=1]
+ %102 = fmul float %54, %85 ; [#uses=1]
+ %103 = fmul float %47, %90 ; [#uses=1]
+ %104 = fsub float %102, %103 ; [#uses=1]
+ %105 = fmul float %50, %90 ; [#uses=1]
+ %106 = fmul float %54, %82 ; [#uses=1]
+ %107 = fsub float %105, %106 ; [#uses=1]
+ %108 = fadd float %62, %101 ; [#uses=1]
+ %109 = fadd float %65, %104 ; [#uses=1]
+ %110 = fadd float %68, %107 ; [#uses=1]
+ %111 = fsub float %108, %96 ; [#uses=1]
+ %112 = fsub float %109, %97 ; [#uses=1]
+ %113 = fsub float %110, %98 ; [#uses=1]
+ %114 = getelementptr inbounds %struct.btQuadWord* %normalB, i32 0, i32 0, i32 0 ; [#uses=1]
+ %115 = load float* %114, align 4 ; [#uses=1]
+ %116 = fmul float %115, %113 ; [#uses=1]
+ %117 = getelementptr inbounds %struct.btQuadWord* %normalB, i32 0, i32 0, i32 1 ; [#uses=1]
+ %118 = load float* %117, align 4 ; [#uses=1]
+ %119 = fmul float %118, %112 ; [#uses=1]
+ %120 = fadd float %116, %119 ; [#uses=1]
+ %121 = getelementptr inbounds %struct.btQuadWord* %normalB, i32 0, i32 0, i32 2 ; [#uses=1]
+ %122 = load float* %121, align 4 ; [#uses=1]
+ %123 = fmul float %122, %111 ; [#uses=1]
+ %124 = fadd float %120, %123 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btSolve2LinearConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ %126 = load float* %125, align 4 ; [#uses=2]
+ %127 = fmul float %126, %depthA ; [#uses=1]
+ %128 = getelementptr inbounds %struct.btSolve2LinearConstraint* %this, i32 0, i32 1 ; [#uses=1]
+ %129 = load float* %128, align 4 ; [#uses=2]
+ %130 = fmul float %129, %80 ; [#uses=1]
+ %131 = fsub float %127, %130 ; [#uses=4]
+ %132 = fmul float %126, %depthB ; [#uses=1]
+ %133 = fmul float %129, %124 ; [#uses=1]
+ %134 = fsub float %132, %133 ; [#uses=3]
+ %135 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %136 = load float* %135, align 8 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %138 = load float* %137, align 8 ; [#uses=1]
+ %139 = fmul float %136, %138 ; [#uses=2]
+ %140 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ %142 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %143 = load float* %142, align 4 ; [#uses=1]
+ %144 = fmul float %141, %143 ; [#uses=2]
+ %145 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %146 = load float* %145, align 8 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %148 = load float* %147, align 8 ; [#uses=1]
+ %149 = fmul float %146, %148 ; [#uses=2]
+ %150 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %151 = load float* %150, align 8 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %153 = load float* %152, align 8 ; [#uses=1]
+ %154 = fmul float %151, %153 ; [#uses=1]
+ %155 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %156 = load float* %155, align 4 ; [#uses=1]
+ %157 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %158 = load float* %157, align 4 ; [#uses=1]
+ %159 = fmul float %156, %158 ; [#uses=1]
+ %160 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %161 = load float* %160, align 8 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %163 = load float* %162, align 8 ; [#uses=1]
+ %164 = fmul float %161, %163 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %166 = load float* %165, align 8 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %168 = load float* %167, align 8 ; [#uses=1]
+ %169 = fmul float %166, %168 ; [#uses=1]
+ %170 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %171 = load float* %170, align 4 ; [#uses=1]
+ %172 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %173 = load float* %172, align 4 ; [#uses=1]
+ %174 = fmul float %171, %173 ; [#uses=1]
+ %175 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %176 = load float* %175, align 8 ; [#uses=1]
+ %177 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %178 = load float* %177, align 8 ; [#uses=1]
+ %179 = fmul float %176, %178 ; [#uses=1]
+ %180 = fmul float %139, %invMassA ; [#uses=1]
+ %181 = fmul float %144, %invMassA ; [#uses=1]
+ %182 = fmul float %149, %invMassA ; [#uses=1]
+ %183 = fmul float %139, %invMassB ; [#uses=1]
+ %184 = fmul float %144, %invMassB ; [#uses=1]
+ %185 = fmul float %149, %invMassB ; [#uses=1]
+ %186 = fadd float %154, %169 ; [#uses=1]
+ %187 = fadd float %159, %174 ; [#uses=1]
+ %188 = fadd float %164, %179 ; [#uses=1]
+ %189 = fadd float %186, %180 ; [#uses=1]
+ %190 = fadd float %187, %181 ; [#uses=1]
+ %191 = fadd float %188, %182 ; [#uses=1]
+ %192 = fadd float %189, %183 ; [#uses=1]
+ %193 = fadd float %190, %184 ; [#uses=1]
+ %194 = fadd float %191, %185 ; [#uses=1]
+ %195 = fadd float %194, %193 ; [#uses=1]
+ %196 = fadd float %195, %192 ; [#uses=3]
+ %197 = getelementptr inbounds %struct.btJacobianEntry* %jacA, i32 0, i32 5 ; [#uses=1]
+ %198 = load float* %197, align 8 ; [#uses=4]
+ %199 = getelementptr inbounds %struct.btJacobianEntry* %jacB, i32 0, i32 5 ; [#uses=1]
+ %200 = load float* %199, align 8 ; [#uses=3]
+ %201 = fmul float %198, %200 ; [#uses=1]
+ %202 = fmul float %196, %196 ; [#uses=1]
+ %203 = fsub float %201, %202 ; [#uses=1]
+ %204 = fdiv float 1.000000e+00, %203 ; [#uses=4]
+ %205 = fmul float %198, %131 ; [#uses=1]
+ %206 = fmul float %205, %204 ; [#uses=1]
+ %207 = fsub float -0.000000e+00, %196 ; [#uses=2]
+ %208 = fmul float %134, %207 ; [#uses=1]
+ %209 = fmul float %208, %204 ; [#uses=1]
+ %210 = fadd float %206, %209 ; [#uses=1]
+ store float %210, float* %imp0, align 4
+ %211 = fmul float %200, %134 ; [#uses=1]
+ %212 = fmul float %211, %204 ; [#uses=1]
+ %213 = fmul float %131, %207 ; [#uses=1]
+ %214 = fmul float %213, %204 ; [#uses=1]
+ %215 = fadd float %212, %214 ; [#uses=2]
+ store float %215, float* %imp1, align 4
+ %216 = load float* %imp0, align 4 ; [#uses=1]
+ %217 = fcmp ogt float %216, 0.000000e+00 ; [#uses=1]
+ br i1 %217, label %bb1, label %bb4
+
+bb1: ; preds = %bb
+ %218 = fcmp ule float %215, 0.000000e+00 ; [#uses=1]
+ br i1 %218, label %bb2, label %return
+
+bb2: ; preds = %bb1
+ store float 0.000000e+00, float* %imp1, align 4
+ %219 = fdiv float %131, %198 ; [#uses=2]
+ store float %219, float* %imp0, align 4
+ %220 = fcmp ule float %219, 0.000000e+00 ; [#uses=1]
+ br i1 %220, label %bb3, label %return
+
+bb3: ; preds = %bb2
+ store float 0.000000e+00, float* %imp0, align 4
+ ret void
+
+bb4: ; preds = %bb
+ store float 0.000000e+00, float* %imp0, align 4
+ %221 = fdiv float %134, %200 ; [#uses=2]
+ store float %221, float* %imp1, align 4
+ %222 = fcmp ugt float %221, 0.000000e+00 ; [#uses=1]
+ br i1 %222, label %return, label %bb5
+
+bb5: ; preds = %bb4
+ store float 0.000000e+00, float* %imp1, align 4
+ %223 = fdiv float %131, %198 ; [#uses=2]
+ store float %223, float* %imp0, align 4
+ %224 = fcmp ule float %223, 0.000000e+00 ; [#uses=1]
+ br i1 %224, label %bb6, label %return
+
+bb6: ; preds = %bb5
+ store float 0.000000e+00, float* %imp0, align 4
+ ret void
+
+return: ; preds = %bb5, %bb4, %bb2, %bb1, %entry
+ ret void
+}
+
+; [#uses=6]
+define void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBody(%struct.btTypedConstraint* nocapture %this, i32 %type, %struct.btRigidBody* %rbA) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i32 %type, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV17btTypedConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i32 -1, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 0, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btRigidBody* %rbA, %struct.btRigidBody** %5, align 4
+ %6 = tail call %struct.btRigidBody* @_ZN17btTypedConstraint12getFixedBodyEv() ; [#uses=0]
+ %7 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, %struct.btRigidBody** %7, align 4
+ %8 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %9, align 4
+ ret void
+}
+
+; [#uses=11]
+define void @_ZN17btTypedConstraintC2E21btTypedConstraintTypeR11btRigidBodyS2_(%struct.btTypedConstraint* nocapture %this, i32 %type, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i32 %type, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV17btTypedConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i32 -1, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 0, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btRigidBody* %rbA, %struct.btRigidBody** %5, align 4
+ %6 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.btRigidBody* %rbB, %struct.btRigidBody** %6, align 4
+ %7 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %8, align 4
+ ret void
+}
+
+; [#uses=6]
+define i8* @_ZNK17btTypedConstraint9serializeEPvP12btSerializer(%struct.btTypedConstraint* %this, i8* nocapture %dataBuffer, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=5]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 7 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 5 ; [#uses=3]
+ %5 = load %struct.btRigidBody** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %3 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %7 = bitcast %struct.btRigidBody* %5 to i8* ; [#uses=1]
+ %8 = tail call i8* %6(%struct.btActionInterface* %serializer, i8* %7) ; [#uses=1]
+ %9 = bitcast i8* %8 to %struct.btRigidBodyFloatData* ; [#uses=1]
+ %10 = bitcast i8* %dataBuffer to %struct.btRigidBodyFloatData** ; [#uses=1]
+ store %struct.btRigidBodyFloatData* %9, %struct.btRigidBodyFloatData** %10, align 4
+ %11 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 7 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 6 ; [#uses=3]
+ %15 = load %struct.btRigidBody** %14, align 4 ; [#uses=1]
+ %16 = bitcast i32 (...)* %13 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %17 = bitcast %struct.btRigidBody* %15 to i8* ; [#uses=1]
+ %18 = tail call i8* %16(%struct.btActionInterface* %serializer, i8* %17) ; [#uses=1]
+ %19 = bitcast i8* %18 to %struct.btRigidBodyFloatData* ; [#uses=1]
+ %20 = getelementptr inbounds i8* %dataBuffer, i32 4 ; [#uses=1]
+ %21 = bitcast i8* %20 to %struct.btRigidBodyFloatData** ; [#uses=1]
+ store %struct.btRigidBodyFloatData* %19, %struct.btRigidBodyFloatData** %21, align 4
+ %22 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds i32 (...)** %22, i32 10 ; [#uses=1]
+ %24 = load i32 (...)** %23, align 4 ; [#uses=1]
+ %25 = bitcast i32 (...)* %24 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %26 = bitcast %struct.btTypedConstraint* %this to i8* ; [#uses=1]
+ %27 = tail call i8* %25(%struct.btActionInterface* %serializer, i8* %26) ; [#uses=2]
+ %28 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds i32 (...)** %28, i32 7 ; [#uses=1]
+ %30 = load i32 (...)** %29, align 4 ; [#uses=1]
+ %31 = bitcast i32 (...)* %30 to i8* (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ %32 = tail call i8* %31(%struct.btActionInterface* %serializer, i8* %27) ; [#uses=2]
+ %33 = getelementptr inbounds i8* %dataBuffer, i32 8 ; [#uses=1]
+ %34 = bitcast i8* %33 to i8** ; [#uses=1]
+ store i8* %32, i8** %34, align 4
+ %35 = icmp eq i8* %32, null ; [#uses=1]
+ br i1 %35, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %36 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds i32 (...)** %36, i32 12 ; [#uses=1]
+ %38 = load i32 (...)** %37, align 4 ; [#uses=1]
+ %39 = bitcast i32 (...)* %38 to void (%struct.btActionInterface*, i8*)* ; [#uses=1]
+ tail call void %39(%struct.btActionInterface* %serializer, i8* %27)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %40 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %41 = load i32* %40, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds i8* %dataBuffer, i32 12 ; [#uses=1]
+ %43 = bitcast i8* %42 to i32* ; [#uses=1]
+ store i32 %41, i32* %43, align 4
+ %44 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ %45 = load i8* %44, align 4 ; [#uses=1]
+ %46 = zext i8 %45 to i32 ; [#uses=1]
+ %47 = getelementptr inbounds i8* %dataBuffer, i32 24 ; [#uses=1]
+ %48 = bitcast i8* %47 to i32* ; [#uses=1]
+ store i32 %46, i32* %48, align 4
+ %49 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ %50 = load i32* %49, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds i8* %dataBuffer, i32 20 ; [#uses=1]
+ %52 = bitcast i8* %51 to i32* ; [#uses=1]
+ store i32 %50, i32* %52, align 4
+ %53 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 2 ; [#uses=1]
+ %54 = load i32* %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds i8* %dataBuffer, i32 16 ; [#uses=1]
+ %56 = bitcast i8* %55 to i32* ; [#uses=1]
+ store i32 %54, i32* %56, align 4
+ %57 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds i8* %dataBuffer, i32 28 ; [#uses=1]
+ %60 = bitcast i8* %59 to float* ; [#uses=1]
+ store float %58, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds i8* %dataBuffer, i32 32 ; [#uses=1]
+ %64 = bitcast i8* %63 to float* ; [#uses=1]
+ store float %62, float* %64, align 4
+ %65 = getelementptr inbounds i8* %dataBuffer, i32 36 ; [#uses=1]
+ %66 = bitcast i8* %65 to i32* ; [#uses=3]
+ store i32 0, i32* %66, align 4
+ %67 = load %struct.btRigidBody** %4, align 4 ; [#uses=2]
+ %68 = getelementptr inbounds %struct.btRigidBody* %67, i32 0, i32 21, i32 1 ; [#uses=1]
+ %69 = load i32* %68, align 4 ; [#uses=1]
+ %70 = icmp sgt i32 %69, 0 ; [#uses=1]
+ br i1 %70, label %bb2, label %bb12.preheader
+
+bb2: ; preds = %bb4, %bb1
+ %71 = phi %struct.btRigidBody* [ %76, %bb4 ], [ %67, %bb1 ] ; [#uses=1]
+ %i.017 = phi i32 [ %tmp20, %bb4 ], [ 0, %bb1 ] ; [#uses=2]
+ %tmp20 = add i32 %i.017, 1 ; [#uses=2]
+ %72 = getelementptr inbounds %struct.btRigidBody* %71, i32 0, i32 21, i32 3 ; [#uses=1]
+ %73 = load %struct.btTypedConstraint*** %72, align 4 ; [#uses=1]
+ %scevgep19 = getelementptr %struct.btTypedConstraint** %73, i32 %i.017 ; [#uses=1]
+ %74 = load %struct.btTypedConstraint** %scevgep19, align 4 ; [#uses=1]
+ %75 = icmp eq %struct.btTypedConstraint* %74, %this ; [#uses=1]
+ br i1 %75, label %bb3, label %bb4
+
+bb3: ; preds = %bb2
+ store i32 1, i32* %66, align 4
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %76 = load %struct.btRigidBody** %4, align 4 ; [#uses=2]
+ %77 = getelementptr inbounds %struct.btRigidBody* %76, i32 0, i32 21, i32 1 ; [#uses=1]
+ %78 = load i32* %77, align 4 ; [#uses=1]
+ %79 = icmp sgt i32 %78, %tmp20 ; [#uses=1]
+ br i1 %79, label %bb2, label %bb12.preheader
+
+bb12.preheader: ; preds = %bb4, %bb1
+ %80 = load %struct.btRigidBody** %14, align 4 ; [#uses=2]
+ %81 = getelementptr inbounds %struct.btRigidBody* %80, i32 0, i32 21, i32 1 ; [#uses=1]
+ %82 = load i32* %81, align 4 ; [#uses=1]
+ %83 = icmp sgt i32 %82, 0 ; [#uses=1]
+ br i1 %83, label %bb8, label %bb14
+
+bb8: ; preds = %bb11, %bb12.preheader
+ %84 = phi %struct.btRigidBody* [ %89, %bb11 ], [ %80, %bb12.preheader ] ; [#uses=1]
+ %i.116 = phi i32 [ %tmp, %bb11 ], [ 0, %bb12.preheader ] ; [#uses=2]
+ %tmp = add i32 %i.116, 1 ; [#uses=2]
+ %85 = getelementptr inbounds %struct.btRigidBody* %84, i32 0, i32 21, i32 3 ; [#uses=1]
+ %86 = load %struct.btTypedConstraint*** %85, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btTypedConstraint** %86, i32 %i.116 ; [#uses=1]
+ %87 = load %struct.btTypedConstraint** %scevgep, align 4 ; [#uses=1]
+ %88 = icmp eq %struct.btTypedConstraint* %87, %this ; [#uses=1]
+ br i1 %88, label %bb10, label %bb11
+
+bb10: ; preds = %bb8
+ store i32 1, i32* %66, align 4
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb8
+ %89 = load %struct.btRigidBody** %14, align 4 ; [#uses=2]
+ %90 = getelementptr inbounds %struct.btRigidBody* %89, i32 0, i32 21, i32 1 ; [#uses=1]
+ %91 = load i32* %90, align 4 ; [#uses=1]
+ %92 = icmp sgt i32 %91, %tmp ; [#uses=1]
+ br i1 %92, label %bb8, label %bb14
+
+bb14: ; preds = %bb11, %bb12.preheader
+ ret i8* getelementptr inbounds ([22 x i8]* @.str1021, i32 0, i32 0)
+}
+
+; [#uses=0]
+define void @_ZN17btTypedConstraintC1E21btTypedConstraintTypeR11btRigidBodyS2_(%struct.btTypedConstraint* nocapture %this, i32 %type, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i32 %type, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV17btTypedConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i32 -1, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 0, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btRigidBody* %rbA, %struct.btRigidBody** %5, align 4
+ %6 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.btRigidBody* %rbB, %struct.btRigidBody** %6, align 4
+ %7 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %8, align 4
+ ret void
+}
+
+; [#uses=5]
+define float @_ZN17btTypedConstraint14getMotorFactorEfffff(%struct.btTypedConstraint* nocapture %this, float %pos, float %lowLim, float %uppLim, float %vel, float %timeFact) nounwind readnone align 2 {
+entry:
+ %0 = fcmp ogt float %lowLim, %uppLim ; [#uses=1]
+ br i1 %0, label %bb19, label %bb1
+
+bb1: ; preds = %entry
+ %1 = fcmp oeq float %lowLim, %uppLim ; [#uses=1]
+ br i1 %1, label %bb19, label %bb3
+
+bb3: ; preds = %bb1
+ %2 = fdiv float %vel, %timeFact ; [#uses=6]
+ %3 = fcmp olt float %2, 0.000000e+00 ; [#uses=1]
+ br i1 %3, label %bb4, label %bb10
+
+bb4: ; preds = %bb3
+ %4 = fcmp ult float %pos, %lowLim ; [#uses=1]
+ br i1 %4, label %bb7, label %bb5
+
+bb5: ; preds = %bb4
+ %5 = fsub float %lowLim, %2 ; [#uses=1]
+ %6 = fcmp ule float %5, %pos ; [#uses=1]
+ br i1 %6, label %bb7, label %bb6
+
+bb6: ; preds = %bb5
+ %7 = fsub float %lowLim, %pos ; [#uses=1]
+ %8 = fdiv float %7, %2 ; [#uses=1]
+ ret float %8
+
+bb7: ; preds = %bb5, %bb4
+ %9 = fcmp olt float %pos, %lowLim ; [#uses=1]
+ %retval = select i1 %9, float 0.000000e+00, float 1.000000e+00 ; [#uses=1]
+ ret float %retval
+
+bb10: ; preds = %bb3
+ %10 = fcmp ogt float %2, 0.000000e+00 ; [#uses=1]
+ br i1 %10, label %bb11, label %bb19
+
+bb11: ; preds = %bb10
+ %11 = fcmp ugt float %pos, %uppLim ; [#uses=1]
+ br i1 %11, label %bb14, label %bb12
+
+bb12: ; preds = %bb11
+ %12 = fsub float %uppLim, %2 ; [#uses=1]
+ %13 = fcmp uge float %12, %pos ; [#uses=1]
+ br i1 %13, label %bb14, label %bb13
+
+bb13: ; preds = %bb12
+ %14 = fsub float %uppLim, %pos ; [#uses=1]
+ %15 = fdiv float %14, %2 ; [#uses=1]
+ ret float %15
+
+bb14: ; preds = %bb12, %bb11
+ %16 = fcmp ogt float %pos, %uppLim ; [#uses=1]
+ %retval21 = select i1 %16, float 0.000000e+00, float 1.000000e+00 ; [#uses=1]
+ ret float %retval21
+
+bb19: ; preds = %bb10, %bb1, %entry
+ %.0 = phi float [ 1.000000e+00, %entry ], [ 0.000000e+00, %bb1 ], [ 0.000000e+00, %bb10 ] ; [#uses=1]
+ ret float %.0
+}
+
+; [#uses=4]
+define %struct.btRigidBody* @_ZN17btTypedConstraint12getFixedBodyEv() align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = load i8* bitcast (i64* @_ZGVZN17btTypedConstraint12getFixedBodyEvE7s_fixed to i8*), align 8 ; [#uses=1]
+ %3 = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb, label %bb9
+
+bb: ; preds = %entry
+ %4 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN17btTypedConstraint12getFixedBodyEvE7s_fixed) nounwind ; [#uses=1]
+ %5 = icmp eq i32 %4, 0 ; [#uses=1]
+ br i1 %5, label %bb9, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 8
+ %7 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 8
+ %9 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ invoke void @_ZN11btRigidBodyC1EfP13btMotionStateP16btCollisionShapeRK9btVector3(%struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, float 0.000000e+00, %struct.btActionInterface* null, %struct.btCollisionShape* null, %struct.btQuadWord* %1)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb1
+ call void @__cxa_guard_release(i64* @_ZGVZN17btTypedConstraint12getFixedBodyEvE7s_fixed) nounwind
+ %10 = call i32 @__cxa_atexit(void (i8*)* @__tcf_016, i8* null, i8* bitcast (i8** @__dso_handle to i8*)) nounwind ; [#uses=0]
+ br label %bb9
+
+bb9: ; preds = %invcont, %bb, %entry
+ %11 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 8
+ %12 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 8
+ %14 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ call void @_ZN11btRigidBody12setMassPropsEfRK9btVector3(%struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, float 0.000000e+00, %struct.btQuadWord* %0)
+ ret %struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed
+
+lpad: ; preds = %bb1
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select12 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ call void @__cxa_guard_abort(i64* @_ZGVZN17btTypedConstraint12getFixedBodyEvE7s_fixed) nounwind
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define internal void @__tcf_016(i8* nocapture %unnamed_arg) {
+entry:
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV11btRigidBody, i32 0, i32 2), i32 (...)*** getelementptr inbounds (%struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, i32 0, i32 0, i32 0), align 32
+ %0 = load %struct.btTypedConstraint*** getelementptr inbounds (%struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 3), align 4 ; [#uses=2]
+ %1 = icmp eq %struct.btTypedConstraint** %0, null ; [#uses=1]
+ br i1 %1, label %_ZN11btRigidBodyD1Ev.exit, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %entry
+ %2 = load i8* getelementptr inbounds (%struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 4), align 4 ; [#uses=1]
+ %toBool.i.i.i.i = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i, label %bb2.i.i.i.i, label %bb1.i.i.i.i
+
+bb1.i.i.i.i: ; preds = %bb.i.i.i.i
+ %3 = bitcast %struct.btTypedConstraint** %0 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %3)
+ to label %bb2.i.i.i.i unwind label %lpad.i
+
+bb2.i.i.i.i: ; preds = %bb1.i.i.i.i, %bb.i.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** getelementptr inbounds (%struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 3), align 4
+ br label %_ZN11btRigidBodyD1Ev.exit
+
+invcont1.i: ; preds = %lpad.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ unreachable
+
+lpad.i: ; preds = %bb1.i.i.i.i
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* getelementptr inbounds (%struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, i32 0, i32 0))
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN11btRigidBodyD1Ev.exit: ; preds = %bb2.i.i.i.i, %entry
+ store i8 1, i8* getelementptr inbounds (%struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 4), align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** getelementptr inbounds (%struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 3), align 4
+ store i32 0, i32* getelementptr inbounds (%struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 1), align 4
+ store i32 0, i32* getelementptr inbounds (%struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 2), align 4
+ tail call void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* getelementptr inbounds (%struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, i32 0, i32 0))
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN17btTypedConstraintC1E21btTypedConstraintTypeR11btRigidBody(%struct.btTypedConstraint* nocapture %this, i32 %type, %struct.btRigidBody* %rbA) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i32 %type, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([13 x i32 (...)*]* @_ZTV17btTypedConstraint, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 3, i32 0 ; [#uses=1]
+ store i32 -1, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 0, i8* %4, align 4
+ %5 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.btRigidBody* %rbA, %struct.btRigidBody** %5, align 4
+ %6 = tail call %struct.btRigidBody* @_ZN17btTypedConstraint12getFixedBodyEv() ; [#uses=0]
+ %7 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.btRigidBody* @_ZZN17btTypedConstraint12getFixedBodyEvE7s_fixed, %struct.btRigidBody** %7, align 4
+ %8 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btTypedConstraint* %this, i32 0, i32 8 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btUniversalConstraintC2ER11btRigidBodyS1_R9btVector3S3_S3_(%struct.btUniversalConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btQuadWord* nocapture %anchor, %struct.btQuadWord* nocapture %axis1, %struct.btQuadWord* nocapture %axis2) align 2 {
+invcont3:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = call %struct.btTransform* @_ZN11btTransform11getIdentityEv() ; [#uses=0]
+ %3 = call %struct.btTransform* @_ZN11btTransform11getIdentityEv() ; [#uses=0]
+ %4 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN23btGeneric6DofConstraintC2ER11btRigidBodyS1_RK11btTransformS4_b(%struct.btGeneric6DofConstraint* %4, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, %struct.btTransform* @_ZZN11btTransform11getIdentityEvE17identityTransform, i8 zeroext 1)
+ %5 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV21btUniversalConstraint, i32 0, i32 2), i32 (...)*** %5, align 4
+ %6 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %anchor, i32 0, i32 0, i32 0 ; [#uses=2]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %anchor, i32 0, i32 0, i32 1 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %anchor, i32 0, i32 0, i32 2 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %anchor, i32 0, i32 0, i32 3 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %axis1, i32 0, i32 0, i32 0 ; [#uses=3]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %axis1, i32 0, i32 0, i32 1 ; [#uses=3]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %axis1, i32 0, i32 0, i32 2 ; [#uses=3]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %axis1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btQuadWord* %axis2, i32 0, i32 0, i32 0 ; [#uses=3]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %axis2, i32 0, i32 0, i32 1 ; [#uses=3]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ store float %35, float* %33, align 4
+ %36 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btQuadWord* %axis2, i32 0, i32 0, i32 2 ; [#uses=3]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuadWord* %axis2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ store float %41, float* %39, align 4
+ %42 = load float* %19, align 4 ; [#uses=3]
+ %43 = fmul float %42, %42 ; [#uses=1]
+ %44 = load float* %22, align 4 ; [#uses=3]
+ %45 = fmul float %44, %44 ; [#uses=1]
+ %46 = fadd float %43, %45 ; [#uses=1]
+ %47 = load float* %25, align 4 ; [#uses=3]
+ %48 = fmul float %47, %47 ; [#uses=1]
+ %49 = fadd float %46, %48 ; [#uses=1]
+ %50 = call float @sqrtf(float %49) nounwind readonly ; [#uses=1]
+ %51 = fdiv float 1.000000e+00, %50 ; [#uses=3]
+ %52 = fmul float %42, %51 ; [#uses=9]
+ store float %52, float* %19, align 4
+ %53 = fmul float %44, %51 ; [#uses=9]
+ store float %53, float* %22, align 4
+ %54 = fmul float %47, %51 ; [#uses=9]
+ store float %54, float* %25, align 4
+ %55 = load float* %31, align 4 ; [#uses=3]
+ %56 = fmul float %55, %55 ; [#uses=1]
+ %57 = load float* %34, align 4 ; [#uses=3]
+ %58 = fmul float %57, %57 ; [#uses=1]
+ %59 = fadd float %56, %58 ; [#uses=1]
+ %60 = load float* %37, align 4 ; [#uses=3]
+ %61 = fmul float %60, %60 ; [#uses=1]
+ %62 = fadd float %59, %61 ; [#uses=1]
+ %63 = call float @sqrtf(float %62) nounwind readonly ; [#uses=1]
+ %64 = fdiv float 1.000000e+00, %63 ; [#uses=3]
+ %65 = fmul float %55, %64 ; [#uses=9]
+ store float %65, float* %31, align 4
+ %66 = fmul float %57, %64 ; [#uses=9]
+ store float %66, float* %34, align 4
+ %67 = fmul float %60, %64 ; [#uses=9]
+ store float %67, float* %37, align 4
+ %68 = fmul float %65, %53 ; [#uses=1]
+ %69 = fmul float %66, %52 ; [#uses=1]
+ %70 = fsub float %68, %69 ; [#uses=6]
+ %71 = fmul float %67, %52 ; [#uses=1]
+ %72 = fmul float %65, %54 ; [#uses=1]
+ %73 = fsub float %71, %72 ; [#uses=6]
+ %74 = fmul float %66, %54 ; [#uses=1]
+ %75 = fmul float %67, %53 ; [#uses=1]
+ %76 = fsub float %74, %75 ; [#uses=6]
+ %77 = load float* %7, align 4 ; [#uses=6]
+ %78 = load float* %10, align 4 ; [#uses=6]
+ %79 = load float* %13, align 4 ; [#uses=6]
+ %80 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=5]
+ %90 = load float* %87, align 4 ; [#uses=5]
+ %91 = load float* %86, align 4 ; [#uses=5]
+ %92 = load float* %85, align 4 ; [#uses=5]
+ %93 = load float* %84, align 4 ; [#uses=5]
+ %94 = load float* %83, align 4 ; [#uses=5]
+ %95 = load float* %82, align 4 ; [#uses=5]
+ %96 = load float* %81, align 4 ; [#uses=5]
+ %97 = load float* %80, align 4 ; [#uses=5]
+ %98 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ %100 = fsub float -0.000000e+00, %99 ; [#uses=3]
+ %101 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fsub float -0.000000e+00, %102 ; [#uses=3]
+ %104 = getelementptr inbounds %struct.btRigidBody* %rbA, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ %106 = fsub float -0.000000e+00, %105 ; [#uses=3]
+ %107 = fmul float %90, %78 ; [#uses=1]
+ %108 = fmul float %89, %77 ; [#uses=1]
+ %109 = fmul float %93, %78 ; [#uses=1]
+ %110 = fmul float %92, %77 ; [#uses=1]
+ %111 = fmul float %96, %78 ; [#uses=1]
+ %112 = fmul float %95, %77 ; [#uses=1]
+ %113 = fmul float %95, %106 ; [#uses=1]
+ %114 = fmul float %96, %103 ; [#uses=1]
+ %115 = fmul float %92, %106 ; [#uses=1]
+ %116 = fmul float %93, %103 ; [#uses=1]
+ %117 = fmul float %89, %106 ; [#uses=1]
+ %118 = fmul float %90, %103 ; [#uses=1]
+ %119 = fmul float %73, %90 ; [#uses=1]
+ %120 = fmul float %76, %89 ; [#uses=1]
+ %121 = fmul float %66, %90 ; [#uses=1]
+ %122 = fmul float %65, %89 ; [#uses=1]
+ %123 = fmul float %53, %90 ; [#uses=1]
+ %124 = fmul float %52, %89 ; [#uses=1]
+ %125 = fmul float %73, %93 ; [#uses=1]
+ %126 = fmul float %76, %92 ; [#uses=1]
+ %127 = fmul float %66, %93 ; [#uses=1]
+ %128 = fmul float %65, %92 ; [#uses=1]
+ %129 = fmul float %53, %93 ; [#uses=1]
+ %130 = fmul float %52, %92 ; [#uses=1]
+ %131 = fmul float %73, %96 ; [#uses=1]
+ %132 = fmul float %76, %95 ; [#uses=1]
+ %133 = fmul float %66, %96 ; [#uses=1]
+ %134 = fmul float %65, %95 ; [#uses=1]
+ %135 = fmul float %53, %96 ; [#uses=1]
+ %136 = fmul float %52, %95 ; [#uses=1]
+ %137 = fmul float %91, %79 ; [#uses=1]
+ %138 = fadd float %108, %107 ; [#uses=1]
+ %139 = fmul float %94, %79 ; [#uses=1]
+ %140 = fadd float %110, %109 ; [#uses=1]
+ %141 = fmul float %97, %79 ; [#uses=1]
+ %142 = fadd float %112, %111 ; [#uses=1]
+ %143 = fadd float %113, %114 ; [#uses=1]
+ %144 = fmul float %97, %100 ; [#uses=1]
+ %145 = fadd float %115, %116 ; [#uses=1]
+ %146 = fmul float %94, %100 ; [#uses=1]
+ %147 = fadd float %117, %118 ; [#uses=1]
+ %148 = fmul float %91, %100 ; [#uses=1]
+ %149 = fmul float %70, %91 ; [#uses=1]
+ %150 = fadd float %120, %119 ; [#uses=1]
+ %151 = fmul float %67, %91 ; [#uses=1]
+ %152 = fadd float %122, %121 ; [#uses=1]
+ %153 = fmul float %54, %91 ; [#uses=1]
+ %154 = fadd float %124, %123 ; [#uses=1]
+ %155 = fmul float %70, %94 ; [#uses=1]
+ %156 = fadd float %126, %125 ; [#uses=1]
+ %157 = fmul float %67, %94 ; [#uses=1]
+ %158 = fadd float %128, %127 ; [#uses=1]
+ %159 = fmul float %54, %94 ; [#uses=1]
+ %160 = fadd float %130, %129 ; [#uses=1]
+ %161 = fmul float %70, %97 ; [#uses=1]
+ %162 = fadd float %132, %131 ; [#uses=1]
+ %163 = fmul float %67, %97 ; [#uses=1]
+ %164 = fadd float %134, %133 ; [#uses=1]
+ %165 = fmul float %54, %97 ; [#uses=1]
+ %166 = fadd float %136, %135 ; [#uses=1]
+ %167 = fadd float %138, %137 ; [#uses=1]
+ %168 = fadd float %140, %139 ; [#uses=1]
+ %169 = fadd float %142, %141 ; [#uses=1]
+ %170 = fadd float %143, %144 ; [#uses=1]
+ %171 = fadd float %145, %146 ; [#uses=1]
+ %172 = fadd float %147, %148 ; [#uses=1]
+ %173 = fadd float %150, %149 ; [#uses=1]
+ %174 = fadd float %152, %151 ; [#uses=1]
+ %175 = fadd float %154, %153 ; [#uses=1]
+ %176 = fadd float %156, %155 ; [#uses=1]
+ %177 = fadd float %158, %157 ; [#uses=1]
+ %178 = fadd float %160, %159 ; [#uses=1]
+ %179 = fadd float %162, %161 ; [#uses=1]
+ %180 = fadd float %164, %163 ; [#uses=1]
+ %181 = fadd float %166, %165 ; [#uses=1]
+ %182 = fadd float %167, %172 ; [#uses=1]
+ %183 = fadd float %168, %171 ; [#uses=1]
+ %184 = fadd float %169, %170 ; [#uses=1]
+ %185 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %173, float* %185, align 4
+ %186 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %174, float* %186, align 4
+ %187 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %175, float* %187, align 4
+ %188 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %188, align 4
+ %189 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %176, float* %189, align 4
+ %190 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %177, float* %190, align 4
+ %191 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %178, float* %191, align 4
+ %192 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %192, align 4
+ %193 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %179, float* %193, align 4
+ %194 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %180, float* %194, align 4
+ %195 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %181, float* %195, align 4
+ %196 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %196, align 4
+ %197 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %182, float* %197, align 4
+ %198 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %183, float* %198, align 4
+ %199 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %184, float* %199, align 4
+ %200 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %200, align 4
+ %201 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %202 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %203 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %205 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %206 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %207 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %209 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %210 = load float* %209, align 4 ; [#uses=5]
+ %211 = load float* %208, align 4 ; [#uses=5]
+ %212 = load float* %207, align 4 ; [#uses=5]
+ %213 = load float* %206, align 4 ; [#uses=5]
+ %214 = load float* %205, align 4 ; [#uses=5]
+ %215 = load float* %204, align 4 ; [#uses=5]
+ %216 = load float* %203, align 4 ; [#uses=5]
+ %217 = load float* %202, align 4 ; [#uses=5]
+ %218 = load float* %201, align 4 ; [#uses=5]
+ %219 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %220 = load float* %219, align 4 ; [#uses=1]
+ %221 = fsub float -0.000000e+00, %220 ; [#uses=3]
+ %222 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %223 = load float* %222, align 4 ; [#uses=1]
+ %224 = fsub float -0.000000e+00, %223 ; [#uses=3]
+ %225 = getelementptr inbounds %struct.btRigidBody* %rbB, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %226 = load float* %225, align 4 ; [#uses=1]
+ %227 = fsub float -0.000000e+00, %226 ; [#uses=3]
+ %228 = fmul float %211, %78 ; [#uses=1]
+ %229 = fmul float %210, %77 ; [#uses=1]
+ %230 = fmul float %214, %78 ; [#uses=1]
+ %231 = fmul float %213, %77 ; [#uses=1]
+ %232 = fmul float %217, %78 ; [#uses=1]
+ %233 = fmul float %216, %77 ; [#uses=1]
+ %234 = fmul float %216, %227 ; [#uses=1]
+ %235 = fmul float %217, %224 ; [#uses=1]
+ %236 = fmul float %213, %227 ; [#uses=1]
+ %237 = fmul float %214, %224 ; [#uses=1]
+ %238 = fmul float %210, %227 ; [#uses=1]
+ %239 = fmul float %211, %224 ; [#uses=1]
+ %240 = fmul float %73, %211 ; [#uses=1]
+ %241 = fmul float %76, %210 ; [#uses=1]
+ %242 = fmul float %66, %211 ; [#uses=1]
+ %243 = fmul float %65, %210 ; [#uses=1]
+ %244 = fmul float %53, %211 ; [#uses=1]
+ %245 = fmul float %52, %210 ; [#uses=1]
+ %246 = fmul float %73, %214 ; [#uses=1]
+ %247 = fmul float %76, %213 ; [#uses=1]
+ %248 = fmul float %66, %214 ; [#uses=1]
+ %249 = fmul float %65, %213 ; [#uses=1]
+ %250 = fmul float %53, %214 ; [#uses=1]
+ %251 = fmul float %52, %213 ; [#uses=1]
+ %252 = fmul float %73, %217 ; [#uses=1]
+ %253 = fmul float %76, %216 ; [#uses=1]
+ %254 = fmul float %66, %217 ; [#uses=1]
+ %255 = fmul float %65, %216 ; [#uses=1]
+ %256 = fmul float %53, %217 ; [#uses=1]
+ %257 = fmul float %52, %216 ; [#uses=1]
+ %258 = fmul float %212, %79 ; [#uses=1]
+ %259 = fadd float %229, %228 ; [#uses=1]
+ %260 = fmul float %215, %79 ; [#uses=1]
+ %261 = fadd float %231, %230 ; [#uses=1]
+ %262 = fmul float %218, %79 ; [#uses=1]
+ %263 = fadd float %233, %232 ; [#uses=1]
+ %264 = fadd float %234, %235 ; [#uses=1]
+ %265 = fmul float %218, %221 ; [#uses=1]
+ %266 = fadd float %236, %237 ; [#uses=1]
+ %267 = fmul float %215, %221 ; [#uses=1]
+ %268 = fadd float %238, %239 ; [#uses=1]
+ %269 = fmul float %212, %221 ; [#uses=1]
+ %270 = fmul float %70, %212 ; [#uses=1]
+ %271 = fadd float %241, %240 ; [#uses=1]
+ %272 = fmul float %67, %212 ; [#uses=1]
+ %273 = fadd float %243, %242 ; [#uses=1]
+ %274 = fmul float %54, %212 ; [#uses=1]
+ %275 = fadd float %245, %244 ; [#uses=1]
+ %276 = fmul float %70, %215 ; [#uses=1]
+ %277 = fadd float %247, %246 ; [#uses=1]
+ %278 = fmul float %67, %215 ; [#uses=1]
+ %279 = fadd float %249, %248 ; [#uses=1]
+ %280 = fmul float %54, %215 ; [#uses=1]
+ %281 = fadd float %251, %250 ; [#uses=1]
+ %282 = fmul float %70, %218 ; [#uses=1]
+ %283 = fadd float %253, %252 ; [#uses=1]
+ %284 = fmul float %67, %218 ; [#uses=1]
+ %285 = fadd float %255, %254 ; [#uses=1]
+ %286 = fmul float %54, %218 ; [#uses=1]
+ %287 = fadd float %257, %256 ; [#uses=1]
+ %288 = fadd float %259, %258 ; [#uses=1]
+ %289 = fadd float %261, %260 ; [#uses=1]
+ %290 = fadd float %263, %262 ; [#uses=1]
+ %291 = fadd float %264, %265 ; [#uses=1]
+ %292 = fadd float %266, %267 ; [#uses=1]
+ %293 = fadd float %268, %269 ; [#uses=1]
+ %294 = fadd float %271, %270 ; [#uses=1]
+ %295 = fadd float %273, %272 ; [#uses=1]
+ %296 = fadd float %275, %274 ; [#uses=1]
+ %297 = fadd float %277, %276 ; [#uses=1]
+ %298 = fadd float %279, %278 ; [#uses=1]
+ %299 = fadd float %281, %280 ; [#uses=1]
+ %300 = fadd float %283, %282 ; [#uses=1]
+ %301 = fadd float %285, %284 ; [#uses=1]
+ %302 = fadd float %287, %286 ; [#uses=1]
+ %303 = fadd float %288, %293 ; [#uses=1]
+ %304 = fadd float %289, %292 ; [#uses=1]
+ %305 = fadd float %290, %291 ; [#uses=1]
+ %306 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %294, float* %306, align 4
+ %307 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %295, float* %307, align 4
+ %308 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %296, float* %308, align 4
+ %309 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %309, align 4
+ %310 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %297, float* %310, align 4
+ %311 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %298, float* %311, align 4
+ %312 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %299, float* %312, align 4
+ %313 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %313, align 4
+ %314 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %300, float* %314, align 4
+ %315 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %301, float* %315, align 4
+ %316 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %302, float* %316, align 4
+ %317 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %317, align 4
+ %318 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %303, float* %318, align 4
+ %319 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %304, float* %319, align 4
+ %320 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %305, float* %320, align 4
+ %321 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %321, align 4
+ %322 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 5, i32 0, i32 0, i32 0 ; [#uses=1]
+ %323 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %324 = bitcast float* %322 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %324, i8 0, i64 32, i32 4, i1 false)
+ store float 0.000000e+00, float* %323, align 8
+ %325 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0xBFF8F905A0000000, float* %325, align 4
+ %326 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0xC0090D8080000000, float* %326, align 8
+ %327 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %327, align 4
+ br label %bb.i9
+
+bb.i9: ; preds = %_Z16btNormalizeAnglef.exit.i14.bb.i9_crit_edge, %invcont3
+ %328 = phi float [ 0.000000e+00, %invcont3 ], [ %.pre, %_Z16btNormalizeAnglef.exit.i14.bb.i9_crit_edge ] ; [#uses=1]
+ %i.03.i7 = phi i32 [ 0, %invcont3 ], [ %335, %_Z16btNormalizeAnglef.exit.i14.bb.i9_crit_edge ] ; [#uses=2]
+ %scevgep4.i8 = getelementptr %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 6, i32 %i.03.i7, i32 0 ; [#uses=1]
+ %329 = call float @fmodf(float %328, float 0x401921FB60000000) nounwind readonly ; [#uses=5]
+ %330 = fcmp olt float %329, 0xC00921FB60000000 ; [#uses=1]
+ br i1 %330, label %bb.i.i10, label %bb1.i.i11
+
+bb.i.i10: ; preds = %bb.i9
+ %331 = fadd float %329, 0x401921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit.i14
+
+bb1.i.i11: ; preds = %bb.i9
+ %332 = fcmp ogt float %329, 0x400921FB60000000 ; [#uses=1]
+ br i1 %332, label %bb2.i.i12, label %_Z16btNormalizeAnglef.exit.i14
+
+bb2.i.i12: ; preds = %bb1.i.i11
+ %333 = fadd float %329, 0xC01921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit.i14
+
+_Z16btNormalizeAnglef.exit.i14: ; preds = %bb2.i.i12, %bb1.i.i11, %bb.i.i10
+ %334 = phi float [ %333, %bb2.i.i12 ], [ %331, %bb.i.i10 ], [ %329, %bb1.i.i11 ] ; [#uses=1]
+ store float %334, float* %scevgep4.i8, align 4
+ %335 = add nsw i32 %i.03.i7, 1 ; [#uses=3]
+ %exitcond109 = icmp eq i32 %335, 3 ; [#uses=1]
+ br i1 %exitcond109, label %_ZN23btGeneric6DofConstraint20setAngularLowerLimitERK9btVector3.exit, label %_Z16btNormalizeAnglef.exit.i14.bb.i9_crit_edge
+
+_Z16btNormalizeAnglef.exit.i14.bb.i9_crit_edge: ; preds = %_Z16btNormalizeAnglef.exit.i14
+ %scevgep5.i.phi.trans.insert = getelementptr %struct.btQuadWord* %1, i32 0, i32 0, i32 %335 ; [#uses=1]
+ %.pre = load float* %scevgep5.i.phi.trans.insert, align 4 ; [#uses=1]
+ br label %bb.i9
+
+_ZN23btGeneric6DofConstraint20setAngularLowerLimitERK9btVector3.exit: ; preds = %_Z16btNormalizeAnglef.exit.i14
+ %336 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %336, align 8
+ %337 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0x3FF8F905A0000000, float* %337, align 4
+ %338 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0x40090D8080000000, float* %338, align 8
+ %339 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %339, align 4
+ br label %bb.i
+
+bb.i: ; preds = %_Z16btNormalizeAnglef.exit.i.bb.i_crit_edge, %_ZN23btGeneric6DofConstraint20setAngularLowerLimitERK9btVector3.exit
+ %340 = phi float [ 0.000000e+00, %_ZN23btGeneric6DofConstraint20setAngularLowerLimitERK9btVector3.exit ], [ %.pre112, %_Z16btNormalizeAnglef.exit.i.bb.i_crit_edge ] ; [#uses=1]
+ %i.03.i = phi i32 [ 0, %_ZN23btGeneric6DofConstraint20setAngularLowerLimitERK9btVector3.exit ], [ %347, %_Z16btNormalizeAnglef.exit.i.bb.i_crit_edge ] ; [#uses=2]
+ %scevgep.i = getelementptr %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 6, i32 %i.03.i, i32 1 ; [#uses=1]
+ %341 = call float @fmodf(float %340, float 0x401921FB60000000) nounwind readonly ; [#uses=5]
+ %342 = fcmp olt float %341, 0xC00921FB60000000 ; [#uses=1]
+ br i1 %342, label %bb.i.i, label %bb1.i.i
+
+bb.i.i: ; preds = %bb.i
+ %343 = fadd float %341, 0x401921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit.i
+
+bb1.i.i: ; preds = %bb.i
+ %344 = fcmp ogt float %341, 0x400921FB60000000 ; [#uses=1]
+ br i1 %344, label %bb2.i.i, label %_Z16btNormalizeAnglef.exit.i
+
+bb2.i.i: ; preds = %bb1.i.i
+ %345 = fadd float %341, 0xC01921FB60000000 ; [#uses=1]
+ br label %_Z16btNormalizeAnglef.exit.i
+
+_Z16btNormalizeAnglef.exit.i: ; preds = %bb2.i.i, %bb1.i.i, %bb.i.i
+ %346 = phi float [ %345, %bb2.i.i ], [ %343, %bb.i.i ], [ %341, %bb1.i.i ] ; [#uses=1]
+ store float %346, float* %scevgep.i, align 4
+ %347 = add nsw i32 %i.03.i, 1 ; [#uses=3]
+ %exitcond = icmp eq i32 %347, 3 ; [#uses=1]
+ br i1 %exitcond, label %_ZN23btGeneric6DofConstraint20setAngularUpperLimitERK9btVector3.exit, label %_Z16btNormalizeAnglef.exit.i.bb.i_crit_edge
+
+_Z16btNormalizeAnglef.exit.i.bb.i_crit_edge: ; preds = %_Z16btNormalizeAnglef.exit.i
+ %scevgep4.i.phi.trans.insert = getelementptr %struct.btQuadWord* %0, i32 0, i32 0, i32 %347 ; [#uses=1]
+ %.pre112 = load float* %scevgep4.i.phi.trans.insert, align 4 ; [#uses=1]
+ br label %bb.i
+
+_ZN23btGeneric6DofConstraint20setAngularUpperLimitERK9btVector3.exit: ; preds = %_Z16btNormalizeAnglef.exit.i
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btUniversalConstraintD0Ev(%struct.btUniversalConstraint* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV23btGeneric6DofConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btUniversalConstraint* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN21btUniversalConstraintD1Ev(%struct.btUniversalConstraint* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btUniversalConstraint* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([14 x i32 (...)*]* @_ZTV23btGeneric6DofConstraint, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btUniversalConstraintC1ER11btRigidBodyS1_R9btVector3S3_S3_(%struct.btUniversalConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btQuadWord* nocapture %anchor, %struct.btQuadWord* nocapture %axis1, %struct.btQuadWord* nocapture %axis2) align 2 {
+entry:
+ tail call void @_ZN21btUniversalConstraintC2ER11btRigidBodyS1_R9btVector3S3_S3_(%struct.btUniversalConstraint* %this, %struct.btRigidBody* %rbA, %struct.btRigidBody* %rbB, %struct.btQuadWord* %anchor, %struct.btQuadWord* %axis1, %struct.btQuadWord* %axis2)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN25btContinuousDynamicsWorldC2EP12btDispatcherP21btBroadphaseInterfaceP18btConstraintSolverP24btCollisionConfiguration(%struct.btContinuousDynamicsWorld* %this, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %constraintSolver, %struct.btActionInterface* %collisionConfiguration) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN23btDiscreteDynamicsWorldC2EP12btDispatcherP21btBroadphaseInterfaceP18btConstraintSolverP24btCollisionConfiguration(%struct.btDiscreteDynamicsWorld* %0, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %constraintSolver, %struct.btActionInterface* %collisionConfiguration)
+ %1 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([46 x i32 (...)*]* @_ZTV25btContinuousDynamicsWorld, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btDiscreteDynamicsWorld11setNumTasksEi(%struct.btDiscreteDynamicsWorld* nocapture %this, i32 %numTasks) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK25btContinuousDynamicsWorld12getWorldTypeEv(%struct.btContinuousDynamicsWorld* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 3
+}
+
+; [#uses=1]
+define void @_ZN25btContinuousDynamicsWorld19updateTemporalAabbsEf(%struct.btContinuousDynamicsWorld* nocapture %this, float %timeStep) align 2 {
+entry:
+ %temporalAabbMin = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %temporalAabbMax = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %0 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %bb16
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMax, i32 0, i32 0, i32 0 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMax, i32 0, i32 0, i32 1 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMax, i32 0, i32 0, i32 2 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMin, i32 0, i32 0, i32 0 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMin, i32 0, i32 0, i32 1 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMin, i32 0, i32 0, i32 2 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %temporalAabbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 5 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb13, %bb.nph
+ %i.031 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb13 ] ; [#uses=2]
+ %tmp = add i32 %i.031, 1 ; [#uses=2]
+ %14 = load %struct.btCollisionObject*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %14, i32 %i.031 ; [#uses=1]
+ %15 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=8]
+ %16 = getelementptr inbounds %struct.btCollisionObject* %15, i32 0, i32 19 ; [#uses=1]
+ %17 = load i32* %16, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %17, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ %18 = icmp eq %struct.btCollisionObject* %15, null ; [#uses=1]
+ %or.cond = or i1 %toBool.i, %18 ; [#uses=1]
+ br i1 %or.cond, label %bb13, label %bb1
+
+bb1: ; preds = %bb
+ %19 = getelementptr inbounds %struct.btCollisionObject* %15, i32 0, i32 9 ; [#uses=1]
+ %20 = load %struct.btCollisionShape** %19, align 4 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btCollisionShape* %20, i32 0, i32 0 ; [#uses=1]
+ %22 = load i32 (...)*** %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds i32 (...)** %22, i32 2 ; [#uses=1]
+ %24 = load i32 (...)** %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btCollisionObject* %15, i32 0, i32 1 ; [#uses=1]
+ %26 = bitcast i32 (...)* %24 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %26(%struct.btCollisionShape* %20, %struct.btTransform* %25, %struct.btQuadWord* %temporalAabbMin, %struct.btQuadWord* %temporalAabbMax)
+ %27 = load float* %4, align 8 ; [#uses=2]
+ %28 = load float* %5, align 4 ; [#uses=2]
+ %29 = load float* %6, align 8 ; [#uses=2]
+ %30 = load float* %7, align 8 ; [#uses=2]
+ %31 = load float* %8, align 4 ; [#uses=2]
+ %32 = load float* %9, align 8 ; [#uses=2]
+ %33 = getelementptr inbounds %struct.btCollisionObject* %15, i32 1, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fmul float %34, %timeStep ; [#uses=3]
+ %36 = getelementptr inbounds %struct.btCollisionObject* %15, i32 1, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fmul float %37, %timeStep ; [#uses=3]
+ %39 = getelementptr inbounds %struct.btCollisionObject* %15, i32 1, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fmul float %40, %timeStep ; [#uses=3]
+ %42 = fcmp ogt float %41, 0.000000e+00 ; [#uses=1]
+ br i1 %42, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ %43 = fadd float %41, %27 ; [#uses=1]
+ br label %bb4
+
+bb3: ; preds = %bb1
+ %44 = fadd float %41, %30 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %temporalAabbMinx.0 = phi float [ %30, %bb2 ], [ %44, %bb3 ] ; [#uses=1]
+ %temporalAabbMaxx.0 = phi float [ %43, %bb2 ], [ %27, %bb3 ] ; [#uses=1]
+ %45 = fcmp ogt float %38, 0.000000e+00 ; [#uses=1]
+ br i1 %45, label %bb6, label %bb7
+
+bb6: ; preds = %bb4
+ %46 = fadd float %38, %28 ; [#uses=1]
+ br label %bb8
+
+bb7: ; preds = %bb4
+ %47 = fadd float %38, %31 ; [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb6
+ %temporalAabbMiny.0 = phi float [ %31, %bb6 ], [ %47, %bb7 ] ; [#uses=1]
+ %temporalAabbMaxy.0 = phi float [ %46, %bb6 ], [ %28, %bb7 ] ; [#uses=1]
+ %48 = fcmp ogt float %35, 0.000000e+00 ; [#uses=1]
+ br i1 %48, label %bb10, label %bb11
+
+bb10: ; preds = %bb8
+ %49 = fadd float %35, %29 ; [#uses=1]
+ br label %bb12
+
+bb11: ; preds = %bb8
+ %50 = fadd float %35, %32 ; [#uses=1]
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb10
+ %temporalAabbMaxz.0 = phi float [ %49, %bb10 ], [ %29, %bb11 ] ; [#uses=1]
+ %temporalAabbMinz.0 = phi float [ %32, %bb10 ], [ %50, %bb11 ] ; [#uses=1]
+ store float %temporalAabbMinx.0, float* %7, align 8
+ store float %temporalAabbMiny.0, float* %8, align 4
+ store float %temporalAabbMinz.0, float* %9, align 8
+ store float 0.000000e+00, float* %10, align 4
+ store float 0.000000e+00, float* %11, align 4
+ %51 = fadd float %temporalAabbMaxx.0, 0.000000e+00 ; [#uses=1]
+ store float %51, float* %4, align 8
+ %52 = fadd float %temporalAabbMaxy.0, 0.000000e+00 ; [#uses=1]
+ store float %52, float* %5, align 4
+ %53 = fadd float %temporalAabbMaxz.0, 0.000000e+00 ; [#uses=1]
+ store float %53, float* %6, align 8
+ %54 = load %struct.btActionInterface** %12, align 4 ; [#uses=2]
+ %55 = getelementptr inbounds %struct.btActionInterface* %54, i32 0, i32 0 ; [#uses=1]
+ %56 = load i32 (...)*** %55, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds i32 (...)** %56, i32 4 ; [#uses=1]
+ %58 = load i32 (...)** %57, align 4 ; [#uses=1]
+ %59 = load %struct.btActionInterface** %13, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btCollisionObject* %15, i32 0, i32 8 ; [#uses=1]
+ %61 = load %struct.btBroadphaseProxy** %60, align 4 ; [#uses=1]
+ %62 = bitcast i32 (...)* %58 to void (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* ; [#uses=1]
+ call void %62(%struct.btActionInterface* %54, %struct.btBroadphaseProxy* %61, %struct.btQuadWord* %temporalAabbMin, %struct.btQuadWord* %temporalAabbMax, %struct.btActionInterface* %59)
+ br label %bb13
+
+bb13: ; preds = %bb12, %bb
+ %63 = load i32* %0, align 4 ; [#uses=1]
+ %64 = icmp sgt i32 %63, %tmp ; [#uses=1]
+ br i1 %64, label %bb, label %bb16
+
+bb16: ; preds = %bb13, %entry
+ %65 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 5 ; [#uses=1]
+ %66 = load %struct.btActionInterface** %65, align 4 ; [#uses=2]
+ %67 = getelementptr inbounds %struct.btActionInterface* %66, i32 0, i32 0 ; [#uses=1]
+ %68 = load i32 (...)*** %67, align 4 ; [#uses=1]
+ %69 = getelementptr inbounds i32 (...)** %68, i32 8 ; [#uses=1]
+ %70 = load i32 (...)** %69, align 4 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %72 = load %struct.btActionInterface** %71, align 4 ; [#uses=1]
+ %73 = bitcast i32 (...)* %70 to void (%struct.btActionInterface*, %struct.btActionInterface*)* ; [#uses=1]
+ call void %73(%struct.btActionInterface* %66, %struct.btActionInterface* %72)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btContinuousDynamicsWorld22calculateTimeOfImpactsEf(%struct.btContinuousDynamicsWorld* %this, float %timeStep) align 2 {
+entry:
+ tail call void @_ZN25btContinuousDynamicsWorld19updateTemporalAabbsEf(%struct.btContinuousDynamicsWorld* %this, float %timeStep)
+ %0 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 3, i32 0 ; [#uses=1]
+ store float %timeStep, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 3, i32 3 ; [#uses=1]
+ store float 1.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %2, align 4
+ %3 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 3, i32 2 ; [#uses=2]
+ store i32 2, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = load %struct.btActionInterface** %4, align 4 ; [#uses=4]
+ %6 = icmp eq %struct.btActionInterface* %5, null ; [#uses=1]
+ br i1 %6, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %7 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btActionInterface* %5, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 8 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 5 ; [#uses=1]
+ %13 = load %struct.btActionInterface** %12, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btActionInterface* %13, i32 0, i32 0 ; [#uses=1]
+ %15 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32 (...)** %15, i32 9 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = bitcast i32 (...)* %17 to %struct..0btMultiSapOverlapFilterCallback* (%struct.btActionInterface*)* ; [#uses=1]
+ %19 = tail call %struct..0btMultiSapOverlapFilterCallback* %18(%struct.btActionInterface* %13) ; [#uses=1]
+ %20 = bitcast i32 (...)* %11 to void (%struct.btActionInterface*, %struct..0btMultiSapOverlapFilterCallback*, %struct.btDispatcherInfo*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %20(%struct.btActionInterface* %5, %struct..0btMultiSapOverlapFilterCallback* %19, %struct.btDispatcherInfo* %7, %struct.btActionInterface* %5)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ store i32 1, i32* %3, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN23btDiscreteDynamicsWorld14updateVehiclesEf(%struct.btDiscreteDynamicsWorld* %this, float %timeStep) align 2 {
+entry:
+ tail call void @_ZN23btDiscreteDynamicsWorld13updateActionsEf(%struct.btDiscreteDynamicsWorld* %this, float %timeStep)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btContinuousDynamicsWorld28internalSingleStepSimulationEf(%struct.btContinuousDynamicsWorld* %this, float %timeStep) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0 ; [#uses=7]
+ tail call void @_ZN23btDiscreteDynamicsWorld14startProfilingEf(%struct.btDiscreteDynamicsWorld* %0, float %timeStep)
+ %1 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %2 = load void (%struct.btDynamicsWorld*, float)** %1, align 4 ; [#uses=2]
+ %3 = icmp eq void (%struct.btDynamicsWorld*, float)* %2, null ; [#uses=1]
+ br i1 %3, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void %2(%struct.btDynamicsWorld* %4, float %timeStep)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %5 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=8]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 2 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %10 = bitcast i32 (...)* %8 to void (%struct.btCollisionWorld*)* ; [#uses=1]
+ tail call void %10(%struct.btCollisionWorld* %9)
+ %11 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 33 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to void (%struct.btDiscreteDynamicsWorld*, float)* ; [#uses=1]
+ tail call void %14(%struct.btDiscreteDynamicsWorld* %0, float %timeStep)
+ %15 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 3, i32 0 ; [#uses=1]
+ store float %timeStep, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 4 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = bitcast i32 (...)* %19 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %21 = tail call %struct.btActionInterface* %20(%struct.btCollisionWorld* %9) ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 3, i32 5 ; [#uses=1]
+ store %struct.btActionInterface* %21, %struct.btActionInterface** %22, align 4
+ %23 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds i32 (...)** %23, i32 10 ; [#uses=1]
+ %25 = load i32 (...)** %24, align 4 ; [#uses=1]
+ %26 = bitcast i32 (...)* %25 to void (%struct.btCollisionWorld*)* ; [#uses=1]
+ tail call void %26(%struct.btCollisionWorld* %9)
+ %27 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds i32 (...)** %27, i32 35 ; [#uses=1]
+ %29 = load i32 (...)** %28, align 4 ; [#uses=1]
+ %30 = bitcast i32 (...)* %29 to void (%struct.btDiscreteDynamicsWorld*)* ; [#uses=1]
+ tail call void %30(%struct.btDiscreteDynamicsWorld* %0)
+ %31 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float %timeStep, float* %31, align 4
+ %32 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32 (...)** %32, i32 36 ; [#uses=1]
+ %34 = load i32 (...)** %33, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 4 ; [#uses=1]
+ %36 = bitcast i32 (...)* %34 to void (%struct.btDiscreteDynamicsWorld*, %struct.btContactSolverInfo*)* ; [#uses=1]
+ tail call void %36(%struct.btDiscreteDynamicsWorld* %0, %struct.btContactSolverInfo* %35)
+ %37 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32 (...)** %37, i32 43 ; [#uses=1]
+ %39 = load i32 (...)** %38, align 4 ; [#uses=1]
+ %40 = bitcast i32 (...)* %39 to void (%struct.btContinuousDynamicsWorld*, float)* ; [#uses=1]
+ tail call void %40(%struct.btContinuousDynamicsWorld* %this, float %timeStep)
+ %41 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 3, i32 3 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=3]
+ %43 = fcmp olt float %42, 0.000000e+00 ; [#uses=1]
+ br i1 %43, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ %44 = fpext float %42 to double ; [#uses=1]
+ %45 = tail call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([10 x i8]* @.str19, i32 0, i32 0), double %44) ; [#uses=0]
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1
+ %46 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds i32 (...)** %46, i32 34 ; [#uses=1]
+ %48 = load i32 (...)** %47, align 4 ; [#uses=1]
+ %49 = fmul float %42, %timeStep ; [#uses=1]
+ %50 = bitcast i32 (...)* %48 to void (%struct.btDiscreteDynamicsWorld*, float)* ; [#uses=1]
+ tail call void %50(%struct.btDiscreteDynamicsWorld* %0, float %49)
+ tail call void @_ZN23btDiscreteDynamicsWorld13updateActionsEf(%struct.btDiscreteDynamicsWorld* %0, float %timeStep)
+ tail call void @_ZN23btDiscreteDynamicsWorld21updateActivationStateEf(%struct.btDiscreteDynamicsWorld* %0, float %timeStep)
+ %51 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %52 = load void (%struct.btDynamicsWorld*, float)** %51, align 4 ; [#uses=2]
+ %53 = icmp eq void (%struct.btDynamicsWorld*, float)* %52, null ; [#uses=1]
+ br i1 %53, label %return, label %bb4
+
+bb4: ; preds = %bb3
+ %54 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void %52(%struct.btDynamicsWorld* %54, float %timeStep)
+ ret void
+
+return: ; preds = %bb3
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btContinuousDynamicsWorldD0Ev(%struct.btContinuousDynamicsWorld* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([46 x i32 (...)*]* @_ZTV25btContinuousDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN23btDiscreteDynamicsWorldD2Ev(%struct.btDiscreteDynamicsWorld* %1)
+ %2 = bitcast %struct.btContinuousDynamicsWorld* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN25btContinuousDynamicsWorldD1Ev(%struct.btContinuousDynamicsWorld* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([46 x i32 (...)*]* @_ZTV25btContinuousDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN23btDiscreteDynamicsWorldD2Ev(%struct.btDiscreteDynamicsWorld* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN25btContinuousDynamicsWorldD2Ev(%struct.btContinuousDynamicsWorld* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([46 x i32 (...)*]* @_ZTV25btContinuousDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN23btDiscreteDynamicsWorldD2Ev(%struct.btDiscreteDynamicsWorld* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN25btContinuousDynamicsWorldC1EP12btDispatcherP21btBroadphaseInterfaceP18btConstraintSolverP24btCollisionConfiguration(%struct.btContinuousDynamicsWorld* %this, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %constraintSolver, %struct.btActionInterface* %collisionConfiguration) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN23btDiscreteDynamicsWorldC2EP12btDispatcherP21btBroadphaseInterfaceP18btConstraintSolverP24btCollisionConfiguration(%struct.btDiscreteDynamicsWorld* %0, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %constraintSolver, %struct.btActionInterface* %collisionConfiguration)
+ %1 = getelementptr inbounds %struct.btContinuousDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([46 x i32 (...)*]* @_ZTV25btContinuousDynamicsWorld, i32 0, i32 2), i32 (...)*** %1, align 4
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN23btDiscreteDynamicsWorldC2EP12btDispatcherP21btBroadphaseInterfaceP18btConstraintSolverP24btCollisionConfiguration(%struct.btDiscreteDynamicsWorld* %this, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %constraintSolver, %struct.btActionInterface* %collisionConfiguration) align 2 {
+invcont2:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN16btCollisionWorldC2EP12btDispatcherP21btBroadphaseInterfaceP24btCollisionConfiguration(%struct.btCollisionWorld* %0, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %collisionConfiguration)
+ %1 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store void (%struct.btDynamicsWorld*, float)* null, void (%struct.btDynamicsWorld*, float)** %2, align 4
+ %3 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store void (%struct.btDynamicsWorld*, float)* null, void (%struct.btDynamicsWorld*, float)** %3, align 4
+ %4 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store i8* null, i8** %4, align 4
+ %5 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float 0x3FE3333340000000, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 4 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 6 ; [#uses=1]
+ store float 2.000000e+01, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 5 ; [#uses=1]
+ store i32 10, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 8 ; [#uses=1]
+ store float 0x3FC99999A0000000, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 9 ; [#uses=1]
+ store float 0x3FB99999A0000000, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 10 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 7 ; [#uses=1]
+ store float 1.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 11 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 12 ; [#uses=1]
+ store float 0xBF947AE140000000, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 14 ; [#uses=1]
+ store float 0x3FEB333340000000, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 15 ; [#uses=1]
+ store i32 260, i32* %19, align 4
+ %20 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 16 ; [#uses=1]
+ store i32 2, i32* %20, align 4
+ %21 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 17 ; [#uses=1]
+ store i32 128, i32* %21, align 4
+ store i32 (...)** getelementptr inbounds ([45 x i32 (...)*]* @_ZTV23btDiscreteDynamicsWorld, i32 0, i32 2), i32 (...)*** %1, align 4
+ %22 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 1 ; [#uses=2]
+ store %struct.btActionInterface* %constraintSolver, %struct.btActionInterface** %22, align 4
+ %23 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 4 ; [#uses=3]
+ store i8 1, i8* %23, align 4
+ %24 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=4]
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %24, align 4
+ %25 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 1 ; [#uses=2]
+ store i32 0, i32* %25, align 4
+ %26 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 2 ; [#uses=2]
+ store i32 0, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 4 ; [#uses=3]
+ store i8 1, i8* %27, align 4
+ %28 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=4]
+ store %struct.btRigidBody** null, %struct.btRigidBody*** %28, align 4
+ %29 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=2]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 2 ; [#uses=2]
+ store i32 0, i32* %30, align 4
+ %31 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ store float -1.000000e+01, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 6 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 9 ; [#uses=1]
+ store i8 0, i8* %36, align 2
+ %37 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 4 ; [#uses=3]
+ store i8 1, i8* %37, align 4
+ %38 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 3 ; [#uses=4]
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %38, align 4
+ %39 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 1 ; [#uses=2]
+ store i32 0, i32* %39, align 4
+ %40 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 2 ; [#uses=2]
+ store i32 0, i32* %40, align 4
+ %41 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 11 ; [#uses=1]
+ store i32 0, i32* %41, align 4
+ %42 = icmp eq %struct.btActionInterface* %constraintSolver, null ; [#uses=1]
+ br i1 %42, label %bb, label %bb10
+
+bb: ; preds = %invcont2
+ %43 = invoke i8* @_Z22btAlignedAllocInternalji(i32 128, i32 16)
+ to label %invcont3 unwind label %lpad52 ; [#uses=3]
+
+invcont3: ; preds = %bb
+ %44 = icmp eq i8* %43, null ; [#uses=1]
+ br i1 %44, label %bb9, label %bb4
+
+bb4: ; preds = %invcont3
+ %45 = bitcast i8* %43 to %struct.btSequentialImpulseConstraintSolver* ; [#uses=1]
+ invoke void @_ZN35btSequentialImpulseConstraintSolverC1Ev(%struct.btSequentialImpulseConstraintSolver* %45)
+ to label %bb9 unwind label %lpad56
+
+bb9: ; preds = %bb4, %invcont3
+ %46 = bitcast i8* %43 to %struct.btActionInterface* ; [#uses=1]
+ store %struct.btActionInterface* %46, %struct.btActionInterface** %22, align 4
+ %47 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 8 ; [#uses=1]
+ store i8 1, i8* %47, align 1
+ br label %bb11
+
+bb10: ; preds = %invcont2
+ %48 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 8 ; [#uses=1]
+ store i8 0, i8* %48, align 1
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb9
+ %49 = invoke i8* @_Z22btAlignedAllocInternalji(i32 68, i32 16)
+ to label %invcont13 unwind label %lpad52 ; [#uses=2]
+
+invcont13: ; preds = %bb11
+ %50 = bitcast i8* %49 to %struct.btSimulationIslandManager* ; [#uses=2]
+ %51 = icmp eq i8* %49, null ; [#uses=1]
+ br i1 %51, label %bb21, label %bb14
+
+bb14: ; preds = %invcont13
+ invoke void @_ZN25btSimulationIslandManagerC1Ev(%struct.btSimulationIslandManager* %50)
+ to label %bb21 unwind label %lpad60
+
+bb21: ; preds = %bb14, %invcont13
+ %52 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 2 ; [#uses=1]
+ store %struct.btSimulationIslandManager* %50, %struct.btSimulationIslandManager** %52, align 4
+ %53 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 7 ; [#uses=1]
+ store i8 1, i8* %53, align 4
+ ret void
+
+invcont40: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+lpad52: ; preds = %bb11, %bb
+ %eh_ptr53 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select55 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr53, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad82
+
+lpad56: ; preds = %bb4
+ %eh_ptr57 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select59 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr57, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad82
+
+lpad60: ; preds = %bb14
+ %eh_ptr61 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select63 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr61, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad82
+
+lpad64: ; preds = %bb1.i.i.i
+ %eh_ptr65 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select67 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr65, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad68: ; preds = %bb1.i.i.i92
+ %eh_ptr69 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select71 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr69, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad72: ; preds = %bb1.i.i.i97
+ %eh_ptr73 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select75 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr73, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad76: ; preds = %ppad
+ %eh_ptr77 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select79 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr77, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i98, %ppad80
+ store i8 1, i8* %23, align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %24, align 4
+ store i32 0, i32* %25, align 4
+ store i32 0, i32* %26, align 4
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV15btDynamicsWorld, i32 0, i32 2), i32 (...)*** %1, align 4
+ invoke void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %0)
+ to label %invcont40 unwind label %lpad76
+
+ppad80: ; preds = %bb2.i.i.i93, %ppad81
+ store i8 1, i8* %27, align 4
+ store %struct.btRigidBody** null, %struct.btRigidBody*** %28, align 4
+ store i32 0, i32* %29, align 4
+ store i32 0, i32* %30, align 4
+ %54 = load %struct.btTypedConstraint*** %24, align 4 ; [#uses=2]
+ %55 = icmp eq %struct.btTypedConstraint** %54, null ; [#uses=1]
+ br i1 %55, label %ppad, label %bb.i.i.i96
+
+bb.i.i.i96: ; preds = %ppad80
+ %56 = load i8* %23, align 4 ; [#uses=1]
+ %toBool.i.i.i95 = icmp eq i8 %56, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i95, label %bb2.i.i.i98, label %bb1.i.i.i97
+
+bb1.i.i.i97: ; preds = %bb.i.i.i96
+ %57 = bitcast %struct.btTypedConstraint** %54 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %57)
+ to label %bb2.i.i.i98 unwind label %lpad72
+
+bb2.i.i.i98: ; preds = %bb1.i.i.i97, %bb.i.i.i96
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %24, align 4
+ br label %ppad
+
+ppad81: ; preds = %bb2.i.i.i, %ppad82
+ store i8 1, i8* %37, align 4
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %38, align 4
+ store i32 0, i32* %39, align 4
+ store i32 0, i32* %40, align 4
+ %58 = load %struct.btRigidBody*** %28, align 4 ; [#uses=2]
+ %59 = icmp eq %struct.btRigidBody** %58, null ; [#uses=1]
+ br i1 %59, label %ppad80, label %bb.i.i.i91
+
+bb.i.i.i91: ; preds = %ppad81
+ %60 = load i8* %27, align 4 ; [#uses=1]
+ %toBool.i.i.i90 = icmp eq i8 %60, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i90, label %bb2.i.i.i93, label %bb1.i.i.i92
+
+bb1.i.i.i92: ; preds = %bb.i.i.i91
+ %61 = bitcast %struct.btRigidBody** %58 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %61)
+ to label %bb2.i.i.i93 unwind label %lpad68
+
+bb2.i.i.i93: ; preds = %bb1.i.i.i92, %bb.i.i.i91
+ store %struct.btRigidBody** null, %struct.btRigidBody*** %28, align 4
+ br label %ppad80
+
+ppad82: ; preds = %lpad60, %lpad56, %lpad52
+ %eh_exception.0 = phi i8* [ %eh_ptr61, %lpad60 ], [ %eh_ptr53, %lpad52 ], [ %eh_ptr57, %lpad56 ] ; [#uses=1]
+ %62 = load %struct.btActionInterface*** %38, align 4 ; [#uses=2]
+ %63 = icmp eq %struct.btActionInterface** %62, null ; [#uses=1]
+ br i1 %63, label %ppad81, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %ppad82
+ %64 = load i8* %37, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %64, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %65 = bitcast %struct.btActionInterface** %62 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %65)
+ to label %bb2.i.i.i unwind label %lpad64
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %38, align 4
+ br label %ppad81
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btDynamicsWorld13addConstraintEP17btTypedConstraintb(%struct.btDynamicsWorld* nocapture %this, %struct.btTypedConstraint* nocapture %constraint, i8 zeroext %disableCollisionsBetweenLinkedBodies) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btDynamicsWorld16removeConstraintEP17btTypedConstraint(%struct.btDynamicsWorld* nocapture %this, %struct.btTypedConstraint* nocapture %constraint) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK15btDynamicsWorld17getNumConstraintsEv(%struct.btDynamicsWorld* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 0
+}
+
+; [#uses=1]
+define linkonce_odr noalias %struct.btTypedConstraint* @_ZN15btDynamicsWorld13getConstraintEi(%struct.btDynamicsWorld* nocapture %this, i32 %index) nounwind readnone align 2 {
+entry:
+ ret %struct.btTypedConstraint* null
+}
+
+; [#uses=1]
+define linkonce_odr noalias %struct.btTypedConstraint* @_ZNK15btDynamicsWorld13getConstraintEi(%struct.btDynamicsWorld* nocapture %this, i32 %index) nounwind readnone align 2 {
+entry:
+ ret %struct.btTypedConstraint* null
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btDynamicsWorld10addVehicleEP17btActionInterface(%struct.btDynamicsWorld* nocapture %this, %struct.btActionInterface* nocapture %vehicle) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btDynamicsWorld13removeVehicleEP17btActionInterface(%struct.btDynamicsWorld* nocapture %this, %struct.btActionInterface* nocapture %vehicle) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btDynamicsWorld12addCharacterEP17btActionInterface(%struct.btDynamicsWorld* nocapture %this, %struct.btActionInterface* nocapture %character) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btDynamicsWorld15removeCharacterEP17btActionInterface(%struct.btDynamicsWorld* nocapture %this, %struct.btActionInterface* nocapture %character) nounwind readnone align 2 {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK23btDiscreteDynamicsWorld12getWorldTypeEv(%struct.btDiscreteDynamicsWorld* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 2
+}
+
+; [#uses=1]
+define void @_ZNK23btDiscreteDynamicsWorld10getGravityEv(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btDiscreteDynamicsWorld* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld10addVehicleEP17btActionInterface(%struct.btDiscreteDynamicsWorld* %this, %struct.btActionInterface* %vehicle) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 15 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %4(%struct.btDiscreteDynamicsWorld* %this, %struct.btActionInterface* %vehicle)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld13removeVehicleEP17btActionInterface(%struct.btDiscreteDynamicsWorld* %this, %struct.btActionInterface* %vehicle) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 16 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %4(%struct.btDiscreteDynamicsWorld* %this, %struct.btActionInterface* %vehicle)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld12addCharacterEP17btActionInterface(%struct.btDiscreteDynamicsWorld* %this, %struct.btActionInterface* %character) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 15 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %4(%struct.btDiscreteDynamicsWorld* %this, %struct.btActionInterface* %character)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld15removeCharacterEP17btActionInterface(%struct.btDiscreteDynamicsWorld* %this, %struct.btActionInterface* %character) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 16 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btDiscreteDynamicsWorld*, %struct.btActionInterface*)* ; [#uses=1]
+ tail call void %4(%struct.btDiscreteDynamicsWorld* %this, %struct.btActionInterface* %character)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN25btSimulationIslandManager14IslandCallbackD1Ev(%struct.btActionInterface* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN25btSimulationIslandManager14IslandCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN25btSimulationIslandManager14IslandCallbackD0Ev(%struct.btActionInterface* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %this, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVN25btSimulationIslandManager14IslandCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btActionInterface* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN34btClosestNotMeConvexResultCallbackD1Ev(%struct.btClosestNotMeConvexResultCallback* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN34btClosestNotMeConvexResultCallbackD0Ev(%struct.btClosestNotMeConvexResultCallback* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btClosestNotMeConvexResultCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr zeroext i8 @_ZNK34btClosestNotMeConvexResultCallback14needsCollisionEP17btBroadphaseProxy(%struct.btClosestNotMeConvexResultCallback* nocapture %this, %struct.btBroadphaseProxy* %proxy0) align 2 {
+entry:
+ %manifoldArray = alloca %"struct.btAlignedObjectArray<btPersistentManifold*>", align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i8** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 1 ; [#uses=2]
+ %3 = load %struct.btCollisionObject** %2, align 4 ; [#uses=2]
+ %4 = bitcast %struct.btCollisionObject* %3 to i8* ; [#uses=1]
+ %5 = icmp eq i8* %1, %4 ; [#uses=1]
+ br i1 %5, label %bb24, label %bb1
+
+bb1: ; preds = %entry
+ %6 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 1 ; [#uses=1]
+ %7 = load i16* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %9 = load i16* %8, align 2 ; [#uses=1]
+ %10 = and i16 %9, %7 ; [#uses=1]
+ %toBoolnot.i = icmp eq i16 %10, 0 ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb24, label %_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy.exit
+
+_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy.exit: ; preds = %bb1
+ %11 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load i16* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btBroadphaseProxy* %proxy0, i32 0, i32 2 ; [#uses=1]
+ %14 = load i16* %13, align 2 ; [#uses=1]
+ %15 = and i16 %14, %12 ; [#uses=1]
+ %phitmp = icmp eq i16 %15, 0 ; [#uses=1]
+ br i1 %phitmp, label %bb24, label %bb5
+
+bb5: ; preds = %_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy.exit
+ %16 = bitcast i8* %1 to %struct.btCollisionObject* ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 4 ; [#uses=1]
+ %18 = load %struct.btActionInterface** %17, align 4 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btActionInterface* %18, i32 0, i32 0 ; [#uses=1]
+ %20 = load i32 (...)*** %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds i32 (...)** %20, i32 7 ; [#uses=1]
+ %22 = load i32 (...)** %21, align 4 ; [#uses=1]
+ %23 = bitcast i32 (...)* %22 to i8 (%struct.btActionInterface*, %struct.btCollisionObject*, %struct.btCollisionObject*)* ; [#uses=1]
+ %24 = call zeroext i8 %23(%struct.btActionInterface* %18, %struct.btCollisionObject* %3, %struct.btCollisionObject* %16) ; [#uses=1]
+ %toBool6 = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool6, label %bb24, label %bb7
+
+bb7: ; preds = %bb5
+ %25 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, i32 0, i32 4 ; [#uses=7]
+ store i8 1, i8* %25, align 8
+ %26 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, i32 0, i32 3 ; [#uses=12]
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %26, align 4
+ %27 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, i32 0, i32 1 ; [#uses=5]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray, i32 0, i32 2 ; [#uses=4]
+ store i32 0, i32* %28, align 8
+ %29 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 3 ; [#uses=1]
+ %30 = load %struct..0btMultiSapOverlapFilterCallback** %29, align 4 ; [#uses=2]
+ %31 = getelementptr inbounds %struct..0btMultiSapOverlapFilterCallback* %30, i32 0, i32 0, i32 0 ; [#uses=1]
+ %32 = load i32 (...)*** %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32 (...)** %32, i32 13 ; [#uses=1]
+ %34 = load i32 (...)** %33, align 4 ; [#uses=1]
+ %35 = load %struct.btCollisionObject** %2, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btCollisionObject* %35, i32 0, i32 8 ; [#uses=1]
+ %37 = load %struct.btBroadphaseProxy** %36, align 4 ; [#uses=1]
+ %38 = bitcast i32 (...)* %34 to %struct.btBroadphasePair* (%struct..0btMultiSapOverlapFilterCallback*, %struct.btBroadphaseProxy*, %struct.btBroadphaseProxy*)* ; [#uses=1]
+ %39 = invoke %struct.btBroadphasePair* %38(%struct..0btMultiSapOverlapFilterCallback* %30, %struct.btBroadphaseProxy* %37, %struct.btBroadphaseProxy* %proxy0)
+ to label %invcont unwind label %lpad ; [#uses=2]
+
+invcont: ; preds = %bb7
+ %40 = icmp eq %struct.btBroadphasePair* %39, null ; [#uses=1]
+ br i1 %40, label %bb22, label %bb8
+
+bb8: ; preds = %invcont
+ %41 = getelementptr inbounds %struct.btBroadphasePair* %39, i32 0, i32 2 ; [#uses=2]
+ %42 = load %struct.btCollisionAlgorithm** %41, align 4 ; [#uses=1]
+ %43 = icmp eq %struct.btCollisionAlgorithm* %42, null ; [#uses=1]
+ br i1 %43, label %bb22, label %bb9
+
+bb9: ; preds = %bb8
+ %44 = load i32* %27, align 4 ; [#uses=4]
+ %45 = icmp sgt i32 %44, 0 ; [#uses=1]
+ %.not = xor i1 %45, true ; [#uses=1]
+ %46 = icmp slt i32 %44, 0 ; [#uses=1]
+ %or.cond = and i1 %.not, %46 ; [#uses=1]
+ br i1 %or.cond, label %bb4.i, label %invcont10
+
+bb4.i: ; preds = %bb9
+ %47 = load i32* %28, align 8 ; [#uses=1]
+ %48 = icmp slt i32 %47, 0 ; [#uses=1]
+ br i1 %48, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i, label %bb.nph.i
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i: ; preds = %bb4.i
+ %49 = load %struct.btPersistentManifold*** %26, align 4 ; [#uses=2]
+ %50 = icmp eq %struct.btPersistentManifold** %49, null ; [#uses=1]
+ br i1 %50, label %bb11.preheader.i, label %bb.i.i.i46
+
+bb.i.i.i46: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i
+ %51 = load i8* %25, align 8 ; [#uses=1]
+ %toBool.i.i.i45 = icmp eq i8 %51, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i45, label %bb2.i.i.i48, label %bb1.i.i.i47
+
+bb1.i.i.i47: ; preds = %bb.i.i.i46
+ %52 = bitcast %struct.btPersistentManifold** %49 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %52)
+ to label %bb2.i.i.i48 unwind label %lpad
+
+bb2.i.i.i48: ; preds = %bb1.i.i.i47, %bb.i.i.i46
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %26, align 4
+ br label %bb11.preheader.i
+
+bb11.preheader.i: ; preds = %bb2.i.i.i48, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i
+ store i8 1, i8* %25, align 8
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %26, align 4
+ store i32 0, i32* %28, align 8
+ br label %bb.nph.i
+
+bb.nph.i: ; preds = %bb11.preheader.i, %bb4.i
+ %tmp.i = sub i32 0, %44 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb10.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb10.i ] ; [#uses=2]
+ %tmp = add i32 %44, %indvar.i ; [#uses=1]
+ %53 = load %struct.btPersistentManifold*** %26, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btPersistentManifold** %53, i32 %tmp ; [#uses=2]
+ %54 = icmp eq %struct.btPersistentManifold** %scevgep, null ; [#uses=1]
+ br i1 %54, label %bb10.i, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %scevgep, align 4
+ br label %bb10.i
+
+bb10.i: ; preds = %bb8.i, %bb7.i
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %tmp.i ; [#uses=1]
+ br i1 %exitcond, label %invcont10, label %bb7.i
+
+invcont10: ; preds = %bb10.i, %bb9
+ store i32 0, i32* %27, align 4
+ %55 = load %struct.btCollisionAlgorithm** %41, align 4 ; [#uses=2]
+ %56 = getelementptr inbounds %struct.btCollisionAlgorithm* %55, i32 0, i32 0 ; [#uses=1]
+ %57 = load i32 (...)*** %56, align 4 ; [#uses=1]
+ %58 = getelementptr inbounds i32 (...)** %57, i32 4 ; [#uses=1]
+ %59 = load i32 (...)** %58, align 4 ; [#uses=1]
+ %60 = bitcast i32 (...)* %59 to void (%struct.btCollisionAlgorithm*, %"struct.btAlignedObjectArray<btPersistentManifold*>"*)* ; [#uses=1]
+ invoke void %60(%struct.btCollisionAlgorithm* %55, %"struct.btAlignedObjectArray<btPersistentManifold*>"* %manifoldArray)
+ to label %bb16.preheader unwind label %lpad
+
+bb16.preheader: ; preds = %invcont10
+ %61 = load i32* %27, align 4 ; [#uses=1]
+ br label %bb16
+
+bb12: ; preds = %bb16
+ %62 = load %struct.btPersistentManifold*** %26, align 4 ; [#uses=3]
+ %scevgep50 = getelementptr %struct.btPersistentManifold** %62, i32 %68 ; [#uses=1]
+ %63 = load %struct.btPersistentManifold** %scevgep50, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btPersistentManifold* %63, i32 0, i32 4 ; [#uses=1]
+ %65 = load i32* %64, align 4 ; [#uses=1]
+ %66 = icmp sgt i32 %65, 0 ; [#uses=1]
+ br i1 %66, label %bb24.critedge, label %bb15
+
+bb15: ; preds = %bb12
+ %67 = add nsw i32 %68, 1 ; [#uses=1]
+ br label %bb16
+
+bb16: ; preds = %bb15, %bb16.preheader
+ %68 = phi i32 [ %67, %bb15 ], [ 0, %bb16.preheader ] ; [#uses=3]
+ %69 = icmp sgt i32 %61, %68 ; [#uses=1]
+ br i1 %69, label %bb12, label %bb22
+
+invcont20: ; preds = %bb2.i.i.i, %lpad
+ store i8 1, i8* %25, align 8
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %26, align 4
+ store i32 0, i32* %27, align 4
+ store i32 0, i32* %28, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb22: ; preds = %bb16, %bb8, %invcont
+ %70 = load %struct.btPersistentManifold*** %26, align 4 ; [#uses=2]
+ %71 = icmp eq %struct.btPersistentManifold** %70, null ; [#uses=1]
+ br i1 %71, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44, label %bb.i.i.i41
+
+bb.i.i.i41: ; preds = %bb22
+ %72 = load i8* %25, align 8 ; [#uses=1]
+ %toBool.i.i.i40 = icmp eq i8 %72, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i40, label %bb2.i.i.i43, label %bb1.i.i.i42
+
+bb1.i.i.i42: ; preds = %bb.i.i.i41
+ %73 = bitcast %struct.btPersistentManifold** %70 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %73)
+ br label %bb2.i.i.i43
+
+bb2.i.i.i43: ; preds = %bb1.i.i.i42, %bb.i.i.i41
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %26, align 4
+ ret i8 1
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit44: ; preds = %bb22
+ ret i8 1
+
+bb24.critedge: ; preds = %bb12
+ %74 = icmp eq %struct.btPersistentManifold** %62, null ; [#uses=1]
+ br i1 %74, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit39, label %bb.i.i.i36
+
+bb.i.i.i36: ; preds = %bb24.critedge
+ %75 = load i8* %25, align 8 ; [#uses=1]
+ %toBool.i.i.i35 = icmp eq i8 %75, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i35, label %bb2.i.i.i38, label %bb1.i.i.i37
+
+bb1.i.i.i37: ; preds = %bb.i.i.i36
+ %76 = bitcast %struct.btPersistentManifold** %62 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %76)
+ br label %bb2.i.i.i38
+
+bb2.i.i.i38: ; preds = %bb1.i.i.i37, %bb.i.i.i36
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %26, align 4
+ ret i8 0
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit39: ; preds = %bb24.critedge
+ ret i8 0
+
+bb24: ; preds = %bb5, %_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy.exit, %bb1, %entry
+ %.0 = phi i8 [ 0, %entry ], [ 0, %_ZNK16btCollisionWorld20ConvexResultCallback14needsCollisionEP17btBroadphaseProxy.exit ], [ 1, %bb5 ], [ 0, %bb1 ] ; [#uses=1]
+ ret i8 %.0
+
+lpad: ; preds = %invcont10, %bb1.i.i.i47, %bb7
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select28 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %77 = load %struct.btPersistentManifold*** %26, align 4 ; [#uses=2]
+ %78 = icmp eq %struct.btPersistentManifold** %77, null ; [#uses=1]
+ br i1 %78, label %invcont20, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad
+ %79 = load i8* %25, align 8 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %79, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %80 = bitcast %struct.btPersistentManifold** %77 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %80)
+ to label %bb2.i.i.i unwind label %lpad29
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %26, align 4
+ br label %invcont20
+
+lpad29: ; preds = %bb1.i.i.i
+ %eh_ptr30 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select32 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr30, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr float @_ZN34btClosestNotMeConvexResultCallback15addSingleResultERN16btCollisionWorld17LocalConvexResultEb(%struct.btClosestNotMeConvexResultCallback* nocapture %this, %"struct.btCollisionWorld::LocalConvexResult"* nocapture %convexResult, i8 zeroext %normalInWorldSpace) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 0 ; [#uses=2]
+ %1 = load %struct.btCollisionObject** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load %struct.btCollisionObject** %2, align 4 ; [#uses=1]
+ %4 = icmp eq %struct.btCollisionObject* %1, %3 ; [#uses=1]
+ br i1 %4, label %bb9, label %bb1
+
+bb1: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btCollisionObject* %1, i32 0, i32 12 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %6, 4 ; [#uses=1]
+ %toBoolnot = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb5, label %bb9
+
+bb5: ; preds = %bb1
+ %7 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fsub float %8, %10 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fsub float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fsub float %18, %20 ; [#uses=1]
+ %22 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fmul float %23, %21 ; [#uses=1]
+ %25 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = fmul float %26, %16 ; [#uses=1]
+ %28 = fadd float %24, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = fmul float %30, %11 ; [#uses=1]
+ %32 = fadd float %28, %31 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fsub float -0.000000e+00, %34 ; [#uses=1]
+ %36 = fcmp ult float %32, %35 ; [#uses=1]
+ br i1 %36, label %bb8, label %bb9
+
+bb8: ; preds = %bb5
+ %37 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 4 ; [#uses=2]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %38, float* %39, align 4
+ %40 = load %struct.btCollisionObject** %0, align 4 ; [#uses=10]
+ %41 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 5 ; [#uses=1]
+ store %struct.btCollisionObject* %40, %struct.btCollisionObject** %41, align 4
+ %toBool.i = icmp eq i8 %normalInWorldSpace, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb1.i, label %bb.i
+
+bb.i: ; preds = %bb8
+ %42 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %22, align 4 ; [#uses=1]
+ store float %43, float* %42, align 4
+ %44 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %45 = load float* %25, align 4 ; [#uses=1]
+ store float %45, float* %44, align 4
+ %46 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %29, align 4 ; [#uses=1]
+ store float %47, float* %46, align 4
+ %48 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %49 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ store float %50, float* %48, align 4
+ br label %_ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb.exit
+
+bb1.i: ; preds = %bb8
+ %51 = getelementptr inbounds %struct.btCollisionObject* %40, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = load float* %22, align 4 ; [#uses=3]
+ %54 = fmul float %52, %53 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btCollisionObject* %40, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ %57 = load float* %25, align 4 ; [#uses=3]
+ %58 = fmul float %56, %57 ; [#uses=1]
+ %59 = fadd float %54, %58 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btCollisionObject* %40, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = load float* %29, align 4 ; [#uses=3]
+ %63 = fmul float %61, %62 ; [#uses=1]
+ %64 = fadd float %59, %63 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btCollisionObject* %40, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ %67 = fmul float %66, %53 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btCollisionObject* %40, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ %70 = fmul float %69, %57 ; [#uses=1]
+ %71 = fadd float %67, %70 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btCollisionObject* %40, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ %74 = fmul float %73, %62 ; [#uses=1]
+ %75 = fadd float %71, %74 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btCollisionObject* %40, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ %78 = fmul float %77, %53 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btCollisionObject* %40, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fmul float %80, %57 ; [#uses=1]
+ %82 = fadd float %78, %81 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btCollisionObject* %40, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ %85 = fmul float %84, %62 ; [#uses=1]
+ %86 = fadd float %82, %85 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %86, float* %87, align 4
+ %88 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %75, float* %88, align 4
+ %89 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %64, float* %89, align 4
+ %90 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %90, align 4
+ br label %_ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb.exit
+
+_ZN16btCollisionWorld27ClosestConvexResultCallback15addSingleResultERNS_17LocalConvexResultEb.exit: ; preds = %bb1.i, %bb.i
+ %91 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %92 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ store float %93, float* %91, align 4
+ %94 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %95 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %94, align 4
+ %97 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %98 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ store float %99, float* %97, align 4
+ %100 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %this, i32 0, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %101 = getelementptr inbounds %"struct.btCollisionWorld::LocalConvexResult"* %convexResult, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ store float %102, float* %100, align 4
+ %103 = load float* %37, align 4 ; [#uses=1]
+ ret float %103
+
+bb9: ; preds = %bb5, %bb1, %entry
+ ret float 1.000000e+00
+}
+
+; [#uses=1]
+define %struct.btActionInterface* @_ZN23btDiscreteDynamicsWorld19getConstraintSolverEv(%struct.btDiscreteDynamicsWorld* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=1]
+ ret %struct.btActionInterface* %1
+}
+
+; [#uses=1]
+define %struct.btTypedConstraint* @_ZN23btDiscreteDynamicsWorld13getConstraintEi(%struct.btDiscreteDynamicsWorld* nocapture %this, i32 %index) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %1 = load %struct.btTypedConstraint*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTypedConstraint** %1, i32 %index ; [#uses=1]
+ %3 = load %struct.btTypedConstraint** %2, align 4 ; [#uses=1]
+ ret %struct.btTypedConstraint* %3
+}
+
+; [#uses=1]
+define i32 @_ZNK23btDiscreteDynamicsWorld17getNumConstraintsEv(%struct.btDiscreteDynamicsWorld* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ ret i32 %1
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld20serializeRigidBodiesEP12btSerializer(%struct.btDiscreteDynamicsWorld* nocapture %this, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph14, label %bb9.preheader
+
+bb.nph14: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=2]
+ br label %bb
+
+bb: ; preds = %bb2, %bb.nph14
+ %i.013 = phi i32 [ 0, %bb.nph14 ], [ %tmp16, %bb2 ] ; [#uses=2]
+ %tmp16 = add i32 %i.013, 1 ; [#uses=2]
+ %5 = load %struct.btCollisionObject*** %3, align 4 ; [#uses=1]
+ %scevgep15 = getelementptr %struct.btCollisionObject** %5, i32 %i.013 ; [#uses=1]
+ %6 = load %struct.btCollisionObject** %scevgep15, align 4 ; [#uses=5]
+ %7 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 19 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=1]
+ %.lobit = and i32 %8, 2 ; [#uses=1]
+ %toBool = icmp eq i32 %.lobit, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %9 = getelementptr inbounds %struct.btCollisionObject* %6, i32 0, i32 0 ; [#uses=2]
+ %10 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds i32 (...)** %10, i32 4 ; [#uses=1]
+ %12 = load i32 (...)** %11, align 4 ; [#uses=1]
+ %13 = bitcast i32 (...)* %12 to i32 (%struct.btCollisionObject*)* ; [#uses=1]
+ %14 = tail call i32 %13(%struct.btCollisionObject* %6) ; [#uses=1]
+ %15 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds i32 (...)** %15, i32 4 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = bitcast i32 (...)* %17 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %19 = tail call %struct.btChunk* %18(%struct.btActionInterface* %serializer, i32 %14, i32 1) ; [#uses=2]
+ %20 = load i32 (...)*** %9, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds i32 (...)** %20, i32 5 ; [#uses=1]
+ %22 = load i32 (...)** %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btChunk* %19, i32 0, i32 2 ; [#uses=1]
+ %24 = load i8** %23, align 4 ; [#uses=1]
+ %25 = bitcast i32 (...)* %22 to i8* (%struct.btCollisionObject*, i8*, %struct.btActionInterface*)* ; [#uses=1]
+ %26 = tail call i8* %25(%struct.btCollisionObject* %6, i8* %24, %struct.btActionInterface* %serializer) ; [#uses=1]
+ %27 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds i32 (...)** %27, i32 5 ; [#uses=1]
+ %29 = load i32 (...)** %28, align 4 ; [#uses=1]
+ %30 = bitcast i32 (...)* %29 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ %31 = bitcast %struct.btCollisionObject* %6 to i8* ; [#uses=1]
+ tail call void %30(%struct.btActionInterface* %serializer, %struct.btChunk* %19, i8* %26, i32 1497645650, i8* %31)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %32 = load i32* %0, align 4 ; [#uses=1]
+ %33 = icmp sgt i32 %32, %tmp16 ; [#uses=1]
+ br i1 %33, label %bb, label %bb9.preheader
+
+bb9.preheader: ; preds = %bb2, %entry
+ %34 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 1 ; [#uses=2]
+ %35 = load i32* %34, align 4 ; [#uses=1]
+ %36 = icmp sgt i32 %35, 0 ; [#uses=1]
+ br i1 %36, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb9.preheader
+ %37 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=2]
+ br label %bb6
+
+bb6: ; preds = %bb6, %bb.nph
+ %i.112 = phi i32 [ 0, %bb.nph ], [ %64, %bb6 ] ; [#uses=2]
+ %39 = load %struct.btTypedConstraint*** %37, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btTypedConstraint** %39, i32 %i.112 ; [#uses=1]
+ %40 = load %struct.btTypedConstraint** %scevgep, align 4 ; [#uses=4]
+ %41 = getelementptr inbounds %struct.btTypedConstraint* %40, i32 0, i32 0 ; [#uses=2]
+ %42 = load i32 (...)*** %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds i32 (...)** %42, i32 9 ; [#uses=1]
+ %44 = load i32 (...)** %43, align 4 ; [#uses=1]
+ %45 = bitcast i32 (...)* %44 to i32 (%struct.btTypedConstraint*)* ; [#uses=1]
+ %46 = tail call i32 %45(%struct.btTypedConstraint* %40) ; [#uses=1]
+ %47 = load i32 (...)*** %38, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds i32 (...)** %47, i32 4 ; [#uses=1]
+ %49 = load i32 (...)** %48, align 4 ; [#uses=1]
+ %50 = bitcast i32 (...)* %49 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %51 = tail call %struct.btChunk* %50(%struct.btActionInterface* %serializer, i32 %46, i32 1) ; [#uses=2]
+ %52 = load i32 (...)*** %41, align 4 ; [#uses=1]
+ %53 = getelementptr inbounds i32 (...)** %52, i32 10 ; [#uses=1]
+ %54 = load i32 (...)** %53, align 4 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btChunk* %51, i32 0, i32 2 ; [#uses=1]
+ %56 = load i8** %55, align 4 ; [#uses=1]
+ %57 = bitcast i32 (...)* %54 to i8* (%struct.btTypedConstraint*, i8*, %struct.btActionInterface*)* ; [#uses=1]
+ %58 = tail call i8* %57(%struct.btTypedConstraint* %40, i8* %56, %struct.btActionInterface* %serializer) ; [#uses=1]
+ %59 = load i32 (...)*** %38, align 4 ; [#uses=1]
+ %60 = getelementptr inbounds i32 (...)** %59, i32 5 ; [#uses=1]
+ %61 = load i32 (...)** %60, align 4 ; [#uses=1]
+ %62 = bitcast i32 (...)* %61 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ %63 = bitcast %struct.btTypedConstraint* %40 to i8* ; [#uses=1]
+ tail call void %62(%struct.btActionInterface* %serializer, %struct.btChunk* %51, i8* %58, i32 1397641027, i8* %63)
+ %64 = add nsw i32 %i.112, 1 ; [#uses=2]
+ %65 = load i32* %34, align 4 ; [#uses=1]
+ %66 = icmp sgt i32 %65, %64 ; [#uses=1]
+ br i1 %66, label %bb6, label %return
+
+return: ; preds = %bb6, %bb9.preheader
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld11clearForcesEv(%struct.btDiscreteDynamicsWorld* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %i.03 = phi i32 [ 0, %bb.nph ], [ %8, %bb ] ; [#uses=2]
+ %4 = load %struct.btRigidBody*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btRigidBody** %4, i32 %i.03 ; [#uses=1]
+ %5 = load %struct.btRigidBody** %scevgep, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 9, i32 0, i32 0 ; [#uses=1]
+ %7 = bitcast float* %6 to i8* ; [#uses=1]
+ tail call void @llvm.memset.p0i8.i64(i8* %7, i8 0, i64 32, i32 4, i1 false) nounwind
+ %8 = add nsw i32 %i.03, 1 ; [#uses=2]
+ %9 = load i32* %0, align 4 ; [#uses=1]
+ %10 = icmp sgt i32 %9, %8 ; [#uses=1]
+ br i1 %10, label %bb, label %return
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define %struct.btTypedConstraint* @_ZNK23btDiscreteDynamicsWorld13getConstraintEi(%struct.btDiscreteDynamicsWorld* nocapture %this, i32 %index) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %1 = load %struct.btTypedConstraint*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTypedConstraint** %1, i32 %index ; [#uses=1]
+ %3 = load %struct.btTypedConstraint** %2, align 4 ; [#uses=1]
+ ret %struct.btTypedConstraint* %3
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld12removeActionEP17btActionInterface(%struct.btDiscreteDynamicsWorld* nocapture %this, %struct.btActionInterface* %action) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=4]
+ %2 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ br label %bb3.i.i
+
+bb.i.i: ; preds = %bb3.i.i
+ %3 = load %struct.btActionInterface*** %2, align 4 ; [#uses=1]
+ %scevgep.i.i = getelementptr %struct.btActionInterface** %3, i32 %7 ; [#uses=1]
+ %4 = load %struct.btActionInterface** %scevgep.i.i, align 4 ; [#uses=1]
+ %5 = icmp eq %struct.btActionInterface* %4, %action ; [#uses=1]
+ br i1 %5, label %_ZNK20btAlignedObjectArrayIP17btActionInterfaceE16findLinearSearchERKS1_.exit.i, label %bb2.i.i
+
+bb2.i.i: ; preds = %bb.i.i
+ %6 = add nsw i32 %7, 1 ; [#uses=1]
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb2.i.i, %entry
+ %7 = phi i32 [ 0, %entry ], [ %6, %bb2.i.i ] ; [#uses=4]
+ %8 = icmp sgt i32 %1, %7 ; [#uses=1]
+ br i1 %8, label %bb.i.i, label %_ZNK20btAlignedObjectArrayIP17btActionInterfaceE16findLinearSearchERKS1_.exit.i
+
+_ZNK20btAlignedObjectArrayIP17btActionInterfaceE16findLinearSearchERKS1_.exit.i: ; preds = %bb3.i.i, %bb.i.i
+ %index.0.i.i = phi i32 [ %1, %bb3.i.i ], [ %7, %bb.i.i ] ; [#uses=2]
+ %9 = icmp sgt i32 %1, %index.0.i.i ; [#uses=1]
+ br i1 %9, label %bb.i, label %_ZN20btAlignedObjectArrayIP17btActionInterfaceE6removeERKS1_.exit
+
+bb.i: ; preds = %_ZNK20btAlignedObjectArrayIP17btActionInterfaceE16findLinearSearchERKS1_.exit.i
+ %10 = add nsw i32 %1, -1 ; [#uses=2]
+ %11 = load %struct.btActionInterface*** %2, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btActionInterface** %11, i32 %index.0.i.i ; [#uses=2]
+ %13 = load %struct.btActionInterface** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btActionInterface** %11, i32 %10 ; [#uses=1]
+ %15 = load %struct.btActionInterface** %14, align 4 ; [#uses=1]
+ store %struct.btActionInterface* %15, %struct.btActionInterface** %12, align 4
+ %16 = load %struct.btActionInterface*** %2, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btActionInterface** %16, i32 %10 ; [#uses=1]
+ store %struct.btActionInterface* %13, %struct.btActionInterface** %17, align 4
+ %18 = load i32* %0, align 4 ; [#uses=1]
+ %19 = add nsw i32 %18, -1 ; [#uses=1]
+ store i32 %19, i32* %0, align 4
+ ret void
+
+_ZN20btAlignedObjectArrayIP17btActionInterfaceE6removeERKS1_.exit: ; preds = %_ZNK20btAlignedObjectArrayIP17btActionInterfaceE16findLinearSearchERKS1_.exit.i
+ ret void
+}
+
+; [#uses=3]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP17btTypedConstraintE17quickSortInternalI33btSortConstraintOnIslandPredicateEEvT_ii(%"struct.btAlignedObjectArray<btTypedConstraint*>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* nocapture byval align 4 %CompareFunc, i32 %lo, i32 %hi) nounwind align 2 {
+entry:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %1 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btTypedConstraint*>"* %this, i32 0, i32 3 ; [#uses=3]
+ %3 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=1]
+ %4 = add nsw i32 %hi, %lo ; [#uses=1]
+ %5 = sdiv i32 %4, 2 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTypedConstraint** %3, i32 %5 ; [#uses=1]
+ %7 = load %struct.btTypedConstraint** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btTypedConstraint* %7, i32 0, i32 5 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTypedConstraint* %7, i32 0, i32 6 ; [#uses=2]
+ br label %bb1.outer
+
+bb1.outer: ; preds = %bb7, %entry
+ %i.0.ph = phi i32 [ %lo, %entry ], [ %i.1, %bb7 ] ; [#uses=2]
+ %j.1.ph = phi i32 [ %hi, %entry ], [ %j.2, %bb7 ] ; [#uses=2]
+ %10 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=5]
+ %11 = load %struct.btRigidBody** %8, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btRigidBody* %11, i32 0, i32 0, i32 13 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=3]
+ %14 = icmp sgt i32 %13, -1 ; [#uses=2]
+ br i1 %14, label %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit.i.us, label %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit.i
+
+bb.us: ; preds = %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit.us
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit.i.us
+
+_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit.us: ; preds = %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit.i.us, %bb1.i4.i.us
+ %15 = phi i32 [ %20, %bb1.i4.i.us ], [ %25, %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit.i.us ] ; [#uses=1]
+ %16 = icmp slt i32 %15, %13 ; [#uses=1]
+ br i1 %16, label %bb.us, label %bb3.preheader
+
+bb1.i4.i.us: ; preds = %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit.i.us
+ %17 = getelementptr inbounds %struct.btTypedConstraint* %21, i32 0, i32 6 ; [#uses=1]
+ %18 = load %struct.btRigidBody** %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btRigidBody* %18, i32 0, i32 0, i32 13 ; [#uses=1]
+ %20 = load i32* %19, align 4 ; [#uses=1]
+ br label %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit.us
+
+_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit.i.us: ; preds = %bb.us, %bb1.outer
+ %indvar = phi i32 [ %indvar.next, %bb.us ], [ 0, %bb1.outer ] ; [#uses=2]
+ %i.0.us = add i32 %i.0.ph, %indvar ; [#uses=2]
+ %scevgep = getelementptr %struct.btTypedConstraint** %10, i32 %i.0.us ; [#uses=1]
+ %21 = load %struct.btTypedConstraint** %scevgep, align 4 ; [#uses=3]
+ %22 = getelementptr inbounds %struct.btTypedConstraint* %21, i32 0, i32 5 ; [#uses=1]
+ %23 = load %struct.btRigidBody** %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btRigidBody* %23, i32 0, i32 0, i32 13 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=2]
+ %26 = icmp sgt i32 %25, -1 ; [#uses=1]
+ br i1 %26, label %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit.us, label %bb1.i4.i.us
+
+bb: ; preds = %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit
+ %indvar.next30 = add i32 %indvar29, 1 ; [#uses=1]
+ br label %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit.i
+
+_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit.i: ; preds = %bb, %bb1.outer
+ %indvar29 = phi i32 [ %indvar.next30, %bb ], [ 0, %bb1.outer ] ; [#uses=2]
+ %i.0 = add i32 %i.0.ph, %indvar29 ; [#uses=2]
+ %scevgep32 = getelementptr %struct.btTypedConstraint** %10, i32 %i.0 ; [#uses=1]
+ %27 = load %struct.btTypedConstraint** %scevgep32, align 4 ; [#uses=3]
+ %28 = load %struct.btRigidBody** %9, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btRigidBody* %28, i32 0, i32 0, i32 13 ; [#uses=1]
+ %30 = load i32* %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btTypedConstraint* %27, i32 0, i32 5 ; [#uses=1]
+ %32 = load %struct.btRigidBody** %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btRigidBody* %32, i32 0, i32 0, i32 13 ; [#uses=1]
+ %34 = load i32* %33, align 4 ; [#uses=2]
+ %35 = icmp sgt i32 %34, -1 ; [#uses=1]
+ br i1 %35, label %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit, label %bb1.i4.i
+
+bb1.i4.i: ; preds = %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit.i
+ %36 = getelementptr inbounds %struct.btTypedConstraint* %27, i32 0, i32 6 ; [#uses=1]
+ %37 = load %struct.btRigidBody** %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btRigidBody* %37, i32 0, i32 0, i32 13 ; [#uses=1]
+ %39 = load i32* %38, align 4 ; [#uses=1]
+ br label %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit
+
+_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit: ; preds = %bb1.i4.i, %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit.i
+ %40 = phi i32 [ %39, %bb1.i4.i ], [ %34, %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit.i ] ; [#uses=1]
+ %41 = icmp slt i32 %40, %30 ; [#uses=1]
+ br i1 %41, label %bb, label %bb3.preheader
+
+bb3.preheader: ; preds = %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit, %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit.us
+ %42 = phi %struct.btTypedConstraint* [ %21, %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit.us ], [ %27, %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit ] ; [#uses=1]
+ %i.0.lcssa = phi i32 [ %i.0.us, %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit.us ], [ %i.0, %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit ] ; [#uses=4]
+ br i1 %14, label %bb3.us, label %bb3
+
+bb3.us: ; preds = %bb2.us, %bb3.preheader
+ %indvar18 = phi i32 [ %indvar.next19, %bb2.us ], [ 0, %bb3.preheader ] ; [#uses=2]
+ %j.0.us = sub i32 %j.1.ph, %indvar18 ; [#uses=2]
+ %scevgep21 = getelementptr %struct.btTypedConstraint** %10, i32 %j.0.us ; [#uses=1]
+ %43 = load %struct.btTypedConstraint** %scevgep21, align 4 ; [#uses=3]
+ %44 = getelementptr inbounds %struct.btTypedConstraint* %43, i32 0, i32 5 ; [#uses=1]
+ %45 = load %struct.btRigidBody** %44, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btRigidBody* %45, i32 0, i32 0, i32 13 ; [#uses=1]
+ %47 = load i32* %46, align 4 ; [#uses=2]
+ %48 = icmp sgt i32 %47, -1 ; [#uses=1]
+ br i1 %48, label %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17.us, label %bb1.i.i13.us
+
+bb2.us: ; preds = %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17.us
+ %indvar.next19 = add i32 %indvar18, 1 ; [#uses=1]
+ br label %bb3.us
+
+_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17.us: ; preds = %bb1.i.i13.us, %bb3.us
+ %49 = phi i32 [ %54, %bb1.i.i13.us ], [ %47, %bb3.us ] ; [#uses=1]
+ %50 = icmp slt i32 %13, %49 ; [#uses=1]
+ br i1 %50, label %bb2.us, label %bb5
+
+bb1.i.i13.us: ; preds = %bb3.us
+ %51 = getelementptr inbounds %struct.btTypedConstraint* %43, i32 0, i32 6 ; [#uses=1]
+ %52 = load %struct.btRigidBody** %51, align 4 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btRigidBody* %52, i32 0, i32 0, i32 13 ; [#uses=1]
+ %54 = load i32* %53, align 4 ; [#uses=1]
+ br label %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17.us
+
+bb2: ; preds = %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17
+ %indvar.next24 = add i32 %indvar23, 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb3.preheader
+ %indvar23 = phi i32 [ %indvar.next24, %bb2 ], [ 0, %bb3.preheader ] ; [#uses=2]
+ %j.0 = sub i32 %j.1.ph, %indvar23 ; [#uses=2]
+ %scevgep27 = getelementptr %struct.btTypedConstraint** %10, i32 %j.0 ; [#uses=1]
+ %55 = load %struct.btTypedConstraint** %scevgep27, align 4 ; [#uses=3]
+ %56 = getelementptr inbounds %struct.btTypedConstraint* %55, i32 0, i32 5 ; [#uses=1]
+ %57 = load %struct.btRigidBody** %56, align 4 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btRigidBody* %57, i32 0, i32 0, i32 13 ; [#uses=1]
+ %59 = load i32* %58, align 4 ; [#uses=2]
+ %60 = icmp sgt i32 %59, -1 ; [#uses=1]
+ br i1 %60, label %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17, label %bb1.i.i13
+
+bb1.i.i13: ; preds = %bb3
+ %61 = getelementptr inbounds %struct.btTypedConstraint* %55, i32 0, i32 6 ; [#uses=1]
+ %62 = load %struct.btRigidBody** %61, align 4 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btRigidBody* %62, i32 0, i32 0, i32 13 ; [#uses=1]
+ %64 = load i32* %63, align 4 ; [#uses=1]
+ br label %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17
+
+_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17: ; preds = %bb1.i.i13, %bb3
+ %65 = phi i32 [ %64, %bb1.i.i13 ], [ %59, %bb3 ] ; [#uses=1]
+ %66 = load %struct.btRigidBody** %9, align 4 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btRigidBody* %66, i32 0, i32 0, i32 13 ; [#uses=1]
+ %68 = load i32* %67, align 4 ; [#uses=1]
+ %69 = icmp slt i32 %68, %65 ; [#uses=1]
+ br i1 %69, label %bb2, label %bb5
+
+bb5: ; preds = %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17, %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17.us
+ %70 = phi %struct.btTypedConstraint* [ %43, %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17.us ], [ %55, %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17 ] ; [#uses=1]
+ %j.0.lcssa = phi i32 [ %j.0.us, %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17.us ], [ %j.0, %_ZN33btSortConstraintOnIslandPredicateclEPK17btTypedConstraintS2_.exit17 ] ; [#uses=4]
+ %71 = icmp sgt i32 %i.0.lcssa, %j.0.lcssa ; [#uses=1]
+ br i1 %71, label %bb7, label %bb6
+
+bb6: ; preds = %bb5
+ %72 = getelementptr inbounds %struct.btTypedConstraint** %10, i32 %i.0.lcssa ; [#uses=1]
+ store %struct.btTypedConstraint* %70, %struct.btTypedConstraint** %72, align 4
+ %73 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btTypedConstraint** %73, i32 %j.0.lcssa ; [#uses=1]
+ store %struct.btTypedConstraint* %42, %struct.btTypedConstraint** %74, align 4
+ %75 = add nsw i32 %i.0.lcssa, 1 ; [#uses=1]
+ %76 = add nsw i32 %j.0.lcssa, -1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5
+ %i.1 = phi i32 [ %75, %bb6 ], [ %i.0.lcssa, %bb5 ] ; [#uses=4]
+ %j.2 = phi i32 [ %76, %bb6 ], [ %j.0.lcssa, %bb5 ] ; [#uses=4]
+ %77 = icmp sgt i32 %i.1, %j.2 ; [#uses=1]
+ br i1 %77, label %bb8, label %bb1.outer
+
+bb8: ; preds = %bb7
+ %78 = icmp sgt i32 %j.2, %lo ; [#uses=1]
+ br i1 %78, label %bb9, label %bb10
+
+bb9: ; preds = %bb8
+ call void @_ZN20btAlignedObjectArrayIP17btTypedConstraintE17quickSortInternalI33btSortConstraintOnIslandPredicateEEvT_ii(%"struct.btAlignedObjectArray<btTypedConstraint*>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %1, i32 %lo, i32 %j.2)
+ br label %bb10
+
+bb10: ; preds = %bb9, %bb8
+ %79 = icmp slt i32 %i.1, %hi ; [#uses=1]
+ br i1 %79, label %bb11, label %return
+
+bb11: ; preds = %bb10
+ call void @_ZN20btAlignedObjectArrayIP17btTypedConstraintE17quickSortInternalI33btSortConstraintOnIslandPredicateEEvT_ii(%"struct.btAlignedObjectArray<btTypedConstraint*>"* %this, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 %i.1, i32 %hi)
+ ret void
+
+return: ; preds = %bb10
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld9serializeEP12btSerializer(%struct.btDiscreteDynamicsWorld* %this, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 8 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btActionInterface*)* ; [#uses=1]
+ tail call void %4(%struct.btActionInterface* %serializer)
+ tail call void @_ZN23btDiscreteDynamicsWorld20serializeRigidBodiesEP12btSerializer(%struct.btDiscreteDynamicsWorld* %this, %struct.btActionInterface* %serializer)
+ %5 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorld25serializeCollisionObjectsEP12btSerializer(%struct.btCollisionWorld* %5, %struct.btActionInterface* %serializer)
+ %6 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 9 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to void (%struct.btActionInterface*)* ; [#uses=1]
+ tail call void %9(%struct.btActionInterface* %serializer)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld19setConstraintSolverEP18btConstraintSolver(%struct.btDiscreteDynamicsWorld* nocapture %this, %struct.btActionInterface* %solver) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 8 ; [#uses=2]
+ %1 = load i8* %0, align 1 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load %struct.btActionInterface** %2, align 4 ; [#uses=1]
+ %4 = bitcast %struct.btActionInterface* %3 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %4)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ store i8 0, i8* %0, align 1
+ %5 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %solver, %struct.btActionInterface** %5, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld19debugDrawConstraintEP17btTypedConstraint(%struct.btDiscreteDynamicsWorld* %this, %struct.btTypedConstraint* %constraint) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %3 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %4 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %5 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %6 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %7 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %8 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %9 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %tr = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %tr7 = alloca %struct.btTransform, align 8 ; [#uses=19]
+ %normal = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %axis = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %tr28 = alloca %struct.btTransform, align 8 ; [#uses=19]
+ %pPrev = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %pivot44 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %normal46 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %axis1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %pCur = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %tr64 = alloca %struct.btTransform, align 8 ; [#uses=19]
+ %up = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %axis77 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %ref = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %normal90 = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %bbMin = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %bbMax = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %tr103 = alloca %struct.btTransform, align 8 ; [#uses=18]
+ %li_min = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %li_max = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %normal117 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %axis119 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %10 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=22]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 4 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=22]
+ %15 = bitcast i32 (...)* %13 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %16 = call %struct.btActionInterface* %15(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btActionInterface* %16, i32 0, i32 0 ; [#uses=1]
+ %18 = load i32 (...)*** %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i32 (...)** %18, i32 12 ; [#uses=1]
+ %20 = load i32 (...)** %19, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %20 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %22 = call i32 %21(%struct.btActionInterface* %16) ; [#uses=1]
+ %23 = lshr i32 %22, 11 ; [#uses=1]
+ %.lobit = and i32 %23, 1 ; [#uses=1]
+ %24 = trunc i32 %.lobit to i8 ; [#uses=5]
+ %25 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds i32 (...)** %25, i32 4 ; [#uses=1]
+ %27 = load i32 (...)** %26, align 4 ; [#uses=1]
+ %28 = bitcast i32 (...)* %27 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %29 = call %struct.btActionInterface* %28(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %30 = getelementptr inbounds %struct.btActionInterface* %29, i32 0, i32 0 ; [#uses=1]
+ %31 = load i32 (...)*** %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds i32 (...)** %31, i32 12 ; [#uses=1]
+ %33 = load i32 (...)** %32, align 4 ; [#uses=1]
+ %34 = bitcast i32 (...)* %33 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %35 = call i32 %34(%struct.btActionInterface* %29) ; [#uses=1]
+ %36 = lshr i32 %35, 12 ; [#uses=1]
+ %.lobit129 = and i32 %36, 1 ; [#uses=1]
+ %37 = trunc i32 %.lobit129 to i8 ; [#uses=4]
+ %38 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 0, i32 8 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=24]
+ %40 = fcmp ugt float %39, 0.000000e+00 ; [#uses=1]
+ br i1 %40, label %bb, label %return
+
+bb: ; preds = %entry
+ %41 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 0, i32 1, i32 0 ; [#uses=1]
+ %42 = load i32* %41, align 4 ; [#uses=1]
+ switch i32 %42, label %return [
+ i32 3, label %bb1
+ i32 4, label %bb4
+ i32 5, label %bb25
+ i32 6, label %bb61
+ i32 7, label %bb100
+ ]
+
+bb1: ; preds = %bb
+ %43 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %43, align 8
+ %44 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %44, align 4
+ %45 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %45, align 8
+ %46 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %46, align 4
+ %47 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %47, align 8
+ %48 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %48, align 4
+ %49 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %49, align 8
+ %50 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %51, align 8
+ %52 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %53, align 8
+ %54 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %54, align 4
+ %55 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ store float 0.000000e+00, float* %55, align 8
+ %56 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 1, i32 0, i32 1 ; [#uses=3]
+ store float 0.000000e+00, float* %56, align 4
+ %57 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ store float 0.000000e+00, float* %57, align 8
+ %58 = getelementptr inbounds %struct.btTransform* %tr, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 8 ; [#uses=1]
+ %60 = bitcast %struct.btTypedConstraint* %59 to float* ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=3]
+ %62 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 8, i32 1 ; [#uses=1]
+ %63 = bitcast %struct.btHashInt* %62 to float* ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=3]
+ %65 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 8, i32 2 ; [#uses=1]
+ %66 = bitcast i32* %65 to float* ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=3]
+ %68 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 0, i32 5 ; [#uses=1]
+ %69 = load %struct.btRigidBody** %68, align 4 ; [#uses=12]
+ %70 = getelementptr inbounds %struct.btRigidBody* %69, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ %72 = fmul float %71, %61 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btRigidBody* %69, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = fmul float %74, %64 ; [#uses=1]
+ %76 = fadd float %72, %75 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btRigidBody* %69, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ %79 = fmul float %78, %67 ; [#uses=1]
+ %80 = fadd float %76, %79 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btRigidBody* %69, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ %83 = fadd float %80, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btRigidBody* %69, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = fmul float %85, %61 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btRigidBody* %69, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=1]
+ %89 = fmul float %88, %64 ; [#uses=1]
+ %90 = fadd float %86, %89 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btRigidBody* %69, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=1]
+ %93 = fmul float %92, %67 ; [#uses=1]
+ %94 = fadd float %90, %93 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btRigidBody* %69, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ %97 = fadd float %94, %96 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btRigidBody* %69, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ %100 = fmul float %99, %61 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btRigidBody* %69, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fmul float %102, %64 ; [#uses=1]
+ %104 = fadd float %100, %103 ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btRigidBody* %69, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %106 = load float* %105, align 4 ; [#uses=1]
+ %107 = fmul float %106, %67 ; [#uses=1]
+ %108 = fadd float %104, %107 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btRigidBody* %69, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %110 = load float* %109, align 4 ; [#uses=1]
+ %111 = fadd float %108, %110 ; [#uses=1]
+ store float %111, float* %55, align 8
+ store float %97, float* %56, align 4
+ store float %83, float* %57, align 8
+ store float 0.000000e+00, float* %58, align 4
+ %112 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %113 = getelementptr inbounds i32 (...)** %112, i32 4 ; [#uses=1]
+ %114 = load i32 (...)** %113, align 4 ; [#uses=1]
+ %115 = bitcast i32 (...)* %114 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %116 = call %struct.btActionInterface* %115(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %117 = getelementptr inbounds %struct.btActionInterface* %116, i32 0, i32 0 ; [#uses=1]
+ %118 = load i32 (...)*** %117, align 4 ; [#uses=1]
+ %119 = getelementptr inbounds i32 (...)** %118, i32 14 ; [#uses=1]
+ %120 = load i32 (...)** %119, align 4 ; [#uses=1]
+ %121 = bitcast i32 (...)* %120 to void (%struct.btActionInterface*, %struct.btTransform*, float)* ; [#uses=1]
+ call void %121(%struct.btActionInterface* %116, %struct.btTransform* %tr, float %39)
+ %122 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 8, i32 4 ; [#uses=3]
+ %123 = bitcast i8* %122 to float* ; [#uses=1]
+ %124 = load float* %123, align 4 ; [#uses=3]
+ %125 = getelementptr inbounds i8* %122, i32 4 ; [#uses=1]
+ %126 = bitcast i8* %125 to float* ; [#uses=1]
+ %127 = load float* %126, align 4 ; [#uses=3]
+ %128 = getelementptr inbounds i8* %122, i32 8 ; [#uses=1]
+ %129 = bitcast i8* %128 to float* ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=3]
+ %131 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 0, i32 6 ; [#uses=1]
+ %132 = load %struct.btRigidBody** %131, align 4 ; [#uses=12]
+ %133 = getelementptr inbounds %struct.btRigidBody* %132, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %134 = load float* %133, align 4 ; [#uses=1]
+ %135 = fmul float %134, %124 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btRigidBody* %132, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %137 = load float* %136, align 4 ; [#uses=1]
+ %138 = fmul float %137, %127 ; [#uses=1]
+ %139 = fadd float %135, %138 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btRigidBody* %132, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ %142 = fmul float %141, %130 ; [#uses=1]
+ %143 = fadd float %139, %142 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btRigidBody* %132, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ %146 = fadd float %143, %145 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btRigidBody* %132, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %148 = load float* %147, align 4 ; [#uses=1]
+ %149 = fmul float %148, %124 ; [#uses=1]
+ %150 = getelementptr inbounds %struct.btRigidBody* %132, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %151 = load float* %150, align 4 ; [#uses=1]
+ %152 = fmul float %151, %127 ; [#uses=1]
+ %153 = fadd float %149, %152 ; [#uses=1]
+ %154 = getelementptr inbounds %struct.btRigidBody* %132, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %155 = load float* %154, align 4 ; [#uses=1]
+ %156 = fmul float %155, %130 ; [#uses=1]
+ %157 = fadd float %153, %156 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btRigidBody* %132, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %159 = load float* %158, align 4 ; [#uses=1]
+ %160 = fadd float %157, %159 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btRigidBody* %132, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ %163 = fmul float %162, %124 ; [#uses=1]
+ %164 = getelementptr inbounds %struct.btRigidBody* %132, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %165 = load float* %164, align 4 ; [#uses=1]
+ %166 = fmul float %165, %127 ; [#uses=1]
+ %167 = fadd float %163, %166 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btRigidBody* %132, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=1]
+ %170 = fmul float %169, %130 ; [#uses=1]
+ %171 = fadd float %167, %170 ; [#uses=1]
+ %172 = getelementptr inbounds %struct.btRigidBody* %132, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %173 = load float* %172, align 4 ; [#uses=1]
+ %174 = fadd float %171, %173 ; [#uses=1]
+ store float %174, float* %55, align 8
+ store float %160, float* %56, align 4
+ store float %146, float* %57, align 8
+ store float 0.000000e+00, float* %58, align 4
+ %toBool = icmp eq i8 %24, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb3
+
+bb3: ; preds = %bb1
+ %175 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %176 = getelementptr inbounds i32 (...)** %175, i32 4 ; [#uses=1]
+ %177 = load i32 (...)** %176, align 4 ; [#uses=1]
+ %178 = bitcast i32 (...)* %177 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %179 = call %struct.btActionInterface* %178(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %180 = getelementptr inbounds %struct.btActionInterface* %179, i32 0, i32 0 ; [#uses=1]
+ %181 = load i32 (...)*** %180, align 4 ; [#uses=1]
+ %182 = getelementptr inbounds i32 (...)** %181, i32 14 ; [#uses=1]
+ %183 = load i32 (...)** %182, align 4 ; [#uses=1]
+ %184 = bitcast i32 (...)* %183 to void (%struct.btActionInterface*, %struct.btTransform*, float)* ; [#uses=1]
+ call void %184(%struct.btActionInterface* %179, %struct.btTransform* %tr, float %39)
+ ret void
+
+bb4: ; preds = %bb
+ %185 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 15 ; [#uses=1]
+ %186 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 0, i32 5 ; [#uses=1]
+ %187 = load %struct.btRigidBody** %186, align 4 ; [#uses=12]
+ %188 = getelementptr inbounds %struct.btRigidBody* %187, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %189 = load float* %188, align 4 ; [#uses=4]
+ %190 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 16, i32 3 ; [#uses=1]
+ %191 = bitcast %struct.btHashInt* %190 to float* ; [#uses=1]
+ %192 = load float* %191, align 4 ; [#uses=3]
+ %193 = fmul float %189, %192 ; [#uses=1]
+ %194 = getelementptr inbounds %struct.btRigidBody* %187, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %195 = load float* %194, align 4 ; [#uses=4]
+ %196 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 16, i32 4 ; [#uses=1]
+ %197 = bitcast i8* %196 to float* ; [#uses=1]
+ %198 = load float* %197, align 4 ; [#uses=3]
+ %199 = fmul float %195, %198 ; [#uses=1]
+ %200 = fadd float %193, %199 ; [#uses=1]
+ %201 = getelementptr inbounds %struct.btRigidBody* %187, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %202 = load float* %201, align 4 ; [#uses=4]
+ %203 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 16, i32 5 ; [#uses=1]
+ %204 = bitcast %struct.btRigidBody** %203 to float* ; [#uses=1]
+ %205 = load float* %204, align 4 ; [#uses=3]
+ %206 = fmul float %202, %205 ; [#uses=1]
+ %207 = fadd float %200, %206 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btRigidBody* %187, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %209 = load float* %208, align 4 ; [#uses=1]
+ %210 = fadd float %207, %209 ; [#uses=1]
+ %211 = getelementptr inbounds %struct.btRigidBody* %187, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %212 = load float* %211, align 4 ; [#uses=4]
+ %213 = fmul float %212, %192 ; [#uses=1]
+ %214 = getelementptr inbounds %struct.btRigidBody* %187, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %215 = load float* %214, align 4 ; [#uses=4]
+ %216 = fmul float %215, %198 ; [#uses=1]
+ %217 = fadd float %213, %216 ; [#uses=1]
+ %218 = getelementptr inbounds %struct.btRigidBody* %187, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %219 = load float* %218, align 4 ; [#uses=4]
+ %220 = fmul float %219, %205 ; [#uses=1]
+ %221 = fadd float %217, %220 ; [#uses=1]
+ %222 = getelementptr inbounds %struct.btRigidBody* %187, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %223 = load float* %222, align 4 ; [#uses=1]
+ %224 = fadd float %221, %223 ; [#uses=1]
+ %225 = getelementptr inbounds %struct.btRigidBody* %187, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %226 = load float* %225, align 4 ; [#uses=4]
+ %227 = fmul float %226, %192 ; [#uses=1]
+ %228 = getelementptr inbounds %struct.btRigidBody* %187, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %229 = load float* %228, align 4 ; [#uses=4]
+ %230 = fmul float %229, %198 ; [#uses=1]
+ %231 = fadd float %227, %230 ; [#uses=1]
+ %232 = getelementptr inbounds %struct.btRigidBody* %187, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %233 = load float* %232, align 4 ; [#uses=4]
+ %234 = fmul float %233, %205 ; [#uses=1]
+ %235 = fadd float %231, %234 ; [#uses=1]
+ %236 = getelementptr inbounds %struct.btRigidBody* %187, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %237 = load float* %236, align 4 ; [#uses=1]
+ %238 = fadd float %235, %237 ; [#uses=1]
+ %239 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 15, i32 2 ; [#uses=1]
+ %240 = bitcast i32* %239 to float* ; [#uses=1]
+ %241 = load float* %240, align 4 ; [#uses=3]
+ %242 = fmul float %241, %189 ; [#uses=1]
+ %243 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 15, i32 6 ; [#uses=1]
+ %244 = bitcast %struct.btRigidBody** %243 to float* ; [#uses=1]
+ %245 = load float* %244, align 4 ; [#uses=3]
+ %246 = fmul float %245, %195 ; [#uses=1]
+ %247 = fadd float %242, %246 ; [#uses=1]
+ %248 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 16, i32 1 ; [#uses=1]
+ %249 = bitcast %struct.btHashInt* %248 to float* ; [#uses=1]
+ %250 = load float* %249, align 4 ; [#uses=3]
+ %251 = fmul float %250, %202 ; [#uses=1]
+ %252 = fadd float %247, %251 ; [#uses=1]
+ %253 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 15, i32 1 ; [#uses=1]
+ %254 = bitcast %struct.btHashInt* %253 to float* ; [#uses=1]
+ %255 = load float* %254, align 4 ; [#uses=3]
+ %256 = fmul float %255, %189 ; [#uses=1]
+ %257 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 15, i32 5 ; [#uses=1]
+ %258 = bitcast %struct.btRigidBody** %257 to float* ; [#uses=1]
+ %259 = load float* %258, align 4 ; [#uses=3]
+ %260 = fmul float %259, %195 ; [#uses=1]
+ %261 = fadd float %256, %260 ; [#uses=1]
+ %262 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 16 ; [#uses=1]
+ %263 = bitcast %struct.btTypedConstraint* %262 to float* ; [#uses=1]
+ %264 = load float* %263, align 4 ; [#uses=3]
+ %265 = fmul float %264, %202 ; [#uses=1]
+ %266 = fadd float %261, %265 ; [#uses=1]
+ %267 = bitcast %struct.btTypedConstraint* %185 to float* ; [#uses=1]
+ %268 = load float* %267, align 4 ; [#uses=3]
+ %269 = fmul float %268, %189 ; [#uses=1]
+ %270 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 15, i32 4 ; [#uses=1]
+ %271 = bitcast i8* %270 to float* ; [#uses=1]
+ %272 = load float* %271, align 4 ; [#uses=3]
+ %273 = fmul float %272, %195 ; [#uses=1]
+ %274 = fadd float %269, %273 ; [#uses=1]
+ %275 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 15, i32 8 ; [#uses=1]
+ %276 = load float* %275, align 4 ; [#uses=3]
+ %277 = fmul float %276, %202 ; [#uses=1]
+ %278 = fadd float %274, %277 ; [#uses=1]
+ %279 = fmul float %241, %212 ; [#uses=1]
+ %280 = fmul float %245, %215 ; [#uses=1]
+ %281 = fadd float %279, %280 ; [#uses=1]
+ %282 = fmul float %250, %219 ; [#uses=1]
+ %283 = fadd float %281, %282 ; [#uses=1]
+ %284 = fmul float %255, %212 ; [#uses=1]
+ %285 = fmul float %259, %215 ; [#uses=1]
+ %286 = fadd float %284, %285 ; [#uses=1]
+ %287 = fmul float %264, %219 ; [#uses=1]
+ %288 = fadd float %286, %287 ; [#uses=1]
+ %289 = fmul float %268, %212 ; [#uses=1]
+ %290 = fmul float %272, %215 ; [#uses=1]
+ %291 = fadd float %289, %290 ; [#uses=1]
+ %292 = fmul float %276, %219 ; [#uses=1]
+ %293 = fadd float %291, %292 ; [#uses=1]
+ %294 = fmul float %241, %226 ; [#uses=1]
+ %295 = fmul float %245, %229 ; [#uses=1]
+ %296 = fadd float %294, %295 ; [#uses=1]
+ %297 = fmul float %250, %233 ; [#uses=1]
+ %298 = fadd float %296, %297 ; [#uses=1]
+ %299 = fmul float %255, %226 ; [#uses=1]
+ %300 = fmul float %259, %229 ; [#uses=1]
+ %301 = fadd float %299, %300 ; [#uses=1]
+ %302 = fmul float %264, %233 ; [#uses=1]
+ %303 = fadd float %301, %302 ; [#uses=1]
+ %304 = fmul float %268, %226 ; [#uses=1]
+ %305 = fmul float %272, %229 ; [#uses=1]
+ %306 = fadd float %304, %305 ; [#uses=1]
+ %307 = fmul float %276, %233 ; [#uses=1]
+ %308 = fadd float %306, %307 ; [#uses=1]
+ %309 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %308, float* %309, align 8
+ %310 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float %303, float* %310, align 4
+ %311 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %298, float* %311, align 8
+ %312 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %312, align 4
+ %313 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=3]
+ store float %293, float* %313, align 8
+ %314 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float %288, float* %314, align 4
+ %315 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=3]
+ store float %283, float* %315, align 8
+ %316 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %316, align 4
+ %317 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ store float %278, float* %317, align 8
+ %318 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ store float %266, float* %318, align 4
+ %319 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ store float %252, float* %319, align 8
+ %320 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %320, align 4
+ %321 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float %238, float* %321, align 8
+ %322 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float %224, float* %322, align 4
+ %323 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float %210, float* %323, align 8
+ %324 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %324, align 4
+ %toBool11 = icmp eq i8 %24, 0 ; [#uses=2]
+ br i1 %toBool11, label %bb13, label %bb12
+
+bb12: ; preds = %bb4
+ %325 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %326 = getelementptr inbounds i32 (...)** %325, i32 4 ; [#uses=1]
+ %327 = load i32 (...)** %326, align 4 ; [#uses=1]
+ %328 = bitcast i32 (...)* %327 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %329 = call %struct.btActionInterface* %328(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %330 = getelementptr inbounds %struct.btActionInterface* %329, i32 0, i32 0 ; [#uses=1]
+ %331 = load i32 (...)*** %330, align 4 ; [#uses=1]
+ %332 = getelementptr inbounds i32 (...)** %331, i32 14 ; [#uses=1]
+ %333 = load i32 (...)** %332, align 4 ; [#uses=1]
+ %334 = bitcast i32 (...)* %333 to void (%struct.btActionInterface*, %struct.btTransform*, float)* ; [#uses=1]
+ call void %334(%struct.btActionInterface* %329, %struct.btTransform* %tr7, float %39)
+ br label %bb13
+
+bb13: ; preds = %bb12, %bb4
+ %335 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 16, i32 7 ; [#uses=12]
+ %336 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 0, i32 6 ; [#uses=1]
+ %337 = load %struct.btRigidBody** %336, align 4 ; [#uses=12]
+ %338 = getelementptr inbounds %struct.btRigidBody* %337, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %339 = load float* %338, align 4 ; [#uses=4]
+ %340 = getelementptr inbounds float* %335, i32 12 ; [#uses=1]
+ %341 = load float* %340, align 4 ; [#uses=3]
+ %342 = fmul float %339, %341 ; [#uses=1]
+ %343 = getelementptr inbounds %struct.btRigidBody* %337, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %344 = load float* %343, align 4 ; [#uses=4]
+ %345 = getelementptr inbounds float* %335, i32 13 ; [#uses=1]
+ %346 = load float* %345, align 4 ; [#uses=3]
+ %347 = fmul float %344, %346 ; [#uses=1]
+ %348 = fadd float %342, %347 ; [#uses=1]
+ %349 = getelementptr inbounds %struct.btRigidBody* %337, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %350 = load float* %349, align 4 ; [#uses=4]
+ %351 = getelementptr inbounds float* %335, i32 14 ; [#uses=1]
+ %352 = load float* %351, align 4 ; [#uses=3]
+ %353 = fmul float %350, %352 ; [#uses=1]
+ %354 = fadd float %348, %353 ; [#uses=1]
+ %355 = getelementptr inbounds %struct.btRigidBody* %337, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %356 = load float* %355, align 4 ; [#uses=1]
+ %357 = fadd float %354, %356 ; [#uses=1]
+ %358 = getelementptr inbounds %struct.btRigidBody* %337, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %359 = load float* %358, align 4 ; [#uses=4]
+ %360 = fmul float %359, %341 ; [#uses=1]
+ %361 = getelementptr inbounds %struct.btRigidBody* %337, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %362 = load float* %361, align 4 ; [#uses=4]
+ %363 = fmul float %362, %346 ; [#uses=1]
+ %364 = fadd float %360, %363 ; [#uses=1]
+ %365 = getelementptr inbounds %struct.btRigidBody* %337, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %366 = load float* %365, align 4 ; [#uses=4]
+ %367 = fmul float %366, %352 ; [#uses=1]
+ %368 = fadd float %364, %367 ; [#uses=1]
+ %369 = getelementptr inbounds %struct.btRigidBody* %337, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %370 = load float* %369, align 4 ; [#uses=1]
+ %371 = fadd float %368, %370 ; [#uses=1]
+ %372 = getelementptr inbounds %struct.btRigidBody* %337, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %373 = load float* %372, align 4 ; [#uses=4]
+ %374 = fmul float %373, %341 ; [#uses=1]
+ %375 = getelementptr inbounds %struct.btRigidBody* %337, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %376 = load float* %375, align 4 ; [#uses=4]
+ %377 = fmul float %376, %346 ; [#uses=1]
+ %378 = fadd float %374, %377 ; [#uses=1]
+ %379 = getelementptr inbounds %struct.btRigidBody* %337, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %380 = load float* %379, align 4 ; [#uses=4]
+ %381 = fmul float %380, %352 ; [#uses=1]
+ %382 = fadd float %378, %381 ; [#uses=1]
+ %383 = getelementptr inbounds %struct.btRigidBody* %337, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %384 = load float* %383, align 4 ; [#uses=1]
+ %385 = fadd float %382, %384 ; [#uses=1]
+ %386 = getelementptr inbounds float* %335, i32 2 ; [#uses=1]
+ %387 = load float* %386, align 4 ; [#uses=3]
+ %388 = fmul float %387, %339 ; [#uses=1]
+ %389 = getelementptr inbounds float* %335, i32 6 ; [#uses=1]
+ %390 = load float* %389, align 4 ; [#uses=3]
+ %391 = fmul float %390, %344 ; [#uses=1]
+ %392 = fadd float %388, %391 ; [#uses=1]
+ %393 = getelementptr inbounds float* %335, i32 10 ; [#uses=1]
+ %394 = load float* %393, align 4 ; [#uses=3]
+ %395 = fmul float %394, %350 ; [#uses=1]
+ %396 = fadd float %392, %395 ; [#uses=1]
+ %397 = getelementptr inbounds float* %335, i32 1 ; [#uses=1]
+ %398 = load float* %397, align 4 ; [#uses=3]
+ %399 = fmul float %398, %339 ; [#uses=1]
+ %400 = getelementptr inbounds float* %335, i32 5 ; [#uses=1]
+ %401 = load float* %400, align 4 ; [#uses=3]
+ %402 = fmul float %401, %344 ; [#uses=1]
+ %403 = fadd float %399, %402 ; [#uses=1]
+ %404 = getelementptr inbounds float* %335, i32 9 ; [#uses=1]
+ %405 = load float* %404, align 4 ; [#uses=3]
+ %406 = fmul float %405, %350 ; [#uses=1]
+ %407 = fadd float %403, %406 ; [#uses=1]
+ %408 = load float* %335, align 4 ; [#uses=3]
+ %409 = fmul float %408, %339 ; [#uses=1]
+ %410 = getelementptr inbounds float* %335, i32 4 ; [#uses=1]
+ %411 = load float* %410, align 4 ; [#uses=3]
+ %412 = fmul float %411, %344 ; [#uses=1]
+ %413 = fadd float %409, %412 ; [#uses=1]
+ %414 = getelementptr inbounds float* %335, i32 8 ; [#uses=1]
+ %415 = load float* %414, align 4 ; [#uses=3]
+ %416 = fmul float %415, %350 ; [#uses=1]
+ %417 = fadd float %413, %416 ; [#uses=1]
+ %418 = fmul float %387, %359 ; [#uses=1]
+ %419 = fmul float %390, %362 ; [#uses=1]
+ %420 = fadd float %418, %419 ; [#uses=1]
+ %421 = fmul float %394, %366 ; [#uses=1]
+ %422 = fadd float %420, %421 ; [#uses=1]
+ %423 = fmul float %398, %359 ; [#uses=1]
+ %424 = fmul float %401, %362 ; [#uses=1]
+ %425 = fadd float %423, %424 ; [#uses=1]
+ %426 = fmul float %405, %366 ; [#uses=1]
+ %427 = fadd float %425, %426 ; [#uses=1]
+ %428 = fmul float %408, %359 ; [#uses=1]
+ %429 = fmul float %411, %362 ; [#uses=1]
+ %430 = fadd float %428, %429 ; [#uses=1]
+ %431 = fmul float %415, %366 ; [#uses=1]
+ %432 = fadd float %430, %431 ; [#uses=1]
+ %433 = fmul float %387, %373 ; [#uses=1]
+ %434 = fmul float %390, %376 ; [#uses=1]
+ %435 = fadd float %433, %434 ; [#uses=1]
+ %436 = fmul float %394, %380 ; [#uses=1]
+ %437 = fadd float %435, %436 ; [#uses=1]
+ %438 = fmul float %398, %373 ; [#uses=1]
+ %439 = fmul float %401, %376 ; [#uses=1]
+ %440 = fadd float %438, %439 ; [#uses=1]
+ %441 = fmul float %405, %380 ; [#uses=1]
+ %442 = fadd float %440, %441 ; [#uses=1]
+ %443 = fmul float %408, %373 ; [#uses=1]
+ %444 = fmul float %411, %376 ; [#uses=1]
+ %445 = fadd float %443, %444 ; [#uses=1]
+ %446 = fmul float %415, %380 ; [#uses=1]
+ %447 = fadd float %445, %446 ; [#uses=1]
+ store float %447, float* %309, align 8
+ store float %442, float* %310, align 4
+ store float %437, float* %311, align 8
+ store float 0.000000e+00, float* %312, align 4
+ store float %432, float* %313, align 8
+ store float %427, float* %314, align 4
+ store float %422, float* %315, align 8
+ store float 0.000000e+00, float* %316, align 4
+ store float %417, float* %317, align 8
+ store float %407, float* %318, align 4
+ store float %396, float* %319, align 8
+ store float 0.000000e+00, float* %320, align 4
+ store float %385, float* %321, align 8
+ store float %371, float* %322, align 4
+ store float %357, float* %323, align 8
+ store float 0.000000e+00, float* %324, align 4
+ br i1 %toBool11, label %bb16, label %bb15
+
+bb15: ; preds = %bb13
+ %448 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %449 = getelementptr inbounds i32 (...)** %448, i32 4 ; [#uses=1]
+ %450 = load i32 (...)** %449, align 4 ; [#uses=1]
+ %451 = bitcast i32 (...)* %450 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %452 = call %struct.btActionInterface* %451(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %453 = getelementptr inbounds %struct.btActionInterface* %452, i32 0, i32 0 ; [#uses=1]
+ %454 = load i32 (...)*** %453, align 4 ; [#uses=1]
+ %455 = getelementptr inbounds i32 (...)** %454, i32 14 ; [#uses=1]
+ %456 = load i32 (...)** %455, align 4 ; [#uses=1]
+ %457 = bitcast i32 (...)* %456 to void (%struct.btActionInterface*, %struct.btTransform*, float)* ; [#uses=1]
+ call void %457(%struct.btActionInterface* %452, %struct.btTransform* %tr7, float %39)
+ br label %bb16
+
+bb16: ; preds = %bb15, %bb13
+ %458 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 19, i32 1 ; [#uses=1]
+ %459 = bitcast %struct.btHashInt* %458 to float* ; [#uses=1]
+ %460 = load float* %459, align 4 ; [#uses=3]
+ %461 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 19, i32 2 ; [#uses=1]
+ %462 = bitcast i32* %461 to float* ; [#uses=1]
+ %463 = load float* %462, align 4 ; [#uses=3]
+ %464 = fcmp oeq float %460, %463 ; [#uses=1]
+ br i1 %464, label %return, label %bb17
+
+bb17: ; preds = %bb16
+ %465 = fcmp ogt float %460, %463 ; [#uses=3]
+ %toBool20 = icmp eq i8 %37, 0 ; [#uses=1]
+ br i1 %toBool20, label %return, label %bb21
+
+bb21: ; preds = %bb17
+ %466 = zext i1 %465 to i8 ; [#uses=1]
+ %drawSect.0 = xor i8 %466, 1 ; [#uses=1]
+ %maxAng.0 = select i1 %465, float 0x401921FB60000000, float %463 ; [#uses=1]
+ %minAng.0 = select i1 %465, float 0.000000e+00, float %460 ; [#uses=1]
+ %467 = getelementptr inbounds %struct.btTransform* %tr7, i32 0, i32 1 ; [#uses=1]
+ %468 = load float* %311, align 8 ; [#uses=1]
+ %469 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %468, float* %469, align 8
+ %470 = load float* %315, align 8 ; [#uses=1]
+ %471 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %470, float* %471, align 4
+ %472 = load float* %319, align 8 ; [#uses=1]
+ %473 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %472, float* %473, align 8
+ %474 = getelementptr inbounds %struct.btQuadWord* %normal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %474, align 4
+ %475 = load float* %309, align 8 ; [#uses=1]
+ %476 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %475, float* %476, align 8
+ %477 = load float* %313, align 8 ; [#uses=1]
+ %478 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %477, float* %478, align 4
+ %479 = load float* %317, align 8 ; [#uses=1]
+ %480 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %479, float* %480, align 8
+ %481 = getelementptr inbounds %struct.btQuadWord* %axis, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %481, align 4
+ %482 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %483 = getelementptr inbounds i32 (...)** %482, i32 4 ; [#uses=1]
+ %484 = load i32 (...)** %483, align 4 ; [#uses=1]
+ %485 = bitcast i32 (...)* %484 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %486 = call %struct.btActionInterface* %485(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %487 = getelementptr inbounds %struct.btActionInterface* %486, i32 0, i32 0 ; [#uses=1]
+ %488 = load i32 (...)*** %487, align 4 ; [#uses=1]
+ %489 = getelementptr inbounds i32 (...)** %488, i32 15 ; [#uses=1]
+ %490 = load i32 (...)** %489, align 4 ; [#uses=1]
+ %491 = getelementptr inbounds %struct.btQuadWord* %9, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %491, align 8
+ %492 = getelementptr inbounds %struct.btQuadWord* %9, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %492, align 4
+ %493 = getelementptr inbounds %struct.btQuadWord* %9, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %493, align 8
+ %494 = getelementptr inbounds %struct.btQuadWord* %9, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %494, align 4
+ %495 = bitcast i32 (...)* %490 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*, float, float, float, float, %struct.btQuadWord*, i8, float)* ; [#uses=1]
+ call void %495(%struct.btActionInterface* %486, %struct.btQuadWord* %467, %struct.btQuadWord* %normal, %struct.btQuadWord* %axis, float %39, float %39, float %minAng.0, float %maxAng.0, %struct.btQuadWord* %9, i8 zeroext %drawSect.0, float 1.000000e+01)
+ ret void
+
+bb25: ; preds = %bb
+ %496 = bitcast %struct.btTypedConstraint* %constraint to %struct.btConeTwistConstraint* ; [#uses=2]
+ %497 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 8 ; [#uses=1]
+ %498 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 0, i32 5 ; [#uses=2]
+ %499 = load %struct.btRigidBody** %498, align 4 ; [#uses=12]
+ %500 = getelementptr inbounds %struct.btRigidBody* %499, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %501 = load float* %500, align 4 ; [#uses=4]
+ %502 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 9, i32 3 ; [#uses=1]
+ %503 = bitcast %struct.btHashInt* %502 to float* ; [#uses=2]
+ %504 = load float* %503, align 4 ; [#uses=3]
+ %505 = fmul float %501, %504 ; [#uses=1]
+ %506 = getelementptr inbounds %struct.btRigidBody* %499, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %507 = load float* %506, align 4 ; [#uses=4]
+ %508 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 9, i32 4 ; [#uses=1]
+ %509 = bitcast i8* %508 to float* ; [#uses=2]
+ %510 = load float* %509, align 4 ; [#uses=3]
+ %511 = fmul float %507, %510 ; [#uses=1]
+ %512 = fadd float %505, %511 ; [#uses=1]
+ %513 = getelementptr inbounds %struct.btRigidBody* %499, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %514 = load float* %513, align 4 ; [#uses=4]
+ %515 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 9, i32 5 ; [#uses=1]
+ %516 = bitcast %struct.btRigidBody** %515 to float* ; [#uses=2]
+ %517 = load float* %516, align 4 ; [#uses=3]
+ %518 = fmul float %514, %517 ; [#uses=1]
+ %519 = fadd float %512, %518 ; [#uses=1]
+ %520 = getelementptr inbounds %struct.btRigidBody* %499, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %521 = load float* %520, align 4 ; [#uses=1]
+ %522 = fadd float %519, %521 ; [#uses=1]
+ %523 = getelementptr inbounds %struct.btRigidBody* %499, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %524 = load float* %523, align 4 ; [#uses=4]
+ %525 = fmul float %524, %504 ; [#uses=1]
+ %526 = getelementptr inbounds %struct.btRigidBody* %499, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %527 = load float* %526, align 4 ; [#uses=4]
+ %528 = fmul float %527, %510 ; [#uses=1]
+ %529 = fadd float %525, %528 ; [#uses=1]
+ %530 = getelementptr inbounds %struct.btRigidBody* %499, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %531 = load float* %530, align 4 ; [#uses=4]
+ %532 = fmul float %531, %517 ; [#uses=1]
+ %533 = fadd float %529, %532 ; [#uses=1]
+ %534 = getelementptr inbounds %struct.btRigidBody* %499, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %535 = load float* %534, align 4 ; [#uses=1]
+ %536 = fadd float %533, %535 ; [#uses=1]
+ %537 = getelementptr inbounds %struct.btRigidBody* %499, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %538 = load float* %537, align 4 ; [#uses=4]
+ %539 = fmul float %538, %504 ; [#uses=1]
+ %540 = getelementptr inbounds %struct.btRigidBody* %499, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %541 = load float* %540, align 4 ; [#uses=4]
+ %542 = fmul float %541, %510 ; [#uses=1]
+ %543 = fadd float %539, %542 ; [#uses=1]
+ %544 = getelementptr inbounds %struct.btRigidBody* %499, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %545 = load float* %544, align 4 ; [#uses=4]
+ %546 = fmul float %545, %517 ; [#uses=1]
+ %547 = fadd float %543, %546 ; [#uses=1]
+ %548 = getelementptr inbounds %struct.btRigidBody* %499, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %549 = load float* %548, align 4 ; [#uses=1]
+ %550 = fadd float %547, %549 ; [#uses=1]
+ %551 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 8, i32 2 ; [#uses=1]
+ %552 = bitcast i32* %551 to float* ; [#uses=2]
+ %553 = load float* %552, align 4 ; [#uses=3]
+ %554 = fmul float %553, %501 ; [#uses=1]
+ %555 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 8, i32 6 ; [#uses=1]
+ %556 = bitcast %struct.btRigidBody** %555 to float* ; [#uses=2]
+ %557 = load float* %556, align 4 ; [#uses=3]
+ %558 = fmul float %557, %507 ; [#uses=1]
+ %559 = fadd float %554, %558 ; [#uses=1]
+ %560 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 9, i32 1 ; [#uses=1]
+ %561 = bitcast %struct.btHashInt* %560 to float* ; [#uses=2]
+ %562 = load float* %561, align 4 ; [#uses=3]
+ %563 = fmul float %562, %514 ; [#uses=1]
+ %564 = fadd float %559, %563 ; [#uses=1]
+ %565 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 8, i32 1 ; [#uses=1]
+ %566 = bitcast %struct.btHashInt* %565 to float* ; [#uses=2]
+ %567 = load float* %566, align 4 ; [#uses=3]
+ %568 = fmul float %567, %501 ; [#uses=1]
+ %569 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 8, i32 5 ; [#uses=1]
+ %570 = bitcast %struct.btRigidBody** %569 to float* ; [#uses=2]
+ %571 = load float* %570, align 4 ; [#uses=3]
+ %572 = fmul float %571, %507 ; [#uses=1]
+ %573 = fadd float %568, %572 ; [#uses=1]
+ %574 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 9 ; [#uses=1]
+ %575 = bitcast %struct.btTypedConstraint* %574 to float* ; [#uses=2]
+ %576 = load float* %575, align 4 ; [#uses=3]
+ %577 = fmul float %576, %514 ; [#uses=1]
+ %578 = fadd float %573, %577 ; [#uses=1]
+ %579 = bitcast %struct.btTypedConstraint* %497 to float* ; [#uses=2]
+ %580 = load float* %579, align 4 ; [#uses=3]
+ %581 = fmul float %580, %501 ; [#uses=1]
+ %582 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 8, i32 4 ; [#uses=1]
+ %583 = bitcast i8* %582 to float* ; [#uses=2]
+ %584 = load float* %583, align 4 ; [#uses=3]
+ %585 = fmul float %584, %507 ; [#uses=1]
+ %586 = fadd float %581, %585 ; [#uses=1]
+ %587 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 8, i32 8 ; [#uses=2]
+ %588 = load float* %587, align 4 ; [#uses=3]
+ %589 = fmul float %588, %514 ; [#uses=1]
+ %590 = fadd float %586, %589 ; [#uses=1]
+ %591 = fmul float %553, %524 ; [#uses=1]
+ %592 = fmul float %557, %527 ; [#uses=1]
+ %593 = fadd float %591, %592 ; [#uses=1]
+ %594 = fmul float %562, %531 ; [#uses=1]
+ %595 = fadd float %593, %594 ; [#uses=1]
+ %596 = fmul float %567, %524 ; [#uses=1]
+ %597 = fmul float %571, %527 ; [#uses=1]
+ %598 = fadd float %596, %597 ; [#uses=1]
+ %599 = fmul float %576, %531 ; [#uses=1]
+ %600 = fadd float %598, %599 ; [#uses=1]
+ %601 = fmul float %580, %524 ; [#uses=1]
+ %602 = fmul float %584, %527 ; [#uses=1]
+ %603 = fadd float %601, %602 ; [#uses=1]
+ %604 = fmul float %588, %531 ; [#uses=1]
+ %605 = fadd float %603, %604 ; [#uses=1]
+ %606 = fmul float %553, %538 ; [#uses=1]
+ %607 = fmul float %557, %541 ; [#uses=1]
+ %608 = fadd float %606, %607 ; [#uses=1]
+ %609 = fmul float %562, %545 ; [#uses=1]
+ %610 = fadd float %608, %609 ; [#uses=1]
+ %611 = fmul float %567, %538 ; [#uses=1]
+ %612 = fmul float %571, %541 ; [#uses=1]
+ %613 = fadd float %611, %612 ; [#uses=1]
+ %614 = fmul float %576, %545 ; [#uses=1]
+ %615 = fadd float %613, %614 ; [#uses=1]
+ %616 = fmul float %580, %538 ; [#uses=1]
+ %617 = fmul float %584, %541 ; [#uses=1]
+ %618 = fadd float %616, %617 ; [#uses=1]
+ %619 = fmul float %588, %545 ; [#uses=1]
+ %620 = fadd float %618, %619 ; [#uses=1]
+ %621 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=5]
+ store float %620, float* %621, align 8
+ %622 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=5]
+ store float %615, float* %622, align 4
+ %623 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=5]
+ store float %610, float* %623, align 8
+ %624 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %624, align 4
+ %625 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=5]
+ store float %605, float* %625, align 8
+ %626 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=5]
+ store float %600, float* %626, align 4
+ %627 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=5]
+ store float %595, float* %627, align 8
+ %628 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %628, align 4
+ %629 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=5]
+ store float %590, float* %629, align 8
+ %630 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=5]
+ store float %578, float* %630, align 4
+ %631 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=5]
+ store float %564, float* %631, align 8
+ %632 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %632, align 4
+ %633 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 1, i32 0, i32 0 ; [#uses=5]
+ store float %550, float* %633, align 8
+ %634 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 1, i32 0, i32 1 ; [#uses=5]
+ store float %536, float* %634, align 4
+ %635 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 1, i32 0, i32 2 ; [#uses=5]
+ store float %522, float* %635, align 8
+ %636 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %636, align 4
+ %toBool29 = icmp eq i8 %24, 0 ; [#uses=2]
+ br i1 %toBool29, label %bb31, label %bb30
+
+bb30: ; preds = %bb25
+ %637 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %638 = getelementptr inbounds i32 (...)** %637, i32 4 ; [#uses=1]
+ %639 = load i32 (...)** %638, align 4 ; [#uses=1]
+ %640 = bitcast i32 (...)* %639 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %641 = call %struct.btActionInterface* %640(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %642 = getelementptr inbounds %struct.btActionInterface* %641, i32 0, i32 0 ; [#uses=1]
+ %643 = load i32 (...)*** %642, align 4 ; [#uses=1]
+ %644 = getelementptr inbounds i32 (...)** %643, i32 14 ; [#uses=1]
+ %645 = load i32 (...)** %644, align 4 ; [#uses=1]
+ %646 = bitcast i32 (...)* %645 to void (%struct.btActionInterface*, %struct.btTransform*, float)* ; [#uses=1]
+ call void %646(%struct.btActionInterface* %641, %struct.btTransform* %tr28, float %39)
+ br label %bb31
+
+bb31: ; preds = %bb30, %bb25
+ %647 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 9, i32 7 ; [#uses=13]
+ %648 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 0, i32 6 ; [#uses=2]
+ %649 = load %struct.btRigidBody** %648, align 4 ; [#uses=12]
+ %650 = getelementptr inbounds %struct.btRigidBody* %649, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %651 = load float* %650, align 4 ; [#uses=4]
+ %652 = getelementptr inbounds float* %647, i32 12 ; [#uses=2]
+ %653 = load float* %652, align 4 ; [#uses=3]
+ %654 = fmul float %651, %653 ; [#uses=1]
+ %655 = getelementptr inbounds %struct.btRigidBody* %649, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %656 = load float* %655, align 4 ; [#uses=4]
+ %657 = getelementptr inbounds float* %647, i32 13 ; [#uses=2]
+ %658 = load float* %657, align 4 ; [#uses=3]
+ %659 = fmul float %656, %658 ; [#uses=1]
+ %660 = fadd float %654, %659 ; [#uses=1]
+ %661 = getelementptr inbounds %struct.btRigidBody* %649, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %662 = load float* %661, align 4 ; [#uses=4]
+ %663 = getelementptr inbounds float* %647, i32 14 ; [#uses=2]
+ %664 = load float* %663, align 4 ; [#uses=3]
+ %665 = fmul float %662, %664 ; [#uses=1]
+ %666 = fadd float %660, %665 ; [#uses=1]
+ %667 = getelementptr inbounds %struct.btRigidBody* %649, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %668 = load float* %667, align 4 ; [#uses=1]
+ %669 = fadd float %666, %668 ; [#uses=1]
+ %670 = getelementptr inbounds %struct.btRigidBody* %649, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %671 = load float* %670, align 4 ; [#uses=4]
+ %672 = fmul float %671, %653 ; [#uses=1]
+ %673 = getelementptr inbounds %struct.btRigidBody* %649, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %674 = load float* %673, align 4 ; [#uses=4]
+ %675 = fmul float %674, %658 ; [#uses=1]
+ %676 = fadd float %672, %675 ; [#uses=1]
+ %677 = getelementptr inbounds %struct.btRigidBody* %649, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %678 = load float* %677, align 4 ; [#uses=4]
+ %679 = fmul float %678, %664 ; [#uses=1]
+ %680 = fadd float %676, %679 ; [#uses=1]
+ %681 = getelementptr inbounds %struct.btRigidBody* %649, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %682 = load float* %681, align 4 ; [#uses=1]
+ %683 = fadd float %680, %682 ; [#uses=1]
+ %684 = getelementptr inbounds %struct.btRigidBody* %649, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %685 = load float* %684, align 4 ; [#uses=4]
+ %686 = fmul float %685, %653 ; [#uses=1]
+ %687 = getelementptr inbounds %struct.btRigidBody* %649, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %688 = load float* %687, align 4 ; [#uses=4]
+ %689 = fmul float %688, %658 ; [#uses=1]
+ %690 = fadd float %686, %689 ; [#uses=1]
+ %691 = getelementptr inbounds %struct.btRigidBody* %649, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %692 = load float* %691, align 4 ; [#uses=4]
+ %693 = fmul float %692, %664 ; [#uses=1]
+ %694 = fadd float %690, %693 ; [#uses=1]
+ %695 = getelementptr inbounds %struct.btRigidBody* %649, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %696 = load float* %695, align 4 ; [#uses=1]
+ %697 = fadd float %694, %696 ; [#uses=1]
+ %698 = getelementptr inbounds float* %647, i32 2 ; [#uses=2]
+ %699 = load float* %698, align 4 ; [#uses=3]
+ %700 = fmul float %699, %651 ; [#uses=1]
+ %701 = getelementptr inbounds float* %647, i32 6 ; [#uses=2]
+ %702 = load float* %701, align 4 ; [#uses=3]
+ %703 = fmul float %702, %656 ; [#uses=1]
+ %704 = fadd float %700, %703 ; [#uses=1]
+ %705 = getelementptr inbounds float* %647, i32 10 ; [#uses=2]
+ %706 = load float* %705, align 4 ; [#uses=3]
+ %707 = fmul float %706, %662 ; [#uses=1]
+ %708 = fadd float %704, %707 ; [#uses=1]
+ %709 = getelementptr inbounds float* %647, i32 1 ; [#uses=2]
+ %710 = load float* %709, align 4 ; [#uses=3]
+ %711 = fmul float %710, %651 ; [#uses=1]
+ %712 = getelementptr inbounds float* %647, i32 5 ; [#uses=2]
+ %713 = load float* %712, align 4 ; [#uses=3]
+ %714 = fmul float %713, %656 ; [#uses=1]
+ %715 = fadd float %711, %714 ; [#uses=1]
+ %716 = getelementptr inbounds float* %647, i32 9 ; [#uses=2]
+ %717 = load float* %716, align 4 ; [#uses=3]
+ %718 = fmul float %717, %662 ; [#uses=1]
+ %719 = fadd float %715, %718 ; [#uses=1]
+ %720 = load float* %647, align 4 ; [#uses=3]
+ %721 = fmul float %720, %651 ; [#uses=1]
+ %722 = getelementptr inbounds float* %647, i32 4 ; [#uses=2]
+ %723 = load float* %722, align 4 ; [#uses=3]
+ %724 = fmul float %723, %656 ; [#uses=1]
+ %725 = fadd float %721, %724 ; [#uses=1]
+ %726 = getelementptr inbounds float* %647, i32 8 ; [#uses=2]
+ %727 = load float* %726, align 4 ; [#uses=3]
+ %728 = fmul float %727, %662 ; [#uses=1]
+ %729 = fadd float %725, %728 ; [#uses=1]
+ %730 = fmul float %699, %671 ; [#uses=1]
+ %731 = fmul float %702, %674 ; [#uses=1]
+ %732 = fadd float %730, %731 ; [#uses=1]
+ %733 = fmul float %706, %678 ; [#uses=1]
+ %734 = fadd float %732, %733 ; [#uses=1]
+ %735 = fmul float %710, %671 ; [#uses=1]
+ %736 = fmul float %713, %674 ; [#uses=1]
+ %737 = fadd float %735, %736 ; [#uses=1]
+ %738 = fmul float %717, %678 ; [#uses=1]
+ %739 = fadd float %737, %738 ; [#uses=1]
+ %740 = fmul float %720, %671 ; [#uses=1]
+ %741 = fmul float %723, %674 ; [#uses=1]
+ %742 = fadd float %740, %741 ; [#uses=1]
+ %743 = fmul float %727, %678 ; [#uses=1]
+ %744 = fadd float %742, %743 ; [#uses=1]
+ %745 = fmul float %699, %685 ; [#uses=1]
+ %746 = fmul float %702, %688 ; [#uses=1]
+ %747 = fadd float %745, %746 ; [#uses=1]
+ %748 = fmul float %706, %692 ; [#uses=1]
+ %749 = fadd float %747, %748 ; [#uses=1]
+ %750 = fmul float %710, %685 ; [#uses=1]
+ %751 = fmul float %713, %688 ; [#uses=1]
+ %752 = fadd float %750, %751 ; [#uses=1]
+ %753 = fmul float %717, %692 ; [#uses=1]
+ %754 = fadd float %752, %753 ; [#uses=1]
+ %755 = fmul float %720, %685 ; [#uses=1]
+ %756 = fmul float %723, %688 ; [#uses=1]
+ %757 = fadd float %755, %756 ; [#uses=1]
+ %758 = fmul float %727, %692 ; [#uses=1]
+ %759 = fadd float %757, %758 ; [#uses=1]
+ store float %759, float* %621, align 8
+ store float %754, float* %622, align 4
+ store float %749, float* %623, align 8
+ store float 0.000000e+00, float* %624, align 4
+ store float %744, float* %625, align 8
+ store float %739, float* %626, align 4
+ store float %734, float* %627, align 8
+ store float 0.000000e+00, float* %628, align 4
+ store float %729, float* %629, align 8
+ store float %719, float* %630, align 4
+ store float %708, float* %631, align 8
+ store float 0.000000e+00, float* %632, align 4
+ store float %697, float* %633, align 8
+ store float %683, float* %634, align 4
+ store float %669, float* %635, align 8
+ store float 0.000000e+00, float* %636, align 4
+ br i1 %toBool29, label %bb34, label %bb33
+
+bb33: ; preds = %bb31
+ %760 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %761 = getelementptr inbounds i32 (...)** %760, i32 4 ; [#uses=1]
+ %762 = load i32 (...)** %761, align 4 ; [#uses=1]
+ %763 = bitcast i32 (...)* %762 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %764 = call %struct.btActionInterface* %763(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %765 = getelementptr inbounds %struct.btActionInterface* %764, i32 0, i32 0 ; [#uses=1]
+ %766 = load i32 (...)*** %765, align 4 ; [#uses=1]
+ %767 = getelementptr inbounds i32 (...)** %766, i32 14 ; [#uses=1]
+ %768 = load i32 (...)** %767, align 4 ; [#uses=1]
+ %769 = bitcast i32 (...)* %768 to void (%struct.btActionInterface*, %struct.btTransform*, float)* ; [#uses=1]
+ call void %769(%struct.btActionInterface* %764, %struct.btTransform* %tr28, float %39)
+ br label %bb34
+
+bb34: ; preds = %bb33, %bb31
+ %toBool35 = icmp eq i8 %37, 0 ; [#uses=1]
+ br i1 %toBool35, label %return, label %bb.nph
+
+bb.nph: ; preds = %bb34
+ call void @_ZNK21btConeTwistConstraint16GetPointForAngleEff(%struct.btQuadWord* noalias sret %pPrev, %struct.btConeTwistConstraint* %496, float 0x401858EB60000000, float %39)
+ %770 = load float* %629, align 8 ; [#uses=1]
+ %771 = getelementptr inbounds %struct.btQuadWord* %pPrev, i32 0, i32 0, i32 0 ; [#uses=3]
+ %772 = load float* %771, align 8 ; [#uses=3]
+ %773 = fmul float %770, %772 ; [#uses=1]
+ %774 = load float* %630, align 4 ; [#uses=1]
+ %775 = getelementptr inbounds %struct.btQuadWord* %pPrev, i32 0, i32 0, i32 1 ; [#uses=3]
+ %776 = load float* %775, align 4 ; [#uses=3]
+ %777 = fmul float %774, %776 ; [#uses=1]
+ %778 = fadd float %773, %777 ; [#uses=1]
+ %779 = load float* %631, align 8 ; [#uses=1]
+ %780 = getelementptr inbounds %struct.btQuadWord* %pPrev, i32 0, i32 0, i32 2 ; [#uses=3]
+ %781 = load float* %780, align 8 ; [#uses=3]
+ %782 = fmul float %779, %781 ; [#uses=1]
+ %783 = fadd float %778, %782 ; [#uses=1]
+ %784 = load float* %635, align 8 ; [#uses=1]
+ %785 = fadd float %783, %784 ; [#uses=1]
+ %786 = load float* %625, align 8 ; [#uses=1]
+ %787 = fmul float %786, %772 ; [#uses=1]
+ %788 = load float* %626, align 4 ; [#uses=1]
+ %789 = fmul float %788, %776 ; [#uses=1]
+ %790 = fadd float %787, %789 ; [#uses=1]
+ %791 = load float* %627, align 8 ; [#uses=1]
+ %792 = fmul float %791, %781 ; [#uses=1]
+ %793 = fadd float %790, %792 ; [#uses=1]
+ %794 = load float* %634, align 4 ; [#uses=1]
+ %795 = fadd float %793, %794 ; [#uses=1]
+ %796 = load float* %621, align 8 ; [#uses=1]
+ %797 = fmul float %796, %772 ; [#uses=1]
+ %798 = load float* %622, align 4 ; [#uses=1]
+ %799 = fmul float %798, %776 ; [#uses=1]
+ %800 = fadd float %797, %799 ; [#uses=1]
+ %801 = load float* %623, align 8 ; [#uses=1]
+ %802 = fmul float %801, %781 ; [#uses=1]
+ %803 = fadd float %800, %802 ; [#uses=1]
+ %804 = load float* %633, align 8 ; [#uses=1]
+ %805 = fadd float %803, %804 ; [#uses=1]
+ store float %805, float* %771, align 8
+ store float %795, float* %775, align 4
+ store float %785, float* %780, align 8
+ %806 = getelementptr inbounds %struct.btQuadWord* %pPrev, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %806, align 4
+ %807 = getelementptr inbounds %struct.btQuadWord* %pCur, i32 0, i32 0, i32 0 ; [#uses=3]
+ %808 = getelementptr inbounds %struct.btQuadWord* %pCur, i32 0, i32 0, i32 1 ; [#uses=3]
+ %809 = getelementptr inbounds %struct.btQuadWord* %pCur, i32 0, i32 0, i32 2 ; [#uses=3]
+ %810 = getelementptr inbounds %struct.btQuadWord* %pCur, i32 0, i32 0, i32 3 ; [#uses=2]
+ %811 = getelementptr inbounds %struct.btQuadWord* %8, i32 0, i32 0, i32 0 ; [#uses=1]
+ %812 = getelementptr inbounds %struct.btQuadWord* %8, i32 0, i32 0, i32 1 ; [#uses=1]
+ %813 = getelementptr inbounds %struct.btQuadWord* %8, i32 0, i32 0, i32 2 ; [#uses=1]
+ %814 = getelementptr inbounds %struct.btQuadWord* %8, i32 0, i32 0, i32 3 ; [#uses=1]
+ %815 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0, i32 0 ; [#uses=1]
+ %816 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0, i32 1 ; [#uses=1]
+ %817 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0, i32 2 ; [#uses=1]
+ %818 = getelementptr inbounds %struct.btQuadWord* %7, i32 0, i32 0, i32 3 ; [#uses=1]
+ %819 = getelementptr inbounds %struct.btTransform* %tr28, i32 0, i32 1 ; [#uses=1]
+ br label %bb50
+
+bb50: ; preds = %bb54, %bb.nph
+ %820 = phi i32 [ 0, %bb.nph ], [ %883, %bb54 ] ; [#uses=3]
+ %821 = sitofp i32 %820 to float ; [#uses=1]
+ %822 = fmul float %821, 0x401921FB40000000 ; [#uses=1]
+ %823 = fdiv float %822, 3.200000e+01 ; [#uses=1]
+ call void @_ZNK21btConeTwistConstraint16GetPointForAngleEff(%struct.btQuadWord* noalias sret %pCur, %struct.btConeTwistConstraint* %496, float %823, float %39)
+ %824 = load float* %629, align 8 ; [#uses=1]
+ %825 = load float* %807, align 8 ; [#uses=3]
+ %826 = fmul float %824, %825 ; [#uses=1]
+ %827 = load float* %630, align 4 ; [#uses=1]
+ %828 = load float* %808, align 4 ; [#uses=3]
+ %829 = fmul float %827, %828 ; [#uses=1]
+ %830 = fadd float %826, %829 ; [#uses=1]
+ %831 = load float* %631, align 8 ; [#uses=1]
+ %832 = load float* %809, align 8 ; [#uses=3]
+ %833 = fmul float %831, %832 ; [#uses=1]
+ %834 = fadd float %830, %833 ; [#uses=1]
+ %835 = load float* %635, align 8 ; [#uses=1]
+ %836 = fadd float %834, %835 ; [#uses=1]
+ %837 = load float* %625, align 8 ; [#uses=1]
+ %838 = fmul float %837, %825 ; [#uses=1]
+ %839 = load float* %626, align 4 ; [#uses=1]
+ %840 = fmul float %839, %828 ; [#uses=1]
+ %841 = fadd float %838, %840 ; [#uses=1]
+ %842 = load float* %627, align 8 ; [#uses=1]
+ %843 = fmul float %842, %832 ; [#uses=1]
+ %844 = fadd float %841, %843 ; [#uses=1]
+ %845 = load float* %634, align 4 ; [#uses=1]
+ %846 = fadd float %844, %845 ; [#uses=1]
+ %847 = load float* %621, align 8 ; [#uses=1]
+ %848 = fmul float %847, %825 ; [#uses=1]
+ %849 = load float* %622, align 4 ; [#uses=1]
+ %850 = fmul float %849, %828 ; [#uses=1]
+ %851 = fadd float %848, %850 ; [#uses=1]
+ %852 = load float* %623, align 8 ; [#uses=1]
+ %853 = fmul float %852, %832 ; [#uses=1]
+ %854 = fadd float %851, %853 ; [#uses=1]
+ %855 = load float* %633, align 8 ; [#uses=1]
+ %856 = fadd float %854, %855 ; [#uses=1]
+ store float %856, float* %807, align 8
+ store float %846, float* %808, align 4
+ store float %836, float* %809, align 8
+ store float 0.000000e+00, float* %810, align 4
+ %857 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %858 = getelementptr inbounds i32 (...)** %857, i32 4 ; [#uses=1]
+ %859 = load i32 (...)** %858, align 4 ; [#uses=1]
+ %860 = bitcast i32 (...)* %859 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %861 = call %struct.btActionInterface* %860(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %862 = getelementptr inbounds %struct.btActionInterface* %861, i32 0, i32 0 ; [#uses=1]
+ %863 = load i32 (...)*** %862, align 4 ; [#uses=1]
+ %864 = getelementptr inbounds i32 (...)** %863, i32 2 ; [#uses=1]
+ %865 = load i32 (...)** %864, align 4 ; [#uses=1]
+ store float 0.000000e+00, float* %811, align 8
+ store float 0.000000e+00, float* %812, align 4
+ store float 0.000000e+00, float* %813, align 8
+ store float 0.000000e+00, float* %814, align 4
+ %866 = bitcast i32 (...)* %865 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %866(%struct.btActionInterface* %861, %struct.btQuadWord* %pPrev, %struct.btQuadWord* %pCur, %struct.btQuadWord* %8)
+ %867 = and i32 %820, 3 ; [#uses=1]
+ %868 = icmp eq i32 %867, 0 ; [#uses=1]
+ br i1 %868, label %bb53, label %bb54
+
+bb53: ; preds = %bb50
+ %869 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %870 = getelementptr inbounds i32 (...)** %869, i32 4 ; [#uses=1]
+ %871 = load i32 (...)** %870, align 4 ; [#uses=1]
+ %872 = bitcast i32 (...)* %871 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %873 = call %struct.btActionInterface* %872(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %874 = getelementptr inbounds %struct.btActionInterface* %873, i32 0, i32 0 ; [#uses=1]
+ %875 = load i32 (...)*** %874, align 4 ; [#uses=1]
+ %876 = getelementptr inbounds i32 (...)** %875, i32 2 ; [#uses=1]
+ %877 = load i32 (...)** %876, align 4 ; [#uses=1]
+ store float 0.000000e+00, float* %815, align 8
+ store float 0.000000e+00, float* %816, align 4
+ store float 0.000000e+00, float* %817, align 8
+ store float 0.000000e+00, float* %818, align 4
+ %878 = bitcast i32 (...)* %877 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %878(%struct.btActionInterface* %873, %struct.btQuadWord* %819, %struct.btQuadWord* %pCur, %struct.btQuadWord* %7)
+ br label %bb54
+
+bb54: ; preds = %bb53, %bb50
+ %879 = load float* %807, align 8 ; [#uses=1]
+ store float %879, float* %771, align 8
+ %880 = load float* %808, align 4 ; [#uses=1]
+ store float %880, float* %775, align 4
+ %881 = load float* %809, align 8 ; [#uses=1]
+ store float %881, float* %780, align 8
+ %882 = load float* %810, align 4 ; [#uses=1]
+ store float %882, float* %806, align 4
+ %883 = add nsw i32 %820, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %883, 32 ; [#uses=1]
+ br i1 %exitcond, label %bb56, label %bb50
+
+bb56: ; preds = %bb54
+ %884 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 12, i32 2 ; [#uses=1]
+ %885 = bitcast i32* %884 to float* ; [#uses=1]
+ %886 = load float* %885, align 4 ; [#uses=2]
+ %887 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 13, i32 8 ; [#uses=1]
+ %888 = load float* %887, align 4 ; [#uses=2]
+ %889 = load %struct.btRigidBody** %648, align 4 ; [#uses=13]
+ %890 = getelementptr inbounds %struct.btRigidBody* %889, i32 0, i32 4 ; [#uses=1]
+ %891 = load float* %890, align 4 ; [#uses=1]
+ %892 = fcmp ogt float %891, 0.000000e+00 ; [#uses=1]
+ br i1 %892, label %bb58, label %bb59
+
+bb58: ; preds = %bb56
+ %893 = getelementptr inbounds %struct.btRigidBody* %889, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %894 = load float* %893, align 4 ; [#uses=4]
+ %895 = load float* %652, align 4 ; [#uses=3]
+ %896 = fmul float %894, %895 ; [#uses=1]
+ %897 = getelementptr inbounds %struct.btRigidBody* %889, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %898 = load float* %897, align 4 ; [#uses=4]
+ %899 = load float* %657, align 4 ; [#uses=3]
+ %900 = fmul float %898, %899 ; [#uses=1]
+ %901 = fadd float %896, %900 ; [#uses=1]
+ %902 = getelementptr inbounds %struct.btRigidBody* %889, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %903 = load float* %902, align 4 ; [#uses=4]
+ %904 = load float* %663, align 4 ; [#uses=3]
+ %905 = fmul float %903, %904 ; [#uses=1]
+ %906 = fadd float %901, %905 ; [#uses=1]
+ %907 = getelementptr inbounds %struct.btRigidBody* %889, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %908 = load float* %907, align 4 ; [#uses=1]
+ %909 = fadd float %906, %908 ; [#uses=1]
+ %910 = getelementptr inbounds %struct.btRigidBody* %889, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %911 = load float* %910, align 4 ; [#uses=4]
+ %912 = fmul float %911, %895 ; [#uses=1]
+ %913 = getelementptr inbounds %struct.btRigidBody* %889, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %914 = load float* %913, align 4 ; [#uses=4]
+ %915 = fmul float %914, %899 ; [#uses=1]
+ %916 = fadd float %912, %915 ; [#uses=1]
+ %917 = getelementptr inbounds %struct.btRigidBody* %889, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %918 = load float* %917, align 4 ; [#uses=4]
+ %919 = fmul float %918, %904 ; [#uses=1]
+ %920 = fadd float %916, %919 ; [#uses=1]
+ %921 = getelementptr inbounds %struct.btRigidBody* %889, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %922 = load float* %921, align 4 ; [#uses=1]
+ %923 = fadd float %920, %922 ; [#uses=1]
+ %924 = getelementptr inbounds %struct.btRigidBody* %889, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %925 = load float* %924, align 4 ; [#uses=4]
+ %926 = fmul float %925, %895 ; [#uses=1]
+ %927 = getelementptr inbounds %struct.btRigidBody* %889, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %928 = load float* %927, align 4 ; [#uses=4]
+ %929 = fmul float %928, %899 ; [#uses=1]
+ %930 = fadd float %926, %929 ; [#uses=1]
+ %931 = getelementptr inbounds %struct.btRigidBody* %889, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %932 = load float* %931, align 4 ; [#uses=4]
+ %933 = fmul float %932, %904 ; [#uses=1]
+ %934 = fadd float %930, %933 ; [#uses=1]
+ %935 = getelementptr inbounds %struct.btRigidBody* %889, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %936 = load float* %935, align 4 ; [#uses=1]
+ %937 = fadd float %934, %936 ; [#uses=1]
+ %938 = load float* %698, align 4 ; [#uses=3]
+ %939 = fmul float %938, %894 ; [#uses=1]
+ %940 = load float* %701, align 4 ; [#uses=3]
+ %941 = fmul float %940, %898 ; [#uses=1]
+ %942 = fadd float %939, %941 ; [#uses=1]
+ %943 = load float* %705, align 4 ; [#uses=3]
+ %944 = fmul float %943, %903 ; [#uses=1]
+ %945 = fadd float %942, %944 ; [#uses=1]
+ %946 = load float* %709, align 4 ; [#uses=3]
+ %947 = fmul float %946, %894 ; [#uses=1]
+ %948 = load float* %712, align 4 ; [#uses=3]
+ %949 = fmul float %948, %898 ; [#uses=1]
+ %950 = fadd float %947, %949 ; [#uses=1]
+ %951 = load float* %716, align 4 ; [#uses=3]
+ %952 = fmul float %951, %903 ; [#uses=1]
+ %953 = fadd float %950, %952 ; [#uses=1]
+ %954 = load float* %647, align 4 ; [#uses=3]
+ %955 = fmul float %954, %894 ; [#uses=1]
+ %956 = load float* %722, align 4 ; [#uses=3]
+ %957 = fmul float %956, %898 ; [#uses=1]
+ %958 = fadd float %955, %957 ; [#uses=1]
+ %959 = load float* %726, align 4 ; [#uses=3]
+ %960 = fmul float %959, %903 ; [#uses=1]
+ %961 = fadd float %958, %960 ; [#uses=1]
+ %962 = fmul float %938, %911 ; [#uses=1]
+ %963 = fmul float %940, %914 ; [#uses=1]
+ %964 = fadd float %962, %963 ; [#uses=1]
+ %965 = fmul float %943, %918 ; [#uses=1]
+ %966 = fadd float %964, %965 ; [#uses=1]
+ %967 = fmul float %946, %911 ; [#uses=1]
+ %968 = fmul float %948, %914 ; [#uses=1]
+ %969 = fadd float %967, %968 ; [#uses=1]
+ %970 = fmul float %951, %918 ; [#uses=1]
+ %971 = fadd float %969, %970 ; [#uses=1]
+ %972 = fmul float %954, %911 ; [#uses=1]
+ %973 = fmul float %956, %914 ; [#uses=1]
+ %974 = fadd float %972, %973 ; [#uses=1]
+ %975 = fmul float %959, %918 ; [#uses=1]
+ %976 = fadd float %974, %975 ; [#uses=1]
+ %977 = fmul float %938, %925 ; [#uses=1]
+ %978 = fmul float %940, %928 ; [#uses=1]
+ %979 = fadd float %977, %978 ; [#uses=1]
+ %980 = fmul float %943, %932 ; [#uses=1]
+ %981 = fadd float %979, %980 ; [#uses=1]
+ %982 = fmul float %946, %925 ; [#uses=1]
+ %983 = fmul float %948, %928 ; [#uses=1]
+ %984 = fadd float %982, %983 ; [#uses=1]
+ %985 = fmul float %951, %932 ; [#uses=1]
+ %986 = fadd float %984, %985 ; [#uses=1]
+ %987 = fmul float %954, %925 ; [#uses=1]
+ %988 = fmul float %956, %928 ; [#uses=1]
+ %989 = fadd float %987, %988 ; [#uses=1]
+ %990 = fmul float %959, %932 ; [#uses=1]
+ %991 = fadd float %989, %990 ; [#uses=1]
+ br label %bb60
+
+bb59: ; preds = %bb56
+ %992 = load %struct.btRigidBody** %498, align 4 ; [#uses=12]
+ %993 = getelementptr inbounds %struct.btRigidBody* %992, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %994 = load float* %993, align 4 ; [#uses=4]
+ %995 = load float* %503, align 4 ; [#uses=3]
+ %996 = fmul float %994, %995 ; [#uses=1]
+ %997 = getelementptr inbounds %struct.btRigidBody* %992, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %998 = load float* %997, align 4 ; [#uses=4]
+ %999 = load float* %509, align 4 ; [#uses=3]
+ %1000 = fmul float %998, %999 ; [#uses=1]
+ %1001 = fadd float %996, %1000 ; [#uses=1]
+ %1002 = getelementptr inbounds %struct.btRigidBody* %992, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1003 = load float* %1002, align 4 ; [#uses=4]
+ %1004 = load float* %516, align 4 ; [#uses=3]
+ %1005 = fmul float %1003, %1004 ; [#uses=1]
+ %1006 = fadd float %1001, %1005 ; [#uses=1]
+ %1007 = getelementptr inbounds %struct.btRigidBody* %992, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1008 = load float* %1007, align 4 ; [#uses=1]
+ %1009 = fadd float %1006, %1008 ; [#uses=1]
+ %1010 = getelementptr inbounds %struct.btRigidBody* %992, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1011 = load float* %1010, align 4 ; [#uses=4]
+ %1012 = fmul float %1011, %995 ; [#uses=1]
+ %1013 = getelementptr inbounds %struct.btRigidBody* %992, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1014 = load float* %1013, align 4 ; [#uses=4]
+ %1015 = fmul float %1014, %999 ; [#uses=1]
+ %1016 = fadd float %1012, %1015 ; [#uses=1]
+ %1017 = getelementptr inbounds %struct.btRigidBody* %992, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1018 = load float* %1017, align 4 ; [#uses=4]
+ %1019 = fmul float %1018, %1004 ; [#uses=1]
+ %1020 = fadd float %1016, %1019 ; [#uses=1]
+ %1021 = getelementptr inbounds %struct.btRigidBody* %992, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1022 = load float* %1021, align 4 ; [#uses=1]
+ %1023 = fadd float %1020, %1022 ; [#uses=1]
+ %1024 = getelementptr inbounds %struct.btRigidBody* %992, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1025 = load float* %1024, align 4 ; [#uses=4]
+ %1026 = fmul float %1025, %995 ; [#uses=1]
+ %1027 = getelementptr inbounds %struct.btRigidBody* %992, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1028 = load float* %1027, align 4 ; [#uses=4]
+ %1029 = fmul float %1028, %999 ; [#uses=1]
+ %1030 = fadd float %1026, %1029 ; [#uses=1]
+ %1031 = getelementptr inbounds %struct.btRigidBody* %992, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1032 = load float* %1031, align 4 ; [#uses=4]
+ %1033 = fmul float %1032, %1004 ; [#uses=1]
+ %1034 = fadd float %1030, %1033 ; [#uses=1]
+ %1035 = getelementptr inbounds %struct.btRigidBody* %992, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1036 = load float* %1035, align 4 ; [#uses=1]
+ %1037 = fadd float %1034, %1036 ; [#uses=1]
+ %1038 = load float* %552, align 4 ; [#uses=3]
+ %1039 = fmul float %1038, %994 ; [#uses=1]
+ %1040 = load float* %556, align 4 ; [#uses=3]
+ %1041 = fmul float %1040, %998 ; [#uses=1]
+ %1042 = fadd float %1039, %1041 ; [#uses=1]
+ %1043 = load float* %561, align 4 ; [#uses=3]
+ %1044 = fmul float %1043, %1003 ; [#uses=1]
+ %1045 = fadd float %1042, %1044 ; [#uses=1]
+ %1046 = load float* %566, align 4 ; [#uses=3]
+ %1047 = fmul float %1046, %994 ; [#uses=1]
+ %1048 = load float* %570, align 4 ; [#uses=3]
+ %1049 = fmul float %1048, %998 ; [#uses=1]
+ %1050 = fadd float %1047, %1049 ; [#uses=1]
+ %1051 = load float* %575, align 4 ; [#uses=3]
+ %1052 = fmul float %1051, %1003 ; [#uses=1]
+ %1053 = fadd float %1050, %1052 ; [#uses=1]
+ %1054 = load float* %579, align 4 ; [#uses=3]
+ %1055 = fmul float %1054, %994 ; [#uses=1]
+ %1056 = load float* %583, align 4 ; [#uses=3]
+ %1057 = fmul float %1056, %998 ; [#uses=1]
+ %1058 = fadd float %1055, %1057 ; [#uses=1]
+ %1059 = load float* %587, align 4 ; [#uses=3]
+ %1060 = fmul float %1059, %1003 ; [#uses=1]
+ %1061 = fadd float %1058, %1060 ; [#uses=1]
+ %1062 = fmul float %1038, %1011 ; [#uses=1]
+ %1063 = fmul float %1040, %1014 ; [#uses=1]
+ %1064 = fadd float %1062, %1063 ; [#uses=1]
+ %1065 = fmul float %1043, %1018 ; [#uses=1]
+ %1066 = fadd float %1064, %1065 ; [#uses=1]
+ %1067 = fmul float %1046, %1011 ; [#uses=1]
+ %1068 = fmul float %1048, %1014 ; [#uses=1]
+ %1069 = fadd float %1067, %1068 ; [#uses=1]
+ %1070 = fmul float %1051, %1018 ; [#uses=1]
+ %1071 = fadd float %1069, %1070 ; [#uses=1]
+ %1072 = fmul float %1054, %1011 ; [#uses=1]
+ %1073 = fmul float %1056, %1014 ; [#uses=1]
+ %1074 = fadd float %1072, %1073 ; [#uses=1]
+ %1075 = fmul float %1059, %1018 ; [#uses=1]
+ %1076 = fadd float %1074, %1075 ; [#uses=1]
+ %1077 = fmul float %1038, %1025 ; [#uses=1]
+ %1078 = fmul float %1040, %1028 ; [#uses=1]
+ %1079 = fadd float %1077, %1078 ; [#uses=1]
+ %1080 = fmul float %1043, %1032 ; [#uses=1]
+ %1081 = fadd float %1079, %1080 ; [#uses=1]
+ %1082 = fmul float %1046, %1025 ; [#uses=1]
+ %1083 = fmul float %1048, %1028 ; [#uses=1]
+ %1084 = fadd float %1082, %1083 ; [#uses=1]
+ %1085 = fmul float %1051, %1032 ; [#uses=1]
+ %1086 = fadd float %1084, %1085 ; [#uses=1]
+ %1087 = fmul float %1054, %1025 ; [#uses=1]
+ %1088 = fmul float %1056, %1028 ; [#uses=1]
+ %1089 = fadd float %1087, %1088 ; [#uses=1]
+ %1090 = fmul float %1059, %1032 ; [#uses=1]
+ %1091 = fadd float %1089, %1090 ; [#uses=1]
+ br label %bb60
+
+bb60: ; preds = %bb59, %bb58
+ %storemerge244 = phi float [ %991, %bb58 ], [ %1091, %bb59 ] ; [#uses=2]
+ %storemerge243 = phi float [ %986, %bb58 ], [ %1086, %bb59 ] ; [#uses=2]
+ %storemerge242 = phi float [ %981, %bb58 ], [ %1081, %bb59 ] ; [#uses=1]
+ %storemerge241 = phi float [ %976, %bb58 ], [ %1076, %bb59 ] ; [#uses=2]
+ %storemerge240 = phi float [ %971, %bb58 ], [ %1071, %bb59 ] ; [#uses=2]
+ %storemerge239 = phi float [ %966, %bb58 ], [ %1066, %bb59 ] ; [#uses=1]
+ %storemerge238 = phi float [ %961, %bb58 ], [ %1061, %bb59 ] ; [#uses=2]
+ %storemerge237 = phi float [ %953, %bb58 ], [ %1053, %bb59 ] ; [#uses=2]
+ %storemerge236 = phi float [ %945, %bb58 ], [ %1045, %bb59 ] ; [#uses=1]
+ %storemerge235 = phi float [ %937, %bb58 ], [ %1037, %bb59 ] ; [#uses=2]
+ %storemerge234 = phi float [ %923, %bb58 ], [ %1023, %bb59 ] ; [#uses=2]
+ %storemerge = phi float [ %909, %bb58 ], [ %1009, %bb59 ] ; [#uses=2]
+ store float %storemerge244, float* %621, align 8
+ store float %storemerge243, float* %622, align 4
+ store float %storemerge242, float* %623, align 8
+ store float 0.000000e+00, float* %624, align 4
+ store float %storemerge241, float* %625, align 8
+ store float %storemerge240, float* %626, align 4
+ store float %storemerge239, float* %627, align 8
+ store float 0.000000e+00, float* %628, align 4
+ store float %storemerge238, float* %629, align 8
+ store float %storemerge237, float* %630, align 4
+ store float %storemerge236, float* %631, align 8
+ store float 0.000000e+00, float* %632, align 4
+ store float %storemerge235, float* %633, align 8
+ store float %storemerge234, float* %634, align 4
+ store float %storemerge, float* %635, align 8
+ store float 0.000000e+00, float* %636, align 4
+ %1092 = getelementptr inbounds %struct.btQuadWord* %pivot44, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %storemerge235, float* %1092, align 8
+ %1093 = getelementptr inbounds %struct.btQuadWord* %pivot44, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %storemerge234, float* %1093, align 4
+ %1094 = getelementptr inbounds %struct.btQuadWord* %pivot44, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %storemerge, float* %1094, align 8
+ %1095 = getelementptr inbounds %struct.btQuadWord* %pivot44, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1095, align 4
+ %1096 = getelementptr inbounds %struct.btQuadWord* %normal46, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %storemerge244, float* %1096, align 8
+ %1097 = getelementptr inbounds %struct.btQuadWord* %normal46, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %storemerge241, float* %1097, align 4
+ %1098 = getelementptr inbounds %struct.btQuadWord* %normal46, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %storemerge238, float* %1098, align 8
+ %1099 = getelementptr inbounds %struct.btQuadWord* %normal46, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1099, align 4
+ %1100 = getelementptr inbounds %struct.btQuadWord* %axis1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %storemerge243, float* %1100, align 8
+ %1101 = getelementptr inbounds %struct.btQuadWord* %axis1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %storemerge240, float* %1101, align 4
+ %1102 = getelementptr inbounds %struct.btQuadWord* %axis1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %storemerge237, float* %1102, align 8
+ %1103 = getelementptr inbounds %struct.btQuadWord* %axis1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1103, align 4
+ %1104 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %1105 = getelementptr inbounds i32 (...)** %1104, i32 4 ; [#uses=1]
+ %1106 = load i32 (...)** %1105, align 4 ; [#uses=1]
+ %1107 = bitcast i32 (...)* %1106 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1108 = call %struct.btActionInterface* %1107(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %1109 = getelementptr inbounds %struct.btActionInterface* %1108, i32 0, i32 0 ; [#uses=1]
+ %1110 = load i32 (...)*** %1109, align 4 ; [#uses=1]
+ %1111 = getelementptr inbounds i32 (...)** %1110, i32 15 ; [#uses=1]
+ %1112 = load i32 (...)** %1111, align 4 ; [#uses=1]
+ %1113 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %1113, align 8
+ %1114 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1114, align 4
+ %1115 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %1115, align 8
+ %1116 = getelementptr inbounds %struct.btQuadWord* %6, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1116, align 4
+ %1117 = fsub float %886, %888 ; [#uses=1]
+ %1118 = fsub float -0.000000e+00, %888 ; [#uses=1]
+ %1119 = fsub float %1118, %886 ; [#uses=1]
+ %1120 = bitcast i32 (...)* %1112 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*, float, float, float, float, %struct.btQuadWord*, i8, float)* ; [#uses=1]
+ call void %1120(%struct.btActionInterface* %1108, %struct.btQuadWord* %pivot44, %struct.btQuadWord* %normal46, %struct.btQuadWord* %axis1, float %39, float %39, float %1119, float %1117, %struct.btQuadWord* %6, i8 zeroext 1, float 1.000000e+01)
+ ret void
+
+bb61: ; preds = %bb
+ %1121 = bitcast %struct.btTypedConstraint* %constraint to %struct.btGeneric6DofConstraint* ; [#uses=2]
+ %1122 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 29, i32 2 ; [#uses=16]
+ %1123 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=5]
+ %1124 = bitcast i32* %1122 to float* ; [#uses=3]
+ %1125 = load float* %1124, align 4 ; [#uses=1]
+ store float %1125, float* %1123, align 8
+ %1126 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=6]
+ %1127 = getelementptr inbounds i32* %1122, i32 1 ; [#uses=1]
+ %1128 = bitcast i32* %1127 to float* ; [#uses=3]
+ %1129 = load float* %1128, align 4 ; [#uses=1]
+ store float %1129, float* %1126, align 4
+ %1130 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=5]
+ %1131 = getelementptr inbounds i32* %1122, i32 2 ; [#uses=1]
+ %1132 = bitcast i32* %1131 to float* ; [#uses=3]
+ %1133 = load float* %1132, align 4 ; [#uses=1]
+ store float %1133, float* %1130, align 8
+ %1134 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=5]
+ %1135 = getelementptr inbounds i32* %1122, i32 3 ; [#uses=1]
+ %1136 = bitcast i32* %1135 to float* ; [#uses=3]
+ %1137 = load float* %1136, align 4 ; [#uses=1]
+ store float %1137, float* %1134, align 4
+ %1138 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=5]
+ %1139 = getelementptr inbounds i32* %1122, i32 4 ; [#uses=1]
+ %1140 = bitcast i32* %1139 to float* ; [#uses=3]
+ %1141 = load float* %1140, align 4 ; [#uses=1]
+ store float %1141, float* %1138, align 8
+ %1142 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=6]
+ %1143 = getelementptr inbounds i32* %1122, i32 5 ; [#uses=1]
+ %1144 = bitcast i32* %1143 to float* ; [#uses=3]
+ %1145 = load float* %1144, align 4 ; [#uses=1]
+ store float %1145, float* %1142, align 4
+ %1146 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=5]
+ %1147 = getelementptr inbounds i32* %1122, i32 6 ; [#uses=1]
+ %1148 = bitcast i32* %1147 to float* ; [#uses=3]
+ %1149 = load float* %1148, align 4 ; [#uses=1]
+ store float %1149, float* %1146, align 8
+ %1150 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=5]
+ %1151 = getelementptr inbounds i32* %1122, i32 7 ; [#uses=1]
+ %1152 = bitcast i32* %1151 to float* ; [#uses=3]
+ %1153 = load float* %1152, align 4 ; [#uses=1]
+ store float %1153, float* %1150, align 4
+ %1154 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=5]
+ %1155 = getelementptr inbounds i32* %1122, i32 8 ; [#uses=1]
+ %1156 = bitcast i32* %1155 to float* ; [#uses=3]
+ %1157 = load float* %1156, align 4 ; [#uses=1]
+ store float %1157, float* %1154, align 8
+ %1158 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=6]
+ %1159 = getelementptr inbounds i32* %1122, i32 9 ; [#uses=1]
+ %1160 = bitcast i32* %1159 to float* ; [#uses=3]
+ %1161 = load float* %1160, align 4 ; [#uses=1]
+ store float %1161, float* %1158, align 4
+ %1162 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=5]
+ %1163 = getelementptr inbounds i32* %1122, i32 10 ; [#uses=1]
+ %1164 = bitcast i32* %1163 to float* ; [#uses=3]
+ %1165 = load float* %1164, align 4 ; [#uses=1]
+ store float %1165, float* %1162, align 8
+ %1166 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=5]
+ %1167 = getelementptr inbounds i32* %1122, i32 11 ; [#uses=1]
+ %1168 = bitcast i32* %1167 to float* ; [#uses=3]
+ %1169 = load float* %1168, align 4 ; [#uses=1]
+ store float %1169, float* %1166, align 4
+ %1170 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 1, i32 0, i32 0 ; [#uses=5]
+ %1171 = getelementptr inbounds i32* %1122, i32 12 ; [#uses=1]
+ %1172 = bitcast i32* %1171 to float* ; [#uses=3]
+ %1173 = load float* %1172, align 4 ; [#uses=1]
+ store float %1173, float* %1170, align 8
+ %1174 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 1, i32 0, i32 1 ; [#uses=5]
+ %1175 = getelementptr inbounds i32* %1122, i32 13 ; [#uses=1]
+ %1176 = bitcast i32* %1175 to float* ; [#uses=3]
+ %1177 = load float* %1176, align 4 ; [#uses=1]
+ store float %1177, float* %1174, align 4
+ %1178 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 1, i32 0, i32 2 ; [#uses=5]
+ %1179 = getelementptr inbounds i32* %1122, i32 14 ; [#uses=1]
+ %1180 = bitcast i32* %1179 to float* ; [#uses=3]
+ %1181 = load float* %1180, align 4 ; [#uses=1]
+ store float %1181, float* %1178, align 8
+ %1182 = getelementptr inbounds %struct.btTransform* %tr64, i32 0, i32 1, i32 0, i32 3 ; [#uses=5]
+ %1183 = getelementptr inbounds i32* %1122, i32 15 ; [#uses=1]
+ %1184 = bitcast i32* %1183 to float* ; [#uses=3]
+ %1185 = load float* %1184, align 4 ; [#uses=1]
+ store float %1185, float* %1182, align 4
+ %toBool65 = icmp eq i8 %24, 0 ; [#uses=2]
+ br i1 %toBool65, label %bb67, label %bb66
+
+bb66: ; preds = %bb61
+ %1186 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %1187 = getelementptr inbounds i32 (...)** %1186, i32 4 ; [#uses=1]
+ %1188 = load i32 (...)** %1187, align 4 ; [#uses=1]
+ %1189 = bitcast i32 (...)* %1188 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1190 = call %struct.btActionInterface* %1189(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %1191 = getelementptr inbounds %struct.btActionInterface* %1190, i32 0, i32 0 ; [#uses=1]
+ %1192 = load i32 (...)*** %1191, align 4 ; [#uses=1]
+ %1193 = getelementptr inbounds i32 (...)** %1192, i32 14 ; [#uses=1]
+ %1194 = load i32 (...)** %1193, align 4 ; [#uses=1]
+ %1195 = bitcast i32 (...)* %1194 to void (%struct.btActionInterface*, %struct.btTransform*, float)* ; [#uses=1]
+ call void %1195(%struct.btActionInterface* %1190, %struct.btTransform* %tr64, float %39)
+ br label %bb67
+
+bb67: ; preds = %bb66, %bb61
+ %1196 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 31 ; [#uses=1]
+ %1197 = bitcast %struct.btTypedConstraint* %1196 to float* ; [#uses=2]
+ %1198 = load float* %1197, align 4 ; [#uses=1]
+ store float %1198, float* %1123, align 8
+ %1199 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 31, i32 1 ; [#uses=1]
+ %1200 = bitcast %struct.btHashInt* %1199 to float* ; [#uses=2]
+ %1201 = load float* %1200, align 4 ; [#uses=1]
+ store float %1201, float* %1126, align 4
+ %1202 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 31, i32 2 ; [#uses=1]
+ %1203 = bitcast i32* %1202 to float* ; [#uses=2]
+ %1204 = load float* %1203, align 4 ; [#uses=1]
+ store float %1204, float* %1130, align 8
+ %1205 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 31, i32 3 ; [#uses=1]
+ %1206 = bitcast %struct.btHashInt* %1205 to float* ; [#uses=2]
+ %1207 = load float* %1206, align 4 ; [#uses=1]
+ store float %1207, float* %1134, align 4
+ %1208 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 31, i32 4 ; [#uses=1]
+ %1209 = bitcast i8* %1208 to float* ; [#uses=2]
+ %1210 = load float* %1209, align 4 ; [#uses=1]
+ store float %1210, float* %1138, align 8
+ %1211 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 31, i32 5 ; [#uses=1]
+ %1212 = bitcast %struct.btRigidBody** %1211 to float* ; [#uses=2]
+ %1213 = load float* %1212, align 4 ; [#uses=1]
+ store float %1213, float* %1142, align 4
+ %1214 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 31, i32 6 ; [#uses=1]
+ %1215 = bitcast %struct.btRigidBody** %1214 to float* ; [#uses=2]
+ %1216 = load float* %1215, align 4 ; [#uses=1]
+ store float %1216, float* %1146, align 8
+ %1217 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 31, i32 7 ; [#uses=2]
+ %1218 = load float* %1217, align 4 ; [#uses=1]
+ store float %1218, float* %1150, align 4
+ %1219 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 31, i32 8 ; [#uses=2]
+ %1220 = load float* %1219, align 4 ; [#uses=1]
+ store float %1220, float* %1154, align 8
+ %1221 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 32 ; [#uses=1]
+ %1222 = bitcast %struct.btTypedConstraint* %1221 to float* ; [#uses=2]
+ %1223 = load float* %1222, align 4 ; [#uses=1]
+ store float %1223, float* %1158, align 4
+ %1224 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 32, i32 1 ; [#uses=1]
+ %1225 = bitcast %struct.btHashInt* %1224 to float* ; [#uses=2]
+ %1226 = load float* %1225, align 4 ; [#uses=1]
+ store float %1226, float* %1162, align 8
+ %1227 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 32, i32 2 ; [#uses=1]
+ %1228 = bitcast i32* %1227 to float* ; [#uses=2]
+ %1229 = load float* %1228, align 4 ; [#uses=1]
+ store float %1229, float* %1166, align 4
+ %1230 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 32, i32 3 ; [#uses=2]
+ %1231 = bitcast %struct.btHashInt* %1230 to float* ; [#uses=2]
+ %1232 = load float* %1231, align 4 ; [#uses=1]
+ store float %1232, float* %1170, align 8
+ %1233 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 32, i32 4 ; [#uses=1]
+ %1234 = bitcast i8* %1233 to float* ; [#uses=2]
+ %1235 = load float* %1234, align 4 ; [#uses=1]
+ store float %1235, float* %1174, align 4
+ %1236 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 32, i32 5 ; [#uses=1]
+ %1237 = bitcast %struct.btRigidBody** %1236 to float* ; [#uses=2]
+ %1238 = load float* %1237, align 4 ; [#uses=1]
+ store float %1238, float* %1178, align 8
+ %1239 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 32, i32 6 ; [#uses=1]
+ %1240 = bitcast %struct.btRigidBody** %1239 to float* ; [#uses=2]
+ %1241 = load float* %1240, align 4 ; [#uses=1]
+ store float %1241, float* %1182, align 4
+ br i1 %toBool65, label %bb70, label %bb69
+
+bb69: ; preds = %bb67
+ %1242 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %1243 = getelementptr inbounds i32 (...)** %1242, i32 4 ; [#uses=1]
+ %1244 = load i32 (...)** %1243, align 4 ; [#uses=1]
+ %1245 = bitcast i32 (...)* %1244 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1246 = call %struct.btActionInterface* %1245(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %1247 = getelementptr inbounds %struct.btActionInterface* %1246, i32 0, i32 0 ; [#uses=1]
+ %1248 = load i32 (...)*** %1247, align 4 ; [#uses=1]
+ %1249 = getelementptr inbounds i32 (...)** %1248, i32 14 ; [#uses=1]
+ %1250 = load i32 (...)** %1249, align 4 ; [#uses=1]
+ %1251 = bitcast i32 (...)* %1250 to void (%struct.btActionInterface*, %struct.btTransform*, float)* ; [#uses=1]
+ call void %1251(%struct.btActionInterface* %1246, %struct.btTransform* %tr64, float %39)
+ br label %bb70
+
+bb70: ; preds = %bb69, %bb67
+ %toBool71 = icmp eq i8 %37, 0 ; [#uses=1]
+ br i1 %toBool71, label %return, label %bb72
+
+bb72: ; preds = %bb70
+ %1252 = load float* %1124, align 4 ; [#uses=2]
+ store float %1252, float* %1123, align 8
+ %1253 = load float* %1128, align 4 ; [#uses=1]
+ store float %1253, float* %1126, align 4
+ %1254 = load float* %1132, align 4 ; [#uses=2]
+ store float %1254, float* %1130, align 8
+ %1255 = load float* %1136, align 4 ; [#uses=1]
+ store float %1255, float* %1134, align 4
+ %1256 = load float* %1140, align 4 ; [#uses=2]
+ store float %1256, float* %1138, align 8
+ %1257 = load float* %1144, align 4 ; [#uses=1]
+ store float %1257, float* %1142, align 4
+ %1258 = load float* %1148, align 4 ; [#uses=2]
+ store float %1258, float* %1146, align 8
+ %1259 = load float* %1152, align 4 ; [#uses=1]
+ store float %1259, float* %1150, align 4
+ %1260 = load float* %1156, align 4 ; [#uses=2]
+ store float %1260, float* %1154, align 8
+ %1261 = load float* %1160, align 4 ; [#uses=1]
+ store float %1261, float* %1158, align 4
+ %1262 = load float* %1164, align 4 ; [#uses=2]
+ store float %1262, float* %1162, align 8
+ %1263 = load float* %1168, align 4 ; [#uses=1]
+ store float %1263, float* %1166, align 4
+ %1264 = load float* %1172, align 4 ; [#uses=1]
+ store float %1264, float* %1170, align 8
+ %1265 = load float* %1176, align 4 ; [#uses=1]
+ store float %1265, float* %1174, align 4
+ %1266 = load float* %1180, align 4 ; [#uses=1]
+ store float %1266, float* %1178, align 8
+ %1267 = load float* %1184, align 4 ; [#uses=1]
+ store float %1267, float* %1182, align 4
+ %1268 = bitcast %struct.btHashInt* %1230 to %struct.btQuadWord* ; [#uses=3]
+ %1269 = getelementptr inbounds %struct.btQuadWord* %up, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1254, float* %1269, align 8
+ %1270 = getelementptr inbounds %struct.btQuadWord* %up, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1258, float* %1270, align 4
+ %1271 = getelementptr inbounds %struct.btQuadWord* %up, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1262, float* %1271, align 8
+ %1272 = getelementptr inbounds %struct.btQuadWord* %up, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1272, align 4
+ %1273 = getelementptr inbounds %struct.btQuadWord* %axis77, i32 0, i32 0, i32 0 ; [#uses=3]
+ store float %1252, float* %1273, align 8
+ %1274 = getelementptr inbounds %struct.btQuadWord* %axis77, i32 0, i32 0, i32 1 ; [#uses=3]
+ store float %1256, float* %1274, align 4
+ %1275 = getelementptr inbounds %struct.btQuadWord* %axis77, i32 0, i32 0, i32 2 ; [#uses=3]
+ store float %1260, float* %1275, align 8
+ %1276 = getelementptr inbounds %struct.btQuadWord* %axis77, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %1276, align 4
+ %1277 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 25, i32 5 ; [#uses=2]
+ %1278 = bitcast %struct.btRigidBody** %1277 to float* ; [#uses=1]
+ %1279 = load float* %1278, align 4 ; [#uses=1]
+ %1280 = getelementptr inbounds %struct.btRigidBody** %1277, i32 1 ; [#uses=1]
+ %1281 = bitcast %struct.btRigidBody** %1280 to float* ; [#uses=1]
+ %1282 = load float* %1281, align 4 ; [#uses=1]
+ %1283 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 27, i32 3 ; [#uses=2]
+ %1284 = bitcast %struct.btHashInt* %1283 to float* ; [#uses=1]
+ %1285 = load float* %1284, align 4 ; [#uses=1]
+ %1286 = getelementptr inbounds %struct.btHashInt* %1283, i32 1 ; [#uses=1]
+ %1287 = bitcast %struct.btHashInt* %1286 to float* ; [#uses=1]
+ %1288 = load float* %1287, align 4 ; [#uses=1]
+ %1289 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %1290 = getelementptr inbounds i32 (...)** %1289, i32 4 ; [#uses=1]
+ %1291 = load i32 (...)** %1290, align 4 ; [#uses=1]
+ %1292 = bitcast i32 (...)* %1291 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1293 = call %struct.btActionInterface* %1292(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %1294 = getelementptr inbounds %struct.btActionInterface* %1293, i32 0, i32 0 ; [#uses=1]
+ %1295 = load i32 (...)*** %1294, align 4 ; [#uses=1]
+ %1296 = getelementptr inbounds i32 (...)** %1295, i32 16 ; [#uses=1]
+ %1297 = load i32 (...)** %1296, align 4 ; [#uses=1]
+ %1298 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %1298, align 8
+ %1299 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1299, align 4
+ %1300 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %1300, align 8
+ %1301 = getelementptr inbounds %struct.btQuadWord* %5, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1301, align 4
+ %1302 = fmul float %39, 0x3FECCCCCC0000000 ; [#uses=1]
+ %1303 = bitcast i32 (...)* %1297 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*, float, float, float, float, float, %struct.btQuadWord*, float)* ; [#uses=1]
+ call void %1303(%struct.btActionInterface* %1293, %struct.btQuadWord* %1268, %struct.btQuadWord* %up, %struct.btQuadWord* %axis77, float %1302, float %1279, float %1282, float %1285, float %1288, %struct.btQuadWord* %5, float 1.000000e+01)
+ %1304 = load float* %1126, align 4 ; [#uses=1]
+ %1305 = load float* %1142, align 4 ; [#uses=1]
+ %1306 = load float* %1158, align 4 ; [#uses=1]
+ store float %1304, float* %1273, align 8
+ store float %1305, float* %1274, align 4
+ store float %1306, float* %1275, align 8
+ store float 0.000000e+00, float* %1276, align 4
+ %1307 = call float @_ZNK23btGeneric6DofConstraint8getAngleEi(%struct.btGeneric6DofConstraint* %1121, i32 1) ; [#uses=2]
+ %1308 = call float @_ZNK23btGeneric6DofConstraint8getAngleEi(%struct.btGeneric6DofConstraint* %1121, i32 2) ; [#uses=2]
+ %1309 = call float @cosf(float %1307) nounwind readonly ; [#uses=3]
+ %1310 = call float @sinf(float %1307) nounwind readonly ; [#uses=3]
+ %1311 = call float @cosf(float %1308) nounwind readonly ; [#uses=3]
+ %1312 = call float @sinf(float %1308) nounwind readonly ; [#uses=3]
+ %1313 = getelementptr inbounds %struct.btQuadWord* %ref, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1314 = fmul float %1309, %1311 ; [#uses=1]
+ %1315 = load float* %1273, align 8 ; [#uses=3]
+ %1316 = fmul float %1314, %1315 ; [#uses=1]
+ %1317 = fmul float %1309, %1312 ; [#uses=1]
+ %1318 = load float* %1274, align 4 ; [#uses=3]
+ %1319 = fmul float %1317, %1318 ; [#uses=1]
+ %1320 = fadd float %1316, %1319 ; [#uses=1]
+ %1321 = load float* %1275, align 8 ; [#uses=2]
+ %1322 = fmul float %1321, %1310 ; [#uses=1]
+ %1323 = fsub float %1320, %1322 ; [#uses=1]
+ store float %1323, float* %1313, align 8
+ %1324 = fsub float -0.000000e+00, %1312 ; [#uses=1]
+ %1325 = fmul float %1315, %1324 ; [#uses=1]
+ %1326 = fmul float %1318, %1311 ; [#uses=1]
+ %1327 = fadd float %1325, %1326 ; [#uses=1]
+ %1328 = getelementptr inbounds %struct.btQuadWord* %ref, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1327, float* %1328, align 4
+ %1329 = fmul float %1311, %1310 ; [#uses=1]
+ %1330 = fmul float %1329, %1315 ; [#uses=1]
+ %1331 = fmul float %1312, %1310 ; [#uses=1]
+ %1332 = fmul float %1331, %1318 ; [#uses=1]
+ %1333 = fadd float %1330, %1332 ; [#uses=1]
+ %1334 = fmul float %1321, %1309 ; [#uses=1]
+ %1335 = fadd float %1333, %1334 ; [#uses=1]
+ %1336 = getelementptr inbounds %struct.btQuadWord* %ref, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1335, float* %1336, align 8
+ %1337 = load float* %1197, align 4 ; [#uses=2]
+ store float %1337, float* %1123, align 8
+ %1338 = load float* %1200, align 4 ; [#uses=1]
+ store float %1338, float* %1126, align 4
+ %1339 = load float* %1203, align 4 ; [#uses=1]
+ store float %1339, float* %1130, align 8
+ %1340 = load float* %1206, align 4 ; [#uses=1]
+ store float %1340, float* %1134, align 4
+ %1341 = load float* %1209, align 4 ; [#uses=2]
+ store float %1341, float* %1138, align 8
+ %1342 = load float* %1212, align 4 ; [#uses=1]
+ store float %1342, float* %1142, align 4
+ %1343 = load float* %1215, align 4 ; [#uses=1]
+ store float %1343, float* %1146, align 8
+ %1344 = load float* %1217, align 4 ; [#uses=1]
+ store float %1344, float* %1150, align 4
+ %1345 = load float* %1219, align 4 ; [#uses=2]
+ store float %1345, float* %1154, align 8
+ %1346 = load float* %1222, align 4 ; [#uses=1]
+ store float %1346, float* %1158, align 4
+ %1347 = load float* %1225, align 4 ; [#uses=1]
+ store float %1347, float* %1162, align 8
+ %1348 = load float* %1228, align 4 ; [#uses=1]
+ store float %1348, float* %1166, align 4
+ %1349 = load float* %1231, align 4 ; [#uses=1]
+ store float %1349, float* %1170, align 8
+ %1350 = load float* %1234, align 4 ; [#uses=1]
+ store float %1350, float* %1174, align 4
+ %1351 = load float* %1237, align 4 ; [#uses=1]
+ store float %1351, float* %1178, align 8
+ %1352 = load float* %1240, align 4 ; [#uses=1]
+ store float %1352, float* %1182, align 4
+ %1353 = fsub float -0.000000e+00, %1345 ; [#uses=1]
+ %1354 = fsub float -0.000000e+00, %1341 ; [#uses=1]
+ %1355 = fsub float -0.000000e+00, %1337 ; [#uses=1]
+ %1356 = getelementptr inbounds %struct.btQuadWord* %normal90, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1355, float* %1356, align 8
+ %1357 = getelementptr inbounds %struct.btQuadWord* %normal90, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1354, float* %1357, align 4
+ %1358 = getelementptr inbounds %struct.btQuadWord* %normal90, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1353, float* %1358, align 8
+ %1359 = getelementptr inbounds %struct.btQuadWord* %normal90, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1359, align 4
+ %1360 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 23, i32 7 ; [#uses=2]
+ %1361 = load float* %1360, align 4 ; [#uses=3]
+ %1362 = getelementptr inbounds float* %1360, i32 1 ; [#uses=1]
+ %1363 = load float* %1362, align 4 ; [#uses=3]
+ %1364 = fcmp ogt float %1361, %1363 ; [#uses=1]
+ br i1 %1364, label %bb96, label %bb97
+
+bb96: ; preds = %bb72
+ %1365 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %1366 = getelementptr inbounds i32 (...)** %1365, i32 4 ; [#uses=1]
+ %1367 = load i32 (...)** %1366, align 4 ; [#uses=1]
+ %1368 = bitcast i32 (...)* %1367 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1369 = call %struct.btActionInterface* %1368(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %1370 = getelementptr inbounds %struct.btActionInterface* %1369, i32 0, i32 0 ; [#uses=1]
+ %1371 = load i32 (...)*** %1370, align 4 ; [#uses=1]
+ %1372 = getelementptr inbounds i32 (...)** %1371, i32 15 ; [#uses=1]
+ %1373 = load i32 (...)** %1372, align 4 ; [#uses=1]
+ %1374 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %1374, align 8
+ %1375 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1375, align 4
+ %1376 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %1376, align 8
+ %1377 = getelementptr inbounds %struct.btQuadWord* %4, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1377, align 4
+ %1378 = bitcast i32 (...)* %1373 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*, float, float, float, float, %struct.btQuadWord*, i8, float)* ; [#uses=1]
+ call void %1378(%struct.btActionInterface* %1369, %struct.btQuadWord* %1268, %struct.btQuadWord* %normal90, %struct.btQuadWord* %ref, float %39, float %39, float 0xC00921FB60000000, float 0x400921FB60000000, %struct.btQuadWord* %4, i8 zeroext 0, float 1.000000e+01)
+ br label %bb99
+
+bb97: ; preds = %bb72
+ %1379 = fcmp olt float %1361, %1363 ; [#uses=1]
+ br i1 %1379, label %bb98, label %bb99
+
+bb98: ; preds = %bb97
+ %1380 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %1381 = getelementptr inbounds i32 (...)** %1380, i32 4 ; [#uses=1]
+ %1382 = load i32 (...)** %1381, align 4 ; [#uses=1]
+ %1383 = bitcast i32 (...)* %1382 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1384 = call %struct.btActionInterface* %1383(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %1385 = getelementptr inbounds %struct.btActionInterface* %1384, i32 0, i32 0 ; [#uses=1]
+ %1386 = load i32 (...)*** %1385, align 4 ; [#uses=1]
+ %1387 = getelementptr inbounds i32 (...)** %1386, i32 15 ; [#uses=1]
+ %1388 = load i32 (...)** %1387, align 4 ; [#uses=1]
+ %1389 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %1389, align 8
+ %1390 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1390, align 4
+ %1391 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %1391, align 8
+ %1392 = getelementptr inbounds %struct.btQuadWord* %3, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1392, align 4
+ %1393 = bitcast i32 (...)* %1388 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*, float, float, float, float, %struct.btQuadWord*, i8, float)* ; [#uses=1]
+ call void %1393(%struct.btActionInterface* %1384, %struct.btQuadWord* %1268, %struct.btQuadWord* %normal90, %struct.btQuadWord* %ref, float %39, float %39, float %1361, float %1363, %struct.btQuadWord* %3, i8 zeroext 1, float 1.000000e+01)
+ br label %bb99
+
+bb99: ; preds = %bb98, %bb97, %bb96
+ %1394 = load float* %1124, align 4 ; [#uses=1]
+ store float %1394, float* %1123, align 8
+ %1395 = load float* %1128, align 4 ; [#uses=1]
+ store float %1395, float* %1126, align 4
+ %1396 = load float* %1132, align 4 ; [#uses=1]
+ store float %1396, float* %1130, align 8
+ %1397 = load float* %1136, align 4 ; [#uses=1]
+ store float %1397, float* %1134, align 4
+ %1398 = load float* %1140, align 4 ; [#uses=1]
+ store float %1398, float* %1138, align 8
+ %1399 = load float* %1144, align 4 ; [#uses=1]
+ store float %1399, float* %1142, align 4
+ %1400 = load float* %1148, align 4 ; [#uses=1]
+ store float %1400, float* %1146, align 8
+ %1401 = load float* %1152, align 4 ; [#uses=1]
+ store float %1401, float* %1150, align 4
+ %1402 = load float* %1156, align 4 ; [#uses=1]
+ store float %1402, float* %1154, align 8
+ %1403 = load float* %1160, align 4 ; [#uses=1]
+ store float %1403, float* %1158, align 4
+ %1404 = load float* %1164, align 4 ; [#uses=1]
+ store float %1404, float* %1162, align 8
+ %1405 = load float* %1168, align 4 ; [#uses=1]
+ store float %1405, float* %1166, align 4
+ %1406 = load float* %1172, align 4 ; [#uses=1]
+ store float %1406, float* %1170, align 8
+ %1407 = load float* %1176, align 4 ; [#uses=1]
+ store float %1407, float* %1174, align 4
+ %1408 = load float* %1180, align 4 ; [#uses=1]
+ store float %1408, float* %1178, align 8
+ %1409 = load float* %1184, align 4 ; [#uses=1]
+ store float %1409, float* %1182, align 4
+ %1410 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 18, i32 5 ; [#uses=8]
+ %1411 = getelementptr inbounds %struct.btQuadWord* %bbMin, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1412 = bitcast %struct.btRigidBody** %1410 to float* ; [#uses=1]
+ %1413 = load float* %1412, align 4 ; [#uses=1]
+ store float %1413, float* %1411, align 8
+ %1414 = getelementptr inbounds %struct.btQuadWord* %bbMin, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1415 = getelementptr inbounds %struct.btRigidBody** %1410, i32 1 ; [#uses=1]
+ %1416 = bitcast %struct.btRigidBody** %1415 to float* ; [#uses=1]
+ %1417 = load float* %1416, align 4 ; [#uses=1]
+ store float %1417, float* %1414, align 4
+ %1418 = getelementptr inbounds %struct.btQuadWord* %bbMin, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1419 = getelementptr inbounds %struct.btRigidBody** %1410, i32 2 ; [#uses=1]
+ %1420 = bitcast %struct.btRigidBody** %1419 to float* ; [#uses=1]
+ %1421 = load float* %1420, align 4 ; [#uses=1]
+ store float %1421, float* %1418, align 8
+ %1422 = getelementptr inbounds %struct.btQuadWord* %bbMin, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1423 = getelementptr inbounds %struct.btRigidBody** %1410, i32 3 ; [#uses=1]
+ %1424 = bitcast %struct.btRigidBody** %1423 to float* ; [#uses=1]
+ %1425 = load float* %1424, align 4 ; [#uses=1]
+ store float %1425, float* %1422, align 4
+ %1426 = getelementptr inbounds %struct.btQuadWord* %bbMax, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1427 = getelementptr inbounds %struct.btRigidBody** %1410, i32 4 ; [#uses=1]
+ %1428 = bitcast %struct.btRigidBody** %1427 to float* ; [#uses=1]
+ %1429 = load float* %1428, align 4 ; [#uses=1]
+ store float %1429, float* %1426, align 8
+ %1430 = getelementptr inbounds %struct.btQuadWord* %bbMax, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1431 = getelementptr inbounds %struct.btRigidBody** %1410, i32 5 ; [#uses=1]
+ %1432 = bitcast %struct.btRigidBody** %1431 to float* ; [#uses=1]
+ %1433 = load float* %1432, align 4 ; [#uses=1]
+ store float %1433, float* %1430, align 4
+ %1434 = getelementptr inbounds %struct.btQuadWord* %bbMax, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1435 = getelementptr inbounds %struct.btRigidBody** %1410, i32 6 ; [#uses=1]
+ %1436 = bitcast %struct.btRigidBody** %1435 to float* ; [#uses=1]
+ %1437 = load float* %1436, align 4 ; [#uses=1]
+ store float %1437, float* %1434, align 8
+ %1438 = getelementptr inbounds %struct.btQuadWord* %bbMax, i32 0, i32 0, i32 3 ; [#uses=1]
+ %1439 = getelementptr inbounds %struct.btRigidBody** %1410, i32 7 ; [#uses=1]
+ %1440 = bitcast %struct.btRigidBody** %1439 to float* ; [#uses=1]
+ %1441 = load float* %1440, align 4 ; [#uses=1]
+ store float %1441, float* %1438, align 4
+ %1442 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %1443 = getelementptr inbounds i32 (...)** %1442, i32 4 ; [#uses=1]
+ %1444 = load i32 (...)** %1443, align 4 ; [#uses=1]
+ %1445 = bitcast i32 (...)* %1444 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1446 = call %struct.btActionInterface* %1445(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %1447 = getelementptr inbounds %struct.btActionInterface* %1446, i32 0, i32 0 ; [#uses=1]
+ %1448 = load i32 (...)*** %1447, align 4 ; [#uses=1]
+ %1449 = getelementptr inbounds i32 (...)** %1448, i32 18 ; [#uses=1]
+ %1450 = load i32 (...)** %1449, align 4 ; [#uses=1]
+ %1451 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %1451, align 8
+ %1452 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1452, align 4
+ %1453 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %1453, align 8
+ %1454 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1454, align 4
+ %1455 = bitcast i32 (...)* %1450 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btTransform*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %1455(%struct.btActionInterface* %1446, %struct.btQuadWord* %bbMin, %struct.btQuadWord* %bbMax, %struct.btTransform* %tr64, %struct.btQuadWord* %2)
+ ret void
+
+bb100: ; preds = %bb
+ %1456 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 22, i32 5 ; [#uses=17]
+ %1457 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1458 = bitcast %struct.btRigidBody** %1456 to float* ; [#uses=1]
+ %1459 = load float* %1458, align 4 ; [#uses=1]
+ store float %1459, float* %1457, align 8
+ %1460 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %1461 = getelementptr inbounds %struct.btRigidBody** %1456, i32 1 ; [#uses=1]
+ %1462 = bitcast %struct.btRigidBody** %1461 to float* ; [#uses=1]
+ %1463 = load float* %1462, align 4 ; [#uses=1]
+ store float %1463, float* %1460, align 4
+ %1464 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %1465 = getelementptr inbounds %struct.btRigidBody** %1456, i32 2 ; [#uses=1]
+ %1466 = bitcast %struct.btRigidBody** %1465 to float* ; [#uses=1]
+ %1467 = load float* %1466, align 4 ; [#uses=1]
+ store float %1467, float* %1464, align 8
+ %1468 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %1469 = getelementptr inbounds %struct.btRigidBody** %1456, i32 3 ; [#uses=1]
+ %1470 = bitcast %struct.btRigidBody** %1469 to float* ; [#uses=1]
+ %1471 = load float* %1470, align 4 ; [#uses=1]
+ store float %1471, float* %1468, align 4
+ %1472 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %1473 = getelementptr inbounds %struct.btRigidBody** %1456, i32 4 ; [#uses=1]
+ %1474 = bitcast %struct.btRigidBody** %1473 to float* ; [#uses=1]
+ %1475 = load float* %1474, align 4 ; [#uses=1]
+ store float %1475, float* %1472, align 8
+ %1476 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %1477 = getelementptr inbounds %struct.btRigidBody** %1456, i32 5 ; [#uses=1]
+ %1478 = bitcast %struct.btRigidBody** %1477 to float* ; [#uses=1]
+ %1479 = load float* %1478, align 4 ; [#uses=1]
+ store float %1479, float* %1476, align 4
+ %1480 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %1481 = getelementptr inbounds %struct.btRigidBody** %1456, i32 6 ; [#uses=1]
+ %1482 = bitcast %struct.btRigidBody** %1481 to float* ; [#uses=1]
+ %1483 = load float* %1482, align 4 ; [#uses=1]
+ store float %1483, float* %1480, align 8
+ %1484 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %1485 = getelementptr inbounds %struct.btRigidBody** %1456, i32 7 ; [#uses=1]
+ %1486 = bitcast %struct.btRigidBody** %1485 to float* ; [#uses=1]
+ %1487 = load float* %1486, align 4 ; [#uses=1]
+ store float %1487, float* %1484, align 4
+ %1488 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %1489 = getelementptr inbounds %struct.btRigidBody** %1456, i32 8 ; [#uses=1]
+ %1490 = bitcast %struct.btRigidBody** %1489 to float* ; [#uses=1]
+ %1491 = load float* %1490, align 4 ; [#uses=1]
+ store float %1491, float* %1488, align 8
+ %1492 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %1493 = getelementptr inbounds %struct.btRigidBody** %1456, i32 9 ; [#uses=1]
+ %1494 = bitcast %struct.btRigidBody** %1493 to float* ; [#uses=1]
+ %1495 = load float* %1494, align 4 ; [#uses=1]
+ store float %1495, float* %1492, align 4
+ %1496 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %1497 = getelementptr inbounds %struct.btRigidBody** %1456, i32 10 ; [#uses=1]
+ %1498 = bitcast %struct.btRigidBody** %1497 to float* ; [#uses=1]
+ %1499 = load float* %1498, align 4 ; [#uses=1]
+ store float %1499, float* %1496, align 8
+ %1500 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %1501 = getelementptr inbounds %struct.btRigidBody** %1456, i32 11 ; [#uses=1]
+ %1502 = bitcast %struct.btRigidBody** %1501 to float* ; [#uses=1]
+ %1503 = load float* %1502, align 4 ; [#uses=1]
+ store float %1503, float* %1500, align 4
+ %1504 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %1505 = getelementptr inbounds %struct.btRigidBody** %1456, i32 12 ; [#uses=1]
+ %1506 = bitcast %struct.btRigidBody** %1505 to float* ; [#uses=1]
+ %1507 = load float* %1506, align 4 ; [#uses=1]
+ store float %1507, float* %1504, align 8
+ %1508 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %1509 = getelementptr inbounds %struct.btRigidBody** %1456, i32 13 ; [#uses=1]
+ %1510 = bitcast %struct.btRigidBody** %1509 to float* ; [#uses=1]
+ %1511 = load float* %1510, align 4 ; [#uses=1]
+ store float %1511, float* %1508, align 4
+ %1512 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %1513 = getelementptr inbounds %struct.btRigidBody** %1456, i32 14 ; [#uses=1]
+ %1514 = bitcast %struct.btRigidBody** %1513 to float* ; [#uses=1]
+ %1515 = load float* %1514, align 4 ; [#uses=1]
+ store float %1515, float* %1512, align 8
+ %1516 = getelementptr inbounds %struct.btTransform* %tr103, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %1517 = getelementptr inbounds %struct.btRigidBody** %1456, i32 15 ; [#uses=1]
+ %1518 = bitcast %struct.btRigidBody** %1517 to float* ; [#uses=1]
+ %1519 = load float* %1518, align 4 ; [#uses=1]
+ store float %1519, float* %1516, align 4
+ %toBool104 = icmp eq i8 %24, 0 ; [#uses=2]
+ br i1 %toBool104, label %bb106, label %bb105
+
+bb105: ; preds = %bb100
+ %1520 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %1521 = getelementptr inbounds i32 (...)** %1520, i32 4 ; [#uses=1]
+ %1522 = load i32 (...)** %1521, align 4 ; [#uses=1]
+ %1523 = bitcast i32 (...)* %1522 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1524 = call %struct.btActionInterface* %1523(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %1525 = getelementptr inbounds %struct.btActionInterface* %1524, i32 0, i32 0 ; [#uses=1]
+ %1526 = load i32 (...)*** %1525, align 4 ; [#uses=1]
+ %1527 = getelementptr inbounds i32 (...)** %1526, i32 14 ; [#uses=1]
+ %1528 = load i32 (...)** %1527, align 4 ; [#uses=1]
+ %1529 = bitcast i32 (...)* %1528 to void (%struct.btActionInterface*, %struct.btTransform*, float)* ; [#uses=1]
+ call void %1529(%struct.btActionInterface* %1524, %struct.btTransform* %tr103, float %39)
+ br label %bb106
+
+bb106: ; preds = %bb105, %bb100
+ %1530 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 24, i32 3 ; [#uses=17]
+ %1531 = bitcast %struct.btHashInt* %1530 to float* ; [#uses=1]
+ %1532 = load float* %1531, align 4 ; [#uses=1]
+ store float %1532, float* %1457, align 8
+ %1533 = getelementptr inbounds %struct.btHashInt* %1530, i32 1 ; [#uses=1]
+ %1534 = bitcast %struct.btHashInt* %1533 to float* ; [#uses=1]
+ %1535 = load float* %1534, align 4 ; [#uses=1]
+ store float %1535, float* %1460, align 4
+ %1536 = getelementptr inbounds %struct.btHashInt* %1530, i32 2 ; [#uses=1]
+ %1537 = bitcast %struct.btHashInt* %1536 to float* ; [#uses=1]
+ %1538 = load float* %1537, align 4 ; [#uses=1]
+ store float %1538, float* %1464, align 8
+ %1539 = getelementptr inbounds %struct.btHashInt* %1530, i32 3 ; [#uses=1]
+ %1540 = bitcast %struct.btHashInt* %1539 to float* ; [#uses=1]
+ %1541 = load float* %1540, align 4 ; [#uses=1]
+ store float %1541, float* %1468, align 4
+ %1542 = getelementptr inbounds %struct.btHashInt* %1530, i32 4 ; [#uses=1]
+ %1543 = bitcast %struct.btHashInt* %1542 to float* ; [#uses=1]
+ %1544 = load float* %1543, align 4 ; [#uses=1]
+ store float %1544, float* %1472, align 8
+ %1545 = getelementptr inbounds %struct.btHashInt* %1530, i32 5 ; [#uses=1]
+ %1546 = bitcast %struct.btHashInt* %1545 to float* ; [#uses=1]
+ %1547 = load float* %1546, align 4 ; [#uses=1]
+ store float %1547, float* %1476, align 4
+ %1548 = getelementptr inbounds %struct.btHashInt* %1530, i32 6 ; [#uses=1]
+ %1549 = bitcast %struct.btHashInt* %1548 to float* ; [#uses=1]
+ %1550 = load float* %1549, align 4 ; [#uses=1]
+ store float %1550, float* %1480, align 8
+ %1551 = getelementptr inbounds %struct.btHashInt* %1530, i32 7 ; [#uses=1]
+ %1552 = bitcast %struct.btHashInt* %1551 to float* ; [#uses=1]
+ %1553 = load float* %1552, align 4 ; [#uses=1]
+ store float %1553, float* %1484, align 4
+ %1554 = getelementptr inbounds %struct.btHashInt* %1530, i32 8 ; [#uses=1]
+ %1555 = bitcast %struct.btHashInt* %1554 to float* ; [#uses=1]
+ %1556 = load float* %1555, align 4 ; [#uses=1]
+ store float %1556, float* %1488, align 8
+ %1557 = getelementptr inbounds %struct.btHashInt* %1530, i32 9 ; [#uses=1]
+ %1558 = bitcast %struct.btHashInt* %1557 to float* ; [#uses=1]
+ %1559 = load float* %1558, align 4 ; [#uses=1]
+ store float %1559, float* %1492, align 4
+ %1560 = getelementptr inbounds %struct.btHashInt* %1530, i32 10 ; [#uses=1]
+ %1561 = bitcast %struct.btHashInt* %1560 to float* ; [#uses=1]
+ %1562 = load float* %1561, align 4 ; [#uses=1]
+ store float %1562, float* %1496, align 8
+ %1563 = getelementptr inbounds %struct.btHashInt* %1530, i32 11 ; [#uses=1]
+ %1564 = bitcast %struct.btHashInt* %1563 to float* ; [#uses=1]
+ %1565 = load float* %1564, align 4 ; [#uses=1]
+ store float %1565, float* %1500, align 4
+ %1566 = getelementptr inbounds %struct.btHashInt* %1530, i32 12 ; [#uses=2]
+ %1567 = bitcast %struct.btHashInt* %1566 to float* ; [#uses=1]
+ %1568 = load float* %1567, align 4 ; [#uses=1]
+ store float %1568, float* %1504, align 8
+ %1569 = getelementptr inbounds %struct.btHashInt* %1530, i32 13 ; [#uses=1]
+ %1570 = bitcast %struct.btHashInt* %1569 to float* ; [#uses=1]
+ %1571 = load float* %1570, align 4 ; [#uses=1]
+ store float %1571, float* %1508, align 4
+ %1572 = getelementptr inbounds %struct.btHashInt* %1530, i32 14 ; [#uses=1]
+ %1573 = bitcast %struct.btHashInt* %1572 to float* ; [#uses=1]
+ %1574 = load float* %1573, align 4 ; [#uses=1]
+ store float %1574, float* %1512, align 8
+ %1575 = getelementptr inbounds %struct.btHashInt* %1530, i32 15 ; [#uses=1]
+ %1576 = bitcast %struct.btHashInt* %1575 to float* ; [#uses=1]
+ %1577 = load float* %1576, align 4 ; [#uses=1]
+ store float %1577, float* %1516, align 4
+ br i1 %toBool104, label %bb109, label %bb108
+
+bb108: ; preds = %bb106
+ %1578 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %1579 = getelementptr inbounds i32 (...)** %1578, i32 4 ; [#uses=1]
+ %1580 = load i32 (...)** %1579, align 4 ; [#uses=1]
+ %1581 = bitcast i32 (...)* %1580 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1582 = call %struct.btActionInterface* %1581(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %1583 = getelementptr inbounds %struct.btActionInterface* %1582, i32 0, i32 0 ; [#uses=1]
+ %1584 = load i32 (...)*** %1583, align 4 ; [#uses=1]
+ %1585 = getelementptr inbounds i32 (...)** %1584, i32 14 ; [#uses=1]
+ %1586 = load i32 (...)** %1585, align 4 ; [#uses=1]
+ %1587 = bitcast i32 (...)* %1586 to void (%struct.btActionInterface*, %struct.btTransform*, float)* ; [#uses=1]
+ call void %1587(%struct.btActionInterface* %1582, %struct.btTransform* %tr103, float %39)
+ br label %bb109
+
+bb109: ; preds = %bb108, %bb106
+ %toBool110 = icmp eq i8 %37, 0 ; [#uses=1]
+ br i1 %toBool110, label %return, label %bb111
+
+bb111: ; preds = %bb109
+ %1588 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 4, i32 6 ; [#uses=1]
+ %1589 = bitcast %struct.btRigidBody** %1588 to i8* ; [#uses=1]
+ %1590 = load i8* %1589, align 4 ; [#uses=1]
+ %toBool124 = icmp eq i8 %1590, 0 ; [#uses=1]
+ br i1 %toBool124, label %bb126, label %bb125
+
+bb125: ; preds = %bb111
+ %1591 = bitcast %struct.btRigidBody** %1456 to %struct.btTransform* ; [#uses=1]
+ br label %bb127
+
+bb126: ; preds = %bb111
+ %1592 = bitcast %struct.btHashInt* %1530 to %struct.btTransform* ; [#uses=1]
+ br label %bb127
+
+bb127: ; preds = %bb126, %bb125
+ %iftmp.430.0 = phi %struct.btTransform* [ %1591, %bb125 ], [ %1592, %bb126 ] ; [#uses=12]
+ %1593 = getelementptr inbounds %struct.btTransform* %iftmp.430.0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1594 = load float* %1593, align 4 ; [#uses=3]
+ %1595 = getelementptr inbounds %struct.btTransform* %iftmp.430.0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1596 = load float* %1595, align 4 ; [#uses=2]
+ %1597 = getelementptr inbounds %struct.btTransform* %iftmp.430.0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1598 = load float* %1597, align 4 ; [#uses=1]
+ %1599 = getelementptr inbounds %struct.btTransform* %iftmp.430.0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1600 = load float* %1599, align 4 ; [#uses=3]
+ %1601 = getelementptr inbounds %struct.btTransform* %iftmp.430.0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1602 = load float* %1601, align 4 ; [#uses=2]
+ %1603 = getelementptr inbounds %struct.btTransform* %iftmp.430.0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1604 = load float* %1603, align 4 ; [#uses=1]
+ %1605 = getelementptr inbounds %struct.btTransform* %iftmp.430.0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %1606 = load float* %1605, align 4 ; [#uses=3]
+ %1607 = getelementptr inbounds %struct.btTransform* %iftmp.430.0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %1608 = load float* %1607, align 4 ; [#uses=2]
+ %1609 = getelementptr inbounds %struct.btTransform* %iftmp.430.0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1610 = load float* %1609, align 4 ; [#uses=1]
+ %1611 = getelementptr inbounds %struct.btTransform* %iftmp.430.0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %1612 = load float* %1611, align 4 ; [#uses=2]
+ %1613 = getelementptr inbounds %struct.btTransform* %iftmp.430.0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %1614 = load float* %1613, align 4 ; [#uses=2]
+ %1615 = getelementptr inbounds %struct.btTransform* %iftmp.430.0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %1616 = load float* %1615, align 4 ; [#uses=2]
+ %1617 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 4, i32 7 ; [#uses=1]
+ %1618 = load float* %1617, align 4 ; [#uses=3]
+ %1619 = fmul float %1606, %1618 ; [#uses=1]
+ %1620 = fmul float %1608, 0.000000e+00 ; [#uses=2]
+ %1621 = fadd float %1619, %1620 ; [#uses=1]
+ %1622 = fmul float %1610, 0.000000e+00 ; [#uses=2]
+ %1623 = fadd float %1621, %1622 ; [#uses=1]
+ %1624 = fadd float %1623, %1616 ; [#uses=1]
+ %1625 = fmul float %1600, %1618 ; [#uses=1]
+ %1626 = fmul float %1602, 0.000000e+00 ; [#uses=2]
+ %1627 = fadd float %1625, %1626 ; [#uses=1]
+ %1628 = fmul float %1604, 0.000000e+00 ; [#uses=2]
+ %1629 = fadd float %1627, %1628 ; [#uses=1]
+ %1630 = fadd float %1629, %1614 ; [#uses=1]
+ %1631 = fmul float %1594, %1618 ; [#uses=1]
+ %1632 = fmul float %1596, 0.000000e+00 ; [#uses=2]
+ %1633 = fadd float %1631, %1632 ; [#uses=1]
+ %1634 = fmul float %1598, 0.000000e+00 ; [#uses=2]
+ %1635 = fadd float %1633, %1634 ; [#uses=1]
+ %1636 = fadd float %1635, %1612 ; [#uses=1]
+ %1637 = getelementptr inbounds %struct.btQuadWord* %li_min, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1636, float* %1637, align 8
+ %1638 = getelementptr inbounds %struct.btQuadWord* %li_min, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1630, float* %1638, align 4
+ %1639 = getelementptr inbounds %struct.btQuadWord* %li_min, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1624, float* %1639, align 8
+ %1640 = getelementptr inbounds %struct.btQuadWord* %li_min, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1640, align 4
+ %1641 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 4, i32 8 ; [#uses=1]
+ %1642 = load float* %1641, align 4 ; [#uses=3]
+ %1643 = fmul float %1606, %1642 ; [#uses=1]
+ %1644 = fadd float %1643, %1620 ; [#uses=1]
+ %1645 = fadd float %1644, %1622 ; [#uses=1]
+ %1646 = fadd float %1645, %1616 ; [#uses=1]
+ %1647 = fmul float %1600, %1642 ; [#uses=1]
+ %1648 = fadd float %1647, %1626 ; [#uses=1]
+ %1649 = fadd float %1648, %1628 ; [#uses=1]
+ %1650 = fadd float %1649, %1614 ; [#uses=1]
+ %1651 = fmul float %1594, %1642 ; [#uses=1]
+ %1652 = fadd float %1651, %1632 ; [#uses=1]
+ %1653 = fadd float %1652, %1634 ; [#uses=1]
+ %1654 = fadd float %1653, %1612 ; [#uses=1]
+ %1655 = getelementptr inbounds %struct.btQuadWord* %li_max, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1654, float* %1655, align 8
+ %1656 = getelementptr inbounds %struct.btQuadWord* %li_max, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1650, float* %1656, align 4
+ %1657 = getelementptr inbounds %struct.btQuadWord* %li_max, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1646, float* %1657, align 8
+ %1658 = getelementptr inbounds %struct.btQuadWord* %li_max, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1658, align 4
+ %1659 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %1660 = getelementptr inbounds i32 (...)** %1659, i32 4 ; [#uses=1]
+ %1661 = load i32 (...)** %1660, align 4 ; [#uses=1]
+ %1662 = bitcast i32 (...)* %1661 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1663 = call %struct.btActionInterface* %1662(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %1664 = getelementptr inbounds %struct.btActionInterface* %1663, i32 0, i32 0 ; [#uses=1]
+ %1665 = load i32 (...)*** %1664, align 4 ; [#uses=1]
+ %1666 = getelementptr inbounds i32 (...)** %1665, i32 2 ; [#uses=1]
+ %1667 = load i32 (...)** %1666, align 4 ; [#uses=1]
+ %1668 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %1668, align 8
+ %1669 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1669, align 4
+ %1670 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %1670, align 8
+ %1671 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1671, align 4
+ %1672 = bitcast i32 (...)* %1667 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %1672(%struct.btActionInterface* %1663, %struct.btQuadWord* %li_min, %struct.btQuadWord* %li_max, %struct.btQuadWord* %1)
+ %1673 = getelementptr inbounds %struct.btQuadWord* %normal117, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1594, float* %1673, align 8
+ %1674 = getelementptr inbounds %struct.btQuadWord* %normal117, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1600, float* %1674, align 4
+ %1675 = getelementptr inbounds %struct.btQuadWord* %normal117, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1606, float* %1675, align 8
+ %1676 = getelementptr inbounds %struct.btQuadWord* %normal117, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1676, align 4
+ %1677 = getelementptr inbounds %struct.btQuadWord* %axis119, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %1596, float* %1677, align 8
+ %1678 = getelementptr inbounds %struct.btQuadWord* %axis119, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1602, float* %1678, align 4
+ %1679 = getelementptr inbounds %struct.btQuadWord* %axis119, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %1608, float* %1679, align 8
+ %1680 = getelementptr inbounds %struct.btQuadWord* %axis119, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1680, align 4
+ %1681 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 5 ; [#uses=1]
+ %1682 = bitcast %struct.btTypedConstraint* %1681 to float* ; [#uses=1]
+ %1683 = load float* %1682, align 4 ; [#uses=1]
+ %1684 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 5, i32 1 ; [#uses=1]
+ %1685 = bitcast %struct.btHashInt* %1684 to float* ; [#uses=1]
+ %1686 = load float* %1685, align 4 ; [#uses=1]
+ %1687 = bitcast %struct.btHashInt* %1566 to %struct.btQuadWord* ; [#uses=1]
+ %1688 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %1689 = getelementptr inbounds i32 (...)** %1688, i32 4 ; [#uses=1]
+ %1690 = load i32 (...)** %1689, align 4 ; [#uses=1]
+ %1691 = bitcast i32 (...)* %1690 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %1692 = call %struct.btActionInterface* %1691(%struct.btCollisionWorld* %14) ; [#uses=2]
+ %1693 = getelementptr inbounds %struct.btActionInterface* %1692, i32 0, i32 0 ; [#uses=1]
+ %1694 = load i32 (...)*** %1693, align 4 ; [#uses=1]
+ %1695 = getelementptr inbounds i32 (...)** %1694, i32 15 ; [#uses=1]
+ %1696 = load i32 (...)** %1695, align 4 ; [#uses=1]
+ %1697 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %1697, align 8
+ %1698 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %1698, align 4
+ %1699 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %1699, align 8
+ %1700 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %1700, align 4
+ %1701 = bitcast i32 (...)* %1696 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*, float, float, float, float, %struct.btQuadWord*, i8, float)* ; [#uses=1]
+ call void %1701(%struct.btActionInterface* %1692, %struct.btQuadWord* %1687, %struct.btQuadWord* %normal117, %struct.btQuadWord* %axis119, float %39, float %39, float %1683, float %1686, %struct.btQuadWord* %0, i8 zeroext 1, float 1.000000e+01)
+ ret void
+
+return: ; preds = %bb109, %bb70, %bb34, %bb17, %bb16, %bb1, %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld14startProfilingEf(%struct.btDiscreteDynamicsWorld* nocapture %this, float %timeStep) align 2 {
+entry:
+ tail call void @_ZN15CProfileManager5ResetEv()
+ ret void
+}
+
+; [#uses=3]
+define void @_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD1Ev(%struct..0InplaceSolverIslandCallback* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ %2 = load %struct.btTypedConstraint*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btTypedConstraint** %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btTypedConstraint** %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad18
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %1, align 4
+ %8 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 3 ; [#uses=3]
+ %11 = load %struct.btPersistentManifold*** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btPersistentManifold** %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i35
+
+bb.i.i.i35: ; preds = %bb3
+ %13 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i34 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i34, label %bb2.i.i.i37, label %bb1.i.i.i36
+
+bb1.i.i.i36: ; preds = %bb.i.i.i35
+ %15 = bitcast %struct.btPersistentManifold** %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i37 unwind label %lpad
+
+bb2.i.i.i37: ; preds = %bb1.i.i.i36, %bb.i.i.i35
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %10, align 4
+ br label %bb10
+
+invcont8: ; preds = %bb2.i.i.i52, %ppad
+ %16 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %40, align 4
+ %17 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i37, %bb3
+ %19 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %19, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %10, align 4
+ %20 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %20, align 4
+ %21 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %23 = load %struct.btCollisionObject*** %22, align 4 ; [#uses=2]
+ %24 = icmp eq %struct.btCollisionObject** %23, null ; [#uses=1]
+ br i1 %24, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit, label %bb.i.i.i40
+
+bb.i.i.i40: ; preds = %bb10
+ %25 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %26 = load i8* %25, align 4 ; [#uses=1]
+ %toBool.i.i.i39 = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i39, label %bb2.i.i.i42, label %bb1.i.i.i41
+
+bb1.i.i.i41: ; preds = %bb.i.i.i40
+ %27 = bitcast %struct.btCollisionObject** %23 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %27)
+ br label %bb2.i.i.i42
+
+bb2.i.i.i42: ; preds = %bb1.i.i.i41, %bb.i.i.i40
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %22, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit: ; preds = %bb2.i.i.i42, %bb10
+ %28 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %28, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %22, align 4
+ %29 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %30, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i36
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %bb1.i.i.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %31 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 3 ; [#uses=3]
+ %32 = load %struct.btPersistentManifold*** %31, align 4 ; [#uses=2]
+ %33 = icmp eq %struct.btPersistentManifold** %32, null ; [#uses=1]
+ br i1 %33, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48, label %bb.i.i.i44
+
+bb.i.i.i44: ; preds = %lpad18
+ %34 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ %35 = load i8* %34, align 4 ; [#uses=1]
+ %toBool.i.i.i43 = icmp eq i8 %35, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i43, label %bb2.i.i.i46, label %bb1.i.i.i45
+
+bb1.i.i.i45: ; preds = %bb.i.i.i44
+ %36 = bitcast %struct.btPersistentManifold** %32 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %36)
+ to label %bb2.i.i.i46 unwind label %lpad22
+
+bb2.i.i.i46: ; preds = %bb1.i.i.i45, %bb.i.i.i44
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %31, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48: ; preds = %bb2.i.i.i46, %lpad18
+ %37 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %37, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %31, align 4
+ %38 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ %39 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %39, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i45
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %bb1.i.i.i51
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48 ] ; [#uses=1]
+ %40 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %41 = load %struct.btCollisionObject*** %40, align 4 ; [#uses=2]
+ %42 = icmp eq %struct.btCollisionObject** %41, null ; [#uses=1]
+ br i1 %42, label %invcont8, label %bb.i.i.i50
+
+bb.i.i.i50: ; preds = %ppad
+ %43 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %44 = load i8* %43, align 4 ; [#uses=1]
+ %toBool.i.i.i49 = icmp eq i8 %44, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i49, label %bb2.i.i.i52, label %bb1.i.i.i51
+
+bb1.i.i.i51: ; preds = %bb.i.i.i50
+ %45 = bitcast %struct.btCollisionObject** %41 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %45)
+ to label %bb2.i.i.i52 unwind label %lpad26
+
+bb2.i.i.i52: ; preds = %bb1.i.i.i51, %bb.i.i.i50
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %40, align 4
+ br label %invcont8
+}
+
+; [#uses=1]
+define void @_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD0Ev(%struct..0InplaceSolverIslandCallback* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ %2 = load %struct.btTypedConstraint*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btTypedConstraint** %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btTypedConstraint** %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad18
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %1, align 4
+ %8 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 3 ; [#uses=3]
+ %11 = load %struct.btPersistentManifold*** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btPersistentManifold** %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i35
+
+bb.i.i.i35: ; preds = %bb3
+ %13 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i34 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i34, label %bb2.i.i.i37, label %bb1.i.i.i36
+
+bb1.i.i.i36: ; preds = %bb.i.i.i35
+ %15 = bitcast %struct.btPersistentManifold** %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i37 unwind label %lpad
+
+bb2.i.i.i37: ; preds = %bb1.i.i.i36, %bb.i.i.i35
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %10, align 4
+ br label %bb10
+
+invcont8: ; preds = %bb2.i.i.i52, %ppad
+ %16 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %41, align 4
+ %17 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i37, %bb3
+ %19 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %19, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %10, align 4
+ %20 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %20, align 4
+ %21 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %23 = load %struct.btCollisionObject*** %22, align 4 ; [#uses=2]
+ %24 = icmp eq %struct.btCollisionObject** %23, null ; [#uses=1]
+ br i1 %24, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit, label %bb.i.i.i40
+
+bb.i.i.i40: ; preds = %bb10
+ %25 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %26 = load i8* %25, align 4 ; [#uses=1]
+ %toBool.i.i.i39 = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i39, label %bb2.i.i.i42, label %bb1.i.i.i41
+
+bb1.i.i.i41: ; preds = %bb.i.i.i40
+ %27 = bitcast %struct.btCollisionObject** %23 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %27)
+ br label %bb2.i.i.i42
+
+bb2.i.i.i42: ; preds = %bb1.i.i.i41, %bb.i.i.i40
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %22, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit: ; preds = %bb2.i.i.i42, %bb10
+ %28 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %28, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %22, align 4
+ %29 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %30, align 4
+ %31 = bitcast %struct..0InplaceSolverIslandCallback* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %31) nounwind
+ ret void
+
+lpad: ; preds = %bb1.i.i.i36
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %bb1.i.i.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %32 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 3 ; [#uses=3]
+ %33 = load %struct.btPersistentManifold*** %32, align 4 ; [#uses=2]
+ %34 = icmp eq %struct.btPersistentManifold** %33, null ; [#uses=1]
+ br i1 %34, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48, label %bb.i.i.i44
+
+bb.i.i.i44: ; preds = %lpad18
+ %35 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ %36 = load i8* %35, align 4 ; [#uses=1]
+ %toBool.i.i.i43 = icmp eq i8 %36, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i43, label %bb2.i.i.i46, label %bb1.i.i.i45
+
+bb1.i.i.i45: ; preds = %bb.i.i.i44
+ %37 = bitcast %struct.btPersistentManifold** %33 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %37)
+ to label %bb2.i.i.i46 unwind label %lpad22
+
+bb2.i.i.i46: ; preds = %bb1.i.i.i45, %bb.i.i.i44
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %32, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48: ; preds = %bb2.i.i.i46, %lpad18
+ %38 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %38, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %32, align 4
+ %39 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %39, align 4
+ %40 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %40, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i45
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %bb1.i.i.i51
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48 ] ; [#uses=1]
+ %41 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %42 = load %struct.btCollisionObject*** %41, align 4 ; [#uses=2]
+ %43 = icmp eq %struct.btCollisionObject** %42, null ; [#uses=1]
+ br i1 %43, label %invcont8, label %bb.i.i.i50
+
+bb.i.i.i50: ; preds = %ppad
+ %44 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %45 = load i8* %44, align 4 ; [#uses=1]
+ %toBool.i.i.i49 = icmp eq i8 %45, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i49, label %bb2.i.i.i52, label %bb1.i.i.i51
+
+bb1.i.i.i51: ; preds = %bb.i.i.i50
+ %46 = bitcast %struct.btCollisionObject** %42 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %46)
+ to label %bb2.i.i.i52 unwind label %lpad26
+
+bb2.i.i.i52: ; preds = %bb1.i.i.i51, %bb.i.i.i50
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %41, align 4
+ br label %invcont8
+}
+
+; [#uses=1]
+define internal void @_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback13ProcessIslandEPP17btCollisionObjectiPP20btPersistentManifoldii(%struct..0InplaceSolverIslandCallback* %this, %struct.btCollisionObject** %bodies, i32 %numBodies, %struct.btPersistentManifold** %manifolds, i32 %numManifolds, i32 %islandId) align 2 {
+entry:
+ %0 = icmp slt i32 %islandId, 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 4 ; [#uses=1]
+ %2 = load i32* %1, align 4 ; [#uses=5]
+ br i1 %0, label %bb, label %bb6.preheader
+
+bb6.preheader: ; preds = %entry
+ %3 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 3 ; [#uses=2]
+ br label %bb6
+
+bb: ; preds = %entry
+ %4 = sub i32 0, %numManifolds ; [#uses=1]
+ %5 = icmp eq i32 %2, %4 ; [#uses=1]
+ br i1 %5, label %return, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 3 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 7 ; [#uses=1]
+ %13 = load %struct.btActionInterface** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 6 ; [#uses=1]
+ %15 = load %struct.btStackAlloc** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 5 ; [#uses=1]
+ %17 = load %struct.btActionInterface** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %19 = load %struct.btContactSolverInfo** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 3 ; [#uses=1]
+ %21 = load %struct.btTypedConstraint*** %20, align 4 ; [#uses=1]
+ %22 = bitcast i32 (...)* %11 to float (%struct.btActionInterface*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, %struct.btTypedConstraint**, i32, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*, %struct.btActionInterface*)* ; [#uses=1]
+ %23 = tail call float %22(%struct.btActionInterface* %7, %struct.btCollisionObject** %bodies, i32 %numBodies, %struct.btPersistentManifold** %manifolds, i32 %numManifolds, %struct.btTypedConstraint** %21, i32 %2, %struct.btContactSolverInfo* %19, %struct.btActionInterface* %17, %struct.btStackAlloc* %15, %struct.btActionInterface* %13) ; [#uses=0]
+ ret void
+
+bb3: ; preds = %bb6
+ %24 = load %struct.btTypedConstraint*** %3, align 4 ; [#uses=1]
+ %scevgep53 = getelementptr %struct.btTypedConstraint** %24, i32 %38 ; [#uses=2]
+ %25 = load %struct.btTypedConstraint** %scevgep53, align 4 ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btTypedConstraint* %25, i32 0, i32 5 ; [#uses=1]
+ %27 = load %struct.btRigidBody** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btRigidBody* %27, i32 0, i32 0, i32 13 ; [#uses=1]
+ %29 = load i32* %28, align 4 ; [#uses=2]
+ %30 = icmp sgt i32 %29, -1 ; [#uses=1]
+ br i1 %30, label %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit, label %bb1.i
+
+bb1.i: ; preds = %bb3
+ %31 = getelementptr inbounds %struct.btTypedConstraint* %25, i32 0, i32 6 ; [#uses=1]
+ %32 = load %struct.btRigidBody** %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btRigidBody* %32, i32 0, i32 0, i32 13 ; [#uses=1]
+ %34 = load i32* %33, align 4 ; [#uses=1]
+ br label %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit
+
+_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit: ; preds = %bb1.i, %bb3
+ %35 = phi i32 [ %34, %bb1.i ], [ %29, %bb3 ] ; [#uses=1]
+ %36 = icmp eq i32 %35, %islandId ; [#uses=1]
+ br i1 %36, label %bb.nph38, label %bb5
+
+bb5: ; preds = %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit
+ %37 = add nsw i32 %38, 1 ; [#uses=1]
+ br label %bb6
+
+bb6: ; preds = %bb5, %bb6.preheader
+ %38 = phi i32 [ %37, %bb5 ], [ 0, %bb6.preheader ] ; [#uses=6]
+ %39 = icmp sgt i32 %2, %38 ; [#uses=1]
+ br i1 %39, label %bb3, label %bb12
+
+bb.nph38: ; preds = %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit
+ %40 = load %struct.btTypedConstraint*** %3, align 4 ; [#uses=1]
+ %tmp = add i32 %38, 1 ; [#uses=2]
+ %tmp45 = icmp sgt i32 %2, %tmp ; [#uses=1]
+ %smax = select i1 %tmp45, i32 %2, i32 %tmp ; [#uses=1]
+ %tmp47 = sub i32 %smax, %38 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit30, %bb.nph38
+ %indvar = phi i32 [ 0, %bb.nph38 ], [ %indvar.next, %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit30 ] ; [#uses=2]
+ %numCurConstraints.136 = phi i32 [ 0, %bb.nph38 ], [ %.numCurConstraints.1, %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit30 ] ; [#uses=1]
+ %tmp49 = add i32 %38, %indvar ; [#uses=1]
+ %scevgep50 = getelementptr %struct.btTypedConstraint** %40, i32 %tmp49 ; [#uses=1]
+ %41 = load %struct.btTypedConstraint** %scevgep50, align 4 ; [#uses=2]
+ %42 = getelementptr inbounds %struct.btTypedConstraint* %41, i32 0, i32 5 ; [#uses=1]
+ %43 = load %struct.btRigidBody** %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btRigidBody* %43, i32 0, i32 0, i32 13 ; [#uses=1]
+ %45 = load i32* %44, align 4 ; [#uses=2]
+ %46 = icmp sgt i32 %45, -1 ; [#uses=1]
+ br i1 %46, label %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit30, label %bb1.i29
+
+bb1.i29: ; preds = %bb7
+ %47 = getelementptr inbounds %struct.btTypedConstraint* %41, i32 0, i32 6 ; [#uses=1]
+ %48 = load %struct.btRigidBody** %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btRigidBody* %48, i32 0, i32 0, i32 13 ; [#uses=1]
+ %50 = load i32* %49, align 4 ; [#uses=1]
+ br label %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit30
+
+_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit30: ; preds = %bb1.i29, %bb7
+ %51 = phi i32 [ %50, %bb1.i29 ], [ %45, %bb7 ] ; [#uses=1]
+ %52 = icmp eq i32 %51, %islandId ; [#uses=1]
+ %53 = zext i1 %52 to i32 ; [#uses=1]
+ %.numCurConstraints.1 = add i32 %53, %numCurConstraints.136 ; [#uses=2]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond48 = icmp eq i32 %indvar.next, %tmp47 ; [#uses=1]
+ br i1 %exitcond48, label %bb12, label %bb7
+
+bb12: ; preds = %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit30, %bb6
+ %startConstraint.0.ph54 = phi %struct.btTypedConstraint** [ %scevgep53, %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit30 ], [ null, %bb6 ] ; [#uses=2]
+ %numCurConstraints.1.lcssa = phi i32 [ %.numCurConstraints.1, %_Z23btGetConstraintIslandIdPK17btTypedConstraint.exit30 ], [ 0, %bb6 ] ; [#uses=4]
+ %54 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 1 ; [#uses=2]
+ %55 = load %struct.btContactSolverInfo** %54, align 4 ; [#uses=2]
+ %56 = getelementptr inbounds %struct.btContactSolverInfo* %55, i32 0, i32 0, i32 17 ; [#uses=1]
+ %57 = load i32* %56, align 4 ; [#uses=1]
+ %58 = icmp slt i32 %57, 2 ; [#uses=1]
+ br i1 %58, label %bb13, label %bb17.preheader
+
+bb17.preheader: ; preds = %bb12
+ %59 = icmp sgt i32 %numBodies, 0 ; [#uses=1]
+ br i1 %59, label %bb.nph35, label %bb20.preheader
+
+bb13: ; preds = %bb12
+ %60 = sub i32 0, %numManifolds ; [#uses=1]
+ %61 = icmp eq i32 %numCurConstraints.1.lcssa, %60 ; [#uses=1]
+ br i1 %61, label %return, label %bb14
+
+bb14: ; preds = %bb13
+ %62 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %63 = load %struct.btActionInterface** %62, align 4 ; [#uses=2]
+ %64 = getelementptr inbounds %struct.btActionInterface* %63, i32 0, i32 0 ; [#uses=1]
+ %65 = load i32 (...)*** %64, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds i32 (...)** %65, i32 3 ; [#uses=1]
+ %67 = load i32 (...)** %66, align 4 ; [#uses=1]
+ %68 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 7 ; [#uses=1]
+ %69 = load %struct.btActionInterface** %68, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 6 ; [#uses=1]
+ %71 = load %struct.btStackAlloc** %70, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 5 ; [#uses=1]
+ %73 = load %struct.btActionInterface** %72, align 4 ; [#uses=1]
+ %74 = bitcast i32 (...)* %67 to float (%struct.btActionInterface*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, %struct.btTypedConstraint**, i32, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*, %struct.btActionInterface*)* ; [#uses=1]
+ %75 = tail call float %74(%struct.btActionInterface* %63, %struct.btCollisionObject** %bodies, i32 %numBodies, %struct.btPersistentManifold** %manifolds, i32 %numManifolds, %struct.btTypedConstraint** %startConstraint.0.ph54, i32 %numCurConstraints.1.lcssa, %struct.btContactSolverInfo* %55, %struct.btActionInterface* %73, %struct.btStackAlloc* %71, %struct.btActionInterface* %69) ; [#uses=0]
+ ret void
+
+bb.nph35: ; preds = %bb17.preheader
+ %76 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8 ; [#uses=1]
+ br label %bb16
+
+bb16: ; preds = %bb16, %bb.nph35
+ %i.234 = phi i32 [ 0, %bb.nph35 ], [ %77, %bb16 ] ; [#uses=2]
+ %scevgep44 = getelementptr %struct.btCollisionObject** %bodies, i32 %i.234 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayIP17btCollisionObjectE9push_backERKS1_(%"struct.btAlignedObjectArray<btCollisionObject*>"* %76, %struct.btCollisionObject** %scevgep44) inlinehint
+ %77 = add nsw i32 %i.234, 1 ; [#uses=2]
+ %exitcond43 = icmp eq i32 %77, %numBodies ; [#uses=1]
+ br i1 %exitcond43, label %bb20.preheader, label %bb16
+
+bb20.preheader: ; preds = %bb16, %bb17.preheader
+ %78 = icmp sgt i32 %numManifolds, 0 ; [#uses=1]
+ br i1 %78, label %bb.nph33, label %bb23.preheader
+
+bb.nph33: ; preds = %bb20.preheader
+ %79 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9 ; [#uses=1]
+ br label %bb19
+
+bb19: ; preds = %bb19, %bb.nph33
+ %i.332 = phi i32 [ 0, %bb.nph33 ], [ %80, %bb19 ] ; [#uses=2]
+ %scevgep42 = getelementptr %struct.btPersistentManifold** %manifolds, i32 %i.332 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayIP20btPersistentManifoldE9push_backERKS1_(%"struct.btAlignedObjectArray<btPersistentManifold*>"* %79, %struct.btPersistentManifold** %scevgep42) inlinehint
+ %80 = add nsw i32 %i.332, 1 ; [#uses=2]
+ %exitcond41 = icmp eq i32 %80, %numManifolds ; [#uses=1]
+ br i1 %exitcond41, label %bb23.preheader, label %bb19
+
+bb23.preheader: ; preds = %bb19, %bb20.preheader
+ %81 = icmp sgt i32 %numCurConstraints.1.lcssa, 0 ; [#uses=1]
+ br i1 %81, label %bb.nph, label %bb24
+
+bb.nph: ; preds = %bb23.preheader
+ %82 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10 ; [#uses=1]
+ br label %bb22
+
+bb22: ; preds = %bb22, %bb.nph
+ %i.431 = phi i32 [ 0, %bb.nph ], [ %83, %bb22 ] ; [#uses=2]
+ %scevgep = getelementptr %struct.btTypedConstraint** %startConstraint.0.ph54, i32 %i.431 ; [#uses=1]
+ tail call void @_ZN20btAlignedObjectArrayIP17btTypedConstraintE9push_backERKS1_(%"struct.btAlignedObjectArray<btTypedConstraint*>"* %82, %struct.btTypedConstraint** %scevgep) inlinehint
+ %83 = add nsw i32 %i.431, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %83, %numCurConstraints.1.lcssa ; [#uses=1]
+ br i1 %exitcond, label %bb24, label %bb22
+
+bb24: ; preds = %bb22, %bb23.preheader
+ %84 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ %85 = load i32* %84, align 4 ; [#uses=1]
+ %86 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ %87 = load i32* %86, align 4 ; [#uses=1]
+ %88 = add nsw i32 %87, %85 ; [#uses=1]
+ %89 = load %struct.btContactSolverInfo** %54, align 4 ; [#uses=1]
+ %90 = getelementptr inbounds %struct.btContactSolverInfo* %89, i32 0, i32 0, i32 17 ; [#uses=1]
+ %91 = load i32* %90, align 4 ; [#uses=1]
+ %92 = icmp sgt i32 %88, %91 ; [#uses=1]
+ br i1 %92, label %bb26, label %return
+
+bb26: ; preds = %bb24
+ tail call fastcc void @_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback18processConstraintsEv(%struct..0InplaceSolverIslandCallback* %this)
+ ret void
+
+return: ; preds = %bb24, %bb13, %bb
+ ret void
+}
+
+; [#uses=0]
+define void @_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD2Ev(%struct..0InplaceSolverIslandCallback* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ %2 = load %struct.btTypedConstraint*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btTypedConstraint** %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btTypedConstraint** %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad18
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %1, align 4
+ %8 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 3 ; [#uses=3]
+ %11 = load %struct.btPersistentManifold*** %10, align 4 ; [#uses=2]
+ %12 = icmp eq %struct.btPersistentManifold** %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i35
+
+bb.i.i.i35: ; preds = %bb3
+ %13 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i34 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i34, label %bb2.i.i.i37, label %bb1.i.i.i36
+
+bb1.i.i.i36: ; preds = %bb.i.i.i35
+ %15 = bitcast %struct.btPersistentManifold** %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i37 unwind label %lpad
+
+bb2.i.i.i37: ; preds = %bb1.i.i.i36, %bb.i.i.i35
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %10, align 4
+ br label %bb10
+
+invcont8: ; preds = %bb2.i.i.i52, %ppad
+ %16 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %40, align 4
+ %17 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb10: ; preds = %bb2.i.i.i37, %bb3
+ %19 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %19, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %10, align 4
+ %20 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %20, align 4
+ %21 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %23 = load %struct.btCollisionObject*** %22, align 4 ; [#uses=2]
+ %24 = icmp eq %struct.btCollisionObject** %23, null ; [#uses=1]
+ br i1 %24, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit, label %bb.i.i.i40
+
+bb.i.i.i40: ; preds = %bb10
+ %25 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %26 = load i8* %25, align 4 ; [#uses=1]
+ %toBool.i.i.i39 = icmp eq i8 %26, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i39, label %bb2.i.i.i42, label %bb1.i.i.i41
+
+bb1.i.i.i41: ; preds = %bb.i.i.i40
+ %27 = bitcast %struct.btCollisionObject** %23 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %27)
+ br label %bb2.i.i.i42
+
+bb2.i.i.i42: ; preds = %bb1.i.i.i41, %bb.i.i.i40
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %22, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectED1Ev.exit: ; preds = %bb2.i.i.i42, %bb10
+ %28 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %28, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %22, align 4
+ %29 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %30, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i36
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad18: ; preds = %bb1.i.i.i
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %31 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 3 ; [#uses=3]
+ %32 = load %struct.btPersistentManifold*** %31, align 4 ; [#uses=2]
+ %33 = icmp eq %struct.btPersistentManifold** %32, null ; [#uses=1]
+ br i1 %33, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48, label %bb.i.i.i44
+
+bb.i.i.i44: ; preds = %lpad18
+ %34 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ %35 = load i8* %34, align 4 ; [#uses=1]
+ %toBool.i.i.i43 = icmp eq i8 %35, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i43, label %bb2.i.i.i46, label %bb1.i.i.i45
+
+bb1.i.i.i45: ; preds = %bb.i.i.i44
+ %36 = bitcast %struct.btPersistentManifold** %32 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %36)
+ to label %bb2.i.i.i46 unwind label %lpad22
+
+bb2.i.i.i46: ; preds = %bb1.i.i.i45, %bb.i.i.i44
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %31, align 4
+ br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48: ; preds = %bb2.i.i.i46, %lpad18
+ %37 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %37, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %31, align 4
+ %38 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ %39 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %39, align 4
+ br label %ppad
+
+lpad22: ; preds = %bb1.i.i.i45
+ %eh_ptr23 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad26: ; preds = %bb1.i.i.i51
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr19, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldED1Ev.exit48 ] ; [#uses=1]
+ %40 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %41 = load %struct.btCollisionObject*** %40, align 4 ; [#uses=2]
+ %42 = icmp eq %struct.btCollisionObject** %41, null ; [#uses=1]
+ br i1 %42, label %invcont8, label %bb.i.i.i50
+
+bb.i.i.i50: ; preds = %ppad
+ %43 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %44 = load i8* %43, align 4 ; [#uses=1]
+ %toBool.i.i.i49 = icmp eq i8 %44, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i49, label %bb2.i.i.i52, label %bb1.i.i.i51
+
+bb1.i.i.i51: ; preds = %bb.i.i.i50
+ %45 = bitcast %struct.btCollisionObject** %41 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %45)
+ to label %bb2.i.i.i52 unwind label %lpad26
+
+bb2.i.i.i52: ; preds = %bb1.i.i.i51, %bb.i.i.i50
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %40, align 4
+ br label %invcont8
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld25predictUnconstraintMotionEf(%struct.btDiscreteDynamicsWorld* nocapture %this, float %timeStep) align 2 {
+entry:
+ tail call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([26 x i8]* @.str20, i32 0, i32 0))
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ br label %bb7
+
+bb: ; preds = %bb7
+ %2 = load %struct.btRigidBody*** %1, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btRigidBody** %2, i32 %10 ; [#uses=1]
+ %3 = load %struct.btRigidBody** %scevgep, align 4 ; [#uses=5]
+ %4 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 12 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = and i32 %5, 3 ; [#uses=1]
+ %7 = icmp eq i32 %6, 0 ; [#uses=1]
+ br i1 %7, label %bb3, label %bb6
+
+bb3: ; preds = %bb
+ invoke void @_ZN11btRigidBody19integrateVelocitiesEf(%struct.btRigidBody* %3, float %timeStep)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb3
+ invoke void @_ZN11btRigidBody12applyDampingEf(%struct.btRigidBody* %3, float %timeStep)
+ to label %invcont4 unwind label %lpad
+
+invcont4: ; preds = %invcont
+ %8 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 2 ; [#uses=1]
+ invoke void @_ZN11btRigidBody26predictIntegratedTransformEfR11btTransform(%struct.btRigidBody* %3, float %timeStep, %struct.btTransform* %8)
+ to label %bb6 unwind label %lpad
+
+bb6: ; preds = %invcont4, %bb
+ %9 = add nsw i32 %10, 1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %entry
+ %10 = phi i32 [ 0, %entry ], [ %9, %bb6 ] ; [#uses=3]
+ %11 = load i32* %0, align 4 ; [#uses=1]
+ %12 = icmp sgt i32 %11, %10 ; [#uses=1]
+ br i1 %12, label %bb, label %bb12
+
+invcont10: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb12: ; preds = %bb7
+ tail call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %invcont4, %invcont, %bb3
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select14 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont10 unwind label %lpad15
+
+lpad15: ; preds = %lpad
+ %eh_ptr16 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select18 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr16, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld26calculateSimulationIslandsEv(%struct.btDiscreteDynamicsWorld* %this) align 2 {
+entry:
+ tail call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([27 x i8]* @.str121, i32 0, i32 0))
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 2 ; [#uses=3]
+ %1 = load %struct.btSimulationIslandManager** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btSimulationIslandManager* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 2 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ %9 = bitcast i32 (...)* %5 to void (%struct.btSimulationIslandManager*, %struct.btCollisionWorld*, %struct.btActionInterface*)* ; [#uses=1]
+ invoke void %9(%struct.btSimulationIslandManager* %1, %struct.btCollisionWorld* %8, %struct.btActionInterface* %7)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %10 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=2]
+ %12 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %12, label %bb.nph, label %bb33
+
+bb.nph: ; preds = %invcont
+ %13 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb31, %bb.nph
+ %i.059 = phi i32 [ 0, %bb.nph ], [ %77, %bb31 ] ; [#uses=2]
+ %14 = load %struct.btTypedConstraint*** %13, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btTypedConstraint** %14, i32 %i.059 ; [#uses=1]
+ %15 = load %struct.btTypedConstraint** %scevgep, align 4 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btTypedConstraint* %15, i32 0, i32 5 ; [#uses=1]
+ %17 = load %struct.btRigidBody** %16, align 4 ; [#uses=4]
+ %18 = getelementptr inbounds %struct.btTypedConstraint* %15, i32 0, i32 6 ; [#uses=1]
+ %19 = load %struct.btRigidBody** %18, align 4 ; [#uses=4]
+ %20 = icmp eq %struct.btRigidBody* %17, null ; [#uses=1]
+ br i1 %20, label %bb31, label %bb1
+
+bb1: ; preds = %bb
+ %21 = getelementptr inbounds %struct.btRigidBody* %17, i32 0, i32 0, i32 12 ; [#uses=1]
+ %22 = load i32* %21, align 4 ; [#uses=1]
+ %23 = and i32 %22, 3 ; [#uses=1]
+ %24 = icmp ne i32 %23, 0 ; [#uses=1]
+ %25 = icmp eq %struct.btRigidBody* %19, null ; [#uses=1]
+ %or.cond = or i1 %24, %25 ; [#uses=1]
+ br i1 %or.cond, label %bb31, label %bb9
+
+bb9: ; preds = %bb1
+ %26 = getelementptr inbounds %struct.btRigidBody* %19, i32 0, i32 0, i32 12 ; [#uses=1]
+ %27 = load i32* %26, align 4 ; [#uses=1]
+ %28 = and i32 %27, 3 ; [#uses=1]
+ %29 = icmp eq i32 %28, 0 ; [#uses=1]
+ br i1 %29, label %bb21, label %bb31
+
+bb21: ; preds = %bb9
+ %30 = getelementptr inbounds %struct.btRigidBody* %17, i32 0, i32 0, i32 15 ; [#uses=1]
+ %31 = load i32* %30, align 4 ; [#uses=1]
+ switch i32 %31, label %bb29 [
+ i32 2, label %bb23
+ i32 5, label %bb23
+ ]
+
+bb23: ; preds = %bb21, %bb21
+ %32 = getelementptr inbounds %struct.btRigidBody* %19, i32 0, i32 0, i32 15 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ switch i32 %33, label %bb29 [
+ i32 2, label %bb31
+ i32 5, label %bb31
+ ]
+
+bb29: ; preds = %bb23, %bb21
+ %34 = getelementptr inbounds %struct.btRigidBody* %19, i32 0, i32 0, i32 13 ; [#uses=1]
+ %35 = load i32* %34, align 4 ; [#uses=4]
+ %36 = getelementptr inbounds %struct.btRigidBody* %17, i32 0, i32 0, i32 13 ; [#uses=1]
+ %37 = load i32* %36, align 4 ; [#uses=4]
+ %38 = load %struct.btSimulationIslandManager** %0, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btSimulationIslandManager* %38, i32 0, i32 1, i32 0, i32 3 ; [#uses=4]
+ %40 = load %struct.CONTACT_KEY_TOKEN** %39, align 4 ; [#uses=3]
+ %41 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %40, i32 %37, i32 0 ; [#uses=1]
+ %42 = load i32* %41, align 4 ; [#uses=2]
+ %43 = icmp eq i32 %42, %37 ; [#uses=1]
+ br i1 %43, label %_ZN11btUnionFind4findEi.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %bb.i.i, %bb29
+ %44 = phi i32 [ %52, %bb.i.i ], [ %42, %bb29 ] ; [#uses=1]
+ %45 = phi %struct.CONTACT_KEY_TOKEN* [ %50, %bb.i.i ], [ %40, %bb29 ] ; [#uses=2]
+ %x_addr.04.i.i = phi i32 [ %49, %bb.i.i ], [ %37, %bb29 ] ; [#uses=1]
+ %46 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %45, i32 %x_addr.04.i.i, i32 0 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %45, i32 %44, i32 0 ; [#uses=2]
+ %48 = load i32* %47, align 4 ; [#uses=1]
+ store i32 %48, i32* %46, align 4
+ %49 = load i32* %47, align 4 ; [#uses=4]
+ %50 = load %struct.CONTACT_KEY_TOKEN** %39, align 4 ; [#uses=3]
+ %51 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %50, i32 %49, i32 0 ; [#uses=1]
+ %52 = load i32* %51, align 4 ; [#uses=2]
+ %53 = icmp eq i32 %52, %49 ; [#uses=1]
+ br i1 %53, label %_ZN11btUnionFind4findEi.exit.i, label %bb.i.i
+
+_ZN11btUnionFind4findEi.exit.i: ; preds = %bb.i.i, %bb29
+ %54 = phi %struct.CONTACT_KEY_TOKEN* [ %40, %bb29 ], [ %50, %bb.i.i ] ; [#uses=3]
+ %x_addr.0.lcssa.i.i = phi i32 [ %37, %bb29 ], [ %49, %bb.i.i ] ; [#uses=3]
+ %55 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %54, i32 %35, i32 0 ; [#uses=1]
+ %56 = load i32* %55, align 4 ; [#uses=2]
+ %57 = icmp eq i32 %56, %35 ; [#uses=1]
+ br i1 %57, label %_ZN11btUnionFind4findEi.exit5.i, label %bb.i3.i
+
+bb.i3.i: ; preds = %bb.i3.i, %_ZN11btUnionFind4findEi.exit.i
+ %58 = phi i32 [ %66, %bb.i3.i ], [ %56, %_ZN11btUnionFind4findEi.exit.i ] ; [#uses=1]
+ %59 = phi %struct.CONTACT_KEY_TOKEN* [ %64, %bb.i3.i ], [ %54, %_ZN11btUnionFind4findEi.exit.i ] ; [#uses=2]
+ %x_addr.04.i2.i = phi i32 [ %63, %bb.i3.i ], [ %35, %_ZN11btUnionFind4findEi.exit.i ] ; [#uses=1]
+ %60 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %59, i32 %x_addr.04.i2.i, i32 0 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %59, i32 %58, i32 0 ; [#uses=2]
+ %62 = load i32* %61, align 4 ; [#uses=1]
+ store i32 %62, i32* %60, align 4
+ %63 = load i32* %61, align 4 ; [#uses=4]
+ %64 = load %struct.CONTACT_KEY_TOKEN** %39, align 4 ; [#uses=3]
+ %65 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %64, i32 %63, i32 0 ; [#uses=1]
+ %66 = load i32* %65, align 4 ; [#uses=2]
+ %67 = icmp eq i32 %66, %63 ; [#uses=1]
+ br i1 %67, label %_ZN11btUnionFind4findEi.exit5.i, label %bb.i3.i
+
+_ZN11btUnionFind4findEi.exit5.i: ; preds = %bb.i3.i, %_ZN11btUnionFind4findEi.exit.i
+ %68 = phi %struct.CONTACT_KEY_TOKEN* [ %54, %_ZN11btUnionFind4findEi.exit.i ], [ %64, %bb.i3.i ] ; [#uses=1]
+ %x_addr.0.lcssa.i4.i = phi i32 [ %35, %_ZN11btUnionFind4findEi.exit.i ], [ %63, %bb.i3.i ] ; [#uses=3]
+ %69 = icmp eq i32 %x_addr.0.lcssa.i.i, %x_addr.0.lcssa.i4.i ; [#uses=1]
+ br i1 %69, label %bb31, label %bb.i
+
+bb.i: ; preds = %_ZN11btUnionFind4findEi.exit5.i
+ %70 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %68, i32 %x_addr.0.lcssa.i.i, i32 0 ; [#uses=1]
+ store i32 %x_addr.0.lcssa.i4.i, i32* %70, align 4
+ %71 = load %struct.CONTACT_KEY_TOKEN** %39, align 4 ; [#uses=2]
+ %72 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %71, i32 %x_addr.0.lcssa.i4.i, i32 1 ; [#uses=2]
+ %73 = load i32* %72, align 4 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %71, i32 %x_addr.0.lcssa.i.i, i32 1 ; [#uses=1]
+ %75 = load i32* %74, align 4 ; [#uses=1]
+ %76 = add nsw i32 %75, %73 ; [#uses=1]
+ store i32 %76, i32* %72, align 4
+ br label %bb31
+
+bb31: ; preds = %bb.i, %_ZN11btUnionFind4findEi.exit5.i, %bb23, %bb23, %bb9, %bb1, %bb
+ %77 = add nsw i32 %i.059, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %77, %11 ; [#uses=1]
+ br i1 %exitcond, label %bb33, label %bb
+
+bb33: ; preds = %bb31, %invcont
+ %78 = load %struct.btSimulationIslandManager** %0, align 4 ; [#uses=2]
+ %79 = getelementptr inbounds %struct.btSimulationIslandManager* %78, i32 0, i32 0 ; [#uses=1]
+ %80 = load i32 (...)*** %79, align 4 ; [#uses=1]
+ %81 = getelementptr inbounds i32 (...)** %80, i32 3 ; [#uses=1]
+ %82 = load i32 (...)** %81, align 4 ; [#uses=1]
+ %83 = bitcast i32 (...)* %82 to void (%struct.btSimulationIslandManager*, %struct.btCollisionWorld*)* ; [#uses=1]
+ invoke void %83(%struct.btSimulationIslandManager* %78, %struct.btCollisionWorld* %8)
+ to label %bb38 unwind label %lpad
+
+invcont36: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb38: ; preds = %bb33
+ tail call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %bb33, %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select40 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont36 unwind label %lpad41
+
+lpad41: ; preds = %lpad
+ %eh_ptr42 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select44 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr42, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=3]
+define void @_ZN23btDiscreteDynamicsWorld13updateActionsEf(%struct.btDiscreteDynamicsWorld* %this, float %timeStep) align 2 {
+entry:
+ tail call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([14 x i8]* @.str222, i32 0, i32 0))
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb1
+
+bb: ; preds = %bb1
+ %3 = load %struct.btActionInterface*** %1, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btActionInterface** %3, i32 %11 ; [#uses=1]
+ %4 = load %struct.btActionInterface** %scevgep, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btActionInterface* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds i32 (...)** %6, i32 2 ; [#uses=1]
+ %8 = load i32 (...)** %7, align 4 ; [#uses=1]
+ %9 = bitcast i32 (...)* %8 to void (%struct.btActionInterface*, %struct.btCollisionWorld*, float)* ; [#uses=1]
+ invoke void %9(%struct.btActionInterface* %4, %struct.btCollisionWorld* %2, float %timeStep)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb
+ %10 = add nsw i32 %11, 1 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %invcont, %entry
+ %11 = phi i32 [ 0, %entry ], [ %10, %invcont ] ; [#uses=3]
+ %12 = load i32* %0, align 4 ; [#uses=1]
+ %13 = icmp sgt i32 %12, %11 ; [#uses=1]
+ br i1 %13, label %bb, label %bb5
+
+invcont3: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb5: ; preds = %bb1
+ tail call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select7 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont3 unwind label %lpad8
+
+lpad8: ; preds = %lpad
+ %eh_ptr9 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select11 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr9, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP17btTypedConstraintE9push_backERKS1_(%"struct.btAlignedObjectArray<btTypedConstraint*>"* nocapture %this, %struct.btTypedConstraint** nocapture %_Val) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btTypedConstraint*>"* %this, i32 0, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btTypedConstraint*>"* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.528.0.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.528.0.i ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb1
+
+bb.i: ; preds = %bb
+ %8 = icmp eq i32 %iftmp.528.0.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %9 = shl i32 %iftmp.528.0.i, 2 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %10 to %struct.btTypedConstraint** ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %11 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %12 = phi %struct.btTypedConstraint** [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=2]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i
+ %14 = getelementptr inbounds %"struct.btAlignedObjectArray<btTypedConstraint*>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=3]
+ %scevgep.i.i = getelementptr %struct.btTypedConstraint** %12, i32 %indvar.i.i ; [#uses=2]
+ %15 = icmp eq %struct.btTypedConstraint** %scevgep.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %16 = load %struct.btTypedConstraint*** %14, align 4 ; [#uses=1]
+ %scevgep8.i.i = getelementptr %struct.btTypedConstraint** %16, i32 %indvar.i.i ; [#uses=1]
+ %17 = load %struct.btTypedConstraint** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btTypedConstraint* %17, %struct.btTypedConstraint** %scevgep.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i
+ %18 = getelementptr inbounds %"struct.btAlignedObjectArray<btTypedConstraint*>"* %this, i32 0, i32 3 ; [#uses=3]
+ %19 = load %struct.btTypedConstraint*** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.btTypedConstraint** %19, null ; [#uses=1]
+ br i1 %20, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<btTypedConstraint*>"* %this, i32 0, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %23 = bitcast %struct.btTypedConstraint** %19 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %18, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<btTypedConstraint*>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store %struct.btTypedConstraint** %12, %struct.btTypedConstraint*** %18, align 4
+ store i32 %iftmp.528.0.i, i32* %2, align 4
+ %.pre5 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i, %bb, %entry
+ %25 = phi i32 [ %.pre5, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i ], [ %1, %entry ], [ %1, %bb ] ; [#uses=2]
+ %26 = getelementptr inbounds %"struct.btAlignedObjectArray<btTypedConstraint*>"* %this, i32 0, i32 3 ; [#uses=1]
+ %27 = load %struct.btTypedConstraint*** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btTypedConstraint** %27, i32 %25 ; [#uses=2]
+ %29 = icmp eq %struct.btTypedConstraint** %28, null ; [#uses=1]
+ br i1 %29, label %bb4, label %bb2
+
+bb2: ; preds = %bb1
+ %30 = load %struct.btTypedConstraint** %_Val, align 4 ; [#uses=1]
+ store %struct.btTypedConstraint* %30, %struct.btTypedConstraint** %28, align 4
+ %.pre6 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb2, %bb1
+ %31 = phi i32 [ %25, %bb1 ], [ %.pre6, %bb2 ] ; [#uses=1]
+ %32 = add nsw i32 %31, 1 ; [#uses=1]
+ store i32 %32, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIP17btCollisionObjectE9push_backERKS1_(%"struct.btAlignedObjectArray<btCollisionObject*>"* nocapture %this, %struct.btCollisionObject** nocapture %_Val) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionObject*>"* %this, i32 0, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionObject*>"* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.472.0.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.472.0.i ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb1
+
+bb.i: ; preds = %bb
+ %8 = icmp eq i32 %iftmp.472.0.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %9 = shl i32 %iftmp.472.0.i, 2 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %10 to %struct.btCollisionObject** ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %11 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %12 = phi %struct.btCollisionObject** [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=2]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i
+ %14 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionObject*>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=3]
+ %scevgep.i.i = getelementptr %struct.btCollisionObject** %12, i32 %indvar.i.i ; [#uses=2]
+ %15 = icmp eq %struct.btCollisionObject** %scevgep.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %16 = load %struct.btCollisionObject*** %14, align 4 ; [#uses=1]
+ %scevgep8.i.i = getelementptr %struct.btCollisionObject** %16, i32 %indvar.i.i ; [#uses=1]
+ %17 = load %struct.btCollisionObject** %scevgep8.i.i, align 4 ; [#uses=1]
+ store %struct.btCollisionObject* %17, %struct.btCollisionObject** %scevgep.i.i, align 4
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i
+ %18 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionObject*>"* %this, i32 0, i32 3 ; [#uses=3]
+ %19 = load %struct.btCollisionObject*** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.btCollisionObject** %19, null ; [#uses=1]
+ br i1 %20, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionObject*>"* %this, i32 0, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %23 = bitcast %struct.btCollisionObject** %19 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %18, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIP17btCollisionObjectE4copyEiiPS1_.exit.i
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionObject*>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store %struct.btCollisionObject** %12, %struct.btCollisionObject*** %18, align 4
+ store i32 %iftmp.472.0.i, i32* %2, align 4
+ %.pre5 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i, %bb, %entry
+ %25 = phi i32 [ %.pre5, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE10deallocateEv.exit.i ], [ %1, %entry ], [ %1, %bb ] ; [#uses=2]
+ %26 = getelementptr inbounds %"struct.btAlignedObjectArray<btCollisionObject*>"* %this, i32 0, i32 3 ; [#uses=1]
+ %27 = load %struct.btCollisionObject*** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btCollisionObject** %27, i32 %25 ; [#uses=2]
+ %29 = icmp eq %struct.btCollisionObject** %28, null ; [#uses=1]
+ br i1 %29, label %bb4, label %bb2
+
+bb2: ; preds = %bb1
+ %30 = load %struct.btCollisionObject** %_Val, align 4 ; [#uses=1]
+ store %struct.btCollisionObject* %30, %struct.btCollisionObject** %28, align 4
+ %.pre6 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb2, %bb1
+ %31 = phi i32 [ %25, %bb1 ], [ %.pre6, %bb2 ] ; [#uses=1]
+ %32 = add nsw i32 %31, 1 ; [#uses=1]
+ store i32 %32, i32* %0, align 4
+ ret void
+}
+
+; [#uses=2]
+define internal fastcc void @_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback18processConstraintsEv(%struct..0InplaceSolverIslandCallback* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 1 ; [#uses=3]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = add nsw i32 %3, %1 ; [#uses=1]
+ %5 = icmp sgt i32 %4, 0 ; [#uses=1]
+ br i1 %5, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 2 ; [#uses=1]
+ %7 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btActionInterface* %7, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32 (...)*** %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds i32 (...)** %9, i32 3 ; [#uses=1]
+ %11 = load i32 (...)** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 7 ; [#uses=1]
+ %13 = load %struct.btActionInterface** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 6 ; [#uses=1]
+ %15 = load %struct.btStackAlloc** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 5 ; [#uses=1]
+ %17 = load %struct.btActionInterface** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 1 ; [#uses=1]
+ %19 = load %struct.btContactSolverInfo** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %21 = load %struct.btTypedConstraint*** %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 3 ; [#uses=1]
+ %23 = load %struct.btPersistentManifold*** %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 1 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ %27 = load %struct.btCollisionObject*** %26, align 4 ; [#uses=1]
+ %28 = bitcast i32 (...)* %11 to float (%struct.btActionInterface*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, %struct.btTypedConstraint**, i32, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*, %struct.btActionInterface*)* ; [#uses=1]
+ %29 = tail call float %28(%struct.btActionInterface* %7, %struct.btCollisionObject** %27, i32 %25, %struct.btPersistentManifold** %23, i32 %1, %struct.btTypedConstraint** %21, i32 %3, %struct.btContactSolverInfo* %19, %struct.btActionInterface* %17, %struct.btStackAlloc* %15, %struct.btActionInterface* %13) ; [#uses=0]
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %30 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 1 ; [#uses=2]
+ %31 = load i32* %30, align 4 ; [#uses=4]
+ %32 = icmp sgt i32 %31, 0 ; [#uses=1]
+ %.not = xor i1 %32, true ; [#uses=1]
+ %33 = icmp slt i32 %31, 0 ; [#uses=1]
+ %or.cond = and i1 %.not, %33 ; [#uses=1]
+ br i1 %or.cond, label %bb4.i30, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE6resizeEiRKS1_.exit
+
+bb4.i30: ; preds = %bb1
+ %34 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 2 ; [#uses=2]
+ %35 = load i32* %34, align 4 ; [#uses=1]
+ %36 = icmp slt i32 %35, 0 ; [#uses=1]
+ br i1 %36, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i, label %bb.nph.i47
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i: ; preds = %bb4.i30
+ %37 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 3 ; [#uses=3]
+ %38 = load %struct.btCollisionObject*** %37, align 4 ; [#uses=2]
+ %39 = icmp eq %struct.btCollisionObject** %38, null ; [#uses=1]
+ br i1 %39, label %bb11.preheader.i45, label %bb.i.i.i42
+
+bb.i.i.i42: ; preds = %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i
+ %40 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ %41 = load i8* %40, align 4 ; [#uses=1]
+ %toBool.i.i.i41 = icmp eq i8 %41, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i41, label %bb2.i.i.i44, label %bb1.i.i.i43
+
+bb1.i.i.i43: ; preds = %bb.i.i.i42
+ %42 = bitcast %struct.btCollisionObject** %38 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %42)
+ br label %bb2.i.i.i44
+
+bb2.i.i.i44: ; preds = %bb1.i.i.i43, %bb.i.i.i42
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %37, align 4
+ br label %bb11.preheader.i45
+
+bb11.preheader.i45: ; preds = %bb2.i.i.i44, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE8allocateEi.exit.i.i
+ %43 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %43, align 4
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %37, align 4
+ store i32 0, i32* %34, align 4
+ br label %bb.nph.i47
+
+bb.nph.i47: ; preds = %bb11.preheader.i45, %bb4.i30
+ %44 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 8, i32 3 ; [#uses=1]
+ %tmp.i46 = sub i32 0, %31 ; [#uses=1]
+ br label %bb7.i51
+
+bb7.i51: ; preds = %bb10.i55, %bb.nph.i47
+ %indvar.i48 = phi i32 [ 0, %bb.nph.i47 ], [ %indvar.next.i53, %bb10.i55 ] ; [#uses=2]
+ %tmp = add i32 %31, %indvar.i48 ; [#uses=1]
+ %45 = load %struct.btCollisionObject*** %44, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %45, i32 %tmp ; [#uses=2]
+ %46 = icmp eq %struct.btCollisionObject** %scevgep, null ; [#uses=1]
+ br i1 %46, label %bb10.i55, label %bb8.i52
+
+bb8.i52: ; preds = %bb7.i51
+ store %struct.btCollisionObject* null, %struct.btCollisionObject** %scevgep, align 4
+ br label %bb10.i55
+
+bb10.i55: ; preds = %bb8.i52, %bb7.i51
+ %indvar.next.i53 = add i32 %indvar.i48, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i53, %tmp.i46 ; [#uses=1]
+ br i1 %exitcond, label %_ZN20btAlignedObjectArrayIP17btCollisionObjectE6resizeEiRKS1_.exit, label %bb7.i51
+
+_ZN20btAlignedObjectArrayIP17btCollisionObjectE6resizeEiRKS1_.exit: ; preds = %bb10.i55, %bb1
+ store i32 0, i32* %30, align 4
+ %47 = load i32* %0, align 4 ; [#uses=4]
+ %48 = icmp sgt i32 %47, 0 ; [#uses=1]
+ %.not64 = xor i1 %48, true ; [#uses=1]
+ %49 = icmp slt i32 %47, 0 ; [#uses=1]
+ %or.cond65 = and i1 %.not64, %49 ; [#uses=1]
+ br i1 %or.cond65, label %bb4.i3, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE6resizeEiRKS1_.exit
+
+bb4.i3: ; preds = %_ZN20btAlignedObjectArrayIP17btCollisionObjectE6resizeEiRKS1_.exit
+ %50 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 2 ; [#uses=2]
+ %51 = load i32* %50, align 4 ; [#uses=1]
+ %52 = icmp slt i32 %51, 0 ; [#uses=1]
+ br i1 %52, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i, label %bb.nph.i20
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i: ; preds = %bb4.i3
+ %53 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 3 ; [#uses=3]
+ %54 = load %struct.btPersistentManifold*** %53, align 4 ; [#uses=2]
+ %55 = icmp eq %struct.btPersistentManifold** %54, null ; [#uses=1]
+ br i1 %55, label %bb11.preheader.i18, label %bb.i.i.i15
+
+bb.i.i.i15: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i
+ %56 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ %57 = load i8* %56, align 4 ; [#uses=1]
+ %toBool.i.i.i14 = icmp eq i8 %57, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i14, label %bb2.i.i.i17, label %bb1.i.i.i16
+
+bb1.i.i.i16: ; preds = %bb.i.i.i15
+ %58 = bitcast %struct.btPersistentManifold** %54 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %58)
+ br label %bb2.i.i.i17
+
+bb2.i.i.i17: ; preds = %bb1.i.i.i16, %bb.i.i.i15
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %53, align 4
+ br label %bb11.preheader.i18
+
+bb11.preheader.i18: ; preds = %bb2.i.i.i17, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE8allocateEi.exit.i.i
+ %59 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %59, align 4
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %53, align 4
+ store i32 0, i32* %50, align 4
+ br label %bb.nph.i20
+
+bb.nph.i20: ; preds = %bb11.preheader.i18, %bb4.i3
+ %60 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 9, i32 3 ; [#uses=1]
+ %tmp.i19 = sub i32 0, %47 ; [#uses=1]
+ br label %bb7.i24
+
+bb7.i24: ; preds = %bb10.i28, %bb.nph.i20
+ %indvar.i21 = phi i32 [ 0, %bb.nph.i20 ], [ %indvar.next.i26, %bb10.i28 ] ; [#uses=2]
+ %tmp57 = add i32 %47, %indvar.i21 ; [#uses=1]
+ %61 = load %struct.btPersistentManifold*** %60, align 4 ; [#uses=1]
+ %scevgep59 = getelementptr %struct.btPersistentManifold** %61, i32 %tmp57 ; [#uses=2]
+ %62 = icmp eq %struct.btPersistentManifold** %scevgep59, null ; [#uses=1]
+ br i1 %62, label %bb10.i28, label %bb8.i25
+
+bb8.i25: ; preds = %bb7.i24
+ store %struct.btPersistentManifold* null, %struct.btPersistentManifold** %scevgep59, align 4
+ br label %bb10.i28
+
+bb10.i28: ; preds = %bb8.i25, %bb7.i24
+ %indvar.next.i26 = add i32 %indvar.i21, 1 ; [#uses=2]
+ %exitcond56 = icmp eq i32 %indvar.next.i26, %tmp.i19 ; [#uses=1]
+ br i1 %exitcond56, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE6resizeEiRKS1_.exit, label %bb7.i24
+
+_ZN20btAlignedObjectArrayIP20btPersistentManifoldE6resizeEiRKS1_.exit: ; preds = %bb10.i28, %_ZN20btAlignedObjectArrayIP17btCollisionObjectE6resizeEiRKS1_.exit
+ store i32 0, i32* %0, align 4
+ %63 = load i32* %2, align 4 ; [#uses=4]
+ %64 = icmp sgt i32 %63, 0 ; [#uses=1]
+ %.not66 = xor i1 %64, true ; [#uses=1]
+ %65 = icmp slt i32 %63, 0 ; [#uses=1]
+ %or.cond67 = and i1 %.not66, %65 ; [#uses=1]
+ br i1 %or.cond67, label %bb4.i, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE6resizeEiRKS1_.exit
+
+bb4.i: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE6resizeEiRKS1_.exit
+ %66 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 2 ; [#uses=2]
+ %67 = load i32* %66, align 4 ; [#uses=1]
+ %68 = icmp slt i32 %67, 0 ; [#uses=1]
+ br i1 %68, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i, label %bb.nph.i
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i: ; preds = %bb4.i
+ %69 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ %70 = load %struct.btTypedConstraint*** %69, align 4 ; [#uses=2]
+ %71 = icmp eq %struct.btTypedConstraint** %70, null ; [#uses=1]
+ br i1 %71, label %bb11.preheader.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i
+ %72 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ %73 = load i8* %72, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %73, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %74 = bitcast %struct.btTypedConstraint** %70 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %74)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %69, align 4
+ br label %bb11.preheader.i
+
+bb11.preheader.i: ; preds = %bb2.i.i.i, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i
+ %75 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %75, align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %69, align 4
+ store i32 0, i32* %66, align 4
+ br label %bb.nph.i
+
+bb.nph.i: ; preds = %bb11.preheader.i, %bb4.i
+ %76 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %tmp.i = sub i32 0, %63 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb10.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb10.i ] ; [#uses=2]
+ %tmp61 = add i32 %63, %indvar.i ; [#uses=1]
+ %77 = load %struct.btTypedConstraint*** %76, align 4 ; [#uses=1]
+ %scevgep63 = getelementptr %struct.btTypedConstraint** %77, i32 %tmp61 ; [#uses=2]
+ %78 = icmp eq %struct.btTypedConstraint** %scevgep63, null ; [#uses=1]
+ br i1 %78, label %bb10.i, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ store %struct.btTypedConstraint* null, %struct.btTypedConstraint** %scevgep63, align 4
+ br label %bb10.i
+
+bb10.i: ; preds = %bb8.i, %bb7.i
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond60 = icmp eq i32 %indvar.next.i, %tmp.i ; [#uses=1]
+ br i1 %exitcond60, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE6resizeEiRKS1_.exit, label %bb7.i
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE6resizeEiRKS1_.exit: ; preds = %bb10.i, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE6resizeEiRKS1_.exit
+ store i32 0, i32* %2, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld9addActionEP17btActionInterface(%struct.btDiscreteDynamicsWorld* nocapture %this, %struct.btActionInterface* %action) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.531.0.i.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.531.0.i.i ; [#uses=1]
+ br i1 %7, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %8 = icmp eq i32 %iftmp.531.0.i.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayIP17btActionInterfaceE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %9 = shl i32 %iftmp.531.0.i.i, 2 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %10 to %struct.btActionInterface** ; [#uses=1]
+ %.pre.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btActionInterfaceE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIP17btActionInterfaceE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %11 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %1, %bb.i.i ] ; [#uses=2]
+ %12 = phi %struct.btActionInterface** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayIP17btActionInterfaceE4copyEiiPS1_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIP17btActionInterfaceE8allocateEi.exit.i.i
+ %14 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btActionInterface** %12, i32 %indvar.i.i.i ; [#uses=2]
+ %15 = icmp eq %struct.btActionInterface** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %16 = load %struct.btActionInterface*** %14, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btActionInterface** %16, i32 %indvar.i.i.i ; [#uses=1]
+ %17 = load %struct.btActionInterface** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btActionInterface* %17, %struct.btActionInterface** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP17btActionInterfaceE4copyEiiPS1_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIP17btActionInterfaceE4copyEiiPS1_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP17btActionInterfaceE8allocateEi.exit.i.i
+ %18 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ %19 = load %struct.btActionInterface*** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.btActionInterface** %19, null ; [#uses=1]
+ br i1 %20, label %_ZN20btAlignedObjectArrayIP17btActionInterfaceE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP17btActionInterfaceE4copyEiiPS1_.exit.i.i
+ %21 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %23 = bitcast %struct.btActionInterface** %19 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %18, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btActionInterfaceE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIP17btActionInterfaceE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIP17btActionInterfaceE4copyEiiPS1_.exit.i.i
+ %24 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store %struct.btActionInterface** %12, %struct.btActionInterface*** %18, align 4
+ store i32 %iftmp.531.0.i.i, i32* %2, align 4
+ %.pre5.i = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIP17btActionInterfaceE10deallocateEv.exit.i.i, %bb.i, %entry
+ %25 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIP17btActionInterfaceE10deallocateEv.exit.i.i ], [ %1, %entry ], [ %1, %bb.i ] ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %27 = load %struct.btActionInterface*** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btActionInterface** %27, i32 %25 ; [#uses=2]
+ %29 = icmp eq %struct.btActionInterface** %28, null ; [#uses=1]
+ br i1 %29, label %_ZN20btAlignedObjectArrayIP17btActionInterfaceE9push_backERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %struct.btActionInterface* %action, %struct.btActionInterface** %28, align 4
+ %.pre6.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btActionInterfaceE9push_backERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP17btActionInterfaceE9push_backERKS1_.exit: ; preds = %bb2.i, %bb1.i
+ %30 = phi i32 [ %25, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %31 = add nsw i32 %30, 1 ; [#uses=1]
+ store i32 %31, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld19integrateTransformsEf(%struct.btDiscreteDynamicsWorld* %this, float %timeStep) align 2 {
+entry:
+ %predictedTrans = alloca %struct.btTransform, align 8 ; [#uses=8]
+ %sweepResults = alloca %struct.btClosestNotMeConvexResultCallback, align 8 ; [#uses=18]
+ %tmpSphere = alloca %struct.btPolyhedralConvexShape, align 8 ; [#uses=6]
+ call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([20 x i8]* @.str323, i32 0, i32 0))
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTransform* %predictedTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btTransform* %predictedTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btTransform* %predictedTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 0, i32 0 ; [#uses=4]
+ %8 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btTransform* %predictedTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 5 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 1 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btPolyhedralConvexShape* %tmpSphere, i32 0, i32 0 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btPolyhedralConvexShape* %tmpSphere, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ %27 = getelementptr inbounds %struct.btPolyhedralConvexShape* %tmpSphere, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btPolyhedralConvexShape* %tmpSphere, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btPolyhedralConvexShape* %tmpSphere, i32 0, i32 0, i32 3 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btPolyhedralConvexShape* %tmpSphere, i32 0, i32 0, i32 0 ; [#uses=3]
+ %32 = getelementptr inbounds %struct.btClosestNotMeConvexResultCallback* %sweepResults, i32 0, i32 0, i32 0 ; [#uses=1]
+ br label %bb61
+
+bb: ; preds = %bb61
+ %33 = load %struct.btRigidBody*** %1, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btRigidBody** %33, i32 %104 ; [#uses=1]
+ %34 = load %struct.btRigidBody** %scevgep, align 4 ; [#uses=16]
+ %35 = getelementptr inbounds %struct.btRigidBody* %34, i32 0, i32 0, i32 21 ; [#uses=3]
+ store float 1.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btRigidBody* %34, i32 0, i32 0, i32 15 ; [#uses=1]
+ %37 = load i32* %36, align 4 ; [#uses=1]
+ switch i32 %37, label %bb4 [
+ i32 2, label %bb60
+ i32 5, label %bb60
+ ]
+
+bb4: ; preds = %bb
+ %38 = getelementptr inbounds %struct.btRigidBody* %34, i32 0, i32 0, i32 12 ; [#uses=1]
+ %39 = load i32* %38, align 4 ; [#uses=1]
+ %40 = and i32 %39, 3 ; [#uses=1]
+ %41 = icmp eq i32 %40, 0 ; [#uses=1]
+ br i1 %41, label %bb16, label %bb60
+
+bb16: ; preds = %bb4
+ invoke void @_ZN11btRigidBody26predictIntegratedTransformEfR11btTransform(%struct.btRigidBody* %34, float %timeStep, %struct.btTransform* %predictedTrans)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb16
+ %42 = load float* %2, align 8 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btRigidBody* %34, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=2]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = fsub float %42, %44 ; [#uses=2]
+ %46 = load float* %3, align 4 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btRigidBody* %34, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=2]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = fsub float %46, %48 ; [#uses=2]
+ %50 = load float* %4, align 8 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btRigidBody* %34, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=2]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = fsub float %50, %52 ; [#uses=2]
+ %54 = getelementptr inbounds %struct.btRigidBody* %34, i32 0, i32 0, i32 23 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=2]
+ %56 = fmul float %55, %55 ; [#uses=2]
+ %57 = fcmp oeq float %56, 0.000000e+00 ; [#uses=1]
+ br i1 %57, label %bb58, label %bb17
+
+bb17: ; preds = %invcont
+ %58 = fmul float %49, %49 ; [#uses=1]
+ %59 = fmul float %53, %53 ; [#uses=1]
+ %60 = fmul float %45, %45 ; [#uses=1]
+ %61 = fadd float %59, %58 ; [#uses=1]
+ %62 = fadd float %61, %60 ; [#uses=1]
+ %63 = fcmp uge float %56, %62 ; [#uses=1]
+ br i1 %63, label %bb58, label %bb22
+
+bb22: ; preds = %bb17
+ invoke void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([20 x i8]* @.str424, i32 0, i32 0))
+ to label %invcont25 unwind label %lpad
+
+invcont25: ; preds = %bb22
+ %64 = getelementptr inbounds %struct.btRigidBody* %34, i32 0, i32 0, i32 9 ; [#uses=1]
+ %65 = load %struct.btCollisionShape** %64, align 4 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btCollisionShape* %65, i32 0, i32 1 ; [#uses=1]
+ %67 = load i32* %66, align 4 ; [#uses=1]
+ %68 = icmp slt i32 %67, 20 ; [#uses=1]
+ br i1 %68, label %bb27, label %bb56
+
+bb27: ; preds = %invcont25
+ %69 = load i32* @gNumClampedCcdMotions, align 4 ; [#uses=1]
+ %70 = add nsw i32 %69, 1 ; [#uses=1]
+ store i32 %70, i32* @gNumClampedCcdMotions, align 4
+ %71 = load %struct.btActionInterface** %5, align 4 ; [#uses=1]
+ %72 = load %struct.btActionInterface** %6, align 4 ; [#uses=2]
+ %73 = getelementptr inbounds %struct.btActionInterface* %72, i32 0, i32 0 ; [#uses=1]
+ %74 = load i32 (...)*** %73, align 4 ; [#uses=1]
+ %75 = getelementptr inbounds i32 (...)** %74, i32 9 ; [#uses=1]
+ %76 = load i32 (...)** %75, align 4 ; [#uses=1]
+ %77 = bitcast i32 (...)* %76 to %struct..0btMultiSapOverlapFilterCallback* (%struct.btActionInterface*)* ; [#uses=1]
+ %78 = invoke %struct..0btMultiSapOverlapFilterCallback* %77(%struct.btActionInterface* %72)
+ to label %invcont28 unwind label %lpad71 ; [#uses=1]
+
+invcont28: ; preds = %bb27
+ %79 = getelementptr inbounds %struct.btRigidBody* %34, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %8, align 4
+ store i16 1, i16* %9, align 8
+ store i16 -1, i16* %10, align 2
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %7, align 8
+ %80 = load float* %51, align 4 ; [#uses=1]
+ store float %80, float* %11, align 4
+ %81 = load float* %47, align 4 ; [#uses=1]
+ store float %81, float* %12, align 4
+ %82 = load float* %43, align 4 ; [#uses=1]
+ store float %82, float* %13, align 4
+ %83 = getelementptr inbounds %struct.btRigidBody* %34, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %14, align 4
+ %85 = load float* %4, align 8 ; [#uses=1]
+ store float %85, float* %15, align 4
+ %86 = load float* %3, align 4 ; [#uses=1]
+ store float %86, float* %16, align 4
+ %87 = load float* %2, align 8 ; [#uses=1]
+ store float %87, float* %17, align 4
+ %88 = load float* %19, align 4 ; [#uses=1]
+ store float %88, float* %18, align 4
+ store %struct.btCollisionObject* null, %struct.btCollisionObject** %20, align 4
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTV34btClosestNotMeConvexResultCallback, i32 0, i32 2), i32 (...)*** %7, align 8
+ store %struct.btCollisionObject* %79, %struct.btCollisionObject** %21, align 8
+ store float 0.000000e+00, float* %22, align 4
+ store %struct..0btMultiSapOverlapFilterCallback* %78, %struct..0btMultiSapOverlapFilterCallback** %23, align 8
+ store %struct.btActionInterface* %71, %struct.btActionInterface** %24, align 4
+ %89 = getelementptr inbounds %struct.btRigidBody* %34, i32 0, i32 0, i32 22 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=2]
+ invoke void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %25)
+ to label %invcont29 unwind label %lpad75
+
+invcont29: ; preds = %invcont28
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btSphereShape, i32 0, i32 2), i32 (...)*** %26, align 8
+ store i32 8, i32* %27, align 4
+ store float %90, float* %28, align 4
+ store float %90, float* %29, align 4
+ %91 = getelementptr inbounds %struct.btRigidBody* %34, i32 0, i32 0, i32 8 ; [#uses=2]
+ %92 = load %struct.btBroadphaseProxy** %91, align 4 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btBroadphaseProxy* %92, i32 0, i32 1 ; [#uses=1]
+ %94 = load i16* %93, align 4 ; [#uses=1]
+ store i16 %94, i16* %9, align 8
+ %95 = load %struct.btBroadphaseProxy** %91, align 4 ; [#uses=1]
+ %96 = getelementptr inbounds %struct.btBroadphaseProxy* %95, i32 0, i32 2 ; [#uses=1]
+ %97 = load i16* %96, align 2 ; [#uses=1]
+ store i16 %97, i16* %10, align 2
+ %98 = getelementptr inbounds %struct.btRigidBody* %34, i32 0, i32 0, i32 1 ; [#uses=1]
+ invoke void @_ZNK16btCollisionWorld15convexSweepTestEPK13btConvexShapeRK11btTransformS5_RNS_20ConvexResultCallbackEf(%struct.btCollisionWorld* %30, %struct.btConvexShape* %31, %struct.btTransform* %98, %struct.btTransform* %predictedTrans, %"struct.btCollisionWorld::ConvexResultCallback"* %32, float 0.000000e+00)
+ to label %invcont30 unwind label %lpad79
+
+invcont30: ; preds = %invcont29
+ %99 = load float* %8, align 4 ; [#uses=4]
+ %100 = fcmp olt float %99, 1.000000e+00 ; [#uses=1]
+ %.not = xor i1 %100, true ; [#uses=1]
+ %101 = fcmp uge float %99, 1.000000e+00 ; [#uses=1]
+ %or.cond = or i1 %.not, %101 ; [#uses=1]
+ br i1 %or.cond, label %bb45, label %bb40
+
+bb40: ; preds = %invcont30
+ store float %99, float* %35, align 4
+ %102 = fmul float %99, %timeStep ; [#uses=1]
+ invoke void @_ZN11btRigidBody26predictIntegratedTransformEfR11btTransform(%struct.btRigidBody* %34, float %102, %struct.btTransform* %predictedTrans)
+ to label %invcont41 unwind label %lpad79
+
+invcont41: ; preds = %bb40
+ store float 0.000000e+00, float* %35, align 4
+ br label %bb45
+
+bb45: ; preds = %invcont41, %invcont30
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %26, align 8
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %31)
+ to label %bb50 unwind label %lpad75
+
+bb50: ; preds = %bb45
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %7, align 8
+ br label %bb56
+
+bb56: ; preds = %bb50, %invcont25
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %bb58 unwind label %lpad
+
+bb58: ; preds = %bb56, %bb17, %invcont
+ invoke void @_ZN11btRigidBody18proceedToTransformERK11btTransform(%struct.btRigidBody* %34, %struct.btTransform* %predictedTrans)
+ to label %bb60 unwind label %lpad
+
+bb60: ; preds = %bb58, %bb4, %bb, %bb
+ %103 = add nsw i32 %104, 1 ; [#uses=1]
+ br label %bb61
+
+bb61: ; preds = %bb60, %entry
+ %104 = phi i32 [ 0, %entry ], [ %103, %bb60 ] ; [#uses=3]
+ %105 = load i32* %0, align 4 ; [#uses=1]
+ %106 = icmp sgt i32 %105, %104 ; [#uses=1]
+ br i1 %106, label %bb, label %bb68
+
+invcont66: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.2)
+ unreachable
+
+bb68: ; preds = %bb61
+ call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %bb58, %bb56, %bb22, %bb16
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select70 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad71: ; preds = %bb27
+ %eh_ptr72 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select74 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr72, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad95
+
+lpad75: ; preds = %bb45, %invcont28
+ %eh_ptr76 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select78 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr76, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad96
+
+lpad79: ; preds = %bb40, %invcont29
+ %eh_ptr80 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select82 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr80, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %26, align 8
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %31)
+ to label %ppad96 unwind label %lpad83
+
+lpad83: ; preds = %lpad79
+ %eh_ptr84 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select86 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr84, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad87: ; preds = %ppad95
+ %eh_ptr88 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select90 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr88, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad91: ; preds = %ppad
+ %eh_ptr92 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select94 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr92, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %ppad95, %lpad
+ %eh_exception.2 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.1, %ppad95 ] ; [#uses=1]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont66 unwind label %lpad91
+
+ppad95: ; preds = %ppad96, %lpad71
+ %eh_exception.1 = phi i8* [ %eh_exception.0, %ppad96 ], [ %eh_ptr72, %lpad71 ] ; [#uses=1]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %ppad unwind label %lpad87
+
+ppad96: ; preds = %lpad79, %lpad75
+ %eh_exception.0 = phi i8* [ %eh_ptr76, %lpad75 ], [ %eh_ptr80, %lpad79 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld27ClosestConvexResultCallbackE, i32 0, i32 2), i32 (...)*** %7, align 8
+ br label %ppad95
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfo(%struct.btDiscreteDynamicsWorld* %this, %struct.btContactSolverInfo* %solverInfo) align 2 {
+invcont:
+ %0 = alloca %struct.CONTACT_KEY_TOKEN_COMP, align 8 ; [#uses=1]
+ %sortedConstraints = alloca %"struct.btAlignedObjectArray<btTypedConstraint*>", align 8 ; [#uses=5]
+ %solverCallback = alloca %struct..0InplaceSolverIslandCallback, align 8 ; [#uses=24]
+ call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([17 x i8]* @.str525, i32 0, i32 0))
+ %1 = getelementptr inbounds %"struct.btAlignedObjectArray<btTypedConstraint*>"* %sortedConstraints, i32 0, i32 4 ; [#uses=7]
+ store i8 1, i8* %1, align 8
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btTypedConstraint*>"* %sortedConstraints, i32 0, i32 3 ; [#uses=14]
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %2, align 4
+ %3 = getelementptr inbounds %"struct.btAlignedObjectArray<btTypedConstraint*>"* %sortedConstraints, i32 0, i32 1 ; [#uses=7]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<btTypedConstraint*>"* %sortedConstraints, i32 0, i32 2 ; [#uses=4]
+ store i32 0, i32* %4, align 8
+ %5 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=6]
+ %7 = icmp slt i32 %6, 0 ; [#uses=1]
+ br i1 %7, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE6resizeEiRKS1_.exit, label %bb3.i
+
+bb3.i: ; preds = %invcont
+ %8 = icmp sgt i32 %6, 0 ; [#uses=2]
+ br i1 %8, label %bb.i2.i.i, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE6resizeEiRKS1_.exit
+
+bb.i2.i.i: ; preds = %bb3.i
+ %9 = shl i32 %6, 2 ; [#uses=1]
+ %10 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16)
+ to label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i unwind label %lpad37 ; [#uses=1]
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i
+ %phitmp.i.i = bitcast i8* %10 to %struct.btTypedConstraint** ; [#uses=2]
+ %.pre.i = load i32* %3, align 4 ; [#uses=2]
+ %11 = icmp sgt i32 %.pre.i, 0 ; [#uses=1]
+ br i1 %11, label %bb.i4.i.i, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i
+ %indvar.i.i.i = phi i32 [ %indvar.next.i.i.i, %bb3.i.i.i ], [ 0, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btTypedConstraint** %phitmp.i.i, i32 %indvar.i.i.i ; [#uses=2]
+ %12 = icmp eq %struct.btTypedConstraint** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %12, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %13 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btTypedConstraint** %13, i32 %indvar.i.i.i ; [#uses=1]
+ %14 = load %struct.btTypedConstraint** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btTypedConstraint* %14, %struct.btTypedConstraint** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond79 = icmp eq i32 %indvar.next.i.i.i, %.pre.i ; [#uses=1]
+ br i1 %exitcond79, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i
+ %15 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=2]
+ %16 = icmp eq %struct.btTypedConstraint** %15, null ; [#uses=1]
+ br i1 %16, label %bb11.preheader.i, label %bb.i.i.i65
+
+bb.i.i.i65: ; preds = %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i
+ %17 = load i8* %1, align 8 ; [#uses=1]
+ %toBool.i.i.i64 = icmp eq i8 %17, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i64, label %bb2.i.i.i67, label %bb1.i.i.i66
+
+bb1.i.i.i66: ; preds = %bb.i.i.i65
+ %18 = bitcast %struct.btTypedConstraint** %15 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %18)
+ to label %bb2.i.i.i67 unwind label %lpad37
+
+bb2.i.i.i67: ; preds = %bb1.i.i.i66, %bb.i.i.i65
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %2, align 4
+ br label %bb11.preheader.i
+
+bb11.preheader.i: ; preds = %bb2.i.i.i67, %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i
+ store i8 1, i8* %1, align 8
+ store %struct.btTypedConstraint** %phitmp.i.i, %struct.btTypedConstraint*** %2, align 4
+ store i32 %6, i32* %4, align 8
+ br i1 %8, label %bb7.i, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE6resizeEiRKS1_.exit
+
+bb7.i: ; preds = %bb10.i, %bb11.preheader.i
+ %indvar.i = phi i32 [ %indvar.next.i, %bb10.i ], [ 0, %bb11.preheader.i ] ; [#uses=2]
+ %19 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btTypedConstraint** %19, i32 %indvar.i ; [#uses=2]
+ %20 = icmp eq %struct.btTypedConstraint** %scevgep, null ; [#uses=1]
+ br i1 %20, label %bb10.i, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ store %struct.btTypedConstraint* null, %struct.btTypedConstraint** %scevgep, align 4
+ br label %bb10.i
+
+bb10.i: ; preds = %bb8.i, %bb7.i
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %6 ; [#uses=1]
+ br i1 %exitcond, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE6resizeEiRKS1_.exit, label %bb7.i
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE6resizeEiRKS1_.exit: ; preds = %bb10.i, %bb11.preheader.i, %bb3.i, %invcont
+ store i32 %6, i32* %3, align 4
+ %21 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ br label %bb2
+
+bb: ; preds = %invcont3
+ %23 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=1]
+ %24 = load %struct.btTypedConstraint*** %22, align 4 ; [#uses=1]
+ %scevgep82 = getelementptr %struct.btTypedConstraint** %24, i32 %27 ; [#uses=1]
+ %25 = load %struct.btTypedConstraint** %scevgep82, align 4 ; [#uses=1]
+ %scevgep83 = getelementptr %struct.btTypedConstraint** %23, i32 %27 ; [#uses=1]
+ store %struct.btTypedConstraint* %25, %struct.btTypedConstraint** %scevgep83, align 4
+ %26 = add nsw i32 %27, 1 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE6resizeEiRKS1_.exit
+ %27 = phi i32 [ %26, %bb ], [ 0, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE6resizeEiRKS1_.exit ] ; [#uses=4]
+ %28 = load i32 (...)*** %21, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds i32 (...)** %28, i32 24 ; [#uses=1]
+ %30 = load i32 (...)** %29, align 4 ; [#uses=1]
+ %31 = bitcast i32 (...)* %30 to i32 (%struct.btDiscreteDynamicsWorld*)* ; [#uses=1]
+ %32 = invoke i32 %31(%struct.btDiscreteDynamicsWorld* %this)
+ to label %invcont3 unwind label %lpad37 ; [#uses=1]
+
+invcont3: ; preds = %bb2
+ %33 = icmp sgt i32 %32, %27 ; [#uses=1]
+ br i1 %33, label %bb, label %bb4
+
+bb4: ; preds = %invcont3
+ %34 = load i32* %3, align 4 ; [#uses=2]
+ %35 = icmp sgt i32 %34, 1 ; [#uses=1]
+ br i1 %35, label %bb.i, label %invcont5
+
+bb.i: ; preds = %bb4
+ %36 = add nsw i32 %34, -1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIP17btTypedConstraintE17quickSortInternalI33btSortConstraintOnIslandPredicateEEvT_ii(%"struct.btAlignedObjectArray<btTypedConstraint*>"* %sortedConstraints, %struct.CONTACT_KEY_TOKEN_COMP* byval align 4 %0, i32 0, i32 %36) nounwind
+ br label %invcont5
+
+invcont5: ; preds = %bb.i, %bb4
+ %37 = load i32 (...)*** %21, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds i32 (...)** %37, i32 24 ; [#uses=1]
+ %39 = load i32 (...)** %38, align 4 ; [#uses=1]
+ %40 = bitcast i32 (...)* %39 to i32 (%struct.btDiscreteDynamicsWorld*)* ; [#uses=1]
+ %41 = invoke i32 %40(%struct.btDiscreteDynamicsWorld* %this)
+ to label %invcont6 unwind label %lpad37 ; [#uses=1]
+
+invcont6: ; preds = %invcont5
+ %42 = icmp eq i32 %41, 0 ; [#uses=1]
+ br i1 %42, label %invcont10, label %bb7
+
+bb7: ; preds = %invcont6
+ %43 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=1]
+ br label %invcont10
+
+invcont10: ; preds = %bb7, %invcont6
+ %iftmp.398.0 = phi %struct.btTypedConstraint** [ %43, %bb7 ], [ null, %invcont6 ] ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %45 = load %struct.btActionInterface** %44, align 4 ; [#uses=3]
+ %46 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 4 ; [#uses=2]
+ %47 = load %struct.btStackAlloc** %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 6 ; [#uses=2]
+ %49 = load %struct.btActionInterface** %48, align 4 ; [#uses=1]
+ %50 = load i32* %3, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 1 ; [#uses=3]
+ %52 = load %struct.btActionInterface** %51, align 4 ; [#uses=2]
+ %53 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTVZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoE27InplaceSolverIslandCallback, i32 0, i32 2), i32 (...)*** %53, align 8
+ %54 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 1 ; [#uses=1]
+ store %struct.btContactSolverInfo* %solverInfo, %struct.btContactSolverInfo** %54, align 4
+ %55 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 2 ; [#uses=1]
+ store %struct.btActionInterface* %52, %struct.btActionInterface** %55, align 8
+ %56 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 3 ; [#uses=1]
+ store %struct.btTypedConstraint** %iftmp.398.0, %struct.btTypedConstraint*** %56, align 4
+ %57 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 4 ; [#uses=1]
+ store i32 %50, i32* %57, align 8
+ %58 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 5 ; [#uses=1]
+ store %struct.btActionInterface* %49, %struct.btActionInterface** %58, align 4
+ %59 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 6 ; [#uses=1]
+ store %struct.btStackAlloc* %47, %struct.btStackAlloc** %59, align 8
+ %60 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 7 ; [#uses=1]
+ store %struct.btActionInterface* %45, %struct.btActionInterface** %60, align 4
+ %61 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 8, i32 4 ; [#uses=1]
+ store i8 1, i8* %61, align 8
+ %62 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 8, i32 3 ; [#uses=1]
+ store %struct.btCollisionObject** null, %struct.btCollisionObject*** %62, align 4
+ %63 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 8, i32 1 ; [#uses=1]
+ store i32 0, i32* %63, align 4
+ %64 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 8, i32 2 ; [#uses=1]
+ store i32 0, i32* %64, align 8
+ %65 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 9, i32 4 ; [#uses=1]
+ store i8 1, i8* %65, align 4
+ %66 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 9, i32 3 ; [#uses=1]
+ store %struct.btPersistentManifold** null, %struct.btPersistentManifold*** %66, align 4
+ %67 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 9, i32 1 ; [#uses=1]
+ store i32 0, i32* %67, align 4
+ %68 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 9, i32 2 ; [#uses=1]
+ store i32 0, i32* %68, align 4
+ %69 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %69, align 8
+ %70 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 10, i32 3 ; [#uses=1]
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %70, align 4
+ %71 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %71, align 4
+ %72 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %72, align 8
+ %73 = getelementptr inbounds %struct.btActionInterface* %52, i32 0, i32 0 ; [#uses=1]
+ %74 = load i32 (...)*** %73, align 4 ; [#uses=1]
+ %75 = getelementptr inbounds i32 (...)** %74, i32 2 ; [#uses=1]
+ %76 = load i32 (...)** %75, align 4 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btActionInterface* %45, i32 0, i32 0 ; [#uses=1]
+ %78 = load i32 (...)*** %77, align 4 ; [#uses=1]
+ %79 = getelementptr inbounds i32 (...)** %78, i32 9 ; [#uses=1]
+ %80 = load i32 (...)** %79, align 4 ; [#uses=1]
+ %81 = bitcast i32 (...)* %80 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %82 = invoke i32 %81(%struct.btActionInterface* %45)
+ to label %invcont12 unwind label %lpad41 ; [#uses=1]
+
+invcont12: ; preds = %invcont10
+ %83 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses=1]
+ %84 = load i32* %83, align 4 ; [#uses=1]
+ %85 = load %struct.btActionInterface** %51, align 4 ; [#uses=1]
+ %86 = bitcast i32 (...)* %76 to void (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ invoke void %86(%struct.btActionInterface* %85, i32 %84, i32 %82)
+ to label %invcont13 unwind label %lpad41
+
+invcont13: ; preds = %invcont12
+ %87 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %88 = load %struct.btActionInterface** %44, align 4 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 2 ; [#uses=1]
+ %90 = load %struct.btSimulationIslandManager** %89, align 4 ; [#uses=1]
+ %91 = getelementptr inbounds %struct..0InplaceSolverIslandCallback* %solverCallback, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN25btSimulationIslandManager22buildAndProcessIslandsEP12btDispatcherP16btCollisionWorldPNS_14IslandCallbackE(%struct.btSimulationIslandManager* %90, %struct.btActionInterface* %88, %struct.btCollisionWorld* %87, %struct.btActionInterface* %91)
+ to label %invcont14 unwind label %lpad41
+
+invcont14: ; preds = %invcont13
+ invoke fastcc void @_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallback18processConstraintsEv(%struct..0InplaceSolverIslandCallback* %solverCallback)
+ to label %invcont15 unwind label %lpad41
+
+invcont15: ; preds = %invcont14
+ %92 = load %struct.btActionInterface** %51, align 4 ; [#uses=2]
+ %93 = getelementptr inbounds %struct.btActionInterface* %92, i32 0, i32 0 ; [#uses=1]
+ %94 = load i32 (...)*** %93, align 4 ; [#uses=1]
+ %95 = getelementptr inbounds i32 (...)** %94, i32 4 ; [#uses=1]
+ %96 = load i32 (...)** %95, align 4 ; [#uses=1]
+ %97 = load %struct.btStackAlloc** %46, align 4 ; [#uses=1]
+ %98 = load %struct.btActionInterface** %48, align 4 ; [#uses=1]
+ %99 = bitcast i32 (...)* %96 to void (%struct.btActionInterface*, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*)* ; [#uses=1]
+ invoke void %99(%struct.btActionInterface* %92, %struct.btContactSolverInfo* %solverInfo, %struct.btActionInterface* %98, %struct.btStackAlloc* %97)
+ to label %bb20 unwind label %lpad41
+
+bb20: ; preds = %invcont15
+ invoke void @_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD1Ev(%struct..0InplaceSolverIslandCallback* %solverCallback)
+ to label %bb27 unwind label %lpad37
+
+bb27: ; preds = %bb20
+ %100 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=2]
+ %101 = icmp eq %struct.btTypedConstraint** %100, null ; [#uses=1]
+ br i1 %101, label %bb34, label %bb.i.i.i72
+
+bb.i.i.i72: ; preds = %bb27
+ %102 = load i8* %1, align 8 ; [#uses=1]
+ %toBool.i.i.i71 = icmp eq i8 %102, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i71, label %bb2.i.i.i74, label %bb1.i.i.i73
+
+bb1.i.i.i73: ; preds = %bb.i.i.i72
+ %103 = bitcast %struct.btTypedConstraint** %100 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %103)
+ to label %bb2.i.i.i74 unwind label %lpad
+
+bb2.i.i.i74: ; preds = %bb1.i.i.i73, %bb.i.i.i72
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %2, align 4
+ br label %bb34
+
+invcont32: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.1)
+ unreachable
+
+bb34: ; preds = %bb2.i.i.i74, %bb27
+ store i8 1, i8* %1, align 8
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %2, align 4
+ store i32 0, i32* %3, align 4
+ store i32 0, i32* %4, align 8
+ call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %bb1.i.i.i73
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select36 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad37: ; preds = %bb20, %invcont5, %bb2, %bb1.i.i.i66, %bb.i2.i.i
+ %eh_ptr38 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select40 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr38, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad57
+
+lpad41: ; preds = %invcont15, %invcont14, %invcont13, %invcont12, %invcont10
+ %eh_ptr42 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select44 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr42, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZZN23btDiscreteDynamicsWorld16solveConstraintsER19btContactSolverInfoEN27InplaceSolverIslandCallbackD1Ev(%struct..0InplaceSolverIslandCallback* %solverCallback)
+ to label %ppad57 unwind label %lpad45
+
+lpad45: ; preds = %lpad41
+ %eh_ptr46 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select48 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr46, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad49: ; preds = %bb1.i.i.i
+ %eh_ptr50 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select52 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr50, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad53: ; preds = %ppad
+ %eh_ptr54 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select56 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr54, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit, %lpad
+ %eh_exception.1 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.0, %_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit ] ; [#uses=1]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont32 unwind label %lpad53
+
+ppad57: ; preds = %lpad41, %lpad37
+ %eh_exception.0 = phi i8* [ %eh_ptr38, %lpad37 ], [ %eh_ptr42, %lpad41 ] ; [#uses=1]
+ %104 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=2]
+ %105 = icmp eq %struct.btTypedConstraint** %104, null ; [#uses=1]
+ br i1 %105, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %ppad57
+ %106 = load i8* %1, align 8 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %106, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %107 = bitcast %struct.btTypedConstraint** %104 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %107)
+ to label %bb2.i.i.i unwind label %lpad49
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %2, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit: ; preds = %bb2.i.i.i, %ppad57
+ store i8 1, i8* %1, align 8
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %2, align 4
+ store i32 0, i32* %3, align 4
+ store i32 0, i32* %4, align 8
+ br label %ppad
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld16removeConstraintEP17btTypedConstraint(%struct.btDiscreteDynamicsWorld* nocapture %this, %struct.btTypedConstraint* %constraint) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=4]
+ %2 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ br label %bb3.i.i
+
+bb.i.i: ; preds = %bb3.i.i
+ %3 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=1]
+ %scevgep.i.i = getelementptr %struct.btTypedConstraint** %3, i32 %7 ; [#uses=1]
+ %4 = load %struct.btTypedConstraint** %scevgep.i.i, align 4 ; [#uses=1]
+ %5 = icmp eq %struct.btTypedConstraint* %4, %constraint ; [#uses=1]
+ br i1 %5, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit.i, label %bb2.i.i
+
+bb2.i.i: ; preds = %bb.i.i
+ %6 = add nsw i32 %7, 1 ; [#uses=1]
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb2.i.i, %entry
+ %7 = phi i32 [ 0, %entry ], [ %6, %bb2.i.i ] ; [#uses=4]
+ %8 = icmp sgt i32 %1, %7 ; [#uses=1]
+ br i1 %8, label %bb.i.i, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit.i
+
+_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit.i: ; preds = %bb3.i.i, %bb.i.i
+ %index.0.i.i = phi i32 [ %1, %bb3.i.i ], [ %7, %bb.i.i ] ; [#uses=2]
+ %9 = icmp sgt i32 %1, %index.0.i.i ; [#uses=1]
+ br i1 %9, label %bb.i, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE6removeERKS1_.exit
+
+bb.i: ; preds = %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit.i
+ %10 = add nsw i32 %1, -1 ; [#uses=2]
+ %11 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btTypedConstraint** %11, i32 %index.0.i.i ; [#uses=2]
+ %13 = load %struct.btTypedConstraint** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTypedConstraint** %11, i32 %10 ; [#uses=1]
+ %15 = load %struct.btTypedConstraint** %14, align 4 ; [#uses=1]
+ store %struct.btTypedConstraint* %15, %struct.btTypedConstraint** %12, align 4
+ %16 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTypedConstraint** %16, i32 %10 ; [#uses=1]
+ store %struct.btTypedConstraint* %13, %struct.btTypedConstraint** %17, align 4
+ %18 = load i32* %0, align 4 ; [#uses=1]
+ %19 = add nsw i32 %18, -1 ; [#uses=1]
+ store i32 %19, i32* %0, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE6removeERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE6removeERKS1_.exit: ; preds = %bb.i, %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit.i
+ %20 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 0, i32 5 ; [#uses=1]
+ %21 = load %struct.btRigidBody** %20, align 4 ; [#uses=1]
+ tail call void @_ZN11btRigidBody19removeConstraintRefEP17btTypedConstraint(%struct.btRigidBody* %21, %struct.btTypedConstraint* %constraint)
+ %22 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 0, i32 6 ; [#uses=1]
+ %23 = load %struct.btRigidBody** %22, align 4 ; [#uses=1]
+ tail call void @_ZN11btRigidBody19removeConstraintRefEP17btTypedConstraint(%struct.btRigidBody* %23, %struct.btTypedConstraint* %constraint)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld13addConstraintEP17btTypedConstraintb(%struct.btDiscreteDynamicsWorld* nocapture %this, %struct.btTypedConstraint* %constraint, i8 zeroext %disableCollisionsBetweenLinkedBodies) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.528.0.i.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.528.0.i.i ; [#uses=1]
+ br i1 %7, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %8 = icmp eq i32 %iftmp.528.0.i.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %9 = shl i32 %iftmp.528.0.i.i, 2 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %10 to %struct.btTypedConstraint** ; [#uses=1]
+ %.pre.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %11 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %1, %bb.i.i ] ; [#uses=2]
+ %12 = phi %struct.btTypedConstraint** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i
+ %14 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btTypedConstraint** %12, i32 %indvar.i.i.i ; [#uses=2]
+ %15 = icmp eq %struct.btTypedConstraint** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %16 = load %struct.btTypedConstraint*** %14, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btTypedConstraint** %16, i32 %indvar.i.i.i ; [#uses=1]
+ %17 = load %struct.btTypedConstraint** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btTypedConstraint* %17, %struct.btTypedConstraint** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i
+ %18 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %19 = load %struct.btTypedConstraint*** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.btTypedConstraint** %19, null ; [#uses=1]
+ br i1 %20, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i
+ %21 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %23 = bitcast %struct.btTypedConstraint** %19 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %18, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i
+ %24 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store %struct.btTypedConstraint** %12, %struct.btTypedConstraint*** %18, align 4
+ store i32 %iftmp.528.0.i.i, i32* %2, align 4
+ %.pre5.i = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i.i, %bb.i, %entry
+ %25 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i.i ], [ %1, %entry ], [ %1, %bb.i ] ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %27 = load %struct.btTypedConstraint*** %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btTypedConstraint** %27, i32 %25 ; [#uses=2]
+ %29 = icmp eq %struct.btTypedConstraint** %28, null ; [#uses=1]
+ br i1 %29, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE9push_backERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %struct.btTypedConstraint* %constraint, %struct.btTypedConstraint** %28, align 4
+ %.pre6.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE9push_backERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE9push_backERKS1_.exit: ; preds = %bb2.i, %bb1.i
+ %30 = phi i32 [ %25, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %31 = add nsw i32 %30, 1 ; [#uses=1]
+ store i32 %31, i32* %0, align 4
+ %toBool = icmp eq i8 %disableCollisionsBetweenLinkedBodies, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %_ZN20btAlignedObjectArrayIP17btTypedConstraintE9push_backERKS1_.exit
+ %32 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 0, i32 5 ; [#uses=1]
+ %33 = load %struct.btRigidBody** %32, align 4 ; [#uses=1]
+ tail call void @_ZN11btRigidBody16addConstraintRefEP17btTypedConstraint(%struct.btRigidBody* %33, %struct.btTypedConstraint* %constraint)
+ %34 = getelementptr inbounds %struct.btTypedConstraint* %constraint, i32 0, i32 6 ; [#uses=1]
+ %35 = load %struct.btRigidBody** %34, align 4 ; [#uses=1]
+ tail call void @_ZN11btRigidBody16addConstraintRefEP17btTypedConstraint(%struct.btRigidBody* %35, %struct.btTypedConstraint* %constraint)
+ ret void
+
+return: ; preds = %_ZN20btAlignedObjectArrayIP17btTypedConstraintE9push_backERKS1_.exit
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN23btDiscreteDynamicsWorld21updateActivationStateEf(%struct.btDiscreteDynamicsWorld* nocapture %this, float %timeStep) align 2 {
+entry:
+ tail call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([22 x i8]* @.str626, i32 0, i32 0))
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ br label %bb18
+
+bb: ; preds = %bb18
+ %2 = load %struct.btRigidBody*** %1, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btRigidBody** %2, i32 %63 ; [#uses=1]
+ %3 = load %struct.btRigidBody** %scevgep, align 4 ; [#uses=19]
+ %4 = icmp eq %struct.btRigidBody* %3, null ; [#uses=1]
+ br i1 %4, label %bb17, label %bb1
+
+bb1: ; preds = %bb
+ %5 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 15 ; [#uses=3]
+ %6 = load i32* %5, align 4 ; [#uses=4]
+ switch i32 %6, label %bb4.critedge.i [
+ i32 2, label %invcont
+ i32 4, label %invcont
+ ]
+
+bb4.critedge.i: ; preds = %bb1
+ %7 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fmul float %8, %8 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = fmul float %11, %11 ; [#uses=1]
+ %13 = fadd float %9, %12 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=2]
+ %16 = fmul float %15, %15 ; [#uses=1]
+ %17 = fadd float %13, %16 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 18 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=2]
+ %20 = fmul float %19, %19 ; [#uses=1]
+ %21 = fcmp uge float %17, %20 ; [#uses=1]
+ br i1 %21, label %bb11.i, label %bb5.i
+
+bb5.i: ; preds = %bb4.critedge.i
+ %22 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=2]
+ %24 = fmul float %23, %23 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=2]
+ %27 = fmul float %26, %26 ; [#uses=1]
+ %28 = fadd float %24, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=2]
+ %31 = fmul float %30, %30 ; [#uses=1]
+ %32 = fadd float %28, %31 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 19 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ %35 = fmul float %34, %34 ; [#uses=1]
+ %36 = fcmp uge float %32, %35 ; [#uses=1]
+ br i1 %36, label %bb11.i, label %bb10.i
+
+bb10.i: ; preds = %bb5.i
+ %37 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 16 ; [#uses=2]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fadd float %38, %timeStep ; [#uses=1]
+ store float %39, float* %37, align 4
+ br label %invcont
+
+bb11.i: ; preds = %bb5.i, %bb4.critedge.i
+ %40 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 16 ; [#uses=1]
+ store float 0.000000e+00, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObject18setActivationStateEi(%struct.btCollisionObject* %41, i32 0)
+ to label %bb11.i.invcont_crit_edge unwind label %lpad
+
+bb11.i.invcont_crit_edge: ; preds = %bb11.i
+ %.pre = load i32* %5, align 4 ; [#uses=1]
+ br label %invcont
+
+invcont: ; preds = %bb11.i.invcont_crit_edge, %bb10.i, %bb1, %bb1
+ %42 = phi i32 [ %.pre, %bb11.i.invcont_crit_edge ], [ %6, %bb10.i ], [ %6, %bb1 ], [ %6, %bb1 ] ; [#uses=4]
+ %43 = icmp eq i32 %42, 4 ; [#uses=1]
+ br i1 %43, label %bb17, label %bb1.i
+
+bb1.i: ; preds = %invcont
+ %44 = load i8* @gDisableDeactivation, align 1 ; [#uses=1]
+ %toBool2.i = icmp ne i8 %44, 0 ; [#uses=1]
+ %45 = load float* @gDeactivationTime, align 4 ; [#uses=2]
+ %46 = fcmp oeq float %45, 0.000000e+00 ; [#uses=1]
+ %or.cond.i = or i1 %toBool2.i, %46 ; [#uses=1]
+ br i1 %or.cond.i, label %bb15, label %bb5.i32
+
+bb5.i32: ; preds = %bb1.i
+ switch i32 %42, label %_ZN11btRigidBody13wantsSleepingEv.exit [
+ i32 2, label %bb2
+ i32 3, label %bb2
+ ]
+
+_ZN11btRigidBody13wantsSleepingEv.exit: ; preds = %bb5.i32
+ %47 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 16 ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = fcmp ogt float %48, %45 ; [#uses=1]
+ br i1 %49, label %bb2, label %bb15
+
+bb2: ; preds = %_ZN11btRigidBody13wantsSleepingEv.exit, %bb5.i32, %bb5.i32
+ %50 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0, i32 12 ; [#uses=1]
+ %51 = load i32* %50, align 4 ; [#uses=1]
+ %52 = and i32 %51, 3 ; [#uses=1]
+ %53 = icmp eq i32 %52, 0 ; [#uses=1]
+ br i1 %53, label %bb6, label %bb4
+
+bb4: ; preds = %bb2
+ %54 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObject18setActivationStateEi(%struct.btCollisionObject* %54, i32 2)
+ to label %bb17 unwind label %lpad
+
+bb6: ; preds = %bb2
+ %55 = icmp eq i32 %42, 1 ; [#uses=1]
+ br i1 %55, label %bb8, label %bb10
+
+bb8: ; preds = %bb6
+ %56 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObject18setActivationStateEi(%struct.btCollisionObject* %56, i32 3)
+ to label %bb8.bb10_crit_edge unwind label %lpad
+
+bb8.bb10_crit_edge: ; preds = %bb8
+ %.pre45 = load i32* %5, align 4 ; [#uses=1]
+ br label %bb10
+
+bb10: ; preds = %bb8.bb10_crit_edge, %bb6
+ %57 = phi i32 [ %.pre45, %bb8.bb10_crit_edge ], [ %42, %bb6 ] ; [#uses=1]
+ %58 = icmp eq i32 %57, 2 ; [#uses=1]
+ br i1 %58, label %bb12, label %bb17
+
+bb12: ; preds = %bb10
+ %59 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %60 = bitcast float* %59 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %60, i8 0, i64 32, i32 4, i1 false)
+ br label %bb17
+
+bb15: ; preds = %_ZN11btRigidBody13wantsSleepingEv.exit, %bb1.i
+ %61 = getelementptr inbounds %struct.btRigidBody* %3, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObject18setActivationStateEi(%struct.btCollisionObject* %61, i32 1)
+ to label %bb17 unwind label %lpad
+
+bb17: ; preds = %bb15, %bb12, %bb10, %bb4, %invcont, %bb
+ %62 = add nsw i32 %63, 1 ; [#uses=1]
+ br label %bb18
+
+bb18: ; preds = %bb17, %entry
+ %63 = phi i32 [ 0, %entry ], [ %62, %bb17 ] ; [#uses=3]
+ %64 = load i32* %0, align 4 ; [#uses=1]
+ %65 = icmp sgt i32 %64, %63 ; [#uses=1]
+ br i1 %65, label %bb, label %bb23
+
+invcont21: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb23: ; preds = %bb18
+ tail call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %bb15, %bb8, %bb4, %bb11.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select25 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont21 unwind label %lpad26
+
+lpad26: ; preds = %lpad
+ %eh_ptr27 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select29 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr27, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld28internalSingleStepSimulationEf(%struct.btDiscreteDynamicsWorld* %this, float %timeStep) align 2 {
+entry:
+ tail call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([29 x i8]* @.str723, i32 0, i32 0))
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load void (%struct.btDynamicsWorld*, float)** %0, align 4 ; [#uses=2]
+ %2 = icmp eq void (%struct.btDynamicsWorld*, float)* %1, null ; [#uses=1]
+ br i1 %2, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void %1(%struct.btDynamicsWorld* %3, float %timeStep)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %bb, %entry
+ %4 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=6]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 33 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct.btDiscreteDynamicsWorld*, float)* ; [#uses=1]
+ invoke void %8(%struct.btDiscreteDynamicsWorld* %this, float %timeStep)
+ to label %invcont2 unwind label %lpad
+
+invcont2: ; preds = %bb1
+ %9 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 3, i32 0 ; [#uses=1]
+ store float %timeStep, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ %11 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 4 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ %15 = bitcast i32 (...)* %13 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %16 = invoke %struct.btActionInterface* %15(%struct.btCollisionWorld* %14)
+ to label %invcont3 unwind label %lpad ; [#uses=1]
+
+invcont3: ; preds = %invcont2
+ %17 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 3, i32 5 ; [#uses=1]
+ store %struct.btActionInterface* %16, %struct.btActionInterface** %17, align 4
+ %18 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds i32 (...)** %18, i32 10 ; [#uses=1]
+ %20 = load i32 (...)** %19, align 4 ; [#uses=1]
+ %21 = bitcast i32 (...)* %20 to void (%struct.btCollisionWorld*)* ; [#uses=1]
+ invoke void %21(%struct.btCollisionWorld* %14)
+ to label %invcont4 unwind label %lpad
+
+invcont4: ; preds = %invcont3
+ %22 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds i32 (...)** %22, i32 35 ; [#uses=1]
+ %24 = load i32 (...)** %23, align 4 ; [#uses=1]
+ %25 = bitcast i32 (...)* %24 to void (%struct.btDiscreteDynamicsWorld*)* ; [#uses=1]
+ invoke void %25(%struct.btDiscreteDynamicsWorld* %this)
+ to label %invcont5 unwind label %lpad
+
+invcont5: ; preds = %invcont4
+ %26 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float %timeStep, float* %26, align 4
+ %27 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds i32 (...)** %27, i32 36 ; [#uses=1]
+ %29 = load i32 (...)** %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %31 = bitcast i32 (...)* %29 to void (%struct.btDiscreteDynamicsWorld*, %struct.btContactSolverInfo*)* ; [#uses=1]
+ invoke void %31(%struct.btDiscreteDynamicsWorld* %this, %struct.btContactSolverInfo* %30)
+ to label %invcont6 unwind label %lpad
+
+invcont6: ; preds = %invcont5
+ %32 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32 (...)** %32, i32 34 ; [#uses=1]
+ %34 = load i32 (...)** %33, align 4 ; [#uses=1]
+ %35 = bitcast i32 (...)* %34 to void (%struct.btDiscreteDynamicsWorld*, float)* ; [#uses=1]
+ invoke void %35(%struct.btDiscreteDynamicsWorld* %this, float %timeStep)
+ to label %invcont7 unwind label %lpad
+
+invcont7: ; preds = %invcont6
+ invoke void @_ZN23btDiscreteDynamicsWorld13updateActionsEf(%struct.btDiscreteDynamicsWorld* %this, float %timeStep)
+ to label %invcont8 unwind label %lpad
+
+invcont8: ; preds = %invcont7
+ invoke void @_ZN23btDiscreteDynamicsWorld21updateActivationStateEf(%struct.btDiscreteDynamicsWorld* %this, float %timeStep)
+ to label %invcont9 unwind label %lpad
+
+invcont9: ; preds = %invcont8
+ %36 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %37 = load void (%struct.btDynamicsWorld*, float)** %36, align 4 ; [#uses=2]
+ %38 = icmp eq void (%struct.btDynamicsWorld*, float)* %37, null ; [#uses=1]
+ br i1 %38, label %bb15, label %bb10
+
+bb10: ; preds = %invcont9
+ %39 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void %37(%struct.btDynamicsWorld* %39, float %timeStep)
+ to label %bb15 unwind label %lpad
+
+invcont13: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb15: ; preds = %bb10, %invcont9
+ tail call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %bb10, %invcont8, %invcont7, %invcont6, %invcont5, %invcont4, %invcont3, %invcont2, %bb1, %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select17 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont13 unwind label %lpad18
+
+lpad18: ; preds = %lpad
+ %eh_ptr19 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select21 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr19, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBodyss(%struct.btDiscreteDynamicsWorld* %this, %struct.btRigidBody* %body, i16 signext %group, i16 signext %mask) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0, i32 12 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = and i32 %1, 3 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb, label %bb19
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 22 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = and i32 %5, 1 ; [#uses=1]
+ %toBool13 = icmp eq i32 %6, 0 ; [#uses=1]
+ br i1 %toBool13, label %bb18, label %bb19
+
+bb18: ; preds = %bb
+ %7 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5 ; [#uses=1]
+ tail call void @_ZN11btRigidBody10setGravityERK9btVector3(%struct.btRigidBody* %body, %struct.btQuadWord* %7)
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb, %entry
+ %8 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0, i32 9 ; [#uses=1]
+ %9 = load %struct.btCollisionShape** %8, align 4 ; [#uses=1]
+ %10 = icmp eq %struct.btCollisionShape* %9, null ; [#uses=1]
+ br i1 %10, label %return, label %bb21
+
+bb21: ; preds = %bb19
+ %11 = load i32* %0, align 4 ; [#uses=1]
+ %12 = and i32 %11, 1 ; [#uses=1]
+ %toBool22not = icmp eq i32 %12, 0 ; [#uses=1]
+ br i1 %toBool22not, label %bb25, label %bb26
+
+bb25: ; preds = %bb21
+ %13 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=5]
+ %14 = load i32* %13, align 4 ; [#uses=6]
+ %15 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 2 ; [#uses=2]
+ %16 = load i32* %15, align 4 ; [#uses=2]
+ %17 = icmp eq i32 %16, %14 ; [#uses=1]
+ br i1 %17, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb25
+ %18 = icmp eq i32 %14, 0 ; [#uses=1]
+ %19 = shl i32 %14, 1 ; [#uses=1]
+ %iftmp.526.0.i.i = select i1 %18, i32 1, i32 %19 ; [#uses=4]
+ %20 = icmp slt i32 %16, %iftmp.526.0.i.i ; [#uses=1]
+ br i1 %20, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %21 = icmp eq i32 %iftmp.526.0.i.i, 0 ; [#uses=1]
+ br i1 %21, label %_ZN20btAlignedObjectArrayIP11btRigidBodyE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %22 = shl i32 %iftmp.526.0.i.i, 2 ; [#uses=1]
+ %23 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %22, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %23 to %struct.btRigidBody** ; [#uses=1]
+ %.pre.i = load i32* %13, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP11btRigidBodyE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIP11btRigidBodyE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %24 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %14, %bb.i.i ] ; [#uses=2]
+ %25 = phi %struct.btRigidBody** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %26 = icmp sgt i32 %24, 0 ; [#uses=1]
+ br i1 %26, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayIP11btRigidBodyE4copyEiiPS1_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIP11btRigidBodyE8allocateEi.exit.i.i
+ %27 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btRigidBody** %25, i32 %indvar.i.i.i ; [#uses=2]
+ %28 = icmp eq %struct.btRigidBody** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %28, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %29 = load %struct.btRigidBody*** %27, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btRigidBody** %29, i32 %indvar.i.i.i ; [#uses=1]
+ %30 = load %struct.btRigidBody** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btRigidBody* %30, %struct.btRigidBody** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %24 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP11btRigidBodyE4copyEiiPS1_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIP11btRigidBodyE4copyEiiPS1_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP11btRigidBodyE8allocateEi.exit.i.i
+ %31 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %32 = load %struct.btRigidBody*** %31, align 4 ; [#uses=2]
+ %33 = icmp eq %struct.btRigidBody** %32, null ; [#uses=1]
+ br i1 %33, label %_ZN20btAlignedObjectArrayIP11btRigidBodyE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP11btRigidBodyE4copyEiiPS1_.exit.i.i
+ %34 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %35 = load i8* %34, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %35, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %36 = bitcast %struct.btRigidBody** %32 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %36)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btRigidBody** null, %struct.btRigidBody*** %31, align 4
+ br label %_ZN20btAlignedObjectArrayIP11btRigidBodyE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIP11btRigidBodyE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIP11btRigidBodyE4copyEiiPS1_.exit.i.i
+ %37 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %37, align 4
+ store %struct.btRigidBody** %25, %struct.btRigidBody*** %31, align 4
+ store i32 %iftmp.526.0.i.i, i32* %15, align 4
+ %.pre5.i = load i32* %13, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIP11btRigidBodyE10deallocateEv.exit.i.i, %bb.i, %bb25
+ %38 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIP11btRigidBodyE10deallocateEv.exit.i.i ], [ %14, %bb25 ], [ %14, %bb.i ] ; [#uses=2]
+ %39 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %40 = load %struct.btRigidBody*** %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btRigidBody** %40, i32 %38 ; [#uses=2]
+ %42 = icmp eq %struct.btRigidBody** %41, null ; [#uses=1]
+ br i1 %42, label %_ZN20btAlignedObjectArrayIP11btRigidBodyE9push_backERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %struct.btRigidBody* %body, %struct.btRigidBody** %41, align 4
+ %.pre6.i = load i32* %13, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP11btRigidBodyE9push_backERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP11btRigidBodyE9push_backERKS1_.exit: ; preds = %bb2.i, %bb1.i
+ %43 = phi i32 [ %38, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %44 = add nsw i32 %43, 1 ; [#uses=1]
+ store i32 %44, i32* %13, align 4
+ %.pre = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0 ; [#uses=1]
+ br label %bb27
+
+bb26: ; preds = %bb21
+ %45 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN17btCollisionObject18setActivationStateEi(%struct.btCollisionObject* %45, i32 2)
+ br label %bb27
+
+bb27: ; preds = %bb26, %_ZN20btAlignedObjectArrayIP11btRigidBodyE9push_backERKS1_.exit
+ %.pre-phi = phi %struct.btCollisionObject* [ %45, %bb26 ], [ %.pre, %_ZN20btAlignedObjectArrayIP11btRigidBodyE9push_backERKS1_.exit ] ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %47 = load i32 (...)*** %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds i32 (...)** %47, i32 8 ; [#uses=1]
+ %49 = load i32 (...)** %48, align 4 ; [#uses=1]
+ %50 = bitcast i32 (...)* %49 to void (%struct.btDiscreteDynamicsWorld*, %struct.btCollisionObject*, i16, i16)* ; [#uses=1]
+ tail call void %50(%struct.btDiscreteDynamicsWorld* %this, %struct.btCollisionObject* %.pre-phi, i16 signext %group, i16 signext %mask)
+ ret void
+
+return: ; preds = %bb19
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld12addRigidBodyEP11btRigidBody(%struct.btDiscreteDynamicsWorld* %this, %struct.btRigidBody* %body) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0, i32 12 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = and i32 %1, 3 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb, label %bb19
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 22 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = and i32 %5, 1 ; [#uses=1]
+ %toBool13 = icmp eq i32 %6, 0 ; [#uses=1]
+ br i1 %toBool13, label %bb18, label %bb19
+
+bb18: ; preds = %bb
+ %7 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5 ; [#uses=1]
+ tail call void @_ZN11btRigidBody10setGravityERK9btVector3(%struct.btRigidBody* %body, %struct.btQuadWord* %7)
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb, %entry
+ %8 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0, i32 9 ; [#uses=1]
+ %9 = load %struct.btCollisionShape** %8, align 4 ; [#uses=1]
+ %10 = icmp eq %struct.btCollisionShape* %9, null ; [#uses=1]
+ br i1 %10, label %return, label %bb21
+
+bb21: ; preds = %bb19
+ %11 = load i32* %0, align 4 ; [#uses=1]
+ %12 = and i32 %11, 1 ; [#uses=1]
+ %toBool22not = icmp eq i32 %12, 0 ; [#uses=1]
+ br i1 %toBool22not, label %bb25, label %bb26
+
+bb25: ; preds = %bb21
+ %13 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=5]
+ %14 = load i32* %13, align 4 ; [#uses=6]
+ %15 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 2 ; [#uses=2]
+ %16 = load i32* %15, align 4 ; [#uses=2]
+ %17 = icmp eq i32 %16, %14 ; [#uses=1]
+ br i1 %17, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb25
+ %18 = icmp eq i32 %14, 0 ; [#uses=1]
+ %19 = shl i32 %14, 1 ; [#uses=1]
+ %iftmp.526.0.i.i = select i1 %18, i32 1, i32 %19 ; [#uses=4]
+ %20 = icmp slt i32 %16, %iftmp.526.0.i.i ; [#uses=1]
+ br i1 %20, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %21 = icmp eq i32 %iftmp.526.0.i.i, 0 ; [#uses=1]
+ br i1 %21, label %_ZN20btAlignedObjectArrayIP11btRigidBodyE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %22 = shl i32 %iftmp.526.0.i.i, 2 ; [#uses=1]
+ %23 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %22, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %23 to %struct.btRigidBody** ; [#uses=1]
+ %.pre.i = load i32* %13, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP11btRigidBodyE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIP11btRigidBodyE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %24 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %14, %bb.i.i ] ; [#uses=2]
+ %25 = phi %struct.btRigidBody** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %26 = icmp sgt i32 %24, 0 ; [#uses=1]
+ br i1 %26, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayIP11btRigidBodyE4copyEiiPS1_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIP11btRigidBodyE8allocateEi.exit.i.i
+ %27 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btRigidBody** %25, i32 %indvar.i.i.i ; [#uses=2]
+ %28 = icmp eq %struct.btRigidBody** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %28, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %29 = load %struct.btRigidBody*** %27, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btRigidBody** %29, i32 %indvar.i.i.i ; [#uses=1]
+ %30 = load %struct.btRigidBody** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btRigidBody* %30, %struct.btRigidBody** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %24 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP11btRigidBodyE4copyEiiPS1_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIP11btRigidBodyE4copyEiiPS1_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP11btRigidBodyE8allocateEi.exit.i.i
+ %31 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %32 = load %struct.btRigidBody*** %31, align 4 ; [#uses=2]
+ %33 = icmp eq %struct.btRigidBody** %32, null ; [#uses=1]
+ br i1 %33, label %_ZN20btAlignedObjectArrayIP11btRigidBodyE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP11btRigidBodyE4copyEiiPS1_.exit.i.i
+ %34 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %35 = load i8* %34, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %35, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %36 = bitcast %struct.btRigidBody** %32 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %36)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btRigidBody** null, %struct.btRigidBody*** %31, align 4
+ br label %_ZN20btAlignedObjectArrayIP11btRigidBodyE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIP11btRigidBodyE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIP11btRigidBodyE4copyEiiPS1_.exit.i.i
+ %37 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %37, align 4
+ store %struct.btRigidBody** %25, %struct.btRigidBody*** %31, align 4
+ store i32 %iftmp.526.0.i.i, i32* %15, align 4
+ %.pre5.i = load i32* %13, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIP11btRigidBodyE10deallocateEv.exit.i.i, %bb.i, %bb25
+ %38 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIP11btRigidBodyE10deallocateEv.exit.i.i ], [ %14, %bb25 ], [ %14, %bb.i ] ; [#uses=2]
+ %39 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %40 = load %struct.btRigidBody*** %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btRigidBody** %40, i32 %38 ; [#uses=2]
+ %42 = icmp eq %struct.btRigidBody** %41, null ; [#uses=1]
+ br i1 %42, label %_ZN20btAlignedObjectArrayIP11btRigidBodyE9push_backERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %struct.btRigidBody* %body, %struct.btRigidBody** %41, align 4
+ %.pre6.i = load i32* %13, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP11btRigidBodyE9push_backERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP11btRigidBodyE9push_backERKS1_.exit: ; preds = %bb2.i, %bb1.i
+ %43 = phi i32 [ %38, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %44 = add nsw i32 %43, 1 ; [#uses=1]
+ store i32 %44, i32* %13, align 4
+ br label %bb27
+
+bb26: ; preds = %bb21
+ %45 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btCollisionObject18setActivationStateEi(%struct.btCollisionObject* %45, i32 2)
+ br label %bb27
+
+bb27: ; preds = %bb26, %_ZN20btAlignedObjectArrayIP11btRigidBodyE9push_backERKS1_.exit
+ %46 = load i32* %0, align 4 ; [#uses=2]
+ %47 = and i32 %46, 1 ; [#uses=1]
+ %toBool31not = icmp eq i32 %47, 0 ; [#uses=1]
+ %.lobit.i = and i32 %46, 2 ; [#uses=1]
+ %toBool39not = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ %or.cond = and i1 %toBool31not, %toBool39not ; [#uses=1]
+ %iftmp.357.0 = select i1 %or.cond, i1 false, i1 true ; [#uses=2]
+ %iftmp.360.0 = select i1 %iftmp.357.0, i16 2, i16 1 ; [#uses=1]
+ %iftmp.361.0 = select i1 %iftmp.357.0, i16 -3, i16 -1 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %49 = load i32 (...)*** %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds i32 (...)** %49, i32 8 ; [#uses=1]
+ %51 = load i32 (...)** %50, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0 ; [#uses=1]
+ %53 = bitcast i32 (...)* %51 to void (%struct.btDiscreteDynamicsWorld*, %struct.btCollisionObject*, i16, i16)* ; [#uses=1]
+ tail call void %53(%struct.btDiscreteDynamicsWorld* %this, %struct.btCollisionObject* %52, i16 signext %iftmp.360.0, i16 signext %iftmp.361.0)
+ ret void
+
+return: ; preds = %bb19
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld10setGravityERK9btVector3(%struct.btDiscreteDynamicsWorld* nocapture %this, %struct.btQuadWord* %gravity) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %gravity, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %gravity, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %gravity, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %gravity, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=2]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = icmp sgt i32 %13, 0 ; [#uses=1]
+ br i1 %14, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %15 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb17, %bb.nph
+ %i.021 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb17 ] ; [#uses=2]
+ %tmp = add i32 %i.021, 1 ; [#uses=2]
+ %16 = load %struct.btRigidBody*** %15, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btRigidBody** %16, i32 %i.021 ; [#uses=1]
+ %17 = load %struct.btRigidBody** %scevgep, align 4 ; [#uses=3]
+ %18 = getelementptr inbounds %struct.btRigidBody* %17, i32 0, i32 0, i32 15 ; [#uses=1]
+ %19 = load i32* %18, align 4 ; [#uses=1]
+ switch i32 %19, label %bb4 [
+ i32 2, label %bb17
+ i32 5, label %bb17
+ ]
+
+bb4: ; preds = %bb
+ %20 = getelementptr inbounds %struct.btRigidBody* %17, i32 0, i32 22 ; [#uses=1]
+ %21 = load i32* %20, align 4 ; [#uses=1]
+ %22 = and i32 %21, 1 ; [#uses=1]
+ %toBool11 = icmp eq i32 %22, 0 ; [#uses=1]
+ br i1 %toBool11, label %bb16, label %bb17
+
+bb16: ; preds = %bb4
+ tail call void @_ZN11btRigidBody10setGravityERK9btVector3(%struct.btRigidBody* %17, %struct.btQuadWord* %gravity)
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb4, %bb, %bb
+ %23 = load i32* %12, align 4 ; [#uses=1]
+ %24 = icmp sgt i32 %23, %tmp ; [#uses=1]
+ br i1 %24, label %bb, label %return
+
+return: ; preds = %bb17, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld15removeRigidBodyEP11btRigidBody(%struct.btDiscreteDynamicsWorld* %this, %struct.btRigidBody* %body) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=4]
+ %2 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ br label %bb3.i.i
+
+bb.i.i: ; preds = %bb3.i.i
+ %3 = load %struct.btRigidBody*** %2, align 4 ; [#uses=1]
+ %scevgep.i.i = getelementptr %struct.btRigidBody** %3, i32 %7 ; [#uses=1]
+ %4 = load %struct.btRigidBody** %scevgep.i.i, align 4 ; [#uses=1]
+ %5 = icmp eq %struct.btRigidBody* %4, %body ; [#uses=1]
+ br i1 %5, label %_ZNK20btAlignedObjectArrayIP11btRigidBodyE16findLinearSearchERKS1_.exit.i, label %bb2.i.i
+
+bb2.i.i: ; preds = %bb.i.i
+ %6 = add nsw i32 %7, 1 ; [#uses=1]
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb2.i.i, %entry
+ %7 = phi i32 [ 0, %entry ], [ %6, %bb2.i.i ] ; [#uses=4]
+ %8 = icmp sgt i32 %1, %7 ; [#uses=1]
+ br i1 %8, label %bb.i.i, label %_ZNK20btAlignedObjectArrayIP11btRigidBodyE16findLinearSearchERKS1_.exit.i
+
+_ZNK20btAlignedObjectArrayIP11btRigidBodyE16findLinearSearchERKS1_.exit.i: ; preds = %bb3.i.i, %bb.i.i
+ %index.0.i.i = phi i32 [ %1, %bb3.i.i ], [ %7, %bb.i.i ] ; [#uses=2]
+ %9 = icmp sgt i32 %1, %index.0.i.i ; [#uses=1]
+ br i1 %9, label %bb.i, label %_ZN20btAlignedObjectArrayIP11btRigidBodyE6removeERKS1_.exit
+
+bb.i: ; preds = %_ZNK20btAlignedObjectArrayIP11btRigidBodyE16findLinearSearchERKS1_.exit.i
+ %10 = add nsw i32 %1, -1 ; [#uses=2]
+ %11 = load %struct.btRigidBody*** %2, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btRigidBody** %11, i32 %index.0.i.i ; [#uses=2]
+ %13 = load %struct.btRigidBody** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btRigidBody** %11, i32 %10 ; [#uses=1]
+ %15 = load %struct.btRigidBody** %14, align 4 ; [#uses=1]
+ store %struct.btRigidBody* %15, %struct.btRigidBody** %12, align 4
+ %16 = load %struct.btRigidBody*** %2, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btRigidBody** %16, i32 %10 ; [#uses=1]
+ store %struct.btRigidBody* %13, %struct.btRigidBody** %17, align 4
+ %18 = load i32* %0, align 4 ; [#uses=1]
+ %19 = add nsw i32 %18, -1 ; [#uses=1]
+ store i32 %19, i32* %0, align 4
+ br label %_ZN20btAlignedObjectArrayIP11btRigidBodyE6removeERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP11btRigidBodyE6removeERKS1_.exit: ; preds = %bb.i, %_ZNK20btAlignedObjectArrayIP11btRigidBodyE16findLinearSearchERKS1_.exit.i
+ %20 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject(%struct.btCollisionWorld* %21, %struct.btCollisionObject* %20)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld21removeCollisionObjectEP17btCollisionObject(%struct.btDiscreteDynamicsWorld* %this, %struct.btCollisionObject* %collisionObject) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 19 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %1, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ %2 = icmp eq %struct.btCollisionObject* %collisionObject, null ; [#uses=1]
+ %or.cond = or i1 %toBool.i, %2 ; [#uses=1]
+ br i1 %or.cond, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %3 = bitcast %struct.btCollisionObject* %collisionObject to %struct.btRigidBody* ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 21 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct.btDiscreteDynamicsWorld*, %struct.btRigidBody*)* ; [#uses=1]
+ tail call void %8(%struct.btDiscreteDynamicsWorld* %this, %struct.btRigidBody* %3)
+ ret void
+
+bb1: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject(%struct.btCollisionWorld* %9, %struct.btCollisionObject* %collisionObject)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld18addCollisionObjectEP17btCollisionObjectss(%struct.btDiscreteDynamicsWorld* %this, %struct.btCollisionObject* %collisionObject, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorld18addCollisionObjectEP17btCollisionObjectss(%struct.btCollisionWorld* %0, %struct.btCollisionObject* %collisionObject, i16 signext %collisionFilterGroup, i16 signext %collisionFilterMask)
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZN23btDiscreteDynamicsWorld14stepSimulationEfif(%struct.btDiscreteDynamicsWorld* %this, float %timeStep, i32 %maxSubSteps, float %fixedTimeStep) align 2 {
+entry:
+ tail call void @_ZN15CProfileManager5ResetEv()
+ tail call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([15 x i8]* @.str824, i32 0, i32 0))
+ %0 = icmp eq i32 %maxSubSteps, 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 6 ; [#uses=4]
+ br i1 %0, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %2 = load float* %1, align 4 ; [#uses=1]
+ %3 = fadd float %2, %timeStep ; [#uses=4]
+ store float %3, float* %1, align 4
+ %4 = fcmp ult float %3, %fixedTimeStep ; [#uses=1]
+ br i1 %4, label %bb5, label %bb1
+
+bb1: ; preds = %bb
+ %5 = fdiv float %3, %fixedTimeStep ; [#uses=1]
+ %6 = fptosi float %5 to i32 ; [#uses=2]
+ %7 = sitofp i32 %6 to float ; [#uses=1]
+ %8 = fmul float %7, %fixedTimeStep ; [#uses=1]
+ %9 = fsub float %3, %8 ; [#uses=1]
+ store float %9, float* %1, align 4
+ br label %bb5
+
+bb2: ; preds = %entry
+ store float %timeStep, float* %1, align 4
+ %10 = tail call float @fabsf(float %timeStep) nounwind readnone ; [#uses=1]
+ %11 = fcmp olt float %10, 0x3E80000000000000 ; [#uses=1]
+ br i1 %11, label %bb5, label %bb4
+
+bb4: ; preds = %bb2
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb2, %bb1, %bb
+ %numSimulationSubSteps.0 = phi i32 [ %6, %bb1 ], [ 0, %bb ], [ 1, %bb4 ], [ 0, %bb2 ] ; [#uses=4]
+ %fixedTimeStep_addr.0 = phi float [ %fixedTimeStep, %bb1 ], [ %fixedTimeStep, %bb ], [ %timeStep, %bb4 ], [ %timeStep, %bb2 ] ; [#uses=2]
+ %maxSubSteps_addr.0 = phi i32 [ %maxSubSteps, %bb1 ], [ %maxSubSteps, %bb ], [ 1, %bb4 ], [ 0, %bb2 ] ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=8]
+ %13 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds i32 (...)** %13, i32 4 ; [#uses=1]
+ %15 = load i32 (...)** %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ %17 = bitcast i32 (...)* %15 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %18 = invoke %struct.btActionInterface* %17(%struct.btCollisionWorld* %16)
+ to label %invcont unwind label %lpad ; [#uses=1]
+
+invcont: ; preds = %bb5
+ %19 = icmp eq %struct.btActionInterface* %18, null ; [#uses=1]
+ br i1 %19, label %bb10, label %bb7
+
+bb7: ; preds = %invcont
+ %20 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds i32 (...)** %20, i32 4 ; [#uses=1]
+ %22 = load i32 (...)** %21, align 4 ; [#uses=1]
+ %23 = bitcast i32 (...)* %22 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %24 = invoke %struct.btActionInterface* %23(%struct.btCollisionWorld* %16)
+ to label %invcont8 unwind label %lpad ; [#uses=2]
+
+invcont8: ; preds = %bb7
+ %25 = getelementptr inbounds %struct.btActionInterface* %24, i32 0, i32 0 ; [#uses=1]
+ %26 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds i32 (...)** %26, i32 12 ; [#uses=1]
+ %28 = load i32 (...)** %27, align 4 ; [#uses=1]
+ %29 = bitcast i32 (...)* %28 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %30 = invoke i32 %29(%struct.btActionInterface* %24)
+ to label %invcont9 unwind label %lpad ; [#uses=1]
+
+invcont9: ; preds = %invcont8
+ %31 = lshr i32 %30, 4 ; [#uses=1]
+ %.lobit = and i32 %31, 1 ; [#uses=1]
+ %32 = trunc i32 %.lobit to i8 ; [#uses=1]
+ store i8 %32, i8* @gDisableDeactivation, align 1
+ br label %bb10
+
+bb10: ; preds = %invcont9, %invcont
+ %33 = icmp eq i32 %numSimulationSubSteps.0, 0 ; [#uses=1]
+ br i1 %33, label %bb21, label %bb11
+
+bb11: ; preds = %bb10
+ %34 = icmp sgt i32 %numSimulationSubSteps.0, %maxSubSteps_addr.0 ; [#uses=1]
+ %iftmp.341.0 = select i1 %34, i32 %maxSubSteps_addr.0, i32 %numSimulationSubSteps.0 ; [#uses=2]
+ %35 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds i32 (...)** %35, i32 38 ; [#uses=1]
+ %37 = load i32 (...)** %36, align 4 ; [#uses=1]
+ %38 = sitofp i32 %iftmp.341.0 to float ; [#uses=1]
+ %39 = fmul float %38, %fixedTimeStep_addr.0 ; [#uses=1]
+ %40 = bitcast i32 (...)* %37 to void (%struct.btDiscreteDynamicsWorld*, float)* ; [#uses=1]
+ invoke void %40(%struct.btDiscreteDynamicsWorld* %this, float %39)
+ to label %invcont15 unwind label %lpad
+
+invcont15: ; preds = %bb11
+ %41 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds i32 (...)** %41, i32 40 ; [#uses=1]
+ %43 = load i32 (...)** %42, align 4 ; [#uses=1]
+ %44 = bitcast i32 (...)* %43 to void (%struct.btDiscreteDynamicsWorld*)* ; [#uses=1]
+ invoke void %44(%struct.btDiscreteDynamicsWorld* %this)
+ to label %bb20 unwind label %lpad
+
+bb17: ; preds = %bb20
+ %45 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds i32 (...)** %45, i32 37 ; [#uses=1]
+ %47 = load i32 (...)** %46, align 4 ; [#uses=1]
+ %48 = bitcast i32 (...)* %47 to void (%struct.btDiscreteDynamicsWorld*, float)* ; [#uses=1]
+ invoke void %48(%struct.btDiscreteDynamicsWorld* %this, float %fixedTimeStep_addr.0)
+ to label %invcont18 unwind label %lpad
+
+invcont18: ; preds = %bb17
+ %49 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds i32 (...)** %49, i32 19 ; [#uses=1]
+ %51 = load i32 (...)** %50, align 4 ; [#uses=1]
+ %52 = bitcast i32 (...)* %51 to void (%struct.btDiscreteDynamicsWorld*)* ; [#uses=1]
+ invoke void %52(%struct.btDiscreteDynamicsWorld* %this)
+ to label %invcont19 unwind label %lpad
+
+invcont19: ; preds = %invcont18
+ %53 = add nsw i32 %54, 1 ; [#uses=1]
+ br label %bb20
+
+bb20: ; preds = %invcont19, %invcont15
+ %54 = phi i32 [ %53, %invcont19 ], [ 0, %invcont15 ] ; [#uses=2]
+ %55 = icmp slt i32 %54, %iftmp.341.0 ; [#uses=1]
+ br i1 %55, label %bb17, label %bb23
+
+bb21: ; preds = %bb10
+ %56 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %57 = getelementptr inbounds i32 (...)** %56, i32 19 ; [#uses=1]
+ %58 = load i32 (...)** %57, align 4 ; [#uses=1]
+ %59 = bitcast i32 (...)* %58 to void (%struct.btDiscreteDynamicsWorld*)* ; [#uses=1]
+ invoke void %59(%struct.btDiscreteDynamicsWorld* %this)
+ to label %bb23 unwind label %lpad
+
+bb23: ; preds = %bb21, %bb20
+ %60 = load i32 (...)*** %12, align 4 ; [#uses=1]
+ %61 = getelementptr inbounds i32 (...)** %60, i32 28 ; [#uses=1]
+ %62 = load i32 (...)** %61, align 4 ; [#uses=1]
+ %63 = bitcast i32 (...)* %62 to void (%struct.btDiscreteDynamicsWorld*)* ; [#uses=1]
+ invoke void %63(%struct.btDiscreteDynamicsWorld* %this)
+ to label %invcont24 unwind label %lpad
+
+invcont24: ; preds = %bb23
+ invoke void @_ZN15CProfileManager23Increment_Frame_CounterEv()
+ to label %invcont25 unwind label %lpad
+
+invcont25: ; preds = %invcont24
+ tail call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret i32 %numSimulationSubSteps.0
+
+invcont27: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+lpad: ; preds = %invcont24, %bb23, %bb21, %invcont18, %bb17, %invcont15, %bb11, %invcont8, %bb7, %bb5
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select31 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont27 unwind label %lpad32
+
+lpad32: ; preds = %lpad
+ %eh_ptr33 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select35 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr33, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN23btDiscreteDynamicsWorld28synchronizeSingleMotionStateEP11btRigidBody(%struct.btDiscreteDynamicsWorld* nocapture %this, %struct.btRigidBody* %body) align 2 {
+entry:
+ %interpolatedTransform = alloca %struct.btTransform, align 8 ; [#uses=2]
+ %0 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 20 ; [#uses=2]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.btActionInterface* %1, null ; [#uses=1]
+ br i1 %2, label %bb8, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0, i32 12 ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %5 = and i32 %4, 3 ; [#uses=1]
+ %6 = icmp eq i32 %5, 0 ; [#uses=1]
+ br i1 %6, label %bb11, label %bb8
+
+bb8: ; preds = %bb, %entry
+ ret void
+
+bb11: ; preds = %bb
+ %7 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 6 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0, i32 21 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fmul float %8, %10 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0, i32 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(%struct.btTransform* %14, %struct.btQuadWord* %13, %struct.btQuadWord* %12, float %11, %struct.btTransform* %interpolatedTransform)
+ %15 = load %struct.btActionInterface** %0, align 4 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btActionInterface* %15, i32 0, i32 0 ; [#uses=1]
+ %17 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 3 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = bitcast i32 (...)* %19 to void (%struct.btActionInterface*, %struct.btTransform*)* ; [#uses=1]
+ call void %20(%struct.btActionInterface* %15, %struct.btTransform* %interpolatedTransform)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld23synchronizeMotionStatesEv(%struct.btDiscreteDynamicsWorld* nocapture %this) align 2 {
+entry:
+ %interpolatedTransform.i29 = alloca %struct.btTransform, align 8 ; [#uses=2]
+ %interpolatedTransform.i = alloca %struct.btTransform, align 8 ; [#uses=2]
+ call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([24 x i8]* @.str927, i32 0, i32 0))
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 9 ; [#uses=1]
+ %1 = load i8* %0, align 2 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %bb14.preheader, label %bb4.preheader
+
+bb14.preheader: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 6 ; [#uses=1]
+ br label %bb14
+
+bb4.preheader: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 6 ; [#uses=1]
+ br label %bb4
+
+bb1: ; preds = %bb4
+ %8 = load %struct.btCollisionObject*** %6, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %8, i32 %35 ; [#uses=1]
+ %9 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=8]
+ %10 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 19 ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %11, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ %12 = icmp eq %struct.btCollisionObject* %9, null ; [#uses=1]
+ %or.cond = or i1 %toBool.i, %12 ; [#uses=1]
+ br i1 %or.cond, label %bb3, label %bb2
+
+bb2: ; preds = %bb1
+ %13 = getelementptr inbounds %struct.btCollisionObject* %9, i32 1, i32 15 ; [#uses=1]
+ %14 = bitcast i32* %13 to %struct.btActionInterface** ; [#uses=2]
+ %15 = load %struct.btActionInterface** %14, align 4 ; [#uses=1]
+ %16 = icmp eq %struct.btActionInterface* %15, null ; [#uses=1]
+ br i1 %16, label %bb3, label %bb.i28
+
+bb.i28: ; preds = %bb2
+ %17 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 12 ; [#uses=1]
+ %18 = load i32* %17, align 4 ; [#uses=1]
+ %19 = and i32 %18, 3 ; [#uses=1]
+ %20 = icmp eq i32 %19, 0 ; [#uses=1]
+ br i1 %20, label %bb11.i, label %bb3
+
+bb11.i: ; preds = %bb.i28
+ %21 = load float* %7, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 21 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fmul float %21, %23 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btCollisionObject* %9, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(%struct.btTransform* %27, %struct.btQuadWord* %26, %struct.btQuadWord* %25, float %24, %struct.btTransform* %interpolatedTransform.i)
+ %28 = load %struct.btActionInterface** %14, align 4 ; [#uses=2]
+ %29 = getelementptr inbounds %struct.btActionInterface* %28, i32 0, i32 0 ; [#uses=1]
+ %30 = load i32 (...)*** %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds i32 (...)** %30, i32 3 ; [#uses=1]
+ %32 = load i32 (...)** %31, align 4 ; [#uses=1]
+ %33 = bitcast i32 (...)* %32 to void (%struct.btActionInterface*, %struct.btTransform*)* ; [#uses=1]
+ invoke void %33(%struct.btActionInterface* %28, %struct.btTransform* %interpolatedTransform.i)
+ to label %bb3 unwind label %lpad
+
+bb3: ; preds = %bb11.i, %bb.i28, %bb2, %bb1
+ %34 = add nsw i32 %35, 1 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb4.preheader
+ %35 = phi i32 [ %34, %bb3 ], [ 0, %bb4.preheader ] ; [#uses=3]
+ %36 = load i32* %5, align 4 ; [#uses=1]
+ %37 = icmp sgt i32 %36, %35 ; [#uses=1]
+ br i1 %37, label %bb1, label %bb19
+
+bb8: ; preds = %bb14
+ %38 = load %struct.btRigidBody*** %3, align 4 ; [#uses=1]
+ %scevgep39 = getelementptr %struct.btRigidBody** %38, i32 %63 ; [#uses=1]
+ %39 = load %struct.btRigidBody** %scevgep39, align 4 ; [#uses=7]
+ %40 = getelementptr inbounds %struct.btRigidBody* %39, i32 0, i32 0, i32 15 ; [#uses=1]
+ %41 = load i32* %40, align 4 ; [#uses=1]
+ switch i32 %41, label %bb11 [
+ i32 2, label %bb13
+ i32 5, label %bb13
+ ]
+
+bb11: ; preds = %bb8
+ %42 = getelementptr inbounds %struct.btRigidBody* %39, i32 0, i32 20 ; [#uses=2]
+ %43 = load %struct.btActionInterface** %42, align 4 ; [#uses=1]
+ %44 = icmp eq %struct.btActionInterface* %43, null ; [#uses=1]
+ br i1 %44, label %bb13, label %bb.i30
+
+bb.i30: ; preds = %bb11
+ %45 = getelementptr inbounds %struct.btRigidBody* %39, i32 0, i32 0, i32 12 ; [#uses=1]
+ %46 = load i32* %45, align 4 ; [#uses=1]
+ %47 = and i32 %46, 3 ; [#uses=1]
+ %48 = icmp eq i32 %47, 0 ; [#uses=1]
+ br i1 %48, label %bb11.i32, label %bb13
+
+bb11.i32: ; preds = %bb.i30
+ %49 = load float* %4, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btRigidBody* %39, i32 0, i32 0, i32 21 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fmul float %49, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btRigidBody* %39, i32 0, i32 0, i32 4 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btRigidBody* %39, i32 0, i32 0, i32 3 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btRigidBody* %39, i32 0, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(%struct.btTransform* %55, %struct.btQuadWord* %54, %struct.btQuadWord* %53, float %52, %struct.btTransform* %interpolatedTransform.i29)
+ %56 = load %struct.btActionInterface** %42, align 4 ; [#uses=2]
+ %57 = getelementptr inbounds %struct.btActionInterface* %56, i32 0, i32 0 ; [#uses=1]
+ %58 = load i32 (...)*** %57, align 4 ; [#uses=1]
+ %59 = getelementptr inbounds i32 (...)** %58, i32 3 ; [#uses=1]
+ %60 = load i32 (...)** %59, align 4 ; [#uses=1]
+ %61 = bitcast i32 (...)* %60 to void (%struct.btActionInterface*, %struct.btTransform*)* ; [#uses=1]
+ invoke void %61(%struct.btActionInterface* %56, %struct.btTransform* %interpolatedTransform.i29)
+ to label %bb13 unwind label %lpad
+
+bb13: ; preds = %bb11.i32, %bb.i30, %bb11, %bb8, %bb8
+ %62 = add nsw i32 %63, 1 ; [#uses=1]
+ br label %bb14
+
+bb14: ; preds = %bb13, %bb14.preheader
+ %63 = phi i32 [ %62, %bb13 ], [ 0, %bb14.preheader ] ; [#uses=3]
+ %64 = load i32* %2, align 4 ; [#uses=1]
+ %65 = icmp sgt i32 %64, %63 ; [#uses=1]
+ br i1 %65, label %bb8, label %bb19
+
+invcont17: ; preds = %lpad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb19: ; preds = %bb14, %bb4
+ call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %bb11.i32, %bb11.i
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select21 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont17 unwind label %lpad22
+
+lpad22: ; preds = %lpad
+ %eh_ptr23 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select25 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr23, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld12applyGravityEv(%struct.btDiscreteDynamicsWorld* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb2, %bb.nph
+ %i.06 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb2 ] ; [#uses=2]
+ %tmp = add i32 %i.06, 1 ; [#uses=2]
+ %4 = load %struct.btRigidBody*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btRigidBody** %4, i32 %i.06 ; [#uses=1]
+ %5 = load %struct.btRigidBody** %scevgep, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btRigidBody* %5, i32 0, i32 0, i32 15 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ switch i32 %7, label %bb1 [
+ i32 2, label %bb2
+ i32 5, label %bb2
+ ]
+
+bb1: ; preds = %bb
+ tail call void @_ZN11btRigidBody12applyGravityEv(%struct.btRigidBody* %5)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb, %bb
+ %8 = load i32* %0, align 4 ; [#uses=1]
+ %9 = icmp sgt i32 %8, %tmp ; [#uses=1]
+ br i1 %9, label %bb, label %return
+
+return: ; preds = %bb2, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld14debugDrawWorldEv(%struct.btDiscreteDynamicsWorld* %this) align 2 {
+entry:
+ tail call void @_ZN15CProfileManager13Start_ProfileEPKc(i8* getelementptr inbounds ([15 x i8]* @.str1028, i32 0, i32 0))
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=7]
+ invoke void @_ZN16btCollisionWorld14debugDrawWorldEv(%struct.btCollisionWorld* %0)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=8]
+ %2 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds i32 (...)** %2, i32 4 ; [#uses=1]
+ %4 = load i32 (...)** %3, align 4 ; [#uses=1]
+ %5 = bitcast i32 (...)* %4 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %6 = invoke %struct.btActionInterface* %5(%struct.btCollisionWorld* %0)
+ to label %invcont1 unwind label %lpad ; [#uses=1]
+
+invcont1: ; preds = %invcont
+ %7 = icmp eq %struct.btActionInterface* %6, null ; [#uses=1]
+ br i1 %7, label %bb13, label %bb
+
+bb: ; preds = %invcont1
+ %8 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds i32 (...)** %8, i32 4 ; [#uses=1]
+ %10 = load i32 (...)** %9, align 4 ; [#uses=1]
+ %11 = bitcast i32 (...)* %10 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %12 = invoke %struct.btActionInterface* %11(%struct.btCollisionWorld* %0)
+ to label %invcont2 unwind label %lpad ; [#uses=2]
+
+invcont2: ; preds = %bb
+ %13 = getelementptr inbounds %struct.btActionInterface* %12, i32 0, i32 0 ; [#uses=1]
+ %14 = load i32 (...)*** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds i32 (...)** %14, i32 12 ; [#uses=1]
+ %16 = load i32 (...)** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %16 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %18 = invoke i32 %17(%struct.btActionInterface* %12)
+ to label %invcont3 unwind label %lpad ; [#uses=1]
+
+invcont3: ; preds = %invcont2
+ %19 = and i32 %18, 6144 ; [#uses=1]
+ %20 = icmp eq i32 %19, 0 ; [#uses=1]
+ br i1 %20, label %bb13, label %bb7.critedge
+
+bb7.critedge: ; preds = %invcont3
+ %21 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds i32 (...)** %21, i32 24 ; [#uses=1]
+ %23 = load i32 (...)** %22, align 4 ; [#uses=1]
+ %24 = bitcast i32 (...)* %23 to i32 (%struct.btDiscreteDynamicsWorld*)* ; [#uses=1]
+ %25 = invoke i32 %24(%struct.btDiscreteDynamicsWorld* %this)
+ to label %bb12.preheader unwind label %lpad ; [#uses=1]
+
+bb12.preheader: ; preds = %bb7.critedge
+ %tmp51 = add i32 %25, -1 ; [#uses=1]
+ br label %bb12
+
+bb9: ; preds = %bb12
+ %26 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds i32 (...)** %26, i32 25 ; [#uses=1]
+ %28 = load i32 (...)** %27, align 4 ; [#uses=1]
+ %29 = bitcast i32 (...)* %28 to %struct.btTypedConstraint* (%struct.btDiscreteDynamicsWorld*, i32)* ; [#uses=1]
+ %30 = invoke %struct.btTypedConstraint* %29(%struct.btDiscreteDynamicsWorld* %this, i32 %i.0)
+ to label %invcont10 unwind label %lpad ; [#uses=1]
+
+invcont10: ; preds = %bb9
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ invoke void @_ZN23btDiscreteDynamicsWorld19debugDrawConstraintEP17btTypedConstraint(%struct.btDiscreteDynamicsWorld* %this, %struct.btTypedConstraint* %30)
+ to label %bb12 unwind label %lpad
+
+bb12: ; preds = %invcont10, %bb12.preheader
+ %indvar = phi i32 [ 0, %bb12.preheader ], [ %indvar.next, %invcont10 ] ; [#uses=2]
+ %i.0 = sub i32 %tmp51, %indvar ; [#uses=2]
+ %31 = icmp sgt i32 %i.0, -1 ; [#uses=1]
+ br i1 %31, label %bb9, label %bb13
+
+bb13: ; preds = %bb12, %invcont3, %invcont1
+ %32 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32 (...)** %32, i32 4 ; [#uses=1]
+ %34 = load i32 (...)** %33, align 4 ; [#uses=1]
+ %35 = bitcast i32 (...)* %34 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %36 = invoke %struct.btActionInterface* %35(%struct.btCollisionWorld* %0)
+ to label %invcont14 unwind label %lpad ; [#uses=1]
+
+invcont14: ; preds = %bb13
+ %37 = icmp eq %struct.btActionInterface* %36, null ; [#uses=1]
+ br i1 %37, label %bb40, label %bb15
+
+bb15: ; preds = %invcont14
+ %38 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds i32 (...)** %38, i32 4 ; [#uses=1]
+ %40 = load i32 (...)** %39, align 4 ; [#uses=1]
+ %41 = bitcast i32 (...)* %40 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %42 = invoke %struct.btActionInterface* %41(%struct.btCollisionWorld* %0)
+ to label %invcont16 unwind label %lpad ; [#uses=2]
+
+invcont16: ; preds = %bb15
+ %43 = getelementptr inbounds %struct.btActionInterface* %42, i32 0, i32 0 ; [#uses=1]
+ %44 = load i32 (...)*** %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds i32 (...)** %44, i32 12 ; [#uses=1]
+ %46 = load i32 (...)** %45, align 4 ; [#uses=1]
+ %47 = bitcast i32 (...)* %46 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %48 = invoke i32 %47(%struct.btActionInterface* %42)
+ to label %invcont17 unwind label %lpad ; [#uses=1]
+
+invcont17: ; preds = %invcont16
+ %49 = and i32 %48, 3 ; [#uses=1]
+ %50 = icmp eq i32 %49, 0 ; [#uses=1]
+ br i1 %50, label %bb40, label %bb22
+
+bb22: ; preds = %invcont17
+ %51 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds i32 (...)** %51, i32 4 ; [#uses=1]
+ %53 = load i32 (...)** %52, align 4 ; [#uses=1]
+ %54 = bitcast i32 (...)* %53 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %55 = invoke %struct.btActionInterface* %54(%struct.btCollisionWorld* %0)
+ to label %invcont24 unwind label %lpad ; [#uses=1]
+
+invcont24: ; preds = %bb22
+ %56 = icmp eq %struct.btActionInterface* %55, null ; [#uses=1]
+ br i1 %56, label %bb40, label %bb25
+
+bb25: ; preds = %invcont24
+ %57 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %58 = getelementptr inbounds i32 (...)** %57, i32 4 ; [#uses=1]
+ %59 = load i32 (...)** %58, align 4 ; [#uses=1]
+ %60 = bitcast i32 (...)* %59 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %61 = invoke %struct.btActionInterface* %60(%struct.btCollisionWorld* %0)
+ to label %invcont26 unwind label %lpad ; [#uses=2]
+
+invcont26: ; preds = %bb25
+ %62 = getelementptr inbounds %struct.btActionInterface* %61, i32 0, i32 0 ; [#uses=1]
+ %63 = load i32 (...)*** %62, align 4 ; [#uses=1]
+ %64 = getelementptr inbounds i32 (...)** %63, i32 12 ; [#uses=1]
+ %65 = load i32 (...)** %64, align 4 ; [#uses=1]
+ %66 = bitcast i32 (...)* %65 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %67 = invoke i32 %66(%struct.btActionInterface* %61)
+ to label %invcont27 unwind label %lpad ; [#uses=1]
+
+invcont27: ; preds = %invcont26
+ %68 = icmp eq i32 %67, 0 ; [#uses=1]
+ br i1 %68, label %bb40, label %bb35.preheader
+
+bb35.preheader: ; preds = %invcont27
+ %69 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 3 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 6 ; [#uses=1]
+ br label %bb35
+
+bb33: ; preds = %bb35
+ %72 = load %struct.btActionInterface*** %70, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btActionInterface** %72, i32 %81 ; [#uses=1]
+ %73 = load %struct.btActionInterface** %scevgep, align 4 ; [#uses=2]
+ %74 = getelementptr inbounds %struct.btActionInterface* %73, i32 0, i32 0 ; [#uses=1]
+ %75 = load i32 (...)*** %74, align 4 ; [#uses=1]
+ %76 = getelementptr inbounds i32 (...)** %75, i32 3 ; [#uses=1]
+ %77 = load i32 (...)** %76, align 4 ; [#uses=1]
+ %78 = load %struct.btActionInterface** %71, align 4 ; [#uses=1]
+ %79 = bitcast i32 (...)* %77 to void (%struct.btActionInterface*, %struct.btActionInterface*)* ; [#uses=1]
+ invoke void %79(%struct.btActionInterface* %73, %struct.btActionInterface* %78)
+ to label %invcont34 unwind label %lpad
+
+invcont34: ; preds = %bb33
+ %80 = add nsw i32 %81, 1 ; [#uses=1]
+ br label %bb35
+
+bb35: ; preds = %invcont34, %bb35.preheader
+ %81 = phi i32 [ %80, %invcont34 ], [ 0, %bb35.preheader ] ; [#uses=3]
+ %82 = load i32* %69, align 4 ; [#uses=1]
+ %83 = icmp sgt i32 %82, %81 ; [#uses=1]
+ br i1 %83, label %bb33, label %bb40
+
+invcont38: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb40: ; preds = %bb35, %invcont27, %invcont24, %invcont17, %invcont14
+ tail call void @_ZN15CProfileManager12Stop_ProfileEv()
+ ret void
+
+lpad: ; preds = %bb33, %invcont26, %bb25, %bb22, %invcont16, %bb15, %bb13, %invcont10, %bb9, %bb7.critedge, %invcont2, %bb, %invcont, %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select42 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN15CProfileManager12Stop_ProfileEv()
+ to label %invcont38 unwind label %lpad43
+
+lpad43: ; preds = %lpad
+ %eh_ptr44 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select46 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr44, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorld18saveKinematicStateEf(%struct.btDiscreteDynamicsWorld* nocapture %this, float %timeStep) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb8, %bb.nph
+ %i.013 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb8 ] ; [#uses=2]
+ %tmp = add i32 %i.013, 1 ; [#uses=2]
+ %4 = load %struct.btCollisionObject*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %4, i32 %i.013 ; [#uses=1]
+ %5 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=5]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 19 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %.lobit.i12 = and i32 %7, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i12, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb8, label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+
+_ZN11btRigidBody6upcastEP17btCollisionObject.exit: ; preds = %bb
+ %8 = bitcast %struct.btCollisionObject* %5 to %struct.btRigidBody* ; [#uses=1]
+ %9 = icmp eq %struct.btCollisionObject* %5, null ; [#uses=1]
+ br i1 %9, label %bb8, label %bb1
+
+bb1: ; preds = %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+ %10 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 15 ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ %12 = icmp eq i32 %11, 2 ; [#uses=1]
+ br i1 %12, label %bb8, label %bb5
+
+bb5: ; preds = %bb1
+ %13 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 12 ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %14, 2 ; [#uses=1]
+ %toBool6 = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ br i1 %toBool6, label %bb8, label %bb7
+
+bb7: ; preds = %bb5
+ tail call void @_ZN11btRigidBody18saveKinematicStateEf(%struct.btRigidBody* %8, float %timeStep)
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb5, %bb1, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit, %bb
+ %15 = load i32* %0, align 4 ; [#uses=1]
+ %16 = icmp sgt i32 %15, %tmp ; [#uses=1]
+ br i1 %16, label %bb, label %return
+
+return: ; preds = %bb8, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btDynamicsWorldD1Ev(%struct.btDynamicsWorld* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV15btDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btDynamicsWorld* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %1)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN15btDynamicsWorldD0Ev(%struct.btDynamicsWorld* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV15btDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btDynamicsWorld* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %1)
+ %2 = bitcast %struct.btDynamicsWorld* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorldD0Ev(%struct.btDiscreteDynamicsWorld* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([45 x i32 (...)*]* @_ZTV23btDiscreteDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 7 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 2 ; [#uses=2]
+ %4 = load %struct.btSimulationIslandManager** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btSimulationIslandManager* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct.btSimulationIslandManager*)* ; [#uses=1]
+ invoke void %8(%struct.btSimulationIslandManager* %4)
+ to label %invcont unwind label %lpad52
+
+invcont: ; preds = %bb
+ %9 = load %struct.btSimulationIslandManager** %3, align 4 ; [#uses=1]
+ %10 = bitcast %struct.btSimulationIslandManager* %9 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %10)
+ to label %bb2 unwind label %lpad52
+
+bb2: ; preds = %invcont, %entry
+ %11 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 8 ; [#uses=1]
+ %12 = load i8* %11, align 1 ; [#uses=1]
+ %toBool3 = icmp eq i8 %12, 0 ; [#uses=1]
+ br i1 %toBool3, label %bb10, label %bb4
+
+bb4: ; preds = %bb2
+ %13 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 1 ; [#uses=2]
+ %14 = load %struct.btActionInterface** %13, align 4 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btActionInterface* %14, i32 0, i32 0 ; [#uses=1]
+ %16 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = bitcast i32 (...)* %17 to void (%struct.btActionInterface*)* ; [#uses=1]
+ invoke void %18(%struct.btActionInterface* %14)
+ to label %invcont5 unwind label %lpad52
+
+invcont5: ; preds = %bb4
+ %19 = load %struct.btActionInterface** %13, align 4 ; [#uses=1]
+ %20 = bitcast %struct.btActionInterface* %19 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %20)
+ to label %bb10 unwind label %lpad52
+
+bb10: ; preds = %invcont5, %bb2
+ %21 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ %22 = load %struct.btActionInterface*** %21, align 4 ; [#uses=2]
+ %23 = icmp eq %struct.btActionInterface** %22, null ; [#uses=1]
+ br i1 %23, label %bb17, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb10
+ %24 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %26 = bitcast %struct.btActionInterface** %22 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %26)
+ to label %bb2.i.i.i unwind label %lpad48
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %21, align 4
+ br label %bb17
+
+bb17: ; preds = %bb2.i.i.i, %bb10
+ %27 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %27, align 4
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %21, align 4
+ %28 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %31 = load %struct.btRigidBody*** %30, align 4 ; [#uses=2]
+ %32 = icmp eq %struct.btRigidBody** %31, null ; [#uses=1]
+ br i1 %32, label %bb26, label %bb.i.i.i81
+
+bb.i.i.i81: ; preds = %bb17
+ %33 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %34 = load i8* %33, align 4 ; [#uses=1]
+ %toBool.i.i.i80 = icmp eq i8 %34, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i80, label %bb2.i.i.i83, label %bb1.i.i.i82
+
+bb1.i.i.i82: ; preds = %bb.i.i.i81
+ %35 = bitcast %struct.btRigidBody** %31 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %35)
+ to label %bb2.i.i.i83 unwind label %lpad44
+
+bb2.i.i.i83: ; preds = %bb1.i.i.i82, %bb.i.i.i81
+ store %struct.btRigidBody** null, %struct.btRigidBody*** %30, align 4
+ br label %bb26
+
+bb26: ; preds = %bb2.i.i.i83, %bb17
+ %36 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %36, align 4
+ store %struct.btRigidBody** null, %struct.btRigidBody*** %30, align 4
+ %37 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %37, align 4
+ %38 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ %39 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %40 = load %struct.btTypedConstraint*** %39, align 4 ; [#uses=2]
+ %41 = icmp eq %struct.btTypedConstraint** %40, null ; [#uses=1]
+ br i1 %41, label %bb35, label %bb.i.i.i86
+
+bb.i.i.i86: ; preds = %bb26
+ %42 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %43 = load i8* %42, align 4 ; [#uses=1]
+ %toBool.i.i.i85 = icmp eq i8 %43, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i85, label %bb2.i.i.i88, label %bb1.i.i.i87
+
+bb1.i.i.i87: ; preds = %bb.i.i.i86
+ %44 = bitcast %struct.btTypedConstraint** %40 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %44)
+ to label %bb2.i.i.i88 unwind label %lpad
+
+bb2.i.i.i88: ; preds = %bb1.i.i.i87, %bb.i.i.i86
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %39, align 4
+ br label %bb35
+
+invcont33: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.2)
+ unreachable
+
+bb35: ; preds = %bb2.i.i.i88, %bb26
+ %45 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %45, align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %39, align 4
+ %46 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %46, align 4
+ %47 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %47, align 4
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV15btDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %48 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %48)
+ %49 = bitcast %struct.btDiscreteDynamicsWorld* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %49) nounwind
+ ret void
+
+lpad: ; preds = %bb1.i.i.i87
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select43 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad44: ; preds = %bb1.i.i.i82
+ %eh_ptr45 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select47 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr45, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad72
+
+lpad48: ; preds = %bb1.i.i.i
+ %eh_ptr49 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select51 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr49, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad73
+
+lpad52: ; preds = %invcont5, %bb4, %invcont, %bb
+ %eh_ptr53 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select55 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr53, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %50 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ %51 = load %struct.btActionInterface*** %50, align 4 ; [#uses=2]
+ %52 = icmp eq %struct.btActionInterface** %51, null ; [#uses=1]
+ br i1 %52, label %_ZN20btAlignedObjectArrayIP17btActionInterfaceED1Ev.exit95, label %bb.i.i.i91
+
+bb.i.i.i91: ; preds = %lpad52
+ %53 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ %54 = load i8* %53, align 4 ; [#uses=1]
+ %toBool.i.i.i90 = icmp eq i8 %54, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i90, label %bb2.i.i.i93, label %bb1.i.i.i92
+
+bb1.i.i.i92: ; preds = %bb.i.i.i91
+ %55 = bitcast %struct.btActionInterface** %51 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %55)
+ to label %bb2.i.i.i93 unwind label %lpad56
+
+bb2.i.i.i93: ; preds = %bb1.i.i.i92, %bb.i.i.i91
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %50, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btActionInterfaceED1Ev.exit95
+
+_ZN20btAlignedObjectArrayIP17btActionInterfaceED1Ev.exit95: ; preds = %bb2.i.i.i93, %lpad52
+ %56 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %56, align 4
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %50, align 4
+ %57 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %57, align 4
+ %58 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %58, align 4
+ br label %ppad73
+
+lpad56: ; preds = %bb1.i.i.i92
+ %eh_ptr57 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select59 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr57, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad60: ; preds = %bb1.i.i.i105
+ %eh_ptr61 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select63 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr61, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad64: ; preds = %bb1.i.i.i99
+ %eh_ptr65 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select67 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr65, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad68: ; preds = %ppad
+ %eh_ptr69 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select71 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr69, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit102, %lpad
+ %eh_exception.2 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.1, %_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit102 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV15btDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %59 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %59)
+ to label %invcont33 unwind label %lpad68
+
+ppad72: ; preds = %_ZN20btAlignedObjectArrayIP11btRigidBodyED1Ev.exit108, %lpad44
+ %eh_exception.1 = phi i8* [ %eh_ptr45, %lpad44 ], [ %eh_exception.0, %_ZN20btAlignedObjectArrayIP11btRigidBodyED1Ev.exit108 ] ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %61 = load %struct.btTypedConstraint*** %60, align 4 ; [#uses=2]
+ %62 = icmp eq %struct.btTypedConstraint** %61, null ; [#uses=1]
+ br i1 %62, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit102, label %bb.i.i.i98
+
+bb.i.i.i98: ; preds = %ppad72
+ %63 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %64 = load i8* %63, align 4 ; [#uses=1]
+ %toBool.i.i.i97 = icmp eq i8 %64, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i97, label %bb2.i.i.i100, label %bb1.i.i.i99
+
+bb1.i.i.i99: ; preds = %bb.i.i.i98
+ %65 = bitcast %struct.btTypedConstraint** %61 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %65)
+ to label %bb2.i.i.i100 unwind label %lpad64
+
+bb2.i.i.i100: ; preds = %bb1.i.i.i99, %bb.i.i.i98
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %60, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit102
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit102: ; preds = %bb2.i.i.i100, %ppad72
+ %66 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %66, align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %60, align 4
+ %67 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %67, align 4
+ %68 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %68, align 4
+ br label %ppad
+
+ppad73: ; preds = %_ZN20btAlignedObjectArrayIP17btActionInterfaceED1Ev.exit95, %lpad48
+ %eh_exception.0 = phi i8* [ %eh_ptr49, %lpad48 ], [ %eh_ptr53, %_ZN20btAlignedObjectArrayIP17btActionInterfaceED1Ev.exit95 ] ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %70 = load %struct.btRigidBody*** %69, align 4 ; [#uses=2]
+ %71 = icmp eq %struct.btRigidBody** %70, null ; [#uses=1]
+ br i1 %71, label %_ZN20btAlignedObjectArrayIP11btRigidBodyED1Ev.exit108, label %bb.i.i.i104
+
+bb.i.i.i104: ; preds = %ppad73
+ %72 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %73 = load i8* %72, align 4 ; [#uses=1]
+ %toBool.i.i.i103 = icmp eq i8 %73, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i103, label %bb2.i.i.i106, label %bb1.i.i.i105
+
+bb1.i.i.i105: ; preds = %bb.i.i.i104
+ %74 = bitcast %struct.btRigidBody** %70 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %74)
+ to label %bb2.i.i.i106 unwind label %lpad60
+
+bb2.i.i.i106: ; preds = %bb1.i.i.i105, %bb.i.i.i104
+ store %struct.btRigidBody** null, %struct.btRigidBody*** %69, align 4
+ br label %_ZN20btAlignedObjectArrayIP11btRigidBodyED1Ev.exit108
+
+_ZN20btAlignedObjectArrayIP11btRigidBodyED1Ev.exit108: ; preds = %bb2.i.i.i106, %ppad73
+ %75 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %75, align 4
+ store %struct.btRigidBody** null, %struct.btRigidBody*** %69, align 4
+ %76 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %76, align 4
+ %77 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %77, align 4
+ br label %ppad72
+}
+
+; [#uses=1]
+define void @_ZN23btDiscreteDynamicsWorldD1Ev(%struct.btDiscreteDynamicsWorld* %this) align 2 {
+entry:
+ tail call void @_ZN23btDiscreteDynamicsWorldD2Ev(%struct.btDiscreteDynamicsWorld* %this)
+ ret void
+}
+
+; [#uses=4]
+define void @_ZN23btDiscreteDynamicsWorldD2Ev(%struct.btDiscreteDynamicsWorld* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([45 x i32 (...)*]* @_ZTV23btDiscreteDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 7 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 2 ; [#uses=2]
+ %4 = load %struct.btSimulationIslandManager** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btSimulationIslandManager* %4, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32 (...)*** %5, align 4 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct.btSimulationIslandManager*)* ; [#uses=1]
+ invoke void %8(%struct.btSimulationIslandManager* %4)
+ to label %invcont unwind label %lpad52
+
+invcont: ; preds = %bb
+ %9 = load %struct.btSimulationIslandManager** %3, align 4 ; [#uses=1]
+ %10 = bitcast %struct.btSimulationIslandManager* %9 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %10)
+ to label %bb2 unwind label %lpad52
+
+bb2: ; preds = %invcont, %entry
+ %11 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 8 ; [#uses=1]
+ %12 = load i8* %11, align 1 ; [#uses=1]
+ %toBool3 = icmp eq i8 %12, 0 ; [#uses=1]
+ br i1 %toBool3, label %bb10, label %bb4
+
+bb4: ; preds = %bb2
+ %13 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 1 ; [#uses=2]
+ %14 = load %struct.btActionInterface** %13, align 4 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btActionInterface* %14, i32 0, i32 0 ; [#uses=1]
+ %16 = load i32 (...)*** %15, align 4 ; [#uses=1]
+ %17 = load i32 (...)** %16, align 4 ; [#uses=1]
+ %18 = bitcast i32 (...)* %17 to void (%struct.btActionInterface*)* ; [#uses=1]
+ invoke void %18(%struct.btActionInterface* %14)
+ to label %invcont5 unwind label %lpad52
+
+invcont5: ; preds = %bb4
+ %19 = load %struct.btActionInterface** %13, align 4 ; [#uses=1]
+ %20 = bitcast %struct.btActionInterface* %19 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %20)
+ to label %bb10 unwind label %lpad52
+
+bb10: ; preds = %invcont5, %bb2
+ %21 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ %22 = load %struct.btActionInterface*** %21, align 4 ; [#uses=2]
+ %23 = icmp eq %struct.btActionInterface** %22, null ; [#uses=1]
+ br i1 %23, label %bb17, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %bb10
+ %24 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ %25 = load i8* %24, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %25, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %26 = bitcast %struct.btActionInterface** %22 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %26)
+ to label %bb2.i.i.i unwind label %lpad48
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %21, align 4
+ br label %bb17
+
+bb17: ; preds = %bb2.i.i.i, %bb10
+ %27 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %27, align 4
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %21, align 4
+ %28 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %28, align 4
+ %29 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %29, align 4
+ %30 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %31 = load %struct.btRigidBody*** %30, align 4 ; [#uses=2]
+ %32 = icmp eq %struct.btRigidBody** %31, null ; [#uses=1]
+ br i1 %32, label %bb26, label %bb.i.i.i81
+
+bb.i.i.i81: ; preds = %bb17
+ %33 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %34 = load i8* %33, align 4 ; [#uses=1]
+ %toBool.i.i.i80 = icmp eq i8 %34, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i80, label %bb2.i.i.i83, label %bb1.i.i.i82
+
+bb1.i.i.i82: ; preds = %bb.i.i.i81
+ %35 = bitcast %struct.btRigidBody** %31 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %35)
+ to label %bb2.i.i.i83 unwind label %lpad44
+
+bb2.i.i.i83: ; preds = %bb1.i.i.i82, %bb.i.i.i81
+ store %struct.btRigidBody** null, %struct.btRigidBody*** %30, align 4
+ br label %bb26
+
+bb26: ; preds = %bb2.i.i.i83, %bb17
+ %36 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %36, align 4
+ store %struct.btRigidBody** null, %struct.btRigidBody*** %30, align 4
+ %37 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %37, align 4
+ %38 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ %39 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %40 = load %struct.btTypedConstraint*** %39, align 4 ; [#uses=2]
+ %41 = icmp eq %struct.btTypedConstraint** %40, null ; [#uses=1]
+ br i1 %41, label %bb35, label %bb.i.i.i86
+
+bb.i.i.i86: ; preds = %bb26
+ %42 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %43 = load i8* %42, align 4 ; [#uses=1]
+ %toBool.i.i.i85 = icmp eq i8 %43, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i85, label %bb2.i.i.i88, label %bb1.i.i.i87
+
+bb1.i.i.i87: ; preds = %bb.i.i.i86
+ %44 = bitcast %struct.btTypedConstraint** %40 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %44)
+ to label %bb2.i.i.i88 unwind label %lpad
+
+bb2.i.i.i88: ; preds = %bb1.i.i.i87, %bb.i.i.i86
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %39, align 4
+ br label %bb35
+
+invcont33: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.2)
+ unreachable
+
+bb35: ; preds = %bb2.i.i.i88, %bb26
+ %45 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %45, align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %39, align 4
+ %46 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %46, align 4
+ %47 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %47, align 4
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV15btDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %48 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %48)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i87
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select43 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad44: ; preds = %bb1.i.i.i82
+ %eh_ptr45 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select47 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr45, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad72
+
+lpad48: ; preds = %bb1.i.i.i
+ %eh_ptr49 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select51 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr49, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad73
+
+lpad52: ; preds = %invcont5, %bb4, %invcont, %bb
+ %eh_ptr53 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select55 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr53, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %49 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 3 ; [#uses=3]
+ %50 = load %struct.btActionInterface*** %49, align 4 ; [#uses=2]
+ %51 = icmp eq %struct.btActionInterface** %50, null ; [#uses=1]
+ br i1 %51, label %_ZN20btAlignedObjectArrayIP17btActionInterfaceED1Ev.exit95, label %bb.i.i.i91
+
+bb.i.i.i91: ; preds = %lpad52
+ %52 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ %53 = load i8* %52, align 4 ; [#uses=1]
+ %toBool.i.i.i90 = icmp eq i8 %53, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i90, label %bb2.i.i.i93, label %bb1.i.i.i92
+
+bb1.i.i.i92: ; preds = %bb.i.i.i91
+ %54 = bitcast %struct.btActionInterface** %50 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %54)
+ to label %bb2.i.i.i93 unwind label %lpad56
+
+bb2.i.i.i93: ; preds = %bb1.i.i.i92, %bb.i.i.i91
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %49, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btActionInterfaceED1Ev.exit95
+
+_ZN20btAlignedObjectArrayIP17btActionInterfaceED1Ev.exit95: ; preds = %bb2.i.i.i93, %lpad52
+ %55 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 4 ; [#uses=1]
+ store i8 1, i8* %55, align 4
+ store %struct.btActionInterface** null, %struct.btActionInterface*** %49, align 4
+ %56 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 1 ; [#uses=1]
+ store i32 0, i32* %56, align 4
+ %57 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 10, i32 2 ; [#uses=1]
+ store i32 0, i32* %57, align 4
+ br label %ppad73
+
+lpad56: ; preds = %bb1.i.i.i92
+ %eh_ptr57 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select59 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr57, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad60: ; preds = %bb1.i.i.i105
+ %eh_ptr61 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select63 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr61, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad64: ; preds = %bb1.i.i.i99
+ %eh_ptr65 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select67 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr65, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad68: ; preds = %ppad
+ %eh_ptr69 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select71 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr69, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit102, %lpad
+ %eh_exception.2 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.1, %_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit102 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV15btDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %58 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %58)
+ to label %invcont33 unwind label %lpad68
+
+ppad72: ; preds = %_ZN20btAlignedObjectArrayIP11btRigidBodyED1Ev.exit108, %lpad44
+ %eh_exception.1 = phi i8* [ %eh_ptr45, %lpad44 ], [ %eh_exception.0, %_ZN20btAlignedObjectArrayIP11btRigidBodyED1Ev.exit108 ] ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %60 = load %struct.btTypedConstraint*** %59, align 4 ; [#uses=2]
+ %61 = icmp eq %struct.btTypedConstraint** %60, null ; [#uses=1]
+ br i1 %61, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit102, label %bb.i.i.i98
+
+bb.i.i.i98: ; preds = %ppad72
+ %62 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %63 = load i8* %62, align 4 ; [#uses=1]
+ %toBool.i.i.i97 = icmp eq i8 %63, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i97, label %bb2.i.i.i100, label %bb1.i.i.i99
+
+bb1.i.i.i99: ; preds = %bb.i.i.i98
+ %64 = bitcast %struct.btTypedConstraint** %60 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %64)
+ to label %bb2.i.i.i100 unwind label %lpad64
+
+bb2.i.i.i100: ; preds = %bb1.i.i.i99, %bb.i.i.i98
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %59, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit102
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintED1Ev.exit102: ; preds = %bb2.i.i.i100, %ppad72
+ %65 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %65, align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %59, align 4
+ %66 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %66, align 4
+ %67 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %67, align 4
+ br label %ppad
+
+ppad73: ; preds = %_ZN20btAlignedObjectArrayIP17btActionInterfaceED1Ev.exit95, %lpad48
+ %eh_exception.0 = phi i8* [ %eh_ptr49, %lpad48 ], [ %eh_ptr53, %_ZN20btAlignedObjectArrayIP17btActionInterfaceED1Ev.exit95 ] ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %69 = load %struct.btRigidBody*** %68, align 4 ; [#uses=2]
+ %70 = icmp eq %struct.btRigidBody** %69, null ; [#uses=1]
+ br i1 %70, label %_ZN20btAlignedObjectArrayIP11btRigidBodyED1Ev.exit108, label %bb.i.i.i104
+
+bb.i.i.i104: ; preds = %ppad73
+ %71 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %72 = load i8* %71, align 4 ; [#uses=1]
+ %toBool.i.i.i103 = icmp eq i8 %72, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i103, label %bb2.i.i.i106, label %bb1.i.i.i105
+
+bb1.i.i.i105: ; preds = %bb.i.i.i104
+ %73 = bitcast %struct.btRigidBody** %69 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %73)
+ to label %bb2.i.i.i106 unwind label %lpad60
+
+bb2.i.i.i106: ; preds = %bb1.i.i.i105, %bb.i.i.i104
+ store %struct.btRigidBody** null, %struct.btRigidBody*** %68, align 4
+ br label %_ZN20btAlignedObjectArrayIP11btRigidBodyED1Ev.exit108
+
+_ZN20btAlignedObjectArrayIP11btRigidBodyED1Ev.exit108: ; preds = %bb2.i.i.i106, %ppad73
+ %74 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %74, align 4
+ store %struct.btRigidBody** null, %struct.btRigidBody*** %68, align 4
+ %75 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %75, align 4
+ %76 = getelementptr inbounds %struct.btDiscreteDynamicsWorld* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %76, align 4
+ br label %ppad72
+}
+
+; [#uses=2]
+define void @_ZN23btDiscreteDynamicsWorldC1EP12btDispatcherP21btBroadphaseInterfaceP18btConstraintSolverP24btCollisionConfiguration(%struct.btDiscreteDynamicsWorld* %this, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %constraintSolver, %struct.btActionInterface* %collisionConfiguration) align 2 {
+entry:
+ tail call void @_ZN23btDiscreteDynamicsWorldC2EP12btDispatcherP21btBroadphaseInterfaceP18btConstraintSolverP24btCollisionConfiguration(%struct.btDiscreteDynamicsWorld* %this, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %constraintSolver, %struct.btActionInterface* %collisionConfiguration)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZNK11btRigidBody7getAabbER9btVector3S1_(%struct.btRigidBody* %this, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 9 ; [#uses=1]
+ %1 = load %struct.btCollisionShape** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btCollisionShape* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 2 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = bitcast i32 (...)* %5 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ tail call void %7(%struct.btCollisionShape* %1, %struct.btTransform* %6, %struct.btQuadWord* %aabbMin, %struct.btQuadWord* %aabbMax)
+ ret void
+}
+
+; [#uses=5]
+define void @_ZN11btRigidBody10setGravityERK9btVector3(%struct.btRigidBody* nocapture %this, %struct.btQuadWord* nocapture %acceleration) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 4 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = fcmp une float %1, 0.000000e+00 ; [#uses=1]
+ br i1 %2, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %3 = fdiv float 1.000000e+00, %1 ; [#uses=3]
+ %4 = getelementptr inbounds %struct.btQuadWord* %acceleration, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fmul float %5, %3 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %acceleration, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %8, %3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %acceleration, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fmul float %11, %3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ store float %12, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ store float %9, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ store float %6, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %17 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 0 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %acceleration, i32 0, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %acceleration, i32 0, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 2 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %acceleration, i32 0, i32 0, i32 2 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %acceleration, i32 0, i32 0, i32 3 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN11btRigidBody12applyGravityEv(%struct.btRigidBody* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 12 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = and i32 %1, 3 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb, label %return
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = fmul float %5, %7 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = fmul float %10, %12 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fmul float %15, %17 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 9, i32 0, i32 0 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fadd float %20, %18 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 9, i32 0, i32 1 ; [#uses=2]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fadd float %23, %13 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 9, i32 0, i32 2 ; [#uses=2]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = fadd float %26, %8 ; [#uses=1]
+ store float %27, float* %25, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN11btRigidBody12setMassPropsEfRK9btVector3(%struct.btRigidBody* nocapture %this, float %mass, %struct.btQuadWord* nocapture %inertia) nounwind align 2 {
+entry:
+ %0 = fcmp oeq float %mass, 0.000000e+00 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 12 ; [#uses=3]
+ %2 = load i32* %1, align 4 ; [#uses=2]
+ br i1 %0, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %3 = or i32 %2, 1 ; [#uses=1]
+ store i32 %3, i32* %1, align 4
+ %4 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 4 ; [#uses=1]
+ store float 0.000000e+00, float* %4, align 4
+ br label %bb2
+
+bb1: ; preds = %entry
+ %5 = and i32 %2, -2 ; [#uses=1]
+ store i32 %5, i32* %1, align 4
+ %6 = fdiv float 1.000000e+00, %mass ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 4 ; [#uses=1]
+ store float %6, float* %7, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %8 = phi float [ %6, %bb1 ], [ 0.000000e+00, %bb ] ; [#uses=3]
+ %9 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fmul float %10, %mass ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = fmul float %13, %mass ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fmul float %16, %mass ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ store float %17, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ store float %14, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ store float %11, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=2]
+ %24 = fcmp une float %23, 0.000000e+00 ; [#uses=1]
+ br i1 %24, label %bb3, label %bb5
+
+bb3: ; preds = %bb2
+ %25 = fdiv float 1.000000e+00, %23 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb3, %bb2
+ %iftmp.265.0 = phi float [ %25, %bb3 ], [ 0.000000e+00, %bb2 ] ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=2]
+ %28 = fcmp une float %27, 0.000000e+00 ; [#uses=1]
+ br i1 %28, label %bb6, label %bb8
+
+bb6: ; preds = %bb5
+ %29 = fdiv float 1.000000e+00, %27 ; [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb6, %bb5
+ %iftmp.266.0 = phi float [ %29, %bb6 ], [ 0.000000e+00, %bb5 ] ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btQuadWord* %inertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=2]
+ %32 = fcmp une float %31, 0.000000e+00 ; [#uses=1]
+ br i1 %32, label %bb9, label %bb11
+
+bb9: ; preds = %bb8
+ %33 = fdiv float 1.000000e+00, %31 ; [#uses=1]
+ br label %bb11
+
+bb11: ; preds = %bb9, %bb8
+ %iftmp.267.0 = phi float [ %33, %bb9 ], [ 0.000000e+00, %bb8 ] ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ store float %iftmp.267.0, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ store float %iftmp.266.0, float* %35, align 4
+ %36 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ store float %iftmp.265.0, float* %36, align 4
+ %37 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 4
+ %38 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fmul float %39, %8 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = fmul float %42, %8 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ %46 = fmul float %45, %8 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 27, i32 0, i32 0 ; [#uses=1]
+ store float %46, float* %47, align 4
+ %48 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 27, i32 0, i32 1 ; [#uses=1]
+ store float %43, float* %48, align 4
+ %49 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 27, i32 0, i32 2 ; [#uses=1]
+ store float %40, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 27, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %50, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN11btRigidBody19updateInertiaTensorEv(%struct.btRigidBody* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=4]
+ %10 = load float* %7, align 4 ; [#uses=4]
+ %11 = load float* %6, align 4 ; [#uses=4]
+ %12 = load float* %5, align 4 ; [#uses=4]
+ %13 = load float* %4, align 4 ; [#uses=4]
+ %14 = load float* %3, align 4 ; [#uses=4]
+ %15 = load float* %2, align 4 ; [#uses=4]
+ %16 = load float* %1, align 4 ; [#uses=4]
+ %17 = load float* %0, align 4 ; [#uses=4]
+ %18 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=3]
+ %20 = fmul float %17, %19 ; [#uses=3]
+ %21 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=3]
+ %23 = fmul float %14, %22 ; [#uses=3]
+ %24 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=3]
+ %26 = fmul float %11, %25 ; [#uses=3]
+ %27 = fmul float %16, %19 ; [#uses=3]
+ %28 = fmul float %13, %22 ; [#uses=3]
+ %29 = fmul float %10, %25 ; [#uses=3]
+ %30 = fmul float %15, %19 ; [#uses=3]
+ %31 = fmul float %12, %22 ; [#uses=3]
+ %32 = fmul float %9, %25 ; [#uses=3]
+ %33 = fmul float %11, %26 ; [#uses=1]
+ %34 = fmul float %14, %23 ; [#uses=1]
+ %35 = fadd float %33, %34 ; [#uses=1]
+ %36 = fmul float %17, %20 ; [#uses=1]
+ %37 = fadd float %35, %36 ; [#uses=1]
+ %38 = fmul float %10, %26 ; [#uses=1]
+ %39 = fmul float %13, %23 ; [#uses=1]
+ %40 = fadd float %38, %39 ; [#uses=1]
+ %41 = fmul float %16, %20 ; [#uses=1]
+ %42 = fadd float %40, %41 ; [#uses=1]
+ %43 = fmul float %9, %26 ; [#uses=1]
+ %44 = fmul float %12, %23 ; [#uses=1]
+ %45 = fadd float %43, %44 ; [#uses=1]
+ %46 = fmul float %15, %20 ; [#uses=1]
+ %47 = fadd float %45, %46 ; [#uses=1]
+ %48 = fmul float %11, %29 ; [#uses=1]
+ %49 = fmul float %14, %28 ; [#uses=1]
+ %50 = fadd float %48, %49 ; [#uses=1]
+ %51 = fmul float %17, %27 ; [#uses=1]
+ %52 = fadd float %50, %51 ; [#uses=1]
+ %53 = fmul float %10, %29 ; [#uses=1]
+ %54 = fmul float %13, %28 ; [#uses=1]
+ %55 = fadd float %53, %54 ; [#uses=1]
+ %56 = fmul float %16, %27 ; [#uses=1]
+ %57 = fadd float %55, %56 ; [#uses=1]
+ %58 = fmul float %9, %29 ; [#uses=1]
+ %59 = fmul float %12, %28 ; [#uses=1]
+ %60 = fadd float %58, %59 ; [#uses=1]
+ %61 = fmul float %15, %27 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=1]
+ %63 = fmul float %11, %32 ; [#uses=1]
+ %64 = fmul float %14, %31 ; [#uses=1]
+ %65 = fadd float %63, %64 ; [#uses=1]
+ %66 = fmul float %17, %30 ; [#uses=1]
+ %67 = fadd float %65, %66 ; [#uses=1]
+ %68 = fmul float %10, %32 ; [#uses=1]
+ %69 = fmul float %13, %31 ; [#uses=1]
+ %70 = fadd float %68, %69 ; [#uses=1]
+ %71 = fmul float %16, %30 ; [#uses=1]
+ %72 = fadd float %70, %71 ; [#uses=1]
+ %73 = fmul float %9, %32 ; [#uses=1]
+ %74 = fmul float %12, %31 ; [#uses=1]
+ %75 = fadd float %73, %74 ; [#uses=1]
+ %76 = fmul float %15, %30 ; [#uses=1]
+ %77 = fadd float %75, %76 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %77, float* %78, align 4
+ %79 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %72, float* %79, align 4
+ %80 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %67, float* %80, align 4
+ %81 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %81, align 4
+ %82 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %62, float* %82, align 4
+ %83 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %57, float* %83, align 4
+ %84 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %52, float* %84, align 4
+ %85 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %85, align 4
+ %86 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %47, float* %86, align 4
+ %87 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %42, float* %87, align 4
+ %88 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %37, float* %88, align 4
+ %89 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %89, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN11btRigidBody24setCenterOfMassTransformERK11btTransform(%struct.btRigidBody* %this, %struct.btTransform* %xform) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 12 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = and i32 %1, 3 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ br i1 %3, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ store float %15, float* %13, align 4
+ %16 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ store float %27, float* %25, align 4
+ %28 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ store float %33, float* %31, align 4
+ %34 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ store float %36, float* %34, align 4
+ %37 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ store float %39, float* %37, align 4
+ %40 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=2]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ store float %42, float* %40, align 4
+ %43 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=2]
+ %45 = load float* %44, align 4 ; [#uses=1]
+ store float %45, float* %43, align 4
+ %46 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %47 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=2]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ store float %48, float* %46, align 4
+ %49 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=2]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ store float %51, float* %49, align 4
+ %.pre3 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre7 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre11 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre15 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %.pre19 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %.pre23 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %.pre27 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %.pre31 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %.pre35 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %.pre39 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %.pre43 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %.pre47 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %.pre51 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %.pre55 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %.pre59 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %.pre63 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ br label %bb2
+
+bb1: ; preds = %entry
+ %52 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ store float %53, float* %4, align 4
+ %54 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %55 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ store float %56, float* %54, align 4
+ %57 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ store float %59, float* %57, align 4
+ %60 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ store float %62, float* %60, align 4
+ %63 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ store float %65, float* %63, align 4
+ %66 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ store float %68, float* %66, align 4
+ %69 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ store float %71, float* %69, align 4
+ %72 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ store float %74, float* %72, align 4
+ %75 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ store float %77, float* %75, align 4
+ %78 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ store float %80, float* %78, align 4
+ %81 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ store float %83, float* %81, align 4
+ %84 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ %86 = load float* %85, align 4 ; [#uses=1]
+ store float %86, float* %84, align 4
+ %87 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ store float %89, float* %87, align 4
+ %90 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %92 = load float* %91, align 4 ; [#uses=1]
+ store float %92, float* %90, align 4
+ %93 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ store float %95, float* %93, align 4
+ %96 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btTransform* %xform, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ store float %98, float* %96, align 4
+ %.pre = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre5 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre9 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre13 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %.pre17 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %.pre21 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %.pre25 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %.pre29 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %.pre33 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %.pre37 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %.pre41 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %.pre45 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %.pre49 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %.pre53 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %.pre57 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %.pre61 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %.pre-phi64 = phi float* [ %97, %bb1 ], [ %.pre63, %bb ] ; [#uses=1]
+ %.pre-phi62 = phi float* [ %.pre61, %bb1 ], [ %50, %bb ] ; [#uses=1]
+ %.pre-phi60 = phi float* [ %94, %bb1 ], [ %.pre59, %bb ] ; [#uses=1]
+ %.pre-phi58 = phi float* [ %.pre57, %bb1 ], [ %47, %bb ] ; [#uses=1]
+ %.pre-phi56 = phi float* [ %91, %bb1 ], [ %.pre55, %bb ] ; [#uses=1]
+ %.pre-phi54 = phi float* [ %.pre53, %bb1 ], [ %44, %bb ] ; [#uses=1]
+ %.pre-phi52 = phi float* [ %88, %bb1 ], [ %.pre51, %bb ] ; [#uses=1]
+ %.pre-phi50 = phi float* [ %.pre49, %bb1 ], [ %41, %bb ] ; [#uses=1]
+ %.pre-phi48 = phi float* [ %85, %bb1 ], [ %.pre47, %bb ] ; [#uses=1]
+ %.pre-phi46 = phi float* [ %.pre45, %bb1 ], [ %38, %bb ] ; [#uses=1]
+ %.pre-phi44 = phi float* [ %82, %bb1 ], [ %.pre43, %bb ] ; [#uses=1]
+ %.pre-phi42 = phi float* [ %.pre41, %bb1 ], [ %35, %bb ] ; [#uses=1]
+ %.pre-phi40 = phi float* [ %79, %bb1 ], [ %.pre39, %bb ] ; [#uses=1]
+ %.pre-phi38 = phi float* [ %.pre37, %bb1 ], [ %32, %bb ] ; [#uses=1]
+ %.pre-phi36 = phi float* [ %76, %bb1 ], [ %.pre35, %bb ] ; [#uses=1]
+ %.pre-phi34 = phi float* [ %.pre33, %bb1 ], [ %29, %bb ] ; [#uses=1]
+ %.pre-phi32 = phi float* [ %73, %bb1 ], [ %.pre31, %bb ] ; [#uses=1]
+ %.pre-phi30 = phi float* [ %.pre29, %bb1 ], [ %26, %bb ] ; [#uses=1]
+ %.pre-phi28 = phi float* [ %70, %bb1 ], [ %.pre27, %bb ] ; [#uses=1]
+ %.pre-phi26 = phi float* [ %.pre25, %bb1 ], [ %23, %bb ] ; [#uses=1]
+ %.pre-phi24 = phi float* [ %67, %bb1 ], [ %.pre23, %bb ] ; [#uses=1]
+ %.pre-phi22 = phi float* [ %.pre21, %bb1 ], [ %20, %bb ] ; [#uses=1]
+ %.pre-phi20 = phi float* [ %64, %bb1 ], [ %.pre19, %bb ] ; [#uses=1]
+ %.pre-phi18 = phi float* [ %.pre17, %bb1 ], [ %17, %bb ] ; [#uses=1]
+ %.pre-phi16 = phi float* [ %61, %bb1 ], [ %.pre15, %bb ] ; [#uses=1]
+ %.pre-phi14 = phi float* [ %.pre13, %bb1 ], [ %14, %bb ] ; [#uses=1]
+ %.pre-phi12 = phi float* [ %58, %bb1 ], [ %.pre11, %bb ] ; [#uses=1]
+ %.pre-phi10 = phi float* [ %.pre9, %bb1 ], [ %11, %bb ] ; [#uses=1]
+ %.pre-phi8 = phi float* [ %55, %bb1 ], [ %.pre7, %bb ] ; [#uses=1]
+ %.pre-phi6 = phi float* [ %.pre5, %bb1 ], [ %8, %bb ] ; [#uses=1]
+ %.pre-phi4 = phi float* [ %52, %bb1 ], [ %.pre3, %bb ] ; [#uses=1]
+ %.pre-phi = phi float* [ %.pre, %bb1 ], [ %5, %bb ] ; [#uses=1]
+ %99 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ store float %101, float* %99, align 4
+ %102 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %104 = load float* %103, align 4 ; [#uses=1]
+ store float %104, float* %102, align 4
+ %105 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %107 = load float* %106, align 4 ; [#uses=1]
+ store float %107, float* %105, align 4
+ %108 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %110 = load float* %109, align 4 ; [#uses=1]
+ store float %110, float* %108, align 4
+ %111 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %112 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %113 = load float* %112, align 4 ; [#uses=1]
+ store float %113, float* %111, align 4
+ %114 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %116 = load float* %115, align 4 ; [#uses=1]
+ store float %116, float* %114, align 4
+ %117 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %119 = load float* %118, align 4 ; [#uses=1]
+ store float %119, float* %117, align 4
+ %120 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %121 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %122 = load float* %121, align 4 ; [#uses=1]
+ store float %122, float* %120, align 4
+ %123 = load float* %.pre-phi4, align 4 ; [#uses=5]
+ store float %123, float* %.pre-phi, align 4
+ %124 = load float* %.pre-phi8, align 4 ; [#uses=5]
+ store float %124, float* %.pre-phi6, align 4
+ %125 = load float* %.pre-phi12, align 4 ; [#uses=5]
+ store float %125, float* %.pre-phi10, align 4
+ %126 = load float* %.pre-phi16, align 4 ; [#uses=1]
+ store float %126, float* %.pre-phi14, align 4
+ %127 = load float* %.pre-phi20, align 4 ; [#uses=5]
+ store float %127, float* %.pre-phi18, align 4
+ %128 = load float* %.pre-phi24, align 4 ; [#uses=5]
+ store float %128, float* %.pre-phi22, align 4
+ %129 = load float* %.pre-phi28, align 4 ; [#uses=5]
+ store float %129, float* %.pre-phi26, align 4
+ %130 = load float* %.pre-phi32, align 4 ; [#uses=1]
+ store float %130, float* %.pre-phi30, align 4
+ %131 = load float* %.pre-phi36, align 4 ; [#uses=5]
+ store float %131, float* %.pre-phi34, align 4
+ %132 = load float* %.pre-phi40, align 4 ; [#uses=5]
+ store float %132, float* %.pre-phi38, align 4
+ %133 = load float* %.pre-phi44, align 4 ; [#uses=5]
+ store float %133, float* %.pre-phi42, align 4
+ %134 = load float* %.pre-phi48, align 4 ; [#uses=1]
+ store float %134, float* %.pre-phi46, align 4
+ %135 = load float* %.pre-phi52, align 4 ; [#uses=1]
+ store float %135, float* %.pre-phi50, align 4
+ %136 = load float* %.pre-phi56, align 4 ; [#uses=1]
+ store float %136, float* %.pre-phi54, align 4
+ %137 = load float* %.pre-phi60, align 4 ; [#uses=1]
+ store float %137, float* %.pre-phi58, align 4
+ %138 = load float* %.pre-phi64, align 4 ; [#uses=1]
+ store float %138, float* %.pre-phi62, align 4
+ %139 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ %140 = load float* %139, align 4 ; [#uses=3]
+ %141 = fmul float %133, %140 ; [#uses=3]
+ %142 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ %143 = load float* %142, align 4 ; [#uses=3]
+ %144 = fmul float %132, %143 ; [#uses=3]
+ %145 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ %146 = load float* %145, align 4 ; [#uses=3]
+ %147 = fmul float %131, %146 ; [#uses=3]
+ %148 = fmul float %129, %140 ; [#uses=3]
+ %149 = fmul float %128, %143 ; [#uses=3]
+ %150 = fmul float %127, %146 ; [#uses=3]
+ %151 = fmul float %125, %140 ; [#uses=3]
+ %152 = fmul float %124, %143 ; [#uses=3]
+ %153 = fmul float %123, %146 ; [#uses=3]
+ %154 = fmul float %131, %147 ; [#uses=1]
+ %155 = fmul float %132, %144 ; [#uses=1]
+ %156 = fadd float %154, %155 ; [#uses=1]
+ %157 = fmul float %133, %141 ; [#uses=1]
+ %158 = fadd float %156, %157 ; [#uses=1]
+ %159 = fmul float %127, %147 ; [#uses=1]
+ %160 = fmul float %128, %144 ; [#uses=1]
+ %161 = fadd float %159, %160 ; [#uses=1]
+ %162 = fmul float %129, %141 ; [#uses=1]
+ %163 = fadd float %161, %162 ; [#uses=1]
+ %164 = fmul float %123, %147 ; [#uses=1]
+ %165 = fmul float %124, %144 ; [#uses=1]
+ %166 = fadd float %164, %165 ; [#uses=1]
+ %167 = fmul float %125, %141 ; [#uses=1]
+ %168 = fadd float %166, %167 ; [#uses=1]
+ %169 = fmul float %131, %150 ; [#uses=1]
+ %170 = fmul float %132, %149 ; [#uses=1]
+ %171 = fadd float %169, %170 ; [#uses=1]
+ %172 = fmul float %133, %148 ; [#uses=1]
+ %173 = fadd float %171, %172 ; [#uses=1]
+ %174 = fmul float %127, %150 ; [#uses=1]
+ %175 = fmul float %128, %149 ; [#uses=1]
+ %176 = fadd float %174, %175 ; [#uses=1]
+ %177 = fmul float %129, %148 ; [#uses=1]
+ %178 = fadd float %176, %177 ; [#uses=1]
+ %179 = fmul float %123, %150 ; [#uses=1]
+ %180 = fmul float %124, %149 ; [#uses=1]
+ %181 = fadd float %179, %180 ; [#uses=1]
+ %182 = fmul float %125, %148 ; [#uses=1]
+ %183 = fadd float %181, %182 ; [#uses=1]
+ %184 = fmul float %131, %153 ; [#uses=1]
+ %185 = fmul float %132, %152 ; [#uses=1]
+ %186 = fadd float %184, %185 ; [#uses=1]
+ %187 = fmul float %133, %151 ; [#uses=1]
+ %188 = fadd float %186, %187 ; [#uses=1]
+ %189 = fmul float %127, %153 ; [#uses=1]
+ %190 = fmul float %128, %152 ; [#uses=1]
+ %191 = fadd float %189, %190 ; [#uses=1]
+ %192 = fmul float %129, %151 ; [#uses=1]
+ %193 = fadd float %191, %192 ; [#uses=1]
+ %194 = fmul float %123, %153 ; [#uses=1]
+ %195 = fmul float %124, %152 ; [#uses=1]
+ %196 = fadd float %194, %195 ; [#uses=1]
+ %197 = fmul float %125, %151 ; [#uses=1]
+ %198 = fadd float %196, %197 ; [#uses=1]
+ %199 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %198, float* %199, align 4
+ %200 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %193, float* %200, align 4
+ %201 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %188, float* %201, align 4
+ %202 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %202, align 4
+ %203 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %183, float* %203, align 4
+ %204 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %178, float* %204, align 4
+ %205 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %173, float* %205, align 4
+ %206 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %206, align 4
+ %207 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %168, float* %207, align 4
+ %208 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %163, float* %208, align 4
+ %209 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %158, float* %209, align 4
+ %210 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %210, align 4
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN11btRigidBody18proceedToTransformERK11btTransform(%struct.btRigidBody* %this, %struct.btTransform* %newTrans) nounwind align 2 {
+entry:
+ tail call void @_ZN11btRigidBody24setCenterOfMassTransformERK11btTransform(%struct.btRigidBody* %this, %struct.btTransform* %newTrans)
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZNK11btRigidBody28calculateSerializeBufferSizeEv(%struct.btRigidBody* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 480
+}
+
+; [#uses=1]
+define void @_ZNK11btRigidBody21serializeSingleObjectEP12btSerializer(%struct.btRigidBody* %this, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btActionInterface* %serializer, i32 0, i32 0 ; [#uses=2]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 4 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 4 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to i32 (%struct.btRigidBody*)* ; [#uses=1]
+ %9 = tail call i32 %8(%struct.btRigidBody* %this) ; [#uses=1]
+ %10 = bitcast i32 (...)* %3 to %struct.btChunk* (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ %11 = tail call %struct.btChunk* %10(%struct.btActionInterface* %serializer, i32 %9, i32 1) ; [#uses=2]
+ %12 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds i32 (...)** %12, i32 5 ; [#uses=1]
+ %14 = load i32 (...)** %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btChunk* %11, i32 0, i32 2 ; [#uses=1]
+ %16 = load i8** %15, align 4 ; [#uses=1]
+ %17 = bitcast i32 (...)* %14 to i8* (%struct.btRigidBody*, i8*, %struct.btActionInterface*)* ; [#uses=1]
+ %18 = tail call i8* %17(%struct.btRigidBody* %this, i8* %16, %struct.btActionInterface* %serializer) ; [#uses=1]
+ %19 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i32 (...)** %19, i32 5 ; [#uses=1]
+ %21 = load i32 (...)** %20, align 4 ; [#uses=1]
+ %22 = bitcast %struct.btRigidBody* %this to i8* ; [#uses=1]
+ %23 = bitcast i32 (...)* %21 to void (%struct.btActionInterface*, %struct.btChunk*, i8*, i32, i8*)* ; [#uses=1]
+ tail call void %23(%struct.btActionInterface* %serializer, %struct.btChunk* %11, i8* %18, i32 1497645650, i8* %22)
+ ret void
+}
+
+; [#uses=1]
+define zeroext i8 @_ZN11btRigidBody24checkCollideWithOverrideEP17btCollisionObject(%struct.btRigidBody* nocapture %this, %struct.btCollisionObject* %co) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %co, i32 0, i32 19 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %1, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb12, label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+
+_ZN11btRigidBody6upcastEP17btCollisionObject.exit: ; preds = %entry
+ %2 = bitcast %struct.btCollisionObject* %co to %struct.btRigidBody* ; [#uses=2]
+ %3 = icmp eq %struct.btCollisionObject* %co, null ; [#uses=1]
+ br i1 %3, label %bb12, label %bb9.preheader
+
+bb9.preheader: ; preds = %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+ %4 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 1 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ br label %bb9
+
+bb2: ; preds = %bb9
+ %7 = load %struct.btTypedConstraint*** %4, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btTypedConstraint** %7, i32 %16 ; [#uses=1]
+ %8 = load %struct.btTypedConstraint** %scevgep, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btTypedConstraint* %8, i32 0, i32 5 ; [#uses=1]
+ %10 = load %struct.btRigidBody** %9, align 4 ; [#uses=1]
+ %11 = icmp eq %struct.btRigidBody* %10, %2 ; [#uses=1]
+ br i1 %11, label %bb12, label %bb3
+
+bb3: ; preds = %bb2
+ %12 = getelementptr inbounds %struct.btTypedConstraint* %8, i32 0, i32 6 ; [#uses=1]
+ %13 = load %struct.btRigidBody** %12, align 4 ; [#uses=1]
+ %14 = icmp eq %struct.btRigidBody* %13, %2 ; [#uses=1]
+ br i1 %14, label %bb12, label %bb5
+
+bb5: ; preds = %bb3
+ %15 = add nsw i32 %16, 1 ; [#uses=1]
+ br label %bb9
+
+bb9: ; preds = %bb5, %bb9.preheader
+ %16 = phi i32 [ %15, %bb5 ], [ 0, %bb9.preheader ] ; [#uses=3]
+ %17 = icmp sgt i32 %6, %16 ; [#uses=1]
+ br i1 %17, label %bb2, label %bb12
+
+bb12: ; preds = %bb9, %bb3, %bb2, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit, %entry
+ %.0 = phi i8 [ 1, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit ], [ 1, %entry ], [ 1, %bb9 ], [ 0, %bb2 ], [ 0, %bb3 ] ; [#uses=1]
+ ret i8 %.0
+}
+
+; [#uses=0]
+define void @_ZN11btRigidBody10setDampingEff(%struct.btRigidBody* nocapture %this, float %lin_damping, float %ang_damping) nounwind align 2 {
+entry:
+ %lin_damping_addr = alloca float, align 4 ; [#uses=2]
+ %ang_damping_addr = alloca float, align 4 ; [#uses=2]
+ %0 = alloca float, align 4 ; [#uses=2]
+ %1 = alloca float, align 4 ; [#uses=2]
+ store float %lin_damping, float* %lin_damping_addr, align 4
+ store float %ang_damping, float* %ang_damping_addr, align 4
+ store float 1.000000e+00, float* %1, align 4
+ %2 = fcmp uge float %lin_damping, 0.000000e+00 ; [#uses=1]
+ br i1 %2, label %bb.i, label %_Z9btClampedIfERKT_S2_S2_S2_.exit
+
+bb.i: ; preds = %entry
+ %3 = fcmp ogt float %lin_damping, 1.000000e+00 ; [#uses=1]
+ %.val6 = load float* %1, align 4 ; [#uses=1]
+ %lin_damping_addr.val = load float* %lin_damping_addr, align 4 ; [#uses=1]
+ %.pre = select i1 %3, float %.val6, float %lin_damping_addr.val ; [#uses=1]
+ br label %_Z9btClampedIfERKT_S2_S2_S2_.exit
+
+_Z9btClampedIfERKT_S2_S2_S2_.exit: ; preds = %bb.i, %entry
+ %4 = phi float [ %.pre, %bb.i ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 11 ; [#uses=1]
+ store float %4, float* %5, align 4
+ store float 1.000000e+00, float* %0, align 4
+ %6 = fcmp uge float %ang_damping, 0.000000e+00 ; [#uses=1]
+ br i1 %6, label %bb.i2, label %_Z9btClampedIfERKT_S2_S2_S2_.exit4
+
+bb.i2: ; preds = %_Z9btClampedIfERKT_S2_S2_S2_.exit
+ %7 = fcmp ogt float %ang_damping, 1.000000e+00 ; [#uses=1]
+ %.val = load float* %0, align 4 ; [#uses=1]
+ %ang_damping_addr.val = load float* %ang_damping_addr, align 4 ; [#uses=1]
+ %.pre5 = select i1 %7, float %.val, float %ang_damping_addr.val ; [#uses=1]
+ br label %_Z9btClampedIfERKT_S2_S2_S2_.exit4
+
+_Z9btClampedIfERKT_S2_S2_S2_.exit4: ; preds = %bb.i2, %_Z9btClampedIfERKT_S2_S2_S2_.exit
+ %8 = phi float [ %.pre5, %bb.i2 ], [ 0.000000e+00, %_Z9btClampedIfERKT_S2_S2_S2_.exit ] ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 12 ; [#uses=1]
+ store float %8, float* %9, align 4
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(%struct.btRigidBody* %this, %"struct.btRigidBody::btRigidBodyConstructionInfo"* nocapture %constructionInfo) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 19 ; [#uses=1]
+ store i32 2, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %3 = bitcast float* %1 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %3, i8 0, i64 32, i32 4, i1 false)
+ store float 1.000000e+00, float* %2, align 4
+ %4 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %4, align 4
+ %5 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 26, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=2]
+ store float 1.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=2]
+ store float 1.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=2]
+ store float 1.000000e+00, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 2 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 9, i32 0, i32 0 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 11 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 12 ; [#uses=2]
+ %21 = bitcast float* %10 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %21, i8 0, i64 36, i32 4, i1 false)
+ %22 = bitcast float* %18 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %22, i8 0, i64 36, i32 4, i1 false)
+ store float 5.000000e-01, float* %20, align 4
+ %23 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 9 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 18 ; [#uses=1]
+ store float %24, float* %25, align 4
+ %26 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 10 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 19 ; [#uses=1]
+ store float %27, float* %28, align 4
+ %29 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 1 ; [#uses=1]
+ %30 = load %struct.btActionInterface** %29, align 4 ; [#uses=4]
+ %31 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 20 ; [#uses=1]
+ store %struct.btActionInterface* %30, %struct.btActionInterface** %31, align 4
+ %32 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 30 ; [#uses=1]
+ store i32 0, i32* %32, align 4
+ %33 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 31 ; [#uses=1]
+ store i32 0, i32* %33, align 4
+ %34 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 11 ; [#uses=1]
+ %35 = load i8* %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 13 ; [#uses=1]
+ store i8 %35, i8* %36, align 4
+ %37 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 12 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 14 ; [#uses=1]
+ store float %38, float* %39, align 4
+ %40 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 13 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 15 ; [#uses=1]
+ store float %41, float* %42, align 4
+ %43 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 14 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 16 ; [#uses=1]
+ store float %44, float* %45, align 4
+ %46 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 15 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 17 ; [#uses=1]
+ store float %47, float* %48, align 4
+ %49 = icmp eq %struct.btActionInterface* %30, null ; [#uses=1]
+ br i1 %49, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %50 = getelementptr inbounds %struct.btActionInterface* %30, i32 0, i32 0 ; [#uses=1]
+ %51 = load i32 (...)*** %50, align 4 ; [#uses=1]
+ %52 = getelementptr inbounds i32 (...)** %51, i32 2 ; [#uses=1]
+ %53 = load i32 (...)** %52, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %55 = bitcast i32 (...)* %53 to void (%struct.btActionInterface*, %struct.btTransform*)* ; [#uses=1]
+ tail call void %55(%struct.btActionInterface* %30, %struct.btTransform* %54)
+ %.phi.trans.insert = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %.pre = load float* %.phi.trans.insert, align 4 ; [#uses=1]
+ %.phi.trans.insert5 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre6 = load float* %.phi.trans.insert5, align 4 ; [#uses=1]
+ %.phi.trans.insert7 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %.pre8 = load float* %.phi.trans.insert7, align 4 ; [#uses=1]
+ %.phi.trans.insert9 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %.pre10 = load float* %.phi.trans.insert9, align 4 ; [#uses=1]
+ %.phi.trans.insert11 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %.pre12 = load float* %.phi.trans.insert11, align 4 ; [#uses=1]
+ %.phi.trans.insert13 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %.pre14 = load float* %.phi.trans.insert13, align 4 ; [#uses=1]
+ %.phi.trans.insert15 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %.pre16 = load float* %.phi.trans.insert15, align 4 ; [#uses=1]
+ %.phi.trans.insert17 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %.pre18 = load float* %.phi.trans.insert17, align 4 ; [#uses=1]
+ %.phi.trans.insert19 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %.pre20 = load float* %.phi.trans.insert19, align 4 ; [#uses=1]
+ %.phi.trans.insert21 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %.pre22 = load float* %.phi.trans.insert21, align 4 ; [#uses=1]
+ %.phi.trans.insert23 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %.pre24 = load float* %.phi.trans.insert23, align 4 ; [#uses=1]
+ %.phi.trans.insert25 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %.pre26 = load float* %.phi.trans.insert25, align 4 ; [#uses=1]
+ %.phi.trans.insert27 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %.pre28 = load float* %.phi.trans.insert27, align 4 ; [#uses=1]
+ %.phi.trans.insert29 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %.pre30 = load float* %.phi.trans.insert29, align 4 ; [#uses=1]
+ %.phi.trans.insert31 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %.pre32 = load float* %.phi.trans.insert31, align 4 ; [#uses=1]
+ %.phi.trans.insert33 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %.pre34 = load float* %.phi.trans.insert33, align 4 ; [#uses=1]
+ br label %bb2
+
+bb1: ; preds = %entry
+ %56 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %57 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=2]
+ store float %58, float* %56, align 4
+ %59 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %60 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=2]
+ store float %61, float* %59, align 4
+ %62 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %63 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=2]
+ store float %64, float* %62, align 4
+ %65 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %66 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=2]
+ store float %67, float* %65, align 4
+ %68 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %69 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=2]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %72 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=2]
+ store float %73, float* %71, align 4
+ %74 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %75 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=2]
+ store float %76, float* %74, align 4
+ %77 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %78 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=2]
+ store float %79, float* %77, align 4
+ %80 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %81 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=2]
+ store float %82, float* %80, align 4
+ %83 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %84 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=2]
+ store float %85, float* %83, align 4
+ %86 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %87 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %88 = load float* %87, align 4 ; [#uses=2]
+ store float %88, float* %86, align 4
+ %89 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %90 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %91 = load float* %90, align 4 ; [#uses=2]
+ store float %91, float* %89, align 4
+ %92 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %93 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=2]
+ store float %94, float* %92, align 4
+ %95 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %96 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ %97 = load float* %96, align 4 ; [#uses=2]
+ store float %97, float* %95, align 4
+ %98 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %99 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ %100 = load float* %99, align 4 ; [#uses=2]
+ store float %100, float* %98, align 4
+ %101 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %102 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %103 = load float* %102, align 4 ; [#uses=2]
+ store float %103, float* %101, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %104 = phi float [ %103, %bb1 ], [ %.pre34, %bb ] ; [#uses=1]
+ %105 = phi float [ %100, %bb1 ], [ %.pre32, %bb ] ; [#uses=1]
+ %106 = phi float [ %97, %bb1 ], [ %.pre30, %bb ] ; [#uses=1]
+ %107 = phi float [ %94, %bb1 ], [ %.pre28, %bb ] ; [#uses=1]
+ %108 = phi float [ %91, %bb1 ], [ %.pre26, %bb ] ; [#uses=1]
+ %109 = phi float [ %88, %bb1 ], [ %.pre24, %bb ] ; [#uses=1]
+ %110 = phi float [ %85, %bb1 ], [ %.pre22, %bb ] ; [#uses=1]
+ %111 = phi float [ %82, %bb1 ], [ %.pre20, %bb ] ; [#uses=1]
+ %112 = phi float [ %79, %bb1 ], [ %.pre18, %bb ] ; [#uses=1]
+ %113 = phi float [ %76, %bb1 ], [ %.pre16, %bb ] ; [#uses=1]
+ %114 = phi float [ %73, %bb1 ], [ %.pre14, %bb ] ; [#uses=1]
+ %115 = phi float [ %70, %bb1 ], [ %.pre12, %bb ] ; [#uses=1]
+ %116 = phi float [ %67, %bb1 ], [ %.pre10, %bb ] ; [#uses=1]
+ %117 = phi float [ %64, %bb1 ], [ %.pre8, %bb ] ; [#uses=1]
+ %118 = phi float [ %61, %bb1 ], [ %.pre6, %bb ] ; [#uses=1]
+ %119 = phi float [ %58, %bb1 ], [ %.pre, %bb ] ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %121 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %119, float* %120, align 4
+ %122 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %123 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %118, float* %122, align 4
+ %124 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %117, float* %124, align 4
+ %126 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %116, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %128 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %115, float* %127, align 4
+ %129 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %130 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %114, float* %129, align 4
+ %131 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %132 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %113, float* %131, align 4
+ %133 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %112, float* %133, align 4
+ %134 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %111, float* %134, align 4
+ %136 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %110, float* %136, align 4
+ %138 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %139 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %109, float* %138, align 4
+ %140 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %108, float* %140, align 4
+ %141 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %107, float* %141, align 4
+ %142 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %106, float* %142, align 4
+ %143 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %105, float* %143, align 4
+ %144 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float %104, float* %144, align 4
+ %145 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %146 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 7 ; [#uses=1]
+ %147 = bitcast float* %145 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %147, i8 0, i64 32, i32 4, i1 false)
+ %148 = load float* %146, align 4 ; [#uses=1]
+ %149 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 17 ; [#uses=1]
+ store float %148, float* %149, align 4
+ %150 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 8 ; [#uses=1]
+ %151 = load float* %150, align 4 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 18 ; [#uses=1]
+ store float %151, float* %152, align 4
+ %153 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %154 = load i32 (...)*** %153, align 4 ; [#uses=1]
+ %155 = getelementptr inbounds i32 (...)** %154, i32 3 ; [#uses=1]
+ %156 = load i32 (...)** %155, align 4 ; [#uses=1]
+ %157 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 3 ; [#uses=1]
+ %158 = load %struct.btCollisionShape** %157, align 4 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0 ; [#uses=1]
+ %160 = bitcast i32 (...)* %156 to void (%struct.btCollisionObject*, %struct.btCollisionShape*)* ; [#uses=1]
+ tail call void %160(%struct.btCollisionObject* %159, %struct.btCollisionShape* %158)
+ %161 = load i32* @_ZL8uniqueId, align 4 ; [#uses=2]
+ %162 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 23 ; [#uses=1]
+ store i32 %161, i32* %162, align 4
+ %163 = add nsw i32 %161, 1 ; [#uses=1]
+ store i32 %163, i32* @_ZL8uniqueId, align 4
+ %164 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 0 ; [#uses=1]
+ %165 = load float* %164, align 4 ; [#uses=5]
+ %166 = fcmp oeq float %165, 0.000000e+00 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 12 ; [#uses=3]
+ %168 = load i32* %167, align 4 ; [#uses=2]
+ br i1 %166, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb2
+ %169 = or i32 %168, 1 ; [#uses=1]
+ store i32 %169, i32* %167, align 4
+ %170 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 4 ; [#uses=1]
+ store float 0.000000e+00, float* %170, align 4
+ br label %bb2.i
+
+bb1.i: ; preds = %bb2
+ %171 = and i32 %168, -2 ; [#uses=1]
+ store i32 %171, i32* %167, align 4
+ %172 = fdiv float 1.000000e+00, %165 ; [#uses=2]
+ %173 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 4 ; [#uses=1]
+ store float %172, float* %173, align 4
+ br label %bb2.i
+
+bb2.i: ; preds = %bb1.i, %bb.i
+ %174 = phi float [ %172, %bb1.i ], [ 0.000000e+00, %bb.i ] ; [#uses=3]
+ %175 = load float* %17, align 4 ; [#uses=1]
+ %176 = fmul float %175, %165 ; [#uses=1]
+ %177 = load float* %16, align 4 ; [#uses=1]
+ %178 = fmul float %177, %165 ; [#uses=1]
+ %179 = load float* %15, align 4 ; [#uses=1]
+ %180 = fmul float %179, %165 ; [#uses=1]
+ store float %180, float* %11, align 4
+ store float %178, float* %12, align 4
+ store float %176, float* %13, align 4
+ store float 0.000000e+00, float* %14, align 4
+ %181 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %182 = load float* %181, align 4 ; [#uses=2]
+ %183 = fcmp une float %182, 0.000000e+00 ; [#uses=1]
+ br i1 %183, label %bb3.i, label %bb5.i
+
+bb3.i: ; preds = %bb2.i
+ %184 = fdiv float 1.000000e+00, %182 ; [#uses=1]
+ br label %bb5.i
+
+bb5.i: ; preds = %bb3.i, %bb2.i
+ %185 = phi float [ %184, %bb3.i ], [ 0.000000e+00, %bb2.i ] ; [#uses=4]
+ %186 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %187 = load float* %186, align 4 ; [#uses=2]
+ %188 = fcmp une float %187, 0.000000e+00 ; [#uses=1]
+ br i1 %188, label %bb6.i, label %bb8.i
+
+bb6.i: ; preds = %bb5.i
+ %189 = fdiv float 1.000000e+00, %187 ; [#uses=1]
+ br label %bb8.i
+
+bb8.i: ; preds = %bb6.i, %bb5.i
+ %190 = phi float [ %189, %bb6.i ], [ 0.000000e+00, %bb5.i ] ; [#uses=4]
+ %191 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %192 = load float* %191, align 4 ; [#uses=2]
+ %193 = fcmp une float %192, 0.000000e+00 ; [#uses=1]
+ br i1 %193, label %bb9.i, label %_ZN11btRigidBody12setMassPropsEfRK9btVector3.exit
+
+bb9.i: ; preds = %bb8.i
+ %194 = fdiv float 1.000000e+00, %192 ; [#uses=1]
+ br label %_ZN11btRigidBody12setMassPropsEfRK9btVector3.exit
+
+_ZN11btRigidBody12setMassPropsEfRK9btVector3.exit: ; preds = %bb9.i, %bb8.i
+ %195 = phi float [ %194, %bb9.i ], [ 0.000000e+00, %bb8.i ] ; [#uses=4]
+ %196 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ store float %195, float* %196, align 4
+ %197 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ store float %190, float* %197, align 4
+ %198 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ store float %185, float* %198, align 4
+ %199 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %199, align 4
+ %200 = load float* %9, align 4 ; [#uses=1]
+ %201 = fmul float %200, %174 ; [#uses=2]
+ %202 = load float* %8, align 4 ; [#uses=1]
+ %203 = fmul float %202, %174 ; [#uses=2]
+ %204 = load float* %7, align 4 ; [#uses=1]
+ %205 = fmul float %204, %174 ; [#uses=2]
+ %206 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 27, i32 0, i32 0 ; [#uses=2]
+ store float %205, float* %206, align 4
+ %207 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 27, i32 0, i32 1 ; [#uses=2]
+ store float %203, float* %207, align 4
+ %208 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 27, i32 0, i32 2 ; [#uses=2]
+ store float %201, float* %208, align 4
+ %209 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 27, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %209, align 4
+ %210 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 6 ; [#uses=1]
+ %211 = load float* %210, align 4 ; [#uses=3]
+ %212 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo, i32 0, i32 5 ; [#uses=1]
+ %213 = load float* %212, align 4 ; [#uses=3]
+ %214 = fcmp uge float %213, 0.000000e+00 ; [#uses=1]
+ br i1 %214, label %bb.i.i, label %_Z9btClampedIfERKT_S2_S2_S2_.exit.i
+
+bb.i.i: ; preds = %_ZN11btRigidBody12setMassPropsEfRK9btVector3.exit
+ %215 = fcmp ogt float %213, 1.000000e+00 ; [#uses=1]
+ %.pre.i = select i1 %215, float 1.000000e+00, float %213 ; [#uses=1]
+ br label %_Z9btClampedIfERKT_S2_S2_S2_.exit.i
+
+_Z9btClampedIfERKT_S2_S2_S2_.exit.i: ; preds = %bb.i.i, %_ZN11btRigidBody12setMassPropsEfRK9btVector3.exit
+ %216 = phi float [ %.pre.i, %bb.i.i ], [ 0.000000e+00, %_ZN11btRigidBody12setMassPropsEfRK9btVector3.exit ] ; [#uses=1]
+ store float %216, float* %19, align 4
+ %217 = fcmp uge float %211, 0.000000e+00 ; [#uses=1]
+ br i1 %217, label %bb.i2.i, label %_ZN11btRigidBody10setDampingEff.exit
+
+bb.i2.i: ; preds = %_Z9btClampedIfERKT_S2_S2_S2_.exit.i
+ %218 = fcmp ogt float %211, 1.000000e+00 ; [#uses=1]
+ %.pre5.i = select i1 %218, float 1.000000e+00, float %211 ; [#uses=1]
+ br label %_ZN11btRigidBody10setDampingEff.exit
+
+_ZN11btRigidBody10setDampingEff.exit: ; preds = %bb.i2.i, %_Z9btClampedIfERKT_S2_S2_S2_.exit.i
+ %219 = phi float [ %.pre5.i, %bb.i2.i ], [ 0.000000e+00, %_Z9btClampedIfERKT_S2_S2_S2_.exit.i ] ; [#uses=1]
+ store float %219, float* %20, align 4
+ %220 = load float* %121, align 4 ; [#uses=4]
+ %221 = load float* %128, align 4 ; [#uses=4]
+ %222 = load float* %135, align 4 ; [#uses=4]
+ %223 = load float* %123, align 4 ; [#uses=4]
+ %224 = load float* %130, align 4 ; [#uses=4]
+ %225 = load float* %137, align 4 ; [#uses=4]
+ %226 = load float* %125, align 4 ; [#uses=4]
+ %227 = load float* %132, align 4 ; [#uses=4]
+ %228 = load float* %139, align 4 ; [#uses=4]
+ %229 = fmul float %228, %185 ; [#uses=3]
+ %230 = fmul float %225, %190 ; [#uses=3]
+ %231 = fmul float %222, %195 ; [#uses=3]
+ %232 = fmul float %227, %185 ; [#uses=3]
+ %233 = fmul float %224, %190 ; [#uses=3]
+ %234 = fmul float %221, %195 ; [#uses=3]
+ %235 = fmul float %226, %185 ; [#uses=3]
+ %236 = fmul float %223, %190 ; [#uses=3]
+ %237 = fmul float %220, %195 ; [#uses=3]
+ %238 = fmul float %222, %231 ; [#uses=1]
+ %239 = fmul float %225, %230 ; [#uses=1]
+ %240 = fadd float %238, %239 ; [#uses=1]
+ %241 = fmul float %228, %229 ; [#uses=1]
+ %242 = fadd float %240, %241 ; [#uses=1]
+ %243 = fmul float %221, %231 ; [#uses=1]
+ %244 = fmul float %224, %230 ; [#uses=1]
+ %245 = fadd float %243, %244 ; [#uses=1]
+ %246 = fmul float %227, %229 ; [#uses=1]
+ %247 = fadd float %245, %246 ; [#uses=1]
+ %248 = fmul float %220, %231 ; [#uses=1]
+ %249 = fmul float %223, %230 ; [#uses=1]
+ %250 = fadd float %248, %249 ; [#uses=1]
+ %251 = fmul float %226, %229 ; [#uses=1]
+ %252 = fadd float %250, %251 ; [#uses=1]
+ %253 = fmul float %222, %234 ; [#uses=1]
+ %254 = fmul float %225, %233 ; [#uses=1]
+ %255 = fadd float %253, %254 ; [#uses=1]
+ %256 = fmul float %228, %232 ; [#uses=1]
+ %257 = fadd float %255, %256 ; [#uses=1]
+ %258 = fmul float %221, %234 ; [#uses=1]
+ %259 = fmul float %224, %233 ; [#uses=1]
+ %260 = fadd float %258, %259 ; [#uses=1]
+ %261 = fmul float %227, %232 ; [#uses=1]
+ %262 = fadd float %260, %261 ; [#uses=1]
+ %263 = fmul float %220, %234 ; [#uses=1]
+ %264 = fmul float %223, %233 ; [#uses=1]
+ %265 = fadd float %263, %264 ; [#uses=1]
+ %266 = fmul float %226, %232 ; [#uses=1]
+ %267 = fadd float %265, %266 ; [#uses=1]
+ %268 = fmul float %222, %237 ; [#uses=1]
+ %269 = fmul float %225, %236 ; [#uses=1]
+ %270 = fadd float %268, %269 ; [#uses=1]
+ %271 = fmul float %228, %235 ; [#uses=1]
+ %272 = fadd float %270, %271 ; [#uses=1]
+ %273 = fmul float %221, %237 ; [#uses=1]
+ %274 = fmul float %224, %236 ; [#uses=1]
+ %275 = fadd float %273, %274 ; [#uses=1]
+ %276 = fmul float %227, %235 ; [#uses=1]
+ %277 = fadd float %275, %276 ; [#uses=1]
+ %278 = fmul float %220, %237 ; [#uses=1]
+ %279 = fmul float %223, %236 ; [#uses=1]
+ %280 = fadd float %278, %279 ; [#uses=1]
+ %281 = fmul float %226, %235 ; [#uses=1]
+ %282 = fadd float %280, %281 ; [#uses=1]
+ %283 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %282, float* %283, align 4
+ %284 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %277, float* %284, align 4
+ %285 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %272, float* %285, align 4
+ %286 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %286, align 4
+ %287 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %267, float* %287, align 4
+ %288 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %262, float* %288, align 4
+ %289 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %257, float* %289, align 4
+ %290 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %290, align 4
+ %291 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %252, float* %291, align 4
+ %292 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %247, float* %292, align 4
+ %293 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %242, float* %293, align 4
+ %294 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %294, align 4
+ %295 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 22 ; [#uses=1]
+ store i32 0, i32* %295, align 4
+ %296 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 24, i32 0, i32 0 ; [#uses=1]
+ %297 = bitcast float* %296 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %297, i8 0, i64 32, i32 4, i1 false)
+ store float %205, float* %206, align 4
+ store float %203, float* %207, align 4
+ store float %201, float* %208, align 4
+ %298 = bitcast float* %209 to i8* ; [#uses=1]
+ call void @llvm.memset.p0i8.i64(i8* %298, i8 0, i64 36, i32 4, i1 false)
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN11btRigidBody19removeConstraintRefEP17btTypedConstraint(%struct.btRigidBody* nocapture %this, %struct.btTypedConstraint* %c) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 3 ; [#uses=3]
+ br label %bb3.i.i
+
+bb.i.i: ; preds = %bb3.i.i
+ %3 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=1]
+ %scevgep.i.i = getelementptr %struct.btTypedConstraint** %3, i32 %7 ; [#uses=1]
+ %4 = load %struct.btTypedConstraint** %scevgep.i.i, align 4 ; [#uses=1]
+ %5 = icmp eq %struct.btTypedConstraint* %4, %c ; [#uses=1]
+ br i1 %5, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit.i, label %bb2.i.i
+
+bb2.i.i: ; preds = %bb.i.i
+ %6 = add nsw i32 %7, 1 ; [#uses=1]
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb2.i.i, %entry
+ %7 = phi i32 [ 0, %entry ], [ %6, %bb2.i.i ] ; [#uses=4]
+ %8 = icmp sgt i32 %1, %7 ; [#uses=1]
+ br i1 %8, label %bb.i.i, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit.i
+
+_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit.i: ; preds = %bb3.i.i, %bb.i.i
+ %index.0.i.i = phi i32 [ %1, %bb3.i.i ], [ %7, %bb.i.i ] ; [#uses=2]
+ %9 = icmp sgt i32 %1, %index.0.i.i ; [#uses=1]
+ br i1 %9, label %bb.i, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE6removeERKS1_.exit
+
+bb.i: ; preds = %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit.i
+ %10 = add nsw i32 %1, -1 ; [#uses=2]
+ %11 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btTypedConstraint** %11, i32 %index.0.i.i ; [#uses=2]
+ %13 = load %struct.btTypedConstraint** %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTypedConstraint** %11, i32 %10 ; [#uses=1]
+ %15 = load %struct.btTypedConstraint** %14, align 4 ; [#uses=1]
+ store %struct.btTypedConstraint* %15, %struct.btTypedConstraint** %12, align 4
+ %16 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTypedConstraint** %16, i32 %10 ; [#uses=1]
+ store %struct.btTypedConstraint* %13, %struct.btTypedConstraint** %17, align 4
+ %18 = load i32* %0, align 4 ; [#uses=1]
+ %19 = add nsw i32 %18, -1 ; [#uses=2]
+ store i32 %19, i32* %0, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE6removeERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE6removeERKS1_.exit: ; preds = %bb.i, %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit.i
+ %20 = phi i32 [ %1, %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit.i ], [ %19, %bb.i ] ; [#uses=1]
+ %21 = icmp sgt i32 %20, 0 ; [#uses=1]
+ %22 = zext i1 %21 to i32 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 24 ; [#uses=1]
+ store i32 %22, i32* %23, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN11btRigidBodyD0Ev(%struct.btRigidBody* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV11btRigidBody, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 3 ; [#uses=3]
+ %2 = load %struct.btTypedConstraint*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btTypedConstraint** %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btTypedConstraint** %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %1, align 4
+ %8 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %10)
+ %11 = bitcast %struct.btRigidBody* %this to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %11)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %12 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %12)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN11btRigidBodyD1Ev(%struct.btRigidBody* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV11btRigidBody, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 3 ; [#uses=3]
+ %2 = load %struct.btTypedConstraint*** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btTypedConstraint** %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btTypedConstraint** %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %1, align 4
+ br label %bb3
+
+invcont1: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %1, align 4
+ %8 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %10)
+ ret void
+
+lpad: ; preds = %bb1.i.i.i
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %11 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %11)
+ to label %invcont1 unwind label %lpad9
+
+lpad9: ; preds = %lpad
+ %eh_ptr10 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define i8* @_ZNK11btRigidBody9serializeEPvP12btSerializer(%struct.btRigidBody* %this, i8* %dataBuffer, %struct.btActionInterface* %serializer) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = tail call i8* @_ZNK17btCollisionObject9serializeEPvP12btSerializer(%struct.btCollisionObject* %0, i8* %dataBuffer, %struct.btActionInterface* %serializer) ; [#uses=0]
+ %2 = getelementptr inbounds i8* %dataBuffer, i32 248 ; [#uses=1]
+ %scevgep.i.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.i = bitcast i8* %2 to float* ; [#uses=1]
+ %scevgep.1.i.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.i = getelementptr i8* %dataBuffer, i32 252 ; [#uses=1]
+ %3 = bitcast i8* %scevgep4.1.i.i to float* ; [#uses=1]
+ %scevgep.2.i.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.i = getelementptr i8* %dataBuffer, i32 256 ; [#uses=1]
+ %4 = bitcast i8* %scevgep4.2.i.i to float* ; [#uses=1]
+ %scevgep.3.i.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.i = getelementptr i8* %dataBuffer, i32 260 ; [#uses=1]
+ %5 = bitcast i8* %scevgep4.3.i.i to float* ; [#uses=1]
+ %6 = load float* %scevgep.i.i, align 4 ; [#uses=1]
+ store float %6, float* %scevgep4.i.i, align 4
+ %7 = load float* %scevgep.1.i.i, align 4 ; [#uses=1]
+ store float %7, float* %3, align 4
+ %8 = load float* %scevgep.2.i.i, align 4 ; [#uses=1]
+ store float %8, float* %4, align 4
+ %9 = load float* %scevgep.3.i.i, align 4 ; [#uses=1]
+ store float %9, float* %5, align 4
+ %scevgep.i.1.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.1.i = getelementptr i8* %dataBuffer, i32 264 ; [#uses=1]
+ %10 = bitcast i8* %scevgep4.i.1.i to float* ; [#uses=1]
+ %scevgep.1.i.1.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.1.i = getelementptr i8* %dataBuffer, i32 268 ; [#uses=1]
+ %11 = bitcast i8* %scevgep4.1.i.1.i to float* ; [#uses=1]
+ %scevgep.2.i.1.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.1.i = getelementptr i8* %dataBuffer, i32 272 ; [#uses=1]
+ %12 = bitcast i8* %scevgep4.2.i.1.i to float* ; [#uses=1]
+ %scevgep.3.i.1.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.1.i = getelementptr i8* %dataBuffer, i32 276 ; [#uses=1]
+ %13 = bitcast i8* %scevgep4.3.i.1.i to float* ; [#uses=1]
+ %14 = load float* %scevgep.i.1.i, align 4 ; [#uses=1]
+ store float %14, float* %10, align 4
+ %15 = load float* %scevgep.1.i.1.i, align 4 ; [#uses=1]
+ store float %15, float* %11, align 4
+ %16 = load float* %scevgep.2.i.1.i, align 4 ; [#uses=1]
+ store float %16, float* %12, align 4
+ %17 = load float* %scevgep.3.i.1.i, align 4 ; [#uses=1]
+ store float %17, float* %13, align 4
+ %scevgep.i.2.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i.2.i = getelementptr i8* %dataBuffer, i32 280 ; [#uses=1]
+ %18 = bitcast i8* %scevgep4.i.2.i to float* ; [#uses=1]
+ %scevgep.1.i.2.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i.2.i = getelementptr i8* %dataBuffer, i32 284 ; [#uses=1]
+ %19 = bitcast i8* %scevgep4.1.i.2.i to float* ; [#uses=1]
+ %scevgep.2.i.2.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i.2.i = getelementptr i8* %dataBuffer, i32 288 ; [#uses=1]
+ %20 = bitcast i8* %scevgep4.2.i.2.i to float* ; [#uses=1]
+ %scevgep.3.i.2.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i.2.i = getelementptr i8* %dataBuffer, i32 292 ; [#uses=1]
+ %21 = bitcast i8* %scevgep4.3.i.2.i to float* ; [#uses=1]
+ %22 = load float* %scevgep.i.2.i, align 4 ; [#uses=1]
+ store float %22, float* %18, align 4
+ %23 = load float* %scevgep.1.i.2.i, align 4 ; [#uses=1]
+ store float %23, float* %19, align 4
+ %24 = load float* %scevgep.2.i.2.i, align 4 ; [#uses=1]
+ store float %24, float* %20, align 4
+ %25 = load float* %scevgep.3.i.2.i, align 4 ; [#uses=1]
+ store float %25, float* %21, align 4
+ %26 = getelementptr inbounds i8* %dataBuffer, i32 296 ; [#uses=1]
+ %scevgep.i58 = getelementptr %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i59 = bitcast i8* %26 to float* ; [#uses=1]
+ %27 = load float* %scevgep.i58, align 4 ; [#uses=1]
+ store float %27, float* %scevgep4.i59, align 4
+ %scevgep.1.i60 = getelementptr %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i61 = getelementptr i8* %dataBuffer, i32 300 ; [#uses=1]
+ %28 = bitcast i8* %scevgep4.1.i61 to float* ; [#uses=1]
+ %29 = load float* %scevgep.1.i60, align 4 ; [#uses=1]
+ store float %29, float* %28, align 4
+ %scevgep.2.i62 = getelementptr %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i63 = getelementptr i8* %dataBuffer, i32 304 ; [#uses=1]
+ %30 = bitcast i8* %scevgep4.2.i63 to float* ; [#uses=1]
+ %31 = load float* %scevgep.2.i62, align 4 ; [#uses=1]
+ store float %31, float* %30, align 4
+ %scevgep.3.i64 = getelementptr %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i65 = getelementptr i8* %dataBuffer, i32 308 ; [#uses=1]
+ %32 = bitcast i8* %scevgep4.3.i65 to float* ; [#uses=1]
+ %33 = load float* %scevgep.3.i64, align 4 ; [#uses=1]
+ store float %33, float* %32, align 4
+ %34 = getelementptr inbounds i8* %dataBuffer, i32 312 ; [#uses=1]
+ %scevgep.i50 = getelementptr %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i51 = bitcast i8* %34 to float* ; [#uses=1]
+ %35 = load float* %scevgep.i50, align 4 ; [#uses=1]
+ store float %35, float* %scevgep4.i51, align 4
+ %scevgep.1.i52 = getelementptr %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i53 = getelementptr i8* %dataBuffer, i32 316 ; [#uses=1]
+ %36 = bitcast i8* %scevgep4.1.i53 to float* ; [#uses=1]
+ %37 = load float* %scevgep.1.i52, align 4 ; [#uses=1]
+ store float %37, float* %36, align 4
+ %scevgep.2.i54 = getelementptr %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i55 = getelementptr i8* %dataBuffer, i32 320 ; [#uses=1]
+ %38 = bitcast i8* %scevgep4.2.i55 to float* ; [#uses=1]
+ %39 = load float* %scevgep.2.i54, align 4 ; [#uses=1]
+ store float %39, float* %38, align 4
+ %scevgep.3.i56 = getelementptr %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i57 = getelementptr i8* %dataBuffer, i32 324 ; [#uses=1]
+ %40 = bitcast i8* %scevgep4.3.i57 to float* ; [#uses=1]
+ %41 = load float* %scevgep.3.i56, align 4 ; [#uses=1]
+ store float %41, float* %40, align 4
+ %42 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 4 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds i8* %dataBuffer, i32 440 ; [#uses=1]
+ %45 = bitcast i8* %44 to float* ; [#uses=1]
+ store float %43, float* %45, align 4
+ %46 = getelementptr inbounds i8* %dataBuffer, i32 328 ; [#uses=1]
+ %scevgep.i42 = getelementptr %struct.btRigidBody* %this, i32 0, i32 26, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i43 = bitcast i8* %46 to float* ; [#uses=1]
+ %47 = load float* %scevgep.i42, align 4 ; [#uses=1]
+ store float %47, float* %scevgep4.i43, align 4
+ %scevgep.1.i44 = getelementptr %struct.btRigidBody* %this, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i45 = getelementptr i8* %dataBuffer, i32 332 ; [#uses=1]
+ %48 = bitcast i8* %scevgep4.1.i45 to float* ; [#uses=1]
+ %49 = load float* %scevgep.1.i44, align 4 ; [#uses=1]
+ store float %49, float* %48, align 4
+ %scevgep.2.i46 = getelementptr %struct.btRigidBody* %this, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i47 = getelementptr i8* %dataBuffer, i32 336 ; [#uses=1]
+ %50 = bitcast i8* %scevgep4.2.i47 to float* ; [#uses=1]
+ %51 = load float* %scevgep.2.i46, align 4 ; [#uses=1]
+ store float %51, float* %50, align 4
+ %scevgep.3.i48 = getelementptr %struct.btRigidBody* %this, i32 0, i32 26, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i49 = getelementptr i8* %dataBuffer, i32 340 ; [#uses=1]
+ %52 = bitcast i8* %scevgep4.3.i49 to float* ; [#uses=1]
+ %53 = load float* %scevgep.3.i48, align 4 ; [#uses=1]
+ store float %53, float* %52, align 4
+ %54 = getelementptr inbounds i8* %dataBuffer, i32 344 ; [#uses=1]
+ %scevgep.i34 = getelementptr %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i35 = bitcast i8* %54 to float* ; [#uses=1]
+ %55 = load float* %scevgep.i34, align 4 ; [#uses=1]
+ store float %55, float* %scevgep4.i35, align 4
+ %scevgep.1.i36 = getelementptr %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i37 = getelementptr i8* %dataBuffer, i32 348 ; [#uses=1]
+ %56 = bitcast i8* %scevgep4.1.i37 to float* ; [#uses=1]
+ %57 = load float* %scevgep.1.i36, align 4 ; [#uses=1]
+ store float %57, float* %56, align 4
+ %scevgep.2.i38 = getelementptr %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i39 = getelementptr i8* %dataBuffer, i32 352 ; [#uses=1]
+ %58 = bitcast i8* %scevgep4.2.i39 to float* ; [#uses=1]
+ %59 = load float* %scevgep.2.i38, align 4 ; [#uses=1]
+ store float %59, float* %58, align 4
+ %scevgep.3.i40 = getelementptr %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i41 = getelementptr i8* %dataBuffer, i32 356 ; [#uses=1]
+ %60 = bitcast i8* %scevgep4.3.i41 to float* ; [#uses=1]
+ %61 = load float* %scevgep.3.i40, align 4 ; [#uses=1]
+ store float %61, float* %60, align 4
+ %62 = getelementptr inbounds i8* %dataBuffer, i32 360 ; [#uses=1]
+ %scevgep.i26 = getelementptr %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i27 = bitcast i8* %62 to float* ; [#uses=1]
+ %63 = load float* %scevgep.i26, align 4 ; [#uses=1]
+ store float %63, float* %scevgep4.i27, align 4
+ %scevgep.1.i28 = getelementptr %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i29 = getelementptr i8* %dataBuffer, i32 364 ; [#uses=1]
+ %64 = bitcast i8* %scevgep4.1.i29 to float* ; [#uses=1]
+ %65 = load float* %scevgep.1.i28, align 4 ; [#uses=1]
+ store float %65, float* %64, align 4
+ %scevgep.2.i30 = getelementptr %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i31 = getelementptr i8* %dataBuffer, i32 368 ; [#uses=1]
+ %66 = bitcast i8* %scevgep4.2.i31 to float* ; [#uses=1]
+ %67 = load float* %scevgep.2.i30, align 4 ; [#uses=1]
+ store float %67, float* %66, align 4
+ %scevgep.3.i32 = getelementptr %struct.btRigidBody* %this, i32 0, i32 6, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i33 = getelementptr i8* %dataBuffer, i32 372 ; [#uses=1]
+ %68 = bitcast i8* %scevgep4.3.i33 to float* ; [#uses=1]
+ %69 = load float* %scevgep.3.i32, align 4 ; [#uses=1]
+ store float %69, float* %68, align 4
+ %70 = getelementptr inbounds i8* %dataBuffer, i32 376 ; [#uses=1]
+ %scevgep.i18 = getelementptr %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i19 = bitcast i8* %70 to float* ; [#uses=1]
+ %71 = load float* %scevgep.i18, align 4 ; [#uses=1]
+ store float %71, float* %scevgep4.i19, align 4
+ %scevgep.1.i20 = getelementptr %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i21 = getelementptr i8* %dataBuffer, i32 380 ; [#uses=1]
+ %72 = bitcast i8* %scevgep4.1.i21 to float* ; [#uses=1]
+ %73 = load float* %scevgep.1.i20, align 4 ; [#uses=1]
+ store float %73, float* %72, align 4
+ %scevgep.2.i22 = getelementptr %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i23 = getelementptr i8* %dataBuffer, i32 384 ; [#uses=1]
+ %74 = bitcast i8* %scevgep4.2.i23 to float* ; [#uses=1]
+ %75 = load float* %scevgep.2.i22, align 4 ; [#uses=1]
+ store float %75, float* %74, align 4
+ %scevgep.3.i24 = getelementptr %struct.btRigidBody* %this, i32 0, i32 7, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i25 = getelementptr i8* %dataBuffer, i32 388 ; [#uses=1]
+ %76 = bitcast i8* %scevgep4.3.i25 to float* ; [#uses=1]
+ %77 = load float* %scevgep.3.i24, align 4 ; [#uses=1]
+ store float %77, float* %76, align 4
+ %78 = getelementptr inbounds i8* %dataBuffer, i32 392 ; [#uses=1]
+ %scevgep.i10 = getelementptr %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i11 = bitcast i8* %78 to float* ; [#uses=1]
+ %79 = load float* %scevgep.i10, align 4 ; [#uses=1]
+ store float %79, float* %scevgep4.i11, align 4
+ %scevgep.1.i12 = getelementptr %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i13 = getelementptr i8* %dataBuffer, i32 396 ; [#uses=1]
+ %80 = bitcast i8* %scevgep4.1.i13 to float* ; [#uses=1]
+ %81 = load float* %scevgep.1.i12, align 4 ; [#uses=1]
+ store float %81, float* %80, align 4
+ %scevgep.2.i14 = getelementptr %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i15 = getelementptr i8* %dataBuffer, i32 400 ; [#uses=1]
+ %82 = bitcast i8* %scevgep4.2.i15 to float* ; [#uses=1]
+ %83 = load float* %scevgep.2.i14, align 4 ; [#uses=1]
+ store float %83, float* %82, align 4
+ %scevgep.3.i16 = getelementptr %struct.btRigidBody* %this, i32 0, i32 8, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i17 = getelementptr i8* %dataBuffer, i32 404 ; [#uses=1]
+ %84 = bitcast i8* %scevgep4.3.i17 to float* ; [#uses=1]
+ %85 = load float* %scevgep.3.i16, align 4 ; [#uses=1]
+ store float %85, float* %84, align 4
+ %86 = getelementptr inbounds i8* %dataBuffer, i32 408 ; [#uses=1]
+ %scevgep.i2 = getelementptr %struct.btRigidBody* %this, i32 0, i32 9, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i3 = bitcast i8* %86 to float* ; [#uses=1]
+ %87 = load float* %scevgep.i2, align 4 ; [#uses=1]
+ store float %87, float* %scevgep4.i3, align 4
+ %scevgep.1.i4 = getelementptr %struct.btRigidBody* %this, i32 0, i32 9, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i5 = getelementptr i8* %dataBuffer, i32 412 ; [#uses=1]
+ %88 = bitcast i8* %scevgep4.1.i5 to float* ; [#uses=1]
+ %89 = load float* %scevgep.1.i4, align 4 ; [#uses=1]
+ store float %89, float* %88, align 4
+ %scevgep.2.i6 = getelementptr %struct.btRigidBody* %this, i32 0, i32 9, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i7 = getelementptr i8* %dataBuffer, i32 416 ; [#uses=1]
+ %90 = bitcast i8* %scevgep4.2.i7 to float* ; [#uses=1]
+ %91 = load float* %scevgep.2.i6, align 4 ; [#uses=1]
+ store float %91, float* %90, align 4
+ %scevgep.3.i8 = getelementptr %struct.btRigidBody* %this, i32 0, i32 9, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i9 = getelementptr i8* %dataBuffer, i32 420 ; [#uses=1]
+ %92 = bitcast i8* %scevgep4.3.i9 to float* ; [#uses=1]
+ %93 = load float* %scevgep.3.i8, align 4 ; [#uses=1]
+ store float %93, float* %92, align 4
+ %94 = getelementptr inbounds i8* %dataBuffer, i32 424 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 10, i32 0, i32 0 ; [#uses=1]
+ %scevgep4.i = bitcast i8* %94 to float* ; [#uses=1]
+ %95 = load float* %scevgep.i, align 4 ; [#uses=1]
+ store float %95, float* %scevgep4.i, align 4
+ %scevgep.1.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 10, i32 0, i32 1 ; [#uses=1]
+ %scevgep4.1.i = getelementptr i8* %dataBuffer, i32 428 ; [#uses=1]
+ %96 = bitcast i8* %scevgep4.1.i to float* ; [#uses=1]
+ %97 = load float* %scevgep.1.i, align 4 ; [#uses=1]
+ store float %97, float* %96, align 4
+ %scevgep.2.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 10, i32 0, i32 2 ; [#uses=1]
+ %scevgep4.2.i = getelementptr i8* %dataBuffer, i32 432 ; [#uses=1]
+ %98 = bitcast i8* %scevgep4.2.i to float* ; [#uses=1]
+ %99 = load float* %scevgep.2.i, align 4 ; [#uses=1]
+ store float %99, float* %98, align 4
+ %scevgep.3.i = getelementptr %struct.btRigidBody* %this, i32 0, i32 10, i32 0, i32 3 ; [#uses=1]
+ %scevgep4.3.i = getelementptr i8* %dataBuffer, i32 436 ; [#uses=1]
+ %100 = bitcast i8* %scevgep4.3.i to float* ; [#uses=1]
+ %101 = load float* %scevgep.3.i, align 4 ; [#uses=1]
+ store float %101, float* %100, align 4
+ %102 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 11 ; [#uses=1]
+ %103 = load float* %102, align 4 ; [#uses=1]
+ %104 = getelementptr inbounds i8* %dataBuffer, i32 444 ; [#uses=1]
+ %105 = bitcast i8* %104 to float* ; [#uses=1]
+ store float %103, float* %105, align 4
+ %106 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 12 ; [#uses=1]
+ %107 = load float* %106, align 4 ; [#uses=1]
+ %108 = getelementptr inbounds i8* %dataBuffer, i32 448 ; [#uses=1]
+ %109 = bitcast i8* %108 to float* ; [#uses=1]
+ store float %107, float* %109, align 4
+ %110 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 13 ; [#uses=1]
+ %111 = load i8* %110, align 4 ; [#uses=1]
+ %112 = zext i8 %111 to i32 ; [#uses=1]
+ %113 = getelementptr inbounds i8* %dataBuffer, i32 476 ; [#uses=1]
+ %114 = bitcast i8* %113 to i32* ; [#uses=1]
+ store i32 %112, i32* %114, align 4
+ %115 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 14 ; [#uses=1]
+ %116 = load float* %115, align 4 ; [#uses=1]
+ %117 = getelementptr inbounds i8* %dataBuffer, i32 452 ; [#uses=1]
+ %118 = bitcast i8* %117 to float* ; [#uses=1]
+ store float %116, float* %118, align 4
+ %119 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 15 ; [#uses=1]
+ %120 = load float* %119, align 4 ; [#uses=1]
+ %121 = getelementptr inbounds i8* %dataBuffer, i32 456 ; [#uses=1]
+ %122 = bitcast i8* %121 to float* ; [#uses=1]
+ store float %120, float* %122, align 4
+ %123 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 16 ; [#uses=1]
+ %124 = load float* %123, align 4 ; [#uses=1]
+ %125 = getelementptr inbounds i8* %dataBuffer, i32 460 ; [#uses=1]
+ %126 = bitcast i8* %125 to float* ; [#uses=1]
+ store float %124, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 17 ; [#uses=1]
+ %128 = load float* %127, align 4 ; [#uses=1]
+ %129 = getelementptr inbounds i8* %dataBuffer, i32 464 ; [#uses=1]
+ %130 = bitcast i8* %129 to float* ; [#uses=1]
+ store float %128, float* %130, align 4
+ %131 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 18 ; [#uses=1]
+ %132 = load float* %131, align 4 ; [#uses=1]
+ %133 = getelementptr inbounds i8* %dataBuffer, i32 468 ; [#uses=1]
+ %134 = bitcast i8* %133 to float* ; [#uses=1]
+ store float %132, float* %134, align 4
+ %135 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 19 ; [#uses=1]
+ %136 = load float* %135, align 4 ; [#uses=1]
+ %137 = getelementptr inbounds i8* %dataBuffer, i32 472 ; [#uses=1]
+ %138 = bitcast i8* %137 to float* ; [#uses=1]
+ store float %136, float* %138, align 4
+ ret i8* getelementptr inbounds ([21 x i8]* @.str68, i32 0, i32 0)
+}
+
+; [#uses=2]
+define void @_ZN11btRigidBody16addConstraintRefEP17btTypedConstraint(%struct.btRigidBody* nocapture %this, %struct.btTypedConstraint* %c) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=9]
+ %2 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 3 ; [#uses=6]
+ br label %bb3.i
+
+bb.i: ; preds = %bb3.i
+ %3 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btTypedConstraint** %3, i32 %7 ; [#uses=1]
+ %4 = load %struct.btTypedConstraint** %scevgep.i, align 4 ; [#uses=1]
+ %5 = icmp eq %struct.btTypedConstraint* %4, %c ; [#uses=1]
+ br i1 %5, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %6 = add nsw i32 %7, 1 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %entry
+ %7 = phi i32 [ 0, %entry ], [ %6, %bb2.i ] ; [#uses=4]
+ %8 = icmp sgt i32 %1, %7 ; [#uses=1]
+ br i1 %8, label %bb.i, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit
+
+_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit: ; preds = %bb3.i, %bb.i
+ %index.0.i = phi i32 [ %1, %bb3.i ], [ %7, %bb.i ] ; [#uses=1]
+ %9 = icmp eq i32 %1, %index.0.i ; [#uses=1]
+ br i1 %9, label %bb, label %bb1
+
+bb: ; preds = %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit
+ %10 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 2 ; [#uses=2]
+ %11 = load i32* %10, align 4 ; [#uses=2]
+ %12 = icmp eq i32 %11, %1 ; [#uses=1]
+ br i1 %12, label %bb.i2, label %bb1.i
+
+bb.i2: ; preds = %bb
+ %13 = icmp eq i32 %1, 0 ; [#uses=1]
+ %14 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.341.0.i.i = select i1 %13, i32 1, i32 %14 ; [#uses=4]
+ %15 = icmp slt i32 %11, %iftmp.341.0.i.i ; [#uses=1]
+ br i1 %15, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i2
+ %16 = icmp eq i32 %iftmp.341.0.i.i, 0 ; [#uses=1]
+ br i1 %16, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %17 = shl i32 %iftmp.341.0.i.i, 2 ; [#uses=1]
+ %18 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %17, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %18 to %struct.btTypedConstraint** ; [#uses=1]
+ %.pre.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %19 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %1, %bb.i.i ] ; [#uses=2]
+ %20 = phi %struct.btTypedConstraint** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %21 = icmp sgt i32 %19, 0 ; [#uses=1]
+ br i1 %21, label %bb.i4.i.i, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i
+ %indvar.i.i.i = phi i32 [ %indvar.next.i.i.i, %bb3.i.i.i ], [ 0, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btTypedConstraint** %20, i32 %indvar.i.i.i ; [#uses=2]
+ %22 = icmp eq %struct.btTypedConstraint** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %22, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %23 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btTypedConstraint** %23, i32 %indvar.i.i.i ; [#uses=1]
+ %24 = load %struct.btTypedConstraint** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btTypedConstraint* %24, %struct.btTypedConstraint** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %19 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE8allocateEi.exit.i.i
+ %25 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=2]
+ %26 = icmp eq %struct.btTypedConstraint** %25, null ; [#uses=1]
+ br i1 %26, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i
+ %27 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 4 ; [#uses=1]
+ %28 = load i8* %27, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %28, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %29 = bitcast %struct.btTypedConstraint** %25 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %29)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %2, align 4
+ br label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE4copyEiiPS1_.exit.i.i
+ %30 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 4 ; [#uses=1]
+ store i8 1, i8* %30, align 4
+ store %struct.btTypedConstraint** %20, %struct.btTypedConstraint*** %2, align 4
+ store i32 %iftmp.341.0.i.i, i32* %10, align 4
+ %.pre5.i = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i.i, %bb.i2, %bb
+ %31 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIP17btTypedConstraintE10deallocateEv.exit.i.i ], [ %1, %bb ], [ %1, %bb.i2 ] ; [#uses=2]
+ %32 = load %struct.btTypedConstraint*** %2, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btTypedConstraint** %32, i32 %31 ; [#uses=2]
+ %34 = icmp eq %struct.btTypedConstraint** %33, null ; [#uses=1]
+ br i1 %34, label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE9push_backERKS1_.exit, label %bb2.i3
+
+bb2.i3: ; preds = %bb1.i
+ store %struct.btTypedConstraint* %c, %struct.btTypedConstraint** %33, align 4
+ %.pre6.i = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP17btTypedConstraintE9push_backERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP17btTypedConstraintE9push_backERKS1_.exit: ; preds = %bb2.i3, %bb1.i
+ %35 = phi i32 [ %31, %bb1.i ], [ %.pre6.i, %bb2.i3 ] ; [#uses=1]
+ %36 = add nsw i32 %35, 1 ; [#uses=1]
+ store i32 %36, i32* %0, align 4
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayIP17btTypedConstraintE9push_backERKS1_.exit, %_ZNK20btAlignedObjectArrayIP17btTypedConstraintE16findLinearSearchERKS1_.exit
+ %37 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 24 ; [#uses=1]
+ store i32 1, i32* %37, align 4
+ ret void
+}
+
+; [#uses=3]
+define void @_ZN11btRigidBody19integrateVelocitiesEf(%struct.btRigidBody* nocapture %this, float %step) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 12 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = and i32 %1, 3 ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb, label %return
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 4 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fmul float %5, %step ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 9, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %8, %6 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 9, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fmul float %11, %6 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 9, i32 0, i32 0 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fmul float %14, %6 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fadd float %17, %15 ; [#uses=1]
+ store float %18, float* %16, align 4
+ %19 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fadd float %20, %12 ; [#uses=1]
+ store float %21, float* %19, align 4
+ %22 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fadd float %23, %9 ; [#uses=1]
+ store float %24, float* %22, align 4
+ %25 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 10, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=3]
+ %29 = fmul float %26, %28 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 10, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=3]
+ %34 = fmul float %31, %33 ; [#uses=1]
+ %35 = fadd float %29, %34 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 10, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=3]
+ %40 = fmul float %37, %39 ; [#uses=1]
+ %41 = fadd float %35, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fmul float %43, %28 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fmul float %46, %33 ; [#uses=1]
+ %48 = fadd float %44, %47 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fmul float %50, %39 ; [#uses=1]
+ %52 = fadd float %48, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = fmul float %54, %28 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = fmul float %57, %33 ; [#uses=1]
+ %59 = fadd float %55, %58 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fmul float %61, %39 ; [#uses=1]
+ %63 = fadd float %59, %62 ; [#uses=1]
+ %64 = fmul float %41, %step ; [#uses=1]
+ %65 = fmul float %52, %step ; [#uses=1]
+ %66 = fmul float %63, %step ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=3]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = fadd float %68, %66 ; [#uses=4]
+ store float %69, float* %67, align 4
+ %70 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=3]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ %72 = fadd float %71, %65 ; [#uses=4]
+ store float %72, float* %70, align 4
+ %73 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=3]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = fadd float %74, %64 ; [#uses=4]
+ store float %75, float* %73, align 4
+ %76 = fmul float %69, %69 ; [#uses=1]
+ %77 = fmul float %72, %72 ; [#uses=1]
+ %78 = fadd float %76, %77 ; [#uses=1]
+ %79 = fmul float %75, %75 ; [#uses=1]
+ %80 = fadd float %78, %79 ; [#uses=1]
+ %81 = tail call float @sqrtf(float %80) nounwind readonly ; [#uses=2]
+ %82 = fmul float %81, %step ; [#uses=1]
+ %83 = fcmp ogt float %82, 0x3FF921FB60000000 ; [#uses=1]
+ br i1 %83, label %bb1, label %return
+
+bb1: ; preds = %bb
+ %84 = fdiv float 0x3FF921FB60000000, %step ; [#uses=1]
+ %85 = fdiv float %84, %81 ; [#uses=3]
+ %86 = fmul float %69, %85 ; [#uses=1]
+ store float %86, float* %67, align 4
+ %87 = fmul float %72, %85 ; [#uses=1]
+ store float %87, float* %70, align 4
+ %88 = fmul float %75, %85 ; [#uses=1]
+ store float %88, float* %73, align 4
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZNK11btRigidBody14getOrientationEv(%struct.btQuaternion* noalias nocapture sret %agg.result, %struct.btRigidBody* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0 ; [#uses=1]
+ tail call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %0, %struct.btQuaternion* %agg.result) nounwind
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN11btRigidBody25internalWritebackVelocityEf(%struct.btRigidBody* %this, float %timeStep) nounwind align 2 {
+entry:
+ %newTransform = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 4 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = fcmp une float %1, 0.000000e+00 ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 24, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = fadd float %4, %6 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 24, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fadd float %9, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 24, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fadd float %14, %16 ; [#uses=1]
+ store float %17, float* %13, align 4
+ store float %12, float* %8, align 4
+ store float %7, float* %3, align 4
+ %18 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 25, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fadd float %20, %22 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 25, i32 0, i32 1 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fadd float %25, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 25, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fadd float %30, %32 ; [#uses=1]
+ store float %33, float* %29, align 4
+ store float %28, float* %24, align 4
+ store float %23, float* %19, align 4
+ %34 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 29 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 28 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ call void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(%struct.btTransform* %37, %struct.btQuadWord* %36, %struct.btQuadWord* %35, float %timeStep, %struct.btTransform* %newTransform)
+ %38 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 8 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 8 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 8 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ %56 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 8 ; [#uses=1]
+ store float %58, float* %56, align 4
+ %59 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %59, align 4
+ %62 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 8 ; [#uses=1]
+ store float %64, float* %62, align 4
+ %65 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ store float %67, float* %65, align 4
+ %68 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 8 ; [#uses=1]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %71, align 4
+ %74 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 8 ; [#uses=1]
+ store float %76, float* %74, align 4
+ %77 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ store float %79, float* %77, align 4
+ %80 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 8 ; [#uses=1]
+ store float %82, float* %80, align 4
+ %83 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btTransform* %newTransform, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ store float %85, float* %83, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=7]
+define void @_ZN11btRigidBody26predictIntegratedTransformEfR11btTransform(%struct.btRigidBody* %this, float %timeStep, %struct.btTransform* nocapture %predictedTransform) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ tail call void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(%struct.btTransform* %2, %struct.btQuadWord* %1, %struct.btQuadWord* %0, float %timeStep, %struct.btTransform* %predictedTransform)
+ ret void
+}
+
+; [#uses=2]
+declare float @llvm.pow.f32(float, float) nounwind readonly
+
+; [#uses=3]
+define void @_ZN11btRigidBody12applyDampingEf(%struct.btRigidBody* %this, float %timeStep) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 11 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = fsub float 1.000000e+00, %1 ; [#uses=1]
+ %3 = tail call float @llvm.pow.f32(float %2, float %timeStep) nounwind ; [#uses=3]
+ %4 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=5]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fmul float %5, %3 ; [#uses=6]
+ store float %6, float* %4, align 4
+ %7 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=5]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %8, %3 ; [#uses=6]
+ store float %9, float* %7, align 4
+ %10 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=5]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fmul float %11, %3 ; [#uses=6]
+ store float %12, float* %10, align 4
+ %13 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 12 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = fsub float 1.000000e+00, %14 ; [#uses=1]
+ %16 = tail call float @llvm.pow.f32(float %15, float %timeStep) nounwind ; [#uses=3]
+ %17 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=5]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fmul float %18, %16 ; [#uses=6]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=5]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fmul float %21, %16 ; [#uses=6]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=5]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = fmul float %24, %16 ; [#uses=6]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 13 ; [#uses=1]
+ %27 = load i8* %26, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %27, 0 ; [#uses=1]
+ br i1 %toBool, label %return, label %bb
+
+bb: ; preds = %entry
+ %28 = fmul float %19, %19 ; [#uses=1]
+ %29 = fmul float %22, %22 ; [#uses=1]
+ %30 = fadd float %28, %29 ; [#uses=1]
+ %31 = fmul float %25, %25 ; [#uses=1]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 16 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = fcmp uge float %32, %34 ; [#uses=1]
+ br i1 %35, label %bb7, label %bb1
+
+bb1: ; preds = %bb
+ %36 = fmul float %6, %6 ; [#uses=1]
+ %37 = fmul float %9, %9 ; [#uses=1]
+ %38 = fadd float %36, %37 ; [#uses=1]
+ %39 = fmul float %12, %12 ; [#uses=1]
+ %40 = fadd float %38, %39 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 15 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=1]
+ %43 = fcmp uge float %40, %42 ; [#uses=1]
+ br i1 %43, label %bb7, label %bb6
+
+bb6: ; preds = %bb1
+ %44 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 14 ; [#uses=1]
+ %45 = load float* %44, align 4 ; [#uses=6]
+ %46 = fmul float %19, %45 ; [#uses=2]
+ store float %46, float* %17, align 4
+ %47 = fmul float %22, %45 ; [#uses=2]
+ store float %47, float* %20, align 4
+ %48 = fmul float %25, %45 ; [#uses=2]
+ store float %48, float* %23, align 4
+ %49 = fmul float %6, %45 ; [#uses=2]
+ store float %49, float* %4, align 4
+ %50 = fmul float %9, %45 ; [#uses=2]
+ store float %50, float* %7, align 4
+ %51 = fmul float %12, %45 ; [#uses=2]
+ store float %51, float* %10, align 4
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb1, %bb
+ %52 = phi float [ %25, %bb ], [ %25, %bb1 ], [ %48, %bb6 ] ; [#uses=4]
+ %53 = phi float [ %22, %bb ], [ %22, %bb1 ], [ %47, %bb6 ] ; [#uses=4]
+ %54 = phi float [ %19, %bb ], [ %19, %bb1 ], [ %46, %bb6 ] ; [#uses=4]
+ %55 = phi float [ %12, %bb ], [ %12, %bb1 ], [ %51, %bb6 ] ; [#uses=4]
+ %56 = phi float [ %9, %bb ], [ %9, %bb1 ], [ %50, %bb6 ] ; [#uses=4]
+ %57 = phi float [ %6, %bb ], [ %6, %bb1 ], [ %49, %bb6 ] ; [#uses=4]
+ %58 = fmul float %57, %57 ; [#uses=1]
+ %59 = fmul float %56, %56 ; [#uses=1]
+ %60 = fadd float %58, %59 ; [#uses=1]
+ %61 = fmul float %55, %55 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=1]
+ %63 = tail call float @sqrtf(float %62) nounwind readonly ; [#uses=3]
+ %64 = fcmp ogt float %1, %63 ; [#uses=1]
+ br i1 %64, label %bb8, label %bb11
+
+bb8: ; preds = %bb7
+ %65 = fcmp ogt float %63, 0x3F747AE140000000 ; [#uses=1]
+ br i1 %65, label %bb9, label %bb10
+
+bb9: ; preds = %bb8
+ %66 = fdiv float 1.000000e+00, %63 ; [#uses=3]
+ %67 = fmul float %55, %66 ; [#uses=1]
+ %68 = fmul float %56, %66 ; [#uses=1]
+ %69 = fmul float %57, %66 ; [#uses=1]
+ %70 = fmul float %67, 0x3F747AE140000000 ; [#uses=1]
+ %71 = fmul float %68, 0x3F747AE140000000 ; [#uses=1]
+ %72 = fmul float %69, 0x3F747AE140000000 ; [#uses=1]
+ %73 = fsub float %57, %72 ; [#uses=1]
+ store float %73, float* %4, align 4
+ %74 = fsub float %56, %71 ; [#uses=1]
+ store float %74, float* %7, align 4
+ %75 = fsub float %55, %70 ; [#uses=1]
+ store float %75, float* %10, align 4
+ br label %bb11
+
+bb10: ; preds = %bb8
+ store float 0.000000e+00, float* %4, align 4
+ store float 0.000000e+00, float* %7, align 4
+ store float 0.000000e+00, float* %10, align 4
+ %76 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %76, align 4
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb9, %bb7
+ %77 = fmul float %54, %54 ; [#uses=1]
+ %78 = fmul float %53, %53 ; [#uses=1]
+ %79 = fadd float %77, %78 ; [#uses=1]
+ %80 = fmul float %52, %52 ; [#uses=1]
+ %81 = fadd float %79, %80 ; [#uses=1]
+ %82 = tail call float @sqrtf(float %81) nounwind readonly ; [#uses=3]
+ %83 = fcmp ogt float %14, %82 ; [#uses=1]
+ br i1 %83, label %bb12, label %return
+
+bb12: ; preds = %bb11
+ %84 = fcmp ogt float %82, 0x3F747AE140000000 ; [#uses=1]
+ br i1 %84, label %bb13, label %bb15
+
+bb13: ; preds = %bb12
+ %85 = fdiv float 1.000000e+00, %82 ; [#uses=3]
+ %86 = fmul float %52, %85 ; [#uses=1]
+ %87 = fmul float %53, %85 ; [#uses=1]
+ %88 = fmul float %54, %85 ; [#uses=1]
+ %89 = fmul float %86, 0x3F747AE140000000 ; [#uses=1]
+ %90 = fmul float %87, 0x3F747AE140000000 ; [#uses=1]
+ %91 = fmul float %88, 0x3F747AE140000000 ; [#uses=1]
+ %92 = fsub float %54, %91 ; [#uses=1]
+ store float %92, float* %17, align 4
+ %93 = fsub float %53, %90 ; [#uses=1]
+ store float %93, float* %20, align 4
+ %94 = fsub float %52, %89 ; [#uses=1]
+ store float %94, float* %23, align 4
+ ret void
+
+bb15: ; preds = %bb12
+ store float 0.000000e+00, float* %17, align 4
+ store float 0.000000e+00, float* %20, align 4
+ store float 0.000000e+00, float* %23, align 4
+ %95 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %95, align 4
+ ret void
+
+return: ; preds = %bb11, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN11btRigidBody18saveKinematicStateEf(%struct.btRigidBody* %this, float %timeStep) align 2 {
+entry:
+ %axis.i = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %angle.i = alloca float, align 4 ; [#uses=2]
+ %0 = fcmp une float %timeStep, 0.000000e+00 ; [#uses=1]
+ br i1 %0, label %bb, label %return
+
+bb: ; preds = %entry
+ %1 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 20 ; [#uses=1]
+ %2 = load %struct.btActionInterface** %1, align 4 ; [#uses=3]
+ %3 = icmp eq %struct.btActionInterface* %2, null ; [#uses=1]
+ br i1 %3, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %4 = getelementptr inbounds %struct.btActionInterface* %2, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 2 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = bitcast i32 (...)* %7 to void (%struct.btActionInterface*, %struct.btTransform*)* ; [#uses=1]
+ call void %9(%struct.btActionInterface* %2, %struct.btTransform* %8)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %10 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=2]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=2]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fsub float %13, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=2]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fsub float %18, %20 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=2]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=2]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fsub float %23, %25 ; [#uses=1]
+ %27 = fdiv float 1.000000e+00, %timeStep ; [#uses=6]
+ %28 = fmul float %16, %27 ; [#uses=1]
+ %29 = fmul float %21, %27 ; [#uses=1]
+ %30 = fmul float %26, %27 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ store float %30, float* %31, align 4
+ %32 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ store float %29, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ store float %28, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %34, align 4
+ call void @_ZN15btTransformUtil22calculateDiffAxisAngleERK11btTransformS2_R9btVector3Rf(%struct.btTransform* %11, %struct.btTransform* %10, %struct.btQuadWord* %axis.i, float* %angle.i) nounwind
+ %35 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %36 = load float* %35, align 8 ; [#uses=1]
+ %37 = load float* %angle.i, align 4 ; [#uses=3]
+ %38 = fmul float %36, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = fmul float %40, %37 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %axis.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 8 ; [#uses=1]
+ %44 = fmul float %43, %37 ; [#uses=1]
+ %45 = fmul float %38, %27 ; [#uses=2]
+ %46 = fmul float %41, %27 ; [#uses=2]
+ %47 = fmul float %44, %27 ; [#uses=2]
+ %48 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %47, float* %48, align 4
+ %49 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %46, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %45, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %51, align 4
+ %52 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %53 = load float* %31, align 4 ; [#uses=1]
+ store float %53, float* %52, align 4
+ %54 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %32, align 4 ; [#uses=1]
+ store float %55, float* %54, align 4
+ %56 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %33, align 4 ; [#uses=1]
+ store float %57, float* %56, align 4
+ %58 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %59 = load float* %34, align 4 ; [#uses=1]
+ store float %59, float* %58, align 4
+ %60 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %47, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %46, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %45, float* %62, align 4
+ %63 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %63, align 4
+ %64 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ store float %66, float* %64, align 4
+ %67 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=1]
+ store float %69, float* %67, align 4
+ %70 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ store float %72, float* %70, align 4
+ %73 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ store float %75, float* %73, align 4
+ %76 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ store float %78, float* %76, align 4
+ %79 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ store float %81, float* %79, align 4
+ %82 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %84 = load float* %83, align 4 ; [#uses=1]
+ store float %84, float* %82, align 4
+ %85 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ store float %87, float* %85, align 4
+ %88 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ store float %90, float* %88, align 4
+ %91 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ store float %93, float* %91, align 4
+ %94 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ store float %96, float* %94, align 4
+ %97 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %98 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ store float %99, float* %97, align 4
+ %100 = load float* %22, align 4 ; [#uses=1]
+ store float %100, float* %24, align 4
+ %101 = load float* %17, align 4 ; [#uses=1]
+ store float %101, float* %19, align 4
+ %102 = load float* %12, align 4 ; [#uses=1]
+ store float %102, float* %14, align 4
+ %103 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ store float %105, float* %103, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN11btRigidBodyC2EfP13btMotionStateP16btCollisionShapeRK9btVector3(%struct.btRigidBody* %this, float %mass, %struct.btActionInterface* %motionState, %struct.btCollisionShape* %collisionShape, %struct.btQuadWord* nocapture %localInertia) align 2 {
+invcont:
+ %cinfo = alloca %"struct.btRigidBody::btRigidBodyConstructionInfo", align 8 ; [#uses=35]
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0 ; [#uses=2]
+ call void @_ZN17btCollisionObjectC2Ev(%struct.btCollisionObject* %0)
+ %1 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV11btRigidBody, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 4 ; [#uses=3]
+ store i8 1, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 3 ; [#uses=4]
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %3, align 4
+ %4 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 1 ; [#uses=2]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 2 ; [#uses=2]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 0 ; [#uses=1]
+ store float %mass, float* %6, align 8
+ %7 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %motionState, %struct.btActionInterface** %7, align 4
+ %8 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 3 ; [#uses=1]
+ store %struct.btCollisionShape* %collisionShape, %struct.btCollisionShape** %8, align 8
+ %9 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %localInertia, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %localInertia, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %localInertia, i32 0, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %localInertia, i32 0, i32 0, i32 3 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 6 ; [#uses=1]
+ store float 0.000000e+00, float* %22, align 8
+ %23 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 7 ; [#uses=1]
+ store float 5.000000e-01, float* %23, align 4
+ %24 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 8 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 8
+ %25 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 9 ; [#uses=1]
+ store float 0x3FE99999A0000000, float* %25, align 4
+ %26 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 10 ; [#uses=1]
+ store float 1.000000e+00, float* %26, align 8
+ %27 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 11 ; [#uses=1]
+ store i8 0, i8* %27, align 4
+ %28 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 12 ; [#uses=1]
+ store float 0x3F747AE140000000, float* %28, align 8
+ %29 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 13 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %29, align 4
+ %30 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 14 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %30, align 8
+ %31 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 15 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %31, align 4
+ %32 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %32, align 8
+ %33 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %33, align 4
+ %34 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %34, align 8
+ %35 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 8
+ %37 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %37, align 4
+ %38 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %38, align 8
+ %39 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %39, align 4
+ %40 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %40, align 8
+ %41 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 4
+ %42 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %42, align 8
+ %43 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %43, align 4
+ %44 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %44, align 8
+ %45 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %45, align 4
+ %46 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %46, align 8
+ %47 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %47, align 4
+ invoke void @_ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(%struct.btRigidBody* %this, %"struct.btRigidBody::btRigidBodyConstructionInfo"* %cinfo)
+ to label %return unwind label %lpad12
+
+invcont7: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr13)
+ unreachable
+
+return: ; preds = %invcont
+ ret void
+
+lpad12: ; preds = %invcont
+ %eh_ptr13 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select15 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %48 = load %struct.btTypedConstraint*** %3, align 4 ; [#uses=2]
+ %49 = icmp eq %struct.btTypedConstraint** %48, null ; [#uses=1]
+ br i1 %49, label %ppad, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad12
+ %50 = load i8* %2, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %50, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %51 = bitcast %struct.btTypedConstraint** %48 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %51)
+ to label %bb2.i.i.i unwind label %lpad16
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %3, align 4
+ br label %ppad
+
+lpad16: ; preds = %bb1.i.i.i
+ %eh_ptr17 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select19 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr17, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad20: ; preds = %ppad
+ %eh_ptr21 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select23 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr21, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i, %lpad12
+ store i8 1, i8* %2, align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %3, align 4
+ store i32 0, i32* %4, align 4
+ store i32 0, i32* %5, align 4
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %0)
+ to label %invcont7 unwind label %lpad20
+}
+
+; [#uses=3]
+define void @_ZN11btRigidBodyC1EfP13btMotionStateP16btCollisionShapeRK9btVector3(%struct.btRigidBody* %this, float %mass, %struct.btActionInterface* %motionState, %struct.btCollisionShape* %collisionShape, %struct.btQuadWord* nocapture %localInertia) align 2 {
+entry:
+ tail call void @_ZN11btRigidBodyC2EfP13btMotionStateP16btCollisionShapeRK9btVector3(%struct.btRigidBody* %this, float %mass, %struct.btActionInterface* %motionState, %struct.btCollisionShape* %collisionShape, %struct.btQuadWord* %localInertia)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN11btRigidBodyC2ERKNS_27btRigidBodyConstructionInfoE(%struct.btRigidBody* %this, %"struct.btRigidBody::btRigidBodyConstructionInfo"* nocapture %constructionInfo) align 2 {
+invcont:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0 ; [#uses=2]
+ tail call void @_ZN17btCollisionObjectC2Ev(%struct.btCollisionObject* %0)
+ %1 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV11btRigidBody, i32 0, i32 2), i32 (...)*** %1, align 4
+ %2 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 4 ; [#uses=3]
+ store i8 1, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 3 ; [#uses=4]
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %3, align 4
+ %4 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 1 ; [#uses=2]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 21, i32 2 ; [#uses=2]
+ store i32 0, i32* %5, align 4
+ invoke void @_ZN11btRigidBody14setupRigidBodyERKNS_27btRigidBodyConstructionInfoE(%struct.btRigidBody* %this, %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo)
+ to label %return unwind label %lpad12
+
+invcont7: ; preds = %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr13)
+ unreachable
+
+return: ; preds = %invcont
+ ret void
+
+lpad12: ; preds = %invcont
+ %eh_ptr13 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select15 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %6 = load %struct.btTypedConstraint*** %3, align 4 ; [#uses=2]
+ %7 = icmp eq %struct.btTypedConstraint** %6, null ; [#uses=1]
+ br i1 %7, label %ppad, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %lpad12
+ %8 = load i8* %2, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %8, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %9 = bitcast %struct.btTypedConstraint** %6 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %9)
+ to label %bb2.i.i.i unwind label %lpad16
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %3, align 4
+ br label %ppad
+
+lpad16: ; preds = %bb1.i.i.i
+ %eh_ptr17 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select19 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr17, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad20: ; preds = %ppad
+ %eh_ptr21 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select23 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr21, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i, %lpad12
+ store i8 1, i8* %2, align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** %3, align 4
+ store i32 0, i32* %4, align 4
+ store i32 0, i32* %5, align 4
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* %0)
+ to label %invcont7 unwind label %lpad20
+}
+
+; [#uses=3]
+define void @_ZN11btRigidBodyC1ERKNS_27btRigidBodyConstructionInfoE(%struct.btRigidBody* %this, %"struct.btRigidBody::btRigidBodyConstructionInfo"* nocapture %constructionInfo) align 2 {
+entry:
+ tail call void @_ZN11btRigidBodyC2ERKNS_27btRigidBodyConstructionInfoE(%struct.btRigidBody* %this, %"struct.btRigidBody::btRigidBodyConstructionInfo"* %constructionInfo)
+ ret void
+}
+
+; [#uses=0]
+define void @btBulletDynamicsProbe() nounwind readnone {
+entry:
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr i32 @_ZNK21btSimpleDynamicsWorld12getWorldTypeEv(%struct.btSimpleDynamicsWorld* nocapture %this) nounwind readnone align 2 {
+entry:
+ ret i32 1
+}
+
+; [#uses=1]
+define void @_ZNK21btSimpleDynamicsWorld10getGravityEv(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btSimpleDynamicsWorld* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ ret void
+}
+
+; [#uses=1]
+define %struct.btActionInterface* @_ZN21btSimpleDynamicsWorld19getConstraintSolverEv(%struct.btSimpleDynamicsWorld* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.btActionInterface** %0, align 4 ; [#uses=1]
+ ret %struct.btActionInterface* %1
+}
+
+; [#uses=1]
+define void @_ZN21btSimpleDynamicsWorld23synchronizeMotionStatesEv(%struct.btSimpleDynamicsWorld* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb8, %bb.nph
+ %i.012 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb8 ] ; [#uses=2]
+ %tmp = add i32 %i.012, 1 ; [#uses=2]
+ %4 = load %struct.btCollisionObject*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %4, i32 %i.012 ; [#uses=1]
+ %5 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=5]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 19 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %7, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ %8 = icmp eq %struct.btCollisionObject* %5, null ; [#uses=1]
+ %or.cond = or i1 %toBool.i, %8 ; [#uses=1]
+ br i1 %or.cond, label %bb8, label %bb1
+
+bb1: ; preds = %bb
+ %9 = getelementptr inbounds %struct.btCollisionObject* %5, i32 1, i32 15 ; [#uses=1]
+ %10 = bitcast i32* %9 to %struct.btActionInterface** ; [#uses=1]
+ %11 = load %struct.btActionInterface** %10, align 4 ; [#uses=3]
+ %12 = icmp eq %struct.btActionInterface* %11, null ; [#uses=1]
+ br i1 %12, label %bb8, label %bb5
+
+bb5: ; preds = %bb1
+ %13 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 15 ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=1]
+ %15 = icmp eq i32 %14, 2 ; [#uses=1]
+ br i1 %15, label %bb8, label %bb7
+
+bb7: ; preds = %bb5
+ %16 = getelementptr inbounds %struct.btActionInterface* %11, i32 0, i32 0 ; [#uses=1]
+ %17 = load i32 (...)*** %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds i32 (...)** %17, i32 3 ; [#uses=1]
+ %19 = load i32 (...)** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 1 ; [#uses=1]
+ %21 = bitcast i32 (...)* %19 to void (%struct.btActionInterface*, %struct.btTransform*)* ; [#uses=1]
+ tail call void %21(%struct.btActionInterface* %11, %struct.btTransform* %20)
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb5, %bb1, %bb
+ %22 = load i32* %0, align 4 ; [#uses=1]
+ %23 = icmp sgt i32 %22, %tmp ; [#uses=1]
+ br i1 %23, label %bb, label %return
+
+return: ; preds = %bb8, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btSimpleDynamicsWorld11updateAabbsEv(%struct.btSimpleDynamicsWorld* nocapture %this) align 2 {
+entry:
+ %minAabb = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %maxAabb = alloca %struct.btQuadWord, align 8 ; [#uses=2]
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 5 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb18, %bb.nph
+ %i.024 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb18 ] ; [#uses=2]
+ %tmp = add i32 %i.024, 1 ; [#uses=2]
+ %6 = load %struct.btCollisionObject*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %6, i32 %i.024 ; [#uses=1]
+ %7 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=7]
+ %8 = getelementptr inbounds %struct.btCollisionObject* %7, i32 0, i32 19 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %9, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ %10 = icmp eq %struct.btCollisionObject* %7, null ; [#uses=1]
+ %or.cond = or i1 %toBool.i, %10 ; [#uses=1]
+ br i1 %or.cond, label %bb18, label %bb1
+
+bb1: ; preds = %bb
+ %11 = getelementptr inbounds %struct.btCollisionObject* %7, i32 0, i32 15 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ switch i32 %12, label %bb5 [
+ i32 2, label %bb18
+ i32 5, label %bb18
+ ]
+
+bb5: ; preds = %bb1
+ %13 = getelementptr inbounds %struct.btCollisionObject* %7, i32 0, i32 12 ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=1]
+ %15 = and i32 %14, 1 ; [#uses=1]
+ %toBool9not = icmp eq i32 %15, 0 ; [#uses=1]
+ br i1 %toBool9not, label %bb17, label %bb18
+
+bb17: ; preds = %bb5
+ %16 = getelementptr inbounds %struct.btCollisionObject* %7, i32 0, i32 9 ; [#uses=1]
+ %17 = load %struct.btCollisionShape** %16, align 4 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btCollisionShape* %17, i32 0, i32 0 ; [#uses=1]
+ %19 = load i32 (...)*** %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i32 (...)** %19, i32 2 ; [#uses=1]
+ %21 = load i32 (...)** %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btCollisionObject* %7, i32 0, i32 1 ; [#uses=1]
+ %23 = bitcast i32 (...)* %21 to void (%struct.btCollisionShape*, %struct.btTransform*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %23(%struct.btCollisionShape* %17, %struct.btTransform* %22, %struct.btQuadWord* %minAabb, %struct.btQuadWord* %maxAabb)
+ %24 = load %struct.btActionInterface** %4, align 4 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btActionInterface* %24, i32 0, i32 0 ; [#uses=1]
+ %26 = load i32 (...)*** %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds i32 (...)** %26, i32 4 ; [#uses=1]
+ %28 = load i32 (...)** %27, align 4 ; [#uses=1]
+ %29 = load %struct.btActionInterface** %5, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btCollisionObject* %7, i32 0, i32 8 ; [#uses=1]
+ %31 = load %struct.btBroadphaseProxy** %30, align 4 ; [#uses=1]
+ %32 = bitcast i32 (...)* %28 to void (%struct.btActionInterface*, %struct.btBroadphaseProxy*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btActionInterface*)* ; [#uses=1]
+ call void %32(%struct.btActionInterface* %24, %struct.btBroadphaseProxy* %31, %struct.btQuadWord* %minAabb, %struct.btQuadWord* %maxAabb, %struct.btActionInterface* %29)
+ br label %bb18
+
+bb18: ; preds = %bb17, %bb5, %bb1, %bb1, %bb
+ %33 = load i32* %0, align 4 ; [#uses=1]
+ %34 = icmp sgt i32 %33, %tmp ; [#uses=1]
+ br i1 %34, label %bb, label %return
+
+return: ; preds = %bb18, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btSimpleDynamicsWorld11clearForcesEv(%struct.btSimpleDynamicsWorld* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb2, %bb.nph
+ %i.05 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb2 ] ; [#uses=2]
+ %tmp = add i32 %i.05, 1 ; [#uses=2]
+ %4 = load %struct.btCollisionObject*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %4, i32 %i.05 ; [#uses=1]
+ %5 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 19 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %7, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ %8 = icmp eq %struct.btCollisionObject* %5, null ; [#uses=1]
+ %or.cond = or i1 %toBool.i, %8 ; [#uses=1]
+ br i1 %or.cond, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %9 = getelementptr inbounds %struct.btCollisionObject* %5, i32 1, i32 4, i32 0, i32 0 ; [#uses=1]
+ %10 = bitcast float* %9 to i8* ; [#uses=1]
+ tail call void @llvm.memset.p0i8.i64(i8* %10, i8 0, i64 32, i32 4, i1 false) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %11 = load i32* %0, align 4 ; [#uses=1]
+ %12 = icmp sgt i32 %11, %tmp ; [#uses=1]
+ br i1 %12, label %bb, label %return
+
+return: ; preds = %bb2, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btSimpleDynamicsWorld19setConstraintSolverEP18btConstraintSolver(%struct.btSimpleDynamicsWorld* nocapture %this, %struct.btActionInterface* %solver) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 1 ; [#uses=1]
+ %3 = load %struct.btActionInterface** %2, align 4 ; [#uses=1]
+ %4 = bitcast %struct.btActionInterface* %3 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %4)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ store i8 0, i8* %0, align 4
+ %5 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %solver, %struct.btActionInterface** %5, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btSimpleDynamicsWorld25predictUnconstraintMotionEf(%struct.btSimpleDynamicsWorld* nocapture %this, float %timeStep) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb7, %bb.nph
+ %i.013 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb7 ] ; [#uses=2]
+ %tmp = add i32 %i.013, 1 ; [#uses=2]
+ %4 = load %struct.btCollisionObject*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %4, i32 %i.013 ; [#uses=1]
+ %5 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=6]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 19 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %7, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb7, label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+
+_ZN11btRigidBody6upcastEP17btCollisionObject.exit: ; preds = %bb
+ %8 = bitcast %struct.btCollisionObject* %5 to %struct.btRigidBody* ; [#uses=4]
+ %9 = icmp eq %struct.btCollisionObject* %5, null ; [#uses=1]
+ br i1 %9, label %bb7, label %bb1
+
+bb1: ; preds = %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+ %10 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 12 ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ %12 = and i32 %11, 1 ; [#uses=1]
+ %toBoolnot = icmp eq i32 %12, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb4, label %bb7
+
+bb4: ; preds = %bb1
+ %13 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 15 ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=1]
+ switch i32 %14, label %bb6 [
+ i32 2, label %bb7
+ i32 5, label %bb7
+ ]
+
+bb6: ; preds = %bb4
+ tail call void @_ZN11btRigidBody12applyGravityEv(%struct.btRigidBody* %8)
+ tail call void @_ZN11btRigidBody19integrateVelocitiesEf(%struct.btRigidBody* %8, float %timeStep)
+ tail call void @_ZN11btRigidBody12applyDampingEf(%struct.btRigidBody* %8, float %timeStep)
+ %15 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 2 ; [#uses=1]
+ tail call void @_ZN11btRigidBody26predictIntegratedTransformEfR11btTransform(%struct.btRigidBody* %8, float %timeStep, %struct.btTransform* %15)
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb4, %bb4, %bb1, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit, %bb
+ %16 = load i32* %0, align 4 ; [#uses=1]
+ %17 = icmp sgt i32 %16, %tmp ; [#uses=1]
+ br i1 %17, label %bb, label %return
+
+return: ; preds = %bb7, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btSimpleDynamicsWorld19integrateTransformsEf(%struct.btSimpleDynamicsWorld* nocapture %this, float %timeStep) align 2 {
+entry:
+ %predictedTrans = alloca %struct.btTransform, align 8 ; [#uses=2]
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb18, %bb.nph
+ %i.024 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb18 ] ; [#uses=2]
+ %tmp = add i32 %i.024, 1 ; [#uses=2]
+ %4 = load %struct.btCollisionObject*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %4, i32 %i.024 ; [#uses=1]
+ %5 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=5]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 19 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %7, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb18, label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+
+_ZN11btRigidBody6upcastEP17btCollisionObject.exit: ; preds = %bb
+ %8 = bitcast %struct.btCollisionObject* %5 to %struct.btRigidBody* ; [#uses=2]
+ %9 = icmp eq %struct.btCollisionObject* %5, null ; [#uses=1]
+ br i1 %9, label %bb18, label %bb1
+
+bb1: ; preds = %_ZN11btRigidBody6upcastEP17btCollisionObject.exit
+ %10 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 15 ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ switch i32 %11, label %bb5 [
+ i32 2, label %bb18
+ i32 5, label %bb18
+ ]
+
+bb5: ; preds = %bb1
+ %12 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 12 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = and i32 %13, 1 ; [#uses=1]
+ %toBool9not = icmp eq i32 %14, 0 ; [#uses=1]
+ br i1 %toBool9not, label %bb17, label %bb18
+
+bb17: ; preds = %bb5
+ call void @_ZN11btRigidBody26predictIntegratedTransformEfR11btTransform(%struct.btRigidBody* %8, float %timeStep, %struct.btTransform* %predictedTrans)
+ call void @_ZN11btRigidBody18proceedToTransformERK11btTransform(%struct.btRigidBody* %8, %struct.btTransform* %predictedTrans)
+ br label %bb18
+
+bb18: ; preds = %bb17, %bb5, %bb1, %bb1, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit, %bb
+ %15 = load i32* %0, align 4 ; [#uses=1]
+ %16 = icmp sgt i32 %15, %tmp ; [#uses=1]
+ br i1 %16, label %bb, label %return
+
+return: ; preds = %bb18, %entry
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZN21btSimpleDynamicsWorld14stepSimulationEfif(%struct.btSimpleDynamicsWorld* %this, float %timeStep, i32 %maxSubSteps, float %fixedTimeStep) align 2 {
+entry:
+ %predictedTrans.i = alloca %struct.btTransform, align 8 ; [#uses=2]
+ %infoGlobal = alloca %struct.btContactSolverInfo, align 8 ; [#uses=20]
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses=4]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph.i, label %_ZN21btSimpleDynamicsWorld25predictUnconstraintMotionEf.exit
+
+bb.nph.i: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %bb7.i, %bb.nph.i
+ %i.013.i = phi i32 [ 0, %bb.nph.i ], [ %tmp.i, %bb7.i ] ; [#uses=2]
+ %tmp.i = add i32 %i.013.i, 1 ; [#uses=2]
+ %4 = load %struct.btCollisionObject*** %3, align 4 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btCollisionObject** %4, i32 %i.013.i ; [#uses=1]
+ %5 = load %struct.btCollisionObject** %scevgep.i, align 4 ; [#uses=6]
+ %6 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 19 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %.lobit.i.i = and i32 %7, 2 ; [#uses=1]
+ %toBool.i.i = icmp eq i32 %.lobit.i.i, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb7.i, label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit.i
+
+_ZN11btRigidBody6upcastEP17btCollisionObject.exit.i: ; preds = %bb.i
+ %8 = bitcast %struct.btCollisionObject* %5 to %struct.btRigidBody* ; [#uses=4]
+ %9 = icmp eq %struct.btCollisionObject* %5, null ; [#uses=1]
+ br i1 %9, label %bb7.i, label %bb1.i
+
+bb1.i: ; preds = %_ZN11btRigidBody6upcastEP17btCollisionObject.exit.i
+ %10 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 12 ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ %12 = and i32 %11, 1 ; [#uses=1]
+ %toBoolnot.i = icmp eq i32 %12, 0 ; [#uses=1]
+ br i1 %toBoolnot.i, label %bb4.i, label %bb7.i
+
+bb4.i: ; preds = %bb1.i
+ %13 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 15 ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=1]
+ switch i32 %14, label %bb6.i [
+ i32 2, label %bb7.i
+ i32 5, label %bb7.i
+ ]
+
+bb6.i: ; preds = %bb4.i
+ call void @_ZN11btRigidBody12applyGravityEv(%struct.btRigidBody* %8)
+ call void @_ZN11btRigidBody19integrateVelocitiesEf(%struct.btRigidBody* %8, float %timeStep)
+ call void @_ZN11btRigidBody12applyDampingEf(%struct.btRigidBody* %8, float %timeStep)
+ %15 = getelementptr inbounds %struct.btCollisionObject* %5, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN11btRigidBody26predictIntegratedTransformEfR11btTransform(%struct.btRigidBody* %8, float %timeStep, %struct.btTransform* %15)
+ br label %bb7.i
+
+bb7.i: ; preds = %bb6.i, %bb4.i, %bb4.i, %bb1.i, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit.i, %bb.i
+ %16 = load i32* %0, align 4 ; [#uses=1]
+ %17 = icmp sgt i32 %16, %tmp.i ; [#uses=1]
+ br i1 %17, label %bb.i, label %_ZN21btSimpleDynamicsWorld25predictUnconstraintMotionEf.exit
+
+_ZN21btSimpleDynamicsWorld25predictUnconstraintMotionEf.exit: ; preds = %bb7.i, %entry
+ %18 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 3, i32 0 ; [#uses=1]
+ store float %timeStep, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %19, align 4
+ %20 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=5]
+ %21 = load i32 (...)*** %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds i32 (...)** %21, i32 4 ; [#uses=1]
+ %23 = load i32 (...)** %22, align 4 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ %25 = bitcast i32 (...)* %23 to %struct.btActionInterface* (%struct.btCollisionWorld*)* ; [#uses=1]
+ %26 = call %struct.btActionInterface* %25(%struct.btCollisionWorld* %24) ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 3, i32 5 ; [#uses=1]
+ store %struct.btActionInterface* %26, %struct.btActionInterface** %27, align 4
+ %28 = load i32 (...)*** %20, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds i32 (...)** %28, i32 10 ; [#uses=1]
+ %30 = load i32 (...)** %29, align 4 ; [#uses=1]
+ %31 = bitcast i32 (...)* %30 to void (%struct.btCollisionWorld*)* ; [#uses=1]
+ call void %31(%struct.btCollisionWorld* %24)
+ %32 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 2 ; [#uses=3]
+ %33 = load %struct.btActionInterface** %32, align 4 ; [#uses=2]
+ %34 = getelementptr inbounds %struct.btActionInterface* %33, i32 0, i32 0 ; [#uses=1]
+ %35 = load i32 (...)*** %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds i32 (...)** %35, i32 9 ; [#uses=1]
+ %37 = load i32 (...)** %36, align 4 ; [#uses=1]
+ %38 = bitcast i32 (...)* %37 to i32 (%struct.btActionInterface*)* ; [#uses=1]
+ %39 = call i32 %38(%struct.btActionInterface* %33) ; [#uses=3]
+ %40 = icmp eq i32 %39, 0 ; [#uses=1]
+ br i1 %40, label %bb1, label %bb
+
+bb: ; preds = %_ZN21btSimpleDynamicsWorld25predictUnconstraintMotionEf.exit
+ %41 = load %struct.btActionInterface** %32, align 4 ; [#uses=2]
+ %42 = getelementptr inbounds %struct.btActionInterface* %41, i32 0, i32 0 ; [#uses=1]
+ %43 = load i32 (...)*** %42, align 4 ; [#uses=1]
+ %44 = getelementptr inbounds i32 (...)** %43, i32 11 ; [#uses=1]
+ %45 = load i32 (...)** %44, align 4 ; [#uses=1]
+ %46 = bitcast %struct.btActionInterface* %41 to %struct.btCollisionDispatcher* ; [#uses=1]
+ %47 = bitcast i32 (...)* %45 to %struct.btPersistentManifold** (%struct.btCollisionDispatcher*)* ; [#uses=1]
+ %48 = call %struct.btPersistentManifold** %47(%struct.btCollisionDispatcher* %46) ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0x3FE3333340000000, float* %49, align 8
+ %50 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %51, align 8
+ %52 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 4 ; [#uses=1]
+ store float 0.000000e+00, float* %52, align 8
+ %53 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 6 ; [#uses=1]
+ store float 2.000000e+01, float* %53, align 8
+ %54 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 5 ; [#uses=1]
+ store i32 10, i32* %54, align 4
+ %55 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 8 ; [#uses=1]
+ store float 0x3FC99999A0000000, float* %55, align 8
+ %56 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 9 ; [#uses=1]
+ store float 0x3FB99999A0000000, float* %56, align 4
+ %57 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 10 ; [#uses=1]
+ store float 0.000000e+00, float* %57, align 8
+ %58 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 7 ; [#uses=1]
+ store float 1.000000e+00, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 11 ; [#uses=1]
+ store i32 0, i32* %59, align 4
+ %60 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 12 ; [#uses=1]
+ store float 0xBF947AE140000000, float* %60, align 8
+ %61 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 14 ; [#uses=1]
+ store float 0x3FEB333340000000, float* %62, align 8
+ %63 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 15 ; [#uses=1]
+ store i32 260, i32* %63, align 4
+ %64 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 16 ; [#uses=1]
+ store i32 2, i32* %64, align 8
+ %65 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 17 ; [#uses=1]
+ store i32 128, i32* %65, align 4
+ %66 = getelementptr inbounds %struct.btContactSolverInfo* %infoGlobal, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float %timeStep, float* %66, align 4
+ %67 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 1 ; [#uses=3]
+ %68 = load %struct.btActionInterface** %67, align 4 ; [#uses=2]
+ %69 = getelementptr inbounds %struct.btActionInterface* %68, i32 0, i32 0 ; [#uses=1]
+ %70 = load i32 (...)*** %69, align 4 ; [#uses=1]
+ %71 = getelementptr inbounds i32 (...)** %70, i32 2 ; [#uses=1]
+ %72 = load i32 (...)** %71, align 4 ; [#uses=1]
+ %73 = bitcast i32 (...)* %72 to void (%struct.btActionInterface*, i32, i32)* ; [#uses=1]
+ call void %73(%struct.btActionInterface* %68, i32 0, i32 %39)
+ %74 = load %struct.btActionInterface** %67, align 4 ; [#uses=2]
+ %75 = getelementptr inbounds %struct.btActionInterface* %74, i32 0, i32 0 ; [#uses=1]
+ %76 = load i32 (...)*** %75, align 4 ; [#uses=1]
+ %77 = getelementptr inbounds i32 (...)** %76, i32 3 ; [#uses=1]
+ %78 = load i32 (...)** %77, align 4 ; [#uses=1]
+ %79 = load %struct.btActionInterface** %32, align 4 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 4 ; [#uses=2]
+ %81 = load %struct.btStackAlloc** %80, align 4 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 6 ; [#uses=2]
+ %83 = load %struct.btActionInterface** %82, align 4 ; [#uses=1]
+ %84 = bitcast i32 (...)* %78 to float (%struct.btActionInterface*, %struct.btCollisionObject**, i32, %struct.btPersistentManifold**, i32, %struct.btTypedConstraint**, i32, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*, %struct.btActionInterface*)* ; [#uses=1]
+ %85 = call float %84(%struct.btActionInterface* %74, %struct.btCollisionObject** null, i32 0, %struct.btPersistentManifold** %48, i32 %39, %struct.btTypedConstraint** null, i32 0, %struct.btContactSolverInfo* %infoGlobal, %struct.btActionInterface* %83, %struct.btStackAlloc* %81, %struct.btActionInterface* %79) ; [#uses=0]
+ %86 = load %struct.btActionInterface** %67, align 4 ; [#uses=2]
+ %87 = getelementptr inbounds %struct.btActionInterface* %86, i32 0, i32 0 ; [#uses=1]
+ %88 = load i32 (...)*** %87, align 4 ; [#uses=1]
+ %89 = getelementptr inbounds i32 (...)** %88, i32 4 ; [#uses=1]
+ %90 = load i32 (...)** %89, align 4 ; [#uses=1]
+ %91 = load %struct.btStackAlloc** %80, align 4 ; [#uses=1]
+ %92 = load %struct.btActionInterface** %82, align 4 ; [#uses=1]
+ %93 = bitcast i32 (...)* %90 to void (%struct.btActionInterface*, %struct.btContactSolverInfo*, %struct.btActionInterface*, %struct.btStackAlloc*)* ; [#uses=1]
+ call void %93(%struct.btActionInterface* %86, %struct.btContactSolverInfo* %infoGlobal, %struct.btActionInterface* %92, %struct.btStackAlloc* %91)
+ br label %bb1
+
+bb1: ; preds = %bb, %_ZN21btSimpleDynamicsWorld25predictUnconstraintMotionEf.exit
+ %94 = load i32* %0, align 4 ; [#uses=1]
+ %95 = icmp sgt i32 %94, 0 ; [#uses=1]
+ br i1 %95, label %bb.nph.i3, label %_ZN21btSimpleDynamicsWorld19integrateTransformsEf.exit
+
+bb.nph.i3: ; preds = %bb1
+ %96 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb.i8
+
+bb.i8: ; preds = %bb18.i, %bb.nph.i3
+ %i.024.i = phi i32 [ 0, %bb.nph.i3 ], [ %tmp.i4, %bb18.i ] ; [#uses=2]
+ %tmp.i4 = add i32 %i.024.i, 1 ; [#uses=2]
+ %97 = load %struct.btCollisionObject*** %96, align 4 ; [#uses=1]
+ %scevgep.i5 = getelementptr %struct.btCollisionObject** %97, i32 %i.024.i ; [#uses=1]
+ %98 = load %struct.btCollisionObject** %scevgep.i5, align 4 ; [#uses=5]
+ %99 = getelementptr inbounds %struct.btCollisionObject* %98, i32 0, i32 19 ; [#uses=1]
+ %100 = load i32* %99, align 4 ; [#uses=1]
+ %.lobit.i.i6 = and i32 %100, 2 ; [#uses=1]
+ %toBool.i.i7 = icmp eq i32 %.lobit.i.i6, 0 ; [#uses=1]
+ br i1 %toBool.i.i7, label %bb18.i, label %_ZN11btRigidBody6upcastEP17btCollisionObject.exit.i9
+
+_ZN11btRigidBody6upcastEP17btCollisionObject.exit.i9: ; preds = %bb.i8
+ %101 = bitcast %struct.btCollisionObject* %98 to %struct.btRigidBody* ; [#uses=2]
+ %102 = icmp eq %struct.btCollisionObject* %98, null ; [#uses=1]
+ br i1 %102, label %bb18.i, label %bb1.i10
+
+bb1.i10: ; preds = %_ZN11btRigidBody6upcastEP17btCollisionObject.exit.i9
+ %103 = getelementptr inbounds %struct.btCollisionObject* %98, i32 0, i32 15 ; [#uses=1]
+ %104 = load i32* %103, align 4 ; [#uses=1]
+ switch i32 %104, label %bb5.i [
+ i32 2, label %bb18.i
+ i32 5, label %bb18.i
+ ]
+
+bb5.i: ; preds = %bb1.i10
+ %105 = getelementptr inbounds %struct.btCollisionObject* %98, i32 0, i32 12 ; [#uses=1]
+ %106 = load i32* %105, align 4 ; [#uses=1]
+ %107 = and i32 %106, 1 ; [#uses=1]
+ %toBool9not.i = icmp eq i32 %107, 0 ; [#uses=1]
+ br i1 %toBool9not.i, label %bb17.i, label %bb18.i
+
+bb17.i: ; preds = %bb5.i
+ call void @_ZN11btRigidBody26predictIntegratedTransformEfR11btTransform(%struct.btRigidBody* %101, float %timeStep, %struct.btTransform* %predictedTrans.i)
+ call void @_ZN11btRigidBody18proceedToTransformERK11btTransform(%struct.btRigidBody* %101, %struct.btTransform* %predictedTrans.i)
+ br label %bb18.i
+
+bb18.i: ; preds = %bb17.i, %bb5.i, %bb1.i10, %bb1.i10, %_ZN11btRigidBody6upcastEP17btCollisionObject.exit.i9, %bb.i8
+ %108 = load i32* %0, align 4 ; [#uses=1]
+ %109 = icmp sgt i32 %108, %tmp.i4 ; [#uses=1]
+ br i1 %109, label %bb.i8, label %_ZN21btSimpleDynamicsWorld19integrateTransformsEf.exit
+
+_ZN21btSimpleDynamicsWorld19integrateTransformsEf.exit: ; preds = %bb18.i, %bb1
+ %110 = load i32 (...)*** %20, align 4 ; [#uses=1]
+ %111 = getelementptr inbounds i32 (...)** %110, i32 2 ; [#uses=1]
+ %112 = load i32 (...)** %111, align 4 ; [#uses=1]
+ %113 = bitcast i32 (...)* %112 to void (%struct.btSimpleDynamicsWorld*)* ; [#uses=1]
+ call void %113(%struct.btSimpleDynamicsWorld* %this)
+ %114 = load i32 (...)*** %20, align 4 ; [#uses=1]
+ %115 = getelementptr inbounds i32 (...)** %114, i32 19 ; [#uses=1]
+ %116 = load i32 (...)** %115, align 4 ; [#uses=1]
+ %117 = bitcast i32 (...)* %116 to void (%struct.btSimpleDynamicsWorld*)* ; [#uses=1]
+ call void %117(%struct.btSimpleDynamicsWorld* %this)
+ %118 = load i32 (...)*** %20, align 4 ; [#uses=1]
+ %119 = getelementptr inbounds i32 (...)** %118, i32 28 ; [#uses=1]
+ %120 = load i32 (...)** %119, align 4 ; [#uses=1]
+ %121 = bitcast i32 (...)* %120 to void (%struct.btSimpleDynamicsWorld*)* ; [#uses=1]
+ call void %121(%struct.btSimpleDynamicsWorld* %this)
+ ret i32 1
+}
+
+; [#uses=1]
+define void @_ZN21btSimpleDynamicsWorld12addRigidBodyEP11btRigidBody(%struct.btSimpleDynamicsWorld* %this, %struct.btRigidBody* %body) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3 ; [#uses=1]
+ tail call void @_ZN11btRigidBody10setGravityERK9btVector3(%struct.btRigidBody* %body, %struct.btQuadWord* %0)
+ %1 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0, i32 9 ; [#uses=1]
+ %2 = load %struct.btCollisionShape** %1, align 4 ; [#uses=1]
+ %3 = icmp eq %struct.btCollisionShape* %2, null ; [#uses=1]
+ br i1 %3, label %return, label %bb
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 8 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %10 = bitcast i32 (...)* %7 to void (%struct.btCollisionWorld*, %struct.btCollisionObject*, i16, i16)* ; [#uses=1]
+ tail call void %10(%struct.btCollisionWorld* %9, %struct.btCollisionObject* %8, i16 signext 1, i16 signext -1)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btSimpleDynamicsWorld10setGravityERK9btVector3(%struct.btSimpleDynamicsWorld* nocapture %this, %struct.btQuadWord* %gravity) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btQuadWord* %gravity, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %0, align 4
+ %3 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %gravity, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ store float %5, float* %3, align 4
+ %6 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %gravity, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %gravity, i32 0, i32 0, i32 3 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 1 ; [#uses=2]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = icmp sgt i32 %13, 0 ; [#uses=1]
+ br i1 %14, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %15 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb2, %bb.nph
+ %i.05 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb2 ] ; [#uses=2]
+ %tmp = add i32 %i.05, 1 ; [#uses=2]
+ %16 = load %struct.btCollisionObject*** %15, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btCollisionObject** %16, i32 %i.05 ; [#uses=1]
+ %17 = load %struct.btCollisionObject** %scevgep, align 4 ; [#uses=3]
+ %18 = getelementptr inbounds %struct.btCollisionObject* %17, i32 0, i32 19 ; [#uses=1]
+ %19 = load i32* %18, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %19, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ %20 = icmp eq %struct.btCollisionObject* %17, null ; [#uses=1]
+ %or.cond = or i1 %toBool.i, %20 ; [#uses=1]
+ br i1 %or.cond, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %21 = bitcast %struct.btCollisionObject* %17 to %struct.btRigidBody* ; [#uses=1]
+ tail call void @_ZN11btRigidBody10setGravityERK9btVector3(%struct.btRigidBody* %21, %struct.btQuadWord* %gravity)
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %22 = load i32* %12, align 4 ; [#uses=1]
+ %23 = icmp sgt i32 %22, %tmp ; [#uses=1]
+ br i1 %23, label %bb, label %return
+
+return: ; preds = %bb2, %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btSimpleDynamicsWorld21removeCollisionObjectEP17btCollisionObject(%struct.btSimpleDynamicsWorld* %this, %struct.btCollisionObject* %collisionObject) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btCollisionObject* %collisionObject, i32 0, i32 19 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %1, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ %2 = icmp eq %struct.btCollisionObject* %collisionObject, null ; [#uses=1]
+ %or.cond = or i1 %toBool.i, %2 ; [#uses=1]
+ br i1 %or.cond, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %3 = bitcast %struct.btCollisionObject* %collisionObject to %struct.btRigidBody* ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32 (...)*** %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds i32 (...)** %5, i32 21 ; [#uses=1]
+ %7 = load i32 (...)** %6, align 4 ; [#uses=1]
+ %8 = bitcast i32 (...)* %7 to void (%struct.btSimpleDynamicsWorld*, %struct.btRigidBody*)* ; [#uses=1]
+ tail call void %8(%struct.btSimpleDynamicsWorld* %this, %struct.btRigidBody* %3)
+ ret void
+
+bb1: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject(%struct.btCollisionWorld* %9, %struct.btCollisionObject* %collisionObject)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btSimpleDynamicsWorld15removeRigidBodyEP11btRigidBody(%struct.btSimpleDynamicsWorld* %this, %struct.btRigidBody* %body) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %body, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorld21removeCollisionObjectEP17btCollisionObject(%struct.btCollisionWorld* %1, %struct.btCollisionObject* %0)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN21btSimpleDynamicsWorldD0Ev(%struct.btSimpleDynamicsWorld* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV21btSimpleDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 2 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 1 ; [#uses=1]
+ %4 = load %struct.btActionInterface** %3, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btActionInterface* %4 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %bb4 unwind label %lpad
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb4: ; preds = %bb, %entry
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV15btDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %6 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %6)
+ %7 = bitcast %struct.btSimpleDynamicsWorld* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %7) nounwind
+ ret void
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV15btDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %8 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %8)
+ to label %invcont2 unwind label %lpad11
+
+lpad11: ; preds = %lpad
+ %eh_ptr12 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select14 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr12, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN21btSimpleDynamicsWorldD1Ev(%struct.btSimpleDynamicsWorld* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV21btSimpleDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 2 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 1 ; [#uses=1]
+ %4 = load %struct.btActionInterface** %3, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btActionInterface* %4 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %bb4 unwind label %lpad
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb4: ; preds = %bb, %entry
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV15btDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %6 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %6)
+ ret void
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV15btDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %7 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %7)
+ to label %invcont2 unwind label %lpad11
+
+lpad11: ; preds = %lpad
+ %eh_ptr12 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select14 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr12, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN21btSimpleDynamicsWorldD2Ev(%struct.btSimpleDynamicsWorld* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV21btSimpleDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 2 ; [#uses=1]
+ %2 = load i8* %1, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 1 ; [#uses=1]
+ %4 = load %struct.btActionInterface** %3, align 4 ; [#uses=1]
+ %5 = bitcast %struct.btActionInterface* %4 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %5)
+ to label %bb4 unwind label %lpad
+
+invcont2: ; preds = %lpad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+
+bb4: ; preds = %bb, %entry
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV15btDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %6 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %6)
+ ret void
+
+lpad: ; preds = %bb
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select10 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV15btDynamicsWorld, i32 0, i32 2), i32 (...)*** %0, align 4
+ %7 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN16btCollisionWorldD2Ev(%struct.btCollisionWorld* %7)
+ to label %invcont2 unwind label %lpad11
+
+lpad11: ; preds = %lpad
+ %eh_ptr12 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select14 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr12, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define void @_ZN21btSimpleDynamicsWorldC1EP12btDispatcherP21btBroadphaseInterfaceP18btConstraintSolverP24btCollisionConfiguration(%struct.btSimpleDynamicsWorld* %this, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %constraintSolver, %struct.btActionInterface* %collisionConfiguration) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorldC2EP12btDispatcherP21btBroadphaseInterfaceP24btCollisionConfiguration(%struct.btCollisionWorld* %0, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %collisionConfiguration)
+ %1 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store void (%struct.btDynamicsWorld*, float)* null, void (%struct.btDynamicsWorld*, float)** %2, align 4
+ %3 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store void (%struct.btDynamicsWorld*, float)* null, void (%struct.btDynamicsWorld*, float)** %3, align 4
+ %4 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store i8* null, i8** %4, align 4
+ %5 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float 0x3FE3333340000000, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 4 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 6 ; [#uses=1]
+ store float 2.000000e+01, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 5 ; [#uses=1]
+ store i32 10, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 8 ; [#uses=1]
+ store float 0x3FC99999A0000000, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 9 ; [#uses=1]
+ store float 0x3FB99999A0000000, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 10 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 7 ; [#uses=1]
+ store float 1.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 11 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 12 ; [#uses=1]
+ store float 0xBF947AE140000000, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 14 ; [#uses=1]
+ store float 0x3FEB333340000000, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 15 ; [#uses=1]
+ store i32 260, i32* %19, align 4
+ %20 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 16 ; [#uses=1]
+ store i32 2, i32* %20, align 4
+ %21 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 17 ; [#uses=1]
+ store i32 128, i32* %21, align 4
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV21btSimpleDynamicsWorld, i32 0, i32 2), i32 (...)*** %1, align 4
+ %22 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %constraintSolver, %struct.btActionInterface** %22, align 4
+ %23 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 2 ; [#uses=1]
+ store i8 0, i8* %23, align 4
+ %24 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float -1.000000e+01, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN21btSimpleDynamicsWorldC2EP12btDispatcherP21btBroadphaseInterfaceP18btConstraintSolverP24btCollisionConfiguration(%struct.btSimpleDynamicsWorld* %this, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %constraintSolver, %struct.btActionInterface* %collisionConfiguration) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ tail call void @_ZN16btCollisionWorldC2EP12btDispatcherP21btBroadphaseInterfaceP24btCollisionConfiguration(%struct.btCollisionWorld* %0, %struct.btActionInterface* %dispatcher, %struct.btActionInterface* %pairCache, %struct.btActionInterface* %collisionConfiguration)
+ %1 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store void (%struct.btDynamicsWorld*, float)* null, void (%struct.btDynamicsWorld*, float)** %2, align 4
+ %3 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store void (%struct.btDynamicsWorld*, float)* null, void (%struct.btDynamicsWorld*, float)** %3, align 4
+ %4 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ store i8* null, i8** %4, align 4
+ %5 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float 0x3FE3333340000000, float* %5, align 4
+ %6 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float 0x3FD3333340000000, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 4 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 6 ; [#uses=1]
+ store float 2.000000e+01, float* %9, align 4
+ %10 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 5 ; [#uses=1]
+ store i32 10, i32* %10, align 4
+ %11 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 8 ; [#uses=1]
+ store float 0x3FC99999A0000000, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 9 ; [#uses=1]
+ store float 0x3FB99999A0000000, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 10 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 4
+ %14 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 7 ; [#uses=1]
+ store float 1.000000e+00, float* %14, align 4
+ %15 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 11 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 12 ; [#uses=1]
+ store float 0xBF947AE140000000, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ %18 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 14 ; [#uses=1]
+ store float 0x3FEB333340000000, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 15 ; [#uses=1]
+ store i32 260, i32* %19, align 4
+ %20 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 16 ; [#uses=1]
+ store i32 2, i32* %20, align 4
+ %21 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 0, i32 4, i32 0, i32 17 ; [#uses=1]
+ store i32 128, i32* %21, align 4
+ store i32 (...)** getelementptr inbounds ([35 x i32 (...)*]* @_ZTV21btSimpleDynamicsWorld, i32 0, i32 2), i32 (...)*** %1, align 4
+ %22 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* %constraintSolver, %struct.btActionInterface** %22, align 4
+ %23 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 2 ; [#uses=1]
+ store i8 0, i8* %23, align 4
+ %24 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float -1.000000e+01, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btSimpleDynamicsWorld* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ ret void
+}
+
+; [#uses=0]
+define %struct.btHashInt* @plNewBulletSdk() {
+entry:
+ %0 = tail call i8* @_Z22btAlignedAllocInternalji(i32 32, i32 16) ; [#uses=10]
+ %1 = icmp eq i8* %0, null ; [#uses=1]
+ br i1 %1, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %2 = bitcast i8* %0 to float* ; [#uses=1]
+ store float -1.000000e+03, float* %2, align 4
+ %3 = getelementptr inbounds i8* %0, i32 4 ; [#uses=1]
+ %4 = bitcast i8* %3 to float* ; [#uses=1]
+ store float -1.000000e+03, float* %4, align 4
+ %5 = getelementptr inbounds i8* %0, i32 8 ; [#uses=1]
+ %6 = bitcast i8* %5 to float* ; [#uses=1]
+ store float -1.000000e+03, float* %6, align 4
+ %7 = getelementptr inbounds i8* %0, i32 12 ; [#uses=1]
+ %8 = bitcast i8* %7 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds i8* %0, i32 16 ; [#uses=1]
+ %10 = bitcast i8* %9 to float* ; [#uses=1]
+ store float 1.000000e+03, float* %10, align 4
+ %11 = getelementptr inbounds i8* %0, i32 20 ; [#uses=1]
+ %12 = bitcast i8* %11 to float* ; [#uses=1]
+ store float 1.000000e+03, float* %12, align 4
+ %13 = getelementptr inbounds i8* %0, i32 24 ; [#uses=1]
+ %14 = bitcast i8* %13 to float* ; [#uses=1]
+ store float 1.000000e+03, float* %14, align 4
+ %15 = getelementptr inbounds i8* %0, i32 28 ; [#uses=1]
+ %16 = bitcast i8* %15 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 4
+ br label %bb2
+
+bb2: ; preds = %bb, %entry
+ %iftmp.454.0 = bitcast i8* %0 to %struct.btHashInt* ; [#uses=1]
+ ret %struct.btHashInt* %iftmp.454.0
+}
+
+; [#uses=0]
+define void @plStepSimulation(%struct.btHashInt* %world, float %timeStep) {
+entry:
+ %0 = bitcast %struct.btHashInt* %world to %struct.btDynamicsWorld* ; [#uses=1]
+ %1 = bitcast %struct.btHashInt* %world to i32 (...)*** ; [#uses=1]
+ %2 = load i32 (...)*** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds i32 (...)** %2, i32 12 ; [#uses=1]
+ %4 = load i32 (...)** %3, align 4 ; [#uses=1]
+ %5 = bitcast i32 (...)* %4 to i32 (%struct.btDynamicsWorld*, float, i32, float)* ; [#uses=1]
+ %6 = tail call i32 %5(%struct.btDynamicsWorld* %0, float %timeStep, i32 1, float 0x3F91111120000000) ; [#uses=0]
+ ret void
+}
+
+; [#uses=0]
+define void @plAddRigidBody(%struct.btHashInt* %world, %struct.btHashInt* %object) {
+entry:
+ %0 = bitcast %struct.btHashInt* %world to %struct.btDynamicsWorld* ; [#uses=1]
+ %1 = bitcast %struct.btHashInt* %object to %struct.btRigidBody* ; [#uses=1]
+ %2 = bitcast %struct.btHashInt* %world to i32 (...)*** ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 20 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btDynamicsWorld*, %struct.btRigidBody*)* ; [#uses=1]
+ tail call void %6(%struct.btDynamicsWorld* %0, %struct.btRigidBody* %1)
+ ret void
+}
+
+; [#uses=0]
+define void @plRemoveRigidBody(%struct.btHashInt* %world, %struct.btHashInt* %object) {
+entry:
+ %0 = bitcast %struct.btHashInt* %world to %struct.btDynamicsWorld* ; [#uses=1]
+ %1 = bitcast %struct.btHashInt* %object to %struct.btRigidBody* ; [#uses=1]
+ %2 = bitcast %struct.btHashInt* %world to i32 (...)*** ; [#uses=1]
+ %3 = load i32 (...)*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32 (...)** %3, i32 21 ; [#uses=1]
+ %5 = load i32 (...)** %4, align 4 ; [#uses=1]
+ %6 = bitcast i32 (...)* %5 to void (%struct.btDynamicsWorld*, %struct.btRigidBody*)* ; [#uses=1]
+ tail call void %6(%struct.btDynamicsWorld* %0, %struct.btRigidBody* %1)
+ ret void
+}
+
+; [#uses=0]
+define noalias %struct.btHashInt* @plNewMeshInterface() nounwind readnone {
+entry:
+ ret %struct.btHashInt* null
+}
+
+; [#uses=0]
+define void @plSetScaling(%struct.btHashInt* %cshape, float* nocapture %cscaling) {
+entry:
+ %scaling = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = bitcast %struct.btHashInt* %cshape to %struct.btCollisionShape* ; [#uses=1]
+ %1 = getelementptr inbounds float* %cscaling, i32 2 ; [#uses=1]
+ %2 = getelementptr inbounds float* %cscaling, i32 1 ; [#uses=1]
+ %3 = load float* %cscaling, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %3, float* %4, align 8
+ %5 = load float* %2, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %5, float* %6, align 4
+ %7 = load float* %1, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %7, float* %8, align 8
+ %9 = getelementptr inbounds %struct.btQuadWord* %scaling, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ %10 = bitcast %struct.btHashInt* %cshape to i32 (...)*** ; [#uses=1]
+ %11 = load i32 (...)*** %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds i32 (...)** %11, i32 6 ; [#uses=1]
+ %13 = load i32 (...)** %12, align 4 ; [#uses=1]
+ %14 = bitcast i32 (...)* %13 to void (%struct.btCollisionShape*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %14(%struct.btCollisionShape* %0, %struct.btQuadWord* %scaling)
+ ret void
+}
+
+; [#uses=0]
+define void @plSetPosition(%struct.btHashInt* nocapture %object, float* nocapture %position) nounwind {
+entry:
+ %0 = getelementptr inbounds float* %position, i32 2 ; [#uses=1]
+ %1 = getelementptr inbounds float* %position, i32 1 ; [#uses=1]
+ %2 = load float* %position, align 4 ; [#uses=1]
+ %3 = load float* %1, align 4 ; [#uses=1]
+ %4 = load float* %0, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btHashInt* %object, i32 13 ; [#uses=1]
+ %6 = bitcast %struct.btHashInt* %5 to float* ; [#uses=1]
+ store float %2, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btHashInt* %object, i32 14 ; [#uses=1]
+ %8 = bitcast %struct.btHashInt* %7 to float* ; [#uses=1]
+ store float %3, float* %8, align 4
+ %9 = getelementptr inbounds %struct.btHashInt* %object, i32 15 ; [#uses=1]
+ %10 = bitcast %struct.btHashInt* %9 to float* ; [#uses=1]
+ store float %4, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btHashInt* %object, i32 16 ; [#uses=1]
+ %12 = bitcast %struct.btHashInt* %11 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @plSetOrientation(%struct.btHashInt* nocapture %object, float* nocapture %orientation) nounwind {
+entry:
+ %0 = getelementptr inbounds float* %orientation, i32 3 ; [#uses=1]
+ %1 = getelementptr inbounds float* %orientation, i32 2 ; [#uses=1]
+ %2 = getelementptr inbounds float* %orientation, i32 1 ; [#uses=1]
+ %3 = load float* %orientation, align 4 ; [#uses=6]
+ %4 = load float* %2, align 4 ; [#uses=5]
+ %5 = load float* %1, align 4 ; [#uses=4]
+ %6 = load float* %0, align 4 ; [#uses=5]
+ %7 = fmul float %3, %3 ; [#uses=1]
+ %8 = fmul float %4, %4 ; [#uses=1]
+ %9 = fadd float %7, %8 ; [#uses=1]
+ %10 = fmul float %5, %5 ; [#uses=1]
+ %11 = fadd float %9, %10 ; [#uses=1]
+ %12 = fmul float %6, %6 ; [#uses=1]
+ %13 = fadd float %11, %12 ; [#uses=1]
+ %14 = fdiv float 2.000000e+00, %13 ; [#uses=3]
+ %15 = fmul float %3, %14 ; [#uses=2]
+ %16 = fmul float %4, %14 ; [#uses=3]
+ %17 = fmul float %5, %14 ; [#uses=4]
+ %18 = fmul float %6, %15 ; [#uses=2]
+ %19 = fmul float %6, %16 ; [#uses=2]
+ %20 = fmul float %6, %17 ; [#uses=2]
+ %21 = fmul float %3, %15 ; [#uses=2]
+ %22 = fmul float %3, %16 ; [#uses=2]
+ %23 = fmul float %3, %17 ; [#uses=2]
+ %24 = fmul float %4, %16 ; [#uses=2]
+ %25 = fmul float %4, %17 ; [#uses=2]
+ %26 = fmul float %5, %17 ; [#uses=2]
+ %27 = fadd float %21, %24 ; [#uses=1]
+ %28 = fsub float 1.000000e+00, %27 ; [#uses=1]
+ %29 = fadd float %25, %18 ; [#uses=1]
+ %30 = fsub float %23, %19 ; [#uses=1]
+ %31 = fsub float %25, %18 ; [#uses=1]
+ %32 = fadd float %21, %26 ; [#uses=1]
+ %33 = fsub float 1.000000e+00, %32 ; [#uses=1]
+ %34 = fadd float %22, %20 ; [#uses=1]
+ %35 = fadd float %23, %19 ; [#uses=1]
+ %36 = fsub float %22, %20 ; [#uses=1]
+ %37 = fadd float %24, %26 ; [#uses=1]
+ %38 = fsub float 1.000000e+00, %37 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btHashInt* %object, i32 1 ; [#uses=1]
+ %40 = bitcast %struct.btHashInt* %39 to float* ; [#uses=1]
+ store float %38, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btHashInt* %object, i32 2 ; [#uses=1]
+ %42 = bitcast %struct.btHashInt* %41 to float* ; [#uses=1]
+ store float %36, float* %42, align 4
+ %43 = getelementptr inbounds %struct.btHashInt* %object, i32 3 ; [#uses=1]
+ %44 = bitcast %struct.btHashInt* %43 to float* ; [#uses=1]
+ store float %35, float* %44, align 4
+ %45 = getelementptr inbounds %struct.btHashInt* %object, i32 4 ; [#uses=1]
+ %46 = bitcast %struct.btHashInt* %45 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %46, align 4
+ %47 = getelementptr inbounds %struct.btHashInt* %object, i32 5 ; [#uses=1]
+ %48 = bitcast %struct.btHashInt* %47 to float* ; [#uses=1]
+ store float %34, float* %48, align 4
+ %49 = getelementptr inbounds %struct.btHashInt* %object, i32 6 ; [#uses=1]
+ %50 = bitcast %struct.btHashInt* %49 to float* ; [#uses=1]
+ store float %33, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btHashInt* %object, i32 7 ; [#uses=1]
+ %52 = bitcast %struct.btHashInt* %51 to float* ; [#uses=1]
+ store float %31, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btHashInt* %object, i32 8 ; [#uses=1]
+ %54 = bitcast %struct.btHashInt* %53 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %54, align 4
+ %55 = getelementptr inbounds %struct.btHashInt* %object, i32 9 ; [#uses=1]
+ %56 = bitcast %struct.btHashInt* %55 to float* ; [#uses=1]
+ store float %30, float* %56, align 4
+ %57 = getelementptr inbounds %struct.btHashInt* %object, i32 10 ; [#uses=1]
+ %58 = bitcast %struct.btHashInt* %57 to float* ; [#uses=1]
+ store float %29, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btHashInt* %object, i32 11 ; [#uses=1]
+ %60 = bitcast %struct.btHashInt* %59 to float* ; [#uses=1]
+ store float %28, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btHashInt* %object, i32 12 ; [#uses=1]
+ %62 = bitcast %struct.btHashInt* %61 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %62, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @plSetOpenGLMatrix(%struct.btHashInt* nocapture %object, float* nocapture %matrix) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btHashInt* %object, i32 1 ; [#uses=1]
+ %1 = getelementptr inbounds float* %matrix, i32 8 ; [#uses=1]
+ %2 = getelementptr inbounds float* %matrix, i32 4 ; [#uses=1]
+ %3 = load float* %matrix, align 4 ; [#uses=1]
+ %4 = bitcast %struct.btHashInt* %0 to float* ; [#uses=1]
+ store float %3, float* %4, align 4
+ %5 = load float* %2, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btHashInt* %object, i32 2 ; [#uses=1]
+ %7 = bitcast %struct.btHashInt* %6 to float* ; [#uses=1]
+ store float %5, float* %7, align 4
+ %8 = load float* %1, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btHashInt* %object, i32 3 ; [#uses=1]
+ %10 = bitcast %struct.btHashInt* %9 to float* ; [#uses=1]
+ store float %8, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btHashInt* %object, i32 4 ; [#uses=1]
+ %12 = bitcast %struct.btHashInt* %11 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds float* %matrix, i32 9 ; [#uses=1]
+ %14 = getelementptr inbounds float* %matrix, i32 5 ; [#uses=1]
+ %15 = getelementptr inbounds float* %matrix, i32 1 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btHashInt* %object, i32 5 ; [#uses=1]
+ %18 = bitcast %struct.btHashInt* %17 to float* ; [#uses=1]
+ store float %16, float* %18, align 4
+ %19 = load float* %14, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btHashInt* %object, i32 6 ; [#uses=1]
+ %21 = bitcast %struct.btHashInt* %20 to float* ; [#uses=1]
+ store float %19, float* %21, align 4
+ %22 = load float* %13, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btHashInt* %object, i32 7 ; [#uses=1]
+ %24 = bitcast %struct.btHashInt* %23 to float* ; [#uses=1]
+ store float %22, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btHashInt* %object, i32 8 ; [#uses=1]
+ %26 = bitcast %struct.btHashInt* %25 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds float* %matrix, i32 10 ; [#uses=1]
+ %28 = getelementptr inbounds float* %matrix, i32 6 ; [#uses=1]
+ %29 = getelementptr inbounds float* %matrix, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btHashInt* %object, i32 9 ; [#uses=1]
+ %32 = bitcast %struct.btHashInt* %31 to float* ; [#uses=1]
+ store float %30, float* %32, align 4
+ %33 = load float* %28, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btHashInt* %object, i32 10 ; [#uses=1]
+ %35 = bitcast %struct.btHashInt* %34 to float* ; [#uses=1]
+ store float %33, float* %35, align 4
+ %36 = load float* %27, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btHashInt* %object, i32 11 ; [#uses=1]
+ %38 = bitcast %struct.btHashInt* %37 to float* ; [#uses=1]
+ store float %36, float* %38, align 4
+ %39 = getelementptr inbounds %struct.btHashInt* %object, i32 12 ; [#uses=1]
+ %40 = bitcast %struct.btHashInt* %39 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %40, align 4
+ %41 = getelementptr inbounds float* %matrix, i32 14 ; [#uses=1]
+ %42 = getelementptr inbounds float* %matrix, i32 13 ; [#uses=1]
+ %43 = getelementptr inbounds float* %matrix, i32 12 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btHashInt* %object, i32 13 ; [#uses=1]
+ %46 = bitcast %struct.btHashInt* %45 to float* ; [#uses=1]
+ store float %44, float* %46, align 4
+ %47 = load float* %42, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btHashInt* %object, i32 14 ; [#uses=1]
+ %49 = bitcast %struct.btHashInt* %48 to float* ; [#uses=1]
+ store float %47, float* %49, align 4
+ %50 = load float* %41, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btHashInt* %object, i32 15 ; [#uses=1]
+ %52 = bitcast %struct.btHashInt* %51 to float* ; [#uses=1]
+ store float %50, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btHashInt* %object, i32 16 ; [#uses=1]
+ %54 = bitcast %struct.btHashInt* %53 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %54, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @plGetOpenGLMatrix(%struct.btHashInt* nocapture %object, float* nocapture %matrix) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btHashInt* %object, i32 1 ; [#uses=1]
+ %1 = bitcast %struct.btHashInt* %0 to float* ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %matrix, align 4
+ %3 = getelementptr inbounds %struct.btHashInt* %object, i32 5 ; [#uses=1]
+ %4 = bitcast %struct.btHashInt* %3 to float* ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds float* %matrix, i32 1 ; [#uses=1]
+ store float %5, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btHashInt* %object, i32 9 ; [#uses=1]
+ %8 = bitcast %struct.btHashInt* %7 to float* ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds float* %matrix, i32 2 ; [#uses=1]
+ store float %9, float* %10, align 4
+ %11 = getelementptr inbounds float* %matrix, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 4
+ %12 = getelementptr inbounds %struct.btHashInt* %object, i32 2 ; [#uses=1]
+ %13 = bitcast %struct.btHashInt* %12 to float* ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds float* %matrix, i32 4 ; [#uses=1]
+ store float %14, float* %15, align 4
+ %16 = getelementptr inbounds %struct.btHashInt* %object, i32 6 ; [#uses=1]
+ %17 = bitcast %struct.btHashInt* %16 to float* ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds float* %matrix, i32 5 ; [#uses=1]
+ store float %18, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btHashInt* %object, i32 10 ; [#uses=1]
+ %21 = bitcast %struct.btHashInt* %20 to float* ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds float* %matrix, i32 6 ; [#uses=1]
+ store float %22, float* %23, align 4
+ %24 = getelementptr inbounds float* %matrix, i32 7 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btHashInt* %object, i32 3 ; [#uses=1]
+ %26 = bitcast %struct.btHashInt* %25 to float* ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds float* %matrix, i32 8 ; [#uses=1]
+ store float %27, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btHashInt* %object, i32 7 ; [#uses=1]
+ %30 = bitcast %struct.btHashInt* %29 to float* ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds float* %matrix, i32 9 ; [#uses=1]
+ store float %31, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btHashInt* %object, i32 11 ; [#uses=1]
+ %34 = bitcast %struct.btHashInt* %33 to float* ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds float* %matrix, i32 10 ; [#uses=1]
+ store float %35, float* %36, align 4
+ %37 = getelementptr inbounds float* %matrix, i32 11 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 4
+ %38 = getelementptr inbounds %struct.btHashInt* %object, i32 13 ; [#uses=1]
+ %39 = bitcast %struct.btHashInt* %38 to float* ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds float* %matrix, i32 12 ; [#uses=1]
+ store float %40, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btHashInt* %object, i32 14 ; [#uses=1]
+ %43 = bitcast %struct.btHashInt* %42 to float* ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=1]
+ %45 = getelementptr inbounds float* %matrix, i32 13 ; [#uses=1]
+ store float %44, float* %45, align 4
+ %46 = getelementptr inbounds %struct.btHashInt* %object, i32 15 ; [#uses=1]
+ %47 = bitcast %struct.btHashInt* %46 to float* ; [#uses=1]
+ %48 = load float* %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds float* %matrix, i32 14 ; [#uses=1]
+ store float %48, float* %49, align 4
+ %50 = getelementptr inbounds float* %matrix, i32 15 ; [#uses=1]
+ store float 1.000000e+00, float* %50, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @plGetPosition(%struct.btHashInt* nocapture %object, float* nocapture %position) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btHashInt* %object, i32 13 ; [#uses=1]
+ %1 = bitcast %struct.btHashInt* %0 to float* ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ store float %2, float* %position, align 4
+ %3 = getelementptr inbounds %struct.btHashInt* %object, i32 14 ; [#uses=1]
+ %4 = bitcast %struct.btHashInt* %3 to float* ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds float* %position, i32 1 ; [#uses=1]
+ store float %5, float* %6, align 4
+ %7 = getelementptr inbounds %struct.btHashInt* %object, i32 15 ; [#uses=1]
+ %8 = bitcast %struct.btHashInt* %7 to float* ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds float* %position, i32 2 ; [#uses=1]
+ store float %9, float* %10, align 4
+ ret void
+}
+
+; [#uses=1]
+define internal void @__tcf_1(i8* nocapture %unnamed_arg) nounwind {
+entry:
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV33btMinkowskiPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** getelementptr inbounds (%struct..0btMultiSapOverlapFilterCallback* @_ZZ15plNearestPointsE7Solver1, i32 0, i32 0, i32 0), align 8
+ ret void
+}
+
+; [#uses=1]
+define internal void @__tcf_087(i8* nocapture %unnamed_arg) nounwind {
+entry:
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btGjkEpaPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** getelementptr inbounds (%struct..0btMultiSapOverlapFilterCallback* @_ZZ15plNearestPointsE7Solver0, i32 0, i32 0, i32 0), align 8
+ ret void
+}
+
+; [#uses=0]
+define void @plDeleteShape(%struct.btHashInt* %cshape) {
+entry:
+ %0 = bitcast %struct.btHashInt* %cshape to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %0)
+ ret void
+}
+
+; [#uses=0]
+define void @plDeleteRigidBody(%struct.btHashInt* %cbody) {
+entry:
+ %0 = bitcast %struct.btHashInt* %cbody to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %0)
+ ret void
+}
+
+; [#uses=0]
+define void @plDeleteDynamicsWorld(%struct.btHashInt* %world) {
+entry:
+ %0 = bitcast %struct.btHashInt* %world to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %0)
+ ret void
+}
+
+; [#uses=0]
+define void @plDeletePhysicsSdk(%struct.btHashInt* %physicsSdk) {
+entry:
+ %0 = bitcast %struct.btHashInt* %physicsSdk to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %0)
+ ret void
+}
+
+; [#uses=0]
+define void @plGetOrientation(%struct.btHashInt* %object, float* nocapture %orientation) nounwind {
+entry:
+ %0 = alloca %struct.btQuaternion, align 8 ; [#uses=5]
+ %1 = getelementptr inbounds %struct.btHashInt* %object, i32 1 ; [#uses=1]
+ %2 = bitcast %struct.btHashInt* %1 to %struct.btMatrix3x3* ; [#uses=1]
+ call void @_ZNK11btMatrix3x311getRotationER12btQuaternion(%struct.btMatrix3x3* %2, %struct.btQuaternion* %0) nounwind
+ %3 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 8 ; [#uses=1]
+ store float %4, float* %orientation, align 4
+ %5 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds float* %orientation, i32 1 ; [#uses=1]
+ store float %6, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 8 ; [#uses=1]
+ %10 = getelementptr inbounds float* %orientation, i32 2 ; [#uses=1]
+ store float %9, float* %10, align 4
+ %11 = getelementptr inbounds %struct.btQuaternion* %0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds float* %orientation, i32 3 ; [#uses=1]
+ store float %12, float* %13, align 4
+ ret void
+}
+
+; [#uses=0]
+define double @plNearestPoints(float* nocapture %p1, float* nocapture %p2, float* nocapture %p3, float* nocapture %q1, float* nocapture %q2, float* nocapture %q3, float* nocapture %pa, float* nocapture %pb, float* nocapture %normal) {
+entry:
+ %trishapeA = alloca %struct.btTriangleShape, align 8 ; [#uses=18]
+ %trishapeB = alloca %struct.btTriangleShape, align 8 ; [#uses=18]
+ %convexConvex = alloca %struct.btGjkPairDetector, align 8 ; [#uses=3]
+ %gjkOutput = alloca %struct..0btIntermediateResult, align 8 ; [#uses=10]
+ %input = alloca %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput", align 8 ; [#uses=35]
+ %0 = getelementptr inbounds float* %p1, i32 2 ; [#uses=1]
+ %1 = getelementptr inbounds float* %p1, i32 1 ; [#uses=1]
+ %2 = load float* %p1, align 4 ; [#uses=1]
+ %3 = load float* %1, align 4 ; [#uses=1]
+ %4 = load float* %0, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds float* %p3, i32 2 ; [#uses=1]
+ %6 = getelementptr inbounds float* %p3, i32 1 ; [#uses=1]
+ %7 = load float* %p3, align 4 ; [#uses=1]
+ %8 = load float* %6, align 4 ; [#uses=1]
+ %9 = load float* %5, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds float* %p2, i32 2 ; [#uses=1]
+ %11 = getelementptr inbounds float* %p2, i32 1 ; [#uses=1]
+ %12 = load float* %p2, align 4 ; [#uses=1]
+ %13 = load float* %11, align 4 ; [#uses=1]
+ %14 = load float* %10, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 0 ; [#uses=1]
+ call void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %15)
+ %16 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV15btTriangleShape, i32 0, i32 2), i32 (...)*** %16, align 8
+ %17 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %2, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %3, float* %19, align 4
+ %20 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %4, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %12, float* %22, align 4
+ %23 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %13, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %14, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %7, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %8, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %9, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 1, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ %30 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0x3EB0C6F7A0000000, float* %30, align 4
+ %31 = getelementptr inbounds float* %q1, i32 2 ; [#uses=1]
+ %32 = getelementptr inbounds float* %q1, i32 1 ; [#uses=1]
+ %33 = load float* %q1, align 4 ; [#uses=1]
+ %34 = load float* %32, align 4 ; [#uses=1]
+ %35 = load float* %31, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds float* %q3, i32 2 ; [#uses=1]
+ %37 = getelementptr inbounds float* %q3, i32 1 ; [#uses=1]
+ %38 = load float* %q3, align 4 ; [#uses=1]
+ %39 = load float* %37, align 4 ; [#uses=1]
+ %40 = load float* %36, align 4 ; [#uses=1]
+ %41 = getelementptr inbounds float* %q2, i32 2 ; [#uses=1]
+ %42 = getelementptr inbounds float* %q2, i32 1 ; [#uses=1]
+ %43 = load float* %q2, align 4 ; [#uses=1]
+ %44 = load float* %42, align 4 ; [#uses=1]
+ %45 = load float* %41, align 4 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %46)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %47 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV15btTriangleShape, i32 0, i32 2), i32 (...)*** %47, align 8
+ %48 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 1, i32* %48, align 4
+ %49 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %33, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %34, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %35, float* %51, align 4
+ %52 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %43, float* %53, align 4
+ %54 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %44, float* %54, align 4
+ %55 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %45, float* %55, align 4
+ %56 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %56, align 4
+ %57 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 1, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %38, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 1, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %39, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 1, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %40, float* %59, align 4
+ %60 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 1, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 4
+ %61 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0x3EB0C6F7A0000000, float* %61, align 4
+ %62 = load i8* bitcast (i64* @_ZGVZ15plNearestPointsE17sGjkSimplexSolver to i8*), align 8 ; [#uses=1]
+ %63 = icmp eq i8 %62, 0 ; [#uses=1]
+ br i1 %63, label %bb, label %bb10
+
+bb: ; preds = %invcont
+ %64 = call i32 @__cxa_guard_acquire(i64* @_ZGVZ15plNearestPointsE17sGjkSimplexSolver) nounwind ; [#uses=1]
+ %65 = icmp eq i32 %64, 0 ; [#uses=1]
+ br i1 %65, label %bb10, label %invcont2
+
+invcont2: ; preds = %bb
+ store float 0x3F1A36E2E0000000, float* getelementptr inbounds (%struct.btVoronoiSimplexSolver* @_ZZ15plNearestPointsE17sGjkSimplexSolver, i32 0, i32 8), align 4
+ %66 = load i8* getelementptr inbounds (%struct.btVoronoiSimplexSolver* @_ZZ15plNearestPointsE17sGjkSimplexSolver, i32 0, i32 10, i32 1, i32 0), align 4 ; [#uses=1]
+ %67 = and i8 %66, -16 ; [#uses=1]
+ store i8 %67, i8* getelementptr inbounds (%struct.btVoronoiSimplexSolver* @_ZZ15plNearestPointsE17sGjkSimplexSolver, i32 0, i32 10, i32 1, i32 0), align 4
+ call void @__cxa_guard_release(i64* @_ZGVZ15plNearestPointsE17sGjkSimplexSolver) nounwind
+ br label %bb10
+
+bb10: ; preds = %invcont2, %bb, %invcont
+ invoke void @_ZN22btVoronoiSimplexSolver5resetEv(%struct.btVoronoiSimplexSolver* @_ZZ15plNearestPointsE17sGjkSimplexSolver)
+ to label %invcont11 unwind label %lpad44
+
+invcont11: ; preds = %bb10
+ %68 = load i8* bitcast (i64* @_ZGVZ15plNearestPointsE7Solver0 to i8*), align 8 ; [#uses=1]
+ %69 = icmp eq i8 %68, 0 ; [#uses=1]
+ br i1 %69, label %bb12, label %bb15
+
+bb12: ; preds = %invcont11
+ %70 = call i32 @__cxa_guard_acquire(i64* @_ZGVZ15plNearestPointsE7Solver0) nounwind ; [#uses=1]
+ %71 = icmp eq i32 %70, 0 ; [#uses=1]
+ br i1 %71, label %bb15, label %bb14
+
+bb14: ; preds = %bb12
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV30btGjkEpaPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** getelementptr inbounds (%struct..0btMultiSapOverlapFilterCallback* @_ZZ15plNearestPointsE7Solver0, i32 0, i32 0, i32 0), align 8
+ call void @__cxa_guard_release(i64* @_ZGVZ15plNearestPointsE7Solver0) nounwind
+ %72 = call i32 @__cxa_atexit(void (i8*)* @__tcf_087, i8* null, i8* bitcast (i8** @__dso_handle to i8*)) nounwind ; [#uses=0]
+ br label %bb15
+
+bb15: ; preds = %bb14, %bb12, %invcont11
+ %73 = load i8* bitcast (i64* @_ZGVZ15plNearestPointsE7Solver1 to i8*), align 8 ; [#uses=1]
+ %74 = icmp eq i8 %73, 0 ; [#uses=1]
+ br i1 %74, label %bb16, label %bb19
+
+bb16: ; preds = %bb15
+ %75 = call i32 @__cxa_guard_acquire(i64* @_ZGVZ15plNearestPointsE7Solver1) nounwind ; [#uses=1]
+ %76 = icmp eq i32 %75, 0 ; [#uses=1]
+ br i1 %76, label %bb19, label %bb18
+
+bb18: ; preds = %bb16
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV33btMinkowskiPenetrationDepthSolver, i32 0, i32 2), i32 (...)*** getelementptr inbounds (%struct..0btMultiSapOverlapFilterCallback* @_ZZ15plNearestPointsE7Solver1, i32 0, i32 0, i32 0), align 8
+ call void @__cxa_guard_release(i64* @_ZGVZ15plNearestPointsE7Solver1) nounwind
+ %77 = call i32 @__cxa_atexit(void (i8*)* @__tcf_1, i8* null, i8* bitcast (i8** @__dso_handle to i8*)) nounwind ; [#uses=0]
+ br label %bb19
+
+bb19: ; preds = %bb18, %bb16, %bb15
+ %78 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %79 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ invoke void @_ZN17btGjkPairDetectorC1EPK13btConvexShapeS2_P22btVoronoiSimplexSolverP30btConvexPenetrationDepthSolver(%struct.btGjkPairDetector* %convexConvex, %struct.btConvexShape* %78, %struct.btConvexShape* %79, %struct.btVoronoiSimplexSolver* @_ZZ15plNearestPointsE17sGjkSimplexSolver, %struct.btActionInterface* getelementptr inbounds (%struct..0btMultiSapOverlapFilterCallback* @_ZZ15plNearestPointsE7Solver1, i32 0, i32 0))
+ to label %invcont20 unwind label %lpad44
+
+invcont20: ; preds = %bb19
+ %80 = getelementptr inbounds %struct.btGjkPairDetector* %convexConvex, i32 0, i32 15 ; [#uses=1]
+ store i32 1, i32* %80, align 8
+ %81 = getelementptr inbounds %struct..0btIntermediateResult* %gjkOutput, i32 0, i32 0, i32 0 ; [#uses=3]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %81, align 8
+ %82 = getelementptr inbounds %struct..0btIntermediateResult* %gjkOutput, i32 0, i32 3 ; [#uses=2]
+ store float 0x43ABC16D60000000, float* %82, align 4
+ %83 = getelementptr inbounds %struct..0btIntermediateResult* %gjkOutput, i32 0, i32 4 ; [#uses=2]
+ store i8 0, i8* %83, align 8
+ %84 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 2 ; [#uses=1]
+ store float 0x43ABC16D60000000, float* %84, align 8
+ %85 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 3 ; [#uses=1]
+ store %struct.btStackAlloc* null, %struct.btStackAlloc** %85, align 4
+ %86 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %86, align 8
+ %87 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %87, align 4
+ %88 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %88, align 8
+ %89 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %89, align 4
+ %90 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %90, align 8
+ %91 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %91, align 4
+ %92 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %92, align 8
+ %93 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %93, align 4
+ %94 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %94, align 8
+ %95 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %95, align 4
+ %96 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %96, align 8
+ %97 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %97, align 4
+ %98 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %98, align 8
+ %99 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %99, align 4
+ %100 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %100, align 8
+ %101 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %101, align 4
+ %102 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %102, align 8
+ %103 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %103, align 4
+ %104 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %104, align 8
+ %105 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %105, align 4
+ %106 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %106, align 8
+ %107 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %107, align 4
+ %108 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %108, align 8
+ %109 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %109, align 4
+ %110 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %110, align 8
+ %111 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %111, align 4
+ %112 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %112, align 8
+ %113 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %113, align 4
+ %114 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %114, align 8
+ %115 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %115, align 4
+ %116 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %116, align 8
+ %117 = getelementptr inbounds %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %117, align 4
+ %118 = getelementptr inbounds %struct..0btIntermediateResult* %gjkOutput, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN17btGjkPairDetector16getClosestPointsERKN36btDiscreteCollisionDetectorInterface17ClosestPointInputERNS0_6ResultEP12btIDebugDrawb(%struct.btGjkPairDetector* %convexConvex, %"struct.btDiscreteCollisionDetectorInterface::ClosestPointInput"* %input, %struct.btActionInterface* %118, %struct.btActionInterface* null, i8 zeroext 0)
+ to label %invcont21 unwind label %lpad52
+
+invcont21: ; preds = %invcont20
+ %119 = load i8* %83, align 8 ; [#uses=1]
+ %toBool22 = icmp eq i8 %119, 0 ; [#uses=1]
+ br i1 %toBool22, label %bb28, label %bb23
+
+bb23: ; preds = %invcont21
+ %120 = getelementptr inbounds %struct..0btIntermediateResult* %gjkOutput, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %121 = load float* %120, align 4 ; [#uses=2]
+ store float %121, float* %pa, align 4
+ store float %121, float* %pb, align 4
+ %122 = getelementptr inbounds %struct..0btIntermediateResult* %gjkOutput, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=2]
+ %124 = getelementptr inbounds float* %pa, i32 1 ; [#uses=1]
+ store float %123, float* %124, align 4
+ %125 = getelementptr inbounds float* %pb, i32 1 ; [#uses=3]
+ store float %123, float* %125, align 4
+ %126 = getelementptr inbounds %struct..0btIntermediateResult* %gjkOutput, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %127 = load float* %126, align 4 ; [#uses=2]
+ %128 = getelementptr inbounds float* %pa, i32 2 ; [#uses=1]
+ store float %127, float* %128, align 4
+ %129 = getelementptr inbounds float* %pb, i32 2 ; [#uses=1]
+ %130 = load float* %pb, align 4 ; [#uses=1]
+ %131 = getelementptr inbounds %struct..0btIntermediateResult* %gjkOutput, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %132 = load float* %131, align 4 ; [#uses=2]
+ %133 = load float* %82, align 4 ; [#uses=4]
+ %134 = fmul float %132, %133 ; [#uses=1]
+ %135 = fadd float %130, %134 ; [#uses=1]
+ store float %135, float* %pb, align 4
+ %136 = load float* %125, align 4 ; [#uses=1]
+ %137 = getelementptr inbounds %struct..0btIntermediateResult* %gjkOutput, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %138 = load float* %137, align 4 ; [#uses=2]
+ %139 = fmul float %138, %133 ; [#uses=1]
+ %140 = fadd float %136, %139 ; [#uses=1]
+ store float %140, float* %125, align 4
+ %141 = getelementptr inbounds %struct..0btIntermediateResult* %gjkOutput, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %142 = load float* %141, align 4 ; [#uses=2]
+ %143 = fmul float %142, %133 ; [#uses=1]
+ %144 = fadd float %127, %143 ; [#uses=1]
+ store float %144, float* %129, align 4
+ store float %132, float* %normal, align 4
+ %145 = getelementptr inbounds float* %normal, i32 1 ; [#uses=1]
+ store float %138, float* %145, align 4
+ %146 = getelementptr inbounds float* %normal, i32 2 ; [#uses=1]
+ store float %142, float* %146, align 4
+ %147 = fpext float %133 to double ; [#uses=1]
+ br label %bb28
+
+bb28: ; preds = %bb23, %invcont21
+ %.0 = phi double [ %147, %bb23 ], [ -1.000000e+00, %invcont21 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %81, align 8
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %47, align 8
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %79)
+ to label %bb40 unwind label %lpad
+
+invcont38: ; preds = %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.1)
+ unreachable
+
+bb40: ; preds = %bb28
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %16, align 8
+ call void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %78)
+ ret double %.0
+
+lpad: ; preds = %bb28, %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select43 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad44: ; preds = %bb19, %bb10
+ %eh_ptr45 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select47 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr45, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad64
+
+lpad52: ; preds = %invcont20
+ %eh_ptr53 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select55 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr53, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([7 x i32 (...)*]* @_ZTV16btPointCollector, i32 0, i32 2), i32 (...)*** %81, align 8
+ br label %ppad64
+
+lpad56: ; preds = %ppad64
+ %eh_ptr57 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select59 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr57, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad60: ; preds = %ppad
+ %eh_ptr61 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select63 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr61, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %ppad64, %lpad
+ %eh_exception.1 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.0, %ppad64 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %16, align 8
+ %148 = getelementptr inbounds %struct.btTriangleShape* %trishapeA, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %148)
+ to label %invcont38 unwind label %lpad60
+
+ppad64: ; preds = %lpad52, %lpad44
+ %eh_exception.0 = phi i8* [ %eh_ptr53, %lpad52 ], [ %eh_ptr45, %lpad44 ] ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV21btConvexInternalShape, i32 0, i32 2), i32 (...)*** %47, align 8
+ %149 = getelementptr inbounds %struct.btTriangleShape* %trishapeB, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN13btConvexShapeD2Ev(%struct.btConvexShape* %149)
+ to label %ppad unwind label %lpad56
+}
+
+; [#uses=0]
+define void @plAddVertex(%struct.btHashInt* %cshape, float %x, float %y, float %z) {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = bitcast %struct.btHashInt* %cshape to %struct.btConvexHullShape* ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %x, float* %2, align 8
+ %3 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %y, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %z, float* %4, align 8
+ %5 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ call void @_ZN17btConvexHullShape8addPointERK9btVector3(%struct.btConvexHullShape* %1, %struct.btQuadWord* %0)
+ ret void
+}
+
+; [#uses=0]
+define void @plSetEuler(float %yaw, float %pitch, float %roll, float* nocapture %orient) nounwind {
+entry:
+ %0 = fmul float %yaw, 5.000000e-01 ; [#uses=2]
+ %1 = fmul float %pitch, 5.000000e-01 ; [#uses=2]
+ %2 = fmul float %roll, 5.000000e-01 ; [#uses=2]
+ %3 = tail call float @cosf(float %0) nounwind readonly ; [#uses=4]
+ %4 = tail call float @sinf(float %0) nounwind readonly ; [#uses=4]
+ %5 = tail call float @cosf(float %1) nounwind readonly ; [#uses=2]
+ %6 = tail call float @sinf(float %1) nounwind readonly ; [#uses=2]
+ %7 = tail call float @cosf(float %2) nounwind readonly ; [#uses=2]
+ %8 = tail call float @sinf(float %2) nounwind readonly ; [#uses=2]
+ %9 = fmul float %7, %5 ; [#uses=2]
+ %10 = fmul float %9, %3 ; [#uses=1]
+ %11 = fmul float %8, %6 ; [#uses=2]
+ %12 = fmul float %11, %4 ; [#uses=1]
+ %13 = fadd float %10, %12 ; [#uses=1]
+ %14 = fmul float %8, %5 ; [#uses=2]
+ %15 = fmul float %14, %3 ; [#uses=1]
+ %16 = fmul float %7, %6 ; [#uses=2]
+ %17 = fmul float %16, %4 ; [#uses=1]
+ %18 = fsub float %15, %17 ; [#uses=1]
+ %19 = fmul float %9, %4 ; [#uses=1]
+ %20 = fmul float %11, %3 ; [#uses=1]
+ %21 = fsub float %19, %20 ; [#uses=1]
+ %22 = fmul float %16, %3 ; [#uses=1]
+ %23 = fmul float %14, %4 ; [#uses=1]
+ %24 = fadd float %22, %23 ; [#uses=1]
+ store float %24, float* %orient, align 4
+ %25 = getelementptr inbounds float* %orient, i32 1 ; [#uses=1]
+ store float %21, float* %25, align 4
+ %26 = getelementptr inbounds float* %orient, i32 2 ; [#uses=1]
+ store float %18, float* %26, align 4
+ %27 = getelementptr inbounds float* %orient, i32 3 ; [#uses=1]
+ store float %13, float* %27, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @plAddChildShape(%struct.btHashInt* %compoundShapeHandle, %struct.btHashInt* %childShapeHandle, float* nocapture %childPos, float* nocapture %childOrn) {
+entry:
+ %localTrans = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %0 = bitcast %struct.btHashInt* %compoundShapeHandle to %struct.btCompoundShape* ; [#uses=1]
+ %1 = bitcast %struct.btHashInt* %childShapeHandle to %struct.btCollisionShape* ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btTransform* %localTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %18 = getelementptr inbounds float* %childPos, i32 2 ; [#uses=1]
+ %19 = getelementptr inbounds float* %childPos, i32 1 ; [#uses=1]
+ %20 = load float* %childPos, align 4 ; [#uses=1]
+ %21 = load float* %19, align 4 ; [#uses=1]
+ %22 = load float* %18, align 4 ; [#uses=1]
+ store float %20, float* %14, align 8
+ store float %21, float* %15, align 4
+ store float %22, float* %16, align 8
+ store float 0.000000e+00, float* %17, align 4
+ %23 = getelementptr inbounds float* %childOrn, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds float* %childOrn, i32 2 ; [#uses=1]
+ %25 = getelementptr inbounds float* %childOrn, i32 1 ; [#uses=1]
+ %26 = load float* %childOrn, align 4 ; [#uses=6]
+ %27 = load float* %25, align 4 ; [#uses=5]
+ %28 = load float* %24, align 4 ; [#uses=4]
+ %29 = load float* %23, align 4 ; [#uses=5]
+ %30 = fmul float %26, %26 ; [#uses=1]
+ %31 = fmul float %27, %27 ; [#uses=1]
+ %32 = fadd float %30, %31 ; [#uses=1]
+ %33 = fmul float %28, %28 ; [#uses=1]
+ %34 = fadd float %32, %33 ; [#uses=1]
+ %35 = fmul float %29, %29 ; [#uses=1]
+ %36 = fadd float %34, %35 ; [#uses=1]
+ %37 = fdiv float 2.000000e+00, %36 ; [#uses=3]
+ %38 = fmul float %26, %37 ; [#uses=2]
+ %39 = fmul float %27, %37 ; [#uses=3]
+ %40 = fmul float %28, %37 ; [#uses=4]
+ %41 = fmul float %29, %38 ; [#uses=2]
+ %42 = fmul float %29, %39 ; [#uses=2]
+ %43 = fmul float %29, %40 ; [#uses=2]
+ %44 = fmul float %26, %38 ; [#uses=2]
+ %45 = fmul float %26, %39 ; [#uses=2]
+ %46 = fmul float %26, %40 ; [#uses=2]
+ %47 = fmul float %27, %39 ; [#uses=2]
+ %48 = fmul float %27, %40 ; [#uses=2]
+ %49 = fmul float %28, %40 ; [#uses=2]
+ %50 = fadd float %44, %47 ; [#uses=1]
+ %51 = fsub float 1.000000e+00, %50 ; [#uses=1]
+ %52 = fadd float %48, %41 ; [#uses=1]
+ %53 = fsub float %46, %42 ; [#uses=1]
+ %54 = fsub float %48, %41 ; [#uses=1]
+ %55 = fadd float %44, %49 ; [#uses=1]
+ %56 = fsub float 1.000000e+00, %55 ; [#uses=1]
+ %57 = fadd float %45, %43 ; [#uses=1]
+ %58 = fadd float %46, %42 ; [#uses=1]
+ %59 = fsub float %45, %43 ; [#uses=1]
+ %60 = fadd float %47, %49 ; [#uses=1]
+ %61 = fsub float 1.000000e+00, %60 ; [#uses=1]
+ store float %61, float* %2, align 8
+ store float %59, float* %3, align 4
+ store float %58, float* %4, align 8
+ store float 0.000000e+00, float* %5, align 4
+ store float %57, float* %6, align 8
+ store float %56, float* %7, align 4
+ store float %54, float* %8, align 8
+ store float 0.000000e+00, float* %9, align 4
+ store float %53, float* %10, align 8
+ store float %52, float* %11, align 4
+ store float %51, float* %12, align 8
+ store float 0.000000e+00, float* %13, align 4
+ call void @_ZN15btCompoundShape13addChildShapeERK11btTransformP16btCollisionShape(%struct.btCompoundShape* %0, %struct.btTransform* %localTrans, %struct.btCollisionShape* %1)
+ ret void
+}
+
+; [#uses=0]
+define %struct.btHashInt* @plNewBoxShape(float %x, float %y, float %z) {
+entry:
+ %0 = tail call i8* @_Z22btAlignedAllocInternalji(i32 52, i32 16) ; [#uses=12]
+ %1 = bitcast i8* %0 to %struct.btPolyhedralConvexShape* ; [#uses=1]
+ invoke void @_ZN23btPolyhedralConvexShapeC2Ev(%struct.btPolyhedralConvexShape* %1)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ %2 = bitcast i8* %0 to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([31 x i32 (...)*]* @_ZTV10btBoxShape, i32 0, i32 2), i32 (...)*** %2, align 4
+ %3 = getelementptr inbounds i8* %0, i32 4 ; [#uses=1]
+ %4 = bitcast i8* %3 to i32* ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds i8* %0, i32 44 ; [#uses=1]
+ %6 = bitcast i8* %5 to float* ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=3]
+ %8 = getelementptr inbounds i8* %0, i32 20 ; [#uses=1]
+ %9 = bitcast i8* %8 to float* ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fmul float %10, %z ; [#uses=1]
+ %12 = getelementptr inbounds i8* %0, i32 16 ; [#uses=1]
+ %13 = bitcast i8* %12 to float* ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fmul float %14, %y ; [#uses=1]
+ %16 = getelementptr inbounds i8* %0, i32 12 ; [#uses=1]
+ %17 = bitcast i8* %16 to float* ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fmul float %18, %x ; [#uses=1]
+ %20 = fsub float %11, %7 ; [#uses=1]
+ %21 = fsub float %15, %7 ; [#uses=1]
+ %22 = fsub float %19, %7 ; [#uses=1]
+ %23 = getelementptr inbounds i8* %0, i32 28 ; [#uses=1]
+ %24 = bitcast i8* %23 to float* ; [#uses=1]
+ store float %22, float* %24, align 4
+ %25 = getelementptr inbounds i8* %0, i32 32 ; [#uses=1]
+ %26 = bitcast i8* %25 to float* ; [#uses=1]
+ store float %21, float* %26, align 4
+ %27 = getelementptr inbounds i8* %0, i32 36 ; [#uses=1]
+ %28 = bitcast i8* %27 to float* ; [#uses=1]
+ store float %20, float* %28, align 4
+ %29 = getelementptr inbounds i8* %0, i32 40 ; [#uses=1]
+ %30 = bitcast i8* %29 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %30, align 4
+ %31 = bitcast i8* %0 to %struct.btHashInt* ; [#uses=1]
+ ret %struct.btHashInt* %31
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select4 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define %struct.btHashInt* @plNewCompoundShape() {
+entry:
+ %0 = tail call i8* @_Z22btAlignedAllocInternalji(i32 92, i32 16) ; [#uses=2]
+ %1 = bitcast i8* %0 to %struct.btCompoundShape* ; [#uses=1]
+ invoke void @_ZN15btCompoundShapeC1Eb(%struct.btCompoundShape* %1, i8 zeroext 1)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ %2 = bitcast i8* %0 to %struct.btHashInt* ; [#uses=1]
+ ret %struct.btHashInt* %2
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select4 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define %struct.btHashInt* @plNewConvexHullShape() {
+entry:
+ %0 = tail call i8* @_Z22btAlignedAllocInternalji(i32 108, i32 16) ; [#uses=2]
+ %1 = bitcast i8* %0 to %struct.btConvexHullShape* ; [#uses=1]
+ invoke void @_ZN17btConvexHullShapeC1EPKfii(%struct.btConvexHullShape* %1, float* null, i32 0, i32 16)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ %2 = bitcast i8* %0 to %struct.btHashInt* ; [#uses=1]
+ ret %struct.btHashInt* %2
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select4 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define %struct.btHashInt* @plNewCylinderShape(float %radius, float %height) {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = call i8* @_Z22btAlignedAllocInternalji(i32 56, i32 16) ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %radius, float* %2, align 8
+ %3 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %height, float* %3, align 4
+ %4 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %radius, float* %4, align 8
+ %5 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 4
+ %6 = bitcast i8* %1 to %struct.btCapsuleShape* ; [#uses=1]
+ invoke void @_ZN15btCylinderShapeC1ERK9btVector3(%struct.btCapsuleShape* %6, %struct.btQuadWord* %0)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ %7 = bitcast i8* %1 to %struct.btHashInt* ; [#uses=1]
+ ret %struct.btHashInt* %7
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select4 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define %struct.btHashInt* @plNewConeShape(float %radius, float %height) {
+entry:
+ %0 = tail call i8* @_Z22btAlignedAllocInternalji(i32 76, i32 16) ; [#uses=2]
+ %1 = bitcast i8* %0 to %struct.btConeShape* ; [#uses=1]
+ invoke void @_ZN11btConeShapeC1Eff(%struct.btConeShape* %1, float %radius, float %height)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ %2 = bitcast i8* %0 to %struct.btHashInt* ; [#uses=1]
+ ret %struct.btHashInt* %2
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select4 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define %struct.btHashInt* @plNewCapsuleShape(float %radius, float %height) {
+entry:
+ %positions = alloca [2 x %struct.btQuadWord], align 8 ; [#uses=9]
+ %radi = alloca [2 x float], align 4 ; [#uses=2]
+ %0 = getelementptr inbounds [2 x %struct.btQuadWord]* %positions, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %0, align 8
+ %1 = getelementptr inbounds [2 x %struct.btQuadWord]* %positions, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %height, float* %1, align 4
+ %2 = getelementptr inbounds [2 x %struct.btQuadWord]* %positions, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 8
+ %3 = getelementptr inbounds [2 x %struct.btQuadWord]* %positions, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = fsub float -0.000000e+00, %height ; [#uses=1]
+ %5 = getelementptr inbounds [2 x %struct.btQuadWord]* %positions, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %5, align 8
+ %6 = getelementptr inbounds [2 x %struct.btQuadWord]* %positions, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %4, float* %6, align 4
+ %7 = getelementptr inbounds [2 x %struct.btQuadWord]* %positions, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 8
+ %8 = getelementptr inbounds [2 x %struct.btQuadWord]* %positions, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 4
+ %9 = getelementptr inbounds [2 x float]* %radi, i32 0, i32 0 ; [#uses=2]
+ %10 = getelementptr inbounds [2 x float]* %radi, i32 0, i32 1 ; [#uses=1]
+ store float %radius, float* %9, align 4
+ store float %radius, float* %10, align 4
+ %11 = call i8* @_Z22btAlignedAllocInternalji(i32 128, i32 16) ; [#uses=2]
+ %12 = bitcast i8* %11 to %struct.btMultiSphereShape* ; [#uses=1]
+ %13 = getelementptr inbounds [2 x %struct.btQuadWord]* %positions, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN18btMultiSphereShapeC1EPK9btVector3PKfi(%struct.btMultiSphereShape* %12, %struct.btQuadWord* %13, float* %9, i32 2)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ %14 = bitcast i8* %11 to %struct.btHashInt* ; [#uses=1]
+ ret %struct.btHashInt* %14
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select4 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define %struct.btHashInt* @plNewSphereShape(float %radius) {
+entry:
+ %0 = tail call i8* @_Z22btAlignedAllocInternalji(i32 52, i32 16) ; [#uses=6]
+ %1 = bitcast i8* %0 to %struct.btConvexInternalShape* ; [#uses=1]
+ invoke void @_ZN21btConvexInternalShapeC2Ev(%struct.btConvexInternalShape* %1)
+ to label %bb1 unwind label %lpad
+
+bb1: ; preds = %entry
+ %2 = bitcast i8* %0 to i32 (...)*** ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([23 x i32 (...)*]* @_ZTV13btSphereShape, i32 0, i32 2), i32 (...)*** %2, align 4
+ %3 = getelementptr inbounds i8* %0, i32 4 ; [#uses=1]
+ %4 = bitcast i8* %3 to i32* ; [#uses=1]
+ store i32 8, i32* %4, align 4
+ %5 = getelementptr inbounds i8* %0, i32 28 ; [#uses=1]
+ %6 = bitcast i8* %5 to float* ; [#uses=1]
+ store float %radius, float* %6, align 4
+ %7 = getelementptr inbounds i8* %0, i32 44 ; [#uses=1]
+ %8 = bitcast i8* %7 to float* ; [#uses=1]
+ store float %radius, float* %8, align 4
+ %9 = bitcast i8* %0 to %struct.btHashInt* ; [#uses=1]
+ ret %struct.btHashInt* %9
+
+lpad: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select4 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define %struct.btHashInt* @plCreateRigidBody(i8* %user_data, float %mass, %struct.btHashInt* %cshape) {
+entry:
+ %localInertia = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %rbci = alloca %"struct.btRigidBody::btRigidBodyConstructionInfo", align 8 ; [#uses=35]
+ %0 = getelementptr inbounds %struct.btQuadWord* %localInertia, i32 0, i32 0, i32 0 ; [#uses=2]
+ store float 0.000000e+00, float* %0, align 8
+ %1 = getelementptr inbounds %struct.btQuadWord* %localInertia, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.btQuadWord* %localInertia, i32 0, i32 0, i32 2 ; [#uses=2]
+ store float 0.000000e+00, float* %2, align 8
+ %3 = getelementptr inbounds %struct.btQuadWord* %localInertia, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %3, align 4
+ %4 = bitcast %struct.btHashInt* %cshape to %struct.btCollisionShape* ; [#uses=2]
+ %5 = fcmp une float %mass, 0.000000e+00 ; [#uses=1]
+ br i1 %5, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %6 = bitcast %struct.btHashInt* %cshape to i32 (...)*** ; [#uses=1]
+ %7 = load i32 (...)*** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds i32 (...)** %7, i32 8 ; [#uses=1]
+ %9 = load i32 (...)** %8, align 4 ; [#uses=1]
+ %10 = bitcast i32 (...)* %9 to void (%struct.btCollisionShape*, float, %struct.btQuadWord*)* ; [#uses=1]
+ call void %10(%struct.btCollisionShape* %4, float %mass, %struct.btQuadWord* %localInertia)
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %11 = call i8* @_Z22btAlignedAllocInternalji(i32 608, i32 16) ; [#uses=19]
+ %12 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 0 ; [#uses=1]
+ store float %mass, float* %12, align 8
+ %13 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 1 ; [#uses=1]
+ store %struct.btActionInterface* null, %struct.btActionInterface** %13, align 4
+ %14 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 3 ; [#uses=1]
+ store %struct.btCollisionShape* %4, %struct.btCollisionShape** %14, align 8
+ %15 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %0, align 8 ; [#uses=1]
+ store float %16, float* %15, align 4
+ %17 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %1, align 4 ; [#uses=1]
+ store float %18, float* %17, align 4
+ %19 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %2, align 8 ; [#uses=1]
+ store float %20, float* %19, align 4
+ %21 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %22 = load float* %3, align 4 ; [#uses=1]
+ store float %22, float* %21, align 4
+ %23 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 5 ; [#uses=1]
+ store float 0.000000e+00, float* %23, align 4
+ %24 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 6 ; [#uses=1]
+ store float 0.000000e+00, float* %24, align 8
+ %25 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 7 ; [#uses=1]
+ store float 5.000000e-01, float* %25, align 4
+ %26 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 8 ; [#uses=1]
+ store float 0.000000e+00, float* %26, align 8
+ %27 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 9 ; [#uses=1]
+ store float 0x3FE99999A0000000, float* %27, align 4
+ %28 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 10 ; [#uses=1]
+ store float 1.000000e+00, float* %28, align 8
+ %29 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 11 ; [#uses=1]
+ store i8 0, i8* %29, align 4
+ %30 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 12 ; [#uses=1]
+ store float 0x3F747AE140000000, float* %30, align 8
+ %31 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 13 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %31, align 4
+ %32 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 14 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %32, align 8
+ %33 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 15 ; [#uses=1]
+ store float 0x3F847AE140000000, float* %33, align 4
+ %34 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %34, align 8
+ %35 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ %36 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %36, align 8
+ %37 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %37, align 4
+ %38 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %38, align 8
+ %39 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %39, align 4
+ %40 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %40, align 8
+ %41 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 4
+ %42 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %42, align 8
+ %43 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %43, align 4
+ %44 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %44, align 8
+ %45 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %45, align 4
+ %46 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %46, align 8
+ %47 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %47, align 4
+ %48 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %48, align 8
+ %49 = getelementptr inbounds %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci, i32 0, i32 2, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %49, align 4
+ %50 = bitcast i8* %11 to %struct.btRigidBody* ; [#uses=1]
+ invoke void @_ZN11btRigidBodyC1ERKNS_27btRigidBodyConstructionInfoE(%struct.btRigidBody* %50, %"struct.btRigidBody::btRigidBodyConstructionInfo"* %rbci)
+ to label %bb3 unwind label %lpad
+
+bb3: ; preds = %bb1
+ %51 = getelementptr inbounds i8* %11, i32 4 ; [#uses=1]
+ %52 = bitcast i8* %51 to float* ; [#uses=1]
+ store float 1.000000e+00, float* %52, align 4
+ %53 = getelementptr inbounds i8* %11, i32 8 ; [#uses=1]
+ %54 = bitcast i8* %53 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %54, align 4
+ %55 = getelementptr inbounds i8* %11, i32 12 ; [#uses=1]
+ %56 = bitcast i8* %55 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %56, align 4
+ %57 = getelementptr inbounds i8* %11, i32 16 ; [#uses=1]
+ %58 = bitcast i8* %57 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %58, align 4
+ %59 = getelementptr inbounds i8* %11, i32 20 ; [#uses=1]
+ %60 = bitcast i8* %59 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 4
+ %61 = getelementptr inbounds i8* %11, i32 24 ; [#uses=1]
+ %62 = bitcast i8* %61 to float* ; [#uses=1]
+ store float 1.000000e+00, float* %62, align 4
+ %63 = getelementptr inbounds i8* %11, i32 28 ; [#uses=1]
+ %64 = bitcast i8* %63 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %64, align 4
+ %65 = getelementptr inbounds i8* %11, i32 32 ; [#uses=1]
+ %66 = bitcast i8* %65 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %66, align 4
+ %67 = getelementptr inbounds i8* %11, i32 36 ; [#uses=1]
+ %68 = bitcast i8* %67 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %68, align 4
+ %69 = getelementptr inbounds i8* %11, i32 40 ; [#uses=1]
+ %70 = bitcast i8* %69 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %70, align 4
+ %71 = getelementptr inbounds i8* %11, i32 44 ; [#uses=1]
+ %72 = bitcast i8* %71 to float* ; [#uses=1]
+ store float 1.000000e+00, float* %72, align 4
+ %73 = getelementptr inbounds i8* %11, i32 48 ; [#uses=1]
+ %74 = bitcast i8* %73 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %74, align 4
+ %75 = getelementptr inbounds i8* %11, i32 52 ; [#uses=1]
+ %76 = bitcast i8* %75 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %76, align 4
+ %77 = getelementptr inbounds i8* %11, i32 56 ; [#uses=1]
+ %78 = bitcast i8* %77 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %78, align 4
+ %79 = getelementptr inbounds i8* %11, i32 60 ; [#uses=1]
+ %80 = bitcast i8* %79 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %80, align 4
+ %81 = getelementptr inbounds i8* %11, i32 64 ; [#uses=1]
+ %82 = bitcast i8* %81 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %82, align 4
+ %83 = getelementptr inbounds i8* %11, i32 236 ; [#uses=1]
+ %84 = bitcast i8* %83 to i8** ; [#uses=1]
+ store i8* %user_data, i8** %84, align 4
+ %85 = bitcast i8* %11 to %struct.btHashInt* ; [#uses=1]
+ ret %struct.btHashInt* %85
+
+lpad: ; preds = %bb1
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select6 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=0]
+define %struct.btHashInt* @plCreateDynamicsWorld(%struct.btHashInt* %physicsSdkHandle) {
+entry:
+ %0 = alloca %struct.btDefaultCollisionConstructionInfo, align 8 ; [#uses=9]
+ %1 = call i8* @_Z22btAlignedAllocInternalji(i32 88, i32 16) ; [#uses=4]
+ %2 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %0, i32 0, i32 0 ; [#uses=1]
+ store %struct.btStackAlloc* null, %struct.btStackAlloc** %2, align 8
+ %3 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %0, i32 0, i32 1 ; [#uses=1]
+ store %struct.btPoolAllocator* null, %struct.btPoolAllocator** %3, align 4
+ %4 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %0, i32 0, i32 2 ; [#uses=1]
+ store %struct.btPoolAllocator* null, %struct.btPoolAllocator** %4, align 8
+ %5 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %0, i32 0, i32 3 ; [#uses=1]
+ store i32 4096, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %0, i32 0, i32 4 ; [#uses=1]
+ store i32 4096, i32* %6, align 8
+ %7 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %0, i32 0, i32 5 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %0, i32 0, i32 6 ; [#uses=1]
+ store i32 0, i32* %8, align 8
+ %9 = getelementptr inbounds %struct.btDefaultCollisionConstructionInfo* %0, i32 0, i32 7 ; [#uses=1]
+ store i32 1, i32* %9, align 4
+ %10 = icmp eq i8* %1, null ; [#uses=1]
+ br i1 %10, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %11 = bitcast i8* %1 to %struct.btDefaultCollisionConfiguration* ; [#uses=1]
+ invoke void @_ZN31btDefaultCollisionConfigurationC1ERK34btDefaultCollisionConstructionInfo(%struct.btDefaultCollisionConfiguration* %11, %struct.btDefaultCollisionConstructionInfo* %0)
+ to label %bb4 unwind label %lpad
+
+bb4: ; preds = %bb, %entry
+ %12 = call i8* @_Z22btAlignedAllocInternalji(i32 5388, i32 16) ; [#uses=3]
+ %13 = icmp eq i8* %12, null ; [#uses=1]
+ br i1 %13, label %bb12, label %bb5
+
+bb5: ; preds = %bb4
+ %14 = bitcast i8* %12 to %struct.btCollisionDispatcher* ; [#uses=1]
+ %15 = bitcast i8* %1 to %struct.btActionInterface* ; [#uses=1]
+ invoke void @_ZN21btCollisionDispatcherC1EP24btCollisionConfiguration(%struct.btCollisionDispatcher* %14, %struct.btActionInterface* %15)
+ to label %bb12 unwind label %lpad37
+
+bb12: ; preds = %bb5, %bb4
+ %16 = bitcast i8* %12 to %struct.btActionInterface* ; [#uses=1]
+ %17 = call i8* @_Z22btAlignedAllocInternalji(i32 116, i32 16) ; [#uses=2]
+ %18 = bitcast i8* %17 to %struct.btAxisSweep3* ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btHashInt* %physicsSdkHandle, i32 4 ; [#uses=1]
+ %20 = bitcast %struct.btHashInt* %19 to %struct.btQuadWord* ; [#uses=1]
+ %21 = bitcast %struct.btHashInt* %physicsSdkHandle to %struct.btQuadWord* ; [#uses=1]
+ invoke void @_ZN12btAxisSweep3C1ERK9btVector3S2_tP22btOverlappingPairCacheb(%struct.btAxisSweep3* %18, %struct.btQuadWord* %21, %struct.btQuadWord* %20, i16 zeroext 16384, %struct..0btMultiSapOverlapFilterCallback* null, i8 zeroext 0)
+ to label %bb17 unwind label %lpad41
+
+bb17: ; preds = %bb12
+ %22 = bitcast i8* %17 to %struct.btActionInterface* ; [#uses=1]
+ %23 = call i8* @_Z22btAlignedAllocInternalji(i32 128, i32 16) ; [#uses=3]
+ %24 = icmp eq i8* %23, null ; [#uses=1]
+ br i1 %24, label %bb25, label %bb18
+
+bb18: ; preds = %bb17
+ %25 = bitcast i8* %23 to %struct.btSequentialImpulseConstraintSolver* ; [#uses=1]
+ invoke void @_ZN35btSequentialImpulseConstraintSolverC1Ev(%struct.btSequentialImpulseConstraintSolver* %25)
+ to label %bb25 unwind label %lpad45
+
+bb25: ; preds = %bb18, %bb17
+ %26 = call i8* @_Z22btAlignedAllocInternalji(i32 272, i32 16) ; [#uses=3]
+ %27 = icmp eq i8* %26, null ; [#uses=1]
+ br i1 %27, label %bb33, label %bb26
+
+bb26: ; preds = %bb25
+ %28 = bitcast i8* %26 to %struct.btDiscreteDynamicsWorld* ; [#uses=1]
+ %29 = bitcast i8* %23 to %struct.btActionInterface* ; [#uses=1]
+ %30 = bitcast i8* %1 to %struct.btActionInterface* ; [#uses=1]
+ invoke void @_ZN23btDiscreteDynamicsWorldC1EP12btDispatcherP21btBroadphaseInterfaceP18btConstraintSolverP24btCollisionConfiguration(%struct.btDiscreteDynamicsWorld* %28, %struct.btActionInterface* %16, %struct.btActionInterface* %22, %struct.btActionInterface* %29, %struct.btActionInterface* %30)
+ to label %bb33 unwind label %lpad49
+
+bb33: ; preds = %bb26, %bb25
+ %iftmp.459.0 = bitcast i8* %26 to %struct.btHashInt* ; [#uses=1]
+ ret %struct.btHashInt* %iftmp.459.0
+
+lpad: ; preds = %bb
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select36 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %Unwind
+
+lpad37: ; preds = %bb5
+ %eh_ptr38 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select40 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr38, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %Unwind
+
+lpad41: ; preds = %bb12
+ %eh_ptr42 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select44 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr42, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %Unwind
+
+lpad45: ; preds = %bb18
+ %eh_ptr46 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select48 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr46, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %Unwind
+
+lpad49: ; preds = %bb26
+ %eh_ptr50 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select52 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr50, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %Unwind
+
+Unwind: ; preds = %lpad49, %lpad45, %lpad41, %lpad37, %lpad
+ %eh_exception.0 = phi i8* [ %eh_ptr50, %lpad49 ], [ %eh_ptr46, %lpad45 ], [ %eh_ptr42, %lpad41 ], [ %eh_ptr38, %lpad37 ], [ %eh_ptr, %lpad ] ; [#uses=1]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+}
+
+; [#uses=1]
+define %struct.btRigidBody* @_ZN17btActionInterface12getFixedBodyEv() align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = load i8* bitcast (i64* @_ZGVZN17btActionInterface12getFixedBodyEvE7s_fixed to i8*), align 8 ; [#uses=1]
+ %3 = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb, label %bb9
+
+bb: ; preds = %entry
+ %4 = call i32 @__cxa_guard_acquire(i64* @_ZGVZN17btActionInterface12getFixedBodyEvE7s_fixed) nounwind ; [#uses=1]
+ %5 = icmp eq i32 %4, 0 ; [#uses=1]
+ br i1 %5, label %bb9, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %6, align 8
+ %7 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %8 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %8, align 8
+ %9 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %9, align 4
+ invoke void @_ZN11btRigidBodyC1EfP13btMotionStateP16btCollisionShapeRK9btVector3(%struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed, float 0.000000e+00, %struct.btActionInterface* null, %struct.btCollisionShape* null, %struct.btQuadWord* %1)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %bb1
+ call void @__cxa_guard_release(i64* @_ZGVZN17btActionInterface12getFixedBodyEvE7s_fixed) nounwind
+ %10 = call i32 @__cxa_atexit(void (i8*)* @__tcf_088, i8* null, i8* bitcast (i8** @__dso_handle to i8*)) nounwind ; [#uses=0]
+ br label %bb9
+
+bb9: ; preds = %invcont, %bb, %entry
+ %11 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 0.000000e+00, float* %11, align 8
+ %12 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %13, align 8
+ %14 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %14, align 4
+ call void @_ZN11btRigidBody12setMassPropsEfRK9btVector3(%struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed, float 0.000000e+00, %struct.btQuadWord* %0)
+ ret %struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed
+
+lpad: ; preds = %bb1
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select12 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ call void @__cxa_guard_abort(i64* @_ZGVZN17btActionInterface12getFixedBodyEvE7s_fixed) nounwind
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=4]
+define linkonce_odr void @_ZN11btRigidBody12applyImpulseERK9btVector3S2_(%struct.btRigidBody* %this, %struct.btQuadWord* nocapture %impulse, %struct.btQuadWord* nocapture %rel_pos) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 4 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=4]
+ %2 = fcmp une float %1, 0.000000e+00 ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btQuadWord* %impulse, i32 0, i32 0, i32 2 ; [#uses=2]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = fmul float %4, %6 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %impulse, i32 0, i32 0, i32 1 ; [#uses=2]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = fmul float %9, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %impulse, i32 0, i32 0, i32 0 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = fmul float %14, %16 ; [#uses=1]
+ %18 = fmul float %7, %1 ; [#uses=1]
+ %19 = fmul float %12, %1 ; [#uses=1]
+ %20 = fmul float %17, %1 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fadd float %22, %20 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = fadd float %25, %19 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fadd float %28, %18 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 26, i32 0, i32 0 ; [#uses=2]
+ %31 = icmp eq float* %30, null ; [#uses=1]
+ br i1 %31, label %return, label %bb1
+
+bb1: ; preds = %bb
+ %32 = load float* %3, align 4 ; [#uses=1]
+ %33 = fmul float %32, %6 ; [#uses=2]
+ %34 = load float* %8, align 4 ; [#uses=1]
+ %35 = fmul float %34, %11 ; [#uses=2]
+ %36 = load float* %13, align 4 ; [#uses=1]
+ %37 = fmul float %36, %16 ; [#uses=2]
+ %38 = getelementptr inbounds %struct.btQuadWord* %rel_pos, i32 0, i32 0, i32 0 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=2]
+ %40 = fmul float %39, %35 ; [#uses=1]
+ %41 = getelementptr inbounds %struct.btQuadWord* %rel_pos, i32 0, i32 0, i32 1 ; [#uses=1]
+ %42 = load float* %41, align 4 ; [#uses=2]
+ %43 = fmul float %42, %37 ; [#uses=1]
+ %44 = fsub float %40, %43 ; [#uses=3]
+ %45 = getelementptr inbounds %struct.btQuadWord* %rel_pos, i32 0, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=2]
+ %47 = fmul float %46, %37 ; [#uses=1]
+ %48 = fmul float %39, %33 ; [#uses=1]
+ %49 = fsub float %47, %48 ; [#uses=3]
+ %50 = fmul float %42, %33 ; [#uses=1]
+ %51 = fmul float %46, %35 ; [#uses=1]
+ %52 = fsub float %50, %51 ; [#uses=3]
+ %53 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = fmul float %54, %52 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = fmul float %57, %49 ; [#uses=1]
+ %59 = fadd float %55, %58 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ %62 = fmul float %61, %44 ; [#uses=1]
+ %63 = fadd float %59, %62 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=1]
+ %66 = fmul float %65, %52 ; [#uses=1]
+ %67 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ %69 = fmul float %68, %49 ; [#uses=1]
+ %70 = fadd float %66, %69 ; [#uses=1]
+ %71 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fmul float %72, %44 ; [#uses=1]
+ %74 = fadd float %70, %73 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ %77 = fmul float %76, %52 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ %80 = fmul float %79, %49 ; [#uses=1]
+ %81 = fadd float %77, %80 ; [#uses=1]
+ %82 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = fmul float %83, %44 ; [#uses=1]
+ %85 = fadd float %81, %84 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 26, i32 0, i32 2 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ %88 = fmul float %63, %87 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 26, i32 0, i32 1 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ %91 = fmul float %74, %90 ; [#uses=1]
+ %92 = load float* %30, align 4 ; [#uses=1]
+ %93 = fmul float %85, %92 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=2]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ %96 = fadd float %95, %93 ; [#uses=1]
+ store float %96, float* %94, align 4
+ %97 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=2]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ %99 = fadd float %98, %91 ; [#uses=1]
+ store float %99, float* %97, align 4
+ %100 = getelementptr inbounds %struct.btRigidBody* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=2]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ %102 = fadd float %101, %88 ; [#uses=1]
+ store float %102, float* %100, align 4
+ ret void
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btRaycastVehicle12updateActionEP16btCollisionWorldf(%struct.btRaycastVehicle* %this, %struct.btCollisionWorld* nocapture %collisionWorld, float %step) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32 (...)*** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds i32 (...)** %1, i32 4 ; [#uses=1]
+ %3 = load i32 (...)** %2, align 4 ; [#uses=1]
+ %4 = bitcast i32 (...)* %3 to void (%struct.btRaycastVehicle*, float)* ; [#uses=1]
+ tail call void %4(%struct.btRaycastVehicle* %this, float %step)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btRaycastVehicle19setCoordinateSystemEiii(%struct.btRaycastVehicle* nocapture %this, i32 %rightIndex, i32 %upIndex, i32 %forwardIndex) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 14 ; [#uses=1]
+ store i32 %rightIndex, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 %upIndex, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 16 ; [#uses=1]
+ store i32 %forwardIndex, i32* %2, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCollisionWorld24ClosestRayResultCallbackD1Ev(%"struct.btCollisionWorld::ClosestRayResultCallback"* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld24ClosestRayResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN16btCollisionWorld24ClosestRayResultCallbackD0Ev(%"struct.btCollisionWorld::ClosestRayResultCallback"* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld24ClosestRayResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %"struct.btCollisionWorld::ClosestRayResultCallback"* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr float @_ZN16btCollisionWorld24ClosestRayResultCallback15addSingleResultERNS_14LocalRayResultEb(%"struct.btCollisionWorld::ClosestRayResultCallback"* nocapture %this, %"struct.btCollisionWorld::LocalRayResult"* nocapture %rayResult, i8 zeroext %normalInWorldSpace) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 3 ; [#uses=3]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %1, float* %2, align 4
+ %3 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.btCollisionObject** %3, align 4 ; [#uses=10]
+ %5 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store %struct.btCollisionObject* %4, %struct.btCollisionObject** %5, align 4
+ %toBool = icmp eq i8 %normalInWorldSpace, 0 ; [#uses=1]
+ br i1 %toBool, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %13 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %16 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ br label %bb2
+
+bb1: ; preds = %entry
+ %18 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=3]
+ %22 = fmul float %19, %21 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=3]
+ %27 = fmul float %24, %26 ; [#uses=1]
+ %28 = fadd float %22, %27 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %"struct.btCollisionWorld::LocalRayResult"* %rayResult, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=3]
+ %33 = fmul float %30, %32 ; [#uses=1]
+ %34 = fadd float %28, %33 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = fmul float %36, %21 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=1]
+ %40 = fmul float %39, %26 ; [#uses=1]
+ %41 = fadd float %37, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ %44 = fmul float %43, %32 ; [#uses=1]
+ %45 = fadd float %41, %44 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ %48 = fmul float %47, %21 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fmul float %50, %26 ; [#uses=1]
+ %52 = fadd float %48, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btCollisionObject* %4, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = fmul float %54, %32 ; [#uses=1]
+ %56 = fadd float %52, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %56, float* %57, align 4
+ %58 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %45, float* %58, align 4
+ %59 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %34, float* %59, align 4
+ %60 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 4
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %61 = load float* %0, align 4 ; [#uses=4]
+ %62 = fsub float 1.000000e+00, %61 ; [#uses=3]
+ %63 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ %65 = fmul float %64, %62 ; [#uses=1]
+ %66 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ %68 = fmul float %67, %61 ; [#uses=1]
+ %69 = fadd float %65, %68 ; [#uses=1]
+ %70 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %69, float* %70, align 4
+ %71 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=1]
+ %73 = fmul float %72, %62 ; [#uses=1]
+ %74 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = fmul float %75, %61 ; [#uses=1]
+ %77 = fadd float %73, %76 ; [#uses=1]
+ %78 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %77, float* %78, align 4
+ %79 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = fmul float %80, %62 ; [#uses=1]
+ %82 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %83 = load float* %82, align 4 ; [#uses=1]
+ %84 = fmul float %83, %61 ; [#uses=1]
+ %85 = fadd float %81, %84 ; [#uses=1]
+ %86 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %85, float* %86, align 4
+ %87 = load float* %0, align 4 ; [#uses=1]
+ ret float %87
+}
+
+; [#uses=0]
+define void @_ZN16btRaycastVehicle11defaultInitERKNS_15btVehicleTuningE(%struct.btRaycastVehicle* nocapture %this, %"struct.btRaycastVehicle::btVehicleTuning"* nocapture %tuning) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 12 ; [#uses=1]
+ store float 0.000000e+00, float* %0, align 4
+ %1 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 11 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ ret void
+}
+
+; [#uses=2]
+define linkonce_odr void @_ZN11btWheelInfoC1ERKS_(%struct.btWheelInfo* %this, %struct.btWheelInfo* %unnamed_arg) nounwind align 2 {
+entry:
+ %0 = bitcast %struct.btWheelInfo* %this to i8* ; [#uses=1]
+ %1 = bitcast %struct.btWheelInfo* %unnamed_arg to i8* ; [#uses=1]
+ tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %0, i8* %1, i32 92, i32 4, i1 false)
+ %2 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ store float %28, float* %26, align 4
+ %29 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ store float %31, float* %29, align 4
+ %32 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ store float %34, float* %32, align 4
+ %35 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ store float %37, float* %35, align 4
+ %38 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %40 = load float* %39, align 4 ; [#uses=1]
+ store float %40, float* %38, align 4
+ %41 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %43 = load float* %42, align 4 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ store float %55, float* %53, align 4
+ %56 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=1]
+ store float %58, float* %56, align 4
+ %59 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %61 = load float* %60, align 4 ; [#uses=1]
+ store float %61, float* %59, align 4
+ %62 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %63 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %64 = load float* %63, align 4 ; [#uses=1]
+ store float %64, float* %62, align 4
+ %65 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %66 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %67 = load float* %66, align 4 ; [#uses=1]
+ store float %67, float* %65, align 4
+ %68 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ store float %70, float* %68, align 4
+ %71 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ store float %73, float* %71, align 4
+ %74 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ store float %76, float* %74, align 4
+ %77 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=1]
+ store float %79, float* %77, align 4
+ %80 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ store float %82, float* %80, align 4
+ %83 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ store float %85, float* %83, align 4
+ %86 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 5 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 5 ; [#uses=1]
+ store float %87, float* %88, align 4
+ %89 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 6 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 6 ; [#uses=1]
+ store float %90, float* %91, align 4
+ %92 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 7 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 7 ; [#uses=1]
+ store float %93, float* %94, align 4
+ %95 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 8 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 8 ; [#uses=1]
+ store float %96, float* %97, align 4
+ %98 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 9 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 9 ; [#uses=1]
+ store float %99, float* %100, align 4
+ %101 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 10 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 10 ; [#uses=1]
+ store float %102, float* %103, align 4
+ %104 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 11 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 11 ; [#uses=1]
+ store float %105, float* %106, align 4
+ %107 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 12 ; [#uses=1]
+ %108 = load float* %107, align 4 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 12 ; [#uses=1]
+ store float %108, float* %109, align 4
+ %110 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 13 ; [#uses=1]
+ %111 = load float* %110, align 4 ; [#uses=1]
+ %112 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 13 ; [#uses=1]
+ store float %111, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 14 ; [#uses=1]
+ %114 = load float* %113, align 4 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 14 ; [#uses=1]
+ store float %114, float* %115, align 4
+ %116 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 15 ; [#uses=1]
+ %117 = load float* %116, align 4 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 15 ; [#uses=1]
+ store float %117, float* %118, align 4
+ %119 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 16 ; [#uses=1]
+ %120 = load float* %119, align 4 ; [#uses=1]
+ %121 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 16 ; [#uses=1]
+ store float %120, float* %121, align 4
+ %122 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 17 ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=1]
+ %124 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 17 ; [#uses=1]
+ store float %123, float* %124, align 4
+ %125 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 18 ; [#uses=1]
+ %126 = load float* %125, align 4 ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 18 ; [#uses=1]
+ store float %126, float* %127, align 4
+ %128 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 19 ; [#uses=1]
+ %129 = load i8* %128, align 4 ; [#uses=1]
+ %130 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 19 ; [#uses=1]
+ store i8 %129, i8* %130, align 4
+ %131 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 20 ; [#uses=1]
+ %132 = load i8** %131, align 4 ; [#uses=1]
+ %133 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 20 ; [#uses=1]
+ store i8* %132, i8** %133, align 4
+ %134 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 21 ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=1]
+ %136 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 21 ; [#uses=1]
+ store float %135, float* %136, align 4
+ %137 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 22 ; [#uses=1]
+ %138 = load float* %137, align 4 ; [#uses=1]
+ %139 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 22 ; [#uses=1]
+ store float %138, float* %139, align 4
+ %140 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 23 ; [#uses=1]
+ %141 = load float* %140, align 4 ; [#uses=1]
+ %142 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 23 ; [#uses=1]
+ store float %141, float* %142, align 4
+ %143 = getelementptr inbounds %struct.btWheelInfo* %unnamed_arg, i32 0, i32 24 ; [#uses=1]
+ %144 = load float* %143, align 4 ; [#uses=1]
+ %145 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 24 ; [#uses=1]
+ store float %144, float* %145, align 4
+ ret void
+}
+
+; [#uses=0]
+define %struct.btTransform* @_ZNK16btRaycastVehicle24getChassisWorldTransformEv(%struct.btRaycastVehicle* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 13 ; [#uses=1]
+ %1 = load %struct.btRigidBody** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ ret %struct.btTransform* %2
+}
+
+; [#uses=3]
+define void @_ZN16btRaycastVehicle23updateWheelTransformsWSER11btWheelInfob(%struct.btRaycastVehicle* nocapture %this, %struct.btWheelInfo* nocapture %wheel, i8 zeroext %interpolatedTransform) align 2 {
+entry:
+ %chassisTrans = alloca %struct.btTransform, align 8 ; [#uses=17]
+ %0 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 6 ; [#uses=1]
+ store i8 0, i8* %0, align 4
+ %1 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 13 ; [#uses=1]
+ %2 = load %struct.btRigidBody** %1, align 4 ; [#uses=17]
+ %3 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=3]
+ store float %5, float* %3, align 8
+ %6 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=3]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=3]
+ store float %11, float* %9, align 8
+ %12 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=3]
+ store float %17, float* %15, align 8
+ %18 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=3]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=3]
+ store float %23, float* %21, align 8
+ %24 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=3]
+ store float %29, float* %27, align 8
+ %30 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %31 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=3]
+ store float %32, float* %30, align 4
+ %33 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %34 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=3]
+ store float %35, float* %33, align 8
+ %36 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ store float %38, float* %36, align 4
+ %39 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %40 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %41 = load float* %40, align 4 ; [#uses=3]
+ store float %41, float* %39, align 8
+ %42 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %43 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %44 = load float* %43, align 4 ; [#uses=3]
+ store float %44, float* %42, align 4
+ %45 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %46 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=3]
+ store float %47, float* %45, align 8
+ %48 = getelementptr inbounds %struct.btTransform* %chassisTrans, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 0, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ store float %50, float* %48, align 4
+ %toBoolnot = icmp eq i8 %interpolatedTransform, 0 ; [#uses=1]
+ br i1 %toBoolnot, label %bb9, label %bb
+
+bb: ; preds = %entry
+ %51 = getelementptr inbounds %struct.btRigidBody* %2, i32 0, i32 20 ; [#uses=1]
+ %52 = load %struct.btActionInterface** %51, align 4 ; [#uses=3]
+ %53 = icmp eq %struct.btActionInterface* %52, null ; [#uses=1]
+ br i1 %53, label %bb9, label %bb8
+
+bb8: ; preds = %bb
+ %54 = getelementptr inbounds %struct.btActionInterface* %52, i32 0, i32 0 ; [#uses=1]
+ %55 = load i32 (...)*** %54, align 4 ; [#uses=1]
+ %56 = getelementptr inbounds i32 (...)** %55, i32 2 ; [#uses=1]
+ %57 = load i32 (...)** %56, align 4 ; [#uses=1]
+ %58 = bitcast i32 (...)* %57 to void (%struct.btActionInterface*, %struct.btTransform*)* ; [#uses=1]
+ call void %58(%struct.btActionInterface* %52, %struct.btTransform* %chassisTrans)
+ %.pre = load float* %27, align 8 ; [#uses=1]
+ %.pre18 = load float* %30, align 4 ; [#uses=1]
+ %.pre19 = load float* %33, align 8 ; [#uses=1]
+ %.pre20 = load float* %45, align 8 ; [#uses=1]
+ %.pre21 = load float* %15, align 8 ; [#uses=1]
+ %.pre22 = load float* %18, align 4 ; [#uses=1]
+ %.pre23 = load float* %21, align 8 ; [#uses=1]
+ %.pre24 = load float* %42, align 4 ; [#uses=1]
+ %.pre25 = load float* %3, align 8 ; [#uses=1]
+ %.pre26 = load float* %6, align 4 ; [#uses=1]
+ %.pre27 = load float* %9, align 8 ; [#uses=1]
+ %.pre28 = load float* %39, align 8 ; [#uses=1]
+ br label %bb9
+
+bb9: ; preds = %bb8, %bb, %entry
+ %59 = phi float [ %41, %entry ], [ %41, %bb ], [ %.pre28, %bb8 ] ; [#uses=1]
+ %60 = phi float [ %11, %entry ], [ %11, %bb ], [ %.pre27, %bb8 ] ; [#uses=3]
+ %61 = phi float [ %8, %entry ], [ %8, %bb ], [ %.pre26, %bb8 ] ; [#uses=3]
+ %62 = phi float [ %5, %entry ], [ %5, %bb ], [ %.pre25, %bb8 ] ; [#uses=3]
+ %63 = phi float [ %44, %entry ], [ %44, %bb ], [ %.pre24, %bb8 ] ; [#uses=1]
+ %64 = phi float [ %23, %entry ], [ %23, %bb ], [ %.pre23, %bb8 ] ; [#uses=3]
+ %65 = phi float [ %20, %entry ], [ %20, %bb ], [ %.pre22, %bb8 ] ; [#uses=3]
+ %66 = phi float [ %17, %entry ], [ %17, %bb ], [ %.pre21, %bb8 ] ; [#uses=3]
+ %67 = phi float [ %47, %entry ], [ %47, %bb ], [ %.pre20, %bb8 ] ; [#uses=1]
+ %68 = phi float [ %35, %entry ], [ %35, %bb ], [ %.pre19, %bb8 ] ; [#uses=3]
+ %69 = phi float [ %32, %entry ], [ %32, %bb ], [ %.pre18, %bb8 ] ; [#uses=3]
+ %70 = phi float [ %29, %entry ], [ %29, %bb ], [ %.pre, %bb8 ] ; [#uses=3]
+ %71 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %72 = load float* %71, align 4 ; [#uses=3]
+ %73 = fmul float %70, %72 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=3]
+ %76 = fmul float %69, %75 ; [#uses=1]
+ %77 = fadd float %73, %76 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %79 = load float* %78, align 4 ; [#uses=3]
+ %80 = fmul float %68, %79 ; [#uses=1]
+ %81 = fadd float %77, %80 ; [#uses=1]
+ %82 = fadd float %81, %67 ; [#uses=1]
+ %83 = fmul float %66, %72 ; [#uses=1]
+ %84 = fmul float %65, %75 ; [#uses=1]
+ %85 = fadd float %83, %84 ; [#uses=1]
+ %86 = fmul float %64, %79 ; [#uses=1]
+ %87 = fadd float %85, %86 ; [#uses=1]
+ %88 = fadd float %87, %63 ; [#uses=1]
+ %89 = fmul float %62, %72 ; [#uses=1]
+ %90 = fmul float %61, %75 ; [#uses=1]
+ %91 = fadd float %89, %90 ; [#uses=1]
+ %92 = fmul float %60, %79 ; [#uses=1]
+ %93 = fadd float %91, %92 ; [#uses=1]
+ %94 = fadd float %93, %59 ; [#uses=1]
+ %95 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %94, float* %95, align 4
+ %96 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %88, float* %96, align 4
+ %97 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %82, float* %97, align 4
+ %98 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %98, align 4
+ %99 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %100 = load float* %99, align 4 ; [#uses=3]
+ %101 = fmul float %70, %100 ; [#uses=1]
+ %102 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %103 = load float* %102, align 4 ; [#uses=3]
+ %104 = fmul float %69, %103 ; [#uses=1]
+ %105 = fadd float %101, %104 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %107 = load float* %106, align 4 ; [#uses=3]
+ %108 = fmul float %68, %107 ; [#uses=1]
+ %109 = fadd float %105, %108 ; [#uses=1]
+ %110 = fmul float %66, %100 ; [#uses=1]
+ %111 = fmul float %65, %103 ; [#uses=1]
+ %112 = fadd float %110, %111 ; [#uses=1]
+ %113 = fmul float %64, %107 ; [#uses=1]
+ %114 = fadd float %112, %113 ; [#uses=1]
+ %115 = fmul float %62, %100 ; [#uses=1]
+ %116 = fmul float %61, %103 ; [#uses=1]
+ %117 = fadd float %115, %116 ; [#uses=1]
+ %118 = fmul float %60, %107 ; [#uses=1]
+ %119 = fadd float %117, %118 ; [#uses=1]
+ %120 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %119, float* %120, align 4
+ %121 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %114, float* %121, align 4
+ %122 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %109, float* %122, align 4
+ %123 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %123, align 4
+ %124 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %125 = load float* %124, align 4 ; [#uses=3]
+ %126 = fmul float %70, %125 ; [#uses=1]
+ %127 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %128 = load float* %127, align 4 ; [#uses=3]
+ %129 = fmul float %69, %128 ; [#uses=1]
+ %130 = fadd float %126, %129 ; [#uses=1]
+ %131 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %132 = load float* %131, align 4 ; [#uses=3]
+ %133 = fmul float %68, %132 ; [#uses=1]
+ %134 = fadd float %130, %133 ; [#uses=1]
+ %135 = fmul float %66, %125 ; [#uses=1]
+ %136 = fmul float %65, %128 ; [#uses=1]
+ %137 = fadd float %135, %136 ; [#uses=1]
+ %138 = fmul float %64, %132 ; [#uses=1]
+ %139 = fadd float %137, %138 ; [#uses=1]
+ %140 = fmul float %62, %125 ; [#uses=1]
+ %141 = fmul float %61, %128 ; [#uses=1]
+ %142 = fadd float %140, %141 ; [#uses=1]
+ %143 = fmul float %60, %132 ; [#uses=1]
+ %144 = fadd float %142, %143 ; [#uses=1]
+ %145 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ store float %144, float* %145, align 4
+ %146 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ store float %139, float* %146, align 4
+ %147 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ store float %134, float* %147, align 4
+ %148 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 5, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %148, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN19btWheelContactPointC1EP11btRigidBodyS1_RK9btVector3S4_f(%struct.btWheelContactPoint* nocapture %this, %struct.btRigidBody* %body0, %struct.btRigidBody* %body1, %struct.btQuadWord* nocapture %frictionPosWorld, %struct.btQuadWord* nocapture %frictionDirectionWorld, float %maxImpulse) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btWheelContactPoint* %this, i32 0, i32 0 ; [#uses=1]
+ store %struct.btRigidBody* %body0, %struct.btRigidBody** %0, align 4
+ %1 = getelementptr inbounds %struct.btWheelContactPoint* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.btRigidBody* %body1, %struct.btRigidBody** %1, align 4
+ %2 = getelementptr inbounds %struct.btWheelContactPoint* %this, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %frictionPosWorld, i32 0, i32 0, i32 0 ; [#uses=2]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ store float %4, float* %2, align 4
+ %5 = getelementptr inbounds %struct.btWheelContactPoint* %this, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %frictionPosWorld, i32 0, i32 0, i32 1 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ store float %7, float* %5, align 4
+ %8 = getelementptr inbounds %struct.btWheelContactPoint* %this, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %frictionPosWorld, i32 0, i32 0, i32 2 ; [#uses=2]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ store float %10, float* %8, align 4
+ %11 = getelementptr inbounds %struct.btWheelContactPoint* %this, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %frictionPosWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=1]
+ store float %13, float* %11, align 4
+ %14 = getelementptr inbounds %struct.btWheelContactPoint* %this, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %frictionDirectionWorld, i32 0, i32 0, i32 0 ; [#uses=2]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ store float %16, float* %14, align 4
+ %17 = getelementptr inbounds %struct.btWheelContactPoint* %this, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %frictionDirectionWorld, i32 0, i32 0, i32 1 ; [#uses=2]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ store float %19, float* %17, align 4
+ %20 = getelementptr inbounds %struct.btWheelContactPoint* %this, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %frictionDirectionWorld, i32 0, i32 0, i32 2 ; [#uses=2]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ store float %22, float* %20, align 4
+ %23 = getelementptr inbounds %struct.btWheelContactPoint* %this, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btQuadWord* %frictionDirectionWorld, i32 0, i32 0, i32 3 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ store float %25, float* %23, align 4
+ %26 = getelementptr inbounds %struct.btWheelContactPoint* %this, i32 0, i32 5 ; [#uses=1]
+ store float %maxImpulse, float* %26, align 4
+ %27 = load float* %9, align 4 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = fsub float %27, %29 ; [#uses=4]
+ %31 = load float* %6, align 4 ; [#uses=2]
+ %32 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fsub float %31, %33 ; [#uses=4]
+ %35 = load float* %3, align 4 ; [#uses=2]
+ %36 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = fsub float %35, %37 ; [#uses=4]
+ %39 = load float* %18, align 4 ; [#uses=6]
+ %40 = fmul float %38, %39 ; [#uses=1]
+ %41 = load float* %15, align 4 ; [#uses=6]
+ %42 = fmul float %34, %41 ; [#uses=1]
+ %43 = fsub float %40, %42 ; [#uses=3]
+ %44 = fmul float %30, %41 ; [#uses=1]
+ %45 = load float* %21, align 4 ; [#uses=6]
+ %46 = fmul float %38, %45 ; [#uses=1]
+ %47 = fsub float %44, %46 ; [#uses=3]
+ %48 = fmul float %34, %45 ; [#uses=1]
+ %49 = fmul float %30, %39 ; [#uses=1]
+ %50 = fsub float %48, %49 ; [#uses=3]
+ %51 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = fmul float %52, %50 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=1]
+ %56 = fmul float %55, %47 ; [#uses=1]
+ %57 = fadd float %53, %56 ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=1]
+ %60 = fmul float %59, %43 ; [#uses=1]
+ %61 = fadd float %57, %60 ; [#uses=2]
+ %62 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %63 = load float* %62, align 4 ; [#uses=1]
+ %64 = fmul float %63, %50 ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %66 = load float* %65, align 4 ; [#uses=1]
+ %67 = fmul float %66, %47 ; [#uses=1]
+ %68 = fadd float %64, %67 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ %71 = fmul float %70, %43 ; [#uses=1]
+ %72 = fadd float %68, %71 ; [#uses=2]
+ %73 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=1]
+ %75 = fmul float %74, %50 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %77 = load float* %76, align 4 ; [#uses=1]
+ %78 = fmul float %77, %47 ; [#uses=1]
+ %79 = fadd float %75, %78 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ %82 = fmul float %81, %43 ; [#uses=1]
+ %83 = fadd float %79, %82 ; [#uses=2]
+ %84 = fmul float %83, %34 ; [#uses=1]
+ %85 = fmul float %72, %38 ; [#uses=1]
+ %86 = fsub float %84, %85 ; [#uses=1]
+ %87 = fmul float %61, %38 ; [#uses=1]
+ %88 = fmul float %83, %30 ; [#uses=1]
+ %89 = fsub float %87, %88 ; [#uses=1]
+ %90 = fmul float %72, %30 ; [#uses=1]
+ %91 = fmul float %61, %34 ; [#uses=1]
+ %92 = fsub float %90, %91 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btRigidBody* %body0, i32 0, i32 4 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = fmul float %41, %92 ; [#uses=1]
+ %96 = fmul float %39, %89 ; [#uses=1]
+ %97 = fadd float %95, %96 ; [#uses=1]
+ %98 = fmul float %45, %86 ; [#uses=1]
+ %99 = fadd float %97, %98 ; [#uses=1]
+ %100 = fadd float %94, %99 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fsub float %27, %102 ; [#uses=4]
+ %104 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=1]
+ %106 = fsub float %31, %105 ; [#uses=4]
+ %107 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %108 = load float* %107, align 4 ; [#uses=1]
+ %109 = fsub float %35, %108 ; [#uses=4]
+ %110 = fmul float %109, %39 ; [#uses=1]
+ %111 = fmul float %106, %41 ; [#uses=1]
+ %112 = fsub float %110, %111 ; [#uses=3]
+ %113 = fmul float %103, %41 ; [#uses=1]
+ %114 = fmul float %109, %45 ; [#uses=1]
+ %115 = fsub float %113, %114 ; [#uses=3]
+ %116 = fmul float %106, %45 ; [#uses=1]
+ %117 = fmul float %103, %39 ; [#uses=1]
+ %118 = fsub float %116, %117 ; [#uses=3]
+ %119 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %120 = load float* %119, align 4 ; [#uses=1]
+ %121 = fmul float %120, %118 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %123 = load float* %122, align 4 ; [#uses=1]
+ %124 = fmul float %123, %115 ; [#uses=1]
+ %125 = fadd float %121, %124 ; [#uses=1]
+ %126 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %127 = load float* %126, align 4 ; [#uses=1]
+ %128 = fmul float %127, %112 ; [#uses=1]
+ %129 = fadd float %125, %128 ; [#uses=2]
+ %130 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %131 = load float* %130, align 4 ; [#uses=1]
+ %132 = fmul float %131, %118 ; [#uses=1]
+ %133 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %134 = load float* %133, align 4 ; [#uses=1]
+ %135 = fmul float %134, %115 ; [#uses=1]
+ %136 = fadd float %132, %135 ; [#uses=1]
+ %137 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %138 = load float* %137, align 4 ; [#uses=1]
+ %139 = fmul float %138, %112 ; [#uses=1]
+ %140 = fadd float %136, %139 ; [#uses=2]
+ %141 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %142 = load float* %141, align 4 ; [#uses=1]
+ %143 = fmul float %142, %118 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %145 = load float* %144, align 4 ; [#uses=1]
+ %146 = fmul float %145, %115 ; [#uses=1]
+ %147 = fadd float %143, %146 ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %149 = load float* %148, align 4 ; [#uses=1]
+ %150 = fmul float %149, %112 ; [#uses=1]
+ %151 = fadd float %147, %150 ; [#uses=2]
+ %152 = fmul float %151, %106 ; [#uses=1]
+ %153 = fmul float %140, %109 ; [#uses=1]
+ %154 = fsub float %152, %153 ; [#uses=1]
+ %155 = fmul float %129, %109 ; [#uses=1]
+ %156 = fmul float %151, %103 ; [#uses=1]
+ %157 = fsub float %155, %156 ; [#uses=1]
+ %158 = fmul float %140, %103 ; [#uses=1]
+ %159 = fmul float %129, %106 ; [#uses=1]
+ %160 = fsub float %158, %159 ; [#uses=1]
+ %161 = getelementptr inbounds %struct.btRigidBody* %body1, i32 0, i32 4 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ %163 = fmul float %41, %160 ; [#uses=1]
+ %164 = fmul float %39, %157 ; [#uses=1]
+ %165 = fadd float %163, %164 ; [#uses=1]
+ %166 = fmul float %45, %154 ; [#uses=1]
+ %167 = fadd float %165, %166 ; [#uses=1]
+ %168 = fadd float %162, %167 ; [#uses=1]
+ %169 = fadd float %100, %168 ; [#uses=1]
+ %170 = fdiv float 1.000000e+00, %169 ; [#uses=1]
+ %171 = getelementptr inbounds %struct.btWheelContactPoint* %this, i32 0, i32 4 ; [#uses=1]
+ store float %170, float* %171, align 4
+ ret void
+}
+
+; [#uses=0]
+define float @_Z19calcRollingFrictionR19btWheelContactPoint(%struct.btWheelContactPoint* nocapture %contactPoint) nounwind readonly {
+entry:
+ %0 = getelementptr inbounds %struct.btWheelContactPoint* %contactPoint, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btRigidBody** %0, align 4 ; [#uses=9]
+ %2 = getelementptr inbounds %struct.btWheelContactPoint* %contactPoint, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fsub float %3, %5 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btWheelContactPoint* %contactPoint, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fsub float %8, %10 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btWheelContactPoint* %contactPoint, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fsub float %13, %15 ; [#uses=2]
+ %17 = getelementptr inbounds %struct.btWheelContactPoint* %contactPoint, i32 0, i32 1 ; [#uses=1]
+ %18 = load %struct.btRigidBody** %17, align 4 ; [#uses=9]
+ %19 = getelementptr inbounds %struct.btRigidBody* %18, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = fsub float %3, %20 ; [#uses=2]
+ %22 = getelementptr inbounds %struct.btRigidBody* %18, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fsub float %8, %23 ; [#uses=2]
+ %25 = getelementptr inbounds %struct.btRigidBody* %18, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = fsub float %13, %26 ; [#uses=2]
+ %28 = getelementptr inbounds %struct.btWheelContactPoint* %contactPoint, i32 0, i32 5 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=3]
+ %30 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=2]
+ %32 = fmul float %31, %11 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=2]
+ %35 = fmul float %34, %16 ; [#uses=1]
+ %36 = fsub float %32, %35 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=2]
+ %39 = fmul float %38, %16 ; [#uses=1]
+ %40 = fmul float %31, %6 ; [#uses=1]
+ %41 = fsub float %39, %40 ; [#uses=1]
+ %42 = fmul float %34, %6 ; [#uses=1]
+ %43 = fmul float %38, %11 ; [#uses=1]
+ %44 = fsub float %42, %43 ; [#uses=1]
+ %45 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ %47 = fadd float %46, %36 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %49 = load float* %48, align 4 ; [#uses=1]
+ %50 = fadd float %49, %41 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ %53 = fadd float %52, %44 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.btRigidBody* %18, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %55 = load float* %54, align 4 ; [#uses=2]
+ %56 = fmul float %55, %24 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btRigidBody* %18, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %58 = load float* %57, align 4 ; [#uses=2]
+ %59 = fmul float %58, %27 ; [#uses=1]
+ %60 = fsub float %56, %59 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btRigidBody* %18, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=2]
+ %63 = fmul float %62, %27 ; [#uses=1]
+ %64 = fmul float %55, %21 ; [#uses=1]
+ %65 = fsub float %63, %64 ; [#uses=1]
+ %66 = fmul float %58, %21 ; [#uses=1]
+ %67 = fmul float %62, %24 ; [#uses=1]
+ %68 = fsub float %66, %67 ; [#uses=1]
+ %69 = getelementptr inbounds %struct.btRigidBody* %18, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %70 = load float* %69, align 4 ; [#uses=1]
+ %71 = fadd float %70, %60 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btRigidBody* %18, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %73 = load float* %72, align 4 ; [#uses=1]
+ %74 = fadd float %73, %65 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btRigidBody* %18, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %76 = load float* %75, align 4 ; [#uses=1]
+ %77 = fadd float %76, %68 ; [#uses=1]
+ %78 = fsub float %47, %71 ; [#uses=1]
+ %79 = fsub float %50, %74 ; [#uses=1]
+ %80 = fsub float %53, %77 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btWheelContactPoint* %contactPoint, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ %83 = fmul float %82, %80 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btWheelContactPoint* %contactPoint, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = fmul float %85, %79 ; [#uses=1]
+ %87 = fadd float %83, %86 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.btWheelContactPoint* %contactPoint, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %89 = load float* %88, align 4 ; [#uses=1]
+ %90 = fmul float %89, %78 ; [#uses=1]
+ %91 = fadd float %87, %90 ; [#uses=1]
+ %92 = fsub float -0.000000e+00, %91 ; [#uses=1]
+ %93 = getelementptr inbounds %struct.btWheelContactPoint* %contactPoint, i32 0, i32 4 ; [#uses=1]
+ %94 = load float* %93, align 4 ; [#uses=1]
+ %95 = fmul float %94, %92 ; [#uses=2]
+ %96 = fcmp olt float %29, %95 ; [#uses=1]
+ %j1.1 = select i1 %96, float %29, float %95 ; [#uses=2]
+ %97 = fsub float -0.000000e+00, %29 ; [#uses=2]
+ %98 = fcmp olt float %j1.1, %97 ; [#uses=1]
+ %j1.0 = select i1 %98, float %97, float %j1.1 ; [#uses=1]
+ ret float %j1.0
+}
+
+; [#uses=0]
+define %struct.btWheelInfo* @_ZN16btRaycastVehicle12getWheelInfoEi(%struct.btRaycastVehicle* nocapture %this, i32 %index) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ %1 = load %struct.btWheelInfo** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %index ; [#uses=1]
+ ret %struct.btWheelInfo* %2
+}
+
+; [#uses=1]
+define void @_ZN16btRaycastVehicle9debugDrawEP12btIDebugDraw(%struct.btRaycastVehicle* nocapture %this, %struct.btActionInterface* %debugDrawer) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %wheelColor = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %wheelPosWS = alloca %struct.btQuadWord, align 8 ; [#uses=6]
+ %1 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 1 ; [#uses=2]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = icmp sgt i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btQuadWord* %wheelColor, i32 0, i32 0, i32 0 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btQuadWord* %wheelColor, i32 0, i32 0, i32 1 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %wheelColor, i32 0, i32 0, i32 2 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btQuadWord* %wheelColor, i32 0, i32 0, i32 3 ; [#uses=2]
+ %8 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btQuadWord* %wheelPosWS, i32 0, i32 0, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %wheelPosWS, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %wheelPosWS, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %wheelPosWS, i32 0, i32 0, i32 3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 14 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btActionInterface* %debugDrawer, i32 0, i32 0 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %v.09 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb ] ; [#uses=10]
+ %tmp = add i32 %v.09, 1 ; [#uses=2]
+ store float 0.000000e+00, float* %4, align 8
+ store float 1.000000e+00, float* %5, align 4
+ store float 1.000000e+00, float* %6, align 8
+ store float 0.000000e+00, float* %7, align 4
+ %19 = load %struct.btWheelInfo** %8, align 4 ; [#uses=8]
+ %scevgep = getelementptr %struct.btWheelInfo* %19, i32 %v.09, i32 0, i32 6 ; [#uses=1]
+ %20 = load i8* %scevgep, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %20, 0 ; [#uses=1]
+ %storemerge = select i1 %toBool, float 1.000000e+00, float 0.000000e+00 ; [#uses=1]
+ store float %storemerge, float* %4, align 8
+ store float 0.000000e+00, float* %5, align 4
+ store float 1.000000e+00, float* %6, align 8
+ store float 0.000000e+00, float* %7, align 4
+ %scevgep10 = getelementptr %struct.btWheelInfo* %19, i32 %v.09, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %scevgep10, align 4 ; [#uses=2]
+ store float %21, float* %9, align 8
+ %scevgep11 = getelementptr %struct.btWheelInfo* %19, i32 %v.09, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %22 = load float* %scevgep11, align 4 ; [#uses=2]
+ store float %22, float* %10, align 4
+ %scevgep12 = getelementptr %struct.btWheelInfo* %19, i32 %v.09, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %23 = load float* %scevgep12, align 4 ; [#uses=2]
+ store float %23, float* %11, align 8
+ %scevgep13 = getelementptr %struct.btWheelInfo* %19, i32 %v.09, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %scevgep13, align 4 ; [#uses=1]
+ store float %24, float* %12, align 4
+ %25 = load i32* %13, align 4 ; [#uses=3]
+ %scevgep16 = getelementptr %struct.btWheelInfo* %19, i32 %v.09, i32 1, i32 0, i32 0, i32 0, i32 0, i32 %25 ; [#uses=1]
+ %26 = load float* %scevgep16, align 4 ; [#uses=1]
+ %scevgep15 = getelementptr %struct.btWheelInfo* %19, i32 %v.09, i32 1, i32 0, i32 0, i32 1, i32 0, i32 %25 ; [#uses=1]
+ %27 = load float* %scevgep15, align 4 ; [#uses=1]
+ %scevgep14 = getelementptr %struct.btWheelInfo* %19, i32 %v.09, i32 1, i32 0, i32 0, i32 2, i32 0, i32 %25 ; [#uses=1]
+ %28 = load float* %scevgep14, align 4 ; [#uses=1]
+ %29 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds i32 (...)** %29, i32 2 ; [#uses=1]
+ %31 = load i32 (...)** %30, align 4 ; [#uses=1]
+ %32 = fadd float %23, %28 ; [#uses=1]
+ %33 = fadd float %22, %27 ; [#uses=1]
+ %34 = fadd float %21, %26 ; [#uses=1]
+ store float %34, float* %15, align 8
+ store float %33, float* %16, align 4
+ store float %32, float* %17, align 8
+ store float 0.000000e+00, float* %18, align 4
+ %35 = bitcast i32 (...)* %31 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ call void %35(%struct.btActionInterface* %debugDrawer, %struct.btQuadWord* %wheelPosWS, %struct.btQuadWord* %0, %struct.btQuadWord* %wheelColor)
+ %36 = load i32 (...)*** %14, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds i32 (...)** %36, i32 2 ; [#uses=1]
+ %38 = load i32 (...)** %37, align 4 ; [#uses=1]
+ %39 = load %struct.btWheelInfo** %8, align 4 ; [#uses=1]
+ %40 = bitcast i32 (...)* %38 to void (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %struct.btQuadWord*)* ; [#uses=1]
+ %scevgep17 = getelementptr %struct.btWheelInfo* %39, i32 %v.09, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep1718 = bitcast float* %scevgep17 to %struct.btQuadWord* ; [#uses=1]
+ call void %40(%struct.btActionInterface* %debugDrawer, %struct.btQuadWord* %wheelPosWS, %struct.btQuadWord* %scevgep1718, %struct.btQuadWord* %wheelColor)
+ %41 = load i32* %1, align 4 ; [#uses=1]
+ %42 = icmp sgt i32 %41, %tmp ; [#uses=1]
+ br i1 %42, label %bb, label %return
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btRaycastVehicle8setBrakeEfi(%struct.btRaycastVehicle* nocapture %this, float %brake, i32 %wheelIndex) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ %1 = load %struct.btWheelInfo** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 18 ; [#uses=1]
+ store float %brake, float* %2, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btRaycastVehicle16applyEngineForceEfi(%struct.btRaycastVehicle* nocapture %this, float %force, i32 %wheel) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ %1 = load %struct.btWheelInfo** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheel, i32 17 ; [#uses=1]
+ store float %force, float* %2, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btRaycastVehicle16setSteeringValueEfi(%struct.btRaycastVehicle* nocapture %this, float %steering, i32 %wheel) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ %1 = load %struct.btWheelInfo** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheel, i32 12 ; [#uses=1]
+ store float %steering, float* %2, align 4
+ ret void
+}
+
+; [#uses=0]
+define %struct.btWheelInfo* @_ZNK16btRaycastVehicle12getWheelInfoEi(%struct.btRaycastVehicle* nocapture %this, i32 %index) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ %1 = load %struct.btWheelInfo** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %index ; [#uses=1]
+ ret %struct.btWheelInfo* %2
+}
+
+; [#uses=0]
+define float @_ZNK16btRaycastVehicle16getSteeringValueEi(%struct.btRaycastVehicle* nocapture %this, i32 %wheel) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ %1 = load %struct.btWheelInfo** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheel, i32 12 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ ret float %3
+}
+
+; [#uses=0]
+define %struct.btTransform* @_ZNK16btRaycastVehicle19getWheelTransformWSEi(%struct.btRaycastVehicle* nocapture %this, i32 %wheelIndex) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ %1 = load %struct.btWheelInfo** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1 ; [#uses=1]
+ ret %struct.btTransform* %2
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN25btDefaultVehicleRaycasterD0Ev(%struct.btDefaultVehicleRaycaster* %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDefaultVehicleRaycaster* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV25btDefaultVehicleRaycaster, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = bitcast %struct.btDefaultVehicleRaycaster* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN25btDefaultVehicleRaycasterD1Ev(%struct.btDefaultVehicleRaycaster* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btDefaultVehicleRaycaster* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([5 x i32 (...)*]* @_ZTV25btDefaultVehicleRaycaster, i32 0, i32 2), i32 (...)*** %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define i8* @_ZN25btDefaultVehicleRaycaster7castRayERK9btVector3S2_RN18btVehicleRaycaster24btVehicleRaycasterResultE(%struct.btDefaultVehicleRaycaster* nocapture %this, %struct.btQuadWord* %from, %struct.btQuadWord* %to, %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* nocapture %result) align 2 {
+entry:
+ %rayCallback = alloca %"struct.btCollisionWorld::ClosestRayResultCallback", align 8 ; [#uses=23]
+ %0 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 0, i32 0 ; [#uses=2]
+ %1 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 0, i32 1 ; [#uses=2]
+ store float 1.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 0, i32 2 ; [#uses=2]
+ store %struct.btCollisionObject* null, %struct.btCollisionObject** %2, align 8
+ %3 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 0, i32 3 ; [#uses=1]
+ store i16 1, i16* %3, align 4
+ %4 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i16 -1, i16* %4, align 2
+ %5 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 0, i32 5 ; [#uses=1]
+ store i32 0, i32* %5, align 8
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld24ClosestRayResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 8
+ %6 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ store float %8, float* %6, align 4
+ %9 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ store float %11, float* %9, align 4
+ %12 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ store float %14, float* %12, align 4
+ %15 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %from, i32 0, i32 0, i32 3 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ store float %17, float* %15, align 4
+ %18 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ store float %20, float* %18, align 4
+ %21 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ store float %23, float* %21, align 4
+ %24 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 2 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ store float %26, float* %24, align 4
+ %27 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %to, i32 0, i32 0, i32 3 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ store float %29, float* %27, align 4
+ %30 = getelementptr inbounds %struct.btDefaultVehicleRaycaster* %this, i32 0, i32 1 ; [#uses=1]
+ %31 = load %struct.btDynamicsWorld** %30, align 4 ; [#uses=2]
+ %32 = getelementptr inbounds %struct.btDynamicsWorld* %31, i32 0, i32 0, i32 0 ; [#uses=1]
+ %33 = load i32 (...)*** %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds i32 (...)** %33, i32 7 ; [#uses=1]
+ %35 = load i32 (...)** %34, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btDynamicsWorld* %31, i32 0, i32 0 ; [#uses=1]
+ %37 = bitcast i32 (...)* %35 to void (%struct.btCollisionWorld*, %struct.btQuadWord*, %struct.btQuadWord*, %"struct.btCollisionWorld::RayResultCallback"*)* ; [#uses=1]
+ %38 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 0 ; [#uses=1]
+ invoke void %37(%struct.btCollisionWorld* %36, %struct.btQuadWord* %from, %struct.btQuadWord* %to, %"struct.btCollisionWorld::RayResultCallback"* %38)
+ to label %invcont unwind label %lpad
+
+invcont: ; preds = %entry
+ %39 = load %struct.btCollisionObject** %2, align 8 ; [#uses=4]
+ %40 = icmp eq %struct.btCollisionObject* %39, null ; [#uses=1]
+ br i1 %40, label %bb13, label %bb
+
+bb: ; preds = %invcont
+ %41 = getelementptr inbounds %struct.btCollisionObject* %39, i32 0, i32 19 ; [#uses=1]
+ %42 = load i32* %41, align 4 ; [#uses=1]
+ %.lobit.i19 = and i32 %42, 2 ; [#uses=1]
+ %toBool.i = icmp eq i32 %.lobit.i19, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb13, label %bb1
+
+bb1: ; preds = %bb
+ %43 = getelementptr inbounds %struct.btCollisionObject* %39, i32 0, i32 12 ; [#uses=1]
+ %44 = load i32* %43, align 4 ; [#uses=1]
+ %.lobit.i = and i32 %44, 4 ; [#uses=1]
+ %toBool2not = icmp eq i32 %.lobit.i, 0 ; [#uses=1]
+ br i1 %toBool2not, label %bb10, label %bb13
+
+bb10: ; preds = %bb1
+ %45 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %result, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %46 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %47 = load float* %46, align 4 ; [#uses=1]
+ store float %47, float* %45, align 4
+ %48 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %result, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %49 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ store float %50, float* %48, align 4
+ %51 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %result, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %52 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %53 = load float* %52, align 4 ; [#uses=1]
+ store float %53, float* %51, align 4
+ %54 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %result, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %55 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ %56 = load float* %55, align 4 ; [#uses=1]
+ store float %56, float* %54, align 4
+ %57 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %result, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %58 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %59 = load float* %58, align 4 ; [#uses=4]
+ store float %59, float* %57, align 4
+ %60 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %result, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %61 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=4]
+ store float %62, float* %60, align 4
+ %63 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %result, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %64 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %65 = load float* %64, align 4 ; [#uses=4]
+ store float %65, float* %63, align 4
+ %66 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %result, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %67 = getelementptr inbounds %"struct.btCollisionWorld::ClosestRayResultCallback"* %rayCallback, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ %68 = load float* %67, align 4 ; [#uses=1]
+ store float %68, float* %66, align 4
+ %69 = fmul float %59, %59 ; [#uses=1]
+ %70 = fmul float %62, %62 ; [#uses=1]
+ %71 = fadd float %69, %70 ; [#uses=1]
+ %72 = fmul float %65, %65 ; [#uses=1]
+ %73 = fadd float %71, %72 ; [#uses=1]
+ %74 = call float @sqrtf(float %73) nounwind readonly ; [#uses=1]
+ %75 = fdiv float 1.000000e+00, %74 ; [#uses=3]
+ %76 = fmul float %59, %75 ; [#uses=1]
+ store float %76, float* %57, align 4
+ %77 = fmul float %62, %75 ; [#uses=1]
+ store float %77, float* %60, align 4
+ %78 = fmul float %65, %75 ; [#uses=1]
+ store float %78, float* %63, align 4
+ %79 = load float* %1, align 4 ; [#uses=1]
+ %80 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %result, i32 0, i32 2 ; [#uses=1]
+ store float %79, float* %80, align 4
+ %81 = bitcast %struct.btCollisionObject* %39 to i8* ; [#uses=1]
+ ret i8* %81
+
+bb13: ; preds = %bb1, %bb, %invcont
+ ret i8* null
+
+lpad: ; preds = %entry
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select16 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ store i32 (...)** getelementptr inbounds ([6 x i32 (...)*]* @_ZTVN16btCollisionWorld24ClosestRayResultCallbackE, i32 0, i32 2), i32 (...)*** %0, align 8
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr)
+ unreachable
+}
+
+; [#uses=1]
+define void @_ZN16btRaycastVehicle14updateFrictionEf(%struct.btRaycastVehicle* %this, float %timeStep) align 2 {
+entry:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca float, align 4 ; [#uses=2]
+ %3 = alloca float, align 4 ; [#uses=2]
+ %4 = alloca %struct.btQuadWord, align 8 ; [#uses=1]
+ %5 = alloca %struct.btQuadWord, align 8 ; [#uses=1]
+ %wheelBasis0 = alloca %struct.btMatrix3x3, align 8 ; [#uses=15]
+ %contactPt = alloca %struct.btWheelContactPoint, align 8 ; [#uses=11]
+ %rel_pos = alloca %struct.btQuadWord, align 8 ; [#uses=7]
+ %rel_pos2 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %sideImp = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %6 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 1 ; [#uses=7]
+ %7 = load i32* %6, align 4 ; [#uses=5]
+ %8 = icmp eq i32 %7, 0 ; [#uses=1]
+ br i1 %8, label %return, label %bb
+
+bb: ; preds = %entry
+ %9 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(%"struct.btAlignedObjectArray<btVector3>"* %9, i32 %7, %struct.btQuadWord* %5) inlinehint
+ %10 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(%"struct.btAlignedObjectArray<btVector3>"* %10, i32 %7, %struct.btQuadWord* %4) inlinehint
+ store float 0.000000e+00, float* %3, align 4
+ %11 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIfE6resizeEiRKf(%"struct.btAlignedObjectArray<float>"* %11, i32 %7, float* %3) inlinehint
+ store float 0.000000e+00, float* %2, align 4
+ %12 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayIfE6resizeEiRKf(%"struct.btAlignedObjectArray<float>"* %12, i32 %7, float* %2) inlinehint
+ %13 = load i32* %6, align 4 ; [#uses=1]
+ %14 = icmp sgt i32 %13, 0 ; [#uses=1]
+ br i1 %14, label %bb.nph96, label %return
+
+bb.nph96: ; preds = %bb
+ %15 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb1, %bb.nph96
+ %i.095 = phi i32 [ 0, %bb.nph96 ], [ %19, %bb1 ] ; [#uses=3]
+ %17 = load float** %15, align 4 ; [#uses=1]
+ %scevgep220 = getelementptr float* %17, i32 %i.095 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep220, align 4
+ %18 = load float** %16, align 4 ; [#uses=1]
+ %scevgep221 = getelementptr float* %18, i32 %i.095 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep221, align 4
+ %19 = add nsw i32 %i.095, 1 ; [#uses=2]
+ %20 = load i32* %6, align 4 ; [#uses=2]
+ %21 = icmp sgt i32 %20, %19 ; [#uses=1]
+ br i1 %21, label %bb1, label %bb12.preheader
+
+bb12.preheader: ; preds = %bb1
+ %22 = icmp sgt i32 %20, 0 ; [#uses=1]
+ br i1 %22, label %bb.nph94, label %return
+
+bb.nph94: ; preds = %bb12.preheader
+ %23 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %35 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 3 ; [#uses=5]
+ %37 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 14 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 3 ; [#uses=2]
+ %39 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 3 ; [#uses=2]
+ %40 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 13 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb11, %bb.nph94
+ %i6.093 = phi i32 [ 0, %bb.nph94 ], [ %tmp219, %bb11 ] ; [#uses=41]
+ %tmp219 = add i32 %i6.093, 1 ; [#uses=2]
+ %41 = load %struct.btWheelInfo** %23, align 4 ; [#uses=17]
+ %scevgep148 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 0, i32 7 ; [#uses=1]
+ %42 = load i8** %scevgep148, align 4 ; [#uses=2]
+ %43 = icmp eq i8* %42, null ; [#uses=1]
+ br i1 %43, label %bb11, label %bb10
+
+bb10: ; preds = %bb7
+ %44 = bitcast i8* %42 to %struct.btRigidBody* ; [#uses=1]
+ %scevgep149150 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %45 = load float* %scevgep149150, align 4 ; [#uses=1]
+ store float %45, float* %24, align 8
+ %scevgep151 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %scevgep151, align 4 ; [#uses=1]
+ store float %46, float* %25, align 4
+ %scevgep152 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %47 = load float* %scevgep152, align 4 ; [#uses=1]
+ store float %47, float* %26, align 8
+ %scevgep153 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %48 = load float* %scevgep153, align 4 ; [#uses=1]
+ store float %48, float* %27, align 4
+ %scevgep154155 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %49 = load float* %scevgep154155, align 4 ; [#uses=1]
+ store float %49, float* %28, align 8
+ %scevgep156 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %50 = load float* %scevgep156, align 4 ; [#uses=1]
+ store float %50, float* %29, align 4
+ %scevgep157 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %scevgep157, align 4 ; [#uses=1]
+ store float %51, float* %30, align 8
+ %scevgep158 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %52 = load float* %scevgep158, align 4 ; [#uses=1]
+ store float %52, float* %31, align 4
+ %scevgep159160 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %53 = load float* %scevgep159160, align 4 ; [#uses=1]
+ store float %53, float* %32, align 8
+ %scevgep161 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %scevgep161, align 4 ; [#uses=1]
+ store float %54, float* %33, align 4
+ %scevgep162 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %55 = load float* %scevgep162, align 4 ; [#uses=1]
+ store float %55, float* %34, align 8
+ %scevgep163 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ %56 = load float* %scevgep163, align 4 ; [#uses=1]
+ store float %56, float* %35, align 4
+ %57 = load %struct.btQuadWord** %36, align 4 ; [#uses=4]
+ %58 = load i32* %37, align 4 ; [#uses=3]
+ %59 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 2, i32 0, i32 %58 ; [#uses=1]
+ %60 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 1, i32 0, i32 %58 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btMatrix3x3* %wheelBasis0, i32 0, i32 0, i32 0, i32 0, i32 %58 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=1]
+ %63 = load float* %60, align 4 ; [#uses=1]
+ %64 = load float* %59, align 4 ; [#uses=1]
+ %scevgep164165 = getelementptr inbounds %struct.btQuadWord* %57, i32 %i6.093, i32 0, i32 0 ; [#uses=1]
+ store float %62, float* %scevgep164165, align 4
+ %scevgep166 = getelementptr %struct.btQuadWord* %57, i32 %i6.093, i32 0, i32 1 ; [#uses=1]
+ store float %63, float* %scevgep166, align 4
+ %scevgep167 = getelementptr %struct.btQuadWord* %57, i32 %i6.093, i32 0, i32 2 ; [#uses=1]
+ store float %64, float* %scevgep167, align 4
+ %scevgep168 = getelementptr %struct.btQuadWord* %57, i32 %i6.093, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep168, align 4
+ %65 = load %struct.btQuadWord** %36, align 4 ; [#uses=3]
+ %scevgep169170 = getelementptr inbounds %struct.btQuadWord* %65, i32 %i6.093, i32 0, i32 0 ; [#uses=2]
+ %66 = load float* %scevgep169170, align 4 ; [#uses=2]
+ %scevgep171172 = getelementptr inbounds %struct.btWheelInfo* %41, i32 %i6.093, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %67 = load float* %scevgep171172, align 4 ; [#uses=2]
+ %68 = fmul float %66, %67 ; [#uses=1]
+ %scevgep173 = getelementptr %struct.btQuadWord* %65, i32 %i6.093, i32 0, i32 1 ; [#uses=2]
+ %69 = load float* %scevgep173, align 4 ; [#uses=2]
+ %scevgep174 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %70 = load float* %scevgep174, align 4 ; [#uses=2]
+ %71 = fmul float %69, %70 ; [#uses=1]
+ %72 = fadd float %68, %71 ; [#uses=1]
+ %scevgep175 = getelementptr %struct.btQuadWord* %65, i32 %i6.093, i32 0, i32 2 ; [#uses=2]
+ %73 = load float* %scevgep175, align 4 ; [#uses=2]
+ %scevgep176 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %74 = load float* %scevgep176, align 4 ; [#uses=2]
+ %75 = fmul float %73, %74 ; [#uses=1]
+ %76 = fadd float %72, %75 ; [#uses=3]
+ %77 = fmul float %74, %76 ; [#uses=1]
+ %78 = fmul float %70, %76 ; [#uses=1]
+ %79 = fmul float %67, %76 ; [#uses=1]
+ %80 = fsub float %66, %79 ; [#uses=1]
+ store float %80, float* %scevgep169170, align 4
+ %81 = fsub float %69, %78 ; [#uses=1]
+ store float %81, float* %scevgep173, align 4
+ %82 = fsub float %73, %77 ; [#uses=1]
+ store float %82, float* %scevgep175, align 4
+ %83 = load %struct.btQuadWord** %36, align 4 ; [#uses=3]
+ %scevgep190191 = getelementptr inbounds %struct.btQuadWord* %83, i32 %i6.093, i32 0, i32 0 ; [#uses=2]
+ %84 = load float* %scevgep190191, align 4 ; [#uses=3]
+ %85 = fmul float %84, %84 ; [#uses=1]
+ %scevgep193 = getelementptr %struct.btQuadWord* %83, i32 %i6.093, i32 0, i32 1 ; [#uses=2]
+ %86 = load float* %scevgep193, align 4 ; [#uses=3]
+ %87 = fmul float %86, %86 ; [#uses=1]
+ %88 = fadd float %85, %87 ; [#uses=1]
+ %scevgep194 = getelementptr %struct.btQuadWord* %83, i32 %i6.093, i32 0, i32 2 ; [#uses=2]
+ %89 = load float* %scevgep194, align 4 ; [#uses=3]
+ %90 = fmul float %89, %89 ; [#uses=1]
+ %91 = fadd float %88, %90 ; [#uses=1]
+ %92 = call float @sqrtf(float %91) nounwind readonly ; [#uses=1]
+ %93 = fdiv float 1.000000e+00, %92 ; [#uses=3]
+ %94 = fmul float %84, %93 ; [#uses=1]
+ store float %94, float* %scevgep190191, align 4
+ %95 = fmul float %86, %93 ; [#uses=1]
+ store float %95, float* %scevgep193, align 4
+ %96 = fmul float %89, %93 ; [#uses=1]
+ store float %96, float* %scevgep194, align 4
+ %97 = load %struct.btQuadWord** %38, align 4 ; [#uses=4]
+ %98 = load %struct.btQuadWord** %36, align 4 ; [#uses=3]
+ %99 = load float* %scevgep171172, align 4 ; [#uses=2]
+ %scevgep198 = getelementptr %struct.btQuadWord* %98, i32 %i6.093, i32 0, i32 1 ; [#uses=1]
+ %100 = load float* %scevgep198, align 4 ; [#uses=2]
+ %101 = fmul float %99, %100 ; [#uses=1]
+ %102 = load float* %scevgep174, align 4 ; [#uses=2]
+ %scevgep200201 = getelementptr inbounds %struct.btQuadWord* %98, i32 %i6.093, i32 0, i32 0 ; [#uses=1]
+ %103 = load float* %scevgep200201, align 4 ; [#uses=2]
+ %104 = fmul float %102, %103 ; [#uses=1]
+ %105 = fsub float %101, %104 ; [#uses=1]
+ %106 = load float* %scevgep176, align 4 ; [#uses=2]
+ %107 = fmul float %106, %103 ; [#uses=1]
+ %scevgep203 = getelementptr %struct.btQuadWord* %98, i32 %i6.093, i32 0, i32 2 ; [#uses=1]
+ %108 = load float* %scevgep203, align 4 ; [#uses=2]
+ %109 = fmul float %99, %108 ; [#uses=1]
+ %110 = fsub float %107, %109 ; [#uses=1]
+ %111 = fmul float %102, %108 ; [#uses=1]
+ %112 = fmul float %106, %100 ; [#uses=1]
+ %113 = fsub float %111, %112 ; [#uses=1]
+ %scevgep204205 = getelementptr inbounds %struct.btQuadWord* %97, i32 %i6.093, i32 0, i32 0 ; [#uses=1]
+ store float %113, float* %scevgep204205, align 4
+ %scevgep206 = getelementptr %struct.btQuadWord* %97, i32 %i6.093, i32 0, i32 1 ; [#uses=1]
+ store float %110, float* %scevgep206, align 4
+ %scevgep207 = getelementptr %struct.btQuadWord* %97, i32 %i6.093, i32 0, i32 2 ; [#uses=1]
+ store float %105, float* %scevgep207, align 4
+ %scevgep208 = getelementptr %struct.btQuadWord* %97, i32 %i6.093, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep208, align 4
+ %114 = load %struct.btQuadWord** %38, align 4 ; [#uses=3]
+ %scevgep211212 = getelementptr inbounds %struct.btQuadWord* %114, i32 %i6.093, i32 0, i32 0 ; [#uses=2]
+ %115 = load float* %scevgep211212, align 4 ; [#uses=3]
+ %116 = fmul float %115, %115 ; [#uses=1]
+ %scevgep214 = getelementptr %struct.btQuadWord* %114, i32 %i6.093, i32 0, i32 1 ; [#uses=2]
+ %117 = load float* %scevgep214, align 4 ; [#uses=3]
+ %118 = fmul float %117, %117 ; [#uses=1]
+ %119 = fadd float %116, %118 ; [#uses=1]
+ %scevgep216 = getelementptr %struct.btQuadWord* %114, i32 %i6.093, i32 0, i32 2 ; [#uses=2]
+ %120 = load float* %scevgep216, align 4 ; [#uses=3]
+ %121 = fmul float %120, %120 ; [#uses=1]
+ %122 = fadd float %119, %121 ; [#uses=1]
+ %123 = call float @sqrtf(float %122) nounwind readonly ; [#uses=1]
+ %124 = fdiv float 1.000000e+00, %123 ; [#uses=3]
+ %125 = fmul float %115, %124 ; [#uses=1]
+ store float %125, float* %scevgep211212, align 4
+ %126 = fmul float %117, %124 ; [#uses=1]
+ store float %126, float* %scevgep214, align 4
+ %127 = fmul float %120, %124 ; [#uses=1]
+ store float %127, float* %scevgep216, align 4
+ %128 = load float** %39, align 4 ; [#uses=1]
+ %129 = load %struct.btQuadWord** %36, align 4 ; [#uses=1]
+ %130 = load %struct.btRigidBody** %40, align 4 ; [#uses=1]
+ %scevgep146 = getelementptr %struct.btQuadWord* %129, i32 %i6.093 ; [#uses=1]
+ %scevgep147 = getelementptr float* %128, i32 %i6.093 ; [#uses=1]
+ %scevgep217 = getelementptr %struct.btWheelInfo* %41, i32 %i6.093, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep217218 = bitcast float* %scevgep217 to %struct.btQuadWord* ; [#uses=2]
+ call void @_Z22resolveSingleBilateralR11btRigidBodyRK9btVector3S0_S3_fS3_Rff(%struct.btRigidBody* %130, %struct.btQuadWord* %scevgep217218, %struct.btRigidBody* %44, %struct.btQuadWord* %scevgep217218, float 0.000000e+00, %struct.btQuadWord* %scevgep146, float* %scevgep147, float %timeStep)
+ %131 = load float** %39, align 4 ; [#uses=1]
+ %scevgep145 = getelementptr float* %131, i32 %i6.093 ; [#uses=2]
+ %132 = load float* %scevgep145, align 4 ; [#uses=1]
+ %133 = load float* @sideFrictionStiffness2, align 4 ; [#uses=1]
+ %134 = fmul float %132, %133 ; [#uses=1]
+ store float %134, float* %scevgep145, align 4
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb7
+ %135 = load i32* %6, align 4 ; [#uses=2]
+ %136 = icmp sgt i32 %135, %tmp219 ; [#uses=1]
+ br i1 %136, label %bb7, label %bb42.preheader
+
+bb42.preheader: ; preds = %bb11
+ %137 = icmp sgt i32 %135, 0 ; [#uses=1]
+ br i1 %137, label %bb.nph92, label %return
+
+bb.nph92: ; preds = %bb42.preheader
+ %138 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=5]
+ %139 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 3 ; [#uses=4]
+ %140 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %142 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 13 ; [#uses=1]
+ %143 = getelementptr inbounds %struct.btWheelContactPoint* %contactPt, i32 0, i32 0 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btWheelContactPoint* %contactPt, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %145 = getelementptr inbounds %struct.btWheelContactPoint* %contactPt, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btWheelContactPoint* %contactPt, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %147 = getelementptr inbounds %struct.btWheelContactPoint* %contactPt, i32 0, i32 1 ; [#uses=1]
+ %148 = getelementptr inbounds %struct.btWheelContactPoint* %contactPt, i32 0, i32 5 ; [#uses=1]
+ %149 = getelementptr inbounds %struct.btWheelContactPoint* %contactPt, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %150 = getelementptr inbounds %struct.btWheelContactPoint* %contactPt, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %151 = getelementptr inbounds %struct.btWheelContactPoint* %contactPt, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btWheelContactPoint* %contactPt, i32 0, i32 4 ; [#uses=1]
+ br label %bb16
+
+bb16: ; preds = %bb41, %bb.nph92
+ %wheel.091 = phi i32 [ 0, %bb.nph92 ], [ %tmp143, %bb41 ] ; [#uses=17]
+ %sliding.190 = phi i8 [ 0, %bb.nph92 ], [ %sliding.0, %bb41 ] ; [#uses=2]
+ %tmp143 = add i32 %wheel.091, 1 ; [#uses=2]
+ %153 = load %struct.btWheelInfo** %138, align 4 ; [#uses=6]
+ %scevgep130 = getelementptr %struct.btWheelInfo* %153, i32 %wheel.091, i32 0, i32 7 ; [#uses=1]
+ %154 = load i8** %scevgep130, align 4 ; [#uses=2]
+ %155 = bitcast i8* %154 to %struct.btRigidBody* ; [#uses=1]
+ %156 = icmp eq i8* %154, null ; [#uses=1]
+ br i1 %156, label %bb31, label %bb22
+
+bb22: ; preds = %bb16
+ %scevgep131 = getelementptr %struct.btWheelInfo* %153, i32 %wheel.091, i32 17 ; [#uses=1]
+ %157 = load float* %scevgep131, align 4 ; [#uses=2]
+ %158 = fcmp une float %157, 0.000000e+00 ; [#uses=1]
+ br i1 %158, label %bb23, label %bb24
+
+bb23: ; preds = %bb22
+ %159 = fmul float %157, %timeStep ; [#uses=1]
+ br label %bb32
+
+bb24: ; preds = %bb22
+ %scevgep132 = getelementptr %struct.btWheelInfo* %153, i32 %wheel.091, i32 18 ; [#uses=1]
+ %160 = load float* %scevgep132, align 4 ; [#uses=2]
+ %161 = fcmp une float %160, 0.000000e+00 ; [#uses=1]
+ %iftmp.218.0 = select i1 %161, float %160, float 0.000000e+00 ; [#uses=1]
+ %162 = load %struct.btQuadWord** %141, align 4 ; [#uses=1]
+ %163 = load %struct.btRigidBody** %142, align 4 ; [#uses=1]
+ %scevgep129 = getelementptr %struct.btQuadWord* %162, i32 %wheel.091 ; [#uses=1]
+ %scevgep133 = getelementptr %struct.btWheelInfo* %153, i32 %wheel.091, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %scevgep133134 = bitcast float* %scevgep133 to %struct.btQuadWord* ; [#uses=1]
+ call void @_ZN19btWheelContactPointC1EP11btRigidBodyS1_RK9btVector3S4_f(%struct.btWheelContactPoint* %contactPt, %struct.btRigidBody* %163, %struct.btRigidBody* %155, %struct.btQuadWord* %scevgep133134, %struct.btQuadWord* %scevgep129, float %iftmp.218.0) nounwind
+ %164 = load %struct.btRigidBody** %143, align 8 ; [#uses=9]
+ %165 = load float* %144, align 8 ; [#uses=2]
+ %166 = getelementptr inbounds %struct.btRigidBody* %164, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %167 = load float* %166, align 4 ; [#uses=1]
+ %168 = fsub float %165, %167 ; [#uses=2]
+ %169 = load float* %145, align 4 ; [#uses=2]
+ %170 = getelementptr inbounds %struct.btRigidBody* %164, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %171 = load float* %170, align 4 ; [#uses=1]
+ %172 = fsub float %169, %171 ; [#uses=2]
+ %173 = load float* %146, align 8 ; [#uses=2]
+ %174 = getelementptr inbounds %struct.btRigidBody* %164, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %175 = load float* %174, align 4 ; [#uses=1]
+ %176 = fsub float %173, %175 ; [#uses=2]
+ %177 = load %struct.btRigidBody** %147, align 4 ; [#uses=9]
+ %178 = getelementptr inbounds %struct.btRigidBody* %177, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %179 = load float* %178, align 4 ; [#uses=1]
+ %180 = fsub float %165, %179 ; [#uses=2]
+ %181 = getelementptr inbounds %struct.btRigidBody* %177, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %182 = load float* %181, align 4 ; [#uses=1]
+ %183 = fsub float %169, %182 ; [#uses=2]
+ %184 = getelementptr inbounds %struct.btRigidBody* %177, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %185 = load float* %184, align 4 ; [#uses=1]
+ %186 = fsub float %173, %185 ; [#uses=2]
+ %187 = load float* %148, align 4 ; [#uses=3]
+ %188 = getelementptr inbounds %struct.btRigidBody* %164, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %189 = load float* %188, align 4 ; [#uses=2]
+ %190 = fmul float %189, %172 ; [#uses=1]
+ %191 = getelementptr inbounds %struct.btRigidBody* %164, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %192 = load float* %191, align 4 ; [#uses=2]
+ %193 = fmul float %192, %176 ; [#uses=1]
+ %194 = fsub float %190, %193 ; [#uses=1]
+ %195 = getelementptr inbounds %struct.btRigidBody* %164, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %196 = load float* %195, align 4 ; [#uses=2]
+ %197 = fmul float %196, %176 ; [#uses=1]
+ %198 = fmul float %189, %168 ; [#uses=1]
+ %199 = fsub float %197, %198 ; [#uses=1]
+ %200 = fmul float %192, %168 ; [#uses=1]
+ %201 = fmul float %196, %172 ; [#uses=1]
+ %202 = fsub float %200, %201 ; [#uses=1]
+ %203 = getelementptr inbounds %struct.btRigidBody* %164, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %204 = load float* %203, align 4 ; [#uses=1]
+ %205 = fadd float %204, %194 ; [#uses=1]
+ %206 = getelementptr inbounds %struct.btRigidBody* %164, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %207 = load float* %206, align 4 ; [#uses=1]
+ %208 = fadd float %207, %199 ; [#uses=1]
+ %209 = getelementptr inbounds %struct.btRigidBody* %164, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %210 = load float* %209, align 4 ; [#uses=1]
+ %211 = fadd float %210, %202 ; [#uses=1]
+ %212 = getelementptr inbounds %struct.btRigidBody* %177, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %213 = load float* %212, align 4 ; [#uses=2]
+ %214 = fmul float %213, %183 ; [#uses=1]
+ %215 = getelementptr inbounds %struct.btRigidBody* %177, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %216 = load float* %215, align 4 ; [#uses=2]
+ %217 = fmul float %216, %186 ; [#uses=1]
+ %218 = fsub float %214, %217 ; [#uses=1]
+ %219 = getelementptr inbounds %struct.btRigidBody* %177, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %220 = load float* %219, align 4 ; [#uses=2]
+ %221 = fmul float %220, %186 ; [#uses=1]
+ %222 = fmul float %213, %180 ; [#uses=1]
+ %223 = fsub float %221, %222 ; [#uses=1]
+ %224 = fmul float %216, %180 ; [#uses=1]
+ %225 = fmul float %220, %183 ; [#uses=1]
+ %226 = fsub float %224, %225 ; [#uses=1]
+ %227 = getelementptr inbounds %struct.btRigidBody* %177, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %228 = load float* %227, align 4 ; [#uses=1]
+ %229 = fadd float %228, %218 ; [#uses=1]
+ %230 = getelementptr inbounds %struct.btRigidBody* %177, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %231 = load float* %230, align 4 ; [#uses=1]
+ %232 = fadd float %231, %223 ; [#uses=1]
+ %233 = getelementptr inbounds %struct.btRigidBody* %177, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %234 = load float* %233, align 4 ; [#uses=1]
+ %235 = fadd float %234, %226 ; [#uses=1]
+ %236 = fsub float %205, %229 ; [#uses=1]
+ %237 = fsub float %208, %232 ; [#uses=1]
+ %238 = fsub float %211, %235 ; [#uses=1]
+ %239 = load float* %149, align 8 ; [#uses=1]
+ %240 = fmul float %239, %238 ; [#uses=1]
+ %241 = load float* %150, align 4 ; [#uses=1]
+ %242 = fmul float %241, %237 ; [#uses=1]
+ %243 = fadd float %240, %242 ; [#uses=1]
+ %244 = load float* %151, align 8 ; [#uses=1]
+ %245 = fmul float %244, %236 ; [#uses=1]
+ %246 = fadd float %243, %245 ; [#uses=1]
+ %247 = fsub float -0.000000e+00, %246 ; [#uses=1]
+ %248 = load float* %152, align 8 ; [#uses=1]
+ %249 = fmul float %248, %247 ; [#uses=2]
+ %250 = fcmp olt float %187, %249 ; [#uses=1]
+ %j1.1.i = select i1 %250, float %187, float %249 ; [#uses=2]
+ %251 = fsub float -0.000000e+00, %187 ; [#uses=2]
+ %252 = fcmp olt float %j1.1.i, %251 ; [#uses=1]
+ %j1.0.i = select i1 %252, float %251, float %j1.1.i ; [#uses=1]
+ br label %bb32
+
+bb31: ; preds = %bb16
+ %253 = load float** %139, align 4 ; [#uses=1]
+ %scevgep128 = getelementptr float* %253, i32 %wheel.091 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep128, align 4
+ %254 = load %struct.btWheelInfo** %138, align 4 ; [#uses=1]
+ %scevgep135 = getelementptr %struct.btWheelInfo* %254, i32 %wheel.091, i32 24 ; [#uses=1]
+ store float 1.000000e+00, float* %scevgep135, align 4
+ br label %bb41
+
+bb32: ; preds = %bb24, %bb23
+ %rollingFriction.0.ph = phi float [ %j1.0.i, %bb24 ], [ %159, %bb23 ] ; [#uses=1]
+ %255 = load float** %139, align 4 ; [#uses=1]
+ %scevgep128223 = getelementptr float* %255, i32 %wheel.091 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep128223, align 4
+ %256 = load %struct.btWheelInfo** %138, align 4 ; [#uses=1]
+ %scevgep135224 = getelementptr %struct.btWheelInfo* %256, i32 %wheel.091, i32 24 ; [#uses=1]
+ store float 1.000000e+00, float* %scevgep135224, align 4
+ %257 = load %struct.btWheelInfo** %138, align 4 ; [#uses=1]
+ %scevgep136 = getelementptr %struct.btWheelInfo* %257, i32 %wheel.091, i32 24 ; [#uses=1]
+ store float 1.000000e+00, float* %scevgep136, align 4
+ %scevgep137 = getelementptr %struct.btWheelInfo* %153, i32 %wheel.091, i32 23 ; [#uses=1]
+ %258 = load float* %scevgep137, align 4 ; [#uses=1]
+ %259 = fmul float %258, %timeStep ; [#uses=1]
+ %scevgep138 = getelementptr %struct.btWheelInfo* %153, i32 %wheel.091, i32 11 ; [#uses=1]
+ %260 = load float* %scevgep138, align 4 ; [#uses=1]
+ %261 = fmul float %259, %260 ; [#uses=3]
+ %262 = fmul float %261, %261 ; [#uses=1]
+ %263 = load float** %139, align 4 ; [#uses=1]
+ %scevgep127 = getelementptr float* %263, i32 %wheel.091 ; [#uses=1]
+ store float %rollingFriction.0.ph, float* %scevgep127, align 4
+ %264 = load float** %139, align 4 ; [#uses=1]
+ %scevgep126 = getelementptr float* %264, i32 %wheel.091 ; [#uses=1]
+ %265 = load float* %scevgep126, align 4 ; [#uses=1]
+ %266 = fmul float %265, 5.000000e-01 ; [#uses=2]
+ %267 = load float** %140, align 4 ; [#uses=1]
+ %scevgep125 = getelementptr float* %267, i32 %wheel.091 ; [#uses=1]
+ %268 = load float* %scevgep125, align 4 ; [#uses=2]
+ %269 = fmul float %266, %266 ; [#uses=1]
+ %270 = fmul float %268, %268 ; [#uses=1]
+ %271 = fadd float %269, %270 ; [#uses=2]
+ %272 = fcmp ogt float %271, %262 ; [#uses=1]
+ br i1 %272, label %bb39, label %bb41
+
+bb39: ; preds = %bb32
+ %273 = call float @sqrtf(float %271) nounwind readonly ; [#uses=1]
+ %274 = fdiv float %261, %273 ; [#uses=1]
+ %275 = load %struct.btWheelInfo** %138, align 4 ; [#uses=1]
+ %scevgep139 = getelementptr %struct.btWheelInfo* %275, i32 %wheel.091, i32 24 ; [#uses=2]
+ %276 = load float* %scevgep139, align 4 ; [#uses=1]
+ %277 = fmul float %276, %274 ; [#uses=1]
+ store float %277, float* %scevgep139, align 4
+ br label %bb41
+
+bb41: ; preds = %bb39, %bb32, %bb31
+ %sliding.0 = phi i8 [ 1, %bb39 ], [ %sliding.190, %bb32 ], [ %sliding.190, %bb31 ] ; [#uses=2]
+ %278 = load i32* %6, align 4 ; [#uses=3]
+ %279 = icmp sgt i32 %278, %tmp143 ; [#uses=1]
+ br i1 %279, label %bb16, label %bb44
+
+bb44: ; preds = %bb41
+ %toBool45 = icmp eq i8 %sliding.0, 0 ; [#uses=1]
+ br i1 %toBool45, label %bb74.preheader, label %bb55.preheader
+
+bb55.preheader: ; preds = %bb44
+ %280 = icmp sgt i32 %278, 0 ; [#uses=1]
+ br i1 %280, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb55.preheader
+ %281 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 3 ; [#uses=2]
+ %282 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=2]
+ %283 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ br label %bb49
+
+bb49: ; preds = %bb54, %bb.nph
+ %wheel48.087 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb54 ] ; [#uses=6]
+ %tmp = add i32 %wheel48.087, 1 ; [#uses=2]
+ %284 = load float** %281, align 4 ; [#uses=1]
+ %scevgep100 = getelementptr float* %284, i32 %wheel48.087 ; [#uses=1]
+ %285 = load float* %scevgep100, align 4 ; [#uses=1]
+ %286 = fcmp une float %285, 0.000000e+00 ; [#uses=1]
+ br i1 %286, label %bb51, label %bb54
+
+bb51: ; preds = %bb49
+ %287 = load %struct.btWheelInfo** %282, align 4 ; [#uses=1]
+ %scevgep101 = getelementptr %struct.btWheelInfo* %287, i32 %wheel48.087, i32 24 ; [#uses=1]
+ %288 = load float* %scevgep101, align 4 ; [#uses=2]
+ %289 = fcmp olt float %288, 1.000000e+00 ; [#uses=1]
+ br i1 %289, label %bb53, label %bb54
+
+bb53: ; preds = %bb51
+ %290 = load float** %283, align 4 ; [#uses=1]
+ %scevgep99 = getelementptr float* %290, i32 %wheel48.087 ; [#uses=2]
+ %291 = load float* %scevgep99, align 4 ; [#uses=1]
+ %292 = fmul float %291, %288 ; [#uses=1]
+ store float %292, float* %scevgep99, align 4
+ %293 = load float** %281, align 4 ; [#uses=1]
+ %scevgep97 = getelementptr float* %293, i32 %wheel48.087 ; [#uses=2]
+ %294 = load float* %scevgep97, align 4 ; [#uses=1]
+ %295 = load %struct.btWheelInfo** %282, align 4 ; [#uses=1]
+ %scevgep103 = getelementptr %struct.btWheelInfo* %295, i32 %wheel48.087, i32 24 ; [#uses=1]
+ %296 = load float* %scevgep103, align 4 ; [#uses=1]
+ %297 = fmul float %294, %296 ; [#uses=1]
+ store float %297, float* %scevgep97, align 4
+ br label %bb54
+
+bb54: ; preds = %bb53, %bb51, %bb49
+ %298 = load i32* %6, align 4 ; [#uses=2]
+ %299 = icmp sgt i32 %298, %tmp ; [#uses=1]
+ br i1 %299, label %bb49, label %bb74.preheader
+
+bb.nph89: ; preds = %bb74.preheader
+ %300 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=2]
+ %301 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 13 ; [#uses=2]
+ %302 = getelementptr inbounds %struct.btQuadWord* %rel_pos, i32 0, i32 0, i32 0 ; [#uses=1]
+ %303 = getelementptr inbounds %struct.btQuadWord* %rel_pos, i32 0, i32 0, i32 1 ; [#uses=1]
+ %304 = getelementptr inbounds %struct.btQuadWord* %rel_pos, i32 0, i32 0, i32 2 ; [#uses=1]
+ %305 = getelementptr inbounds %struct.btQuadWord* %rel_pos, i32 0, i32 0, i32 3 ; [#uses=1]
+ %306 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ %307 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %308 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %309 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %310 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %311 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ %312 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ %313 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %314 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %315 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %316 = getelementptr inbounds %struct.btQuadWord* %rel_pos2, i32 0, i32 0, i32 3 ; [#uses=1]
+ %317 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ %318 = getelementptr inbounds %struct.btQuadWord* %sideImp, i32 0, i32 0, i32 0 ; [#uses=2]
+ %319 = getelementptr inbounds %struct.btQuadWord* %sideImp, i32 0, i32 0, i32 1 ; [#uses=2]
+ %320 = getelementptr inbounds %struct.btQuadWord* %sideImp, i32 0, i32 0, i32 2 ; [#uses=2]
+ %321 = getelementptr inbounds %struct.btQuadWord* %sideImp, i32 0, i32 0, i32 3 ; [#uses=1]
+ %322 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 15 ; [#uses=1]
+ %323 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %324 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %325 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %326 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb60
+
+bb60: ; preds = %bb73, %bb.nph89
+ %wheel59.088 = phi i32 [ 0, %bb.nph89 ], [ %tmp124, %bb73 ] ; [#uses=14]
+ %tmp124 = add i32 %wheel59.088, 1 ; [#uses=2]
+ %327 = load %struct.btWheelInfo** %300, align 4 ; [#uses=4]
+ %328 = load %struct.btRigidBody** %301, align 4 ; [#uses=4]
+ %scevgep108 = getelementptr %struct.btWheelInfo* %327, i32 %wheel59.088, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ %329 = load float* %scevgep108, align 4 ; [#uses=1]
+ %330 = getelementptr inbounds %struct.btRigidBody* %328, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %331 = load float* %330, align 4 ; [#uses=1]
+ %332 = fsub float %329, %331 ; [#uses=1]
+ %scevgep109 = getelementptr %struct.btWheelInfo* %327, i32 %wheel59.088, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ %333 = load float* %scevgep109, align 4 ; [#uses=1]
+ %334 = getelementptr inbounds %struct.btRigidBody* %328, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %335 = load float* %334, align 4 ; [#uses=1]
+ %336 = fsub float %333, %335 ; [#uses=1]
+ %scevgep110 = getelementptr %struct.btWheelInfo* %327, i32 %wheel59.088, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ %337 = load float* %scevgep110, align 4 ; [#uses=1]
+ %338 = getelementptr inbounds %struct.btRigidBody* %328, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %339 = load float* %338, align 4 ; [#uses=1]
+ %340 = fsub float %337, %339 ; [#uses=1]
+ store float %340, float* %302, align 8
+ store float %336, float* %303, align 4
+ store float %332, float* %304, align 8
+ store float 0.000000e+00, float* %305, align 4
+ %341 = load float** %306, align 4 ; [#uses=1]
+ %scevgep107 = getelementptr float* %341, i32 %wheel59.088 ; [#uses=1]
+ %342 = load float* %scevgep107, align 4 ; [#uses=4]
+ %343 = fcmp une float %342, 0.000000e+00 ; [#uses=1]
+ br i1 %343, label %bb65, label %bb66
+
+bb65: ; preds = %bb60
+ %344 = load %struct.btQuadWord** %307, align 4 ; [#uses=3]
+ %scevgep120 = getelementptr %struct.btQuadWord* %344, i32 %wheel59.088, i32 0, i32 2 ; [#uses=1]
+ %345 = load float* %scevgep120, align 4 ; [#uses=1]
+ %346 = fmul float %345, %342 ; [#uses=1]
+ %scevgep121 = getelementptr %struct.btQuadWord* %344, i32 %wheel59.088, i32 0, i32 1 ; [#uses=1]
+ %347 = load float* %scevgep121, align 4 ; [#uses=1]
+ %348 = fmul float %347, %342 ; [#uses=1]
+ %scevgep122123 = getelementptr inbounds %struct.btQuadWord* %344, i32 %wheel59.088, i32 0, i32 0 ; [#uses=1]
+ %349 = load float* %scevgep122123, align 4 ; [#uses=1]
+ %350 = fmul float %349, %342 ; [#uses=1]
+ store float %350, float* %308, align 8
+ store float %348, float* %309, align 4
+ store float %346, float* %310, align 8
+ store float 0.000000e+00, float* %311, align 4
+ call void @_ZN11btRigidBody12applyImpulseERK9btVector3S2_(%struct.btRigidBody* %328, %struct.btQuadWord* %1, %struct.btQuadWord* %rel_pos) nounwind
+ br label %bb66
+
+bb66: ; preds = %bb65, %bb60
+ %351 = load float** %312, align 4 ; [#uses=1]
+ %scevgep105 = getelementptr float* %351, i32 %wheel59.088 ; [#uses=1]
+ %352 = load float* %scevgep105, align 4 ; [#uses=4]
+ %353 = fcmp une float %352, 0.000000e+00 ; [#uses=1]
+ br i1 %353, label %bb68, label %bb73
+
+bb68: ; preds = %bb66
+ %354 = load %struct.btWheelInfo** %300, align 4 ; [#uses=1]
+ %scevgep111 = getelementptr %struct.btWheelInfo* %354, i32 %wheel59.088, i32 0, i32 7 ; [#uses=1]
+ %355 = load i8** %scevgep111, align 4 ; [#uses=4]
+ %356 = bitcast i8* %355 to %struct.btRigidBody* ; [#uses=1]
+ %357 = getelementptr inbounds i8* %355, i32 52 ; [#uses=1]
+ %358 = load float* %scevgep108, align 4 ; [#uses=1]
+ %359 = getelementptr inbounds i8* %355, i32 60 ; [#uses=1]
+ %360 = bitcast i8* %359 to float* ; [#uses=1]
+ %361 = load float* %360, align 4 ; [#uses=1]
+ %362 = fsub float %358, %361 ; [#uses=1]
+ %363 = load float* %scevgep109, align 4 ; [#uses=1]
+ %364 = getelementptr inbounds i8* %355, i32 56 ; [#uses=1]
+ %365 = bitcast i8* %364 to float* ; [#uses=1]
+ %366 = load float* %365, align 4 ; [#uses=1]
+ %367 = fsub float %363, %366 ; [#uses=1]
+ %368 = load float* %scevgep110, align 4 ; [#uses=1]
+ %369 = bitcast i8* %357 to float* ; [#uses=1]
+ %370 = load float* %369, align 4 ; [#uses=1]
+ %371 = fsub float %368, %370 ; [#uses=1]
+ store float %371, float* %313, align 8
+ store float %367, float* %314, align 4
+ store float %362, float* %315, align 8
+ store float 0.000000e+00, float* %316, align 4
+ %372 = load %struct.btQuadWord** %317, align 4 ; [#uses=3]
+ %scevgep115 = getelementptr %struct.btQuadWord* %372, i32 %wheel59.088, i32 0, i32 2 ; [#uses=1]
+ %373 = load float* %scevgep115, align 4 ; [#uses=1]
+ %374 = fmul float %373, %352 ; [#uses=1]
+ %scevgep116 = getelementptr %struct.btQuadWord* %372, i32 %wheel59.088, i32 0, i32 1 ; [#uses=1]
+ %375 = load float* %scevgep116, align 4 ; [#uses=1]
+ %376 = fmul float %375, %352 ; [#uses=1]
+ %scevgep117118 = getelementptr inbounds %struct.btQuadWord* %372, i32 %wheel59.088, i32 0, i32 0 ; [#uses=1]
+ %377 = load float* %scevgep117118, align 4 ; [#uses=1]
+ %378 = fmul float %377, %352 ; [#uses=1]
+ store float %378, float* %318, align 8
+ store float %376, float* %319, align 4
+ store float %374, float* %320, align 8
+ store float 0.000000e+00, float* %321, align 4
+ %379 = load i32* %322, align 4 ; [#uses=1]
+ %380 = getelementptr inbounds %struct.btQuadWord* %rel_pos, i32 0, i32 0, i32 %379 ; [#uses=2]
+ %381 = load float* %380, align 4 ; [#uses=1]
+ %scevgep119 = getelementptr %struct.btWheelInfo* %327, i32 %wheel59.088, i32 15 ; [#uses=1]
+ %382 = load float* %scevgep119, align 4 ; [#uses=1]
+ %383 = fmul float %381, %382 ; [#uses=1]
+ store float %383, float* %380, align 4
+ %384 = load %struct.btRigidBody** %301, align 4 ; [#uses=1]
+ call void @_ZN11btRigidBody12applyImpulseERK9btVector3S2_(%struct.btRigidBody* %384, %struct.btQuadWord* %sideImp, %struct.btQuadWord* %rel_pos) nounwind
+ %385 = load float* %320, align 8 ; [#uses=1]
+ %386 = fsub float -0.000000e+00, %385 ; [#uses=1]
+ %387 = load float* %319, align 4 ; [#uses=1]
+ %388 = fsub float -0.000000e+00, %387 ; [#uses=1]
+ %389 = load float* %318, align 8 ; [#uses=1]
+ %390 = fsub float -0.000000e+00, %389 ; [#uses=1]
+ store float %390, float* %323, align 8
+ store float %388, float* %324, align 4
+ store float %386, float* %325, align 8
+ store float 0.000000e+00, float* %326, align 4
+ call void @_ZN11btRigidBody12applyImpulseERK9btVector3S2_(%struct.btRigidBody* %356, %struct.btQuadWord* %0, %struct.btQuadWord* %rel_pos2) nounwind
+ br label %bb73
+
+bb73: ; preds = %bb68, %bb66
+ %391 = load i32* %6, align 4 ; [#uses=1]
+ %392 = icmp sgt i32 %391, %tmp124 ; [#uses=1]
+ br i1 %392, label %bb60, label %return
+
+bb74.preheader: ; preds = %bb54, %bb44
+ %393 = phi i32 [ %278, %bb44 ], [ %298, %bb54 ] ; [#uses=1]
+ %394 = icmp sgt i32 %393, 0 ; [#uses=1]
+ br i1 %394, label %bb.nph89, label %return
+
+return: ; preds = %bb74.preheader, %bb73, %bb55.preheader, %bb42.preheader, %bb12.preheader, %bb, %entry
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI11btWheelInfoE9push_backERKS0_(%"struct.btAlignedObjectArray<btWheelInfo>"* nocapture %this, %struct.btWheelInfo* %_Val) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btWheelInfo>"* %this, i32 0, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btWheelInfo>"* %this, i32 0, i32 2 ; [#uses=2]
+ %3 = load i32* %2, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %1 ; [#uses=1]
+ br i1 %4, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %5 = icmp eq i32 %1, 0 ; [#uses=1]
+ %6 = shl i32 %1, 1 ; [#uses=1]
+ %iftmp.250.0.i = select i1 %5, i32 1, i32 %6 ; [#uses=4]
+ %7 = icmp slt i32 %3, %iftmp.250.0.i ; [#uses=1]
+ br i1 %7, label %bb.i, label %bb1
+
+bb.i: ; preds = %bb
+ %8 = icmp eq i32 %iftmp.250.0.i, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayI11btWheelInfoE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %9 = mul i32 %iftmp.250.0.i, 284 ; [#uses=1]
+ %10 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %9, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %10 to %struct.btWheelInfo* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI11btWheelInfoE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayI11btWheelInfoE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %11 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %12 = phi %struct.btWheelInfo* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=2]
+ %13 = icmp sgt i32 %11, 0 ; [#uses=1]
+ br i1 %13, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayI11btWheelInfoE4copyEiiPS0_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayI11btWheelInfoE8allocateEi.exit.i
+ %14 = getelementptr inbounds %"struct.btAlignedObjectArray<btWheelInfo>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=3]
+ %scevgep.i.i = getelementptr %struct.btWheelInfo* %12, i32 %indvar.i.i ; [#uses=2]
+ %15 = icmp eq %struct.btWheelInfo* %scevgep.i.i, null ; [#uses=1]
+ br i1 %15, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %16 = load %struct.btWheelInfo** %14, align 4 ; [#uses=1]
+ %scevgep8.i.i = getelementptr %struct.btWheelInfo* %16, i32 %indvar.i.i ; [#uses=1]
+ tail call void @_ZN11btWheelInfoC1ERKS_(%struct.btWheelInfo* %scevgep.i.i, %struct.btWheelInfo* %scevgep8.i.i) nounwind
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i, %11 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI11btWheelInfoE4copyEiiPS0_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayI11btWheelInfoE4copyEiiPS0_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayI11btWheelInfoE8allocateEi.exit.i
+ %17 = getelementptr inbounds %"struct.btAlignedObjectArray<btWheelInfo>"* %this, i32 0, i32 3 ; [#uses=3]
+ %18 = load %struct.btWheelInfo** %17, align 4 ; [#uses=2]
+ %19 = icmp eq %struct.btWheelInfo* %18, null ; [#uses=1]
+ br i1 %19, label %_ZN20btAlignedObjectArrayI11btWheelInfoE10deallocateEv.exit.i, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayI11btWheelInfoE4copyEiiPS0_.exit.i
+ %20 = getelementptr inbounds %"struct.btAlignedObjectArray<btWheelInfo>"* %this, i32 0, i32 4 ; [#uses=1]
+ %21 = load i8* %20, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %21, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %22 = bitcast %struct.btWheelInfo* %18 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %22)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %struct.btWheelInfo* null, %struct.btWheelInfo** %17, align 4
+ br label %_ZN20btAlignedObjectArrayI11btWheelInfoE10deallocateEv.exit.i
+
+_ZN20btAlignedObjectArrayI11btWheelInfoE10deallocateEv.exit.i: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayI11btWheelInfoE4copyEiiPS0_.exit.i
+ %23 = getelementptr inbounds %"struct.btAlignedObjectArray<btWheelInfo>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %23, align 4
+ store %struct.btWheelInfo* %12, %struct.btWheelInfo** %17, align 4
+ store i32 %iftmp.250.0.i, i32* %2, align 4
+ %.pre5 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayI11btWheelInfoE10deallocateEv.exit.i, %bb, %entry
+ %24 = phi i32 [ %.pre5, %_ZN20btAlignedObjectArrayI11btWheelInfoE10deallocateEv.exit.i ], [ %1, %entry ], [ %1, %bb ] ; [#uses=2]
+ %25 = getelementptr inbounds %"struct.btAlignedObjectArray<btWheelInfo>"* %this, i32 0, i32 3 ; [#uses=1]
+ %26 = load %struct.btWheelInfo** %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btWheelInfo* %26, i32 %24 ; [#uses=2]
+ %28 = icmp eq %struct.btWheelInfo* %27, null ; [#uses=1]
+ br i1 %28, label %bb4, label %bb2
+
+bb2: ; preds = %bb1
+ tail call void @_ZN11btWheelInfoC1ERKS_(%struct.btWheelInfo* %27, %struct.btWheelInfo* %_Val) nounwind
+ %.pre6 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb2, %bb1
+ %29 = phi i32 [ %24, %bb1 ], [ %.pre6, %bb2 ] ; [#uses=1]
+ %30 = add nsw i32 %29, 1 ; [#uses=1]
+ store i32 %30, i32* %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btRaycastVehicle16updateSuspensionEf(%struct.btRaycastVehicle* nocapture %this, float %deltaTime) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 13 ; [#uses=1]
+ %1 = load %struct.btRigidBody** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btRigidBody* %1, i32 0, i32 4 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fdiv float 1.000000e+00, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 1 ; [#uses=2]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = icmp sgt i32 %6, 0 ; [#uses=1]
+ br i1 %7, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %8 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb7, %bb.nph
+ %w_it.011 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb7 ] ; [#uses=11]
+ %tmp = add i32 %w_it.011, 1 ; [#uses=2]
+ %9 = load %struct.btWheelInfo** %8, align 4 ; [#uses=10]
+ %scevgep12 = getelementptr %struct.btWheelInfo* %9, i32 %w_it.011, i32 0, i32 6 ; [#uses=1]
+ %10 = load i8* %scevgep12, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %10, 0 ; [#uses=1]
+ br i1 %toBool, label %bb6, label %bb1
+
+bb1: ; preds = %bb
+ %scevgep = getelementptr %struct.btWheelInfo* %9, i32 %w_it.011 ; [#uses=1]
+ %11 = tail call float @_ZNK11btWheelInfo23getSuspensionRestLengthEv(%struct.btWheelInfo* %scevgep) ; [#uses=1]
+ %scevgep13 = getelementptr %struct.btWheelInfo* %9, i32 %w_it.011, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %scevgep13, align 4 ; [#uses=1]
+ %13 = fsub float %11, %12 ; [#uses=1]
+ %scevgep14 = getelementptr %struct.btWheelInfo* %9, i32 %w_it.011, i32 8 ; [#uses=1]
+ %14 = load float* %scevgep14, align 4 ; [#uses=1]
+ %15 = fmul float %14, %13 ; [#uses=1]
+ %scevgep15 = getelementptr %struct.btWheelInfo* %9, i32 %w_it.011, i32 21 ; [#uses=1]
+ %16 = load float* %scevgep15, align 4 ; [#uses=1]
+ %17 = fmul float %15, %16 ; [#uses=1]
+ %scevgep16 = getelementptr %struct.btWheelInfo* %9, i32 %w_it.011, i32 22 ; [#uses=1]
+ %18 = load float* %scevgep16, align 4 ; [#uses=2]
+ %19 = fcmp olt float %18, 0.000000e+00 ; [#uses=1]
+ br i1 %19, label %bb2, label %bb3
+
+bb2: ; preds = %bb1
+ %20 = getelementptr inbounds %struct.btWheelInfo* %9, i32 %w_it.011, i32 9 ; [#uses=1]
+ br label %bb4
+
+bb3: ; preds = %bb1
+ %scevgep17 = getelementptr %struct.btWheelInfo* %9, i32 %w_it.011, i32 10 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %susp_damping.0.in = phi float* [ %20, %bb2 ], [ %scevgep17, %bb3 ] ; [#uses=1]
+ %susp_damping.0 = load float* %susp_damping.0.in, align 4 ; [#uses=1]
+ %21 = fmul float %susp_damping.0, %18 ; [#uses=1]
+ %22 = fsub float %17, %21 ; [#uses=1]
+ %23 = fmul float %22, %4 ; [#uses=2]
+ %scevgep18 = getelementptr %struct.btWheelInfo* %9, i32 %w_it.011, i32 23 ; [#uses=2]
+ store float %23, float* %scevgep18, align 4
+ %24 = fcmp olt float %23, 0.000000e+00 ; [#uses=1]
+ br i1 %24, label %bb5, label %bb7
+
+bb5: ; preds = %bb4
+ store float 0.000000e+00, float* %scevgep18, align 4
+ br label %bb7
+
+bb6: ; preds = %bb
+ %scevgep20 = getelementptr %struct.btWheelInfo* %9, i32 %w_it.011, i32 23 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep20, align 4
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb5, %bb4
+ %25 = load i32* %5, align 4 ; [#uses=1]
+ %26 = icmp sgt i32 %25, %tmp ; [#uses=1]
+ br i1 %26, label %bb, label %return
+
+return: ; preds = %bb7, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btRaycastVehicle15resetSuspensionEv(%struct.btRaycastVehicle* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %return
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %i.05 = phi i32 [ 0, %bb.nph ], [ %12, %bb ] ; [#uses=12]
+ %4 = load %struct.btWheelInfo** %3, align 4 ; [#uses=11]
+ %scevgep = getelementptr %struct.btWheelInfo* %4, i32 %i.05 ; [#uses=1]
+ %5 = tail call float @_ZNK11btWheelInfo23getSuspensionRestLengthEv(%struct.btWheelInfo* %scevgep) ; [#uses=1]
+ %scevgep6 = getelementptr %struct.btWheelInfo* %4, i32 %i.05, i32 0, i32 2 ; [#uses=1]
+ store float %5, float* %scevgep6, align 4
+ %scevgep7 = getelementptr %struct.btWheelInfo* %4, i32 %i.05, i32 22 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep7, align 4
+ %scevgep8 = getelementptr %struct.btWheelInfo* %4, i32 %i.05, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %scevgep8, align 4 ; [#uses=1]
+ %7 = fsub float -0.000000e+00, %6 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btWheelInfo* %4, i32 %i.05, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %scevgep9, align 4 ; [#uses=1]
+ %9 = fsub float -0.000000e+00, %8 ; [#uses=1]
+ %scevgep10 = getelementptr %struct.btWheelInfo* %4, i32 %i.05, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %10 = load float* %scevgep10, align 4 ; [#uses=1]
+ %11 = fsub float -0.000000e+00, %10 ; [#uses=1]
+ %scevgep1112 = getelementptr inbounds %struct.btWheelInfo* %4, i32 %i.05, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %11, float* %scevgep1112, align 4
+ %scevgep13 = getelementptr %struct.btWheelInfo* %4, i32 %i.05, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %9, float* %scevgep13, align 4
+ %scevgep14 = getelementptr %struct.btWheelInfo* %4, i32 %i.05, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %7, float* %scevgep14, align 4
+ %scevgep15 = getelementptr %struct.btWheelInfo* %4, i32 %i.05, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep15, align 4
+ %scevgep16 = getelementptr %struct.btWheelInfo* %4, i32 %i.05, i32 21 ; [#uses=1]
+ store float 1.000000e+00, float* %scevgep16, align 4
+ %12 = add nsw i32 %i.05, 1 ; [#uses=2]
+ %13 = load i32* %0, align 4 ; [#uses=1]
+ %14 = icmp sgt i32 %13, %12 ; [#uses=1]
+ br i1 %14, label %bb, label %return
+
+return: ; preds = %bb, %entry
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN16btRaycastVehicle20updateWheelTransformEib(%struct.btRaycastVehicle* nocapture %this, i32 %wheelIndex, i8 zeroext %interpolatedTransform) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ %1 = load %struct.btWheelInfo** %0, align 4 ; [#uses=29]
+ %2 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex ; [#uses=1]
+ tail call void @_ZN16btRaycastVehicle23updateWheelTransformsWSER11btWheelInfob(%struct.btRaycastVehicle* %this, %struct.btWheelInfo* %2, i8 zeroext %interpolatedTransform)
+ %3 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=4]
+ %5 = fsub float -0.000000e+00, %4 ; [#uses=6]
+ %6 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=4]
+ %8 = fsub float -0.000000e+00, %7 ; [#uses=6]
+ %9 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=4]
+ %11 = fsub float -0.000000e+00, %10 ; [#uses=6]
+ %12 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 0, i32 5, i32 0, i32 1 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=8]
+ %14 = fmul float %13, %11 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 0, i32 5, i32 0, i32 0 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=8]
+ %17 = fmul float %16, %8 ; [#uses=1]
+ %18 = fsub float %14, %17 ; [#uses=3]
+ %19 = fmul float %16, %5 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 0, i32 5, i32 0, i32 2 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=8]
+ %22 = fmul float %21, %11 ; [#uses=1]
+ %23 = fsub float %19, %22 ; [#uses=3]
+ %24 = fmul float %21, %8 ; [#uses=1]
+ %25 = fmul float %13, %5 ; [#uses=1]
+ %26 = fsub float %24, %25 ; [#uses=3]
+ %27 = fmul float %26, %26 ; [#uses=1]
+ %28 = fmul float %23, %23 ; [#uses=1]
+ %29 = fadd float %27, %28 ; [#uses=1]
+ %30 = fmul float %18, %18 ; [#uses=1]
+ %31 = fadd float %29, %30 ; [#uses=1]
+ %32 = tail call float @sqrtf(float %31) nounwind readonly ; [#uses=1]
+ %33 = fdiv float 1.000000e+00, %32 ; [#uses=3]
+ %34 = fmul float %26, %33 ; [#uses=3]
+ %35 = fmul float %23, %33 ; [#uses=3]
+ %36 = fmul float %18, %33 ; [#uses=3]
+ %37 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 12 ; [#uses=1]
+ %38 = load float* %37, align 4 ; [#uses=1]
+ %39 = fmul float %10, %10 ; [#uses=1]
+ %40 = fmul float %7, %7 ; [#uses=1]
+ %41 = fadd float %39, %40 ; [#uses=1]
+ %42 = fmul float %4, %4 ; [#uses=1]
+ %43 = fadd float %41, %42 ; [#uses=1]
+ %44 = tail call float @sqrtf(float %43) nounwind readonly ; [#uses=1]
+ %45 = fmul float %38, 5.000000e-01 ; [#uses=2]
+ %46 = tail call float @sinf(float %45) nounwind readonly ; [#uses=1]
+ %47 = fdiv float %46, %44 ; [#uses=3]
+ %48 = tail call float @cosf(float %45) nounwind readonly ; [#uses=5]
+ %49 = fmul float %47, %5 ; [#uses=4]
+ %50 = fmul float %47, %8 ; [#uses=5]
+ %51 = fmul float %47, %11 ; [#uses=6]
+ %52 = fmul float %51, %51 ; [#uses=1]
+ %53 = fmul float %50, %50 ; [#uses=1]
+ %54 = fadd float %52, %53 ; [#uses=1]
+ %55 = fmul float %49, %49 ; [#uses=1]
+ %56 = fadd float %54, %55 ; [#uses=1]
+ %57 = fmul float %48, %48 ; [#uses=1]
+ %58 = fadd float %56, %57 ; [#uses=1]
+ %59 = fdiv float 2.000000e+00, %58 ; [#uses=3]
+ %60 = fmul float %51, %59 ; [#uses=2]
+ %61 = fmul float %50, %59 ; [#uses=3]
+ %62 = fmul float %49, %59 ; [#uses=4]
+ %63 = fmul float %48, %60 ; [#uses=2]
+ %64 = fmul float %48, %61 ; [#uses=2]
+ %65 = fmul float %48, %62 ; [#uses=2]
+ %66 = fmul float %51, %60 ; [#uses=2]
+ %67 = fmul float %51, %61 ; [#uses=2]
+ %68 = fmul float %51, %62 ; [#uses=2]
+ %69 = fmul float %50, %61 ; [#uses=2]
+ %70 = fmul float %50, %62 ; [#uses=2]
+ %71 = fmul float %49, %62 ; [#uses=2]
+ %72 = fadd float %66, %69 ; [#uses=1]
+ %73 = fsub float 1.000000e+00, %72 ; [#uses=3]
+ %74 = fadd float %70, %63 ; [#uses=3]
+ %75 = fsub float %68, %64 ; [#uses=3]
+ %76 = fsub float %70, %63 ; [#uses=3]
+ %77 = fadd float %66, %71 ; [#uses=1]
+ %78 = fsub float 1.000000e+00, %77 ; [#uses=3]
+ %79 = fadd float %67, %65 ; [#uses=3]
+ %80 = fadd float %68, %64 ; [#uses=3]
+ %81 = fsub float %67, %65 ; [#uses=3]
+ %82 = fadd float %69, %71 ; [#uses=1]
+ %83 = fsub float 1.000000e+00, %82 ; [#uses=3]
+ %84 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 13 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = fmul float %16, %16 ; [#uses=1]
+ %87 = fmul float %13, %13 ; [#uses=1]
+ %88 = fadd float %86, %87 ; [#uses=1]
+ %89 = fmul float %21, %21 ; [#uses=1]
+ %90 = fadd float %88, %89 ; [#uses=1]
+ %91 = tail call float @sqrtf(float %90) nounwind readonly ; [#uses=1]
+ %92 = fmul float %85, -5.000000e-01 ; [#uses=2]
+ %93 = tail call float @sinf(float %92) nounwind readonly ; [#uses=1]
+ %94 = fdiv float %93, %91 ; [#uses=3]
+ %95 = tail call float @cosf(float %92) nounwind readonly ; [#uses=5]
+ %96 = fmul float %21, %94 ; [#uses=4]
+ %97 = fmul float %13, %94 ; [#uses=5]
+ %98 = fmul float %16, %94 ; [#uses=6]
+ %99 = fmul float %98, %98 ; [#uses=1]
+ %100 = fmul float %97, %97 ; [#uses=1]
+ %101 = fadd float %99, %100 ; [#uses=1]
+ %102 = fmul float %96, %96 ; [#uses=1]
+ %103 = fadd float %101, %102 ; [#uses=1]
+ %104 = fmul float %95, %95 ; [#uses=1]
+ %105 = fadd float %103, %104 ; [#uses=1]
+ %106 = fdiv float 2.000000e+00, %105 ; [#uses=3]
+ %107 = fmul float %98, %106 ; [#uses=2]
+ %108 = fmul float %97, %106 ; [#uses=3]
+ %109 = fmul float %96, %106 ; [#uses=4]
+ %110 = fmul float %95, %107 ; [#uses=2]
+ %111 = fmul float %95, %108 ; [#uses=2]
+ %112 = fmul float %95, %109 ; [#uses=2]
+ %113 = fmul float %98, %107 ; [#uses=2]
+ %114 = fmul float %98, %108 ; [#uses=2]
+ %115 = fmul float %98, %109 ; [#uses=2]
+ %116 = fmul float %97, %108 ; [#uses=2]
+ %117 = fmul float %97, %109 ; [#uses=2]
+ %118 = fmul float %96, %109 ; [#uses=2]
+ %119 = fadd float %113, %116 ; [#uses=1]
+ %120 = fsub float 1.000000e+00, %119 ; [#uses=3]
+ %121 = fadd float %117, %110 ; [#uses=3]
+ %122 = fsub float %115, %111 ; [#uses=3]
+ %123 = fsub float %117, %110 ; [#uses=3]
+ %124 = fadd float %113, %118 ; [#uses=1]
+ %125 = fsub float 1.000000e+00, %124 ; [#uses=3]
+ %126 = fadd float %114, %112 ; [#uses=3]
+ %127 = fadd float %115, %111 ; [#uses=3]
+ %128 = fsub float %114, %112 ; [#uses=3]
+ %129 = fadd float %116, %118 ; [#uses=1]
+ %130 = fsub float 1.000000e+00, %129 ; [#uses=3]
+ %131 = fmul float %127, %75 ; [#uses=1]
+ %132 = fmul float %123, %74 ; [#uses=1]
+ %133 = fadd float %131, %132 ; [#uses=1]
+ %134 = fmul float %120, %73 ; [#uses=1]
+ %135 = fadd float %133, %134 ; [#uses=3]
+ %136 = fmul float %128, %75 ; [#uses=1]
+ %137 = fmul float %125, %74 ; [#uses=1]
+ %138 = fadd float %136, %137 ; [#uses=1]
+ %139 = fmul float %121, %73 ; [#uses=1]
+ %140 = fadd float %138, %139 ; [#uses=3]
+ %141 = fmul float %130, %75 ; [#uses=1]
+ %142 = fmul float %126, %74 ; [#uses=1]
+ %143 = fadd float %141, %142 ; [#uses=1]
+ %144 = fmul float %122, %73 ; [#uses=1]
+ %145 = fadd float %143, %144 ; [#uses=3]
+ %146 = fmul float %127, %79 ; [#uses=1]
+ %147 = fmul float %123, %78 ; [#uses=1]
+ %148 = fadd float %146, %147 ; [#uses=1]
+ %149 = fmul float %120, %76 ; [#uses=1]
+ %150 = fadd float %148, %149 ; [#uses=3]
+ %151 = fmul float %128, %79 ; [#uses=1]
+ %152 = fmul float %125, %78 ; [#uses=1]
+ %153 = fadd float %151, %152 ; [#uses=1]
+ %154 = fmul float %121, %76 ; [#uses=1]
+ %155 = fadd float %153, %154 ; [#uses=3]
+ %156 = fmul float %130, %79 ; [#uses=1]
+ %157 = fmul float %126, %78 ; [#uses=1]
+ %158 = fadd float %156, %157 ; [#uses=1]
+ %159 = fmul float %122, %76 ; [#uses=1]
+ %160 = fadd float %158, %159 ; [#uses=3]
+ %161 = fmul float %127, %83 ; [#uses=1]
+ %162 = fmul float %123, %81 ; [#uses=1]
+ %163 = fadd float %161, %162 ; [#uses=1]
+ %164 = fmul float %120, %80 ; [#uses=1]
+ %165 = fadd float %163, %164 ; [#uses=3]
+ %166 = fmul float %128, %83 ; [#uses=1]
+ %167 = fmul float %125, %81 ; [#uses=1]
+ %168 = fadd float %166, %167 ; [#uses=1]
+ %169 = fmul float %121, %80 ; [#uses=1]
+ %170 = fadd float %168, %169 ; [#uses=3]
+ %171 = fmul float %130, %83 ; [#uses=1]
+ %172 = fmul float %126, %81 ; [#uses=1]
+ %173 = fadd float %171, %172 ; [#uses=1]
+ %174 = fmul float %122, %80 ; [#uses=1]
+ %175 = fadd float %173, %174 ; [#uses=3]
+ %176 = fmul float %145, %11 ; [#uses=1]
+ %177 = fmul float %140, %8 ; [#uses=1]
+ %178 = fadd float %176, %177 ; [#uses=1]
+ %179 = fmul float %135, %5 ; [#uses=1]
+ %180 = fadd float %178, %179 ; [#uses=1]
+ %181 = fmul float %34, %145 ; [#uses=1]
+ %182 = fmul float %35, %140 ; [#uses=1]
+ %183 = fadd float %181, %182 ; [#uses=1]
+ %184 = fmul float %36, %135 ; [#uses=1]
+ %185 = fadd float %183, %184 ; [#uses=1]
+ %186 = fmul float %16, %145 ; [#uses=1]
+ %187 = fmul float %13, %140 ; [#uses=1]
+ %188 = fadd float %186, %187 ; [#uses=1]
+ %189 = fmul float %21, %135 ; [#uses=1]
+ %190 = fadd float %188, %189 ; [#uses=1]
+ %191 = fmul float %160, %11 ; [#uses=1]
+ %192 = fmul float %155, %8 ; [#uses=1]
+ %193 = fadd float %191, %192 ; [#uses=1]
+ %194 = fmul float %150, %5 ; [#uses=1]
+ %195 = fadd float %193, %194 ; [#uses=1]
+ %196 = fmul float %34, %160 ; [#uses=1]
+ %197 = fmul float %35, %155 ; [#uses=1]
+ %198 = fadd float %196, %197 ; [#uses=1]
+ %199 = fmul float %36, %150 ; [#uses=1]
+ %200 = fadd float %198, %199 ; [#uses=1]
+ %201 = fmul float %16, %160 ; [#uses=1]
+ %202 = fmul float %13, %155 ; [#uses=1]
+ %203 = fadd float %201, %202 ; [#uses=1]
+ %204 = fmul float %21, %150 ; [#uses=1]
+ %205 = fadd float %203, %204 ; [#uses=1]
+ %206 = fmul float %175, %11 ; [#uses=1]
+ %207 = fmul float %170, %8 ; [#uses=1]
+ %208 = fadd float %206, %207 ; [#uses=1]
+ %209 = fmul float %165, %5 ; [#uses=1]
+ %210 = fadd float %208, %209 ; [#uses=1]
+ %211 = fmul float %34, %175 ; [#uses=1]
+ %212 = fmul float %35, %170 ; [#uses=1]
+ %213 = fadd float %211, %212 ; [#uses=1]
+ %214 = fmul float %36, %165 ; [#uses=1]
+ %215 = fadd float %213, %214 ; [#uses=1]
+ %216 = fmul float %16, %175 ; [#uses=1]
+ %217 = fmul float %13, %170 ; [#uses=1]
+ %218 = fadd float %216, %217 ; [#uses=1]
+ %219 = fmul float %21, %165 ; [#uses=1]
+ %220 = fadd float %218, %219 ; [#uses=1]
+ %221 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %220, float* %221, align 4
+ %222 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %215, float* %222, align 4
+ %223 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %210, float* %223, align 4
+ %224 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %224, align 4
+ %225 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %205, float* %225, align 4
+ %226 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %200, float* %226, align 4
+ %227 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %195, float* %227, align 4
+ %228 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %228, align 4
+ %229 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %190, float* %229, align 4
+ %230 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %185, float* %230, align 4
+ %231 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %180, float* %231, align 4
+ %232 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %232, align 4
+ %233 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 0, i32 2 ; [#uses=1]
+ %234 = load float* %233, align 4 ; [#uses=3]
+ %235 = fmul float %4, %234 ; [#uses=1]
+ %236 = fmul float %7, %234 ; [#uses=1]
+ %237 = fmul float %10, %234 ; [#uses=1]
+ %238 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %239 = load float* %238, align 4 ; [#uses=1]
+ %240 = fadd float %239, %235 ; [#uses=1]
+ %241 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %242 = load float* %241, align 4 ; [#uses=1]
+ %243 = fadd float %242, %236 ; [#uses=1]
+ %244 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %245 = load float* %244, align 4 ; [#uses=1]
+ %246 = fadd float %245, %237 ; [#uses=1]
+ %247 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ store float %246, float* %247, align 4
+ %248 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ store float %243, float* %248, align 4
+ %249 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ store float %240, float* %249, align 4
+ %250 = getelementptr inbounds %struct.btWheelInfo* %1, i32 %wheelIndex, i32 1, i32 1, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %250, align 4
+ ret void
+}
+
+; [#uses=0]
+define %struct.btWheelInfo* @_ZN16btRaycastVehicle8addWheelERK9btVector3S2_S2_ffRKNS_15btVehicleTuningEb(%struct.btRaycastVehicle* nocapture %this, %struct.btQuadWord* nocapture %connectionPointCS, %struct.btQuadWord* nocapture %wheelDirectionCS0, %struct.btQuadWord* nocapture %wheelAxleCS, float %suspensionRestLength, float %wheelRadius, %"struct.btRaycastVehicle::btVehicleTuning"* nocapture %tuning, i8 zeroext %isFrontWheel) align 2 {
+entry:
+ %0 = alloca %struct.btWheelInfo, align 8 ; [#uses=28]
+ %1 = getelementptr inbounds %struct.btQuadWord* %connectionPointCS, i32 0, i32 0, i32 0 ; [#uses=1]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %connectionPointCS, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %connectionPointCS, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %connectionPointCS, i32 0, i32 0, i32 3 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %wheelDirectionCS0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %wheelDirectionCS0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %wheelDirectionCS0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %wheelDirectionCS0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btQuadWord* %wheelAxleCS, i32 0, i32 0, i32 0 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btQuadWord* %wheelAxleCS, i32 0, i32 0, i32 1 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btQuadWord* %wheelAxleCS, i32 0, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btQuadWord* %wheelAxleCS, i32 0, i32 0, i32 3 ; [#uses=1]
+ %24 = load float* %23, align 4 ; [#uses=1]
+ %25 = getelementptr inbounds %"struct.btRaycastVehicle::btVehicleTuning"* %tuning, i32 0, i32 0 ; [#uses=1]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %"struct.btRaycastVehicle::btVehicleTuning"* %tuning, i32 0, i32 1 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %"struct.btRaycastVehicle::btVehicleTuning"* %tuning, i32 0, i32 2 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %"struct.btRaycastVehicle::btVehicleTuning"* %tuning, i32 0, i32 4 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds %"struct.btRaycastVehicle::btVehicleTuning"* %tuning, i32 0, i32 3 ; [#uses=1]
+ %34 = load float* %33, align 4 ; [#uses=1]
+ %35 = getelementptr inbounds %"struct.btRaycastVehicle::btVehicleTuning"* %tuning, i32 0, i32 5 ; [#uses=1]
+ %36 = load float* %35, align 4 ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 5 ; [#uses=1]
+ store float %suspensionRestLength, float* %37, align 4
+ %38 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 6 ; [#uses=1]
+ store float %34, float* %38, align 8
+ %39 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 7 ; [#uses=1]
+ store float %wheelRadius, float* %39, align 4
+ %40 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 8 ; [#uses=1]
+ store float %26, float* %40, align 8
+ %41 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 9 ; [#uses=1]
+ store float %28, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 10 ; [#uses=1]
+ store float %30, float* %42, align 8
+ %43 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ store float %2, float* %43, align 4
+ %44 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ store float %4, float* %44, align 4
+ %45 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ store float %6, float* %45, align 4
+ %46 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 2, i32 0, i32 3 ; [#uses=1]
+ store float %8, float* %46, align 4
+ %47 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ store float %10, float* %47, align 4
+ %48 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ store float %12, float* %48, align 4
+ %49 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ store float %14, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 3, i32 0, i32 3 ; [#uses=1]
+ store float %16, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ store float %18, float* %51, align 4
+ %52 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ store float %20, float* %52, align 4
+ %53 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ store float %22, float* %53, align 4
+ %54 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 4, i32 0, i32 3 ; [#uses=1]
+ store float %24, float* %54, align 4
+ %55 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 11 ; [#uses=1]
+ store float %32, float* %55, align 4
+ %56 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 12 ; [#uses=1]
+ store float 0.000000e+00, float* %56, align 8
+ %57 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 17 ; [#uses=1]
+ store float 0.000000e+00, float* %57, align 4
+ %58 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 13 ; [#uses=1]
+ store float 0.000000e+00, float* %58, align 4
+ %59 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 14 ; [#uses=1]
+ store float 0.000000e+00, float* %59, align 8
+ %60 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 18 ; [#uses=1]
+ store float 0.000000e+00, float* %60, align 8
+ %61 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 15 ; [#uses=1]
+ store float 0x3FB99999A0000000, float* %61, align 4
+ %62 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 19 ; [#uses=1]
+ store i8 %isFrontWheel, i8* %62, align 4
+ %63 = getelementptr inbounds %struct.btWheelInfo* %0, i32 0, i32 16 ; [#uses=1]
+ store float %36, float* %63, align 8
+ %64 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17 ; [#uses=1]
+ call void @_ZN20btAlignedObjectArrayI11btWheelInfoE9push_backERKS0_(%"struct.btAlignedObjectArray<btWheelInfo>"* %64, %struct.btWheelInfo* %0) inlinehint
+ %65 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 1 ; [#uses=2]
+ %66 = load i32* %65, align 4 ; [#uses=1]
+ %67 = add nsw i32 %66, -1 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ %69 = load %struct.btWheelInfo** %68, align 4 ; [#uses=1]
+ %70 = getelementptr inbounds %struct.btWheelInfo* %69, i32 %67 ; [#uses=2]
+ call void @_ZN16btRaycastVehicle23updateWheelTransformsWSER11btWheelInfob(%struct.btRaycastVehicle* %this, %struct.btWheelInfo* %70, i8 zeroext 0)
+ %71 = load i32* %65, align 4 ; [#uses=1]
+ %72 = add nsw i32 %71, -1 ; [#uses=1]
+ call void @_ZN16btRaycastVehicle20updateWheelTransformEib(%struct.btRaycastVehicle* %this, i32 %72, i8 zeroext 0)
+ ret %struct.btWheelInfo* %70
+}
+
+; [#uses=1]
+define void @_ZN16btRaycastVehicleD0Ev(%struct.btRaycastVehicle* %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV16btRaycastVehicle, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=3]
+ %2 = load %struct.btWheelInfo** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btWheelInfo* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btWheelInfo* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad44
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btWheelInfo* null, %struct.btWheelInfo** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btWheelInfo* null, %struct.btWheelInfo** %1, align 4
+ %8 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %11 = load float** %10, align 4 ; [#uses=2]
+ %12 = icmp eq float* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i73
+
+bb.i.i.i73: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i72 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i72, label %bb2.i.i.i75, label %bb1.i.i.i74
+
+bb1.i.i.i74: ; preds = %bb.i.i.i73
+ %15 = bitcast float* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i75 unwind label %lpad40
+
+bb2.i.i.i75: ; preds = %bb1.i.i.i74, %bb.i.i.i73
+ store float* null, float** %10, align 4
+ br label %bb10
+
+bb10: ; preds = %bb2.i.i.i75, %bb3
+ %16 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store float* null, float** %10, align 4
+ %17 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %20 = load float** %19, align 4 ; [#uses=2]
+ %21 = icmp eq float* %20, null ; [#uses=1]
+ br i1 %21, label %bb19, label %bb.i.i.i78
+
+bb.i.i.i78: ; preds = %bb10
+ %22 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i.i77 = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i77, label %bb2.i.i.i80, label %bb1.i.i.i79
+
+bb1.i.i.i79: ; preds = %bb.i.i.i78
+ %24 = bitcast float* %20 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %24)
+ to label %bb2.i.i.i80 unwind label %lpad36
+
+bb2.i.i.i80: ; preds = %bb1.i.i.i79, %bb.i.i.i78
+ store float* null, float** %19, align 4
+ br label %bb19
+
+bb19: ; preds = %bb2.i.i.i80, %bb10
+ %25 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ store float* null, float** %19, align 4
+ %26 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %29 = load %struct.btQuadWord** %28, align 4 ; [#uses=2]
+ %30 = icmp eq %struct.btQuadWord* %29, null ; [#uses=1]
+ br i1 %30, label %bb28, label %bb.i.i.i84
+
+bb.i.i.i84: ; preds = %bb19
+ %31 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %32 = load i8* %31, align 4 ; [#uses=1]
+ %toBool.i.i.i83 = icmp eq i8 %32, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i83, label %bb2.i.i.i86, label %bb1.i.i.i85
+
+bb1.i.i.i85: ; preds = %bb.i.i.i84
+ %33 = bitcast %struct.btQuadWord* %29 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %33)
+ to label %bb2.i.i.i86 unwind label %lpad
+
+bb2.i.i.i86: ; preds = %bb1.i.i.i85, %bb.i.i.i84
+ store %struct.btQuadWord* null, %struct.btQuadWord** %28, align 4
+ br label %bb28
+
+invcont26: ; preds = %bb2.i.i.i102, %ppad
+ %34 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %34, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %59, align 4
+ %35 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %35, align 4
+ %36 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %36, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.2)
+ unreachable
+
+bb28: ; preds = %bb2.i.i.i86, %bb19
+ %37 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %37, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %28, align 4
+ %38 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ %39 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %39, align 4
+ %40 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %41 = load %struct.btQuadWord** %40, align 4 ; [#uses=2]
+ %42 = icmp eq %struct.btQuadWord* %41, null ; [#uses=1]
+ br i1 %42, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit92, label %bb.i.i.i89
+
+bb.i.i.i89: ; preds = %bb28
+ %43 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %44 = load i8* %43, align 4 ; [#uses=1]
+ %toBool.i.i.i88 = icmp eq i8 %44, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i88, label %bb2.i.i.i91, label %bb1.i.i.i90
+
+bb1.i.i.i90: ; preds = %bb.i.i.i89
+ %45 = bitcast %struct.btQuadWord* %41 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %45)
+ br label %bb2.i.i.i91
+
+bb2.i.i.i91: ; preds = %bb1.i.i.i90, %bb.i.i.i89
+ store %struct.btQuadWord* null, %struct.btQuadWord** %40, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit92
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit92: ; preds = %bb2.i.i.i91, %bb28
+ %46 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %46, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %40, align 4
+ %47 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %47, align 4
+ %48 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %48, align 4
+ %49 = bitcast %struct.btRaycastVehicle* %this to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %49) nounwind
+ ret void
+
+lpad: ; preds = %bb1.i.i.i85
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select35 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad36: ; preds = %bb1.i.i.i79
+ %eh_ptr37 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select39 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr37, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad64
+
+lpad40: ; preds = %bb1.i.i.i74
+ %eh_ptr41 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select43 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr41, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad65
+
+lpad44: ; preds = %bb1.i.i.i
+ %eh_ptr45 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select47 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr45, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %50 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %51 = load float** %50, align 4 ; [#uses=2]
+ %52 = icmp eq float* %51, null ; [#uses=1]
+ br i1 %52, label %_ZN20btAlignedObjectArrayIfED1Ev.exit98, label %bb.i.i.i94
+
+bb.i.i.i94: ; preds = %lpad44
+ %53 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %54 = load i8* %53, align 4 ; [#uses=1]
+ %toBool.i.i.i93 = icmp eq i8 %54, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i93, label %bb2.i.i.i96, label %bb1.i.i.i95
+
+bb1.i.i.i95: ; preds = %bb.i.i.i94
+ %55 = bitcast float* %51 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %55)
+ to label %bb2.i.i.i96 unwind label %lpad48
+
+bb2.i.i.i96: ; preds = %bb1.i.i.i95, %bb.i.i.i94
+ store float* null, float** %50, align 4
+ br label %_ZN20btAlignedObjectArrayIfED1Ev.exit98
+
+_ZN20btAlignedObjectArrayIfED1Ev.exit98: ; preds = %bb2.i.i.i96, %lpad44
+ %56 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %56, align 4
+ store float* null, float** %50, align 4
+ %57 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %57, align 4
+ %58 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %58, align 4
+ br label %ppad65
+
+lpad48: ; preds = %bb1.i.i.i95
+ %eh_ptr49 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select51 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr49, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad52: ; preds = %bb1.i.i.i113
+ %eh_ptr53 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select55 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr53, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad56: ; preds = %bb1.i.i.i107
+ %eh_ptr57 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select59 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr57, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad60: ; preds = %bb1.i.i.i101
+ %eh_ptr61 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select63 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr61, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit110, %lpad
+ %eh_exception.2 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.1, %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit110 ] ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %60 = load %struct.btQuadWord** %59, align 4 ; [#uses=2]
+ %61 = icmp eq %struct.btQuadWord* %60, null ; [#uses=1]
+ br i1 %61, label %invcont26, label %bb.i.i.i100
+
+bb.i.i.i100: ; preds = %ppad
+ %62 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %63 = load i8* %62, align 4 ; [#uses=1]
+ %toBool.i.i.i99 = icmp eq i8 %63, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i99, label %bb2.i.i.i102, label %bb1.i.i.i101
+
+bb1.i.i.i101: ; preds = %bb.i.i.i100
+ %64 = bitcast %struct.btQuadWord* %60 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %64)
+ to label %bb2.i.i.i102 unwind label %lpad60
+
+bb2.i.i.i102: ; preds = %bb1.i.i.i101, %bb.i.i.i100
+ store %struct.btQuadWord* null, %struct.btQuadWord** %59, align 4
+ br label %invcont26
+
+ppad64: ; preds = %_ZN20btAlignedObjectArrayIfED1Ev.exit116, %lpad36
+ %eh_exception.1 = phi i8* [ %eh_ptr37, %lpad36 ], [ %eh_exception.0, %_ZN20btAlignedObjectArrayIfED1Ev.exit116 ] ; [#uses=1]
+ %65 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %66 = load %struct.btQuadWord** %65, align 4 ; [#uses=2]
+ %67 = icmp eq %struct.btQuadWord* %66, null ; [#uses=1]
+ br i1 %67, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit110, label %bb.i.i.i106
+
+bb.i.i.i106: ; preds = %ppad64
+ %68 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %69 = load i8* %68, align 4 ; [#uses=1]
+ %toBool.i.i.i105 = icmp eq i8 %69, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i105, label %bb2.i.i.i108, label %bb1.i.i.i107
+
+bb1.i.i.i107: ; preds = %bb.i.i.i106
+ %70 = bitcast %struct.btQuadWord* %66 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %70)
+ to label %bb2.i.i.i108 unwind label %lpad56
+
+bb2.i.i.i108: ; preds = %bb1.i.i.i107, %bb.i.i.i106
+ store %struct.btQuadWord* null, %struct.btQuadWord** %65, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit110
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit110: ; preds = %bb2.i.i.i108, %ppad64
+ %71 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %71, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %65, align 4
+ %72 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %72, align 4
+ %73 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %73, align 4
+ br label %ppad
+
+ppad65: ; preds = %_ZN20btAlignedObjectArrayIfED1Ev.exit98, %lpad40
+ %eh_exception.0 = phi i8* [ %eh_ptr41, %lpad40 ], [ %eh_ptr45, %_ZN20btAlignedObjectArrayIfED1Ev.exit98 ] ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %75 = load float** %74, align 4 ; [#uses=2]
+ %76 = icmp eq float* %75, null ; [#uses=1]
+ br i1 %76, label %_ZN20btAlignedObjectArrayIfED1Ev.exit116, label %bb.i.i.i112
+
+bb.i.i.i112: ; preds = %ppad65
+ %77 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %78 = load i8* %77, align 4 ; [#uses=1]
+ %toBool.i.i.i111 = icmp eq i8 %78, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i111, label %bb2.i.i.i114, label %bb1.i.i.i113
+
+bb1.i.i.i113: ; preds = %bb.i.i.i112
+ %79 = bitcast float* %75 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %79)
+ to label %bb2.i.i.i114 unwind label %lpad52
+
+bb2.i.i.i114: ; preds = %bb1.i.i.i113, %bb.i.i.i112
+ store float* null, float** %74, align 4
+ br label %_ZN20btAlignedObjectArrayIfED1Ev.exit116
+
+_ZN20btAlignedObjectArrayIfED1Ev.exit116: ; preds = %bb2.i.i.i114, %ppad65
+ %80 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %80, align 4
+ store float* null, float** %74, align 4
+ %81 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %81, align 4
+ %82 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %82, align 4
+ br label %ppad64
+}
+
+; [#uses=1]
+define void @_ZN16btRaycastVehicleD1Ev(%struct.btRaycastVehicle* nocapture %this) align 2 {
+entry:
+ tail call void @_ZN16btRaycastVehicleD2Ev(%struct.btRaycastVehicle* %this)
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btRaycastVehicle13updateVehicleEf(%struct.btRaycastVehicle* %this, float %step) align 2 {
+entry:
+ %impulse = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %relpos = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 1 ; [#uses=7]
+ %1 = load i32* %0, align 4 ; [#uses=2]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb, label %bb3
+
+bb: ; preds = %bb, %entry
+ %3 = phi i32 [ %4, %bb ], [ 0, %entry ] ; [#uses=2]
+ call void @_ZN16btRaycastVehicle20updateWheelTransformEib(%struct.btRaycastVehicle* %this, i32 %3, i8 zeroext 0)
+ %4 = add nsw i32 %3, 1 ; [#uses=2]
+ %5 = load i32* %0, align 4 ; [#uses=2]
+ %6 = icmp sgt i32 %5, %4 ; [#uses=1]
+ br i1 %6, label %bb, label %bb3
+
+bb3: ; preds = %bb, %entry
+ %7 = phi i32 [ %1, %entry ], [ %5, %bb ] ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 13 ; [#uses=4]
+ %9 = load %struct.btRigidBody** %8, align 4 ; [#uses=6]
+ %10 = getelementptr inbounds %struct.btRigidBody* %9, i32 0, i32 2, i32 0, i32 0 ; [#uses=2]
+ %11 = load float* %10, align 4 ; [#uses=2]
+ %12 = fmul float %11, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btRigidBody* %9, i32 0, i32 2, i32 0, i32 1 ; [#uses=2]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = fmul float %14, %14 ; [#uses=1]
+ %16 = fadd float %12, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btRigidBody* %9, i32 0, i32 2, i32 0, i32 2 ; [#uses=2]
+ %18 = load float* %17, align 4 ; [#uses=2]
+ %19 = fmul float %18, %18 ; [#uses=1]
+ %20 = fadd float %16, %19 ; [#uses=1]
+ %21 = call float @sqrtf(float %20) nounwind readonly ; [#uses=1]
+ %22 = fmul float %21, 0x400CCCCCC0000000 ; [#uses=2]
+ %23 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 12 ; [#uses=2]
+ store float %22, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 16 ; [#uses=2]
+ %25 = load i32* %24, align 4 ; [#uses=3]
+ %26 = getelementptr inbounds %struct.btRigidBody* %9, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 %25 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btRigidBody* %9, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 %25 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btRigidBody* %9, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 %25 ; [#uses=1]
+ %29 = load float* %28, align 4 ; [#uses=1]
+ %30 = load float* %27, align 4 ; [#uses=1]
+ %31 = load float* %26, align 4 ; [#uses=1]
+ %32 = load float* %10, align 4 ; [#uses=1]
+ %33 = fmul float %29, %32 ; [#uses=1]
+ %34 = load float* %13, align 4 ; [#uses=1]
+ %35 = fmul float %30, %34 ; [#uses=1]
+ %36 = fadd float %33, %35 ; [#uses=1]
+ %37 = load float* %17, align 4 ; [#uses=1]
+ %38 = fmul float %31, %37 ; [#uses=1]
+ %39 = fadd float %36, %38 ; [#uses=1]
+ %40 = fcmp olt float %39, 0.000000e+00 ; [#uses=1]
+ br i1 %40, label %bb5, label %bb8.preheader
+
+bb5: ; preds = %bb3
+ %41 = fsub float -0.000000e+00, %22 ; [#uses=1]
+ store float %41, float* %23, align 4
+ br label %bb8.preheader
+
+bb8.preheader: ; preds = %bb5, %bb3
+ %42 = icmp sgt i32 %7, 0 ; [#uses=1]
+ br i1 %42, label %bb.nph49, label %bb16
+
+bb.nph49: ; preds = %bb8.preheader
+ %43 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb7, %bb.nph49
+ %i.048 = phi i32 [ 0, %bb.nph49 ], [ %46, %bb7 ] ; [#uses=2]
+ %44 = load %struct.btWheelInfo** %43, align 4 ; [#uses=1]
+ %scevgep93 = getelementptr %struct.btWheelInfo* %44, i32 %i.048 ; [#uses=1]
+ %45 = call float @_ZN16btRaycastVehicle7rayCastER11btWheelInfo(%struct.btRaycastVehicle* %this, %struct.btWheelInfo* %scevgep93) ; [#uses=0]
+ %46 = add nsw i32 %i.048, 1 ; [#uses=2]
+ %47 = load i32* %0, align 4 ; [#uses=2]
+ %48 = icmp sgt i32 %47, %46 ; [#uses=1]
+ br i1 %48, label %bb7, label %bb10
+
+bb10: ; preds = %bb7
+ %.pre = load %struct.btRigidBody** %8, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btRigidBody* %.pre, i32 0, i32 4 ; [#uses=1]
+ %50 = load float* %49, align 4 ; [#uses=1]
+ %51 = fdiv float 1.000000e+00, %50 ; [#uses=1]
+ %52 = icmp sgt i32 %47, 0 ; [#uses=1]
+ br i1 %52, label %bb.nph.i, label %bb16
+
+bb.nph.i: ; preds = %bb10
+ %53 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %bb7.i, %bb.nph.i
+ %w_it.011.i = phi i32 [ 0, %bb.nph.i ], [ %tmp.i, %bb7.i ] ; [#uses=11]
+ %tmp.i = add i32 %w_it.011.i, 1 ; [#uses=2]
+ %54 = load %struct.btWheelInfo** %53, align 4 ; [#uses=10]
+ %scevgep12.i = getelementptr %struct.btWheelInfo* %54, i32 %w_it.011.i, i32 0, i32 6 ; [#uses=1]
+ %55 = load i8* %scevgep12.i, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %55, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb6.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %scevgep.i = getelementptr %struct.btWheelInfo* %54, i32 %w_it.011.i ; [#uses=1]
+ %56 = call float @_ZNK11btWheelInfo23getSuspensionRestLengthEv(%struct.btWheelInfo* %scevgep.i) ; [#uses=1]
+ %scevgep13.i = getelementptr %struct.btWheelInfo* %54, i32 %w_it.011.i, i32 0, i32 2 ; [#uses=1]
+ %57 = load float* %scevgep13.i, align 4 ; [#uses=1]
+ %58 = fsub float %56, %57 ; [#uses=1]
+ %scevgep14.i = getelementptr %struct.btWheelInfo* %54, i32 %w_it.011.i, i32 8 ; [#uses=1]
+ %59 = load float* %scevgep14.i, align 4 ; [#uses=1]
+ %60 = fmul float %59, %58 ; [#uses=1]
+ %scevgep15.i = getelementptr %struct.btWheelInfo* %54, i32 %w_it.011.i, i32 21 ; [#uses=1]
+ %61 = load float* %scevgep15.i, align 4 ; [#uses=1]
+ %62 = fmul float %60, %61 ; [#uses=1]
+ %scevgep16.i = getelementptr %struct.btWheelInfo* %54, i32 %w_it.011.i, i32 22 ; [#uses=1]
+ %63 = load float* %scevgep16.i, align 4 ; [#uses=2]
+ %64 = fcmp olt float %63, 0.000000e+00 ; [#uses=1]
+ br i1 %64, label %bb2.i, label %bb3.i
+
+bb2.i: ; preds = %bb1.i
+ %65 = getelementptr inbounds %struct.btWheelInfo* %54, i32 %w_it.011.i, i32 9 ; [#uses=1]
+ br label %bb4.i
+
+bb3.i: ; preds = %bb1.i
+ %scevgep17.i = getelementptr %struct.btWheelInfo* %54, i32 %w_it.011.i, i32 10 ; [#uses=1]
+ br label %bb4.i
+
+bb4.i: ; preds = %bb3.i, %bb2.i
+ %susp_damping.0.in.i = phi float* [ %65, %bb2.i ], [ %scevgep17.i, %bb3.i ] ; [#uses=1]
+ %susp_damping.0.i = load float* %susp_damping.0.in.i, align 4 ; [#uses=1]
+ %66 = fmul float %susp_damping.0.i, %63 ; [#uses=1]
+ %67 = fsub float %62, %66 ; [#uses=1]
+ %68 = fmul float %67, %51 ; [#uses=2]
+ %scevgep85 = getelementptr %struct.btWheelInfo* %54, i32 %w_it.011.i, i32 23 ; [#uses=2]
+ store float %68, float* %scevgep85, align 4
+ %69 = fcmp olt float %68, 0.000000e+00 ; [#uses=1]
+ br i1 %69, label %bb5.i, label %bb7.i
+
+bb5.i: ; preds = %bb4.i
+ store float 0.000000e+00, float* %scevgep85, align 4
+ br label %bb7.i
+
+bb6.i: ; preds = %bb.i
+ %scevgep20.i = getelementptr %struct.btWheelInfo* %54, i32 %w_it.011.i, i32 23 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep20.i, align 4
+ br label %bb7.i
+
+bb7.i: ; preds = %bb6.i, %bb5.i, %bb4.i
+ %70 = load i32* %0, align 4 ; [#uses=2]
+ %71 = icmp sgt i32 %70, %tmp.i ; [#uses=1]
+ br i1 %71, label %bb.i, label %bb14.preheader
+
+bb14.preheader: ; preds = %bb7.i
+ %72 = icmp sgt i32 %70, 0 ; [#uses=1]
+ br i1 %72, label %bb.nph47, label %bb16
+
+bb.nph47: ; preds = %bb14.preheader
+ %73 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ %74 = getelementptr inbounds %struct.btQuadWord* %impulse, i32 0, i32 0, i32 0 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btQuadWord* %impulse, i32 0, i32 0, i32 1 ; [#uses=1]
+ %76 = getelementptr inbounds %struct.btQuadWord* %impulse, i32 0, i32 0, i32 2 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btQuadWord* %impulse, i32 0, i32 0, i32 3 ; [#uses=1]
+ %78 = getelementptr inbounds %struct.btQuadWord* %relpos, i32 0, i32 0, i32 0 ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btQuadWord* %relpos, i32 0, i32 0, i32 1 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btQuadWord* %relpos, i32 0, i32 0, i32 2 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btQuadWord* %relpos, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb11
+
+bb11: ; preds = %bb11, %bb.nph47
+ %i.146 = phi i32 [ 0, %bb.nph47 ], [ %tmp81, %bb11 ] ; [#uses=9]
+ %tmp81 = add i32 %i.146, 1 ; [#uses=2]
+ %82 = load %struct.btWheelInfo** %73, align 4 ; [#uses=8]
+ %scevgep71 = getelementptr %struct.btWheelInfo* %82, i32 %i.146, i32 23 ; [#uses=1]
+ %83 = load float* %scevgep71, align 4 ; [#uses=2]
+ %scevgep72 = getelementptr %struct.btWheelInfo* %82, i32 %i.146, i32 16 ; [#uses=1]
+ %84 = load float* %scevgep72, align 4 ; [#uses=2]
+ %85 = fcmp olt float %84, %83 ; [#uses=1]
+ %suspensionForce.0 = select i1 %85, float %84, float %83 ; [#uses=3]
+ %scevgep73 = getelementptr %struct.btWheelInfo* %82, i32 %i.146, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %86 = load float* %scevgep73, align 4 ; [#uses=1]
+ %87 = fmul float %86, %suspensionForce.0 ; [#uses=1]
+ %scevgep74 = getelementptr %struct.btWheelInfo* %82, i32 %i.146, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %88 = load float* %scevgep74, align 4 ; [#uses=1]
+ %89 = fmul float %88, %suspensionForce.0 ; [#uses=1]
+ %scevgep7576 = getelementptr inbounds %struct.btWheelInfo* %82, i32 %i.146, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %90 = load float* %scevgep7576, align 4 ; [#uses=1]
+ %91 = fmul float %90, %suspensionForce.0 ; [#uses=1]
+ %92 = fmul float %87, %step ; [#uses=1]
+ %93 = fmul float %89, %step ; [#uses=1]
+ %94 = fmul float %91, %step ; [#uses=1]
+ store float %94, float* %74, align 8
+ store float %93, float* %75, align 4
+ store float %92, float* %76, align 8
+ store float 0.000000e+00, float* %77, align 4
+ %95 = load %struct.btRigidBody** %8, align 4 ; [#uses=4]
+ %scevgep77 = getelementptr %struct.btWheelInfo* %82, i32 %i.146, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %96 = load float* %scevgep77, align 4 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btRigidBody* %95, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ %99 = fsub float %96, %98 ; [#uses=1]
+ %scevgep78 = getelementptr %struct.btWheelInfo* %82, i32 %i.146, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %100 = load float* %scevgep78, align 4 ; [#uses=1]
+ %101 = getelementptr inbounds %struct.btRigidBody* %95, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=1]
+ %103 = fsub float %100, %102 ; [#uses=1]
+ %scevgep79 = getelementptr %struct.btWheelInfo* %82, i32 %i.146, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %104 = load float* %scevgep79, align 4 ; [#uses=1]
+ %105 = getelementptr inbounds %struct.btRigidBody* %95, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %106 = load float* %105, align 4 ; [#uses=1]
+ %107 = fsub float %104, %106 ; [#uses=1]
+ store float %107, float* %78, align 8
+ store float %103, float* %79, align 4
+ store float %99, float* %80, align 8
+ store float 0.000000e+00, float* %81, align 4
+ call void @_ZN11btRigidBody12applyImpulseERK9btVector3S2_(%struct.btRigidBody* %95, %struct.btQuadWord* %impulse, %struct.btQuadWord* %relpos) nounwind
+ %108 = load i32* %0, align 4 ; [#uses=1]
+ %109 = icmp sgt i32 %108, %tmp81 ; [#uses=1]
+ br i1 %109, label %bb11, label %bb16
+
+bb16: ; preds = %bb11, %bb14.preheader, %bb10, %bb8.preheader
+ %110 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ %111 = load i32 (...)*** %110, align 4 ; [#uses=1]
+ %112 = getelementptr inbounds i32 (...)** %111, i32 5 ; [#uses=1]
+ %113 = load i32 (...)** %112, align 4 ; [#uses=1]
+ %114 = bitcast i32 (...)* %113 to void (%struct.btRaycastVehicle*, float)* ; [#uses=1]
+ call void %114(%struct.btRaycastVehicle* %this, float %step)
+ %115 = load i32* %0, align 4 ; [#uses=1]
+ %116 = icmp sgt i32 %115, 0 ; [#uses=1]
+ br i1 %116, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb16
+ %117 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ br label %bb17
+
+bb17: ; preds = %bb23, %bb.nph
+ %i.245 = phi i32 [ 0, %bb.nph ], [ %tmp, %bb23 ] ; [#uses=14]
+ %tmp = add i32 %i.245, 1 ; [#uses=2]
+ %118 = load %struct.btWheelInfo** %117, align 4 ; [#uses=13]
+ %119 = load %struct.btRigidBody** %8, align 4 ; [#uses=12]
+ %scevgep = getelementptr %struct.btWheelInfo* %118, i32 %i.245, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %120 = load float* %scevgep, align 4 ; [#uses=1]
+ %121 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %122 = load float* %121, align 4 ; [#uses=1]
+ %123 = fsub float %120, %122 ; [#uses=2]
+ %scevgep52 = getelementptr %struct.btWheelInfo* %118, i32 %i.245, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %124 = load float* %scevgep52, align 4 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %126 = load float* %125, align 4 ; [#uses=1]
+ %127 = fsub float %124, %126 ; [#uses=2]
+ %scevgep53 = getelementptr %struct.btWheelInfo* %118, i32 %i.245, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %128 = load float* %scevgep53, align 4 ; [#uses=1]
+ %129 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %130 = load float* %129, align 4 ; [#uses=1]
+ %131 = fsub float %128, %130 ; [#uses=2]
+ %132 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %133 = load float* %132, align 4 ; [#uses=2]
+ %134 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %135 = load float* %134, align 4 ; [#uses=2]
+ %136 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %137 = load float* %136, align 4 ; [#uses=2]
+ %scevgep54 = getelementptr %struct.btWheelInfo* %118, i32 %i.245, i32 0, i32 6 ; [#uses=1]
+ %138 = load i8* %scevgep54, align 4 ; [#uses=1]
+ %toBool20 = icmp eq i8 %138, 0 ; [#uses=1]
+ br i1 %toBool20, label %bb22, label %bb21
+
+bb21: ; preds = %bb17
+ %139 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %141 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %142 = fmul float %137, %127 ; [#uses=1]
+ %143 = fmul float %135, %123 ; [#uses=1]
+ %144 = fmul float %133, %123 ; [#uses=1]
+ %145 = fmul float %137, %131 ; [#uses=1]
+ %146 = fmul float %135, %131 ; [#uses=1]
+ %147 = fmul float %133, %127 ; [#uses=1]
+ %148 = load float* %139, align 4 ; [#uses=1]
+ %149 = load float* %140, align 4 ; [#uses=1]
+ %150 = load float* %141, align 4 ; [#uses=1]
+ %151 = fsub float %143, %142 ; [#uses=1]
+ %152 = fsub float %145, %144 ; [#uses=1]
+ %153 = fsub float %147, %146 ; [#uses=1]
+ %154 = fadd float %148, %151 ; [#uses=1]
+ %155 = fadd float %149, %152 ; [#uses=1]
+ %156 = fadd float %150, %153 ; [#uses=1]
+ %157 = load i32* %24, align 4 ; [#uses=3]
+ %158 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2, i32 0, i32 %157 ; [#uses=1]
+ %159 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1, i32 0, i32 %157 ; [#uses=1]
+ %160 = getelementptr inbounds %struct.btRigidBody* %119, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 %157 ; [#uses=1]
+ %161 = load float* %160, align 4 ; [#uses=2]
+ %162 = load float* %159, align 4 ; [#uses=2]
+ %163 = load float* %158, align 4 ; [#uses=2]
+ %scevgep5556 = getelementptr inbounds %struct.btWheelInfo* %118, i32 %i.245, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %164 = load float* %scevgep5556, align 4 ; [#uses=2]
+ %165 = fmul float %161, %164 ; [#uses=1]
+ %scevgep57 = getelementptr %struct.btWheelInfo* %118, i32 %i.245, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %166 = load float* %scevgep57, align 4 ; [#uses=2]
+ %167 = fmul float %162, %166 ; [#uses=1]
+ %168 = fadd float %165, %167 ; [#uses=1]
+ %scevgep58 = getelementptr %struct.btWheelInfo* %118, i32 %i.245, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %169 = load float* %scevgep58, align 4 ; [#uses=2]
+ %170 = fmul float %163, %169 ; [#uses=1]
+ %171 = fadd float %168, %170 ; [#uses=3]
+ %172 = fmul float %169, %171 ; [#uses=1]
+ %173 = fmul float %166, %171 ; [#uses=1]
+ %174 = fmul float %164, %171 ; [#uses=1]
+ %175 = fsub float %161, %174 ; [#uses=1]
+ %176 = fsub float %162, %173 ; [#uses=1]
+ %177 = fsub float %163, %172 ; [#uses=1]
+ %178 = fmul float %175, %154 ; [#uses=1]
+ %179 = fmul float %176, %155 ; [#uses=1]
+ %180 = fadd float %178, %179 ; [#uses=1]
+ %181 = fmul float %177, %156 ; [#uses=1]
+ %182 = fadd float %180, %181 ; [#uses=1]
+ %183 = fmul float %182, %step ; [#uses=1]
+ %scevgep62 = getelementptr %struct.btWheelInfo* %118, i32 %i.245, i32 7 ; [#uses=1]
+ %184 = load float* %scevgep62, align 4 ; [#uses=1]
+ %185 = fdiv float %183, %184 ; [#uses=3]
+ %scevgep63 = getelementptr %struct.btWheelInfo* %118, i32 %i.245, i32 14 ; [#uses=1]
+ store float %185, float* %scevgep63, align 4
+ %scevgep64 = getelementptr %struct.btWheelInfo* %118, i32 %i.245, i32 13 ; [#uses=2]
+ %186 = load float* %scevgep64, align 4 ; [#uses=1]
+ %187 = fadd float %186, %185 ; [#uses=1]
+ store float %187, float* %scevgep64, align 4
+ br label %bb23
+
+bb22: ; preds = %bb17
+ %scevgep68 = getelementptr %struct.btWheelInfo* %118, i32 %i.245, i32 13 ; [#uses=2]
+ %188 = load float* %scevgep68, align 4 ; [#uses=1]
+ %scevgep69 = getelementptr %struct.btWheelInfo* %118, i32 %i.245, i32 14 ; [#uses=1]
+ %189 = load float* %scevgep69, align 4 ; [#uses=2]
+ %190 = fadd float %188, %189 ; [#uses=1]
+ store float %190, float* %scevgep68, align 4
+ br label %bb23
+
+bb23: ; preds = %bb22, %bb21
+ %191 = phi float [ %189, %bb22 ], [ %185, %bb21 ] ; [#uses=1]
+ %scevgep66 = getelementptr %struct.btWheelInfo* %118, i32 %i.245, i32 14 ; [#uses=1]
+ %192 = fmul float %191, 0x3FEFAE1480000000 ; [#uses=1]
+ store float %192, float* %scevgep66, align 4
+ %193 = load i32* %0, align 4 ; [#uses=1]
+ %194 = icmp sgt i32 %193, %tmp ; [#uses=1]
+ br i1 %194, label %bb17, label %return
+
+return: ; preds = %bb23, %bb16
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN16btRaycastVehicleD2Ev(%struct.btRaycastVehicle* nocapture %this) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV16btRaycastVehicle, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=3]
+ %2 = load %struct.btWheelInfo** %1, align 4 ; [#uses=2]
+ %3 = icmp eq %struct.btWheelInfo* %2, null ; [#uses=1]
+ br i1 %3, label %bb3, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %entry
+ %4 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 4 ; [#uses=1]
+ %5 = load i8* %4, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %5, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %6 = bitcast %struct.btWheelInfo* %2 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %6)
+ to label %bb2.i.i.i unwind label %lpad44
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btWheelInfo* null, %struct.btWheelInfo** %1, align 4
+ br label %bb3
+
+bb3: ; preds = %bb2.i.i.i, %entry
+ %7 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 4 ; [#uses=1]
+ store i8 1, i8* %7, align 4
+ store %struct.btWheelInfo* null, %struct.btWheelInfo** %1, align 4
+ %8 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 1 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 2 ; [#uses=1]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %11 = load float** %10, align 4 ; [#uses=2]
+ %12 = icmp eq float* %11, null ; [#uses=1]
+ br i1 %12, label %bb10, label %bb.i.i.i73
+
+bb.i.i.i73: ; preds = %bb3
+ %13 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %14 = load i8* %13, align 4 ; [#uses=1]
+ %toBool.i.i.i72 = icmp eq i8 %14, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i72, label %bb2.i.i.i75, label %bb1.i.i.i74
+
+bb1.i.i.i74: ; preds = %bb.i.i.i73
+ %15 = bitcast float* %11 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %15)
+ to label %bb2.i.i.i75 unwind label %lpad40
+
+bb2.i.i.i75: ; preds = %bb1.i.i.i74, %bb.i.i.i73
+ store float* null, float** %10, align 4
+ br label %bb10
+
+bb10: ; preds = %bb2.i.i.i75, %bb3
+ %16 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %16, align 4
+ store float* null, float** %10, align 4
+ %17 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %17, align 4
+ %18 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %20 = load float** %19, align 4 ; [#uses=2]
+ %21 = icmp eq float* %20, null ; [#uses=1]
+ br i1 %21, label %bb19, label %bb.i.i.i78
+
+bb.i.i.i78: ; preds = %bb10
+ %22 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i.i77 = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i77, label %bb2.i.i.i80, label %bb1.i.i.i79
+
+bb1.i.i.i79: ; preds = %bb.i.i.i78
+ %24 = bitcast float* %20 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %24)
+ to label %bb2.i.i.i80 unwind label %lpad36
+
+bb2.i.i.i80: ; preds = %bb1.i.i.i79, %bb.i.i.i78
+ store float* null, float** %19, align 4
+ br label %bb19
+
+bb19: ; preds = %bb2.i.i.i80, %bb10
+ %25 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ store float* null, float** %19, align 4
+ %26 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %27, align 4
+ %28 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %29 = load %struct.btQuadWord** %28, align 4 ; [#uses=2]
+ %30 = icmp eq %struct.btQuadWord* %29, null ; [#uses=1]
+ br i1 %30, label %bb28, label %bb.i.i.i84
+
+bb.i.i.i84: ; preds = %bb19
+ %31 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %32 = load i8* %31, align 4 ; [#uses=1]
+ %toBool.i.i.i83 = icmp eq i8 %32, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i83, label %bb2.i.i.i86, label %bb1.i.i.i85
+
+bb1.i.i.i85: ; preds = %bb.i.i.i84
+ %33 = bitcast %struct.btQuadWord* %29 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %33)
+ to label %bb2.i.i.i86 unwind label %lpad
+
+bb2.i.i.i86: ; preds = %bb1.i.i.i85, %bb.i.i.i84
+ store %struct.btQuadWord* null, %struct.btQuadWord** %28, align 4
+ br label %bb28
+
+invcont26: ; preds = %bb2.i.i.i102, %ppad
+ %34 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %34, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %58, align 4
+ %35 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %35, align 4
+ %36 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %36, align 4
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.2)
+ unreachable
+
+bb28: ; preds = %bb2.i.i.i86, %bb19
+ %37 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %37, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %28, align 4
+ %38 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %38, align 4
+ %39 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %39, align 4
+ %40 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %41 = load %struct.btQuadWord** %40, align 4 ; [#uses=2]
+ %42 = icmp eq %struct.btQuadWord* %41, null ; [#uses=1]
+ br i1 %42, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit92, label %bb.i.i.i89
+
+bb.i.i.i89: ; preds = %bb28
+ %43 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %44 = load i8* %43, align 4 ; [#uses=1]
+ %toBool.i.i.i88 = icmp eq i8 %44, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i88, label %bb2.i.i.i91, label %bb1.i.i.i90
+
+bb1.i.i.i90: ; preds = %bb.i.i.i89
+ %45 = bitcast %struct.btQuadWord* %41 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %45)
+ br label %bb2.i.i.i91
+
+bb2.i.i.i91: ; preds = %bb1.i.i.i90, %bb.i.i.i89
+ store %struct.btQuadWord* null, %struct.btQuadWord** %40, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit92
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit92: ; preds = %bb2.i.i.i91, %bb28
+ %46 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %46, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %40, align 4
+ %47 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %47, align 4
+ %48 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %48, align 4
+ ret void
+
+lpad: ; preds = %bb1.i.i.i85
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select35 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad36: ; preds = %bb1.i.i.i79
+ %eh_ptr37 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select39 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr37, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad64
+
+lpad40: ; preds = %bb1.i.i.i74
+ %eh_ptr41 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select43 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr41, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad65
+
+lpad44: ; preds = %bb1.i.i.i
+ %eh_ptr45 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select47 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr45, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %49 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 3 ; [#uses=3]
+ %50 = load float** %49, align 4 ; [#uses=2]
+ %51 = icmp eq float* %50, null ; [#uses=1]
+ br i1 %51, label %_ZN20btAlignedObjectArrayIfED1Ev.exit98, label %bb.i.i.i94
+
+bb.i.i.i94: ; preds = %lpad44
+ %52 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ %53 = load i8* %52, align 4 ; [#uses=1]
+ %toBool.i.i.i93 = icmp eq i8 %53, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i93, label %bb2.i.i.i96, label %bb1.i.i.i95
+
+bb1.i.i.i95: ; preds = %bb.i.i.i94
+ %54 = bitcast float* %50 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %54)
+ to label %bb2.i.i.i96 unwind label %lpad48
+
+bb2.i.i.i96: ; preds = %bb1.i.i.i95, %bb.i.i.i94
+ store float* null, float** %49, align 4
+ br label %_ZN20btAlignedObjectArrayIfED1Ev.exit98
+
+_ZN20btAlignedObjectArrayIfED1Ev.exit98: ; preds = %bb2.i.i.i96, %lpad44
+ %55 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %55, align 4
+ store float* null, float** %49, align 4
+ %56 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %56, align 4
+ %57 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %57, align 4
+ br label %ppad65
+
+lpad48: ; preds = %bb1.i.i.i95
+ %eh_ptr49 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select51 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr49, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad52: ; preds = %bb1.i.i.i113
+ %eh_ptr53 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select55 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr53, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad56: ; preds = %bb1.i.i.i107
+ %eh_ptr57 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select59 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr57, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad60: ; preds = %bb1.i.i.i101
+ %eh_ptr61 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select63 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr61, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit110, %lpad
+ %eh_exception.2 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.1, %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit110 ] ; [#uses=1]
+ %58 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %59 = load %struct.btQuadWord** %58, align 4 ; [#uses=2]
+ %60 = icmp eq %struct.btQuadWord* %59, null ; [#uses=1]
+ br i1 %60, label %invcont26, label %bb.i.i.i100
+
+bb.i.i.i100: ; preds = %ppad
+ %61 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %62 = load i8* %61, align 4 ; [#uses=1]
+ %toBool.i.i.i99 = icmp eq i8 %62, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i99, label %bb2.i.i.i102, label %bb1.i.i.i101
+
+bb1.i.i.i101: ; preds = %bb.i.i.i100
+ %63 = bitcast %struct.btQuadWord* %59 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %63)
+ to label %bb2.i.i.i102 unwind label %lpad60
+
+bb2.i.i.i102: ; preds = %bb1.i.i.i101, %bb.i.i.i100
+ store %struct.btQuadWord* null, %struct.btQuadWord** %58, align 4
+ br label %invcont26
+
+ppad64: ; preds = %_ZN20btAlignedObjectArrayIfED1Ev.exit116, %lpad36
+ %eh_exception.1 = phi i8* [ %eh_ptr37, %lpad36 ], [ %eh_exception.0, %_ZN20btAlignedObjectArrayIfED1Ev.exit116 ] ; [#uses=1]
+ %64 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 3 ; [#uses=3]
+ %65 = load %struct.btQuadWord** %64, align 4 ; [#uses=2]
+ %66 = icmp eq %struct.btQuadWord* %65, null ; [#uses=1]
+ br i1 %66, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit110, label %bb.i.i.i106
+
+bb.i.i.i106: ; preds = %ppad64
+ %67 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ %68 = load i8* %67, align 4 ; [#uses=1]
+ %toBool.i.i.i105 = icmp eq i8 %68, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i105, label %bb2.i.i.i108, label %bb1.i.i.i107
+
+bb1.i.i.i107: ; preds = %bb.i.i.i106
+ %69 = bitcast %struct.btQuadWord* %65 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %69)
+ to label %bb2.i.i.i108 unwind label %lpad56
+
+bb2.i.i.i108: ; preds = %bb1.i.i.i107, %bb.i.i.i106
+ store %struct.btQuadWord* null, %struct.btQuadWord** %64, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit110
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit110: ; preds = %bb2.i.i.i108, %ppad64
+ %70 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %70, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %64, align 4
+ %71 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %71, align 4
+ %72 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %72, align 4
+ br label %ppad
+
+ppad65: ; preds = %_ZN20btAlignedObjectArrayIfED1Ev.exit98, %lpad40
+ %eh_exception.0 = phi i8* [ %eh_ptr41, %lpad40 ], [ %eh_ptr45, %_ZN20btAlignedObjectArrayIfED1Ev.exit98 ] ; [#uses=1]
+ %73 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 3 ; [#uses=3]
+ %74 = load float** %73, align 4 ; [#uses=2]
+ %75 = icmp eq float* %74, null ; [#uses=1]
+ br i1 %75, label %_ZN20btAlignedObjectArrayIfED1Ev.exit116, label %bb.i.i.i112
+
+bb.i.i.i112: ; preds = %ppad65
+ %76 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ %77 = load i8* %76, align 4 ; [#uses=1]
+ %toBool.i.i.i111 = icmp eq i8 %77, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i111, label %bb2.i.i.i114, label %bb1.i.i.i113
+
+bb1.i.i.i113: ; preds = %bb.i.i.i112
+ %78 = bitcast float* %74 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %78)
+ to label %bb2.i.i.i114 unwind label %lpad52
+
+bb2.i.i.i114: ; preds = %bb1.i.i.i113, %bb.i.i.i112
+ store float* null, float** %73, align 4
+ br label %_ZN20btAlignedObjectArrayIfED1Ev.exit116
+
+_ZN20btAlignedObjectArrayIfED1Ev.exit116: ; preds = %bb2.i.i.i114, %ppad65
+ %79 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %79, align 4
+ store float* null, float** %73, align 4
+ %80 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %80, align 4
+ %81 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %81, align 4
+ br label %ppad64
+}
+
+; [#uses=0]
+define void @_ZN16btRaycastVehicleC2ERKNS_15btVehicleTuningEP11btRigidBodyP18btVehicleRaycaster(%struct.btRaycastVehicle* nocapture %this, %"struct.btRaycastVehicle::btVehicleTuning"* nocapture %tuning, %struct.btRigidBody* %chassis, %struct.btActionInterface* %raycaster) align 2 {
+invcont4:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV16btRaycastVehicle, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %1, align 4
+ %2 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %2, align 4
+ %3 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %5, align 4
+ %6 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %6, align 4
+ %7 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %9, align 4
+ %10 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ store float* null, float** %10, align 4
+ %11 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %13, align 4
+ %14 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ store float* null, float** %14, align 4
+ %15 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 9 ; [#uses=1]
+ store %struct.btActionInterface* %raycaster, %struct.btActionInterface** %17, align 4
+ %18 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 10 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 4 ; [#uses=1]
+ store i8 1, i8* %19, align 4
+ %20 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ store %struct.btWheelInfo* null, %struct.btWheelInfo** %20, align 4
+ %21 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 1 ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 2 ; [#uses=1]
+ store i32 0, i32* %22, align 4
+ %23 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 13 ; [#uses=1]
+ store %struct.btRigidBody* %chassis, %struct.btRigidBody** %23, align 4
+ %24 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 14 ; [#uses=1]
+ store i32 0, i32* %24, align 4
+ %25 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 2, i32* %25, align 4
+ %26 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 16 ; [#uses=1]
+ store i32 1, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 12 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 11 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16btRaycastVehicleC1ERKNS_15btVehicleTuningEP11btRigidBodyP18btVehicleRaycaster(%struct.btRaycastVehicle* %this, %"struct.btRaycastVehicle::btVehicleTuning"* nocapture %tuning, %struct.btRigidBody* %chassis, %struct.btActionInterface* %raycaster) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV16btRaycastVehicle, i32 0, i32 2), i32 (...)*** %0, align 4
+ %1 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %1, align 4
+ %2 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %2, align 4
+ %3 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %5, align 4
+ %6 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 3 ; [#uses=1]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %6, align 4
+ %7 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 1 ; [#uses=1]
+ store i32 0, i32* %7, align 4
+ %8 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 4 ; [#uses=1]
+ store i8 1, i8* %9, align 4
+ %10 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 3 ; [#uses=1]
+ store float* null, float** %10, align 4
+ %11 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 1 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 3, i32 2 ; [#uses=1]
+ store i32 0, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %13, align 4
+ %14 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 3 ; [#uses=1]
+ store float* null, float** %14, align 4
+ %15 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 1 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 9 ; [#uses=1]
+ store %struct.btActionInterface* %raycaster, %struct.btActionInterface** %17, align 4
+ %18 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 10 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 4 ; [#uses=1]
+ store i8 1, i8* %19, align 4
+ %20 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 3 ; [#uses=1]
+ store %struct.btWheelInfo* null, %struct.btWheelInfo** %20, align 4
+ %21 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 1 ; [#uses=1]
+ store i32 0, i32* %21, align 4
+ %22 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 17, i32 2 ; [#uses=1]
+ store i32 0, i32* %22, align 4
+ %23 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 13 ; [#uses=1]
+ store %struct.btRigidBody* %chassis, %struct.btRigidBody** %23, align 4
+ %24 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 14 ; [#uses=1]
+ store i32 0, i32* %24, align 4
+ %25 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 15 ; [#uses=1]
+ store i32 2, i32* %25, align 4
+ %26 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 16 ; [#uses=1]
+ store i32 1, i32* %26, align 4
+ %27 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 12 ; [#uses=1]
+ store float 0.000000e+00, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 11 ; [#uses=1]
+ store float 0.000000e+00, float* %28, align 4
+ ret void
+}
+
+; [#uses=1]
+define internal void @__tcf_088(i8* nocapture %unnamed_arg) {
+entry:
+ store i32 (...)** getelementptr inbounds ([9 x i32 (...)*]* @_ZTV11btRigidBody, i32 0, i32 2), i32 (...)*** getelementptr inbounds (%struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed, i32 0, i32 0, i32 0), align 32
+ %0 = load %struct.btTypedConstraint*** getelementptr inbounds (%struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 3), align 4 ; [#uses=2]
+ %1 = icmp eq %struct.btTypedConstraint** %0, null ; [#uses=1]
+ br i1 %1, label %_ZN11btRigidBodyD1Ev.exit, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %entry
+ %2 = load i8* getelementptr inbounds (%struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 4), align 4 ; [#uses=1]
+ %toBool.i.i.i.i = icmp eq i8 %2, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i, label %bb2.i.i.i.i, label %bb1.i.i.i.i
+
+bb1.i.i.i.i: ; preds = %bb.i.i.i.i
+ %3 = bitcast %struct.btTypedConstraint** %0 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %3)
+ to label %bb2.i.i.i.i unwind label %lpad.i
+
+bb2.i.i.i.i: ; preds = %bb1.i.i.i.i, %bb.i.i.i.i
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** getelementptr inbounds (%struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 3), align 4
+ br label %_ZN11btRigidBodyD1Ev.exit
+
+invcont1.i: ; preds = %lpad.i
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr.i)
+ unreachable
+
+lpad.i: ; preds = %bb1.i.i.i.i
+ %eh_ptr.i = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select8.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ invoke void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* getelementptr inbounds (%struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed, i32 0, i32 0))
+ to label %invcont1.i unwind label %lpad9.i
+
+lpad9.i: ; preds = %lpad.i
+ %eh_ptr10.i = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select12.i = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr10.i, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+_ZN11btRigidBodyD1Ev.exit: ; preds = %bb2.i.i.i.i, %entry
+ store i8 1, i8* getelementptr inbounds (%struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 4), align 4
+ store %struct.btTypedConstraint** null, %struct.btTypedConstraint*** getelementptr inbounds (%struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 3), align 4
+ store i32 0, i32* getelementptr inbounds (%struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 1), align 4
+ store i32 0, i32* getelementptr inbounds (%struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed, i32 0, i32 21, i32 2), align 4
+ tail call void @_ZN17btCollisionObjectD2Ev(%struct.btCollisionObject* getelementptr inbounds (%struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed, i32 0, i32 0))
+ ret void
+}
+
+; [#uses=1]
+define float @_ZN16btRaycastVehicle7rayCastER11btWheelInfo(%struct.btRaycastVehicle* nocapture %this, %struct.btWheelInfo* %wheel) align 2 {
+entry:
+ %rayResults = alloca %"struct.btVehicleRaycaster::btVehicleRaycasterResult", align 8 ; [#uses=10]
+ call void @_ZN16btRaycastVehicle23updateWheelTransformsWSER11btWheelInfob(%struct.btRaycastVehicle* %this, %struct.btWheelInfo* %wheel, i8 zeroext 0)
+ %0 = call float @_ZNK11btWheelInfo23getSuspensionRestLengthEv(%struct.btWheelInfo* %wheel) ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 7 ; [#uses=2]
+ %2 = load float* %1, align 4 ; [#uses=1]
+ %3 = fadd float %0, %2 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 4, i32 0, i32 2 ; [#uses=3]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fmul float %5, %3 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 4, i32 0, i32 1 ; [#uses=3]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %8, %3 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 4, i32 0, i32 0 ; [#uses=3]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fmul float %11, %3 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 3 ; [#uses=1]
+ %14 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = fadd float %15, %6 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fadd float %18, %9 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = fadd float %21, %12 ; [#uses=1]
+ %23 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=2]
+ store float %22, float* %23, align 4
+ %24 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=2]
+ store float %19, float* %24, align 4
+ %25 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=2]
+ store float %16, float* %25, align 4
+ %26 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 1, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 1 ; [#uses=1]
+ %28 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %rayResults, i32 0, i32 2 ; [#uses=2]
+ store float -1.000000e+00, float* %28, align 8
+ %29 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 9 ; [#uses=1]
+ %30 = load %struct.btActionInterface** %29, align 4 ; [#uses=2]
+ %31 = getelementptr inbounds %struct.btActionInterface* %30, i32 0, i32 0 ; [#uses=1]
+ %32 = load i32 (...)*** %31, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32 (...)** %32, i32 2 ; [#uses=1]
+ %34 = load i32 (...)** %33, align 4 ; [#uses=1]
+ %35 = bitcast i32 (...)* %34 to i8* (%struct.btActionInterface*, %struct.btQuadWord*, %struct.btQuadWord*, %"struct.btVehicleRaycaster::btVehicleRaycasterResult"*)* ; [#uses=1]
+ %36 = call i8* %35(%struct.btActionInterface* %30, %struct.btQuadWord* %13, %struct.btQuadWord* %27, %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %rayResults) ; [#uses=1]
+ %37 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 7 ; [#uses=2]
+ store i8* null, i8** %37, align 4
+ %38 = icmp eq i8* %36, null ; [#uses=1]
+ br i1 %38, label %bb16, label %bb
+
+bb: ; preds = %entry
+ %39 = load float* %28, align 8 ; [#uses=1]
+ %40 = fmul float %39, %3 ; [#uses=3]
+ %41 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %42 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %rayResults, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %43 = load float* %42, align 8 ; [#uses=1]
+ store float %43, float* %41, align 4
+ %44 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %45 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %rayResults, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %46 = load float* %45, align 4 ; [#uses=1]
+ store float %46, float* %44, align 4
+ %47 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %48 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %rayResults, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %49 = load float* %48, align 8 ; [#uses=1]
+ store float %49, float* %47, align 4
+ %50 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %51 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %rayResults, i32 0, i32 1, i32 0, i32 3 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=1]
+ store float %52, float* %50, align 4
+ %53 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 6 ; [#uses=1]
+ store i8 1, i8* %53, align 4
+ %54 = call %struct.btRigidBody* @_ZN17btActionInterface12getFixedBodyEv() ; [#uses=0]
+ store i8* bitcast (%struct.btRigidBody* @_ZZN17btActionInterface12getFixedBodyEvE7s_fixed to i8*), i8** %37, align 4
+ %55 = load float* %1, align 4 ; [#uses=1]
+ %56 = fsub float %40, %55 ; [#uses=1]
+ %57 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 2 ; [#uses=4]
+ store float %56, float* %57, align 4
+ %58 = call float @_ZNK11btWheelInfo23getSuspensionRestLengthEv(%struct.btWheelInfo* %wheel) ; [#uses=1]
+ %59 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 6 ; [#uses=2]
+ %60 = load float* %59, align 4 ; [#uses=1]
+ %61 = fmul float %60, 0xBF847AE140000000 ; [#uses=1]
+ %62 = fadd float %58, %61 ; [#uses=3]
+ %63 = call float @_ZNK11btWheelInfo23getSuspensionRestLengthEv(%struct.btWheelInfo* %wheel) ; [#uses=1]
+ %64 = load float* %59, align 4 ; [#uses=1]
+ %65 = fmul float %64, 0x3F847AE140000000 ; [#uses=1]
+ %66 = fadd float %63, %65 ; [#uses=2]
+ %67 = load float* %57, align 4 ; [#uses=2]
+ %68 = fcmp olt float %67, %62 ; [#uses=1]
+ br i1 %68, label %bb8, label %bb9
+
+bb8: ; preds = %bb
+ store float %62, float* %57, align 4
+ br label %bb9
+
+bb9: ; preds = %bb8, %bb
+ %69 = phi float [ %62, %bb8 ], [ %67, %bb ] ; [#uses=1]
+ %70 = fcmp ogt float %69, %66 ; [#uses=1]
+ br i1 %70, label %bb10, label %bb11
+
+bb10: ; preds = %bb9
+ store float %66, float* %57, align 4
+ br label %bb11
+
+bb11: ; preds = %bb10, %bb9
+ %71 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %rayResults, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %72 = load float* %71, align 8 ; [#uses=2]
+ store float %72, float* %23, align 4
+ %73 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %rayResults, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %74 = load float* %73, align 4 ; [#uses=2]
+ store float %74, float* %24, align 4
+ %75 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %rayResults, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %76 = load float* %75, align 8 ; [#uses=2]
+ store float %76, float* %25, align 4
+ %77 = getelementptr inbounds %"struct.btVehicleRaycaster::btVehicleRaycasterResult"* %rayResults, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ store float %78, float* %26, align 4
+ %79 = load float* %41, align 4 ; [#uses=2]
+ %80 = load float* %10, align 4 ; [#uses=1]
+ %81 = fmul float %79, %80 ; [#uses=1]
+ %82 = load float* %44, align 4 ; [#uses=2]
+ %83 = load float* %7, align 4 ; [#uses=1]
+ %84 = fmul float %82, %83 ; [#uses=1]
+ %85 = fadd float %81, %84 ; [#uses=1]
+ %86 = load float* %47, align 4 ; [#uses=2]
+ %87 = load float* %4, align 4 ; [#uses=1]
+ %88 = fmul float %86, %87 ; [#uses=1]
+ %89 = fadd float %85, %88 ; [#uses=2]
+ %90 = getelementptr inbounds %struct.btRaycastVehicle* %this, i32 0, i32 13 ; [#uses=1]
+ %91 = load %struct.btRigidBody** %90, align 4 ; [#uses=9]
+ %92 = getelementptr inbounds %struct.btRigidBody* %91, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %93 = load float* %92, align 4 ; [#uses=1]
+ %94 = fsub float %76, %93 ; [#uses=2]
+ %95 = getelementptr inbounds %struct.btRigidBody* %91, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %96 = load float* %95, align 4 ; [#uses=1]
+ %97 = fsub float %74, %96 ; [#uses=2]
+ %98 = getelementptr inbounds %struct.btRigidBody* %91, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %99 = load float* %98, align 4 ; [#uses=1]
+ %100 = fsub float %72, %99 ; [#uses=2]
+ %101 = getelementptr inbounds %struct.btRigidBody* %91, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %102 = load float* %101, align 4 ; [#uses=2]
+ %103 = getelementptr inbounds %struct.btRigidBody* %91, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %104 = load float* %103, align 4 ; [#uses=2]
+ %105 = getelementptr inbounds %struct.btRigidBody* %91, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %106 = load float* %105, align 4 ; [#uses=2]
+ %107 = fcmp ult float %89, 0xBFB99999A0000000 ; [#uses=1]
+ br i1 %107, label %bb14, label %bb13
+
+bb13: ; preds = %bb11
+ %108 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 22 ; [#uses=1]
+ store float 0.000000e+00, float* %108, align 4
+ %109 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 21 ; [#uses=1]
+ store float 1.000000e+01, float* %109, align 4
+ ret float %40
+
+bb14: ; preds = %bb11
+ %110 = getelementptr inbounds %struct.btRigidBody* %91, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.btRigidBody* %91, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %112 = fmul float %106, %97 ; [#uses=1]
+ %113 = fmul float %104, %94 ; [#uses=1]
+ %114 = fmul float %102, %94 ; [#uses=1]
+ %115 = fmul float %106, %100 ; [#uses=1]
+ %116 = load float* %110, align 4 ; [#uses=1]
+ %117 = load float* %111, align 4 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btRigidBody* %91, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %119 = fsub float %113, %112 ; [#uses=1]
+ %120 = fsub float %115, %114 ; [#uses=1]
+ %121 = fmul float %104, %100 ; [#uses=1]
+ %122 = fmul float %102, %97 ; [#uses=1]
+ %123 = fadd float %116, %119 ; [#uses=1]
+ %124 = fadd float %117, %120 ; [#uses=1]
+ %125 = load float* %118, align 4 ; [#uses=1]
+ %126 = fsub float %122, %121 ; [#uses=1]
+ %127 = fmul float %82, %124 ; [#uses=1]
+ %128 = fmul float %79, %123 ; [#uses=1]
+ %129 = fadd float %125, %126 ; [#uses=1]
+ %130 = fmul float %86, %129 ; [#uses=1]
+ %131 = fadd float %128, %127 ; [#uses=1]
+ %132 = fadd float %131, %130 ; [#uses=1]
+ %133 = fdiv float -1.000000e+00, %89 ; [#uses=2]
+ %134 = fmul float %132, %133 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 22 ; [#uses=1]
+ store float %134, float* %135, align 4
+ %136 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 21 ; [#uses=1]
+ store float %133, float* %136, align 4
+ ret float %40
+
+bb16: ; preds = %entry
+ %137 = call float @_ZNK11btWheelInfo23getSuspensionRestLengthEv(%struct.btWheelInfo* %wheel) ; [#uses=1]
+ %138 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %137, float* %138, align 4
+ %139 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 22 ; [#uses=1]
+ store float 0.000000e+00, float* %139, align 4
+ %140 = load float* %4, align 4 ; [#uses=1]
+ %141 = fsub float -0.000000e+00, %140 ; [#uses=1]
+ %142 = load float* %7, align 4 ; [#uses=1]
+ %143 = fsub float -0.000000e+00, %142 ; [#uses=1]
+ %144 = load float* %10, align 4 ; [#uses=1]
+ %145 = fsub float -0.000000e+00, %144 ; [#uses=1]
+ %146 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %145, float* %146, align 4
+ %147 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %143, float* %147, align 4
+ %148 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %141, float* %148, align 4
+ %149 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %149, align 4
+ %150 = getelementptr inbounds %struct.btWheelInfo* %wheel, i32 0, i32 21 ; [#uses=1]
+ store float 1.000000e+00, float* %150, align 4
+ ret float -1.000000e+00
+}
+
+; [#uses=7]
+define float @_ZNK11btWheelInfo23getSuspensionRestLengthEv(%struct.btWheelInfo* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 5 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ ret float %1
+}
+
+; [#uses=0]
+define void @_ZN11btWheelInfo11updateWheelERK11btRigidBodyRNS_11RaycastInfoE(%struct.btWheelInfo* nocapture %this, %struct.btRigidBody* nocapture %chassis, %"struct.btWheelInfo::RaycastInfo"* nocapture %raycastInfo) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 6 ; [#uses=1]
+ %1 = load i8* %0, align 4 ; [#uses=1]
+ %toBool = icmp eq i8 %1, 0 ; [#uses=1]
+ br i1 %toBool, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %2 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = fmul float %3, %5 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = fmul float %8, %10 ; [#uses=1]
+ %12 = fadd float %6, %11 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fmul float %14, %16 ; [#uses=1]
+ %18 = fadd float %12, %17 ; [#uses=2]
+ %19 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 1, i32 0, i32 2 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btRigidBody* %chassis, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fsub float %20, %22 ; [#uses=2]
+ %24 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 1, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btRigidBody* %chassis, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=1]
+ %28 = fsub float %25, %27 ; [#uses=2]
+ %29 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 1, i32 0, i32 0 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btRigidBody* %chassis, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 ; [#uses=1]
+ %32 = load float* %31, align 4 ; [#uses=1]
+ %33 = fsub float %30, %32 ; [#uses=2]
+ %34 = getelementptr inbounds %struct.btRigidBody* %chassis, i32 0, i32 3, i32 0, i32 0 ; [#uses=1]
+ %35 = load float* %34, align 4 ; [#uses=2]
+ %36 = getelementptr inbounds %struct.btRigidBody* %chassis, i32 0, i32 3, i32 0, i32 1 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=2]
+ %38 = getelementptr inbounds %struct.btRigidBody* %chassis, i32 0, i32 3, i32 0, i32 2 ; [#uses=1]
+ %39 = load float* %38, align 4 ; [#uses=2]
+ %40 = fcmp ult float %18, 0xBFB99999A0000000 ; [#uses=1]
+ br i1 %40, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ %41 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 22 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 21 ; [#uses=1]
+ store float 1.000000e+01, float* %42, align 4
+ ret void
+
+bb2: ; preds = %bb
+ %43 = getelementptr inbounds %struct.btRigidBody* %chassis, i32 0, i32 2, i32 0, i32 0 ; [#uses=1]
+ %44 = getelementptr inbounds %struct.btRigidBody* %chassis, i32 0, i32 2, i32 0, i32 1 ; [#uses=1]
+ %45 = fmul float %39, %28 ; [#uses=1]
+ %46 = fmul float %37, %23 ; [#uses=1]
+ %47 = fmul float %35, %23 ; [#uses=1]
+ %48 = fmul float %39, %33 ; [#uses=1]
+ %49 = load float* %43, align 4 ; [#uses=1]
+ %50 = load float* %44, align 4 ; [#uses=1]
+ %51 = getelementptr inbounds %struct.btRigidBody* %chassis, i32 0, i32 2, i32 0, i32 2 ; [#uses=1]
+ %52 = fsub float %46, %45 ; [#uses=1]
+ %53 = fsub float %48, %47 ; [#uses=1]
+ %54 = fmul float %37, %33 ; [#uses=1]
+ %55 = fmul float %35, %28 ; [#uses=1]
+ %56 = fadd float %49, %52 ; [#uses=1]
+ %57 = fadd float %50, %53 ; [#uses=1]
+ %58 = load float* %51, align 4 ; [#uses=1]
+ %59 = fsub float %55, %54 ; [#uses=1]
+ %60 = fmul float %8, %57 ; [#uses=1]
+ %61 = fmul float %3, %56 ; [#uses=1]
+ %62 = fadd float %58, %59 ; [#uses=1]
+ %63 = fmul float %14, %62 ; [#uses=1]
+ %64 = fadd float %61, %60 ; [#uses=1]
+ %65 = fadd float %64, %63 ; [#uses=1]
+ %66 = fdiv float -1.000000e+00, %18 ; [#uses=2]
+ %67 = fmul float %65, %66 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 22 ; [#uses=1]
+ store float %67, float* %68, align 4
+ %69 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 21 ; [#uses=1]
+ store float %66, float* %69, align 4
+ ret void
+
+bb4: ; preds = %entry
+ %70 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 5 ; [#uses=1]
+ %71 = load float* %70, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %71, float* %72, align 4
+ %73 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 22 ; [#uses=1]
+ store float 0.000000e+00, float* %73, align 4
+ %74 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 4, i32 0, i32 2 ; [#uses=1]
+ %75 = load float* %74, align 4 ; [#uses=1]
+ %76 = fsub float -0.000000e+00, %75 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 4, i32 0, i32 1 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ %79 = fsub float -0.000000e+00, %78 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 4, i32 0, i32 0 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ %82 = fsub float -0.000000e+00, %81 ; [#uses=1]
+ %83 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %82, float* %83, align 4
+ %84 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %79, float* %84, align 4
+ %85 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %76, float* %85, align 4
+ %86 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %86, align 4
+ %87 = getelementptr inbounds %struct.btWheelInfo* %this, i32 0, i32 21 ; [#uses=1]
+ store float 1.000000e+00, float* %87, align 4
+ ret void
+}
+
+; [#uses=2]
+define internal i8* @_ZL21btAlignedAllocDefaultji(i32 %size, i32 %alignment) inlinehint {
+entry:
+ %0 = load i8* (i32)** @_ZL10sAllocFunc, align 4 ; [#uses=1]
+ %1 = add i32 %size, 3 ; [#uses=1]
+ %2 = add i32 %1, %alignment ; [#uses=1]
+ %3 = tail call i8* %0(i32 %2) ; [#uses=6]
+ %4 = icmp eq i8* %3, null ; [#uses=1]
+ br i1 %4, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %5 = getelementptr inbounds i8* %3, i32 4 ; [#uses=1]
+ %6 = ptrtoint i8* %5 to i32 ; [#uses=1]
+ %7 = sub i32 %alignment, %6 ; [#uses=1]
+ %8 = add nsw i32 %alignment, -1 ; [#uses=1]
+ %9 = and i32 %7, %8 ; [#uses=2]
+ %.sum = add i32 %9, 4 ; [#uses=1]
+ %10 = getelementptr inbounds i8* %3, i32 %.sum ; [#uses=1]
+ %11 = getelementptr inbounds i8* %3, i32 %9 ; [#uses=1]
+ %12 = bitcast i8* %11 to i8** ; [#uses=1]
+ store i8* %3, i8** %12, align 4
+ ret i8* %10
+
+bb2: ; preds = %entry
+ ret i8* %3
+}
+
+; [#uses=2]
+define internal noalias i8* @_ZL14btAllocDefaultj(i32 %size) nounwind {
+entry:
+ %0 = tail call noalias i8* @malloc(i32 %size) nounwind ; [#uses=1]
+ ret i8* %0
+}
+
+; [#uses=2]
+define internal void @_ZL20btAlignedFreeDefaultPv(i8* %ptr) inlinehint {
+entry:
+ %0 = icmp eq i8* %ptr, null ; [#uses=1]
+ br i1 %0, label %return, label %bb
+
+bb: ; preds = %entry
+ %1 = getelementptr inbounds i8* %ptr, i32 -4 ; [#uses=1]
+ %2 = bitcast i8* %1 to i8** ; [#uses=1]
+ %3 = load i8** %2, align 4 ; [#uses=1]
+ %4 = load void (i8*)** @_ZL9sFreeFunc, align 4 ; [#uses=1]
+ tail call void %4(i8* %3)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=2]
+define internal void @_ZL13btFreeDefaultPv(i8* nocapture %ptr) nounwind {
+entry:
+ tail call void @free(i8* %ptr) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_Z30btAlignedAllocSetCustomAlignedPFPvjiEPFvS_E(i8* (i32, i32)* %allocFunc, void (i8*)* %freeFunc) nounwind {
+entry:
+ %0 = icmp eq i8* (i32, i32)* %allocFunc, null ; [#uses=1]
+ %iftmp.19.0 = select i1 %0, i8* (i32, i32)* @_ZL21btAlignedAllocDefaultji, i8* (i32, i32)* %allocFunc ; [#uses=1]
+ store i8* (i32, i32)* %iftmp.19.0, i8* (i32, i32)** @_ZL17sAlignedAllocFunc, align 4
+ %1 = icmp eq void (i8*)* %freeFunc, null ; [#uses=1]
+ %iftmp.20.0 = select i1 %1, void (i8*)* @_ZL20btAlignedFreeDefaultPv, void (i8*)* %freeFunc ; [#uses=1]
+ store void (i8*)* %iftmp.20.0, void (i8*)** @_ZL16sAlignedFreeFunc, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_Z23btAlignedAllocSetCustomPFPvjEPFvS_E(i8* (i32)* %allocFunc, void (i8*)* %freeFunc) nounwind {
+entry:
+ %0 = icmp eq i8* (i32)* %allocFunc, null ; [#uses=1]
+ %iftmp.21.0 = select i1 %0, i8* (i32)* @_ZL14btAllocDefaultj, i8* (i32)* %allocFunc ; [#uses=1]
+ store i8* (i32)* %iftmp.21.0, i8* (i32)** @_ZL10sAllocFunc, align 4
+ %1 = icmp eq void (i8*)* %freeFunc, null ; [#uses=1]
+ %iftmp.22.0 = select i1 %1, void (i8*)* @_ZL13btFreeDefaultPv, void (i8*)* %freeFunc ; [#uses=1]
+ store void (i8*)* %iftmp.22.0, void (i8*)** @_ZL9sFreeFunc, align 4
+ ret void
+}
+
+; [#uses=186]
+define i8* @_Z22btAlignedAllocInternalji(i32 %size, i32 %alignment) {
+entry:
+ %0 = load i32* @gNumAlignedAllocs, align 4 ; [#uses=1]
+ %1 = add nsw i32 %0, 1 ; [#uses=1]
+ store i32 %1, i32* @gNumAlignedAllocs, align 4
+ %2 = load i8* (i32, i32)** @_ZL17sAlignedAllocFunc, align 4 ; [#uses=1]
+ %3 = tail call i8* %2(i32 %size, i32 %alignment) ; [#uses=1]
+ ret i8* %3
+}
+
+; [#uses=651]
+define void @_Z21btAlignedFreeInternalPv(i8* %ptr) {
+entry:
+ %0 = icmp eq i8* %ptr, null ; [#uses=1]
+ br i1 %0, label %return, label %bb
+
+bb: ; preds = %entry
+ %1 = load i32* @gNumAlignedFree, align 4 ; [#uses=1]
+ %2 = add nsw i32 %1, 1 ; [#uses=1]
+ store i32 %2, i32* @gNumAlignedFree, align 4
+ %3 = load void (i8*)** @_ZL16sAlignedFreeFunc, align 4 ; [#uses=1]
+ tail call void %3(i8* %ptr)
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_Z22ThreePlaneIntersectionRK7btPlaneS1_S1_(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btPlane* nocapture %p0, %struct.btPlane* nocapture %p1, %struct.btPlane* nocapture %p2) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btPlane* %p0, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=5]
+ %2 = getelementptr inbounds %struct.btPlane* %p0, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=5]
+ %4 = getelementptr inbounds %struct.btPlane* %p0, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=5]
+ %6 = getelementptr inbounds %struct.btPlane* %p1, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=4]
+ %8 = getelementptr inbounds %struct.btPlane* %p1, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=4]
+ %10 = getelementptr inbounds %struct.btPlane* %p1, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=4]
+ %12 = getelementptr inbounds %struct.btPlane* %p2, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=4]
+ %14 = getelementptr inbounds %struct.btPlane* %p2, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=4]
+ %16 = getelementptr inbounds %struct.btPlane* %p2, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=4]
+ %18 = fmul float %7, %15 ; [#uses=1]
+ %19 = fmul float %9, %13 ; [#uses=1]
+ %20 = fsub float %18, %19 ; [#uses=2]
+ %21 = fmul float %11, %13 ; [#uses=1]
+ %22 = fmul float %7, %17 ; [#uses=1]
+ %23 = fsub float %21, %22 ; [#uses=2]
+ %24 = fmul float %9, %17 ; [#uses=1]
+ %25 = fmul float %11, %15 ; [#uses=1]
+ %26 = fsub float %24, %25 ; [#uses=2]
+ %27 = fmul float %13, %3 ; [#uses=1]
+ %28 = fmul float %15, %1 ; [#uses=1]
+ %29 = fsub float %27, %28 ; [#uses=1]
+ %30 = fmul float %17, %1 ; [#uses=1]
+ %31 = fmul float %13, %5 ; [#uses=1]
+ %32 = fsub float %30, %31 ; [#uses=1]
+ %33 = fmul float %15, %5 ; [#uses=1]
+ %34 = fmul float %17, %3 ; [#uses=1]
+ %35 = fsub float %33, %34 ; [#uses=1]
+ %36 = fmul float %1, %9 ; [#uses=1]
+ %37 = fmul float %3, %7 ; [#uses=1]
+ %38 = fsub float %36, %37 ; [#uses=1]
+ %39 = fmul float %5, %7 ; [#uses=1]
+ %40 = fmul float %1, %11 ; [#uses=1]
+ %41 = fsub float %39, %40 ; [#uses=1]
+ %42 = fmul float %3, %11 ; [#uses=1]
+ %43 = fmul float %5, %9 ; [#uses=1]
+ %44 = fsub float %42, %43 ; [#uses=1]
+ %45 = fmul float %1, %26 ; [#uses=1]
+ %46 = fmul float %3, %23 ; [#uses=1]
+ %47 = fadd float %45, %46 ; [#uses=1]
+ %48 = fmul float %5, %20 ; [#uses=1]
+ %49 = fadd float %47, %48 ; [#uses=1]
+ %50 = fdiv float -1.000000e+00, %49 ; [#uses=3]
+ %51 = getelementptr inbounds %struct.btPlane* %p0, i32 0, i32 1 ; [#uses=1]
+ %52 = load float* %51, align 4 ; [#uses=3]
+ %53 = fmul float %26, %52 ; [#uses=1]
+ %54 = fmul float %23, %52 ; [#uses=1]
+ %55 = fmul float %20, %52 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btPlane* %p1, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=3]
+ %58 = fmul float %35, %57 ; [#uses=1]
+ %59 = fmul float %32, %57 ; [#uses=1]
+ %60 = fmul float %29, %57 ; [#uses=1]
+ %61 = getelementptr inbounds %struct.btPlane* %p2, i32 0, i32 1 ; [#uses=1]
+ %62 = load float* %61, align 4 ; [#uses=3]
+ %63 = fmul float %44, %62 ; [#uses=1]
+ %64 = fmul float %41, %62 ; [#uses=1]
+ %65 = fmul float %38, %62 ; [#uses=1]
+ %66 = fadd float %53, %58 ; [#uses=1]
+ %67 = fadd float %54, %59 ; [#uses=1]
+ %68 = fadd float %55, %60 ; [#uses=1]
+ %69 = fadd float %66, %63 ; [#uses=1]
+ %70 = fadd float %67, %64 ; [#uses=1]
+ %71 = fadd float %68, %65 ; [#uses=1]
+ %72 = fmul float %69, %50 ; [#uses=1]
+ %73 = fmul float %70, %50 ; [#uses=1]
+ %74 = fmul float %71, %50 ; [#uses=1]
+ %75 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %72, float* %75, align 4
+ %76 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %73, float* %76, align 4
+ %77 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %74, float* %77, align 4
+ %78 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %78, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_Z12PlaneProjectRK7btPlaneRK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btPlane* nocapture %plane, %struct.btQuadWord* nocapture %point) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btPlane* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btPlane* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btPlane* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btPlane* %plane, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fadd float %16, %18 ; [#uses=3]
+ %20 = fmul float %14, %19 ; [#uses=1]
+ %21 = fmul float %8, %19 ; [#uses=1]
+ %22 = fmul float %3, %19 ; [#uses=1]
+ %23 = fsub float %12, %20 ; [#uses=1]
+ %24 = fsub float %6, %21 ; [#uses=1]
+ %25 = fsub float %1, %22 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %25, float* %26, align 4
+ %27 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %24, float* %27, align 4
+ %28 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %23, float* %28, align 4
+ %29 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %29, align 4
+ ret void
+}
+
+; [#uses=0]
+define i32 @_Z9PlaneTestRK7btPlaneRK9btVector3(%struct.btPlane* nocapture %p, %struct.btQuadWord* nocapture %v) nounwind readonly {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btPlane* %p, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fmul float %1, %3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btPlane* %p, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = fmul float %6, %8 ; [#uses=1]
+ %10 = fadd float %4, %9 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 2 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btPlane* %p, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=1]
+ %15 = fmul float %12, %14 ; [#uses=1]
+ %16 = fadd float %10, %15 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btPlane* %p, i32 0, i32 1 ; [#uses=1]
+ %18 = load float* %17, align 4 ; [#uses=1]
+ %19 = fadd float %16, %18 ; [#uses=2]
+ %20 = load float* @planetestepsilon, align 4 ; [#uses=2]
+ %21 = fcmp ule float %19, %20 ; [#uses=1]
+ br i1 %21, label %bb, label %bb5
+
+bb: ; preds = %entry
+ %22 = fsub float -0.000000e+00, %20 ; [#uses=1]
+ %23 = fcmp olt float %19, %22 ; [#uses=1]
+ %iftmp.49.0 = zext i1 %23 to i32 ; [#uses=1]
+ ret i32 %iftmp.49.0
+
+bb5: ; preds = %entry
+ ret i32 2
+}
+
+; [#uses=0]
+define i32 @_ZeqRK4int3S1_(%struct.int3* nocapture %a, %struct.int3* nocapture %b) nounwind readonly {
+entry:
+ %b7 = bitcast %struct.int3* %b to i8* ; [#uses=1]
+ %a9 = bitcast %struct.int3* %a to i8* ; [#uses=1]
+ br label %bb3
+
+bb: ; preds = %bb3
+ %uglygep10 = getelementptr i8* %a9, i32 %tmp ; [#uses=1]
+ %uglygep = getelementptr i8* %b7, i32 %tmp ; [#uses=1]
+ %uglygep1011 = bitcast i8* %uglygep10 to i32* ; [#uses=1]
+ %uglygep8 = bitcast i8* %uglygep to i32* ; [#uses=1]
+ %0 = load i32* %uglygep1011, align 4 ; [#uses=1]
+ %1 = load i32* %uglygep8, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %0, %1 ; [#uses=1]
+ br i1 %2, label %bb2, label %bb5
+
+bb2: ; preds = %bb
+ %3 = add nsw i32 %4, 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %entry
+ %4 = phi i32 [ 0, %entry ], [ %3, %bb2 ] ; [#uses=3]
+ %tmp = shl i32 %4, 2 ; [#uses=2]
+ %5 = icmp slt i32 %4, 3 ; [#uses=1]
+ br i1 %5, label %bb, label %bb5
+
+bb5: ; preds = %bb3, %bb
+ %.0 = phi i32 [ 0, %bb ], [ 1, %bb3 ] ; [#uses=1]
+ ret i32 %.0
+}
+
+; [#uses=0]
+define i32 @_Z7hasedgeRK4int3ii(%struct.int3* nocapture %t, i32 %a, i32 %b) nounwind readonly {
+entry:
+ %t11 = bitcast %struct.int3* %t to i8* ; [#uses=1]
+ %0 = getelementptr inbounds %struct.int3* %t, i32 0, i32 0 ; [#uses=1]
+ br label %bb7
+
+bb: ; preds = %bb7
+ %tmp12 = shl i32 %7, 2 ; [#uses=1]
+ %uglygep = getelementptr i8* %t11, i32 %tmp12 ; [#uses=1]
+ %uglygep13 = bitcast i8* %uglygep to i32* ; [#uses=1]
+ %1 = load i32* %uglygep13, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, %a ; [#uses=1]
+ br i1 %2, label %bb1, label %bb7
+
+bb1: ; preds = %bb
+ %3 = srem i32 %tmp, 3 ; [#uses=1]
+ %4 = getelementptr inbounds i32* %0, i32 %3 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp eq i32 %5, %b ; [#uses=1]
+ br i1 %6, label %bb9, label %bb7
+
+bb7: ; preds = %bb1, %bb, %entry
+ %7 = phi i32 [ 0, %entry ], [ %tmp, %bb1 ], [ %tmp, %bb ] ; [#uses=3]
+ %tmp = add i32 %7, 1 ; [#uses=3]
+ %8 = icmp slt i32 %7, 3 ; [#uses=1]
+ br i1 %8, label %bb, label %bb9
+
+bb9: ; preds = %bb7, %bb1
+ %.0 = phi i32 [ 1, %bb1 ], [ 0, %bb7 ] ; [#uses=1]
+ ret i32 %.0
+}
+
+; [#uses=0]
+define i32 @_Z7hasvertRK4int3i(%struct.int3* nocapture %t, i32 %v) nounwind readonly {
+entry:
+ %0 = getelementptr inbounds %struct.int3* %t, i32 0, i32 0 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, %v ; [#uses=1]
+ br i1 %2, label %bb4, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds i32* %0, i32 1 ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %5 = icmp eq i32 %4, %v ; [#uses=1]
+ br i1 %5, label %bb4, label %bb1
+
+bb1: ; preds = %bb
+ %6 = getelementptr inbounds i32* %0, i32 2 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = icmp eq i32 %7, %v ; [#uses=1]
+ %retval = zext i1 %8 to i32 ; [#uses=1]
+ ret i32 %retval
+
+bb4: ; preds = %bb, %entry
+ ret i32 1
+}
+
+; [#uses=0]
+define i32 @_Z9shareedgeRK4int3S1_(%struct.int3* nocapture %a, %struct.int3* nocapture %b) nounwind readonly {
+entry:
+ %t11.i = bitcast %struct.int3* %a to i8* ; [#uses=1]
+ %b10 = bitcast %struct.int3* %b to i8* ; [#uses=1]
+ %0 = getelementptr inbounds %struct.int3* %b, i32 0, i32 0 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.int3* %a, i32 0, i32 0 ; [#uses=1]
+ br label %bb3
+
+bb: ; preds = %bb3
+ %tmp11 = shl i32 %14, 2 ; [#uses=1]
+ %uglygep12 = getelementptr i8* %b10, i32 %tmp11 ; [#uses=1]
+ %uglygep1213 = bitcast i8* %uglygep12 to i32* ; [#uses=1]
+ %tmp9 = add i32 %14, 1 ; [#uses=2]
+ %2 = srem i32 %tmp9, 3 ; [#uses=1]
+ %3 = load i32* %uglygep1213, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds i32* %0, i32 %2 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ br label %bb7.i
+
+bb.i: ; preds = %bb7.i
+ %tmp = shl i32 %12, 2 ; [#uses=1]
+ %uglygep = getelementptr i8* %t11.i, i32 %tmp ; [#uses=1]
+ %uglygep13.i = bitcast i8* %uglygep to i32* ; [#uses=1]
+ %6 = load i32* %uglygep13.i, align 4 ; [#uses=1]
+ %7 = icmp eq i32 %6, %5 ; [#uses=1]
+ br i1 %7, label %bb1.i, label %bb7.i
+
+bb1.i: ; preds = %bb.i
+ %8 = srem i32 %tmp.i, 3 ; [#uses=1]
+ %9 = getelementptr inbounds i32* %1, i32 %8 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = icmp eq i32 %10, %3 ; [#uses=1]
+ br i1 %11, label %bb5, label %bb7.i
+
+bb7.i: ; preds = %bb1.i, %bb.i, %bb
+ %12 = phi i32 [ 0, %bb ], [ %tmp.i, %bb.i ], [ %tmp.i, %bb1.i ] ; [#uses=3]
+ %tmp.i = add i32 %12, 1 ; [#uses=3]
+ %13 = icmp slt i32 %12, 3 ; [#uses=1]
+ br i1 %13, label %bb.i, label %bb3
+
+bb3: ; preds = %bb7.i, %entry
+ %14 = phi i32 [ 0, %entry ], [ %tmp9, %bb7.i ] ; [#uses=3]
+ %15 = icmp slt i32 %14, 3 ; [#uses=1]
+ br i1 %15, label %bb, label %bb5
+
+bb5: ; preds = %bb3, %bb1.i
+ %.0 = phi i32 [ 1, %bb1.i ], [ 0, %bb3 ] ; [#uses=1]
+ ret i32 %.0
+}
+
+; [#uses=0]
+define i32* @_ZN14btHullTriangle4neibEii(%struct.btHullTriangle* %this, i32 %a, i32 %b) nounwind readonly align 2 {
+entry:
+ %this21 = bitcast %struct.btHullTriangle* %this to i8* ; [#uses=1]
+ %0 = getelementptr inbounds %struct.btHullTriangle* %this, i32 0, i32 0, i32 0 ; [#uses=2]
+ br label %bb14
+
+bb: ; preds = %bb14
+ %tmp22 = shl i32 %16, 2 ; [#uses=1]
+ %uglygep = getelementptr i8* %this21, i32 %tmp22 ; [#uses=1]
+ %uglygep23 = bitcast i8* %uglygep to i32* ; [#uses=1]
+ %tmp20 = add i32 %16, 1 ; [#uses=3]
+ %tmp = add i32 %16, 2 ; [#uses=1]
+ %1 = srem i32 %tmp20, 3 ; [#uses=2]
+ %2 = srem i32 %tmp, 3 ; [#uses=2]
+ %3 = load i32* %uglygep23, align 4 ; [#uses=2]
+ %4 = icmp eq i32 %3, %a ; [#uses=1]
+ br i1 %4, label %bb1, label %bb3
+
+bb1: ; preds = %bb
+ %5 = getelementptr inbounds i32* %0, i32 %1 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = icmp eq i32 %6, %b ; [#uses=1]
+ br i1 %7, label %bb5, label %bb3
+
+bb3: ; preds = %bb1, %bb
+ %8 = icmp eq i32 %3, %b ; [#uses=1]
+ br i1 %8, label %bb7, label %bb14
+
+bb5: ; preds = %bb1
+ %9 = getelementptr inbounds %struct.btHullTriangle* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %10 = getelementptr inbounds i32* %9, i32 %2 ; [#uses=1]
+ ret i32* %10
+
+bb7: ; preds = %bb3
+ %11 = getelementptr inbounds i32* %0, i32 %1 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %13 = icmp eq i32 %12, %a ; [#uses=1]
+ br i1 %13, label %bb12, label %bb14
+
+bb12: ; preds = %bb7
+ %14 = getelementptr inbounds %struct.btHullTriangle* %this, i32 0, i32 1, i32 0 ; [#uses=1]
+ %15 = getelementptr inbounds i32* %14, i32 %2 ; [#uses=1]
+ ret i32* %15
+
+bb14: ; preds = %bb7, %bb3, %entry
+ %16 = phi i32 [ 0, %entry ], [ %tmp20, %bb7 ], [ %tmp20, %bb3 ] ; [#uses=4]
+ %17 = icmp slt i32 %16, 3 ; [#uses=1]
+ br i1 %17, label %bb, label %bb16
+
+bb16: ; preds = %bb14
+ ret i32* @_ZZN14btHullTriangle4neibEiiE2er
+}
+
+; [#uses=0]
+define void @_ZN11HullLibrary7checkitEP14btHullTriangle(%struct.HullLibrary* nocapture %this, %struct.btHullTriangle* nocapture %t) nounwind readnone align 2 {
+return:
+ ret void
+}
+
+; [#uses=0]
+define float @_Z7GetDistfffPKf(float %px, float %py, float %pz, float* nocapture %p2) nounwind readonly {
+entry:
+ %0 = load float* %p2, align 4 ; [#uses=1]
+ %1 = fsub float %px, %0 ; [#uses=2]
+ %2 = getelementptr inbounds float* %p2, i32 1 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=1]
+ %4 = fsub float %py, %3 ; [#uses=2]
+ %5 = getelementptr inbounds float* %p2, i32 2 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = fsub float %pz, %6 ; [#uses=2]
+ %8 = fmul float %1, %1 ; [#uses=1]
+ %9 = fmul float %4, %4 ; [#uses=1]
+ %10 = fadd float %8, %9 ; [#uses=1]
+ %11 = fmul float %7, %7 ; [#uses=1]
+ %12 = fadd float %10, %11 ; [#uses=1]
+ ret float %12
+}
+
+; [#uses=0]
+define i32 @_Z9SplitTestR7ConvexHRK7btPlane(%struct.ConvexH* nocapture %convex, %struct.btPlane* nocapture %plane) nounwind readonly {
+entry:
+ %0 = getelementptr inbounds %struct.ConvexH* %convex, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=3]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %bb2
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.ConvexH* %convex, i32 0, i32 0, i32 3 ; [#uses=1]
+ %4 = load %struct.btQuadWord** %3, align 4 ; [#uses=3]
+ %5 = getelementptr inbounds %struct.btPlane* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btPlane* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btPlane* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btPlane* %plane, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = load float* @planetestepsilon, align 4 ; [#uses=2]
+ %14 = fsub float -0.000000e+00, %13 ; [#uses=1]
+ %tmp = icmp sgt i32 %1, 1 ; [#uses=1]
+ %smax = select i1 %tmp, i32 %1, i32 1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %_Z9PlaneTestRK7btPlaneRK9btVector3.exit, %bb.nph
+ %i.05 = phi i32 [ 0, %bb.nph ], [ %28, %_Z9PlaneTestRK7btPlaneRK9btVector3.exit ] ; [#uses=4]
+ %flag.04 = phi i32 [ 0, %bb.nph ], [ %27, %_Z9PlaneTestRK7btPlaneRK9btVector3.exit ] ; [#uses=1]
+ %scevgep6 = getelementptr inbounds %struct.btQuadWord* %4, i32 %i.05, i32 0, i32 0 ; [#uses=1]
+ %scevgep7 = getelementptr %struct.btQuadWord* %4, i32 %i.05, i32 0, i32 1 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btQuadWord* %4, i32 %i.05, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %scevgep6, align 4 ; [#uses=1]
+ %16 = fmul float %15, %6 ; [#uses=1]
+ %17 = load float* %scevgep7, align 4 ; [#uses=1]
+ %18 = fmul float %17, %8 ; [#uses=1]
+ %19 = fadd float %16, %18 ; [#uses=1]
+ %20 = load float* %scevgep8, align 4 ; [#uses=1]
+ %21 = fmul float %20, %10 ; [#uses=1]
+ %22 = fadd float %19, %21 ; [#uses=1]
+ %23 = fadd float %22, %12 ; [#uses=2]
+ %24 = fcmp ule float %23, %13 ; [#uses=1]
+ br i1 %24, label %bb.i, label %_Z9PlaneTestRK7btPlaneRK9btVector3.exit
+
+bb.i: ; preds = %bb
+ %25 = fcmp olt float %23, %14 ; [#uses=1]
+ %iftmp.49.0.i = zext i1 %25 to i32 ; [#uses=1]
+ br label %_Z9PlaneTestRK7btPlaneRK9btVector3.exit
+
+_Z9PlaneTestRK7btPlaneRK9btVector3.exit: ; preds = %bb.i, %bb
+ %26 = phi i32 [ %iftmp.49.0.i, %bb.i ], [ 2, %bb ] ; [#uses=1]
+ %27 = or i32 %26, %flag.04 ; [#uses=2]
+ %28 = add nsw i32 %i.05, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %28, %smax ; [#uses=1]
+ br i1 %exitcond, label %bb2, label %bb
+
+bb2: ; preds = %_Z9PlaneTestRK7btPlaneRK9btVector3.exit, %entry
+ %flag.0.lcssa = phi i32 [ 0, %entry ], [ %27, %_Z9PlaneTestRK7btPlaneRK9btVector3.exit ] ; [#uses=1]
+ ret i32 %flag.0.lcssa
+}
+
+; [#uses=4]
+define void @_ZN11HullLibrary6b2bfixEP14btHullTriangleS1_(%struct.HullLibrary* nocapture %this, %struct.btHullTriangle* nocapture %s, %struct.btHullTriangle* nocapture %t) nounwind align 2 {
+bb.nph:
+ %this21.i63 = bitcast %struct.btHullTriangle* %s to i8* ; [#uses=2]
+ %this21.i33 = bitcast %struct.btHullTriangle* %t to i8* ; [#uses=2]
+ %0 = getelementptr inbounds %struct.btHullTriangle* %s, i32 0, i32 0, i32 0 ; [#uses=6]
+ %1 = getelementptr inbounds %struct.btHullTriangle* %s, i32 0, i32 1, i32 0 ; [#uses=4]
+ %2 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 3 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btHullTriangle* %t, i32 0, i32 0, i32 0 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btHullTriangle* %t, i32 0, i32 1, i32 0 ; [#uses=4]
+ br label %bb
+
+bb: ; preds = %_ZN14btHullTriangle4neibEii.exit, %bb.nph
+ %i.089 = phi i32 [ 0, %bb.nph ], [ %5, %_ZN14btHullTriangle4neibEii.exit ] ; [#uses=2]
+ %tmp129 = add i32 %i.089, 2 ; [#uses=1]
+ %5 = add nsw i32 %i.089, 1 ; [#uses=3]
+ %tmp127 = icmp eq i32 %5, 3 ; [#uses=2]
+ %tmp128 = select i1 %tmp127, i32 0, i32 %5 ; [#uses=1]
+ %6 = srem i32 %tmp129, 3 ; [#uses=1]
+ %7 = getelementptr inbounds i32* %0, i32 %tmp128 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=12]
+ %9 = getelementptr inbounds i32* %0, i32 %6 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=12]
+ br label %bb14.i75
+
+bb.i69: ; preds = %bb14.i75
+ %tmp = shl i32 %24, 2 ; [#uses=1]
+ %uglygep = getelementptr i8* %this21.i63, i32 %tmp ; [#uses=1]
+ %uglygep23.i66 = bitcast i8* %uglygep to i32* ; [#uses=1]
+ %tmp20.i67 = add i32 %24, 1 ; [#uses=3]
+ %tmp.i68 = add i32 %24, 2 ; [#uses=1]
+ %11 = srem i32 %tmp20.i67, 3 ; [#uses=2]
+ %12 = srem i32 %tmp.i68, 3 ; [#uses=2]
+ %13 = load i32* %uglygep23.i66, align 4 ; [#uses=2]
+ %14 = icmp eq i32 %13, %8 ; [#uses=1]
+ br i1 %14, label %bb1.i70, label %bb3.i71
+
+bb1.i70: ; preds = %bb.i69
+ %15 = getelementptr inbounds i32* %0, i32 %11 ; [#uses=1]
+ %16 = load i32* %15, align 4 ; [#uses=1]
+ %17 = icmp eq i32 %16, %10 ; [#uses=1]
+ br i1 %17, label %bb5.i72, label %bb3.i71
+
+bb3.i71: ; preds = %bb1.i70, %bb.i69
+ %18 = icmp eq i32 %13, %10 ; [#uses=1]
+ br i1 %18, label %bb7.i73, label %bb14.i75
+
+bb5.i72: ; preds = %bb1.i70
+ %19 = getelementptr inbounds i32* %1, i32 %12 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit77
+
+bb7.i73: ; preds = %bb3.i71
+ %20 = getelementptr inbounds i32* %0, i32 %11 ; [#uses=1]
+ %21 = load i32* %20, align 4 ; [#uses=1]
+ %22 = icmp eq i32 %21, %8 ; [#uses=1]
+ br i1 %22, label %bb12.i74, label %bb14.i75
+
+bb12.i74: ; preds = %bb7.i73
+ %23 = getelementptr inbounds i32* %1, i32 %12 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit77
+
+bb14.i75: ; preds = %bb7.i73, %bb3.i71, %bb
+ %24 = phi i32 [ 0, %bb ], [ %tmp20.i67, %bb3.i71 ], [ %tmp20.i67, %bb7.i73 ] ; [#uses=4]
+ %25 = icmp slt i32 %24, 3 ; [#uses=1]
+ br i1 %25, label %bb.i69, label %_ZN14btHullTriangle4neibEii.exit77
+
+_ZN14btHullTriangle4neibEii.exit77: ; preds = %bb14.i75, %bb12.i74, %bb5.i72
+ %26 = phi i32* [ %23, %bb12.i74 ], [ %19, %bb5.i72 ], [ @_ZZN14btHullTriangle4neibEiiE2er, %bb14.i75 ] ; [#uses=1]
+ %27 = load i32* %26, align 4 ; [#uses=1]
+ %28 = load %struct.btHullTriangle*** %2, align 4 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btHullTriangle** %28, i32 %27 ; [#uses=1]
+ %30 = load %struct.btHullTriangle** %29, align 4 ; [#uses=4]
+ %this21.i48 = bitcast %struct.btHullTriangle* %30 to i8* ; [#uses=1]
+ %31 = getelementptr inbounds %struct.btHullTriangle* %30, i32 0, i32 0, i32 0 ; [#uses=2]
+ br label %bb14.i60
+
+bb.i54: ; preds = %bb14.i60
+ %tmp96 = shl i32 %47, 2 ; [#uses=1]
+ %uglygep97 = getelementptr i8* %this21.i48, i32 %tmp96 ; [#uses=1]
+ %uglygep23.i51 = bitcast i8* %uglygep97 to i32* ; [#uses=1]
+ %tmp20.i52 = add i32 %47, 1 ; [#uses=3]
+ %tmp.i53 = add i32 %47, 2 ; [#uses=1]
+ %32 = srem i32 %tmp20.i52, 3 ; [#uses=2]
+ %33 = srem i32 %tmp.i53, 3 ; [#uses=2]
+ %34 = load i32* %uglygep23.i51, align 4 ; [#uses=2]
+ %35 = icmp eq i32 %34, %10 ; [#uses=1]
+ br i1 %35, label %bb1.i55, label %bb3.i56
+
+bb1.i55: ; preds = %bb.i54
+ %36 = getelementptr inbounds i32* %31, i32 %32 ; [#uses=1]
+ %37 = load i32* %36, align 4 ; [#uses=1]
+ %38 = icmp eq i32 %37, %8 ; [#uses=1]
+ br i1 %38, label %bb5.i57, label %bb3.i56
+
+bb3.i56: ; preds = %bb1.i55, %bb.i54
+ %39 = icmp eq i32 %34, %8 ; [#uses=1]
+ br i1 %39, label %bb7.i58, label %bb14.i60
+
+bb5.i57: ; preds = %bb1.i55
+ %40 = getelementptr inbounds %struct.btHullTriangle* %30, i32 0, i32 1, i32 0 ; [#uses=1]
+ %41 = getelementptr inbounds i32* %40, i32 %33 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit62
+
+bb7.i58: ; preds = %bb3.i56
+ %42 = getelementptr inbounds i32* %31, i32 %32 ; [#uses=1]
+ %43 = load i32* %42, align 4 ; [#uses=1]
+ %44 = icmp eq i32 %43, %10 ; [#uses=1]
+ br i1 %44, label %bb12.i59, label %bb14.i60
+
+bb12.i59: ; preds = %bb7.i58
+ %45 = getelementptr inbounds %struct.btHullTriangle* %30, i32 0, i32 1, i32 0 ; [#uses=1]
+ %46 = getelementptr inbounds i32* %45, i32 %33 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit62
+
+bb14.i60: ; preds = %bb7.i58, %bb3.i56, %_ZN14btHullTriangle4neibEii.exit77
+ %47 = phi i32 [ 0, %_ZN14btHullTriangle4neibEii.exit77 ], [ %tmp20.i52, %bb3.i56 ], [ %tmp20.i52, %bb7.i58 ] ; [#uses=4]
+ %48 = icmp slt i32 %47, 3 ; [#uses=1]
+ br i1 %48, label %bb.i54, label %_ZN14btHullTriangle4neibEii.exit62
+
+_ZN14btHullTriangle4neibEii.exit62: ; preds = %bb14.i60, %bb12.i59, %bb5.i57
+ %49 = phi i32* [ %46, %bb12.i59 ], [ %41, %bb5.i57 ], [ @_ZZN14btHullTriangle4neibEiiE2er, %bb14.i60 ] ; [#uses=1]
+ br label %bb14.i45
+
+bb.i39: ; preds = %bb14.i45
+ %tmp103 = shl i32 %63, 2 ; [#uses=1]
+ %uglygep104 = getelementptr i8* %this21.i33, i32 %tmp103 ; [#uses=1]
+ %uglygep23.i36 = bitcast i8* %uglygep104 to i32* ; [#uses=1]
+ %tmp20.i37 = add i32 %63, 1 ; [#uses=3]
+ %tmp.i38 = add i32 %63, 2 ; [#uses=1]
+ %50 = srem i32 %tmp20.i37, 3 ; [#uses=2]
+ %51 = srem i32 %tmp.i38, 3 ; [#uses=2]
+ %52 = load i32* %uglygep23.i36, align 4 ; [#uses=2]
+ %53 = icmp eq i32 %52, %10 ; [#uses=1]
+ br i1 %53, label %bb1.i40, label %bb3.i41
+
+bb1.i40: ; preds = %bb.i39
+ %54 = getelementptr inbounds i32* %3, i32 %50 ; [#uses=1]
+ %55 = load i32* %54, align 4 ; [#uses=1]
+ %56 = icmp eq i32 %55, %8 ; [#uses=1]
+ br i1 %56, label %bb5.i42, label %bb3.i41
+
+bb3.i41: ; preds = %bb1.i40, %bb.i39
+ %57 = icmp eq i32 %52, %8 ; [#uses=1]
+ br i1 %57, label %bb7.i43, label %bb14.i45
+
+bb5.i42: ; preds = %bb1.i40
+ %58 = getelementptr inbounds i32* %4, i32 %51 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit47
+
+bb7.i43: ; preds = %bb3.i41
+ %59 = getelementptr inbounds i32* %3, i32 %50 ; [#uses=1]
+ %60 = load i32* %59, align 4 ; [#uses=1]
+ %61 = icmp eq i32 %60, %10 ; [#uses=1]
+ br i1 %61, label %bb12.i44, label %bb14.i45
+
+bb12.i44: ; preds = %bb7.i43
+ %62 = getelementptr inbounds i32* %4, i32 %51 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit47
+
+bb14.i45: ; preds = %bb7.i43, %bb3.i41, %_ZN14btHullTriangle4neibEii.exit62
+ %63 = phi i32 [ 0, %_ZN14btHullTriangle4neibEii.exit62 ], [ %tmp20.i37, %bb3.i41 ], [ %tmp20.i37, %bb7.i43 ] ; [#uses=4]
+ %64 = icmp slt i32 %63, 3 ; [#uses=1]
+ br i1 %64, label %bb.i39, label %_ZN14btHullTriangle4neibEii.exit47
+
+_ZN14btHullTriangle4neibEii.exit47: ; preds = %bb14.i45, %bb12.i44, %bb5.i42
+ %65 = phi i32* [ %62, %bb12.i44 ], [ %58, %bb5.i42 ], [ @_ZZN14btHullTriangle4neibEiiE2er, %bb14.i45 ] ; [#uses=1]
+ %66 = load i32* %65, align 4 ; [#uses=1]
+ store i32 %66, i32* %49, align 4
+ br label %bb14.i30
+
+bb.i24: ; preds = %bb14.i30
+ %tmp110 = shl i32 %80, 2 ; [#uses=1]
+ %uglygep111 = getelementptr i8* %this21.i33, i32 %tmp110 ; [#uses=1]
+ %uglygep23.i21 = bitcast i8* %uglygep111 to i32* ; [#uses=1]
+ %tmp20.i22 = add i32 %80, 1 ; [#uses=3]
+ %tmp.i23 = add i32 %80, 2 ; [#uses=1]
+ %67 = srem i32 %tmp20.i22, 3 ; [#uses=2]
+ %68 = srem i32 %tmp.i23, 3 ; [#uses=2]
+ %69 = load i32* %uglygep23.i21, align 4 ; [#uses=2]
+ %70 = icmp eq i32 %69, %10 ; [#uses=1]
+ br i1 %70, label %bb1.i25, label %bb3.i26
+
+bb1.i25: ; preds = %bb.i24
+ %71 = getelementptr inbounds i32* %3, i32 %67 ; [#uses=1]
+ %72 = load i32* %71, align 4 ; [#uses=1]
+ %73 = icmp eq i32 %72, %8 ; [#uses=1]
+ br i1 %73, label %bb5.i27, label %bb3.i26
+
+bb3.i26: ; preds = %bb1.i25, %bb.i24
+ %74 = icmp eq i32 %69, %8 ; [#uses=1]
+ br i1 %74, label %bb7.i28, label %bb14.i30
+
+bb5.i27: ; preds = %bb1.i25
+ %75 = getelementptr inbounds i32* %4, i32 %68 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit32
+
+bb7.i28: ; preds = %bb3.i26
+ %76 = getelementptr inbounds i32* %3, i32 %67 ; [#uses=1]
+ %77 = load i32* %76, align 4 ; [#uses=1]
+ %78 = icmp eq i32 %77, %10 ; [#uses=1]
+ br i1 %78, label %bb12.i29, label %bb14.i30
+
+bb12.i29: ; preds = %bb7.i28
+ %79 = getelementptr inbounds i32* %4, i32 %68 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit32
+
+bb14.i30: ; preds = %bb7.i28, %bb3.i26, %_ZN14btHullTriangle4neibEii.exit47
+ %80 = phi i32 [ 0, %_ZN14btHullTriangle4neibEii.exit47 ], [ %tmp20.i22, %bb3.i26 ], [ %tmp20.i22, %bb7.i28 ] ; [#uses=4]
+ %81 = icmp slt i32 %80, 3 ; [#uses=1]
+ br i1 %81, label %bb.i24, label %_ZN14btHullTriangle4neibEii.exit32
+
+_ZN14btHullTriangle4neibEii.exit32: ; preds = %bb14.i30, %bb12.i29, %bb5.i27
+ %82 = phi i32* [ %79, %bb12.i29 ], [ %75, %bb5.i27 ], [ @_ZZN14btHullTriangle4neibEiiE2er, %bb14.i30 ] ; [#uses=1]
+ %83 = load i32* %82, align 4 ; [#uses=1]
+ %84 = load %struct.btHullTriangle*** %2, align 4 ; [#uses=1]
+ %85 = getelementptr inbounds %struct.btHullTriangle** %84, i32 %83 ; [#uses=1]
+ %86 = load %struct.btHullTriangle** %85, align 4 ; [#uses=4]
+ %this21.i3 = bitcast %struct.btHullTriangle* %86 to i8* ; [#uses=1]
+ %87 = getelementptr inbounds %struct.btHullTriangle* %86, i32 0, i32 0, i32 0 ; [#uses=2]
+ br label %bb14.i15
+
+bb.i9: ; preds = %bb14.i15
+ %tmp117 = shl i32 %103, 2 ; [#uses=1]
+ %uglygep118 = getelementptr i8* %this21.i3, i32 %tmp117 ; [#uses=1]
+ %uglygep23.i6 = bitcast i8* %uglygep118 to i32* ; [#uses=1]
+ %tmp20.i7 = add i32 %103, 1 ; [#uses=3]
+ %tmp.i8 = add i32 %103, 2 ; [#uses=1]
+ %88 = srem i32 %tmp20.i7, 3 ; [#uses=2]
+ %89 = srem i32 %tmp.i8, 3 ; [#uses=2]
+ %90 = load i32* %uglygep23.i6, align 4 ; [#uses=2]
+ %91 = icmp eq i32 %90, %8 ; [#uses=1]
+ br i1 %91, label %bb1.i10, label %bb3.i11
+
+bb1.i10: ; preds = %bb.i9
+ %92 = getelementptr inbounds i32* %87, i32 %88 ; [#uses=1]
+ %93 = load i32* %92, align 4 ; [#uses=1]
+ %94 = icmp eq i32 %93, %10 ; [#uses=1]
+ br i1 %94, label %bb5.i12, label %bb3.i11
+
+bb3.i11: ; preds = %bb1.i10, %bb.i9
+ %95 = icmp eq i32 %90, %10 ; [#uses=1]
+ br i1 %95, label %bb7.i13, label %bb14.i15
+
+bb5.i12: ; preds = %bb1.i10
+ %96 = getelementptr inbounds %struct.btHullTriangle* %86, i32 0, i32 1, i32 0 ; [#uses=1]
+ %97 = getelementptr inbounds i32* %96, i32 %89 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit17
+
+bb7.i13: ; preds = %bb3.i11
+ %98 = getelementptr inbounds i32* %87, i32 %88 ; [#uses=1]
+ %99 = load i32* %98, align 4 ; [#uses=1]
+ %100 = icmp eq i32 %99, %8 ; [#uses=1]
+ br i1 %100, label %bb12.i14, label %bb14.i15
+
+bb12.i14: ; preds = %bb7.i13
+ %101 = getelementptr inbounds %struct.btHullTriangle* %86, i32 0, i32 1, i32 0 ; [#uses=1]
+ %102 = getelementptr inbounds i32* %101, i32 %89 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit17
+
+bb14.i15: ; preds = %bb7.i13, %bb3.i11, %_ZN14btHullTriangle4neibEii.exit32
+ %103 = phi i32 [ 0, %_ZN14btHullTriangle4neibEii.exit32 ], [ %tmp20.i7, %bb3.i11 ], [ %tmp20.i7, %bb7.i13 ] ; [#uses=4]
+ %104 = icmp slt i32 %103, 3 ; [#uses=1]
+ br i1 %104, label %bb.i9, label %_ZN14btHullTriangle4neibEii.exit17
+
+_ZN14btHullTriangle4neibEii.exit17: ; preds = %bb14.i15, %bb12.i14, %bb5.i12
+ %105 = phi i32* [ %102, %bb12.i14 ], [ %97, %bb5.i12 ], [ @_ZZN14btHullTriangle4neibEiiE2er, %bb14.i15 ] ; [#uses=1]
+ br label %bb14.i
+
+bb.i: ; preds = %bb14.i
+ %tmp124 = shl i32 %119, 2 ; [#uses=1]
+ %uglygep125 = getelementptr i8* %this21.i63, i32 %tmp124 ; [#uses=1]
+ %uglygep23.i = bitcast i8* %uglygep125 to i32* ; [#uses=1]
+ %tmp20.i = add i32 %119, 1 ; [#uses=3]
+ %tmp.i = add i32 %119, 2 ; [#uses=1]
+ %106 = srem i32 %tmp20.i, 3 ; [#uses=2]
+ %107 = srem i32 %tmp.i, 3 ; [#uses=2]
+ %108 = load i32* %uglygep23.i, align 4 ; [#uses=2]
+ %109 = icmp eq i32 %108, %8 ; [#uses=1]
+ br i1 %109, label %bb1.i, label %bb3.i
+
+bb1.i: ; preds = %bb.i
+ %110 = getelementptr inbounds i32* %0, i32 %106 ; [#uses=1]
+ %111 = load i32* %110, align 4 ; [#uses=1]
+ %112 = icmp eq i32 %111, %10 ; [#uses=1]
+ br i1 %112, label %bb5.i, label %bb3.i
+
+bb3.i: ; preds = %bb1.i, %bb.i
+ %113 = icmp eq i32 %108, %10 ; [#uses=1]
+ br i1 %113, label %bb7.i, label %bb14.i
+
+bb5.i: ; preds = %bb1.i
+ %114 = getelementptr inbounds i32* %1, i32 %107 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit
+
+bb7.i: ; preds = %bb3.i
+ %115 = getelementptr inbounds i32* %0, i32 %106 ; [#uses=1]
+ %116 = load i32* %115, align 4 ; [#uses=1]
+ %117 = icmp eq i32 %116, %8 ; [#uses=1]
+ br i1 %117, label %bb12.i, label %bb14.i
+
+bb12.i: ; preds = %bb7.i
+ %118 = getelementptr inbounds i32* %1, i32 %107 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit
+
+bb14.i: ; preds = %bb7.i, %bb3.i, %_ZN14btHullTriangle4neibEii.exit17
+ %119 = phi i32 [ 0, %_ZN14btHullTriangle4neibEii.exit17 ], [ %tmp20.i, %bb3.i ], [ %tmp20.i, %bb7.i ] ; [#uses=4]
+ %120 = icmp slt i32 %119, 3 ; [#uses=1]
+ br i1 %120, label %bb.i, label %_ZN14btHullTriangle4neibEii.exit
+
+_ZN14btHullTriangle4neibEii.exit: ; preds = %bb14.i, %bb12.i, %bb5.i
+ %121 = phi i32* [ %118, %bb12.i ], [ %114, %bb5.i ], [ @_ZZN14btHullTriangle4neibEiiE2er, %bb14.i ] ; [#uses=1]
+ %122 = load i32* %121, align 4 ; [#uses=1]
+ store i32 %122, i32* %105, align 4
+ br i1 %tmp127, label %return, label %bb
+
+return: ; preds = %_ZN14btHullTriangle4neibEii.exit
+ ret void
+}
+
+; [#uses=0]
+define %struct.btHullTriangle* @_ZN11HullLibrary10extrudableEf(%struct.HullLibrary* nocapture %this, float %epsilon) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=3]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph, label %bb10
+
+bb.nph: ; preds = %entry
+ %3 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 3 ; [#uses=2]
+ %tmp = icmp sgt i32 %1, 1 ; [#uses=1]
+ %smax = select i1 %tmp, i32 %1, i32 1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb7, %bb.nph
+ %t.116 = phi %struct.btHullTriangle* [ null, %bb.nph ], [ %t.0, %bb7 ] ; [#uses=4]
+ %i.015 = phi i32 [ 0, %bb.nph ], [ %15, %bb7 ] ; [#uses=3]
+ %4 = icmp eq %struct.btHullTriangle* %t.116, null ; [#uses=1]
+ br i1 %4, label %bb6, label %bb1
+
+bb1: ; preds = %bb
+ %5 = load %struct.btHullTriangle*** %3, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btHullTriangle** %5, i32 %i.015 ; [#uses=1]
+ %6 = load %struct.btHullTriangle** %scevgep, align 4 ; [#uses=2]
+ %7 = icmp eq %struct.btHullTriangle* %6, null ; [#uses=1]
+ br i1 %7, label %bb7, label %bb2
+
+bb2: ; preds = %bb1
+ %8 = getelementptr inbounds %struct.btHullTriangle* %t.116, i32 0, i32 4 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btHullTriangle* %6, i32 0, i32 4 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = fcmp olt float %9, %11 ; [#uses=1]
+ br i1 %12, label %bb6, label %bb7
+
+bb6: ; preds = %bb2, %bb
+ %13 = load %struct.btHullTriangle*** %3, align 4 ; [#uses=1]
+ %scevgep17 = getelementptr %struct.btHullTriangle** %13, i32 %i.015 ; [#uses=1]
+ %14 = load %struct.btHullTriangle** %scevgep17, align 4 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb2, %bb1
+ %t.0 = phi %struct.btHullTriangle* [ %14, %bb6 ], [ %t.116, %bb2 ], [ %t.116, %bb1 ] ; [#uses=2]
+ %15 = add nsw i32 %i.015, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %15, %smax ; [#uses=1]
+ br i1 %exitcond, label %bb10, label %bb
+
+bb10: ; preds = %bb7, %entry
+ %t.1.lcssa = phi %struct.btHullTriangle* [ null, %entry ], [ %t.0, %bb7 ] ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btHullTriangle* %t.1.lcssa, i32 0, i32 4 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fcmp ogt float %17, %epsilon ; [#uses=1]
+ %iftmp.70.0 = select i1 %18, %struct.btHullTriangle* %t.1.lcssa, %struct.btHullTriangle* null ; [#uses=1]
+ ret %struct.btHullTriangle* %iftmp.70.0
+}
+
+; [#uses=1]
+define zeroext i8 @_ZN11HullLibrary15CleanupVerticesEjPK9btVector3jRjPS0_fRS0_(%struct.HullLibrary* nocapture %this, i32 %svcount, %struct.btQuadWord* nocapture %svertices, i32 %stride, i32* %vcount, %struct.btQuadWord* %vertices, float %normalepsilon, %struct.btQuadWord* %scale) align 2 {
+entry:
+ %0 = bitcast %struct.btQuadWord* %svertices to i8* ; [#uses=2]
+ %bmin = alloca [3 x float], align 4 ; [#uses=3]
+ %bmax = alloca [3 x float], align 4 ; [#uses=3]
+ %bmin63 = alloca [3 x float], align 4 ; [#uses=3]
+ %bmax64 = alloca [3 x float], align 4 ; [#uses=3]
+ %1 = icmp eq i32 %svcount, 0 ; [#uses=1]
+ br i1 %1, label %bb112, label %bb1
+
+bb1: ; preds = %entry
+ %2 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 1 ; [#uses=7]
+ %3 = load i32* %2, align 4 ; [#uses=4]
+ %4 = icmp sgt i32 %3, 0 ; [#uses=1]
+ %.not224 = xor i1 %4, true ; [#uses=1]
+ %5 = icmp slt i32 %3, 0 ; [#uses=1]
+ %or.cond225 = and i1 %.not224, %5 ; [#uses=1]
+ br i1 %or.cond225, label %bb4.i, label %_ZN20btAlignedObjectArrayIiE6resizeEiRKi.exit
+
+bb4.i: ; preds = %bb1
+ %6 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = icmp slt i32 %7, 0 ; [#uses=1]
+ br i1 %8, label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i, label %bb.nph.i
+
+_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i: ; preds = %bb4.i
+ %9 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 3 ; [#uses=3]
+ %10 = load i32** %9, align 4 ; [#uses=2]
+ %11 = icmp eq i32* %10, null ; [#uses=1]
+ br i1 %11, label %bb11.preheader.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %12 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ %13 = load i8* %12, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %13, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %14 = bitcast i32* %10 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %14)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store i32* null, i32** %9, align 4
+ br label %bb11.preheader.i
+
+bb11.preheader.i: ; preds = %bb2.i.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %15 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 4 ; [#uses=1]
+ store i8 1, i8* %15, align 4
+ store i32* null, i32** %9, align 4
+ store i32 0, i32* %6, align 4
+ br label %bb.nph.i
+
+bb.nph.i: ; preds = %bb11.preheader.i, %bb4.i
+ %16 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ %tmp.i = sub i32 0, %3 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb10.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb10.i ] ; [#uses=2]
+ %tmp = add i32 %3, %indvar.i ; [#uses=1]
+ %17 = load i32** %16, align 4 ; [#uses=1]
+ %scevgep = getelementptr i32* %17, i32 %tmp ; [#uses=2]
+ %18 = icmp eq i32* %scevgep, null ; [#uses=1]
+ br i1 %18, label %bb10.i, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ store i32 0, i32* %scevgep, align 4
+ br label %bb10.i
+
+bb10.i: ; preds = %bb8.i, %bb7.i
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %tmp.i ; [#uses=1]
+ br i1 %exitcond, label %_ZN20btAlignedObjectArrayIiE6resizeEiRKi.exit, label %bb7.i
+
+_ZN20btAlignedObjectArrayIiE6resizeEiRKi.exit: ; preds = %bb10.i, %bb1
+ store i32 0, i32* %2, align 4
+ store i32 0, i32* %vcount, align 4
+ %19 = icmp eq %struct.btQuadWord* %scale, null ; [#uses=3]
+ br i1 %19, label %bb.nph173, label %bb2
+
+bb2: ; preds = %_ZN20btAlignedObjectArrayIiE6resizeEiRKi.exit
+ %20 = getelementptr inbounds %struct.btQuadWord* %scale, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %20, align 4
+ %21 = getelementptr inbounds %struct.btQuadWord* %scale, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 1.000000e+00, float* %21, align 4
+ %22 = getelementptr inbounds %struct.btQuadWord* %scale, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 1.000000e+00, float* %22, align 4
+ br label %bb.nph173
+
+bb.nph173: ; preds = %bb2, %_ZN20btAlignedObjectArrayIiE6resizeEiRKi.exit
+ %23 = getelementptr inbounds [3 x float]* %bmin, i32 0, i32 0 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %23, align 4
+ %24 = getelementptr inbounds [3 x float]* %bmin, i32 0, i32 1 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %24, align 4
+ %25 = getelementptr inbounds [3 x float]* %bmin, i32 0, i32 2 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %25, align 4
+ %26 = getelementptr inbounds [3 x float]* %bmax, i32 0, i32 0 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %26, align 4
+ %27 = getelementptr inbounds [3 x float]* %bmax, i32 0, i32 1 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %27, align 4
+ %28 = getelementptr inbounds [3 x float]* %bmax, i32 0, i32 2 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %28, align 4
+ %scevgep213 = getelementptr %struct.btQuadWord* %svertices, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep213214 = bitcast float* %scevgep213 to i8* ; [#uses=1]
+ %scevgep218 = getelementptr %struct.btQuadWord* %svertices, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep218219 = bitcast float* %scevgep218 to i8* ; [#uses=1]
+ br label %bb.nph170
+
+bb.nph170: ; preds = %bb11, %bb.nph173
+ %29 = phi float [ 0x47EFFFFFE0000000, %bb.nph173 ], [ %307, %bb11 ] ; [#uses=2]
+ %30 = phi float [ 0xC7EFFFFFE0000000, %bb.nph173 ], [ %42, %bb11 ] ; [#uses=2]
+ %31 = phi float [ 0x47EFFFFFE0000000, %bb.nph173 ], [ %305, %bb11 ] ; [#uses=2]
+ %32 = phi float [ 0xC7EFFFFFE0000000, %bb.nph173 ], [ %302, %bb11 ] ; [#uses=2]
+ %33 = phi float [ 0x47EFFFFFE0000000, %bb.nph173 ], [ %37, %bb11 ] ; [#uses=2]
+ %34 = phi float [ 0xC7EFFFFFE0000000, %bb.nph173 ], [ %39, %bb11 ] ; [#uses=2]
+ %i.0172 = phi i32 [ 0, %bb.nph173 ], [ %43, %bb11 ] ; [#uses=2]
+ %tmp215 = mul i32 %i.0172, %stride ; [#uses=3]
+ %uglygep216 = getelementptr i8* %scevgep213214, i32 %tmp215 ; [#uses=1]
+ %uglygep208209.2 = bitcast i8* %uglygep216 to float* ; [#uses=1]
+ %uglygep220 = getelementptr i8* %scevgep218219, i32 %tmp215 ; [#uses=1]
+ %uglygep208209.1 = bitcast i8* %uglygep220 to float* ; [#uses=1]
+ %uglygep222 = getelementptr i8* %0, i32 %tmp215 ; [#uses=1]
+ %uglygep208209 = bitcast i8* %uglygep222 to float* ; [#uses=1]
+ %35 = load float* %uglygep208209, align 4 ; [#uses=6]
+ %36 = fcmp olt float %35, %33 ; [#uses=1]
+ br i1 %36, label %bb6, label %bb7
+
+bb6: ; preds = %bb.nph170
+ store float %35, float* %23, align 4
+ br label %bb7
+
+bb7: ; preds = %bb6, %bb.nph170
+ %37 = phi float [ %35, %bb6 ], [ %33, %bb.nph170 ] ; [#uses=3]
+ %38 = fcmp ogt float %35, %34 ; [#uses=1]
+ br i1 %38, label %bb8, label %bb9
+
+bb8: ; preds = %bb7
+ store float %35, float* %26, align 4
+ br label %bb9
+
+bb9: ; preds = %bb8, %bb7
+ %39 = phi float [ %35, %bb8 ], [ %34, %bb7 ] ; [#uses=2]
+ %40 = load float* %uglygep208209.1, align 4 ; [#uses=6]
+ %41 = fcmp olt float %40, %31 ; [#uses=1]
+ br i1 %41, label %bb6.1, label %bb7.1
+
+bb11: ; preds = %bb8.2, %bb7.2
+ %42 = phi float [ %303, %bb8.2 ], [ %30, %bb7.2 ] ; [#uses=2]
+ %43 = add i32 %i.0172, 1 ; [#uses=2]
+ %exitcond212 = icmp eq i32 %43, %svcount ; [#uses=1]
+ br i1 %exitcond212, label %bb13, label %bb.nph170
+
+bb13: ; preds = %bb11
+ %44 = fsub float %39, %37 ; [#uses=8]
+ %45 = fsub float %302, %305 ; [#uses=8]
+ %46 = fsub float %42, %307 ; [#uses=9]
+ %47 = fmul float %44, 5.000000e-01 ; [#uses=1]
+ %48 = fadd float %47, %37 ; [#uses=4]
+ %49 = fmul float %45, 5.000000e-01 ; [#uses=1]
+ %50 = fadd float %49, %305 ; [#uses=4]
+ %51 = fmul float %46, 5.000000e-01 ; [#uses=1]
+ %52 = fadd float %51, %307 ; [#uses=4]
+ %53 = fcmp olt float %44, 0x3EB0C6F7A0000000 ; [#uses=2]
+ %54 = fcmp olt float %45, 0x3EB0C6F7A0000000 ; [#uses=2]
+ %or.cond = or i1 %53, %54 ; [#uses=1]
+ br i1 %or.cond, label %bb19, label %bb15
+
+bb15: ; preds = %bb13
+ %55 = fcmp olt float %46, 0x3EB0C6F7A0000000 ; [#uses=1]
+ %56 = icmp ult i32 %svcount, 3 ; [#uses=1]
+ %57 = or i1 %55, %56 ; [#uses=1]
+ br i1 %57, label %bb19, label %bb37
+
+bb19: ; preds = %bb15, %bb13
+ %58 = fcmp ogt float %44, 0x3EB0C6F7A0000000 ; [#uses=1]
+ %59 = fcmp olt float %44, 0x47EFFFFFE0000000 ; [#uses=1]
+ %or.cond115 = and i1 %58, %59 ; [#uses=1]
+ %len.0 = select i1 %or.cond115, float %44, float 0x47EFFFFFE0000000 ; [#uses=2]
+ %60 = fcmp ogt float %45, 0x3EB0C6F7A0000000 ; [#uses=1]
+ %61 = fcmp olt float %45, %len.0 ; [#uses=1]
+ %or.cond116 = and i1 %60, %61 ; [#uses=1]
+ %len.1 = select i1 %or.cond116, float %45, float %len.0 ; [#uses=2]
+ %62 = fcmp ogt float %46, 0x3EB0C6F7A0000000 ; [#uses=1]
+ %63 = fcmp olt float %46, %len.1 ; [#uses=1]
+ %or.cond117 = and i1 %62, %63 ; [#uses=1]
+ %len.2 = select i1 %or.cond117, float %46, float %len.1 ; [#uses=4]
+ %64 = fcmp oeq float %len.2, 0x47EFFFFFE0000000 ; [#uses=1]
+ br i1 %64, label %bb36, label %bb30
+
+bb30: ; preds = %bb19
+ br i1 %53, label %bb31, label %bb32
+
+bb31: ; preds = %bb30
+ %65 = fmul float %len.2, 0x3FA99999A0000000 ; [#uses=1]
+ br label %bb32
+
+bb32: ; preds = %bb31, %bb30
+ %dx.1 = phi float [ %65, %bb31 ], [ %44, %bb30 ] ; [#uses=2]
+ br i1 %54, label %bb33, label %bb34
+
+bb33: ; preds = %bb32
+ %66 = fmul float %len.2, 0x3FA99999A0000000 ; [#uses=1]
+ br label %bb34
+
+bb34: ; preds = %bb33, %bb32
+ %dy.1 = phi float [ %66, %bb33 ], [ %45, %bb32 ] ; [#uses=2]
+ %67 = fcmp olt float %46, 0x3EB0C6F7A0000000 ; [#uses=1]
+ br i1 %67, label %bb35, label %bb36
+
+bb35: ; preds = %bb34
+ %68 = fmul float %len.2, 0x3FA99999A0000000 ; [#uses=1]
+ br label %bb36
+
+bb36: ; preds = %bb35, %bb34, %bb19
+ %dz.0 = phi float [ %68, %bb35 ], [ 0x3F847AE140000000, %bb19 ], [ %46, %bb34 ] ; [#uses=2]
+ %dy.0 = phi float [ %dy.1, %bb35 ], [ 0x3F847AE140000000, %bb19 ], [ %dy.1, %bb34 ] ; [#uses=2]
+ %dx.0 = phi float [ %dx.1, %bb35 ], [ 0x3F847AE140000000, %bb19 ], [ %dx.1, %bb34 ] ; [#uses=2]
+ %69 = fsub float %48, %dx.0 ; [#uses=4]
+ %70 = fadd float %48, %dx.0 ; [#uses=4]
+ %71 = fsub float %50, %dy.0 ; [#uses=4]
+ %72 = fadd float %50, %dy.0 ; [#uses=4]
+ %73 = fsub float %52, %dz.0 ; [#uses=4]
+ %74 = fadd float %52, %dz.0 ; [#uses=4]
+ %75 = load i32* %vcount, align 4 ; [#uses=3]
+ %76 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %75, i32 0, i32 0 ; [#uses=1]
+ store float %69, float* %76, align 4
+ %77 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %75, i32 0, i32 1 ; [#uses=1]
+ store float %71, float* %77, align 4
+ %78 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %75, i32 0, i32 2 ; [#uses=1]
+ store float %73, float* %78, align 4
+ %79 = load i32* %vcount, align 4 ; [#uses=1]
+ %80 = add i32 %79, 1 ; [#uses=4]
+ store i32 %80, i32* %vcount, align 4
+ %81 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %80, i32 0, i32 0 ; [#uses=1]
+ store float %70, float* %81, align 4
+ %82 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %80, i32 0, i32 1 ; [#uses=1]
+ store float %71, float* %82, align 4
+ %83 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %80, i32 0, i32 2 ; [#uses=1]
+ store float %73, float* %83, align 4
+ %84 = load i32* %vcount, align 4 ; [#uses=1]
+ %85 = add i32 %84, 1 ; [#uses=4]
+ store i32 %85, i32* %vcount, align 4
+ %86 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %85, i32 0, i32 0 ; [#uses=1]
+ store float %70, float* %86, align 4
+ %87 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %85, i32 0, i32 1 ; [#uses=1]
+ store float %72, float* %87, align 4
+ %88 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %85, i32 0, i32 2 ; [#uses=1]
+ store float %73, float* %88, align 4
+ %89 = load i32* %vcount, align 4 ; [#uses=1]
+ %90 = add i32 %89, 1 ; [#uses=4]
+ store i32 %90, i32* %vcount, align 4
+ %91 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %90, i32 0, i32 0 ; [#uses=1]
+ store float %69, float* %91, align 4
+ %92 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %90, i32 0, i32 1 ; [#uses=1]
+ store float %72, float* %92, align 4
+ %93 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %90, i32 0, i32 2 ; [#uses=1]
+ store float %73, float* %93, align 4
+ %94 = load i32* %vcount, align 4 ; [#uses=1]
+ %95 = add i32 %94, 1 ; [#uses=4]
+ store i32 %95, i32* %vcount, align 4
+ %96 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %95, i32 0, i32 0 ; [#uses=1]
+ store float %69, float* %96, align 4
+ %97 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %95, i32 0, i32 1 ; [#uses=1]
+ store float %71, float* %97, align 4
+ %98 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %95, i32 0, i32 2 ; [#uses=1]
+ store float %74, float* %98, align 4
+ %99 = load i32* %vcount, align 4 ; [#uses=1]
+ %100 = add i32 %99, 1 ; [#uses=4]
+ store i32 %100, i32* %vcount, align 4
+ %101 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %100, i32 0, i32 0 ; [#uses=1]
+ store float %70, float* %101, align 4
+ %102 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %100, i32 0, i32 1 ; [#uses=1]
+ store float %71, float* %102, align 4
+ %103 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %100, i32 0, i32 2 ; [#uses=1]
+ store float %74, float* %103, align 4
+ %104 = load i32* %vcount, align 4 ; [#uses=1]
+ %105 = add i32 %104, 1 ; [#uses=4]
+ store i32 %105, i32* %vcount, align 4
+ %106 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %105, i32 0, i32 0 ; [#uses=1]
+ store float %70, float* %106, align 4
+ %107 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %105, i32 0, i32 1 ; [#uses=1]
+ store float %72, float* %107, align 4
+ %108 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %105, i32 0, i32 2 ; [#uses=1]
+ store float %74, float* %108, align 4
+ %109 = load i32* %vcount, align 4 ; [#uses=1]
+ %110 = add i32 %109, 1 ; [#uses=4]
+ store i32 %110, i32* %vcount, align 4
+ %111 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %110, i32 0, i32 0 ; [#uses=1]
+ store float %69, float* %111, align 4
+ %112 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %110, i32 0, i32 1 ; [#uses=1]
+ store float %72, float* %112, align 4
+ %113 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %110, i32 0, i32 2 ; [#uses=1]
+ store float %74, float* %113, align 4
+ %114 = load i32* %vcount, align 4 ; [#uses=1]
+ %115 = add i32 %114, 1 ; [#uses=1]
+ store i32 %115, i32* %vcount, align 4
+ ret i8 1
+
+bb37: ; preds = %bb15
+ br i1 %19, label %bb.nph168, label %bb39
+
+bb39: ; preds = %bb37
+ %116 = getelementptr inbounds %struct.btQuadWord* %scale, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %44, float* %116, align 4
+ %117 = getelementptr inbounds %struct.btQuadWord* %scale, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %45, float* %117, align 4
+ %118 = getelementptr inbounds %struct.btQuadWord* %scale, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %46, float* %118, align 4
+ %119 = fdiv float 1.000000e+00, %44 ; [#uses=2]
+ %120 = fdiv float 1.000000e+00, %45 ; [#uses=2]
+ %121 = fdiv float 1.000000e+00, %46 ; [#uses=2]
+ %122 = fmul float %48, %119 ; [#uses=1]
+ %123 = fmul float %50, %120 ; [#uses=1]
+ %124 = fmul float %52, %121 ; [#uses=1]
+ br label %bb.nph168
+
+bb.nph168: ; preds = %bb39, %bb37
+ %recip.0.0 = phi float [ 0.000000e+00, %bb37 ], [ %119, %bb39 ] ; [#uses=1]
+ %recip.1.0 = phi float [ 0.000000e+00, %bb37 ], [ %120, %bb39 ] ; [#uses=1]
+ %recip.2.0 = phi float [ 0.000000e+00, %bb37 ], [ %121, %bb39 ] ; [#uses=1]
+ %center.0.0.0 = phi float [ %48, %bb37 ], [ %122, %bb39 ] ; [#uses=2]
+ %center.0.1.0 = phi float [ %50, %bb37 ], [ %123, %bb39 ] ; [#uses=2]
+ %center.0.2.0 = phi float [ %52, %bb37 ], [ %124, %bb39 ] ; [#uses=2]
+ %125 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ %126 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 3 ; [#uses=5]
+ %127 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 4 ; [#uses=2]
+ %scevgep196 = getelementptr %struct.btQuadWord* %svertices, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep196197 = bitcast float* %scevgep196 to i8* ; [#uses=1]
+ %scevgep200 = getelementptr %struct.btQuadWord* %svertices, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep200201 = bitcast float* %scevgep200 to i8* ; [#uses=1]
+ br label %bb42
+
+bb42: ; preds = %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit, %bb.nph168
+ %i41.0167 = phi i32 [ 0, %bb.nph168 ], [ %199, %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit ] ; [#uses=2]
+ %tmp194 = mul i32 %i41.0167, %stride ; [#uses=3]
+ %uglygep = getelementptr i8* %0, i32 %tmp194 ; [#uses=1]
+ %uglygep195 = bitcast i8* %uglygep to float* ; [#uses=1]
+ %uglygep198 = getelementptr i8* %scevgep196197, i32 %tmp194 ; [#uses=1]
+ %uglygep198199 = bitcast i8* %uglygep198 to float* ; [#uses=1]
+ %uglygep202 = getelementptr i8* %scevgep200201, i32 %tmp194 ; [#uses=1]
+ %uglygep202203 = bitcast i8* %uglygep202 to float* ; [#uses=1]
+ %128 = load float* %uglygep195, align 4 ; [#uses=2]
+ %129 = load float* %uglygep198199, align 4 ; [#uses=2]
+ %130 = load float* %uglygep202203, align 4 ; [#uses=2]
+ br i1 %19, label %bb46, label %bb45
+
+bb45: ; preds = %bb42
+ %131 = fmul float %recip.0.0, %128 ; [#uses=1]
+ %132 = fmul float %recip.1.0, %129 ; [#uses=1]
+ %133 = fmul float %recip.2.0, %130 ; [#uses=1]
+ br label %bb46
+
+bb46: ; preds = %bb45, %bb42
+ %px.0 = phi float [ %131, %bb45 ], [ %128, %bb42 ] ; [#uses=4]
+ %py.0 = phi float [ %132, %bb45 ], [ %129, %bb42 ] ; [#uses=4]
+ %pz.0 = phi float [ %133, %bb45 ], [ %130, %bb42 ] ; [#uses=4]
+ %134 = load i32* %vcount, align 4 ; [#uses=3]
+ br label %bb57
+
+bb48: ; preds = %bb57
+ %scevgep191192 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %165, i32 0, i32 0 ; [#uses=2]
+ %scevgep190 = getelementptr %struct.btQuadWord* %vertices, i32 %165, i32 0, i32 1 ; [#uses=2]
+ %scevgep189 = getelementptr %struct.btQuadWord* %vertices, i32 %165, i32 0, i32 2 ; [#uses=2]
+ %135 = load float* %scevgep191192, align 4 ; [#uses=2]
+ %136 = load float* %scevgep190, align 4 ; [#uses=2]
+ %137 = load float* %scevgep189, align 4 ; [#uses=2]
+ %138 = fsub float %135, %px.0 ; [#uses=1]
+ %139 = call float @fabsf(float %138) nounwind readnone ; [#uses=1]
+ %140 = fsub float %136, %py.0 ; [#uses=1]
+ %141 = call float @fabsf(float %140) nounwind readnone ; [#uses=1]
+ %142 = fsub float %137, %pz.0 ; [#uses=1]
+ %143 = call float @fabsf(float %142) nounwind readnone ; [#uses=1]
+ %144 = fcmp olt float %139, %normalepsilon ; [#uses=1]
+ %145 = fcmp olt float %141, %normalepsilon ; [#uses=1]
+ %or.cond118 = and i1 %144, %145 ; [#uses=1]
+ %146 = fcmp olt float %143, %normalepsilon ; [#uses=1]
+ %or.cond119 = and i1 %or.cond118, %146 ; [#uses=1]
+ br i1 %or.cond119, label %bb54, label %bb56
+
+bb54: ; preds = %bb48
+ %147 = fsub float %px.0, %center.0.0.0 ; [#uses=2]
+ %148 = fsub float %py.0, %center.0.1.0 ; [#uses=2]
+ %149 = fsub float %pz.0, %center.0.2.0 ; [#uses=2]
+ %150 = fmul float %147, %147 ; [#uses=1]
+ %151 = fmul float %148, %148 ; [#uses=1]
+ %152 = fadd float %150, %151 ; [#uses=1]
+ %153 = fmul float %149, %149 ; [#uses=1]
+ %154 = fadd float %152, %153 ; [#uses=1]
+ %155 = fsub float %135, %center.0.0.0 ; [#uses=2]
+ %156 = fsub float %136, %center.0.1.0 ; [#uses=2]
+ %157 = fsub float %137, %center.0.2.0 ; [#uses=2]
+ %158 = fmul float %155, %155 ; [#uses=1]
+ %159 = fmul float %156, %156 ; [#uses=1]
+ %160 = fadd float %158, %159 ; [#uses=1]
+ %161 = fmul float %157, %157 ; [#uses=1]
+ %162 = fadd float %160, %161 ; [#uses=1]
+ %163 = fcmp ogt float %154, %162 ; [#uses=1]
+ br i1 %163, label %bb55, label %bb58
+
+bb55: ; preds = %bb54
+ store float %px.0, float* %scevgep191192, align 4
+ store float %py.0, float* %scevgep190, align 4
+ store float %pz.0, float* %scevgep189, align 4
+ %.pre = load i32* %vcount, align 4 ; [#uses=1]
+ br label %bb58
+
+bb56: ; preds = %bb48
+ %164 = add i32 %165, 1 ; [#uses=1]
+ br label %bb57
+
+bb57: ; preds = %bb56, %bb46
+ %165 = phi i32 [ 0, %bb46 ], [ %164, %bb56 ] ; [#uses=7]
+ %166 = icmp ugt i32 %134, %165 ; [#uses=1]
+ br i1 %166, label %bb48, label %bb58
+
+bb58: ; preds = %bb57, %bb55, %bb54
+ %167 = phi i32 [ %.pre, %bb55 ], [ %134, %bb54 ], [ %134, %bb57 ] ; [#uses=4]
+ %168 = icmp eq i32 %167, %165 ; [#uses=1]
+ br i1 %168, label %bb59, label %bb60
+
+bb59: ; preds = %bb58
+ %169 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %167, i32 0, i32 0 ; [#uses=1]
+ store float %px.0, float* %169, align 4
+ %170 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %167, i32 0, i32 1 ; [#uses=1]
+ store float %py.0, float* %170, align 4
+ %171 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %167, i32 0, i32 2 ; [#uses=1]
+ store float %pz.0, float* %171, align 4
+ %172 = load i32* %vcount, align 4 ; [#uses=1]
+ %173 = add i32 %172, 1 ; [#uses=1]
+ store i32 %173, i32* %vcount, align 4
+ br label %bb60
+
+bb60: ; preds = %bb59, %bb58
+ %174 = load i32* %2, align 4 ; [#uses=6]
+ %175 = load i32* %125, align 4 ; [#uses=2]
+ %176 = icmp eq i32 %175, %174 ; [#uses=1]
+ br i1 %176, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb60
+ %177 = icmp eq i32 %174, 0 ; [#uses=1]
+ %178 = shl i32 %174, 1 ; [#uses=1]
+ %iftmp.190.0.i.i = select i1 %177, i32 1, i32 %178 ; [#uses=4]
+ %179 = icmp slt i32 %175, %iftmp.190.0.i.i ; [#uses=1]
+ br i1 %179, label %bb.i.i127, label %bb1.i
+
+bb.i.i127: ; preds = %bb.i
+ %180 = icmp eq i32 %iftmp.190.0.i.i, 0 ; [#uses=1]
+ br i1 %180, label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i128, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i127
+ %181 = shl i32 %iftmp.190.0.i.i, 2 ; [#uses=1]
+ %182 = call i8* @_Z22btAlignedAllocInternalji(i32 %181, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %182 to i32* ; [#uses=1]
+ %.pre.i = load i32* %2, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i128
+
+_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i128: ; preds = %bb.i2.i.i, %bb.i.i127
+ %183 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %174, %bb.i.i127 ] ; [#uses=2]
+ %184 = phi i32* [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i127 ] ; [#uses=2]
+ %185 = icmp sgt i32 %183, 0 ; [#uses=1]
+ br i1 %185, label %bb.i4.i.i132, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i138
+
+bb.i4.i.i132: ; preds = %bb3.i.i.i137, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i128
+ %indvar.i.i.i130 = phi i32 [ %indvar.next.i.i.i135, %bb3.i.i.i137 ], [ 0, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i128 ] ; [#uses=3]
+ %scevgep.i.i.i131 = getelementptr i32* %184, i32 %indvar.i.i.i130 ; [#uses=2]
+ %186 = icmp eq i32* %scevgep.i.i.i131, null ; [#uses=1]
+ br i1 %186, label %bb3.i.i.i137, label %bb1.i5.i.i134
+
+bb1.i5.i.i134: ; preds = %bb.i4.i.i132
+ %187 = load i32** %126, align 4 ; [#uses=1]
+ %scevgep8.i.i.i133 = getelementptr i32* %187, i32 %indvar.i.i.i130 ; [#uses=1]
+ %188 = load i32* %scevgep8.i.i.i133, align 4 ; [#uses=1]
+ store i32 %188, i32* %scevgep.i.i.i131, align 4
+ br label %bb3.i.i.i137
+
+bb3.i.i.i137: ; preds = %bb1.i5.i.i134, %bb.i4.i.i132
+ %indvar.next.i.i.i135 = add i32 %indvar.i.i.i130, 1 ; [#uses=2]
+ %exitcond184 = icmp eq i32 %indvar.next.i.i.i135, %183 ; [#uses=1]
+ br i1 %exitcond184, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i138, label %bb.i4.i.i132
+
+_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i138: ; preds = %bb3.i.i.i137, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i128
+ %189 = load i32** %126, align 4 ; [#uses=2]
+ %190 = icmp eq i32* %189, null ; [#uses=1]
+ br i1 %190, label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, label %bb.i.i.i140
+
+bb.i.i.i140: ; preds = %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i138
+ %191 = load i8* %127, align 4 ; [#uses=1]
+ %toBool.i.i.i139 = icmp eq i8 %191, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i139, label %bb2.i.i.i142, label %bb1.i.i.i141
+
+bb1.i.i.i141: ; preds = %bb.i.i.i140
+ %192 = bitcast i32* %189 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %192)
+ br label %bb2.i.i.i142
+
+bb2.i.i.i142: ; preds = %bb1.i.i.i141, %bb.i.i.i140
+ store i32* null, i32** %126, align 4
+ br label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i142, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i138
+ store i8 1, i8* %127, align 4
+ store i32* %184, i32** %126, align 4
+ store i32 %iftmp.190.0.i.i, i32* %125, align 4
+ %.pre5.i = load i32* %2, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, %bb.i, %bb60
+ %193 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i ], [ %174, %bb60 ], [ %174, %bb.i ] ; [#uses=2]
+ %194 = load i32** %126, align 4 ; [#uses=1]
+ %195 = getelementptr inbounds i32* %194, i32 %193 ; [#uses=2]
+ %196 = icmp eq i32* %195, null ; [#uses=1]
+ br i1 %196, label %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store i32 %165, i32* %195, align 4
+ %.pre6.i = load i32* %2, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit
+
+_ZN20btAlignedObjectArrayIiE9push_backERKi.exit: ; preds = %bb2.i, %bb1.i
+ %197 = phi i32 [ %193, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %198 = add nsw i32 %197, 1 ; [#uses=1]
+ store i32 %198, i32* %2, align 4
+ %199 = add i32 %i41.0167, 1 ; [#uses=2]
+ %exitcond193 = icmp eq i32 %199, %svcount ; [#uses=1]
+ br i1 %exitcond193, label %bb62, label %bb42
+
+bb62: ; preds = %_ZN20btAlignedObjectArrayIiE9push_backERKi.exit
+ %200 = getelementptr inbounds [3 x float]* %bmin63, i32 0, i32 0 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %200, align 4
+ %201 = getelementptr inbounds [3 x float]* %bmin63, i32 0, i32 1 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %201, align 4
+ %202 = getelementptr inbounds [3 x float]* %bmin63, i32 0, i32 2 ; [#uses=2]
+ store float 0x47EFFFFFE0000000, float* %202, align 4
+ %203 = getelementptr inbounds [3 x float]* %bmax64, i32 0, i32 0 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %203, align 4
+ %204 = getelementptr inbounds [3 x float]* %bmax64, i32 0, i32 1 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %204, align 4
+ %205 = getelementptr inbounds [3 x float]* %bmax64, i32 0, i32 2 ; [#uses=2]
+ store float 0xC7EFFFFFE0000000, float* %205, align 4
+ %206 = load i32* %vcount, align 4 ; [#uses=4]
+ %207 = icmp eq i32 %206, 0 ; [#uses=1]
+ br i1 %207, label %bb82, label %bb.nph163
+
+bb.nph: ; preds = %bb.nph163, %bb80
+ %208 = phi float [ 0x47EFFFFFE0000000, %bb.nph163 ], [ %300, %bb80 ] ; [#uses=2]
+ %209 = phi float [ 0xC7EFFFFFE0000000, %bb.nph163 ], [ %221, %bb80 ] ; [#uses=2]
+ %210 = phi float [ 0x47EFFFFFE0000000, %bb.nph163 ], [ %298, %bb80 ] ; [#uses=2]
+ %211 = phi float [ 0xC7EFFFFFE0000000, %bb.nph163 ], [ %295, %bb80 ] ; [#uses=2]
+ %212 = phi float [ 0x47EFFFFFE0000000, %bb.nph163 ], [ %216, %bb80 ] ; [#uses=2]
+ %213 = phi float [ 0xC7EFFFFFE0000000, %bb.nph163 ], [ %218, %bb80 ] ; [#uses=2]
+ %i68.0162 = phi i32 [ 0, %bb.nph163 ], [ %222, %bb80 ] ; [#uses=4]
+ %scevgep177.2 = getelementptr %struct.btQuadWord* %vertices, i32 %i68.0162, i32 0, i32 2 ; [#uses=1]
+ %scevgep177.1 = getelementptr %struct.btQuadWord* %vertices, i32 %i68.0162, i32 0, i32 1 ; [#uses=1]
+ %scevgep177 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %i68.0162, i32 0, i32 0 ; [#uses=1]
+ %214 = load float* %scevgep177, align 4 ; [#uses=6]
+ %215 = fcmp olt float %214, %212 ; [#uses=1]
+ br i1 %215, label %bb74, label %bb75
+
+bb74: ; preds = %bb.nph
+ store float %214, float* %200, align 4
+ br label %bb75
+
+bb75: ; preds = %bb74, %bb.nph
+ %216 = phi float [ %214, %bb74 ], [ %212, %bb.nph ] ; [#uses=2]
+ %217 = fcmp ogt float %214, %213 ; [#uses=1]
+ br i1 %217, label %bb77, label %bb78
+
+bb77: ; preds = %bb75
+ store float %214, float* %203, align 4
+ br label %bb78
+
+bb78: ; preds = %bb77, %bb75
+ %218 = phi float [ %214, %bb77 ], [ %213, %bb75 ] ; [#uses=2]
+ %219 = load float* %scevgep177.1, align 4 ; [#uses=6]
+ %220 = fcmp olt float %219, %210 ; [#uses=1]
+ br i1 %220, label %bb74.1, label %bb75.1
+
+bb80: ; preds = %bb77.2, %bb75.2
+ %221 = phi float [ %296, %bb77.2 ], [ %209, %bb75.2 ] ; [#uses=2]
+ %222 = add i32 %i68.0162, 1 ; [#uses=2]
+ %exitcond179 = icmp eq i32 %222, %umax ; [#uses=1]
+ br i1 %exitcond179, label %bb82, label %bb.nph
+
+bb.nph163: ; preds = %bb62
+ %tmp178 = icmp ugt i32 %206, 1 ; [#uses=1]
+ %umax = select i1 %tmp178, i32 %206, i32 1 ; [#uses=1]
+ br label %bb.nph
+
+bb82: ; preds = %bb80, %bb62
+ %223 = phi float [ 0x47EFFFFFE0000000, %bb62 ], [ %300, %bb80 ] ; [#uses=2]
+ %224 = phi float [ 0xC7EFFFFFE0000000, %bb62 ], [ %221, %bb80 ] ; [#uses=1]
+ %225 = phi float [ 0x47EFFFFFE0000000, %bb62 ], [ %298, %bb80 ] ; [#uses=2]
+ %226 = phi float [ 0xC7EFFFFFE0000000, %bb62 ], [ %295, %bb80 ] ; [#uses=1]
+ %227 = phi float [ 0x47EFFFFFE0000000, %bb62 ], [ %216, %bb80 ] ; [#uses=2]
+ %228 = phi float [ 0xC7EFFFFFE0000000, %bb62 ], [ %218, %bb80 ] ; [#uses=1]
+ %229 = fsub float %228, %227 ; [#uses=6]
+ %230 = fsub float %226, %225 ; [#uses=6]
+ %231 = fsub float %224, %223 ; [#uses=6]
+ %232 = fcmp olt float %229, 0x3EB0C6F7A0000000 ; [#uses=2]
+ %233 = fcmp olt float %230, 0x3EB0C6F7A0000000 ; [#uses=2]
+ %or.cond120 = or i1 %232, %233 ; [#uses=1]
+ %234 = fcmp olt float %231, 0x3EB0C6F7A0000000 ; [#uses=2]
+ %or.cond121 = or i1 %or.cond120, %234 ; [#uses=1]
+ %235 = icmp ult i32 %206, 3 ; [#uses=1]
+ %or.cond226 = or i1 %or.cond121, %235 ; [#uses=1]
+ br i1 %or.cond226, label %bb86, label %bb112
+
+bb86: ; preds = %bb82
+ %236 = fmul float %229, 5.000000e-01 ; [#uses=1]
+ %237 = fadd float %236, %227 ; [#uses=2]
+ %238 = fmul float %230, 5.000000e-01 ; [#uses=1]
+ %239 = fadd float %238, %225 ; [#uses=2]
+ %240 = fmul float %231, 5.000000e-01 ; [#uses=1]
+ %241 = fadd float %240, %223 ; [#uses=2]
+ %.not = fcmp oge float %229, 0x3EB0C6F7A0000000 ; [#uses=1]
+ %242 = fcmp olt float %229, 0x47EFFFFFE0000000 ; [#uses=1]
+ %or.cond122 = and i1 %.not, %242 ; [#uses=1]
+ %len87.0 = select i1 %or.cond122, float %229, float 0x47EFFFFFE0000000 ; [#uses=2]
+ %.not123 = fcmp oge float %230, 0x3EB0C6F7A0000000 ; [#uses=1]
+ %243 = fcmp olt float %230, %len87.0 ; [#uses=1]
+ %or.cond124 = and i1 %.not123, %243 ; [#uses=1]
+ %len87.1 = select i1 %or.cond124, float %230, float %len87.0 ; [#uses=2]
+ %.not125 = fcmp oge float %231, 0x3EB0C6F7A0000000 ; [#uses=1]
+ %244 = fcmp olt float %231, %len87.1 ; [#uses=1]
+ %or.cond126 = and i1 %.not125, %244 ; [#uses=1]
+ %len87.2 = select i1 %or.cond126, float %231, float %len87.1 ; [#uses=4]
+ %245 = fcmp oeq float %len87.2, 0x47EFFFFFE0000000 ; [#uses=1]
+ br i1 %245, label %bb110, label %bb104
+
+bb104: ; preds = %bb86
+ br i1 %232, label %bb105, label %bb106
+
+bb105: ; preds = %bb104
+ %246 = fmul float %len87.2, 0x3FA99999A0000000 ; [#uses=1]
+ br label %bb106
+
+bb106: ; preds = %bb105, %bb104
+ %dx65.1 = phi float [ %246, %bb105 ], [ %229, %bb104 ] ; [#uses=2]
+ br i1 %233, label %bb107, label %bb108
+
+bb107: ; preds = %bb106
+ %247 = fmul float %len87.2, 0x3FA99999A0000000 ; [#uses=1]
+ br label %bb108
+
+bb108: ; preds = %bb107, %bb106
+ %dy66.1 = phi float [ %247, %bb107 ], [ %230, %bb106 ] ; [#uses=2]
+ br i1 %234, label %bb109, label %bb110
+
+bb109: ; preds = %bb108
+ %248 = fmul float %len87.2, 0x3FA99999A0000000 ; [#uses=1]
+ br label %bb110
+
+bb110: ; preds = %bb109, %bb108, %bb86
+ %dx65.0 = phi float [ %dx65.1, %bb109 ], [ %dx65.1, %bb108 ], [ 0x3F847AE140000000, %bb86 ] ; [#uses=2]
+ %dy66.0 = phi float [ %dy66.1, %bb109 ], [ %dy66.1, %bb108 ], [ 0x3F847AE140000000, %bb86 ] ; [#uses=2]
+ %dz67.0 = phi float [ %248, %bb109 ], [ %231, %bb108 ], [ 0x3F847AE140000000, %bb86 ] ; [#uses=2]
+ %249 = fsub float %237, %dx65.0 ; [#uses=4]
+ %250 = fadd float %237, %dx65.0 ; [#uses=4]
+ %251 = fsub float %239, %dy66.0 ; [#uses=4]
+ %252 = fadd float %239, %dy66.0 ; [#uses=4]
+ %253 = fsub float %241, %dz67.0 ; [#uses=4]
+ %254 = fadd float %241, %dz67.0 ; [#uses=4]
+ store i32 0, i32* %vcount, align 4
+ %255 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %249, float* %255, align 4
+ %256 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %251, float* %256, align 4
+ %257 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %253, float* %257, align 4
+ %258 = load i32* %vcount, align 4 ; [#uses=1]
+ %259 = add i32 %258, 1 ; [#uses=4]
+ store i32 %259, i32* %vcount, align 4
+ %260 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %259, i32 0, i32 0 ; [#uses=1]
+ store float %250, float* %260, align 4
+ %261 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %259, i32 0, i32 1 ; [#uses=1]
+ store float %251, float* %261, align 4
+ %262 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %259, i32 0, i32 2 ; [#uses=1]
+ store float %253, float* %262, align 4
+ %263 = load i32* %vcount, align 4 ; [#uses=1]
+ %264 = add i32 %263, 1 ; [#uses=4]
+ store i32 %264, i32* %vcount, align 4
+ %265 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %264, i32 0, i32 0 ; [#uses=1]
+ store float %250, float* %265, align 4
+ %266 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %264, i32 0, i32 1 ; [#uses=1]
+ store float %252, float* %266, align 4
+ %267 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %264, i32 0, i32 2 ; [#uses=1]
+ store float %253, float* %267, align 4
+ %268 = load i32* %vcount, align 4 ; [#uses=1]
+ %269 = add i32 %268, 1 ; [#uses=4]
+ store i32 %269, i32* %vcount, align 4
+ %270 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %269, i32 0, i32 0 ; [#uses=1]
+ store float %249, float* %270, align 4
+ %271 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %269, i32 0, i32 1 ; [#uses=1]
+ store float %252, float* %271, align 4
+ %272 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %269, i32 0, i32 2 ; [#uses=1]
+ store float %253, float* %272, align 4
+ %273 = load i32* %vcount, align 4 ; [#uses=1]
+ %274 = add i32 %273, 1 ; [#uses=4]
+ store i32 %274, i32* %vcount, align 4
+ %275 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %274, i32 0, i32 0 ; [#uses=1]
+ store float %249, float* %275, align 4
+ %276 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %274, i32 0, i32 1 ; [#uses=1]
+ store float %251, float* %276, align 4
+ %277 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %274, i32 0, i32 2 ; [#uses=1]
+ store float %254, float* %277, align 4
+ %278 = load i32* %vcount, align 4 ; [#uses=1]
+ %279 = add i32 %278, 1 ; [#uses=4]
+ store i32 %279, i32* %vcount, align 4
+ %280 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %279, i32 0, i32 0 ; [#uses=1]
+ store float %250, float* %280, align 4
+ %281 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %279, i32 0, i32 1 ; [#uses=1]
+ store float %251, float* %281, align 4
+ %282 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %279, i32 0, i32 2 ; [#uses=1]
+ store float %254, float* %282, align 4
+ %283 = load i32* %vcount, align 4 ; [#uses=1]
+ %284 = add i32 %283, 1 ; [#uses=4]
+ store i32 %284, i32* %vcount, align 4
+ %285 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %284, i32 0, i32 0 ; [#uses=1]
+ store float %250, float* %285, align 4
+ %286 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %284, i32 0, i32 1 ; [#uses=1]
+ store float %252, float* %286, align 4
+ %287 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %284, i32 0, i32 2 ; [#uses=1]
+ store float %254, float* %287, align 4
+ %288 = load i32* %vcount, align 4 ; [#uses=1]
+ %289 = add i32 %288, 1 ; [#uses=4]
+ store i32 %289, i32* %vcount, align 4
+ %290 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %289, i32 0, i32 0 ; [#uses=1]
+ store float %249, float* %290, align 4
+ %291 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %289, i32 0, i32 1 ; [#uses=1]
+ store float %252, float* %291, align 4
+ %292 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %289, i32 0, i32 2 ; [#uses=1]
+ store float %254, float* %292, align 4
+ %293 = load i32* %vcount, align 4 ; [#uses=1]
+ %294 = add i32 %293, 1 ; [#uses=1]
+ store i32 %294, i32* %vcount, align 4
+ ret i8 1
+
+bb112: ; preds = %bb82, %entry
+ %.0 = phi i8 [ 0, %entry ], [ 1, %bb82 ] ; [#uses=1]
+ ret i8 %.0
+
+bb78.1: ; preds = %bb77.1, %bb75.1
+ %295 = phi float [ %219, %bb77.1 ], [ %211, %bb75.1 ] ; [#uses=2]
+ %296 = load float* %scevgep177.2, align 4 ; [#uses=6]
+ %297 = fcmp olt float %296, %208 ; [#uses=1]
+ br i1 %297, label %bb74.2, label %bb75.2
+
+bb75.1: ; preds = %bb74.1, %bb78
+ %298 = phi float [ %219, %bb74.1 ], [ %210, %bb78 ] ; [#uses=2]
+ %299 = fcmp ogt float %219, %211 ; [#uses=1]
+ br i1 %299, label %bb77.1, label %bb78.1
+
+bb74.1: ; preds = %bb78
+ store float %219, float* %201, align 4
+ br label %bb75.1
+
+bb77.1: ; preds = %bb75.1
+ store float %219, float* %204, align 4
+ br label %bb78.1
+
+bb75.2: ; preds = %bb74.2, %bb78.1
+ %300 = phi float [ %296, %bb74.2 ], [ %208, %bb78.1 ] ; [#uses=2]
+ %301 = fcmp ogt float %296, %209 ; [#uses=1]
+ br i1 %301, label %bb77.2, label %bb80
+
+bb74.2: ; preds = %bb78.1
+ store float %296, float* %202, align 4
+ br label %bb75.2
+
+bb77.2: ; preds = %bb75.2
+ store float %296, float* %205, align 4
+ br label %bb80
+
+bb9.1: ; preds = %bb8.1, %bb7.1
+ %302 = phi float [ %40, %bb8.1 ], [ %32, %bb7.1 ] ; [#uses=2]
+ %303 = load float* %uglygep208209.2, align 4 ; [#uses=6]
+ %304 = fcmp olt float %303, %29 ; [#uses=1]
+ br i1 %304, label %bb6.2, label %bb7.2
+
+bb7.1: ; preds = %bb6.1, %bb9
+ %305 = phi float [ %40, %bb6.1 ], [ %31, %bb9 ] ; [#uses=3]
+ %306 = fcmp ogt float %40, %32 ; [#uses=1]
+ br i1 %306, label %bb8.1, label %bb9.1
+
+bb6.1: ; preds = %bb9
+ store float %40, float* %24, align 4
+ br label %bb7.1
+
+bb8.1: ; preds = %bb7.1
+ store float %40, float* %27, align 4
+ br label %bb9.1
+
+bb7.2: ; preds = %bb6.2, %bb9.1
+ %307 = phi float [ %303, %bb6.2 ], [ %29, %bb9.1 ] ; [#uses=3]
+ %308 = fcmp ogt float %303, %30 ; [#uses=1]
+ br i1 %308, label %bb8.2, label %bb11
+
+bb6.2: ; preds = %bb9.1
+ store float %303, float* %25, align 4
+ br label %bb7.2
+
+bb8.2: ; preds = %bb7.2
+ store float %303, float* %28, align 4
+ br label %bb11
+}
+
+; [#uses=1]
+define void @_ZN11HullLibrary16BringOutYourDeadEPK9btVector3jPS0_RjPjj(%struct.HullLibrary* nocapture %this, %struct.btQuadWord* nocapture %verts, i32 %vcount, %struct.btQuadWord* nocapture %overts, i32* nocapture %ocount, i32* nocapture %indices, i32 %indexcount) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 1 ; [#uses=5]
+ %1 = load i32* %0, align 4 ; [#uses=3]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.i2.i.i, label %invcont3
+
+bb.i2.i.i: ; preds = %entry
+ %3 = shl i32 %1, 2 ; [#uses=1]
+ %4 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %3, i32 16)
+ to label %bb7.i unwind label %lpad ; [#uses=2]
+
+bb7.i: ; preds = %bb10.i, %bb.i2.i.i
+ %indvar.i = phi i32 [ %indvar.next.i, %bb10.i ], [ 0, %bb.i2.i.i ] ; [#uses=2]
+ %tmp118 = shl i32 %indvar.i, 2 ; [#uses=1]
+ %scevgep119 = getelementptr i8* %4, i32 %tmp118 ; [#uses=2]
+ %5 = icmp eq i8* %scevgep119, null ; [#uses=1]
+ br i1 %5, label %bb10.i, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ %scevgep18.i = bitcast i8* %scevgep119 to i32* ; [#uses=1]
+ store i32 0, i32* %scevgep18.i, align 4
+ br label %bb10.i
+
+bb10.i: ; preds = %bb8.i, %bb7.i
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond117 = icmp eq i32 %indvar.next.i, %1 ; [#uses=1]
+ br i1 %exitcond117, label %_ZN20btAlignedObjectArrayIiE6resizeEiRKi.exit, label %bb7.i
+
+_ZN20btAlignedObjectArrayIiE6resizeEiRKi.exit: ; preds = %bb10.i
+ %phitmp.i.i = bitcast i8* %4 to i32* ; [#uses=3]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ %6 = icmp sgt i32 %.pre, 0 ; [#uses=1]
+ br i1 %6, label %bb.nph107, label %invcont3
+
+bb.nph107: ; preds = %_ZN20btAlignedObjectArrayIiE6resizeEiRKi.exit
+ %7 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph107
+ %i.0106 = phi i32 [ 0, %bb.nph107 ], [ %10, %bb ] ; [#uses=3]
+ %scevgep114 = getelementptr i32* %phitmp.i.i, i32 %i.0106 ; [#uses=1]
+ %8 = load i32** %7, align 4 ; [#uses=1]
+ %scevgep115 = getelementptr i32* %8, i32 %i.0106 ; [#uses=1]
+ %9 = load i32* %scevgep115, align 4 ; [#uses=1]
+ store i32 %9, i32* %scevgep114, align 4
+ %10 = add nsw i32 %i.0106, 1 ; [#uses=2]
+ %11 = load i32* %0, align 4 ; [#uses=1]
+ %12 = icmp sgt i32 %11, %10 ; [#uses=1]
+ br i1 %12, label %bb, label %invcont3
+
+invcont3: ; preds = %bb, %_ZN20btAlignedObjectArrayIiE6resizeEiRKi.exit, %entry
+ %tmpIndices.3.1121 = phi i32* [ %phitmp.i.i, %_ZN20btAlignedObjectArrayIiE6resizeEiRKi.exit ], [ %phitmp.i.i, %bb ], [ null, %entry ] ; [#uses=5]
+ %13 = icmp sgt i32 %vcount, 0 ; [#uses=1]
+ br i1 %13, label %bb.i2.i.i74, label %invcont4
+
+bb.i2.i.i74: ; preds = %invcont3
+ %14 = shl i32 %vcount, 2 ; [#uses=1]
+ %15 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %14, i32 16)
+ to label %bb7.i94 unwind label %_ZN20btAlignedObjectArrayIjED1Ev.exit ; [#uses=2]
+
+bb7.i94: ; preds = %bb10.i98, %bb.i2.i.i74
+ %indvar.i91 = phi i32 [ %indvar.next.i96, %bb10.i98 ], [ 0, %bb.i2.i.i74 ] ; [#uses=2]
+ %tmp111 = shl i32 %indvar.i91, 2 ; [#uses=1]
+ %scevgep112 = getelementptr i8* %15, i32 %tmp111 ; [#uses=2]
+ %16 = icmp eq i8* %scevgep112, null ; [#uses=1]
+ br i1 %16, label %bb10.i98, label %bb8.i95
+
+bb8.i95: ; preds = %bb7.i94
+ %scevgep18.i93 = bitcast i8* %scevgep112 to i32* ; [#uses=1]
+ store i32 0, i32* %scevgep18.i93, align 4
+ br label %bb10.i98
+
+bb10.i98: ; preds = %bb8.i95, %bb7.i94
+ %indvar.next.i96 = add i32 %indvar.i91, 1 ; [#uses=2]
+ %exitcond110 = icmp eq i32 %indvar.next.i96, %vcount ; [#uses=1]
+ br i1 %exitcond110, label %invcont4.loopexit, label %bb7.i94
+
+invcont4.loopexit: ; preds = %bb10.i98
+ %phitmp.i.i72 = bitcast i8* %15 to i32* ; [#uses=1]
+ br label %invcont4
+
+invcont4: ; preds = %invcont4.loopexit, %invcont3
+ %usedIndices.3.1 = phi i32* [ null, %invcont3 ], [ %phitmp.i.i72, %invcont4.loopexit ] ; [#uses=3]
+ %17 = shl i32 %vcount, 2 ; [#uses=1]
+ %18 = bitcast i32* %usedIndices.3.1 to i8* ; [#uses=2]
+ tail call void @llvm.memset.p0i8.i32(i8* %18, i8 0, i32 %17, i32 4, i1 false)
+ store i32 0, i32* %ocount, align 4
+ %19 = icmp sgt i32 %indexcount, 0 ; [#uses=1]
+ br i1 %19, label %bb.nph105, label %bb21
+
+bb.nph105: ; preds = %invcont4
+ %20 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 1, i32 3 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb16, %bb.nph105
+ %i.1104 = phi i32 [ 0, %bb.nph105 ], [ %49, %bb16 ] ; [#uses=2]
+ %scevgep109 = getelementptr i32* %indices, i32 %i.1104 ; [#uses=3]
+ %21 = load i32* %scevgep109, align 4 ; [#uses=5]
+ %22 = getelementptr inbounds i32* %usedIndices.3.1, i32 %21 ; [#uses=2]
+ %23 = load i32* %22, align 4 ; [#uses=2]
+ %24 = icmp eq i32 %23, 0 ; [#uses=1]
+ br i1 %24, label %bb8, label %bb7
+
+bb7: ; preds = %bb5
+ %25 = add i32 %23, -1 ; [#uses=1]
+ store i32 %25, i32* %scevgep109, align 4
+ br label %bb16
+
+bb8: ; preds = %bb5
+ %26 = load i32* %ocount, align 4 ; [#uses=1]
+ store i32 %26, i32* %scevgep109, align 4
+ %27 = load i32* %ocount, align 4 ; [#uses=1]
+ %28 = getelementptr inbounds %struct.btQuadWord* %overts, i32 %27, i32 0, i32 0 ; [#uses=1]
+ %29 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %21, i32 0, i32 0 ; [#uses=1]
+ %30 = load float* %29, align 4 ; [#uses=1]
+ store float %30, float* %28, align 4
+ %31 = load i32* %ocount, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %21, i32 0, i32 1 ; [#uses=1]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %overts, i32 %31, i32 0, i32 1 ; [#uses=1]
+ store float %33, float* %34, align 4
+ %35 = load i32* %ocount, align 4 ; [#uses=1]
+ %36 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %21, i32 0, i32 2 ; [#uses=1]
+ %37 = load float* %36, align 4 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %overts, i32 %35, i32 0, i32 2 ; [#uses=1]
+ store float %37, float* %38, align 4
+ %39 = load i32* %0, align 4 ; [#uses=1]
+ %40 = icmp sgt i32 %39, 0 ; [#uses=1]
+ br i1 %40, label %bb9, label %bb15
+
+bb9: ; preds = %bb12, %bb8
+ %k.0103 = phi i32 [ %tmp, %bb12 ], [ 0, %bb8 ] ; [#uses=3]
+ %scevgep108 = getelementptr i32* %tmpIndices.3.1121, i32 %k.0103 ; [#uses=1]
+ %tmp = add i32 %k.0103, 1 ; [#uses=2]
+ %41 = load i32* %scevgep108, align 4 ; [#uses=1]
+ %42 = icmp eq i32 %41, %21 ; [#uses=1]
+ br i1 %42, label %bb11, label %bb12
+
+bb11: ; preds = %bb9
+ %43 = load i32** %20, align 4 ; [#uses=1]
+ %44 = load i32* %ocount, align 4 ; [#uses=1]
+ %scevgep = getelementptr i32* %43, i32 %k.0103 ; [#uses=1]
+ store i32 %44, i32* %scevgep, align 4
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb9
+ %45 = load i32* %0, align 4 ; [#uses=1]
+ %46 = icmp sgt i32 %45, %tmp ; [#uses=1]
+ br i1 %46, label %bb9, label %bb15
+
+bb15: ; preds = %bb12, %bb8
+ %47 = load i32* %ocount, align 4 ; [#uses=1]
+ %48 = add i32 %47, 1 ; [#uses=2]
+ store i32 %48, i32* %ocount, align 4
+ store i32 %48, i32* %22, align 4
+ br label %bb16
+
+bb16: ; preds = %bb15, %bb7
+ %49 = add nsw i32 %i.1104, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %49, %indexcount ; [#uses=1]
+ br i1 %exitcond, label %bb21, label %bb5
+
+bb21: ; preds = %bb16, %invcont4
+ %50 = icmp eq i32* %usedIndices.3.1, null ; [#uses=1]
+ br i1 %50, label %bb28, label %bb1.i.i.i65
+
+bb1.i.i.i65: ; preds = %bb21
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %18)
+ to label %bb28 unwind label %lpad
+
+invcont26: ; preds = %bb1.i.i.i, %ppad
+ tail call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb28: ; preds = %bb1.i.i.i65, %bb21
+ %51 = icmp eq i32* %tmpIndices.3.1121, null ; [#uses=1]
+ br i1 %51, label %_ZN20btAlignedObjectArrayIiED1Ev.exit62, label %bb2.i.i.i61
+
+bb2.i.i.i61: ; preds = %bb28
+ %52 = bitcast i32* %tmpIndices.3.1121 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %52)
+ ret void
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit62: ; preds = %bb28
+ ret void
+
+lpad: ; preds = %bb1.i.i.i65, %bb.i2.i.i
+ %tmpIndices.3.2 = phi i32* [ %tmpIndices.3.1121, %bb1.i.i.i65 ], [ null, %bb.i2.i.i ] ; [#uses=1]
+ %eh_ptr = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select30 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+_ZN20btAlignedObjectArrayIjED1Ev.exit: ; preds = %bb.i2.i.i74
+ %eh_ptr32 = tail call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select34 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr32, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad39: ; preds = %bb1.i.i.i
+ %eh_ptr40 = tail call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select42 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr40, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ tail call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIjED1Ev.exit, %lpad
+ %tmpIndices.3.3 = phi i32* [ %tmpIndices.3.2, %lpad ], [ %tmpIndices.3.1121, %_ZN20btAlignedObjectArrayIjED1Ev.exit ] ; [#uses=2]
+ %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr32, %_ZN20btAlignedObjectArrayIjED1Ev.exit ] ; [#uses=1]
+ %53 = icmp eq i32* %tmpIndices.3.3, null ; [#uses=1]
+ br i1 %53, label %invcont26, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %ppad
+ %54 = bitcast i32* %tmpIndices.3.3 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %54)
+ to label %invcont26 unwind label %lpad39
+}
+
+; [#uses=0]
+define void @_Z11ReleaseHullR11PHullResult(%struct.PHullResult* nocapture %result) {
+entry:
+ %0 = getelementptr inbounds %struct.PHullResult* %result, i32 0, i32 4, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.PHullResult* %result, i32 0, i32 4, i32 3 ; [#uses=3]
+ %4 = load i32** %3, align 4 ; [#uses=2]
+ %5 = icmp eq i32* %4, null ; [#uses=1]
+ br i1 %5, label %_ZN20btAlignedObjectArrayIjE5clearEv.exit, label %bb.i.i
+
+bb.i.i: ; preds = %bb
+ %6 = getelementptr inbounds %struct.PHullResult* %result, i32 0, i32 4, i32 4 ; [#uses=1]
+ %7 = load i8* %6, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %7, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %8 = bitcast i32* %4 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %8)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store i32* null, i32** %3, align 4
+ br label %_ZN20btAlignedObjectArrayIjE5clearEv.exit
+
+_ZN20btAlignedObjectArrayIjE5clearEv.exit: ; preds = %bb2.i.i, %bb
+ %9 = getelementptr inbounds %struct.PHullResult* %result, i32 0, i32 4, i32 4 ; [#uses=1]
+ store i8 1, i8* %9, align 4
+ store i32* null, i32** %3, align 4
+ store i32 0, i32* %0, align 4
+ %10 = getelementptr inbounds %struct.PHullResult* %result, i32 0, i32 4, i32 2 ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayIjE5clearEv.exit, %entry
+ %11 = getelementptr inbounds %struct.PHullResult* %result, i32 0, i32 0 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.PHullResult* %result, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.PHullResult* %result, i32 0, i32 3 ; [#uses=1]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %13, align 4
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZN11HullLibrary13ReleaseResultER10HullResult(%struct.HullLibrary* nocapture %this, %struct.HullResult* nocapture %result) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 2, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %3 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 2, i32 3 ; [#uses=3]
+ %5 = load %struct.btQuadWord** %4, align 4 ; [#uses=2]
+ %6 = icmp eq %struct.btQuadWord* %5, null ; [#uses=1]
+ br i1 %6, label %_ZN20btAlignedObjectArrayI9btVector3E5clearEv.exit, label %bb.i.i7
+
+bb.i.i7: ; preds = %bb
+ %7 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 2, i32 4 ; [#uses=1]
+ %8 = load i8* %7, align 4 ; [#uses=1]
+ %toBool.i.i6 = icmp eq i8 %8, 0 ; [#uses=1]
+ br i1 %toBool.i.i6, label %bb2.i.i9, label %bb1.i.i8
+
+bb1.i.i8: ; preds = %bb.i.i7
+ %9 = bitcast %struct.btQuadWord* %5 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %9)
+ br label %bb2.i.i9
+
+bb2.i.i9: ; preds = %bb1.i.i8, %bb.i.i7
+ store %struct.btQuadWord* null, %struct.btQuadWord** %4, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3E5clearEv.exit
+
+_ZN20btAlignedObjectArrayI9btVector3E5clearEv.exit: ; preds = %bb2.i.i9, %bb
+ %10 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 2, i32 4 ; [#uses=1]
+ store i8 1, i8* %10, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %4, align 4
+ store i32 0, i32* %0, align 4
+ %11 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 2, i32 2 ; [#uses=1]
+ store i32 0, i32* %11, align 4
+ br label %bb1
+
+bb1: ; preds = %_ZN20btAlignedObjectArrayI9btVector3E5clearEv.exit, %entry
+ %12 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 5, i32 1 ; [#uses=2]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = icmp eq i32 %13, 0 ; [#uses=1]
+ br i1 %14, label %bb4, label %bb3
+
+bb3: ; preds = %bb1
+ %15 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %15, align 4
+ %16 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 5, i32 3 ; [#uses=3]
+ %17 = load i32** %16, align 4 ; [#uses=2]
+ %18 = icmp eq i32* %17, null ; [#uses=1]
+ br i1 %18, label %_ZN20btAlignedObjectArrayIjE5clearEv.exit, label %bb.i.i
+
+bb.i.i: ; preds = %bb3
+ %19 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 5, i32 4 ; [#uses=1]
+ %20 = load i8* %19, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %20, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %21 = bitcast i32* %17 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %21)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store i32* null, i32** %16, align 4
+ br label %_ZN20btAlignedObjectArrayIjE5clearEv.exit
+
+_ZN20btAlignedObjectArrayIjE5clearEv.exit: ; preds = %bb2.i.i, %bb3
+ %22 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 5, i32 4 ; [#uses=1]
+ store i8 1, i8* %22, align 4
+ store i32* null, i32** %16, align 4
+ store i32 0, i32* %12, align 4
+ %23 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 5, i32 2 ; [#uses=1]
+ store i32 0, i32* %23, align 4
+ ret i32 0
+
+bb4: ; preds = %bb1
+ ret i32 0
+}
+
+; [#uses=7]
+define %struct.btHullTriangle* @_ZN11HullLibrary16allocateTriangleEiii(%struct.HullLibrary* nocapture %this, i32 %a, i32 %b, i32 %c) align 2 {
+entry:
+ %0 = tail call i8* @_Z22btAlignedAllocInternalji(i32 36, i32 16) ; [#uses=11]
+ %1 = bitcast i8* %0 to %struct.btHullTriangle* ; [#uses=2]
+ %2 = icmp eq i8* %0, null ; [#uses=1]
+ br i1 %2, label %bb2, label %bb
+
+bb: ; preds = %entry
+ %3 = bitcast i8* %0 to i32* ; [#uses=1]
+ store i32 %a, i32* %3, align 4
+ %4 = getelementptr inbounds i8* %0, i32 4 ; [#uses=1]
+ %5 = bitcast i8* %4 to i32* ; [#uses=1]
+ store i32 %b, i32* %5, align 4
+ %6 = getelementptr inbounds i8* %0, i32 8 ; [#uses=1]
+ %7 = bitcast i8* %6 to i32* ; [#uses=1]
+ store i32 %c, i32* %7, align 4
+ %8 = getelementptr inbounds i8* %0, i32 12 ; [#uses=1]
+ %9 = bitcast i8* %8 to i32* ; [#uses=1]
+ store i32 -1, i32* %9, align 4
+ %10 = getelementptr inbounds i8* %0, i32 16 ; [#uses=1]
+ %11 = bitcast i8* %10 to i32* ; [#uses=1]
+ store i32 -1, i32* %11, align 4
+ %12 = getelementptr inbounds i8* %0, i32 20 ; [#uses=1]
+ %13 = bitcast i8* %12 to i32* ; [#uses=1]
+ store i32 -1, i32* %13, align 4
+ %14 = getelementptr inbounds i8* %0, i32 28 ; [#uses=1]
+ %15 = bitcast i8* %14 to i32* ; [#uses=1]
+ store i32 -1, i32* %15, align 4
+ %16 = getelementptr inbounds i8* %0, i32 32 ; [#uses=1]
+ %17 = bitcast i8* %16 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %17, align 4
+ br label %bb2
+
+bb2: ; preds = %bb, %entry
+ %18 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 1 ; [#uses=6]
+ %19 = load i32* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds i8* %0, i32 24 ; [#uses=1]
+ %21 = bitcast i8* %20 to i32* ; [#uses=1]
+ store i32 %19, i32* %21, align 4
+ %22 = load i32* %18, align 4 ; [#uses=6]
+ %23 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 2 ; [#uses=2]
+ %24 = load i32* %23, align 4 ; [#uses=2]
+ %25 = icmp eq i32 %24, %22 ; [#uses=1]
+ br i1 %25, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb2
+ %26 = icmp eq i32 %22, 0 ; [#uses=1]
+ %27 = shl i32 %22, 1 ; [#uses=1]
+ %iftmp.185.0.i.i = select i1 %26, i32 1, i32 %27 ; [#uses=4]
+ %28 = icmp slt i32 %24, %iftmp.185.0.i.i ; [#uses=1]
+ br i1 %28, label %bb.i.i, label %bb1.i
+
+bb.i.i: ; preds = %bb.i
+ %29 = icmp eq i32 %iftmp.185.0.i.i, 0 ; [#uses=1]
+ br i1 %29, label %_ZN20btAlignedObjectArrayIP14btHullTriangleE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i
+ %30 = shl i32 %iftmp.185.0.i.i, 2 ; [#uses=1]
+ %31 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %30, i32 16) ; [#uses=1]
+ %phitmp.i.i = bitcast i8* %31 to %struct.btHullTriangle** ; [#uses=1]
+ %.pre.i = load i32* %18, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP14btHullTriangleE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIP14btHullTriangleE8allocateEi.exit.i.i: ; preds = %bb.i2.i.i, %bb.i.i
+ %32 = phi i32 [ %.pre.i, %bb.i2.i.i ], [ %22, %bb.i.i ] ; [#uses=2]
+ %33 = phi %struct.btHullTriangle** [ %phitmp.i.i, %bb.i2.i.i ], [ null, %bb.i.i ] ; [#uses=2]
+ %34 = icmp sgt i32 %32, 0 ; [#uses=1]
+ br i1 %34, label %bb.nph.i.i.i, label %_ZNK20btAlignedObjectArrayIP14btHullTriangleE4copyEiiPS1_.exit.i.i
+
+bb.nph.i.i.i: ; preds = %_ZN20btAlignedObjectArrayIP14btHullTriangleE8allocateEi.exit.i.i
+ %35 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %bb.nph.i.i.i
+ %indvar.i.i.i = phi i32 [ 0, %bb.nph.i.i.i ], [ %indvar.next.i.i.i, %bb3.i.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr %struct.btHullTriangle** %33, i32 %indvar.i.i.i ; [#uses=2]
+ %36 = icmp eq %struct.btHullTriangle** %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %36, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %37 = load %struct.btHullTriangle*** %35, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr %struct.btHullTriangle** %37, i32 %indvar.i.i.i ; [#uses=1]
+ %38 = load %struct.btHullTriangle** %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store %struct.btHullTriangle* %38, %struct.btHullTriangle** %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i.i.i, %32 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayIP14btHullTriangleE4copyEiiPS1_.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIP14btHullTriangleE4copyEiiPS1_.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIP14btHullTriangleE8allocateEi.exit.i.i
+ %39 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 3 ; [#uses=3]
+ %40 = load %struct.btHullTriangle*** %39, align 4 ; [#uses=2]
+ %41 = icmp eq %struct.btHullTriangle** %40, null ; [#uses=1]
+ br i1 %41, label %_ZN20btAlignedObjectArrayIP14btHullTriangleE10deallocateEv.exit.i.i, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP14btHullTriangleE4copyEiiPS1_.exit.i.i
+ %42 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %43 = load i8* %42, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %43, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %44 = bitcast %struct.btHullTriangle** %40 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %44)
+ br label %bb2.i.i.i
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btHullTriangle** null, %struct.btHullTriangle*** %39, align 4
+ br label %_ZN20btAlignedObjectArrayIP14btHullTriangleE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIP14btHullTriangleE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i, %_ZNK20btAlignedObjectArrayIP14btHullTriangleE4copyEiiPS1_.exit.i.i
+ %45 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %45, align 4
+ store %struct.btHullTriangle** %33, %struct.btHullTriangle*** %39, align 4
+ store i32 %iftmp.185.0.i.i, i32* %23, align 4
+ %.pre5.i = load i32* %18, align 4 ; [#uses=1]
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIP14btHullTriangleE10deallocateEv.exit.i.i, %bb.i, %bb2
+ %46 = phi i32 [ %.pre5.i, %_ZN20btAlignedObjectArrayIP14btHullTriangleE10deallocateEv.exit.i.i ], [ %22, %bb2 ], [ %22, %bb.i ] ; [#uses=2]
+ %47 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %48 = load %struct.btHullTriangle*** %47, align 4 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btHullTriangle** %48, i32 %46 ; [#uses=2]
+ %50 = icmp eq %struct.btHullTriangle** %49, null ; [#uses=1]
+ br i1 %50, label %_ZN20btAlignedObjectArrayIP14btHullTriangleE9push_backERKS1_.exit, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store %struct.btHullTriangle* %1, %struct.btHullTriangle** %49, align 4
+ %.pre6.i = load i32* %18, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIP14btHullTriangleE9push_backERKS1_.exit
+
+_ZN20btAlignedObjectArrayIP14btHullTriangleE9push_backERKS1_.exit: ; preds = %bb2.i, %bb1.i
+ %51 = phi i32 [ %46, %bb1.i ], [ %.pre6.i, %bb2.i ] ; [#uses=1]
+ %52 = add nsw i32 %51, 1 ; [#uses=1]
+ store i32 %52, i32* %18, align 4
+ ret %struct.btHullTriangle* %1
+}
+
+; [#uses=0]
+define void @_ZN11HullLibrary18deAllocateTriangleEP14btHullTriangle(%struct.HullLibrary* nocapture %this, %struct.btHullTriangle* %tri) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHullTriangle* %tri, i32 0, i32 2 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %3 = load %struct.btHullTriangle*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btHullTriangle** %3, i32 %1 ; [#uses=1]
+ store %struct.btHullTriangle* null, %struct.btHullTriangle** %4, align 4
+ %5 = bitcast %struct.btHullTriangle* %tri to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %5)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN11HullLibrary9removeb2bEP14btHullTriangleS1_(%struct.HullLibrary* nocapture %this, %struct.btHullTriangle* %s, %struct.btHullTriangle* %t) align 2 {
+entry:
+ tail call void @_ZN11HullLibrary6b2bfixEP14btHullTriangleS1_(%struct.HullLibrary* %this, %struct.btHullTriangle* %s, %struct.btHullTriangle* %t)
+ %0 = getelementptr inbounds %struct.btHullTriangle* %s, i32 0, i32 2 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 3 ; [#uses=2]
+ %3 = load %struct.btHullTriangle*** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btHullTriangle** %3, i32 %1 ; [#uses=1]
+ store %struct.btHullTriangle* null, %struct.btHullTriangle** %4, align 4
+ %5 = bitcast %struct.btHullTriangle* %s to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %5)
+ %6 = getelementptr inbounds %struct.btHullTriangle* %t, i32 0, i32 2 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = load %struct.btHullTriangle*** %2, align 4 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btHullTriangle** %8, i32 %7 ; [#uses=1]
+ store %struct.btHullTriangle* null, %struct.btHullTriangle** %9, align 4
+ %10 = bitcast %struct.btHullTriangle* %t to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %10)
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN11HullLibrary7extrudeEP14btHullTrianglei(%struct.HullLibrary* nocapture %this, %struct.btHullTriangle* %t0, i32 %v) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btHullTriangle* %t0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = getelementptr inbounds %struct.btHullTriangle* %t0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %3 = load i32* %2, align 4 ; [#uses=6]
+ %4 = getelementptr inbounds %struct.btHullTriangle* %t0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=6]
+ %6 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=5]
+ %8 = tail call %struct.btHullTriangle* @_ZN11HullLibrary16allocateTriangleEiii(%struct.HullLibrary* %this, i32 %v, i32 %3, i32 %5) ; [#uses=6]
+ %9 = add nsw i32 %7, 2 ; [#uses=3]
+ %10 = add nsw i32 %7, 1 ; [#uses=3]
+ %11 = getelementptr inbounds %struct.btHullTriangle* %t0, i32 0, i32 1, i32 0 ; [#uses=4]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btHullTriangle* %8, i32 0, i32 1, i32 0 ; [#uses=2]
+ store i32 %12, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.btHullTriangle* %8, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 %10, i32* %14, align 4
+ %15 = getelementptr inbounds %struct.btHullTriangle* %8, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 %9, i32* %15, align 4
+ %16 = load i32* %11, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 3 ; [#uses=13]
+ %18 = load %struct.btHullTriangle*** %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btHullTriangle** %18, i32 %16 ; [#uses=1]
+ %20 = load %struct.btHullTriangle** %19, align 4 ; [#uses=4]
+ %this21.i = bitcast %struct.btHullTriangle* %20 to i8* ; [#uses=1]
+ %21 = getelementptr inbounds %struct.btHullTriangle* %20, i32 0, i32 0, i32 0 ; [#uses=2]
+ br label %bb14.i
+
+bb.i13: ; preds = %bb14.i
+ %tmp79 = shl i32 %37, 2 ; [#uses=1]
+ %uglygep80 = getelementptr i8* %this21.i, i32 %tmp79 ; [#uses=1]
+ %uglygep23.i = bitcast i8* %uglygep80 to i32* ; [#uses=1]
+ %tmp20.i = add i32 %37, 1 ; [#uses=3]
+ %tmp.i = add i32 %37, 2 ; [#uses=1]
+ %22 = srem i32 %tmp20.i, 3 ; [#uses=2]
+ %23 = srem i32 %tmp.i, 3 ; [#uses=2]
+ %24 = load i32* %uglygep23.i, align 4 ; [#uses=2]
+ %25 = icmp eq i32 %24, %3 ; [#uses=1]
+ br i1 %25, label %bb1.i14, label %bb3.i
+
+bb1.i14: ; preds = %bb.i13
+ %26 = getelementptr inbounds i32* %21, i32 %22 ; [#uses=1]
+ %27 = load i32* %26, align 4 ; [#uses=1]
+ %28 = icmp eq i32 %27, %5 ; [#uses=1]
+ br i1 %28, label %bb5.i, label %bb3.i
+
+bb3.i: ; preds = %bb1.i14, %bb.i13
+ %29 = icmp eq i32 %24, %5 ; [#uses=1]
+ br i1 %29, label %bb7.i, label %bb14.i
+
+bb5.i: ; preds = %bb1.i14
+ %30 = getelementptr inbounds %struct.btHullTriangle* %20, i32 0, i32 1, i32 0 ; [#uses=1]
+ %31 = getelementptr inbounds i32* %30, i32 %23 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit
+
+bb7.i: ; preds = %bb3.i
+ %32 = getelementptr inbounds i32* %21, i32 %22 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ %34 = icmp eq i32 %33, %3 ; [#uses=1]
+ br i1 %34, label %bb12.i, label %bb14.i
+
+bb12.i: ; preds = %bb7.i
+ %35 = getelementptr inbounds %struct.btHullTriangle* %20, i32 0, i32 1, i32 0 ; [#uses=1]
+ %36 = getelementptr inbounds i32* %35, i32 %23 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit
+
+bb14.i: ; preds = %bb7.i, %bb3.i, %entry
+ %37 = phi i32 [ 0, %entry ], [ %tmp20.i, %bb3.i ], [ %tmp20.i, %bb7.i ] ; [#uses=4]
+ %38 = icmp slt i32 %37, 3 ; [#uses=1]
+ br i1 %38, label %bb.i13, label %_ZN14btHullTriangle4neibEii.exit
+
+_ZN14btHullTriangle4neibEii.exit: ; preds = %bb14.i, %bb12.i, %bb5.i
+ %39 = phi i32* [ %36, %bb12.i ], [ %31, %bb5.i ], [ @_ZZN14btHullTriangle4neibEiiE2er, %bb14.i ] ; [#uses=1]
+ store i32 %7, i32* %39, align 4
+ %40 = tail call %struct.btHullTriangle* @_ZN11HullLibrary16allocateTriangleEiii(%struct.HullLibrary* %this, i32 %v, i32 %5, i32 %1) ; [#uses=6]
+ %41 = getelementptr inbounds i32* %11, i32 1 ; [#uses=2]
+ %42 = load i32* %41, align 4 ; [#uses=1]
+ %43 = getelementptr inbounds %struct.btHullTriangle* %40, i32 0, i32 1, i32 0 ; [#uses=2]
+ store i32 %42, i32* %43, align 4
+ %44 = getelementptr inbounds %struct.btHullTriangle* %40, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 %9, i32* %44, align 4
+ %45 = getelementptr inbounds %struct.btHullTriangle* %40, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 %7, i32* %45, align 4
+ %46 = load i32* %41, align 4 ; [#uses=1]
+ %47 = load %struct.btHullTriangle*** %17, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btHullTriangle** %47, i32 %46 ; [#uses=1]
+ %49 = load %struct.btHullTriangle** %48, align 4 ; [#uses=4]
+ %this21.i35 = bitcast %struct.btHullTriangle* %49 to i8* ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btHullTriangle* %49, i32 0, i32 0, i32 0 ; [#uses=2]
+ br label %bb14.i47
+
+bb.i41: ; preds = %bb14.i47
+ %tmp72 = shl i32 %66, 2 ; [#uses=1]
+ %uglygep73 = getelementptr i8* %this21.i35, i32 %tmp72 ; [#uses=1]
+ %uglygep23.i38 = bitcast i8* %uglygep73 to i32* ; [#uses=1]
+ %tmp20.i39 = add i32 %66, 1 ; [#uses=3]
+ %tmp.i40 = add i32 %66, 2 ; [#uses=1]
+ %51 = srem i32 %tmp20.i39, 3 ; [#uses=2]
+ %52 = srem i32 %tmp.i40, 3 ; [#uses=2]
+ %53 = load i32* %uglygep23.i38, align 4 ; [#uses=2]
+ %54 = icmp eq i32 %53, %5 ; [#uses=1]
+ br i1 %54, label %bb1.i42, label %bb3.i43
+
+bb1.i42: ; preds = %bb.i41
+ %55 = getelementptr inbounds i32* %50, i32 %51 ; [#uses=1]
+ %56 = load i32* %55, align 4 ; [#uses=1]
+ %57 = icmp eq i32 %56, %1 ; [#uses=1]
+ br i1 %57, label %bb5.i44, label %bb3.i43
+
+bb3.i43: ; preds = %bb1.i42, %bb.i41
+ %58 = icmp eq i32 %53, %1 ; [#uses=1]
+ br i1 %58, label %bb7.i45, label %bb14.i47
+
+bb5.i44: ; preds = %bb1.i42
+ %59 = getelementptr inbounds %struct.btHullTriangle* %49, i32 0, i32 1, i32 0 ; [#uses=1]
+ %60 = getelementptr inbounds i32* %59, i32 %52 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit49
+
+bb7.i45: ; preds = %bb3.i43
+ %61 = getelementptr inbounds i32* %50, i32 %51 ; [#uses=1]
+ %62 = load i32* %61, align 4 ; [#uses=1]
+ %63 = icmp eq i32 %62, %5 ; [#uses=1]
+ br i1 %63, label %bb12.i46, label %bb14.i47
+
+bb12.i46: ; preds = %bb7.i45
+ %64 = getelementptr inbounds %struct.btHullTriangle* %49, i32 0, i32 1, i32 0 ; [#uses=1]
+ %65 = getelementptr inbounds i32* %64, i32 %52 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit49
+
+bb14.i47: ; preds = %bb7.i45, %bb3.i43, %_ZN14btHullTriangle4neibEii.exit
+ %66 = phi i32 [ 0, %_ZN14btHullTriangle4neibEii.exit ], [ %tmp20.i39, %bb3.i43 ], [ %tmp20.i39, %bb7.i45 ] ; [#uses=4]
+ %67 = icmp slt i32 %66, 3 ; [#uses=1]
+ br i1 %67, label %bb.i41, label %_ZN14btHullTriangle4neibEii.exit49
+
+_ZN14btHullTriangle4neibEii.exit49: ; preds = %bb14.i47, %bb12.i46, %bb5.i44
+ %68 = phi i32* [ %65, %bb12.i46 ], [ %60, %bb5.i44 ], [ @_ZZN14btHullTriangle4neibEiiE2er, %bb14.i47 ] ; [#uses=1]
+ store i32 %10, i32* %68, align 4
+ %69 = tail call %struct.btHullTriangle* @_ZN11HullLibrary16allocateTriangleEiii(%struct.HullLibrary* %this, i32 %v, i32 %1, i32 %3) ; [#uses=6]
+ %70 = getelementptr inbounds i32* %11, i32 2 ; [#uses=2]
+ %71 = load i32* %70, align 4 ; [#uses=1]
+ %72 = getelementptr inbounds %struct.btHullTriangle* %69, i32 0, i32 1, i32 0 ; [#uses=2]
+ store i32 %71, i32* %72, align 4
+ %73 = getelementptr inbounds %struct.btHullTriangle* %69, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 %7, i32* %73, align 4
+ %74 = getelementptr inbounds %struct.btHullTriangle* %69, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 %10, i32* %74, align 4
+ %75 = load i32* %70, align 4 ; [#uses=1]
+ %76 = load %struct.btHullTriangle*** %17, align 4 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btHullTriangle** %76, i32 %75 ; [#uses=1]
+ %78 = load %struct.btHullTriangle** %77, align 4 ; [#uses=4]
+ %this21.i20 = bitcast %struct.btHullTriangle* %78 to i8* ; [#uses=1]
+ %79 = getelementptr inbounds %struct.btHullTriangle* %78, i32 0, i32 0, i32 0 ; [#uses=2]
+ br label %bb14.i32
+
+bb.i26: ; preds = %bb14.i32
+ %tmp = shl i32 %95, 2 ; [#uses=1]
+ %uglygep = getelementptr i8* %this21.i20, i32 %tmp ; [#uses=1]
+ %uglygep23.i23 = bitcast i8* %uglygep to i32* ; [#uses=1]
+ %tmp20.i24 = add i32 %95, 1 ; [#uses=3]
+ %tmp.i25 = add i32 %95, 2 ; [#uses=1]
+ %80 = srem i32 %tmp20.i24, 3 ; [#uses=2]
+ %81 = srem i32 %tmp.i25, 3 ; [#uses=2]
+ %82 = load i32* %uglygep23.i23, align 4 ; [#uses=2]
+ %83 = icmp eq i32 %82, %1 ; [#uses=1]
+ br i1 %83, label %bb1.i27, label %bb3.i28
+
+bb1.i27: ; preds = %bb.i26
+ %84 = getelementptr inbounds i32* %79, i32 %80 ; [#uses=1]
+ %85 = load i32* %84, align 4 ; [#uses=1]
+ %86 = icmp eq i32 %85, %3 ; [#uses=1]
+ br i1 %86, label %bb5.i29, label %bb3.i28
+
+bb3.i28: ; preds = %bb1.i27, %bb.i26
+ %87 = icmp eq i32 %82, %3 ; [#uses=1]
+ br i1 %87, label %bb7.i30, label %bb14.i32
+
+bb5.i29: ; preds = %bb1.i27
+ %88 = getelementptr inbounds %struct.btHullTriangle* %78, i32 0, i32 1, i32 0 ; [#uses=1]
+ %89 = getelementptr inbounds i32* %88, i32 %81 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit34
+
+bb7.i30: ; preds = %bb3.i28
+ %90 = getelementptr inbounds i32* %79, i32 %80 ; [#uses=1]
+ %91 = load i32* %90, align 4 ; [#uses=1]
+ %92 = icmp eq i32 %91, %1 ; [#uses=1]
+ br i1 %92, label %bb12.i31, label %bb14.i32
+
+bb12.i31: ; preds = %bb7.i30
+ %93 = getelementptr inbounds %struct.btHullTriangle* %78, i32 0, i32 1, i32 0 ; [#uses=1]
+ %94 = getelementptr inbounds i32* %93, i32 %81 ; [#uses=1]
+ br label %_ZN14btHullTriangle4neibEii.exit34
+
+bb14.i32: ; preds = %bb7.i30, %bb3.i28, %_ZN14btHullTriangle4neibEii.exit49
+ %95 = phi i32 [ 0, %_ZN14btHullTriangle4neibEii.exit49 ], [ %tmp20.i24, %bb3.i28 ], [ %tmp20.i24, %bb7.i30 ] ; [#uses=4]
+ %96 = icmp slt i32 %95, 3 ; [#uses=1]
+ br i1 %96, label %bb.i26, label %_ZN14btHullTriangle4neibEii.exit34
+
+_ZN14btHullTriangle4neibEii.exit34: ; preds = %bb14.i32, %bb12.i31, %bb5.i29
+ %97 = phi i32* [ %94, %bb12.i31 ], [ %89, %bb5.i29 ], [ @_ZZN14btHullTriangle4neibEiiE2er, %bb14.i32 ] ; [#uses=1]
+ store i32 %9, i32* %97, align 4
+ %98 = load i32* %13, align 4 ; [#uses=1]
+ %99 = load %struct.btHullTriangle*** %17, align 4 ; [#uses=2]
+ %100 = getelementptr inbounds %struct.btHullTriangle** %99, i32 %98 ; [#uses=1]
+ %101 = load %struct.btHullTriangle** %100, align 4 ; [#uses=4]
+ %102 = getelementptr inbounds %struct.btHullTriangle* %101, i32 0, i32 0, i32 0 ; [#uses=3]
+ %103 = load i32* %102, align 4 ; [#uses=1]
+ %104 = icmp eq i32 %103, %v ; [#uses=1]
+ br i1 %104, label %bb, label %bb.i15
+
+bb.i15: ; preds = %_ZN14btHullTriangle4neibEii.exit34
+ %105 = getelementptr inbounds i32* %102, i32 1 ; [#uses=1]
+ %106 = load i32* %105, align 4 ; [#uses=1]
+ %107 = icmp eq i32 %106, %v ; [#uses=1]
+ br i1 %107, label %bb, label %_Z7hasvertRK4int3i.exit19
+
+_Z7hasvertRK4int3i.exit19: ; preds = %bb.i15
+ %108 = getelementptr inbounds i32* %102, i32 2 ; [#uses=1]
+ %109 = load i32* %108, align 4 ; [#uses=1]
+ %phitmp = icmp eq i32 %109, %v ; [#uses=1]
+ br i1 %phitmp, label %bb, label %bb1
+
+bb: ; preds = %_Z7hasvertRK4int3i.exit19, %bb.i15, %_ZN14btHullTriangle4neibEii.exit34
+ tail call void @_ZN11HullLibrary6b2bfixEP14btHullTriangleS1_(%struct.HullLibrary* %this, %struct.btHullTriangle* %8, %struct.btHullTriangle* %101)
+ %110 = getelementptr inbounds %struct.btHullTriangle* %8, i32 0, i32 2 ; [#uses=1]
+ %111 = load i32* %110, align 4 ; [#uses=1]
+ %112 = load %struct.btHullTriangle*** %17, align 4 ; [#uses=1]
+ %113 = getelementptr inbounds %struct.btHullTriangle** %112, i32 %111 ; [#uses=1]
+ store %struct.btHullTriangle* null, %struct.btHullTriangle** %113, align 4
+ %114 = bitcast %struct.btHullTriangle* %8 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %114)
+ %115 = getelementptr inbounds %struct.btHullTriangle* %101, i32 0, i32 2 ; [#uses=1]
+ %116 = load i32* %115, align 4 ; [#uses=1]
+ %117 = load %struct.btHullTriangle*** %17, align 4 ; [#uses=1]
+ %118 = getelementptr inbounds %struct.btHullTriangle** %117, i32 %116 ; [#uses=1]
+ store %struct.btHullTriangle* null, %struct.btHullTriangle** %118, align 4
+ %119 = bitcast %struct.btHullTriangle* %101 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %119)
+ %.pre = load %struct.btHullTriangle*** %17, align 4 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb, %_Z7hasvertRK4int3i.exit19
+ %120 = phi %struct.btHullTriangle** [ %99, %_Z7hasvertRK4int3i.exit19 ], [ %.pre, %bb ] ; [#uses=2]
+ %121 = load i32* %43, align 4 ; [#uses=1]
+ %122 = getelementptr inbounds %struct.btHullTriangle** %120, i32 %121 ; [#uses=1]
+ %123 = load %struct.btHullTriangle** %122, align 4 ; [#uses=4]
+ %124 = getelementptr inbounds %struct.btHullTriangle* %123, i32 0, i32 0, i32 0 ; [#uses=3]
+ %125 = load i32* %124, align 4 ; [#uses=1]
+ %126 = icmp eq i32 %125, %v ; [#uses=1]
+ br i1 %126, label %bb3, label %bb.i8
+
+bb.i8: ; preds = %bb1
+ %127 = getelementptr inbounds i32* %124, i32 1 ; [#uses=1]
+ %128 = load i32* %127, align 4 ; [#uses=1]
+ %129 = icmp eq i32 %128, %v ; [#uses=1]
+ br i1 %129, label %bb3, label %_Z7hasvertRK4int3i.exit12
+
+_Z7hasvertRK4int3i.exit12: ; preds = %bb.i8
+ %130 = getelementptr inbounds i32* %124, i32 2 ; [#uses=1]
+ %131 = load i32* %130, align 4 ; [#uses=1]
+ %phitmp59 = icmp eq i32 %131, %v ; [#uses=1]
+ br i1 %phitmp59, label %bb3, label %bb4
+
+bb3: ; preds = %_Z7hasvertRK4int3i.exit12, %bb.i8, %bb1
+ tail call void @_ZN11HullLibrary6b2bfixEP14btHullTriangleS1_(%struct.HullLibrary* %this, %struct.btHullTriangle* %40, %struct.btHullTriangle* %123)
+ %132 = getelementptr inbounds %struct.btHullTriangle* %40, i32 0, i32 2 ; [#uses=1]
+ %133 = load i32* %132, align 4 ; [#uses=1]
+ %134 = load %struct.btHullTriangle*** %17, align 4 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btHullTriangle** %134, i32 %133 ; [#uses=1]
+ store %struct.btHullTriangle* null, %struct.btHullTriangle** %135, align 4
+ %136 = bitcast %struct.btHullTriangle* %40 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %136)
+ %137 = getelementptr inbounds %struct.btHullTriangle* %123, i32 0, i32 2 ; [#uses=1]
+ %138 = load i32* %137, align 4 ; [#uses=1]
+ %139 = load %struct.btHullTriangle*** %17, align 4 ; [#uses=1]
+ %140 = getelementptr inbounds %struct.btHullTriangle** %139, i32 %138 ; [#uses=1]
+ store %struct.btHullTriangle* null, %struct.btHullTriangle** %140, align 4
+ %141 = bitcast %struct.btHullTriangle* %123 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %141)
+ %.pre82 = load %struct.btHullTriangle*** %17, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb3, %_Z7hasvertRK4int3i.exit12
+ %142 = phi %struct.btHullTriangle** [ %120, %_Z7hasvertRK4int3i.exit12 ], [ %.pre82, %bb3 ] ; [#uses=2]
+ %143 = load i32* %72, align 4 ; [#uses=1]
+ %144 = getelementptr inbounds %struct.btHullTriangle** %142, i32 %143 ; [#uses=1]
+ %145 = load %struct.btHullTriangle** %144, align 4 ; [#uses=4]
+ %146 = getelementptr inbounds %struct.btHullTriangle* %145, i32 0, i32 0, i32 0 ; [#uses=3]
+ %147 = load i32* %146, align 4 ; [#uses=1]
+ %148 = icmp eq i32 %147, %v ; [#uses=1]
+ br i1 %148, label %bb6, label %bb.i
+
+bb.i: ; preds = %bb4
+ %149 = getelementptr inbounds i32* %146, i32 1 ; [#uses=1]
+ %150 = load i32* %149, align 4 ; [#uses=1]
+ %151 = icmp eq i32 %150, %v ; [#uses=1]
+ br i1 %151, label %bb6, label %_Z7hasvertRK4int3i.exit
+
+_Z7hasvertRK4int3i.exit: ; preds = %bb.i
+ %152 = getelementptr inbounds i32* %146, i32 2 ; [#uses=1]
+ %153 = load i32* %152, align 4 ; [#uses=1]
+ %phitmp60 = icmp eq i32 %153, %v ; [#uses=1]
+ br i1 %phitmp60, label %bb6, label %bb7
+
+bb6: ; preds = %_Z7hasvertRK4int3i.exit, %bb.i, %bb4
+ tail call void @_ZN11HullLibrary6b2bfixEP14btHullTriangleS1_(%struct.HullLibrary* %this, %struct.btHullTriangle* %69, %struct.btHullTriangle* %145)
+ %154 = getelementptr inbounds %struct.btHullTriangle* %69, i32 0, i32 2 ; [#uses=1]
+ %155 = load i32* %154, align 4 ; [#uses=1]
+ %156 = load %struct.btHullTriangle*** %17, align 4 ; [#uses=1]
+ %157 = getelementptr inbounds %struct.btHullTriangle** %156, i32 %155 ; [#uses=1]
+ store %struct.btHullTriangle* null, %struct.btHullTriangle** %157, align 4
+ %158 = bitcast %struct.btHullTriangle* %69 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %158)
+ %159 = getelementptr inbounds %struct.btHullTriangle* %145, i32 0, i32 2 ; [#uses=1]
+ %160 = load i32* %159, align 4 ; [#uses=1]
+ %161 = load %struct.btHullTriangle*** %17, align 4 ; [#uses=1]
+ %162 = getelementptr inbounds %struct.btHullTriangle** %161, i32 %160 ; [#uses=1]
+ store %struct.btHullTriangle* null, %struct.btHullTriangle** %162, align 4
+ %163 = bitcast %struct.btHullTriangle* %145 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %163)
+ %.pre83 = load %struct.btHullTriangle*** %17, align 4 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb6, %_Z7hasvertRK4int3i.exit
+ %164 = phi %struct.btHullTriangle** [ %142, %_Z7hasvertRK4int3i.exit ], [ %.pre83, %bb6 ] ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btHullTriangle* %t0, i32 0, i32 2 ; [#uses=1]
+ %166 = load i32* %165, align 4 ; [#uses=1]
+ %167 = getelementptr inbounds %struct.btHullTriangle** %164, i32 %166 ; [#uses=1]
+ store %struct.btHullTriangle* null, %struct.btHullTriangle** %167, align 4
+ %168 = bitcast %struct.btHullTriangle* %t0 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %168)
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayIN7ConvexH8HalfEdgeEE6resizeEiRKS1_(%"struct.btAlignedObjectArray<ConvexH::HalfEdge>"* nocapture %this, i32 %newsize, %"struct.ConvexH::HalfEdge"* nocapture %fillData) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<ConvexH::HalfEdge>"* %this, i32 0, i32 1 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=5]
+ %2 = icmp sgt i32 %1, %newsize ; [#uses=1]
+ br i1 %2, label %bb12, label %bb3
+
+bb3: ; preds = %entry
+ %3 = icmp slt i32 %1, %newsize ; [#uses=2]
+ br i1 %3, label %bb4, label %bb12
+
+bb4: ; preds = %bb3
+ %4 = getelementptr inbounds %"struct.btAlignedObjectArray<ConvexH::HalfEdge>"* %this, i32 0, i32 2 ; [#uses=2]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp slt i32 %5, %newsize ; [#uses=1]
+ br i1 %6, label %bb.i, label %bb.nph
+
+bb.i: ; preds = %bb4
+ %7 = icmp eq i32 %newsize, 0 ; [#uses=1]
+ br i1 %7, label %_ZN20btAlignedObjectArrayIN7ConvexH8HalfEdgeEE8allocateEi.exit.i, label %bb.i2.i
+
+bb.i2.i: ; preds = %bb.i
+ %8 = shl i32 %newsize, 2 ; [#uses=1]
+ %9 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %8, i32 16) ; [#uses=1]
+ %phitmp.i = bitcast i8* %9 to %"struct.ConvexH::HalfEdge"* ; [#uses=1]
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIN7ConvexH8HalfEdgeEE8allocateEi.exit.i
+
+_ZN20btAlignedObjectArrayIN7ConvexH8HalfEdgeEE8allocateEi.exit.i: ; preds = %bb.i2.i, %bb.i
+ %10 = phi i32 [ %.pre, %bb.i2.i ], [ %1, %bb.i ] ; [#uses=2]
+ %11 = phi %"struct.ConvexH::HalfEdge"* [ %phitmp.i, %bb.i2.i ], [ null, %bb.i ] ; [#uses=5]
+ %12 = icmp sgt i32 %10, 0 ; [#uses=1]
+ br i1 %12, label %bb.nph.i.i, label %_ZNK20btAlignedObjectArrayIN7ConvexH8HalfEdgeEE4copyEiiPS1_.exit.i
+
+bb.nph.i.i: ; preds = %_ZN20btAlignedObjectArrayIN7ConvexH8HalfEdgeEE8allocateEi.exit.i
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<ConvexH::HalfEdge>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4.i
+
+bb.i4.i: ; preds = %bb3.i.i, %bb.nph.i.i
+ %indvar.i.i = phi i32 [ 0, %bb.nph.i.i ], [ %indvar.next.i.i, %bb3.i.i ] ; [#uses=8]
+ %scevgep.i.i = getelementptr %"struct.ConvexH::HalfEdge"* %11, i32 %indvar.i.i ; [#uses=1]
+ %14 = icmp eq %"struct.ConvexH::HalfEdge"* %scevgep.i.i, null ; [#uses=1]
+ br i1 %14, label %bb3.i.i, label %bb1.i5.i
+
+bb1.i5.i: ; preds = %bb.i4.i
+ %scevgep13.i.i = getelementptr %"struct.ConvexH::HalfEdge"* %11, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %scevgep14.i.i = getelementptr %"struct.ConvexH::HalfEdge"* %11, i32 %indvar.i.i, i32 2 ; [#uses=1]
+ %scevgep12.i.i = getelementptr inbounds %"struct.ConvexH::HalfEdge"* %11, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %15 = load %"struct.ConvexH::HalfEdge"** %13, align 4 ; [#uses=3]
+ %scevgep89.i.i = getelementptr inbounds %"struct.ConvexH::HalfEdge"* %15, i32 %indvar.i.i, i32 0 ; [#uses=1]
+ %16 = load i16* %scevgep89.i.i, align 2 ; [#uses=1]
+ %scevgep10.i.i = getelementptr %"struct.ConvexH::HalfEdge"* %15, i32 %indvar.i.i, i32 1 ; [#uses=1]
+ %17 = load i8* %scevgep10.i.i, align 2 ; [#uses=1]
+ %scevgep11.i.i = getelementptr %"struct.ConvexH::HalfEdge"* %15, i32 %indvar.i.i, i32 2 ; [#uses=1]
+ %18 = load i8* %scevgep11.i.i, align 1 ; [#uses=1]
+ store i16 %16, i16* %scevgep12.i.i, align 2
+ store i8 %17, i8* %scevgep13.i.i, align 2
+ store i8 %18, i8* %scevgep14.i.i, align 1
+ br label %bb3.i.i
+
+bb3.i.i: ; preds = %bb1.i5.i, %bb.i4.i
+ %indvar.next.i.i = add i32 %indvar.i.i, 1 ; [#uses=2]
+ %exitcond22 = icmp eq i32 %indvar.next.i.i, %10 ; [#uses=1]
+ br i1 %exitcond22, label %_ZNK20btAlignedObjectArrayIN7ConvexH8HalfEdgeEE4copyEiiPS1_.exit.i, label %bb.i4.i
+
+_ZNK20btAlignedObjectArrayIN7ConvexH8HalfEdgeEE4copyEiiPS1_.exit.i: ; preds = %bb3.i.i, %_ZN20btAlignedObjectArrayIN7ConvexH8HalfEdgeEE8allocateEi.exit.i
+ %19 = getelementptr inbounds %"struct.btAlignedObjectArray<ConvexH::HalfEdge>"* %this, i32 0, i32 3 ; [#uses=3]
+ %20 = load %"struct.ConvexH::HalfEdge"** %19, align 4 ; [#uses=2]
+ %21 = icmp eq %"struct.ConvexH::HalfEdge"* %20, null ; [#uses=1]
+ br i1 %21, label %bb11.preheader, label %bb.i.i
+
+bb.i.i: ; preds = %_ZNK20btAlignedObjectArrayIN7ConvexH8HalfEdgeEE4copyEiiPS1_.exit.i
+ %22 = getelementptr inbounds %"struct.btAlignedObjectArray<ConvexH::HalfEdge>"* %this, i32 0, i32 4 ; [#uses=1]
+ %23 = load i8* %22, align 4 ; [#uses=1]
+ %toBool.i.i = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i, label %bb2.i.i, label %bb1.i.i
+
+bb1.i.i: ; preds = %bb.i.i
+ %24 = bitcast %"struct.ConvexH::HalfEdge"* %20 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %24)
+ br label %bb2.i.i
+
+bb2.i.i: ; preds = %bb1.i.i, %bb.i.i
+ store %"struct.ConvexH::HalfEdge"* null, %"struct.ConvexH::HalfEdge"** %19, align 4
+ br label %bb11.preheader
+
+bb11.preheader: ; preds = %bb2.i.i, %_ZNK20btAlignedObjectArrayIN7ConvexH8HalfEdgeEE4copyEiiPS1_.exit.i
+ %25 = getelementptr inbounds %"struct.btAlignedObjectArray<ConvexH::HalfEdge>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %25, align 4
+ store %"struct.ConvexH::HalfEdge"* %11, %"struct.ConvexH::HalfEdge"** %19, align 4
+ store i32 %newsize, i32* %4, align 4
+ br i1 %3, label %bb.nph, label %bb12
+
+bb.nph: ; preds = %bb11.preheader, %bb4
+ %26 = getelementptr inbounds %"struct.btAlignedObjectArray<ConvexH::HalfEdge>"* %this, i32 0, i32 3 ; [#uses=1]
+ %27 = getelementptr inbounds %"struct.ConvexH::HalfEdge"* %fillData, i32 0, i32 0 ; [#uses=1]
+ %28 = getelementptr inbounds %"struct.ConvexH::HalfEdge"* %fillData, i32 0, i32 1 ; [#uses=1]
+ %29 = getelementptr inbounds %"struct.ConvexH::HalfEdge"* %fillData, i32 0, i32 2 ; [#uses=1]
+ %tmp = sub i32 %newsize, %1 ; [#uses=1]
+ br label %bb7
+
+bb7: ; preds = %bb10, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb10 ] ; [#uses=2]
+ %tmp17 = add i32 %1, %indvar ; [#uses=4]
+ %30 = load %"struct.ConvexH::HalfEdge"** %26, align 4 ; [#uses=4]
+ %scevgep = getelementptr %"struct.ConvexH::HalfEdge"* %30, i32 %tmp17 ; [#uses=1]
+ %31 = icmp eq %"struct.ConvexH::HalfEdge"* %scevgep, null ; [#uses=1]
+ br i1 %31, label %bb10, label %bb8
+
+bb8: ; preds = %bb7
+ %32 = load i16* %27, align 2 ; [#uses=1]
+ %33 = load i8* %28, align 2 ; [#uses=1]
+ %34 = load i8* %29, align 1 ; [#uses=1]
+ %scevgep1819 = getelementptr inbounds %"struct.ConvexH::HalfEdge"* %30, i32 %tmp17, i32 0 ; [#uses=1]
+ store i16 %32, i16* %scevgep1819, align 2
+ %scevgep20 = getelementptr %"struct.ConvexH::HalfEdge"* %30, i32 %tmp17, i32 1 ; [#uses=1]
+ store i8 %33, i8* %scevgep20, align 2
+ %scevgep21 = getelementptr %"struct.ConvexH::HalfEdge"* %30, i32 %tmp17, i32 2 ; [#uses=1]
+ store i8 %34, i8* %scevgep21, align 1
+ br label %bb10
+
+bb10: ; preds = %bb8, %bb7
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp ; [#uses=1]
+ br i1 %exitcond, label %bb12, label %bb7
+
+bb12: ; preds = %bb10, %bb11.preheader, %bb3, %entry
+ store i32 %newsize, i32* %0, align 4
+ ret void
+}
+
+; [#uses=1]
+define linkonce_odr void @_ZN20btAlignedObjectArrayI7btPlaneE7reserveEi(%"struct.btAlignedObjectArray<btPlane>"* nocapture %this, i32 %_Count) inlinehint align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btPlane>"* %this, i32 0, i32 2 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = icmp slt i32 %1, %_Count ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = icmp eq i32 %_Count, 0 ; [#uses=1]
+ br i1 %3, label %_ZN20btAlignedObjectArrayI7btPlaneE8allocateEi.exit, label %bb.i2
+
+bb.i2: ; preds = %bb
+ %4 = mul i32 %_Count, 20 ; [#uses=1]
+ %5 = tail call i8* @_Z22btAlignedAllocInternalji(i32 %4, i32 16) ; [#uses=1]
+ %phitmp = bitcast i8* %5 to %struct.btPlane* ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayI7btPlaneE8allocateEi.exit
+
+_ZN20btAlignedObjectArrayI7btPlaneE8allocateEi.exit: ; preds = %bb.i2, %bb
+ %6 = phi %struct.btPlane* [ %phitmp, %bb.i2 ], [ null, %bb ] ; [#uses=7]
+ %7 = getelementptr inbounds %"struct.btAlignedObjectArray<btPlane>"* %this, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=2]
+ %9 = icmp sgt i32 %8, 0 ; [#uses=1]
+ br i1 %9, label %bb.nph.i, label %_ZNK20btAlignedObjectArrayI7btPlaneE4copyEiiPS0_.exit
+
+bb.nph.i: ; preds = %_ZN20btAlignedObjectArrayI7btPlaneE8allocateEi.exit
+ %10 = getelementptr inbounds %"struct.btAlignedObjectArray<btPlane>"* %this, i32 0, i32 3 ; [#uses=1]
+ br label %bb.i4
+
+bb.i4: ; preds = %bb3.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb3.i ] ; [#uses=12]
+ %scevgep.i = getelementptr %struct.btPlane* %6, i32 %indvar.i ; [#uses=1]
+ %11 = icmp eq %struct.btPlane* %scevgep.i, null ; [#uses=1]
+ br i1 %11, label %bb3.i, label %bb1.i5
+
+bb1.i5: ; preds = %bb.i4
+ %scevgep15.i = getelementptr %struct.btPlane* %6, i32 %indvar.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %scevgep16.i = getelementptr %struct.btPlane* %6, i32 %indvar.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %scevgep17.i = getelementptr %struct.btPlane* %6, i32 %indvar.i, i32 0, i32 0, i32 3 ; [#uses=1]
+ %scevgep18.i = getelementptr %struct.btPlane* %6, i32 %indvar.i, i32 1 ; [#uses=1]
+ %scevgep14.i = getelementptr inbounds %struct.btPlane* %6, i32 %indvar.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = load %struct.btPlane** %10, align 4 ; [#uses=5]
+ %scevgep89.i = getelementptr inbounds %struct.btPlane* %12, i32 %indvar.i, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %scevgep89.i, align 4 ; [#uses=1]
+ store float %13, float* %scevgep14.i, align 4
+ %scevgep10.i = getelementptr %struct.btPlane* %12, i32 %indvar.i, i32 0, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %scevgep10.i, align 4 ; [#uses=1]
+ store float %14, float* %scevgep15.i, align 4
+ %scevgep11.i = getelementptr %struct.btPlane* %12, i32 %indvar.i, i32 0, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %scevgep11.i, align 4 ; [#uses=1]
+ store float %15, float* %scevgep16.i, align 4
+ %scevgep12.i = getelementptr %struct.btPlane* %12, i32 %indvar.i, i32 0, i32 0, i32 3 ; [#uses=1]
+ %16 = load float* %scevgep12.i, align 4 ; [#uses=1]
+ store float %16, float* %scevgep17.i, align 4
+ %scevgep13.i = getelementptr %struct.btPlane* %12, i32 %indvar.i, i32 1 ; [#uses=1]
+ %17 = load float* %scevgep13.i, align 4 ; [#uses=1]
+ store float %17, float* %scevgep18.i, align 4
+ br label %bb3.i
+
+bb3.i: ; preds = %bb1.i5, %bb.i4
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %8 ; [#uses=1]
+ br i1 %exitcond, label %_ZNK20btAlignedObjectArrayI7btPlaneE4copyEiiPS0_.exit, label %bb.i4
+
+_ZNK20btAlignedObjectArrayI7btPlaneE4copyEiiPS0_.exit: ; preds = %bb3.i, %_ZN20btAlignedObjectArrayI7btPlaneE8allocateEi.exit
+ %18 = getelementptr inbounds %"struct.btAlignedObjectArray<btPlane>"* %this, i32 0, i32 3 ; [#uses=3]
+ %19 = load %struct.btPlane** %18, align 4 ; [#uses=2]
+ %20 = icmp eq %struct.btPlane* %19, null ; [#uses=1]
+ br i1 %20, label %_ZN20btAlignedObjectArrayI7btPlaneE10deallocateEv.exit, label %bb.i
+
+bb.i: ; preds = %_ZNK20btAlignedObjectArrayI7btPlaneE4copyEiiPS0_.exit
+ %21 = getelementptr inbounds %"struct.btAlignedObjectArray<btPlane>"* %this, i32 0, i32 4 ; [#uses=1]
+ %22 = load i8* %21, align 4 ; [#uses=1]
+ %toBool.i = icmp eq i8 %22, 0 ; [#uses=1]
+ br i1 %toBool.i, label %bb2.i, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ %23 = bitcast %struct.btPlane* %19 to i8* ; [#uses=1]
+ tail call void @_Z21btAlignedFreeInternalPv(i8* %23)
+ br label %bb2.i
+
+bb2.i: ; preds = %bb1.i, %bb.i
+ store %struct.btPlane* null, %struct.btPlane** %18, align 4
+ br label %_ZN20btAlignedObjectArrayI7btPlaneE10deallocateEv.exit
+
+_ZN20btAlignedObjectArrayI7btPlaneE10deallocateEv.exit: ; preds = %bb2.i, %_ZNK20btAlignedObjectArrayI7btPlaneE4copyEiiPS0_.exit
+ %24 = getelementptr inbounds %"struct.btAlignedObjectArray<btPlane>"* %this, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %24, align 4
+ store %struct.btPlane* %6, %struct.btPlane** %18, align 4
+ store i32 %_Count, i32* %0, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN7ConvexHC2Eiii(%struct.ConvexH* nocapture %this, i32 %vertices_size, i32 %edges_size, i32 %facets_size) align 2 {
+invcont1:
+ %0 = alloca %"struct.ConvexH::HalfEdge", align 8 ; [#uses=1]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 0, i32 4 ; [#uses=3]
+ store i8 1, i8* %2, align 4
+ %3 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 0, i32 3 ; [#uses=4]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %3, align 4
+ %4 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 0, i32 1 ; [#uses=2]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 0, i32 2 ; [#uses=2]
+ store i32 0, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 1, i32 4 ; [#uses=3]
+ store i8 1, i8* %6, align 4
+ %7 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 1, i32 3 ; [#uses=4]
+ store %"struct.ConvexH::HalfEdge"* null, %"struct.ConvexH::HalfEdge"** %7, align 4
+ %8 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 1, i32 1 ; [#uses=2]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 1, i32 2 ; [#uses=2]
+ store i32 0, i32* %9, align 4
+ %10 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 2, i32 4 ; [#uses=3]
+ store i8 1, i8* %10, align 4
+ %11 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 2, i32 3 ; [#uses=5]
+ store %struct.btPlane* null, %struct.btPlane** %11, align 4
+ %12 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 2, i32 1 ; [#uses=4]
+ store i32 0, i32* %12, align 4
+ %13 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 2, i32 2 ; [#uses=2]
+ store i32 0, i32* %13, align 4
+ %14 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 0 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(%"struct.btAlignedObjectArray<btVector3>"* %14, i32 %vertices_size, %struct.btQuadWord* %1) inlinehint
+ to label %invcont2 unwind label %lpad24
+
+invcont2: ; preds = %invcont1
+ %15 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 1 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayIN7ConvexH8HalfEdgeEE6resizeEiRKS1_(%"struct.btAlignedObjectArray<ConvexH::HalfEdge>"* %15, i32 %edges_size, %"struct.ConvexH::HalfEdge"* %0) inlinehint
+ to label %invcont3 unwind label %lpad24
+
+invcont3: ; preds = %invcont2
+ %16 = load i32* %12, align 4 ; [#uses=3]
+ %17 = icmp slt i32 %16, %facets_size ; [#uses=1]
+ br i1 %17, label %bb.nph.i, label %return
+
+bb.nph.i: ; preds = %invcont3
+ %18 = getelementptr inbounds %struct.ConvexH* %this, i32 0, i32 2 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI7btPlaneE7reserveEi(%"struct.btAlignedObjectArray<btPlane>"* %18, i32 %facets_size) inlinehint
+ to label %.noexc56 unwind label %lpad24
+
+.noexc56: ; preds = %bb.nph.i
+ %tmp.i = sub i32 %facets_size, %16 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb10.i, %.noexc56
+ %indvar.i = phi i32 [ 0, %.noexc56 ], [ %indvar.next.i, %bb10.i ] ; [#uses=2]
+ %tmp = add i32 %16, %indvar.i ; [#uses=2]
+ %19 = load %struct.btPlane** %11, align 4 ; [#uses=2]
+ %scevgep.i = getelementptr %struct.btPlane* %19, i32 %tmp ; [#uses=1]
+ %20 = icmp eq %struct.btPlane* %scevgep.i, null ; [#uses=1]
+ br i1 %20, label %bb10.i, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ %scevgep23.i = getelementptr %struct.btPlane* %19, i32 %tmp, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %scevgep23.i, align 4
+ br label %bb10.i
+
+bb10.i: ; preds = %bb8.i, %bb7.i
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %tmp.i ; [#uses=1]
+ br i1 %exitcond, label %return, label %bb7.i
+
+invcont15: ; preds = %bb2.i.i.i49, %ppad
+ store i8 1, i8* %2, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %3, align 4
+ store i32 0, i32* %4, align 4
+ store i32 0, i32* %5, align 4
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr25)
+ unreachable
+
+return: ; preds = %bb10.i, %invcont3
+ store i32 %facets_size, i32* %12, align 4
+ ret void
+
+lpad24: ; preds = %bb.nph.i, %invcont2, %invcont1
+ %eh_ptr25 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select27 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr25, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %21 = load %struct.btPlane** %11, align 4 ; [#uses=2]
+ %22 = icmp eq %struct.btPlane* %21, null ; [#uses=1]
+ br i1 %22, label %ppad40, label %bb.i.i.i52
+
+bb.i.i.i52: ; preds = %lpad24
+ %23 = load i8* %10, align 4 ; [#uses=1]
+ %toBool.i.i.i51 = icmp eq i8 %23, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i51, label %bb2.i.i.i54, label %bb1.i.i.i53
+
+bb1.i.i.i53: ; preds = %bb.i.i.i52
+ %24 = bitcast %struct.btPlane* %21 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %24)
+ to label %bb2.i.i.i54 unwind label %lpad28
+
+bb2.i.i.i54: ; preds = %bb1.i.i.i53, %bb.i.i.i52
+ store %struct.btPlane* null, %struct.btPlane** %11, align 4
+ br label %ppad40
+
+lpad28: ; preds = %bb1.i.i.i53
+ %eh_ptr29 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select31 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr29, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad32: ; preds = %bb1.i.i.i
+ %eh_ptr33 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select35 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr33, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad36: ; preds = %bb1.i.i.i48
+ %eh_ptr37 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select39 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr37, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %bb2.i.i.i, %ppad40
+ store i8 1, i8* %6, align 4
+ store %"struct.ConvexH::HalfEdge"* null, %"struct.ConvexH::HalfEdge"** %7, align 4
+ store i32 0, i32* %8, align 4
+ store i32 0, i32* %9, align 4
+ %25 = load %struct.btQuadWord** %3, align 4 ; [#uses=2]
+ %26 = icmp eq %struct.btQuadWord* %25, null ; [#uses=1]
+ br i1 %26, label %invcont15, label %bb.i.i.i47
+
+bb.i.i.i47: ; preds = %ppad
+ %27 = load i8* %2, align 4 ; [#uses=1]
+ %toBool.i.i.i46 = icmp eq i8 %27, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i46, label %bb2.i.i.i49, label %bb1.i.i.i48
+
+bb1.i.i.i48: ; preds = %bb.i.i.i47
+ %28 = bitcast %struct.btQuadWord* %25 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %28)
+ to label %bb2.i.i.i49 unwind label %lpad36
+
+bb2.i.i.i49: ; preds = %bb1.i.i.i48, %bb.i.i.i47
+ store %struct.btQuadWord* null, %struct.btQuadWord** %3, align 4
+ br label %invcont15
+
+ppad40: ; preds = %bb2.i.i.i54, %lpad24
+ store i8 1, i8* %10, align 4
+ store %struct.btPlane* null, %struct.btPlane** %11, align 4
+ store i32 0, i32* %12, align 4
+ store i32 0, i32* %13, align 4
+ %29 = load %"struct.ConvexH::HalfEdge"** %7, align 4 ; [#uses=2]
+ %30 = icmp eq %"struct.ConvexH::HalfEdge"* %29, null ; [#uses=1]
+ br i1 %30, label %ppad, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %ppad40
+ %31 = load i8* %6, align 4 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %31, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %32 = bitcast %"struct.ConvexH::HalfEdge"* %29 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %32)
+ to label %bb2.i.i.i unwind label %lpad32
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %"struct.ConvexH::HalfEdge"* null, %"struct.ConvexH::HalfEdge"** %7, align 4
+ br label %ppad
+}
+
+; [#uses=0]
+define void @_ZN7ConvexHC1Eiii(%struct.ConvexH* nocapture %this, i32 %vertices_size, i32 %edges_size, i32 %facets_size) align 2 {
+entry:
+ tail call void @_ZN7ConvexHC2Eiii(%struct.ConvexH* %this, i32 %vertices_size, i32 %edges_size, i32 %facets_size)
+ ret void
+}
+
+; [#uses=0]
+define void @_Z4orthRK9btVector3(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btQuadWord* nocapture %v) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 0 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=3]
+ %2 = fmul float %1, 0.000000e+00 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 1 ; [#uses=1]
+ %4 = load float* %3, align 4 ; [#uses=2]
+ %5 = fmul float %4, 0.000000e+00 ; [#uses=3]
+ %6 = fsub float %2, %5 ; [#uses=3]
+ %7 = getelementptr inbounds %struct.btQuadWord* %v, i32 0, i32 0, i32 2 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fmul float %8, 0.000000e+00 ; [#uses=3]
+ %10 = fsub float %9, %1 ; [#uses=3]
+ %11 = fsub float %4, %9 ; [#uses=3]
+ %12 = fsub float %1, %5 ; [#uses=3]
+ %13 = fsub float %9, %2 ; [#uses=3]
+ %14 = fsub float %5, %8 ; [#uses=3]
+ %15 = fmul float %11, %11 ; [#uses=1]
+ %16 = fmul float %10, %10 ; [#uses=1]
+ %17 = fadd float %15, %16 ; [#uses=1]
+ %18 = fmul float %6, %6 ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=1]
+ %20 = tail call float @sqrtf(float %19) nounwind readonly ; [#uses=2]
+ %21 = fmul float %14, %14 ; [#uses=1]
+ %22 = fmul float %13, %13 ; [#uses=1]
+ %23 = fadd float %21, %22 ; [#uses=1]
+ %24 = fmul float %12, %12 ; [#uses=1]
+ %25 = fadd float %23, %24 ; [#uses=1]
+ %26 = tail call float @sqrtf(float %25) nounwind readonly ; [#uses=2]
+ %27 = fcmp ogt float %20, %26 ; [#uses=1]
+ br i1 %27, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %28 = fdiv float 1.000000e+00, %20 ; [#uses=3]
+ %29 = fmul float %6, %28 ; [#uses=1]
+ %30 = fmul float %10, %28 ; [#uses=1]
+ %31 = fmul float %11, %28 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %31, float* %32, align 4
+ %33 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %30, float* %33, align 4
+ %34 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %29, float* %34, align 4
+ %35 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %35, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %36 = fdiv float 1.000000e+00, %26 ; [#uses=3]
+ %37 = fmul float %12, %36 ; [#uses=1]
+ %38 = fmul float %13, %36 ; [#uses=1]
+ %39 = fmul float %14, %36 ; [#uses=1]
+ %40 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %39, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %38, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %37, float* %42, align 4
+ %43 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %43, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_Z9TriNormalRK9btVector3S1_S1_(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btQuadWord* nocapture %v0, %struct.btQuadWord* nocapture %v1, %struct.btQuadWord* nocapture %v2) nounwind {
+entry:
+ %0 = getelementptr inbounds %struct.btQuadWord* %v2, i32 0, i32 0, i32 2 ; [#uses=1]
+ %1 = load float* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %v1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = fsub float %1, %3 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btQuadWord* %v2, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = load float* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %v1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load float* %7, align 4 ; [#uses=2]
+ %9 = fsub float %6, %8 ; [#uses=2]
+ %10 = getelementptr inbounds %struct.btQuadWord* %v2, i32 0, i32 0, i32 0 ; [#uses=1]
+ %11 = load float* %10, align 4 ; [#uses=1]
+ %12 = getelementptr inbounds %struct.btQuadWord* %v1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load float* %12, align 4 ; [#uses=2]
+ %14 = fsub float %11, %13 ; [#uses=2]
+ %15 = getelementptr inbounds %struct.btQuadWord* %v0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %15, align 4 ; [#uses=1]
+ %17 = fsub float %3, %16 ; [#uses=2]
+ %18 = getelementptr inbounds %struct.btQuadWord* %v0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=1]
+ %20 = fsub float %8, %19 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btQuadWord* %v0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = fsub float %13, %22 ; [#uses=2]
+ %24 = fmul float %23, %9 ; [#uses=1]
+ %25 = fmul float %20, %14 ; [#uses=1]
+ %26 = fsub float %24, %25 ; [#uses=3]
+ %27 = fmul float %17, %14 ; [#uses=1]
+ %28 = fmul float %23, %4 ; [#uses=1]
+ %29 = fsub float %27, %28 ; [#uses=3]
+ %30 = fmul float %20, %4 ; [#uses=1]
+ %31 = fmul float %17, %9 ; [#uses=1]
+ %32 = fsub float %30, %31 ; [#uses=3]
+ %33 = fmul float %32, %32 ; [#uses=1]
+ %34 = fmul float %29, %29 ; [#uses=1]
+ %35 = fadd float %33, %34 ; [#uses=1]
+ %36 = fmul float %26, %26 ; [#uses=1]
+ %37 = fadd float %35, %36 ; [#uses=1]
+ %38 = tail call float @sqrtf(float %37) nounwind readonly ; [#uses=2]
+ %39 = fcmp oeq float %38, 0.000000e+00 ; [#uses=1]
+ br i1 %39, label %bb, label %bb1
+
+bb: ; preds = %entry
+ %40 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float 1.000000e+00, float* %40, align 4
+ %41 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float 0.000000e+00, float* %41, align 4
+ %42 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %42, align 4
+ %43 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %43, align 4
+ ret void
+
+bb1: ; preds = %entry
+ %44 = fdiv float 1.000000e+00, %38 ; [#uses=3]
+ %45 = fmul float %26, %44 ; [#uses=1]
+ %46 = fmul float %29, %44 ; [#uses=1]
+ %47 = fmul float %32, %44 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %47, float* %48, align 4
+ %49 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %46, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %45, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %51, align 4
+ ret void
+}
+
+; [#uses=0]
+define i32 @_Z5aboveP9btVector3RK4int3RKS_f(%struct.btQuadWord* nocapture %vertices, %struct.int3* nocapture %t, %struct.btQuadWord* nocapture %p, float %epsilon) nounwind readonly {
+entry:
+ %0 = getelementptr inbounds %struct.int3* %t, i32 0, i32 0 ; [#uses=3]
+ %1 = getelementptr inbounds i32* %0, i32 2 ; [#uses=1]
+ %2 = load i32* %1, align 4 ; [#uses=3]
+ %3 = getelementptr inbounds i32* %0, i32 1 ; [#uses=1]
+ %4 = load i32* %3, align 4 ; [#uses=3]
+ %5 = load i32* %0, align 4 ; [#uses=3]
+ %6 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %2, i32 0, i32 2 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %4, i32 0, i32 2 ; [#uses=1]
+ %9 = load float* %8, align 4 ; [#uses=2]
+ %10 = fsub float %7, %9 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %2, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %4, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %13, align 4 ; [#uses=2]
+ %15 = fsub float %12, %14 ; [#uses=2]
+ %16 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %2, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %4, i32 0, i32 0 ; [#uses=1]
+ %19 = load float* %18, align 4 ; [#uses=2]
+ %20 = fsub float %17, %19 ; [#uses=2]
+ %21 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %5, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=2]
+ %23 = fsub float %9, %22 ; [#uses=2]
+ %24 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %5, i32 0, i32 1 ; [#uses=1]
+ %25 = load float* %24, align 4 ; [#uses=2]
+ %26 = fsub float %14, %25 ; [#uses=2]
+ %27 = getelementptr inbounds %struct.btQuadWord* %vertices, i32 %5, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=2]
+ %29 = fsub float %19, %28 ; [#uses=2]
+ %30 = fmul float %29, %15 ; [#uses=1]
+ %31 = fmul float %26, %20 ; [#uses=1]
+ %32 = fsub float %30, %31 ; [#uses=3]
+ %33 = fmul float %23, %20 ; [#uses=1]
+ %34 = fmul float %29, %10 ; [#uses=1]
+ %35 = fsub float %33, %34 ; [#uses=3]
+ %36 = fmul float %26, %10 ; [#uses=1]
+ %37 = fmul float %23, %15 ; [#uses=1]
+ %38 = fsub float %36, %37 ; [#uses=3]
+ %39 = fmul float %38, %38 ; [#uses=1]
+ %40 = fmul float %35, %35 ; [#uses=1]
+ %41 = fadd float %39, %40 ; [#uses=1]
+ %42 = fmul float %32, %32 ; [#uses=1]
+ %43 = fadd float %41, %42 ; [#uses=1]
+ %44 = tail call float @sqrtf(float %43) nounwind readonly ; [#uses=2]
+ %45 = fcmp oeq float %44, 0.000000e+00 ; [#uses=1]
+ br i1 %45, label %_Z9TriNormalRK9btVector3S1_S1_.exit, label %bb1.i
+
+bb1.i: ; preds = %entry
+ %46 = fdiv float 1.000000e+00, %44 ; [#uses=3]
+ %47 = fmul float %32, %46 ; [#uses=1]
+ %48 = fmul float %35, %46 ; [#uses=1]
+ %49 = fmul float %38, %46 ; [#uses=1]
+ br label %_Z9TriNormalRK9btVector3S1_S1_.exit
+
+_Z9TriNormalRK9btVector3S1_S1_.exit: ; preds = %bb1.i, %entry
+ %n.0.0.0 = phi float [ %49, %bb1.i ], [ 1.000000e+00, %entry ] ; [#uses=1]
+ %n.0.1.0 = phi float [ %48, %bb1.i ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %n.0.2.0 = phi float [ %47, %bb1.i ], [ 0.000000e+00, %entry ] ; [#uses=1]
+ %50 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 2 ; [#uses=1]
+ %51 = load float* %50, align 4 ; [#uses=1]
+ %52 = fsub float %51, %22 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 1 ; [#uses=1]
+ %54 = load float* %53, align 4 ; [#uses=1]
+ %55 = fsub float %54, %25 ; [#uses=1]
+ %56 = getelementptr inbounds %struct.btQuadWord* %p, i32 0, i32 0, i32 0 ; [#uses=1]
+ %57 = load float* %56, align 4 ; [#uses=1]
+ %58 = fsub float %57, %28 ; [#uses=1]
+ %59 = fmul float %n.0.0.0, %58 ; [#uses=1]
+ %60 = fmul float %n.0.1.0, %55 ; [#uses=1]
+ %61 = fadd float %59, %60 ; [#uses=1]
+ %62 = fmul float %n.0.2.0, %52 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=1]
+ %64 = fcmp ogt float %63, %epsilon ; [#uses=1]
+ %65 = zext i1 %64 to i32 ; [#uses=1]
+ ret i32 %65
+}
+
+; [#uses=8]
+define linkonce_odr i32 @_Z12maxdirsteridI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE(%struct.btQuadWord* nocapture %p, i32 %count, %struct.btQuadWord* nocapture %dir, %"struct.btAlignedObjectArray<int>"* nocapture %allow) nounwind {
+entry:
+ %0 = icmp sgt i32 %count, 0 ; [#uses=3]
+ %1 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %allow, i32 0, i32 3 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %dir, i32 0, i32 0, i32 0 ; [#uses=2]
+ %3 = getelementptr inbounds %struct.btQuadWord* %dir, i32 0, i32 0, i32 1 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btQuadWord* %dir, i32 0, i32 0, i32 2 ; [#uses=2]
+ br label %bb25
+
+bb2: ; preds = %_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit
+ %5 = load float* %2, align 4 ; [#uses=7]
+ %6 = fmul float %5, 0.000000e+00 ; [#uses=2]
+ %7 = load float* %3, align 4 ; [#uses=6]
+ %8 = fmul float %7, 0.000000e+00 ; [#uses=3]
+ %9 = fsub float %6, %8 ; [#uses=3]
+ %10 = load float* %4, align 4 ; [#uses=6]
+ %11 = fmul float %10, 0.000000e+00 ; [#uses=3]
+ %12 = fsub float %11, %5 ; [#uses=3]
+ %13 = fsub float %7, %11 ; [#uses=3]
+ %14 = fsub float %5, %8 ; [#uses=3]
+ %15 = fsub float %11, %6 ; [#uses=3]
+ %16 = fsub float %8, %10 ; [#uses=3]
+ %17 = fmul float %13, %13 ; [#uses=1]
+ %18 = fmul float %12, %12 ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=1]
+ %20 = fmul float %9, %9 ; [#uses=1]
+ %21 = fadd float %19, %20 ; [#uses=1]
+ %22 = tail call float @sqrtf(float %21) nounwind readonly ; [#uses=2]
+ %23 = fmul float %16, %16 ; [#uses=1]
+ %24 = fmul float %15, %15 ; [#uses=1]
+ %25 = fadd float %23, %24 ; [#uses=1]
+ %26 = fmul float %14, %14 ; [#uses=1]
+ %27 = fadd float %25, %26 ; [#uses=1]
+ %28 = tail call float @sqrtf(float %27) nounwind readonly ; [#uses=2]
+ %29 = fcmp ogt float %22, %28 ; [#uses=1]
+ br i1 %29, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb2
+ %30 = fdiv float 1.000000e+00, %22 ; [#uses=3]
+ %31 = fmul float %9, %30 ; [#uses=1]
+ %32 = fmul float %12, %30 ; [#uses=1]
+ %33 = fmul float %13, %30 ; [#uses=1]
+ br label %_Z4orthRK9btVector3.exit
+
+bb1.i: ; preds = %bb2
+ %34 = fdiv float 1.000000e+00, %28 ; [#uses=3]
+ %35 = fmul float %14, %34 ; [#uses=1]
+ %36 = fmul float %15, %34 ; [#uses=1]
+ %37 = fmul float %16, %34 ; [#uses=1]
+ br label %_Z4orthRK9btVector3.exit
+
+_Z4orthRK9btVector3.exit: ; preds = %bb1.i, %bb.i
+ %u.0.0.0 = phi float [ %33, %bb.i ], [ %37, %bb1.i ] ; [#uses=4]
+ %u.0.1.0 = phi float [ %32, %bb.i ], [ %36, %bb1.i ] ; [#uses=4]
+ %u.0.2.0 = phi float [ %31, %bb.i ], [ %35, %bb1.i ] ; [#uses=4]
+ %38 = fmul float %u.0.0.0, %7 ; [#uses=1]
+ %39 = fmul float %u.0.1.0, %5 ; [#uses=1]
+ %40 = fsub float %38, %39 ; [#uses=2]
+ %41 = fmul float %u.0.2.0, %5 ; [#uses=1]
+ %42 = fmul float %u.0.0.0, %10 ; [#uses=1]
+ %43 = fsub float %41, %42 ; [#uses=2]
+ %44 = fmul float %u.0.1.0, %10 ; [#uses=1]
+ %45 = fmul float %u.0.2.0, %7 ; [#uses=1]
+ %46 = fsub float %44, %45 ; [#uses=2]
+ br label %bb23
+
+bb3: ; preds = %bb23
+ %47 = fmul float %x.0, 0x3F91DF46A0000000 ; [#uses=2]
+ %48 = tail call float @sinf(float %47) nounwind readonly ; [#uses=3]
+ %49 = tail call float @cosf(float %47) nounwind readonly ; [#uses=3]
+ %50 = fmul float %40, %49 ; [#uses=1]
+ %51 = fmul float %43, %49 ; [#uses=1]
+ %52 = fmul float %46, %49 ; [#uses=1]
+ %53 = fmul float %u.0.2.0, %48 ; [#uses=1]
+ %54 = fmul float %u.0.1.0, %48 ; [#uses=1]
+ %55 = fmul float %u.0.0.0, %48 ; [#uses=1]
+ %56 = fadd float %53, %50 ; [#uses=1]
+ %57 = fadd float %54, %51 ; [#uses=1]
+ %58 = fadd float %55, %52 ; [#uses=1]
+ %59 = fmul float %56, 0x3F999999A0000000 ; [#uses=1]
+ %60 = fmul float %57, 0x3F999999A0000000 ; [#uses=1]
+ %61 = fmul float %58, 0x3F999999A0000000 ; [#uses=1]
+ %62 = fadd float %10, %59 ; [#uses=2]
+ %63 = fadd float %7, %60 ; [#uses=2]
+ %64 = fadd float %5, %61 ; [#uses=2]
+ br i1 %0, label %bb.i52, label %_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit60
+
+bb.i52: ; preds = %bb8.i58, %bb3
+ %65 = phi i32 [ %89, %bb8.i58 ], [ 0, %bb3 ] ; [#uses=7]
+ %m.112.i47 = phi i32 [ %m.0.i56, %bb8.i58 ], [ -1, %bb3 ] ; [#uses=6]
+ %scevgep17.i51 = getelementptr %struct.btQuadWord* %p, i32 %65, i32 0, i32 2 ; [#uses=1]
+ %scevgep16.i50 = getelementptr %struct.btQuadWord* %p, i32 %65, i32 0, i32 1 ; [#uses=1]
+ %scevgep1415.i49 = getelementptr inbounds %struct.btQuadWord* %p, i32 %65, i32 0, i32 0 ; [#uses=1]
+ %scevgep.i48 = getelementptr i32* %178, i32 %65 ; [#uses=1]
+ %66 = load i32* %scevgep.i48, align 4 ; [#uses=1]
+ %67 = icmp eq i32 %66, 0 ; [#uses=1]
+ br i1 %67, label %bb8.i58, label %bb1.i53
+
+bb1.i53: ; preds = %bb.i52
+ %68 = icmp eq i32 %m.112.i47, -1 ; [#uses=1]
+ br i1 %68, label %bb8.i58, label %bb2.i54
+
+bb2.i54: ; preds = %bb1.i53
+ %69 = load float* %scevgep1415.i49, align 4 ; [#uses=1]
+ %70 = fmul float %69, %64 ; [#uses=1]
+ %71 = load float* %scevgep16.i50, align 4 ; [#uses=1]
+ %72 = fmul float %71, %63 ; [#uses=1]
+ %73 = fadd float %70, %72 ; [#uses=1]
+ %74 = load float* %scevgep17.i51, align 4 ; [#uses=1]
+ %75 = fmul float %74, %62 ; [#uses=1]
+ %76 = fadd float %73, %75 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.btQuadWord* %p, i32 %m.112.i47, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %77, align 4 ; [#uses=1]
+ %79 = fmul float %78, %64 ; [#uses=1]
+ %80 = getelementptr inbounds %struct.btQuadWord* %p, i32 %m.112.i47, i32 0, i32 1 ; [#uses=1]
+ %81 = load float* %80, align 4 ; [#uses=1]
+ %82 = fmul float %81, %63 ; [#uses=1]
+ %83 = fadd float %79, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btQuadWord* %p, i32 %m.112.i47, i32 0, i32 2 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = fmul float %85, %62 ; [#uses=1]
+ %87 = fadd float %83, %86 ; [#uses=1]
+ %88 = fcmp ogt float %76, %87 ; [#uses=1]
+ br i1 %88, label %bb8.i58, label %bb4.i55
+
+bb4.i55: ; preds = %bb2.i54
+ br label %bb8.i58
+
+bb8.i58: ; preds = %bb4.i55, %bb2.i54, %bb1.i53, %bb.i52
+ %m.0.i56 = phi i32 [ %m.112.i47, %bb.i52 ], [ %65, %bb2.i54 ], [ %65, %bb1.i53 ], [ %m.112.i47, %bb4.i55 ] ; [#uses=2]
+ %89 = add nsw i32 %65, 1 ; [#uses=2]
+ %exitcond135 = icmp eq i32 %89, %count ; [#uses=1]
+ br i1 %exitcond135, label %_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit60, label %bb.i52
+
+_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit60: ; preds = %bb8.i58, %bb3
+ %m.1.lcssa.i59 = phi i32 [ -1, %bb3 ], [ %m.0.i56, %bb8.i58 ] ; [#uses=3]
+ %90 = icmp eq i32 %ma.0, %m.1.lcssa.i ; [#uses=1]
+ %91 = icmp eq i32 %m.1.lcssa.i59, %m.1.lcssa.i ; [#uses=1]
+ %92 = and i1 %90, %91 ; [#uses=1]
+ br i1 %92, label %bb7, label %bb8
+
+bb7: ; preds = %_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit60
+ %93 = getelementptr inbounds i32* %178, i32 %m.1.lcssa.i ; [#uses=1]
+ store i32 3, i32* %93, align 4
+ ret i32 %m.1.lcssa.i
+
+bb8: ; preds = %_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit60
+ %94 = icmp ne i32 %ma.0, -1 ; [#uses=1]
+ %95 = icmp ne i32 %ma.0, %m.1.lcssa.i59 ; [#uses=1]
+ %96 = and i1 %94, %95 ; [#uses=1]
+ br i1 %96, label %bb12, label %bb22
+
+bb12: ; preds = %bb8
+ %97 = fadd float %x.0, -4.000000e+01 ; [#uses=1]
+ br label %bb21
+
+bb13: ; preds = %bb21
+ %98 = fmul float %xx.0, 0x3F91DF46A0000000 ; [#uses=2]
+ %99 = tail call float @sinf(float %98) nounwind readonly ; [#uses=3]
+ %100 = tail call float @cosf(float %98) nounwind readonly ; [#uses=3]
+ %101 = fmul float %40, %100 ; [#uses=1]
+ %102 = fmul float %43, %100 ; [#uses=1]
+ %103 = fmul float %46, %100 ; [#uses=1]
+ %104 = fmul float %u.0.2.0, %99 ; [#uses=1]
+ %105 = fmul float %u.0.1.0, %99 ; [#uses=1]
+ %106 = fmul float %u.0.0.0, %99 ; [#uses=1]
+ %107 = fadd float %104, %101 ; [#uses=1]
+ %108 = fadd float %105, %102 ; [#uses=1]
+ %109 = fadd float %106, %103 ; [#uses=1]
+ %110 = fmul float %107, 0x3F999999A0000000 ; [#uses=1]
+ %111 = fmul float %108, 0x3F999999A0000000 ; [#uses=1]
+ %112 = fmul float %109, 0x3F999999A0000000 ; [#uses=1]
+ %113 = fadd float %10, %110 ; [#uses=2]
+ %114 = fadd float %7, %111 ; [#uses=2]
+ %115 = fadd float %5, %112 ; [#uses=2]
+ br i1 %0, label %bb.i37, label %_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit45
+
+bb.i37: ; preds = %bb8.i43, %bb13
+ %116 = phi i32 [ %140, %bb8.i43 ], [ 0, %bb13 ] ; [#uses=7]
+ %m.112.i32 = phi i32 [ %m.0.i41, %bb8.i43 ], [ -1, %bb13 ] ; [#uses=6]
+ %scevgep17.i36 = getelementptr %struct.btQuadWord* %p, i32 %116, i32 0, i32 2 ; [#uses=1]
+ %scevgep16.i35 = getelementptr %struct.btQuadWord* %p, i32 %116, i32 0, i32 1 ; [#uses=1]
+ %scevgep1415.i34 = getelementptr inbounds %struct.btQuadWord* %p, i32 %116, i32 0, i32 0 ; [#uses=1]
+ %scevgep.i33 = getelementptr i32* %178, i32 %116 ; [#uses=1]
+ %117 = load i32* %scevgep.i33, align 4 ; [#uses=1]
+ %118 = icmp eq i32 %117, 0 ; [#uses=1]
+ br i1 %118, label %bb8.i43, label %bb1.i38
+
+bb1.i38: ; preds = %bb.i37
+ %119 = icmp eq i32 %m.112.i32, -1 ; [#uses=1]
+ br i1 %119, label %bb8.i43, label %bb2.i39
+
+bb2.i39: ; preds = %bb1.i38
+ %120 = load float* %scevgep1415.i34, align 4 ; [#uses=1]
+ %121 = fmul float %120, %115 ; [#uses=1]
+ %122 = load float* %scevgep16.i35, align 4 ; [#uses=1]
+ %123 = fmul float %122, %114 ; [#uses=1]
+ %124 = fadd float %121, %123 ; [#uses=1]
+ %125 = load float* %scevgep17.i36, align 4 ; [#uses=1]
+ %126 = fmul float %125, %113 ; [#uses=1]
+ %127 = fadd float %124, %126 ; [#uses=1]
+ %128 = getelementptr inbounds %struct.btQuadWord* %p, i32 %m.112.i32, i32 0, i32 0 ; [#uses=1]
+ %129 = load float* %128, align 4 ; [#uses=1]
+ %130 = fmul float %129, %115 ; [#uses=1]
+ %131 = getelementptr inbounds %struct.btQuadWord* %p, i32 %m.112.i32, i32 0, i32 1 ; [#uses=1]
+ %132 = load float* %131, align 4 ; [#uses=1]
+ %133 = fmul float %132, %114 ; [#uses=1]
+ %134 = fadd float %130, %133 ; [#uses=1]
+ %135 = getelementptr inbounds %struct.btQuadWord* %p, i32 %m.112.i32, i32 0, i32 2 ; [#uses=1]
+ %136 = load float* %135, align 4 ; [#uses=1]
+ %137 = fmul float %136, %113 ; [#uses=1]
+ %138 = fadd float %134, %137 ; [#uses=1]
+ %139 = fcmp ogt float %127, %138 ; [#uses=1]
+ br i1 %139, label %bb8.i43, label %bb4.i40
+
+bb4.i40: ; preds = %bb2.i39
+ br label %bb8.i43
+
+bb8.i43: ; preds = %bb4.i40, %bb2.i39, %bb1.i38, %bb.i37
+ %m.0.i41 = phi i32 [ %m.112.i32, %bb.i37 ], [ %116, %bb2.i39 ], [ %116, %bb1.i38 ], [ %m.112.i32, %bb4.i40 ] ; [#uses=2]
+ %140 = add nsw i32 %116, 1 ; [#uses=2]
+ %exitcond129 = icmp eq i32 %140, %count ; [#uses=1]
+ br i1 %exitcond129, label %_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit45, label %bb.i37
+
+_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit45: ; preds = %bb8.i43, %bb13
+ %m.1.lcssa.i44 = phi i32 [ -1, %bb13 ], [ %m.0.i41, %bb8.i43 ] ; [#uses=2]
+ %141 = icmp eq i32 %mc.0, %m.1.lcssa.i ; [#uses=1]
+ %142 = icmp eq i32 %m.1.lcssa.i44, %m.1.lcssa.i ; [#uses=1]
+ %143 = and i1 %141, %142 ; [#uses=1]
+ br i1 %143, label %bb19, label %bb20
+
+bb19: ; preds = %_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit45
+ store i32 3, i32* %179, align 4
+ ret i32 %m.1.lcssa.i
+
+bb20: ; preds = %_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit45
+ %144 = fadd float %xx.0, 5.000000e+00 ; [#uses=1]
+ br label %bb21
+
+bb21: ; preds = %bb20, %bb12
+ %mc.0 = phi i32 [ %ma.0, %bb12 ], [ %m.1.lcssa.i44, %bb20 ] ; [#uses=1]
+ %xx.0 = phi float [ %97, %bb12 ], [ %144, %bb20 ] ; [#uses=3]
+ %145 = fcmp ugt float %xx.0, %x.0 ; [#uses=1]
+ br i1 %145, label %bb22, label %bb13
+
+bb22: ; preds = %bb21, %bb8
+ %146 = fadd float %x.0, 4.500000e+01 ; [#uses=1]
+ br label %bb23
+
+bb23: ; preds = %bb22, %_Z4orthRK9btVector3.exit
+ %ma.0 = phi i32 [ -1, %_Z4orthRK9btVector3.exit ], [ %m.1.lcssa.i59, %bb22 ] ; [#uses=4]
+ %x.0 = phi float [ 0.000000e+00, %_Z4orthRK9btVector3.exit ], [ %146, %bb22 ] ; [#uses=5]
+ %147 = fcmp ugt float %x.0, 3.600000e+02 ; [#uses=1]
+ br i1 %147, label %bb24, label %bb3
+
+bb24: ; preds = %bb23
+ %148 = getelementptr inbounds i32* %178, i32 %m.1.lcssa.i ; [#uses=1]
+ store i32 0, i32* %148, align 4
+ br label %bb25
+
+bb25: ; preds = %bb24, %entry
+ %149 = load i32** %1, align 4 ; [#uses=3]
+ br i1 %0, label %bb.i29, label %_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit
+
+bb.i29: ; preds = %bb8.i, %bb25
+ %150 = phi i32 [ %177, %bb8.i ], [ 0, %bb25 ] ; [#uses=7]
+ %m.112.i = phi i32 [ %m.0.i, %bb8.i ], [ -1, %bb25 ] ; [#uses=6]
+ %scevgep17.i = getelementptr %struct.btQuadWord* %p, i32 %150, i32 0, i32 2 ; [#uses=1]
+ %scevgep16.i = getelementptr %struct.btQuadWord* %p, i32 %150, i32 0, i32 1 ; [#uses=1]
+ %scevgep1415.i = getelementptr inbounds %struct.btQuadWord* %p, i32 %150, i32 0, i32 0 ; [#uses=1]
+ %scevgep.i = getelementptr i32* %149, i32 %150 ; [#uses=1]
+ %151 = load i32* %scevgep.i, align 4 ; [#uses=1]
+ %152 = icmp eq i32 %151, 0 ; [#uses=1]
+ br i1 %152, label %bb8.i, label %bb1.i30
+
+bb1.i30: ; preds = %bb.i29
+ %153 = icmp eq i32 %m.112.i, -1 ; [#uses=1]
+ br i1 %153, label %bb8.i, label %bb2.i
+
+bb2.i: ; preds = %bb1.i30
+ %154 = load float* %scevgep1415.i, align 4 ; [#uses=1]
+ %155 = load float* %2, align 4 ; [#uses=2]
+ %156 = fmul float %154, %155 ; [#uses=1]
+ %157 = load float* %scevgep16.i, align 4 ; [#uses=1]
+ %158 = load float* %3, align 4 ; [#uses=2]
+ %159 = fmul float %157, %158 ; [#uses=1]
+ %160 = fadd float %156, %159 ; [#uses=1]
+ %161 = load float* %scevgep17.i, align 4 ; [#uses=1]
+ %162 = load float* %4, align 4 ; [#uses=2]
+ %163 = fmul float %161, %162 ; [#uses=1]
+ %164 = fadd float %160, %163 ; [#uses=1]
+ %165 = getelementptr inbounds %struct.btQuadWord* %p, i32 %m.112.i, i32 0, i32 0 ; [#uses=1]
+ %166 = load float* %165, align 4 ; [#uses=1]
+ %167 = fmul float %166, %155 ; [#uses=1]
+ %168 = getelementptr inbounds %struct.btQuadWord* %p, i32 %m.112.i, i32 0, i32 1 ; [#uses=1]
+ %169 = load float* %168, align 4 ; [#uses=1]
+ %170 = fmul float %169, %158 ; [#uses=1]
+ %171 = fadd float %167, %170 ; [#uses=1]
+ %172 = getelementptr inbounds %struct.btQuadWord* %p, i32 %m.112.i, i32 0, i32 2 ; [#uses=1]
+ %173 = load float* %172, align 4 ; [#uses=1]
+ %174 = fmul float %173, %162 ; [#uses=1]
+ %175 = fadd float %171, %174 ; [#uses=1]
+ %176 = fcmp ogt float %164, %175 ; [#uses=1]
+ br i1 %176, label %bb8.i, label %bb4.i
+
+bb4.i: ; preds = %bb2.i
+ br label %bb8.i
+
+bb8.i: ; preds = %bb4.i, %bb2.i, %bb1.i30, %bb.i29
+ %m.0.i = phi i32 [ %m.112.i, %bb.i29 ], [ %150, %bb2.i ], [ %150, %bb1.i30 ], [ %m.112.i, %bb4.i ] ; [#uses=2]
+ %177 = add nsw i32 %150, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %177, %count ; [#uses=1]
+ br i1 %exitcond, label %_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit, label %bb.i29
+
+_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit: ; preds = %bb8.i, %bb25
+ %178 = phi i32* [ %149, %bb8.i ], [ %149, %bb25 ] ; [#uses=5]
+ %m.1.lcssa.i = phi i32 [ %m.0.i, %bb8.i ], [ -1, %bb25 ] ; [#uses=10]
+ %179 = getelementptr inbounds i32* %178, i32 %m.1.lcssa.i ; [#uses=2]
+ %180 = load i32* %179, align 4 ; [#uses=1]
+ %181 = icmp eq i32 %180, 3 ; [#uses=1]
+ br i1 %181, label %bb27, label %bb2
+
+bb27: ; preds = %_Z14maxdirfilteredI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE.exit
+ ret i32 %m.1.lcssa.i
+}
+
+; [#uses=1]
+define void @_ZN11HullLibrary11FindSimplexEP9btVector3iR20btAlignedObjectArrayIiE(%struct.int4* noalias nocapture sret %agg.result, %struct.HullLibrary* nocapture %this, %struct.btQuadWord* nocapture %verts, i32 %verts_count, %"struct.btAlignedObjectArray<int>"* nocapture %allow) nounwind align 2 {
+bb2:
+ %0 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %2 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %basis = alloca [3 x %struct.btQuadWord], align 8 ; [#uses=15]
+ %3 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 0, i32 0, i32 0 ; [#uses=4]
+ store float 0x3F847AE140000000, float* %3, align 8
+ %4 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 0, i32 0, i32 1 ; [#uses=4]
+ store float 0x3F947AE140000000, float* %4, align 4
+ %5 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 0, i32 0, i32 2 ; [#uses=4]
+ store float 1.000000e+00, float* %5, align 8
+ %6 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 0, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %6, align 4
+ %7 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 0 ; [#uses=1]
+ %8 = call i32 @_Z12maxdirsteridI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE(%struct.btQuadWord* %verts, i32 %verts_count, %struct.btQuadWord* %7, %"struct.btAlignedObjectArray<int>"* %allow) ; [#uses=9]
+ %9 = load float* %5, align 8 ; [#uses=1]
+ %10 = fsub float -0.000000e+00, %9 ; [#uses=1]
+ %11 = load float* %4, align 4 ; [#uses=1]
+ %12 = fsub float -0.000000e+00, %11 ; [#uses=1]
+ %13 = load float* %3, align 8 ; [#uses=1]
+ %14 = fsub float -0.000000e+00, %13 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %14, float* %15, align 8
+ %16 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %12, float* %16, align 4
+ %17 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %10, float* %17, align 8
+ %18 = getelementptr inbounds %struct.btQuadWord* %2, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %18, align 4
+ %19 = call i32 @_Z12maxdirsteridI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE(%struct.btQuadWord* %verts, i32 %verts_count, %struct.btQuadWord* %2, %"struct.btAlignedObjectArray<int>"* %allow) ; [#uses=9]
+ %20 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %8, i32 0, i32 2 ; [#uses=3]
+ %21 = load float* %20, align 4 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %19, i32 0, i32 2 ; [#uses=2]
+ %23 = load float* %22, align 4 ; [#uses=1]
+ %24 = fsub float %21, %23 ; [#uses=6]
+ %25 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %8, i32 0, i32 1 ; [#uses=3]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %19, i32 0, i32 1 ; [#uses=2]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ %29 = fsub float %26, %28 ; [#uses=5]
+ %30 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %8, i32 0, i32 0 ; [#uses=3]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %19, i32 0, i32 0 ; [#uses=2]
+ %33 = load float* %32, align 4 ; [#uses=1]
+ %34 = fsub float %31, %33 ; [#uses=5]
+ store float %34, float* %3, align 8
+ store float %29, float* %4, align 4
+ store float %24, float* %5, align 8
+ store float 0.000000e+00, float* %6, align 4
+ %35 = icmp eq i32 %8, %19 ; [#uses=1]
+ br i1 %35, label %bb8, label %bb.i
+
+bb.i: ; preds = %bb2
+ %36 = fcmp une float %24, 0.000000e+00 ; [#uses=1]
+ %37 = fcmp une float %29, 0.000000e+00 ; [#uses=1]
+ %or.cond84 = or i1 %36, %37 ; [#uses=1]
+ %phitmp = fcmp une float %34, 0.000000e+00 ; [#uses=1]
+ %or.cond85 = or i1 %or.cond84, %phitmp ; [#uses=1]
+ br i1 %or.cond85, label %bb5, label %bb8
+
+bb5: ; preds = %bb.i
+ %38 = fmul float %34, 0x3F947AE140000000 ; [#uses=1]
+ %39 = fsub float %29, %38 ; [#uses=4]
+ %40 = fmul float %34, 0.000000e+00 ; [#uses=2]
+ %41 = fsub float %40, %24 ; [#uses=4]
+ %42 = fmul float %24, 0x3F947AE140000000 ; [#uses=1]
+ %43 = fmul float %29, 0.000000e+00 ; [#uses=2]
+ %44 = fsub float %42, %43 ; [#uses=4]
+ %45 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 1, i32 0, i32 0 ; [#uses=5]
+ store float %44, float* %45, align 8
+ %46 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 1, i32 0, i32 1 ; [#uses=5]
+ store float %41, float* %46, align 4
+ %47 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 1, i32 0, i32 2 ; [#uses=5]
+ store float %39, float* %47, align 8
+ %48 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 1, i32 0, i32 3 ; [#uses=3]
+ store float 0.000000e+00, float* %48, align 4
+ %49 = fmul float %29, 0xBF947AE140000000 ; [#uses=1]
+ %50 = fsub float %49, %34 ; [#uses=5]
+ %51 = fmul float %24, 0xBF947AE140000000 ; [#uses=1]
+ %52 = fsub float %40, %51 ; [#uses=4]
+ %53 = fsub float %24, %43 ; [#uses=4]
+ %54 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 2, i32 0, i32 0 ; [#uses=3]
+ store float %53, float* %54, align 8
+ %55 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 2, i32 0, i32 1 ; [#uses=3]
+ store float %52, float* %55, align 4
+ %56 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 2, i32 0, i32 2 ; [#uses=3]
+ store float %50, float* %56, align 8
+ %57 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 2, i32 0, i32 3 ; [#uses=2]
+ store float 0.000000e+00, float* %57, align 4
+ %58 = fmul float %44, %44 ; [#uses=1]
+ %59 = fmul float %41, %41 ; [#uses=1]
+ %60 = fadd float %58, %59 ; [#uses=1]
+ %61 = fmul float %39, %39 ; [#uses=1]
+ %62 = fadd float %60, %61 ; [#uses=1]
+ %63 = call float @sqrtf(float %62) nounwind readonly ; [#uses=2]
+ %64 = fmul float %53, %53 ; [#uses=1]
+ %65 = fmul float %52, %52 ; [#uses=1]
+ %66 = fadd float %64, %65 ; [#uses=1]
+ %67 = fmul float %50, %50 ; [#uses=1]
+ %68 = fadd float %66, %67 ; [#uses=1]
+ %69 = call float @sqrtf(float %68) nounwind readonly ; [#uses=2]
+ %70 = fcmp ogt float %63, %69 ; [#uses=1]
+ br i1 %70, label %bb13, label %bb14
+
+bb8: ; preds = %bb.i, %bb2
+ %71 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 0 ; [#uses=1]
+ store i32 -1, i32* %71, align 4
+ %72 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 1 ; [#uses=1]
+ store i32 -1, i32* %72, align 4
+ %73 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %73, align 4
+ %74 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 3 ; [#uses=1]
+ store i32 -1, i32* %74, align 4
+ ret void
+
+bb13: ; preds = %bb5
+ %75 = fdiv float 1.000000e+00, %63 ; [#uses=3]
+ %76 = fmul float %44, %75 ; [#uses=1]
+ store float %76, float* %45, align 8
+ %77 = fmul float %41, %75 ; [#uses=1]
+ store float %77, float* %46, align 4
+ %78 = fmul float %39, %75 ; [#uses=1]
+ br label %bb15
+
+bb14: ; preds = %bb5
+ store float %50, float* %47, align 8
+ store float 0.000000e+00, float* %48, align 4
+ %79 = fdiv float 1.000000e+00, %69 ; [#uses=3]
+ %80 = fmul float %53, %79 ; [#uses=1]
+ store float %80, float* %45, align 8
+ %81 = fmul float %52, %79 ; [#uses=1]
+ store float %81, float* %46, align 4
+ %82 = fmul float %50, %79 ; [#uses=1]
+ br label %bb15
+
+bb15: ; preds = %bb14, %bb13
+ %storemerge = phi float [ %82, %bb14 ], [ %78, %bb13 ] ; [#uses=1]
+ store float %storemerge, float* %47, align 8
+ %83 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 1 ; [#uses=1]
+ %84 = call i32 @_Z12maxdirsteridI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE(%struct.btQuadWord* %verts, i32 %verts_count, %struct.btQuadWord* %83, %"struct.btAlignedObjectArray<int>"* %allow) ; [#uses=3]
+ %85 = icmp eq i32 %84, %8 ; [#uses=1]
+ %86 = icmp eq i32 %84, %19 ; [#uses=1]
+ %87 = or i1 %85, %86 ; [#uses=1]
+ br i1 %87, label %bb19, label %bb20
+
+bb19: ; preds = %bb15
+ %88 = load float* %47, align 8 ; [#uses=1]
+ %89 = fsub float -0.000000e+00, %88 ; [#uses=1]
+ %90 = load float* %46, align 4 ; [#uses=1]
+ %91 = fsub float -0.000000e+00, %90 ; [#uses=1]
+ %92 = load float* %45, align 8 ; [#uses=1]
+ %93 = fsub float -0.000000e+00, %92 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %93, float* %94, align 8
+ %95 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %91, float* %95, align 4
+ %96 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %89, float* %96, align 8
+ %97 = getelementptr inbounds %struct.btQuadWord* %1, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %97, align 4
+ %98 = call i32 @_Z12maxdirsteridI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE(%struct.btQuadWord* %verts, i32 %verts_count, %struct.btQuadWord* %1, %"struct.btAlignedObjectArray<int>"* %allow) ; [#uses=1]
+ br label %bb20
+
+bb20: ; preds = %bb19, %bb15
+ %p2.0 = phi i32 [ %98, %bb19 ], [ %84, %bb15 ] ; [#uses=9]
+ %99 = icmp eq i32 %p2.0, %8 ; [#uses=1]
+ %100 = icmp eq i32 %p2.0, %19 ; [#uses=1]
+ %101 = or i1 %99, %100 ; [#uses=1]
+ br i1 %101, label %bb24, label %bb25
+
+bb24: ; preds = %bb20
+ %102 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 0 ; [#uses=1]
+ store i32 -1, i32* %102, align 4
+ %103 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 1 ; [#uses=1]
+ store i32 -1, i32* %103, align 4
+ %104 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %104, align 4
+ %105 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 3 ; [#uses=1]
+ store i32 -1, i32* %105, align 4
+ ret void
+
+bb25: ; preds = %bb20
+ %106 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %p2.0, i32 0, i32 2 ; [#uses=2]
+ %107 = load float* %106, align 4 ; [#uses=1]
+ %108 = load float* %20, align 4 ; [#uses=1]
+ %109 = fsub float %107, %108 ; [#uses=3]
+ %110 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %p2.0, i32 0, i32 1 ; [#uses=2]
+ %111 = load float* %110, align 4 ; [#uses=1]
+ %112 = load float* %25, align 4 ; [#uses=1]
+ %113 = fsub float %111, %112 ; [#uses=3]
+ %114 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %p2.0, i32 0, i32 0 ; [#uses=2]
+ %115 = load float* %114, align 4 ; [#uses=1]
+ %116 = load float* %30, align 4 ; [#uses=1]
+ %117 = fsub float %115, %116 ; [#uses=3]
+ store float %117, float* %45, align 8
+ store float %113, float* %46, align 4
+ store float %109, float* %47, align 8
+ store float 0.000000e+00, float* %48, align 4
+ %118 = load float* %4, align 4 ; [#uses=2]
+ %119 = fmul float %117, %118 ; [#uses=1]
+ %120 = load float* %3, align 8 ; [#uses=2]
+ %121 = fmul float %113, %120 ; [#uses=1]
+ %122 = fsub float %119, %121 ; [#uses=3]
+ %123 = fmul float %109, %120 ; [#uses=1]
+ %124 = load float* %5, align 8 ; [#uses=2]
+ %125 = fmul float %117, %124 ; [#uses=1]
+ %126 = fsub float %123, %125 ; [#uses=3]
+ %127 = fmul float %113, %124 ; [#uses=1]
+ %128 = fmul float %109, %118 ; [#uses=1]
+ %129 = fsub float %127, %128 ; [#uses=3]
+ %130 = fmul float %129, %129 ; [#uses=1]
+ %131 = fmul float %126, %126 ; [#uses=1]
+ %132 = fadd float %130, %131 ; [#uses=1]
+ %133 = fmul float %122, %122 ; [#uses=1]
+ %134 = fadd float %132, %133 ; [#uses=1]
+ %135 = call float @sqrtf(float %134) nounwind readonly ; [#uses=1]
+ %136 = fdiv float 1.000000e+00, %135 ; [#uses=3]
+ %137 = fmul float %122, %136 ; [#uses=1]
+ %138 = fmul float %126, %136 ; [#uses=1]
+ %139 = fmul float %129, %136 ; [#uses=1]
+ store float %139, float* %54, align 8
+ store float %138, float* %55, align 4
+ store float %137, float* %56, align 8
+ store float 0.000000e+00, float* %57, align 4
+ %140 = getelementptr inbounds [3 x %struct.btQuadWord]* %basis, i32 0, i32 2 ; [#uses=1]
+ %141 = call i32 @_Z12maxdirsteridI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE(%struct.btQuadWord* %verts, i32 %verts_count, %struct.btQuadWord* %140, %"struct.btAlignedObjectArray<int>"* %allow) ; [#uses=4]
+ %142 = icmp eq i32 %141, %8 ; [#uses=1]
+ %143 = icmp eq i32 %141, %19 ; [#uses=1]
+ %144 = or i1 %142, %143 ; [#uses=1]
+ %145 = icmp eq i32 %141, %p2.0 ; [#uses=1]
+ %or.cond = or i1 %144, %145 ; [#uses=1]
+ br i1 %or.cond, label %bb32, label %bb33
+
+bb32: ; preds = %bb25
+ %146 = load float* %56, align 8 ; [#uses=1]
+ %147 = fsub float -0.000000e+00, %146 ; [#uses=1]
+ %148 = load float* %55, align 4 ; [#uses=1]
+ %149 = fsub float -0.000000e+00, %148 ; [#uses=1]
+ %150 = load float* %54, align 8 ; [#uses=1]
+ %151 = fsub float -0.000000e+00, %150 ; [#uses=1]
+ %152 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %151, float* %152, align 8
+ %153 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %149, float* %153, align 4
+ %154 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %147, float* %154, align 8
+ %155 = getelementptr inbounds %struct.btQuadWord* %0, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %155, align 4
+ %156 = call i32 @_Z12maxdirsteridI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE(%struct.btQuadWord* %verts, i32 %verts_count, %struct.btQuadWord* %0, %"struct.btAlignedObjectArray<int>"* %allow) ; [#uses=1]
+ br label %bb33
+
+bb33: ; preds = %bb32, %bb25
+ %p3.0 = phi i32 [ %156, %bb32 ], [ %141, %bb25 ] ; [#uses=8]
+ %157 = icmp eq i32 %p3.0, %8 ; [#uses=1]
+ %158 = icmp eq i32 %p3.0, %19 ; [#uses=1]
+ %159 = or i1 %157, %158 ; [#uses=1]
+ %160 = icmp eq i32 %p3.0, %p2.0 ; [#uses=1]
+ %or.cond82 = or i1 %159, %160 ; [#uses=1]
+ br i1 %or.cond82, label %bb38, label %bb39
+
+bb38: ; preds = %bb33
+ %161 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 0 ; [#uses=1]
+ store i32 -1, i32* %161, align 4
+ %162 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 1 ; [#uses=1]
+ store i32 -1, i32* %162, align 4
+ %163 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 2 ; [#uses=1]
+ store i32 -1, i32* %163, align 4
+ %164 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 3 ; [#uses=1]
+ store i32 -1, i32* %164, align 4
+ ret void
+
+bb39: ; preds = %bb33
+ %165 = load float* %106, align 4 ; [#uses=1]
+ %166 = load float* %20, align 4 ; [#uses=3]
+ %167 = fsub float %165, %166 ; [#uses=2]
+ %168 = load float* %110, align 4 ; [#uses=1]
+ %169 = load float* %25, align 4 ; [#uses=3]
+ %170 = fsub float %168, %169 ; [#uses=2]
+ %171 = load float* %114, align 4 ; [#uses=1]
+ %172 = load float* %30, align 4 ; [#uses=3]
+ %173 = fsub float %171, %172 ; [#uses=2]
+ %174 = load float* %22, align 4 ; [#uses=1]
+ %175 = fsub float %174, %166 ; [#uses=2]
+ %176 = load float* %27, align 4 ; [#uses=1]
+ %177 = fsub float %176, %169 ; [#uses=2]
+ %178 = load float* %32, align 4 ; [#uses=1]
+ %179 = fsub float %178, %172 ; [#uses=2]
+ %180 = fmul float %179, %170 ; [#uses=1]
+ %181 = fmul float %177, %173 ; [#uses=1]
+ %182 = fsub float %180, %181 ; [#uses=1]
+ %183 = fmul float %175, %173 ; [#uses=1]
+ %184 = fmul float %179, %167 ; [#uses=1]
+ %185 = fsub float %183, %184 ; [#uses=1]
+ %186 = fmul float %177, %167 ; [#uses=1]
+ %187 = fmul float %175, %170 ; [#uses=1]
+ %188 = fsub float %186, %187 ; [#uses=1]
+ %189 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %p3.0, i32 0, i32 2 ; [#uses=1]
+ %190 = load float* %189, align 4 ; [#uses=1]
+ %191 = fsub float %190, %166 ; [#uses=1]
+ %192 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %p3.0, i32 0, i32 1 ; [#uses=1]
+ %193 = load float* %192, align 4 ; [#uses=1]
+ %194 = fsub float %193, %169 ; [#uses=1]
+ %195 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %p3.0, i32 0, i32 0 ; [#uses=1]
+ %196 = load float* %195, align 4 ; [#uses=1]
+ %197 = fsub float %196, %172 ; [#uses=1]
+ %198 = fmul float %197, %188 ; [#uses=1]
+ %199 = fmul float %194, %185 ; [#uses=1]
+ %200 = fadd float %198, %199 ; [#uses=1]
+ %201 = fmul float %191, %182 ; [#uses=1]
+ %202 = fadd float %200, %201 ; [#uses=1]
+ %203 = fcmp olt float %202, 0.000000e+00 ; [#uses=2]
+ %p2.1 = select i1 %203, i32 %p3.0, i32 %p2.0 ; [#uses=1]
+ %p3.1 = select i1 %203, i32 %p2.0, i32 %p3.0 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 0 ; [#uses=1]
+ store i32 %8, i32* %204, align 4
+ %205 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 1 ; [#uses=1]
+ store i32 %19, i32* %205, align 4
+ %206 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 2 ; [#uses=1]
+ store i32 %p2.1, i32* %206, align 4
+ %207 = getelementptr inbounds %struct.int4* %agg.result, i32 0, i32 3 ; [#uses=1]
+ store i32 %p3.1, i32* %207, align 4
+ ret void
+}
+
+; [#uses=1]
+define i32 @_ZN11HullLibrary11calchullgenEP9btVector3ii(%struct.HullLibrary* %this, %struct.btQuadWord* %verts, i32 %verts_count, i32 %vlimit) align 2 {
+entry:
+ %allow = alloca %"struct.btAlignedObjectArray<int>", align 8 ; [#uses=7]
+ %p = alloca %struct.int4, align 8 ; [#uses=2]
+ %n = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %n52 = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = icmp slt i32 %verts_count, 4 ; [#uses=1]
+ br i1 %0, label %bb81, label %bb.i2.i
+
+bb.i2.i: ; preds = %entry
+ %1 = icmp eq i32 %vlimit, 0 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btQuadWord* %verts, i32 0, i32 0, i32 0 ; [#uses=1]
+ %3 = load float* %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btQuadWord* %verts, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %verts, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = shl i32 %verts_count, 2 ; [#uses=2]
+ %9 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %8, i32 16)
+ to label %bb.i2.i105 unwind label %lpad ; [#uses=1]
+
+bb.i2.i105: ; preds = %bb.i2.i
+ %phitmp.i = bitcast i8* %9 to i32* ; [#uses=2]
+ %10 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %allow, i32 0, i32 4 ; [#uses=8]
+ store i8 1, i8* %10, align 8
+ %11 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %allow, i32 0, i32 3 ; [#uses=13]
+ store i32* null, i32** %11, align 4
+ %12 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %allow, i32 0, i32 1 ; [#uses=5]
+ store i32 0, i32* %12, align 4
+ %13 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %allow, i32 0, i32 2 ; [#uses=6]
+ store i32 0, i32* %13, align 8
+ %14 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %8, i32 16)
+ to label %bb11.preheader unwind label %lpad85 ; [#uses=1]
+
+bb11.preheader: ; preds = %bb.i2.i105
+ %phitmp.i104 = bitcast i8* %14 to i32* ; [#uses=1]
+ store i8 1, i8* %10, align 8
+ store i32* %phitmp.i104, i32** %11, align 4
+ store i32 %verts_count, i32* %13, align 8
+ br label %bb11
+
+bb6: ; preds = %bb11
+ %15 = load i32* %13, align 8 ; [#uses=2]
+ %16 = icmp eq i32 %15, %.pre6.i ; [#uses=1]
+ br i1 %16, label %bb.i126, label %bb1.i
+
+bb.i126: ; preds = %bb6
+ %17 = icmp eq i32 %.pre6.i, 0 ; [#uses=1]
+ %18 = shl i32 %.pre6.i, 1 ; [#uses=1]
+ %iftmp.190.0.i.i = select i1 %17, i32 1, i32 %18 ; [#uses=4]
+ %19 = icmp slt i32 %15, %iftmp.190.0.i.i ; [#uses=1]
+ br i1 %19, label %bb.i.i127, label %bb1.i
+
+bb.i.i127: ; preds = %bb.i126
+ %20 = icmp eq i32 %iftmp.190.0.i.i, 0 ; [#uses=1]
+ br i1 %20, label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i127
+ %21 = shl i32 %iftmp.190.0.i.i, 2 ; [#uses=1]
+ %22 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %21, i32 16)
+ to label %.noexc133 unwind label %lpad85 ; [#uses=1]
+
+.noexc133: ; preds = %bb.i2.i.i
+ %phitmp.i.i = bitcast i8* %22 to i32* ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i: ; preds = %.noexc133, %bb.i.i127
+ %23 = phi i32* [ %phitmp.i.i, %.noexc133 ], [ null, %bb.i.i127 ] ; [#uses=2]
+ %24 = icmp sgt i32 %.pre6.i, 0 ; [#uses=1]
+ br i1 %24, label %bb.i4.i.i, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+
+bb.i4.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %indvar.i.i.i = phi i32 [ %indvar.next.i.i.i, %bb3.i.i.i ], [ 0, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i ] ; [#uses=3]
+ %scevgep.i.i.i = getelementptr i32* %23, i32 %indvar.i.i.i ; [#uses=2]
+ %25 = icmp eq i32* %scevgep.i.i.i, null ; [#uses=1]
+ br i1 %25, label %bb3.i.i.i, label %bb1.i5.i.i
+
+bb1.i5.i.i: ; preds = %bb.i4.i.i
+ %26 = load i32** %11, align 4 ; [#uses=1]
+ %scevgep8.i.i.i = getelementptr i32* %26, i32 %indvar.i.i.i ; [#uses=1]
+ %27 = load i32* %scevgep8.i.i.i, align 4 ; [#uses=1]
+ store i32 %27, i32* %scevgep.i.i.i, align 4
+ br label %bb3.i.i.i
+
+bb3.i.i.i: ; preds = %bb1.i5.i.i, %bb.i4.i.i
+ %indvar.next.i.i.i = add i32 %indvar.i.i.i, 1 ; [#uses=2]
+ %exitcond291 = icmp eq i32 %indvar.next.i.i.i, %.pre6.i ; [#uses=1]
+ br i1 %exitcond291, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i, label %bb.i4.i.i
+
+_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i: ; preds = %bb3.i.i.i, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %28 = load i32** %11, align 4 ; [#uses=2]
+ %29 = icmp eq i32* %28, null ; [#uses=1]
+ br i1 %29, label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, label %bb.i.i.i130
+
+bb.i.i.i130: ; preds = %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+ %30 = load i8* %10, align 8 ; [#uses=1]
+ %toBool.i.i.i129 = icmp eq i8 %30, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i129, label %bb2.i.i.i132, label %bb1.i.i.i131
+
+bb1.i.i.i131: ; preds = %bb.i.i.i130
+ %31 = bitcast i32* %28 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %31)
+ to label %bb2.i.i.i132 unwind label %lpad85
+
+bb2.i.i.i132: ; preds = %bb1.i.i.i131, %bb.i.i.i130
+ store i32* null, i32** %11, align 4
+ br label %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i: ; preds = %bb2.i.i.i132, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+ store i8 1, i8* %10, align 8
+ store i32* %23, i32** %11, align 4
+ store i32 %iftmp.190.0.i.i, i32* %13, align 8
+ br label %bb1.i
+
+bb1.i: ; preds = %_ZN20btAlignedObjectArrayIiE10deallocateEv.exit.i.i, %bb.i126, %bb6
+ %32 = load i32** %11, align 4 ; [#uses=1]
+ %33 = getelementptr inbounds i32* %32, i32 %.pre6.i ; [#uses=2]
+ %34 = icmp eq i32* %33, null ; [#uses=1]
+ br i1 %34, label %invcont7, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ store i32 1, i32* %33, align 4
+ br label %invcont7
+
+invcont7: ; preds = %bb2.i, %bb1.i
+ %35 = add nsw i32 %.pre6.i, 1 ; [#uses=2]
+ store i32 %35, i32* %12, align 4
+ %36 = icmp eq i32 %isextreme.2.1, %j.0 ; [#uses=1]
+ br i1 %36, label %bb.i136, label %bb1.i158
+
+bb.i136: ; preds = %invcont7
+ %37 = icmp eq i32 %j.0, 0 ; [#uses=1]
+ %iftmp.190.0.i.i135 = select i1 %37, i32 1, i32 %tmp303 ; [#uses=5]
+ %38 = icmp slt i32 %isextreme.2.1, %iftmp.190.0.i.i135 ; [#uses=1]
+ br i1 %38, label %bb.i.i137, label %bb1.i158
+
+bb.i.i137: ; preds = %bb.i136
+ %39 = icmp eq i32 %iftmp.190.0.i.i135, 0 ; [#uses=1]
+ br i1 %39, label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i141, label %bb.i2.i.i140
+
+bb.i2.i.i140: ; preds = %bb.i.i137
+ %40 = shl i32 %iftmp.190.0.i.i135, 2 ; [#uses=1]
+ %41 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %40, i32 16)
+ to label %.noexc161 unwind label %lpad85 ; [#uses=1]
+
+.noexc161: ; preds = %bb.i2.i.i140
+ %phitmp.i.i138 = bitcast i8* %41 to i32* ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i141
+
+_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i141: ; preds = %.noexc161, %bb.i.i137
+ %42 = phi i32* [ %phitmp.i.i138, %.noexc161 ], [ null, %bb.i.i137 ] ; [#uses=3]
+ %43 = icmp sgt i32 %j.0, 0 ; [#uses=1]
+ br i1 %43, label %bb.i4.i.i145, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i151
+
+bb.i4.i.i145: ; preds = %bb3.i.i.i150, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i141
+ %indvar.i.i.i143 = phi i32 [ %indvar.next.i.i.i148, %bb3.i.i.i150 ], [ 0, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i141 ] ; [#uses=3]
+ %scevgep.i.i.i144 = getelementptr i32* %42, i32 %indvar.i.i.i143 ; [#uses=2]
+ %44 = icmp eq i32* %scevgep.i.i.i144, null ; [#uses=1]
+ br i1 %44, label %bb3.i.i.i150, label %bb1.i5.i.i147
+
+bb1.i5.i.i147: ; preds = %bb.i4.i.i145
+ %scevgep8.i.i.i146 = getelementptr i32* %isextreme.3.1, i32 %indvar.i.i.i143 ; [#uses=1]
+ %45 = load i32* %scevgep8.i.i.i146, align 4 ; [#uses=1]
+ store i32 %45, i32* %scevgep.i.i.i144, align 4
+ br label %bb3.i.i.i150
+
+bb3.i.i.i150: ; preds = %bb1.i5.i.i147, %bb.i4.i.i145
+ %indvar.next.i.i.i148 = add i32 %indvar.i.i.i143, 1 ; [#uses=2]
+ %exitcond288 = icmp eq i32 %indvar.next.i.i.i148, %j.0 ; [#uses=1]
+ br i1 %exitcond288, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i151, label %bb.i4.i.i145
+
+_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i151: ; preds = %bb3.i.i.i150, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i141
+ %46 = icmp eq i32* %isextreme.3.1, null ; [#uses=1]
+ br i1 %46, label %bb1.i158, label %bb1.i.i.i154
+
+bb1.i.i.i154: ; preds = %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i151
+ %47 = bitcast i32* %isextreme.3.1 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %47)
+ to label %bb1.i158 unwind label %lpad85
+
+bb1.i158: ; preds = %bb1.i.i.i154, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i151, %bb.i136, %invcont7
+ %isextreme.2.0 = phi i32 [ %isextreme.2.1, %bb.i136 ], [ %isextreme.2.1, %invcont7 ], [ %iftmp.190.0.i.i135, %bb1.i.i.i154 ], [ %iftmp.190.0.i.i135, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i151 ] ; [#uses=1]
+ %isextreme.3.0 = phi i32* [ %isextreme.3.1, %bb.i136 ], [ %isextreme.3.1, %invcont7 ], [ %42, %bb1.i.i.i154 ], [ %42, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i151 ] ; [#uses=2]
+ %scevgep302 = getelementptr i32* %isextreme.3.0, i32 %j.0 ; [#uses=2]
+ %48 = icmp eq i32* %scevgep302, null ; [#uses=1]
+ br i1 %48, label %invcont8, label %bb2.i160
+
+bb2.i160: ; preds = %bb1.i158
+ store i32 0, i32* %scevgep302, align 4
+ %.pre.pre = load i32* %12, align 4 ; [#uses=1]
+ br label %invcont8
+
+invcont8: ; preds = %bb2.i160, %bb1.i158
+ %.pre = phi i32 [ %.pre.pre, %bb2.i160 ], [ %35, %bb1.i158 ] ; [#uses=1]
+ %49 = add nsw i32 %j.0, 1 ; [#uses=1]
+ %50 = load float* %scevgep307308, align 4 ; [#uses=4]
+ %51 = fcmp olt float %50, %bmin.0.0.1 ; [#uses=1]
+ %bmin.0.0.0 = select i1 %51, float %50, float %bmin.0.0.1 ; [#uses=1]
+ %52 = load float* %scevgep306, align 4 ; [#uses=4]
+ %53 = fcmp olt float %52, %bmin.0.1.1 ; [#uses=1]
+ %bmin.0.1.0 = select i1 %53, float %52, float %bmin.0.1.1 ; [#uses=1]
+ %54 = load float* %scevgep305, align 4 ; [#uses=4]
+ %55 = fcmp olt float %54, %bmin.0.2.1 ; [#uses=1]
+ %bmin.0.2.0 = select i1 %55, float %54, float %bmin.0.2.1 ; [#uses=1]
+ %56 = fcmp olt float %bmax.0.0.1, %50 ; [#uses=1]
+ %bmax.0.0.0 = select i1 %56, float %50, float %bmax.0.0.1 ; [#uses=1]
+ %57 = fcmp olt float %bmax.0.1.1, %52 ; [#uses=1]
+ %bmax.0.1.0 = select i1 %57, float %52, float %bmax.0.1.1 ; [#uses=1]
+ %58 = fcmp olt float %bmax.0.2.1, %54 ; [#uses=1]
+ %bmax.0.2.0 = select i1 %58, float %54, float %bmax.0.2.1 ; [#uses=1]
+ br label %bb11
+
+bb11: ; preds = %invcont8, %bb11.preheader
+ %.pre6.i = phi i32 [ %.pre, %invcont8 ], [ 0, %bb11.preheader ] ; [#uses=7]
+ %bmin.0.0.1 = phi float [ %bmin.0.0.0, %invcont8 ], [ %3, %bb11.preheader ] ; [#uses=3]
+ %bmin.0.1.1 = phi float [ %bmin.0.1.0, %invcont8 ], [ %5, %bb11.preheader ] ; [#uses=3]
+ %bmin.0.2.1 = phi float [ %bmin.0.2.0, %invcont8 ], [ %7, %bb11.preheader ] ; [#uses=3]
+ %bmax.0.0.1 = phi float [ %bmax.0.0.0, %invcont8 ], [ %3, %bb11.preheader ] ; [#uses=3]
+ %bmax.0.1.1 = phi float [ %bmax.0.1.0, %invcont8 ], [ %5, %bb11.preheader ] ; [#uses=3]
+ %bmax.0.2.1 = phi float [ %bmax.0.2.0, %invcont8 ], [ %7, %bb11.preheader ] ; [#uses=3]
+ %j.0 = phi i32 [ %49, %invcont8 ], [ 0, %bb11.preheader ] ; [#uses=11]
+ %isextreme.2.1 = phi i32 [ %isextreme.2.0, %invcont8 ], [ %verts_count, %bb11.preheader ] ; [#uses=4]
+ %isextreme.3.1 = phi i32* [ %isextreme.3.0, %invcont8 ], [ %phitmp.i, %bb11.preheader ] ; [#uses=24]
+ %tmp303 = shl i32 %j.0, 1 ; [#uses=1]
+ %scevgep305 = getelementptr %struct.btQuadWord* %verts, i32 %j.0, i32 0, i32 2 ; [#uses=1]
+ %scevgep306 = getelementptr %struct.btQuadWord* %verts, i32 %j.0, i32 0, i32 1 ; [#uses=1]
+ %scevgep307308 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %j.0, i32 0, i32 0 ; [#uses=1]
+ %59 = icmp slt i32 %j.0, %verts_count ; [#uses=1]
+ br i1 %59, label %bb6, label %invcont13
+
+invcont13: ; preds = %bb11
+ %60 = fsub float %bmax.0.2.1, %bmin.0.2.1 ; [#uses=2]
+ %61 = fsub float %bmax.0.1.1, %bmin.0.1.1 ; [#uses=2]
+ %62 = fsub float %bmax.0.0.1, %bmin.0.0.1 ; [#uses=2]
+ %63 = fmul float %62, %62 ; [#uses=1]
+ %64 = fmul float %61, %61 ; [#uses=1]
+ %65 = fadd float %63, %64 ; [#uses=1]
+ %66 = fmul float %60, %60 ; [#uses=1]
+ %67 = fadd float %65, %66 ; [#uses=1]
+ %68 = call float @sqrtf(float %67) nounwind readonly ; [#uses=1]
+ %69 = fmul float %68, 0x3F50624DE0000000 ; [#uses=4]
+ call void @_ZN11HullLibrary11FindSimplexEP9btVector3iR20btAlignedObjectArrayIiE(%struct.int4* noalias sret %p, %struct.HullLibrary* %this, %struct.btQuadWord* %verts, i32 %verts_count, %"struct.btAlignedObjectArray<int>"* %allow)
+ %70 = getelementptr inbounds %struct.int4* %p, i32 0, i32 0 ; [#uses=4]
+ %71 = load i32* %70, align 8 ; [#uses=8]
+ %72 = icmp eq i32 %71, -1 ; [#uses=1]
+ br i1 %72, label %bb73, label %bb15
+
+bb15: ; preds = %invcont13
+ %73 = getelementptr inbounds i32* %70, i32 3 ; [#uses=1]
+ %74 = load i32* %73, align 4 ; [#uses=7]
+ %75 = getelementptr inbounds i32* %70, i32 2 ; [#uses=1]
+ %76 = load i32* %75, align 8 ; [#uses=7]
+ %77 = getelementptr inbounds i32* %70, i32 1 ; [#uses=1]
+ %78 = load i32* %77, align 4 ; [#uses=7]
+ %79 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %71, i32 0, i32 2 ; [#uses=1]
+ %80 = load float* %79, align 4 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %78, i32 0, i32 2 ; [#uses=1]
+ %82 = load float* %81, align 4 ; [#uses=1]
+ %83 = fadd float %80, %82 ; [#uses=1]
+ %84 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %71, i32 0, i32 1 ; [#uses=1]
+ %85 = load float* %84, align 4 ; [#uses=1]
+ %86 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %78, i32 0, i32 1 ; [#uses=1]
+ %87 = load float* %86, align 4 ; [#uses=1]
+ %88 = fadd float %85, %87 ; [#uses=1]
+ %89 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %71, i32 0, i32 0 ; [#uses=1]
+ %90 = load float* %89, align 4 ; [#uses=1]
+ %91 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %78, i32 0, i32 0 ; [#uses=1]
+ %92 = load float* %91, align 4 ; [#uses=1]
+ %93 = fadd float %90, %92 ; [#uses=1]
+ %94 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %76, i32 0, i32 2 ; [#uses=1]
+ %95 = load float* %94, align 4 ; [#uses=1]
+ %96 = fadd float %83, %95 ; [#uses=1]
+ %97 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %76, i32 0, i32 1 ; [#uses=1]
+ %98 = load float* %97, align 4 ; [#uses=1]
+ %99 = fadd float %88, %98 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %76, i32 0, i32 0 ; [#uses=1]
+ %101 = load float* %100, align 4 ; [#uses=1]
+ %102 = fadd float %93, %101 ; [#uses=1]
+ %103 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %74, i32 0, i32 2 ; [#uses=1]
+ %104 = load float* %103, align 4 ; [#uses=1]
+ %105 = fadd float %96, %104 ; [#uses=1]
+ %106 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %74, i32 0, i32 1 ; [#uses=1]
+ %107 = load float* %106, align 4 ; [#uses=1]
+ %108 = fadd float %99, %107 ; [#uses=1]
+ %109 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %74, i32 0, i32 0 ; [#uses=1]
+ %110 = load float* %109, align 4 ; [#uses=1]
+ %111 = fadd float %102, %110 ; [#uses=1]
+ %112 = fmul float %105, 2.500000e-01 ; [#uses=1]
+ %113 = fmul float %108, 2.500000e-01 ; [#uses=1]
+ %114 = fmul float %111, 2.500000e-01 ; [#uses=1]
+ %115 = invoke %struct.btHullTriangle* @_ZN11HullLibrary16allocateTriangleEiii(%struct.HullLibrary* %this, i32 %76, i32 %74, i32 %78)
+ to label %invcont16 unwind label %lpad85 ; [#uses=3]
+
+invcont16: ; preds = %bb15
+ %116 = getelementptr inbounds %struct.btHullTriangle* %115, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i32 2, i32* %116, align 4
+ %117 = getelementptr inbounds %struct.btHullTriangle* %115, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 3, i32* %117, align 4
+ %118 = getelementptr inbounds %struct.btHullTriangle* %115, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 1, i32* %118, align 4
+ %119 = invoke %struct.btHullTriangle* @_ZN11HullLibrary16allocateTriangleEiii(%struct.HullLibrary* %this, i32 %74, i32 %76, i32 %71)
+ to label %invcont17 unwind label %lpad85 ; [#uses=3]
+
+invcont17: ; preds = %invcont16
+ %120 = getelementptr inbounds %struct.btHullTriangle* %119, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i32 3, i32* %120, align 4
+ %121 = getelementptr inbounds %struct.btHullTriangle* %119, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 2, i32* %121, align 4
+ %122 = getelementptr inbounds %struct.btHullTriangle* %119, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 0, i32* %122, align 4
+ %123 = invoke %struct.btHullTriangle* @_ZN11HullLibrary16allocateTriangleEiii(%struct.HullLibrary* %this, i32 %71, i32 %78, i32 %74)
+ to label %invcont18 unwind label %lpad85 ; [#uses=3]
+
+invcont18: ; preds = %invcont17
+ %124 = getelementptr inbounds %struct.btHullTriangle* %123, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i32 0, i32* %124, align 4
+ %125 = getelementptr inbounds %struct.btHullTriangle* %123, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 1, i32* %125, align 4
+ %126 = getelementptr inbounds %struct.btHullTriangle* %123, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 3, i32* %126, align 4
+ %127 = invoke %struct.btHullTriangle* @_ZN11HullLibrary16allocateTriangleEiii(%struct.HullLibrary* %this, i32 %78, i32 %71, i32 %76)
+ to label %invcont19 unwind label %lpad85 ; [#uses=3]
+
+invcont19: ; preds = %invcont18
+ %128 = getelementptr inbounds %struct.btHullTriangle* %127, i32 0, i32 1, i32 0 ; [#uses=1]
+ store i32 1, i32* %128, align 4
+ %129 = getelementptr inbounds %struct.btHullTriangle* %127, i32 0, i32 1, i32 1 ; [#uses=1]
+ store i32 0, i32* %129, align 4
+ %130 = getelementptr inbounds %struct.btHullTriangle* %127, i32 0, i32 1, i32 2 ; [#uses=1]
+ store i32 2, i32* %130, align 4
+ %131 = getelementptr inbounds i32* %isextreme.3.1, i32 %71 ; [#uses=1]
+ %132 = getelementptr inbounds i32* %isextreme.3.1, i32 %78 ; [#uses=1]
+ %133 = getelementptr inbounds i32* %isextreme.3.1, i32 %76 ; [#uses=1]
+ %134 = getelementptr inbounds i32* %isextreme.3.1, i32 %74 ; [#uses=1]
+ store i32 1, i32* %134, align 4
+ store i32 1, i32* %133, align 4
+ store i32 1, i32* %132, align 4
+ store i32 1, i32* %131, align 4
+ %135 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 1 ; [#uses=6]
+ %136 = load i32* %135, align 4 ; [#uses=1]
+ %137 = icmp sgt i32 %136, 0 ; [#uses=1]
+ br i1 %137, label %bb.nph, label %bb23
+
+bb.nph: ; preds = %invcont19
+ %138 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 3 ; [#uses=1]
+ %139 = getelementptr inbounds %struct.btQuadWord* %n, i32 0, i32 0, i32 0 ; [#uses=2]
+ %140 = getelementptr inbounds %struct.btQuadWord* %n, i32 0, i32 0, i32 1 ; [#uses=2]
+ %141 = getelementptr inbounds %struct.btQuadWord* %n, i32 0, i32 0, i32 2 ; [#uses=2]
+ %142 = getelementptr inbounds %struct.btQuadWord* %n, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb20
+
+bb20: ; preds = %invcont21, %bb.nph
+ %j.1260 = phi i32 [ 0, %bb.nph ], [ %tmp287, %invcont21 ] ; [#uses=2]
+ %tmp287 = add i32 %j.1260, 1 ; [#uses=2]
+ %143 = load %struct.btHullTriangle*** %138, align 4 ; [#uses=1]
+ %scevgep286 = getelementptr %struct.btHullTriangle** %143, i32 %j.1260 ; [#uses=1]
+ %144 = load %struct.btHullTriangle** %scevgep286, align 4 ; [#uses=3]
+ %145 = getelementptr inbounds %struct.btHullTriangle* %144, i32 0, i32 0, i32 0 ; [#uses=4]
+ %146 = getelementptr inbounds i32* %145, i32 2 ; [#uses=1]
+ %147 = load i32* %146, align 4 ; [#uses=3]
+ %148 = getelementptr inbounds i32* %145, i32 1 ; [#uses=1]
+ %149 = load i32* %148, align 4 ; [#uses=3]
+ %150 = load i32* %145, align 4 ; [#uses=3]
+ %151 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %147, i32 0, i32 2 ; [#uses=1]
+ %152 = load float* %151, align 4 ; [#uses=1]
+ %153 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %149, i32 0, i32 2 ; [#uses=1]
+ %154 = load float* %153, align 4 ; [#uses=2]
+ %155 = fsub float %152, %154 ; [#uses=2]
+ %156 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %147, i32 0, i32 1 ; [#uses=1]
+ %157 = load float* %156, align 4 ; [#uses=1]
+ %158 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %149, i32 0, i32 1 ; [#uses=1]
+ %159 = load float* %158, align 4 ; [#uses=2]
+ %160 = fsub float %157, %159 ; [#uses=2]
+ %161 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %147, i32 0, i32 0 ; [#uses=1]
+ %162 = load float* %161, align 4 ; [#uses=1]
+ %163 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %149, i32 0, i32 0 ; [#uses=1]
+ %164 = load float* %163, align 4 ; [#uses=2]
+ %165 = fsub float %162, %164 ; [#uses=2]
+ %166 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %150, i32 0, i32 2 ; [#uses=1]
+ %167 = load float* %166, align 4 ; [#uses=1]
+ %168 = fsub float %154, %167 ; [#uses=2]
+ %169 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %150, i32 0, i32 1 ; [#uses=1]
+ %170 = load float* %169, align 4 ; [#uses=1]
+ %171 = fsub float %159, %170 ; [#uses=2]
+ %172 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %150, i32 0, i32 0 ; [#uses=1]
+ %173 = load float* %172, align 4 ; [#uses=1]
+ %174 = fsub float %164, %173 ; [#uses=2]
+ %175 = fmul float %174, %160 ; [#uses=1]
+ %176 = fmul float %171, %165 ; [#uses=1]
+ %177 = fsub float %175, %176 ; [#uses=3]
+ %178 = fmul float %168, %165 ; [#uses=1]
+ %179 = fmul float %174, %155 ; [#uses=1]
+ %180 = fsub float %178, %179 ; [#uses=3]
+ %181 = fmul float %171, %155 ; [#uses=1]
+ %182 = fmul float %168, %160 ; [#uses=1]
+ %183 = fsub float %181, %182 ; [#uses=3]
+ %184 = fmul float %183, %183 ; [#uses=1]
+ %185 = fmul float %180, %180 ; [#uses=1]
+ %186 = fadd float %184, %185 ; [#uses=1]
+ %187 = fmul float %177, %177 ; [#uses=1]
+ %188 = fadd float %186, %187 ; [#uses=1]
+ %189 = call float @sqrtf(float %188) nounwind readonly ; [#uses=2]
+ %190 = fcmp oeq float %189, 0.000000e+00 ; [#uses=1]
+ br i1 %190, label %invcont21, label %bb1.i202
+
+bb1.i202: ; preds = %bb20
+ %191 = fdiv float 1.000000e+00, %189 ; [#uses=3]
+ %192 = fmul float %177, %191 ; [#uses=1]
+ %193 = fmul float %180, %191 ; [#uses=1]
+ %194 = fmul float %183, %191 ; [#uses=1]
+ br label %invcont21
+
+invcont21: ; preds = %bb1.i202, %bb20
+ %storemerge320 = phi float [ %194, %bb1.i202 ], [ 1.000000e+00, %bb20 ] ; [#uses=1]
+ %storemerge319 = phi float [ %193, %bb1.i202 ], [ 0.000000e+00, %bb20 ] ; [#uses=1]
+ %storemerge316 = phi float [ %192, %bb1.i202 ], [ 0.000000e+00, %bb20 ] ; [#uses=1]
+ store float %storemerge320, float* %139, align 8
+ store float %storemerge319, float* %140, align 4
+ store float %storemerge316, float* %141, align 8
+ store float 0.000000e+00, float* %142, align 4
+ %195 = call i32 @_Z12maxdirsteridI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE(%struct.btQuadWord* %verts, i32 %verts_count, %struct.btQuadWord* %n, %"struct.btAlignedObjectArray<int>"* %allow) ; [#uses=4]
+ %196 = getelementptr inbounds %struct.btHullTriangle* %144, i32 0, i32 3 ; [#uses=1]
+ store i32 %195, i32* %196, align 4
+ %197 = load i32* %145, align 4 ; [#uses=3]
+ %198 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %195, i32 0, i32 2 ; [#uses=1]
+ %199 = load float* %198, align 4 ; [#uses=1]
+ %200 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %197, i32 0, i32 2 ; [#uses=1]
+ %201 = load float* %200, align 4 ; [#uses=1]
+ %202 = fsub float %199, %201 ; [#uses=1]
+ %203 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %195, i32 0, i32 1 ; [#uses=1]
+ %204 = load float* %203, align 4 ; [#uses=1]
+ %205 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %197, i32 0, i32 1 ; [#uses=1]
+ %206 = load float* %205, align 4 ; [#uses=1]
+ %207 = fsub float %204, %206 ; [#uses=1]
+ %208 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %195, i32 0, i32 0 ; [#uses=1]
+ %209 = load float* %208, align 4 ; [#uses=1]
+ %210 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %197, i32 0, i32 0 ; [#uses=1]
+ %211 = load float* %210, align 4 ; [#uses=1]
+ %212 = fsub float %209, %211 ; [#uses=1]
+ %213 = load float* %139, align 8 ; [#uses=1]
+ %214 = fmul float %213, %212 ; [#uses=1]
+ %215 = load float* %140, align 4 ; [#uses=1]
+ %216 = fmul float %215, %207 ; [#uses=1]
+ %217 = fadd float %214, %216 ; [#uses=1]
+ %218 = load float* %141, align 8 ; [#uses=1]
+ %219 = fmul float %218, %202 ; [#uses=1]
+ %220 = fadd float %217, %219 ; [#uses=1]
+ %221 = getelementptr inbounds %struct.btHullTriangle* %144, i32 0, i32 4 ; [#uses=1]
+ store float %220, float* %221, align 4
+ %222 = load i32* %135, align 4 ; [#uses=1]
+ %223 = icmp sgt i32 %222, %tmp287 ; [#uses=1]
+ br i1 %223, label %bb20, label %bb23
+
+bb23: ; preds = %invcont21, %invcont19
+ %vlimit.op = add i32 %vlimit, -4 ; [#uses=1]
+ %224 = select i1 %1, i32 999999996, i32 %vlimit.op ; [#uses=1]
+ %225 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 3 ; [#uses=5]
+ %226 = fmul float %69, 0x3F847AE140000000 ; [#uses=2]
+ %227 = fmul float %69, %69 ; [#uses=1]
+ %228 = fmul float %227, 0x3FB99999A0000000 ; [#uses=1]
+ %229 = getelementptr inbounds %struct.btQuadWord* %n52, i32 0, i32 0, i32 0 ; [#uses=2]
+ %230 = getelementptr inbounds %struct.btQuadWord* %n52, i32 0, i32 0, i32 1 ; [#uses=2]
+ %231 = getelementptr inbounds %struct.btQuadWord* %n52, i32 0, i32 0, i32 2 ; [#uses=2]
+ %232 = getelementptr inbounds %struct.btQuadWord* %n52, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb62
+
+bb24: ; preds = %invcont64
+ %233 = getelementptr inbounds %struct.btHullTriangle* %iftmp.70.0.i, i32 0, i32 3 ; [#uses=1]
+ %234 = load i32* %233, align 4 ; [#uses=9]
+ %235 = getelementptr inbounds i32* %isextreme.3.1, i32 %234 ; [#uses=1]
+ store i32 1, i32* %235, align 4
+ %236 = load i32* %135, align 4 ; [#uses=1]
+ %237 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %234, i32 0, i32 2 ; [#uses=1]
+ %238 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %234, i32 0, i32 1 ; [#uses=1]
+ %239 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %234, i32 0, i32 0 ; [#uses=1]
+ %tmp272 = add i32 %236, -1 ; [#uses=1]
+ br label %bb32
+
+bb25: ; preds = %bb32
+ %240 = load %struct.btHullTriangle*** %225, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btHullTriangle** %240, i32 %tmp273 ; [#uses=1]
+ %241 = load %struct.btHullTriangle** %scevgep, align 4 ; [#uses=5]
+ %242 = icmp eq %struct.btHullTriangle* %241, null ; [#uses=1]
+ br i1 %242, label %bb32.backedge, label %bb28
+
+bb32.backedge: ; preds = %bb30, %_Z5aboveP9btVector3RK4int3RKS_f.exit200, %bb25
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br label %bb32
+
+bb28: ; preds = %bb25
+ %243 = getelementptr inbounds %struct.btHullTriangle* %241, i32 0, i32 0, i32 0 ; [#uses=1]
+ %244 = load i32* %243, align 4 ; [#uses=3]
+ %245 = getelementptr inbounds %struct.btHullTriangle* %241, i32 0, i32 0, i32 1 ; [#uses=1]
+ %246 = load i32* %245, align 4 ; [#uses=3]
+ %247 = getelementptr inbounds %struct.btHullTriangle* %241, i32 0, i32 0, i32 2 ; [#uses=1]
+ %248 = load i32* %247, align 4 ; [#uses=3]
+ %249 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %248, i32 0, i32 2 ; [#uses=1]
+ %250 = load float* %249, align 4 ; [#uses=1]
+ %251 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %246, i32 0, i32 2 ; [#uses=1]
+ %252 = load float* %251, align 4 ; [#uses=2]
+ %253 = fsub float %250, %252 ; [#uses=2]
+ %254 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %248, i32 0, i32 1 ; [#uses=1]
+ %255 = load float* %254, align 4 ; [#uses=1]
+ %256 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %246, i32 0, i32 1 ; [#uses=1]
+ %257 = load float* %256, align 4 ; [#uses=2]
+ %258 = fsub float %255, %257 ; [#uses=2]
+ %259 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %248, i32 0, i32 0 ; [#uses=1]
+ %260 = load float* %259, align 4 ; [#uses=1]
+ %261 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %246, i32 0, i32 0 ; [#uses=1]
+ %262 = load float* %261, align 4 ; [#uses=2]
+ %263 = fsub float %260, %262 ; [#uses=2]
+ %264 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %244, i32 0, i32 2 ; [#uses=1]
+ %265 = load float* %264, align 4 ; [#uses=2]
+ %266 = fsub float %252, %265 ; [#uses=2]
+ %267 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %244, i32 0, i32 1 ; [#uses=1]
+ %268 = load float* %267, align 4 ; [#uses=2]
+ %269 = fsub float %257, %268 ; [#uses=2]
+ %270 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %244, i32 0, i32 0 ; [#uses=1]
+ %271 = load float* %270, align 4 ; [#uses=2]
+ %272 = fsub float %262, %271 ; [#uses=2]
+ %273 = fmul float %272, %258 ; [#uses=1]
+ %274 = fmul float %269, %263 ; [#uses=1]
+ %275 = fsub float %273, %274 ; [#uses=3]
+ %276 = fmul float %266, %263 ; [#uses=1]
+ %277 = fmul float %272, %253 ; [#uses=1]
+ %278 = fsub float %276, %277 ; [#uses=3]
+ %279 = fmul float %269, %253 ; [#uses=1]
+ %280 = fmul float %266, %258 ; [#uses=1]
+ %281 = fsub float %279, %280 ; [#uses=3]
+ %282 = fmul float %281, %281 ; [#uses=1]
+ %283 = fmul float %278, %278 ; [#uses=1]
+ %284 = fadd float %282, %283 ; [#uses=1]
+ %285 = fmul float %275, %275 ; [#uses=1]
+ %286 = fadd float %284, %285 ; [#uses=1]
+ %287 = call float @sqrtf(float %286) nounwind readonly ; [#uses=2]
+ %288 = fcmp oeq float %287, 0.000000e+00 ; [#uses=1]
+ br i1 %288, label %_Z5aboveP9btVector3RK4int3RKS_f.exit200, label %bb1.i.i196
+
+bb1.i.i196: ; preds = %bb28
+ %289 = fdiv float 1.000000e+00, %287 ; [#uses=3]
+ %290 = fmul float %275, %289 ; [#uses=1]
+ %291 = fmul float %278, %289 ; [#uses=1]
+ %292 = fmul float %281, %289 ; [#uses=1]
+ br label %_Z5aboveP9btVector3RK4int3RKS_f.exit200
+
+_Z5aboveP9btVector3RK4int3RKS_f.exit200: ; preds = %bb1.i.i196, %bb28
+ %n.0.0.0.i197 = phi float [ %292, %bb1.i.i196 ], [ 1.000000e+00, %bb28 ] ; [#uses=1]
+ %n.0.1.0.i198 = phi float [ %291, %bb1.i.i196 ], [ 0.000000e+00, %bb28 ] ; [#uses=1]
+ %n.0.2.0.i199 = phi float [ %290, %bb1.i.i196 ], [ 0.000000e+00, %bb28 ] ; [#uses=1]
+ %293 = load float* %237, align 4 ; [#uses=1]
+ %294 = fsub float %293, %265 ; [#uses=1]
+ %295 = load float* %238, align 4 ; [#uses=1]
+ %296 = fsub float %295, %268 ; [#uses=1]
+ %297 = load float* %239, align 4 ; [#uses=1]
+ %298 = fsub float %297, %271 ; [#uses=1]
+ %299 = fmul float %n.0.0.0.i197, %298 ; [#uses=1]
+ %300 = fmul float %n.0.1.0.i198, %296 ; [#uses=1]
+ %301 = fadd float %299, %300 ; [#uses=1]
+ %302 = fmul float %n.0.2.0.i199, %294 ; [#uses=1]
+ %303 = fadd float %301, %302 ; [#uses=1]
+ %304 = fcmp ogt float %303, %226 ; [#uses=1]
+ br i1 %304, label %bb30, label %bb32.backedge
+
+bb30: ; preds = %_Z5aboveP9btVector3RK4int3RKS_f.exit200
+ invoke void @_ZN11HullLibrary7extrudeEP14btHullTrianglei(%struct.HullLibrary* %this, %struct.btHullTriangle* %241, i32 %234)
+ to label %bb32.backedge unwind label %lpad85
+
+bb32: ; preds = %bb32.backedge, %bb24
+ %indvar = phi i32 [ %indvar.next, %bb32.backedge ], [ 0, %bb24 ] ; [#uses=2]
+ %tmp273 = sub i32 %tmp272, %indvar ; [#uses=2]
+ %305 = icmp eq i32 %tmp273, -1 ; [#uses=1]
+ br i1 %305, label %bb34, label %bb25
+
+bb34: ; preds = %bb32
+ %306 = load i32* %135, align 4 ; [#uses=2]
+ br label %bb47
+
+bb35: ; preds = %bb47
+ %307 = load %struct.btHullTriangle*** %225, align 4 ; [#uses=2]
+ %308 = getelementptr inbounds %struct.btHullTriangle** %307, i32 %382 ; [#uses=1]
+ %309 = load %struct.btHullTriangle** %308, align 4 ; [#uses=5]
+ %310 = icmp eq %struct.btHullTriangle* %309, null ; [#uses=1]
+ br i1 %310, label %bb47, label %bb37
+
+bb37: ; preds = %bb35
+ %311 = getelementptr inbounds %struct.btHullTriangle* %309, i32 0, i32 0, i32 0 ; [#uses=3]
+ %312 = load i32* %311, align 4 ; [#uses=4]
+ %313 = icmp eq i32 %312, %234 ; [#uses=1]
+ br i1 %313, label %bb37.bb39_crit_edge, label %bb.i194
+
+bb37.bb39_crit_edge: ; preds = %bb37
+ %.phi.trans.insert = getelementptr inbounds %struct.btHullTriangle* %309, i32 0, i32 0, i32 1 ; [#uses=1]
+ %.pre315 = load i32* %.phi.trans.insert, align 4 ; [#uses=1]
+ br label %bb39
+
+bb.i194: ; preds = %bb37
+ %314 = getelementptr inbounds i32* %311, i32 1 ; [#uses=1]
+ %315 = load i32* %314, align 4 ; [#uses=3]
+ %316 = icmp eq i32 %315, %234 ; [#uses=1]
+ br i1 %316, label %bb39, label %_Z7hasvertRK4int3i.exit
+
+_Z7hasvertRK4int3i.exit: ; preds = %bb.i194
+ %317 = getelementptr inbounds i32* %311, i32 2 ; [#uses=1]
+ %318 = load i32* %317, align 4 ; [#uses=1]
+ %phitmp = icmp eq i32 %318, %234 ; [#uses=1]
+ br i1 %phitmp, label %bb39, label %bb49
+
+bb39: ; preds = %_Z7hasvertRK4int3i.exit, %bb.i194, %bb37.bb39_crit_edge
+ %319 = phi i32 [ %.pre315, %bb37.bb39_crit_edge ], [ %315, %_Z7hasvertRK4int3i.exit ], [ %315, %bb.i194 ] ; [#uses=3]
+ %320 = getelementptr inbounds %struct.btHullTriangle* %309, i32 0, i32 0, i32 2 ; [#uses=1]
+ %321 = load i32* %320, align 4 ; [#uses=3]
+ %322 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %321, i32 0, i32 2 ; [#uses=1]
+ %323 = load float* %322, align 4 ; [#uses=1]
+ %324 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %319, i32 0, i32 2 ; [#uses=1]
+ %325 = load float* %324, align 4 ; [#uses=2]
+ %326 = fsub float %323, %325 ; [#uses=2]
+ %327 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %321, i32 0, i32 1 ; [#uses=1]
+ %328 = load float* %327, align 4 ; [#uses=1]
+ %329 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %319, i32 0, i32 1 ; [#uses=1]
+ %330 = load float* %329, align 4 ; [#uses=2]
+ %331 = fsub float %328, %330 ; [#uses=2]
+ %332 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %321, i32 0, i32 0 ; [#uses=1]
+ %333 = load float* %332, align 4 ; [#uses=1]
+ %334 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %319, i32 0, i32 0 ; [#uses=1]
+ %335 = load float* %334, align 4 ; [#uses=2]
+ %336 = fsub float %333, %335 ; [#uses=2]
+ %337 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %312, i32 0, i32 2 ; [#uses=1]
+ %338 = load float* %337, align 4 ; [#uses=2]
+ %339 = fsub float %325, %338 ; [#uses=2]
+ %340 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %312, i32 0, i32 1 ; [#uses=1]
+ %341 = load float* %340, align 4 ; [#uses=2]
+ %342 = fsub float %330, %341 ; [#uses=2]
+ %343 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %312, i32 0, i32 0 ; [#uses=1]
+ %344 = load float* %343, align 4 ; [#uses=2]
+ %345 = fsub float %335, %344 ; [#uses=2]
+ %346 = fmul float %345, %331 ; [#uses=1]
+ %347 = fmul float %342, %336 ; [#uses=1]
+ %348 = fsub float %346, %347 ; [#uses=3]
+ %349 = fmul float %339, %336 ; [#uses=1]
+ %350 = fmul float %345, %326 ; [#uses=1]
+ %351 = fsub float %349, %350 ; [#uses=3]
+ %352 = fmul float %342, %326 ; [#uses=1]
+ %353 = fmul float %339, %331 ; [#uses=1]
+ %354 = fsub float %352, %353 ; [#uses=3]
+ %355 = fmul float %354, %354 ; [#uses=1]
+ %356 = fmul float %351, %351 ; [#uses=1]
+ %357 = fadd float %355, %356 ; [#uses=1]
+ %358 = fmul float %348, %348 ; [#uses=1]
+ %359 = fadd float %357, %358 ; [#uses=1]
+ %360 = call float @sqrtf(float %359) nounwind readonly ; [#uses=3]
+ %361 = fcmp oeq float %360, 0.000000e+00 ; [#uses=1]
+ br i1 %361, label %_Z5aboveP9btVector3RK4int3RKS_f.exit, label %bb1.i.i193
+
+bb1.i.i193: ; preds = %bb39
+ %362 = fdiv float 1.000000e+00, %360 ; [#uses=3]
+ %363 = fmul float %348, %362 ; [#uses=1]
+ %364 = fmul float %351, %362 ; [#uses=1]
+ %365 = fmul float %354, %362 ; [#uses=1]
+ br label %_Z5aboveP9btVector3RK4int3RKS_f.exit
+
+_Z5aboveP9btVector3RK4int3RKS_f.exit: ; preds = %bb1.i.i193, %bb39
+ %n.0.0.0.i = phi float [ %365, %bb1.i.i193 ], [ 1.000000e+00, %bb39 ] ; [#uses=1]
+ %n.0.1.0.i = phi float [ %364, %bb1.i.i193 ], [ 0.000000e+00, %bb39 ] ; [#uses=1]
+ %n.0.2.0.i = phi float [ %363, %bb1.i.i193 ], [ 0.000000e+00, %bb39 ] ; [#uses=1]
+ %366 = fsub float %112, %338 ; [#uses=1]
+ %367 = fsub float %113, %341 ; [#uses=1]
+ %368 = fsub float %114, %344 ; [#uses=1]
+ %369 = fmul float %n.0.0.0.i, %368 ; [#uses=1]
+ %370 = fmul float %n.0.1.0.i, %367 ; [#uses=1]
+ %371 = fadd float %369, %370 ; [#uses=1]
+ %372 = fmul float %n.0.2.0.i, %366 ; [#uses=1]
+ %373 = fadd float %371, %372 ; [#uses=1]
+ %374 = fcmp ogt float %373, %226 ; [#uses=1]
+ %375 = fcmp olt float %360, %228 ; [#uses=1]
+ %or.cond = or i1 %374, %375 ; [#uses=1]
+ br i1 %or.cond, label %bb45, label %bb47
+
+bb45: ; preds = %_Z5aboveP9btVector3RK4int3RKS_f.exit
+ %376 = getelementptr inbounds %struct.btHullTriangle* %309, i32 0, i32 1, i32 0 ; [#uses=1]
+ %377 = load i32* %376, align 4 ; [#uses=1]
+ %378 = getelementptr inbounds %struct.btHullTriangle** %307, i32 %377 ; [#uses=1]
+ %379 = load %struct.btHullTriangle** %378, align 4 ; [#uses=1]
+ invoke void @_ZN11HullLibrary7extrudeEP14btHullTrianglei(%struct.HullLibrary* %this, %struct.btHullTriangle* %379, i32 %234)
+ to label %invcont46 unwind label %lpad85
+
+invcont46: ; preds = %bb45
+ %380 = load i32* %135, align 4 ; [#uses=2]
+ br label %bb47
+
+bb47: ; preds = %invcont46, %_Z5aboveP9btVector3RK4int3RKS_f.exit, %bb35, %bb34
+ %381 = phi i32 [ %306, %bb34 ], [ %381, %bb35 ], [ %380, %invcont46 ], [ %381, %_Z5aboveP9btVector3RK4int3RKS_f.exit ] ; [#uses=3]
+ %j.3 = phi i32 [ %306, %bb34 ], [ %382, %bb35 ], [ %380, %invcont46 ], [ %382, %_Z5aboveP9btVector3RK4int3RKS_f.exit ] ; [#uses=1]
+ %382 = add nsw i32 %j.3, -1 ; [#uses=4]
+ %383 = icmp eq i32 %382, -1 ; [#uses=1]
+ br i1 %383, label %bb49, label %bb35
+
+bb49: ; preds = %bb47, %_Z7hasvertRK4int3i.exit
+ %tmp279 = add i32 %381, -1 ; [#uses=1]
+ br label %bb59
+
+bb50: ; preds = %bb59
+ %384 = load %struct.btHullTriangle*** %225, align 4 ; [#uses=1]
+ %scevgep281 = getelementptr %struct.btHullTriangle** %384, i32 %tmp280 ; [#uses=1]
+ %385 = load %struct.btHullTriangle** %scevgep281, align 4 ; [#uses=4]
+ %386 = icmp eq %struct.btHullTriangle* %385, null ; [#uses=1]
+ br i1 %386, label %bb59.backedge, label %bb53
+
+bb59.backedge: ; preds = %bb58, %bb57, %bb50
+ %indvar.next277 = add i32 %indvar276, 1 ; [#uses=1]
+ br label %bb59
+
+bb53: ; preds = %bb50
+ %387 = getelementptr inbounds %struct.btHullTriangle* %385, i32 0, i32 3 ; [#uses=3]
+ %388 = load i32* %387, align 4 ; [#uses=1]
+ %389 = icmp sgt i32 %388, -1 ; [#uses=1]
+ br i1 %389, label %bb61, label %bb54
+
+bb54: ; preds = %bb53
+ %390 = getelementptr inbounds %struct.btHullTriangle* %385, i32 0, i32 0, i32 0 ; [#uses=4]
+ %391 = getelementptr inbounds i32* %390, i32 2 ; [#uses=1]
+ %392 = load i32* %391, align 4 ; [#uses=3]
+ %393 = getelementptr inbounds i32* %390, i32 1 ; [#uses=1]
+ %394 = load i32* %393, align 4 ; [#uses=3]
+ %395 = load i32* %390, align 4 ; [#uses=3]
+ %396 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %392, i32 0, i32 2 ; [#uses=1]
+ %397 = load float* %396, align 4 ; [#uses=1]
+ %398 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %394, i32 0, i32 2 ; [#uses=1]
+ %399 = load float* %398, align 4 ; [#uses=2]
+ %400 = fsub float %397, %399 ; [#uses=2]
+ %401 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %392, i32 0, i32 1 ; [#uses=1]
+ %402 = load float* %401, align 4 ; [#uses=1]
+ %403 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %394, i32 0, i32 1 ; [#uses=1]
+ %404 = load float* %403, align 4 ; [#uses=2]
+ %405 = fsub float %402, %404 ; [#uses=2]
+ %406 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %392, i32 0, i32 0 ; [#uses=1]
+ %407 = load float* %406, align 4 ; [#uses=1]
+ %408 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %394, i32 0, i32 0 ; [#uses=1]
+ %409 = load float* %408, align 4 ; [#uses=2]
+ %410 = fsub float %407, %409 ; [#uses=2]
+ %411 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %395, i32 0, i32 2 ; [#uses=1]
+ %412 = load float* %411, align 4 ; [#uses=1]
+ %413 = fsub float %399, %412 ; [#uses=2]
+ %414 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %395, i32 0, i32 1 ; [#uses=1]
+ %415 = load float* %414, align 4 ; [#uses=1]
+ %416 = fsub float %404, %415 ; [#uses=2]
+ %417 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %395, i32 0, i32 0 ; [#uses=1]
+ %418 = load float* %417, align 4 ; [#uses=1]
+ %419 = fsub float %409, %418 ; [#uses=2]
+ %420 = fmul float %419, %405 ; [#uses=1]
+ %421 = fmul float %416, %410 ; [#uses=1]
+ %422 = fsub float %420, %421 ; [#uses=3]
+ %423 = fmul float %413, %410 ; [#uses=1]
+ %424 = fmul float %419, %400 ; [#uses=1]
+ %425 = fsub float %423, %424 ; [#uses=3]
+ %426 = fmul float %416, %400 ; [#uses=1]
+ %427 = fmul float %413, %405 ; [#uses=1]
+ %428 = fsub float %426, %427 ; [#uses=3]
+ %429 = fmul float %428, %428 ; [#uses=1]
+ %430 = fmul float %425, %425 ; [#uses=1]
+ %431 = fadd float %429, %430 ; [#uses=1]
+ %432 = fmul float %422, %422 ; [#uses=1]
+ %433 = fadd float %431, %432 ; [#uses=1]
+ %434 = call float @sqrtf(float %433) nounwind readonly ; [#uses=2]
+ %435 = fcmp oeq float %434, 0.000000e+00 ; [#uses=1]
+ br i1 %435, label %invcont55, label %bb1.i192
+
+bb1.i192: ; preds = %bb54
+ %436 = fdiv float 1.000000e+00, %434 ; [#uses=3]
+ %437 = fmul float %422, %436 ; [#uses=1]
+ %438 = fmul float %425, %436 ; [#uses=1]
+ %439 = fmul float %428, %436 ; [#uses=1]
+ br label %invcont55
+
+invcont55: ; preds = %bb1.i192, %bb54
+ %storemerge318 = phi float [ %439, %bb1.i192 ], [ 1.000000e+00, %bb54 ] ; [#uses=1]
+ %storemerge317 = phi float [ %438, %bb1.i192 ], [ 0.000000e+00, %bb54 ] ; [#uses=1]
+ %storemerge = phi float [ %437, %bb1.i192 ], [ 0.000000e+00, %bb54 ] ; [#uses=1]
+ store float %storemerge318, float* %229, align 8
+ store float %storemerge317, float* %230, align 4
+ store float %storemerge, float* %231, align 8
+ store float 0.000000e+00, float* %232, align 4
+ %440 = call i32 @_Z12maxdirsteridI9btVector3EiPKT_iRS2_R20btAlignedObjectArrayIiE(%struct.btQuadWord* %verts, i32 %verts_count, %struct.btQuadWord* %n52, %"struct.btAlignedObjectArray<int>"* %allow) ; [#uses=5]
+ store i32 %440, i32* %387, align 4
+ %441 = getelementptr inbounds i32* %isextreme.3.1, i32 %440 ; [#uses=1]
+ %442 = load i32* %441, align 4 ; [#uses=1]
+ %443 = icmp eq i32 %442, 0 ; [#uses=1]
+ br i1 %443, label %bb58, label %bb57
+
+bb57: ; preds = %invcont55
+ store i32 -1, i32* %387, align 4
+ br label %bb59.backedge
+
+bb58: ; preds = %invcont55
+ %444 = load i32* %390, align 4 ; [#uses=3]
+ %445 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %440, i32 0, i32 2 ; [#uses=1]
+ %446 = load float* %445, align 4 ; [#uses=1]
+ %447 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %444, i32 0, i32 2 ; [#uses=1]
+ %448 = load float* %447, align 4 ; [#uses=1]
+ %449 = fsub float %446, %448 ; [#uses=1]
+ %450 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %440, i32 0, i32 1 ; [#uses=1]
+ %451 = load float* %450, align 4 ; [#uses=1]
+ %452 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %444, i32 0, i32 1 ; [#uses=1]
+ %453 = load float* %452, align 4 ; [#uses=1]
+ %454 = fsub float %451, %453 ; [#uses=1]
+ %455 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %440, i32 0, i32 0 ; [#uses=1]
+ %456 = load float* %455, align 4 ; [#uses=1]
+ %457 = getelementptr inbounds %struct.btQuadWord* %verts, i32 %444, i32 0, i32 0 ; [#uses=1]
+ %458 = load float* %457, align 4 ; [#uses=1]
+ %459 = fsub float %456, %458 ; [#uses=1]
+ %460 = load float* %229, align 8 ; [#uses=1]
+ %461 = fmul float %460, %459 ; [#uses=1]
+ %462 = load float* %230, align 4 ; [#uses=1]
+ %463 = fmul float %462, %454 ; [#uses=1]
+ %464 = fadd float %461, %463 ; [#uses=1]
+ %465 = load float* %231, align 8 ; [#uses=1]
+ %466 = fmul float %465, %449 ; [#uses=1]
+ %467 = fadd float %464, %466 ; [#uses=1]
+ %468 = getelementptr inbounds %struct.btHullTriangle* %385, i32 0, i32 4 ; [#uses=1]
+ store float %467, float* %468, align 4
+ br label %bb59.backedge
+
+bb59: ; preds = %bb59.backedge, %bb49
+ %indvar276 = phi i32 [ %indvar.next277, %bb59.backedge ], [ 0, %bb49 ] ; [#uses=2]
+ %tmp280 = sub i32 %tmp279, %indvar276 ; [#uses=2]
+ %469 = icmp eq i32 %tmp280, -1 ; [#uses=1]
+ br i1 %469, label %bb61, label %bb50
+
+bb61: ; preds = %bb59, %bb53
+ %indvar.next283 = add i32 %indvar282, 1 ; [#uses=1]
+ br label %bb62
+
+bb62: ; preds = %bb61, %bb23
+ %indvar282 = phi i32 [ %indvar.next283, %bb61 ], [ 0, %bb23 ] ; [#uses=2]
+ %vlimit_addr.1 = sub i32 %224, %indvar282 ; [#uses=1]
+ %470 = icmp slt i32 %vlimit_addr.1, 1 ; [#uses=1]
+ br i1 %470, label %bb73, label %bb63
+
+bb63: ; preds = %bb62
+ %471 = load i32* %135, align 4 ; [#uses=3]
+ %472 = icmp sgt i32 %471, 0 ; [#uses=1]
+ br i1 %472, label %bb.nph.i, label %invcont64
+
+bb.nph.i: ; preds = %bb63
+ %tmp = icmp sgt i32 %471, 1 ; [#uses=1]
+ %smax = select i1 %tmp, i32 %471, i32 1 ; [#uses=1]
+ br label %bb.i187
+
+bb.i187: ; preds = %bb7.i, %bb.nph.i
+ %t.116.i = phi %struct.btHullTriangle* [ null, %bb.nph.i ], [ %t.0.i, %bb7.i ] ; [#uses=4]
+ %i.015.i = phi i32 [ 0, %bb.nph.i ], [ %484, %bb7.i ] ; [#uses=3]
+ %473 = icmp eq %struct.btHullTriangle* %t.116.i, null ; [#uses=1]
+ br i1 %473, label %bb6.i, label %bb1.i188
+
+bb1.i188: ; preds = %bb.i187
+ %474 = load %struct.btHullTriangle*** %225, align 4 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btHullTriangle** %474, i32 %i.015.i ; [#uses=1]
+ %475 = load %struct.btHullTriangle** %scevgep.i, align 4 ; [#uses=2]
+ %476 = icmp eq %struct.btHullTriangle* %475, null ; [#uses=1]
+ br i1 %476, label %bb7.i, label %bb2.i189
+
+bb2.i189: ; preds = %bb1.i188
+ %477 = getelementptr inbounds %struct.btHullTriangle* %t.116.i, i32 0, i32 4 ; [#uses=1]
+ %478 = load float* %477, align 4 ; [#uses=1]
+ %479 = getelementptr inbounds %struct.btHullTriangle* %475, i32 0, i32 4 ; [#uses=1]
+ %480 = load float* %479, align 4 ; [#uses=1]
+ %481 = fcmp olt float %478, %480 ; [#uses=1]
+ br i1 %481, label %bb6.i, label %bb7.i
+
+bb6.i: ; preds = %bb2.i189, %bb.i187
+ %482 = load %struct.btHullTriangle*** %225, align 4 ; [#uses=1]
+ %scevgep17.i = getelementptr %struct.btHullTriangle** %482, i32 %i.015.i ; [#uses=1]
+ %483 = load %struct.btHullTriangle** %scevgep17.i, align 4 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb6.i, %bb2.i189, %bb1.i188
+ %t.0.i = phi %struct.btHullTriangle* [ %483, %bb6.i ], [ %t.116.i, %bb2.i189 ], [ %t.116.i, %bb1.i188 ] ; [#uses=2]
+ %484 = add nsw i32 %i.015.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %484, %smax ; [#uses=1]
+ br i1 %exitcond, label %invcont64, label %bb.i187
+
+invcont64: ; preds = %bb7.i, %bb63
+ %t.1.lcssa.i = phi %struct.btHullTriangle* [ null, %bb63 ], [ %t.0.i, %bb7.i ] ; [#uses=2]
+ %485 = getelementptr inbounds %struct.btHullTriangle* %t.1.lcssa.i, i32 0, i32 4 ; [#uses=1]
+ %486 = load float* %485, align 4 ; [#uses=1]
+ %487 = fcmp ogt float %486, %69 ; [#uses=1]
+ %iftmp.70.0.i = select i1 %487, %struct.btHullTriangle* %t.1.lcssa.i, %struct.btHullTriangle* null ; [#uses=2]
+ %488 = icmp eq %struct.btHullTriangle* %iftmp.70.0.i, null ; [#uses=1]
+ br i1 %488, label %bb73, label %bb24
+
+bb73: ; preds = %invcont64, %bb62, %invcont13
+ %.1 = phi i32 [ 0, %invcont13 ], [ 1, %bb62 ], [ 1, %invcont64 ] ; [#uses=2]
+ %489 = load i32** %11, align 4 ; [#uses=2]
+ %490 = icmp eq i32* %489, null ; [#uses=1]
+ br i1 %490, label %bb80, label %bb.i.i.i182
+
+bb.i.i.i182: ; preds = %bb73
+ %491 = load i8* %10, align 8 ; [#uses=1]
+ %toBool.i.i.i181 = icmp eq i8 %491, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i181, label %bb2.i.i.i184, label %bb1.i.i.i183
+
+bb1.i.i.i183: ; preds = %bb.i.i.i182
+ %492 = bitcast i32* %489 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %492)
+ to label %bb2.i.i.i184 unwind label %lpad
+
+bb2.i.i.i184: ; preds = %bb1.i.i.i183, %bb.i.i.i182
+ store i32* null, i32** %11, align 4
+ br label %bb80
+
+invcont78: ; preds = %bb1.i.i.i, %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.0)
+ unreachable
+
+bb80: ; preds = %bb2.i.i.i184, %bb73
+ store i8 1, i8* %10, align 8
+ store i32* null, i32** %11, align 4
+ store i32 0, i32* %12, align 4
+ store i32 0, i32* %13, align 8
+ %493 = icmp eq i32* %isextreme.3.1, null ; [#uses=1]
+ br i1 %493, label %_ZN20btAlignedObjectArrayIiED1Ev.exit180, label %bb2.i.i.i179
+
+bb2.i.i.i179: ; preds = %bb80
+ %494 = bitcast i32* %isextreme.3.1 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %494)
+ ret i32 %.1
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit180: ; preds = %bb80
+ ret i32 %.1
+
+bb81: ; preds = %entry
+ ret i32 0
+
+lpad: ; preds = %bb1.i.i.i183, %bb.i2.i
+ %isextreme.3.2 = phi i32* [ %isextreme.3.1, %bb1.i.i.i183 ], [ null, %bb.i2.i ] ; [#uses=1]
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select84 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad85: ; preds = %bb45, %bb30, %invcont18, %invcont17, %invcont16, %bb15, %bb1.i.i.i154, %bb.i2.i.i140, %bb1.i.i.i131, %bb.i2.i.i, %bb.i2.i105
+ %isextreme.3.3 = phi i32* [ %isextreme.3.1, %invcont18 ], [ %isextreme.3.1, %invcont17 ], [ %isextreme.3.1, %invcont16 ], [ %isextreme.3.1, %bb15 ], [ %phitmp.i, %bb.i2.i105 ], [ %isextreme.3.1, %bb30 ], [ %isextreme.3.1, %bb45 ], [ %isextreme.3.1, %bb.i2.i.i ], [ %isextreme.3.1, %bb1.i.i.i131 ], [ %isextreme.3.1, %bb.i2.i.i140 ], [ %isextreme.3.1, %bb1.i.i.i154 ] ; [#uses=1]
+ %eh_ptr86 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select88 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr86, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %495 = load i32** %11, align 4 ; [#uses=2]
+ %496 = icmp eq i32* %495, null ; [#uses=1]
+ br i1 %496, label %_ZN20btAlignedObjectArrayIiED1Ev.exit175, label %bb.i.i.i171
+
+bb.i.i.i171: ; preds = %lpad85
+ %497 = load i8* %10, align 8 ; [#uses=1]
+ %toBool.i.i.i170 = icmp eq i8 %497, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i170, label %bb2.i.i.i173, label %bb1.i.i.i172
+
+bb1.i.i.i172: ; preds = %bb.i.i.i171
+ %498 = bitcast i32* %495 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %498)
+ to label %bb2.i.i.i173 unwind label %lpad89
+
+bb2.i.i.i173: ; preds = %bb1.i.i.i172, %bb.i.i.i171
+ store i32* null, i32** %11, align 4
+ br label %_ZN20btAlignedObjectArrayIiED1Ev.exit175
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit175: ; preds = %bb2.i.i.i173, %lpad85
+ store i8 1, i8* %10, align 8
+ store i32* null, i32** %11, align 4
+ store i32 0, i32* %12, align 4
+ store i32 0, i32* %13, align 8
+ br label %ppad
+
+lpad89: ; preds = %bb1.i.i.i172
+ %eh_ptr90 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select92 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr90, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad93: ; preds = %bb1.i.i.i
+ %eh_ptr94 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select96 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr94, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayIiED1Ev.exit175, %lpad
+ %isextreme.3.4 = phi i32* [ %isextreme.3.3, %_ZN20btAlignedObjectArrayIiED1Ev.exit175 ], [ %isextreme.3.2, %lpad ] ; [#uses=2]
+ %eh_exception.0 = phi i8* [ %eh_ptr86, %_ZN20btAlignedObjectArrayIiED1Ev.exit175 ], [ %eh_ptr, %lpad ] ; [#uses=1]
+ %499 = icmp eq i32* %isextreme.3.4, null ; [#uses=1]
+ br i1 %499, label %invcont78, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %ppad
+ %500 = bitcast i32* %isextreme.3.4 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %500)
+ to label %invcont78 unwind label %lpad93
+}
+
+; [#uses=2]
+define i32 @_ZN11HullLibrary8calchullEP9btVector3iR20btAlignedObjectArrayIjERii(%struct.HullLibrary* %this, %struct.btQuadWord* %verts, i32 %verts_count, %"struct.btAlignedObjectArray<int>"* nocapture %tris_out, i32* nocapture %tris_count, i32 %vlimit) align 2 {
+entry:
+ %0 = alloca i32, align 4 ; [#uses=2]
+ %1 = call i32 @_ZN11HullLibrary11calchullgenEP9btVector3ii(%struct.HullLibrary* %this, %struct.btQuadWord* %verts, i32 %verts_count, i32 %vlimit) ; [#uses=1]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb21, label %bb9.preheader
+
+bb9.preheader: ; preds = %entry
+ %3 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 1 ; [#uses=3]
+ %4 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 3 ; [#uses=6]
+ br label %bb9
+
+bb2: ; preds = %bb9
+ %5 = load %struct.btHullTriangle*** %4, align 4 ; [#uses=1]
+ %scevgep111 = getelementptr %struct.btHullTriangle** %5, i32 %32 ; [#uses=1]
+ %6 = load %struct.btHullTriangle** %scevgep111, align 4 ; [#uses=1]
+ %7 = icmp eq %struct.btHullTriangle* %6, null ; [#uses=1]
+ br i1 %7, label %bb8, label %bb5.preheader
+
+bb5.preheader: ; preds = %bb2
+ %tmp99 = shl i32 %ts.1.2, 1 ; [#uses=1]
+ br label %bb5
+
+bb4: ; preds = %bb5
+ %8 = icmp eq i32 %ts.2.1, %tmp83 ; [#uses=1]
+ br i1 %8, label %bb.i, label %bb1.i
+
+bb.i: ; preds = %bb4
+ %9 = icmp eq i32 %tmp83, 0 ; [#uses=1]
+ %iftmp.190.0.i.i = select i1 %9, i32 1, i32 %tmp100 ; [#uses=5]
+ %10 = icmp slt i32 %ts.2.1, %iftmp.190.0.i.i ; [#uses=1]
+ br i1 %10, label %bb.i.i41, label %bb1.i
+
+bb.i.i41: ; preds = %bb.i
+ %11 = icmp eq i32 %iftmp.190.0.i.i, 0 ; [#uses=1]
+ br i1 %11, label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i, label %bb.i2.i.i
+
+bb.i2.i.i: ; preds = %bb.i.i41
+ %12 = shl i32 %iftmp.190.0.i.i, 2 ; [#uses=1]
+ %13 = invoke i8* @_Z22btAlignedAllocInternalji(i32 %12, i32 16)
+ to label %.noexc56 unwind label %lpad ; [#uses=1]
+
+.noexc56: ; preds = %bb.i2.i.i
+ %phitmp.i.i = bitcast i8* %13 to i32* ; [#uses=1]
+ br label %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+
+_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i: ; preds = %.noexc56, %bb.i.i41
+ %14 = phi i32* [ %phitmp.i.i, %.noexc56 ], [ null, %bb.i.i41 ] ; [#uses=3]
+ %15 = icmp sgt i32 %tmp83, 0 ; [#uses=1]
+ br i1 %15, label %bb.i4.i.i45, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+
+bb.i4.i.i45: ; preds = %bb3.i.i.i50, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %indvar.i.i.i43 = phi i32 [ %indvar.next.i.i.i48, %bb3.i.i.i50 ], [ 0, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i ] ; [#uses=3]
+ %scevgep.i.i.i44 = getelementptr i32* %14, i32 %indvar.i.i.i43 ; [#uses=2]
+ %16 = icmp eq i32* %scevgep.i.i.i44, null ; [#uses=1]
+ br i1 %16, label %bb3.i.i.i50, label %bb1.i5.i.i47
+
+bb1.i5.i.i47: ; preds = %bb.i4.i.i45
+ %scevgep8.i.i.i46 = getelementptr i32* %ts.3.1, i32 %indvar.i.i.i43 ; [#uses=1]
+ %17 = load i32* %scevgep8.i.i.i46, align 4 ; [#uses=1]
+ store i32 %17, i32* %scevgep.i.i.i44, align 4
+ br label %bb3.i.i.i50
+
+bb3.i.i.i50: ; preds = %bb1.i5.i.i47, %bb.i4.i.i45
+ %indvar.next.i.i.i48 = add i32 %indvar.i.i.i43, 1 ; [#uses=2]
+ %exitcond84 = icmp eq i32 %indvar.next.i.i.i48, %tmp83 ; [#uses=1]
+ br i1 %exitcond84, label %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i, label %bb.i4.i.i45
+
+_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i: ; preds = %bb3.i.i.i50, %_ZN20btAlignedObjectArrayIiE8allocateEi.exit.i.i
+ %18 = icmp eq i32* %ts.3.1, null ; [#uses=1]
+ br i1 %18, label %bb1.i, label %bb1.i.i.i53
+
+bb1.i.i.i53: ; preds = %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i
+ %19 = bitcast i32* %ts.3.1 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %19)
+ to label %bb1.i unwind label %lpad.thread
+
+lpad.thread: ; preds = %bb1.i.i.i53
+ %eh_ptr59 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select2460 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr59, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %bb1.i.i.i
+
+bb1.i: ; preds = %bb1.i.i.i53, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i, %bb.i, %bb4
+ %ts.3.0 = phi i32* [ %ts.3.1, %bb.i ], [ %ts.3.1, %bb4 ], [ %14, %bb1.i.i.i53 ], [ %14, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i ] ; [#uses=2]
+ %ts.2.0 = phi i32 [ %ts.2.1, %bb.i ], [ %ts.2.1, %bb4 ], [ %iftmp.190.0.i.i, %bb1.i.i.i53 ], [ %iftmp.190.0.i.i, %_ZNK20btAlignedObjectArrayIiE4copyEiiPi.exit.i.i ] ; [#uses=1]
+ %scevgep97 = getelementptr i32* %ts.3.0, i32 %tmp83 ; [#uses=2]
+ %20 = icmp eq i32* %scevgep97, null ; [#uses=1]
+ br i1 %20, label %invcont, label %bb2.i
+
+bb2.i: ; preds = %bb1.i
+ %uglygep = getelementptr i8* %27, i32 %tmp101 ; [#uses=1]
+ %uglygep102 = bitcast i8* %uglygep to i32* ; [#uses=1]
+ %21 = load i32* %uglygep102, align 4 ; [#uses=1]
+ store i32 %21, i32* %scevgep97, align 4
+ br label %invcont
+
+invcont: ; preds = %bb2.i, %bb1.i
+ %22 = add nsw i32 %23, 1 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %invcont, %bb5.preheader
+ %ts.3.1 = phi i32* [ %ts.3.0, %invcont ], [ %ts.3.4, %bb5.preheader ] ; [#uses=9]
+ %ts.2.1 = phi i32 [ %ts.2.0, %invcont ], [ %ts.2.3, %bb5.preheader ] ; [#uses=5]
+ %23 = phi i32 [ %22, %invcont ], [ 0, %bb5.preheader ] ; [#uses=5]
+ %tmp83 = add i32 %ts.1.2, %23 ; [#uses=6]
+ %tmp98 = shl i32 %23, 1 ; [#uses=1]
+ %tmp100 = add i32 %tmp99, %tmp98 ; [#uses=1]
+ %tmp101 = shl i32 %23, 2 ; [#uses=1]
+ %24 = icmp slt i32 %23, 3 ; [#uses=1]
+ %25 = load %struct.btHullTriangle*** %4, align 4 ; [#uses=2]
+ %scevgep110 = getelementptr %struct.btHullTriangle** %25, i32 %32 ; [#uses=1]
+ %26 = load %struct.btHullTriangle** %scevgep110, align 4 ; [#uses=2]
+ %27 = bitcast %struct.btHullTriangle* %26 to i8* ; [#uses=2]
+ br i1 %24, label %bb4, label %bb6
+
+bb6: ; preds = %bb5
+ %28 = getelementptr inbounds %struct.btHullTriangle* %26, i32 0, i32 2 ; [#uses=1]
+ %29 = load i32* %28, align 4 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btHullTriangle** %25, i32 %29 ; [#uses=1]
+ store %struct.btHullTriangle* null, %struct.btHullTriangle** %30, align 4
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %27)
+ to label %bb8 unwind label %lpad
+
+bb8: ; preds = %bb6, %bb2
+ %ts.3.2 = phi i32* [ %ts.3.4, %bb2 ], [ %ts.3.1, %bb6 ] ; [#uses=1]
+ %ts.2.2 = phi i32 [ %ts.2.3, %bb2 ], [ %ts.2.1, %bb6 ] ; [#uses=1]
+ %ts.1.1 = phi i32 [ %ts.1.2, %bb2 ], [ %tmp83, %bb6 ] ; [#uses=1]
+ %31 = add nsw i32 %32, 1 ; [#uses=1]
+ br label %bb9
+
+bb9: ; preds = %bb8, %bb9.preheader
+ %ts.3.4 = phi i32* [ %ts.3.2, %bb8 ], [ null, %bb9.preheader ] ; [#uses=7]
+ %ts.2.3 = phi i32 [ %ts.2.2, %bb8 ], [ 0, %bb9.preheader ] ; [#uses=2]
+ %ts.1.2 = phi i32 [ %ts.1.1, %bb8 ], [ 0, %bb9.preheader ] ; [#uses=7]
+ %32 = phi i32 [ %31, %bb8 ], [ 0, %bb9.preheader ] ; [#uses=4]
+ %33 = load i32* %3, align 4 ; [#uses=1]
+ %34 = icmp sgt i32 %33, %32 ; [#uses=1]
+ br i1 %34, label %bb2, label %bb11
+
+bb11: ; preds = %bb9
+ %35 = sdiv i32 %ts.1.2, 3 ; [#uses=1]
+ store i32 %35, i32* %tris_count, align 4
+ store i32 0, i32* %0, align 4
+ invoke void @_ZN20btAlignedObjectArrayIjE6resizeEiRKj(%"struct.btAlignedObjectArray<int>"* %tris_out, i32 %ts.1.2, i32* %0) inlinehint
+ to label %bb14.preheader unwind label %lpad
+
+bb14.preheader: ; preds = %bb11
+ %36 = icmp sgt i32 %ts.1.2, 0 ; [#uses=1]
+ br i1 %36, label %bb.nph, label %bb16
+
+bb.nph: ; preds = %bb14.preheader
+ %37 = getelementptr inbounds %"struct.btAlignedObjectArray<int>"* %tris_out, i32 0, i32 3 ; [#uses=1]
+ br label %bb13
+
+bb13: ; preds = %bb13, %bb.nph
+ %i.164 = phi i32 [ 0, %bb.nph ], [ %40, %bb13 ] ; [#uses=3]
+ %scevgep81 = getelementptr i32* %ts.3.4, i32 %i.164 ; [#uses=1]
+ %38 = load i32** %37, align 4 ; [#uses=1]
+ %39 = load i32* %scevgep81, align 4 ; [#uses=1]
+ %scevgep82 = getelementptr i32* %38, i32 %i.164 ; [#uses=1]
+ store i32 %39, i32* %scevgep82, align 4
+ %40 = add nsw i32 %i.164, 1 ; [#uses=2]
+ %exitcond80 = icmp eq i32 %40, %ts.1.2 ; [#uses=1]
+ br i1 %exitcond80, label %bb16, label %bb13
+
+bb16: ; preds = %bb13, %bb14.preheader
+ %41 = load i32* %3, align 4 ; [#uses=4]
+ %42 = icmp sgt i32 %41, 0 ; [#uses=1]
+ %.not = xor i1 %42, true ; [#uses=1]
+ %43 = icmp slt i32 %41, 0 ; [#uses=1]
+ %or.cond = and i1 %.not, %43 ; [#uses=1]
+ br i1 %or.cond, label %bb4.i, label %invcont17
+
+bb4.i: ; preds = %bb16
+ %44 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 2 ; [#uses=2]
+ %45 = load i32* %44, align 4 ; [#uses=1]
+ %46 = icmp slt i32 %45, 0 ; [#uses=1]
+ br i1 %46, label %_ZN20btAlignedObjectArrayIP14btHullTriangleE8allocateEi.exit.i.i, label %bb.nph.i
+
+_ZN20btAlignedObjectArrayIP14btHullTriangleE8allocateEi.exit.i.i: ; preds = %bb4.i
+ %47 = load %struct.btHullTriangle*** %4, align 4 ; [#uses=2]
+ %48 = icmp eq %struct.btHullTriangle** %47, null ; [#uses=1]
+ br i1 %48, label %bb11.preheader.i, label %bb.i.i.i37
+
+bb.i.i.i37: ; preds = %_ZN20btAlignedObjectArrayIP14btHullTriangleE8allocateEi.exit.i.i
+ %49 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ %50 = load i8* %49, align 4 ; [#uses=1]
+ %toBool.i.i.i36 = icmp eq i8 %50, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i36, label %bb2.i.i.i39, label %bb1.i.i.i38
+
+bb1.i.i.i38: ; preds = %bb.i.i.i37
+ %51 = bitcast %struct.btHullTriangle** %47 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %51)
+ to label %bb2.i.i.i39 unwind label %lpad
+
+bb2.i.i.i39: ; preds = %bb1.i.i.i38, %bb.i.i.i37
+ store %struct.btHullTriangle** null, %struct.btHullTriangle*** %4, align 4
+ br label %bb11.preheader.i
+
+bb11.preheader.i: ; preds = %bb2.i.i.i39, %_ZN20btAlignedObjectArrayIP14btHullTriangleE8allocateEi.exit.i.i
+ %52 = getelementptr inbounds %struct.HullLibrary* %this, i32 0, i32 0, i32 4 ; [#uses=1]
+ store i8 1, i8* %52, align 4
+ store %struct.btHullTriangle** null, %struct.btHullTriangle*** %4, align 4
+ store i32 0, i32* %44, align 4
+ br label %bb.nph.i
+
+bb.nph.i: ; preds = %bb11.preheader.i, %bb4.i
+ %tmp.i = sub i32 0, %41 ; [#uses=1]
+ br label %bb7.i
+
+bb7.i: ; preds = %bb10.i, %bb.nph.i
+ %indvar.i = phi i32 [ 0, %bb.nph.i ], [ %indvar.next.i, %bb10.i ] ; [#uses=2]
+ %tmp = add i32 %41, %indvar.i ; [#uses=1]
+ %53 = load %struct.btHullTriangle*** %4, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btHullTriangle** %53, i32 %tmp ; [#uses=2]
+ %54 = icmp eq %struct.btHullTriangle** %scevgep, null ; [#uses=1]
+ br i1 %54, label %bb10.i, label %bb8.i
+
+bb8.i: ; preds = %bb7.i
+ store %struct.btHullTriangle* null, %struct.btHullTriangle** %scevgep, align 4
+ br label %bb10.i
+
+bb10.i: ; preds = %bb8.i, %bb7.i
+ %indvar.next.i = add i32 %indvar.i, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next.i, %tmp.i ; [#uses=1]
+ br i1 %exitcond, label %invcont17, label %bb7.i
+
+invcont17: ; preds = %bb10.i, %bb16
+ store i32 0, i32* %3, align 4
+ %55 = icmp eq i32* %ts.3.4, null ; [#uses=1]
+ br i1 %55, label %_ZN20btAlignedObjectArrayIiED1Ev.exit35, label %bb2.i.i.i34
+
+bb2.i.i.i34: ; preds = %invcont17
+ %56 = bitcast i32* %ts.3.4 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %56)
+ ret i32 1
+
+_ZN20btAlignedObjectArrayIiED1Ev.exit35: ; preds = %invcont17
+ ret i32 1
+
+invcont19: ; preds = %bb1.i.i.i, %lpad
+ %eh_ptr63 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr62, %bb1.i.i.i ] ; [#uses=1]
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_ptr63)
+ unreachable
+
+bb21: ; preds = %entry
+ ret i32 0
+
+lpad: ; preds = %bb1.i.i.i38, %bb11, %bb6, %bb.i2.i.i
+ %ts.3.3 = phi i32* [ %ts.3.4, %bb1.i.i.i38 ], [ %ts.3.4, %bb11 ], [ %ts.3.1, %bb.i2.i.i ], [ %ts.3.1, %bb6 ] ; [#uses=2]
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=3]
+ %eh_select24 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %57 = icmp eq i32* %ts.3.3, null ; [#uses=1]
+ br i1 %57, label %invcont19, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %lpad, %lpad.thread
+ %ts.3.361 = phi i32* [ %ts.3.1, %lpad.thread ], [ %ts.3.3, %lpad ] ; [#uses=1]
+ %eh_ptr62 = phi i8* [ %eh_ptr59, %lpad.thread ], [ %eh_ptr, %lpad ] ; [#uses=1]
+ %58 = bitcast i32* %ts.3.361 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %58)
+ to label %invcont19 unwind label %lpad25
+
+lpad25: ; preds = %bb1.i.i.i
+ %eh_ptr26 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select28 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr26, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN11HullLibrary11ComputeHullEjPK9btVector3R11PHullResultj(%struct.HullLibrary* %this, i32 %vcount, %struct.btQuadWord* %vertices, %struct.PHullResult* nocapture %result, i32 %vlimit) align 2 {
+entry:
+ %tris_count = alloca i32, align 4 ; [#uses=2]
+ %0 = getelementptr inbounds %struct.PHullResult* %result, i32 0, i32 4 ; [#uses=1]
+ %1 = call i32 @_ZN11HullLibrary8calchullEP9btVector3iR20btAlignedObjectArrayIjERii(%struct.HullLibrary* %this, %struct.btQuadWord* %vertices, i32 %vcount, %"struct.btAlignedObjectArray<int>"* %0, i32* %tris_count, i32 %vlimit) ; [#uses=1]
+ %2 = icmp eq i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb2, label %bb1
+
+bb1: ; preds = %entry
+ %3 = load i32* %tris_count, align 4 ; [#uses=2]
+ %4 = mul nsw i32 %3, 3 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.PHullResult* %result, i32 0, i32 1 ; [#uses=1]
+ store i32 %4, i32* %5, align 4
+ %6 = getelementptr inbounds %struct.PHullResult* %result, i32 0, i32 2 ; [#uses=1]
+ store i32 %3, i32* %6, align 4
+ %7 = getelementptr inbounds %struct.PHullResult* %result, i32 0, i32 3 ; [#uses=1]
+ store %struct.btQuadWord* %vertices, %struct.btQuadWord** %7, align 4
+ %8 = getelementptr inbounds %struct.PHullResult* %result, i32 0, i32 0 ; [#uses=1]
+ store i32 %vcount, i32* %8, align 4
+ ret i8 1
+
+bb2: ; preds = %entry
+ ret i8 0
+}
+
+; [#uses=1]
+define i32 @_ZN11HullLibrary16CreateConvexHullERK8HullDescR10HullResult(%struct.HullLibrary* %this, %struct.HullDesc* nocapture %desc, %struct.HullResult* nocapture %result) align 2 {
+invcont:
+ %tris_count.i = alloca i32, align 4 ; [#uses=2]
+ %0 = alloca i32, align 4 ; [#uses=2]
+ %1 = alloca %struct.btQuadWord, align 8 ; [#uses=1]
+ %2 = alloca i32, align 4 ; [#uses=2]
+ %3 = alloca %struct.btQuadWord, align 8 ; [#uses=1]
+ %4 = alloca %struct.btQuadWord, align 8 ; [#uses=1]
+ %5 = alloca %struct.btQuadWord, align 8 ; [#uses=1]
+ %hr = alloca %struct.PHullResult, align 8 ; [#uses=9]
+ %vertexSource = alloca %"struct.btAlignedObjectArray<btVector3>", align 8 ; [#uses=5]
+ %scale = alloca %struct.btQuadWord, align 8 ; [#uses=4]
+ %ovcount = alloca i32, align 4 ; [#uses=8]
+ %vertexScratch = alloca %"struct.btAlignedObjectArray<btVector3>", align 8 ; [#uses=5]
+ %6 = getelementptr inbounds %struct.PHullResult* %hr, i32 0, i32 4, i32 4 ; [#uses=5]
+ store i8 1, i8* %6, align 8
+ %7 = getelementptr inbounds %struct.PHullResult* %hr, i32 0, i32 4, i32 3 ; [#uses=8]
+ store i32* null, i32** %7, align 4
+ %8 = getelementptr inbounds %struct.PHullResult* %hr, i32 0, i32 4, i32 1 ; [#uses=3]
+ store i32 0, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.PHullResult* %hr, i32 0, i32 4, i32 2 ; [#uses=2]
+ store i32 0, i32* %9, align 8
+ %10 = getelementptr inbounds %struct.PHullResult* %hr, i32 0, i32 0 ; [#uses=3]
+ store i32 0, i32* %10, align 8
+ %11 = getelementptr inbounds %struct.PHullResult* %hr, i32 0, i32 1 ; [#uses=3]
+ store i32 0, i32* %11, align 4
+ %12 = getelementptr inbounds %struct.PHullResult* %hr, i32 0, i32 2 ; [#uses=4]
+ store i32 0, i32* %12, align 8
+ %13 = getelementptr inbounds %struct.PHullResult* %hr, i32 0, i32 3 ; [#uses=3]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %13, align 4
+ %14 = getelementptr inbounds %struct.HullDesc* %desc, i32 0, i32 1 ; [#uses=2]
+ %15 = load i32* %14, align 4 ; [#uses=2]
+ %16 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %vertexSource, i32 0, i32 4 ; [#uses=5]
+ store i8 1, i8* %16, align 8
+ %17 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %vertexSource, i32 0, i32 3 ; [#uses=7]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %17, align 4
+ %18 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %vertexSource, i32 0, i32 1 ; [#uses=3]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %vertexSource, i32 0, i32 2 ; [#uses=3]
+ store i32 0, i32* %19, align 8
+ %20 = icmp ult i32 %15, 8 ; [#uses=1]
+ %vcount.0 = select i1 %20, i32 8, i32 %15 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(%"struct.btAlignedObjectArray<btVector3>"* %vertexSource, i32 %vcount.0, %struct.btQuadWord* %5) inlinehint
+ to label %invcont2 unwind label %invcont.lpad59_crit_edge
+
+invcont.lpad59_crit_edge: ; preds = %invcont
+ %.pre.pre = load %struct.btQuadWord** %17, align 4 ; [#uses=1]
+ br label %lpad59
+
+invcont2: ; preds = %invcont
+ %21 = getelementptr inbounds %struct.HullDesc* %desc, i32 0, i32 4 ; [#uses=1]
+ %22 = load float* %21, align 4 ; [#uses=1]
+ %23 = load %struct.btQuadWord** %17, align 4 ; [#uses=13]
+ %24 = getelementptr inbounds %struct.HullDesc* %desc, i32 0, i32 3 ; [#uses=1]
+ %25 = load i32* %24, align 4 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.HullDesc* %desc, i32 0, i32 2 ; [#uses=1]
+ %27 = load %struct.btQuadWord** %26, align 4 ; [#uses=1]
+ %28 = load i32* %14, align 4 ; [#uses=1]
+ %29 = invoke zeroext i8 @_ZN11HullLibrary15CleanupVerticesEjPK9btVector3jRjPS0_fRS0_(%struct.HullLibrary* %this, i32 %28, %struct.btQuadWord* %27, i32 %25, i32* %ovcount, %struct.btQuadWord* %23, float %22, %struct.btQuadWord* %scale)
+ to label %invcont3 unwind label %lpad59 ; [#uses=1]
+
+invcont3: ; preds = %invcont2
+ %toBool = icmp eq i8 %29, 0 ; [#uses=1]
+ br i1 %toBool, label %bb43, label %bb6.preheader
+
+bb6.preheader: ; preds = %invcont3
+ %30 = load i32* %ovcount, align 4 ; [#uses=1]
+ %31 = icmp eq i32 %30, 0 ; [#uses=1]
+ br i1 %31, label %bb7, label %bb.nph130
+
+bb.nph130: ; preds = %bb6.preheader
+ %32 = getelementptr inbounds %struct.btQuadWord* %scale, i32 0, i32 0, i32 0 ; [#uses=1]
+ %33 = getelementptr inbounds %struct.btQuadWord* %scale, i32 0, i32 0, i32 1 ; [#uses=1]
+ %34 = getelementptr inbounds %struct.btQuadWord* %scale, i32 0, i32 0, i32 2 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb5, %bb.nph130
+ %i.0129 = phi i32 [ 0, %bb.nph130 ], [ %44, %bb5 ] ; [#uses=4]
+ %scevgep154155 = getelementptr inbounds %struct.btQuadWord* %23, i32 %i.0129, i32 0, i32 0 ; [#uses=2]
+ %scevgep156 = getelementptr %struct.btQuadWord* %23, i32 %i.0129, i32 0, i32 1 ; [#uses=2]
+ %scevgep157 = getelementptr %struct.btQuadWord* %23, i32 %i.0129, i32 0, i32 2 ; [#uses=2]
+ %35 = load float* %scevgep154155, align 4 ; [#uses=1]
+ %36 = load float* %32, align 8 ; [#uses=1]
+ %37 = fmul float %35, %36 ; [#uses=1]
+ store float %37, float* %scevgep154155, align 4
+ %38 = load float* %scevgep156, align 4 ; [#uses=1]
+ %39 = load float* %33, align 4 ; [#uses=1]
+ %40 = fmul float %38, %39 ; [#uses=1]
+ store float %40, float* %scevgep156, align 4
+ %41 = load float* %scevgep157, align 4 ; [#uses=1]
+ %42 = load float* %34, align 8 ; [#uses=1]
+ %43 = fmul float %41, %42 ; [#uses=1]
+ store float %43, float* %scevgep157, align 4
+ %44 = add i32 %i.0129, 1 ; [#uses=2]
+ %45 = load i32* %ovcount, align 4 ; [#uses=2]
+ %46 = icmp ult i32 %44, %45 ; [#uses=1]
+ br i1 %46, label %bb5, label %bb7
+
+bb7: ; preds = %bb5, %bb6.preheader
+ %47 = phi i32 [ 0, %bb6.preheader ], [ %45, %bb5 ] ; [#uses=4]
+ %48 = getelementptr inbounds %struct.HullDesc* %desc, i32 0, i32 5 ; [#uses=1]
+ %49 = load i32* %48, align 4 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.PHullResult* %hr, i32 0, i32 4 ; [#uses=1]
+ %51 = invoke i32 @_ZN11HullLibrary8calchullEP9btVector3iR20btAlignedObjectArrayIjERii(%struct.HullLibrary* %this, %struct.btQuadWord* %23, i32 %47, %"struct.btAlignedObjectArray<int>"* %50, i32* %tris_count.i, i32 %49)
+ to label %.noexc118 unwind label %lpad59 ; [#uses=1]
+
+.noexc118: ; preds = %bb7
+ %52 = icmp eq i32 %51, 0 ; [#uses=1]
+ br i1 %52, label %bb43, label %invcont11
+
+invcont11: ; preds = %.noexc118
+ %53 = load i32* %tris_count.i, align 4 ; [#uses=8]
+ %54 = mul nsw i32 %53, 3 ; [#uses=5]
+ store i32 %54, i32* %11, align 4
+ store i32 %53, i32* %12, align 8
+ store %struct.btQuadWord* %23, %struct.btQuadWord** %13, align 4
+ store i32 %47, i32* %10, align 8
+ %55 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %vertexScratch, i32 0, i32 4 ; [#uses=5]
+ store i8 1, i8* %55, align 8
+ %56 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %vertexScratch, i32 0, i32 3 ; [#uses=7]
+ store %struct.btQuadWord* null, %struct.btQuadWord** %56, align 4
+ %57 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %vertexScratch, i32 0, i32 1 ; [#uses=3]
+ store i32 0, i32* %57, align 4
+ %58 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %vertexScratch, i32 0, i32 2 ; [#uses=3]
+ store i32 0, i32* %58, align 8
+ invoke void @_ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(%"struct.btAlignedObjectArray<btVector3>"* %vertexScratch, i32 %47, %struct.btQuadWord* %4) inlinehint
+ to label %invcont12 unwind label %invcont11.lpad63_crit_edge
+
+invcont11.lpad63_crit_edge: ; preds = %invcont11
+ %.pre164 = load %struct.btQuadWord** %56, align 4 ; [#uses=1]
+ br label %lpad63
+
+invcont12: ; preds = %invcont11
+ %59 = load i32** %7, align 4 ; [#uses=10]
+ %60 = load %struct.btQuadWord** %56, align 4 ; [#uses=11]
+ invoke void @_ZN11HullLibrary16BringOutYourDeadEPK9btVector3jPS0_RjPjj(%struct.HullLibrary* %this, %struct.btQuadWord* %23, i32 %47, %struct.btQuadWord* %60, i32* %ovcount, i32* %59, i32 %54)
+ to label %invcont13 unwind label %lpad63
+
+invcont13: ; preds = %invcont12
+ %61 = getelementptr inbounds %struct.HullDesc* %desc, i32 0, i32 0 ; [#uses=3]
+ %62 = load i32* %61, align 4 ; [#uses=1]
+ %63 = and i32 %62, 1 ; [#uses=1]
+ %toBool14 = icmp eq i32 %63, 0 ; [#uses=1]
+ %64 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 0 ; [#uses=2]
+ br i1 %toBool14, label %bb24, label %bb15
+
+bb15: ; preds = %invcont13
+ store i8 0, i8* %64, align 4
+ %65 = load i32* %ovcount, align 4 ; [#uses=2]
+ %66 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 1 ; [#uses=1]
+ store i32 %65, i32* %66, align 4
+ %67 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 2 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(%"struct.btAlignedObjectArray<btVector3>"* %67, i32 %65, %struct.btQuadWord* %3) inlinehint
+ to label %invcont16 unwind label %lpad63
+
+invcont16: ; preds = %bb15
+ %68 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 3 ; [#uses=1]
+ store i32 %53, i32* %68, align 4
+ %69 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 4 ; [#uses=1]
+ store i32 %54, i32* %69, align 4
+ store i32 0, i32* %2, align 4
+ %70 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 5 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayIjE6resizeEiRKj(%"struct.btAlignedObjectArray<int>"* %70, i32 %54, i32* %2) inlinehint
+ to label %invcont17 unwind label %lpad63
+
+invcont17: ; preds = %invcont16
+ %71 = load i32* %ovcount, align 4 ; [#uses=1]
+ %72 = shl i32 %71, 4 ; [#uses=1]
+ %73 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 2, i32 3 ; [#uses=1]
+ %74 = load %struct.btQuadWord** %73, align 4 ; [#uses=1]
+ %75 = bitcast %struct.btQuadWord* %74 to i8* ; [#uses=1]
+ %76 = bitcast %struct.btQuadWord* %60 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %75, i8* %76, i32 %72, i32 4, i1 false)
+ %77 = load i32* %61, align 4 ; [#uses=1]
+ %.lobit = and i32 %77, 2 ; [#uses=1]
+ %toBool18 = icmp eq i32 %.lobit, 0 ; [#uses=1]
+ br i1 %toBool18, label %bb23, label %bb19
+
+bb19: ; preds = %invcont17
+ %78 = icmp eq i32 %53, 0 ; [#uses=1]
+ br i1 %78, label %bb36, label %bb.nph
+
+bb.nph: ; preds = %bb19
+ %79 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 5, i32 3 ; [#uses=1]
+ %80 = load i32** %79, align 4 ; [#uses=3]
+ br label %bb21
+
+bb21: ; preds = %bb21, %bb.nph
+ %i20.0123 = phi i32 [ 0, %bb.nph ], [ %84, %bb21 ] ; [#uses=2]
+ %tmp131 = mul i32 %i20.0123, 3 ; [#uses=4]
+ %tmp132 = add i32 %tmp131, 1 ; [#uses=2]
+ %scevgep = getelementptr i32* %80, i32 %tmp132 ; [#uses=1]
+ %tmp133 = add i32 %tmp131, 2 ; [#uses=2]
+ %scevgep134 = getelementptr i32* %80, i32 %tmp133 ; [#uses=1]
+ %dest.0122 = getelementptr i32* %80, i32 %tmp131 ; [#uses=1]
+ %scevgep136 = getelementptr i32* %59, i32 %tmp133 ; [#uses=1]
+ %scevgep137 = getelementptr i32* %59, i32 %tmp132 ; [#uses=1]
+ %source.0121 = getelementptr i32* %59, i32 %tmp131 ; [#uses=1]
+ %81 = load i32* %scevgep136, align 4 ; [#uses=1]
+ store i32 %81, i32* %dest.0122, align 4
+ %82 = load i32* %scevgep137, align 4 ; [#uses=1]
+ store i32 %82, i32* %scevgep, align 4
+ %83 = load i32* %source.0121, align 4 ; [#uses=1]
+ store i32 %83, i32* %scevgep134, align 4
+ %84 = add i32 %i20.0123, 1 ; [#uses=2]
+ %85 = icmp ugt i32 %53, %84 ; [#uses=1]
+ br i1 %85, label %bb21, label %bb36
+
+bb23: ; preds = %invcont17
+ %86 = mul i32 %53, 12 ; [#uses=1]
+ %87 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 5, i32 3 ; [#uses=1]
+ %88 = load i32** %87, align 4 ; [#uses=1]
+ %89 = bitcast i32* %88 to i8* ; [#uses=1]
+ %90 = bitcast i32* %59 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %89, i8* %90, i32 %86, i32 4, i1 false)
+ br label %bb36
+
+bb24: ; preds = %invcont13
+ store i8 1, i8* %64, align 4
+ %91 = load i32* %ovcount, align 4 ; [#uses=2]
+ %92 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 1 ; [#uses=1]
+ store i32 %91, i32* %92, align 4
+ %93 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 2 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayI9btVector3E6resizeEiRKS0_(%"struct.btAlignedObjectArray<btVector3>"* %93, i32 %91, %struct.btQuadWord* %1) inlinehint
+ to label %invcont25 unwind label %lpad63
+
+invcont25: ; preds = %bb24
+ %94 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 3 ; [#uses=1]
+ store i32 %53, i32* %94, align 4
+ %95 = add i32 %53, %54 ; [#uses=2]
+ %96 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 4 ; [#uses=1]
+ store i32 %95, i32* %96, align 4
+ store i32 0, i32* %0, align 4
+ %97 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 5 ; [#uses=1]
+ invoke void @_ZN20btAlignedObjectArrayIjE6resizeEiRKj(%"struct.btAlignedObjectArray<int>"* %97, i32 %95, i32* %0) inlinehint
+ to label %invcont26 unwind label %lpad63
+
+invcont26: ; preds = %invcont25
+ %98 = load i32* %ovcount, align 4 ; [#uses=1]
+ %99 = shl i32 %98, 4 ; [#uses=1]
+ %100 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 2, i32 3 ; [#uses=1]
+ %101 = load %struct.btQuadWord** %100, align 4 ; [#uses=1]
+ %102 = bitcast %struct.btQuadWord* %101 to i8* ; [#uses=1]
+ %103 = bitcast %struct.btQuadWord* %60 to i8* ; [#uses=1]
+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* %102, i8* %103, i32 %99, i32 4, i1 false)
+ %104 = load i32* %12, align 8 ; [#uses=1]
+ %105 = icmp eq i32 %104, 0 ; [#uses=1]
+ br i1 %105, label %bb36, label %bb.nph128
+
+bb.nph128: ; preds = %invcont26
+ %106 = getelementptr inbounds %struct.HullResult* %result, i32 0, i32 5, i32 3 ; [#uses=1]
+ %107 = load i32** %106, align 4 ; [#uses=4]
+ br label %bb30
+
+bb30: ; preds = %bb30, %bb.nph128
+ %i29.0127 = phi i32 [ 0, %bb.nph128 ], [ %tmp139, %bb30 ] ; [#uses=3]
+ %tmp139 = add i32 %i29.0127, 1 ; [#uses=2]
+ %tmp140 = shl i32 %i29.0127, 2 ; [#uses=4]
+ %tmp141159 = or i32 %tmp140, 1 ; [#uses=1]
+ %scevgep142 = getelementptr i32* %107, i32 %tmp141159 ; [#uses=1]
+ %tmp143160 = or i32 %tmp140, 2 ; [#uses=1]
+ %scevgep144 = getelementptr i32* %107, i32 %tmp143160 ; [#uses=1]
+ %tmp145161 = or i32 %tmp140, 3 ; [#uses=1]
+ %scevgep146 = getelementptr i32* %107, i32 %tmp145161 ; [#uses=1]
+ %dest28.0126 = getelementptr i32* %107, i32 %tmp140 ; [#uses=1]
+ %tmp148 = mul i32 %i29.0127, 3 ; [#uses=3]
+ %tmp149 = add i32 %tmp148, 2 ; [#uses=1]
+ %scevgep150 = getelementptr i32* %59, i32 %tmp149 ; [#uses=2]
+ %tmp151 = add i32 %tmp148, 1 ; [#uses=1]
+ %scevgep152 = getelementptr i32* %59, i32 %tmp151 ; [#uses=1]
+ %source27.0125 = getelementptr i32* %59, i32 %tmp148 ; [#uses=2]
+ store i32 3, i32* %dest28.0126, align 4
+ %108 = load i32* %61, align 4 ; [#uses=1]
+ %.lobit119 = and i32 %108, 2 ; [#uses=1]
+ %toBool31 = icmp eq i32 %.lobit119, 0 ; [#uses=2]
+ %storemerge163.in = select i1 %toBool31, i32* %source27.0125, i32* %scevgep150 ; [#uses=1]
+ %storemerge.in = select i1 %toBool31, i32* %scevgep150, i32* %source27.0125 ; [#uses=1]
+ %storemerge163 = load i32* %storemerge163.in, align 4 ; [#uses=1]
+ store i32 %storemerge163, i32* %scevgep142, align 4
+ %storemerge162 = load i32* %scevgep152, align 4 ; [#uses=1]
+ store i32 %storemerge162, i32* %scevgep144, align 4
+ %storemerge = load i32* %storemerge.in, align 4 ; [#uses=1]
+ store i32 %storemerge, i32* %scevgep146, align 4
+ %109 = load i32* %12, align 8 ; [#uses=1]
+ %110 = icmp ugt i32 %109, %tmp139 ; [#uses=1]
+ br i1 %110, label %bb30, label %bb36
+
+bb36: ; preds = %bb30, %invcont26, %bb23, %bb21, %bb19
+ %111 = load i32* %8, align 4 ; [#uses=1]
+ %112 = icmp eq i32 %111, 0 ; [#uses=1]
+ br i1 %112, label %bb41, label %bb.i
+
+bb.i: ; preds = %bb36
+ %113 = icmp eq i32* %59, null ; [#uses=1]
+ br i1 %113, label %_ZN20btAlignedObjectArrayIjE5clearEv.exit.i, label %bb.i.i.i110
+
+bb.i.i.i110: ; preds = %bb.i
+ %114 = load i8* %6, align 8 ; [#uses=1]
+ %toBool.i.i.i109 = icmp eq i8 %114, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i109, label %bb2.i.i.i112, label %bb1.i.i.i111
+
+bb1.i.i.i111: ; preds = %bb.i.i.i110
+ %115 = bitcast i32* %59 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %115)
+ to label %bb2.i.i.i112 unwind label %lpad63
+
+bb2.i.i.i112: ; preds = %bb1.i.i.i111, %bb.i.i.i110
+ store i32* null, i32** %7, align 4
+ br label %_ZN20btAlignedObjectArrayIjE5clearEv.exit.i
+
+_ZN20btAlignedObjectArrayIjE5clearEv.exit.i: ; preds = %bb2.i.i.i112, %bb.i
+ store i8 1, i8* %6, align 8
+ store i32* null, i32** %7, align 4
+ store i32 0, i32* %8, align 4
+ store i32 0, i32* %9, align 8
+ br label %bb41
+
+bb41: ; preds = %_ZN20btAlignedObjectArrayIjE5clearEv.exit.i, %bb36
+ store i32 0, i32* %10, align 8
+ store i32 0, i32* %11, align 4
+ store %struct.btQuadWord* null, %struct.btQuadWord** %13, align 4
+ %116 = icmp eq %struct.btQuadWord* %60, null ; [#uses=1]
+ br i1 %116, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit108, label %bb.i.i.i104
+
+bb.i.i.i104: ; preds = %bb41
+ %117 = load i8* %55, align 8 ; [#uses=1]
+ %toBool.i.i.i103 = icmp eq i8 %117, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i103, label %bb2.i.i.i106, label %bb1.i.i.i105
+
+bb1.i.i.i105: ; preds = %bb.i.i.i104
+ %118 = bitcast %struct.btQuadWord* %60 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %118)
+ to label %bb2.i.i.i106 unwind label %lpad59
+
+bb2.i.i.i106: ; preds = %bb1.i.i.i105, %bb.i.i.i104
+ store %struct.btQuadWord* null, %struct.btQuadWord** %56, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit108
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit108: ; preds = %bb2.i.i.i106, %bb41
+ store i8 1, i8* %55, align 8
+ store %struct.btQuadWord* null, %struct.btQuadWord** %56, align 4
+ store i32 0, i32* %57, align 4
+ store i32 0, i32* %58, align 8
+ br label %bb43
+
+bb43: ; preds = %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit108, %.noexc118, %invcont3
+ %ret.0 = phi i32 [ 0, %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit108 ], [ 1, %invcont3 ], [ 1, %.noexc118 ] ; [#uses=2]
+ %119 = icmp eq %struct.btQuadWord* %23, null ; [#uses=1]
+ br i1 %119, label %bb55, label %bb.i.i.i98
+
+bb.i.i.i98: ; preds = %bb43
+ %120 = load i8* %16, align 8 ; [#uses=1]
+ %toBool.i.i.i97 = icmp eq i8 %120, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i97, label %bb2.i.i.i100, label %bb1.i.i.i99
+
+bb1.i.i.i99: ; preds = %bb.i.i.i98
+ %121 = bitcast %struct.btQuadWord* %23 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %121)
+ to label %bb2.i.i.i100 unwind label %lpad
+
+bb2.i.i.i100: ; preds = %bb1.i.i.i99, %bb.i.i.i98
+ store %struct.btQuadWord* null, %struct.btQuadWord** %17, align 4
+ br label %bb55
+
+invcont53: ; preds = %bb2.i.i.i.i, %ppad
+ call void @_Unwind_Resume_or_Rethrow(i8* %eh_exception.1)
+ unreachable
+
+bb55: ; preds = %bb2.i.i.i100, %bb43
+ store i8 1, i8* %16, align 8
+ store %struct.btQuadWord* null, %struct.btQuadWord** %17, align 4
+ store i32 0, i32* %18, align 4
+ store i32 0, i32* %19, align 8
+ %122 = load i32** %7, align 4 ; [#uses=2]
+ %123 = icmp eq i32* %122, null ; [#uses=1]
+ br i1 %123, label %_ZN11PHullResultD1Ev.exit96, label %bb.i.i.i.i93
+
+bb.i.i.i.i93: ; preds = %bb55
+ %124 = load i8* %6, align 8 ; [#uses=1]
+ %toBool.i.i.i.i92 = icmp eq i8 %124, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i92, label %bb2.i.i.i.i95, label %bb1.i.i.i.i94
+
+bb1.i.i.i.i94: ; preds = %bb.i.i.i.i93
+ %125 = bitcast i32* %122 to i8* ; [#uses=1]
+ call void @_Z21btAlignedFreeInternalPv(i8* %125)
+ br label %bb2.i.i.i.i95
+
+bb2.i.i.i.i95: ; preds = %bb1.i.i.i.i94, %bb.i.i.i.i93
+ store i32* null, i32** %7, align 4
+ ret i32 %ret.0
+
+_ZN11PHullResultD1Ev.exit96: ; preds = %bb55
+ ret i32 %ret.0
+
+lpad: ; preds = %bb1.i.i.i99
+ %eh_ptr = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select58 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad
+
+lpad59: ; preds = %bb1.i.i.i105, %bb7, %invcont2, %invcont.lpad59_crit_edge
+ %.pre = phi %struct.btQuadWord* [ %.pre.pre, %invcont.lpad59_crit_edge ], [ %23, %bb7 ], [ %23, %bb1.i.i.i105 ], [ %23, %invcont2 ] ; [#uses=1]
+ %eh_ptr60 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select62 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr60, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ br label %ppad79
+
+lpad63: ; preds = %bb1.i.i.i111, %invcont25, %bb24, %invcont16, %bb15, %invcont12, %invcont11.lpad63_crit_edge
+ %126 = phi %struct.btQuadWord* [ %.pre164, %invcont11.lpad63_crit_edge ], [ %60, %bb1.i.i.i111 ], [ %60, %invcont25 ], [ %60, %bb24 ], [ %60, %invcont16 ], [ %60, %bb15 ], [ %60, %invcont12 ] ; [#uses=2]
+ %eh_ptr64 = call i8* @llvm.eh.exception() ; [#uses=2]
+ %eh_select66 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr64, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 0) ; [#uses=0]
+ %127 = icmp eq %struct.btQuadWord* %126, null ; [#uses=1]
+ br i1 %127, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit91, label %bb.i.i.i87
+
+bb.i.i.i87: ; preds = %lpad63
+ %128 = load i8* %55, align 8 ; [#uses=1]
+ %toBool.i.i.i86 = icmp eq i8 %128, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i86, label %bb2.i.i.i89, label %bb1.i.i.i88
+
+bb1.i.i.i88: ; preds = %bb.i.i.i87
+ %129 = bitcast %struct.btQuadWord* %126 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %129)
+ to label %bb2.i.i.i89 unwind label %lpad67
+
+bb2.i.i.i89: ; preds = %bb1.i.i.i88, %bb.i.i.i87
+ store %struct.btQuadWord* null, %struct.btQuadWord** %56, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit91
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit91: ; preds = %bb2.i.i.i89, %lpad63
+ store i8 1, i8* %55, align 8
+ store %struct.btQuadWord* null, %struct.btQuadWord** %56, align 4
+ store i32 0, i32* %57, align 4
+ store i32 0, i32* %58, align 8
+ br label %ppad79
+
+lpad67: ; preds = %bb1.i.i.i88
+ %eh_ptr68 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select70 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr68, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad71: ; preds = %bb1.i.i.i
+ %eh_ptr72 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select74 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr72, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+lpad75: ; preds = %bb1.i.i.i.i
+ %eh_ptr76 = call i8* @llvm.eh.exception() ; [#uses=1]
+ %eh_select78 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr76, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1) ; [#uses=0]
+ call void @_ZSt9terminatev() noreturn nounwind
+ unreachable
+
+ppad: ; preds = %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit, %lpad
+ %eh_exception.1 = phi i8* [ %eh_ptr, %lpad ], [ %eh_exception.0, %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit ] ; [#uses=1]
+ %130 = load i32** %7, align 4 ; [#uses=2]
+ %131 = icmp eq i32* %130, null ; [#uses=1]
+ br i1 %131, label %invcont53, label %bb.i.i.i.i
+
+bb.i.i.i.i: ; preds = %ppad
+ %132 = load i8* %6, align 8 ; [#uses=1]
+ %toBool.i.i.i.i = icmp eq i8 %132, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i.i, label %bb2.i.i.i.i, label %bb1.i.i.i.i
+
+bb1.i.i.i.i: ; preds = %bb.i.i.i.i
+ %133 = bitcast i32* %130 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %133)
+ to label %bb2.i.i.i.i unwind label %lpad75
+
+bb2.i.i.i.i: ; preds = %bb1.i.i.i.i, %bb.i.i.i.i
+ store i32* null, i32** %7, align 4
+ br label %invcont53
+
+ppad79: ; preds = %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit91, %lpad59
+ %134 = phi %struct.btQuadWord* [ %.pre, %lpad59 ], [ %23, %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit91 ] ; [#uses=2]
+ %eh_exception.0 = phi i8* [ %eh_ptr60, %lpad59 ], [ %eh_ptr64, %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit91 ] ; [#uses=1]
+ %135 = icmp eq %struct.btQuadWord* %134, null ; [#uses=1]
+ br i1 %135, label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit, label %bb.i.i.i
+
+bb.i.i.i: ; preds = %ppad79
+ %136 = load i8* %16, align 8 ; [#uses=1]
+ %toBool.i.i.i = icmp eq i8 %136, 0 ; [#uses=1]
+ br i1 %toBool.i.i.i, label %bb2.i.i.i, label %bb1.i.i.i
+
+bb1.i.i.i: ; preds = %bb.i.i.i
+ %137 = bitcast %struct.btQuadWord* %134 to i8* ; [#uses=1]
+ invoke void @_Z21btAlignedFreeInternalPv(i8* %137)
+ to label %bb2.i.i.i unwind label %lpad71
+
+bb2.i.i.i: ; preds = %bb1.i.i.i, %bb.i.i.i
+ store %struct.btQuadWord* null, %struct.btQuadWord** %17, align 4
+ br label %_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit
+
+_ZN20btAlignedObjectArrayI9btVector3ED1Ev.exit: ; preds = %bb2.i.i.i, %ppad79
+ store i8 1, i8* %16, align 8
+ store %struct.btQuadWord* null, %struct.btQuadWord** %17, align 4
+ store i32 0, i32* %18, align 4
+ store i32 0, i32* %19, align 8
+ br label %ppad
+}
+
+; [#uses=0]
+define void @_Z21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_(%struct.btQuadWord* noalias nocapture sret %agg.result, %struct.btPlane* nocapture %plane, %struct.btQuadWord* nocapture %p0, %struct.btQuadWord* nocapture %p1) nounwind {
+entry:
+ %0 = load i8* bitcast (i64* @_ZGVZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif to i8*), align 8 ; [#uses=1]
+ %1 = icmp eq i8 %0, 0 ; [#uses=1]
+ br i1 %1, label %bb, label %bb2
+
+bb: ; preds = %entry
+ %2 = tail call i32 @__cxa_guard_acquire(i64* @_ZGVZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif) nounwind ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ tail call void @__cxa_guard_release(i64* @_ZGVZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb, %entry
+ %4 = getelementptr inbounds %struct.btQuadWord* %p1, i32 0, i32 0, i32 2 ; [#uses=1]
+ %5 = load float* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %p0, i32 0, i32 0, i32 2 ; [#uses=2]
+ %7 = load float* %6, align 4 ; [#uses=1]
+ %8 = fsub float %5, %7 ; [#uses=3]
+ %9 = getelementptr inbounds %struct.btQuadWord* %p1, i32 0, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btQuadWord* %p0, i32 0, i32 0, i32 1 ; [#uses=2]
+ %12 = load float* %11, align 4 ; [#uses=1]
+ %13 = fsub float %10, %12 ; [#uses=3]
+ %14 = getelementptr inbounds %struct.btQuadWord* %p1, i32 0, i32 0, i32 0 ; [#uses=1]
+ %15 = load float* %14, align 4 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.btQuadWord* %p0, i32 0, i32 0, i32 0 ; [#uses=2]
+ %17 = load float* %16, align 4 ; [#uses=1]
+ %18 = fsub float %15, %17 ; [#uses=3]
+ store float %18, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif, i32 0, i32 0, i32 0), align 8
+ store float %13, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif, i32 0, i32 0, i32 1), align 4
+ store float %8, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif, i32 0, i32 0, i32 3), align 4
+ %19 = getelementptr inbounds %struct.btPlane* %plane, i32 0, i32 0, i32 0, i32 0 ; [#uses=1]
+ %20 = load float* %19, align 4 ; [#uses=2]
+ %21 = fmul float %20, %18 ; [#uses=1]
+ %22 = getelementptr inbounds %struct.btPlane* %plane, i32 0, i32 0, i32 0, i32 1 ; [#uses=1]
+ %23 = load float* %22, align 4 ; [#uses=2]
+ %24 = fmul float %23, %13 ; [#uses=1]
+ %25 = fadd float %21, %24 ; [#uses=1]
+ %26 = getelementptr inbounds %struct.btPlane* %plane, i32 0, i32 0, i32 0, i32 2 ; [#uses=1]
+ %27 = load float* %26, align 4 ; [#uses=2]
+ %28 = fmul float %27, %8 ; [#uses=1]
+ %29 = fadd float %25, %28 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.btPlane* %plane, i32 0, i32 1 ; [#uses=1]
+ %31 = load float* %30, align 4 ; [#uses=1]
+ %32 = load float* %16, align 4 ; [#uses=2]
+ %33 = fmul float %20, %32 ; [#uses=1]
+ %34 = load float* %11, align 4 ; [#uses=2]
+ %35 = fmul float %23, %34 ; [#uses=1]
+ %36 = fadd float %33, %35 ; [#uses=1]
+ %37 = load float* %6, align 4 ; [#uses=2]
+ %38 = fmul float %27, %37 ; [#uses=1]
+ %39 = fadd float %36, %38 ; [#uses=1]
+ %40 = fadd float %31, %39 ; [#uses=1]
+ %41 = fsub float -0.000000e+00, %40 ; [#uses=1]
+ %42 = fdiv float %41, %29 ; [#uses=3]
+ %43 = fmul float %8, %42 ; [#uses=1]
+ %44 = fmul float %13, %42 ; [#uses=1]
+ %45 = fmul float %18, %42 ; [#uses=1]
+ %46 = fadd float %37, %43 ; [#uses=1]
+ %47 = fadd float %34, %44 ; [#uses=1]
+ %48 = fadd float %32, %45 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %48, float* %49, align 4
+ %50 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %47, float* %50, align 4
+ %51 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %46, float* %51, align 4
+ %52 = getelementptr inbounds %struct.btQuadWord* %agg.result, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %52, align 4
+ ret void
+}
+
+; [#uses=0]
+define float @_Z20DistanceBetweenLinesRK9btVector3S1_S1_S1_PS_S2_(%struct.btQuadWord* nocapture %ustart, %struct.btQuadWord* nocapture %udir, %struct.btQuadWord* nocapture %vstart, %struct.btQuadWord* nocapture %vdir, %struct.btQuadWord* %upoint, %struct.btQuadWord* %vpoint) nounwind {
+entry:
+ %0 = load i8* bitcast (i64* @_ZGVZ20DistanceBetweenLinesRK9btVector3S1_S1_S1_PS_S2_E2cp to i8*), align 8 ; [#uses=1]
+ %1 = icmp eq i8 %0, 0 ; [#uses=1]
+ br i1 %1, label %bb, label %bb2
+
+bb: ; preds = %entry
+ %2 = tail call i32 @__cxa_guard_acquire(i64* @_ZGVZ20DistanceBetweenLinesRK9btVector3S1_S1_S1_PS_S2_E2cp) nounwind ; [#uses=1]
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ tail call void @__cxa_guard_release(i64* @_ZGVZ20DistanceBetweenLinesRK9btVector3S1_S1_S1_PS_S2_E2cp) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb, %entry
+ %4 = getelementptr inbounds %struct.btQuadWord* %udir, i32 0, i32 0, i32 0 ; [#uses=3]
+ %5 = load float* %4, align 4 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %vdir, i32 0, i32 0, i32 1 ; [#uses=3]
+ %7 = load float* %6, align 4 ; [#uses=2]
+ %8 = fmul float %5, %7 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.btQuadWord* %udir, i32 0, i32 0, i32 1 ; [#uses=3]
+ %10 = load float* %9, align 4 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btQuadWord* %vdir, i32 0, i32 0, i32 0 ; [#uses=3]
+ %12 = load float* %11, align 4 ; [#uses=2]
+ %13 = fmul float %10, %12 ; [#uses=1]
+ %14 = fsub float %8, %13 ; [#uses=3]
+ %15 = getelementptr inbounds %struct.btQuadWord* %udir, i32 0, i32 0, i32 2 ; [#uses=3]
+ %16 = load float* %15, align 4 ; [#uses=2]
+ %17 = fmul float %16, %12 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btQuadWord* %vdir, i32 0, i32 0, i32 2 ; [#uses=3]
+ %19 = load float* %18, align 4 ; [#uses=2]
+ %20 = fmul float %5, %19 ; [#uses=1]
+ %21 = fsub float %17, %20 ; [#uses=3]
+ %22 = fmul float %10, %19 ; [#uses=1]
+ %23 = fmul float %16, %7 ; [#uses=1]
+ %24 = fsub float %22, %23 ; [#uses=3]
+ %25 = fmul float %24, %24 ; [#uses=1]
+ %26 = fmul float %21, %21 ; [#uses=1]
+ %27 = fadd float %25, %26 ; [#uses=1]
+ %28 = fmul float %14, %14 ; [#uses=1]
+ %29 = fadd float %27, %28 ; [#uses=1]
+ %30 = tail call float @sqrtf(float %29) nounwind readonly ; [#uses=1]
+ %31 = fdiv float 1.000000e+00, %30 ; [#uses=3]
+ %32 = fmul float %14, %31 ; [#uses=5]
+ %33 = fmul float %21, %31 ; [#uses=5]
+ %34 = fmul float %24, %31 ; [#uses=5]
+ store float %34, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ20DistanceBetweenLinesRK9btVector3S1_S1_S1_PS_S2_E2cp, i32 0, i32 0, i32 0), align 8
+ store float %33, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ20DistanceBetweenLinesRK9btVector3S1_S1_S1_PS_S2_E2cp, i32 0, i32 0, i32 1), align 4
+ store float %32, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ20DistanceBetweenLinesRK9btVector3S1_S1_S1_PS_S2_E2cp, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ20DistanceBetweenLinesRK9btVector3S1_S1_S1_PS_S2_E2cp, i32 0, i32 0, i32 3), align 4
+ %35 = getelementptr inbounds %struct.btQuadWord* %ustart, i32 0, i32 0, i32 0 ; [#uses=4]
+ %36 = load float* %35, align 4 ; [#uses=2]
+ %37 = fmul float %34, %36 ; [#uses=1]
+ %38 = getelementptr inbounds %struct.btQuadWord* %ustart, i32 0, i32 0, i32 1 ; [#uses=4]
+ %39 = load float* %38, align 4 ; [#uses=2]
+ %40 = fmul float %33, %39 ; [#uses=1]
+ %41 = fadd float %37, %40 ; [#uses=1]
+ %42 = getelementptr inbounds %struct.btQuadWord* %ustart, i32 0, i32 0, i32 2 ; [#uses=4]
+ %43 = load float* %42, align 4 ; [#uses=2]
+ %44 = fmul float %32, %43 ; [#uses=1]
+ %45 = fadd float %41, %44 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.btQuadWord* %vstart, i32 0, i32 0, i32 0 ; [#uses=4]
+ %47 = load float* %46, align 4 ; [#uses=2]
+ %48 = fmul float %34, %47 ; [#uses=1]
+ %49 = getelementptr inbounds %struct.btQuadWord* %vstart, i32 0, i32 0, i32 1 ; [#uses=4]
+ %50 = load float* %49, align 4 ; [#uses=2]
+ %51 = fmul float %33, %50 ; [#uses=1]
+ %52 = fadd float %48, %51 ; [#uses=1]
+ %53 = getelementptr inbounds %struct.btQuadWord* %vstart, i32 0, i32 0, i32 2 ; [#uses=4]
+ %54 = load float* %53, align 4 ; [#uses=2]
+ %55 = fmul float %32, %54 ; [#uses=1]
+ %56 = fadd float %52, %55 ; [#uses=1]
+ %57 = fsub float %56, %45 ; [#uses=1]
+ %58 = tail call float @fabsf(float %57) nounwind readnone ; [#uses=2]
+ %59 = icmp eq %struct.btQuadWord* %upoint, null ; [#uses=1]
+ br i1 %59, label %bb7, label %bb3
+
+bb3: ; preds = %bb2
+ %60 = load float* %11, align 4 ; [#uses=2]
+ %61 = fmul float %60, %33 ; [#uses=1]
+ %62 = load float* %6, align 4 ; [#uses=2]
+ %63 = fmul float %62, %34 ; [#uses=1]
+ %64 = fsub float %61, %63 ; [#uses=3]
+ %65 = load float* %18, align 4 ; [#uses=2]
+ %66 = fmul float %65, %34 ; [#uses=1]
+ %67 = fmul float %60, %32 ; [#uses=1]
+ %68 = fsub float %66, %67 ; [#uses=3]
+ %69 = fmul float %62, %32 ; [#uses=1]
+ %70 = fmul float %65, %33 ; [#uses=1]
+ %71 = fsub float %69, %70 ; [#uses=3]
+ %72 = fmul float %71, %71 ; [#uses=1]
+ %73 = fmul float %68, %68 ; [#uses=1]
+ %74 = fadd float %72, %73 ; [#uses=1]
+ %75 = fmul float %64, %64 ; [#uses=1]
+ %76 = fadd float %74, %75 ; [#uses=1]
+ %77 = tail call float @sqrtf(float %76) nounwind readonly ; [#uses=1]
+ %78 = fdiv float 1.000000e+00, %77 ; [#uses=3]
+ %79 = fmul float %64, %78 ; [#uses=3]
+ %80 = fmul float %68, %78 ; [#uses=3]
+ %81 = fmul float %71, %78 ; [#uses=3]
+ %82 = fmul float %81, %47 ; [#uses=1]
+ %83 = fmul float %80, %50 ; [#uses=1]
+ %84 = fadd float %82, %83 ; [#uses=1]
+ %85 = fmul float %79, %54 ; [#uses=1]
+ %86 = fadd float %84, %85 ; [#uses=1]
+ %87 = load float* %15, align 4 ; [#uses=1]
+ %88 = fadd float %43, %87 ; [#uses=1]
+ %89 = load float* %9, align 4 ; [#uses=1]
+ %90 = fadd float %39, %89 ; [#uses=1]
+ %91 = load float* %4, align 4 ; [#uses=1]
+ %92 = fadd float %36, %91 ; [#uses=1]
+ %93 = load i8* bitcast (i64* @_ZGVZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif to i8*), align 8 ; [#uses=1]
+ %94 = icmp eq i8 %93, 0 ; [#uses=1]
+ br i1 %94, label %bb.i15, label %_Z21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_.exit17
+
+bb.i15: ; preds = %bb3
+ %95 = tail call i32 @__cxa_guard_acquire(i64* @_ZGVZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif) nounwind ; [#uses=1]
+ %96 = icmp eq i32 %95, 0 ; [#uses=1]
+ br i1 %96, label %_Z21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_.exit17, label %bb1.i16
+
+bb1.i16: ; preds = %bb.i15
+ tail call void @__cxa_guard_release(i64* @_ZGVZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif) nounwind
+ br label %_Z21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_.exit17
+
+_Z21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_.exit17: ; preds = %bb1.i16, %bb.i15, %bb3
+ %97 = load float* %42, align 4 ; [#uses=1]
+ %98 = fsub float %88, %97 ; [#uses=3]
+ %99 = load float* %38, align 4 ; [#uses=1]
+ %100 = fsub float %90, %99 ; [#uses=3]
+ %101 = load float* %35, align 4 ; [#uses=1]
+ %102 = fsub float %92, %101 ; [#uses=3]
+ store float %102, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif, i32 0, i32 0, i32 0), align 8
+ store float %100, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif, i32 0, i32 0, i32 1), align 4
+ store float %98, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif, i32 0, i32 0, i32 3), align 4
+ %103 = fmul float %81, %102 ; [#uses=1]
+ %104 = fmul float %80, %100 ; [#uses=1]
+ %105 = fadd float %103, %104 ; [#uses=1]
+ %106 = fmul float %79, %98 ; [#uses=1]
+ %107 = fadd float %105, %106 ; [#uses=1]
+ %108 = load float* %35, align 4 ; [#uses=2]
+ %109 = fmul float %81, %108 ; [#uses=1]
+ %110 = load float* %38, align 4 ; [#uses=2]
+ %111 = fmul float %80, %110 ; [#uses=1]
+ %112 = fadd float %109, %111 ; [#uses=1]
+ %113 = load float* %42, align 4 ; [#uses=2]
+ %114 = fmul float %79, %113 ; [#uses=1]
+ %115 = fadd float %112, %114 ; [#uses=1]
+ %116 = fsub float %115, %86 ; [#uses=1]
+ %117 = fsub float -0.000000e+00, %116 ; [#uses=1]
+ %118 = fdiv float %117, %107 ; [#uses=3]
+ %119 = fmul float %98, %118 ; [#uses=1]
+ %120 = fmul float %100, %118 ; [#uses=1]
+ %121 = fmul float %102, %118 ; [#uses=1]
+ %122 = fadd float %113, %119 ; [#uses=1]
+ %123 = fadd float %110, %120 ; [#uses=1]
+ %124 = fadd float %108, %121 ; [#uses=1]
+ %125 = getelementptr inbounds %struct.btQuadWord* %upoint, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %124, float* %125, align 4
+ %126 = getelementptr inbounds %struct.btQuadWord* %upoint, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %123, float* %126, align 4
+ %127 = getelementptr inbounds %struct.btQuadWord* %upoint, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %122, float* %127, align 4
+ %128 = getelementptr inbounds %struct.btQuadWord* %upoint, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %128, align 4
+ br label %bb7
+
+bb7: ; preds = %_Z21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_.exit17, %bb2
+ %129 = icmp eq %struct.btQuadWord* %vpoint, null ; [#uses=1]
+ br i1 %129, label %bb13, label %bb8
+
+bb8: ; preds = %bb7
+ %130 = load float* %4, align 4 ; [#uses=2]
+ %131 = load float* getelementptr inbounds (%struct.btQuadWord* @_ZZ20DistanceBetweenLinesRK9btVector3S1_S1_S1_PS_S2_E2cp, i32 0, i32 0, i32 1), align 4 ; [#uses=2]
+ %132 = fmul float %130, %131 ; [#uses=1]
+ %133 = load float* %9, align 4 ; [#uses=2]
+ %134 = load float* getelementptr inbounds (%struct.btQuadWord* @_ZZ20DistanceBetweenLinesRK9btVector3S1_S1_S1_PS_S2_E2cp, i32 0, i32 0, i32 0), align 8 ; [#uses=2]
+ %135 = fmul float %133, %134 ; [#uses=1]
+ %136 = fsub float %132, %135 ; [#uses=3]
+ %137 = load float* %15, align 4 ; [#uses=2]
+ %138 = fmul float %137, %134 ; [#uses=1]
+ %139 = load float* getelementptr inbounds (%struct.btQuadWord* @_ZZ20DistanceBetweenLinesRK9btVector3S1_S1_S1_PS_S2_E2cp, i32 0, i32 0, i32 2), align 8 ; [#uses=2]
+ %140 = fmul float %130, %139 ; [#uses=1]
+ %141 = fsub float %138, %140 ; [#uses=3]
+ %142 = fmul float %133, %139 ; [#uses=1]
+ %143 = fmul float %137, %131 ; [#uses=1]
+ %144 = fsub float %142, %143 ; [#uses=3]
+ %145 = fmul float %144, %144 ; [#uses=1]
+ %146 = fmul float %141, %141 ; [#uses=1]
+ %147 = fadd float %145, %146 ; [#uses=1]
+ %148 = fmul float %136, %136 ; [#uses=1]
+ %149 = fadd float %147, %148 ; [#uses=1]
+ %150 = tail call float @sqrtf(float %149) nounwind readonly ; [#uses=1]
+ %151 = fdiv float 1.000000e+00, %150 ; [#uses=3]
+ %152 = fmul float %136, %151 ; [#uses=3]
+ %153 = fmul float %141, %151 ; [#uses=3]
+ %154 = fmul float %144, %151 ; [#uses=3]
+ %155 = load float* %35, align 4 ; [#uses=1]
+ %156 = fmul float %154, %155 ; [#uses=1]
+ %157 = load float* %38, align 4 ; [#uses=1]
+ %158 = fmul float %153, %157 ; [#uses=1]
+ %159 = fadd float %156, %158 ; [#uses=1]
+ %160 = load float* %42, align 4 ; [#uses=1]
+ %161 = fmul float %152, %160 ; [#uses=1]
+ %162 = fadd float %159, %161 ; [#uses=1]
+ %163 = load float* %53, align 4 ; [#uses=1]
+ %164 = load float* %18, align 4 ; [#uses=1]
+ %165 = fadd float %163, %164 ; [#uses=1]
+ %166 = load float* %49, align 4 ; [#uses=1]
+ %167 = load float* %6, align 4 ; [#uses=1]
+ %168 = fadd float %166, %167 ; [#uses=1]
+ %169 = load float* %46, align 4 ; [#uses=1]
+ %170 = load float* %11, align 4 ; [#uses=1]
+ %171 = fadd float %169, %170 ; [#uses=1]
+ %172 = load i8* bitcast (i64* @_ZGVZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif to i8*), align 8 ; [#uses=1]
+ %173 = icmp eq i8 %172, 0 ; [#uses=1]
+ br i1 %173, label %bb.i, label %_Z21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_.exit
+
+bb.i: ; preds = %bb8
+ %174 = tail call i32 @__cxa_guard_acquire(i64* @_ZGVZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif) nounwind ; [#uses=1]
+ %175 = icmp eq i32 %174, 0 ; [#uses=1]
+ br i1 %175, label %_Z21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_.exit, label %bb1.i
+
+bb1.i: ; preds = %bb.i
+ tail call void @__cxa_guard_release(i64* @_ZGVZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif) nounwind
+ br label %_Z21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_.exit
+
+_Z21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_.exit: ; preds = %bb1.i, %bb.i, %bb8
+ %176 = load float* %53, align 4 ; [#uses=1]
+ %177 = fsub float %165, %176 ; [#uses=3]
+ %178 = load float* %49, align 4 ; [#uses=1]
+ %179 = fsub float %168, %178 ; [#uses=3]
+ %180 = load float* %46, align 4 ; [#uses=1]
+ %181 = fsub float %171, %180 ; [#uses=3]
+ store float %181, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif, i32 0, i32 0, i32 0), align 8
+ store float %179, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif, i32 0, i32 0, i32 1), align 4
+ store float %177, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif, i32 0, i32 0, i32 2), align 8
+ store float 0.000000e+00, float* getelementptr inbounds (%struct.btQuadWord* @_ZZ21PlaneLineIntersectionRK7btPlaneRK9btVector3S4_E3dif, i32 0, i32 0, i32 3), align 4
+ %182 = fmul float %154, %181 ; [#uses=1]
+ %183 = fmul float %153, %179 ; [#uses=1]
+ %184 = fadd float %182, %183 ; [#uses=1]
+ %185 = fmul float %152, %177 ; [#uses=1]
+ %186 = fadd float %184, %185 ; [#uses=1]
+ %187 = load float* %46, align 4 ; [#uses=2]
+ %188 = fmul float %154, %187 ; [#uses=1]
+ %189 = load float* %49, align 4 ; [#uses=2]
+ %190 = fmul float %153, %189 ; [#uses=1]
+ %191 = fadd float %188, %190 ; [#uses=1]
+ %192 = load float* %53, align 4 ; [#uses=2]
+ %193 = fmul float %152, %192 ; [#uses=1]
+ %194 = fadd float %191, %193 ; [#uses=1]
+ %195 = fsub float %194, %162 ; [#uses=1]
+ %196 = fsub float -0.000000e+00, %195 ; [#uses=1]
+ %197 = fdiv float %196, %186 ; [#uses=3]
+ %198 = fmul float %177, %197 ; [#uses=1]
+ %199 = fmul float %179, %197 ; [#uses=1]
+ %200 = fmul float %181, %197 ; [#uses=1]
+ %201 = fadd float %192, %198 ; [#uses=1]
+ %202 = fadd float %189, %199 ; [#uses=1]
+ %203 = fadd float %187, %200 ; [#uses=1]
+ %204 = getelementptr inbounds %struct.btQuadWord* %vpoint, i32 0, i32 0, i32 0 ; [#uses=1]
+ store float %203, float* %204, align 4
+ %205 = getelementptr inbounds %struct.btQuadWord* %vpoint, i32 0, i32 0, i32 1 ; [#uses=1]
+ store float %202, float* %205, align 4
+ %206 = getelementptr inbounds %struct.btQuadWord* %vpoint, i32 0, i32 0, i32 2 ; [#uses=1]
+ store float %201, float* %206, align 4
+ %207 = getelementptr inbounds %struct.btQuadWord* %vpoint, i32 0, i32 0, i32 3 ; [#uses=1]
+ store float 0.000000e+00, float* %207, align 4
+ ret float %58
+
+bb13: ; preds = %bb7
+ ret float %58
+}
+
+; [#uses=0]
+define void @btBulletMathProbe() nounwind readnone {
+entry:
+ ret void
+}
+
+; [#uses=0]
+define zeroext i8 @_Z8notExistRK9btVector3RK20btAlignedObjectArrayIS_E(%struct.btQuadWord* nocapture %planeEquation, %"struct.btAlignedObjectArray<btVector3>"* nocapture %planeEquations) nounwind readonly {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %planeEquations, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %planeEquations, i32 0, i32 3 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %planeEquation, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %planeEquation, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %planeEquation, i32 0, i32 0, i32 2 ; [#uses=1]
+ br label %bb3
+
+bb: ; preds = %bb3
+ %6 = load %struct.btQuadWord** %2, align 4 ; [#uses=3]
+ %7 = load float* %3, align 4 ; [#uses=1]
+ %scevgep910 = getelementptr inbounds %struct.btQuadWord* %6, i32 %20, i32 0, i32 0 ; [#uses=1]
+ %8 = load float* %scevgep910, align 4 ; [#uses=1]
+ %9 = fmul float %7, %8 ; [#uses=1]
+ %10 = load float* %4, align 4 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btQuadWord* %6, i32 %20, i32 0, i32 1 ; [#uses=1]
+ %11 = load float* %scevgep8, align 4 ; [#uses=1]
+ %12 = fmul float %10, %11 ; [#uses=1]
+ %13 = fadd float %9, %12 ; [#uses=1]
+ %14 = load float* %5, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btQuadWord* %6, i32 %20, i32 0, i32 2 ; [#uses=1]
+ %15 = load float* %scevgep, align 4 ; [#uses=1]
+ %16 = fmul float %14, %15 ; [#uses=1]
+ %17 = fadd float %13, %16 ; [#uses=1]
+ %18 = fcmp ogt float %17, 0x3FEFF7CEE0000000 ; [#uses=1]
+ br i1 %18, label %bb5, label %bb2
+
+bb2: ; preds = %bb
+ %19 = add nsw i32 %20, 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %entry
+ %20 = phi i32 [ 0, %entry ], [ %19, %bb2 ] ; [#uses=5]
+ %21 = icmp slt i32 %20, %1 ; [#uses=1]
+ br i1 %21, label %bb, label %bb5
+
+bb5: ; preds = %bb3, %bb
+ %.0 = phi i8 [ 0, %bb ], [ 1, %bb3 ] ; [#uses=1]
+ ret i8 %.0
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN14btGeometryUtil22areVerticesBehindPlaneERK9btVector3RK20btAlignedObjectArrayIS0_Ef(%struct.btQuadWord* nocapture %planeNormal, %"struct.btAlignedObjectArray<btVector3>"* nocapture %vertices, float %margin) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %vertices, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %vertices, i32 0, i32 3 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 2 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %planeNormal, i32 0, i32 0, i32 3 ; [#uses=1]
+ br label %bb3
+
+bb: ; preds = %bb3
+ %7 = load %struct.btQuadWord** %2, align 4 ; [#uses=3]
+ %8 = load float* %3, align 4 ; [#uses=1]
+ %scevgep910 = getelementptr inbounds %struct.btQuadWord* %7, i32 %24, i32 0, i32 0 ; [#uses=1]
+ %9 = load float* %scevgep910, align 4 ; [#uses=1]
+ %10 = fmul float %8, %9 ; [#uses=1]
+ %11 = load float* %4, align 4 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btQuadWord* %7, i32 %24, i32 0, i32 1 ; [#uses=1]
+ %12 = load float* %scevgep8, align 4 ; [#uses=1]
+ %13 = fmul float %11, %12 ; [#uses=1]
+ %14 = fadd float %10, %13 ; [#uses=1]
+ %15 = load float* %5, align 4 ; [#uses=1]
+ %scevgep = getelementptr %struct.btQuadWord* %7, i32 %24, i32 0, i32 2 ; [#uses=1]
+ %16 = load float* %scevgep, align 4 ; [#uses=1]
+ %17 = fmul float %15, %16 ; [#uses=1]
+ %18 = fadd float %14, %17 ; [#uses=1]
+ %19 = load float* %6, align 4 ; [#uses=1]
+ %20 = fadd float %18, %19 ; [#uses=1]
+ %21 = fsub float %20, %margin ; [#uses=1]
+ %22 = fcmp ogt float %21, 0.000000e+00 ; [#uses=1]
+ br i1 %22, label %bb5, label %bb2
+
+bb2: ; preds = %bb
+ %23 = add nsw i32 %24, 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %entry
+ %24 = phi i32 [ 0, %entry ], [ %23, %bb2 ] ; [#uses=5]
+ %25 = icmp slt i32 %24, %1 ; [#uses=1]
+ br i1 %25, label %bb, label %bb5
+
+bb5: ; preds = %bb3, %bb
+ %.0 = phi i8 [ 0, %bb ], [ 1, %bb3 ] ; [#uses=1]
+ ret i8 %.0
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN14btGeometryUtil19isPointInsidePlanesERK20btAlignedObjectArrayI9btVector3ERKS1_f(%"struct.btAlignedObjectArray<btVector3>"* nocapture %planeEquations, %struct.btQuadWord* nocapture %point, float %margin) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %planeEquations, i32 0, i32 1 ; [#uses=1]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %planeEquations, i32 0, i32 3 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 0 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 1 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %point, i32 0, i32 0, i32 2 ; [#uses=1]
+ br label %bb3
+
+bb: ; preds = %bb3
+ %6 = load %struct.btQuadWord** %2, align 4 ; [#uses=4]
+ %scevgep1011 = getelementptr inbounds %struct.btQuadWord* %6, i32 %23, i32 0, i32 0 ; [#uses=1]
+ %7 = load float* %scevgep1011, align 4 ; [#uses=1]
+ %8 = load float* %3, align 4 ; [#uses=1]
+ %9 = fmul float %7, %8 ; [#uses=1]
+ %scevgep9 = getelementptr %struct.btQuadWord* %6, i32 %23, i32 0, i32 1 ; [#uses=1]
+ %10 = load float* %scevgep9, align 4 ; [#uses=1]
+ %11 = load float* %4, align 4 ; [#uses=1]
+ %12 = fmul float %10, %11 ; [#uses=1]
+ %13 = fadd float %9, %12 ; [#uses=1]
+ %scevgep8 = getelementptr %struct.btQuadWord* %6, i32 %23, i32 0, i32 2 ; [#uses=1]
+ %14 = load float* %scevgep8, align 4 ; [#uses=1]
+ %15 = load float* %5, align 4 ; [#uses=1]
+ %16 = fmul float %14, %15 ; [#uses=1]
+ %17 = fadd float %13, %16 ; [#uses=1]
+ %scevgep = getelementptr %struct.btQuadWord* %6, i32 %23, i32 0, i32 3 ; [#uses=1]
+ %18 = load float* %scevgep, align 4 ; [#uses=1]
+ %19 = fadd float %17, %18 ; [#uses=1]
+ %20 = fsub float %19, %margin ; [#uses=1]
+ %21 = fcmp ogt float %20, 0.000000e+00 ; [#uses=1]
+ br i1 %21, label %bb5, label %bb2
+
+bb2: ; preds = %bb
+ %22 = add nsw i32 %23, 1 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %entry
+ %23 = phi i32 [ 0, %entry ], [ %22, %bb2 ] ; [#uses=6]
+ %24 = icmp slt i32 %23, %1 ; [#uses=1]
+ br i1 %24, label %bb, label %bb5
+
+bb5: ; preds = %bb3, %bb
+ %.0 = phi i8 [ 0, %bb ], [ 1, %bb3 ] ; [#uses=1]
+ ret i8 %.0
+}
+
+; [#uses=0]
+define void @_ZN14btGeometryUtil29getVerticesFromPlaneEquationsERK20btAlignedObjectArrayI9btVector3ERS2_(%"struct.btAlignedObjectArray<btVector3>"* nocapture %planeEquations, %"struct.btAlignedObjectArray<btVector3>"* nocapture %verticesOut) align 2 {
+entry:
+ %potentialVertex = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %planeEquations, i32 0, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph49, label %return
+
+bb.nph49: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %planeEquations, i32 0, i32 3 ; [#uses=3]
+ %4 = getelementptr inbounds %struct.btQuadWord* %potentialVertex, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = getelementptr inbounds %struct.btQuadWord* %potentialVertex, i32 0, i32 0, i32 1 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btQuadWord* %potentialVertex, i32 0, i32 0, i32 2 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btQuadWord* %potentialVertex, i32 0, i32 0, i32 3 ; [#uses=1]
+ %tmp54 = add i32 %1, -2 ; [#uses=1]
+ %tmp70 = add i32 %1, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb21, %bb.nph49
+ %i.048 = phi i32 [ 0, %bb.nph49 ], [ %j.044, %bb21 ] ; [#uses=8]
+ %j.044 = add i32 %i.048, 1 ; [#uses=4]
+ %tmp102 = add i32 %i.048, 2 ; [#uses=1]
+ %tmp116 = sub i32 %tmp54, %i.048 ; [#uses=1]
+ %tmp71 = sub i32 %tmp70, %i.048 ; [#uses=1]
+ %8 = load %struct.btQuadWord** %3, align 4 ; [#uses=4]
+ %9 = icmp slt i32 %j.044, %1 ; [#uses=1]
+ br i1 %9, label %bb.nph47, label %bb21
+
+bb.nph47: ; preds = %bb
+ %scevgep119 = getelementptr %struct.btQuadWord* %8, i32 %i.048, i32 0, i32 1 ; [#uses=1]
+ %scevgep120121 = getelementptr inbounds %struct.btQuadWord* %8, i32 %i.048, i32 0, i32 0 ; [#uses=1]
+ %scevgep122 = getelementptr %struct.btQuadWord* %8, i32 %i.048, i32 0, i32 2 ; [#uses=1]
+ %scevgep123 = getelementptr %struct.btQuadWord* %8, i32 %i.048, i32 0, i32 3 ; [#uses=1]
+ br label %bb1
+
+bb1: ; preds = %bb20.loopexit, %bb.nph47
+ %indvar51 = phi i32 [ 0, %bb.nph47 ], [ %indvar.next52, %bb20.loopexit ] ; [#uses=4]
+ %tmp96 = add i32 %j.044, %indvar51 ; [#uses=4]
+ %tmp74 = add i32 %tmp102, %indvar51 ; [#uses=2]
+ %tmp56 = sub i32 %tmp116, %indvar51 ; [#uses=1]
+ %10 = load %struct.btQuadWord** %3, align 4 ; [#uses=4]
+ %11 = icmp slt i32 %tmp74, %1 ; [#uses=1]
+ br i1 %11, label %bb.nph, label %bb20.loopexit
+
+bb.nph: ; preds = %bb1
+ %scevgep94 = getelementptr %struct.btQuadWord* %10, i32 %tmp96, i32 0, i32 3 ; [#uses=1]
+ %scevgep93 = getelementptr %struct.btQuadWord* %10, i32 %tmp96, i32 0, i32 2 ; [#uses=1]
+ %scevgep92 = getelementptr %struct.btQuadWord* %10, i32 %tmp96, i32 0, i32 1 ; [#uses=1]
+ %scevgep9091 = getelementptr inbounds %struct.btQuadWord* %10, i32 %tmp96, i32 0, i32 0 ; [#uses=1]
+ br label %bb2
+
+bb2: ; preds = %bb17, %bb.nph
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb17 ] ; [#uses=2]
+ %tmp104 = add i32 %tmp74, %indvar ; [#uses=4]
+ %12 = load %struct.btQuadWord** %3, align 4 ; [#uses=8]
+ %13 = load float* %scevgep9091, align 4 ; [#uses=4]
+ %scevgep60 = getelementptr %struct.btQuadWord* %12, i32 %tmp104, i32 0, i32 1 ; [#uses=1]
+ %14 = load float* %scevgep60, align 4 ; [#uses=4]
+ %15 = fmul float %13, %14 ; [#uses=1]
+ %16 = load float* %scevgep92, align 4 ; [#uses=4]
+ %scevgep6162 = getelementptr inbounds %struct.btQuadWord* %12, i32 %tmp104, i32 0, i32 0 ; [#uses=1]
+ %17 = load float* %scevgep6162, align 4 ; [#uses=4]
+ %18 = fmul float %16, %17 ; [#uses=1]
+ %19 = fsub float %15, %18 ; [#uses=4]
+ %20 = load float* %scevgep93, align 4 ; [#uses=4]
+ %21 = fmul float %20, %17 ; [#uses=1]
+ %scevgep63 = getelementptr %struct.btQuadWord* %12, i32 %tmp104, i32 0, i32 2 ; [#uses=1]
+ %22 = load float* %scevgep63, align 4 ; [#uses=4]
+ %23 = fmul float %13, %22 ; [#uses=1]
+ %24 = fsub float %21, %23 ; [#uses=4]
+ %25 = fmul float %16, %22 ; [#uses=1]
+ %26 = fmul float %20, %14 ; [#uses=1]
+ %27 = fsub float %25, %26 ; [#uses=4]
+ %28 = load float* %scevgep119, align 4 ; [#uses=5]
+ %29 = fmul float %17, %28 ; [#uses=1]
+ %30 = load float* %scevgep120121, align 4 ; [#uses=5]
+ %31 = fmul float %14, %30 ; [#uses=1]
+ %32 = fsub float %29, %31 ; [#uses=3]
+ %33 = fmul float %22, %30 ; [#uses=1]
+ %34 = load float* %scevgep122, align 4 ; [#uses=5]
+ %35 = fmul float %17, %34 ; [#uses=1]
+ %36 = fsub float %33, %35 ; [#uses=3]
+ %37 = fmul float %14, %34 ; [#uses=1]
+ %38 = fmul float %22, %28 ; [#uses=1]
+ %39 = fsub float %37, %38 ; [#uses=3]
+ %40 = fmul float %30, %16 ; [#uses=1]
+ %41 = fmul float %28, %13 ; [#uses=1]
+ %42 = fsub float %40, %41 ; [#uses=3]
+ %43 = fmul float %34, %13 ; [#uses=1]
+ %44 = fmul float %30, %20 ; [#uses=1]
+ %45 = fsub float %43, %44 ; [#uses=3]
+ %46 = fmul float %28, %20 ; [#uses=1]
+ %47 = fmul float %34, %16 ; [#uses=1]
+ %48 = fsub float %46, %47 ; [#uses=3]
+ %49 = fmul float %27, %27 ; [#uses=1]
+ %50 = fmul float %24, %24 ; [#uses=1]
+ %51 = fadd float %49, %50 ; [#uses=1]
+ %52 = fmul float %19, %19 ; [#uses=1]
+ %53 = fadd float %51, %52 ; [#uses=1]
+ %54 = fcmp ule float %53, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %54, label %bb17, label %bb5
+
+bb5: ; preds = %bb2
+ %55 = fmul float %39, %39 ; [#uses=1]
+ %56 = fmul float %36, %36 ; [#uses=1]
+ %57 = fadd float %55, %56 ; [#uses=1]
+ %58 = fmul float %32, %32 ; [#uses=1]
+ %59 = fadd float %57, %58 ; [#uses=1]
+ %60 = fcmp ule float %59, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %60, label %bb17, label %bb6
+
+bb6: ; preds = %bb5
+ %61 = fmul float %48, %48 ; [#uses=1]
+ %62 = fmul float %45, %45 ; [#uses=1]
+ %63 = fadd float %61, %62 ; [#uses=1]
+ %64 = fmul float %42, %42 ; [#uses=1]
+ %65 = fadd float %63, %64 ; [#uses=1]
+ %66 = fcmp ule float %65, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %66, label %bb17, label %bb10
+
+bb10: ; preds = %bb6
+ %67 = fmul float %30, %27 ; [#uses=1]
+ %68 = fmul float %28, %24 ; [#uses=1]
+ %69 = fadd float %67, %68 ; [#uses=1]
+ %70 = fmul float %34, %19 ; [#uses=1]
+ %71 = fadd float %69, %70 ; [#uses=2]
+ %72 = call float @fabsf(float %71) nounwind readnone ; [#uses=1]
+ %73 = fcmp ogt float %72, 0x3EB0C6F7A0000000 ; [#uses=1]
+ br i1 %73, label %bb13, label %bb17
+
+bb13: ; preds = %bb10
+ %74 = fdiv float -1.000000e+00, %71 ; [#uses=3]
+ %75 = load float* %scevgep123, align 4 ; [#uses=3]
+ %76 = fmul float %27, %75 ; [#uses=1]
+ %77 = fmul float %24, %75 ; [#uses=1]
+ %78 = fmul float %19, %75 ; [#uses=1]
+ %79 = load float* %scevgep94, align 4 ; [#uses=3]
+ %80 = fmul float %39, %79 ; [#uses=1]
+ %81 = fmul float %36, %79 ; [#uses=1]
+ %82 = fmul float %32, %79 ; [#uses=1]
+ %scevgep68 = getelementptr %struct.btQuadWord* %12, i32 %tmp104, i32 0, i32 3 ; [#uses=1]
+ %83 = load float* %scevgep68, align 4 ; [#uses=3]
+ %84 = fmul float %48, %83 ; [#uses=1]
+ %85 = fmul float %45, %83 ; [#uses=1]
+ %86 = fmul float %42, %83 ; [#uses=1]
+ store float 0.000000e+00, float* %7, align 4
+ %87 = fadd float %76, %80 ; [#uses=1]
+ %88 = fadd float %77, %81 ; [#uses=1]
+ %89 = fadd float %78, %82 ; [#uses=1]
+ %90 = fadd float %87, %84 ; [#uses=1]
+ %91 = fadd float %88, %85 ; [#uses=1]
+ %92 = fadd float %89, %86 ; [#uses=1]
+ %93 = fmul float %90, %74 ; [#uses=2]
+ store float %93, float* %4, align 8
+ %94 = fmul float %91, %74 ; [#uses=2]
+ store float %94, float* %5, align 4
+ %95 = fmul float %92, %74 ; [#uses=2]
+ store float %95, float* %6, align 8
+ %96 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb3.i
+
+bb.i: ; preds = %bb3.i
+ %scevgep1011.i = getelementptr inbounds %struct.btQuadWord* %12, i32 %110, i32 0, i32 0 ; [#uses=1]
+ %97 = load float* %scevgep1011.i, align 4 ; [#uses=1]
+ %98 = fmul float %97, %93 ; [#uses=1]
+ %scevgep9.i = getelementptr %struct.btQuadWord* %12, i32 %110, i32 0, i32 1 ; [#uses=1]
+ %99 = load float* %scevgep9.i, align 4 ; [#uses=1]
+ %100 = fmul float %99, %94 ; [#uses=1]
+ %101 = fadd float %98, %100 ; [#uses=1]
+ %scevgep8.i = getelementptr %struct.btQuadWord* %12, i32 %110, i32 0, i32 2 ; [#uses=1]
+ %102 = load float* %scevgep8.i, align 4 ; [#uses=1]
+ %103 = fmul float %102, %95 ; [#uses=1]
+ %104 = fadd float %101, %103 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btQuadWord* %12, i32 %110, i32 0, i32 3 ; [#uses=1]
+ %105 = load float* %scevgep.i, align 4 ; [#uses=1]
+ %106 = fadd float %104, %105 ; [#uses=1]
+ %107 = fadd float %106, 0xBF847AE140000000 ; [#uses=1]
+ %108 = fcmp ogt float %107, 0.000000e+00 ; [#uses=1]
+ br i1 %108, label %bb17, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %109 = add nsw i32 %110, 1 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb13
+ %110 = phi i32 [ 0, %bb13 ], [ %109, %bb2.i ] ; [#uses=6]
+ %111 = icmp slt i32 %110, %96 ; [#uses=1]
+ br i1 %111, label %bb.i, label %bb16
+
+bb16: ; preds = %bb3.i
+ call void @_ZN20btAlignedObjectArrayI9btVector3E9push_backERKS0_(%"struct.btAlignedObjectArray<btVector3>"* %verticesOut, %struct.btQuadWord* %potentialVertex) inlinehint
+ br label %bb17
+
+bb17: ; preds = %bb16, %bb.i, %bb10, %bb6, %bb5, %bb2
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %indvar.next, %tmp56 ; [#uses=1]
+ br i1 %exitcond, label %bb20.loopexit, label %bb2
+
+bb20.loopexit: ; preds = %bb17, %bb1
+ %indvar.next52 = add i32 %indvar51, 1 ; [#uses=2]
+ %exitcond72 = icmp eq i32 %indvar.next52, %tmp71 ; [#uses=1]
+ br i1 %exitcond72, label %bb21, label %bb1
+
+bb21: ; preds = %bb20.loopexit, %bb
+ %exitcond95 = icmp eq i32 %j.044, %1 ; [#uses=1]
+ br i1 %exitcond95, label %return, label %bb
+
+return: ; preds = %bb21, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN14btGeometryUtil29getPlaneEquationsFromVerticesER20btAlignedObjectArrayI9btVector3ES3_(%"struct.btAlignedObjectArray<btVector3>"* nocapture %vertices, %"struct.btAlignedObjectArray<btVector3>"* nocapture %planeEquationsOut) align 2 {
+entry:
+ %planeEquation = alloca %struct.btQuadWord, align 8 ; [#uses=5]
+ %0 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %vertices, i32 0, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=6]
+ %2 = icmp sgt i32 %1, 0 ; [#uses=1]
+ br i1 %2, label %bb.nph50, label %return
+
+bb.nph50: ; preds = %entry
+ %3 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %vertices, i32 0, i32 3 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.btQuadWord* %planeEquation, i32 0, i32 0, i32 0 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btQuadWord* %planeEquation, i32 0, i32 0, i32 1 ; [#uses=2]
+ %6 = getelementptr inbounds %struct.btQuadWord* %planeEquation, i32 0, i32 0, i32 2 ; [#uses=2]
+ %7 = getelementptr inbounds %struct.btQuadWord* %planeEquation, i32 0, i32 0, i32 3 ; [#uses=2]
+ %8 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %planeEquationsOut, i32 0, i32 1 ; [#uses=1]
+ %9 = getelementptr inbounds %"struct.btAlignedObjectArray<btVector3>"* %planeEquationsOut, i32 0, i32 3 ; [#uses=1]
+ %tmp59 = add i32 %1, -2 ; [#uses=1]
+ %tmp71 = add i32 %1, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb18, %bb.nph50
+ %i.049 = phi i32 [ 0, %bb.nph50 ], [ %j.045, %bb18 ] ; [#uses=7]
+ %j.045 = add i32 %i.049, 1 ; [#uses=4]
+ %tmp96 = add i32 %i.049, 2 ; [#uses=1]
+ %tmp105 = sub i32 %tmp59, %i.049 ; [#uses=1]
+ %tmp72 = sub i32 %tmp71, %i.049 ; [#uses=1]
+ %10 = load %struct.btQuadWord** %3, align 4 ; [#uses=3]
+ %11 = icmp slt i32 %j.045, %1 ; [#uses=1]
+ br i1 %11, label %bb.nph48, label %bb18
+
+bb.nph48: ; preds = %bb
+ %scevgep108 = getelementptr %struct.btQuadWord* %10, i32 %i.049, i32 0, i32 2 ; [#uses=2]
+ %scevgep109 = getelementptr %struct.btQuadWord* %10, i32 %i.049, i32 0, i32 1 ; [#uses=2]
+ %scevgep110111 = getelementptr inbounds %struct.btQuadWord* %10, i32 %i.049, i32 0, i32 0 ; [#uses=2]
+ br label %bb1
+
+bb1: ; preds = %bb17.loopexit, %bb.nph48
+ %indvar56 = phi i32 [ 0, %bb.nph48 ], [ %indvar.next57, %bb17.loopexit ] ; [#uses=4]
+ %tmp91 = add i32 %j.045, %indvar56 ; [#uses=3]
+ %tmp75 = add i32 %tmp96, %indvar56 ; [#uses=2]
+ %tmp61 = sub i32 %tmp105, %indvar56 ; [#uses=1]
+ %12 = load %struct.btQuadWord** %3, align 4 ; [#uses=3]
+ %13 = icmp slt i32 %tmp75, %1 ; [#uses=1]
+ br i1 %13, label %bb.nph44, label %bb17.loopexit
+
+bb.nph44: ; preds = %bb1
+ %scevgep8889 = getelementptr inbounds %struct.btQuadWord* %12, i32 %tmp91, i32 0, i32 0 ; [#uses=1]
+ %scevgep87 = getelementptr %struct.btQuadWord* %12, i32 %tmp91, i32 0, i32 1 ; [#uses=1]
+ %scevgep86 = getelementptr %struct.btQuadWord* %12, i32 %tmp91, i32 0, i32 2 ; [#uses=1]
+ br label %bb.nph
+
+bb.nph: ; preds = %bb14, %bb.nph44
+ %indvar = phi i32 [ 0, %bb.nph44 ], [ %indvar.next, %bb14 ] ; [#uses=2]
+ %tmp98 = add i32 %tmp75, %indvar ; [#uses=3]
+ %14 = load %struct.btQuadWord** %3, align 4 ; [#uses=3]
+ %15 = load float* %scevgep86, align 4 ; [#uses=1]
+ %16 = load float* %scevgep108, align 4 ; [#uses=2]
+ %17 = fsub float %15, %16 ; [#uses=2]
+ %18 = load float* %scevgep87, align 4 ; [#uses=1]
+ %19 = load float* %scevgep109, align 4 ; [#uses=2]
+ %20 = fsub float %18, %19 ; [#uses=2]
+ %21 = load float* %scevgep8889, align 4 ; [#uses=1]
+ %22 = load float* %scevgep110111, align 4 ; [#uses=2]
+ %23 = fsub float %21, %22 ; [#uses=2]
+ %scevgep66 = getelementptr %struct.btQuadWord* %14, i32 %tmp98, i32 0, i32 2 ; [#uses=1]
+ %24 = load float* %scevgep66, align 4 ; [#uses=1]
+ %25 = fsub float %24, %16 ; [#uses=2]
+ %scevgep67 = getelementptr %struct.btQuadWord* %14, i32 %tmp98, i32 0, i32 1 ; [#uses=1]
+ %26 = load float* %scevgep67, align 4 ; [#uses=1]
+ %27 = fsub float %26, %19 ; [#uses=2]
+ %scevgep6869 = getelementptr inbounds %struct.btQuadWord* %14, i32 %tmp98, i32 0, i32 0 ; [#uses=1]
+ %28 = load float* %scevgep6869, align 4 ; [#uses=1]
+ %29 = fsub float %28, %22 ; [#uses=2]
+ %30 = fmul float %23, %27 ; [#uses=1]
+ %31 = fmul float %20, %29 ; [#uses=1]
+ %32 = fsub float %30, %31 ; [#uses=1]
+ %33 = fmul float %17, %29 ; [#uses=1]
+ %34 = fmul float %23, %25 ; [#uses=1]
+ %35 = fsub float %33, %34 ; [#uses=1]
+ %36 = fmul float %20, %25 ; [#uses=1]
+ %37 = fmul float %17, %27 ; [#uses=1]
+ %38 = fsub float %36, %37 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb12, %bb.nph
+ %ww.042 = phi i32 [ 0, %bb.nph ], [ %92, %bb12 ] ; [#uses=1]
+ %normalSign.041 = phi float [ 1.000000e+00, %bb.nph ], [ -1.000000e+00, %bb12 ] ; [#uses=3]
+ %39 = fmul float %32, %normalSign.041 ; [#uses=4]
+ %40 = fmul float %35, %normalSign.041 ; [#uses=4]
+ %41 = fmul float %38, %normalSign.041 ; [#uses=4]
+ store float %41, float* %4, align 8
+ store float %40, float* %5, align 4
+ store float %39, float* %6, align 8
+ store float 0.000000e+00, float* %7, align 4
+ %42 = fmul float %41, %41 ; [#uses=1]
+ %43 = fmul float %40, %40 ; [#uses=1]
+ %44 = fadd float %42, %43 ; [#uses=1]
+ %45 = fmul float %39, %39 ; [#uses=1]
+ %46 = fadd float %44, %45 ; [#uses=2]
+ %47 = fcmp ogt float %46, 0x3F1A36E2E0000000 ; [#uses=1]
+ br i1 %47, label %bb7, label %bb12
+
+bb7: ; preds = %bb5
+ %48 = call float @sqrtf(float %46) nounwind readonly ; [#uses=1]
+ %49 = fdiv float 1.000000e+00, %48 ; [#uses=3]
+ %50 = fmul float %41, %49 ; [#uses=4]
+ store float %50, float* %4, align 8
+ %51 = fmul float %40, %49 ; [#uses=4]
+ store float %51, float* %5, align 4
+ %52 = fmul float %39, %49 ; [#uses=4]
+ store float %52, float* %6, align 8
+ %53 = load i32* %8, align 4 ; [#uses=1]
+ br label %bb3.i26
+
+bb.i24: ; preds = %bb3.i26
+ %54 = load %struct.btQuadWord** %9, align 4 ; [#uses=3]
+ %scevgep910.i21 = getelementptr inbounds %struct.btQuadWord* %54, i32 %65, i32 0, i32 0 ; [#uses=1]
+ %55 = load float* %scevgep910.i21, align 4 ; [#uses=1]
+ %56 = fmul float %50, %55 ; [#uses=1]
+ %scevgep8.i22 = getelementptr %struct.btQuadWord* %54, i32 %65, i32 0, i32 1 ; [#uses=1]
+ %57 = load float* %scevgep8.i22, align 4 ; [#uses=1]
+ %58 = fmul float %51, %57 ; [#uses=1]
+ %59 = fadd float %56, %58 ; [#uses=1]
+ %scevgep.i23 = getelementptr %struct.btQuadWord* %54, i32 %65, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %scevgep.i23, align 4 ; [#uses=1]
+ %61 = fmul float %52, %60 ; [#uses=1]
+ %62 = fadd float %59, %61 ; [#uses=1]
+ %63 = fcmp ogt float %62, 0x3FEFF7CEE0000000 ; [#uses=1]
+ br i1 %63, label %bb12, label %bb2.i25
+
+bb2.i25: ; preds = %bb.i24
+ %64 = add nsw i32 %65, 1 ; [#uses=1]
+ br label %bb3.i26
+
+bb3.i26: ; preds = %bb2.i25, %bb7
+ %65 = phi i32 [ 0, %bb7 ], [ %64, %bb2.i25 ] ; [#uses=5]
+ %66 = icmp slt i32 %65, %53 ; [#uses=1]
+ br i1 %66, label %bb.i24, label %bb9
+
+bb9: ; preds = %bb3.i26
+ %67 = load float* %scevgep110111, align 4 ; [#uses=1]
+ %68 = fmul float %50, %67 ; [#uses=1]
+ %69 = load float* %scevgep109, align 4 ; [#uses=1]
+ %70 = fmul float %51, %69 ; [#uses=1]
+ %71 = fadd float %68, %70 ; [#uses=1]
+ %72 = load float* %scevgep108, align 4 ; [#uses=1]
+ %73 = fmul float %52, %72 ; [#uses=1]
+ %74 = fadd float %71, %73 ; [#uses=2]
+ %75 = fsub float -0.000000e+00, %74 ; [#uses=1]
+ store float %75, float* %7, align 4
+ %76 = load i32* %0, align 4 ; [#uses=1]
+ br label %bb3.i
+
+bb.i: ; preds = %bb3.i
+ %77 = load %struct.btQuadWord** %3, align 4 ; [#uses=3]
+ %scevgep910.i = getelementptr inbounds %struct.btQuadWord* %77, i32 %90, i32 0, i32 0 ; [#uses=1]
+ %78 = load float* %scevgep910.i, align 4 ; [#uses=1]
+ %79 = fmul float %50, %78 ; [#uses=1]
+ %scevgep8.i = getelementptr %struct.btQuadWord* %77, i32 %90, i32 0, i32 1 ; [#uses=1]
+ %80 = load float* %scevgep8.i, align 4 ; [#uses=1]
+ %81 = fmul float %51, %80 ; [#uses=1]
+ %82 = fadd float %79, %81 ; [#uses=1]
+ %scevgep.i = getelementptr %struct.btQuadWord* %77, i32 %90, i32 0, i32 2 ; [#uses=1]
+ %83 = load float* %scevgep.i, align 4 ; [#uses=1]
+ %84 = fmul float %52, %83 ; [#uses=1]
+ %85 = fadd float %82, %84 ; [#uses=1]
+ %86 = fsub float %85, %74 ; [#uses=1]
+ %87 = fadd float %86, 0xBF847AE140000000 ; [#uses=1]
+ %88 = fcmp ogt float %87, 0.000000e+00 ; [#uses=1]
+ br i1 %88, label %bb12, label %bb2.i
+
+bb2.i: ; preds = %bb.i
+ %89 = add nsw i32 %90, 1 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb9
+ %90 = phi i32 [ 0, %bb9 ], [ %89, %bb2.i ] ; [#uses=5]
+ %91 = icmp slt i32 %90, %76 ; [#uses=1]
+ br i1 %91, label %bb.i, label %bb11
+
+bb11: ; preds = %bb3.i
+ call void @_ZN20btAlignedObjectArrayI9btVector3E9push_backERKS0_(%"struct.btAlignedObjectArray<btVector3>"* %planeEquationsOut, %struct.btQuadWord* %planeEquation) inlinehint
+ br label %bb12
+
+bb12: ; preds = %bb11, %bb.i, %bb.i24, %bb5
+ %92 = add nsw i32 %ww.042, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %92, 2 ; [#uses=1]
+ br i1 %exitcond, label %bb14, label %bb5
+
+bb14: ; preds = %bb12
+ %indvar.next = add i32 %indvar, 1 ; [#uses=2]
+ %exitcond62 = icmp eq i32 %indvar.next, %tmp61 ; [#uses=1]
+ br i1 %exitcond62, label %bb17.loopexit, label %bb.nph
+
+bb17.loopexit: ; preds = %bb14, %bb1
+ %indvar.next57 = add i32 %indvar56, 1 ; [#uses=2]
+ %exitcond73 = icmp eq i32 %indvar.next57, %tmp72 ; [#uses=1]
+ br i1 %exitcond73, label %bb18, label %bb1
+
+bb18: ; preds = %bb17.loopexit, %bb
+ %exitcond90 = icmp eq i32 %j.045, %1 ; [#uses=1]
+ br i1 %exitcond90, label %return, label %bb
+
+return: ; preds = %bb18, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN7btClockC2Ev(%struct.btClock* nocapture %this) align 2 {
+entry:
+ %0 = tail call i8* @_Znwj(i32 8) ; [#uses=2]
+ %1 = bitcast i8* %0 to %struct.btClockData* ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btClock* %this, i32 0, i32 0 ; [#uses=1]
+ store %struct.btClockData* %1, %struct.btClockData** %2, align 4
+ %3 = bitcast i8* %0 to %struct.CONTACT_KEY_TOKEN* ; [#uses=1]
+ %4 = tail call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %3, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ ret void
+}
+
+; [#uses=1]
+define internal void @_GLOBAL__I__ZN7btClockC2Ev() {
+entry:
+ %0 = tail call i8* @_Znwj(i32 8) ; [#uses=2]
+ %1 = bitcast i8* %0 to %struct.btClockData* ; [#uses=1]
+ store %struct.btClockData* %1, %struct.btClockData** getelementptr inbounds (%struct.btClock* @_ZL13gProfileClock, i32 0, i32 0), align 8
+ %2 = bitcast i8* %0 to %struct.CONTACT_KEY_TOKEN* ; [#uses=1]
+ %3 = tail call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %2, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ %4 = tail call i32 @__cxa_atexit(void (i8*)* @__tcf_040, i8* null, i8* bitcast (i8** @__dso_handle to i8*)) nounwind ; [#uses=0]
+ store i8* getelementptr inbounds ([5 x i8]* @.str633, i32 0, i32 0), i8** getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 0), align 32
+ store i32 0, i32* getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 1), align 4
+ store float 0.000000e+00, float* getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 2), align 8
+ store i32 0, i32* getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 3), align 4
+ store i32 0, i32* getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 4), align 16
+ store %struct.CProfileNode* null, %struct.CProfileNode** getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 5), align 4
+ store %struct.CProfileNode* null, %struct.CProfileNode** getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 6), align 8
+ store %struct.CProfileNode* null, %struct.CProfileNode** getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 7), align 4
+ tail call void @_ZN12CProfileNode5ResetEv(%struct.CProfileNode* @_ZN15CProfileManager4RootE) nounwind
+ %5 = tail call i32 @__cxa_atexit(void (i8*)* @__tcf_139, i8* null, i8* bitcast (i8** @__dso_handle to i8*)) nounwind ; [#uses=0]
+ ret void
+}
+
+; [#uses=0]
+define %struct.btClock* @_ZN7btClockaSERKS_(%struct.btClock* %this, %struct.btClock* nocapture %other) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btClock* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btClockData** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.btClock* %other, i32 0, i32 0 ; [#uses=1]
+ %3 = load %struct.btClockData** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btClockData* %3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = getelementptr inbounds %struct.btClockData* %3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %7 = load i32* %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.btClockData* %1, i32 0, i32 0, i32 0 ; [#uses=1]
+ store i32 %5, i32* %8, align 4
+ %9 = getelementptr inbounds %struct.btClockData* %1, i32 0, i32 0, i32 1 ; [#uses=1]
+ store i32 %7, i32* %9, align 4
+ ret %struct.btClock* %this
+}
+
+; [#uses=7]
+define void @_ZN12CProfileNode5ResetEv(%struct.CProfileNode* nocapture %this) nounwind align 2 {
+entry:
+ br label %tailrecurse
+
+tailrecurse: ; preds = %bb1, %entry
+ %this.tr = phi %struct.CProfileNode* [ %this, %entry ], [ %6, %bb1 ] ; [#uses=4]
+ %0 = getelementptr inbounds %struct.CProfileNode* %this.tr, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %0, align 4
+ %1 = getelementptr inbounds %struct.CProfileNode* %this.tr, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %1, align 4
+ %2 = getelementptr inbounds %struct.CProfileNode* %this.tr, i32 0, i32 6 ; [#uses=1]
+ %3 = load %struct.CProfileNode** %2, align 4 ; [#uses=2]
+ %4 = icmp eq %struct.CProfileNode* %3, null ; [#uses=1]
+ br i1 %4, label %bb1, label %bb
+
+bb: ; preds = %tailrecurse
+ tail call void @_ZN12CProfileNode5ResetEv(%struct.CProfileNode* %3)
+ br label %bb1
+
+bb1: ; preds = %bb, %tailrecurse
+ %5 = getelementptr inbounds %struct.CProfileNode* %this.tr, i32 0, i32 7 ; [#uses=1]
+ %6 = load %struct.CProfileNode** %5, align 4 ; [#uses=2]
+ %7 = icmp eq %struct.CProfileNode* %6, null ; [#uses=1]
+ br i1 %7, label %return, label %tailrecurse
+
+return: ; preds = %bb1
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12CProfileNodeC1EPKcPS_(%struct.CProfileNode* nocapture %this, i8* %name, %struct.CProfileNode* %parent) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 0 ; [#uses=1]
+ store i8* %name, i8** %0, align 4
+ %1 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.CProfileNode* %parent, %struct.CProfileNode** %5, align 4
+ %6 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.CProfileNode* null, %struct.CProfileNode** %6, align 4
+ %7 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 7 ; [#uses=1]
+ store %struct.CProfileNode* null, %struct.CProfileNode** %7, align 4
+ tail call void @_ZN12CProfileNode5ResetEv(%struct.CProfileNode* %this)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12CProfileNodeC2EPKcPS_(%struct.CProfileNode* nocapture %this, i8* %name, %struct.CProfileNode* %parent) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 0 ; [#uses=1]
+ store i8* %name, i8** %0, align 4
+ %1 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 1 ; [#uses=1]
+ store i32 0, i32* %1, align 4
+ %2 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 2 ; [#uses=1]
+ store float 0.000000e+00, float* %2, align 4
+ %3 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 3 ; [#uses=1]
+ store i32 0, i32* %3, align 4
+ %4 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 4 ; [#uses=1]
+ store i32 0, i32* %4, align 4
+ %5 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 5 ; [#uses=1]
+ store %struct.CProfileNode* %parent, %struct.CProfileNode** %5, align 4
+ %6 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 6 ; [#uses=1]
+ store %struct.CProfileNode* null, %struct.CProfileNode** %6, align 4
+ %7 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 7 ; [#uses=1]
+ store %struct.CProfileNode* null, %struct.CProfileNode** %7, align 4
+ tail call void @_ZN12CProfileNode5ResetEv(%struct.CProfileNode* %this)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16CProfileIteratorC2EP12CProfileNode(%struct.CProfileIterator* nocapture %this, %struct.CProfileNode* %start) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CProfileIterator* %this, i32 0, i32 0 ; [#uses=1]
+ store %struct.CProfileNode* %start, %struct.CProfileNode** %0, align 4
+ %1 = getelementptr inbounds %struct.CProfileNode* %start, i32 0, i32 6 ; [#uses=1]
+ %2 = load %struct.CProfileNode** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.CProfileIterator* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.CProfileNode* %2, %struct.CProfileNode** %3, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16CProfileIteratorC1EP12CProfileNode(%struct.CProfileIterator* nocapture %this, %struct.CProfileNode* %start) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CProfileIterator* %this, i32 0, i32 0 ; [#uses=1]
+ store %struct.CProfileNode* %start, %struct.CProfileNode** %0, align 4
+ %1 = getelementptr inbounds %struct.CProfileNode* %start, i32 0, i32 6 ; [#uses=1]
+ %2 = load %struct.CProfileNode** %1, align 4 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.CProfileIterator* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.CProfileNode* %2, %struct.CProfileNode** %3, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16CProfileIterator5FirstEv(%struct.CProfileIterator* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CProfileIterator* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.CProfileNode** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.CProfileNode* %1, i32 0, i32 6 ; [#uses=1]
+ %3 = load %struct.CProfileNode** %2, align 4 ; [#uses=1]
+ %4 = getelementptr inbounds %struct.CProfileIterator* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.CProfileNode* %3, %struct.CProfileNode** %4, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16CProfileIterator4NextEv(%struct.CProfileIterator* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CProfileIterator* %this, i32 0, i32 1 ; [#uses=2]
+ %1 = load %struct.CProfileNode** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.CProfileNode* %1, i32 0, i32 7 ; [#uses=1]
+ %3 = load %struct.CProfileNode** %2, align 4 ; [#uses=1]
+ store %struct.CProfileNode* %3, %struct.CProfileNode** %0, align 4
+ ret void
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN16CProfileIterator7Is_DoneEv(%struct.CProfileIterator* nocapture %this) nounwind readonly align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CProfileIterator* %this, i32 0, i32 1 ; [#uses=1]
+ %1 = load %struct.CProfileNode** %0, align 4 ; [#uses=1]
+ %2 = icmp eq %struct.CProfileNode* %1, null ; [#uses=1]
+ %retval12 = zext i1 %2 to i8 ; [#uses=1]
+ ret i8 %retval12
+}
+
+; [#uses=0]
+define void @_ZN16CProfileIterator11Enter_ChildEi(%struct.CProfileIterator* nocapture %this, i32 %index) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CProfileIterator* %this, i32 0, i32 0 ; [#uses=2]
+ %1 = load %struct.CProfileNode** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.CProfileNode* %1, i32 0, i32 6 ; [#uses=1]
+ %3 = load %struct.CProfileNode** %2, align 4 ; [#uses=4]
+ %4 = getelementptr inbounds %struct.CProfileIterator* %this, i32 0, i32 1 ; [#uses=3]
+ store %struct.CProfileNode* %3, %struct.CProfileNode** %4, align 4
+ %5 = icmp ne %struct.CProfileNode* %3, null ; [#uses=1]
+ %6 = icmp ne i32 %index, 0 ; [#uses=1]
+ %7 = and i1 %5, %6 ; [#uses=1]
+ br i1 %7, label %bb.nph, label %bb4
+
+bb.nph: ; preds = %entry
+ %tmp8 = add i32 %index, -1 ; [#uses=1]
+ br label %bb
+
+bb: ; preds = %bb, %bb.nph
+ %8 = phi %struct.CProfileNode* [ %3, %bb.nph ], [ %10, %bb ] ; [#uses=1]
+ %indvar = phi i32 [ 0, %bb.nph ], [ %indvar.next, %bb ] ; [#uses=2]
+ %9 = getelementptr inbounds %struct.CProfileNode* %8, i32 0, i32 7 ; [#uses=1]
+ %10 = load %struct.CProfileNode** %9, align 4 ; [#uses=4]
+ store %struct.CProfileNode* %10, %struct.CProfileNode** %4, align 4
+ %11 = icmp ne %struct.CProfileNode* %10, null ; [#uses=1]
+ %12 = icmp ne i32 %tmp8, %indvar ; [#uses=1]
+ %13 = and i1 %11, %12 ; [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; [#uses=1]
+ br i1 %13, label %bb, label %bb4
+
+bb4: ; preds = %bb, %entry
+ %14 = phi %struct.CProfileNode* [ %3, %entry ], [ %10, %bb ] ; [#uses=3]
+ %15 = icmp eq %struct.CProfileNode* %14, null ; [#uses=1]
+ br i1 %15, label %return, label %bb5
+
+bb5: ; preds = %bb4
+ store %struct.CProfileNode* %14, %struct.CProfileNode** %0, align 4
+ %16 = getelementptr inbounds %struct.CProfileNode* %14, i32 0, i32 6 ; [#uses=1]
+ %17 = load %struct.CProfileNode** %16, align 4 ; [#uses=1]
+ store %struct.CProfileNode* %17, %struct.CProfileNode** %4, align 4
+ ret void
+
+return: ; preds = %bb4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN16CProfileIterator12Enter_ParentEv(%struct.CProfileIterator* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CProfileIterator* %this, i32 0, i32 0 ; [#uses=2]
+ %1 = load %struct.CProfileNode** %0, align 4 ; [#uses=2]
+ %2 = getelementptr inbounds %struct.CProfileNode* %1, i32 0, i32 5 ; [#uses=1]
+ %3 = load %struct.CProfileNode** %2, align 4 ; [#uses=3]
+ %4 = icmp eq %struct.CProfileNode* %3, null ; [#uses=1]
+ br i1 %4, label %bb1, label %bb
+
+bb: ; preds = %entry
+ store %struct.CProfileNode* %3, %struct.CProfileNode** %0, align 4
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %5 = phi %struct.CProfileNode* [ %1, %entry ], [ %3, %bb ] ; [#uses=1]
+ %6 = getelementptr inbounds %struct.CProfileNode* %5, i32 0, i32 6 ; [#uses=1]
+ %7 = load %struct.CProfileNode** %6, align 4 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.CProfileIterator* %this, i32 0, i32 1 ; [#uses=1]
+ store %struct.CProfileNode* %7, %struct.CProfileNode** %8, align 4
+ ret void
+}
+
+; [#uses=1]
+define void @_ZN15CProfileManager23Increment_Frame_CounterEv() nounwind align 2 {
+entry:
+ %0 = load i32* @_ZN15CProfileManager12FrameCounterE, align 4 ; [#uses=1]
+ %1 = add nsw i32 %0, 1 ; [#uses=1]
+ store i32 %1, i32* @_ZN15CProfileManager12FrameCounterE, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN7btClockC1ERKS_(%struct.btClock* nocapture %this, %struct.btClock* nocapture %other) align 2 {
+entry:
+ %0 = tail call i8* @_Znwj(i32 8) ; [#uses=3]
+ %1 = bitcast i8* %0 to %struct.btClockData* ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btClock* %this, i32 0, i32 0 ; [#uses=1]
+ store %struct.btClockData* %1, %struct.btClockData** %2, align 4
+ %3 = getelementptr inbounds %struct.btClock* %other, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.btClockData** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btClockData* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btClockData* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=1]
+ %9 = bitcast i8* %0 to i32* ; [#uses=1]
+ store i32 %6, i32* %9, align 4
+ %10 = getelementptr inbounds i8* %0, i32 4 ; [#uses=1]
+ %11 = bitcast i8* %10 to i32* ; [#uses=1]
+ store i32 %8, i32* %11, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN7btClockC2ERKS_(%struct.btClock* nocapture %this, %struct.btClock* nocapture %other) align 2 {
+entry:
+ %0 = tail call i8* @_Znwj(i32 8) ; [#uses=3]
+ %1 = bitcast i8* %0 to %struct.btClockData* ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btClock* %this, i32 0, i32 0 ; [#uses=1]
+ store %struct.btClockData* %1, %struct.btClockData** %2, align 4
+ %3 = getelementptr inbounds %struct.btClock* %other, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.btClockData** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btClockData* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = getelementptr inbounds %struct.btClockData* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ %8 = load i32* %7, align 4 ; [#uses=1]
+ %9 = bitcast i8* %0 to i32* ; [#uses=1]
+ store i32 %6, i32* %9, align 4
+ %10 = getelementptr inbounds i8* %0, i32 4 ; [#uses=1]
+ %11 = bitcast i8* %10 to i32* ; [#uses=1]
+ store i32 %8, i32* %11, align 4
+ ret void
+}
+
+; [#uses=0]
+define %struct.CProfileNode* @_ZN12CProfileNode12Get_Sub_NodeEPKc(%struct.CProfileNode* %this, i8* %name) align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 6 ; [#uses=3]
+ br label %bb3
+
+bb: ; preds = %bb3
+ %1 = getelementptr inbounds %struct.CProfileNode* %child.0, i32 0, i32 0 ; [#uses=1]
+ %2 = load i8** %1, align 4 ; [#uses=1]
+ %3 = icmp eq i8* %2, %name ; [#uses=1]
+ br i1 %3, label %bb7, label %bb2
+
+bb2: ; preds = %bb
+ %4 = getelementptr inbounds %struct.CProfileNode* %child.0, i32 0, i32 7 ; [#uses=1]
+ br label %bb3
+
+bb3: ; preds = %bb2, %entry
+ %child.0.in = phi %struct.CProfileNode** [ %0, %entry ], [ %4, %bb2 ] ; [#uses=1]
+ %child.0 = load %struct.CProfileNode** %child.0.in, align 4 ; [#uses=4]
+ %5 = icmp eq %struct.CProfileNode* %child.0, null ; [#uses=1]
+ br i1 %5, label %bb6, label %bb
+
+bb6: ; preds = %bb3
+ %6 = tail call i8* @_Znwj(i32 32) ; [#uses=9]
+ %7 = bitcast i8* %6 to %struct.CProfileNode* ; [#uses=3]
+ %8 = bitcast i8* %6 to i8** ; [#uses=1]
+ store i8* %name, i8** %8, align 4
+ %9 = getelementptr inbounds i8* %6, i32 4 ; [#uses=1]
+ %10 = bitcast i8* %9 to i32* ; [#uses=1]
+ store i32 0, i32* %10, align 4
+ %11 = getelementptr inbounds i8* %6, i32 8 ; [#uses=1]
+ %12 = bitcast i8* %11 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %12, align 4
+ %13 = getelementptr inbounds i8* %6, i32 12 ; [#uses=1]
+ %14 = bitcast i8* %13 to i32* ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = getelementptr inbounds i8* %6, i32 16 ; [#uses=1]
+ %16 = bitcast i8* %15 to i32* ; [#uses=1]
+ store i32 0, i32* %16, align 4
+ %17 = getelementptr inbounds i8* %6, i32 20 ; [#uses=1]
+ %18 = bitcast i8* %17 to %struct.CProfileNode** ; [#uses=1]
+ store %struct.CProfileNode* %this, %struct.CProfileNode** %18, align 4
+ %19 = getelementptr inbounds i8* %6, i32 24 ; [#uses=1]
+ %20 = bitcast i8* %19 to %struct.CProfileNode** ; [#uses=1]
+ store %struct.CProfileNode* null, %struct.CProfileNode** %20, align 4
+ %21 = getelementptr inbounds i8* %6, i32 28 ; [#uses=1]
+ %22 = bitcast i8* %21 to %struct.CProfileNode** ; [#uses=2]
+ store %struct.CProfileNode* null, %struct.CProfileNode** %22, align 4
+ tail call void @_ZN12CProfileNode5ResetEv(%struct.CProfileNode* %7) nounwind
+ %23 = load %struct.CProfileNode** %0, align 4 ; [#uses=1]
+ store %struct.CProfileNode* %23, %struct.CProfileNode** %22, align 4
+ store %struct.CProfileNode* %7, %struct.CProfileNode** %0, align 4
+ ret %struct.CProfileNode* %7
+
+bb7: ; preds = %bb
+ ret %struct.CProfileNode* %child.0
+}
+
+; [#uses=7]
+define void @_ZN12CProfileNodeD1Ev(%struct.CProfileNode* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load %struct.CProfileNode** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.CProfileNode* %1, null ; [#uses=1]
+ br i1 %2, label %bb1, label %bb
+
+bb: ; preds = %entry
+ tail call void @_ZN12CProfileNodeD1Ev(%struct.CProfileNode* %1)
+ %3 = bitcast %struct.CProfileNode* %1 to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %3) nounwind
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %4 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 7 ; [#uses=1]
+ %5 = load %struct.CProfileNode** %4, align 4 ; [#uses=3]
+ %6 = icmp eq %struct.CProfileNode* %5, null ; [#uses=1]
+ br i1 %6, label %return, label %bb2
+
+bb2: ; preds = %bb1
+ tail call void @_ZN12CProfileNodeD1Ev(%struct.CProfileNode* %5)
+ %7 = bitcast %struct.CProfileNode* %5 to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %7) nounwind
+ ret void
+
+return: ; preds = %bb1
+ ret void
+}
+
+; [#uses=1]
+define internal void @__tcf_139(i8* nocapture %unnamed_arg) nounwind {
+entry:
+ tail call void @_ZN12CProfileNodeD1Ev(%struct.CProfileNode* @_ZN15CProfileManager4RootE)
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12CProfileNodeD2Ev(%struct.CProfileNode* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 6 ; [#uses=1]
+ %1 = load %struct.CProfileNode** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.CProfileNode* %1, null ; [#uses=1]
+ br i1 %2, label %bb1, label %bb
+
+bb: ; preds = %entry
+ tail call void @_ZN12CProfileNodeD1Ev(%struct.CProfileNode* %1)
+ %3 = bitcast %struct.CProfileNode* %1 to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %3) nounwind
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ %4 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 7 ; [#uses=1]
+ %5 = load %struct.CProfileNode** %4, align 4 ; [#uses=3]
+ %6 = icmp eq %struct.CProfileNode* %5, null ; [#uses=1]
+ br i1 %6, label %return, label %bb2
+
+bb2: ; preds = %bb1
+ tail call void @_ZN12CProfileNodeD1Ev(%struct.CProfileNode* %5)
+ %7 = bitcast %struct.CProfileNode* %5 to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %7) nounwind
+ ret void
+
+return: ; preds = %bb1
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12CProfileNode13CleanupMemoryEv(%struct.CProfileNode* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 6 ; [#uses=2]
+ %1 = load %struct.CProfileNode** %0, align 4 ; [#uses=3]
+ %2 = icmp eq %struct.CProfileNode* %1, null ; [#uses=1]
+ br i1 %2, label %bb1, label %bb
+
+bb: ; preds = %entry
+ tail call void @_ZN12CProfileNodeD1Ev(%struct.CProfileNode* %1)
+ %3 = bitcast %struct.CProfileNode* %1 to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %3) nounwind
+ br label %bb1
+
+bb1: ; preds = %bb, %entry
+ store %struct.CProfileNode* null, %struct.CProfileNode** %0, align 4
+ %4 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 7 ; [#uses=2]
+ %5 = load %struct.CProfileNode** %4, align 4 ; [#uses=3]
+ %6 = icmp eq %struct.CProfileNode* %5, null ; [#uses=1]
+ br i1 %6, label %bb3, label %bb2
+
+bb2: ; preds = %bb1
+ tail call void @_ZN12CProfileNodeD1Ev(%struct.CProfileNode* %5)
+ %7 = bitcast %struct.CProfileNode* %5 to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %7) nounwind
+ br label %bb3
+
+bb3: ; preds = %bb2, %bb1
+ store %struct.CProfileNode* null, %struct.CProfileNode** %4, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN7btClockD1Ev(%struct.btClock* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btClock* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btClockData** %0, align 4 ; [#uses=1]
+ %2 = bitcast %struct.btClockData* %1 to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=1]
+define internal void @__tcf_040(i8* nocapture %unnamed_arg) nounwind {
+entry:
+ %0 = load %struct.btClockData** getelementptr inbounds (%struct.btClock* @_ZL13gProfileClock, i32 0, i32 0), align 8 ; [#uses=1]
+ %1 = bitcast %struct.btClockData* %0 to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %1) nounwind
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN7btClockD2Ev(%struct.btClock* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btClock* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btClockData** %0, align 4 ; [#uses=1]
+ %2 = bitcast %struct.btClockData* %1 to i8* ; [#uses=1]
+ tail call void @_ZdlPv(i8* %2) nounwind
+ ret void
+}
+
+; [#uses=0]
+define i32 @_ZN7btClock19getTimeMicrosecondsEv(%struct.btClock* nocapture %this) nounwind align 2 {
+entry:
+ %currentTime = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %0 = call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %currentTime, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ %1 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime, i32 0, i32 0 ; [#uses=1]
+ %2 = load i32* %1, align 8 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btClock* %this, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.btClockData** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btClockData* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = sub nsw i32 %2, %6 ; [#uses=1]
+ %8 = mul nsw i32 %7, 1000000 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime, i32 0, i32 1 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btClockData* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %13 = add i32 %8, %10 ; [#uses=1]
+ %14 = sub i32 %13, %12 ; [#uses=1]
+ ret i32 %14
+}
+
+; [#uses=15]
+declare i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias, %struct.CONTACT_KEY_TOKEN* noalias) nounwind
+
+; [#uses=0]
+define float @_ZN15CProfileManager20Get_Time_Since_ResetEv() nounwind align 2 {
+entry:
+ %currentTime.i.i = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %0 = call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %currentTime.i.i, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ %1 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i, i32 0, i32 0 ; [#uses=1]
+ %2 = load i32* %1, align 8 ; [#uses=1]
+ %3 = load %struct.btClockData** getelementptr inbounds (%struct.btClock* @_ZL13gProfileClock, i32 0, i32 0), align 8 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.btClockData* %3, i32 0, i32 0, i32 0 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = sub nsw i32 %2, %5 ; [#uses=1]
+ %7 = mul nsw i32 %6, 1000000 ; [#uses=1]
+ %8 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i, i32 0, i32 1 ; [#uses=1]
+ %9 = load i32* %8, align 4 ; [#uses=1]
+ %10 = getelementptr inbounds %struct.btClockData* %3, i32 0, i32 0, i32 1 ; [#uses=1]
+ %11 = load i32* %10, align 4 ; [#uses=1]
+ %12 = load i32* @_ZN15CProfileManager9ResetTimeE, align 4 ; [#uses=1]
+ %13 = add i32 %7, %9 ; [#uses=1]
+ %14 = sub i32 %13, %11 ; [#uses=1]
+ %15 = sub i32 %14, %12 ; [#uses=1]
+ %16 = uitofp i32 %15 to float ; [#uses=1]
+ %17 = fdiv float %16, 1.000000e+03 ; [#uses=1]
+ ret float %17
+}
+
+; [#uses=2]
+define void @_ZN15CProfileManager13dumpRecursiveEP16CProfileIteratori(%struct.CProfileIterator* %profileIterator, i32 %spacing) nounwind align 2 {
+entry:
+ %currentTime.i.i.i = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.CProfileIterator* %profileIterator, i32 0, i32 0 ; [#uses=6]
+ %1 = load %struct.CProfileNode** %0, align 4 ; [#uses=3]
+ %2 = getelementptr inbounds %struct.CProfileNode* %1, i32 0, i32 6 ; [#uses=1]
+ %3 = load %struct.CProfileNode** %2, align 4 ; [#uses=2]
+ %4 = getelementptr inbounds %struct.CProfileIterator* %profileIterator, i32 0, i32 1 ; [#uses=16]
+ store %struct.CProfileNode* %3, %struct.CProfileNode** %4, align 4
+ %5 = icmp eq %struct.CProfileNode* %3, null ; [#uses=1]
+ br i1 %5, label %return, label %bb
+
+bb: ; preds = %entry
+ %6 = getelementptr inbounds %struct.CProfileNode* %1, i32 0, i32 5 ; [#uses=1]
+ %7 = load %struct.CProfileNode** %6, align 4 ; [#uses=1]
+ %8 = icmp eq %struct.CProfileNode* %7, null ; [#uses=1]
+ br i1 %8, label %bb2, label %bb3
+
+bb2: ; preds = %bb
+ %9 = call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %currentTime.i.i.i, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ %10 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i.i, i32 0, i32 0 ; [#uses=1]
+ %11 = load i32* %10, align 8 ; [#uses=1]
+ %12 = load %struct.btClockData** getelementptr inbounds (%struct.btClock* @_ZL13gProfileClock, i32 0, i32 0), align 8 ; [#uses=2]
+ %13 = getelementptr inbounds %struct.btClockData* %12, i32 0, i32 0, i32 0 ; [#uses=1]
+ %14 = load i32* %13, align 4 ; [#uses=1]
+ %15 = sub nsw i32 %11, %14 ; [#uses=1]
+ %16 = mul nsw i32 %15, 1000000 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i.i, i32 0, i32 1 ; [#uses=1]
+ %18 = load i32* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.btClockData* %12, i32 0, i32 0, i32 1 ; [#uses=1]
+ %20 = load i32* %19, align 4 ; [#uses=1]
+ %21 = load i32* @_ZN15CProfileManager9ResetTimeE, align 4 ; [#uses=1]
+ %22 = sub i32 %18, %20 ; [#uses=1]
+ %23 = add i32 %22, %16 ; [#uses=1]
+ %24 = sub i32 %23, %21 ; [#uses=1]
+ %25 = uitofp i32 %24 to float ; [#uses=1]
+ %26 = fdiv float %25, 1.000000e+03 ; [#uses=1]
+ br label %bb4
+
+bb3: ; preds = %bb
+ %27 = getelementptr inbounds %struct.CProfileNode* %1, i32 0, i32 2 ; [#uses=1]
+ %28 = load float* %27, align 4 ; [#uses=1]
+ br label %bb4
+
+bb4: ; preds = %bb3, %bb2
+ %iftmp.33.0 = phi float [ %26, %bb2 ], [ %28, %bb3 ] ; [#uses=8]
+ %29 = load i32* @_ZN15CProfileManager12FrameCounterE, align 4 ; [#uses=1]
+ %30 = icmp sgt i32 %spacing, 0 ; [#uses=5]
+ br i1 %30, label %bb5, label %bb7.thread
+
+bb7.thread: ; preds = %bb4
+ %31 = call i32 @puts(i8* getelementptr inbounds ([35 x i8]* @.str27, i32 0, i32 0)) ; [#uses=0]
+ br label %bb10
+
+bb5: ; preds = %bb5, %bb4
+ %i.067 = phi i32 [ %33, %bb5 ], [ 0, %bb4 ] ; [#uses=1]
+ %32 = call i32 @putchar(i32 46) ; [#uses=0]
+ %33 = add nsw i32 %i.067, 1 ; [#uses=2]
+ %exitcond85 = icmp eq i32 %33, %spacing ; [#uses=1]
+ br i1 %exitcond85, label %bb7, label %bb5
+
+bb7: ; preds = %bb5
+ %34 = call i32 @puts(i8* getelementptr inbounds ([35 x i8]* @.str27, i32 0, i32 0)) ; [#uses=0]
+ br i1 %30, label %bb8, label %bb10
+
+bb8: ; preds = %bb8, %bb7
+ %i.165 = phi i32 [ %36, %bb8 ], [ 0, %bb7 ] ; [#uses=1]
+ %35 = call i32 @putchar(i32 46) ; [#uses=0]
+ %36 = add nsw i32 %i.165, 1 ; [#uses=2]
+ %exitcond84 = icmp eq i32 %36, %spacing ; [#uses=1]
+ br i1 %exitcond84, label %bb10, label %bb8
+
+bb10: ; preds = %bb8, %bb7, %bb7.thread
+ %37 = fpext float %iftmp.33.0 to double ; [#uses=1]
+ %38 = load %struct.CProfileNode** %0, align 4 ; [#uses=1]
+ %39 = getelementptr inbounds %struct.CProfileNode* %38, i32 0, i32 0 ; [#uses=1]
+ %40 = load i8** %39, align 4 ; [#uses=1]
+ %41 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([49 x i8]* @.str128, i32 0, i32 0), i8* %40, double %37) ; [#uses=0]
+ %42 = load %struct.CProfileNode** %4, align 4 ; [#uses=5]
+ %43 = icmp eq %struct.CProfileNode* %42, null ; [#uses=1]
+ br i1 %43, label %bb23, label %bb.nph48
+
+bb.nph48: ; preds = %bb10
+ %44 = fcmp ogt float %iftmp.33.0, 0x3E80000000000000 ; [#uses=1]
+ %45 = sitofp i32 %29 to double ; [#uses=4]
+ br i1 %44, label %bb.nph48.split.us, label %bb.nph48.bb.nph48.split_crit_edge
+
+bb.nph48.bb.nph48.split_crit_edge: ; preds = %bb.nph48
+ br i1 %30, label %bb.nph44.us63, label %bb18
+
+bb.nph48.split.us: ; preds = %bb.nph48
+ br i1 %30, label %bb.nph44.us.us, label %bb18.us
+
+bb18.us.us: ; preds = %bb16.us.us
+ %.pre86 = load %struct.CProfileNode** %4, align 4 ; [#uses=2]
+ %46 = getelementptr inbounds %struct.CProfileNode* %.pre86, i32 0, i32 1 ; [#uses=1]
+ %47 = load i32* %46, align 4 ; [#uses=1]
+ %48 = fpext float %60 to double ; [#uses=1]
+ %49 = fdiv double %48, %45 ; [#uses=1]
+ %50 = getelementptr inbounds %struct.CProfileNode* %.pre86, i32 0, i32 0 ; [#uses=1]
+ %51 = load i8** %50, align 4 ; [#uses=1]
+ %52 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([50 x i8]* @.str229, i32 0, i32 0), i32 %i.246.us.us, i8* %51, double %phitmp35.us.us, double %49, i32 %47) ; [#uses=0]
+ %53 = load %struct.CProfileNode** %4, align 4 ; [#uses=1]
+ %54 = getelementptr inbounds %struct.CProfileNode* %53, i32 0, i32 7 ; [#uses=1]
+ %55 = load %struct.CProfileNode** %54, align 4 ; [#uses=3]
+ store %struct.CProfileNode* %55, %struct.CProfileNode** %4, align 4
+ %56 = icmp eq %struct.CProfileNode* %55, null ; [#uses=1]
+ br i1 %56, label %bb19.bb23_crit_edge, label %bb.nph44.us.us
+
+bb.nph44.us.us: ; preds = %bb18.us.us, %bb.nph48.split.us
+ %57 = phi %struct.CProfileNode* [ %55, %bb18.us.us ], [ %42, %bb.nph48.split.us ] ; [#uses=1]
+ %i.246.us.us = phi i32 [ %58, %bb18.us.us ], [ 0, %bb.nph48.split.us ] ; [#uses=3]
+ %accumulated_time.045.us.us = phi float [ %61, %bb18.us.us ], [ 0.000000e+00, %bb.nph48.split.us ] ; [#uses=1]
+ %58 = add nsw i32 %i.246.us.us, 1 ; [#uses=1]
+ %59 = getelementptr inbounds %struct.CProfileNode* %57, i32 0, i32 2 ; [#uses=1]
+ %60 = load float* %59, align 4 ; [#uses=3]
+ %61 = fadd float %accumulated_time.045.us.us, %60 ; [#uses=2]
+ %62 = fdiv float %60, %iftmp.33.0 ; [#uses=1]
+ %63 = fmul float %62, 1.000000e+02 ; [#uses=1]
+ %phitmp35.us.us = fpext float %63 to double ; [#uses=1]
+ br label %bb16.us.us
+
+bb16.us.us: ; preds = %bb16.us.us, %bb.nph44.us.us
+ %i15.043.us.us = phi i32 [ 0, %bb.nph44.us.us ], [ %65, %bb16.us.us ] ; [#uses=1]
+ %64 = call i32 @putchar(i32 46) ; [#uses=0]
+ %65 = add nsw i32 %i15.043.us.us, 1 ; [#uses=2]
+ %exitcond = icmp eq i32 %65, %spacing ; [#uses=1]
+ br i1 %exitcond, label %bb18.us.us, label %bb16.us.us
+
+bb18.us: ; preds = %bb18.us, %bb.nph48.split.us
+ %66 = phi %struct.CProfileNode* [ %82, %bb18.us ], [ %42, %bb.nph48.split.us ] ; [#uses=3]
+ %i.246.us = phi i32 [ %67, %bb18.us ], [ 0, %bb.nph48.split.us ] ; [#uses=3]
+ %accumulated_time.045.us = phi float [ %70, %bb18.us ], [ 0.000000e+00, %bb.nph48.split.us ] ; [#uses=1]
+ %67 = add nsw i32 %i.246.us, 1 ; [#uses=1]
+ %68 = getelementptr inbounds %struct.CProfileNode* %66, i32 0, i32 2 ; [#uses=1]
+ %69 = load float* %68, align 4 ; [#uses=3]
+ %70 = fadd float %accumulated_time.045.us, %69 ; [#uses=2]
+ %71 = fdiv float %69, %iftmp.33.0 ; [#uses=1]
+ %72 = fmul float %71, 1.000000e+02 ; [#uses=1]
+ %phitmp35.us = fpext float %72 to double ; [#uses=1]
+ %73 = getelementptr inbounds %struct.CProfileNode* %66, i32 0, i32 1 ; [#uses=1]
+ %74 = load i32* %73, align 4 ; [#uses=1]
+ %75 = fpext float %69 to double ; [#uses=1]
+ %76 = fdiv double %75, %45 ; [#uses=1]
+ %77 = getelementptr inbounds %struct.CProfileNode* %66, i32 0, i32 0 ; [#uses=1]
+ %78 = load i8** %77, align 4 ; [#uses=1]
+ %79 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([50 x i8]* @.str229, i32 0, i32 0), i32 %i.246.us, i8* %78, double %phitmp35.us, double %76, i32 %74) ; [#uses=0]
+ %80 = load %struct.CProfileNode** %4, align 4 ; [#uses=1]
+ %81 = getelementptr inbounds %struct.CProfileNode* %80, i32 0, i32 7 ; [#uses=1]
+ %82 = load %struct.CProfileNode** %81, align 4 ; [#uses=3]
+ store %struct.CProfileNode* %82, %struct.CProfileNode** %4, align 4
+ %83 = icmp eq %struct.CProfileNode* %82, null ; [#uses=1]
+ br i1 %83, label %bb19.bb23_crit_edge, label %bb18.us
+
+bb18.us54: ; preds = %bb16.us61
+ %.pre87 = load %struct.CProfileNode** %4, align 4 ; [#uses=2]
+ %84 = getelementptr inbounds %struct.CProfileNode* %.pre87, i32 0, i32 1 ; [#uses=1]
+ %85 = load i32* %84, align 4 ; [#uses=1]
+ %86 = fpext float %100 to double ; [#uses=1]
+ %87 = fdiv double %86, %45 ; [#uses=1]
+ %88 = getelementptr inbounds %struct.CProfileNode* %.pre87, i32 0, i32 0 ; [#uses=1]
+ %89 = load i8** %88, align 4 ; [#uses=1]
+ %90 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([50 x i8]* @.str229, i32 0, i32 0), i32 %i.246.us52, i8* %89, double 0.000000e+00, double %87, i32 %85) ; [#uses=0]
+ %91 = load %struct.CProfileNode** %4, align 4 ; [#uses=1]
+ %92 = getelementptr inbounds %struct.CProfileNode* %91, i32 0, i32 7 ; [#uses=1]
+ %93 = load %struct.CProfileNode** %92, align 4 ; [#uses=3]
+ store %struct.CProfileNode* %93, %struct.CProfileNode** %4, align 4
+ %94 = icmp eq %struct.CProfileNode* %93, null ; [#uses=1]
+ br i1 %94, label %bb19.bb23_crit_edge, label %bb.nph44.us63
+
+bb16.us61: ; preds = %bb.nph44.us63, %bb16.us61
+ %i15.043.us62 = phi i32 [ 0, %bb.nph44.us63 ], [ %96, %bb16.us61 ] ; [#uses=1]
+ %95 = call i32 @putchar(i32 46) ; [#uses=0]
+ %96 = add nsw i32 %i15.043.us62, 1 ; [#uses=2]
+ %exitcond70 = icmp eq i32 %96, %spacing ; [#uses=1]
+ br i1 %exitcond70, label %bb18.us54, label %bb16.us61
+
+bb.nph44.us63: ; preds = %bb18.us54, %bb.nph48.bb.nph48.split_crit_edge
+ %97 = phi %struct.CProfileNode* [ %93, %bb18.us54 ], [ %42, %bb.nph48.bb.nph48.split_crit_edge ] ; [#uses=1]
+ %i.246.us52 = phi i32 [ %98, %bb18.us54 ], [ 0, %bb.nph48.bb.nph48.split_crit_edge ] ; [#uses=3]
+ %accumulated_time.045.us53 = phi float [ %101, %bb18.us54 ], [ 0.000000e+00, %bb.nph48.bb.nph48.split_crit_edge ] ; [#uses=1]
+ %98 = add nsw i32 %i.246.us52, 1 ; [#uses=1]
+ %99 = getelementptr inbounds %struct.CProfileNode* %97, i32 0, i32 2 ; [#uses=1]
+ %100 = load float* %99, align 4 ; [#uses=2]
+ %101 = fadd float %accumulated_time.045.us53, %100 ; [#uses=2]
+ br label %bb16.us61
+
+bb18: ; preds = %bb18, %bb.nph48.bb.nph48.split_crit_edge
+ %102 = phi %struct.CProfileNode* [ %116, %bb18 ], [ %42, %bb.nph48.bb.nph48.split_crit_edge ] ; [#uses=3]
+ %i.246 = phi i32 [ %103, %bb18 ], [ 0, %bb.nph48.bb.nph48.split_crit_edge ] ; [#uses=3]
+ %accumulated_time.045 = phi float [ %106, %bb18 ], [ 0.000000e+00, %bb.nph48.bb.nph48.split_crit_edge ] ; [#uses=1]
+ %103 = add nsw i32 %i.246, 1 ; [#uses=1]
+ %104 = getelementptr inbounds %struct.CProfileNode* %102, i32 0, i32 2 ; [#uses=1]
+ %105 = load float* %104, align 4 ; [#uses=2]
+ %106 = fadd float %accumulated_time.045, %105 ; [#uses=2]
+ %107 = getelementptr inbounds %struct.CProfileNode* %102, i32 0, i32 1 ; [#uses=1]
+ %108 = load i32* %107, align 4 ; [#uses=1]
+ %109 = fpext float %105 to double ; [#uses=1]
+ %110 = fdiv double %109, %45 ; [#uses=1]
+ %111 = getelementptr inbounds %struct.CProfileNode* %102, i32 0, i32 0 ; [#uses=1]
+ %112 = load i8** %111, align 4 ; [#uses=1]
+ %113 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([50 x i8]* @.str229, i32 0, i32 0), i32 %i.246, i8* %112, double 0.000000e+00, double %110, i32 %108) ; [#uses=0]
+ %114 = load %struct.CProfileNode** %4, align 4 ; [#uses=1]
+ %115 = getelementptr inbounds %struct.CProfileNode* %114, i32 0, i32 7 ; [#uses=1]
+ %116 = load %struct.CProfileNode** %115, align 4 ; [#uses=3]
+ store %struct.CProfileNode* %116, %struct.CProfileNode** %4, align 4
+ %117 = icmp eq %struct.CProfileNode* %116, null ; [#uses=1]
+ br i1 %117, label %bb19.bb23_crit_edge, label %bb18
+
+bb19.bb23_crit_edge: ; preds = %bb18, %bb18.us54, %bb18.us, %bb18.us.us
+ %split.in = phi i32 [ %i.246.us.us, %bb18.us.us ], [ %i.246.us, %bb18.us ], [ %i.246.us52, %bb18.us54 ], [ %i.246, %bb18 ] ; [#uses=1]
+ %split49 = phi float [ %61, %bb18.us.us ], [ %70, %bb18.us ], [ %101, %bb18.us54 ], [ %106, %bb18 ] ; [#uses=1]
+ %split = add i32 %split.in, 1 ; [#uses=1]
+ br label %bb23
+
+bb23: ; preds = %bb19.bb23_crit_edge, %bb10
+ %numChildren.0.lcssa = phi i32 [ %split, %bb19.bb23_crit_edge ], [ 0, %bb10 ] ; [#uses=2]
+ %accumulated_time.0.lcssa = phi float [ %split49, %bb19.bb23_crit_edge ], [ 0.000000e+00, %bb10 ] ; [#uses=2]
+ %118 = fcmp olt float %iftmp.33.0, %accumulated_time.0.lcssa ; [#uses=1]
+ br i1 %118, label %bb24, label %bb27.preheader
+
+bb24: ; preds = %bb23
+ %119 = call i32 @puts(i8* getelementptr inbounds ([13 x i8]* @.str330, i32 0, i32 0)) ; [#uses=0]
+ br label %bb27.preheader
+
+bb27.preheader: ; preds = %bb24, %bb23
+ br i1 %30, label %bb26, label %bb28
+
+bb26: ; preds = %bb26, %bb27.preheader
+ %i.341 = phi i32 [ %121, %bb26 ], [ 0, %bb27.preheader ] ; [#uses=1]
+ %120 = call i32 @putchar(i32 46) ; [#uses=0]
+ %121 = add nsw i32 %i.341, 1 ; [#uses=2]
+ %exitcond80 = icmp eq i32 %121, %spacing ; [#uses=1]
+ br i1 %exitcond80, label %bb28, label %bb26
+
+bb28: ; preds = %bb26, %bb27.preheader
+ %122 = fsub float %iftmp.33.0, %accumulated_time.0.lcssa ; [#uses=2]
+ %123 = fpext float %122 to double ; [#uses=1]
+ %124 = fcmp ogt float %iftmp.33.0, 0x3E80000000000000 ; [#uses=1]
+ br i1 %124, label %bb29, label %bb31
+
+bb29: ; preds = %bb28
+ %125 = fdiv float %122, %iftmp.33.0 ; [#uses=1]
+ %126 = fmul float %125, 1.000000e+02 ; [#uses=1]
+ %phitmp = fpext float %126 to double ; [#uses=1]
+ br label %bb31
+
+bb31: ; preds = %bb29, %bb28
+ %iftmp.36.0 = phi double [ %phitmp, %bb29 ], [ 0.000000e+00, %bb28 ] ; [#uses=1]
+ %127 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([25 x i8]* @.str431, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8]* @.str532, i32 0, i32 0), double %iftmp.36.0, double %123) ; [#uses=0]
+ %128 = icmp sgt i32 %numChildren.0.lcssa, 0 ; [#uses=1]
+ br i1 %128, label %bb.nph, label %return
+
+bb.nph: ; preds = %bb31
+ %129 = add nsw i32 %spacing, 3 ; [#uses=1]
+ %.pre = load %struct.CProfileNode** %0, align 4 ; [#uses=1]
+ br label %bb32
+
+bb32: ; preds = %_ZN16CProfileIterator12Enter_ParentEv.exit, %bb.nph
+ %130 = phi %struct.CProfileNode* [ %.pre, %bb.nph ], [ %152, %_ZN16CProfileIterator12Enter_ParentEv.exit ] ; [#uses=1]
+ %131 = phi i32 [ 0, %bb.nph ], [ %155, %_ZN16CProfileIterator12Enter_ParentEv.exit ] ; [#uses=3]
+ %tmp8.i = add i32 %131, -1 ; [#uses=1]
+ %132 = getelementptr inbounds %struct.CProfileNode* %130, i32 0, i32 6 ; [#uses=1]
+ %133 = load %struct.CProfileNode** %132, align 4 ; [#uses=4]
+ store %struct.CProfileNode* %133, %struct.CProfileNode** %4, align 4
+ %134 = icmp ne %struct.CProfileNode* %133, null ; [#uses=1]
+ %135 = icmp ne i32 %131, 0 ; [#uses=1]
+ %136 = and i1 %134, %135 ; [#uses=1]
+ br i1 %136, label %bb.i36, label %bb4.i
+
+bb.i36: ; preds = %bb.i36, %bb32
+ %137 = phi %struct.CProfileNode* [ %140, %bb.i36 ], [ %133, %bb32 ] ; [#uses=1]
+ %138 = phi i32 [ %indvar.next.i, %bb.i36 ], [ 0, %bb32 ] ; [#uses=2]
+ %139 = getelementptr inbounds %struct.CProfileNode* %137, i32 0, i32 7 ; [#uses=1]
+ %140 = load %struct.CProfileNode** %139, align 4 ; [#uses=4]
+ store %struct.CProfileNode* %140, %struct.CProfileNode** %4, align 4
+ %141 = icmp ne %struct.CProfileNode* %140, null ; [#uses=1]
+ %142 = icmp ne i32 %tmp8.i, %138 ; [#uses=1]
+ %143 = and i1 %141, %142 ; [#uses=1]
+ %indvar.next.i = add i32 %138, 1 ; [#uses=1]
+ br i1 %143, label %bb.i36, label %bb4.i
+
+bb4.i: ; preds = %bb.i36, %bb32
+ %144 = phi %struct.CProfileNode* [ %133, %bb32 ], [ %140, %bb.i36 ] ; [#uses=3]
+ %145 = icmp eq %struct.CProfileNode* %144, null ; [#uses=1]
+ br i1 %145, label %_ZN16CProfileIterator11Enter_ChildEi.exit, label %bb5.i
+
+bb5.i: ; preds = %bb4.i
+ store %struct.CProfileNode* %144, %struct.CProfileNode** %0, align 4
+ %146 = getelementptr inbounds %struct.CProfileNode* %144, i32 0, i32 6 ; [#uses=1]
+ %147 = load %struct.CProfileNode** %146, align 4 ; [#uses=1]
+ store %struct.CProfileNode* %147, %struct.CProfileNode** %4, align 4
+ br label %_ZN16CProfileIterator11Enter_ChildEi.exit
+
+_ZN16CProfileIterator11Enter_ChildEi.exit: ; preds = %bb5.i, %bb4.i
+ call void @_ZN15CProfileManager13dumpRecursiveEP16CProfileIteratori(%struct.CProfileIterator* %profileIterator, i32 %129)
+ %148 = load %struct.CProfileNode** %0, align 4 ; [#uses=2]
+ %149 = getelementptr inbounds %struct.CProfileNode* %148, i32 0, i32 5 ; [#uses=1]
+ %150 = load %struct.CProfileNode** %149, align 4 ; [#uses=3]
+ %151 = icmp eq %struct.CProfileNode* %150, null ; [#uses=1]
+ br i1 %151, label %_ZN16CProfileIterator12Enter_ParentEv.exit, label %bb.i
+
+bb.i: ; preds = %_ZN16CProfileIterator11Enter_ChildEi.exit
+ store %struct.CProfileNode* %150, %struct.CProfileNode** %0, align 4
+ br label %_ZN16CProfileIterator12Enter_ParentEv.exit
+
+_ZN16CProfileIterator12Enter_ParentEv.exit: ; preds = %bb.i, %_ZN16CProfileIterator11Enter_ChildEi.exit
+ %152 = phi %struct.CProfileNode* [ %148, %_ZN16CProfileIterator11Enter_ChildEi.exit ], [ %150, %bb.i ] ; [#uses=2]
+ %153 = getelementptr inbounds %struct.CProfileNode* %152, i32 0, i32 6 ; [#uses=1]
+ %154 = load %struct.CProfileNode** %153, align 4 ; [#uses=1]
+ store %struct.CProfileNode* %154, %struct.CProfileNode** %4, align 4
+ %155 = add nsw i32 %131, 1 ; [#uses=2]
+ %exitcond78 = icmp eq i32 %155, %numChildren.0.lcssa ; [#uses=1]
+ br i1 %exitcond78, label %return, label %bb32
+
+return: ; preds = %_ZN16CProfileIterator12Enter_ParentEv.exit, %bb31, %entry
+ ret void
+}
+
+; [#uses=5]
+declare i32 @putchar(i32) nounwind
+
+; [#uses=3]
+declare i32 @puts(i8* nocapture) nounwind
+
+; [#uses=0]
+define void @_ZN15CProfileManager7dumpAllEv() align 2 {
+entry:
+ %0 = tail call i8* @_Znwj(i32 8) ; [#uses=4]
+ %1 = bitcast i8* %0 to %struct.CProfileIterator* ; [#uses=1]
+ %2 = bitcast i8* %0 to %struct.CProfileNode** ; [#uses=1]
+ store %struct.CProfileNode* @_ZN15CProfileManager4RootE, %struct.CProfileNode** %2, align 4
+ %3 = load %struct.CProfileNode** getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 6), align 8 ; [#uses=1]
+ %4 = getelementptr inbounds i8* %0, i32 4 ; [#uses=1]
+ %5 = bitcast i8* %4 to %struct.CProfileNode** ; [#uses=1]
+ store %struct.CProfileNode* %3, %struct.CProfileNode** %5, align 4
+ tail call void @_ZN15CProfileManager13dumpRecursiveEP16CProfileIteratori(%struct.CProfileIterator* %1, i32 0)
+ tail call void @_ZdlPv(i8* %0) nounwind
+ ret void
+}
+
+; [#uses=0]
+define zeroext i8 @_ZN12CProfileNode6ReturnEv(%struct.CProfileNode* nocapture %this) nounwind align 2 {
+entry:
+ %currentTime.i.i = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 4 ; [#uses=3]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = add nsw i32 %1, -1 ; [#uses=3]
+ store i32 %2, i32* %0, align 4
+ %3 = icmp eq i32 %2, 0 ; [#uses=1]
+ br i1 %3, label %bb, label %bb5
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 1 ; [#uses=1]
+ %5 = load i32* %4, align 4 ; [#uses=1]
+ %6 = icmp eq i32 %5, 0 ; [#uses=1]
+ br i1 %6, label %bb5, label %bb4
+
+bb4: ; preds = %bb
+ %7 = call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %currentTime.i.i, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ %8 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i, i32 0, i32 0 ; [#uses=1]
+ %9 = load i32* %8, align 8 ; [#uses=1]
+ %10 = load %struct.btClockData** getelementptr inbounds (%struct.btClock* @_ZL13gProfileClock, i32 0, i32 0), align 8 ; [#uses=2]
+ %11 = getelementptr inbounds %struct.btClockData* %10, i32 0, i32 0, i32 0 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %13 = sub nsw i32 %9, %12 ; [#uses=1]
+ %14 = mul nsw i32 %13, 1000000 ; [#uses=1]
+ %15 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i, i32 0, i32 1 ; [#uses=1]
+ %16 = load i32* %15, align 4 ; [#uses=1]
+ %17 = getelementptr inbounds %struct.btClockData* %10, i32 0, i32 0, i32 1 ; [#uses=1]
+ %18 = load i32* %17, align 4 ; [#uses=1]
+ %19 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 3 ; [#uses=1]
+ %20 = load i32* %19, align 4 ; [#uses=1]
+ %21 = add i32 %14, %16 ; [#uses=1]
+ %22 = sub i32 %21, %18 ; [#uses=1]
+ %23 = sub i32 %22, %20 ; [#uses=1]
+ %24 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 2 ; [#uses=2]
+ %25 = load float* %24, align 4 ; [#uses=1]
+ %26 = uitofp i32 %23 to float ; [#uses=1]
+ %27 = fdiv float %26, 1.000000e+03 ; [#uses=1]
+ %28 = fadd float %25, %27 ; [#uses=1]
+ store float %28, float* %24, align 4
+ %.pre = load i32* %0, align 4 ; [#uses=1]
+ br label %bb5
+
+bb5: ; preds = %bb4, %bb, %entry
+ %29 = phi i32 [ 0, %bb ], [ %2, %entry ], [ %.pre, %bb4 ] ; [#uses=1]
+ %30 = icmp eq i32 %29, 0 ; [#uses=1]
+ %retval67 = zext i1 %30 to i8 ; [#uses=1]
+ ret i8 %retval67
+}
+
+; [#uses=44]
+define void @_ZN15CProfileManager12Stop_ProfileEv() nounwind align 2 {
+entry:
+ %currentTime.i.i.i = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %0 = load %struct.CProfileNode** @_ZN15CProfileManager11CurrentNodeE, align 4 ; [#uses=4]
+ %1 = getelementptr inbounds %struct.CProfileNode* %0, i32 0, i32 4 ; [#uses=3]
+ %2 = load i32* %1, align 4 ; [#uses=1]
+ %3 = add nsw i32 %2, -1 ; [#uses=2]
+ store i32 %3, i32* %1, align 4
+ %4 = icmp eq i32 %3, 0 ; [#uses=1]
+ br i1 %4, label %bb.i, label %return
+
+bb.i: ; preds = %entry
+ %5 = getelementptr inbounds %struct.CProfileNode* %0, i32 0, i32 1 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = icmp eq i32 %6, 0 ; [#uses=1]
+ br i1 %7, label %bb, label %_ZN12CProfileNode6ReturnEv.exit
+
+_ZN12CProfileNode6ReturnEv.exit: ; preds = %bb.i
+ %8 = call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %currentTime.i.i.i, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ %9 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i.i, i32 0, i32 0 ; [#uses=1]
+ %10 = load i32* %9, align 8 ; [#uses=1]
+ %11 = load %struct.btClockData** getelementptr inbounds (%struct.btClock* @_ZL13gProfileClock, i32 0, i32 0), align 8 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btClockData* %11, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = sub nsw i32 %10, %13 ; [#uses=1]
+ %15 = mul nsw i32 %14, 1000000 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i.i, i32 0, i32 1 ; [#uses=1]
+ %17 = load i32* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btClockData* %11, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load i32* %18, align 4 ; [#uses=1]
+ %20 = getelementptr inbounds %struct.CProfileNode* %0, i32 0, i32 3 ; [#uses=1]
+ %21 = load i32* %20, align 4 ; [#uses=1]
+ %22 = sub i32 %17, %19 ; [#uses=1]
+ %23 = add i32 %22, %15 ; [#uses=1]
+ %24 = sub i32 %23, %21 ; [#uses=1]
+ %25 = getelementptr inbounds %struct.CProfileNode* %0, i32 0, i32 2 ; [#uses=2]
+ %26 = load float* %25, align 4 ; [#uses=1]
+ %27 = uitofp i32 %24 to float ; [#uses=1]
+ %28 = fdiv float %27, 1.000000e+03 ; [#uses=1]
+ %29 = fadd float %26, %28 ; [#uses=1]
+ store float %29, float* %25, align 4
+ %.pre.i = load i32* %1, align 4 ; [#uses=1]
+ %30 = icmp eq i32 %.pre.i, 0 ; [#uses=1]
+ br i1 %30, label %bb, label %return
+
+bb: ; preds = %_ZN12CProfileNode6ReturnEv.exit, %bb.i
+ %31 = load %struct.CProfileNode** @_ZN15CProfileManager11CurrentNodeE, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.CProfileNode* %31, i32 0, i32 5 ; [#uses=1]
+ %33 = load %struct.CProfileNode** %32, align 4 ; [#uses=1]
+ store %struct.CProfileNode* %33, %struct.CProfileNode** @_ZN15CProfileManager11CurrentNodeE, align 4
+ ret void
+
+return: ; preds = %_ZN12CProfileNode6ReturnEv.exit, %entry
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN12CProfileNode4CallEv(%struct.CProfileNode* nocapture %this) nounwind align 2 {
+entry:
+ %currentTime.i.i = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %0 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 1 ; [#uses=2]
+ %1 = load i32* %0, align 4 ; [#uses=1]
+ %2 = add nsw i32 %1, 1 ; [#uses=1]
+ store i32 %2, i32* %0, align 4
+ %3 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 4 ; [#uses=2]
+ %4 = load i32* %3, align 4 ; [#uses=1]
+ %5 = add nsw i32 %4, 1 ; [#uses=2]
+ store i32 %5, i32* %3, align 4
+ %6 = icmp eq i32 %5, 1 ; [#uses=1]
+ br i1 %6, label %bb, label %return
+
+bb: ; preds = %entry
+ %7 = getelementptr inbounds %struct.CProfileNode* %this, i32 0, i32 3 ; [#uses=1]
+ %8 = call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %currentTime.i.i, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ %9 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i, i32 0, i32 0 ; [#uses=1]
+ %10 = load i32* %9, align 8 ; [#uses=1]
+ %11 = load %struct.btClockData** getelementptr inbounds (%struct.btClock* @_ZL13gProfileClock, i32 0, i32 0), align 8 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btClockData* %11, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = sub nsw i32 %10, %13 ; [#uses=1]
+ %15 = mul nsw i32 %14, 1000000 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i, i32 0, i32 1 ; [#uses=1]
+ %17 = load i32* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btClockData* %11, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load i32* %18, align 4 ; [#uses=1]
+ %20 = add i32 %15, %17 ; [#uses=1]
+ %21 = sub i32 %20, %19 ; [#uses=1]
+ store i32 %21, i32* %7, align 4
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
+
+; [#uses=22]
+define void @_ZN15CProfileManager13Start_ProfileEPKc(i8* %name) align 2 {
+entry:
+ %currentTime.i.i.i = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %0 = load %struct.CProfileNode** @_ZN15CProfileManager11CurrentNodeE, align 4 ; [#uses=4]
+ %1 = getelementptr inbounds %struct.CProfileNode* %0, i32 0, i32 0 ; [#uses=1]
+ %2 = load i8** %1, align 4 ; [#uses=1]
+ %3 = icmp eq i8* %2, %name ; [#uses=1]
+ br i1 %3, label %bb1, label %bb
+
+bb: ; preds = %entry
+ %4 = getelementptr inbounds %struct.CProfileNode* %0, i32 0, i32 6 ; [#uses=3]
+ br label %bb3.i
+
+bb.i2: ; preds = %bb3.i
+ %5 = getelementptr inbounds %struct.CProfileNode* %child.0.i, i32 0, i32 0 ; [#uses=1]
+ %6 = load i8** %5, align 4 ; [#uses=1]
+ %7 = icmp eq i8* %6, %name ; [#uses=1]
+ br i1 %7, label %_ZN12CProfileNode12Get_Sub_NodeEPKc.exit, label %bb2.i
+
+bb2.i: ; preds = %bb.i2
+ %8 = getelementptr inbounds %struct.CProfileNode* %child.0.i, i32 0, i32 7 ; [#uses=1]
+ br label %bb3.i
+
+bb3.i: ; preds = %bb2.i, %bb
+ %child.0.in.i = phi %struct.CProfileNode** [ %4, %bb ], [ %8, %bb2.i ] ; [#uses=1]
+ %child.0.i = load %struct.CProfileNode** %child.0.in.i, align 4 ; [#uses=4]
+ %9 = icmp eq %struct.CProfileNode* %child.0.i, null ; [#uses=1]
+ br i1 %9, label %bb6.i, label %bb.i2
+
+bb6.i: ; preds = %bb3.i
+ %10 = call i8* @_Znwj(i32 32) ; [#uses=9]
+ %11 = bitcast i8* %10 to %struct.CProfileNode* ; [#uses=3]
+ %12 = bitcast i8* %10 to i8** ; [#uses=1]
+ store i8* %name, i8** %12, align 4
+ %13 = getelementptr inbounds i8* %10, i32 4 ; [#uses=1]
+ %14 = bitcast i8* %13 to i32* ; [#uses=1]
+ store i32 0, i32* %14, align 4
+ %15 = getelementptr inbounds i8* %10, i32 8 ; [#uses=1]
+ %16 = bitcast i8* %15 to float* ; [#uses=1]
+ store float 0.000000e+00, float* %16, align 4
+ %17 = getelementptr inbounds i8* %10, i32 12 ; [#uses=1]
+ %18 = bitcast i8* %17 to i32* ; [#uses=1]
+ store i32 0, i32* %18, align 4
+ %19 = getelementptr inbounds i8* %10, i32 16 ; [#uses=1]
+ %20 = bitcast i8* %19 to i32* ; [#uses=1]
+ store i32 0, i32* %20, align 4
+ %21 = getelementptr inbounds i8* %10, i32 20 ; [#uses=1]
+ %22 = bitcast i8* %21 to %struct.CProfileNode** ; [#uses=1]
+ store %struct.CProfileNode* %0, %struct.CProfileNode** %22, align 4
+ %23 = getelementptr inbounds i8* %10, i32 24 ; [#uses=1]
+ %24 = bitcast i8* %23 to %struct.CProfileNode** ; [#uses=1]
+ store %struct.CProfileNode* null, %struct.CProfileNode** %24, align 4
+ %25 = getelementptr inbounds i8* %10, i32 28 ; [#uses=1]
+ %26 = bitcast i8* %25 to %struct.CProfileNode** ; [#uses=2]
+ store %struct.CProfileNode* null, %struct.CProfileNode** %26, align 4
+ call void @_ZN12CProfileNode5ResetEv(%struct.CProfileNode* %11) nounwind
+ %27 = load %struct.CProfileNode** %4, align 4 ; [#uses=1]
+ store %struct.CProfileNode* %27, %struct.CProfileNode** %26, align 4
+ store %struct.CProfileNode* %11, %struct.CProfileNode** %4, align 4
+ br label %_ZN12CProfileNode12Get_Sub_NodeEPKc.exit
+
+_ZN12CProfileNode12Get_Sub_NodeEPKc.exit: ; preds = %bb6.i, %bb.i2
+ %28 = phi %struct.CProfileNode* [ %11, %bb6.i ], [ %child.0.i, %bb.i2 ] ; [#uses=2]
+ store %struct.CProfileNode* %28, %struct.CProfileNode** @_ZN15CProfileManager11CurrentNodeE, align 4
+ br label %bb1
+
+bb1: ; preds = %_ZN12CProfileNode12Get_Sub_NodeEPKc.exit, %entry
+ %29 = phi %struct.CProfileNode* [ %0, %entry ], [ %28, %_ZN12CProfileNode12Get_Sub_NodeEPKc.exit ] ; [#uses=3]
+ %30 = getelementptr inbounds %struct.CProfileNode* %29, i32 0, i32 1 ; [#uses=2]
+ %31 = load i32* %30, align 4 ; [#uses=1]
+ %32 = add nsw i32 %31, 1 ; [#uses=1]
+ store i32 %32, i32* %30, align 4
+ %33 = getelementptr inbounds %struct.CProfileNode* %29, i32 0, i32 4 ; [#uses=2]
+ %34 = load i32* %33, align 4 ; [#uses=1]
+ %35 = add nsw i32 %34, 1 ; [#uses=2]
+ store i32 %35, i32* %33, align 4
+ %36 = icmp eq i32 %35, 1 ; [#uses=1]
+ br i1 %36, label %bb.i, label %_ZN12CProfileNode4CallEv.exit
+
+bb.i: ; preds = %bb1
+ %37 = getelementptr inbounds %struct.CProfileNode* %29, i32 0, i32 3 ; [#uses=1]
+ %38 = call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %currentTime.i.i.i, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ %39 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i.i, i32 0, i32 0 ; [#uses=1]
+ %40 = load i32* %39, align 8 ; [#uses=1]
+ %41 = load %struct.btClockData** getelementptr inbounds (%struct.btClock* @_ZL13gProfileClock, i32 0, i32 0), align 8 ; [#uses=2]
+ %42 = getelementptr inbounds %struct.btClockData* %41, i32 0, i32 0, i32 0 ; [#uses=1]
+ %43 = load i32* %42, align 4 ; [#uses=1]
+ %44 = sub nsw i32 %40, %43 ; [#uses=1]
+ %45 = mul nsw i32 %44, 1000000 ; [#uses=1]
+ %46 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i.i, i32 0, i32 1 ; [#uses=1]
+ %47 = load i32* %46, align 4 ; [#uses=1]
+ %48 = getelementptr inbounds %struct.btClockData* %41, i32 0, i32 0, i32 1 ; [#uses=1]
+ %49 = load i32* %48, align 4 ; [#uses=1]
+ %50 = sub i32 %47, %49 ; [#uses=1]
+ %51 = add i32 %50, %45 ; [#uses=1]
+ store i32 %51, i32* %37, align 4
+ ret void
+
+_ZN12CProfileNode4CallEv.exit: ; preds = %bb1
+ ret void
+}
+
+; [#uses=0]
+define i32 @_ZN7btClock19getTimeMillisecondsEv(%struct.btClock* nocapture %this) nounwind align 2 {
+entry:
+ %currentTime = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %0 = call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %currentTime, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ %1 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime, i32 0, i32 0 ; [#uses=1]
+ %2 = load i32* %1, align 8 ; [#uses=1]
+ %3 = getelementptr inbounds %struct.btClock* %this, i32 0, i32 0 ; [#uses=1]
+ %4 = load %struct.btClockData** %3, align 4 ; [#uses=2]
+ %5 = getelementptr inbounds %struct.btClockData* %4, i32 0, i32 0, i32 0 ; [#uses=1]
+ %6 = load i32* %5, align 4 ; [#uses=1]
+ %7 = sub nsw i32 %2, %6 ; [#uses=1]
+ %8 = mul nsw i32 %7, 1000 ; [#uses=1]
+ %9 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime, i32 0, i32 1 ; [#uses=1]
+ %10 = load i32* %9, align 4 ; [#uses=1]
+ %11 = getelementptr inbounds %struct.btClockData* %4, i32 0, i32 0, i32 1 ; [#uses=1]
+ %12 = load i32* %11, align 4 ; [#uses=1]
+ %13 = sub nsw i32 %10, %12 ; [#uses=1]
+ %14 = sdiv i32 %13, 1000 ; [#uses=1]
+ %15 = add nsw i32 %14, %8 ; [#uses=1]
+ ret i32 %15
+}
+
+; [#uses=0]
+define void @_ZN7btClock5resetEv(%struct.btClock* nocapture %this) nounwind align 2 {
+entry:
+ %0 = getelementptr inbounds %struct.btClock* %this, i32 0, i32 0 ; [#uses=1]
+ %1 = load %struct.btClockData** %0, align 4 ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btClockData* %1, i32 0, i32 0 ; [#uses=1]
+ %3 = tail call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %2, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ ret void
+}
+
+; [#uses=2]
+define void @_ZN15CProfileManager5ResetEv() nounwind align 2 {
+entry:
+ %currentTime.i.i = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %currentTime.i.i.i = alloca %struct.CONTACT_KEY_TOKEN, align 8 ; [#uses=3]
+ %0 = load %struct.btClockData** getelementptr inbounds (%struct.btClock* @_ZL13gProfileClock, i32 0, i32 0), align 8 ; [#uses=1]
+ %1 = getelementptr inbounds %struct.btClockData* %0, i32 0, i32 0 ; [#uses=1]
+ %2 = call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %1, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ call void @_ZN12CProfileNode5ResetEv(%struct.CProfileNode* @_ZN15CProfileManager4RootE)
+ %3 = load i32* getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 1), align 4 ; [#uses=1]
+ %4 = add nsw i32 %3, 1 ; [#uses=1]
+ store i32 %4, i32* getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 1), align 4
+ %5 = load i32* getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 4), align 16 ; [#uses=1]
+ %6 = add nsw i32 %5, 1 ; [#uses=2]
+ store i32 %6, i32* getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 4), align 16
+ %7 = icmp eq i32 %6, 1 ; [#uses=1]
+ br i1 %7, label %bb.i, label %_ZN12CProfileNode4CallEv.exit
+
+bb.i: ; preds = %entry
+ %8 = call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %currentTime.i.i.i, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ %9 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i.i, i32 0, i32 0 ; [#uses=1]
+ %10 = load i32* %9, align 8 ; [#uses=1]
+ %11 = load %struct.btClockData** getelementptr inbounds (%struct.btClock* @_ZL13gProfileClock, i32 0, i32 0), align 8 ; [#uses=2]
+ %12 = getelementptr inbounds %struct.btClockData* %11, i32 0, i32 0, i32 0 ; [#uses=1]
+ %13 = load i32* %12, align 4 ; [#uses=1]
+ %14 = sub nsw i32 %10, %13 ; [#uses=1]
+ %15 = mul nsw i32 %14, 1000000 ; [#uses=1]
+ %16 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i.i, i32 0, i32 1 ; [#uses=1]
+ %17 = load i32* %16, align 4 ; [#uses=1]
+ %18 = getelementptr inbounds %struct.btClockData* %11, i32 0, i32 0, i32 1 ; [#uses=1]
+ %19 = load i32* %18, align 4 ; [#uses=1]
+ %20 = sub i32 %17, %19 ; [#uses=1]
+ %21 = add i32 %20, %15 ; [#uses=1]
+ store i32 %21, i32* getelementptr inbounds (%struct.CProfileNode* @_ZN15CProfileManager4RootE, i32 0, i32 3), align 4
+ br label %_ZN12CProfileNode4CallEv.exit
+
+_ZN12CProfileNode4CallEv.exit: ; preds = %bb.i, %entry
+ store i32 0, i32* @_ZN15CProfileManager12FrameCounterE, align 4
+ %22 = call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %currentTime.i.i, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ %23 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i, i32 0, i32 0 ; [#uses=1]
+ %24 = load i32* %23, align 8 ; [#uses=1]
+ %25 = load %struct.btClockData** getelementptr inbounds (%struct.btClock* @_ZL13gProfileClock, i32 0, i32 0), align 8 ; [#uses=2]
+ %26 = getelementptr inbounds %struct.btClockData* %25, i32 0, i32 0, i32 0 ; [#uses=1]
+ %27 = load i32* %26, align 4 ; [#uses=1]
+ %28 = sub nsw i32 %24, %27 ; [#uses=1]
+ %29 = mul nsw i32 %28, 1000000 ; [#uses=1]
+ %30 = getelementptr inbounds %struct.CONTACT_KEY_TOKEN* %currentTime.i.i, i32 0, i32 1 ; [#uses=1]
+ %31 = load i32* %30, align 4 ; [#uses=1]
+ %32 = getelementptr inbounds %struct.btClockData* %25, i32 0, i32 0, i32 1 ; [#uses=1]
+ %33 = load i32* %32, align 4 ; [#uses=1]
+ %34 = add i32 %29, %31 ; [#uses=1]
+ %35 = sub i32 %34, %33 ; [#uses=1]
+ store i32 %35, i32* @_ZN15CProfileManager9ResetTimeE, align 4
+ ret void
+}
+
+; [#uses=0]
+define void @_ZN7btClockC1Ev(%struct.btClock* nocapture %this) align 2 {
+entry:
+ %0 = tail call i8* @_Znwj(i32 8) ; [#uses=2]
+ %1 = bitcast i8* %0 to %struct.btClockData* ; [#uses=1]
+ %2 = getelementptr inbounds %struct.btClock* %this, i32 0, i32 0 ; [#uses=1]
+ store %struct.btClockData* %1, %struct.btClockData** %2, align 4
+ %3 = bitcast i8* %0 to %struct.CONTACT_KEY_TOKEN* ; [#uses=1]
+ %4 = tail call i32 @gettimeofday(%struct.CONTACT_KEY_TOKEN* noalias %3, %struct.CONTACT_KEY_TOKEN* noalias null) nounwind ; [#uses=0]
+ ret void
+}